[AVX512] Added VBROADCAST{SS/SD} encoding for VL subset.
[oota-llvm.git] / test / MC / X86 / x86-32.s
index 28900bb7fd934f6277c5feb07d48efbd043db00b..bebaa65227f151cd2ce9ee057024c188a2a98a2f 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]
 
@@ -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
@@ -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
@@ -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)
 
@@ -817,63 +865,63 @@ pshufw $90, %mm4, %mm0
 // CHECK: encoding: [0xe0,A]
        loopnz 0
 
-// CHECK: outsb # encoding: [0x6e]
+// CHECK: outsb (%esi), %dx # encoding: [0x6e]
 // CHECK: outsb
 // CHECK: outsb
        outsb
        outsb   %ds:(%esi), %dx
        outsb   (%esi), %dx
 
-// CHECK: outsw # encoding: [0x66,0x6f]
+// CHECK: outsw (%esi), %dx # encoding: [0x66,0x6f]
 // CHECK: outsw
 // CHECK: outsw
        outsw
        outsw   %ds:(%esi), %dx
        outsw   (%esi), %dx
 
-// CHECK: outsl # encoding: [0x6f]
+// CHECK: outsl (%esi), %dx # encoding: [0x6f]
 // CHECK: outsl
        outsl
        outsl   %ds:(%esi), %dx
        outsl   (%esi), %dx
 
-// CHECK: insb # encoding: [0x6c]
+// CHECK: insb %dx, %es:(%edi) # encoding: [0x6c]
 // CHECK: insb
        insb
        insb    %dx, %es:(%edi)
 
-// CHECK: insw # encoding: [0x66,0x6d]
+// CHECK: insw %dx, %es:(%edi) # encoding: [0x66,0x6d]
 // CHECK: insw
        insw
        insw    %dx, %es:(%edi)
 
-// CHECK: insl # encoding: [0x6d]
+// CHECK: insl %dx, %es:(%edi) # encoding: [0x6d]
 // CHECK: insl
        insl
        insl    %dx, %es:(%edi)
 
-// CHECK: movsb # encoding: [0xa4]
+// CHECK: movsb (%esi), %es:(%edi) # encoding: [0xa4]
 // CHECK: movsb
 // CHECK: movsb
        movsb
        movsb   %ds:(%esi), %es:(%edi)
        movsb   (%esi), %es:(%edi)
 
-// CHECK: movsw # encoding: [0x66,0xa5]
+// CHECK: movsw (%esi), %es:(%edi) # encoding: [0x66,0xa5]
 // CHECK: movsw
 // CHECK: movsw
        movsw
        movsw   %ds:(%esi), %es:(%edi)
        movsw   (%esi), %es:(%edi)
 
-// CHECK: movsd # encoding: [0xa5]
-// CHECK: movsd
-// CHECK: movsd
+// CHECK: movsl (%esi), %es:(%edi) # encoding: [0xa5]
+// CHECK: movsl
+// CHECK: movsl
        movsl
        movsl   %ds:(%esi), %es:(%edi)
        movsl   (%esi), %es:(%edi)
 
-// CHECK: lodsb # encoding: [0xac]
+// CHECK: lodsb (%esi), %al # encoding: [0xac]
 // CHECK: lodsb
 // CHECK: lodsb
 // CHECK: lodsb
@@ -884,7 +932,7 @@ pshufw $90, %mm4, %mm0
        lods    %ds:(%esi), %al
        lods    (%esi), %al
 
-// CHECK: lodsw # encoding: [0x66,0xad]
+// CHECK: lodsw (%esi), %ax # encoding: [0x66,0xad]
 // CHECK: lodsw
 // CHECK: lodsw
 // CHECK: lodsw
@@ -895,7 +943,7 @@ pshufw $90, %mm4, %mm0
        lods    %ds:(%esi), %ax
        lods    (%esi), %ax
 
-// CHECK: lodsl # encoding: [0xad]
+// CHECK: lodsl (%esi), %eax # encoding: [0xad]
 // CHECK: lodsl
 // CHECK: lodsl
 // CHECK: lodsl
@@ -906,21 +954,21 @@ pshufw $90, %mm4, %mm0
        lods    %ds:(%esi), %eax
        lods    (%esi), %eax
 
-// CHECK: stosb # encoding: [0xaa]
+// CHECK: stosb %al, %es:(%edi) # encoding: [0xaa]
 // CHECK: stosb
 // CHECK: stosb
        stosb
        stosb   %al, %es:(%edi)
        stos    %al, %es:(%edi)
 
-// CHECK: stosw # encoding: [0x66,0xab]
+// CHECK: stosw %ax, %es:(%edi) # encoding: [0x66,0xab]
 // CHECK: stosw
 // CHECK: stosw
        stosw
        stosw   %ax, %es:(%edi)
        stos    %ax, %es:(%edi)
 
-// CHECK: stosl # encoding: [0xab]
+// CHECK: stosl %eax, %es:(%edi) # encoding: [0xab]
 // CHECK: stosl
 // CHECK: stosl
        stosl
@@ -934,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