add a missed cmov alias, part of rdar://8416805
[oota-llvm.git] / test / MC / AsmParser / X86 / x86_32-new-encoder.s
index 6c087761671ec604c1895e8fd7bda123dacd0bea..f9cb206b6a67c6389c514847160306059b23b086 100644 (file)
@@ -75,3 +75,465 @@ int $4
 int $255
 // CHECK: int $255
 // CHECK:  encoding: [0xcd,0xff]
+
+// CHECK: pushfl       # encoding: [0x9c]
+        pushf
+// CHECK: pushfl       # encoding: [0x9c]
+        pushfl
+// CHECK: popfl                # encoding: [0x9d]
+        popf
+// CHECK: popfl                # encoding: [0x9d]
+        popfl
+
+// rdar://8014869
+retl
+// CHECK: ret
+// CHECK:  encoding: [0xc3]
+
+// rdar://7973854
+// CHECK: cmoval       %eax, %edx
+// CHECK:  encoding: [0x0f,0x47,0xd0]
+               cmoval  %eax,%edx
+
+// CHECK: cmovael      %eax, %edx
+// CHECK:  encoding: [0x0f,0x43,0xd0]
+               cmovael %eax,%edx
+
+// CHECK: cmovbel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x46,0xd0]
+               cmovbel %eax,%edx
+
+// CHECK: cmovbl       %eax, %edx
+// CHECK:  encoding: [0x0f,0x42,0xd0]
+               cmovbl  %eax,%edx
+
+// CHECK: cmovbw %bx, %bx
+cmovnae        %bx,%bx
+
+
+// CHECK: cmovbel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x46,0xd0]
+               cmovbel %eax,%edx
+
+// CHECK: cmovbl       %eax, %edx
+// CHECK:  encoding: [0x0f,0x42,0xd0]
+               cmovcl  %eax,%edx
+
+// CHECK: cmovel       %eax, %edx
+// CHECK:  encoding: [0x0f,0x44,0xd0]
+               cmovel  %eax,%edx
+
+// CHECK: cmovgl       %eax, %edx
+// CHECK:  encoding: [0x0f,0x4f,0xd0]
+               cmovgl  %eax,%edx
+
+// CHECK: cmovgel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4d,0xd0]
+               cmovgel %eax,%edx
+
+// CHECK: cmovll       %eax, %edx
+// CHECK:  encoding: [0x0f,0x4c,0xd0]
+               cmovll  %eax,%edx
+
+// CHECK: cmovlel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4e,0xd0]
+               cmovlel %eax,%edx
+
+// CHECK: cmovbel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x46,0xd0]
+               cmovnal %eax,%edx
+
+// CHECK: cmovnel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x45,0xd0]
+               cmovnel %eax,%edx
+
+// CHECK: cmovael      %eax, %edx
+// CHECK:  encoding: [0x0f,0x43,0xd0]
+               cmovnbl %eax,%edx
+
+// CHECK: cmoval       %eax, %edx
+// CHECK:  encoding: [0x0f,0x47,0xd0]
+               cmovnbel        %eax,%edx
+
+// CHECK: cmovael      %eax, %edx
+// CHECK:  encoding: [0x0f,0x43,0xd0]
+               cmovncl %eax,%edx
+
+// CHECK: cmovnel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x45,0xd0]
+               cmovnel %eax,%edx
+
+// CHECK: cmovlel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4e,0xd0]
+               cmovngl %eax,%edx
+
+// CHECK: cmovgel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4d,0xd0]
+               cmovnl  %eax,%edx
+
+// CHECK: cmovnel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x45,0xd0]
+               cmovnel %eax,%edx
+
+// CHECK: cmovlel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4e,0xd0]
+               cmovngl %eax,%edx
+
+// CHECK: cmovll       %eax, %edx
+// CHECK:  encoding: [0x0f,0x4c,0xd0]
+               cmovngel        %eax,%edx
+
+// CHECK: cmovgel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4d,0xd0]
+               cmovnll %eax,%edx
+
+// CHECK: cmovgl       %eax, %edx
+// CHECK:  encoding: [0x0f,0x4f,0xd0]
+               cmovnlel        %eax,%edx
+
+// CHECK: cmovnol      %eax, %edx
+// CHECK:  encoding: [0x0f,0x41,0xd0]
+               cmovnol %eax,%edx
+
+// CHECK: cmovnpl      %eax, %edx
+// CHECK:  encoding: [0x0f,0x4b,0xd0]
+               cmovnpl %eax,%edx
+
+// CHECK: cmovnsl      %eax, %edx
+// CHECK:  encoding: [0x0f,0x49,0xd0]
+               cmovnsl %eax,%edx
+
+// CHECK: cmovnel      %eax, %edx
+// CHECK:  encoding: [0x0f,0x45,0xd0]
+               cmovnzl %eax,%edx
+
+// CHECK: cmovol       %eax, %edx
+// CHECK:  encoding: [0x0f,0x40,0xd0]
+               cmovol  %eax,%edx
+
+// CHECK: cmovpl       %eax, %edx
+// CHECK:  encoding: [0x0f,0x4a,0xd0]
+               cmovpl  %eax,%edx
+
+// CHECK: cmovsl       %eax, %edx
+// CHECK:  encoding: [0x0f,0x48,0xd0]
+               cmovsl  %eax,%edx
+
+// CHECK: cmovel       %eax, %edx
+// CHECK:  encoding: [0x0f,0x44,0xd0]
+               cmovzl  %eax,%edx
+
+// CHECK: cmpps        $0, %xmm0, %xmm1
+// CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
+        cmpps $0, %xmm0, %xmm1
+// CHECK:      cmpps   $0, (%eax), %xmm1
+// CHECK: encoding: [0x0f,0xc2,0x08,0x00]
+        cmpps $0, 0(%eax), %xmm1
+// CHECK:      cmppd   $0, %xmm0, %xmm1
+// CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x00]
+        cmppd $0, %xmm0, %xmm1
+// CHECK:      cmppd   $0, (%eax), %xmm1
+// CHECK: encoding: [0x66,0x0f,0xc2,0x08,0x00]
+        cmppd $0, 0(%eax), %xmm1
+// CHECK:      cmpss   $0, %xmm0, %xmm1
+// CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x00]
+        cmpss $0, %xmm0, %xmm1
+// CHECK:      cmpss   $0, (%eax), %xmm1
+// CHECK: encoding: [0xf3,0x0f,0xc2,0x08,0x00]
+        cmpss $0, 0(%eax), %xmm1
+// CHECK:      cmpsd   $0, %xmm0, %xmm1
+// CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x00]
+        cmpsd $0, %xmm0, %xmm1
+// CHECK:      cmpsd   $0, (%eax), %xmm1
+// CHECK: encoding: [0xf2,0x0f,0xc2,0x08,0x00]
+        cmpsd $0, 0(%eax), %xmm1
+
+// Check matching of instructions which embed the SSE comparison code.
+
+// CHECK: cmpps $0, %xmm0, %xmm1
+// CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
+        cmpeqps %xmm0, %xmm1
+
+// CHECK: cmppd $1, %xmm0, %xmm1
+// CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x01]
+        cmpltpd %xmm0, %xmm1
+
+// CHECK: cmpss $2, %xmm0, %xmm1
+// CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x02]
+        cmpless %xmm0, %xmm1
+
+// CHECK: cmppd $3, %xmm0, %xmm1
+// CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x03]
+        cmpunordpd %xmm0, %xmm1
+
+// CHECK: cmpps $4, %xmm0, %xmm1
+// CHECK: encoding: [0x0f,0xc2,0xc8,0x04]
+        cmpneqps %xmm0, %xmm1
+
+// CHECK: cmppd $5, %xmm0, %xmm1
+// CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x05]
+        cmpnltpd %xmm0, %xmm1
+
+// CHECK: cmpss $6, %xmm0, %xmm1
+// CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x06]
+        cmpnless %xmm0, %xmm1
+
+// CHECK: cmpsd $7, %xmm0, %xmm1
+// CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x07]
+        cmpordsd %xmm0, %xmm1
+
+// rdar://7995856
+// CHECK: fmul %st(0)
+// CHECK:  encoding: [0xd8,0xc8]
+        fmul %st(0), %st
+
+// CHECK: fadd %st(0)
+// CHECK:  encoding: [0xd8,0xc0]
+        fadd %st(0), %st
+
+// CHECK: fsub %st(0)
+// CHECK:  encoding: [0xd8,0xe0]
+        fsub %st(0), %st
+
+// CHECK: fsubr        %st(0)
+// CHECK:  encoding: [0xd8,0xe8]
+        fsubr %st(0), %st
+
+// CHECK: fdivr        %st(0)
+// CHECK:  encoding: [0xd8,0xf8]
+        fdivr %st(0), %st
+
+// CHECK: fdiv %st(0)
+// CHECK:  encoding: [0xd8,0xf0]
+        fdiv %st(0), %st
+
+// radr://8017519
+// CHECK: movl %cs, %eax
+// CHECK:  encoding: [0x8c,0xc8]
+        movl %cs, %eax
+
+// CHECK: movw %cs, %ax
+// CHECK:  encoding: [0x66,0x8c,0xc8]
+        movw %cs, %ax
+
+// CHECK: movl %cs, (%eax)
+// CHECK:  encoding: [0x8c,0x08]
+        movl %cs, (%eax)
+
+// CHECK: movw %cs, (%eax)
+// CHECK:  encoding: [0x66,0x8c,0x08]
+        movw %cs, (%eax)
+
+// CHECK: movl %eax, %cs
+// CHECK:  encoding: [0x8e,0xc8]
+        movl %eax, %cs
+
+// CHECK: movl (%eax), %cs
+// CHECK:  encoding: [0x8e,0x08]
+        movl (%eax), %cs
+
+// CHECK: movw (%eax), %cs
+// CHECK:  encoding: [0x66,0x8e,0x08]
+        movw (%eax), %cs
+
+// radr://8033374
+// CHECK: movl %cr0, %eax
+// CHECK:  encoding: [0x0f,0x20,0xc0]
+        movl %cr0,%eax
+
+// CHECK: movl %cr1, %eax
+// CHECK:  encoding: [0x0f,0x20,0xc8]
+        movl %cr1,%eax
+
+// CHECK: movl %cr2, %eax
+// CHECK:  encoding: [0x0f,0x20,0xd0]
+        movl %cr2,%eax
+
+// CHECK: movl %cr3, %eax
+// CHECK:  encoding: [0x0f,0x20,0xd8]
+        movl %cr3,%eax
+
+// CHECK: movl %cr4, %eax
+// CHECK:  encoding: [0x0f,0x20,0xe0]
+        movl %cr4,%eax
+
+// CHECK: movl %dr0, %eax
+// CHECK:  encoding: [0x0f,0x21,0xc0]
+        movl %dr0,%eax
+
+// CHECK: movl %dr1, %eax
+// CHECK:  encoding: [0x0f,0x21,0xc8]
+        movl %dr1,%eax
+
+// CHECK: movl %dr1, %eax
+// CHECK:  encoding: [0x0f,0x21,0xc8]
+        movl %dr1,%eax
+
+// CHECK: movl %dr2, %eax
+// CHECK:  encoding: [0x0f,0x21,0xd0]
+        movl %dr2,%eax
+
+// CHECK: movl %dr3, %eax
+// CHECK:  encoding: [0x0f,0x21,0xd8]
+        movl %dr3,%eax
+
+// CHECK: movl %dr4, %eax
+// CHECK:  encoding: [0x0f,0x21,0xe0]
+        movl %dr4,%eax
+
+// CHECK: movl %dr5, %eax
+// CHECK:  encoding: [0x0f,0x21,0xe8]
+        movl %dr5,%eax
+
+// CHECK: movl %dr6, %eax
+// CHECK:  encoding: [0x0f,0x21,0xf0]
+        movl %dr6,%eax
+
+// CHECK: movl %dr7, %eax
+// CHECK:  encoding: [0x0f,0x21,0xf8]
+        movl %dr7,%eax
+
+// radr://8017522
+// CHECK: wait
+// CHECK:  encoding: [0x9b]
+       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 
+        movl   %gs:124, %eax
+
+// CHECK: pusha
+// CHECK:  encoding: [0x60]
+               pusha
+
+// CHECK: popa
+// CHECK:  encoding: [0x61]
+               popa
+
+// CHECK: pushal
+// CHECK:  encoding: [0x60]
+               pushal
+
+// CHECK: popal
+// CHECK:  encoding: [0x61]
+               popal
+
+// CHECK: jmpl *8(%eax)
+// CHECK:   encoding: [0xff,0x60,0x08]
+       jmp     *8(%eax)
+
+// PR7465
+// CHECK: lcalll $2, $4660
+// CHECK:   encoding: [0x9a,0x34,0x12,0x00,0x00,0x02,0x00]
+lcalll $0x2, $0x1234
+
+
+// rdar://8061602
+L1:
+  jcxz L1
+// CHECK: jcxz L1
+// CHECK:   encoding: [0x67,0xe3,A]
+  jecxz L1
+// CHECK: jecxz L1
+// CHECK:   encoding: [0xe3,A]
+
+// rdar://8403974
+iret
+// CHECK: iretl
+// CHECK: encoding: [0xcf]
+iretw
+// CHECK: iretw
+// CHECK: encoding: [0x66,0xcf]
+iretl
+// CHECK: iretl
+// CHECK: encoding: [0xcf]
+
+// rdar://8403907
+sysret
+// CHECK: sysretl
+// CHECK: encoding: [0x0f,0x07]
+sysretl
+// CHECK: sysretl
+// CHECK: encoding: [0x0f,0x07]
+
+// rdar://8018260
+testl  %ecx, -24(%ebp)
+// CHECK: testl        -24(%ebp), %ecx
+testl  -24(%ebp), %ecx
+// CHECK: testl        -24(%ebp), %ecx
+
+
+// rdar://8407242
+push %cs
+// CHECK: pushl        %cs
+// CHECK: encoding: [0x0e]
+push %ds
+// CHECK: pushl        %ds
+// CHECK: encoding: [0x1e]
+push %ss
+// CHECK: pushl        %ss
+// CHECK: encoding: [0x16]
+push %es
+// CHECK: pushl        %es
+// CHECK: encoding: [0x06]
+push %fs
+// CHECK: pushl        %fs
+// CHECK: encoding: [0x0f,0xa0]
+push %gs
+// CHECK: pushl        %gs
+// CHECK: encoding: [0x0f,0xa8]
+
+pushw %cs
+// CHECK: pushw        %cs
+// CHECK: encoding: [0x66,0x0e]
+pushw %ds
+// CHECK: pushw        %ds
+// CHECK: encoding: [0x66,0x1e]
+pushw %ss
+// CHECK: pushw        %ss
+// CHECK: encoding: [0x66,0x16]
+pushw %es
+// CHECK: pushw        %es
+// CHECK: encoding: [0x66,0x06]
+pushw %fs
+// CHECK: pushw        %fs
+// CHECK: encoding: [0x66,0x0f,0xa0]
+pushw %gs
+// CHECK: pushw        %gs
+// CHECK: encoding: [0x66,0x0f,0xa8]
+
+pop %ss
+// CHECK: popl %ss
+// CHECK: encoding: [0x17]
+pop %ds
+// CHECK: popl %ds
+// CHECK: encoding: [0x1f]
+pop %es
+// CHECK: popl %es
+// CHECK: encoding: [0x07]
+
+// rdar://8408129
+pushfd
+// CHECK: pushfl
+popfd
+// CHECK: popfl
+pushfl
+// CHECK: pushfl
+popfl
+// CHECK: popfl
+
+
+// rdar://8416805
+       setc    %bl
+       setnae  %bl
+       setnb   %bl
+       setnc   %bl
+       setna   %bl
+       setnbe  %bl
+       setpe   %bl
+       setpo   %bl
+       setnge  %bl
+       setnl   %bl
+       setng   %bl
+       setnle  %bl