[llvm] [X86][MC] Support encoding/decoding for APX variant ADD/SUB/ADC/SBB/OR/XOR/NEG/NOT instructions (PR #76319)

Shengchen Kan via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 27 22:25:19 PST 2023


================
@@ -0,0 +1,210 @@
+# 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
+
+# ATT:   {evex}	adcb	$123, %bl
+# INTEL: {evex}	adc	bl, 123
+0x62,0xf4,0x7c,0x08,0x80,0xd3,0x7b
+
+# ATT:   adcb	$123, %bl, %cl
+# INTEL: adc	cl, bl, 123
+0x62,0xf4,0x74,0x18,0x80,0xd3,0x7b
+
+# ATT:   {evex}	adcw	$123, %dx
+# INTEL: {evex}	adc	dx, 123
+0x62,0xf4,0x7d,0x08,0x83,0xd2,0x7b
+
+# ATT:   adcw	$123, %dx, %ax
+# INTEL: adc	ax, dx, 123
+0x62,0xf4,0x7d,0x18,0x83,0xd2,0x7b
+
+# ATT:   {evex}	adcl	$123, %ecx
+# INTEL: {evex}	adc	ecx, 123
+0x62,0xf4,0x7c,0x08,0x83,0xd1,0x7b
+
+# ATT:   adcl	$123, %ecx, %edx
+# INTEL: adc	edx, ecx, 123
+0x62,0xf4,0x6c,0x18,0x83,0xd1,0x7b
+
+# ATT:   {evex}	adcq	$123, %r9
+# INTEL: {evex}	adc	r9, 123
+0x62,0xd4,0xfc,0x08,0x83,0xd1,0x7b
+
+# ATT:   adcq	$123, %r9, %r15
+# INTEL: adc	r15, r9, 123
+0x62,0xd4,0x84,0x18,0x83,0xd1,0x7b
+
+# ATT:   {evex}	adcb	$123, 291(%r8,%rax,4)
+# INTEL: {evex}	adc	byte ptr [r8 + 4*rax + 291], 123
+0x62,0xd4,0x7c,0x08,0x80,0x94,0x80,0x23,0x01,0x00,0x00,0x7b
+
+# ATT:   adcb	$123, 291(%r8,%rax,4), %bl
+# INTEL: adc	bl, byte ptr [r8 + 4*rax + 291], 123
+0x62,0xd4,0x64,0x18,0x80,0x94,0x80,0x23,0x01,0x00,0x00,0x7b
+
+# ATT:   {evex}	adcw	$123, 291(%r8,%rax,4)
+# INTEL: {evex}	adc	word ptr [r8 + 4*rax + 291], 123
+0x62,0xd4,0x7d,0x08,0x83,0x94,0x80,0x23,0x01,0x00,0x00,0x7b
+
+# ATT:   adcw	$123, 291(%r8,%rax,4), %dx
+# INTEL: adc	dx, word ptr [r8 + 4*rax + 291], 123
+0x62,0xd4,0x6d,0x18,0x83,0x94,0x80,0x23,0x01,0x00,0x00,0x7b
+
+# ATT:   {evex}	adcl	$123, 291(%r8,%rax,4)
+# INTEL: {evex}	adc	dword ptr [r8 + 4*rax + 291], 123
+0x62,0xd4,0x7c,0x08,0x83,0x94,0x80,0x23,0x01,0x00,0x00,0x7b
+
+# ATT:   adcl	$123, 291(%r8,%rax,4), %ecx
+# INTEL: adc	ecx, dword ptr [r8 + 4*rax + 291], 123
+0x62,0xd4,0x74,0x18,0x83,0x94,0x80,0x23,0x01,0x00,0x00,0x7b
+
+# ATT:   {evex}	adcq	$123, 291(%r8,%rax,4)
+# INTEL: {evex}	adc	qword ptr [r8 + 4*rax + 291], 123
+0x62,0xd4,0xfc,0x08,0x83,0x94,0x80,0x23,0x01,0x00,0x00,0x7b
+
+# ATT:   adcq	$123, 291(%r8,%rax,4), %r9
+# INTEL: adc	r9, qword ptr [r8 + 4*rax + 291], 123
+0x62,0xd4,0xb4,0x18,0x83,0x94,0x80,0x23,0x01,0x00,0x00,0x7b
+
+# ATT:   {evex}	adcw	$1234, %dx
+# INTEL: {evex}	adc	dx, 1234
+0x62,0xf4,0x7d,0x08,0x81,0xd2,0xd2,0x04
+
+# ATT:   adcw	$1234, %dx, %ax
+# INTEL: adc	ax, dx, 1234
+0x62,0xf4,0x7d,0x18,0x81,0xd2,0xd2,0x04
+
+# ATT:   {evex}	adcw	$1234, 291(%r8,%rax,4)
+# INTEL: {evex}	adc	word ptr [r8 + 4*rax + 291], 1234
+0x62,0xd4,0x7d,0x08,0x81,0x94,0x80,0x23,0x01,0x00,0x00,0xd2,0x04
+
+# ATT:   adcw	$1234, 291(%r8,%rax,4), %dx
+# INTEL: adc	dx, word ptr [r8 + 4*rax + 291], 1234
+0x62,0xd4,0x6d,0x18,0x81,0x94,0x80,0x23,0x01,0x00,0x00,0xd2,0x04
+
+# ATT:   {evex}	adcl	$123456, %ecx
+# INTEL: {evex}	adc	ecx, 123456
+0x62,0xf4,0x7c,0x08,0x81,0xd1,0x40,0xe2,0x01,0x00
+
+# ATT:   adcl	$123456, %ecx, %edx
+# INTEL: adc	edx, ecx, 123456
+0x62,0xf4,0x6c,0x18,0x81,0xd1,0x40,0xe2,0x01,0x00
+
+# ATT:   {evex}	adcq	$123456, %r9
+# INTEL: {evex}	adc	r9, 123456
+0x62,0xd4,0xfc,0x08,0x81,0xd1,0x40,0xe2,0x01,0x00
+
+# ATT:   adcq	$123456, %r9, %r15
+# INTEL: adc	r15, r9, 123456
+0x62,0xd4,0x84,0x18,0x81,0xd1,0x40,0xe2,0x01,0x00
+
+# ATT:   {evex}	adcl	$123456, 291(%r8,%rax,4)
+# INTEL: {evex}	adc	dword ptr [r8 + 4*rax + 291], 123456
+0x62,0xd4,0x7c,0x08,0x81,0x94,0x80,0x23,0x01,0x00,0x00,0x40,0xe2,0x01,0x00
+
+# ATT:   adcl	$123456, 291(%r8,%rax,4), %ecx
+# INTEL: adc	ecx, dword ptr [r8 + 4*rax + 291], 123456
+0x62,0xd4,0x74,0x18,0x81,0x94,0x80,0x23,0x01,0x00,0x00,0x40,0xe2,0x01,0x00
+
+# ATT:   {evex}	adcq	$123456, 291(%r8,%rax,4)
+# INTEL: {evex}	adc	qword ptr [r8 + 4*rax + 291], 123456
+0x62,0xd4,0xfc,0x08,0x81,0x94,0x80,0x23,0x01,0x00,0x00,0x40,0xe2,0x01,0x00
+
+# ATT:   adcq	$123456, 291(%r8,%rax,4), %r9
+# INTEL: adc	r9, qword ptr [r8 + 4*rax + 291], 123456
+0x62,0xd4,0xb4,0x18,0x81,0x94,0x80,0x23,0x01,0x00,0x00,0x40,0xe2,0x01,0x00
+
+# ATT:   {evex}	adcb	%bl, %cl
+# INTEL: {evex}	adc	cl, bl
+0x62,0xf4,0x7c,0x08,0x10,0xd9
----------------
KanRobert wrote:

Done.

https://github.com/llvm/llvm-project/pull/76319


More information about the llvm-commits mailing list