Add disassembler support for SSE4.1 register/register form of PEXTRW. There is a...
authorCraig Topper <craig.topper@gmail.com>
Mon, 14 Oct 2013 01:42:32 +0000 (01:42 +0000)
committerCraig Topper <craig.topper@gmail.com>
Mon, 14 Oct 2013 01:42:32 +0000 (01:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192566 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrSSE.td
test/MC/Disassembler/X86/x86-64.txt

index 90bdfa3b44733381768641e61c0e82bcf7791d26..15b9b91583d733ef006ce212ae42bbd8f68c81ac 100644 (file)
@@ -6053,6 +6053,13 @@ defm PEXTRB      : SS41I_extract8<0x14, "pextrb">;
 
 /// SS41I_extract16 - SSE 4.1 extract 16 bits to memory destination
 multiclass SS41I_extract16<bits<8> opc, string OpcodeStr> {
+  let isCodeGenOnly = 1, hasSideEffects = 0 in
+  def rr_REV : SS4AIi8<opc, MRMDestReg, (outs GR32:$dst),
+                   (ins VR128:$src1, i32i8imm:$src2),
+                   !strconcat(OpcodeStr,
+                   "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
+                   []>, OpSize;
+
   let neverHasSideEffects = 1, mayStore = 1 in
   def mr : SS4AIi8<opc, MRMDestMem, (outs),
                  (ins i16mem:$dst, VR128:$src1, i32i8imm:$src2),
index b9478e81428a045287f7693dca9c5fed3ce443ff..8c6bc0e2964c438001412a96db72ee41090bed39 100644 (file)
 
 # CHECK: movd %xmm0, %rax
 0x66 0x48 0x0f 0x7e 0xc0
+
+# CHECK: pextrw $3, %xmm3, %ecx
+0x66 0x0f 0x3a 0x15 0xd9 0x03
+
+# CHECK: pextrw $3, %xmm3, (%rax)
+0x66 0x0f 0x3a 0x15 0x18 0x03