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-prefix=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-prefix=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# CHECK-S: {{^}}
35# CHECK-S-NOALIAS: {{^}}
36# CHECK-OBJ-NOALIAS: {{^}}
37
38# CHECK-S-OBJ: lr.w a1, (a0)
39# CHECK-S-OBJ-NOALIAS: lr.w a1, (a0)
40lr.w a1, 0(a0)
41
42# CHECK-S-OBJ: lr.w.aq a1, (a0)
43# CHECK-S-OBJ-NOALIAS: lr.w.aq a1, (a0)
44lr.w.aq a1, 0(a0)
45
46# CHECK-S-OBJ: lr.w.rl a1, (a0)
47# CHECK-S-OBJ-NOALIAS: lr.w.rl a1, (a0)
48lr.w.rl a1, 0(a0)
49
50# CHECK-S-OBJ: lr.w.aqrl a1, (a0)
51# CHECK-S-OBJ-NOALIAS: lr.w.aqrl a1, (a0)
52lr.w.aqrl a1, 0(a0)
53
54# CHECK-S-OBJ: sc.w a2, a1, (a0)
55# CHECK-S-OBJ-NOALIAS: sc.w a2, a1, (a0)
56sc.w a2, a1, 0(a0)
57
58# CHECK-S-OBJ: sc.w.aq a2, a1, (a0)
59# CHECK-S-OBJ-NOALIAS: sc.w.aq a2, a1, (a0)
60sc.w.aq a2, a1, 0(a0)
61
62# CHECK-S-OBJ: sc.w.rl a2, a1, (a0)
63# CHECK-S-OBJ-NOALIAS: sc.w.rl a2, a1, (a0)
64sc.w.rl a2, a1, 0(a0)
65
66# CHECK-S-OBJ: sc.w.aqrl a2, a1, (a0)
67# CHECK-S-OBJ-NOALIAS: sc.w.aqrl a2, a1, (a0)
68sc.w.aqrl a2, a1, 0(a0)
69
70# CHECK-S-OBJ: amoswap.w a2, a1, (a0)
71# CHECK-S-OBJ-NOALIAS: amoswap.w a2, a1, (a0)
72amoswap.w a2, a1, 0(a0)
73
74# CHECK-S-OBJ: amoswap.w.aq a2, a1, (a0)
75# CHECK-S-OBJ-NOALIAS: amoswap.w.aq a2, a1, (a0)
76amoswap.w.aq a2, a1, 0(a0)
77
78# CHECK-S-OBJ: amoswap.w.rl a2, a1, (a0)
79# CHECK-S-OBJ-NOALIAS: amoswap.w.rl a2, a1, (a0)
80amoswap.w.rl a2, a1, 0(a0)
81
82# CHECK-S-OBJ: amoswap.w.aqrl a2, a1, (a0)
83# CHECK-S-OBJ-NOALIAS: amoswap.w.aqrl a2, a1, (a0)
84amoswap.w.aqrl a2, a1, 0(a0)
85
86# CHECK-S-OBJ: amoadd.w a2, a1, (a0)
87# CHECK-S-OBJ-NOALIAS: amoadd.w a2, a1, (a0)
88amoadd.w a2, a1, 0(a0)
89
90# CHECK-S-OBJ: amoadd.w.aq a2, a1, (a0)
91# CHECK-S-OBJ-NOALIAS: amoadd.w.aq a2, a1, (a0)
92amoadd.w.aq a2, a1, 0(a0)
93
94# CHECK-S-OBJ: amoadd.w.rl a2, a1, (a0)
95# CHECK-S-OBJ-NOALIAS: amoadd.w.rl a2, a1, (a0)
96amoadd.w.rl a2, a1, 0(a0)
97
98# CHECK-S-OBJ: amoadd.w.aqrl a2, a1, (a0)
99# CHECK-S-OBJ-NOALIAS: amoadd.w.aqrl a2, a1, (a0)
100amoadd.w.aqrl a2, a1, 0(a0)
101
102# CHECK-S-OBJ: amoxor.w a2, a1, (a0)
103# CHECK-S-OBJ-NOALIAS: amoxor.w a2, a1, (a0)
104amoxor.w a2, a1, 0(a0)
105
106# CHECK-S-OBJ: amoxor.w.aq a2, a1, (a0)
107# CHECK-S-OBJ-NOALIAS: amoxor.w.aq a2, a1, (a0)
108amoxor.w.aq a2, a1, 0(a0)
109
110# CHECK-S-OBJ: amoxor.w.rl a2, a1, (a0)
111# CHECK-S-OBJ-NOALIAS: amoxor.w.rl a2, a1, (a0)
112amoxor.w.rl a2, a1, 0(a0)
113
114# CHECK-S-OBJ: amoxor.w.aqrl a2, a1, (a0)
115# CHECK-S-OBJ-NOALIAS: amoxor.w.aqrl a2, a1, (a0)
116amoxor.w.aqrl a2, a1, 0(a0)
117
118# CHECK-S-OBJ: amoand.w a2, a1, (a0)
119# CHECK-S-OBJ-NOALIAS: amoand.w a2, a1, (a0)
120amoand.w a2, a1, 0(a0)
121
122# CHECK-S-OBJ: amoand.w.aq a2, a1, (a0)
123# CHECK-S-OBJ-NOALIAS: amoand.w.aq a2, a1, (a0)
124amoand.w.aq a2, a1, 0(a0)
125
126# CHECK-S-OBJ: amoand.w.rl a2, a1, (a0)
127# CHECK-S-OBJ-NOALIAS: amoand.w.rl a2, a1, (a0)
128amoand.w.rl a2, a1, 0(a0)
129
130# CHECK-S-OBJ: amoand.w.aqrl a2, a1, (a0)
131# CHECK-S-OBJ-NOALIAS: amoand.w.aqrl a2, a1, (a0)
132amoand.w.aqrl a2, a1, 0(a0)
133
134# CHECK-S-OBJ: amoor.w a2, a1, (a0)
135# CHECK-S-OBJ-NOALIAS: amoor.w a2, a1, (a0)
136amoor.w a2, a1, 0(a0)
137
138# CHECK-S-OBJ: amoor.w.aq a2, a1, (a0)
139# CHECK-S-OBJ-NOALIAS: amoor.w.aq a2, a1, (a0)
140amoor.w.aq a2, a1, 0(a0)
141
142# CHECK-S-OBJ: amoor.w.rl a2, a1, (a0)
143# CHECK-S-OBJ-NOALIAS: amoor.w.rl a2, a1, (a0)
144amoor.w.rl a2, a1, 0(a0)
145
146# CHECK-S-OBJ: amoor.w.aqrl a2, a1, (a0)
147# CHECK-S-OBJ-NOALIAS: amoor.w.aqrl a2, a1, (a0)
148amoor.w.aqrl a2, a1, 0(a0)
149
150# CHECK-S-OBJ: amomin.w a2, a1, (a0)
151# CHECK-S-OBJ-NOALIAS: amomin.w a2, a1, (a0)
152amomin.w a2, a1, 0(a0)
153
154# CHECK-S-OBJ: amomin.w.aq a2, a1, (a0)
155# CHECK-S-OBJ-NOALIAS: amomin.w.aq a2, a1, (a0)
156amomin.w.aq a2, a1, 0(a0)
157
158# CHECK-S-OBJ: amomin.w.rl a2, a1, (a0)
159# CHECK-S-OBJ-NOALIAS: amomin.w.rl a2, a1, (a0)
160amomin.w.rl a2, a1, 0(a0)
161
162# CHECK-S-OBJ: amomin.w.aqrl a2, a1, (a0)
163# CHECK-S-OBJ-NOALIAS: amomin.w.aqrl a2, a1, (a0)
164amomin.w.aqrl a2, a1, 0(a0)
165
166# CHECK-S-OBJ: amomax.w a2, a1, (a0)
167# CHECK-S-OBJ-NOALIAS: amomax.w a2, a1, (a0)
168amomax.w a2, a1, 0(a0)
169
170# CHECK-S-OBJ: amomax.w.aq a2, a1, (a0)
171# CHECK-S-OBJ-NOALIAS: amomax.w.aq a2, a1, (a0)
172amomax.w.aq a2, a1, 0(a0)
173
174# CHECK-S-OBJ: amomax.w.rl a2, a1, (a0)
175# CHECK-S-OBJ-NOALIAS: amomax.w.rl a2, a1, (a0)
176amomax.w.rl a2, a1, 0(a0)
177
178# CHECK-S-OBJ: amomax.w.aqrl a2, a1, (a0)
179# CHECK-S-OBJ-NOALIAS: amomax.w.aqrl a2, a1, (a0)
180amomax.w.aqrl a2, a1, 0(a0)
181
182# CHECK-S-OBJ: amominu.w a2, a1, (a0)
183# CHECK-S-OBJ-NOALIAS: amominu.w a2, a1, (a0)
184amominu.w a2, a1, 0(a0)
185
186# CHECK-S-OBJ: amominu.w.aq a2, a1, (a0)
187# CHECK-S-OBJ-NOALIAS: amominu.w.aq a2, a1, (a0)
188amominu.w.aq a2, a1, 0(a0)
189
190# CHECK-S-OBJ: amominu.w.rl a2, a1, (a0)
191# CHECK-S-OBJ-NOALIAS: amominu.w.rl a2, a1, (a0)
192amominu.w.rl a2, a1, 0(a0)
193
194# CHECK-S-OBJ: amominu.w.aqrl a2, a1, (a0)
195# CHECK-S-OBJ-NOALIAS: amominu.w.aqrl a2, a1, (a0)
196amominu.w.aqrl a2, a1, 0(a0)
197
198# CHECK-S-OBJ: amomaxu.w a2, a1, (a0)
199# CHECK-S-OBJ-NOALIAS: amomaxu.w a2, a1, (a0)
200amomaxu.w a2, a1, 0(a0)
201
202# CHECK-S-OBJ: amomaxu.w.aq a2, a1, (a0)
203# CHECK-S-OBJ-NOALIAS: amomaxu.w.aq a2, a1, (a0)
204amomaxu.w.aq a2, a1, 0(a0)
205
206# CHECK-S-OBJ: amomaxu.w.rl a2, a1, (a0)
207# CHECK-S-OBJ-NOALIAS: amomaxu.w.rl a2, a1, (a0)
208amomaxu.w.rl a2, a1, 0(a0)
209
210# CHECK-S-OBJ: amomaxu.w.aqrl a2, a1, (a0)
211# CHECK-S-OBJ-NOALIAS: amomaxu.w.aqrl a2, a1, (a0)
212amomaxu.w.aqrl a2, a1, 0(a0)
213