Add AVX 256-bit MOVMSK forms
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Mon, 12 Jul 2010 20:06:32 +0000 (20:06 +0000)
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Mon, 12 Jul 2010 20:06:32 +0000 (20:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108184 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrSSE.td
test/MC/AsmParser/X86/x86_32-encoding.s
test/MC/AsmParser/X86/x86_64-encoding.s

index afdedd4de4a54e2de0c9fe5f6243fd382ba62f4a..8e5f37c867b540e9022dd686305986bc383d678f 100644 (file)
@@ -1598,6 +1598,12 @@ let isAsmParserOnly = 1 in {
   defm VMOVMSKPD : sse12_extr_sign_mask<VR128, int_x86_sse2_movmsk_pd,
                                         "movmskpd", SSEPackedDouble>, OpSize,
                                         VEX;
+  // FIXME: merge with multiclass above when the intrinsics come.
+  def VMOVMSKPSYrr : PI<0x50, MRMSrcReg, (outs GR32:$dst), (ins VR256:$src),
+             "movmskps\t{$src, $dst|$dst, $src}", [], SSEPackedSingle>, VEX;
+  def VMOVMSKPDYrr : PI<0x50, MRMSrcReg, (outs GR32:$dst), (ins VR256:$src),
+             "movmskpd\t{$src, $dst|$dst, $src}", [], SSEPackedDouble>, OpSize,
+                                                                        VEX;
 }
 
 //===----------------------------------------------------------------------===//
index a9f63a44afac3bd37b4a7fa6611ce70ecee43643..e192dd09035f94bfc58a26e63c0b7e1a145d80a9 100644 (file)
 // CHECK: encoding: [0xc5,0xfc,0x2b,0x08]
           vmovntps  %ymm1, (%eax)
 
+// CHECK: vmovmskps  %xmm2, %eax
+// CHECK: encoding: [0xc5,0xf8,0x50,0xc2]
+          vmovmskps  %xmm2, %eax
+
+// CHECK: vmovmskpd  %xmm2, %eax
+// CHECK: encoding: [0xc5,0xf9,0x50,0xc2]
+          vmovmskpd  %xmm2, %eax
 
index 2b8f78d9d0a3ea3cdfe7ffe7f26e4ee6f30b5bba..fa51b6562ed876d975b45784bedaeab94333d719 100644 (file)
@@ -2472,3 +2472,11 @@ pshufb   CPI1_0(%rip), %xmm1
 // CHECK: encoding: [0xc5,0x7c,0x2b,0x18]
           vmovntps  %ymm11, (%rax)
 
+// CHECK: vmovmskps  %xmm12, %eax
+// CHECK: encoding: [0xc4,0xc1,0x78,0x50,0xc4]
+          vmovmskps  %xmm12, %eax
+
+// CHECK: vmovmskpd  %xmm12, %eax
+// CHECK: encoding: [0xc4,0xc1,0x79,0x50,0xc4]
+          vmovmskpd  %xmm12, %eax
+