AVX512: add encoding tests for vmovq/d instructions.
authorIgor Breger <igor.breger@intel.com>
Tue, 3 Nov 2015 07:30:17 +0000 (07:30 +0000)
committerIgor Breger <igor.breger@intel.com>
Tue, 3 Nov 2015 07:30:17 +0000 (07:30 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251903 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrAVX512.td
test/MC/X86/avx512-encodings.s

index 64c6e8dd7e904f50897f1d5c20abd28c4f64d27e..9c5f96f358d028390787a3237205da08d56ee292 100644 (file)
@@ -3084,7 +3084,7 @@ def VMOVZPQILo2PQIZrr : AVX512XSI<0x7E, MRMSrcReg, (outs VR128X:$dst),
                                                    (v2i64 VR128X:$src))))],
                                 IIC_SSE_MOVQ_RR>, EVEX, VEX_W;
 
-let AddedComplexity = 20 in
+let AddedComplexity = 20 , isCodeGenOnly = 1 in
 def VMOVZPQILo2PQIZrm : AVX512XSI<0x7E, MRMSrcMem, (outs VR128X:$dst),
                                  (ins i128mem:$src),
                                  "vmovq\t{$src, $dst|$dst, $src}",
index 3453f3df07aa71e550d62f241f57a3e382ab55b5..dc0ee7e671b22636806856e3ac69d019af0e6d8e 100644 (file)
@@ -17951,4 +17951,349 @@ vpermilpd $0x23, 0x400(%rbx), %zmm2
 
 // CHECK: vcvtps2ph $123, %zmm19, -4128(%rdx)
 // CHECK:  encoding: [0x62,0xe3,0x7d,0x48,0x1d,0x9a,0xe0,0xef,0xff,0xff,0x7b]
-          vcvtps2ph $0x7b, %zmm19, -4128(%rdx)
\ No newline at end of file
+          vcvtps2ph $0x7b, %zmm19, -4128(%rdx)
+
+// CHECK: vmovq  %rax, %xmm29
+// CHECK:  encoding: [0x62,0x61,0xfd,0x08,0x6e,0xe8]
+          vmovq  %rax, %xmm29
+
+// CHECK: vmovq  %r8, %xmm29
+// CHECK:  encoding: [0x62,0x41,0xfd,0x08,0x6e,0xe8]
+          vmovq  %r8, %xmm29
+
+// CHECK: vmovq  (%rcx), %xmm29
+// CHECK:  encoding: [0x62,0x61,0xfd,0x08,0x6e,0x29]
+          vmovq  (%rcx), %xmm29
+
+// CHECK: vmovq  291(%rax,%r14,8), %xmm29
+// CHECK:  encoding: [0x62,0x21,0xfd,0x08,0x6e,0xac,0xf0,0x23,0x01,0x00,0x00]
+          vmovq  291(%rax,%r14,8), %xmm29
+
+// CHECK: vmovq  1016(%rdx), %xmm29
+// CHECK:  encoding: [0x62,0x61,0xfd,0x08,0x6e,0x6a,0x7f]
+          vmovq  1016(%rdx), %xmm29
+
+// CHECK: vmovq  1024(%rdx), %xmm29
+// CHECK:  encoding: [0x62,0x61,0xfd,0x08,0x6e,0xaa,0x00,0x04,0x00,0x00]
+          vmovq  1024(%rdx), %xmm29
+
+// CHECK: vmovq  -1024(%rdx), %xmm29
+// CHECK:  encoding: [0x62,0x61,0xfd,0x08,0x6e,0x6a,0x80]
+          vmovq  -1024(%rdx), %xmm29
+
+// CHECK: vmovq  -1032(%rdx), %xmm29
+// CHECK:  encoding: [0x62,0x61,0xfd,0x08,0x6e,0xaa,0xf8,0xfb,0xff,0xff]
+          vmovq  -1032(%rdx), %xmm29
+
+// CHECK: vmovq        %xmm17, (%rcx)          
+// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0xd6,0x09]
+          vmovq        %xmm17, (%rcx)          
+
+// CHECK: vmovq        %xmm17, 291(%rax,%r14,8) 
+// CHECK: encoding: [0x62,0xa1,0xfd,0x08,0xd6,0x8c,0xf0,0x23,0x01,0x00,0x00]
+          vmovq        %xmm17, 291(%rax,%r14,8) 
+
+// CHECK: vmovq        %xmm17, 1016(%rdx)      
+// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0xd6,0x4a,0x7f]
+          vmovq        %xmm17, 1016(%rdx)      
+
+// CHECK: vmovq        %xmm17, 1024(%rdx)      
+// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0xd6,0x8a,0x00,0x04,0x00,0x00]
+          vmovq        %xmm17, 1024(%rdx)      
+
+// CHECK: vmovq        %xmm17, -1024(%rdx)     
+// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0xd6,0x4a,0x80]
+          vmovq        %xmm17, -1024(%rdx)     
+
+// CHECK: vmovq        %xmm17, -1032(%rdx)     
+// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0xd6,0x8a,0xf8,0xfb,0xff,0xff]
+          vmovq        %xmm17, -1032(%rdx)     
+
+// CHECK: vmovq        %xmm3, %xmm24           
+// CHECK: encoding: [0x62,0x61,0xfe,0x08,0x7e,0xc3]
+          vmovq        %xmm3, %xmm24           
+
+// CHECK: vmovq        (%rcx), %xmm24          
+// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x6e,0x01]
+          vmovq        (%rcx), %xmm24          
+
+// CHECK: vmovq        291(%rax,%r14,8), %xmm24 
+// CHECK: encoding: [0x62,0x21,0xfd,0x08,0x6e,0x84,0xf0,0x23,0x01,0x00,0x00]
+          vmovq        291(%rax,%r14,8), %xmm24 
+
+// CHECK: vmovq        1016(%rdx), %xmm24      
+// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x6e,0x42,0x7f]
+          vmovq        1016(%rdx), %xmm24      
+
+// CHECK: vmovq        1024(%rdx), %xmm24      
+// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x6e,0x82,0x00,0x04,0x00,0x00]
+          vmovq        1024(%rdx), %xmm24      
+
+// CHECK: vmovq        -1024(%rdx), %xmm24     
+// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x6e,0x42,0x80]
+          vmovq        -1024(%rdx), %xmm24     
+
+// CHECK: vmovq        -1032(%rdx), %xmm24     
+// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x6e,0x82,0xf8,0xfb,0xff,0xff]
+          vmovq        -1032(%rdx), %xmm24     
+
+// CHECK: vmovq        %xmm19, (%rcx)          
+// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0xd6,0x19]
+          vmovq        %xmm19, (%rcx)          
+
+// CHECK: vmovq        %xmm19, 291(%rax,%r14,8) 
+// CHECK: encoding: [0x62,0xa1,0xfd,0x08,0xd6,0x9c,0xf0,0x23,0x01,0x00,0x00]
+          vmovq        %xmm19, 291(%rax,%r14,8) 
+
+// CHECK: vmovq        %xmm19, 1016(%rdx)      
+// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0xd6,0x5a,0x7f]
+          vmovq        %xmm19, 1016(%rdx)      
+
+// CHECK: vmovq        %xmm19, 1024(%rdx)      
+// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0xd6,0x9a,0x00,0x04,0x00,0x00]
+          vmovq        %xmm19, 1024(%rdx)      
+
+// CHECK: vmovq        %xmm19, -1024(%rdx)     
+// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0xd6,0x5a,0x80]
+          vmovq        %xmm19, -1024(%rdx)     
+
+// CHECK: vmovq        %xmm19, -1032(%rdx)     
+// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0xd6,0x9a,0xf8,0xfb,0xff,0xff]
+          vmovq        %xmm19, -1032(%rdx)     
+
+// CHECK: vmovq  %xmm27, %rax
+// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x7e,0xd8]
+          vmovq  %xmm27, %rax
+
+// CHECK: vmovq  %xmm27, %rax
+// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x7e,0xd8]
+          vmovq  %xmm27, %rax
+
+// CHECK: vmovq  %xmm27, %r8
+// CHECK: encoding: [0x62,0x41,0xfd,0x08,0x7e,0xd8]
+          vmovq  %xmm27, %r8
+
+// CHECK: vmovq  %xmm27, %r8
+// CHECK: encoding: [0x62,0x41,0xfd,0x08,0x7e,0xd8]
+          vmovq  %xmm27, %r8
+
+// CHECK: vmovq  %xmm22, %rax
+// CHECK:  encoding: [0x62,0xe1,0xfd,0x08,0x7e,0xf0]
+          vmovq  %xmm22, %rax
+
+// CHECK: vmovq  %xmm22, %rax
+// CHECK:  encoding: [0x62,0xe1,0xfd,0x08,0x7e,0xf0]
+          vmovq  %xmm22, %rax
+
+// CHECK: vmovq  %xmm22, %r8
+// CHECK:  encoding: [0x62,0xc1,0xfd,0x08,0x7e,0xf0]
+          vmovq  %xmm22, %r8
+
+// CHECK: vmovq  %xmm22, %r8
+// CHECK:  encoding: [0x62,0xc1,0xfd,0x08,0x7e,0xf0]
+          vmovq  %xmm22, %r8
+
+// CHECK: vmovq  %xmm29, %xmm29
+// CHECK: encoding: [0x62,0x01,0xfe,0x08,0x7e,0xed]
+          vmovq  %xmm29, %xmm29
+
+// CHECK: vmovq  %xmm25, %xmm8
+// CHECK: encoding: [0x62,0x11,0xfe,0x08,0x7e,0xc1]
+          vmovq  %xmm25, %xmm8
+
+// CHECK: vmovq  %xmm29, %rax
+// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x7e,0xe8]
+          vmovq  %xmm29, %rax
+
+// CHECK: vmovq  %xmm29, %rax
+// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x7e,0xe8]
+          vmovq  %xmm29, %rax
+
+// CHECK: vmovq  %xmm29, %r8
+// CHECK: encoding: [0x62,0x41,0xfd,0x08,0x7e,0xe8]
+          vmovq  %xmm29, %r8
+
+// CHECK: vmovq  %xmm29, %r8
+// CHECK: encoding: [0x62,0x41,0xfd,0x08,0x7e,0xe8]
+          vmovq  %xmm29, %r8
+
+// CHECK: vmovq  %xmm20, %rax
+// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x7e,0xe0]
+          vmovq  %xmm20, %rax
+
+// CHECK: vmovq  %xmm20, %rax
+// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x7e,0xe0]
+          vmovq  %xmm20, %rax
+
+// CHECK: vmovq  %xmm20, %r8
+// CHECK: encoding: [0x62,0xc1,0xfd,0x08,0x7e,0xe0]
+          vmovq  %xmm20, %r8
+
+// CHECK: vmovq  %xmm20, %r8
+// CHECK: encoding: [0x62,0xc1,0xfd,0x08,0x7e,0xe0]
+          vmovq  %xmm20, %r8
+
+// CHECK: vmovq  %xmm14, %xmm25
+// CHECK:  encoding: [0x62,0x41,0xfe,0x08,0x7e,0xce]
+          vmovq  %xmm14, %xmm25
+
+// CHECK: vmovq  %xmm24, %xmm12
+// CHECK:  encoding: [0x62,0x11,0xfe,0x08,0x7e,0xe0]
+          vmovq  %xmm24, %xmm12
+
+// CHECK: vmovd  %xmm5, %eax
+// CHECK:  encoding: [0xc5,0xf9,0x7e,0xe8]
+          vmovd  %xmm5, %eax
+
+// CHECK: vmovd  %xmm5, %eax
+// CHECK:  encoding: [0xc5,0xf9,0x7e,0xe8]
+          vmovd  %xmm5, %eax
+
+// CHECK: vmovd  %xmm5, %ebp
+// CHECK:  encoding: [0xc5,0xf9,0x7e,0xed]
+          vmovd  %xmm5, %ebp
+
+// CHECK: vmovd  %xmm5, %ebp
+// CHECK:  encoding: [0xc5,0xf9,0x7e,0xed]
+          vmovd  %xmm5, %ebp
+
+// CHECK: vmovd  %xmm5, %r13d
+// CHECK:  encoding: [0xc4,0xc1,0x79,0x7e,0xed]
+          vmovd  %xmm5, %r13d
+
+// CHECK: vmovd  %xmm5, %r13d
+// CHECK:  encoding: [0xc4,0xc1,0x79,0x7e,0xed]
+          vmovd  %xmm5, %r13d
+
+// CHECK: vmovd  %xmm28, %eax
+// CHECK:  encoding: [0x62,0x61,0x7d,0x08,0x7e,0xe0]
+          vmovd  %xmm28, %eax
+
+// CHECK: vmovd  %xmm28, %eax
+// CHECK:  encoding: [0x62,0x61,0x7d,0x08,0x7e,0xe0]
+          vmovd  %xmm28, %eax
+
+// CHECK: vmovd  %xmm28, %ebp
+// CHECK:  encoding: [0x62,0x61,0x7d,0x08,0x7e,0xe5]
+          vmovd  %xmm28, %ebp
+
+// CHECK: vmovd  %xmm28, %ebp
+// CHECK:  encoding: [0x62,0x61,0x7d,0x08,0x7e,0xe5]
+          vmovd  %xmm28, %ebp
+
+// CHECK: vmovd  %xmm28, %r13d
+// CHECK:  encoding: [0x62,0x41,0x7d,0x08,0x7e,0xe5]
+          vmovd  %xmm28, %r13d
+
+// CHECK: vmovd  %xmm28, %r13d
+// CHECK:  encoding: [0x62,0x41,0x7d,0x08,0x7e,0xe5]
+          vmovd  %xmm28, %r13d
+
+// CHECK: vmovd  %xmm14, %eax
+// CHECK:  encoding: [0xc5,0x79,0x7e,0xf0]
+          vmovd  %xmm14, %eax
+
+// CHECK: vmovd  %xmm14, %eax
+// CHECK:  encoding: [0xc5,0x79,0x7e,0xf0]
+          vmovd  %xmm14, %eax
+
+// CHECK: vmovd  %xmm14, %ebp
+// CHECK:  encoding: [0xc5,0x79,0x7e,0xf5]
+          vmovd  %xmm14, %ebp
+
+// CHECK: vmovd  %xmm14, %ebp
+// CHECK:  encoding: [0xc5,0x79,0x7e,0xf5]
+          vmovd  %xmm14, %ebp
+
+// CHECK: vmovd  %xmm14, %r13d
+// CHECK:  encoding: [0xc4,0x41,0x79,0x7e,0xf5]
+          vmovd  %xmm14, %r13d
+
+// CHECK: vmovd  %xmm14, %r13d
+// CHECK:  encoding: [0xc4,0x41,0x79,0x7e,0xf5]
+          vmovd  %xmm14, %r13d
+
+// CHECK: vmovd  %xmm1, %eax
+// CHECK:  encoding: [0xc5,0xf9,0x7e,0xc8]
+          vmovd  %xmm1, %eax
+
+// CHECK: vmovd  %xmm1, %eax
+// CHECK:  encoding: [0xc5,0xf9,0x7e,0xc8]
+          vmovd  %xmm1, %eax
+
+// CHECK: vmovd  %xmm1, %ebp
+// CHECK:  encoding: [0xc5,0xf9,0x7e,0xcd]
+          vmovd  %xmm1, %ebp
+
+// CHECK: vmovd  %xmm1, %ebp
+// CHECK:  encoding: [0xc5,0xf9,0x7e,0xcd]
+          vmovd  %xmm1, %ebp
+
+// CHECK: vmovd  %xmm1, %r13d
+// CHECK:  encoding: [0xc4,0xc1,0x79,0x7e,0xcd]
+          vmovd  %xmm1, %r13d
+
+// CHECK: vmovd  %xmm1, %r13d
+// CHECK:  encoding: [0xc4,0xc1,0x79,0x7e,0xcd]
+          vmovd  %xmm1, %r13d
+
+// CHECK: vmovd  %eax, %xmm26
+// CHECK:  encoding: [0x62,0x61,0x7d,0x08,0x6e,0xd0]
+          vmovd  %eax, %xmm26
+
+// CHECK: vmovd  %ebp, %xmm26
+// CHECK:  encoding: [0x62,0x61,0x7d,0x08,0x6e,0xd5]
+          vmovd  %ebp, %xmm26
+
+// CHECK: vmovd  %r13d, %xmm26
+// CHECK:  encoding: [0x62,0x41,0x7d,0x08,0x6e,0xd5]
+          vmovd  %r13d, %xmm26
+
+// CHECK: vmovd  (%rcx), %xmm26
+// CHECK:  encoding: [0x62,0x61,0x7d,0x08,0x6e,0x11]
+          vmovd  (%rcx), %xmm26
+
+// CHECK: vmovd  291(%rax,%r14,8), %xmm26
+// CHECK:  encoding: [0x62,0x21,0x7d,0x08,0x6e,0x94,0xf0,0x23,0x01,0x00,0x00]
+          vmovd  291(%rax,%r14,8), %xmm26
+
+// CHECK: vmovd  508(%rdx), %xmm26
+// CHECK:  encoding: [0x62,0x61,0x7d,0x08,0x6e,0x52,0x7f]
+          vmovd  508(%rdx), %xmm26
+
+// CHECK: vmovd  512(%rdx), %xmm26
+// CHECK:  encoding: [0x62,0x61,0x7d,0x08,0x6e,0x92,0x00,0x02,0x00,0x00]
+          vmovd  512(%rdx), %xmm26
+
+// CHECK: vmovd  -512(%rdx), %xmm26
+// CHECK:  encoding: [0x62,0x61,0x7d,0x08,0x6e,0x52,0x80]
+          vmovd  -512(%rdx), %xmm26
+
+// CHECK: vmovd  -516(%rdx), %xmm26
+// CHECK:  encoding: [0x62,0x61,0x7d,0x08,0x6e,0x92,0xfc,0xfd,0xff,0xff]
+          vmovd  -516(%rdx), %xmm26
+
+// CHECK: vmovd  %xmm5, (%rcx)
+// CHECK:  encoding: [0xc5,0xf9,0x7e,0x29]
+          vmovd  %xmm5, (%rcx)
+
+// CHECK: vmovd  %xmm5, 291(%rax,%r14,8)
+// CHECK:  encoding: [0xc4,0xa1,0x79,0x7e,0xac,0xf0,0x23,0x01,0x00,0x00]
+          vmovd  %xmm5, 291(%rax,%r14,8)
+
+// CHECK: vmovd  %xmm5, 508(%rdx)
+// CHECK:  encoding: [0xc5,0xf9,0x7e,0xaa,0xfc,0x01,0x00,0x00]
+          vmovd  %xmm5, 508(%rdx)
+
+// CHECK: vmovd  %xmm5, 512(%rdx)
+// CHECK:  encoding: [0xc5,0xf9,0x7e,0xaa,0x00,0x02,0x00,0x00]
+          vmovd  %xmm5, 512(%rdx)
+
+// CHECK: vmovd  %xmm5, -512(%rdx)
+// CHECK:  encoding: [0xc5,0xf9,0x7e,0xaa,0x00,0xfe,0xff,0xff]
+          vmovd  %xmm5, -512(%rdx)
+
+// CHECK: vmovd  %xmm5, -516(%rdx)
+// CHECK:  encoding: [0xc5,0xf9,0x7e,0xaa,0xfc,0xfd,0xff,0xff]
+          vmovd  %xmm5, -516(%rdx)
+