Skip to content

Commit dd5b29a

Browse files
committed
[AArch64] Use intrinsics for all the rounding tests
1 parent f62a112 commit dd5b29a

File tree

2 files changed

+64
-111
lines changed

2 files changed

+64
-111
lines changed

llvm/test/CodeGen/AArch64/round-fptosi-sat-scalar.ll

Lines changed: 34 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ define i32 @testmswbf(bfloat %a) {
2121
; CHECK-NEXT: fcvtzs w0, s0
2222
; CHECK-NEXT: ret
2323
entry:
24-
%r = call bfloat @llvm.floor.bf16(bfloat %a) nounwind readnone
24+
%r = call bfloat @llvm.floor.bf16(bfloat %a)
2525
%i = call i32 @llvm.fptosi.sat.i32.bf16(bfloat %r)
2626
ret i32 %i
2727
}
@@ -43,7 +43,7 @@ define i64 @testmsxbf(bfloat %a) {
4343
; CHECK-NEXT: fcvtzs x0, s0
4444
; CHECK-NEXT: ret
4545
entry:
46-
%r = call bfloat @llvm.floor.bf16(bfloat %a) nounwind readnone
46+
%r = call bfloat @llvm.floor.bf16(bfloat %a)
4747
%i = call i64 @llvm.fptosi.sat.i64.bf16(bfloat %r)
4848
ret i64 %i
4949
}
@@ -63,7 +63,7 @@ define i32 @testmswh(half %a) {
6363
; CHECK-FP16-NEXT: fcvtms w0, h0
6464
; CHECK-FP16-NEXT: ret
6565
entry:
66-
%r = call half @llvm.floor.f16(half %a) nounwind readnone
66+
%r = call half @llvm.floor.f16(half %a)
6767
%i = call i32 @llvm.fptosi.sat.i32.f16(half %r)
6868
ret i32 %i
6969
}
@@ -83,7 +83,7 @@ define i64 @testmsxh(half %a) {
8383
; CHECK-FP16-NEXT: fcvtms x0, h0
8484
; CHECK-FP16-NEXT: ret
8585
entry:
86-
%r = call half @llvm.floor.f16(half %a) nounwind readnone
86+
%r = call half @llvm.floor.f16(half %a)
8787
%i = call i64 @llvm.fptosi.sat.i64.f16(half %r)
8888
ret i64 %i
8989
}
@@ -94,7 +94,7 @@ define i32 @testmsws(float %a) {
9494
; CHECK-NEXT: fcvtms w0, s0
9595
; CHECK-NEXT: ret
9696
entry:
97-
%r = call float @floorf(float %a) nounwind readnone
97+
%r = call float @llvm.floor.f32(float %a)
9898
%i = call i32 @llvm.fptosi.sat.i32.f32(float %r)
9999
ret i32 %i
100100
}
@@ -105,7 +105,7 @@ define i64 @testmsxs(float %a) {
105105
; CHECK-NEXT: fcvtms x0, s0
106106
; CHECK-NEXT: ret
107107
entry:
108-
%r = call float @floorf(float %a) nounwind readnone
108+
%r = call float @llvm.floor.f32(float %a)
109109
%i = call i64 @llvm.fptosi.sat.i64.f32(float %r)
110110
ret i64 %i
111111
}
@@ -116,7 +116,7 @@ define i32 @testmswd(double %a) {
116116
; CHECK-NEXT: fcvtms w0, d0
117117
; CHECK-NEXT: ret
118118
entry:
119-
%r = call double @floor(double %a) nounwind readnone
119+
%r = call double @llvm.floor.f64(double %a)
120120
%i = call i32 @llvm.fptosi.sat.i32.f64(double %r)
121121
ret i32 %i
122122
}
@@ -127,7 +127,7 @@ define i64 @testmsxd(double %a) {
127127
; CHECK-NEXT: fcvtms x0, d0
128128
; CHECK-NEXT: ret
129129
entry:
130-
%r = call double @floor(double %a) nounwind readnone
130+
%r = call double @llvm.floor.f64(double %a)
131131
%i = call i64 @llvm.fptosi.sat.i64.f64(double %r)
132132
ret i64 %i
133133
}
@@ -151,7 +151,7 @@ define i32 @testpswbf(bfloat %a) {
151151
; CHECK-NEXT: fcvtzs w0, s0
152152
; CHECK-NEXT: ret
153153
entry:
154-
%r = call bfloat @llvm.ceil.bf16(bfloat %a) nounwind readnone
154+
%r = call bfloat @llvm.ceil.bf16(bfloat %a)
155155
%i = call i32 @llvm.fptosi.sat.i32.bf16(bfloat %r)
156156
ret i32 %i
157157
}
@@ -173,7 +173,7 @@ define i64 @testpsxbf(bfloat %a) {
173173
; CHECK-NEXT: fcvtzs x0, s0
174174
; CHECK-NEXT: ret
175175
entry:
176-
%r = call bfloat @llvm.ceil.bf16(bfloat %a) nounwind readnone
176+
%r = call bfloat @llvm.ceil.bf16(bfloat %a)
177177
%i = call i64 @llvm.fptosi.sat.i64.bf16(bfloat %r)
178178
ret i64 %i
179179
}
@@ -193,7 +193,7 @@ define i32 @testpswh(half %a) {
193193
; CHECK-FP16-NEXT: fcvtps w0, h0
194194
; CHECK-FP16-NEXT: ret
195195
entry:
196-
%r = call half @llvm.ceil.f16(half %a) nounwind readnone
196+
%r = call half @llvm.ceil.f16(half %a)
197197
%i = call i32 @llvm.fptosi.sat.i32.f16(half %r)
198198
ret i32 %i
199199
}
@@ -213,7 +213,7 @@ define i64 @testpsxh(half %a) {
213213
; CHECK-FP16-NEXT: fcvtps x0, h0
214214
; CHECK-FP16-NEXT: ret
215215
entry:
216-
%r = call half @llvm.ceil.f16(half %a) nounwind readnone
216+
%r = call half @llvm.ceil.f16(half %a)
217217
%i = call i64 @llvm.fptosi.sat.i64.f16(half %r)
218218
ret i64 %i
219219
}
@@ -224,7 +224,7 @@ define i32 @testpsws(float %a) {
224224
; CHECK-NEXT: fcvtps w0, s0
225225
; CHECK-NEXT: ret
226226
entry:
227-
%r = call float @ceilf(float %a) nounwind readnone
227+
%r = call float @llvm.ceil.f32(float %a)
228228
%i = call i32 @llvm.fptosi.sat.i32.f32(float %r)
229229
ret i32 %i
230230
}
@@ -235,7 +235,7 @@ define i64 @testpsxs(float %a) {
235235
; CHECK-NEXT: fcvtps x0, s0
236236
; CHECK-NEXT: ret
237237
entry:
238-
%r = call float @ceilf(float %a) nounwind readnone
238+
%r = call float @llvm.ceil.f32(float %a)
239239
%i = call i64 @llvm.fptosi.sat.i64.f32(float %r)
240240
ret i64 %i
241241
}
@@ -246,7 +246,7 @@ define i32 @testpswd(double %a) {
246246
; CHECK-NEXT: fcvtps w0, d0
247247
; CHECK-NEXT: ret
248248
entry:
249-
%r = call double @ceil(double %a) nounwind readnone
249+
%r = call double @llvm.ceil.f64(double %a)
250250
%i = call i32 @llvm.fptosi.sat.i32.f64(double %r)
251251
ret i32 %i
252252
}
@@ -257,7 +257,7 @@ define i64 @testpsxd(double %a) {
257257
; CHECK-NEXT: fcvtps x0, d0
258258
; CHECK-NEXT: ret
259259
entry:
260-
%r = call double @ceil(double %a) nounwind readnone
260+
%r = call double @llvm.ceil.f64(double %a)
261261
%i = call i64 @llvm.fptosi.sat.i64.f64(double %r)
262262
ret i64 %i
263263
}
@@ -279,7 +279,7 @@ define i32 @testzswh(half %a) {
279279
; CHECK-FP16-NEXT: fcvtzs w0, h0
280280
; CHECK-FP16-NEXT: ret
281281
entry:
282-
%r = call half @llvm.trunc.f16(half %a) nounwind readnone
282+
%r = call half @llvm.trunc.f16(half %a)
283283
%i = call i32 @llvm.fptosi.sat.i32.f16(half %r)
284284
ret i32 %i
285285
}
@@ -299,7 +299,7 @@ define i64 @testzsxh(half %a) {
299299
; CHECK-FP16-NEXT: fcvtzs x0, h0
300300
; CHECK-FP16-NEXT: ret
301301
entry:
302-
%r = call half @llvm.trunc.f16(half %a) nounwind readnone
302+
%r = call half @llvm.trunc.f16(half %a)
303303
%i = call i64 @llvm.fptosi.sat.i64.f16(half %r)
304304
ret i64 %i
305305
}
@@ -310,7 +310,7 @@ define i32 @testzsws(float %a) {
310310
; CHECK-NEXT: fcvtzs w0, s0
311311
; CHECK-NEXT: ret
312312
entry:
313-
%r = call float @truncf(float %a) nounwind readnone
313+
%r = call float @llvm.trunc.f32(float %a)
314314
%i = call i32 @llvm.fptosi.sat.i32.f32(float %r)
315315
ret i32 %i
316316
}
@@ -321,7 +321,7 @@ define i64 @testzsxs(float %a) {
321321
; CHECK-NEXT: fcvtzs x0, s0
322322
; CHECK-NEXT: ret
323323
entry:
324-
%r = call float @truncf(float %a) nounwind readnone
324+
%r = call float @llvm.trunc.f32(float %a)
325325
%i = call i64 @llvm.fptosi.sat.i64.f32(float %r)
326326
ret i64 %i
327327
}
@@ -332,7 +332,7 @@ define i32 @testzswd(double %a) {
332332
; CHECK-NEXT: fcvtzs w0, d0
333333
; CHECK-NEXT: ret
334334
entry:
335-
%r = call double @trunc(double %a) nounwind readnone
335+
%r = call double @llvm.trunc.f64(double %a)
336336
%i = call i32 @llvm.fptosi.sat.i32.f64(double %r)
337337
ret i32 %i
338338
}
@@ -343,7 +343,7 @@ define i64 @testzsxd(double %a) {
343343
; CHECK-NEXT: fcvtzs x0, d0
344344
; CHECK-NEXT: ret
345345
entry:
346-
%r = call double @trunc(double %a) nounwind readnone
346+
%r = call double @llvm.trunc.f64(double %a)
347347
%i = call i64 @llvm.fptosi.sat.i64.f64(double %r)
348348
ret i64 %i
349349
}
@@ -365,7 +365,7 @@ define i32 @testaswh(half %a) {
365365
; CHECK-FP16-NEXT: fcvtas w0, h0
366366
; CHECK-FP16-NEXT: ret
367367
entry:
368-
%r = call half @llvm.round.f16(half %a) nounwind readnone
368+
%r = call half @llvm.round.f16(half %a)
369369
%i = call i32 @llvm.fptosi.sat.i32.f16(half %r)
370370
ret i32 %i
371371
}
@@ -385,7 +385,7 @@ define i64 @testasxh(half %a) {
385385
; CHECK-FP16-NEXT: fcvtas x0, h0
386386
; CHECK-FP16-NEXT: ret
387387
entry:
388-
%r = call half @llvm.round.f16(half %a) nounwind readnone
388+
%r = call half @llvm.round.f16(half %a)
389389
%i = call i64 @llvm.fptosi.sat.i64.f16(half %r)
390390
ret i64 %i
391391
}
@@ -396,7 +396,7 @@ define i32 @testasws(float %a) {
396396
; CHECK-NEXT: fcvtas w0, s0
397397
; CHECK-NEXT: ret
398398
entry:
399-
%r = call float @roundf(float %a) nounwind readnone
399+
%r = call float @llvm.round.f32(float %a)
400400
%i = call i32 @llvm.fptosi.sat.i32.f32(float %r)
401401
ret i32 %i
402402
}
@@ -407,7 +407,7 @@ define i64 @testasxs(float %a) {
407407
; CHECK-NEXT: fcvtas x0, s0
408408
; CHECK-NEXT: ret
409409
entry:
410-
%r = call float @roundf(float %a) nounwind readnone
410+
%r = call float @llvm.round.f32(float %a)
411411
%i = call i64 @llvm.fptosi.sat.i64.f32(float %r)
412412
ret i64 %i
413413
}
@@ -418,7 +418,7 @@ define i32 @testaswd(double %a) {
418418
; CHECK-NEXT: fcvtas w0, d0
419419
; CHECK-NEXT: ret
420420
entry:
421-
%r = call double @round(double %a) nounwind readnone
421+
%r = call double @llvm.round.f64(double %a)
422422
%i = call i32 @llvm.fptosi.sat.i32.f64(double %r)
423423
ret i32 %i
424424
}
@@ -429,7 +429,7 @@ define i64 @testasxd(double %a) {
429429
; CHECK-NEXT: fcvtas x0, d0
430430
; CHECK-NEXT: ret
431431
entry:
432-
%r = call double @round(double %a) nounwind readnone
432+
%r = call double @llvm.round.f64(double %a)
433433
%i = call i64 @llvm.fptosi.sat.i64.f64(double %r)
434434
ret i64 %i
435435
}
@@ -451,7 +451,7 @@ define i32 @testnswh(half %a) {
451451
; CHECK-FP16-NEXT: fcvtns w0, h0
452452
; CHECK-FP16-NEXT: ret
453453
entry:
454-
%r = call half @llvm.roundeven.f16(half %a) nounwind readnone
454+
%r = call half @llvm.roundeven.f16(half %a)
455455
%i = call i32 @llvm.fptosi.sat.i32.f16(half %r)
456456
ret i32 %i
457457
}
@@ -471,7 +471,7 @@ define i64 @testnsxh(half %a) {
471471
; CHECK-FP16-NEXT: fcvtns x0, h0
472472
; CHECK-FP16-NEXT: ret
473473
entry:
474-
%r = call half @llvm.roundeven.f16(half %a) nounwind readnone
474+
%r = call half @llvm.roundeven.f16(half %a)
475475
%i = call i64 @llvm.fptosi.sat.i64.f16(half %r)
476476
ret i64 %i
477477
}
@@ -482,7 +482,7 @@ define i32 @testnsws(float %a) {
482482
; CHECK-NEXT: fcvtns w0, s0
483483
; CHECK-NEXT: ret
484484
entry:
485-
%r = call float @llvm.roundeven.f32(float %a) nounwind readnone
485+
%r = call float @llvm.roundeven.f32(float %a)
486486
%i = call i32 @llvm.fptosi.sat.i32.f32(float %r)
487487
ret i32 %i
488488
}
@@ -493,7 +493,7 @@ define i64 @testnsxs(float %a) {
493493
; CHECK-NEXT: fcvtns x0, s0
494494
; CHECK-NEXT: ret
495495
entry:
496-
%r = call float @llvm.roundeven.f32(float %a) nounwind readnone
496+
%r = call float @llvm.roundeven.f32(float %a)
497497
%i = call i64 @llvm.fptosi.sat.i64.f32(float %r)
498498
ret i64 %i
499499
}
@@ -504,7 +504,7 @@ define i32 @testnswd(double %a) {
504504
; CHECK-NEXT: fcvtns w0, d0
505505
; CHECK-NEXT: ret
506506
entry:
507-
%r = call double @llvm.roundeven.f64(double %a) nounwind readnone
507+
%r = call double @llvm.roundeven.f64(double %a)
508508
%i = call i32 @llvm.fptosi.sat.i32.f64(double %r)
509509
ret i32 %i
510510
}
@@ -515,34 +515,7 @@ define i64 @testnsxd(double %a) {
515515
; CHECK-NEXT: fcvtns x0, d0
516516
; CHECK-NEXT: ret
517517
entry:
518-
%r = call double @llvm.roundeven.f64(double %a) nounwind readnone
518+
%r = call double @llvm.roundeven.f64(double %a)
519519
%i = call i64 @llvm.fptosi.sat.i64.f64(double %r)
520520
ret i64 %i
521521
}
522-
523-
declare i32 @llvm.fptosi.sat.i32.bf16 (bfloat)
524-
declare i64 @llvm.fptosi.sat.i64.bf16 (bfloat)
525-
declare i32 @llvm.fptosi.sat.i32.f16 (half)
526-
declare i64 @llvm.fptosi.sat.i64.f16 (half)
527-
declare i32 @llvm.fptosi.sat.i32.f32 (float)
528-
declare i64 @llvm.fptosi.sat.i64.f32 (float)
529-
declare i32 @llvm.fptosi.sat.i32.f64 (double)
530-
declare i64 @llvm.fptosi.sat.i64.f64 (double)
531-
532-
declare bfloat @llvm.floor.bf16(bfloat) nounwind readnone
533-
declare bfloat @llvm.ceil.bf16(bfloat) nounwind readnone
534-
declare bfloat @llvm.trunc.bf16(bfloat) nounwind readnone
535-
declare bfloat @llvm.round.bf16(bfloat) nounwind readnone
536-
declare half @llvm.floor.f16(half) nounwind readnone
537-
declare half @llvm.ceil.f16(half) nounwind readnone
538-
declare half @llvm.trunc.f16(half) nounwind readnone
539-
declare half @llvm.round.f16(half) nounwind readnone
540-
declare half @llvm.roundeven.f16(half) nounwind readnone
541-
declare float @floorf(float) nounwind readnone
542-
declare float @ceilf(float) nounwind readnone
543-
declare float @truncf(float) nounwind readnone
544-
declare float @roundf(float) nounwind readnone
545-
declare double @floor(double) nounwind readnone
546-
declare double @ceil(double) nounwind readnone
547-
declare double @trunc(double) nounwind readnone
548-
declare double @round(double) nounwind readnone

0 commit comments

Comments
 (0)