1# RUN: llvm-mc %s -triple=riscv32 -mattr=+a -riscv-no-aliases \
2# RUN:     | FileCheck -check-prefixes=CHECK-S-NOALIAS,CHECK-S-OBJ-NOALIAS %s
3# RUN: llvm-mc %s -triple=riscv32 -mattr=+a \
4# RUN:     | FileCheck -check-prefixes=CHECK-S,CHECK-S-OBJ %s
5# RUN: llvm-mc %s -triple=riscv64 -mattr=+a -riscv-no-aliases\
6# RUN:     | FileCheck -check-prefixes=CHECK-S-NOALIAS,CHECK-S-OBJ-NOALIAS %s
7# RUN: llvm-mc %s -triple=riscv64 -mattr=+a \
8# RUN:     | FileCheck -check-prefixes=CHECK-S,CHECK-S-OBJ %s
9# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+a < %s \
10# RUN:     | llvm-objdump -d --mattr=+a -M no-aliases - \
11# RUN:     | FileCheck -check-prefixes=CHECK-OBJ-NOALIAS,CHECK-S-OBJ-NOALIAS %s
12# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+a < %s \
13# RUN:     | llvm-objdump -d --mattr=+a - \
14# RUN:     | FileCheck -check-prefixes=CHECK-OBJ,CHECK-S-OBJ %s
15# RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+a < %s \
16# RUN:     | llvm-objdump -d --mattr=+a -M no-aliases - \
17# RUN:     | FileCheck -check-prefixes=CHECK-OBJ-NOALIAS,CHECK-S-OBJ-NOALIAS %s
18# RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+a < %s \
19# RUN:     | llvm-objdump -d --mattr=+a - \
20# RUN:     | FileCheck -check-prefixes=CHECK-OBJ,CHECK-S-OBJ %s
21
22# The following check prefixes are used in this test:
23# CHECK-S                 Match the .s output with aliases enabled
24# CHECK-S-NOALIAS         Match the .s output with aliases disabled
25# CHECK-OBJ               Match the objdumped object output with aliases enabled
26# CHECK-OBJ-NOALIAS       Match the objdumped object output with aliases enabled
27# CHECK-S-OBJ             Match both the .s and objdumped object output with
28#                         aliases enabled
29# CHECK-S-OBJ-NOALIAS     Match both the .s and objdumped object output with
30#                         aliases disabled
31
32# The below tests for lr.w, sc.w and amo*.w, using `0(reg)` are actually
33# implemented using a custom parser, but we test them as if they're aliases.
34
35# CHECK-S: lr.w a1, (a0)
36# CHECK-S-NOALIAS: lr.w a1, (a0)
37# CHECK-OBJ: lr.w a1, (a0)
38# CHECK-OBJ-NOALIAS: lr.w a1, (a0)
39lr.w a1, 0(a0)
40
41# CHECK-S: lr.w.aq a1, (a0)
42# CHECK-S-NOALIAS: lr.w.aq a1, (a0)
43# CHECK-OBJ: lr.w.aq a1, (a0)
44# CHECK-OBJ-NOALIAS: lr.w.aq a1, (a0)
45lr.w.aq a1, 0(a0)
46
47# CHECK-S: lr.w.rl a1, (a0)
48# CHECK-S-NOALIAS: lr.w.rl a1, (a0)
49# CHECK-OBJ: lr.w.rl a1, (a0)
50# CHECK-OBJ-NOALIAS: lr.w.rl a1, (a0)
51lr.w.rl a1, 0(a0)
52
53# CHECK-S: lr.w.aqrl a1, (a0)
54# CHECK-S-NOALIAS: lr.w.aqrl a1, (a0)
55# CHECK-OBJ: lr.w.aqrl a1, (a0)
56# CHECK-OBJ-NOALIAS: lr.w.aqrl a1, (a0)
57lr.w.aqrl a1, 0(a0)
58
59# CHECK-S: sc.w a2, a1, (a0)
60# CHECK-S-NOALIAS: sc.w a2, a1, (a0)
61# CHECK-OBJ: sc.w a2, a1, (a0)
62# CHECK-OBJ-NOALIAS: sc.w a2, a1, (a0)
63sc.w a2, a1, 0(a0)
64
65# CHECK-S: sc.w.aq a2, a1, (a0)
66# CHECK-S-NOALIAS: sc.w.aq a2, a1, (a0)
67# CHECK-OBJ: sc.w.aq a2, a1, (a0)
68# CHECK-OBJ-NOALIAS: sc.w.aq a2, a1, (a0)
69sc.w.aq a2, a1, 0(a0)
70
71# CHECK-S: sc.w.rl a2, a1, (a0)
72# CHECK-S-NOALIAS: sc.w.rl a2, a1, (a0)
73# CHECK-OBJ: sc.w.rl a2, a1, (a0)
74# CHECK-OBJ-NOALIAS: sc.w.rl a2, a1, (a0)
75sc.w.rl a2, a1, 0(a0)
76
77# CHECK-S: sc.w.aqrl a2, a1, (a0)
78# CHECK-S-NOALIAS: sc.w.aqrl a2, a1, (a0)
79# CHECK-OBJ: sc.w.aqrl a2, a1, (a0)
80# CHECK-OBJ-NOALIAS: sc.w.aqrl a2, a1, (a0)
81sc.w.aqrl a2, a1, 0(a0)
82
83# CHECK-S: amoswap.w a2, a1, (a0)
84# CHECK-S-NOALIAS: amoswap.w a2, a1, (a0)
85# CHECK-OBJ: amoswap.w a2, a1, (a0)
86# CHECK-OBJ-NOALIAS: amoswap.w a2, a1, (a0)
87amoswap.w a2, a1, 0(a0)
88
89# CHECK-S: amoswap.w.aq a2, a1, (a0)
90# CHECK-S-NOALIAS: amoswap.w.aq a2, a1, (a0)
91# CHECK-OBJ: amoswap.w.aq a2, a1, (a0)
92# CHECK-OBJ-NOALIAS: amoswap.w.aq a2, a1, (a0)
93amoswap.w.aq a2, a1, 0(a0)
94
95# CHECK-S: amoswap.w.rl a2, a1, (a0)
96# CHECK-S-NOALIAS: amoswap.w.rl a2, a1, (a0)
97# CHECK-OBJ: amoswap.w.rl a2, a1, (a0)
98# CHECK-OBJ-NOALIAS: amoswap.w.rl a2, a1, (a0)
99amoswap.w.rl a2, a1, 0(a0)
100
101# CHECK-S: amoswap.w.aqrl a2, a1, (a0)
102# CHECK-S-NOALIAS: amoswap.w.aqrl a2, a1, (a0)
103# CHECK-OBJ: amoswap.w.aqrl a2, a1, (a0)
104# CHECK-OBJ-NOALIAS: amoswap.w.aqrl a2, a1, (a0)
105amoswap.w.aqrl a2, a1, 0(a0)
106
107# CHECK-S: amoadd.w a2, a1, (a0)
108# CHECK-S-NOALIAS: amoadd.w a2, a1, (a0)
109# CHECK-OBJ: amoadd.w a2, a1, (a0)
110# CHECK-OBJ-NOALIAS: amoadd.w a2, a1, (a0)
111amoadd.w a2, a1, 0(a0)
112
113# CHECK-S: amoadd.w.aq a2, a1, (a0)
114# CHECK-S-NOALIAS: amoadd.w.aq a2, a1, (a0)
115# CHECK-OBJ: amoadd.w.aq a2, a1, (a0)
116# CHECK-OBJ-NOALIAS: amoadd.w.aq a2, a1, (a0)
117amoadd.w.aq a2, a1, 0(a0)
118
119# CHECK-S: amoadd.w.rl a2, a1, (a0)
120# CHECK-S-NOALIAS: amoadd.w.rl a2, a1, (a0)
121# CHECK-OBJ: amoadd.w.rl a2, a1, (a0)
122# CHECK-OBJ-NOALIAS: amoadd.w.rl a2, a1, (a0)
123amoadd.w.rl a2, a1, 0(a0)
124
125# CHECK-S: amoadd.w.aqrl a2, a1, (a0)
126# CHECK-S-NOALIAS: amoadd.w.aqrl a2, a1, (a0)
127# CHECK-OBJ: amoadd.w.aqrl a2, a1, (a0)
128# CHECK-OBJ-NOALIAS: amoadd.w.aqrl a2, a1, (a0)
129amoadd.w.aqrl a2, a1, 0(a0)
130
131# CHECK-S: amoxor.w a2, a1, (a0)
132# CHECK-S-NOALIAS: amoxor.w a2, a1, (a0)
133# CHECK-OBJ: amoxor.w a2, a1, (a0)
134# CHECK-OBJ-NOALIAS: amoxor.w a2, a1, (a0)
135amoxor.w a2, a1, 0(a0)
136
137# CHECK-S: amoxor.w.aq a2, a1, (a0)
138# CHECK-S-NOALIAS: amoxor.w.aq a2, a1, (a0)
139# CHECK-OBJ: amoxor.w.aq a2, a1, (a0)
140# CHECK-OBJ-NOALIAS: amoxor.w.aq a2, a1, (a0)
141amoxor.w.aq a2, a1, 0(a0)
142
143# CHECK-S: amoxor.w.rl a2, a1, (a0)
144# CHECK-S-NOALIAS: amoxor.w.rl a2, a1, (a0)
145# CHECK-OBJ: amoxor.w.rl a2, a1, (a0)
146# CHECK-OBJ-NOALIAS: amoxor.w.rl a2, a1, (a0)
147amoxor.w.rl a2, a1, 0(a0)
148
149# CHECK-S: amoxor.w.aqrl a2, a1, (a0)
150# CHECK-S-NOALIAS: amoxor.w.aqrl a2, a1, (a0)
151# CHECK-OBJ: amoxor.w.aqrl a2, a1, (a0)
152# CHECK-OBJ-NOALIAS: amoxor.w.aqrl a2, a1, (a0)
153amoxor.w.aqrl a2, a1, 0(a0)
154
155# CHECK-S: amoand.w a2, a1, (a0)
156# CHECK-S-NOALIAS: amoand.w a2, a1, (a0)
157# CHECK-OBJ: amoand.w a2, a1, (a0)
158# CHECK-OBJ-NOALIAS: amoand.w a2, a1, (a0)
159amoand.w a2, a1, 0(a0)
160
161# CHECK-S: amoand.w.aq a2, a1, (a0)
162# CHECK-S-NOALIAS: amoand.w.aq a2, a1, (a0)
163# CHECK-OBJ: amoand.w.aq a2, a1, (a0)
164# CHECK-OBJ-NOALIAS: amoand.w.aq a2, a1, (a0)
165amoand.w.aq a2, a1, 0(a0)
166
167# CHECK-S: amoand.w.rl a2, a1, (a0)
168# CHECK-S-NOALIAS: amoand.w.rl a2, a1, (a0)
169# CHECK-OBJ: amoand.w.rl a2, a1, (a0)
170# CHECK-OBJ-NOALIAS: amoand.w.rl a2, a1, (a0)
171amoand.w.rl a2, a1, 0(a0)
172
173# CHECK-S: amoand.w.aqrl a2, a1, (a0)
174# CHECK-S-NOALIAS: amoand.w.aqrl a2, a1, (a0)
175# CHECK-OBJ: amoand.w.aqrl a2, a1, (a0)
176# CHECK-OBJ-NOALIAS: amoand.w.aqrl a2, a1, (a0)
177amoand.w.aqrl a2, a1, 0(a0)
178
179# CHECK-S: amoor.w a2, a1, (a0)
180# CHECK-S-NOALIAS: amoor.w a2, a1, (a0)
181# CHECK-OBJ: amoor.w a2, a1, (a0)
182# CHECK-OBJ-NOALIAS: amoor.w a2, a1, (a0)
183amoor.w a2, a1, 0(a0)
184
185# CHECK-S: amoor.w.aq a2, a1, (a0)
186# CHECK-S-NOALIAS: amoor.w.aq a2, a1, (a0)
187# CHECK-OBJ: amoor.w.aq a2, a1, (a0)
188# CHECK-OBJ-NOALIAS: amoor.w.aq a2, a1, (a0)
189amoor.w.aq a2, a1, 0(a0)
190
191# CHECK-S: amoor.w.rl a2, a1, (a0)
192# CHECK-S-NOALIAS: amoor.w.rl a2, a1, (a0)
193# CHECK-OBJ: amoor.w.rl a2, a1, (a0)
194# CHECK-OBJ-NOALIAS: amoor.w.rl a2, a1, (a0)
195amoor.w.rl a2, a1, 0(a0)
196
197# CHECK-S: amoor.w.aqrl a2, a1, (a0)
198# CHECK-S-NOALIAS: amoor.w.aqrl a2, a1, (a0)
199# CHECK-OBJ: amoor.w.aqrl a2, a1, (a0)
200# CHECK-OBJ-NOALIAS: amoor.w.aqrl a2, a1, (a0)
201amoor.w.aqrl a2, a1, 0(a0)
202
203# CHECK-S: amomin.w a2, a1, (a0)
204# CHECK-S-NOALIAS: amomin.w a2, a1, (a0)
205# CHECK-OBJ: amomin.w a2, a1, (a0)
206# CHECK-OBJ-NOALIAS: amomin.w a2, a1, (a0)
207amomin.w a2, a1, 0(a0)
208
209# CHECK-S: amomin.w.aq a2, a1, (a0)
210# CHECK-S-NOALIAS: amomin.w.aq a2, a1, (a0)
211# CHECK-OBJ: amomin.w.aq a2, a1, (a0)
212# CHECK-OBJ-NOALIAS: amomin.w.aq a2, a1, (a0)
213amomin.w.aq a2, a1, 0(a0)
214
215# CHECK-S: amomin.w.rl a2, a1, (a0)
216# CHECK-S-NOALIAS: amomin.w.rl a2, a1, (a0)
217# CHECK-OBJ: amomin.w.rl a2, a1, (a0)
218# CHECK-OBJ-NOALIAS: amomin.w.rl a2, a1, (a0)
219amomin.w.rl a2, a1, 0(a0)
220
221# CHECK-S: amomin.w.aqrl a2, a1, (a0)
222# CHECK-S-NOALIAS: amomin.w.aqrl a2, a1, (a0)
223# CHECK-OBJ: amomin.w.aqrl a2, a1, (a0)
224# CHECK-OBJ-NOALIAS: amomin.w.aqrl a2, a1, (a0)
225amomin.w.aqrl a2, a1, 0(a0)
226
227# CHECK-S: amomax.w a2, a1, (a0)
228# CHECK-S-NOALIAS: amomax.w a2, a1, (a0)
229# CHECK-OBJ: amomax.w a2, a1, (a0)
230# CHECK-OBJ-NOALIAS: amomax.w a2, a1, (a0)
231amomax.w a2, a1, 0(a0)
232
233# CHECK-S: amomax.w.aq a2, a1, (a0)
234# CHECK-S-NOALIAS: amomax.w.aq a2, a1, (a0)
235# CHECK-OBJ: amomax.w.aq a2, a1, (a0)
236# CHECK-OBJ-NOALIAS: amomax.w.aq a2, a1, (a0)
237amomax.w.aq a2, a1, 0(a0)
238
239# CHECK-S: amomax.w.rl a2, a1, (a0)
240# CHECK-S-NOALIAS: amomax.w.rl a2, a1, (a0)
241# CHECK-OBJ: amomax.w.rl a2, a1, (a0)
242# CHECK-OBJ-NOALIAS: amomax.w.rl a2, a1, (a0)
243amomax.w.rl a2, a1, 0(a0)
244
245# CHECK-S: amomax.w.aqrl a2, a1, (a0)
246# CHECK-S-NOALIAS: amomax.w.aqrl a2, a1, (a0)
247# CHECK-OBJ: amomax.w.aqrl a2, a1, (a0)
248# CHECK-OBJ-NOALIAS: amomax.w.aqrl a2, a1, (a0)
249amomax.w.aqrl a2, a1, 0(a0)
250
251# CHECK-S: amominu.w a2, a1, (a0)
252# CHECK-S-NOALIAS: amominu.w a2, a1, (a0)
253# CHECK-OBJ: amominu.w a2, a1, (a0)
254# CHECK-OBJ-NOALIAS: amominu.w a2, a1, (a0)
255amominu.w a2, a1, 0(a0)
256
257# CHECK-S: amominu.w.aq a2, a1, (a0)
258# CHECK-S-NOALIAS: amominu.w.aq a2, a1, (a0)
259# CHECK-OBJ: amominu.w.aq a2, a1, (a0)
260# CHECK-OBJ-NOALIAS: amominu.w.aq a2, a1, (a0)
261amominu.w.aq a2, a1, 0(a0)
262
263# CHECK-S: amominu.w.rl a2, a1, (a0)
264# CHECK-S-NOALIAS: amominu.w.rl a2, a1, (a0)
265# CHECK-OBJ: amominu.w.rl a2, a1, (a0)
266# CHECK-OBJ-NOALIAS: amominu.w.rl a2, a1, (a0)
267amominu.w.rl a2, a1, 0(a0)
268
269# CHECK-S: amominu.w.aqrl a2, a1, (a0)
270# CHECK-S-NOALIAS: amominu.w.aqrl a2, a1, (a0)
271# CHECK-OBJ: amominu.w.aqrl a2, a1, (a0)
272# CHECK-OBJ-NOALIAS: amominu.w.aqrl a2, a1, (a0)
273amominu.w.aqrl a2, a1, 0(a0)
274
275# CHECK-S: amomaxu.w a2, a1, (a0)
276# CHECK-S-NOALIAS: amomaxu.w a2, a1, (a0)
277# CHECK-OBJ: amomaxu.w a2, a1, (a0)
278# CHECK-OBJ-NOALIAS: amomaxu.w a2, a1, (a0)
279amomaxu.w a2, a1, 0(a0)
280
281# CHECK-S: amomaxu.w.aq a2, a1, (a0)
282# CHECK-S-NOALIAS: amomaxu.w.aq a2, a1, (a0)
283# CHECK-OBJ: amomaxu.w.aq a2, a1, (a0)
284# CHECK-OBJ-NOALIAS: amomaxu.w.aq a2, a1, (a0)
285amomaxu.w.aq a2, a1, 0(a0)
286
287# CHECK-S: amomaxu.w.rl a2, a1, (a0)
288# CHECK-S-NOALIAS: amomaxu.w.rl a2, a1, (a0)
289# CHECK-OBJ: amomaxu.w.rl a2, a1, (a0)
290# CHECK-OBJ-NOALIAS: amomaxu.w.rl a2, a1, (a0)
291amomaxu.w.rl a2, a1, 0(a0)
292
293# CHECK-S: amomaxu.w.aqrl a2, a1, (a0)
294# CHECK-S-NOALIAS: amomaxu.w.aqrl a2, a1, (a0)
295# CHECK-OBJ: amomaxu.w.aqrl a2, a1, (a0)
296# CHECK-OBJ-NOALIAS: amomaxu.w.aqrl a2, a1, (a0)
297amomaxu.w.aqrl a2, a1, 0(a0)
298