[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / legalizer / legalize-extload-rv32.mir
bloba36ed5345790b9b485113ad8bf58da10826fef50
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -run-pass=legalizer %s -o - \
3 # RUN: | FileCheck %s
5 ---
6 name:            zextload_i8_i16
7 body:             |
8   bb.0:
9     liveins: $x10
11     ; CHECK-LABEL: name: zextload_i8_i16
12     ; CHECK: liveins: $x10
13     ; CHECK-NEXT: {{  $}}
14     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
15     ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))
16     ; CHECK-NEXT: $x10 = COPY [[ZEXTLOAD]](s32)
17     ; CHECK-NEXT: PseudoRET implicit $x10
18     %0:_(p0) = COPY $x10
19     %2:_(s16) = G_ZEXTLOAD %0(p0) :: (load (s8))
20     %3:_(s32) = G_ANYEXT %2(s16)
21     $x10 = COPY %3(s32)
22     PseudoRET implicit $x10
24 ...
25 ---
26 name:            zextload_i8_i32
27 body:             |
28   bb.0:
29     liveins: $x10
31     ; CHECK-LABEL: name: zextload_i8_i32
32     ; CHECK: liveins: $x10
33     ; CHECK-NEXT: {{  $}}
34     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
35     ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))
36     ; CHECK-NEXT: $x10 = COPY [[ZEXTLOAD]](s32)
37     ; CHECK-NEXT: PseudoRET implicit $x10
38     %0:_(p0) = COPY $x10
39     %2:_(s32) = G_ZEXTLOAD %0(p0) :: (load (s8))
40     $x10 = COPY %2(s32)
41     PseudoRET implicit $x10
43 ...
44 ---
45 name:            zextload_i16_i32
46 body:             |
47   bb.0:
48     liveins: $x10
50     ; CHECK-LABEL: name: zextload_i16_i32
51     ; CHECK: liveins: $x10
52     ; CHECK-NEXT: {{  $}}
53     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
54     ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16))
55     ; CHECK-NEXT: $x10 = COPY [[ZEXTLOAD]](s32)
56     ; CHECK-NEXT: PseudoRET implicit $x10
57     %0:_(p0) = COPY $x10
58     %2:_(s32) = G_ZEXTLOAD %0(p0) :: (load (s16))
59     $x10 = COPY %2(s32)
60     PseudoRET implicit $x10
62 ...
63 ---
64 name:            zextload_i8_i64
65 body:             |
66   bb.0:
67     liveins: $x10
69     ; CHECK-LABEL: name: zextload_i8_i64
70     ; CHECK: liveins: $x10
71     ; CHECK-NEXT: {{  $}}
72     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
73     ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))
74     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
75     ; CHECK-NEXT: $x10 = COPY [[ZEXTLOAD]](s32)
76     ; CHECK-NEXT: $x11 = COPY [[C]](s32)
77     ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11
78     %0:_(p0) = COPY $x10
79     %2:_(s64) = G_ZEXTLOAD %0(p0) :: (load (s8))
80     %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)
81     $x10 = COPY %3(s32)
82     $x11 = COPY %4(s32)
83     PseudoRET implicit $x10, implicit $x11
85 ...
86 ---
87 name:            zextload_i16_i64
88 body:             |
89   bb.0:
90     liveins: $x10
92     ; CHECK-LABEL: name: zextload_i16_i64
93     ; CHECK: liveins: $x10
94     ; CHECK-NEXT: {{  $}}
95     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
96     ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16))
97     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
98     ; CHECK-NEXT: $x10 = COPY [[ZEXTLOAD]](s32)
99     ; CHECK-NEXT: $x11 = COPY [[C]](s32)
100     ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11
101     %0:_(p0) = COPY $x10
102     %2:_(s64) = G_ZEXTLOAD %0(p0) :: (load (s16))
103     %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)
104     $x10 = COPY %3(s32)
105     $x11 = COPY %4(s32)
106     PseudoRET implicit $x10, implicit $x11
110 name:            zextload_i32_i64
111 body:             |
112   bb.0:
113     liveins: $x10
115     ; CHECK-LABEL: name: zextload_i32_i64
116     ; CHECK: liveins: $x10
117     ; CHECK-NEXT: {{  $}}
118     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
119     ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
120     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
121     ; CHECK-NEXT: $x10 = COPY [[LOAD]](s32)
122     ; CHECK-NEXT: $x11 = COPY [[C]](s32)
123     ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11
124     %0:_(p0) = COPY $x10
125     %2:_(s64) = G_ZEXTLOAD %0(p0) :: (load (s32))
126     %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)
127     $x10 = COPY %3(s32)
128     $x11 = COPY %4(s32)
129     PseudoRET implicit $x10, implicit $x11
133 name:            sextload_i8_i16
134 body:             |
135   bb.0:
136     liveins: $x10
138     ; CHECK-LABEL: name: sextload_i8_i16
139     ; CHECK: liveins: $x10
140     ; CHECK-NEXT: {{  $}}
141     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
142     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
143     ; CHECK-NEXT: $x10 = COPY [[SEXTLOAD]](s32)
144     ; CHECK-NEXT: PseudoRET implicit $x10
145     %0:_(p0) = COPY $x10
146     %2:_(s16) = G_SEXTLOAD %0(p0) :: (load (s8))
147     %3:_(s32) = G_ANYEXT %2(s16)
148     $x10 = COPY %3(s32)
149     PseudoRET implicit $x10
153 name:            sextload_i8_i32
154 body:             |
155   bb.0:
156     liveins: $x10
158     ; CHECK-LABEL: name: sextload_i8_i32
159     ; CHECK: liveins: $x10
160     ; CHECK-NEXT: {{  $}}
161     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
162     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
163     ; CHECK-NEXT: $x10 = COPY [[SEXTLOAD]](s32)
164     ; CHECK-NEXT: PseudoRET implicit $x10
165     %0:_(p0) = COPY $x10
166     %2:_(s32) = G_SEXTLOAD %0(p0) :: (load (s8))
167     $x10 = COPY %2(s32)
168     PseudoRET implicit $x10
172 name:            sextload_i16_i32
173 body:             |
174   bb.0:
175     liveins: $x10
177     ; CHECK-LABEL: name: sextload_i16_i32
178     ; CHECK: liveins: $x10
179     ; CHECK-NEXT: {{  $}}
180     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
181     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s16))
182     ; CHECK-NEXT: $x10 = COPY [[SEXTLOAD]](s32)
183     ; CHECK-NEXT: PseudoRET implicit $x10
184     %0:_(p0) = COPY $x10
185     %2:_(s32) = G_SEXTLOAD %0(p0) :: (load (s16))
186     $x10 = COPY %2(s32)
187     PseudoRET implicit $x10
191 name:            sextload_i8_i64
192 body:             |
193   bb.0:
194     liveins: $x10
196     ; CHECK-LABEL: name: sextload_i8_i64
197     ; CHECK: liveins: $x10
198     ; CHECK-NEXT: {{  $}}
199     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
200     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
201     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31
202     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SEXTLOAD]], [[C]](s32)
203     ; CHECK-NEXT: $x10 = COPY [[SEXTLOAD]](s32)
204     ; CHECK-NEXT: $x11 = COPY [[ASHR]](s32)
205     ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11
206     %0:_(p0) = COPY $x10
207     %2:_(s64) = G_SEXTLOAD %0(p0) :: (load (s8))
208     %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)
209     $x10 = COPY %3(s32)
210     $x11 = COPY %4(s32)
211     PseudoRET implicit $x10, implicit $x11
215 name:            sextload_i16_i64
216 body:             |
217   bb.0:
218     liveins: $x10
220     ; CHECK-LABEL: name: sextload_i16_i64
221     ; CHECK: liveins: $x10
222     ; CHECK-NEXT: {{  $}}
223     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
224     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s16))
225     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31
226     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SEXTLOAD]], [[C]](s32)
227     ; CHECK-NEXT: $x10 = COPY [[SEXTLOAD]](s32)
228     ; CHECK-NEXT: $x11 = COPY [[ASHR]](s32)
229     ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11
230     %0:_(p0) = COPY $x10
231     %2:_(s64) = G_SEXTLOAD %0(p0) :: (load (s16))
232     %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)
233     $x10 = COPY %3(s32)
234     $x11 = COPY %4(s32)
235     PseudoRET implicit $x10, implicit $x11
239 name:            sextload_i32_i64
240 body:             |
241   bb.0:
242     liveins: $x10
244     ; CHECK-LABEL: name: sextload_i32_i64
245     ; CHECK: liveins: $x10
246     ; CHECK-NEXT: {{  $}}
247     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
248     ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
249     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31
250     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[LOAD]], [[C]](s32)
251     ; CHECK-NEXT: $x10 = COPY [[LOAD]](s32)
252     ; CHECK-NEXT: $x11 = COPY [[ASHR]](s32)
253     ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11
254     %0:_(p0) = COPY $x10
255     %2:_(s64) = G_SEXTLOAD %0(p0) :: (load (s32))
256     %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)
257     $x10 = COPY %3(s32)
258     $x11 = COPY %4(s32)
259     PseudoRET implicit $x10, implicit $x11