X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=test%2FMC%2FX86%2Fintel-syntax.s;h=dba72b3dcd04b0c90e118cb4a4a00f4fd7b73c10;hp=226757b305ecb477613758a3124d93216f4bd763;hb=5d59bb44eeb9a40fae29fc710761fca48b7bb658;hpb=e112453fc39b97147ea3f23bf0b1973cd9f739b1 diff --git a/test/MC/X86/intel-syntax.s b/test/MC/X86/intel-syntax.s index 226757b305e..dba72b3dcd0 100644 --- a/test/MC/X86/intel-syntax.s +++ b/test/MC/X86/intel-syntax.s @@ -63,6 +63,14 @@ _main: mov ECX, DWORD PTR [4*ECX + _fnan] // CHECK: movq %fs:320, %rax mov RAX, QWORD PTR FS:[320] +// CHECK: movq %fs:320, %rax + mov RAX, QWORD PTR FS:320 +// CHECK: movq %rax, %fs:320 + mov QWORD PTR FS:320, RAX +// CHECK: movq %rax, %fs:20(%rbx) + mov QWORD PTR FS:20[rbx], RAX +// CHECK: vshufpd $1, %xmm2, %xmm1, %xmm0 + vshufpd XMM0, XMM1, XMM2, 1 // CHECK: vpgatherdd %xmm8, (%r15,%xmm9,2), %xmm1 vpgatherdd XMM10, DWORD PTR [R15 + 2*XMM9], XMM8 // CHECK: movsd -8, %xmm5 @@ -283,5 +291,302 @@ _main: mov [((-2) * ((8 + 4) - 4)) + eax + ebx*4], ecx // CHECK: movl %ecx, -16(%eax,%ebx,4) mov [eax + ((-2) * ((8 + 4) - 4)) + ebx*4], ecx +// CHECK: movl %ecx, 96(%eax,%ebx,4) + mov [eax + ((-2) * ((8 + 4) * -4)) + ebx*4], ecx +// CHECK: movl %ecx, -8(%eax,%ebx,4) + mov [eax][-8][ebx*4], ecx +// CHECK: movl %ecx, -2(%eax,%ebx,4) + mov [eax][16/-8][ebx*4], ecx +// CHECK: movl %ecx, -2(%eax,%ebx,4) + mov [eax][(16)/-8][ebx*4], ecx +// CHECK: setb %al + setc al +// CHECK: sete %al + setz al +// CHECK: setbe %al + setna al +// CHECK: setae %al + setnb al +// CHECK: setae %al + setnc al +// CHECK: setle %al + setng al +// CHECK: setge %al + setnl al +// CHECK: setne %al + setnz al +// CHECK: setp %al + setpe al +// CHECK: setnp %al + setpo al +// CHECK: setb %al + setnae al +// CHECK: seta %al + setnbe al +// CHECK: setl %al + setnge al +// CHECK: setg %al + setnle al +// CHECK: jne _foo + jnz _foo +// CHECK: outb %al, $4 + out 4, al ret + +// CHECK: cmovbl %ebx, %eax + cmovc eax, ebx +// CHECK: cmovel %ebx, %eax + cmovz eax, ebx +// CHECK: cmovbel %ebx, %eax + cmovna eax, ebx +// CHECK: cmovael %ebx, %eax + cmovnb eax, ebx +// CHECK: cmovael %ebx, %eax + cmovnc eax, ebx +// CHECK: cmovlel %ebx, %eax + cmovng eax, ebx +// CHECK: cmovgel %ebx, %eax + cmovnl eax, ebx +// CHECK: cmovnel %ebx, %eax + cmovnz eax, ebx +// CHECK: cmovpl %ebx, %eax + cmovpe eax, ebx +// CHECK: cmovnpl %ebx, %eax + cmovpo eax, ebx +// CHECK: cmovbl %ebx, %eax + cmovnae eax, ebx +// CHECK: cmoval %ebx, %eax + cmovnbe eax, ebx +// CHECK: cmovll %ebx, %eax + cmovnge eax, ebx +// CHECK: cmovgl %ebx, %eax + cmovnle eax, ebx + +// CHECK: shldw %cl, %bx, %dx +// CHECK: shldw %cl, %bx, %dx +// CHECK: shldw $1, %bx, %dx +// CHECK: shldw %cl, %bx, (%rax) +// CHECK: shldw %cl, %bx, (%rax) +// CHECK: shrdw %cl, %bx, %dx +// CHECK: shrdw %cl, %bx, %dx +// CHECK: shrdw $1, %bx, %dx +// CHECK: shrdw %cl, %bx, (%rax) +// CHECK: shrdw %cl, %bx, (%rax) + +shld DX, BX +shld DX, BX, CL +shld DX, BX, 1 +shld [RAX], BX +shld [RAX], BX, CL +shrd DX, BX +shrd DX, BX, CL +shrd DX, BX, 1 +shrd [RAX], BX +shrd [RAX], BX, CL + +// CHECK: btl $1, (%eax) +// CHECK: btsl $1, (%eax) +// CHECK: btrl $1, (%eax) +// CHECK: btcl $1, (%eax) + bt DWORD PTR [EAX], 1 + bt DWORD PTR [EAX], 1 + bts DWORD PTR [EAX], 1 + btr DWORD PTR [EAX], 1 + btc DWORD PTR [EAX], 1 + +//CHECK: divb %bl +//CHECK: divw %bx +//CHECK: divl %ecx +//CHECK: divl 3735928559(%ebx,%ecx,8) +//CHECK: divl 69 +//CHECK: divl 32493 +//CHECK: divl 3133065982 +//CHECK: divl 305419896 +//CHECK: idivb %bl +//CHECK: idivw %bx +//CHECK: idivl %ecx +//CHECK: idivl 3735928559(%ebx,%ecx,8) +//CHECK: idivl 69 +//CHECK: idivl 32493 +//CHECK: idivl 3133065982 +//CHECK: idivl 305419896 + div AL, BL + div AX, BX + div EAX, ECX + div EAX, [ECX*8+EBX+0xdeadbeef] + div EAX, [0x45] + div EAX, [0x7eed] + div EAX, [0xbabecafe] + div EAX, [0x12345678] + idiv AL, BL + idiv AX, BX + idiv EAX, ECX + idiv EAX, [ECX*8+EBX+0xdeadbeef] + idiv EAX, [0x45] + idiv EAX, [0x7eed] + idiv EAX, [0xbabecafe] + idiv EAX, [0x12345678] + + +// CHECK: inb %dx, %al +// CHECK: inw %dx, %ax +// CHECK: inl %dx, %eax +// CHECK: outb %al, %dx +// CHECK: outw %ax, %dx +// CHECK: outl %eax, %dx + inb DX + inw DX + inl DX + outb DX + outw DX + outl DX + +// CHECK: xchgq %rcx, %rax +// CHECK: xchgq %rcx, %rax +// CHECK: xchgl %ecx, %eax +// CHECK: xchgl %ecx, %eax +// CHECK: xchgw %cx, %ax +// CHECK: xchgw %cx, %ax +xchg RAX, RCX +xchg RCX, RAX +xchg EAX, ECX +xchg ECX, EAX +xchg AX, CX +xchg CX, AX + +// CHECK: xchgq %rax, (%ecx) +// CHECK: xchgq %rax, (%ecx) +// CHECK: xchgl %eax, (%ecx) +// CHECK: xchgl %eax, (%ecx) +// CHECK: xchgw %ax, (%ecx) +// CHECK: xchgw %ax, (%ecx) +xchg RAX, [ECX] +xchg [ECX], RAX +xchg EAX, [ECX] +xchg [ECX], EAX +xchg AX, [ECX] +xchg [ECX], AX + +// CHECK: testq (%ecx), %rax +// CHECK: testq (%ecx), %rax +// CHECK: testl (%ecx), %eax +// CHECK: testl (%ecx), %eax +// CHECK: testw (%ecx), %ax +// CHECK: testw (%ecx), %ax +// CHECK: testb (%ecx), %al +// CHECK: testb (%ecx), %al +test RAX, [ECX] +test [ECX], RAX +test EAX, [ECX] +test [ECX], EAX +test AX, [ECX] +test [ECX], AX +test AL, [ECX] +test [ECX], AL + +// CHECK: fnstsw %ax +// CHECK: fnstsw %ax +// CHECK: fnstsw %ax +// CHECK: fnstsw %ax +fnstsw +fnstsw AX +fnstsw EAX +fnstsw AL + +// CHECK: faddp %st(1) +// CHECK: fmulp %st(1) +// CHECK: fsubrp %st(1) +// CHECK: fsubp %st(1) +// CHECK: fdivrp %st(1) +// CHECK: fdivp %st(1) +faddp ST(1), ST(0) +fmulp ST(1), ST(0) +fsubp ST(1), ST(0) +fsubrp ST(1), ST(0) +fdivp ST(1), ST(0) +fdivrp ST(1), ST(0) + +// CHECK: faddp %st(1) +// CHECK: fmulp %st(1) +// CHECK: fsubrp %st(1) +// CHECK: fsubp %st(1) +// CHECK: fdivrp %st(1) +// CHECK: fdivp %st(1) +faddp ST(0), ST(1) +fmulp ST(0), ST(1) +fsubp ST(0), ST(1) +fsubrp ST(0), ST(1) +fdivp ST(0), ST(1) +fdivrp ST(0), ST(1) + +// CHECK: faddp %st(1) +// CHECK: fmulp %st(1) +// CHECK: fsubrp %st(1) +// CHECK: fsubp %st(1) +// CHECK: fdivrp %st(1) +// CHECK: fdivp %st(1) +faddp ST(1) +fmulp ST(1) +fsubp ST(1) +fsubrp ST(1) +fdivp ST(1) +fdivrp ST(1) + +// CHECK: faddp %st(1) +// CHECK: fmulp %st(1) +// CHECK: fsubrp %st(1) +// CHECK: fsubp %st(1) +// CHECK: fdivrp %st(1) +// CHECK: fdivp %st(1) +faddp +fmulp +fsubp +fsubrp +fdivp +fdivrp + +// CHECK: fadd %st(1) +// CHECK: fmul %st(1) +// CHECK: fsub %st(1) +// CHECK: fsubr %st(1) +// CHECK: fdiv %st(1) +// CHECK: fdivr %st(1) +fadd ST(0), ST(1) +fmul ST(0), ST(1) +fsub ST(0), ST(1) +fsubr ST(0), ST(1) +fdiv ST(0), ST(1) +fdivr ST(0), ST(1) + +// CHECK: fadd %st(0), %st(1) +// CHECK: fmul %st(0), %st(1) +// CHECK: fsubr %st(0), %st(1) +// CHECK: fsub %st(0), %st(1) +// CHECK: fdivr %st(0), %st(1) +// CHECK: fdiv %st(0), %st(1) +fadd ST(1), ST(0) +fmul ST(1), ST(0) +fsub ST(1), ST(0) +fsubr ST(1), ST(0) +fdiv ST(1), ST(0) +fdivr ST(1), ST(0) + +// CHECK: fadd %st(1) +// CHECK: fmul %st(1) +// CHECK: fsub %st(1) +// CHECK: fsubr %st(1) +// CHECK: fdiv %st(1) +// CHECK: fdivr %st(1) +fadd ST(1) +fmul ST(1) +fsub ST(1) +fsubr ST(1) +fdiv ST(1) +fdivr ST(1) + + +// CHECK: fxsaveq (%rax) +// CHECK: fxrstorq (%rax) +fxsave64 [rax] +fxrstor64 [rax]