Add x86 complex encodings for SIMD load-extend instructions
This commit is contained in:
@@ -1172,6 +1172,20 @@ pub(crate) fn define(
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
ig.push(
|
||||
Inst::new(
|
||||
"uload8x8_complex",
|
||||
r#"
|
||||
Load an 8x8 vector (64 bits) from memory at ``sum(args) + Offset`` and zero-extend into an
|
||||
i16x8 vector.
|
||||
"#,
|
||||
&formats.load_complex,
|
||||
)
|
||||
.operands_in(vec![MemFlags, args, Offset])
|
||||
.operands_out(vec![a])
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
ig.push(
|
||||
Inst::new(
|
||||
"sload8x8",
|
||||
@@ -1186,6 +1200,20 @@ pub(crate) fn define(
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
ig.push(
|
||||
Inst::new(
|
||||
"sload8x8_complex",
|
||||
r#"
|
||||
Load an 8x8 vector (64 bits) from memory at ``sum(args) + Offset`` and sign-extend into an
|
||||
i16x8 vector.
|
||||
"#,
|
||||
&formats.load_complex,
|
||||
)
|
||||
.operands_in(vec![MemFlags, args, Offset])
|
||||
.operands_out(vec![a])
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
let I32x4 = &TypeVar::new(
|
||||
"I32x4",
|
||||
"A SIMD vector with exactly 4 lanes of 32-bit values",
|
||||
@@ -1201,7 +1229,7 @@ pub(crate) fn define(
|
||||
Inst::new(
|
||||
"uload16x4",
|
||||
r#"
|
||||
Load an 16x4 vector (64 bits) from memory at ``p + Offset`` and zero-extend into an i32x4
|
||||
Load a 16x4 vector (64 bits) from memory at ``p + Offset`` and zero-extend into an i32x4
|
||||
vector.
|
||||
"#,
|
||||
&formats.load,
|
||||
@@ -1211,6 +1239,20 @@ pub(crate) fn define(
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
ig.push(
|
||||
Inst::new(
|
||||
"uload16x4_complex",
|
||||
r#"
|
||||
Load a 16x4 vector (64 bits) from memory at ``sum(args) + Offset`` and zero-extend into an
|
||||
i32x4 vector.
|
||||
"#,
|
||||
&formats.load_complex,
|
||||
)
|
||||
.operands_in(vec![MemFlags, args, Offset])
|
||||
.operands_out(vec![a])
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
ig.push(
|
||||
Inst::new(
|
||||
"sload16x4",
|
||||
@@ -1225,6 +1267,20 @@ pub(crate) fn define(
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
ig.push(
|
||||
Inst::new(
|
||||
"sload16x4_complex",
|
||||
r#"
|
||||
Load a 16x4 vector (64 bits) from memory at ``sum(args) + Offset`` and sign-extend into an
|
||||
i32x4 vector.
|
||||
"#,
|
||||
&formats.load_complex,
|
||||
)
|
||||
.operands_in(vec![MemFlags, args, Offset])
|
||||
.operands_out(vec![a])
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
let I64x2 = &TypeVar::new(
|
||||
"I64x2",
|
||||
"A SIMD vector with exactly 2 lanes of 64-bit values",
|
||||
@@ -1250,6 +1306,20 @@ pub(crate) fn define(
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
ig.push(
|
||||
Inst::new(
|
||||
"uload32x2_complex",
|
||||
r#"
|
||||
Load a 32x2 vector (64 bits) from memory at ``sum(args) + Offset`` and zero-extend into an
|
||||
i64x2 vector.
|
||||
"#,
|
||||
&formats.load_complex,
|
||||
)
|
||||
.operands_in(vec![MemFlags, args, Offset])
|
||||
.operands_out(vec![a])
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
ig.push(
|
||||
Inst::new(
|
||||
"sload32x2",
|
||||
@@ -1264,6 +1334,20 @@ pub(crate) fn define(
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
ig.push(
|
||||
Inst::new(
|
||||
"sload32x2_complex",
|
||||
r#"
|
||||
Load a 32x2 vector (64 bits) from memory at ``sum(args) + Offset`` and sign-extend into an
|
||||
i64x2 vector.
|
||||
"#,
|
||||
&formats.load_complex,
|
||||
)
|
||||
.operands_in(vec![MemFlags, args, Offset])
|
||||
.operands_out(vec![a])
|
||||
.can_load(true),
|
||||
);
|
||||
|
||||
let x = &Operand::new("x", Mem).with_doc("Value to be stored");
|
||||
let a = &Operand::new("a", Mem).with_doc("Value loaded");
|
||||
let Offset =
|
||||
|
||||
Reference in New Issue
Block a user