Add support for palignr for X86_64 vcode backend
This commit is contained in:
@@ -476,6 +476,7 @@ pub enum SseOpcode {
|
|||||||
Paddsw,
|
Paddsw,
|
||||||
Paddusb,
|
Paddusb,
|
||||||
Paddusw,
|
Paddusw,
|
||||||
|
Palignr,
|
||||||
Pand,
|
Pand,
|
||||||
Pandn,
|
Pandn,
|
||||||
Pavgb,
|
Pavgb,
|
||||||
@@ -688,7 +689,11 @@ impl SseOpcode {
|
|||||||
| SseOpcode::Ucomisd
|
| SseOpcode::Ucomisd
|
||||||
| SseOpcode::Xorpd => SSE2,
|
| SseOpcode::Xorpd => SSE2,
|
||||||
|
|
||||||
SseOpcode::Pabsb | SseOpcode::Pabsw | SseOpcode::Pabsd | SseOpcode::Pshufb => SSSE3,
|
SseOpcode::Pabsb
|
||||||
|
| SseOpcode::Pabsw
|
||||||
|
| SseOpcode::Pabsd
|
||||||
|
| SseOpcode::Palignr
|
||||||
|
| SseOpcode::Pshufb => SSSE3,
|
||||||
|
|
||||||
SseOpcode::Insertps
|
SseOpcode::Insertps
|
||||||
| SseOpcode::Pcmpeqq
|
| SseOpcode::Pcmpeqq
|
||||||
@@ -805,6 +810,7 @@ impl fmt::Debug for SseOpcode {
|
|||||||
SseOpcode::Paddsw => "paddsw",
|
SseOpcode::Paddsw => "paddsw",
|
||||||
SseOpcode::Paddusb => "paddusb",
|
SseOpcode::Paddusb => "paddusb",
|
||||||
SseOpcode::Paddusw => "paddusw",
|
SseOpcode::Paddusw => "paddusw",
|
||||||
|
SseOpcode::Palignr => "palignr",
|
||||||
SseOpcode::Pand => "pand",
|
SseOpcode::Pand => "pand",
|
||||||
SseOpcode::Pandn => "pandn",
|
SseOpcode::Pandn => "pandn",
|
||||||
SseOpcode::Pavgb => "pavgb",
|
SseOpcode::Pavgb => "pavgb",
|
||||||
|
|||||||
@@ -1970,6 +1970,7 @@ pub(crate) fn emit(
|
|||||||
SseOpcode::Cmpss => (LegacyPrefixes::_F3, 0x0FC2, 2),
|
SseOpcode::Cmpss => (LegacyPrefixes::_F3, 0x0FC2, 2),
|
||||||
SseOpcode::Cmpsd => (LegacyPrefixes::_F2, 0x0FC2, 2),
|
SseOpcode::Cmpsd => (LegacyPrefixes::_F2, 0x0FC2, 2),
|
||||||
SseOpcode::Insertps => (LegacyPrefixes::_66, 0x0F3A21, 3),
|
SseOpcode::Insertps => (LegacyPrefixes::_66, 0x0F3A21, 3),
|
||||||
|
SseOpcode::Palignr => (LegacyPrefixes::_66, 0x0F3A0F, 3),
|
||||||
SseOpcode::Pinsrb => (LegacyPrefixes::_66, 0x0F3A20, 3),
|
SseOpcode::Pinsrb => (LegacyPrefixes::_66, 0x0F3A20, 3),
|
||||||
SseOpcode::Pinsrw => (LegacyPrefixes::_66, 0x0FC4, 2),
|
SseOpcode::Pinsrw => (LegacyPrefixes::_66, 0x0FC4, 2),
|
||||||
SseOpcode::Pinsrd => (LegacyPrefixes::_66, 0x0F3A22, 3),
|
SseOpcode::Pinsrd => (LegacyPrefixes::_66, 0x0F3A22, 3),
|
||||||
|
|||||||
@@ -3481,6 +3481,11 @@ fn test_x64_emit() {
|
|||||||
"410FC2FF00",
|
"410FC2FF00",
|
||||||
"cmpps $0, %xmm15, %xmm7",
|
"cmpps $0, %xmm15, %xmm7",
|
||||||
));
|
));
|
||||||
|
insns.push((
|
||||||
|
Inst::xmm_rm_r_imm(SseOpcode::Palignr, RegMem::reg(xmm1), w_xmm9, 3, false),
|
||||||
|
"66440F3A0FC903",
|
||||||
|
"palignr $3, %xmm1, %xmm9",
|
||||||
|
));
|
||||||
|
|
||||||
// ========================================================
|
// ========================================================
|
||||||
// Pertaining to atomics.
|
// Pertaining to atomics.
|
||||||
|
|||||||
Reference in New Issue
Block a user