llvm/llvm/test/MC/Disassembler/X86/apx/rex2-format.txt

# RUN: llvm-mc -triple x86_64 -disassemble %s | FileCheck %s --check-prefix=ATT
# RUN: llvm-mc -triple x86_64 -disassemble -output-asm-variant=1 %s | FileCheck %s --check-prefix=INTEL

## AddRegFrm

# ATT:   movl	$1, %r16d
# INTEL: mov	r16d, 1
0xd5,0x10,0xb8,0x01,0x00,0x00,0x00

## MRMSrcReg

# ATT:   movslq	%r16d, %rax
# INTEL: movsxd	rax, r16d
0xd5,0x18,0x63,0xc0

# ATT:   movslq	%eax, %r16
# INTEL: movsxd	r16, eax
0xd5,0x48,0x63,0xc0

# ATT:   movslq	%r16d, %r17
# INTEL: movsxd	r17, r16d
0xd5,0x58,0x63,0xc8

# ATT-NOT: rep
# ATT:   popcntl %r16d, %r17d
# INTEL-NOT: rep
# INTEL: popcnt r17d, r16d
0xf3,0xd5,0xd0,0xb8,0xc8

## MRMSrcRegCC

# ATT:   cmovll	%r16d, %eax
# INTEL: cmovl	eax, r16d
0xd5,0x90,0x4c,0xc0

# ATT:   cmovll	%eax, %r16d
# INTEL: cmovl	r16d, eax
0xd5,0xc0,0x4c,0xc0

# ATT:   cmovll	%r16d, %r17d
# INTEL: cmovl	r17d, r16d
0xd5,0xd0,0x4c,0xc8

## MRMSrcMem

# ATT:   imull	(%r16,%rax), %ebx
# INTEL: imul	ebx, dword ptr [r16 + rax]
0xd5,0x90,0xaf,0x1c,0x00

# ATT:   imull	(%rax,%r16), %ebx
# INTEL: imul	ebx, dword ptr [rax + r16]
0xd5,0xa0,0xaf,0x1c,0x00

# ATT:   imull	(%rax,%rbx), %r16d
# INTEL: imul	r16d, dword ptr [rax + rbx]
0xd5,0xc0,0xaf,0x04,0x18

# ATT:   imull	(%r16,%r17), %eax
# INTEL: imul	eax, dword ptr [r16 + r17]
0xd5,0xb0,0xaf,0x04,0x08

# ATT:   imull	(%rax,%r16), %r17d
# INTEL: imul	r17d, dword ptr [rax + r16]
0xd5,0xe0,0xaf,0x0c,0x00

# ATT:   imull	(%r16,%rax), %r17d
# INTEL: imul	r17d, dword ptr [r16 + rax]
0xd5,0xd0,0xaf,0x0c,0x00

# ATT:   imull	(%r16,%r17), %r18d
# INTEL: imul	r18d, dword ptr [r16 + r17]
0xd5,0xf0,0xaf,0x14,0x08

## MRMSrcMemCC

# ATT:   cmovll	(%r16,%rax), %ebx
# INTEL: cmovl	ebx, dword ptr [r16 + rax]
0xd5,0x90,0x4c,0x1c,0x00

# ATT:   cmovll	(%rax,%r16), %ebx
# INTEL: cmovl	ebx, dword ptr [rax + r16]
0xd5,0xa0,0x4c,0x1c,0x00

# ATT:   cmovll	(%rax,%rbx), %r16d
# INTEL: cmovl	r16d, dword ptr [rax + rbx]
0xd5,0xc0,0x4c,0x04,0x18

# ATT:   cmovll	(%r16,%r17), %eax
# INTEL: cmovl	eax, dword ptr [r16 + r17]
0xd5,0xb0,0x4c,0x04,0x08

# ATT:   cmovll	(%rax,%r16), %r17d
# INTEL: cmovl	r17d, dword ptr [rax + r16]
0xd5,0xe0,0x4c,0x0c,0x00

# ATT:   cmovll	(%r16,%rax), %r17d
# INTEL: cmovl	r17d, dword ptr [r16 + rax]
0xd5,0xd0,0x4c,0x0c,0x00

# ATT:   cmovll	(%r16,%r17), %r18d
# INTEL: cmovl	r18d, dword ptr [r16 + r17]
0xd5,0xf0,0x4c,0x14,0x08

## MRMDestReg

# ATT:   movl	%eax, %r16d
# INTEL: mov	r16d, eax
0xd5,0x10,0x89,0xc0

# ATT:   movl	%r16d, %eax
# INTEL: mov	eax, r16d
0xd5,0x40,0x89,0xc0

# ATT:   movl	%r16d, %r17d
# INTEL: mov	r17d, r16d
0xd5,0x50,0x89,0xc1

## MRMDestMem

# ATT:   movl	%ebx, (%r16,%rax)
# INTEL: mov	dword ptr [r16 + rax], ebx
0xd5,0x10,0x89,0x1c,0x00

# ATT:   movl	%ebx, (%rax,%r16)
# INTEL: mov	dword ptr [rax + r16], ebx
0xd5,0x20,0x89,0x1c,0x00

# ATT:   movl	%r16d, (%rax,%rbx)
# INTEL: mov	dword ptr [rax + rbx], r16d
0xd5,0x40,0x89,0x04,0x18

# ATT:   movl	%eax, (%r16,%r17)
# INTEL: mov	dword ptr [r16 + r17], eax
0xd5,0x30,0x89,0x04,0x08

# ATT:   movl	%r17d, (%rax,%r16)
# INTEL: mov	dword ptr [rax + r16], r17d
0xd5,0x60,0x89,0x0c,0x00

# ATT:   movl	%r17d, (%r16,%rax)
# INTEL: mov	dword ptr [r16 + rax], r17d
0xd5,0x50,0x89,0x0c,0x00

# ATT:   movl	%r18d, (%r16,%r17)
# INTEL: mov	dword ptr [r16 + r17], r18d
0xd5,0x70,0x89,0x14,0x08

# ATT:   movb    %bpl, (%r16,%r14)
# INTEL: mov    byte ptr [r16 + r14], bpl
0xd5,0x12,0x88,0x2c,0x30

## MRMXmCC

# ATT:   sete	(%rax,%r16)
# INTEL: sete	byte ptr [rax + r16]
0xd5,0xa0,0x94,0x04,0x00

# ATT:   sete	(%r16,%rax)
# INTEL: sete	byte ptr [r16 + rax]
0xd5,0x90,0x94,0x04,0x00

# ATT:   sete	(%r16,%r17)
# INTEL: sete	byte ptr [r16 + r17]
0xd5,0xb0,0x94,0x04,0x08

## MRMXm

# ATT:   nopl	(%rax,%r16)
# INTEL: nop	dword ptr [rax + r16]
0xd5,0xa0,0x1f,0x04,0x00

# ATT:   nopl	(%r16,%rax)
# INTEL: nop	dword ptr [r16 + rax]
0xd5,0x90,0x1f,0x04,0x00

# ATT:   nopl	(%r16,%r17)
# INTEL: nop	dword ptr [r16 + r17]
0xd5,0xb0,0x1f,0x04,0x08

## MRM0m

# ATT:   incl	(%rax,%r16)
# INTEL: inc	dword ptr [rax + r16]
0xd5,0x20,0xff,0x04,0x00

# ATT:   incl	(%r16,%rax)
# INTEL: inc	dword ptr [r16 + rax]
0xd5,0x10,0xff,0x04,0x00

# ATT:   incl	(%r16,%r17)
# INTEL: inc	dword ptr [r16 + r17]
0xd5,0x30,0xff,0x04,0x08

## MRM1m

# ATT:   decl	(%rax,%r16)
# INTEL: dec	dword ptr [rax + r16]
0xd5,0x20,0xff,0x0c,0x00

# ATT:   decl	(%r16,%rax)
# INTEL: dec	dword ptr [r16 + rax]
0xd5,0x10,0xff,0x0c,0x00

# ATT:   decl	(%r16,%r17)
# INTEL: dec	dword ptr [r16 + r17]
0xd5,0x30,0xff,0x0c,0x08

## MRM2m

# ATT:   notl	(%rax,%r16)
# INTEL: not	dword ptr [rax + r16]
0xd5,0x20,0xf7,0x14,0x00

# ATT:   notl	(%r16,%rax)
# INTEL: not	dword ptr [r16 + rax]
0xd5,0x10,0xf7,0x14,0x00

# ATT:   notl	(%r16,%r17)
# INTEL: not	dword ptr [r16 + r17]
0xd5,0x30,0xf7,0x14,0x08

## MRM3m

# ATT:   negl	(%rax,%r16)
# INTEL: neg	dword ptr [rax + r16]
0xd5,0x20,0xf7,0x1c,0x00

# ATT:   negl	(%r16,%rax)
# INTEL: neg	dword ptr [r16 + rax]
0xd5,0x10,0xf7,0x1c,0x00

# ATT:   negl	(%r16,%r17)
# INTEL: neg	dword ptr [r16 + r17]
0xd5,0x30,0xf7,0x1c,0x08

## MRM4m

# ATT:   mull	(%rax,%r16)
# INTEL: mul	dword ptr [rax + r16]
0xd5,0x20,0xf7,0x24,0x00

# ATT:   mull	(%r16,%rax)
# INTEL: mul	dword ptr [r16 + rax]
0xd5,0x10,0xf7,0x24,0x00

# ATT:   mull	(%r16,%r17)
# INTEL: mul	dword ptr [r16 + r17]
0xd5,0x30,0xf7,0x24,0x08

## MRM5m

# ATT:   imull	(%rax,%r16)
# INTEL: imul	dword ptr [rax + r16]
0xd5,0x20,0xf7,0x2c,0x00

# ATT:   imull	(%r16,%rax)
# INTEL: imul	dword ptr [r16 + rax]
0xd5,0x10,0xf7,0x2c,0x00

# ATT:   imull	(%r16,%r17)
# INTEL: imul	dword ptr [r16 + r17]
0xd5,0x30,0xf7,0x2c,0x08

## MRM6m

# ATT:   divl	(%rax,%r16)
# INTEL: div	dword ptr [rax + r16]
0xd5,0x20,0xf7,0x34,0x00

# ATT:   divl	(%r16,%rax)
# INTEL: div	dword ptr [r16 + rax]
0xd5,0x10,0xf7,0x34,0x00

# ATT:   divl	(%r16,%r17)
# INTEL: div	dword ptr [r16 + r17]
0xd5,0x30,0xf7,0x34,0x08

## MRM7m

# ATT:   idivl	(%rax,%r16)
# INTEL: idiv	dword ptr [rax + r16]
0xd5,0x20,0xf7,0x3c,0x00

# ATT:   idivl	(%r16,%rax)
# INTEL: idiv	dword ptr [r16 + rax]
0xd5,0x10,0xf7,0x3c,0x00

# ATT:   idivl	(%r16,%r17)
# INTEL: idiv	dword ptr [r16 + r17]
0xd5,0x30,0xf7,0x3c,0x08

## MRMXrCC

# ATT:   sete	%r16b
# INTEL: sete	r16b
0xd5,0x90,0x94,0xc0

## MRMXr

# ATT:   nopl	%r16d
# INTEL: nop	r16d
0xd5,0x90,0x1f,0xc0

## MRM0r

# ATT:   incl	%r16d
# INTEL: inc	r16d
0xd5,0x10,0xff,0xc0

## MRM1r

# ATT:   decl	%r16d
# INTEL: dec	r16d
0xd5,0x10,0xff,0xc8

## MRM2r

# ATT:   notl	%r16d
# INTEL: not	r16d
0xd5,0x10,0xf7,0xd0

## MRM3r

# ATT:   negl	%r16d
# INTEL: neg	r16d
0xd5,0x10,0xf7,0xd8

## MRM4r

# ATT:   mull	%r16d
# INTEL: mul	r16d
0xd5,0x10,0xf7,0xe0

## MRM5r

# ATT:   imull	%r16d
# INTEL: imul	r16d
0xd5,0x10,0xf7,0xe8

## MRM6r

# ATT:   divl	%r16d
# INTEL: div	r16d
0xd5,0x10,0xf7,0xf0

## MRM7r

# ATT:   idivl	%r16d
# INTEL: idiv	r16d
0xd5,0x10,0xf7,0xf8