11# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2- # RUN: llc -mtriple=riscv32 -mattr=+d,+zfh -run-pass=regbankselect \
3- # RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs %s \
4- # RUN: -o - | FileCheck %s --check-prefixes=CHECK
5- # RUN: llc -mtriple=riscv64 -mattr=+d,+zfh -run-pass=regbankselect \
6- # RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs %s \
7- # RUN: -o - | FileCheck %s --check-prefixes=CHECK
2+ # RUN: sed 's/XLen/32/g' %s | llc -mtriple=riscv32 -mattr=+d,+zfh -run-pass=regbankselect \
3+ # RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs -x mir \
4+ # RUN: -o - | FileCheck %s --check-prefixes=CHECK-RV32
5+ # RUN: sed 's/XLen/64/g' %s | llc -mtriple=riscv64 -mattr=+d,+zfh -run-pass=regbankselect \
6+ # RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs -x mir \
7+ # RUN: -o - | FileCheck %s --check-prefixes=CHECK-RV64
88
99---
1010name : fp_store_fp_def_f32
@@ -14,15 +14,25 @@ body: |
1414 bb.1:
1515 liveins: $x10, $f10_f, $f11_f
1616
17- ; CHECK-LABEL: name: fp_store_fp_def_f32
18- ; CHECK: liveins: $x10, $f10_f, $f11_f
19- ; CHECK-NEXT: {{ $}}
20- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
21- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f
22- ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fprb(s32) = COPY $f11_f
23- ; CHECK-NEXT: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[COPY1]], [[COPY2]]
24- ; CHECK-NEXT: G_STORE [[FADD]](s32), [[COPY]](p0) :: (store (s32))
25- ; CHECK-NEXT: PseudoRET
17+ ; CHECK-RV32-LABEL: name: fp_store_fp_def_f32
18+ ; CHECK-RV32: liveins: $x10, $f10_f, $f11_f
19+ ; CHECK-RV32-NEXT: {{ $}}
20+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
21+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f
22+ ; CHECK-RV32-NEXT: [[COPY2:%[0-9]+]]:fprb(s32) = COPY $f11_f
23+ ; CHECK-RV32-NEXT: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[COPY1]], [[COPY2]]
24+ ; CHECK-RV32-NEXT: G_STORE [[FADD]](s32), [[COPY]](p0) :: (store (s32))
25+ ; CHECK-RV32-NEXT: PseudoRET
26+ ;
27+ ; CHECK-RV64-LABEL: name: fp_store_fp_def_f32
28+ ; CHECK-RV64: liveins: $x10, $f10_f, $f11_f
29+ ; CHECK-RV64-NEXT: {{ $}}
30+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
31+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f
32+ ; CHECK-RV64-NEXT: [[COPY2:%[0-9]+]]:fprb(s32) = COPY $f11_f
33+ ; CHECK-RV64-NEXT: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[COPY1]], [[COPY2]]
34+ ; CHECK-RV64-NEXT: G_STORE [[FADD]](s32), [[COPY]](p0) :: (store (s32))
35+ ; CHECK-RV64-NEXT: PseudoRET
2636 %0:_(p0) = COPY $x10
2737 %1:_(s32) = COPY $f10_f
2838 %2:_(s32) = COPY $f11_f
@@ -39,15 +49,25 @@ body: |
3949 bb.1:
4050 liveins: $x10, $f10_d, $f11_d
4151
42- ; CHECK-LABEL: name: fp_store_fp_def_f64
43- ; CHECK: liveins: $x10, $f10_d, $f11_d
44- ; CHECK-NEXT: {{ $}}
45- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
46- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
47- ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fprb(s64) = COPY $f11_d
48- ; CHECK-NEXT: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[COPY1]], [[COPY2]]
49- ; CHECK-NEXT: G_STORE [[FADD]](s64), [[COPY]](p0) :: (store (s64))
50- ; CHECK-NEXT: PseudoRET
52+ ; CHECK-RV32-LABEL: name: fp_store_fp_def_f64
53+ ; CHECK-RV32: liveins: $x10, $f10_d, $f11_d
54+ ; CHECK-RV32-NEXT: {{ $}}
55+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
56+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
57+ ; CHECK-RV32-NEXT: [[COPY2:%[0-9]+]]:fprb(s64) = COPY $f11_d
58+ ; CHECK-RV32-NEXT: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[COPY1]], [[COPY2]]
59+ ; CHECK-RV32-NEXT: G_STORE [[FADD]](s64), [[COPY]](p0) :: (store (s64))
60+ ; CHECK-RV32-NEXT: PseudoRET
61+ ;
62+ ; CHECK-RV64-LABEL: name: fp_store_fp_def_f64
63+ ; CHECK-RV64: liveins: $x10, $f10_d, $f11_d
64+ ; CHECK-RV64-NEXT: {{ $}}
65+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
66+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
67+ ; CHECK-RV64-NEXT: [[COPY2:%[0-9]+]]:fprb(s64) = COPY $f11_d
68+ ; CHECK-RV64-NEXT: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[COPY1]], [[COPY2]]
69+ ; CHECK-RV64-NEXT: G_STORE [[FADD]](s64), [[COPY]](p0) :: (store (s64))
70+ ; CHECK-RV64-NEXT: PseudoRET
5171 %0:_(p0) = COPY $x10
5272 %1:_(s64) = COPY $f10_d
5373 %2:_(s64) = COPY $f11_d
@@ -64,13 +84,21 @@ body: |
6484 bb.1:
6585 liveins: $x10, $f10_d
6686
67- ; CHECK-LABEL: name: fp_store_no_def_f64
68- ; CHECK: liveins: $x10, $f10_d
69- ; CHECK-NEXT: {{ $}}
70- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
71- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
72- ; CHECK-NEXT: G_STORE [[COPY1]](s64), [[COPY]](p0) :: (store (s64))
73- ; CHECK-NEXT: PseudoRET
87+ ; CHECK-RV32-LABEL: name: fp_store_no_def_f64
88+ ; CHECK-RV32: liveins: $x10, $f10_d
89+ ; CHECK-RV32-NEXT: {{ $}}
90+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
91+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
92+ ; CHECK-RV32-NEXT: G_STORE [[COPY1]](s64), [[COPY]](p0) :: (store (s64))
93+ ; CHECK-RV32-NEXT: PseudoRET
94+ ;
95+ ; CHECK-RV64-LABEL: name: fp_store_no_def_f64
96+ ; CHECK-RV64: liveins: $x10, $f10_d
97+ ; CHECK-RV64-NEXT: {{ $}}
98+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
99+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
100+ ; CHECK-RV64-NEXT: G_STORE [[COPY1]](s64), [[COPY]](p0) :: (store (s64))
101+ ; CHECK-RV64-NEXT: PseudoRET
74102 %0:_(p0) = COPY $x10
75103 %1:_(s64) = COPY $f10_d
76104 G_STORE %1(s64), %0(p0) :: (store (s64))
@@ -85,15 +113,25 @@ body: |
85113 bb.1:
86114 liveins: $x10, $f10_f
87115
88- ; CHECK-LABEL: name: fp_load_fp_use_f32
89- ; CHECK: liveins: $x10, $f10_f
90- ; CHECK-NEXT: {{ $}}
91- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
92- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f
93- ; CHECK-NEXT: [[LOAD:%[0-9]+]]:fprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
94- ; CHECK-NEXT: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[LOAD]], [[COPY1]]
95- ; CHECK-NEXT: $f10_f = COPY [[FADD]](s32)
96- ; CHECK-NEXT: PseudoRET implicit $f10_f
116+ ; CHECK-RV32-LABEL: name: fp_load_fp_use_f32
117+ ; CHECK-RV32: liveins: $x10, $f10_f
118+ ; CHECK-RV32-NEXT: {{ $}}
119+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
120+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f
121+ ; CHECK-RV32-NEXT: [[LOAD:%[0-9]+]]:fprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
122+ ; CHECK-RV32-NEXT: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[LOAD]], [[COPY1]]
123+ ; CHECK-RV32-NEXT: $f10_f = COPY [[FADD]](s32)
124+ ; CHECK-RV32-NEXT: PseudoRET implicit $f10_f
125+ ;
126+ ; CHECK-RV64-LABEL: name: fp_load_fp_use_f32
127+ ; CHECK-RV64: liveins: $x10, $f10_f
128+ ; CHECK-RV64-NEXT: {{ $}}
129+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
130+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f
131+ ; CHECK-RV64-NEXT: [[LOAD:%[0-9]+]]:fprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
132+ ; CHECK-RV64-NEXT: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[LOAD]], [[COPY1]]
133+ ; CHECK-RV64-NEXT: $f10_f = COPY [[FADD]](s32)
134+ ; CHECK-RV64-NEXT: PseudoRET implicit $f10_f
97135 %0:_(p0) = COPY $x10
98136 %1:_(s32) = COPY $f10_f
99137 %2:_(s32) = G_LOAD %0(p0) :: (load (s32))
@@ -110,15 +148,25 @@ body: |
110148 bb.1:
111149 liveins: $x10, $f10_d
112150
113- ; CHECK-LABEL: name: fp_load_fp_use_f64
114- ; CHECK: liveins: $x10, $f10_d
115- ; CHECK-NEXT: {{ $}}
116- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
117- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
118- ; CHECK-NEXT: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
119- ; CHECK-NEXT: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[LOAD]], [[COPY1]]
120- ; CHECK-NEXT: $f10_d = COPY [[FADD]](s64)
121- ; CHECK-NEXT: PseudoRET implicit $f10_d
151+ ; CHECK-RV32-LABEL: name: fp_load_fp_use_f64
152+ ; CHECK-RV32: liveins: $x10, $f10_d
153+ ; CHECK-RV32-NEXT: {{ $}}
154+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
155+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
156+ ; CHECK-RV32-NEXT: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
157+ ; CHECK-RV32-NEXT: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[LOAD]], [[COPY1]]
158+ ; CHECK-RV32-NEXT: $f10_d = COPY [[FADD]](s64)
159+ ; CHECK-RV32-NEXT: PseudoRET implicit $f10_d
160+ ;
161+ ; CHECK-RV64-LABEL: name: fp_load_fp_use_f64
162+ ; CHECK-RV64: liveins: $x10, $f10_d
163+ ; CHECK-RV64-NEXT: {{ $}}
164+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
165+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
166+ ; CHECK-RV64-NEXT: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
167+ ; CHECK-RV64-NEXT: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[LOAD]], [[COPY1]]
168+ ; CHECK-RV64-NEXT: $f10_d = COPY [[FADD]](s64)
169+ ; CHECK-RV64-NEXT: PseudoRET implicit $f10_d
122170 %0:_(p0) = COPY $x10
123171 %1:_(s64) = COPY $f10_d
124172 %2:_(s64) = G_LOAD %0(p0) :: (load (s64))
@@ -135,14 +183,23 @@ body: |
135183 bb.1:
136184 liveins: $x10, $f10_d
137185
138- ; CHECK-LABEL: name: fp_load_no_use_f64
139- ; CHECK: liveins: $x10, $f10_d
140- ; CHECK-NEXT: {{ $}}
141- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
142- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
143- ; CHECK-NEXT: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
144- ; CHECK-NEXT: $f10_d = COPY [[LOAD]](s64)
145- ; CHECK-NEXT: PseudoRET implicit $f10_d
186+ ; CHECK-RV32-LABEL: name: fp_load_no_use_f64
187+ ; CHECK-RV32: liveins: $x10, $f10_d
188+ ; CHECK-RV32-NEXT: {{ $}}
189+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
190+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
191+ ; CHECK-RV32-NEXT: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
192+ ; CHECK-RV32-NEXT: $f10_d = COPY [[LOAD]](s64)
193+ ; CHECK-RV32-NEXT: PseudoRET implicit $f10_d
194+ ;
195+ ; CHECK-RV64-LABEL: name: fp_load_no_use_f64
196+ ; CHECK-RV64: liveins: $x10, $f10_d
197+ ; CHECK-RV64-NEXT: {{ $}}
198+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
199+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
200+ ; CHECK-RV64-NEXT: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
201+ ; CHECK-RV64-NEXT: $f10_d = COPY [[LOAD]](s64)
202+ ; CHECK-RV64-NEXT: PseudoRET implicit $f10_d
146203 %0:_(p0) = COPY $x10
147204 %1:_(s64) = COPY $f10_d
148205 %2:_(s64) = G_LOAD %0(p0) :: (load (s64))
@@ -158,15 +215,25 @@ body: |
158215 bb.1:
159216 liveins: $x10, $f10_h, $f11_h
160217
161- ; CHECK-LABEL: name: fp_store_fp_def_f16
162- ; CHECK: liveins: $x10, $f10_h, $f11_h
163- ; CHECK-NEXT: {{ $}}
164- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
165- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f10_h
166- ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fprb(s16) = COPY $f11_h
167- ; CHECK-NEXT: [[FADD:%[0-9]+]]:fprb(s16) = G_FADD [[COPY1]], [[COPY2]]
168- ; CHECK-NEXT: G_STORE [[FADD]](s16), [[COPY]](p0) :: (store (s16))
169- ; CHECK-NEXT: PseudoRET
218+ ; CHECK-RV32-LABEL: name: fp_store_fp_def_f16
219+ ; CHECK-RV32: liveins: $x10, $f10_h, $f11_h
220+ ; CHECK-RV32-NEXT: {{ $}}
221+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
222+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f10_h
223+ ; CHECK-RV32-NEXT: [[COPY2:%[0-9]+]]:fprb(s16) = COPY $f11_h
224+ ; CHECK-RV32-NEXT: [[FADD:%[0-9]+]]:fprb(s16) = G_FADD [[COPY1]], [[COPY2]]
225+ ; CHECK-RV32-NEXT: G_STORE [[FADD]](s16), [[COPY]](p0) :: (store (s16))
226+ ; CHECK-RV32-NEXT: PseudoRET
227+ ;
228+ ; CHECK-RV64-LABEL: name: fp_store_fp_def_f16
229+ ; CHECK-RV64: liveins: $x10, $f10_h, $f11_h
230+ ; CHECK-RV64-NEXT: {{ $}}
231+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
232+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f10_h
233+ ; CHECK-RV64-NEXT: [[COPY2:%[0-9]+]]:fprb(s16) = COPY $f11_h
234+ ; CHECK-RV64-NEXT: [[FADD:%[0-9]+]]:fprb(s16) = G_FADD [[COPY1]], [[COPY2]]
235+ ; CHECK-RV64-NEXT: G_STORE [[FADD]](s16), [[COPY]](p0) :: (store (s16))
236+ ; CHECK-RV64-NEXT: PseudoRET
170237 %0:_(p0) = COPY $x10
171238 %1:_(s16) = COPY $f10_h
172239 %2:_(s16) = COPY $f11_h
@@ -183,15 +250,25 @@ body: |
183250 bb.1:
184251 liveins: $x10, $f10_h
185252
186- ; CHECK-LABEL: name: fp_load_fp_use_f16
187- ; CHECK: liveins: $x10, $f10_h
188- ; CHECK-NEXT: {{ $}}
189- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
190- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f10_h
191- ; CHECK-NEXT: [[LOAD:%[0-9]+]]:fprb(s16) = G_LOAD [[COPY]](p0) :: (load (s16))
192- ; CHECK-NEXT: [[FADD:%[0-9]+]]:fprb(s16) = G_FADD [[LOAD]], [[COPY1]]
193- ; CHECK-NEXT: $f10_h = COPY [[FADD]](s16)
194- ; CHECK-NEXT: PseudoRET implicit $f10_h
253+ ; CHECK-RV32-LABEL: name: fp_load_fp_use_f16
254+ ; CHECK-RV32: liveins: $x10, $f10_h
255+ ; CHECK-RV32-NEXT: {{ $}}
256+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
257+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f10_h
258+ ; CHECK-RV32-NEXT: [[LOAD:%[0-9]+]]:fprb(s16) = G_LOAD [[COPY]](p0) :: (load (s16))
259+ ; CHECK-RV32-NEXT: [[FADD:%[0-9]+]]:fprb(s16) = G_FADD [[LOAD]], [[COPY1]]
260+ ; CHECK-RV32-NEXT: $f10_h = COPY [[FADD]](s16)
261+ ; CHECK-RV32-NEXT: PseudoRET implicit $f10_h
262+ ;
263+ ; CHECK-RV64-LABEL: name: fp_load_fp_use_f16
264+ ; CHECK-RV64: liveins: $x10, $f10_h
265+ ; CHECK-RV64-NEXT: {{ $}}
266+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
267+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f10_h
268+ ; CHECK-RV64-NEXT: [[LOAD:%[0-9]+]]:fprb(s16) = G_LOAD [[COPY]](p0) :: (load (s16))
269+ ; CHECK-RV64-NEXT: [[FADD:%[0-9]+]]:fprb(s16) = G_FADD [[LOAD]], [[COPY1]]
270+ ; CHECK-RV64-NEXT: $f10_h = COPY [[FADD]](s16)
271+ ; CHECK-RV64-NEXT: PseudoRET implicit $f10_h
195272 %0:_(p0) = COPY $x10
196273 %1:_(s16) = COPY $f10_h
197274 %2:_(s16) = G_LOAD %0(p0) :: (load (s16))
@@ -200,3 +277,49 @@ body: |
200277 PseudoRET implicit $f10_h
201278
202279 ...
280+ ---
281+ name : fpclass
282+ legalized : true
283+ tracksRegLiveness : true
284+ liveins :
285+ - { reg: '$x10' }
286+ body : |
287+ bb.1:
288+ liveins: $x10
289+
290+ ; CHECK-RV32-LABEL: name: fpclass
291+ ; CHECK-RV32: liveins: $x10
292+ ; CHECK-RV32-NEXT: {{ $}}
293+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
294+ ; CHECK-RV32-NEXT: [[LOAD:%[0-9]+]]:fprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
295+ ; CHECK-RV32-NEXT: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 927
296+ ; CHECK-RV32-NEXT: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
297+ ; CHECK-RV32-NEXT: [[FCLASS:%[0-9]+]]:gprb(s32) = G_FCLASS [[LOAD]](s32)
298+ ; CHECK-RV32-NEXT: [[AND:%[0-9]+]]:gprb(s32) = G_AND [[FCLASS]], [[C]]
299+ ; CHECK-RV32-NEXT: [[ICMP:%[0-9]+]]:gprb(s32) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]
300+ ; CHECK-RV32-NEXT: $x10 = COPY [[ICMP]](s32)
301+ ; CHECK-RV32-NEXT: PseudoRET implicit $x10
302+ ;
303+ ; CHECK-RV64-LABEL: name: fpclass
304+ ; CHECK-RV64: liveins: $x10
305+ ; CHECK-RV64-NEXT: {{ $}}
306+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
307+ ; CHECK-RV64-NEXT: [[LOAD:%[0-9]+]]:fprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
308+ ; CHECK-RV64-NEXT: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 927
309+ ; CHECK-RV64-NEXT: [[C1:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 0
310+ ; CHECK-RV64-NEXT: [[FCLASS:%[0-9]+]]:gprb(s64) = G_FCLASS [[LOAD]](s32)
311+ ; CHECK-RV64-NEXT: [[AND:%[0-9]+]]:gprb(s64) = G_AND [[FCLASS]], [[C]]
312+ ; CHECK-RV64-NEXT: [[ICMP:%[0-9]+]]:gprb(s64) = G_ICMP intpred(ne), [[AND]](s64), [[C1]]
313+ ; CHECK-RV64-NEXT: $x10 = COPY [[ICMP]](s64)
314+ ; CHECK-RV64-NEXT: PseudoRET implicit $x10
315+ %0:_(p0) = COPY $x10
316+ %1:_(s32) = G_LOAD %0(p0) :: (load (s32))
317+ %4:_(sXLen) = G_CONSTANT iXLen 927
318+ %5:_(sXLen) = G_CONSTANT iXLen 0
319+ %6:_(sXLen) = G_FCLASS %1(s32)
320+ %7:_(sXLen) = G_AND %6, %4
321+ %8:_(sXLen) = G_ICMP intpred(ne), %7(sXLen), %5
322+ $x10 = COPY %8(sXLen)
323+ PseudoRET implicit $x10
324+
325+ ...
0 commit comments