AVX512: Implemented encoding and intrinsics for vpternlogd/q.
[oota-llvm.git] / test / MC / X86 / x86-32.s
index 9dba65298c1c225dd930587c9c46cd9f5d6fd054..56fd658a76ee6daa9a7c5a1498578f00c50ea5ef 100644 (file)
@@ -28,6 +28,9 @@
        vmcall
 // CHECK: vmcall
 // CHECK: encoding: [0x0f,0x01,0xc1]
+       vmfunc
+// CHECK: vmfunc
+// CHECK: encoding: [0x0f,0x01,0xd4]
        vmlaunch
 // CHECK: vmlaunch
 // CHECK: encoding: [0x0f,0x01,0xc2]
 // CHECK: swapgs
 // CHECK: encoding: [0x0f,0x01,0xf8]
 
-rdtscp
+       vmrun %eax
+// CHECK: vmrun %eax
+// CHECK: encoding: [0x0f,0x01,0xd8]
+       vmmcall
+// CHECK: vmmcall
+// CHECK: encoding: [0x0f,0x01,0xd9]
+       vmload %eax
+// CHECK: vmload %eax
+// CHECK: encoding: [0x0f,0x01,0xda]
+       vmsave %eax
+// CHECK: vmsave %eax
+// CHECK: encoding: [0x0f,0x01,0xdb]
+       stgi
+// CHECK: stgi
+// CHECK: encoding: [0x0f,0x01,0xdc]
+       clgi
+// CHECK: clgi
+// CHECK: encoding: [0x0f,0x01,0xdd]
+       skinit %eax
+// CHECK: skinit %eax
+// CHECK: encoding: [0x0f,0x01,0xde]
+       invlpga %ecx, %eax
+// CHECK: invlpga %ecx, %eax
+// CHECK: encoding: [0x0f,0x01,0xdf]
+
+       rdtscp
 // CHECK: rdtscp
 // CHECK:  encoding: [0x0f,0x01,0xf9]
 
@@ -51,7 +79,7 @@ rdtscp
 // CHECK: movl %eax, -16(%ebp)          # encoding: [0x89,0x45,0xf0]
        movl    %eax, -16(%ebp)
 
-// CHECK: testb        %bl, %cl                # encoding: [0x84,0xcb]
+// CHECK: testb        %bl, %cl                # encoding: [0x84,0xd9]
         testb %bl, %cl
 
 // CHECK: cmpl %eax, %ebx              # encoding: [0x39,0xc3]
@@ -69,9 +97,9 @@ rdtscp
         sal $1, %eax
 
 // moffset forms of moves, rdar://7947184
-movb   0, %al    // CHECK: movb 0, %al  # encoding: [0xa0,A,A,A,A]
-movw   0, %ax    // CHECK: movw 0, %ax  # encoding: [0x66,0xa1,A,A,A,A]
-movl   0, %eax   // CHECK: movl 0, %eax  # encoding: [0xa1,A,A,A,A]
+movb   0, %al    // CHECK: movb 0, %al  # encoding: [0xa0,0x00,0x00,0x00,0x00]
+movw   0, %ax    // CHECK: movw 0, %ax  # encoding: [0x66,0xa1,0x00,0x00,0x00,0x00]
+movl   0, %eax   // CHECK: movl 0, %eax  # encoding: [0xa1,0x00,0x00,0x00,0x00]
 
 // rdar://7973775
 into
@@ -261,35 +289,35 @@ cmovnae   %bx,%bx
 
 // Check matching of instructions which embed the SSE comparison code.
 
-// CHECK: cmpps $0, %xmm0, %xmm1
+// CHECK: cmpeqps %xmm0, %xmm1
 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
         cmpeqps %xmm0, %xmm1
 
-// CHECK: cmppd $1, %xmm0, %xmm1
+// CHECK: cmpltpd %xmm0, %xmm1
 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x01]
         cmpltpd %xmm0, %xmm1
 
-// CHECK: cmpss $2, %xmm0, %xmm1
+// CHECK: cmpless %xmm0, %xmm1
 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x02]
         cmpless %xmm0, %xmm1
 
-// CHECK: cmppd $3, %xmm0, %xmm1
+// CHECK: cmpunordpd %xmm0, %xmm1
 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x03]
         cmpunordpd %xmm0, %xmm1
 
-// CHECK: cmpps $4, %xmm0, %xmm1
+// CHECK: cmpneqps %xmm0, %xmm1
 // CHECK: encoding: [0x0f,0xc2,0xc8,0x04]
         cmpneqps %xmm0, %xmm1
 
-// CHECK: cmppd $5, %xmm0, %xmm1
+// CHECK: cmpnltpd %xmm0, %xmm1
 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x05]
         cmpnltpd %xmm0, %xmm1
 
-// CHECK: cmpss $6, %xmm0, %xmm1
+// CHECK: cmpnless %xmm0, %xmm1
 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x06]
         cmpnless %xmm0, %xmm1
 
-// CHECK: cmpsd $7, %xmm0, %xmm1
+// CHECK: cmpordsd %xmm0, %xmm1
 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x07]
         cmpordsd %xmm0, %xmm1
 
@@ -410,18 +438,28 @@ cmovnae   %bx,%bx
        fwait
 
 // rdar://7873482
-// CHECK: [0x65,0x8b,0x05,0x7c,0x00,0x00,0x00]
-// FIXME: This is a correct bug poor encoding: Use 65 a1 7c 00 00 00 
+// CHECK: [0x65,0xa1,0x7c,0x00,0x00,0x00]
         movl   %gs:124, %eax
 
-// CHECK: pusha
+// CHECK: [0x65,0xa3,0x7c,0x00,0x00,0x00]
+        movl   %eax, %gs:124
+
+// CHECK: pushal
 // CHECK:  encoding: [0x60]
                pusha
 
-// CHECK: popa
+// CHECK: popal
 // CHECK:  encoding: [0x61]
                popa
 
+// CHECK: pushaw
+// CHECK:  encoding: [0x66,0x60]
+               pushaw
+
+// CHECK: popaw
+// CHECK:  encoding: [0x66,0x61]
+               popaw
+
 // CHECK: pushal
 // CHECK:  encoding: [0x60]
                pushal
@@ -565,6 +603,16 @@ lcalll     $0x7ace,$0x7ace
 jmpl   $0x7ace,$0x7ace
 ljmpl  $0x7ace,$0x7ace
 
+// CHECK: lcallw       $31438, $31438
+// CHECK: lcallw       $31438, $31438
+// CHECK: ljmpw        $31438, $31438
+// CHECK: ljmpw        $31438, $31438
+
+callw  $0x7ace,$0x7ace
+lcallw $0x7ace,$0x7ace
+jmpw   $0x7ace,$0x7ace
+ljmpw  $0x7ace,$0x7ace
+
 // CHECK: lcalll       $31438, $31438
 // CHECK: lcalll       $31438, $31438
 // CHECK: ljmpl        $31438, $31438
@@ -613,11 +661,11 @@ pshufw $90, %mm4, %mm0
 // CHECK:  encoding: [0xd5,0x01]
                aad     $1
 
-// CHECK: aad  $10
+// CHECK: aad
 // CHECK:  encoding: [0xd5,0x0a]
                aad     $0xA
 
-// CHECK: aad  $10
+// CHECK: aad
 // CHECK:  encoding: [0xd5,0x0a]
                aad
 
@@ -625,11 +673,11 @@ pshufw $90, %mm4, %mm0
 // CHECK:  encoding: [0xd4,0x02]
                aam     $2
 
-// CHECK: aam  $10
+// CHECK: aam
 // CHECK:  encoding: [0xd4,0x0a]
                aam     $0xA
 
-// CHECK: aam  $10
+// CHECK: aam
 // CHECK:  encoding: [0xd4,0x0a]
                aam
 
@@ -673,11 +721,11 @@ pshufw $90, %mm4, %mm0
 // CHECK:  encoding: [0x66,0x0f,0x01,0x50,0x04]
                lgdtw   4(%eax)
 
-// CHECK: lgdt 4(%eax)
+// CHECK: lgdtl        4(%eax)
 // CHECK:  encoding: [0x0f,0x01,0x50,0x04]
                lgdt    4(%eax)
 
-// CHECK: lgdt 4(%eax)
+// CHECK: lgdtl        4(%eax)
 // CHECK:  encoding: [0x0f,0x01,0x50,0x04]
                lgdtl   4(%eax)
 
@@ -685,11 +733,11 @@ pshufw $90, %mm4, %mm0
 // CHECK:  encoding: [0x66,0x0f,0x01,0x58,0x04]
                lidtw   4(%eax)
 
-// CHECK: lidt 4(%eax)
+// CHECK: lidtl        4(%eax)
 // CHECK:  encoding: [0x0f,0x01,0x58,0x04]
                lidt    4(%eax)
 
-// CHECK: lidt 4(%eax)
+// CHECK: lidtl        4(%eax)
 // CHECK:  encoding: [0x0f,0x01,0x58,0x04]
                lidtl   4(%eax)
 
@@ -697,11 +745,11 @@ pshufw $90, %mm4, %mm0
 // CHECK:  encoding: [0x66,0x0f,0x01,0x40,0x04]
                sgdtw   4(%eax)
 
-// CHECK: sgdt 4(%eax)
+// CHECK: sgdtl        4(%eax)
 // CHECK:  encoding: [0x0f,0x01,0x40,0x04]
                sgdt    4(%eax)
 
-// CHECK: sgdt 4(%eax)
+// CHECK: sgdtl        4(%eax)
 // CHECK:  encoding: [0x0f,0x01,0x40,0x04]
                sgdtl   4(%eax)
 
@@ -709,11 +757,11 @@ pshufw $90, %mm4, %mm0
 // CHECK:  encoding: [0x66,0x0f,0x01,0x48,0x04]
                sidtw   4(%eax)
 
-// CHECK: sidt 4(%eax)
+// CHECK: sidtl        4(%eax)
 // CHECK:  encoding: [0x0f,0x01,0x48,0x04]
                sidt    4(%eax)
 
-// CHECK: sidt 4(%eax)
+// CHECK: sidtl        4(%eax)
 // CHECK:  encoding: [0x0f,0x01,0x48,0x04]
                sidtl   4(%eax)
 
@@ -725,7 +773,7 @@ pshufw $90, %mm4, %mm0
 // CHECK:  encoding: [0xdf,0xf2]
                fcompi  %st(2)
 
-// CHECK: fcompi       %st(1)
+// CHECK: fcompi
 // CHECK:  encoding: [0xdf,0xf1]
                fcompi
 
@@ -737,7 +785,7 @@ pshufw $90, %mm4, %mm0
 // CHECK:  encoding: [0xdf,0xea]
                fucompi %st(2)
 
-// CHECK: fucompi      %st(1)
+// CHECK: fucompi
 // CHECK:  encoding: [0xdf,0xe9]
                fucompi
 
@@ -817,6 +865,116 @@ pshufw $90, %mm4, %mm0
 // CHECK: encoding: [0xe0,A]
        loopnz 0
 
+// CHECK: outsb (%esi), %dx # encoding: [0x6e]
+// CHECK: outsb
+// CHECK: outsb
+       outsb
+       outsb   %ds:(%esi), %dx
+       outsb   (%esi), %dx
+
+// CHECK: outsw (%esi), %dx # encoding: [0x66,0x6f]
+// CHECK: outsw
+// CHECK: outsw
+       outsw
+       outsw   %ds:(%esi), %dx
+       outsw   (%esi), %dx
+
+// CHECK: outsl (%esi), %dx # encoding: [0x6f]
+// CHECK: outsl
+       outsl
+       outsl   %ds:(%esi), %dx
+       outsl   (%esi), %dx
+
+// CHECK: insb %dx, %es:(%edi) # encoding: [0x6c]
+// CHECK: insb
+       insb
+       insb    %dx, %es:(%edi)
+
+// CHECK: insw %dx, %es:(%edi) # encoding: [0x66,0x6d]
+// CHECK: insw
+       insw
+       insw    %dx, %es:(%edi)
+
+// CHECK: insl %dx, %es:(%edi) # encoding: [0x6d]
+// CHECK: insl
+       insl
+       insl    %dx, %es:(%edi)
+
+// CHECK: movsb (%esi), %es:(%edi) # encoding: [0xa4]
+// CHECK: movsb
+// CHECK: movsb
+       movsb
+       movsb   %ds:(%esi), %es:(%edi)
+       movsb   (%esi), %es:(%edi)
+
+// CHECK: movsw (%esi), %es:(%edi) # encoding: [0x66,0xa5]
+// CHECK: movsw
+// CHECK: movsw
+       movsw
+       movsw   %ds:(%esi), %es:(%edi)
+       movsw   (%esi), %es:(%edi)
+
+// CHECK: movsl (%esi), %es:(%edi) # encoding: [0xa5]
+// CHECK: movsl
+// CHECK: movsl
+       movsl
+       movsl   %ds:(%esi), %es:(%edi)
+       movsl   (%esi), %es:(%edi)
+
+// CHECK: lodsb (%esi), %al # encoding: [0xac]
+// CHECK: lodsb
+// CHECK: lodsb
+// CHECK: lodsb
+// CHECK: lodsb
+       lodsb
+       lodsb   %ds:(%esi), %al
+       lodsb   (%esi), %al
+       lods    %ds:(%esi), %al
+       lods    (%esi), %al
+
+// CHECK: lodsw (%esi), %ax # encoding: [0x66,0xad]
+// CHECK: lodsw
+// CHECK: lodsw
+// CHECK: lodsw
+// CHECK: lodsw
+       lodsw
+       lodsw   %ds:(%esi), %ax
+       lodsw   (%esi), %ax
+       lods    %ds:(%esi), %ax
+       lods    (%esi), %ax
+
+// CHECK: lodsl (%esi), %eax # encoding: [0xad]
+// CHECK: lodsl
+// CHECK: lodsl
+// CHECK: lodsl
+// CHECK: lodsl
+       lodsl
+       lodsl   %ds:(%esi), %eax
+       lodsl   (%esi), %eax
+       lods    %ds:(%esi), %eax
+       lods    (%esi), %eax
+
+// CHECK: stosb %al, %es:(%edi) # encoding: [0xaa]
+// CHECK: stosb
+// CHECK: stosb
+       stosb
+       stosb   %al, %es:(%edi)
+       stos    %al, %es:(%edi)
+
+// CHECK: stosw %ax, %es:(%edi) # encoding: [0x66,0xab]
+// CHECK: stosw
+// CHECK: stosw
+       stosw
+       stosw   %ax, %es:(%edi)
+       stos    %ax, %es:(%edi)
+
+// CHECK: stosl %eax, %es:(%edi) # encoding: [0xab]
+// CHECK: stosl
+// CHECK: stosl
+       stosl
+       stosl   %eax, %es:(%edi)
+       stos    %eax, %es:(%edi)
+
 // CHECK: strw
 // CHECK: encoding: [0x66,0x0f,0x00,0xc8]
        str %ax
@@ -824,3 +982,39 @@ pshufw $90, %mm4, %mm0
 // CHECK: strl
 // CHECK: encoding: [0x0f,0x00,0xc8]
        str %eax
+
+
+// PR9378
+// CHECK: fsubp
+// CHECK: encoding: [0xde,0xe1]
+fsubp %st,%st(1)
+
+// PR9164
+// CHECK: fsubp        %st(2)
+// CHECK: encoding: [0xde,0xe2]
+fsubp   %st, %st(2)
+
+// PR10345
+// CHECK: xchgl %eax, %eax
+// CHECK: encoding: [0x90]
+xchgl %eax, %eax
+
+// CHECK: xchgw %ax, %ax
+// CHECK: encoding: [0x66,0x90]
+xchgw %ax, %ax
+
+// CHECK: xchgl %ecx, %eax
+// CHECK: encoding: [0x91]
+xchgl %ecx, %eax
+
+// CHECK: xchgl %ecx, %eax
+// CHECK: encoding: [0x91]
+xchgl %eax, %ecx
+
+// CHECK: retw
+// CHECK: encoding: [0x66,0xc3]
+retw
+
+// CHECK: lretw
+// CHECK: encoding: [0x66,0xcb]
+lretw