brintos

brintos / llvm-project-archived public Read only

0
0
Text · 22.7 KiB · 13616a0 Raw
922 lines · plain
1// RUN: llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel %s > %t 2> %t.err2// RUN: FileCheck < %t %s3// RUN: FileCheck --check-prefix=CHECK-STDERR < %t.err %s4 5_nop_label:6	nop7 8_test:9	xor	EAX, EAX10	ret11 12.set  number, 813.global _foo14 15.text16  .global main17main:18 19// CHECK: leaq    _foo(%rbx,%rax,8), %rdx20  lea RDX, [8 * RAX + RBX      + _foo]21// CHECK: leaq _foo(%rbx,%rax,8), %rdx22  lea RDX, [_foo + 8 * RAX + RBX]23// CHECK: leaq 8(%rcx,%rax,8), %rdx24  lea RDX, [8 + RAX * 8 + RCX]25// CHECK: leaq 8(%rcx,%rax,8), %rdx26  lea RDX, [number + 8 * RAX + RCX]27// CHECK: leaq _foo(,%rax,8), %rdx28  lea RDX, [_foo + RAX * 8]29// CHECK:  leaq _foo(%rbx,%rax,8), %rdx30  lea RDX, [_foo + RAX * 8 + RBX]31// CHECK: leaq -8(%rax), %rdx32  lea RDX, [RAX - number]33// CHECK: leaq -8(%rax), %rdx34  lea RDX, [RAX - 8]35// CHECK: leaq    _foo(%rax), %rdx36  lea RDX, [RAX + _foo]37// CHECK: leaq    8(%rax), %rdx38  lea RDX, [RAX + number]39// CHECK: leaq    8(%rax), %rdx40  lea RDX, [RAX + 8]41// CHECK: leaq    _foo(%rbx,%rax,8), %rdx42  lea RDX, [RAX * number + RBX + _foo]43// CHECK: leaq    _foo(%rbx,%rax,8), %rdx44  lea RDX, [_foo + RAX * number + RBX]45// CHECK: leaq    8(%rcx,%rax,8), %rdx46  lea RDX, [number + RAX * number + RCX]47// CHECK: leaq    _foo(,%rax,8), %rdx48  lea RDX, [_foo + RAX * number]49// CHECK: leaq    _foo(%rbx,%rax,8), %rdx50  lea RDX, [number * RAX + RBX + _foo]51// CHECK: leaq    _foo(%rbx,%rax,8), %rdx52  lea RDX, [_foo + number * RAX + RBX]53// CHECK: leaq    8(%rcx,%rax,8), %rdx54  lea RDX, [8 + number * RAX + RCX]55// CHECK: leaq    _foo(%rax), %rdx56  lea RDX, [_foo + RAX]57// CHECK: leaq    8(%rax), %rdx58  lea RDX, [number + RAX]59// CHECK: leaq    8(%rax), %rdx60  lea RDX, [8 + RAX]61 62// CHECK: lcalll *(%rax)63  call FWORD ptr [rax]64// CHECK: lcalll *(%rax)65  lcall [rax]66// CHECK: ljmpl *(%rax)67  jmp FWORD ptr [rax]68// CHECK: ljmpq *(%rax)69  ljmp [rax]70// CHECK: jmp _foo71  jmp short _foo72// CHECK: jb _foo73  jc short _foo74// CHECK: jae _foo75  jnc short _foo76// CHECK: jecxz _foo77  jecxz short _foo78// CHECK: jrcxz _nop_label+179  jrcxz _nop_label+180// CHECK: jp _foo81  jpe short _foo82 83// CHECK:	movl	$257, -4(%rsp)84	mov	DWORD PTR [RSP - 4], 25785// CHECK:	movl	$258, 4(%rsp)86	mov	DWORD PTR [RSP + 4], 25887// CHECK:	movq	$123, -16(%rsp)88	mov	QWORD PTR [RSP - 16], 12389// CHECK:	movb	$97, -17(%rsp)90	mov	BYTE PTR [RSP - 17], 9791// CHECK:	movl	-4(%rsp), %eax92	mov	EAX, DWORD PTR [RSP - 4]93// CHECK:	movq    (%rsp), %rax94	mov     RAX, QWORD PTR [RSP]95// CHECK: movabsq $4294967289, %rax96	mov     RAX, 429496728997// CHECK:	movl	$-4, -4(%rsp)98	mov	DWORD PTR [RSP - 4], -499// CHECK:	movq	0, %rcx100	mov	RCX, QWORD PTR [0]101// CHECK:	movl	-24(%rsp,%rax,4), %eax	102	mov	EAX, DWORD PTR [RSP + 4*RAX - 24]103// CHECK:	movb	%dil, (%rdx,%rcx)104	mov	BYTE PTR [RDX + RCX], DIL105// CHECK:	movzwl	2(%rcx), %edi106	movzx	EDI, WORD PTR [RCX + 2]107// CHECK:	callq	_test108	call	_test109// CHECK:	andw	$12,	%ax110	and	ax, 12111// CHECK:	andw	$-12,	%ax112	and	ax, -12113// CHECK:	andw	$257,	%ax114	and	ax, 257115// CHECK:	andw	$-257,	%ax116	and	ax, -257117// CHECK:	andl	$12,	%eax118	and	eax, 12119// CHECK:	andl	$-12,	%eax120	and	eax, -12121// CHECK:	andl	$257,	%eax122	and	eax, 257123// CHECK:	andl	$-257,	%eax124	and	eax, -257125// CHECK:	andq	$12,	%rax126	and	rax, 12127// CHECK:	andq	$-12,	%rax128	and	rax, -12129// CHECK:	andq	$257,	%rax130	and	rax, 257131// CHECK:	andq	$-257,	%rax132	and	rax, -257133// CHECK:	fld	%st(0)134	fld	ST(0)135// CHECK:	movl	%fs:(%rdi), %eax136    mov EAX, DWORD PTR FS:[RDI]137// CHECK: leal (,%rdi,4), %r8d138    lea R8D, DWORD PTR [4*RDI]139// CHECK: movl _fnan(,%ecx,4), %ecx140    mov ECX, DWORD PTR [4*ECX + _fnan]141// CHECK: movq %fs:320, %rax142    mov RAX, QWORD PTR FS:[320]143// CHECK: movq %fs:320, %rax144    mov RAX, QWORD PTR FS:320145// CHECK: movq %rax, %fs:320146    mov QWORD PTR FS:320, RAX147// CHECK: movq %rax, %fs:20(%rbx)148    mov QWORD PTR FS:20[rbx], RAX149// CHECK: vshufpd $1, %xmm2, %xmm1, %xmm0150    vshufpd XMM0, XMM1, XMM2, 1151// CHECK: vpgatherdd %xmm8, (%r15,%xmm9,2), %xmm1152    vpgatherdd XMM10, DWORD PTR [R15 + 2*XMM9], XMM8153// CHECK: movsd -8, %xmm5154    movsd   XMM5, QWORD PTR [-8]155// CHECK: movsl (%rsi), %es:(%rdi)156    movsd157// CHECK: movl %ecx, (%eax)158    mov [eax], ecx159// CHECK: movl %ecx, (,%ebx,4)160    mov [4*ebx], ecx161 // CHECK:   movl %ecx, (,%ebx,4)162    mov [ebx*4], ecx163// CHECK: movl %ecx, 1024164    mov [1024], ecx165// CHECK: movl %ecx, 4132166    mov [0x1024], ecx167// CHECK: movl %ecx, 32        168    mov [16 + 16], ecx169// CHECK: movl %ecx, 0170    mov [16 - 16], ecx        171// CHECK: movl %ecx, 32        172    mov [16][16], ecx173// CHECK: movl %ecx, (%eax,%ebx,4)174    mov [eax + 4*ebx], ecx175// CHECK: movl %ecx, (%eax,%ebx,4)176    mov [eax + ebx*4], ecx177// CHECK: movl %ecx, (%eax,%ebx,4)178    mov [4*ebx + eax], ecx179// CHECK: movl %ecx, (%eax,%ebx,4)180    mov [ebx*4 + eax], ecx181// CHECK: movl %ecx, (%eax,%ebx,4)182    mov [eax][4*ebx], ecx183// CHECK: movl %ecx, (%eax,%ebx,4)184    mov [eax][ebx*4], ecx185// CHECK: movl %ecx, (%eax,%ebx,4)186    mov [4*ebx][eax], ecx187// CHECK: movl %ecx, (%eax,%ebx,4)188    mov [ebx*4][eax], ecx189// CHECK: movl %ecx, 12(%eax)190    mov [eax + 12], ecx191// CHECK: movl %ecx, 12(%eax)192    mov [12 + eax], ecx193// CHECK: movl %ecx, 32(%eax)194    mov [eax + 16 + 16], ecx195// CHECK: movl %ecx, 32(%eax)196    mov [16 + eax + 16], ecx197// CHECK: movl %ecx, 32(%eax)198    mov [16 + 16 + eax], ecx199// CHECK: movl %ecx, 12(%eax)200    mov [eax][12], ecx201// CHECK: movl %ecx, 12(%eax)202    mov [12][eax], ecx203// CHECK: movl %ecx, 32(%eax)204    mov [eax][16 + 16], ecx205// CHECK: movl %ecx, 32(%eax)206    mov [eax + 16][16], ecx207// CHECK: movl %ecx, 32(%eax)208    mov [eax][16][16], ecx209// CHECK: movl %ecx, 32(%eax)210    mov [16][eax + 16], ecx211// CHECK: movl %ecx, 32(%eax)212    mov [16 + eax][16], ecx213// CHECK: movl %ecx, 32(%eax)214    mov [16][16 + eax], ecx215// CHECK: movl %ecx, 32(%eax)216    mov [16 + 16][eax], ecx217// CHECK: movl %ecx, 32(%eax)218    mov [eax][16][16], ecx219// CHECK: movl %ecx, 32(%eax)220    mov [16][eax][16], ecx221// CHECK: movl %ecx, 32(%eax)222    mov [16][16][eax], ecx223// CHECK: movl %ecx, 16(,%ebx,4)224    mov [4*ebx + 16], ecx225// CHECK: movl %ecx, 16(,%ebx,4)226    mov [ebx*4 + 16], ecx227// CHECK: movl %ecx, 16(,%ebx,4)228    mov [4*ebx][16], ecx229// CHECK: movl %ecx, 16(,%ebx,4)230    mov [ebx*4][16], ecx231// CHECK: movl %ecx, 16(,%ebx,4)232    mov [16 + 4*ebx], ecx233// CHECK: movl %ecx, 16(,%ebx,4)234    mov [16 + ebx*4], ecx235// CHECK: movl %ecx, 16(,%ebx,4)236    mov [16][4*ebx], ecx237// CHECK: movl %ecx, 16(,%ebx,4)238    mov [16][ebx*4], ecx239// CHECK: movl %ecx, 16(%eax,%ebx,4)240    mov [eax + 4*ebx + 16], ecx241// CHECK: movl %ecx, 16(%eax,%ebx,4)242    mov [eax + 16 + 4*ebx], ecx243// CHECK: movl %ecx, 16(%eax,%ebx,4)244    mov [4*ebx + eax + 16], ecx245// CHECK: movl %ecx, 16(%eax,%ebx,4)246    mov [4*ebx + 16 + eax], ecx247// CHECK: movl %ecx, 16(%eax,%ebx,4)248    mov [16 + eax + 4*ebx], ecx249// CHECK: movl %ecx, 16(%eax,%ebx,4)250    mov [16 + eax + 4*ebx], ecx251// CHECK: movl %ecx, 16(%eax,%ebx,4)252    mov [eax][4*ebx + 16], ecx253// CHECK: movl %ecx, 16(%eax,%ebx,4)254    mov [eax][16 + 4*ebx], ecx255// CHECK: movl %ecx, 16(%eax,%ebx,4)256    mov [4*ebx][eax + 16], ecx257// CHECK: movl %ecx, 16(%eax,%ebx,4)258    mov [4*ebx][16 + eax], ecx259// CHECK: movl %ecx, 16(%eax,%ebx,4)260    mov [16][eax + 4*ebx], ecx261// CHECK: movl %ecx, 16(%eax,%ebx,4)262    mov [16][eax + 4*ebx], ecx263// CHECK: movl %ecx, 16(%eax,%ebx,4)264    mov [eax + 4*ebx][16], ecx265// CHECK: movl %ecx, 16(%eax,%ebx,4)266    mov [eax + 16][4*ebx], ecx267// CHECK: movl %ecx, 16(%eax,%ebx,4)268    mov [4*ebx + eax][16], ecx269// CHECK: movl %ecx, 16(%eax,%ebx,4)270    mov [4*ebx + 16][eax], ecx271// CHECK: movl %ecx, 16(%eax,%ebx,4)272    mov [16 + eax][4*ebx], ecx273// CHECK: movl %ecx, 16(%eax,%ebx,4)274    mov [16 + eax][4*ebx], ecx275// CHECK: movl %ecx, 16(%eax,%ebx,4)276    mov [eax][4*ebx][16], ecx277// CHECK: movl %ecx, 16(%eax,%ebx,4)278    mov [eax][16][4*ebx], ecx279// CHECK: movl %ecx, 16(%eax,%ebx,4)280    mov [4*ebx][eax][16], ecx281// CHECK: movl %ecx, 16(%eax,%ebx,4)282    mov [4*ebx][16][eax], ecx283// CHECK: movl %ecx, 16(%eax,%ebx,4)284    mov [16][eax][4*ebx], ecx285// CHECK: movl %ecx, 16(%eax,%ebx,4)286    mov [16][eax][4*ebx], ecx287// CHECK: movl %ecx, 16(%eax,%ebx,4)288    mov [eax + ebx*4 + 16], ecx289// CHECK: movl %ecx, 16(%eax,%ebx,4)290    mov [eax + 16 + ebx*4], ecx291// CHECK: movl %ecx, 16(%eax,%ebx,4)292    mov [ebx*4 + eax + 16], ecx293// CHECK: movl %ecx, 16(%eax,%ebx,4)294    mov [ebx*4 + 16 + eax], ecx295// CHECK: movl %ecx, 16(%eax,%ebx,4)296    mov [16 + eax + ebx*4], ecx297// CHECK: movl %ecx, 16(%eax,%ebx,4)298    mov [16 + eax + ebx*4], ecx299// CHECK: movl %ecx, 16(%eax,%ebx,4)300    mov [eax][ebx*4 + 16], ecx301// CHECK: movl %ecx, 16(%eax,%ebx,4)302    mov [eax][16 + ebx*4], ecx303// CHECK: movl %ecx, 16(%eax,%ebx,4)304    mov [ebx*4][eax + 16], ecx305// CHECK: movl %ecx, 16(%eax,%ebx,4)306    mov [ebx*4][16 + eax], ecx307// CHECK: movl %ecx, 16(%eax,%ebx,4)308    mov [16][eax + ebx*4], ecx309// CHECK: movl %ecx, 16(%eax,%ebx,4)310    mov [16][eax + ebx*4], ecx311// CHECK: movl %ecx, 16(%eax,%ebx,4)312    mov [eax + ebx*4][16], ecx313// CHECK: movl %ecx, 16(%eax,%ebx,4)314    mov [eax + 16][ebx*4], ecx315// CHECK: movl %ecx, 16(%eax,%ebx,4)316    mov [ebx*4 + eax][16], ecx317// CHECK: movl %ecx, 16(%eax,%ebx,4)318    mov [ebx*4 + 16][eax], ecx319// CHECK: movl %ecx, 16(%eax,%ebx,4)320    mov [16 + eax][ebx*4], ecx321// CHECK: movl %ecx, 16(%eax,%ebx,4)322    mov [16 + eax][ebx*4], ecx323// CHECK: movl %ecx, 16(%eax,%ebx,4)324    mov [eax][ebx*4][16], ecx325// CHECK: movl %ecx, 16(%eax,%ebx,4)326    mov [eax][16][ebx*4], ecx327// CHECK: movl %ecx, 16(%eax,%ebx,4)328    mov [ebx*4][eax][16], ecx329// CHECK: movl %ecx, 16(%eax,%ebx,4)330    mov [ebx*4][16][eax], ecx331// CHECK: movl %ecx, 16(%eax,%ebx,4)332    mov [16][eax][ebx*4], ecx333// CHECK: movl %ecx, 16(%eax,%ebx,4)334    mov [16][eax][ebx*4], ecx335// CHECK: movl %ecx, -16(%eax,%ebx,4)336    mov [eax][ebx*4 - 16], ecx337 338// CHECK: prefetchnta 12800(%esi)339    prefetchnta [esi + (200*64)]340// CHECK: prefetchnta 32(%esi)341    prefetchnta [esi + (64/2)]342// CHECK: prefetchnta 128(%esi)343    prefetchnta [esi + (64/2*4)]344// CHECK: prefetchnta 8(%esi)345    prefetchnta [esi + (64/(2*4))]346// CHECK: prefetchnta 48(%esi)347    prefetchnta [esi + (64/(2*4)+40)]348 349// CHECK: movl %ecx, -16(%eax,%ebx,4)350    mov [eax][ebx*4 - 2*8], ecx351// CHECK: movl %ecx, -16(%eax,%ebx,4)352    mov [eax][4*ebx - 2*8], ecx353// CHECK: movl %ecx, -16(%eax,%ebx,4)354    mov [eax + 4*ebx - 2*8], ecx355// CHECK: movl %ecx, -16(%eax,%ebx,4)356    mov [12 + eax + (4*ebx) - 2*14], ecx357// CHECK: movl %ecx, -16(%eax,%ebx,4)358    mov [eax][ebx*4 - 2*2*2*2], ecx359// CHECK: movl %ecx, -16(%eax,%ebx,4)360    mov [eax][ebx*4 - (2*8)], ecx361// CHECK: movl %ecx, -16(%eax,%ebx,4)362    mov [eax][ebx*4 - 2 * 8 + 4 - 4], ecx363// CHECK: movl %ecx, -16(%eax,%ebx,4)364    mov [eax + ebx*4 - 2 * 8 + 4 - 4], ecx365// CHECK: movl %ecx, -16(%eax,%ebx,4)366    mov [eax + ebx*4 - 2 * ((8 + 4) - 4)], ecx367// CHECK: movl %ecx, -16(%eax,%ebx,4)368    mov [-2 * ((8 + 4) - 4) + eax + ebx*4], ecx369// CHECK: movl %ecx, -16(%eax,%ebx,4)370    mov [((-2) * ((8 + 4) - 4)) + eax + ebx*4], ecx371// CHECK: movl %ecx, -16(%eax,%ebx,4)372    mov [eax + ((-2) * ((8 + 4) - 4)) + ebx*4], ecx373// CHECK: movl %ecx, 96(%eax,%ebx,4)374    mov [eax + ((-2) * ((8 + 4) * -4)) + ebx*4], ecx375// CHECK: movl %ecx, -8(%eax,%ebx,4)376    mov [eax][-8][ebx*4], ecx377// CHECK: movl %ecx, -2(%eax,%ebx,4)378    mov [eax][16/-8][ebx*4], ecx379// CHECK: movl %ecx, -2(%eax,%ebx,4)380    mov [eax][(16)/-8][ebx*4], ecx381 382// CHECK: setb %al383    setc al384// CHECK: sete %al385    setz al386// CHECK: setbe %al387    setna al388// CHECK: setae %al389    setnb al390// CHECK: setae %al391    setnc al392// CHECK: setle %al393    setng al394// CHECK: setge %al395    setnl al396// CHECK: setne %al397    setnz al398// CHECK: setp %al399    setpe al400// CHECK: setnp %al401    setpo al402// CHECK: setb %al403    setnae al404// CHECK: seta %al405    setnbe al406// CHECK: setl %al407    setnge al408// CHECK: setg %al409    setnle al410// CHECK: jne _foo411    jnz _foo412// CHECK: outb %al, $4413    out 4, al414    ret415 416// CHECK: cmovbl %ebx, %eax417    cmovc eax, ebx418// CHECK: cmovel %ebx, %eax419    cmovz eax, ebx420// CHECK: cmovbel %ebx, %eax421    cmovna eax, ebx422// CHECK: cmovael %ebx, %eax423    cmovnb eax, ebx424// CHECK: cmovael %ebx, %eax425    cmovnc eax, ebx426// CHECK: cmovlel %ebx, %eax427    cmovng eax, ebx428// CHECK: cmovgel %ebx, %eax429    cmovnl eax, ebx430// CHECK: cmovnel %ebx, %eax431    cmovnz eax, ebx432// CHECK: cmovpl %ebx, %eax433    cmovpe eax, ebx434// CHECK: cmovnpl %ebx, %eax435    cmovpo eax, ebx436// CHECK: cmovbl %ebx, %eax437    cmovnae eax, ebx438// CHECK: cmoval %ebx, %eax439    cmovnbe eax, ebx440// CHECK: cmovll %ebx, %eax441    cmovnge eax, ebx442// CHECK: cmovgl %ebx, %eax443    cmovnle eax, ebx444 445// CHECK: shldw	%cl, %bx, %dx446// CHECK: shldw	%cl, %bx, %dx447// CHECK: shldw	$1, %bx, %dx448// CHECK: shldw	%cl, %bx, (%rax)449// CHECK: shldw	%cl, %bx, (%rax)450// CHECK: shrdw	%cl, %bx, %dx451// CHECK: shrdw	%cl, %bx, %dx452// CHECK: shrdw	$1, %bx, %dx453// CHECK: shrdw	%cl, %bx, (%rax)454// CHECK: shrdw	%cl, %bx, (%rax)455 456shld  DX, BX457shld  DX, BX, CL458shld  DX, BX, 1459shld  [RAX], BX460shld  [RAX], BX, CL461shrd  DX, BX462shrd  DX, BX, CL463shrd  DX, BX, 1464shrd  [RAX], BX465shrd  [RAX], BX, CL466 467// CHECK: btl $1, (%eax)468// CHECK: btsl $1, (%eax)469// CHECK: btrl $1, (%eax)470// CHECK: btcl $1, (%eax)471    bt DWORD PTR [EAX], 1472    bt DWORD PTR [EAX], 1473    bts DWORD PTR [EAX], 1474    btr DWORD PTR [EAX], 1475    btc DWORD PTR [EAX], 1476 477//CHECK: divb	%bl478//CHECK: divw	%bx479//CHECK: divl	%ecx480//CHECK: divl	3735928559(%ebx,%ecx,8)481//CHECK: divl	69482//CHECK: divl	32493483//CHECK: divl	3133065982484//CHECK: divl	305419896485//CHECK: idivb	%bl486//CHECK: idivw	%bx487//CHECK: idivl	%ecx488//CHECK: idivl	3735928559(%ebx,%ecx,8)489//CHECK: idivl	69490//CHECK: idivl	32493491//CHECK: idivl	3133065982492//CHECK: idivl	305419896493    div AL, BL494    div AX, BX495    div EAX, ECX496    div EAX, [ECX*8+EBX+0xdeadbeef]497    div EAX, [0x45]498    div EAX, [0x7eed]499    div EAX, [0xbabecafe]500    div EAX, [0x12345678]501    idiv AL, BL502    idiv AX, BX503    idiv EAX, ECX504    idiv EAX, [ECX*8+EBX+0xdeadbeef]505    idiv EAX, [0x45]506    idiv EAX, [0x7eed]507    idiv EAX, [0xbabecafe]508    idiv EAX, [0x12345678]509 510 511// CHECK: inb %dx, %al512// CHECK: inw %dx, %ax513// CHECK: inl %dx, %eax514// CHECK: outb %al, %dx515// CHECK: outw %ax, %dx516// CHECK: outl %eax, %dx517    inb DX518    inw DX519    inl DX520    outb DX521    outw DX522    outl DX523 524// CHECK: xchgq %rcx, %rax525// CHECK: xchgq %rcx, %rax526// CHECK: xchgl %ecx, %eax527// CHECK: xchgl %ecx, %eax528// CHECK: xchgw %cx, %ax529// CHECK: xchgw %cx, %ax530xchg RAX, RCX531xchg RCX, RAX532xchg EAX, ECX533xchg ECX, EAX534xchg AX, CX535xchg CX, AX536 537// CHECK: xchgq %rax, (%ecx)538// CHECK: xchgq %rax, (%ecx)539// CHECK: xchgl %eax, (%ecx)540// CHECK: xchgl %eax, (%ecx)541// CHECK: xchgw %ax, (%ecx)542// CHECK: xchgw %ax, (%ecx)543xchg RAX, [ECX]544xchg [ECX], RAX545xchg EAX, [ECX]546xchg [ECX], EAX547xchg AX, [ECX]548xchg [ECX], AX549 550// CHECK: testq %rax, (%ecx)551// CHECK: testq %rax, (%ecx)552// CHECK: testl %eax, (%ecx)553// CHECK: testl %eax, (%ecx)554// CHECK: testw %ax, (%ecx)555// CHECK: testw %ax, (%ecx)556// CHECK: testb %al, (%ecx)557// CHECK: testb %al, (%ecx)558test RAX, [ECX]559test [ECX], RAX560test EAX, [ECX]561test [ECX], EAX562test AX, [ECX]563test [ECX], AX564test AL, [ECX]565test [ECX], AL566 567// CHECK: fnstsw %ax568// CHECK: fnstsw %ax569// CHECK: fnstsw (%eax)570fnstsw571fnstsw AX572fnstsw WORD PTR [EAX]573 574// CHECK: faddp %st, %st(1)575// CHECK: fmulp %st, %st(1)576// CHECK: fsubrp %st, %st(1)577// CHECK: fsubp %st, %st(1)578// CHECK: fdivrp %st, %st(1)579// CHECK: fdivp %st, %st(1)580faddp ST(1), ST(0)581fmulp ST(1), ST(0)582fsubp ST(1), ST(0)583fsubrp ST(1), ST(0)584fdivp ST(1), ST(0)585fdivrp ST(1), ST(0)586 587// CHECK: faddp %st, %st(1)588// CHECK: fmulp %st, %st(1)589// CHECK: fsubrp %st, %st(1)590// CHECK: fsubp %st, %st(1)591// CHECK: fdivrp %st, %st(1)592// CHECK: fdivp %st, %st(1)593faddp ST(0), ST(1)594fmulp ST(0), ST(1)595fsubp ST(0), ST(1)596fsubrp ST(0), ST(1)597fdivp ST(0), ST(1)598fdivrp ST(0), ST(1)599 600// CHECK: faddp %st, %st(1)601// CHECK: fmulp %st, %st(1)602// CHECK: fsubrp %st, %st(1)603// CHECK: fsubp %st, %st(1)604// CHECK: fdivrp %st, %st(1)605// CHECK: fdivp %st, %st(1)606faddp ST(1)607fmulp ST(1)608fsubp ST(1)609fsubrp ST(1)610fdivp ST(1)611fdivrp ST(1)612 613 614// CHECK: faddp %st, %st(1)615// CHECK: fmulp %st, %st(1)616// CHECK: fsubrp %st, %st(1)617// CHECK: fsubp %st, %st(1)618// CHECK: fdivrp %st, %st(1)619// CHECK: fdivp %st, %st(1)620fadd 621fmul622fsub623fsubr624fdiv625fdivr626 627// CHECK: faddp %st, %st(1)628// CHECK: fmulp %st, %st(1)629// CHECK: fsubrp %st, %st(1)630// CHECK: fsubp %st, %st(1)631// CHECK: fdivrp %st, %st(1)632// CHECK: fdivp %st, %st(1)633faddp634fmulp635fsubp636fsubrp637fdivp638fdivrp639 640// CHECK: fadd %st(1), %st641// CHECK: fmul %st(1), %st642// CHECK: fsub %st(1), %st643// CHECK: fsubr %st(1), %st644// CHECK: fdiv %st(1), %st645// CHECK: fdivr %st(1), %st646fadd ST(0), ST(1)647fmul ST(0), ST(1)648fsub ST(0), ST(1)649fsubr ST(0), ST(1)650fdiv ST(0), ST(1)651fdivr ST(0), ST(1)652 653// CHECK: fadd %st, %st(1)654// CHECK: fmul %st, %st(1)655// CHECK: fsubr %st, %st(1)656// CHECK: fsub %st, %st(1)657// CHECK: fdivr %st, %st(1)658// CHECK: fdiv %st, %st(1)659fadd ST(1), ST(0)660fmul ST(1), ST(0)661fsub ST(1), ST(0)662fsubr ST(1), ST(0)663fdiv ST(1), ST(0)664fdivr ST(1), ST(0)665 666// CHECK: fadd %st(1), %st667// CHECK: fmul %st(1), %st668// CHECK: fsub %st(1), %st669// CHECK: fsubr %st(1), %st670// CHECK: fdiv %st(1), %st671// CHECK: fdivr %st(1), %st672fadd ST(1)673fmul ST(1)674fsub ST(1)675fsubr ST(1)676fdiv ST(1)677fdivr ST(1)678 679 680// CHECK: fxsave64 (%rax)681// CHECK: fxrstor64 (%rax)682fxsave64 [rax]683fxrstor64 [rax]684 685.bss686.globl _g0687.text688 689// CHECK: movq _g0, %rbx690// CHECK: movq _g0+8, %rcx691// CHECK: movq _g0+18(%rbp), %rax692// CHECK: movq _g0(,%rsi,4), %rax693mov rbx, qword ptr [_g0]694mov rcx, qword ptr [_g0 + 8]695mov rax, QWORD PTR _g0[rbp + 1 + (2 * 5) - 3 + 1<<1]696mov rax, QWORD PTR _g0[rsi*4]697 698"?half@?0??bar@@YAXXZ@4NA":699	.quad   4602678819172646912700 701fadd   dword ptr "?half@?0??bar@@YAXXZ@4NA"702fadd   dword ptr "?half@?0??bar@@YAXXZ@4NA"@IMGREL703// CHECK: fadds   "?half@?0??bar@@YAXXZ@4NA"704// CHECK: fadds   "?half@?0??bar@@YAXXZ@4NA"@IMGREL705 706inc qword ptr [rax]707inc long ptr [rax]708inc dword ptr [rax]709inc word ptr [rax]710inc byte ptr [rax]711// CHECK: incq (%rax)712// CHECK: incl (%rax)713// CHECK: incl (%rax)714// CHECK: incw (%rax)715// CHECK: incb (%rax)716 717dec qword ptr [rax]718dec dword ptr [rax]719dec word ptr [rax]720dec byte ptr [rax]721// CHECK: decq (%rax)722// CHECK: decl (%rax)723// CHECK: decw (%rax)724// CHECK: decb (%rax)725 726add qword ptr [rax], 1727add dword ptr [rax], 1728add word ptr [rax], 1729add byte ptr [rax], 1730// CHECK: addq $1, (%rax)731// CHECK: addl $1, (%rax)732// CHECK: addw $1, (%rax)733// CHECK: addb $1, (%rax)734 735fstp tbyte ptr [rax]736fstp xword ptr [rax]737fstp qword ptr [rax]738fstp dword ptr [rax]739// CHECK: fstpt (%rax)740// CHECK: fstpt (%rax)741// CHECK: fstpl (%rax)742// CHECK: fstps (%rax)743 744fxsave [eax]745fsave [eax]746fxrstor [eax]747frstor [eax]748// CHECK: fxsave (%eax)749// CHECK: wait750// CHECK: fnsave (%eax)751// CHECK: fxrstor (%eax)752// CHECK: frstor (%eax)753 754// FIXME: Should we accept this?  Masm accepts it, but gas does not.755fxsave dword ptr [eax]756fsave dword ptr [eax]757fxrstor dword ptr [eax]758frstor dword ptr [eax]759// CHECK: fxsave (%eax)760// CHECK: wait761// CHECK: fnsave (%eax)762// CHECK: fxrstor (%eax)763// CHECK: frstor (%eax)764 765// CHECK: cmpnless %xmm1, %xmm0766cmpnless xmm0, xmm1767 768insb769insw770insd771// CHECK: insb %dx, %es:(%rdi)772// CHECK: insw %dx, %es:(%rdi)773// CHECK: insl %dx, %es:(%rdi)774 775outsb776outsw777outsd778// CHECK: outsb (%rsi), %dx779// CHECK: outsw (%rsi), %dx780// CHECK: outsl (%rsi), %dx781 782imul bx, 123783imul ebx, 123784imul rbx, 123785// CHECK: imulw $123, %bx786// CHECK: imull $123, %ebx787// CHECK: imulq $123, %rbx788 789repe cmpsb790repz cmpsb791repne cmpsb792repnz cmpsb793// CHECK: rep794// CHECK: cmpsb	%es:(%rdi), (%rsi)795// CHECK: rep796// CHECK: cmpsb	%es:(%rdi), (%rsi)797// CHECK: repne798// CHECK: cmpsb	%es:(%rdi), (%rsi)799// CHECK: repne800// CHECK: cmpsb	%es:(%rdi), (%rsi)801 802sal eax, 123803// CHECK: shll	$123, %eax804 805psignw    mm0, MMWORD PTR t2806// CHECK: psignw t2, %mm0807 808comisd xmm0, QWORD PTR [eax]809comiss xmm0, DWORD PTR [eax]810vcomisd xmm0, QWORD PTR [eax]811vcomiss xmm0, DWORD PTR [eax]812 813// CHECK: comisd (%eax), %xmm0814// CHECK: comiss (%eax), %xmm0815// CHECK: vcomisd (%eax), %xmm0816// CHECK: vcomiss (%eax), %xmm0817 818fbld tbyte ptr [eax]819fbstp tbyte ptr [eax]820// CHECK: fbld (%eax)821// CHECK: fbstp (%eax)822 823fld float ptr [rax]824fld double ptr [rax]825// CHECK: flds (%rax)826// CHECK: fldl (%rax)827 828fcomip st, st(2)829fucomip st, st(2)830// CHECK: fcompi  %st(2)831// CHECK: fucompi  %st(2)832 833loop byte ptr [64]834loopz _foo835loopnz _foo836// CHECK: loop 64837// CHECK: loope _foo838// CHECK: loopne _foo839 840sidt fword ptr [eax]841// CHECK: sidtq (%eax)842 843ins byte ptr [eax], dx844// CHECK: insb %dx, %es:(%edi)845// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location846// CHECK-STDERR-NEXT: ins byte ptr [eax], dx847outs dx, word ptr [eax]848// CHECK: outsw (%esi), %dx849// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)SI will be used for the location850// CHECK-STDERR-NEXT: outs dx, word ptr [eax]851lods dword ptr [eax]852// CHECK: lodsl (%esi), %eax853// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)SI will be used for the location854// CHECK-STDERR-NEXT: lods dword ptr [eax]855stos qword ptr [eax]856// CHECK: stosq %rax, %es:(%edi)857// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location858// CHECK-STDERR-NEXT: stos qword ptr [eax]859scas byte ptr [eax]860// CHECK: scasb %es:(%edi), %al861// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location862// CHECK-STDERR-NEXT: scas byte ptr [eax]863cmps word ptr [eax], word ptr [ebx]864// CHECK: cmpsw %es:(%edi), (%esi)865// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)SI will be used for the location866// CHECK-STDERR-NEXT: cmps word ptr [eax], word ptr [ebx]867// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location868// CHECK-STDERR-NEXT: cmps word ptr [eax], word ptr [ebx]869movs dword ptr [eax], dword ptr [ebx]870// CHECK: movsl (%esi), %es:(%edi)871// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)DI will be used for the location872// CHECK-STDERR-NEXT: movs dword ptr [eax], dword ptr [ebx]873// CHECK-STDERR: memory operand is only for determining the size, ES:(R|E)SI will be used for the location874// CHECK-STDERR-NEXT: movs dword ptr [eax], dword ptr [ebx]875 876movsd  qword ptr [rax], xmm0877// CHECK: movsd %xmm0, (%rax)878// CHECK-STDERR-NOT: movsd qword ptr [rax], xmm0879 880xlat byte ptr [eax]881// CHECK: xlatb882// CHECK-STDERR: memory operand is only for determining the size, (R|E)BX will be used for the location883 884// CHECK:   punpcklbw885punpcklbw mm0, dword ptr [rsp]886// CHECK:   punpcklwd887punpcklwd mm0, dword ptr [rsp]888// CHECK:   punpckldq889punpckldq mm0, dword ptr [rsp]890 891// CHECK: lslq (%eax), %rbx892lsl rbx, word ptr [eax]893 894// CHECK: lsll (%eax), %ebx895lsl ebx, word ptr [eax]896 897// CHECK: lslw (%eax), %bx898lsl bx, word ptr [eax]899 900// CHECK: sysexitl901sysexit902// CHECK: sysexitq903sysexitq904// CHECK: sysretl905sysret906// CHECK: sysretq907sysretq908 909// CHECK: leaq (%rsp,%rax), %rax910lea rax, [rax+rsp]911// CHECK: leaq (%rsp,%rax), %rax912lea rax, [rsp+rax]913// CHECK: leal (%esp,%eax), %eax914lea eax, [eax+esp]915// CHECK: leal (%esp,%eax), %eax916lea eax, [esp+eax]917 918// CHECK: vpgatherdq      %ymm2, (%rdi,%xmm1), %ymm0919vpgatherdq ymm0, [rdi+xmm1], ymm2920// CHECK: vpgatherdq      %ymm2, (%rdi,%xmm1), %ymm0921vpgatherdq ymm0, [xmm1+rdi], ymm2922