Skip to content

Commit 4621d4c

Browse files
committed
Add tests for rv64
1 parent 22620a9 commit 4621d4c

File tree

3 files changed

+466
-50
lines changed

3 files changed

+466
-50
lines changed

llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST)
410410
.legalIf(all(typeInSet(0, {s32, sXLen}), typeIsScalarFPArith(1, ST)))
411411
.widenScalarToNextPow2(0)
412412
.clampScalar(0, s32, sXLen)
413-
.libcallFor({s32, s32});
413+
.libcall();
414414

415415
getActionDefinitionsBuilder({G_SITOFP, G_UITOFP})
416416
.legalIf(all(typeIsScalarFPArith(0, ST), typeInSet(1, {s32, sXLen})))

llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-fptoi-rv32-libcall.mir

Lines changed: 175 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2-
# RUN: llc -mtriple=riscv32 -mattr=-d -mattr=-f -run-pass=legalizer %s -o - \
2+
# RUN: llc -mtriple=riscv32 -mattr=+d -run-pass=legalizer %s -o - \
33
# RUN: | FileCheck %s
44

55
---
@@ -12,12 +12,8 @@ body: |
1212
; CHECK: liveins: $f10_f
1313
; CHECK-NEXT: {{ $}}
1414
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f10_f
15-
; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2
16-
; CHECK-NEXT: $x10 = COPY [[COPY]](s32)
17-
; CHECK-NEXT: PseudoCALL target-flags(riscv-call) &__fixsfsi, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit-def $x10
18-
; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2
19-
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x10
20-
; CHECK-NEXT: $x10 = COPY [[COPY1]](s32)
15+
; CHECK-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)
16+
; CHECK-NEXT: $x10 = COPY [[FPTOSI]](s32)
2117
; CHECK-NEXT: PseudoRET implicit $x10
2218
%0:_(s32) = COPY $f10_f
2319
%1:_(s1) = G_FPTOSI %0(s32)
@@ -36,12 +32,8 @@ body: |
3632
; CHECK: liveins: $f10_f
3733
; CHECK-NEXT: {{ $}}
3834
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f10_f
39-
; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2
40-
; CHECK-NEXT: $x10 = COPY [[COPY]](s32)
41-
; CHECK-NEXT: PseudoCALL target-flags(riscv-call) &__fixunssfsi, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit-def $x10
42-
; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2
43-
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x10
44-
; CHECK-NEXT: $x10 = COPY [[COPY1]](s32)
35+
; CHECK-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)
36+
; CHECK-NEXT: $x10 = COPY [[FPTOUI]](s32)
4537
; CHECK-NEXT: PseudoRET implicit $x10
4638
%0:_(s32) = COPY $f10_f
4739
%1:_(s1) = G_FPTOUI %0(s32)
@@ -60,12 +52,8 @@ body: |
6052
; CHECK: liveins: $f10_f
6153
; CHECK-NEXT: {{ $}}
6254
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f10_f
63-
; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2
64-
; CHECK-NEXT: $x10 = COPY [[COPY]](s32)
65-
; CHECK-NEXT: PseudoCALL target-flags(riscv-call) &__fixsfsi, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit-def $x10
66-
; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2
67-
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x10
68-
; CHECK-NEXT: $x10 = COPY [[COPY1]](s32)
55+
; CHECK-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)
56+
; CHECK-NEXT: $x10 = COPY [[FPTOSI]](s32)
6957
; CHECK-NEXT: PseudoRET implicit $x10
7058
%0:_(s32) = COPY $f10_f
7159
%1:_(s8) = G_FPTOSI %0(s32)
@@ -84,12 +72,8 @@ body: |
8472
; CHECK: liveins: $f10_f
8573
; CHECK-NEXT: {{ $}}
8674
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f10_f
87-
; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2
88-
; CHECK-NEXT: $x10 = COPY [[COPY]](s32)
89-
; CHECK-NEXT: PseudoCALL target-flags(riscv-call) &__fixunssfsi, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit-def $x10
90-
; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2
91-
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x10
92-
; CHECK-NEXT: $x10 = COPY [[COPY1]](s32)
75+
; CHECK-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)
76+
; CHECK-NEXT: $x10 = COPY [[FPTOUI]](s32)
9377
; CHECK-NEXT: PseudoRET implicit $x10
9478
%0:_(s32) = COPY $f10_f
9579
%1:_(s8) = G_FPTOUI %0(s32)
@@ -108,12 +92,8 @@ body: |
10892
; CHECK: liveins: $f10_f
10993
; CHECK-NEXT: {{ $}}
11094
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f10_f
111-
; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2
112-
; CHECK-NEXT: $x10 = COPY [[COPY]](s32)
113-
; CHECK-NEXT: PseudoCALL target-flags(riscv-call) &__fixsfsi, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit-def $x10
114-
; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2
115-
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x10
116-
; CHECK-NEXT: $x10 = COPY [[COPY1]](s32)
95+
; CHECK-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)
96+
; CHECK-NEXT: $x10 = COPY [[FPTOSI]](s32)
11797
; CHECK-NEXT: PseudoRET implicit $x10
11898
%0:_(s32) = COPY $f10_f
11999
%1:_(s16) = G_FPTOSI %0(s32)
@@ -132,12 +112,8 @@ body: |
132112
; CHECK: liveins: $f10_f
133113
; CHECK-NEXT: {{ $}}
134114
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f10_f
135-
; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2
136-
; CHECK-NEXT: $x10 = COPY [[COPY]](s32)
137-
; CHECK-NEXT: PseudoCALL target-flags(riscv-call) &__fixunssfsi, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit-def $x10
138-
; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2
139-
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x10
140-
; CHECK-NEXT: $x10 = COPY [[COPY1]](s32)
115+
; CHECK-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)
116+
; CHECK-NEXT: $x10 = COPY [[FPTOUI]](s32)
141117
; CHECK-NEXT: PseudoRET implicit $x10
142118
%0:_(s32) = COPY $f10_f
143119
%1:_(s16) = G_FPTOUI %0(s32)
@@ -156,12 +132,8 @@ body: |
156132
; CHECK: liveins: $f10_f
157133
; CHECK-NEXT: {{ $}}
158134
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f10_f
159-
; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2
160-
; CHECK-NEXT: $x10 = COPY [[COPY]](s32)
161-
; CHECK-NEXT: PseudoCALL target-flags(riscv-call) &__fixsfsi, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit-def $x10
162-
; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2
163-
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x10
164-
; CHECK-NEXT: $x10 = COPY [[COPY1]](s32)
135+
; CHECK-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s32)
136+
; CHECK-NEXT: $x10 = COPY [[FPTOSI]](s32)
165137
; CHECK-NEXT: PseudoRET implicit $x10
166138
%0:_(s32) = COPY $f10_f
167139
%1:_(s32) = G_FPTOSI %0(s32)
@@ -179,16 +151,170 @@ body: |
179151
; CHECK: liveins: $f10_f
180152
; CHECK-NEXT: {{ $}}
181153
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $f10_f
182-
; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2
183-
; CHECK-NEXT: $x10 = COPY [[COPY]](s32)
184-
; CHECK-NEXT: PseudoCALL target-flags(riscv-call) &__fixunssfsi, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit-def $x10
185-
; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2
186-
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x10
187-
; CHECK-NEXT: $x10 = COPY [[COPY1]](s32)
154+
; CHECK-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)
155+
; CHECK-NEXT: $x10 = COPY [[FPTOUI]](s32)
188156
; CHECK-NEXT: PseudoRET implicit $x10
189157
%0:_(s32) = COPY $f10_f
190158
%1:_(s32) = G_FPTOUI %0(s32)
191159
$x10 = COPY %1(s32)
192160
PseudoRET implicit $x10
193161
194162
...
163+
---
164+
name: fptosi_s1_s64
165+
body: |
166+
bb.1:
167+
liveins: $f10_d
168+
169+
; CHECK-LABEL: name: fptosi_s1_s64
170+
; CHECK: liveins: $f10_d
171+
; CHECK-NEXT: {{ $}}
172+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $f10_d
173+
; CHECK-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)
174+
; CHECK-NEXT: $x10 = COPY [[FPTOSI]](s32)
175+
; CHECK-NEXT: PseudoRET implicit $x10
176+
%0:_(s64) = COPY $f10_d
177+
%1:_(s1) = G_FPTOSI %0(s64)
178+
%2:_(s32) = G_ANYEXT %1(s1)
179+
$x10 = COPY %2(s32)
180+
PseudoRET implicit $x10
181+
182+
...
183+
---
184+
name: fptoui_s1_s64
185+
body: |
186+
bb.1:
187+
liveins: $f10_d
188+
189+
; CHECK-LABEL: name: fptoui_s1_s64
190+
; CHECK: liveins: $f10_d
191+
; CHECK-NEXT: {{ $}}
192+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $f10_d
193+
; CHECK-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s64)
194+
; CHECK-NEXT: $x10 = COPY [[FPTOUI]](s32)
195+
; CHECK-NEXT: PseudoRET implicit $x10
196+
%0:_(s64) = COPY $f10_d
197+
%1:_(s1) = G_FPTOUI %0(s64)
198+
%2:_(s32) = G_ANYEXT %1(s1)
199+
$x10 = COPY %2(s32)
200+
PseudoRET implicit $x10
201+
202+
...
203+
---
204+
name: fptosi_s8_s64
205+
body: |
206+
bb.1:
207+
liveins: $f10_d
208+
209+
; CHECK-LABEL: name: fptosi_s8_s64
210+
; CHECK: liveins: $f10_d
211+
; CHECK-NEXT: {{ $}}
212+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $f10_d
213+
; CHECK-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)
214+
; CHECK-NEXT: $x10 = COPY [[FPTOSI]](s32)
215+
; CHECK-NEXT: PseudoRET implicit $x10
216+
%0:_(s64) = COPY $f10_d
217+
%1:_(s8) = G_FPTOSI %0(s64)
218+
%2:_(s32) = G_ANYEXT %1(s8)
219+
$x10 = COPY %2(s32)
220+
PseudoRET implicit $x10
221+
222+
...
223+
---
224+
name: fptoui_s8_s64
225+
body: |
226+
bb.1:
227+
liveins: $f10_d
228+
229+
; CHECK-LABEL: name: fptoui_s8_s64
230+
; CHECK: liveins: $f10_d
231+
; CHECK-NEXT: {{ $}}
232+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $f10_d
233+
; CHECK-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s64)
234+
; CHECK-NEXT: $x10 = COPY [[FPTOUI]](s32)
235+
; CHECK-NEXT: PseudoRET implicit $x10
236+
%0:_(s64) = COPY $f10_d
237+
%1:_(s8) = G_FPTOUI %0(s64)
238+
%2:_(s32) = G_ANYEXT %1(s8)
239+
$x10 = COPY %2(s32)
240+
PseudoRET implicit $x10
241+
242+
...
243+
---
244+
name: fptosi_s16_s64
245+
body: |
246+
bb.1:
247+
liveins: $f10_d
248+
249+
; CHECK-LABEL: name: fptosi_s16_s64
250+
; CHECK: liveins: $f10_d
251+
; CHECK-NEXT: {{ $}}
252+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $f10_d
253+
; CHECK-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)
254+
; CHECK-NEXT: $x10 = COPY [[FPTOSI]](s32)
255+
; CHECK-NEXT: PseudoRET implicit $x10
256+
%0:_(s64) = COPY $f10_d
257+
%1:_(s16) = G_FPTOSI %0(s64)
258+
%2:_(s32) = G_ANYEXT %1(s16)
259+
$x10 = COPY %2(s32)
260+
PseudoRET implicit $x10
261+
262+
...
263+
---
264+
name: fptoui_s16_s64
265+
body: |
266+
bb.1:
267+
liveins: $f10_d
268+
269+
; CHECK-LABEL: name: fptoui_s16_s64
270+
; CHECK: liveins: $f10_d
271+
; CHECK-NEXT: {{ $}}
272+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $f10_d
273+
; CHECK-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s64)
274+
; CHECK-NEXT: $x10 = COPY [[FPTOUI]](s32)
275+
; CHECK-NEXT: PseudoRET implicit $x10
276+
%0:_(s64) = COPY $f10_d
277+
%1:_(s16) = G_FPTOUI %0(s64)
278+
%2:_(s32) = G_ANYEXT %1(s16)
279+
$x10 = COPY %2(s32)
280+
PseudoRET implicit $x10
281+
282+
...
283+
---
284+
name: fptosi_s32_s64
285+
body: |
286+
bb.1:
287+
liveins: $f10_d
288+
289+
; CHECK-LABEL: name: fptosi_s32_s64
290+
; CHECK: liveins: $f10_d
291+
; CHECK-NEXT: {{ $}}
292+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $f10_d
293+
; CHECK-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[COPY]](s64)
294+
; CHECK-NEXT: $x10 = COPY [[FPTOSI]](s32)
295+
; CHECK-NEXT: PseudoRET implicit $x10
296+
%0:_(s64) = COPY $f10_d
297+
%1:_(s32) = G_FPTOSI %0(s64)
298+
$x10 = COPY %1(s32)
299+
PseudoRET implicit $x10
300+
301+
...
302+
---
303+
name: fptoui_s32_s64
304+
body: |
305+
bb.1:
306+
liveins: $f10_d
307+
308+
; CHECK-LABEL: name: fptoui_s32_s64
309+
; CHECK: liveins: $f10_d
310+
; CHECK-NEXT: {{ $}}
311+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $f10_d
312+
; CHECK-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s64)
313+
; CHECK-NEXT: $x10 = COPY [[FPTOUI]](s32)
314+
; CHECK-NEXT: PseudoRET implicit $x10
315+
%0:_(s64) = COPY $f10_d
316+
%1:_(s32) = G_FPTOUI %0(s64)
317+
$x10 = COPY %1(s32)
318+
PseudoRET implicit $x10
319+
320+
...

0 commit comments

Comments
 (0)