# 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