X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FMC%2FX86%2Fx86-64.s;h=10d420aa447ba797b6f90a1706e6d85a54e0a310;hb=fa848ccd093a7a18e4fadcd1e6652188731d4f92;hp=a9cdaa495f050c836c16ef6896fa37aed07713de;hpb=25f6dfd108801d1dc5877c420ef0dd47131aeda7;p=oota-llvm.git diff --git a/test/MC/X86/x86-64.s b/test/MC/X86/x86-64.s index a9cdaa495f0..10d420aa447 100644 --- a/test/MC/X86/x86-64.s +++ b/test/MC/X86/x86-64.s @@ -50,6 +50,9 @@ // CHECK: ret ret +// CHECK: retw + retw + // FIXME: Check that this matches SUB32ri8 // CHECK: subl $1, %eax subl $1, %eax @@ -112,12 +115,12 @@ // rdar://8470918 smovb // CHECK: movsb smovw // CHECK: movsw -smovl // CHECK: movsd +smovl // CHECK: movsl smovq // CHECK: movsq // rdar://8456361 // CHECK: rep -// CHECK: movsd +// CHECK: movsl rep movsd // CHECK: rep @@ -200,7 +203,7 @@ int $3 // CHECK-STDERR: warning: scale factor without index register is ignored movaps %xmm3, (%esi, 2) -// CHECK: imull $12, %eax, %eax +// CHECK: imull $12, %eax imul $12, %eax // CHECK: imull %ecx, %eax @@ -238,10 +241,10 @@ cmovnzq %rbx, %rax // rdar://8407928 // CHECK: inb $127, %al -// CHECK: inw %dx +// CHECK: inw %dx, %ax // CHECK: outb %al, $127 -// CHECK: outw %dx -// CHECK: inl %dx +// CHECK: outw %ax, %dx +// CHECK: inl %dx, %eax inb $0x7f inw %dx outb $0x7f @@ -250,12 +253,12 @@ inl %dx // PR8114 -// CHECK: outb %dx -// CHECK: outb %dx -// CHECK: outw %dx -// CHECK: outw %dx -// CHECK: outl %dx -// CHECK: outl %dx +// CHECK: outb %al, %dx +// CHECK: outb %al, %dx +// CHECK: outw %ax, %dx +// CHECK: outw %ax, %dx +// CHECK: outl %eax, %dx +// CHECK: outl %eax, %dx out %al, (%dx) outb %al, (%dx) @@ -264,12 +267,12 @@ outw %ax, (%dx) out %eax, (%dx) outl %eax, (%dx) -// CHECK: inb %dx -// CHECK: inb %dx -// CHECK: inw %dx -// CHECK: inw %dx -// CHECK: inl %dx -// CHECK: inl %dx +// CHECK: inb %dx, %al +// CHECK: inb %dx, %al +// CHECK: inw %dx, %ax +// CHECK: inw %dx, %ax +// CHECK: inl %dx, %eax +// CHECK: inl %dx, %eax in (%dx), %al inb (%dx), %al @@ -280,16 +283,16 @@ inl (%dx), %eax // rdar://8431422 -// CHECK: fxch -// CHECK: fucom -// CHECK: fucomp -// CHECK: faddp +// CHECK: fxch %st(1) +// CHECK: fucom %st(1) +// CHECK: fucomp %st(1) +// CHECK: faddp %st(1) // CHECK: faddp %st(0) -// CHECK: fsubp -// CHECK: fsubrp -// CHECK: fmulp -// CHECK: fdivp -// CHECK: fdivrp +// CHECK: fsubp %st(1) +// CHECK: fsubrp %st(1) +// CHECK: fmulp %st(1) +// CHECK: fdivp %st(1) +// CHECK: fdivrp %st(1) fxch fucom @@ -302,9 +305,9 @@ fmulp fdivp fdivrp -// CHECK: fcomi +// CHECK: fcomi %st(1) // CHECK: fcomi %st(2) -// CHECK: fucomi +// CHECK: fucomi %st(1) // CHECK: fucomi %st(2) // CHECK: fucomi %st(2) @@ -314,10 +317,10 @@ fucomi fucomi %st(2) fucomi %st(2), %st -// CHECK: fnstsw -// CHECK: fnstsw -// CHECK: fnstsw -// CHECK: fnstsw +// CHECK: fnstsw %ax +// CHECK: fnstsw %ax +// CHECK: fnstsw %ax +// CHECK: fnstsw %ax fnstsw fnstsw %ax @@ -339,15 +342,28 @@ rclb $1, %bl // CHECK: rclb %bl # encoding: [0xd0,0xd3] rclb $2, %bl // CHECK: rclb $2, %bl # encoding: [0xc0,0xd3,0x02] // rdar://8418316 -// CHECK: shldw $1, %bx, %bx -// CHECK: shldw $1, %bx, %bx -// CHECK: shrdw $1, %bx, %bx -// CHECK: shrdw $1, %bx, %bx - -shld %bx,%bx -shld $1, %bx,%bx -shrd %bx,%bx -shrd $1, %bx,%bx +// PR12173 +// 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 %bx, %dx +shld %cl, %bx, %dx +shld $1, %bx, %dx +shld %bx, (%rax) +shld %cl, %bx, (%rax) +shrd %bx, %dx +shrd %cl, %bx, %dx +shrd $1, %bx, %dx +shrd %bx, (%rax) +shrd %cl, %bx, (%rax) // CHECK: sldtl %ecx // CHECK: encoding: [0x0f,0x00,0xc1] @@ -459,6 +475,7 @@ cwtl // CHECK: cwtl cbw // CHECK: cbtw cwd // CHECK: cwtd cdq // CHECK: cltd +cqo // CHECK: cqto // rdar://8456378 and PR7557 - fstsw fstsw %ax @@ -490,15 +507,15 @@ fsave 32493 // rdar://8456382 - cvtsd2si support. cvtsd2si %xmm1, %rax -// CHECK: cvtsd2siq %xmm1, %rax +// CHECK: cvtsd2si %xmm1, %rax // CHECK: encoding: [0xf2,0x48,0x0f,0x2d,0xc1] cvtsd2si %xmm1, %eax -// CHECK: cvtsd2sil %xmm1, %eax +// CHECK: cvtsd2si %xmm1, %eax // CHECK: encoding: [0xf2,0x0f,0x2d,0xc1] -cvtsd2siq %xmm0, %rax // CHECK: cvtsd2siq %xmm0, %rax -cvtsd2sil %xmm0, %eax // CHECK: cvtsd2sil %xmm0, %eax -cvtsd2si %xmm0, %rax // CHECK: cvtsd2siq %xmm0, %rax +cvtsd2siq %xmm0, %rax // CHECK: cvtsd2si %xmm0, %rax +cvtsd2sil %xmm0, %eax // CHECK: cvtsd2si %xmm0, %eax +cvtsd2si %xmm0, %rax // CHECK: cvtsd2si %xmm0, %rax cvttpd2dq %xmm1, %xmm0 // CHECK: cvttpd2dq %xmm1, %xmm0 @@ -532,8 +549,8 @@ cvttpd2dq 0xdeadbeef(%ebx,%ecx,8),%xmm5 // rdar://8490728 - llvm-mc rejects 'movmskpd' movmskpd %xmm6, %rax -// CHECK: movmskpd %xmm6, %rax -// CHECK: encoding: [0x66,0x48,0x0f,0x50,0xc6] +// CHECK: movmskpd %xmm6, %eax +// CHECK: encoding: [0x66,0x0f,0x50,0xc6] movmskpd %xmm6, %eax // CHECK: movmskpd %xmm6, %eax // CHECK: encoding: [0x66,0x0f,0x50,0xc6] @@ -610,7 +627,7 @@ movsq // CHECK: encoding: [0x48,0xa5] movsl -// CHECK: movsd +// CHECK: movsl // CHECK: encoding: [0xa5] stosq @@ -655,6 +672,38 @@ movl 0, %eax // CHECK: movl 0, %eax # encoding: [0x8b,0x04,0x25,0x00,0x00,0x00 // CHECK: encoding: [0x48,0xc7,0xc0,0x0a,0x00,0x00,0x00] movq $10, %rax +// CHECK: movabsb -6066930261531658096, %al +// CHECK: encoding: [0xa0,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] + movabsb 0xabcdef1234567890,%al + +// CHECK: movabsw -6066930261531658096, %ax +// CHECK: encoding: [0x66,0xa1,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] + movabsw 0xabcdef1234567890,%ax + +// CHECK: movabsl -6066930261531658096, %eax +// CHECK: encoding: [0xa1,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] + movabsl 0xabcdef1234567890,%eax + +// CHECK: movabsq -6066930261531658096, %rax +// CHECK: encoding: [0x48,0xa1,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] + movabsq 0xabcdef1234567890, %rax + +// CHECK: movabsb %al, -6066930261531658096 +// CHECK: encoding: [0xa2,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] + movabsb %al,0xabcdef1234567890 + +// CHECK: movabsw %ax, -6066930261531658096 +// CHECK: encoding: [0x66,0xa3,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] + movabsw %ax,0xabcdef1234567890 + +// CHECK: movabsl %eax, -6066930261531658096 +// CHECK: encoding: [0xa3,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] + movabsl %eax,0xabcdef1234567890 + +// CHECK: movabsq %rax, -6066930261531658096 +// CHECK: encoding: [0x48,0xa3,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] + movabsq %rax,0xabcdef1234567890 + // rdar://8014869 // // CHECK: ret @@ -796,7 +845,7 @@ lock/incl 1(%rsp) rep movsl // CHECK: rep // CHECK: encoding: [0xf3] -// CHECK: movsd +// CHECK: movsl // CHECK: encoding: [0xa5] @@ -827,6 +876,7 @@ iretq lretq // CHECK: lretq # encoding: [0x48,0xcb] lretl // CHECK: lretl # encoding: [0xcb] lret // CHECK: lretl # encoding: [0xcb] +lretw // CHECK: lretw # encoding: [0x66,0xcb] // rdar://8403907 sysret @@ -901,35 +951,35 @@ decw %ax // CHECK: decw %ax # encoding: [0x66,0xff,0xc8] decl %eax // CHECK: decl %eax # encoding: [0xff,0xc8] // rdar://8416805 -// CHECK: lgdt 4(%rax) +// CHECK: lgdtq 4(%rax) // CHECK: encoding: [0x0f,0x01,0x50,0x04] lgdt 4(%rax) -// CHECK: lgdt 4(%rax) +// CHECK: lgdtq 4(%rax) // CHECK: encoding: [0x0f,0x01,0x50,0x04] lgdtq 4(%rax) -// CHECK: lidt 4(%rax) +// CHECK: lidtq 4(%rax) // CHECK: encoding: [0x0f,0x01,0x58,0x04] lidt 4(%rax) -// CHECK: lidt 4(%rax) +// CHECK: lidtq 4(%rax) // CHECK: encoding: [0x0f,0x01,0x58,0x04] lidtq 4(%rax) -// CHECK: sgdt 4(%rax) +// CHECK: sgdtq 4(%rax) // CHECK: encoding: [0x0f,0x01,0x40,0x04] sgdt 4(%rax) -// CHECK: sgdt 4(%rax) +// CHECK: sgdtq 4(%rax) // CHECK: encoding: [0x0f,0x01,0x40,0x04] sgdtq 4(%rax) -// CHECK: sidt 4(%rax) +// CHECK: sidtq 4(%rax) // CHECK: encoding: [0x0f,0x01,0x48,0x04] sidt 4(%rax) -// CHECK: sidt 4(%rax) +// CHECK: sidtq 4(%rax) // CHECK: encoding: [0x0f,0x01,0x48,0x04] sidtq 4(%rax) @@ -940,6 +990,22 @@ mov %gs, (%rsi) // CHECK: movl %gs, (%rsi) # encoding: [0x8c,0x2e] // rdar://8431864 +//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 %bl,%al div %bx,%ax div %ecx,%eax @@ -984,70 +1050,73 @@ xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1] // CHECK: encoding: [0xe0,A] loopnz 0 -// CHECK: outsb # encoding: [0x6e] +// CHECK: outsb (%rsi), %dx # encoding: [0x6e] // CHECK: outsb // CHECK: outsb outsb outsb %ds:(%rsi), %dx outsb (%rsi), %dx -// CHECK: outsw # encoding: [0x66,0x6f] +// CHECK: outsw (%rsi), %dx # encoding: [0x66,0x6f] // CHECK: outsw // CHECK: outsw outsw outsw %ds:(%rsi), %dx outsw (%rsi), %dx -// CHECK: outsl # encoding: [0x6f] +// CHECK: outsl (%rsi), %dx # encoding: [0x6f] // CHECK: outsl outsl outsl %ds:(%rsi), %dx outsl (%rsi), %dx -// CHECK: insb # encoding: [0x6c] +// CHECK: insb %dx, %es:(%rdi) # encoding: [0x6c] // CHECK: insb insb insb %dx, %es:(%rdi) -// CHECK: insw # encoding: [0x66,0x6d] +// CHECK: insw %dx, %es:(%rdi) # encoding: [0x66,0x6d] // CHECK: insw insw insw %dx, %es:(%rdi) -// CHECK: insl # encoding: [0x6d] +// CHECK: insl %dx, %es:(%rdi) # encoding: [0x6d] // CHECK: insl insl insl %dx, %es:(%rdi) -// CHECK: movsb # encoding: [0xa4] +// CHECK: movsb (%rsi), %es:(%rdi) # encoding: [0xa4] // CHECK: movsb // CHECK: movsb movsb movsb %ds:(%rsi), %es:(%rdi) movsb (%rsi), %es:(%rdi) -// CHECK: movsw # encoding: [0x66,0xa5] +// CHECK: movsw (%rsi), %es:(%rdi) # encoding: [0x66,0xa5] // CHECK: movsw // CHECK: movsw movsw movsw %ds:(%rsi), %es:(%rdi) movsw (%rsi), %es:(%rdi) -// CHECK: movsd # encoding: [0xa5] -// CHECK: movsd -// CHECK: movsd +// CHECK: movsl (%rsi), %es:(%rdi) # encoding: [0xa5] +// CHECK: movsl +// CHECK: movsl movsl movsl %ds:(%rsi), %es:(%rdi) movsl (%rsi), %es:(%rdi) +// rdar://10883092 +// CHECK: movsl + movsl (%rsi), (%rdi) -// CHECK: movsq # encoding: [0x48,0xa5] +// CHECK: movsq (%rsi), %es:(%rdi) # encoding: [0x48,0xa5] // CHECK: movsq // CHECK: movsq movsq movsq %ds:(%rsi), %es:(%rdi) movsq (%rsi), %es:(%rdi) -// CHECK: lodsb # encoding: [0xac] +// CHECK: lodsb (%rsi), %al # encoding: [0xac] // CHECK: lodsb // CHECK: lodsb // CHECK: lodsb @@ -1058,7 +1127,7 @@ xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1] lods %ds:(%rsi), %al lods (%rsi), %al -// CHECK: lodsw # encoding: [0x66,0xad] +// CHECK: lodsw (%rsi), %ax # encoding: [0x66,0xad] // CHECK: lodsw // CHECK: lodsw // CHECK: lodsw @@ -1069,7 +1138,7 @@ xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1] lods %ds:(%rsi), %ax lods (%rsi), %ax -// CHECK: lodsl # encoding: [0xad] +// CHECK: lodsl (%rsi), %eax # encoding: [0xad] // CHECK: lodsl // CHECK: lodsl // CHECK: lodsl @@ -1080,7 +1149,7 @@ xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1] lods %ds:(%rsi), %eax lods (%rsi), %eax -// CHECK: lodsq # encoding: [0x48,0xad] +// CHECK: lodsq (%rsi), %rax # encoding: [0x48,0xad] // CHECK: lodsq // CHECK: lodsq // CHECK: lodsq @@ -1091,28 +1160,28 @@ xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1] lods %ds:(%rsi), %rax lods (%rsi), %rax -// CHECK: stosb # encoding: [0xaa] +// CHECK: stosb %al, %es:(%rdi) # encoding: [0xaa] // CHECK: stosb // CHECK: stosb stosb stosb %al, %es:(%rdi) stos %al, %es:(%rdi) -// CHECK: stosw # encoding: [0x66,0xab] +// CHECK: stosw %ax, %es:(%rdi) # encoding: [0x66,0xab] // CHECK: stosw // CHECK: stosw stosw stosw %ax, %es:(%rdi) stos %ax, %es:(%rdi) -// CHECK: stosl # encoding: [0xab] +// CHECK: stosl %eax, %es:(%rdi) # encoding: [0xab] // CHECK: stosl // CHECK: stosl stosl stosl %eax, %es:(%rdi) stos %eax, %es:(%rdi) -// CHECK: stosq # encoding: [0x48,0xab] +// CHECK: stosq %rax, %es:(%rdi) # encoding: [0x48,0xab] // CHECK: stosq // CHECK: stosq stosq @@ -1143,6 +1212,10 @@ xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1] // CHECK: encoding: [0x66,0x48,0x0f,0x6e,0xc7] movd %rdi,%xmm0 +// CHECK: movd %xmm0, %rax +// CHECK: encoding: [0x66,0x48,0x0f,0x7e,0xc0] + movd %xmm0, %rax + // CHECK: movntil %eax, (%rdi) // CHECK: encoding: [0x0f,0xc3,0x07] // CHECK: movntil @@ -1191,3 +1264,131 @@ xchgl %ecx, %eax // CHECK: xchgl %ecx, %eax // CHECK: encoding: [0x91] xchgl %eax, %ecx + +// CHECK: sysexit +// CHECK: encoding: [0x0f,0x35] +sysexit + +// CHECK: sysexitl +// CHECK: encoding: [0x0f,0x35] +sysexitl + +// CHECK: sysexitq +// CHECK: encoding: [0x48,0x0f,0x35] +sysexitq + +// CHECK: clac +// CHECK: encoding: [0x0f,0x01,0xca] +clac + +// CHECK: stac +// CHECK: encoding: [0x0f,0x01,0xcb] +stac + +// CHECK: faddp %st(1) +// CHECK: fmulp %st(1) +// CHECK: fsubp %st(1) +// CHECK: fsubrp %st(1) +// CHECK: fdivp %st(1) +// CHECK: fdivrp %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: fsubp %st(1) +// CHECK: fsubrp %st(1) +// CHECK: fdivp %st(1) +// CHECK: fdivrp %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: fsubp %st(1) +// CHECK: fsubrp %st(1) +// CHECK: fdivp %st(1) +// CHECK: fdivrp %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: fsubp %st(1) +// CHECK: fsubrp %st(1) +// CHECK: fdivp %st(1) +// CHECK: fdivrp %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(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(0), %st(1) +// CHECK: fmul %st(0), %st(1) +// CHECK: fsub %st(0), %st(1) +// CHECK: fsubr %st(0), %st(1) +// CHECK: fdiv %st(0), %st(1) +// CHECK: fdivr %st(0), %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(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: movd %xmm0, %eax +// CHECK: movd %xmm0, %rax +// CHECK: movd %xmm0, %rax +// CHECK: vmovd %xmm0, %eax +// CHECK: vmovq %xmm0, %rax +// CHECK: vmovq %xmm0, %rax +movd %xmm0, %eax +movd %xmm0, %rax +movq %xmm0, %rax +vmovd %xmm0, %eax +vmovd %xmm0, %rax +vmovq %xmm0, %rax + +// CHECK: seto 3735928559(%r10,%r9,8) +// CHECK: encoding: [0x43,0x0f,0x90,0x84,0xca,0xef,0xbe,0xad,0xde] + seto 0xdeadbeef(%r10,%r9,8)