X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FMC%2FX86%2Fx86-64.s;h=71f8557cde1cfc29c251eff536c01ad7cfdfbea0;hb=102130d17ca7c66c199644d73416c520107e763c;hp=82998952cf8238be76e593088e072280784a9799;hpb=508fc4708bb859391af8969614e67c84ab56c38c;p=oota-llvm.git diff --git a/test/MC/X86/x86-64.s b/test/MC/X86/x86-64.s index 82998952cf8..71f8557cde1 100644 --- a/test/MC/X86/x86-64.s +++ b/test/MC/X86/x86-64.s @@ -2,6 +2,18 @@ // RUN: FileCheck < %t %s // RUN: FileCheck --check-prefix=CHECK-STDERR < %t.err %s + monitor +// CHECK: monitor +// CHECK: encoding: [0x0f,0x01,0xc8] + monitor %rax, %rcx, %rdx +// CHECK: monitor +// CHECK: encoding: [0x0f,0x01,0xc8] + mwait +// CHECK: mwait +// CHECK: encoding: [0x0f,0x01,0xc9] + mwait %rax, %rcx +// CHECK: mwait +// CHECK: encoding: [0x0f,0x01,0xc9] // Suffix inference: @@ -38,6 +50,9 @@ // CHECK: ret ret +// CHECK: retw + retw + // FIXME: Check that this matches SUB32ri8 // CHECK: subl $1, %eax subl $1, %eax @@ -178,13 +193,17 @@ fadd %st(7) // CHECK: int3 INT3 +// rdar://8735979 - int $3 -> int3 +// CHECK: int3 +int $3 + // Allow scale factor without index register. // CHECK: movaps %xmm3, (%esi) // 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 @@ -203,6 +222,12 @@ inb $161, %al // CHECK: pushq $1 push $1 +// rdar://9716860 +pushq $1 +// CHECK: encoding: [0x6a,0x01] +pushq $1111111 +// CHECK: encoding: [0x68,0x47,0xf4,0x10,0x00] + // rdar://8017530 // CHECK: sldtw 4 sldt 4 @@ -229,26 +254,45 @@ inl %dx // PR8114 // 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) +out %ax, (%dx) +outw %ax, (%dx) +out %eax, (%dx) +outl %eax, (%dx) -out %al, (%dx) -out %ax, (%dx) -outl %eax, (%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 +in (%dx), %ax +inw (%dx), %ax +in (%dx), %eax +inl (%dx), %eax // rdar://8431422 -// CHECK: fxch %st(1) -// CHECK: fucom %st(1) -// CHECK: fucomp %st(1) -// CHECK: faddp %st(1) +// CHECK: fxch %st(1) +// CHECK: fucom %st(1) +// CHECK: fucomp %st(1) +// CHECK: faddp %st(1) // CHECK: faddp %st(0) -// CHECK: fsubp %st(1) -// CHECK: fsubrp %st(1) -// CHECK: fmulp %st(1) -// CHECK: fdivp %st(1) -// CHECK: fdivrp %st(1) +// CHECK: fsubp %st(1) +// CHECK: fsubrp %st(1) +// CHECK: fmulp %st(1) +// CHECK: fdivp %st(1) +// CHECK: fdivrp %st(1) fxch fucom @@ -261,11 +305,11 @@ fmulp fdivp fdivrp -// CHECK: fcomi %st(1), %st(0) -// CHECK: fcomi %st(2), %st(0) -// CHECK: fucomi %st(1), %st(0) -// CHECK: fucomi %st(2), %st(0) -// CHECK: fucomi %st(2), %st(0) +// CHECK: fcomi %st(1) +// CHECK: fcomi %st(2) +// CHECK: fucomi %st(1) +// CHECK: fucomi %st(2) +// CHECK: fucomi %st(2) fcomi fcomi %st(2) @@ -284,26 +328,42 @@ fnstsw %eax fnstsw %al // rdar://8431880 -// CHECK: rclb $1, %bl -// CHECK: rcll $1, 3735928559(%ebx,%ecx,8) -// CHECK: rcrl $1, %ecx -// CHECK: rcrl $1, 305419896 - +// CHECK: rclb %bl +// CHECK: rcll 3735928559(%ebx,%ecx,8) +// CHECK: rcrl %ecx +// CHECK: rcrl 305419896 rcl %bl rcll 0xdeadbeef(%ebx,%ecx,8) rcr %ecx rcrl 0x12345678 -// rdar://8418316 -// CHECK: shldw $1, %bx, %bx -// CHECK: shldw $1, %bx, %bx -// CHECK: shrdw $1, %bx, %bx -// CHECK: shrdw $1, %bx, %bx +rclb %bl // CHECK: rclb %bl # encoding: [0xd0,0xd3] +rclb $1, %bl // CHECK: rclb %bl # encoding: [0xd0,0xd3] +rclb $2, %bl // CHECK: rclb $2, %bl # encoding: [0xc0,0xd3,0x02] -shld %bx,%bx -shld $1, %bx,%bx -shrd %bx,%bx -shrd $1, %bx,%bx +// rdar://8418316 +// 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] @@ -331,11 +391,6 @@ enter $0x7ace,$1 enter $0x7ace,$0x7f -// rdar://8456389 -// CHECK: fstps (%eax) -// CHECK: encoding: [0x67,0xd9,0x18] -fstp (%eax) - // rdar://8456364 // CHECK: movw %cs, %ax mov %CS, %ax @@ -358,7 +413,7 @@ fcmovae %st(1), %st(0) // CHECK: fcmovnb %st(1), %st(0) fcmova %st(1), %st(0) // CHECK: fcmovnbe %st(1), %st(0) // rdar://8456417 -.byte 88 + 1 & 15 // CHECK: .byte 9 +.byte (88 + 1) & 15 // CHECK: .byte 9 // rdar://8456412 mov %rdx, %cr0 @@ -420,11 +475,12 @@ cwtl // CHECK: cwtl cbw // CHECK: cbtw cwd // CHECK: cwtd cdq // CHECK: cltd +cqo // CHECK: cqto // rdar://8456378 and PR7557 - fstsw fstsw %ax // CHECK: wait -// CHECK: fnstsw %ax +// CHECK: fnstsw fstsw (%rax) // CHECK: wait // CHECK: fnstsw (%rax) @@ -451,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 @@ -493,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] @@ -506,6 +562,10 @@ fdivrp %st(1), %st(0) // CHECK: encoding: [0xde,0xf9] fsubrp %ST(0), %ST(1) // CHECK: encoding: [0xde,0xe9] fsubrp %ST(1), %ST(0) // CHECK: encoding: [0xde,0xe9] +// also PR8861 +fdivp %st(0), %st(1) // CHECK: encoding: [0xde,0xf1] +fdivp %st(1), %st(0) // CHECK: encoding: [0xde,0xf1] + movl foo(%rip), %eax // CHECK: movl foo(%rip), %eax @@ -553,7 +613,7 @@ movq _foo@GOTPCREL(%rip), %r14 movq 0x00(%r13,%rax,8),%r13 // CHECK: testq %rax, %rbx -// CHECK: encoding: [0x48,0x85,0xd8] +// CHECK: encoding: [0x48,0x85,0xc3] testq %rax, %rbx // CHECK: cmpq %rbx, %r14 @@ -612,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 @@ -634,6 +726,10 @@ movl 0, %eax // CHECK: movl 0, %eax # encoding: [0x8b,0x04,0x25,0x00,0x00,0x00 // CHECK: encoding: [0x75,A] jnz 0 +// PR9264 +btl $1, 0 // CHECK: btl $1, 0 # encoding: [0x0f,0xba,0x24,0x25,0x00,0x00,0x00,0x00,0x01] +bt $1, 0 // CHECK: btl $1, 0 # encoding: [0x0f,0xba,0x24,0x25,0x00,0x00,0x00,0x00,0x01] + // rdar://8017515 btq $0x01,%rdx // CHECK: btq $1, %rdx @@ -648,9 +744,57 @@ btq $0x01,%rdx // CHECK: encoding: [0x48,0x0f,0xb6,0xf0] movzx %al, %rsi -// CHECK: movzbq (%rsp), %rsi -// CHECK: encoding: [0x48,0x0f,0xb6,0x34,0x24] - movzx 0(%rsp), %rsi +// CHECK: movsbw %al, %ax +// CHECK: encoding: [0x66,0x0f,0xbe,0xc0] +movsx %al, %ax + +// CHECK: movsbl %al, %eax +// CHECK: encoding: [0x0f,0xbe,0xc0] +movsx %al, %eax + +// CHECK: movswl %ax, %eax +// CHECK: encoding: [0x0f,0xbf,0xc0] +movsx %ax, %eax + +// CHECK: movsbq %bl, %rax +// CHECK: encoding: [0x48,0x0f,0xbe,0xc3] +movsx %bl, %rax + +// CHECK: movswq %cx, %rax +// CHECK: encoding: [0x48,0x0f,0xbf,0xc1] +movsx %cx, %rax + +// CHECK: movslq %edi, %rax +// CHECK: encoding: [0x48,0x63,0xc7] +movsx %edi, %rax + +// CHECK: movzbw %al, %ax +// CHECK: encoding: [0x66,0x0f,0xb6,0xc0] +movzx %al, %ax + +// CHECK: movzbl %al, %eax +// CHECK: encoding: [0x0f,0xb6,0xc0] +movzx %al, %eax + +// CHECK: movzwl %ax, %eax +// CHECK: encoding: [0x0f,0xb7,0xc0] +movzx %ax, %eax + +// CHECK: movzbq %bl, %rax +// CHECK: encoding: [0x48,0x0f,0xb6,0xc3] +movzx %bl, %rax + +// CHECK: movzwq %cx, %rax +// CHECK: encoding: [0x48,0x0f,0xb7,0xc1] +movzx %cx, %rax + +// CHECK: movsbw (%rax), %ax +// CHECK: encoding: [0x66,0x0f,0xbe,0x00] +movsx (%rax), %ax + +// CHECK: movzbw (%rax), %ax +// CHECK: encoding: [0x66,0x0f,0xb6,0x00] +movzx (%rax), %ax // rdar://7873482 @@ -692,6 +836,11 @@ lock incl 1(%rsp) // CHECK: lock // CHECK: incl 1(%rsp) +// rdar://8741045 +lock/incl 1(%rsp) +// CHECK: lock +// CHECK: incl 1(%rsp) + // rdar://8033482 rep movsl // CHECK: rep @@ -714,6 +863,21 @@ iretq // CHECK: iretq // CHECK: encoding: [0x48,0xcf] +// rdar://8416805 +// CHECK: retw $31438 +// CHECK: encoding: [0x66,0xc2,0xce,0x7a] + retw $0x7ace + +// CHECK: lretw $31438 +// CHECK: encoding: [0x66,0xca,0xce,0x7a] + lretw $0x7ace + +// PR8592 +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 // CHECK: sysretl @@ -786,3 +950,461 @@ decb %al // CHECK: decb %al # encoding: [0xfe,0xc8] decw %ax // CHECK: decw %ax # encoding: [0x66,0xff,0xc8] decl %eax // CHECK: decl %eax # encoding: [0xff,0xc8] +// rdar://8416805 +// CHECK: lgdtq 4(%rax) +// CHECK: encoding: [0x0f,0x01,0x50,0x04] + lgdt 4(%rax) + +// CHECK: lgdtq 4(%rax) +// CHECK: encoding: [0x0f,0x01,0x50,0x04] + lgdtq 4(%rax) + +// CHECK: lidtq 4(%rax) +// CHECK: encoding: [0x0f,0x01,0x58,0x04] + lidt 4(%rax) + +// CHECK: lidtq 4(%rax) +// CHECK: encoding: [0x0f,0x01,0x58,0x04] + lidtq 4(%rax) + +// CHECK: sgdtq 4(%rax) +// CHECK: encoding: [0x0f,0x01,0x40,0x04] + sgdt 4(%rax) + +// CHECK: sgdtq 4(%rax) +// CHECK: encoding: [0x0f,0x01,0x40,0x04] + sgdtq 4(%rax) + +// CHECK: sidtq 4(%rax) +// CHECK: encoding: [0x0f,0x01,0x48,0x04] + sidt 4(%rax) + +// CHECK: sidtq 4(%rax) +// CHECK: encoding: [0x0f,0x01,0x48,0x04] + sidtq 4(%rax) + + +// rdar://8208615 +mov (%rsi), %gs // CHECK: movl (%rsi), %gs # encoding: [0x8e,0x2e] +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 + div 0xdeadbeef(%ebx,%ecx,8),%eax + div 0x45,%eax + div 0x7eed,%eax + div 0xbabecafe,%eax + div 0x12345678,%eax + idiv %bl,%al + idiv %bx,%ax + idiv %ecx,%eax + idiv 0xdeadbeef(%ebx,%ecx,8),%eax + idiv 0x45,%eax + idiv 0x7eed,%eax + idiv 0xbabecafe,%eax + idiv 0x12345678,%eax + +// PR8524 +movd %rax, %mm5 // CHECK: movd %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8] +movd %mm5, %rbx // CHECK: movd %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb] +movq %rax, %mm5 // CHECK: movd %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8] +movq %mm5, %rbx // CHECK: movd %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb] + +rex64 // CHECK: rex64 # encoding: [0x48] +data16 // CHECK: data16 # encoding: [0x66] + +// PR8855 +movq 18446744073709551615,%rbx // CHECK: movq -1, %rbx + +// PR8946 +movdqu %xmm0, %xmm1 // CHECK: movdqu %xmm0, %xmm1 # encoding: [0xf3,0x0f,0x6f,0xc8] + +// PR8935 +xgetbv // CHECK: xgetbv # encoding: [0x0f,0x01,0xd0] +xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1] + +// CHECK: loope 0 +// CHECK: encoding: [0xe1,A] + loopz 0 + +// CHECK: loopne 0 +// CHECK: encoding: [0xe0,A] + loopnz 0 + +// CHECK: outsb (%rsi), %dx # encoding: [0x6e] +// CHECK: outsb +// CHECK: outsb + outsb + outsb %ds:(%rsi), %dx + outsb (%rsi), %dx + +// CHECK: outsw (%rsi), %dx # encoding: [0x66,0x6f] +// CHECK: outsw +// CHECK: outsw + outsw + outsw %ds:(%rsi), %dx + outsw (%rsi), %dx + +// CHECK: outsl (%rsi), %dx # encoding: [0x6f] +// CHECK: outsl + outsl + outsl %ds:(%rsi), %dx + outsl (%rsi), %dx + +// CHECK: insb %dx, %es:(%rdi) # encoding: [0x6c] +// CHECK: insb + insb + insb %dx, %es:(%rdi) + +// CHECK: insw %dx, %es:(%rdi) # encoding: [0x66,0x6d] +// CHECK: insw + insw + insw %dx, %es:(%rdi) + +// CHECK: insl %dx, %es:(%rdi) # encoding: [0x6d] +// CHECK: insl + insl + insl %dx, %es:(%rdi) + +// CHECK: movsb (%rsi), %es:(%rdi) # encoding: [0xa4] +// CHECK: movsb +// CHECK: movsb + movsb + movsb %ds:(%rsi), %es:(%rdi) + movsb (%rsi), %es:(%rdi) + +// CHECK: movsw (%rsi), %es:(%rdi) # encoding: [0x66,0xa5] +// CHECK: movsw +// CHECK: movsw + movsw + movsw %ds:(%rsi), %es:(%rdi) + movsw (%rsi), %es:(%rdi) + +// 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 (%rsi), %es:(%rdi) # encoding: [0x48,0xa5] +// CHECK: movsq +// CHECK: movsq + movsq + movsq %ds:(%rsi), %es:(%rdi) + movsq (%rsi), %es:(%rdi) + +// CHECK: lodsb (%rsi), %al # encoding: [0xac] +// CHECK: lodsb +// CHECK: lodsb +// CHECK: lodsb +// CHECK: lodsb + lodsb + lodsb %ds:(%rsi), %al + lodsb (%rsi), %al + lods %ds:(%rsi), %al + lods (%rsi), %al + +// CHECK: lodsw (%rsi), %ax # encoding: [0x66,0xad] +// CHECK: lodsw +// CHECK: lodsw +// CHECK: lodsw +// CHECK: lodsw + lodsw + lodsw %ds:(%rsi), %ax + lodsw (%rsi), %ax + lods %ds:(%rsi), %ax + lods (%rsi), %ax + +// CHECK: lodsl (%rsi), %eax # encoding: [0xad] +// CHECK: lodsl +// CHECK: lodsl +// CHECK: lodsl +// CHECK: lodsl + lodsl + lodsl %ds:(%rsi), %eax + lodsl (%rsi), %eax + lods %ds:(%rsi), %eax + lods (%rsi), %eax + +// CHECK: lodsq (%rsi), %rax # encoding: [0x48,0xad] +// CHECK: lodsq +// CHECK: lodsq +// CHECK: lodsq +// CHECK: lodsq + lodsq + lodsq %ds:(%rsi), %rax + lodsq (%rsi), %rax + lods %ds:(%rsi), %rax + lods (%rsi), %rax + +// CHECK: stosb %al, %es:(%rdi) # encoding: [0xaa] +// CHECK: stosb +// CHECK: stosb + stosb + stosb %al, %es:(%rdi) + stos %al, %es:(%rdi) + +// CHECK: stosw %ax, %es:(%rdi) # encoding: [0x66,0xab] +// CHECK: stosw +// CHECK: stosw + stosw + stosw %ax, %es:(%rdi) + stos %ax, %es:(%rdi) + +// CHECK: stosl %eax, %es:(%rdi) # encoding: [0xab] +// CHECK: stosl +// CHECK: stosl + stosl + stosl %eax, %es:(%rdi) + stos %eax, %es:(%rdi) + +// CHECK: stosq %rax, %es:(%rdi) # encoding: [0x48,0xab] +// CHECK: stosq +// CHECK: stosq + stosq + stosq %rax, %es:(%rdi) + stos %rax, %es:(%rdi) + +// CHECK: strw +// CHECK: encoding: [0x66,0x0f,0x00,0xc8] + str %ax + +// CHECK: strl +// CHECK: encoding: [0x0f,0x00,0xc8] + str %eax + +// CHECK: strw +// CHECK: encoding: [0x66,0x0f,0x00,0xc8] + str %ax + +// CHECK: strq +// CHECK: encoding: [0x48,0x0f,0x00,0xc8] + str %rax + +// CHECK: movd %rdi, %xmm0 +// CHECK: encoding: [0x66,0x48,0x0f,0x6e,0xc7] + movq %rdi,%xmm0 + +// CHECK: movd %rdi, %xmm0 +// 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 +movntil %eax, (%rdi) +movnti %eax, (%rdi) + +// CHECK: movntiq %rax, (%rdi) +// CHECK: encoding: [0x48,0x0f,0xc3,0x07] +// CHECK: movntiq +movntiq %rax, (%rdi) +movnti %rax, (%rdi) + +// CHECK: pclmulqdq $17, %xmm0, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x3a,0x44,0xc8,0x11] +pclmulhqhqdq %xmm0, %xmm1 + +// CHECK: pclmulqdq $1, %xmm0, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x3a,0x44,0xc8,0x01] +pclmulqdq $1, %xmm0, %xmm1 + +// CHECK: pclmulqdq $16, (%rdi), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x3a,0x44,0x0f,0x10] +pclmullqhqdq (%rdi), %xmm1 + +// CHECK: pclmulqdq $0, (%rdi), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x3a,0x44,0x0f,0x00] +pclmulqdq $0, (%rdi), %xmm1 + +// PR10345 +// CHECK: xchgq %rax, %rax +// CHECK: encoding: [0x48,0x90] +xchgq %rax, %rax + +// CHECK: xchgl %eax, %eax +// CHECK: encoding: [0x87,0xc0] +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: 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) + +// CHECK: monitorx +// CHECK: encoding: [0x0f,0x01,0xfa] + monitorx + +// CHECK: monitorx +// CHECK: encoding: [0x0f,0x01,0xfa] + monitorx %rax, %rcx, %rdx + +// CHECK: mwaitx +// CHECK: encoding: [0x0f,0x01,0xfb] + mwaitx + +// CHECK: mwaitx +// CHECK: encoding: [0x0f,0x01,0xfb] + mwaitx %rax, %rcx, %rbx