diff options
author | dim <dim@FreeBSD.org> | 2012-04-14 13:54:10 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2012-04-14 13:54:10 +0000 |
commit | 1fc08f5e9ef733ef1ce6f363fecedc2260e78974 (patch) | |
tree | 19c69a04768629f2d440944b71cbe90adae0b615 /test/MC/X86 | |
parent | 07637c87f826cdf411f0673595e9bc92ebd793f2 (diff) | |
download | FreeBSD-src-1fc08f5e9ef733ef1ce6f363fecedc2260e78974.zip FreeBSD-src-1fc08f5e9ef733ef1ce6f363fecedc2260e78974.tar.gz |
Vendor import of llvm trunk r154661:
http://llvm.org/svn/llvm-project/llvm/trunk@r154661
Diffstat (limited to 'test/MC/X86')
-rw-r--r-- | test/MC/X86/2011-09-06-NoNewline.s | 3 | ||||
-rw-r--r-- | test/MC/X86/address-size.s | 13 | ||||
-rw-r--r-- | test/MC/X86/dg.exp | 5 | ||||
-rw-r--r-- | test/MC/X86/intel-syntax-2.s | 7 | ||||
-rw-r--r-- | test/MC/X86/intel-syntax-encoding.s | 57 | ||||
-rw-r--r-- | test/MC/X86/intel-syntax.s | 66 | ||||
-rw-r--r-- | test/MC/X86/lit.local.cfg | 12 | ||||
-rw-r--r-- | test/MC/X86/x86-32-coverage.s | 34 | ||||
-rw-r--r-- | test/MC/X86/x86-32.s | 44 | ||||
-rw-r--r-- | test/MC/X86/x86-64.s | 51 | ||||
-rw-r--r-- | test/MC/X86/x86_64-avx-encoding.s | 775 | ||||
-rw-r--r-- | test/MC/X86/x86_64-bmi-encoding.s | 202 | ||||
-rw-r--r-- | test/MC/X86/x86_64-fma4-encoding.s | 391 | ||||
-rw-r--r-- | test/MC/X86/x86_64-xop-encoding.s | 584 | ||||
-rw-r--r-- | test/MC/X86/x86_errors.s | 13 |
15 files changed, 2239 insertions, 18 deletions
diff --git a/test/MC/X86/2011-09-06-NoNewline.s b/test/MC/X86/2011-09-06-NoNewline.s new file mode 100644 index 0000000..bc681a3 --- /dev/null +++ b/test/MC/X86/2011-09-06-NoNewline.s @@ -0,0 +1,3 @@ +// RUN: llvm-mc -triple i386-unknown-unknown %s +// PR10869 +movl %gs:8, %eax
\ No newline at end of file diff --git a/test/MC/X86/address-size.s b/test/MC/X86/address-size.s new file mode 100644 index 0000000..b105b40 --- /dev/null +++ b/test/MC/X86/address-size.s @@ -0,0 +1,13 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s + + .code64 + movb $0x0, (%esi) +// CHECK: encoding: [0x67,0xc6,0x06,0x00] + movb $0x0, (%rsi) +// CHECK: encoding: [0xc6,0x06,0x00] + + .code32 + movb $0x0, (%si) +// CHECK: encoding: [0x67,0xc6,0x06,0x00] + movb $0x0, (%esi) +// CHECK: encoding: [0xc6,0x06,0x00] diff --git a/test/MC/X86/dg.exp b/test/MC/X86/dg.exp deleted file mode 100644 index ec87b69..0000000 --- a/test/MC/X86/dg.exp +++ /dev/null @@ -1,5 +0,0 @@ -load_lib llvm.exp - -if { [llvm_supports_target X86] } { - RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp,s}]] -} diff --git a/test/MC/X86/intel-syntax-2.s b/test/MC/X86/intel-syntax-2.s new file mode 100644 index 0000000..ca4afc3 --- /dev/null +++ b/test/MC/X86/intel-syntax-2.s @@ -0,0 +1,7 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown %s | FileCheck %s + + .intel_syntax +_test: +// CHECK: movl $257, -4(%rsp) + mov DWORD PTR [RSP - 4], 257 + diff --git a/test/MC/X86/intel-syntax-encoding.s b/test/MC/X86/intel-syntax-encoding.s new file mode 100644 index 0000000..03b0551 --- /dev/null +++ b/test/MC/X86/intel-syntax-encoding.s @@ -0,0 +1,57 @@ +// RUN: llvm-mc -x86-asm-syntax=intel -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s + +// CHECK: encoding: [0x66,0x83,0xf0,0x0c] + xor ax, 12 +// CHECK: encoding: [0x83,0xf0,0x0c] + xor eax, 12 +// CHECK: encoding: [0x48,0x83,0xf0,0x0c] + xor rax, 12 + +// CHECK: encoding: [0x66,0x83,0xc8,0x0c] + or ax, 12 +// CHECK: encoding: [0x83,0xc8,0x0c] + or eax, 12 +// CHECK: encoding: [0x48,0x83,0xc8,0x0c] + or rax, 12 + +// CHECK: encoding: [0x66,0x83,0xf8,0x0c] + cmp ax, 12 +// CHECK: encoding: [0x83,0xf8,0x0c] + cmp eax, 12 +// CHECK: encoding: [0x48,0x83,0xf8,0x0c] + cmp rax, 12 + +// CHECK: encoding: [0x48,0x89,0x44,0x24,0xf0] + mov QWORD PTR [RSP - 16], RAX + +// CHECK: encoding: [0x66,0x83,0xc0,0xf4] + add ax, -12 +// CHECK: encoding: [0x83,0xc0,0xf4] + add eax, -12 +// CHECK: encoding: [0x48,0x83,0xc0,0xf4] + add rax, -12 + +LBB0_3: +// CHECK: encoding: [0xeb,A] + jmp LBB0_3 +// CHECK: encoding: [0xf2,0x0f,0x10,0x2c,0x25,0xf8,0xff,0xff,0xff] + movsd XMM5, QWORD PTR [-8] + +// CHECK: encoding: [0xd1,0xe7] + shl EDI, 1 + +// CHECK: encoding: [0x0f,0xc2,0xd1,0x01] + cmpltps XMM2, XMM1 + +// CHECK: encoding: [0xc3] + ret + +// CHECK: encoding: [0xcb] + retf + +// CHECK: encoding: [0xc2,0x08,0x00] + ret 8 + +// CHECK: encoding: [0xca,0x08,0x00] + retf 8 + diff --git a/test/MC/X86/intel-syntax.s b/test/MC/X86/intel-syntax.s new file mode 100644 index 0000000..7cd5677 --- /dev/null +++ b/test/MC/X86/intel-syntax.s @@ -0,0 +1,66 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel %s | FileCheck %s + +_test: + xor EAX, EAX + ret + +_main: +// CHECK: movl $257, -4(%rsp) + mov DWORD PTR [RSP - 4], 257 +// CHECK: movl $258, 4(%rsp) + mov DWORD PTR [RSP + 4], 258 +// CHECK: movq $123, -16(%rsp) + mov QWORD PTR [RSP - 16], 123 +// CHECK: movb $97, -17(%rsp) + mov BYTE PTR [RSP - 17], 97 +// CHECK: movl -4(%rsp), %eax + mov EAX, DWORD PTR [RSP - 4] +// CHECK: movq (%rsp), %rax + mov RAX, QWORD PTR [RSP] +// CHECK: movl $-4, -4(%rsp) + mov DWORD PTR [RSP - 4], -4 +// CHECK: movq 0, %rcx + mov RCX, QWORD PTR [0] +// CHECK: movl -24(%rsp,%rax,4), %eax + mov EAX, DWORD PTR [RSP + 4*RAX - 24] +// CHECK: movb %dil, (%rdx,%rcx) + mov BYTE PTR [RDX + RCX], DIL +// CHECK: movzwl 2(%rcx), %edi + movzx EDI, WORD PTR [RCX + 2] +// CHECK: callq _test + call _test +// CHECK: andw $12, %ax + and ax, 12 +// CHECK: andw $-12, %ax + and ax, -12 +// CHECK: andw $257, %ax + and ax, 257 +// CHECK: andw $-257, %ax + and ax, -257 +// CHECK: andl $12, %eax + and eax, 12 +// CHECK: andl $-12, %eax + and eax, -12 +// CHECK: andl $257, %eax + and eax, 257 +// CHECK: andl $-257, %eax + and eax, -257 +// CHECK: andq $12, %rax + and rax, 12 +// CHECK: andq $-12, %rax + and rax, -12 +// CHECK: andq $257, %rax + and rax, 257 +// CHECK: andq $-257, %rax + and rax, -257 +// CHECK: fld %st(0) + fld ST(0) +// CHECK: movl %fs:(%rdi), %eax + mov EAX, DWORD PTR FS:[RDI] +// CHECK: leal (,%rdi,4), %r8d + lea R8D, DWORD PTR [4*RDI] +// CHECK: movl _fnan(,%ecx,4), %ecx + mov ECX, DWORD PTR [4*ECX + _fnan] +// CHECK: movq %fs:320, %rax + mov RAX, QWORD PTR FS:[320] + ret diff --git a/test/MC/X86/lit.local.cfg b/test/MC/X86/lit.local.cfg new file mode 100644 index 0000000..eee568e --- /dev/null +++ b/test/MC/X86/lit.local.cfg @@ -0,0 +1,12 @@ +config.suffixes = ['.ll', '.c', '.cpp', '.s'] + +def getRoot(config): + if not config.parent: + return config + return getRoot(config.parent) + +root = getRoot(config) + +targets = set(root.targets_to_build.split()) +if not 'X86' in targets: + config.unsupported = True diff --git a/test/MC/X86/x86-32-coverage.s b/test/MC/X86/x86-32-coverage.s index 0954ce2..6c27b85 100644 --- a/test/MC/X86/x86-32-coverage.s +++ b/test/MC/X86/x86-32-coverage.s @@ -500,6 +500,9 @@ // CHECK: sysexit sysexit +// CHECK: sysexitl + sysexitl + // CHECK: ud2 ud2 @@ -4417,6 +4420,10 @@ // CHECK: encoding: [0x0f,0x35] sysexit +// CHECK: sysexitl +// CHECK: encoding: [0x0f,0x35] + sysexitl + // CHECK: fxsave 3735928559(%ebx,%ecx,8) // CHECK: encoding: [0x0f,0xae,0x84,0xcb,0xef,0xbe,0xad,0xde] fxsave 0xdeadbeef(%ebx,%ecx,8) @@ -18401,6 +18408,9 @@ // CHECK: vmcall vmcall +// CHECK: vmfunc + vmfunc + // CHECK: vmclear 3735928559(%ebx,%ecx,8) vmclear 0xdeadbeef(%ebx,%ecx,8) @@ -18458,6 +18468,30 @@ // CHECK: vmxon 305419896 vmxon 0x12345678 +// CHECK: vmrun %eax + vmrun %eax + +// CHECK: vmmcall + vmmcall + +// CHECK: vmload %eax + vmload %eax + +// CHECK: vmsave %eax + vmsave %eax + +// CHECK: stgi + stgi + +// CHECK: clgi + clgi + +// CHECK: skinit %eax + skinit %eax + +// CHECK: invlpga %ecx, %eax + invlpga %ecx, %eax + // CHECK: phaddw 3735928559(%ebx,%ecx,8), %mm3 phaddw 0xdeadbeef(%ebx,%ecx,8),%mm3 diff --git a/test/MC/X86/x86-32.s b/test/MC/X86/x86-32.s index 19f1445..57a0037 100644 --- a/test/MC/X86/x86-32.s +++ b/test/MC/X86/x86-32.s @@ -28,6 +28,9 @@ vmcall // CHECK: vmcall // CHECK: encoding: [0x0f,0x01,0xc1] + vmfunc +// CHECK: vmfunc +// CHECK: encoding: [0x0f,0x01,0xd4] vmlaunch // CHECK: vmlaunch // CHECK: encoding: [0x0f,0x01,0xc2] @@ -41,7 +44,32 @@ // CHECK: swapgs // CHECK: encoding: [0x0f,0x01,0xf8] -rdtscp + vmrun %eax +// CHECK: vmrun %eax +// CHECK: encoding: [0x0f,0x01,0xd8] + vmmcall +// CHECK: vmmcall +// CHECK: encoding: [0x0f,0x01,0xd9] + vmload %eax +// CHECK: vmload %eax +// CHECK: encoding: [0x0f,0x01,0xda] + vmsave %eax +// CHECK: vmsave %eax +// CHECK: encoding: [0x0f,0x01,0xdb] + stgi +// CHECK: stgi +// CHECK: encoding: [0x0f,0x01,0xdc] + clgi +// CHECK: clgi +// CHECK: encoding: [0x0f,0x01,0xdd] + skinit %eax +// CHECK: skinit %eax +// CHECK: encoding: [0x0f,0x01,0xde] + invlpga %ecx, %eax +// CHECK: invlpga %ecx, %eax +// CHECK: encoding: [0x0f,0x01,0xdf] + + rdtscp // CHECK: rdtscp // CHECK: encoding: [0x0f,0x01,0xf9] @@ -69,9 +97,9 @@ rdtscp sal $1, %eax // moffset forms of moves, rdar://7947184 -movb 0, %al // CHECK: movb 0, %al # encoding: [0xa0,A,A,A,A] -movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0xa1,A,A,A,A] -movl 0, %eax // CHECK: movl 0, %eax # encoding: [0xa1,A,A,A,A] +movb 0, %al // CHECK: movb 0, %al # encoding: [0xa0,0x00,0x00,0x00,0x00] +movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0xa1,0x00,0x00,0x00,0x00] +movl 0, %eax // CHECK: movl 0, %eax # encoding: [0xa1,0x00,0x00,0x00,0x00] // rdar://7973775 into @@ -962,3 +990,11 @@ xchgl %ecx, %eax // CHECK: xchgl %ecx, %eax // CHECK: encoding: [0x91] xchgl %eax, %ecx + +// CHECK: retw +// CHECK: encoding: [0x66,0xc3] +retw + +// CHECK: lretw +// CHECK: encoding: [0x66,0xcb] +lretw diff --git a/test/MC/X86/x86-64.s b/test/MC/X86/x86-64.s index a9cdaa4..6a2d5bb 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 @@ -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 @@ -827,6 +844,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 @@ -1039,6 +1057,9 @@ xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1] movsl movsl %ds:(%rsi), %es:(%rdi) movsl (%rsi), %es:(%rdi) +// rdar://10883092 +// CHECK: movsd + movsl (%rsi), (%rdi) // CHECK: movsq # encoding: [0x48,0xa5] // CHECK: movsq @@ -1191,3 +1212,15 @@ 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 diff --git a/test/MC/X86/x86_64-avx-encoding.s b/test/MC/X86/x86_64-avx-encoding.s index d3b226f..bd5559a 100644 --- a/test/MC/X86/x86_64-avx-encoding.s +++ b/test/MC/X86/x86_64-avx-encoding.s @@ -600,6 +600,774 @@ vdivpd -4(%rcx,%rbx,8), %xmm10, %xmm11 // CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x03] vcmpunordsd -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: vcmpps $8, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x08] + vcmpeq_uqps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $9, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x09] + vcmpngeps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $10, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x0a] + vcmpngtps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $11, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x0b] + vcmpfalseps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $12, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x0c] + vcmpneq_oqps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $13, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x0d] + vcmpgeps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $14, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x0e] + vcmpgtps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $15, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x0f] + vcmptrueps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $16, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x10] + vcmpeq_osps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $17, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x11] + vcmplt_oqps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $18, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x12] + vcmple_oqps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $19, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x13] + vcmpunord_sps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $20, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x14] + vcmpneq_usps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $21, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x15] + vcmpnlt_uqps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $22, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x16] + vcmpnle_uqps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $23, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x17] + vcmpord_sps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $24, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x18] + vcmpeq_usps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $25, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x19] + vcmpnge_uqps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $26, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x1a] + vcmpngt_uqps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $27, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x1b] + vcmpfalse_osps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $28, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x1c] + vcmpneq_osps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $29, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x1d] + vcmpge_oqps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $30, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x1e] + vcmpgt_oqps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $31, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x1f] + vcmptrue_usps %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpps $8, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x08] + vcmpeq_uqps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $9, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x09] + vcmpngeps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $10, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x0a] + vcmpngtps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $11, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x0b] + vcmpfalseps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $12, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x0c] + vcmpneq_oqps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $13, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x0d] + vcmpgeps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $14, -4(%rbx,%rcx,8), %xmm6, %xmm2 +// CHECK: encoding: [0xc5,0xc8,0xc2,0x54,0xcb,0xfc,0x0e] + vcmpgtps -4(%rbx,%rcx,8), %xmm6, %xmm2 + +// CHECK: vcmpps $15, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x0f] + vcmptrueps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $16, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x10] + vcmpeq_osps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $17, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x11] + vcmplt_oqps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $18, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x12] + vcmple_oqps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $19, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x13] + vcmpunord_sps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $20, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x14] + vcmpneq_usps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $21, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x15] + vcmpnlt_uqps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $22, -4(%rbx,%rcx,8), %xmm6, %xmm2 +// CHECK: encoding: [0xc5,0xc8,0xc2,0x54,0xcb,0xfc,0x16] + vcmpnle_uqps -4(%rbx,%rcx,8), %xmm6, %xmm2 + +// CHECK: vcmpps $23, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x17] + vcmpord_sps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $24, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x18] + vcmpeq_usps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $25, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x19] + vcmpnge_uqps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $26, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x1a] + vcmpngt_uqps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $27, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x1b] + vcmpfalse_osps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $28, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x1c] + vcmpneq_osps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $29, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x1d] + vcmpge_oqps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpps $30, -4(%rbx,%rcx,8), %xmm6, %xmm2 +// CHECK: encoding: [0xc5,0xc8,0xc2,0x54,0xcb,0xfc,0x1e] + vcmpgt_oqps -4(%rbx,%rcx,8), %xmm6, %xmm2 + +// CHECK: vcmpps $31, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x18,0xc2,0x6c,0xcb,0xfc,0x1f] + vcmptrue_usps -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $8, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x08] + vcmpeq_uqpd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $9, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x09] + vcmpngepd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $10, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x0a] + vcmpngtpd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $11, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x0b] + vcmpfalsepd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $12, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x0c] + vcmpneq_oqpd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $13, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x0d] + vcmpgepd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $14, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x0e] + vcmpgtpd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $15, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x0f] + vcmptruepd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $16, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x10] + vcmpeq_ospd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $17, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x11] + vcmplt_oqpd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $18, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x12] + vcmple_oqpd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $19, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x13] + vcmpunord_spd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $20, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x14] + vcmpneq_uspd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $21, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x15] + vcmpnlt_uqpd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $22, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x16] + vcmpnle_uqpd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $23, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x17] + vcmpord_spd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $24, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x18] + vcmpeq_uspd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $25, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x19] + vcmpnge_uqpd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $26, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x1a] + vcmpngt_uqpd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $27, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x1b] + vcmpfalse_ospd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $28, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x1c] + vcmpneq_ospd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $29, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x1d] + vcmpge_oqpd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $30, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x1e] + vcmpgt_oqpd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $31, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xeb,0x1f] + vcmptrue_uspd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmppd $8, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x08] + vcmpeq_uqpd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $9, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x09] + vcmpngepd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $10, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x0a] + vcmpngtpd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $11, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x0b] + vcmpfalsepd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $12, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x0c] + vcmpneq_oqpd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $13, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x0d] + vcmpgepd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $14, -4(%rbx,%rcx,8), %xmm6, %xmm2 +// CHECK: encoding: [0xc5,0xc9,0xc2,0x54,0xcb,0xfc,0x0e] + vcmpgtpd -4(%rbx,%rcx,8), %xmm6, %xmm2 + +// CHECK: vcmppd $15, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x0f] + vcmptruepd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $16, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x10] + vcmpeq_ospd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $17, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x11] + vcmplt_oqpd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $18, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x12] + vcmple_oqpd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $19, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x13] + vcmpunord_spd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $20, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x14] + vcmpneq_uspd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $21, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x15] + vcmpnlt_uqpd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $22, -4(%rbx,%rcx,8), %xmm6, %xmm2 +// CHECK: encoding: [0xc5,0xc9,0xc2,0x54,0xcb,0xfc,0x16] + vcmpnle_uqpd -4(%rbx,%rcx,8), %xmm6, %xmm2 + +// CHECK: vcmppd $23, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x17] + vcmpord_spd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $24, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x18] + vcmpeq_uspd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $25, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x19] + vcmpnge_uqpd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $26, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x1a] + vcmpngt_uqpd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $27, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x1b] + vcmpfalse_ospd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $28, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x1c] + vcmpneq_ospd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $29, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x1d] + vcmpge_oqpd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmppd $30, -4(%rbx,%rcx,8), %xmm6, %xmm2 +// CHECK: encoding: [0xc5,0xc9,0xc2,0x54,0xcb,0xfc,0x1e] + vcmpgt_oqpd -4(%rbx,%rcx,8), %xmm6, %xmm2 + +// CHECK: vcmppd $31, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x19,0xc2,0x6c,0xcb,0xfc,0x1f] + vcmptrue_uspd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $8, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x08] + vcmpeq_uqss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $9, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x09] + vcmpngess %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $10, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x0a] + vcmpngtss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $11, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x0b] + vcmpfalsess %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $12, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x0c] + vcmpneq_oqss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $13, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x0d] + vcmpgess %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $14, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x0e] + vcmpgtss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $15, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x0f] + vcmptruess %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $16, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x10] + vcmpeq_osss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $17, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x11] + vcmplt_oqss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $18, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x12] + vcmple_oqss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $19, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x13] + vcmpunord_sss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $20, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x14] + vcmpneq_usss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $21, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x15] + vcmpnlt_uqss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $22, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x16] + vcmpnle_uqss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $23, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x17] + vcmpord_sss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $24, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x18] + vcmpeq_usss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $25, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x19] + vcmpnge_uqss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $26, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x1a] + vcmpngt_uqss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $27, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x1b] + vcmpfalse_osss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $28, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x1c] + vcmpneq_osss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $29, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x1d] + vcmpge_oqss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $30, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x1e] + vcmpgt_oqss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $31, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1a,0xc2,0xeb,0x1f] + vcmptrue_usss %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpss $8, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x08] + vcmpeq_uqss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $9, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x09] + vcmpngess -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $10, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x0a] + vcmpngtss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $11, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x0b] + vcmpfalsess -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $12, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x0c] + vcmpneq_oqss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $13, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x0d] + vcmpgess -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $14, -4(%rbx,%rcx,8), %xmm6, %xmm2 +// CHECK: encoding: [0xc5,0xca,0xc2,0x54,0xcb,0xfc,0x0e] + vcmpgtss -4(%rbx,%rcx,8), %xmm6, %xmm2 + +// CHECK: vcmpss $15, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x0f] + vcmptruess -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $16, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x10] + vcmpeq_osss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $17, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x11] + vcmplt_oqss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $18, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x12] + vcmple_oqss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $19, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x13] + vcmpunord_sss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $20, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x14] + vcmpneq_usss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $21, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x15] + vcmpnlt_uqss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $22, -4(%rbx,%rcx,8), %xmm6, %xmm2 +// CHECK: encoding: [0xc5,0xca,0xc2,0x54,0xcb,0xfc,0x16] + vcmpnle_uqss -4(%rbx,%rcx,8), %xmm6, %xmm2 + +// CHECK: vcmpss $23, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x17] + vcmpord_sss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $24, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x18] + vcmpeq_usss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $25, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x19] + vcmpnge_uqss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $26, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x1a] + vcmpngt_uqss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $27, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x1b] + vcmpfalse_osss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $28, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x1c] + vcmpneq_osss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $29, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x1d] + vcmpge_oqss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpss $30, -4(%rbx,%rcx,8), %xmm6, %xmm2 +// CHECK: encoding: [0xc5,0xca,0xc2,0x54,0xcb,0xfc,0x1e] + vcmpgt_oqss -4(%rbx,%rcx,8), %xmm6, %xmm2 + +// CHECK: vcmpss $31, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1a,0xc2,0x6c,0xcb,0xfc,0x1f] + vcmptrue_usss -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $8, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x08] + vcmpeq_uqsd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $9, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x09] + vcmpngesd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $10, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x0a] + vcmpngtsd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $11, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x0b] + vcmpfalsesd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $12, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x0c] + vcmpneq_oqsd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $13, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x0d] + vcmpgesd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $14, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x0e] + vcmpgtsd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $15, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x0f] + vcmptruesd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $16, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x10] + vcmpeq_ossd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $17, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x11] + vcmplt_oqsd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $18, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x12] + vcmple_oqsd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $19, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x13] + vcmpunord_ssd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $20, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x14] + vcmpneq_ussd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $21, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x15] + vcmpnlt_uqsd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $22, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x16] + vcmpnle_uqsd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $23, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x17] + vcmpord_ssd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $24, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x18] + vcmpeq_ussd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $25, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x19] + vcmpnge_uqsd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $26, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x1a] + vcmpngt_uqsd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $27, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x1b] + vcmpfalse_ossd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $28, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x1c] + vcmpneq_ossd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $29, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x1d] + vcmpge_oqsd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $30, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x1e] + vcmpgt_oqsd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $31, %xmm11, %xmm12, %xmm13 +// CHECK: encoding: [0xc4,0x41,0x1b,0xc2,0xeb,0x1f] + vcmptrue_ussd %xmm11, %xmm12, %xmm13 + +// CHECK: vcmpsd $8, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x08] + vcmpeq_uqsd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $9, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x09] + vcmpngesd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $10, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x0a] + vcmpngtsd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $11, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x0b] + vcmpfalsesd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $12, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x0c] + vcmpneq_oqsd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $13, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x0d] + vcmpgesd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $14, -4(%rbx,%rcx,8), %xmm6, %xmm2 +// CHECK: encoding: [0xc5,0xcb,0xc2,0x54,0xcb,0xfc,0x0e] + vcmpgtsd -4(%rbx,%rcx,8), %xmm6, %xmm2 + +// CHECK: vcmpsd $15, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x0f] + vcmptruesd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $16, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x10] + vcmpeq_ossd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $17, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x11] + vcmplt_oqsd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $18, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x12] + vcmple_oqsd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $19, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x13] + vcmpunord_ssd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $20, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x14] + vcmpneq_ussd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $21, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x15] + vcmpnlt_uqsd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $22, -4(%rbx,%rcx,8), %xmm6, %xmm2 +// CHECK: encoding: [0xc5,0xcb,0xc2,0x54,0xcb,0xfc,0x16] + vcmpnle_uqsd -4(%rbx,%rcx,8), %xmm6, %xmm2 + +// CHECK: vcmpsd $23, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x17] + vcmpord_ssd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $24, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x18] + vcmpeq_ussd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $25, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x19] + vcmpnge_uqsd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $26, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x1a] + vcmpngt_uqsd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $27, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x1b] + vcmpfalse_ossd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $28, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x1c] + vcmpneq_ossd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $29, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x1d] + vcmpge_oqsd -4(%rbx,%rcx,8), %xmm12, %xmm13 + +// CHECK: vcmpsd $30, -4(%rbx,%rcx,8), %xmm6, %xmm2 +// CHECK: encoding: [0xc5,0xcb,0xc2,0x54,0xcb,0xfc,0x1e] + vcmpgt_oqsd -4(%rbx,%rcx,8), %xmm6, %xmm2 + +// CHECK: vcmpsd $31, -4(%rbx,%rcx,8), %xmm12, %xmm13 +// CHECK: encoding: [0xc5,0x1b,0xc2,0x6c,0xcb,0xfc,0x1f] + vcmptrue_ussd -4(%rbx,%rcx,8), %xmm12, %xmm13 + // CHECK: vucomiss %xmm11, %xmm12 // CHECK: encoding: [0xc4,0x41,0x78,0x2e,0xe3] vucomiss %xmm11, %xmm12 @@ -3346,3 +4114,10 @@ vdivpd -4(%rcx,%rbx,8), %xmm10, %xmm11 _foo: nop vpshufb _foo(%rip), %xmm0, %xmm0 + +// CHECK: vblendvps %ymm1, _foo2(%rip), %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x7d,0x4a,0x05,A,A,A,A,0x10] +// CHECK: fixup A - offset: 5, value: _foo2-5 +_foo2: + nop + vblendvps %ymm1, _foo2(%rip), %ymm0, %ymm0 diff --git a/test/MC/X86/x86_64-bmi-encoding.s b/test/MC/X86/x86_64-bmi-encoding.s new file mode 100644 index 0000000..3e69d4a --- /dev/null +++ b/test/MC/X86/x86_64-bmi-encoding.s @@ -0,0 +1,202 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s + +// CHECK: blsmskl %r11d, %r10d +// CHECK: encoding: [0xc4,0xc2,0x28,0xf3,0xd3] + blsmskl %r11d, %r10d + +// CHECK: blsmskq %r11, %r10 +// CHECK: encoding: [0xc4,0xc2,0xa8,0xf3,0xd3] + blsmskq %r11, %r10 + +// CHECK: blsmskl (%rax), %r10d +// CHECK: encoding: [0xc4,0xe2,0x28,0xf3,0x10] + blsmskl (%rax), %r10d + +// CHECK: blsmskq (%rax), %r10 +// CHECK: encoding: [0xc4,0xe2,0xa8,0xf3,0x10] + blsmskq (%rax), %r10 + +// CHECK: blsil %r11d, %r10d +// CHECK: encoding: [0xc4,0xc2,0x28,0xf3,0xdb] + blsil %r11d, %r10d + +// CHECK: blsiq %r11, %r10 +// CHECK: encoding: [0xc4,0xc2,0xa8,0xf3,0xdb] + blsiq %r11, %r10 + +// CHECK: blsil (%rax), %r10d +// CHECK: encoding: [0xc4,0xe2,0x28,0xf3,0x18] + blsil (%rax), %r10d + +// CHECK: blsiq (%rax), %r10 +// CHECK: encoding: [0xc4,0xe2,0xa8,0xf3,0x18] + blsiq (%rax), %r10 + +// CHECK: blsrl %r11d, %r10d +// CHECK: encoding: [0xc4,0xc2,0x28,0xf3,0xcb] + blsrl %r11d, %r10d + +// CHECK: blsrq %r11, %r10 +// CHECK: encoding: [0xc4,0xc2,0xa8,0xf3,0xcb] + blsrq %r11, %r10 + +// CHECK: blsrl (%rax), %r10d +// CHECK: encoding: [0xc4,0xe2,0x28,0xf3,0x08] + blsrl (%rax), %r10d + +// CHECK: blsrq (%rax), %r10 +// CHECK: encoding: [0xc4,0xe2,0xa8,0xf3,0x08] + blsrq (%rax), %r10 + +// CHECK: andnl (%rax), %r11d, %r10d +// CHECK: encoding: [0xc4,0x62,0x20,0xf2,0x10] + andnl (%rax), %r11d, %r10d + +// CHECK: andnq (%rax), %r11, %r10 +// CHECK: encoding: [0xc4,0x62,0xa0,0xf2,0x10] + andnq (%rax), %r11, %r10 + +// CHECK: bextrl %r12d, (%rax), %r10d +// CHECK: encoding: [0xc4,0x62,0x18,0xf7,0x10] + bextrl %r12d, (%rax), %r10d + +// CHECK: bextrl %r12d, %r11d, %r10d +// CHECK: encoding: [0xc4,0x42,0x18,0xf7,0xd3] + bextrl %r12d, %r11d, %r10d + +// CHECK: bextrq %r12, (%rax), %r10 +// CHECK: encoding: [0xc4,0x62,0x98,0xf7,0x10] + bextrq %r12, (%rax), %r10 + +// CHECK: bextrq %r12, %r11, %r10 +// CHECK: encoding: [0xc4,0x42,0x98,0xf7,0xd3] + bextrq %r12, %r11, %r10 + +// CHECK: bzhil %r12d, (%rax), %r10d +// CHECK: encoding: [0xc4,0x62,0x18,0xf5,0x10] + bzhil %r12d, (%rax), %r10d + +// CHECK: bzhil %r12d, %r11d, %r10d +// CHECK: encoding: [0xc4,0x42,0x18,0xf5,0xd3] + bzhil %r12d, %r11d, %r10d + +// CHECK: bzhiq %r12, (%rax), %r10 +// CHECK: encoding: [0xc4,0x62,0x98,0xf5,0x10] + bzhiq %r12, (%rax), %r10 + +// CHECK: bzhiq %r12, %r11, %r10 +// CHECK: encoding: [0xc4,0x42,0x98,0xf5,0xd3] + bzhiq %r12, %r11, %r10 + +// CHECK: pextl %r12d, %r11d, %r10d +// CHECK: encoding: [0xc4,0x42,0x22,0xf5,0xd4] + pextl %r12d, %r11d, %r10d + +// CHECK: pextl (%rax), %r11d, %r10d +// CHECK: encoding: [0xc4,0x62,0x22,0xf5,0x10] + pextl (%rax), %r11d, %r10d + +// CHECK: pextq %r12, %r11, %r10 +// CHECK: encoding: [0xc4,0x42,0xa2,0xf5,0xd4] + pextq %r12, %r11, %r10 + +// CHECK: pextq (%rax), %r11, %r10 +// CHECK: encoding: [0xc4,0x62,0xa2,0xf5,0x10] + pextq (%rax), %r11, %r10 + +// CHECK: pdepl %r12d, %r11d, %r10d +// CHECK: encoding: [0xc4,0x42,0x23,0xf5,0xd4] + pdepl %r12d, %r11d, %r10d + +// CHECK: pdepl (%rax), %r11d, %r10d +// CHECK: encoding: [0xc4,0x62,0x23,0xf5,0x10] + pdepl (%rax), %r11d, %r10d + +// CHECK: pdepq %r12, %r11, %r10 +// CHECK: encoding: [0xc4,0x42,0xa3,0xf5,0xd4] + pdepq %r12, %r11, %r10 + +// CHECK: pdepq (%rax), %r11, %r10 +// CHECK: encoding: [0xc4,0x62,0xa3,0xf5,0x10] + pdepq (%rax), %r11, %r10 + +// CHECK: mulxl %r12d, %r11d, %r10d +// CHECK: encoding: [0xc4,0x42,0x23,0xf6,0xd4] + mulxl %r12d, %r11d, %r10d + +// CHECK: mulxl (%rax), %r11d, %r10d +// CHECK: encoding: [0xc4,0x62,0x23,0xf6,0x10] + mulxl (%rax), %r11d, %r10d + +// CHECK: mulxq %r12, %r11, %r10 +// CHECK: encoding: [0xc4,0x42,0xa3,0xf6,0xd4] + mulxq %r12, %r11, %r10 + +// CHECK: mulxq (%rax), %r11, %r10 +// CHECK: encoding: [0xc4,0x62,0xa3,0xf6,0x10] + mulxq (%rax), %r11, %r10 + +// CHECK: rorxl $10, %r12d, %r10d +// CHECK: encoding: [0xc4,0x43,0x7b,0xf0,0xd4,0x0a] + rorxl $10, %r12d, %r10d + +// CHECK: rorxl $31, (%rax), %r10d +// CHECK: encoding: [0xc4,0x63,0x7b,0xf0,0x10,0x1f] + rorxl $31, (%rax), %r10d + +// CHECK: rorxq $1, %r12, %r10 +// CHECK: encoding: [0xc4,0x43,0xfb,0xf0,0xd4,0x01] + rorxq $1, %r12, %r10 + +// CHECK: rorxq $63, (%rax), %r10 +// CHECK: encoding: [0xc4,0x63,0xfb,0xf0,0x10,0x3f] + rorxq $63, (%rax), %r10 + +// CHECK: shlxl %r12d, (%rax), %r10d +// CHECK: encoding: [0xc4,0x62,0x19,0xf7,0x10] + shlxl %r12d, (%rax), %r10d + +// CHECK: shlxl %r12d, %r11d, %r10d +// CHECK: encoding: [0xc4,0x42,0x19,0xf7,0xd3] + shlxl %r12d, %r11d, %r10d + +// CHECK: shlxq %r12, (%rax), %r10 +// CHECK: encoding: [0xc4,0x62,0x99,0xf7,0x10] + shlxq %r12, (%rax), %r10 + +// CHECK: shlxq %r12, %r11, %r10 +// CHECK: encoding: [0xc4,0x42,0x99,0xf7,0xd3] + shlxq %r12, %r11, %r10 + +// CHECK: sarxl %r12d, (%rax), %r10d +// CHECK: encoding: [0xc4,0x62,0x1a,0xf7,0x10] + sarxl %r12d, (%rax), %r10d + +// CHECK: sarxl %r12d, %r11d, %r10d +// CHECK: encoding: [0xc4,0x42,0x1a,0xf7,0xd3] + sarxl %r12d, %r11d, %r10d + +// CHECK: sarxq %r12, (%rax), %r10 +// CHECK: encoding: [0xc4,0x62,0x9a,0xf7,0x10] + sarxq %r12, (%rax), %r10 + +// CHECK: sarxq %r12, %r11, %r10 +// CHECK: encoding: [0xc4,0x42,0x9a,0xf7,0xd3] + sarxq %r12, %r11, %r10 + +// CHECK: shrxl %r12d, (%rax), %r10d +// CHECK: encoding: [0xc4,0x62,0x1b,0xf7,0x10] + shrxl %r12d, (%rax), %r10d + +// CHECK: shrxl %r12d, %r11d, %r10d +// CHECK: encoding: [0xc4,0x42,0x1b,0xf7,0xd3] + shrxl %r12d, %r11d, %r10d + +// CHECK: shrxq %r12, (%rax), %r10 +// CHECK: encoding: [0xc4,0x62,0x9b,0xf7,0x10] + shrxq %r12, (%rax), %r10 + +// CHECK: shrxq %r12, %r11, %r10 +// CHECK: encoding: [0xc4,0x42,0x9b,0xf7,0xd3] + shrxq %r12, %r11, %r10 + diff --git a/test/MC/X86/x86_64-fma4-encoding.s b/test/MC/X86/x86_64-fma4-encoding.s new file mode 100644 index 0000000..805fc23 --- /dev/null +++ b/test/MC/X86/x86_64-fma4-encoding.s @@ -0,0 +1,391 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s + +// vfmadd +// CHECK: vfmaddss (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x6a,0x01,0x10] + vfmaddss (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfmaddss %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x6a,0x01,0x10] + vfmaddss %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfmaddss %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x6a,0xc2,0x10] + vfmaddss %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfmaddsd (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x6b,0x01,0x10] + vfmaddsd (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfmaddsd %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x6b,0x01,0x10] + vfmaddsd %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfmaddsd %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x6b,0xc2,0x10] + vfmaddsd %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfmaddps (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x68,0x01,0x10] + vfmaddps (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfmaddps %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x68,0x01,0x10] + vfmaddps %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfmaddps %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x68,0xc2,0x10] + vfmaddps %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfmaddpd (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x69,0x01,0x10] + vfmaddpd (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfmaddpd %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x69,0x01,0x10] + vfmaddpd %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfmaddpd %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x69,0xc2,0x10] + vfmaddpd %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfmaddps (%rcx), %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x68,0x01,0x10] + vfmaddps (%rcx), %ymm1, %ymm0, %ymm0 + +// CHECK: vfmaddps %ymm1, (%rcx), %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x7d,0x68,0x01,0x10] + vfmaddps %ymm1, (%rcx),%ymm0, %ymm0 + +// CHECK: vfmaddps %ymm2, %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x68,0xc2,0x10] + vfmaddps %ymm2, %ymm1, %ymm0, %ymm0 + +// CHECK: vfmaddpd (%rcx), %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x69,0x01,0x10] + vfmaddpd (%rcx), %ymm1, %ymm0, %ymm0 + +// CHECK: vfmaddpd %ymm1, (%rcx), %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x7d,0x69,0x01,0x10] + vfmaddpd %ymm1, (%rcx),%ymm0, %ymm0 + +// CHECK: vfmaddpd %ymm2, %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x69,0xc2,0x10] + vfmaddpd %ymm2, %ymm1, %ymm0, %ymm0 + +// vfmsub +// CHECK: vfmsubss (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x6e,0x01,0x10] + vfmsubss (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfmsubss %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x6e,0x01,0x10] + vfmsubss %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfmsubss %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x6e,0xc2,0x10] + vfmsubss %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfmsubsd (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x6f,0x01,0x10] + vfmsubsd (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfmsubsd %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x6f,0x01,0x10] + vfmsubsd %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfmsubsd %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x6f,0xc2,0x10] + vfmsubsd %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfmsubps (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x6c,0x01,0x10] + vfmsubps (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfmsubps %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x6c,0x01,0x10] + vfmsubps %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfmsubps %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x6c,0xc2,0x10] + vfmsubps %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfmsubpd (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x6d,0x01,0x10] + vfmsubpd (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfmsubpd %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x6d,0x01,0x10] + vfmsubpd %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfmsubpd %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x6d,0xc2,0x10] + vfmsubpd %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfmsubps (%rcx), %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x6c,0x01,0x10] + vfmsubps (%rcx), %ymm1, %ymm0, %ymm0 + +// CHECK: vfmsubps %ymm1, (%rcx), %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x7d,0x6c,0x01,0x10] + vfmsubps %ymm1, (%rcx),%ymm0, %ymm0 + +// CHECK: vfmsubps %ymm2, %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x6c,0xc2,0x10] + vfmsubps %ymm2, %ymm1, %ymm0, %ymm0 + +// CHECK: vfmsubpd (%rcx), %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x6d,0x01,0x10] + vfmsubpd (%rcx), %ymm1, %ymm0, %ymm0 + +// CHECK: vfmsubpd %ymm1, (%rcx), %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x7d,0x6d,0x01,0x10] + vfmsubpd %ymm1, (%rcx),%ymm0, %ymm0 + +// CHECK: vfmsubpd %ymm2, %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x6d,0xc2,0x10] + vfmsubpd %ymm2, %ymm1, %ymm0, %ymm0 + +// vfnmadd +// CHECK: vfnmaddss (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x7a,0x01,0x10] + vfnmaddss (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmaddss %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x7a,0x01,0x10] + vfnmaddss %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfnmaddss %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x7a,0xc2,0x10] + vfnmaddss %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmaddsd (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x7b,0x01,0x10] + vfnmaddsd (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmaddsd %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x7b,0x01,0x10] + vfnmaddsd %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfnmaddsd %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x7b,0xc2,0x10] + vfnmaddsd %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmaddps (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x78,0x01,0x10] + vfnmaddps (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmaddps %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x78,0x01,0x10] + vfnmaddps %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfnmaddps %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x78,0xc2,0x10] + vfnmaddps %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmaddpd (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x79,0x01,0x10] + vfnmaddpd (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmaddpd %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x79,0x01,0x10] + vfnmaddpd %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfnmaddpd %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x79,0xc2,0x10] + vfnmaddpd %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmaddps (%rcx), %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x78,0x01,0x10] + vfnmaddps (%rcx), %ymm1, %ymm0, %ymm0 + +// CHECK: vfnmaddps %ymm1, (%rcx), %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x7d,0x78,0x01,0x10] + vfnmaddps %ymm1, (%rcx),%ymm0, %ymm0 + +// CHECK: vfnmaddps %ymm2, %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x78,0xc2,0x10] + vfnmaddps %ymm2, %ymm1, %ymm0, %ymm0 + +// CHECK: vfnmaddpd (%rcx), %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x79,0x01,0x10] + vfnmaddpd (%rcx), %ymm1, %ymm0, %ymm0 + +// CHECK: vfnmaddpd %ymm1, (%rcx), %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x7d,0x79,0x01,0x10] + vfnmaddpd %ymm1, (%rcx),%ymm0, %ymm0 + +// CHECK: vfnmaddpd %ymm2, %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x79,0xc2,0x10] + vfnmaddpd %ymm2, %ymm1, %ymm0, %ymm0 + +// vfnmsub +// CHECK: vfnmsubss (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x7e,0x01,0x10] + vfnmsubss (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmsubss %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x7e,0x01,0x10] + vfnmsubss %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfnmsubss %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x7e,0xc2,0x10] + vfnmsubss %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmsubsd (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x7f,0x01,0x10] + vfnmsubsd (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmsubsd %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x7f,0x01,0x10] + vfnmsubsd %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfnmsubsd %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x7f,0xc2,0x10] + vfnmsubsd %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmsubps (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x7c,0x01,0x10] + vfnmsubps (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmsubps %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x7c,0x01,0x10] + vfnmsubps %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfnmsubps %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x7c,0xc2,0x10] + vfnmsubps %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmsubpd (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x7d,0x01,0x10] + vfnmsubpd (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmsubpd %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x7d,0x01,0x10] + vfnmsubpd %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfnmsubpd %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x7d,0xc2,0x10] + vfnmsubpd %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfnmsubps (%rcx), %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x7c,0x01,0x10] + vfnmsubps (%rcx), %ymm1, %ymm0, %ymm0 + +// CHECK: vfnmsubps %ymm1, (%rcx), %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x7d,0x7c,0x01,0x10] + vfnmsubps %ymm1, (%rcx),%ymm0, %ymm0 + +// CHECK: vfnmsubps %ymm2, %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x7c,0xc2,0x10] + vfnmsubps %ymm2, %ymm1, %ymm0, %ymm0 + +// CHECK: vfnmsubpd (%rcx), %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x7d,0x01,0x10] + vfnmsubpd (%rcx), %ymm1, %ymm0, %ymm0 + +// CHECK: vfnmsubpd %ymm1, (%rcx), %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x7d,0x7d,0x01,0x10] + vfnmsubpd %ymm1, (%rcx),%ymm0, %ymm0 + +// CHECK: vfnmsubpd %ymm2, %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x7d,0xc2,0x10] + vfnmsubpd %ymm2, %ymm1, %ymm0, %ymm0 + +// vfmaddsub +// CHECK: vfmaddsubps (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x5c,0x01,0x10] + vfmaddsubps (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfmaddsubps %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x5c,0x01,0x10] + vfmaddsubps %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfmaddsubps %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x5c,0xc2,0x10] + vfmaddsubps %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfmaddsubpd (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x5d,0x01,0x10] + vfmaddsubpd (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfmaddsubpd %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x5d,0x01,0x10] + vfmaddsubpd %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfmaddsubpd %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x5d,0xc2,0x10] + vfmaddsubpd %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfmaddsubps (%rcx), %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x5c,0x01,0x10] + vfmaddsubps (%rcx), %ymm1, %ymm0, %ymm0 + +// CHECK: vfmaddsubps %ymm1, (%rcx), %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x7d,0x5c,0x01,0x10] + vfmaddsubps %ymm1, (%rcx),%ymm0, %ymm0 + +// CHECK: vfmaddsubps %ymm2, %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x5c,0xc2,0x10] + vfmaddsubps %ymm2, %ymm1, %ymm0, %ymm0 + +// CHECK: vfmaddsubpd (%rcx), %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x5d,0x01,0x10] + vfmaddsubpd (%rcx), %ymm1, %ymm0, %ymm0 + +// CHECK: vfmaddsubpd %ymm1, (%rcx), %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x7d,0x5d,0x01,0x10] + vfmaddsubpd %ymm1, (%rcx),%ymm0, %ymm0 + +// CHECK: vfmaddsubpd %ymm2, %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x5d,0xc2,0x10] + vfmaddsubpd %ymm2, %ymm1, %ymm0, %ymm0 + +// vfmsubadd +// CHECK: vfmsubaddps (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x5e,0x01,0x10] + vfmsubaddps (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfmsubaddps %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x5e,0x01,0x10] + vfmsubaddps %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfmsubaddps %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x5e,0xc2,0x10] + vfmsubaddps %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfmsubaddpd (%rcx), %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x5f,0x01,0x10] + vfmsubaddpd (%rcx), %xmm1, %xmm0, %xmm0 + +// CHECK: vfmsubaddpd %xmm1, (%rcx), %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x79,0x5f,0x01,0x10] + vfmsubaddpd %xmm1, (%rcx),%xmm0, %xmm0 + +// CHECK: vfmsubaddpd %xmm2, %xmm1, %xmm0, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xf9,0x5f,0xc2,0x10] + vfmsubaddpd %xmm2, %xmm1, %xmm0, %xmm0 + +// CHECK: vfmsubaddps (%rcx), %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x5e,0x01,0x10] + vfmsubaddps (%rcx), %ymm1, %ymm0, %ymm0 + +// CHECK: vfmsubaddps %ymm1, (%rcx), %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x7d,0x5e,0x01,0x10] + vfmsubaddps %ymm1, (%rcx),%ymm0, %ymm0 + +// CHECK: vfmsubaddps %ymm2, %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x5e,0xc2,0x10] + vfmsubaddps %ymm2, %ymm1, %ymm0, %ymm0 + +// CHECK: vfmsubaddpd (%rcx), %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x5f,0x01,0x10] + vfmsubaddpd (%rcx), %ymm1, %ymm0, %ymm0 + +// CHECK: vfmsubaddpd %ymm1, (%rcx), %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x7d,0x5f,0x01,0x10] + vfmsubaddpd %ymm1, (%rcx),%ymm0, %ymm0 + +// CHECK: vfmsubaddpd %ymm2, %ymm1, %ymm0, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0xfd,0x5f,0xc2,0x10] + vfmsubaddpd %ymm2, %ymm1, %ymm0, %ymm0 diff --git a/test/MC/X86/x86_64-xop-encoding.s b/test/MC/X86/x86_64-xop-encoding.s new file mode 100644 index 0000000..1137b71 --- /dev/null +++ b/test/MC/X86/x86_64-xop-encoding.s @@ -0,0 +1,584 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s + +////////////////////////// +// 2 operand instructions +///////////////////////// + +// vphsubwd +// CHECK: vphsubwd (%rcx,%rax), %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0xe2,0x0c,0x01] + vphsubwd (%rcx,%rax), %xmm1 +// CHECK: vphsubwd %xmm0, %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0xe2,0xc8] + vphsubwd %xmm0, %xmm1 + +// vphsubdq +// CHECK: vphsubdq (%rcx,%rax), %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0xe3,0x0c,0x01] + vphsubdq (%rcx,%rax), %xmm1 +// CHECK: vphsubdq %xmm0, %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0xe3,0xc8] + vphsubdq %xmm0, %xmm1 + +// vphsubbw +// CHECK: vphsubbw (%rax), %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0xe1,0x08] + vphsubbw (%rax), %xmm1 +// CHECK: vphsubbw %xmm2, %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0xe1,0xca] + vphsubbw %xmm2, %xmm1 + +// vphaddwq +// CHECK: vphaddwq (%rcx), %xmm4 +// CHECK: encoding: [0x8f,0xe9,0x78,0xc7,0x21] + vphaddwq (%rcx), %xmm4 +// CHECK: vphaddwq %xmm6, %xmm2 +// CHECK: encoding: [0x8f,0xe9,0x78,0xc7,0xd6] + vphaddwq %xmm6, %xmm2 + +// vphaddwd +// CHECK: vphaddwd (%rdx,%rax), %xmm7 +// CHECK: encoding: [0x8f,0xe9,0x78,0xc6,0x3c,0x02] + vphaddwd (%rdx,%rax), %xmm7 +// CHECK: vphaddwd %xmm3, %xmm4 +// CHECK: encoding: [0x8f,0xe9,0x78,0xc6,0xe3] + vphaddwd %xmm3, %xmm4 + +// vphadduwq +// CHECK: vphadduwq (%rcx,%rax), %xmm6 +// CHECK: encoding: [0x8f,0xe9,0x78,0xd7,0x34,0x01] + vphadduwq (%rcx,%rax), %xmm6 +// CHECK: vphadduwq %xmm7, %xmm0 +// CHECK: encoding: [0x8f,0xe9,0x78,0xd7,0xc7] + vphadduwq %xmm7, %xmm0 + +// vphadduwd +// CHECK: vphadduwd (%rax), %xmm5 +// CHECK: encoding: [0x8f,0xe9,0x78,0xd6,0x28] + vphadduwd (%rax), %xmm5 +// CHECK: vphadduwd %xmm2, %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0xd6,0xca] + vphadduwd %xmm2, %xmm1 + +// vphaddudq +// CHECK: vphaddudq 8(%rcx,%rax), %xmm4 +// CHECK: encoding: [0x8f,0xe9,0x78,0xdb,0x64,0x01,0x08] + vphaddudq 8(%rcx,%rax), %xmm4 +// CHECK: vphaddudq %xmm6, %xmm2 +// CHECK: encoding: [0x8f,0xe9,0x78,0xdb,0xd6] + vphaddudq %xmm6, %xmm2 + +// vphaddubw +// CHECK: vphaddubw (%rcx), %xmm3 +// CHECK: encoding: [0x8f,0xe9,0x78,0xd1,0x19] + vphaddubw (%rcx), %xmm3 +// CHECK: vphaddubw %xmm5, %xmm0 +// CHECK: encoding: [0x8f,0xe9,0x78,0xd1,0xc5] + vphaddubw %xmm5, %xmm0 + +// vphaddubq +// CHECK: vphaddubq (%rcx), %xmm4 +// CHECK: encoding: [0x8f,0xe9,0x78,0xd3,0x21] + vphaddubq (%rcx), %xmm4 +// CHECK: vphaddubq %xmm2, %xmm2 +// CHECK: encoding: [0x8f,0xe9,0x78,0xd3,0xd2] + vphaddubq %xmm2, %xmm2 + +// vphaddubd +// CHECK: vphaddubd (%rax), %xmm5 +// CHECK: encoding: [0x8f,0xe9,0x78,0xd2,0x28] + vphaddubd (%rax), %xmm5 +// CHECK: vphaddubd %xmm5, %xmm7 +// CHECK: encoding: [0x8f,0xe9,0x78,0xd2,0xfd] + vphaddubd %xmm5, %xmm7 + +// vphadddq +// CHECK: vphadddq (%rdx), %xmm4 +// CHECK: encoding: [0x8f,0xe9,0x78,0xcb,0x22] + vphadddq (%rdx), %xmm4 +// CHECK: vphadddq %xmm4, %xmm5 +// CHECK: encoding: [0x8f,0xe9,0x78,0xcb,0xec] + vphadddq %xmm4, %xmm5 + +// vphaddbw +// CHECK: vphaddbw (%rcx,%rax), %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0xc1,0x0c,0x01] + vphaddbw (%rcx,%rax), %xmm1 +// CHECK: vphaddbw %xmm5, %xmm6 +// CHECK: encoding: [0x8f,0xe9,0x78,0xc1,0xf5] + vphaddbw %xmm5, %xmm6 + +// vphaddbq +// CHECK: vphaddbq (%rcx,%rax), %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0xc3,0x0c,0x01] + vphaddbq (%rcx,%rax), %xmm1 +// CHECK: vphaddbq %xmm2, %xmm0 +// CHECK: encoding: [0x8f,0xe9,0x78,0xc3,0xc2] + vphaddbq %xmm2, %xmm0 + +// vphaddbd +// CHECK: vphaddbd (%rcx,%rax), %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0xc2,0x0c,0x01] + vphaddbd (%rcx,%rax), %xmm1 +// CHECK: vphaddbd %xmm1, %xmm3 +// CHECK: encoding: [0x8f,0xe9,0x78,0xc2,0xd9] + vphaddbd %xmm1, %xmm3 + +// vfrczss +// CHECK: vfrczss (%rcx,%rax), %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0x82,0x0c,0x01] + vfrczss (%rcx,%rax), %xmm1 +// CHECK: vfrczss %xmm5, %xmm7 +// CHECK: encoding: [0x8f,0xe9,0x78,0x82,0xfd] + vfrczss %xmm5, %xmm7 + +// vfrczsd +// CHECK: vfrczsd (%rcx,%rax), %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0x83,0x0c,0x01] + vfrczsd (%rcx,%rax), %xmm1 +// CHECK: vfrczsd %xmm7, %xmm0 +// CHECK: encoding: [0x8f,0xe9,0x78,0x83,0xc7] + vfrczsd %xmm7, %xmm0 + +// vfrczps +// CHECK: vfrczps 4(%rax), %xmm3 +// CHECK: encoding: [0x8f,0xe9,0x78,0x80,0x58,0x04] + vfrczps 4(%rax), %xmm3 +// CHECK: vfrczps %xmm6, %xmm5 +// CHECK: encoding: [0x8f,0xe9,0x78,0x80,0xee] + vfrczps %xmm6, %xmm5 +// CHECK: vfrczps (%rcx), %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0x80,0x09] + vfrczps (%rcx), %xmm1 +// CHECK: vfrczps %ymm2, %ymm4 +// CHECK: encoding: [0x8f,0xe9,0x7c,0x80,0xe2] + vfrczps %ymm2, %ymm4 + +// vfrczpd +// CHECK: vfrczpd (%rcx,%rax), %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x78,0x81,0x0c,0x01] + vfrczpd (%rcx,%rax), %xmm1 +// CHECK: vfrczpd %xmm7, %xmm0 +// CHECK: encoding: [0x8f,0xe9,0x78,0x81,0xc7] + vfrczpd %xmm7, %xmm0 +// CHECK: vfrczpd (%rcx,%rax), %ymm2 +// CHECK: encoding: [0x8f,0xe9,0x7c,0x81,0x14,0x01] + vfrczpd (%rcx,%rax), %ymm2 +// CHECK: vfrczpd %ymm5, %ymm3 +// CHECK: encoding: [0x8f,0xe9,0x7c,0x81,0xdd] + vfrczpd %ymm5, %ymm3 + + + +////////////////////////// +// 3 operand instructions +///////////////////////// + +// vpshlw +// CHECK: vpshlw %xmm0, %xmm1, %xmm2 +// CHECK: encoding: [0x8f,0xe9,0x78,0x95,0xd1] + vpshlw %xmm0, %xmm1, %xmm2 +// CHECK: vpshlw (%rax), %xmm1, %xmm2 +// CHECK: encoding: [0x8f,0xe9,0xf0,0x95,0x10] + vpshlw (%rax), %xmm1, %xmm2 +// CHECK: vpshlw %xmm0, (%rax,%rcx), %xmm2 +// CHECK: encoding: [0x8f,0xe9,0x78,0x95,0x14,0x08] + vpshlw %xmm0, (%rax,%rcx), %xmm2 + +// vpshlq +// CHECK: vpshlq %xmm2, %xmm4, %xmm6 +// CHECK: encoding: [0x8f,0xe9,0x68,0x97,0xf4] + vpshlq %xmm2, %xmm4, %xmm6 +// CHECK: vpshlq (%rcx), %xmm2, %xmm1 +// CHECK: encoding: [0x8f,0xe9,0xe8,0x97,0x09] + vpshlq (%rcx), %xmm2, %xmm1 +// CHECK: vpshlq %xmm5, (%rdx,%rcx), %xmm6 +// CHECK: encoding: [0x8f,0xe9,0x50,0x97,0x34,0x0a] + vpshlq %xmm5, (%rdx,%rcx), %xmm6 + +// vpshld +// CHECK: vpshld %xmm7, %xmm5, %xmm3 +// CHECK: encoding: [0x8f,0xe9,0x40,0x96,0xdd] + vpshld %xmm7, %xmm5, %xmm3 +// CHECK: vpshld 4(%rax), %xmm3, %xmm3 +// CHECK: encoding: [0x8f,0xe9,0xe0,0x96,0x58,0x04] + vpshld 4(%rax), %xmm3, %xmm3 +// CHECK: vpshld %xmm1, (%rax,%rcx), %xmm5 +// CHECK: encoding: [0x8f,0xe9,0x70,0x96,0x2c,0x08] + vpshld %xmm1, (%rax,%rcx), %xmm5 + +// vpshlb +// CHECK: vpshlb %xmm1, %xmm2, %xmm3 +// CHECK: encoding: [0x8f,0xe9,0x70,0x94,0xda] + vpshlb %xmm1, %xmm2, %xmm3 +// CHECK: vpshlb (%rcx), %xmm0, %xmm7 +// CHECK: encoding: [0x8f,0xe9,0xf8,0x94,0x39] + vpshlb (%rcx), %xmm0, %xmm7 +// CHECK: vpshlb %xmm2, (%rax,%rdx), %xmm3 +// CHECK: encoding: [0x8f,0xe9,0x68,0x94,0x1c,0x10] + vpshlb %xmm2, (%rax,%rdx), %xmm3 + +// vpshaw +// CHECK: vpshaw %xmm7, %xmm5, %xmm3 +// CHECK: encoding: [0x8f,0xe9,0x40,0x99,0xdd] + vpshaw %xmm7, %xmm5, %xmm3 +// CHECK: vpshaw (%rax), %xmm2, %xmm1 +// CHECK: encoding: [0x8f,0xe9,0xe8,0x99,0x08] + vpshaw (%rax), %xmm2, %xmm1 +// CHECK: vpshaw %xmm0, 8(%rax,%rcx), %xmm3 +// CHECK: encoding: [0x8f,0xe9,0x78,0x99,0x5c,0x08,0x08] + vpshaw %xmm0, 8(%rax,%rcx), %xmm3 + +// vpshaq +// CHECK: vpshaq %xmm4, %xmm4, %xmm4 +// CHECK: encoding: [0x8f,0xe9,0x58,0x9b,0xe4] + vpshaq %xmm4, %xmm4, %xmm4 +// CHECK: vpshaq (%rcx), %xmm2, %xmm0 +// CHECK: encoding: [0x8f,0xe9,0xe8,0x9b,0x01] + vpshaq (%rcx), %xmm2, %xmm0 +// CHECK: vpshaq %xmm6, (%rax,%rcx), %xmm5 +// CHECK: encoding: [0x8f,0xe9,0x48,0x9b,0x2c,0x08] + vpshaq %xmm6, (%rax,%rcx), %xmm5 + +// vpshad +// CHECK: vpshad %xmm5, %xmm4, %xmm0 +// CHECK: encoding: [0x8f,0xe9,0x50,0x9a,0xc4] + vpshad %xmm5, %xmm4, %xmm0 +// CHECK: vpshad (%rax), %xmm2, %xmm5 +// CHECK: encoding: [0x8f,0xe9,0xe8,0x9a,0x28] + vpshad (%rax), %xmm2, %xmm5 +// CHECK: vpshad %xmm2, (%rax), %xmm5 +// CHECK: encoding: [0x8f,0xe9,0x68,0x9a,0x28] + vpshad %xmm2, (%rax), %xmm5 + +// vpshab +// CHECK: vpshab %xmm1, %xmm1, %xmm0 +// CHECK: encoding: [0x8f,0xe9,0x70,0x98,0xc1] + vpshab %xmm1, %xmm1, %xmm0 +// CHECK: vpshab (%rcx), %xmm4, %xmm0 +// CHECK: encoding: [0x8f,0xe9,0xd8,0x98,0x01] + vpshab (%rcx), %xmm4, %xmm0 +// CHECK: vpshab %xmm5, (%rcx), %xmm3 +// CHECK: encoding: [0x8f,0xe9,0x50,0x98,0x19] + vpshab %xmm5, (%rcx), %xmm3 + +// vprotw +// CHECK: vprotw (%rax), %xmm3, %xmm6 +// CHECK: encoding: [0x8f,0xe9,0xe0,0x91,0x30] + vprotw (%rax), %xmm3, %xmm6 +// CHECK: vprotw %xmm5, (%rax,%rcx), %xmm1 +// CHECK: encoding: [0x8f,0xe9,0x50,0x91,0x0c,0x08] + vprotw %xmm5, (%rax,%rcx), %xmm1 +// CHECK: vprotw %xmm0, %xmm1, %xmm2 +// CHECK: encoding: [0x8f,0xe9,0x78,0x91,0xd1] + vprotw %xmm0, %xmm1, %xmm2 +// CHECK: vprotw $42, (%rcx), %xmm1 +// CHECK: encoding: [0x8f,0xe8,0x78,0xc1,0x09,0x2a] + vprotw $42, (%rcx), %xmm1 +// CHECK: vprotw $41, (%rax), %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x78,0xc1,0x20,0x29] + vprotw $41, (%rax), %xmm4 +// CHECK: vprotw $40, %xmm1, %xmm3 +// CHECK: encoding: [0x8f,0xe8,0x78,0xc1,0xd9,0x28] + vprotw $40, %xmm1, %xmm3 + +// vprotq +// CHECK: vprotq (%rax), %xmm1, %xmm2 +// CHECK: encoding: [0x8f,0xe9,0xf0,0x93,0x10] + vprotq (%rax), %xmm1, %xmm2 +// CHECK: vprotq (%rax,%rcx), %xmm1, %xmm2 +// CHECK: encoding: [0x8f,0xe9,0xf0,0x93,0x14,0x08] + vprotq (%rax,%rcx), %xmm1, %xmm2 +// CHECK: vprotq %xmm0, %xmm1, %xmm2 +// CHECK: encoding: [0x8f,0xe9,0x78,0x93,0xd1] + vprotq %xmm0, %xmm1, %xmm2 +// CHECK: vprotq $42, (%rax), %xmm2 +// CHECK: encoding: [0x8f,0xe8,0x78,0xc3,0x10,0x2a] + vprotq $42, (%rax), %xmm2 +// CHECK: vprotq $42, (%rax,%rcx), %xmm2 +// CHECK: encoding: [0x8f,0xe8,0x78,0xc3,0x14,0x08,0x2a] + vprotq $42, (%rax,%rcx), %xmm2 +// CHECK: vprotq $42, %xmm1, %xmm2 +// CHECK: encoding: [0x8f,0xe8,0x78,0xc3,0xd1,0x2a] + vprotq $42, %xmm1, %xmm2 + +// vprotd +// CHECK: vprotd (%rax), %xmm0, %xmm3 +// CHECK: encoding: [0x8f,0xe9,0xf8,0x92,0x18] + vprotd (%rax), %xmm0, %xmm3 +// CHECK: vprotd %xmm2, (%rax,%rcx), %xmm4 +// CHECK: encoding: [0x8f,0xe9,0x68,0x92,0x24,0x08] + vprotd %xmm2, (%rax,%rcx), %xmm4 +// CHECK: vprotd %xmm5, %xmm3, %xmm2 +// CHECK: encoding: [0x8f,0xe9,0x50,0x92,0xd3] + vprotd %xmm5, %xmm3, %xmm2 +// CHECK: vprotd $43, (%rcx), %xmm6 +// CHECK: encoding: [0x8f,0xe8,0x78,0xc2,0x31,0x2b] + vprotd $43, (%rcx), %xmm6 +// CHECK: vprotd $44, (%rax,%rcx), %xmm7 +// CHECK: encoding: [0x8f,0xe8,0x78,0xc2,0x3c,0x08,0x2c] + vprotd $44, (%rax,%rcx), %xmm7 +// CHECK: vprotd $45, %xmm4, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x78,0xc2,0xe4,0x2d] + vprotd $45, %xmm4, %xmm4 + +// vprotb +// CHECK: vprotb (%rcx), %xmm2, %xmm5 +// CHECK: encoding: [0x8f,0xe9,0xe8,0x90,0x29] + vprotb (%rcx), %xmm2, %xmm5 +// CHECK: vprotb %xmm5, (%rax,%rcx), %xmm4 +// CHECK: encoding: [0x8f,0xe9,0x50,0x90,0x24,0x08] + vprotb %xmm5, (%rax,%rcx), %xmm4 +// CHECK: vprotb %xmm4, %xmm3, %xmm2 +// CHECK: encoding: [0x8f,0xe9,0x58,0x90,0xd3] + vprotb %xmm4, %xmm3, %xmm2 +// CHECK: vprotb $46, (%rax), %xmm3 +// CHECK: encoding: [0x8f,0xe8,0x78,0xc0,0x18,0x2e] + vprotb $46, (%rax), %xmm3 +// CHECK: vprotb $47, (%rax,%rcx), %xmm7 +// CHECK: encoding: [0x8f,0xe8,0x78,0xc0,0x3c,0x08,0x2f] + vprotb $47, (%rax,%rcx), %xmm7 +// CHECK: vprotb $48, %xmm5, %xmm5 +// CHECK: encoding: [0x8f,0xe8,0x78,0xc0,0xed,0x30] + vprotb $48, %xmm5, %xmm5 + +////////////////////////// +// 4 operand instructions +///////////////////////// + +// vpmadcswd +// CHECK: vpmadcswd %xmm1, %xmm2, %xmm3, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x60,0xb6,0xe2,0x10] + vpmadcswd %xmm1, %xmm2, %xmm3, %xmm4 +// CHECK: vpmadcswd %xmm1, (%rax), %xmm3, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x60,0xb6,0x20,0x10] + vpmadcswd %xmm1, (%rax), %xmm3, %xmm4 + +// vpmadcsswd +// CHECK: vpmadcsswd %xmm1, %xmm4, %xmm6, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x48,0xa6,0xe4,0x10] + vpmadcsswd %xmm1, %xmm4, %xmm6, %xmm4 +// CHECK: vpmadcsswd %xmm1, (%rax,%rcx), %xmm3, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x60,0xa6,0x24,0x08,0x10] + vpmadcsswd %xmm1, (%rax,%rcx), %xmm3, %xmm4 + +// vpmacsww +// CHECK: vpmacsww %xmm0, %xmm2, %xmm5, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x50,0x95,0xe2,0x00] + vpmacsww %xmm0, %xmm2, %xmm5, %xmm4 +// CHECK: vpmacsww %xmm1, (%rax), %xmm6, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x48,0x95,0x20,0x10] + vpmacsww %xmm1, (%rax), %xmm6, %xmm4 + +// vpmacswd +// CHECK: vpmacswd %xmm4, %xmm5, %xmm6, %xmm7 +// CHECK: encoding: [0x8f,0xe8,0x48,0x96,0xfd,0x40] + vpmacswd %xmm4, %xmm5, %xmm6, %xmm7 +// CHECK: vpmacswd %xmm0, (%rax), %xmm1, %xmm2 +// CHECK: encoding: [0x8f,0xe8,0x70,0x96,0x10,0x00] + vpmacswd %xmm0, (%rax), %xmm1, %xmm2 + +// vpmacssww +// CHECK: vpmacssww %xmm4, %xmm3, %xmm2, %xmm1 +// CHECK: encoding: [0x8f,0xe8,0x68,0x85,0xcb,0x40] + vpmacssww %xmm4, %xmm3, %xmm2, %xmm1 +// CHECK: vpmacssww %xmm6, (%rcx), %xmm7, %xmm7 +// CHECK: encoding: [0x8f,0xe8,0x40,0x85,0x39,0x60] + vpmacssww %xmm6, (%rcx), %xmm7, %xmm7 + +// vpmacsswd +// CHECK: vpmacsswd %xmm4, %xmm2, %xmm4, %xmm2 +// CHECK: encoding: [0x8f,0xe8,0x58,0x86,0xd2,0x40] + vpmacsswd %xmm4, %xmm2, %xmm4, %xmm2 +// CHECK: vpmacsswd %xmm0, 8(%rax,%rcx), %xmm1, %xmm0 +// CHECK: encoding: [0x8f,0xe8,0x70,0x86,0x44,0x08,0x08,0x00] + vpmacsswd %xmm0, 8(%rax,%rcx), %xmm1, %xmm0 + +// vpmacssdql +// CHECK: vpmacssdql %xmm1, %xmm1, %xmm2, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x68,0x87,0xe1,0x10] + vpmacssdql %xmm1, %xmm1, %xmm2, %xmm4 +// CHECK: vpmacssdql %xmm7, (%rcx), %xmm6, %xmm5 +// CHECK: encoding: [0x8f,0xe8,0x48,0x87,0x29,0x70] + vpmacssdql %xmm7, (%rcx), %xmm6, %xmm5 + +// vpmacssdqh +// CHECK: vpmacssdqh %xmm3, %xmm2, %xmm0, %xmm1 +// CHECK: encoding: [0x8f,0xe8,0x78,0x8f,0xca,0x30] + vpmacssdqh %xmm3, %xmm2, %xmm0, %xmm1 +// CHECK: vpmacssdqh %xmm7, (%rax,%rcx), %xmm2, %xmm3 +// CHECK: encoding: [0x8f,0xe8,0x68,0x8f,0x1c,0x08,0x70] + vpmacssdqh %xmm7, (%rax,%rcx), %xmm2, %xmm3 + +// vpmacssdd +// CHECK: vpmacssdd %xmm2, %xmm2, %xmm3, %xmm5 +// CHECK: encoding: [0x8f,0xe8,0x60,0x8e,0xea,0x20] + vpmacssdd %xmm2, %xmm2, %xmm3, %xmm5 +// CHECK: vpmacssdd %xmm4, (%rax), %xmm1, %xmm2 +// CHECK: encoding: [0x8f,0xe8,0x70,0x8e,0x10,0x40] + vpmacssdd %xmm4, (%rax), %xmm1, %xmm2 + +// vpmacsdql +// CHECK: vpmacsdql %xmm3, %xmm0, %xmm6, %xmm7 +// CHECK: encoding: [0x8f,0xe8,0x48,0x97,0xf8,0x30] + vpmacsdql %xmm3, %xmm0, %xmm6, %xmm7 +// CHECK: vpmacsdql %xmm5, 8(%rcx), %xmm3, %xmm5 +// CHECK: encoding: [0x8f,0xe8,0x60,0x97,0x69,0x08,0x50] + vpmacsdql %xmm5, 8(%rcx), %xmm3, %xmm5 + +// vpmacsdqh +// CHECK: vpmacsdqh %xmm7, %xmm5, %xmm3, %xmm2 +// CHECK: encoding: [0x8f,0xe8,0x60,0x9f,0xd5,0x70] + vpmacsdqh %xmm7, %xmm5, %xmm3, %xmm2 +// CHECK: vpmacsdqh %xmm5, 4(%rax), %xmm2, %xmm0 +// CHECK: encoding: [0x8f,0xe8,0x68,0x9f,0x40,0x04,0x50] + vpmacsdqh %xmm5, 4(%rax), %xmm2, %xmm0 + +// vpmacsdd +// CHECK: vpmacsdd %xmm4, %xmm6, %xmm4, %xmm2 +// CHECK: encoding: [0x8f,0xe8,0x58,0x9e,0xd6,0x40] + vpmacsdd %xmm4, %xmm6, %xmm4, %xmm2 +// CHECK: vpmacsdd %xmm4, (%rax,%rcx), %xmm4, %xmm3 +// CHECK: encoding: [0x8f,0xe8,0x58,0x9e,0x1c,0x08,0x40] + vpmacsdd %xmm4, (%rax,%rcx), %xmm4, %xmm3 + +// vpcomw +// CHECK: vpcomw $42, %xmm2, %xmm3, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x60,0xcd,0xe2,0x2a] + vpcomw $42, %xmm2, %xmm3, %xmm4 +// CHECK: vpcomw $42, (%rax), %xmm3, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x60,0xcd,0x20,0x2a] + vpcomw $42, (%rax), %xmm3, %xmm4 + +// vpcomuw +// CHECK: vpcomuw $43, %xmm1, %xmm3, %xmm5 +// CHECK: encoding: [0x8f,0xe8,0x60,0xed,0xe9,0x2b] + vpcomuw $43, %xmm1, %xmm3, %xmm5 +// CHECK: vpcomuw $44, (%rax,%rcx), %xmm0, %xmm6 +// CHECK: encoding: [0x8f,0xe8,0x78,0xed,0x34,0x08,0x2c] + vpcomuw $44, (%rax,%rcx), %xmm0, %xmm6 + +// vpcomuq +// CHECK: vpcomuq $45, %xmm3, %xmm3, %xmm7 +// CHECK: encoding: [0x8f,0xe8,0x60,0xef,0xfb,0x2d] + vpcomuq $45, %xmm3, %xmm3, %xmm7 +// CHECK: vpcomuq $46, (%rax), %xmm3, %xmm1 +// CHECK: encoding: [0x8f,0xe8,0x60,0xef,0x08,0x2e] + vpcomuq $46, (%rax), %xmm3, %xmm1 + +// vpcomud +// CHECK: vpcomud $47, %xmm0, %xmm1, %xmm2 +// CHECK: encoding: [0x8f,0xe8,0x70,0xee,0xd0,0x2f] + vpcomud $47, %xmm0, %xmm1, %xmm2 +// CHECK: vpcomud $48, 4(%rax), %xmm6, %xmm3 +// CHECK: encoding: [0x8f,0xe8,0x48,0xee,0x58,0x04,0x30] + vpcomud $48, 4(%rax), %xmm6, %xmm3 + +// vpcomub +// CHECK: vpcomub $49, %xmm3, %xmm4, %xmm5 +// CHECK: encoding: [0x8f,0xe8,0x58,0xec,0xeb,0x31] + vpcomub $49, %xmm3, %xmm4, %xmm5 +// CHECK: vpcomub $50, (%rcx), %xmm6, %xmm2 +// CHECK: encoding: [0x8f,0xe8,0x48,0xec,0x11,0x32] + vpcomub $50, (%rcx), %xmm6, %xmm2 + +// vpcomq +// CHECK: vpcomq $51, %xmm3, %xmm0, %xmm5 +// CHECK: encoding: [0x8f,0xe8,0x78,0xcf,0xeb,0x33] + vpcomq $51, %xmm3, %xmm0, %xmm5 +// CHECK: vpcomq $52, (%rax), %xmm1, %xmm7 +// CHECK: encoding: [0x8f,0xe8,0x70,0xcf,0x38,0x34] + vpcomq $52, (%rax), %xmm1, %xmm7 + +// vpcomd +// CHECK: vpcomd $53, %xmm3, %xmm3, %xmm0 +// CHECK: encoding: [0x8f,0xe8,0x60,0xce,0xc3,0x35] + vpcomd $53, %xmm3, %xmm3, %xmm0 +// CHECK: vpcomd $54, (%rcx), %xmm2, %xmm2 +// CHECK: encoding: [0x8f,0xe8,0x68,0xce,0x11,0x36] + vpcomd $54, (%rcx), %xmm2, %xmm2 + +// vpcomb +// CHECK: vpcomb $55, %xmm6, %xmm4, %xmm2 +// CHECK: encoding: [0x8f,0xe8,0x58,0xcc,0xd6,0x37] + vpcomb $55, %xmm6, %xmm4, %xmm2 +// CHECK: vpcomb $56, 8(%rax), %xmm3, %xmm2 +// CHECK: encoding: [0x8f,0xe8,0x60,0xcc,0x50,0x08,0x38] + vpcomb $56, 8(%rax), %xmm3, %xmm2 + + +// vpperm +// CHECK: vpperm %xmm1, %xmm2, %xmm3, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x60,0xa3,0xe2,0x10] + vpperm %xmm1, %xmm2, %xmm3, %xmm4 +// CHECK: vpperm (%rax), %xmm2, %xmm3, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0xe0,0xa3,0x20,0x20] + vpperm (%rax), %xmm2, %xmm3, %xmm4 +// CHECK: vpperm %xmm1, (%rax), %xmm3, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x60,0xa3,0x20,0x10] + vpperm %xmm1, (%rax), %xmm3, %xmm4 + +// vpcmov +// CHECK: vpcmov %xmm1, %xmm2, %xmm3, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x60,0xa2,0xe2,0x10] + vpcmov %xmm1, %xmm2, %xmm3, %xmm4 +// CHECK: vpcmov (%rax), %xmm2, %xmm3, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0xe0,0xa2,0x20,0x20] + vpcmov (%rax), %xmm2, %xmm3, %xmm4 +// CHECK: vpcmov %xmm1, (%rax), %xmm3, %xmm4 +// CHECK: encoding: [0x8f,0xe8,0x60,0xa2,0x20,0x10] + vpcmov %xmm1, (%rax), %xmm3, %xmm4 +// CHECK: vpcmov %ymm1, %ymm2, %ymm3, %ymm4 +// CHECK: encoding: [0x8f,0xe8,0x64,0xa2,0xe2,0x10] + vpcmov %ymm1, %ymm2, %ymm3, %ymm4 +// CHECK: vpcmov (%rax), %ymm2, %ymm3, %ymm4 +// CHECK: encoding: [0x8f,0xe8,0xe4,0xa2,0x20,0x20] + vpcmov (%rax), %ymm2, %ymm3, %ymm4 +// CHECK: vpcmov %ymm1, (%rax), %ymm3, %ymm4 +// CHECK: encoding: [0x8f,0xe8,0x64,0xa2,0x20,0x10] + vpcmov %ymm1, (%rax), %ymm3, %ymm4 + + +////////////////////////// +// 5 operand instructions +///////////////////////// +// vpermil2pd +// CHECK: vpermil2pd $1, %xmm5, %xmm2, %xmm1, %xmm7 +// CHECK: encoding: [0xc4,0xe3,0x71,0x49,0xfa,0x51] + vpermil2pd $1, %xmm5, %xmm2, %xmm1, %xmm7 +// CHECK: vpermil2pd $2, (%rax), %xmm3, %xmm3, %xmm4 +// CHECK: encoding: [0xc4,0xe3,0xe1,0x49,0x20,0x32] + vpermil2pd $2, (%rax), %xmm3, %xmm3, %xmm4 +// CHECK: vpermil2pd $3, 8(%rax), %ymm0, %ymm4, %ymm6 +// CHECK: encoding: [0xc4,0xe3,0xdd,0x49,0x70,0x08,0x03] + vpermil2pd $3, 8(%rax), %ymm0, %ymm4, %ymm6 +// CHECK: vpermil2pd $0, %xmm3, (%rax,%rcx), %xmm1, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0x71,0x49,0x04,0x08,0x30] + vpermil2pd $0, %xmm3, (%rax,%rcx), %xmm1, %xmm0 +// CHECK: vpermil2pd $1, %ymm1, %ymm2, %ymm3, %ymm4 +// CHECK: encoding: [0xc4,0xe3,0x65,0x49,0xe2,0x11] + vpermil2pd $1, %ymm1, %ymm2, %ymm3, %ymm4 +// CHECK: vpermil2pd $2, %ymm1, (%rax), %ymm3, %ymm4 +// CHECK: encoding: [0xc4,0xe3,0x65,0x49,0x20,0x12] + vpermil2pd $2, %ymm1, (%rax), %ymm3, %ymm4 + +// vpermil2ps +// CHECK: vpermil2ps $0, %xmm4, %xmm3, %xmm2, %xmm1 +// CHECK: encoding: [0xc4,0xe3,0x69,0x48,0xcb,0x40] + vpermil2ps $0, %xmm4, %xmm3, %xmm2, %xmm1 +// CHECK: vpermil2ps $1, 4(%rax), %xmm2, %xmm3, %xmm0 +// CHECK: encoding: [0xc4,0xe3,0xe1,0x48,0x40,0x04,0x21] + vpermil2ps $1, 4(%rax), %xmm2, %xmm3, %xmm0 +// CHECK: vpermil2ps $2, (%rax), %ymm1, %ymm5, %ymm6 +// CHECK: encoding: [0xc4,0xe3,0xd5,0x48,0x30,0x12] + vpermil2ps $2, (%rax), %ymm1, %ymm5, %ymm6 +// CHECK: vpermil2ps $3, %xmm1, (%rax), %xmm3, %xmm4 +// CHECK: encoding: [0xc4,0xe3,0x61,0x48,0x20,0x13] + vpermil2ps $3, %xmm1, (%rax), %xmm3, %xmm4 +// CHECK: vpermil2ps $0, %ymm4, %ymm4, %ymm2, %ymm2 +// CHECK: encoding: [0xc4,0xe3,0x6d,0x48,0xd4,0x40] + vpermil2ps $0, %ymm4, %ymm4, %ymm2, %ymm2 +// CHECK: vpermil2pd $1, %ymm1, 4(%rax), %ymm1, %ymm0 +// CHECK: encoding: [0xc4,0xe3,0x75,0x49,0x40,0x04,0x11] + vpermil2pd $1, %ymm1, 4(%rax), %ymm1, %ymm0 + diff --git a/test/MC/X86/x86_errors.s b/test/MC/X86/x86_errors.s index e0a2c676..f161e06 100644 --- a/test/MC/X86/x86_errors.s +++ b/test/MC/X86/x86_errors.s @@ -15,3 +15,16 @@ addl $0, 0(%rax) # 8 "test.s" movi $8,%eax + +movl 0(%rax), 0(%edx) // error: invalid operand for instruction + +// 32: error: instruction requires a CPU feature not currently enabled +sysexitq + +// rdar://10710167 +// 64: error: expected scale expression +lea (%rsp, %rbp, $4), %rax + +// rdar://10423777 +// 64: error: index register is 32-bit, but base register is 64-bit +movq (%rsi,%ecx),%xmm0 |