1# RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-b -riscv-no-aliases \
2# RUN:     | FileCheck -check-prefixes=CHECK-S-OBJ-NOALIAS %s
3# RUN: llvm-mc %s  -triple=riscv64 -mattr=+experimental-b \
4# RUN:     | FileCheck -check-prefixes=CHECK-S-OBJ %s
5# RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+experimental-b < %s \
6# RUN:     | llvm-objdump -d -r --riscv-no-aliases --mattr=+experimental-b - \
7# RUN:     | FileCheck -check-prefixes=CHECK-S-OBJ-NOALIAS %s
8# RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+experimental-b < %s \
9# RUN:     | llvm-objdump -d -r --mattr=+experimental-b - \
10# RUN:     | FileCheck -check-prefixes=CHECK-S-OBJ %s
11
12# The following check prefixes are used in this test:
13# CHECK-S-OBJ            Match both the .s and objdumped object output with
14#                        aliases enabled
15# CHECK-S-OBJ-NOALIAS    Match both the .s and objdumped object output with
16#                        aliases disabled
17
18# CHECK-S-OBJ-NOALIAS: andi t0, t1, 255
19# CHECK-S-OBJ: zext.b t0, t1
20zext.b x5, x6
21
22# CHECK-S-OBJ-NOALIAS: packw t0, t1, zero
23# CHECK-S-OBJ: zext.h t0, t1
24zext.h x5, x6
25
26# CHECK-S-OBJ-NOALIAS: pack t0, t1, zero
27# CHECK-S-OBJ: zext.w t0, t1
28zext.w x5, x6
29
30# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 1
31# CHECK-S-OBJ: rev.p t0, t1
32rev.p x5, x6
33
34# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 2
35# CHECK-S-OBJ: rev2.n t0, t1
36rev2.n x5, x6
37
38# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 3
39# CHECK-S-OBJ: rev.n t0, t1
40rev.n x5, x6
41
42# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 4
43# CHECK-S-OBJ: rev4.b t0, t1
44rev4.b x5, x6
45
46# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 6
47# CHECK-S-OBJ: rev2.b t0, t1
48rev2.b x5, x6
49
50# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 7
51# CHECK-S-OBJ: rev.b t0, t1
52rev.b x5, x6
53
54# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 8
55# CHECK-S-OBJ: rev8.h t0, t1
56rev8.h x5, x6
57
58# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 12
59# CHECK-S-OBJ: rev4.h t0, t1
60rev4.h x5, x6
61
62# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 14
63# CHECK-S-OBJ: rev2.h t0, t1
64rev2.h x5, x6
65
66# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 15
67# CHECK-S-OBJ: rev.h t0, t1
68rev.h x5, x6
69
70# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 16
71# CHECK-S-OBJ: rev16.w t0, t1
72rev16.w x5, x6
73
74# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 24
75# CHECK-S-OBJ: rev8.w t0, t1
76rev8.w x5, x6
77
78# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 28
79# CHECK-S-OBJ: rev4.w t0, t1
80rev4.w x5, x6
81
82# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 30
83# CHECK-S-OBJ: rev2.w t0, t1
84rev2.w x5, x6
85
86# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 31
87# CHECK-S-OBJ: rev.w t0, t1
88rev.w x5, x6
89
90# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 32
91# CHECK-S-OBJ: rev32 t0, t1
92rev32 x5, x6
93
94# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 48
95# CHECK-S-OBJ: rev16 t0, t1
96rev16 x5, x6
97
98# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 56
99# CHECK-S-OBJ: rev8 t0, t1
100rev8 x5, x6
101
102# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 60
103# CHECK-S-OBJ: rev4 t0, t1
104rev4 x5, x6
105
106# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 62
107# CHECK-S-OBJ: rev2 t0, t1
108rev2 x5, x6
109
110# CHECK-S-OBJ-NOALIAS: grevi t0, t1, 63
111# CHECK-S-OBJ: rev t0, t1
112rev x5, x6
113
114# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 1
115# CHECK-S-OBJ: zip.n t0, t1
116zip.n x5, x6
117
118# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 1
119# CHECK-S-OBJ: unzip.n t0, t1
120unzip.n x5, x6
121
122# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 2
123# CHECK-S-OBJ: zip2.b t0, t1
124zip2.b x5, x6
125
126# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 2
127# CHECK-S-OBJ: unzip2.b t0, t1
128unzip2.b x5, x6
129
130# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 3
131# CHECK-S-OBJ: zip.b t0, t1
132zip.b x5, x6
133
134# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 3
135# CHECK-S-OBJ: unzip.b t0, t1
136unzip.b x5, x6
137
138# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 4
139# CHECK-S-OBJ: zip4.h t0, t1
140zip4.h x5, x6
141
142# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 4
143# CHECK-S-OBJ: unzip4.h t0, t1
144unzip4.h x5, x6
145
146# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 6
147# CHECK-S-OBJ: zip2.h t0, t1
148zip2.h x5, x6
149
150# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 6
151# CHECK-S-OBJ: unzip2.h t0, t1
152unzip2.h x5, x6
153
154# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 7
155# CHECK-S-OBJ: zip.h t0, t1
156zip.h x5, x6
157
158# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 7
159# CHECK-S-OBJ: unzip.h t0, t1
160unzip.h x5, x6
161
162# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 8
163# CHECK-S-OBJ: zip8.w t0, t1
164zip8.w x5, x6
165
166# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 8
167# CHECK-S-OBJ: unzip8.w t0, t1
168unzip8.w x5, x6
169
170# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 12
171# CHECK-S-OBJ: zip4.w t0, t1
172zip4.w x5, x6
173
174# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 12
175# CHECK-S-OBJ: unzip4.w t0, t1
176unzip4.w x5, x6
177
178# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 14
179# CHECK-S-OBJ: zip2.w t0, t1
180zip2.w x5, x6
181
182# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 14
183# CHECK-S-OBJ: unzip2.w t0, t1
184unzip2.w x5, x6
185
186# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 15
187# CHECK-S-OBJ: zip.w t0, t1
188zip.w x5, x6
189
190# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 15
191# CHECK-S-OBJ: unzip.w t0, t1
192unzip.w x5, x6
193
194# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 16
195# CHECK-S-OBJ: zip16 t0, t1
196zip16 x5, x6
197
198# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 16
199# CHECK-S-OBJ: unzip16 t0, t1
200unzip16 x5, x6
201
202# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 24
203# CHECK-S-OBJ: zip8 t0, t1
204zip8 x5, x6
205
206# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 24
207# CHECK-S-OBJ: unzip8 t0, t1
208unzip8 x5, x6
209
210# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 28
211# CHECK-S-OBJ: zip4 t0, t1
212zip4 x5, x6
213
214# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 28
215# CHECK-S-OBJ: unzip4 t0, t1
216unzip4 x5, x6
217
218# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 30
219# CHECK-S-OBJ: zip2 t0, t1
220zip2 x5, x6
221
222# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 30
223# CHECK-S-OBJ: unzip2 t0, t1
224unzip2 x5, x6
225
226# CHECK-S-OBJ-NOALIAS: shfli t0, t1, 31
227# CHECK-S-OBJ: zip t0, t1
228zip x5, x6
229
230# CHECK-S-OBJ-NOALIAS: unshfli t0, t1, 31
231# CHECK-S-OBJ: unzip t0, t1
232unzip x5, x6
233
234# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 1
235# CHECK-S-OBJ: orc.p t0, t1
236orc.p x5, x6
237
238# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 2
239# CHECK-S-OBJ: orc2.n t0, t1
240orc2.n x5, x6
241
242# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 3
243# CHECK-S-OBJ: orc.n t0, t1
244orc.n x5, x6
245
246# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 4
247# CHECK-S-OBJ: orc4.b t0, t1
248orc4.b x5, x6
249
250# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 6
251# CHECK-S-OBJ: orc2.b t0, t1
252orc2.b x5, x6
253
254# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 7
255# CHECK-S-OBJ: orc.b t0, t1
256orc.b x5, x6
257
258# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 8
259# CHECK-S-OBJ: orc8.h t0, t1
260orc8.h x5, x6
261
262# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 12
263# CHECK-S-OBJ: orc4.h t0, t1
264orc4.h x5, x6
265
266# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 14
267# CHECK-S-OBJ: orc2.h t0, t1
268orc2.h x5, x6
269
270# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 15
271# CHECK-S-OBJ: orc.h t0, t1
272orc.h x5, x6
273
274# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 16
275# CHECK-S-OBJ: orc16.w t0, t1
276orc16.w x5, x6
277
278# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 24
279# CHECK-S-OBJ: orc8.w t0, t1
280orc8.w x5, x6
281
282# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 28
283# CHECK-S-OBJ: orc4.w t0, t1
284orc4.w x5, x6
285
286# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 30
287# CHECK-S-OBJ: orc2.w t0, t1
288orc2.w x5, x6
289
290# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 31
291# CHECK-S-OBJ: orc.w t0, t1
292orc.w x5, x6
293
294# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 32
295# CHECK-S-OBJ: orc32 t0, t1
296orc32 x5, x6
297
298# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 48
299# CHECK-S-OBJ: orc16 t0, t1
300orc16 x5, x6
301
302# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 56
303# CHECK-S-OBJ: orc8 t0, t1
304orc8 x5, x6
305
306# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 60
307# CHECK-S-OBJ: orc4 t0, t1
308orc4 x5, x6
309
310# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 62
311# CHECK-S-OBJ: orc2 t0, t1
312orc2 x5, x6
313
314# CHECK-S-OBJ-NOALIAS: gorci t0, t1, 63
315# CHECK-S-OBJ: orc t0, t1
316orc x5, x6
317