# 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

## add

# ATT:   {evex}	addb	%r17b, %r16b
# INTEL: {evex}	add	r16b, r17b
0x62,0xec,0x7c,0x08,0x02,0xc1

# ATT:   {evex}	addw	%r17w, %r16w
# INTEL: {evex}	add	r16w, r17w
0x62,0xec,0x7d,0x08,0x03,0xc1

# ATT:   {evex}	addl	%r17d, %r16d
# INTEL: {evex}	add	r16d, r17d
0x62,0xec,0x7c,0x08,0x03,0xc1

# ATT:   {evex}	addq	%r17, %r16
# INTEL: {evex}	add	r16, r17
0x62,0xec,0xfc,0x08,0x03,0xc1

# ATT:   addb	%r17b, %r16b, %r18b
# INTEL: add	r18b, r16b, r17b
0x62,0xec,0x6c,0x10,0x02,0xc1

# ATT:   addw	%r17w, %r16w, %r18w
# INTEL: add	r18w, r16w, r17w
0x62,0xec,0x6d,0x10,0x03,0xc1

# ATT:   addl	%r17d, %r16d, %r18d
# INTEL: add	r18d, r16d, r17d
0x62,0xec,0x6c,0x10,0x03,0xc1

# ATT:   addq	%r17, %r16, %r18
# INTEL: add	r18, r16, r17
0x62,0xec,0xec,0x10,0x03,0xc1

# ATT:   {nf}	addb	%r17b, %r16b
# INTEL: {nf}	add	r16b, r17b
0x62,0xec,0x7c,0x0c,0x02,0xc1

# ATT:   {nf}	addw	%r17w, %r16w
# INTEL: {nf}	add	r16w, r17w
0x62,0xec,0x7d,0x0c,0x03,0xc1

# ATT:   {nf}	addl	%r17d, %r16d
# INTEL: {nf}	add	r16d, r17d
0x62,0xec,0x7c,0x0c,0x03,0xc1

# ATT:   {nf}	addq	%r17, %r16
# INTEL: {nf}	add	r16, r17
0x62,0xec,0xfc,0x0c,0x03,0xc1

# ATT:   {nf}	addb	%r17b, %r16b, %r18b
# INTEL: {nf}	add	r18b, r16b, r17b
0x62,0xec,0x6c,0x14,0x02,0xc1

# ATT:   {nf}	addw	%r17w, %r16w, %r18w
# INTEL: {nf}	add	r18w, r16w, r17w
0x62,0xec,0x6d,0x14,0x03,0xc1

# ATT:   {nf}	addl	%r17d, %r16d, %r18d
# INTEL: {nf}	add	r18d, r16d, r17d
0x62,0xec,0x6c,0x14,0x03,0xc1

# ATT:   {nf}	addq	%r17, %r16, %r18
# INTEL: {nf}	add	r18, r16, r17
0x62,0xec,0xec,0x14,0x03,0xc1

## sub

# ATT:   {evex}	subb	%r17b, %r16b
# INTEL: {evex}	sub	r16b, r17b
0x62,0xec,0x7c,0x08,0x2a,0xc1

# ATT:   {evex}	subw	%r17w, %r16w
# INTEL: {evex}	sub	r16w, r17w
0x62,0xec,0x7d,0x08,0x2b,0xc1

# ATT:   {evex}	subl	%r17d, %r16d
# INTEL: {evex}	sub	r16d, r17d
0x62,0xec,0x7c,0x08,0x2b,0xc1

# ATT:   {evex}	subq	%r17, %r16
# INTEL: {evex}	sub	r16, r17
0x62,0xec,0xfc,0x08,0x2b,0xc1

# ATT:   subb	%r17b, %r16b, %r18b
# INTEL: sub	r18b, r16b, r17b
0x62,0xec,0x6c,0x10,0x2a,0xc1

# ATT:   subw	%r17w, %r16w, %r18w
# INTEL: sub	r18w, r16w, r17w
0x62,0xec,0x6d,0x10,0x2b,0xc1

# ATT:   subl	%r17d, %r16d, %r18d
# INTEL: sub	r18d, r16d, r17d
0x62,0xec,0x6c,0x10,0x2b,0xc1

# ATT:   subq	%r17, %r16, %r18
# INTEL: sub	r18, r16, r17
0x62,0xec,0xec,0x10,0x2b,0xc1

# ATT:   {nf}	subb	%r17b, %r16b
# INTEL: {nf}	sub	r16b, r17b
0x62,0xec,0x7c,0x0c,0x2a,0xc1

# ATT:   {nf}	subw	%r17w, %r16w
# INTEL: {nf}	sub	r16w, r17w
0x62,0xec,0x7d,0x0c,0x2b,0xc1

# ATT:   {nf}	subl	%r17d, %r16d
# INTEL: {nf}	sub	r16d, r17d
0x62,0xec,0x7c,0x0c,0x2b,0xc1

# ATT:   {nf}	subq	%r17, %r16
# INTEL: {nf}	sub	r16, r17
0x62,0xec,0xfc,0x0c,0x2b,0xc1

# ATT:   {nf}	subb	%r17b, %r16b, %r18b
# INTEL: {nf}	sub	r18b, r16b, r17b
0x62,0xec,0x6c,0x14,0x2a,0xc1

# ATT:   {nf}	subw	%r17w, %r16w, %r18w
# INTEL: {nf}	sub	r18w, r16w, r17w
0x62,0xec,0x6d,0x14,0x2b,0xc1

# ATT:   {nf}	subl	%r17d, %r16d, %r18d
# INTEL: {nf}	sub	r18d, r16d, r17d
0x62,0xec,0x6c,0x14,0x2b,0xc1

# ATT:   {nf}	subq	%r17, %r16, %r18
# INTEL: {nf}	sub	r18, r16, r17
0x62,0xec,0xec,0x14,0x2b,0xc1

## and

# ATT:   {evex}	andb	%r17b, %r16b
# INTEL: {evex}	and	r16b, r17b
0x62,0xec,0x7c,0x08,0x22,0xc1

# ATT:   {evex}	andw	%r17w, %r16w
# INTEL: {evex}	and	r16w, r17w
0x62,0xec,0x7d,0x08,0x23,0xc1

# ATT:   {evex}	andl	%r17d, %r16d
# INTEL: {evex}	and	r16d, r17d
0x62,0xec,0x7c,0x08,0x23,0xc1

# ATT:   {evex}	andq	%r17, %r16
# INTEL: {evex}	and	r16, r17
0x62,0xec,0xfc,0x08,0x23,0xc1

# ATT:   andb	%r17b, %r16b, %r18b
# INTEL: and	r18b, r16b, r17b
0x62,0xec,0x6c,0x10,0x22,0xc1

# ATT:   andw	%r17w, %r16w, %r18w
# INTEL: and	r18w, r16w, r17w
0x62,0xec,0x6d,0x10,0x23,0xc1

# ATT:   andl	%r17d, %r16d, %r18d
# INTEL: and	r18d, r16d, r17d
0x62,0xec,0x6c,0x10,0x23,0xc1

# ATT:   andq	%r17, %r16, %r18
# INTEL: and	r18, r16, r17
0x62,0xec,0xec,0x10,0x23,0xc1

# ATT:   {nf}	andb	%r17b, %r16b
# INTEL: {nf}	and	r16b, r17b
0x62,0xec,0x7c,0x0c,0x22,0xc1

# ATT:   {nf}	andw	%r17w, %r16w
# INTEL: {nf}	and	r16w, r17w
0x62,0xec,0x7d,0x0c,0x23,0xc1

# ATT:   {nf}	andl	%r17d, %r16d
# INTEL: {nf}	and	r16d, r17d
0x62,0xec,0x7c,0x0c,0x23,0xc1

# ATT:   {nf}	andq	%r17, %r16
# INTEL: {nf}	and	r16, r17
0x62,0xec,0xfc,0x0c,0x23,0xc1

# ATT:   {nf}	andb	%r17b, %r16b, %r18b
# INTEL: {nf}	and	r18b, r16b, r17b
0x62,0xec,0x6c,0x14,0x22,0xc1

# ATT:   {nf}	andw	%r17w, %r16w, %r18w
# INTEL: {nf}	and	r18w, r16w, r17w
0x62,0xec,0x6d,0x14,0x23,0xc1

# ATT:   {nf}	andl	%r17d, %r16d, %r18d
# INTEL: {nf}	and	r18d, r16d, r17d
0x62,0xec,0x6c,0x14,0x23,0xc1

# ATT:   {nf}	andq	%r17, %r16, %r18
# INTEL: {nf}	and	r18, r16, r17
0x62,0xec,0xec,0x14,0x23,0xc1

## or

# ATT:   {evex}	orb	%r17b, %r16b
# INTEL: {evex}	or	r16b, r17b
0x62,0xec,0x7c,0x08,0x0a,0xc1

# ATT:   {evex}	orw	%r17w, %r16w
# INTEL: {evex}	or	r16w, r17w
0x62,0xec,0x7d,0x08,0x0b,0xc1

# ATT:   {evex}	orl	%r17d, %r16d
# INTEL: {evex}	or	r16d, r17d
0x62,0xec,0x7c,0x08,0x0b,0xc1

# ATT:   {evex}	orq	%r17, %r16
# INTEL: {evex}	or	r16, r17
0x62,0xec,0xfc,0x08,0x0b,0xc1

# ATT:   orb	%r17b, %r16b, %r18b
# INTEL: or	r18b, r16b, r17b
0x62,0xec,0x6c,0x10,0x0a,0xc1

# ATT:   orw	%r17w, %r16w, %r18w
# INTEL: or	r18w, r16w, r17w
0x62,0xec,0x6d,0x10,0x0b,0xc1

# ATT:   orl	%r17d, %r16d, %r18d
# INTEL: or	r18d, r16d, r17d
0x62,0xec,0x6c,0x10,0x0b,0xc1

# ATT:   orq	%r17, %r16, %r18
# INTEL: or	r18, r16, r17
0x62,0xec,0xec,0x10,0x0b,0xc1

# ATT:   {nf}	orb	%r17b, %r16b
# INTEL: {nf}	or	r16b, r17b
0x62,0xec,0x7c,0x0c,0x0a,0xc1

# ATT:   {nf}	orw	%r17w, %r16w
# INTEL: {nf}	or	r16w, r17w
0x62,0xec,0x7d,0x0c,0x0b,0xc1

# ATT:   {nf}	orl	%r17d, %r16d
# INTEL: {nf}	or	r16d, r17d
0x62,0xec,0x7c,0x0c,0x0b,0xc1

# ATT:   {nf}	orq	%r17, %r16
# INTEL: {nf}	or	r16, r17
0x62,0xec,0xfc,0x0c,0x0b,0xc1

# ATT:   {nf}	orb	%r17b, %r16b, %r18b
# INTEL: {nf}	or	r18b, r16b, r17b
0x62,0xec,0x6c,0x14,0x0a,0xc1

# ATT:   {nf}	orw	%r17w, %r16w, %r18w
# INTEL: {nf}	or	r18w, r16w, r17w
0x62,0xec,0x6d,0x14,0x0b,0xc1

# ATT:   {nf}	orl	%r17d, %r16d, %r18d
# INTEL: {nf}	or	r18d, r16d, r17d
0x62,0xec,0x6c,0x14,0x0b,0xc1

# ATT:   {nf}	orq	%r17, %r16, %r18
# INTEL: {nf}	or	r18, r16, r17
0x62,0xec,0xec,0x14,0x0b,0xc1

## xor

# ATT:   {evex}	xorb	%r17b, %r16b
# INTEL: {evex}	xor	r16b, r17b
0x62,0xec,0x7c,0x08,0x32,0xc1

# ATT:   {evex}	xorw	%r17w, %r16w
# INTEL: {evex}	xor	r16w, r17w
0x62,0xec,0x7d,0x08,0x33,0xc1

# ATT:   {evex}	xorl	%r17d, %r16d
# INTEL: {evex}	xor	r16d, r17d
0x62,0xec,0x7c,0x08,0x33,0xc1

# ATT:   {evex}	xorq	%r17, %r16
# INTEL: {evex}	xor	r16, r17
0x62,0xec,0xfc,0x08,0x33,0xc1

# ATT:   xorb	%r17b, %r16b, %r18b
# INTEL: xor	r18b, r16b, r17b
0x62,0xec,0x6c,0x10,0x32,0xc1

# ATT:   xorw	%r17w, %r16w, %r18w
# INTEL: xor	r18w, r16w, r17w
0x62,0xec,0x6d,0x10,0x33,0xc1

# ATT:   xorl	%r17d, %r16d, %r18d
# INTEL: xor	r18d, r16d, r17d
0x62,0xec,0x6c,0x10,0x33,0xc1

# ATT:   xorq	%r17, %r16, %r18
# INTEL: xor	r18, r16, r17
0x62,0xec,0xec,0x10,0x33,0xc1

# ATT:   {nf}	xorb	%r17b, %r16b
# INTEL: {nf}	xor	r16b, r17b
0x62,0xec,0x7c,0x0c,0x32,0xc1

# ATT:   {nf}	xorw	%r17w, %r16w
# INTEL: {nf}	xor	r16w, r17w
0x62,0xec,0x7d,0x0c,0x33,0xc1

# ATT:   {nf}	xorl	%r17d, %r16d
# INTEL: {nf}	xor	r16d, r17d
0x62,0xec,0x7c,0x0c,0x33,0xc1

# ATT:   {nf}	xorq	%r17, %r16
# INTEL: {nf}	xor	r16, r17
0x62,0xec,0xfc,0x0c,0x33,0xc1

# ATT:   {nf}	xorb	%r17b, %r16b, %r18b
# INTEL: {nf}	xor	r18b, r16b, r17b
0x62,0xec,0x6c,0x14,0x32,0xc1

# ATT:   {nf}	xorw	%r17w, %r16w, %r18w
# INTEL: {nf}	xor	r18w, r16w, r17w
0x62,0xec,0x6d,0x14,0x33,0xc1

# ATT:   {nf}	xorl	%r17d, %r16d, %r18d
# INTEL: {nf}	xor	r18d, r16d, r17d
0x62,0xec,0x6c,0x14,0x33,0xc1

# ATT:   {nf}	xorq	%r17, %r16, %r18
# INTEL: {nf}	xor	r18, r16, r17
0x62,0xec,0xec,0x14,0x33,0xc1

## adc

# ATT:   {evex}	adcb	%r17b, %r16b
# INTEL: {evex}	adc	r16b, r17b
0x62,0xec,0x7c,0x08,0x12,0xc1

# ATT:   {evex}	adcw	%r17w, %r16w
# INTEL: {evex}	adc	r16w, r17w
0x62,0xec,0x7d,0x08,0x13,0xc1

# ATT:   {evex}	adcl	%r17d, %r16d
# INTEL: {evex}	adc	r16d, r17d
0x62,0xec,0x7c,0x08,0x13,0xc1

# ATT:   {evex}	adcq	%r17, %r16
# INTEL: {evex}	adc	r16, r17
0x62,0xec,0xfc,0x08,0x13,0xc1

# ATT:   adcb	%r17b, %r16b, %r18b
# INTEL: adc	r18b, r16b, r17b
0x62,0xec,0x6c,0x10,0x12,0xc1

# ATT:   adcw	%r17w, %r16w, %r18w
# INTEL: adc	r18w, r16w, r17w
0x62,0xec,0x6d,0x10,0x13,0xc1

# ATT:   adcl	%r17d, %r16d, %r18d
# INTEL: adc	r18d, r16d, r17d
0x62,0xec,0x6c,0x10,0x13,0xc1

# ATT:   adcq	%r17, %r16, %r18
# INTEL: adc	r18, r16, r17
0x62,0xec,0xec,0x10,0x13,0xc1

## sbb

# ATT:   {evex}	sbbb	%r17b, %r16b
# INTEL: {evex}	sbb	r16b, r17b
0x62,0xec,0x7c,0x08,0x1a,0xc1

# ATT:   {evex}	sbbw	%r17w, %r16w
# INTEL: {evex}	sbb	r16w, r17w
0x62,0xec,0x7d,0x08,0x1b,0xc1

# ATT:   {evex}	sbbl	%r17d, %r16d
# INTEL: {evex}	sbb	r16d, r17d
0x62,0xec,0x7c,0x08,0x1b,0xc1

# ATT:   {evex}	sbbq	%r17, %r16
# INTEL: {evex}	sbb	r16, r17
0x62,0xec,0xfc,0x08,0x1b,0xc1

# ATT:   sbbb	%r17b, %r16b, %r18b
# INTEL: sbb	r18b, r16b, r17b
0x62,0xec,0x6c,0x10,0x1a,0xc1

# ATT:   sbbw	%r17w, %r16w, %r18w
# INTEL: sbb	r18w, r16w, r17w
0x62,0xec,0x6d,0x10,0x1b,0xc1

# ATT:   sbbl	%r17d, %r16d, %r18d
# INTEL: sbb	r18d, r16d, r17d
0x62,0xec,0x6c,0x10,0x1b,0xc1

# ATT:   sbbq	%r17, %r16, %r18
# INTEL: sbb	r18, r16, r17
0x62,0xec,0xec,0x10,0x1b,0xc1
