[ORC] Fix bug in source file name finding in DebuggerSupportPlugin.
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / legalizer / legalize-itofp-rv64.mir
blob2d6ee6250cf328cc81a94789a75fb5ed8aba1c88
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3
2 # RUN: llc -mtriple=riscv64 -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]+]]:_(s64) = COPY $x10
16     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 63
17     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)
18     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)
19     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s64)
20     ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)
21     ; CHECK-NEXT: PseudoRET implicit $f10_f
22     %1:_(s64) = COPY $x10
23     %0:_(s1) = G_TRUNC %1(s64)
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]+]]:_(s64) = COPY $x10
40     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
41     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
42     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s64)
43     ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)
44     ; CHECK-NEXT: PseudoRET implicit $f10_f
45     %1:_(s64) = COPY $x10
46     %0:_(s1) = G_TRUNC %1(s64)
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]+]]:_(s64) = COPY $x10
63     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 56
64     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)
65     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)
66     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s64)
67     ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)
68     ; CHECK-NEXT: PseudoRET implicit $f10_f
69     %1:_(s64) = COPY $x10
70     %0:_(s8) = G_TRUNC %1(s64)
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]+]]:_(s64) = COPY $x10
87     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 255
88     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
89     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s64)
90     ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)
91     ; CHECK-NEXT: PseudoRET implicit $f10_f
92     %1:_(s64) = COPY $x10
93     %0:_(s8) = G_TRUNC %1(s64)
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]+]]:_(s64) = COPY $x10
110     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 48
111     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)
112     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)
113     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[ASHR]](s64)
114     ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)
115     ; CHECK-NEXT: PseudoRET implicit $f10_f
116     %1:_(s64) = COPY $x10
117     %0:_(s16) = G_TRUNC %1(s64)
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]+]]:_(s64) = COPY $x10
134     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535
135     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
136     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s64)
137     ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)
138     ; CHECK-NEXT: PseudoRET implicit $f10_f
139     %1:_(s64) = COPY $x10
140     %0:_(s16) = G_TRUNC %1(s64)
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]+]]:_(s64) = COPY $x10
157     ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32
158     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[SEXT_INREG]](s64)
159     ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)
160     ; CHECK-NEXT: PseudoRET implicit $f10_f
161     %1:_(s64) = COPY $x10
162     %0:_(s32) = G_TRUNC %1(s64)
163     %2:_(s32) = G_SITOFP %0(s32)
164     $f10_f = COPY %2(s32)
165     PseudoRET implicit $f10_f
169 name:            uitofp_s32_s32
170 tracksRegLiveness: true
171 body:             |
172   bb.1:
173     liveins: $x10
175     ; CHECK-LABEL: name: uitofp_s32_s32
176     ; CHECK: liveins: $x10
177     ; CHECK-NEXT: {{  $}}
178     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
179     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967295
180     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
181     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s64)
182     ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)
183     ; CHECK-NEXT: PseudoRET implicit $f10_f
184     %1:_(s64) = COPY $x10
185     %0:_(s32) = G_TRUNC %1(s64)
186     %2:_(s32) = G_UITOFP %0(s32)
187     $f10_f = COPY %2(s32)
188     PseudoRET implicit $f10_f
192 name:            sitofp_s32_s64
193 tracksRegLiveness: true
194 body:             |
195   bb.1:
196     liveins: $x10
198     ; CHECK-LABEL: name: sitofp_s32_s64
199     ; CHECK: liveins: $x10
200     ; CHECK-NEXT: {{  $}}
201     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
202     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[COPY]](s64)
203     ; CHECK-NEXT: $f10_f = COPY [[SITOFP]](s32)
204     ; CHECK-NEXT: PseudoRET implicit $f10_f
205     %0:_(s64) = COPY $x10
206     %1:_(s32) = G_SITOFP %0(s64)
207     $f10_f = COPY %1(s32)
208     PseudoRET implicit $f10_f
212 name:            uitofp_s32_s64
213 tracksRegLiveness: true
214 body:             |
215   bb.1:
216     liveins: $x10
218     ; CHECK-LABEL: name: uitofp_s32_s64
219     ; CHECK: liveins: $x10
220     ; CHECK-NEXT: {{  $}}
221     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
222     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[COPY]](s64)
223     ; CHECK-NEXT: $f10_f = COPY [[UITOFP]](s32)
224     ; CHECK-NEXT: PseudoRET implicit $f10_f
225     %0:_(s64) = COPY $x10
226     %1:_(s32) = G_UITOFP %0(s64)
227     $f10_f = COPY %1(s32)
228     PseudoRET implicit $f10_f
232 name:            sitofp_s64_s1
233 tracksRegLiveness: true
234 body:             |
235   bb.1:
236     liveins: $x10
238     ; CHECK-LABEL: name: sitofp_s64_s1
239     ; CHECK: liveins: $x10
240     ; CHECK-NEXT: {{  $}}
241     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
242     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 63
243     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)
244     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)
245     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s64)
246     ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)
247     ; CHECK-NEXT: PseudoRET implicit $f10_d
248     %1:_(s64) = COPY $x10
249     %0:_(s1) = G_TRUNC %1(s64)
250     %2:_(s64) = G_SITOFP %0(s1)
251     $f10_d = COPY %2(s64)
252     PseudoRET implicit $f10_d
256 name:            uitofp_s64_s1
257 tracksRegLiveness: true
258 body:             |
259   bb.1:
260     liveins: $x10
262     ; CHECK-LABEL: name: uitofp_s64_s1
263     ; CHECK: liveins: $x10
264     ; CHECK-NEXT: {{  $}}
265     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
266     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
267     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
268     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s64)
269     ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)
270     ; CHECK-NEXT: PseudoRET implicit $f10_d
271     %1:_(s64) = COPY $x10
272     %0:_(s1) = G_TRUNC %1(s64)
273     %2:_(s64) = G_UITOFP %0(s1)
274     $f10_d = COPY %2(s64)
275     PseudoRET implicit $f10_d
279 name:            sitofp_s64_s8
280 tracksRegLiveness: true
281 body:             |
282   bb.1:
283     liveins: $x10
285     ; CHECK-LABEL: name: sitofp_s64_s8
286     ; CHECK: liveins: $x10
287     ; CHECK-NEXT: {{  $}}
288     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
289     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 56
290     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)
291     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)
292     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s64)
293     ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)
294     ; CHECK-NEXT: PseudoRET implicit $f10_d
295     %1:_(s64) = COPY $x10
296     %0:_(s8) = G_TRUNC %1(s64)
297     %2:_(s64) = G_SITOFP %0(s8)
298     $f10_d = COPY %2(s64)
299     PseudoRET implicit $f10_d
303 name:            uitofp_s64_s8
304 tracksRegLiveness: true
305 body:             |
306   bb.1:
307     liveins: $x10
309     ; CHECK-LABEL: name: uitofp_s64_s8
310     ; CHECK: liveins: $x10
311     ; CHECK-NEXT: {{  $}}
312     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
313     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 255
314     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
315     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s64)
316     ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)
317     ; CHECK-NEXT: PseudoRET implicit $f10_d
318     %1:_(s64) = COPY $x10
319     %0:_(s8) = G_TRUNC %1(s64)
320     %2:_(s64) = G_UITOFP %0(s8)
321     $f10_d = COPY %2(s64)
322     PseudoRET implicit $f10_d
326 name:            sitofp_s64_s16
327 tracksRegLiveness: true
328 body:             |
329   bb.1:
330     liveins: $x10
332     ; CHECK-LABEL: name: sitofp_s64_s16
333     ; CHECK: liveins: $x10
334     ; CHECK-NEXT: {{  $}}
335     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
336     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 48
337     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C]](s64)
338     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[C]](s64)
339     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[ASHR]](s64)
340     ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)
341     ; CHECK-NEXT: PseudoRET implicit $f10_d
342     %1:_(s64) = COPY $x10
343     %0:_(s16) = G_TRUNC %1(s64)
344     %2:_(s64) = G_SITOFP %0(s16)
345     $f10_d = COPY %2(s64)
346     PseudoRET implicit $f10_d
350 name:            uitofp_s64_s16
351 tracksRegLiveness: true
352 body:             |
353   bb.1:
354     liveins: $x10
356     ; CHECK-LABEL: name: uitofp_s64_s16
357     ; CHECK: liveins: $x10
358     ; CHECK-NEXT: {{  $}}
359     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
360     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535
361     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
362     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s64)
363     ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)
364     ; CHECK-NEXT: PseudoRET implicit $f10_d
365     %1:_(s64) = COPY $x10
366     %0:_(s16) = G_TRUNC %1(s64)
367     %2:_(s64) = G_UITOFP %0(s16)
368     $f10_d = COPY %2(s64)
369     PseudoRET implicit $f10_d
373 name:            sitofp_s64_s32
374 tracksRegLiveness: true
375 body:             |
376   bb.1:
377     liveins: $x10
379     ; CHECK-LABEL: name: sitofp_s64_s32
380     ; CHECK: liveins: $x10
381     ; CHECK-NEXT: {{  $}}
382     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
383     ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32
384     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[SEXT_INREG]](s64)
385     ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)
386     ; CHECK-NEXT: PseudoRET implicit $f10_d
387     %1:_(s64) = COPY $x10
388     %0:_(s32) = G_TRUNC %1(s64)
389     %2:_(s64) = G_SITOFP %0(s32)
390     $f10_d = COPY %2(s64)
391     PseudoRET implicit $f10_d
395 name:            uitofp_s64_s32
396 tracksRegLiveness: true
397 body:             |
398   bb.1:
399     liveins: $x10
401     ; CHECK-LABEL: name: uitofp_s64_s32
402     ; CHECK: liveins: $x10
403     ; CHECK-NEXT: {{  $}}
404     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
405     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967295
406     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]
407     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s64)
408     ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)
409     ; CHECK-NEXT: PseudoRET implicit $f10_d
410     %1:_(s64) = COPY $x10
411     %0:_(s32) = G_TRUNC %1(s64)
412     %2:_(s64) = G_UITOFP %0(s32)
413     $f10_d = COPY %2(s64)
414     PseudoRET implicit $f10_d
418 name:            sitofp_s64_s64
419 tracksRegLiveness: true
420 body:             |
421   bb.1:
422     liveins: $x10
424     ; CHECK-LABEL: name: sitofp_s64_s64
425     ; CHECK: liveins: $x10
426     ; CHECK-NEXT: {{  $}}
427     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
428     ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[COPY]](s64)
429     ; CHECK-NEXT: $f10_d = COPY [[SITOFP]](s64)
430     ; CHECK-NEXT: PseudoRET implicit $f10_d
431     %0:_(s64) = COPY $x10
432     %1:_(s64) = G_SITOFP %0(s64)
433     $f10_d = COPY %1(s64)
434     PseudoRET implicit $f10_d
438 name:            uitofp_s64_s64
439 tracksRegLiveness: true
440 body:             |
441   bb.1:
442     liveins: $x10
444     ; CHECK-LABEL: name: uitofp_s64_s64
445     ; CHECK: liveins: $x10
446     ; CHECK-NEXT: {{  $}}
447     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
448     ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[COPY]](s64)
449     ; CHECK-NEXT: $f10_d = COPY [[UITOFP]](s64)
450     ; CHECK-NEXT: PseudoRET implicit $f10_d
451     %0:_(s64) = COPY $x10
452     %1:_(s64) = G_UITOFP %0(s64)
453     $f10_d = COPY %1(s64)
454     PseudoRET implicit $f10_d