Skip to content

Commit 2c62d08

Browse files
authored
[X86][MC] Add assembly alias for CCMP, CTEST, SETZUCC, CMPCCXADD (#102284)
1 parent 3c5509d commit 2c62d08

File tree

9 files changed

+339
-9
lines changed

9 files changed

+339
-9
lines changed

llvm/lib/Target/X86/X86InstrAsmAlias.td

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,19 +124,31 @@ def : InstAlias<"ccmp"#Cond#"{q} $dcf\t{$src2, $src1|$src1, $src2}",
124124
defm : CCMP_Aliases<"o" , 0>;
125125
defm : CCMP_Aliases<"no", 1>;
126126
defm : CCMP_Aliases<"b" , 2>;
127+
defm : CCMP_Aliases<"c" , 2>;
128+
defm : CCMP_Aliases<"nae", 2>;
129+
defm : CCMP_Aliases<"nb", 3>;
130+
defm : CCMP_Aliases<"nc", 3>;
127131
defm : CCMP_Aliases<"ae", 3>;
128132
defm : CCMP_Aliases<"e" , 4>;
133+
defm : CCMP_Aliases<"z" , 4>;
129134
defm : CCMP_Aliases<"ne", 5>;
135+
defm : CCMP_Aliases<"nz", 5>;
130136
defm : CCMP_Aliases<"be", 6>;
137+
defm : CCMP_Aliases<"na", 6>;
138+
defm : CCMP_Aliases<"nbe", 7>;
131139
defm : CCMP_Aliases<"a" , 7>;
132140
defm : CCMP_Aliases<"s" , 8>;
133141
defm : CCMP_Aliases<"ns", 9>;
134142
defm : CCMP_Aliases<"t" , 10>;
135143
defm : CCMP_Aliases<"f", 11>;
136144
defm : CCMP_Aliases<"l" , 12>;
145+
defm : CCMP_Aliases<"nge",12>;
146+
defm : CCMP_Aliases<"nl", 13>;
137147
defm : CCMP_Aliases<"ge", 13>;
138148
defm : CCMP_Aliases<"le", 14>;
149+
defm : CCMP_Aliases<"ng", 14>;
139150
defm : CCMP_Aliases<"g" , 15>;
151+
defm : CCMP_Aliases<"nle",15>;
140152

141153
// CTEST Instructions Alias
142154
multiclass CTEST_Aliases<string Cond, int CC> {
@@ -186,19 +198,31 @@ def : InstAlias<"ctest"#Cond#"{q} $dcf\t{$src2, $src1|$src1, $src2}",
186198
defm : CTEST_Aliases<"o" , 0>;
187199
defm : CTEST_Aliases<"no", 1>;
188200
defm : CTEST_Aliases<"b" , 2>;
201+
defm : CTEST_Aliases<"c" , 2>;
202+
defm : CTEST_Aliases<"nae", 2>;
203+
defm : CTEST_Aliases<"nb", 3>;
204+
defm : CTEST_Aliases<"nc", 3>;
189205
defm : CTEST_Aliases<"ae", 3>;
190206
defm : CTEST_Aliases<"e" , 4>;
207+
defm : CTEST_Aliases<"z" , 4>;
191208
defm : CTEST_Aliases<"ne", 5>;
209+
defm : CTEST_Aliases<"nz", 5>;
192210
defm : CTEST_Aliases<"be", 6>;
211+
defm : CTEST_Aliases<"na", 6>;
212+
defm : CTEST_Aliases<"nbe", 7>;
193213
defm : CTEST_Aliases<"a" , 7>;
194214
defm : CTEST_Aliases<"s" , 8>;
195215
defm : CTEST_Aliases<"ns", 9>;
196216
defm : CTEST_Aliases<"t" , 10>;
197217
defm : CTEST_Aliases<"f", 11>;
198218
defm : CTEST_Aliases<"l" , 12>;
219+
defm : CTEST_Aliases<"nge",12>;
220+
defm : CTEST_Aliases<"nl", 13>;
199221
defm : CTEST_Aliases<"ge", 13>;
200222
defm : CTEST_Aliases<"le", 14>;
223+
defm : CTEST_Aliases<"ng", 14>;
201224
defm : CTEST_Aliases<"g" , 15>;
225+
defm : CTEST_Aliases<"nle",15>;
202226

203227
//===----------------------------------------------------------------------===//
204228
// Assembler Mnemonic Aliases
@@ -208,24 +232,18 @@ defm : CMPCCXADD_Aliases<"o" , 0>;
208232
defm : CMPCCXADD_Aliases<"no", 1>;
209233
defm : CMPCCXADD_Aliases<"b" , 2>;
210234
defm : CMPCCXADD_Aliases<"ae", 3>;
211-
defm : CMPCCXADD_Aliases<"nb", 3>;
212235
defm : CMPCCXADD_Aliases<"e" , 4>;
213-
defm : CMPCCXADD_Aliases<"z" , 4>;
214236
defm : CMPCCXADD_Aliases<"ne", 5>;
215-
defm : CMPCCXADD_Aliases<"nz", 5>;
216237
defm : CMPCCXADD_Aliases<"be", 6>;
217-
defm : CMPCCXADD_Aliases<"nbe", 7>;
218238
defm : CMPCCXADD_Aliases<"a", 7>;
219239
defm : CMPCCXADD_Aliases<"s" , 8>;
220240
defm : CMPCCXADD_Aliases<"ns", 9>;
221241
defm : CMPCCXADD_Aliases<"p" , 10>;
222242
defm : CMPCCXADD_Aliases<"np", 11>;
223243
defm : CMPCCXADD_Aliases<"l" , 12>;
224244
defm : CMPCCXADD_Aliases<"ge", 13>;
225-
defm : CMPCCXADD_Aliases<"nl", 13>;
226245
defm : CMPCCXADD_Aliases<"le", 14>;
227246
defm : CMPCCXADD_Aliases<"g", 15>;
228-
defm : CMPCCXADD_Aliases<"nle",15>;
229247

230248

231249
def : MnemonicAlias<"call", "callw", "att">, Requires<[In16BitMode]>;
@@ -403,6 +421,7 @@ multiclass IntegerCondCodeMnemonicAlias<string Prefix, string Suffix,
403421

404422
// Aliases for set<CC>
405423
defm : IntegerCondCodeMnemonicAlias<"set", "">;
424+
defm : IntegerCondCodeMnemonicAlias<"setzu", "">;
406425
// Aliases for j<CC>
407426
defm : IntegerCondCodeMnemonicAlias<"j", "">;
408427
// Aliases for cmov<CC>{w,l,q}
@@ -418,6 +437,9 @@ defm : IntegerCondCodeMnemonicAlias<"cfcmov", "l", "att">;
418437
defm : IntegerCondCodeMnemonicAlias<"cfcmov", "q", "att">;
419438
// No size suffix for intel-style asm.
420439
defm : IntegerCondCodeMnemonicAlias<"cfcmov", "", "intel">;
440+
441+
// Aliases for cmp<CC>xadd
442+
defm : IntegerCondCodeMnemonicAlias<"cmp", "xadd", "">;
421443
//===----------------------------------------------------------------------===//
422444
// Assembler Instruction Aliases
423445
//===----------------------------------------------------------------------===//

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

Lines changed: 40 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-454: error:
4+
# ERROR-COUNT-466: error:
55
# ERROR-NOT: error:
66
## Condition flags
77

@@ -1376,3 +1376,42 @@
13761376
# CHECK: ccmptq {dfv=} %r9, %r15
13771377
# CHECK: encoding: [0x62,0x54,0x84,0x0a,0x39,0xcf]
13781378
{evex} cmpq %r9, %r15
1379+
1380+
## Condition Code Aliases
1381+
1382+
# CHECK: ccmpbl {dfv=of} %ecx, %edx
1383+
# CHECK: encoding: [0x62,0xf4,0x44,0x02,0x39,0xca]
1384+
ccmpcl {dfv=of} %ecx, %edx
1385+
# CHECK: ccmpbl {dfv=of} %ecx, %edx
1386+
# CHECK: encoding: [0x62,0xf4,0x44,0x02,0x39,0xca]
1387+
ccmpnael {dfv=of} %ecx, %edx
1388+
# CHECK: ccmpael {dfv=of} %ecx, %edx
1389+
# CHECK: encoding: [0x62,0xf4,0x44,0x03,0x39,0xca]
1390+
ccmpnbl {dfv=of} %ecx, %edx
1391+
# CHECK: ccmpael {dfv=of} %ecx, %edx
1392+
# CHECK: encoding: [0x62,0xf4,0x44,0x03,0x39,0xca]
1393+
ccmpncl {dfv=of} %ecx, %edx
1394+
# CHECK: ccmpel {dfv=of} %ecx, %edx
1395+
# CHECK: encoding: [0x62,0xf4,0x44,0x04,0x39,0xca]
1396+
ccmpzl {dfv=of} %ecx, %edx
1397+
# CHECK: ccmpnel {dfv=of} %ecx, %edx
1398+
# CHECK: encoding: [0x62,0xf4,0x44,0x05,0x39,0xca]
1399+
ccmpnzl {dfv=of} %ecx, %edx
1400+
# CHECK: ccmpal {dfv=of} %ecx, %edx
1401+
# CHECK: encoding: [0x62,0xf4,0x44,0x07,0x39,0xca]
1402+
ccmpnbel {dfv=of} %ecx, %edx
1403+
# CHECK: ccmpll {dfv=of} %ecx, %edx
1404+
# CHECK: encoding: [0x62,0xf4,0x44,0x0c,0x39,0xca]
1405+
ccmpngel {dfv=of} %ecx, %edx
1406+
# CHECK: ccmpgel {dfv=of} %ecx, %edx
1407+
# CHECK: encoding: [0x62,0xf4,0x44,0x0d,0x39,0xca]
1408+
ccmpnll {dfv=of} %ecx, %edx
1409+
# CHECK: ccmplel {dfv=of} %ecx, %edx
1410+
# CHECK: encoding: [0x62,0xf4,0x44,0x0e,0x39,0xca]
1411+
ccmpngl {dfv=of} %ecx, %edx
1412+
# CHECK: ccmpgl {dfv=of} %ecx, %edx
1413+
# CHECK: encoding: [0x62,0xf4,0x44,0x0f,0x39,0xca]
1414+
ccmpnlel {dfv=of} %ecx, %edx
1415+
# CHECK: ccmpbel {dfv=of} %ecx, %edx
1416+
# CHECK: encoding: [0x62,0xf4,0x44,0x06,0x39,0xca]
1417+
ccmpnal {dfv=of} %ecx, %edx

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1373,3 +1373,42 @@
13731373
# CHECK: ccmpt {dfv=} r15, r9
13741374
# CHECK: encoding: [0x62,0x54,0x84,0x0a,0x39,0xcf]
13751375
{evex} cmp r15, r9
1376+
1377+
## Condition Code Aliases
1378+
1379+
# CHECK: ccmpb {dfv=of} edx, ecx
1380+
# CHECK: encoding: [0x62,0xf4,0x44,0x02,0x39,0xca]
1381+
ccmpc {dfv=of} edx, ecx
1382+
# CHECK: ccmpb {dfv=of} edx, ecx
1383+
# CHECK: encoding: [0x62,0xf4,0x44,0x02,0x39,0xca]
1384+
ccmpnae {dfv=of} edx, ecx
1385+
# CHECK: ccmpae {dfv=of} edx, ecx
1386+
# CHECK: encoding: [0x62,0xf4,0x44,0x03,0x39,0xca]
1387+
ccmpnb {dfv=of} edx, ecx
1388+
# CHECK: ccmpae {dfv=of} edx, ecx
1389+
# CHECK: encoding: [0x62,0xf4,0x44,0x03,0x39,0xca]
1390+
ccmpnc {dfv=of} edx, ecx
1391+
# CHECK: ccmpe {dfv=of} edx, ecx
1392+
# CHECK: encoding: [0x62,0xf4,0x44,0x04,0x39,0xca]
1393+
ccmpz {dfv=of} edx, ecx
1394+
# CHECK: ccmpne {dfv=of} edx, ecx
1395+
# CHECK: encoding: [0x62,0xf4,0x44,0x05,0x39,0xca]
1396+
ccmpnz {dfv=of} edx, ecx
1397+
# CHECK: ccmpa {dfv=of} edx, ecx
1398+
# CHECK: encoding: [0x62,0xf4,0x44,0x07,0x39,0xca]
1399+
ccmpnbe {dfv=of} edx, ecx
1400+
# CHECK: ccmpl {dfv=of} edx, ecx
1401+
# CHECK: encoding: [0x62,0xf4,0x44,0x0c,0x39,0xca]
1402+
ccmpnge {dfv=of} edx, ecx
1403+
# CHECK: ccmpge {dfv=of} edx, ecx
1404+
# CHECK: encoding: [0x62,0xf4,0x44,0x0d,0x39,0xca]
1405+
ccmpnl {dfv=of} edx, ecx
1406+
# CHECK: ccmple {dfv=of} edx, ecx
1407+
# CHECK: encoding: [0x62,0xf4,0x44,0x0e,0x39,0xca]
1408+
ccmpng {dfv=of} edx, ecx
1409+
# CHECK: ccmpg {dfv=of} edx, ecx
1410+
# CHECK: encoding: [0x62,0xf4,0x44,0x0f,0x39,0xca]
1411+
ccmpnle {dfv=of} edx, ecx
1412+
# CHECK: ccmpbe {dfv=of} edx, ecx
1413+
# CHECK: encoding: [0x62,0xf4,0x44,0x06,0x39,0xca]
1414+
ccmpna {dfv=of} edx, ecx

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

Lines changed: 40 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-276: error:
4+
# ERROR-COUNT-288: 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]
@@ -835,3 +835,42 @@
835835
# CHECK: ctesttq {dfv=} %r9, %r15
836836
# CHECK: encoding: [0x62,0x54,0x84,0x0a,0x85,0xcf]
837837
{evex} testq %r9, %r15
838+
839+
## Condition Code Aliases
840+
841+
# CHECK: ctestbl {dfv=of} %ecx, %edx
842+
# CHECK: encoding: [0x62,0xf4,0x44,0x02,0x85,0xca]
843+
ctestcl {dfv=of} %ecx, %edx
844+
# CHECK: ctestbl {dfv=of} %ecx, %edx
845+
# CHECK: encoding: [0x62,0xf4,0x44,0x02,0x85,0xca]
846+
ctestnael {dfv=of} %ecx, %edx
847+
# CHECK: ctestael {dfv=of} %ecx, %edx
848+
# CHECK: encoding: [0x62,0xf4,0x44,0x03,0x85,0xca]
849+
ctestnbl {dfv=of} %ecx, %edx
850+
# CHECK: ctestael {dfv=of} %ecx, %edx
851+
# CHECK: encoding: [0x62,0xf4,0x44,0x03,0x85,0xca]
852+
ctestncl {dfv=of} %ecx, %edx
853+
# CHECK: ctestel {dfv=of} %ecx, %edx
854+
# CHECK: encoding: [0x62,0xf4,0x44,0x04,0x85,0xca]
855+
ctestzl {dfv=of} %ecx, %edx
856+
# CHECK: ctestnel {dfv=of} %ecx, %edx
857+
# CHECK: encoding: [0x62,0xf4,0x44,0x05,0x85,0xca]
858+
ctestnzl {dfv=of} %ecx, %edx
859+
# CHECK: ctestal {dfv=of} %ecx, %edx
860+
# CHECK: encoding: [0x62,0xf4,0x44,0x07,0x85,0xca]
861+
ctestnbel {dfv=of} %ecx, %edx
862+
# CHECK: ctestll {dfv=of} %ecx, %edx
863+
# CHECK: encoding: [0x62,0xf4,0x44,0x0c,0x85,0xca]
864+
ctestngel {dfv=of} %ecx, %edx
865+
# CHECK: ctestgel {dfv=of} %ecx, %edx
866+
# CHECK: encoding: [0x62,0xf4,0x44,0x0d,0x85,0xca]
867+
ctestnll {dfv=of} %ecx, %edx
868+
# CHECK: ctestlel {dfv=of} %ecx, %edx
869+
# CHECK: encoding: [0x62,0xf4,0x44,0x0e,0x85,0xca]
870+
ctestngl {dfv=of} %ecx, %edx
871+
# CHECK: ctestgl {dfv=of} %ecx, %edx
872+
# CHECK: encoding: [0x62,0xf4,0x44,0x0f,0x85,0xca]
873+
ctestnlel {dfv=of} %ecx, %edx
874+
# CHECK: ctestbel {dfv=of} %ecx, %edx
875+
# CHECK: encoding: [0x62,0xf4,0x44,0x06,0x85,0xca]
876+
ctestnal {dfv=of} %ecx, %edx

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -831,3 +831,42 @@
831831
# CHECK: ctestt {dfv=} r15, r9
832832
# CHECK: encoding: [0x62,0x54,0x84,0x0a,0x85,0xcf]
833833
{evex} test r15, r9
834+
835+
## Condition Code Aliases
836+
837+
# CHECK: ctestb {dfv=of} edx, ecx
838+
# CHECK: encoding: [0x62,0xf4,0x44,0x02,0x85,0xca]
839+
ctestc {dfv=of} edx, ecx
840+
# CHECK: ctestb {dfv=of} edx, ecx
841+
# CHECK: encoding: [0x62,0xf4,0x44,0x02,0x85,0xca]
842+
ctestnae {dfv=of} edx, ecx
843+
# CHECK: ctestae {dfv=of} edx, ecx
844+
# CHECK: encoding: [0x62,0xf4,0x44,0x03,0x85,0xca]
845+
ctestnb {dfv=of} edx, ecx
846+
# CHECK: ctestae {dfv=of} edx, ecx
847+
# CHECK: encoding: [0x62,0xf4,0x44,0x03,0x85,0xca]
848+
ctestnc {dfv=of} edx, ecx
849+
# CHECK: cteste {dfv=of} edx, ecx
850+
# CHECK: encoding: [0x62,0xf4,0x44,0x04,0x85,0xca]
851+
ctestz {dfv=of} edx, ecx
852+
# CHECK: ctestne {dfv=of} edx, ecx
853+
# CHECK: encoding: [0x62,0xf4,0x44,0x05,0x85,0xca]
854+
ctestnz {dfv=of} edx, ecx
855+
# CHECK: ctesta {dfv=of} edx, ecx
856+
# CHECK: encoding: [0x62,0xf4,0x44,0x07,0x85,0xca]
857+
ctestnbe {dfv=of} edx, ecx
858+
# CHECK: ctestl {dfv=of} edx, ecx
859+
# CHECK: encoding: [0x62,0xf4,0x44,0x0c,0x85,0xca]
860+
ctestnge {dfv=of} edx, ecx
861+
# CHECK: ctestge {dfv=of} edx, ecx
862+
# CHECK: encoding: [0x62,0xf4,0x44,0x0d,0x85,0xca]
863+
ctestnl {dfv=of} edx, ecx
864+
# CHECK: ctestle {dfv=of} edx, ecx
865+
# CHECK: encoding: [0x62,0xf4,0x44,0x0e,0x85,0xca]
866+
ctestng {dfv=of} edx, ecx
867+
# CHECK: ctestg {dfv=of} edx, ecx
868+
# CHECK: encoding: [0x62,0xf4,0x44,0x0f,0x85,0xca]
869+
ctestnle {dfv=of} edx, ecx
870+
# CHECK: ctestbe {dfv=of} edx, ecx
871+
# CHECK: encoding: [0x62,0xf4,0x44,0x06,0x85,0xca]
872+
ctestna {dfv=of} edx, ecx

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

Lines changed: 45 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-32: error:
4+
# ERROR-COUNT-46: error:
55
# ERROR-NOT: error:
66
# CHECK: setzuo %al
77
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x40,0xc0]
@@ -99,3 +99,47 @@
9999
# CHECK: setzug (%rax)
100100
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x4f,0x00]
101101
setzug (%rax)
102+
103+
# Alias tests:
104+
# CHECK: setzub %al
105+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc0]
106+
setzunae %al
107+
# CHECK: setzub %al
108+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc0]
109+
setzuc %al
110+
# CHECK: setzuae %al
111+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x43,0xc0]
112+
setzunb %al
113+
# CHECK: setzuae %al
114+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x43,0xc0]
115+
setzunc %al
116+
# CHECK: setzue %al
117+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x44,0xc0]
118+
setzuz %al
119+
# CHECK: setzune %al
120+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x45,0xc0]
121+
setzunz %al
122+
# CHECK: setzube %al
123+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x46,0xc0]
124+
setzuna %al
125+
# CHECK: setzua %al
126+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x47,0xc0]
127+
setzunbe %al
128+
# CHECK: setzup %al
129+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x4a,0xc0]
130+
setzupe %al
131+
# CHECK: setzunp %al
132+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x4b,0xc0]
133+
setzupo %al
134+
# CHECK: setzul %al
135+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x4c,0xc0]
136+
setzunge %al
137+
# CHECK: setzuge %al
138+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x4d,0xc0]
139+
setzunl %al
140+
# CHECK: setzule %al
141+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x4e,0xc0]
142+
setzung %al
143+
# CHECK: setzug %al
144+
# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x4f,0xc0]
145+
setzunle %al

0 commit comments

Comments
 (0)