Skip to content

Commit 2e0c215

Browse files
authored
[X86][MC] Support 'ctestX <reg>, <mem>' and 'ctextX <mem>, <reg>' as synonyms. (#97985)
relate gas discussion: https://sourceware.org/pipermail/binutils/2024-July/135349.html
1 parent 26b7070 commit 2e0c215

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

llvm/lib/Target/X86/X86InstrAsmAlias.td

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,14 @@ def : InstAlias<"ctest"#Cond#"{l} $dcf\t{$src2, $src1|$src1, $src2}",
157157
(CTEST32mr i32mem:$src1, GR32:$src2, cflags:$dcf, CC), 0>;
158158
def : InstAlias<"ctest"#Cond#"{q} $dcf\t{$src2, $src1|$src1, $src2}",
159159
(CTEST64mr i64mem:$src1, GR64:$src2, cflags:$dcf, CC), 0>;
160+
def : InstAlias<"ctest"#Cond#"{b} $dcf\t{$src1, $src2|$src2, $src1}",
161+
(CTEST8mr i8mem:$src1, GR8:$src2, cflags:$dcf, CC), 0>;
162+
def : InstAlias<"ctest"#Cond#"{w} $dcf\t{$src1, $src2|$src2, $src1}",
163+
(CTEST16mr i16mem:$src1, GR16:$src2, cflags:$dcf, CC), 0>;
164+
def : InstAlias<"ctest"#Cond#"{l} $dcf\t{$src1, $src2|$src2, $src1}",
165+
(CTEST32mr i32mem:$src1, GR32:$src2, cflags:$dcf, CC), 0>;
166+
def : InstAlias<"ctest"#Cond#"{q} $dcf\t{$src1, $src2|$src2, $src1}",
167+
(CTEST64mr i64mem:$src1, GR64:$src2, cflags:$dcf, CC), 0>;
160168
def : InstAlias<"ctest"#Cond#"{b} $dcf\t{$src2, $src1|$src1, $src2}",
161169
(CTEST8ri GR8:$src1, i8imm:$src2, cflags:$dcf, CC), 0>;
162170
def : InstAlias<"ctest"#Cond#"{w} $dcf\t{$src2, $src1|$src1, $src2}",

llvm/test/MC/X86/apx/ctest-att.s

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# RUN: llvm-mc -triple x86_64 -show-encoding %s | FileCheck %s
22
# RUN: not llvm-mc -triple i386 -show-encoding %s 2>&1 | FileCheck %s --check-prefix=ERROR
33

4-
# ERROR-COUNT-256: error:
4+
# ERROR-COUNT-260: error:
55
# ERROR-NOT: error:
66
# CHECK: ctestbb {dfv=of} $123, 123(%r8,%rax,4)
77
# CHECK: encoding: [0x62,0xd4,0x44,0x02,0xf6,0x44,0x80,0x7b,0x7b]
@@ -27,6 +27,19 @@
2727
# CHECK: ctestbq {dfv=of} %r9, 123(%r8,%rax,4)
2828
# CHECK: encoding: [0x62,0x54,0xc4,0x02,0x85,0x4c,0x80,0x7b]
2929
ctestbq {dfv=of} %r9, 123(%r8,%rax,4)
30+
# Swap mr form
31+
# CHECK: ctestbb {dfv=of} %bl, 123(%r8,%rax,4)
32+
# CHECK: encoding: [0x62,0xd4,0x44,0x02,0x84,0x5c,0x80,0x7b]
33+
ctestbb {dfv=of} 123(%r8,%rax,4), %bl
34+
# CHECK: ctestbw {dfv=of} %dx, 123(%r8,%rax,4)
35+
# CHECK: encoding: [0x62,0xd4,0x45,0x02,0x85,0x54,0x80,0x7b]
36+
ctestbw {dfv=of} 123(%r8,%rax,4), %dx
37+
# CHECK: ctestbl {dfv=of} %ecx, 123(%r8,%rax,4)
38+
# CHECK: encoding: [0x62,0xd4,0x44,0x02,0x85,0x4c,0x80,0x7b]
39+
ctestbl {dfv=of} 123(%r8,%rax,4), %ecx
40+
# CHECK: ctestbq {dfv=of} %r9, 123(%r8,%rax,4)
41+
# CHECK: encoding: [0x62,0x54,0xc4,0x02,0x85,0x4c,0x80,0x7b]
42+
ctestbq {dfv=of} 123(%r8,%rax,4), %r9
3043
# CHECK: ctestbb {dfv=of} $123, %bl
3144
# CHECK: encoding: [0x62,0xf4,0x44,0x02,0xf6,0xc3,0x7b]
3245
ctestbb {dfv=of} $123, %bl

llvm/test/MC/X86/apx/ctest-intel.s

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,18 @@
2424
# CHECK: ctestb {dfv=of} qword ptr [r8 + 4*rax + 123], r9
2525
# CHECK: encoding: [0x62,0x54,0xc4,0x02,0x85,0x4c,0x80,0x7b]
2626
ctestb {dfv=of} qword ptr [r8 + 4*rax + 123], r9
27+
# CHECK: ctestb {dfv=of} byte ptr [r8 + 4*rax + 123], bl
28+
# CHECK: encoding: [0x62,0xd4,0x44,0x02,0x84,0x5c,0x80,0x7b]
29+
ctestb {dfv=of} bl, byte ptr [r8 + 4*rax + 123]
30+
# CHECK: ctestb {dfv=of} word ptr [r8 + 4*rax + 123], dx
31+
# CHECK: encoding: [0x62,0xd4,0x45,0x02,0x85,0x54,0x80,0x7b]
32+
ctestb {dfv=of} dx, word ptr [r8 + 4*rax + 123]
33+
# CHECK: ctestb {dfv=of} dword ptr [r8 + 4*rax + 123], ecx
34+
# CHECK: encoding: [0x62,0xd4,0x44,0x02,0x85,0x4c,0x80,0x7b]
35+
ctestb {dfv=of} ecx, dword ptr [r8 + 4*rax + 123]
36+
# CHECK: ctestb {dfv=of} qword ptr [r8 + 4*rax + 123], r9
37+
# CHECK: encoding: [0x62,0x54,0xc4,0x02,0x85,0x4c,0x80,0x7b]
38+
ctestb {dfv=of} r9, qword ptr [r8 + 4*rax + 123]
2739
# CHECK: ctestb {dfv=of} bl, 123
2840
# CHECK: encoding: [0x62,0xf4,0x44,0x02,0xf6,0xc3,0x7b]
2941
ctestb {dfv=of} bl, 123

0 commit comments

Comments
 (0)