machinst x64: add packed moves for different vector types
This commit is contained in:
@@ -1596,8 +1596,12 @@ pub(crate) fn emit(
|
||||
let rex = RexFlags::clear_w();
|
||||
|
||||
let (prefix, opcode) = match op {
|
||||
SseOpcode::Cvtss2sd => (LegacyPrefix::_F3, 0x0F5A),
|
||||
SseOpcode::Cvtsd2ss => (LegacyPrefix::_F2, 0x0F5A),
|
||||
SseOpcode::Movaps => (LegacyPrefix::None, 0x0F28),
|
||||
SseOpcode::Movapd => (LegacyPrefix::_66, 0x0F28),
|
||||
SseOpcode::Movdqa => (LegacyPrefix::_66, 0x0F6F),
|
||||
SseOpcode::Movdqu => (LegacyPrefix::_F3, 0x0F6F),
|
||||
SseOpcode::Movsd => (LegacyPrefix::_F2, 0x0F10),
|
||||
SseOpcode::Movss => (LegacyPrefix::_F3, 0x0F10),
|
||||
SseOpcode::Movups => (LegacyPrefix::None, 0x0F10),
|
||||
@@ -1606,8 +1610,6 @@ pub(crate) fn emit(
|
||||
SseOpcode::Sqrtpd => (LegacyPrefix::_66, 0x0F51),
|
||||
SseOpcode::Sqrtss => (LegacyPrefix::_F3, 0x0F51),
|
||||
SseOpcode::Sqrtsd => (LegacyPrefix::_F2, 0x0F51),
|
||||
SseOpcode::Cvtss2sd => (LegacyPrefix::_F3, 0x0F5A),
|
||||
SseOpcode::Cvtsd2ss => (LegacyPrefix::_F2, 0x0F5A),
|
||||
_ => unimplemented!("Opcode {:?} not implemented", op),
|
||||
};
|
||||
|
||||
@@ -1839,10 +1841,14 @@ pub(crate) fn emit(
|
||||
srcloc,
|
||||
} => {
|
||||
let (prefix, opcode) = match op {
|
||||
SseOpcode::Movaps => (LegacyPrefix::None, 0x0F29),
|
||||
SseOpcode::Movapd => (LegacyPrefix::_66, 0x0F29),
|
||||
SseOpcode::Movdqa => (LegacyPrefix::_66, 0x0F7F),
|
||||
SseOpcode::Movdqu => (LegacyPrefix::_F3, 0x0F7F),
|
||||
SseOpcode::Movss => (LegacyPrefix::_F3, 0x0F11),
|
||||
SseOpcode::Movsd => (LegacyPrefix::_F2, 0x0F11),
|
||||
SseOpcode::Movaps => (LegacyPrefix::None, 0x0F29),
|
||||
SseOpcode::Movups => (LegacyPrefix::None, 0x0F11),
|
||||
SseOpcode::Movupd => (LegacyPrefix::_66, 0x0F11),
|
||||
_ => unimplemented!("Opcode {:?} not implemented", op),
|
||||
};
|
||||
let dst = &dst.finalize(state);
|
||||
|
||||
Reference in New Issue
Block a user