Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / instruction-select / zba-rv64.mir
blobf656f13b59d42e63291b58b421c1d88bb846d6b7
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3
2 # RUN: llc -mtriple=riscv64 -mattr='+zba' -run-pass=instruction-select -simplify-mir -verify-machineinstrs %s -o - \
3 # RUN: | FileCheck %s
5 ---
6 name:            sh1add
7 legalized:       true
8 regBankSelected: true
9 tracksRegLiveness: true
10 body:             |
11   bb.0.entry:
12     liveins: $x10, $x11
14     ; CHECK-LABEL: name: sh1add
15     ; CHECK: liveins: $x10, $x11
16     ; CHECK-NEXT: {{  $}}
17     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
18     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
19     ; CHECK-NEXT: [[SH1ADD:%[0-9]+]]:gpr = SH1ADD [[COPY]], [[COPY1]]
20     ; CHECK-NEXT: $x10 = COPY [[SH1ADD]]
21     %0:gprb(s64) = COPY $x10
22     %1:gprb(s64) = COPY $x11
23     %2:gprb(s64) = G_CONSTANT i64 1
24     %3:gprb(s64) = G_SHL %0, %2
25     %4:gprb(s64) = G_ADD %3, %1
26     $x10 = COPY %4(s64)
27 ...
28 ---
29 name:            sh2add
30 legalized:       true
31 regBankSelected: true
32 tracksRegLiveness: true
33 body:             |
34   bb.0.entry:
35     liveins: $x10, $x11
37     ; CHECK-LABEL: name: sh2add
38     ; CHECK: liveins: $x10, $x11
39     ; CHECK-NEXT: {{  $}}
40     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
41     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
42     ; CHECK-NEXT: [[SH2ADD:%[0-9]+]]:gpr = SH2ADD [[COPY]], [[COPY1]]
43     ; CHECK-NEXT: $x10 = COPY [[SH2ADD]]
44     %0:gprb(s64) = COPY $x10
45     %1:gprb(s64) = COPY $x11
46     %2:gprb(s64) = G_CONSTANT i64 2
47     %3:gprb(s64) = G_SHL %0, %2
48     %4:gprb(s64) = G_ADD %3, %1
49     $x10 = COPY %4(s64)
50 ...
51 ---
52 name:            sh3add
53 legalized:       true
54 regBankSelected: true
55 tracksRegLiveness: true
56 body:             |
57   bb.0.entry:
58     liveins: $x10, $x11
60     ; CHECK-LABEL: name: sh3add
61     ; CHECK: liveins: $x10, $x11
62     ; CHECK-NEXT: {{  $}}
63     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
64     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
65     ; CHECK-NEXT: [[SH3ADD:%[0-9]+]]:gpr = SH3ADD [[COPY]], [[COPY1]]
66     ; CHECK-NEXT: $x10 = COPY [[SH3ADD]]
67     %0:gprb(s64) = COPY $x10
68     %1:gprb(s64) = COPY $x11
69     %2:gprb(s64) = G_CONSTANT i64 3
70     %3:gprb(s64) = G_SHL %0, %2
71     %4:gprb(s64) = G_ADD %3, %1
72     $x10 = COPY %4(s64)
73 ...
74 ---
75 name:            no_sh1add
76 legalized:       true
77 regBankSelected: true
78 tracksRegLiveness: true
79 body:             |
80   bb.0.entry:
81     liveins: $x10, $x11
83     ; CHECK-LABEL: name: no_sh1add
84     ; CHECK: liveins: $x10, $x11
85     ; CHECK-NEXT: {{  $}}
86     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
87     ; CHECK-NEXT: [[SLLI:%[0-9]+]]:gpr = SLLI [[COPY]], 1
88     ; CHECK-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI [[SLLI]], 37
89     ; CHECK-NEXT: $x10 = COPY [[ADDI]]
90     %0:gprb(s64) = COPY $x10
91     %1:gprb(s64) = G_CONSTANT i64 37
92     %2:gprb(s64) = G_CONSTANT i64 1
93     %3:gprb(s64) = G_SHL %0, %2
94     %4:gprb(s64) = G_ADD %3, %1
95     $x10 = COPY %4(s64)
96 ...
97 ---
98 name:            shXadd_complex_and_shl
99 legalized:       true
100 regBankSelected: true
101 tracksRegLiveness: true
102 body:             |
103   bb.0.entry:
104     liveins: $x10, $x11
106     ; CHECK-LABEL: name: shXadd_complex_and_shl
107     ; CHECK: liveins: $x10, $x11
108     ; CHECK-NEXT: {{  $}}
109     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
110     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
111     ; CHECK-NEXT: [[SRLIW:%[0-9]+]]:gpr = SRLIW [[COPY]], 1
112     ; CHECK-NEXT: [[SH3ADD:%[0-9]+]]:gpr = SH3ADD [[SRLIW]], [[COPY1]]
113     ; CHECK-NEXT: $x10 = COPY [[SH3ADD]]
114     %0:gprb(s64) = COPY $x10
115     %1:gprb(s64) = COPY $x11
117     %2:gprb(s64) = G_CONSTANT i64 4294967294
118     %3:gprb(s64) = G_AND %0, %2
119     %4:gprb(s64) = G_CONSTANT i64 2
120     %5:gprb(s64) = G_SHL %3, %4
122     %6:gprb(s64) = G_ADD %5, %1
123     $x10 = COPY %6(s64)
126 name:            shXadd_complex_and_lshr
127 legalized:       true
128 regBankSelected: true
129 tracksRegLiveness: true
130 body:             |
131   bb.0.entry:
132     liveins: $x10, $x11
134     ; CHECK-LABEL: name: shXadd_complex_and_lshr
135     ; CHECK: liveins: $x10, $x11
136     ; CHECK-NEXT: {{  $}}
137     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
138     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
139     ; CHECK-NEXT: [[SRLIW:%[0-9]+]]:gpr = SRLIW [[COPY]], 2
140     ; CHECK-NEXT: [[SH1ADD:%[0-9]+]]:gpr = SH1ADD [[SRLIW]], [[COPY1]]
141     ; CHECK-NEXT: $x10 = COPY [[SH1ADD]]
142     %0:gprb(s64) = COPY $x10
143     %1:gprb(s64) = COPY $x11
145     %2:gprb(s64) = G_CONSTANT i64 4294967292
146     %3:gprb(s64) = G_AND %0, %2
147     %4:gprb(s64) = G_CONSTANT i64 1
148     %5:gprb(s64) = G_LSHR %3, %4
150     %6:gprb(s64) = G_ADD %5, %1
151     $x10 = COPY %6(s64)
154 name:            shXadd_uw_complex_shl_and
155 legalized:       true
156 regBankSelected: true
157 tracksRegLiveness: true
158 body:             |
159   bb.0.entry:
160     liveins: $x10, $x11
162     ; CHECK-LABEL: name: shXadd_uw_complex_shl_and
163     ; CHECK: liveins: $x10, $x11
164     ; CHECK-NEXT: {{  $}}
165     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
166     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
167     ; CHECK-NEXT: [[SLLI:%[0-9]+]]:gpr = SLLI [[COPY]], 1
168     ; CHECK-NEXT: [[SH2ADD_UW:%[0-9]+]]:gpr = SH2ADD_UW [[SLLI]], [[COPY1]]
169     ; CHECK-NEXT: $x10 = COPY [[SH2ADD_UW]]
170     %0:gprb(s64) = COPY $x10
171     %1:gprb(s64) = COPY $x11
173     %2:gprb(s64) = G_CONSTANT i64 3
174     %3:gprb(s64) = G_SHL %0, %2
175     %4:gprb(s64) = G_CONSTANT i64 17179869183
176     %5:gprb(s64) = G_AND %3, %4
178     %6:gprb(s64) = G_ADD %5, %1
179     $x10 = COPY %6(s64)
182 name:            slli_uw
183 legalized:       true
184 regBankSelected: true
185 tracksRegLiveness: true
186 body:             |
187   bb.0.entry:
188     liveins: $x10
190     ; CHECK-LABEL: name: slli_uw
191     ; CHECK: liveins: $x10
192     ; CHECK-NEXT: {{  $}}
193     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
194     ; CHECK-NEXT: [[SLLI_UW:%[0-9]+]]:gpr = SLLI_UW [[COPY]], 7
195     ; CHECK-NEXT: $x10 = COPY [[SLLI_UW]]
196     %0:gprb(s64) = COPY $x10
198     %1:gprb(s64) = G_CONSTANT i64 4294967295
199     %2:gprb(s64) = G_AND %0, %1
200     %3:gprb(s64) = G_CONSTANT i64 7
201     %4:gprb(s64) = G_SHL %2, %3
203     $x10 = COPY %4(s64)
206 name:            slli_uw_s32
207 legalized:       true
208 regBankSelected: true
209 tracksRegLiveness: true
210 body:             |
211   bb.0.entry:
212     liveins: $x10
214     ; CHECK-LABEL: name: slli_uw_s32
215     ; CHECK: liveins: $x10
216     ; CHECK-NEXT: {{  $}}
217     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
218     ; CHECK-NEXT: [[SLLI_UW:%[0-9]+]]:gpr = SLLI_UW [[COPY]], 7
219     ; CHECK-NEXT: $x10 = COPY [[SLLI_UW]]
220     %0:gprb(s64) = COPY $x10
221     %1:gprb(s32) = G_TRUNC %0(s64)
223     %2:gprb(s64) = G_ZEXT %1(s32)
224     %3:gprb(s64) = G_CONSTANT i64 7
225     %4:gprb(s64) = G_SHL %2, %3
227     $x10 = COPY %4(s64)
230 name:            slli_uw_complex
231 legalized:       true
232 regBankSelected: true
233 tracksRegLiveness: true
234 body:             |
235   bb.0.entry:
236     liveins: $x10
238     ; CHECK-LABEL: name: slli_uw_complex
239     ; CHECK: liveins: $x10
240     ; CHECK-NEXT: {{  $}}
241     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
242     ; CHECK-NEXT: [[SRLI:%[0-9]+]]:gpr = SRLI [[COPY]], 2
243     ; CHECK-NEXT: [[SLLI_UW:%[0-9]+]]:gpr = SLLI_UW [[SRLI]], 2
244     ; CHECK-NEXT: $x10 = COPY [[SLLI_UW]]
245     %0:gprb(s64) = COPY $x10
247     %1:gprb(s64) = G_CONSTANT i64 17179869180
248     %2:gprb(s64) = G_AND %0, %1
250     $x10 = COPY %2(s64)
253 name:            sh1add_s32
254 legalized:       true
255 regBankSelected: true
256 tracksRegLiveness: true
257 body:             |
258   bb.0.entry:
259     liveins: $x10, $x11
261     ; CHECK-LABEL: name: sh1add_s32
262     ; CHECK: liveins: $x10, $x11
263     ; CHECK-NEXT: {{  $}}
264     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
265     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
266     ; CHECK-NEXT: [[SH1ADD:%[0-9]+]]:gpr = SH1ADD [[COPY]], [[COPY1]]
267     ; CHECK-NEXT: $x10 = COPY [[SH1ADD]]
268     %0:gprb(s64) = COPY $x10
269     %1:gprb(s64) = COPY $x11
270     %2:gprb(s32) = G_TRUNC %0
271     %3:gprb(s32) = G_TRUNC %1
272     %4:gprb(s64) = G_CONSTANT i64 1
273     %5:gprb(s32) = G_SHL %2, %4
274     %6:gprb(s32) = G_ADD %5, %3
275     %7:gprb(s64) = G_ANYEXT %6
276     $x10 = COPY %7(s64)
279 name:            sh2add_s32
280 legalized:       true
281 regBankSelected: true
282 tracksRegLiveness: true
283 body:             |
284   bb.0.entry:
285     liveins: $x10, $x11
287     ; CHECK-LABEL: name: sh2add_s32
288     ; CHECK: liveins: $x10, $x11
289     ; CHECK-NEXT: {{  $}}
290     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
291     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
292     ; CHECK-NEXT: [[SH2ADD:%[0-9]+]]:gpr = SH2ADD [[COPY]], [[COPY1]]
293     ; CHECK-NEXT: $x10 = COPY [[SH2ADD]]
294     %0:gprb(s64) = COPY $x10
295     %1:gprb(s64) = COPY $x11
296     %2:gprb(s32) = G_TRUNC %0
297     %3:gprb(s32) = G_TRUNC %1
298     %4:gprb(s64) = G_CONSTANT i64 2
299     %5:gprb(s32) = G_SHL %2, %4
300     %6:gprb(s32) = G_ADD %5, %3
301     %7:gprb(s64) = G_ANYEXT %6
302     $x10 = COPY %7(s64)
305 name:            sh3add_s32
306 legalized:       true
307 regBankSelected: true
308 tracksRegLiveness: true
309 body:             |
310   bb.0.entry:
311     liveins: $x10, $x11
313     ; CHECK-LABEL: name: sh3add_s32
314     ; CHECK: liveins: $x10, $x11
315     ; CHECK-NEXT: {{  $}}
316     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
317     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
318     ; CHECK-NEXT: [[SH3ADD:%[0-9]+]]:gpr = SH3ADD [[COPY]], [[COPY1]]
319     ; CHECK-NEXT: $x10 = COPY [[SH3ADD]]
320     %0:gprb(s64) = COPY $x10
321     %1:gprb(s64) = COPY $x11
322     %2:gprb(s32) = G_TRUNC %0
323     %3:gprb(s32) = G_TRUNC %1
324     %4:gprb(s64) = G_CONSTANT i64 3
325     %5:gprb(s32) = G_SHL %2, %4
326     %6:gprb(s32) = G_ADD %5, %3
327     %7:gprb(s64) = G_ANYEXT %6
328     $x10 = COPY %7(s64)
331 name:            adduw
332 legalized:       true
333 regBankSelected: true
334 tracksRegLiveness: true
335 body:             |
336   bb.0.entry:
337     liveins: $x10, $x11
339     ; CHECK-LABEL: name: adduw
340     ; CHECK: liveins: $x10, $x11
341     ; CHECK-NEXT: {{  $}}
342     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
343     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
344     ; CHECK-NEXT: [[ADD_UW:%[0-9]+]]:gpr = ADD_UW [[COPY]], [[COPY1]]
345     ; CHECK-NEXT: $x10 = COPY [[ADD_UW]]
346     %0:gprb(s64) = COPY $x10
347     %1:gprb(s64) = COPY $x11
348     %2:gprb(s32) = G_TRUNC %0
349     %3:gprb(s64) = G_ZEXT %2
350     %4:gprb(s64) = G_ADD %3, %1
351     $x10 = COPY %4(s64)