[ORC] Fix bug in source file name finding in DebuggerSupportPlugin.
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / legalizer / legalize-itofp-rv32.mir
blob614296583a4633bdbb249d0244dd09cc455f7a56
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -mattr=+d -run-pass=legalizer %s -o - \
3 # RUN: | FileCheck %s
5 ---
6 name:            sitofp_s32_s1
7 tracksRegLiveness: true
8 body:             |
9   bb.1:
10     liveins: $x10
12     ; CHECK-LABEL: name: sitofp_s32_s1
13     ; CHECK: liveins: $x10
14     ; CHECK-NEXT: {{  $}}
15     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
16     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31
17     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)
18     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)
19     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s32)
20     ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)
21     ; CHECK-NEXT: PseudoRET implicit $f10_f
22     %1:_(s32) = COPY $x10
23     %0:_(s1) = G_TRUNC %1(s32)
24     %2:_(s32) = G_SITOFP %0(s1)
25     $f10_f = COPY %2(s32)
26     PseudoRET implicit $f10_f
28 ...
29 ---
30 name:            uitofp_s32_s1
31 tracksRegLiveness: true
32 body:             |
33   bb.1:
34     liveins: $x10
36     ; CHECK-LABEL: name: uitofp_s32_s1
37     ; CHECK: liveins: $x10
38     ; CHECK-NEXT: {{  $}}
39     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
40     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
41     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
42     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)
43     ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)
44     ; CHECK-NEXT: PseudoRET implicit $f10_f
45     %1:_(s32) = COPY $x10
46     %0:_(s1) = G_TRUNC %1(s32)
47     %2:_(s32) = G_UITOFP %0(s1)
48     $f10_f = COPY %2(s32)
49     PseudoRET implicit $f10_f
51 ...
52 ---
53 name:            sitofp_s32_s8
54 tracksRegLiveness: true
55 body:             |
56   bb.1:
57     liveins: $x10
59     ; CHECK-LABEL: name: sitofp_s32_s8
60     ; CHECK: liveins: $x10
61     ; CHECK-NEXT: {{  $}}
62     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
63     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 24
64     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)
65     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)
66     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s32)
67     ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)
68     ; CHECK-NEXT: PseudoRET implicit $f10_f
69     %1:_(s32) = COPY $x10
70     %0:_(s8) = G_TRUNC %1(s32)
71     %2:_(s32) = G_SITOFP %0(s8)
72     $f10_f = COPY %2(s32)
73     PseudoRET implicit $f10_f
75 ...
76 ---
77 name:            uitofp_s32_s8
78 tracksRegLiveness: true
79 body:             |
80   bb.1:
81     liveins: $x10
83     ; CHECK-LABEL: name: uitofp_s32_s8
84     ; CHECK: liveins: $x10
85     ; CHECK-NEXT: {{  $}}
86     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
87     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
88     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
89     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)
90     ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)
91     ; CHECK-NEXT: PseudoRET implicit $f10_f
92     %1:_(s32) = COPY $x10
93     %0:_(s8) = G_TRUNC %1(s32)
94     %2:_(s32) = G_UITOFP %0(s8)
95     $f10_f = COPY %2(s32)
96     PseudoRET implicit $f10_f
98 ...
99 ---
100 name:            sitofp_s32_s16
101 tracksRegLiveness: true
102 body:             |
103   bb.1:
104     liveins: $x10
106     ; CHECK-LABEL: name: sitofp_s32_s16
107     ; CHECK: liveins: $x10
108     ; CHECK-NEXT: {{  $}}
109     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
110     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
111     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)
112     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)
113     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s32)
114     ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)
115     ; CHECK-NEXT: PseudoRET implicit $f10_f
116     %1:_(s32) = COPY $x10
117     %0:_(s16) = G_TRUNC %1(s32)
118     %2:_(s32) = G_SITOFP %0(s16)
119     $f10_f = COPY %2(s32)
120     PseudoRET implicit $f10_f
124 name:            uitofp_s32_s16
125 tracksRegLiveness: true
126 body:             |
127   bb.1:
128     liveins: $x10
130     ; CHECK-LABEL: name: uitofp_s32_s16
131     ; CHECK: liveins: $x10
132     ; CHECK-NEXT: {{  $}}
133     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
134     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
135     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
136     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)
137     ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)
138     ; CHECK-NEXT: PseudoRET implicit $f10_f
139     %1:_(s32) = COPY $x10
140     %0:_(s16) = G_TRUNC %1(s32)
141     %2:_(s32) = G_UITOFP %0(s16)
142     $f10_f = COPY %2(s32)
143     PseudoRET implicit $f10_f
147 name:            sitofp_s32_s32
148 tracksRegLiveness: true
149 body:             |
150   bb.1:
151     liveins: $x10
153     ; CHECK-LABEL: name: sitofp_s32_s32
154     ; CHECK: liveins: $x10
155     ; CHECK-NEXT: {{  $}}
156     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
157     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[COPY]](s32)
158     ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)
159     ; CHECK-NEXT: PseudoRET implicit $f10_f
160     %0:_(s32) = COPY $x10
161     %1:_(s32) = G_SITOFP %0(s32)
162     $f10_f = COPY %1(s32)
163     PseudoRET implicit $f10_f
167 name:            uitofp_s32_s32
168 tracksRegLiveness: true
169 body:             |
170   bb.1:
171     liveins: $x10
173     ; CHECK-LABEL: name: uitofp_s32_s32
174     ; CHECK: liveins: $x10
175     ; CHECK-NEXT: {{  $}}
176     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
177     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[COPY]](s32)
178     ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)
179     ; CHECK-NEXT: PseudoRET implicit $f10_f
180     %0:_(s32) = COPY $x10
181     %1:_(s32) = G_UITOFP %0(s32)
182     $f10_f = COPY %1(s32)
183     PseudoRET implicit $f10_f
187 name:            sitofp_s64_s1
188 tracksRegLiveness: true
189 body:             |
190   bb.1:
191     liveins: $x10
193     ; CHECK-LABEL: name: sitofp_s64_s1
194     ; CHECK: liveins: $x10
195     ; CHECK-NEXT: {{  $}}
196     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
197     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31
198     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)
199     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)
200     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s32)
201     ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)
202     ; CHECK-NEXT: PseudoRET implicit $f10_d
203     %1:_(s32) = COPY $x10
204     %0:_(s1) = G_TRUNC %1(s32)
205     %2:_(s64) = G_SITOFP %0(s1)
206     $f10_d = COPY %2(s64)
207     PseudoRET implicit $f10_d
211 name:            uitofp_s64_s1
212 tracksRegLiveness: true
213 body:             |
214   bb.1:
215     liveins: $x10
217     ; CHECK-LABEL: name: uitofp_s64_s1
218     ; CHECK: liveins: $x10
219     ; CHECK-NEXT: {{  $}}
220     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
221     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
222     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
223     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)
224     ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)
225     ; CHECK-NEXT: PseudoRET implicit $f10_d
226     %1:_(s32) = COPY $x10
227     %0:_(s1) = G_TRUNC %1(s32)
228     %2:_(s64) = G_UITOFP %0(s1)
229     $f10_d = COPY %2(s64)
230     PseudoRET implicit $f10_d
234 name:            sitofp_s64_s8
235 tracksRegLiveness: true
236 body:             |
237   bb.1:
238     liveins: $x10
240     ; CHECK-LABEL: name: sitofp_s64_s8
241     ; CHECK: liveins: $x10
242     ; CHECK-NEXT: {{  $}}
243     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
244     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 24
245     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)
246     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)
247     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s32)
248     ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)
249     ; CHECK-NEXT: PseudoRET implicit $f10_d
250     %1:_(s32) = COPY $x10
251     %0:_(s8) = G_TRUNC %1(s32)
252     %2:_(s64) = G_SITOFP %0(s8)
253     $f10_d = COPY %2(s64)
254     PseudoRET implicit $f10_d
258 name:            uitofp_s64_s8
259 tracksRegLiveness: true
260 body:             |
261   bb.1:
262     liveins: $x10
264     ; CHECK-LABEL: name: uitofp_s64_s8
265     ; CHECK: liveins: $x10
266     ; CHECK-NEXT: {{  $}}
267     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
268     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
269     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
270     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)
271     ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)
272     ; CHECK-NEXT: PseudoRET implicit $f10_d
273     %1:_(s32) = COPY $x10
274     %0:_(s8) = G_TRUNC %1(s32)
275     %2:_(s64) = G_UITOFP %0(s8)
276     $f10_d = COPY %2(s64)
277     PseudoRET implicit $f10_d
281 name:            sitofp_s64_s16
282 tracksRegLiveness: true
283 body:             |
284   bb.1:
285     liveins: $x10
287     ; CHECK-LABEL: name: sitofp_s64_s16
288     ; CHECK: liveins: $x10
289     ; CHECK-NEXT: {{  $}}
290     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
291     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
292     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)
293     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)
294     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s32)
295     ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)
296     ; CHECK-NEXT: PseudoRET implicit $f10_d
297     %1:_(s32) = COPY $x10
298     %0:_(s16) = G_TRUNC %1(s32)
299     %2:_(s64) = G_SITOFP %0(s16)
300     $f10_d = COPY %2(s64)
301     PseudoRET implicit $f10_d
305 name:            uitofp_s64_s16
306 tracksRegLiveness: true
307 body:             |
308   bb.1:
309     liveins: $x10
311     ; CHECK-LABEL: name: uitofp_s64_s16
312     ; CHECK: liveins: $x10
313     ; CHECK-NEXT: {{  $}}
314     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
315     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
316     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
317     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)
318     ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)
319     ; CHECK-NEXT: PseudoRET implicit $f10_d
320     %1:_(s32) = COPY $x10
321     %0:_(s16) = G_TRUNC %1(s32)
322     %2:_(s64) = G_UITOFP %0(s16)
323     $f10_d = COPY %2(s64)
324     PseudoRET implicit $f10_d
328 name:            sitofp_s64_s32
329 tracksRegLiveness: true
330 body:             |
331   bb.1:
332     liveins: $x10
334     ; CHECK-LABEL: name: sitofp_s64_s32
335     ; CHECK: liveins: $x10
336     ; CHECK-NEXT: {{  $}}
337     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
338     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[COPY]](s32)
339     ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)
340     ; CHECK-NEXT: PseudoRET implicit $f10_d
341     %0:_(s32) = COPY $x10
342     %1:_(s64) = G_SITOFP %0(s32)
343     $f10_d = COPY %1(s64)
344     PseudoRET implicit $f10_d
348 name:            uitofp_s64_s32
349 tracksRegLiveness: true
350 body:             |
351   bb.1:
352     liveins: $x10
354     ; CHECK-LABEL: name: uitofp_s64_s32
355     ; CHECK: liveins: $x10
356     ; CHECK-NEXT: {{  $}}
357     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
358     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[COPY]](s32)
359     ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)
360     ; CHECK-NEXT: PseudoRET implicit $f10_d
361     %0:_(s32) = COPY $x10
362     %1:_(s64) = G_UITOFP %0(s32)
363     $f10_d = COPY %1(s64)
364     PseudoRET implicit $f10_d