1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mcpu=pwr7 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
3 ; RUN: -mtriple=powerpc64-unknown-unknown -verify-machineinstrs < %s | \
4 ; RUN: FileCheck %s --check-prefix=BE
5 ; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
6 ; RUN: -mtriple=powerpc64le-unknown-unknown -verify-machineinstrs < %s | \
8 ; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
9 ; RUN: -mtriple=powerpc64le-unknown-unknown -verify-machineinstrs < %s \
10 ; RUN: --enable-unsafe-fp-math | FileCheck %s --check-prefix=FAST
11 define dso_local i64 @test_lrint(double %d) local_unnamed_addr {
12 ; BE-LABEL: test_lrint:
13 ; BE: # %bb.0: # %entry
15 ; BE-NEXT: stdu r1, -112(r1)
16 ; BE-NEXT: std r0, 128(r1)
17 ; BE-NEXT: .cfi_def_cfa_offset 112
18 ; BE-NEXT: .cfi_offset lr, 16
21 ; BE-NEXT: addi r1, r1, 112
22 ; BE-NEXT: ld r0, 16(r1)
26 ; CHECK-LABEL: test_lrint:
27 ; CHECK: # %bb.0: # %entry
29 ; CHECK-NEXT: stdu r1, -32(r1)
30 ; CHECK-NEXT: std r0, 48(r1)
31 ; CHECK-NEXT: .cfi_def_cfa_offset 32
32 ; CHECK-NEXT: .cfi_offset lr, 16
33 ; CHECK-NEXT: bl lrint
35 ; CHECK-NEXT: addi r1, r1, 32
36 ; CHECK-NEXT: ld r0, 16(r1)
40 ; FAST-LABEL: test_lrint:
41 ; FAST: # %bb.0: # %entry
42 ; FAST-NEXT: fctid f0, f1
43 ; FAST-NEXT: mffprd r3, f0
46 %0 = tail call i64 @llvm.lrint.i64.f64(double %d)
50 declare i64 @llvm.lrint.i64.f64(double)
52 define dso_local i64 @test_lrintf(float %f) local_unnamed_addr {
53 ; BE-LABEL: test_lrintf:
54 ; BE: # %bb.0: # %entry
56 ; BE-NEXT: stdu r1, -112(r1)
57 ; BE-NEXT: std r0, 128(r1)
58 ; BE-NEXT: .cfi_def_cfa_offset 112
59 ; BE-NEXT: .cfi_offset lr, 16
62 ; BE-NEXT: addi r1, r1, 112
63 ; BE-NEXT: ld r0, 16(r1)
67 ; CHECK-LABEL: test_lrintf:
68 ; CHECK: # %bb.0: # %entry
70 ; CHECK-NEXT: stdu r1, -32(r1)
71 ; CHECK-NEXT: std r0, 48(r1)
72 ; CHECK-NEXT: .cfi_def_cfa_offset 32
73 ; CHECK-NEXT: .cfi_offset lr, 16
74 ; CHECK-NEXT: bl lrintf
76 ; CHECK-NEXT: addi r1, r1, 32
77 ; CHECK-NEXT: ld r0, 16(r1)
81 ; FAST-LABEL: test_lrintf:
82 ; FAST: # %bb.0: # %entry
83 ; FAST-NEXT: fctid f0, f1
84 ; FAST-NEXT: mffprd r3, f0
87 %0 = tail call i64 @llvm.lrint.i64.f32(float %f)
91 declare i64 @llvm.lrint.i64.f32(float)
93 define dso_local i64 @test_llrint(double %d) local_unnamed_addr {
94 ; BE-LABEL: test_llrint:
95 ; BE: # %bb.0: # %entry
97 ; BE-NEXT: stdu r1, -112(r1)
98 ; BE-NEXT: std r0, 128(r1)
99 ; BE-NEXT: .cfi_def_cfa_offset 112
100 ; BE-NEXT: .cfi_offset lr, 16
103 ; BE-NEXT: addi r1, r1, 112
104 ; BE-NEXT: ld r0, 16(r1)
108 ; CHECK-LABEL: test_llrint:
109 ; CHECK: # %bb.0: # %entry
110 ; CHECK-NEXT: mflr r0
111 ; CHECK-NEXT: stdu r1, -32(r1)
112 ; CHECK-NEXT: std r0, 48(r1)
113 ; CHECK-NEXT: .cfi_def_cfa_offset 32
114 ; CHECK-NEXT: .cfi_offset lr, 16
115 ; CHECK-NEXT: bl llrint
117 ; CHECK-NEXT: addi r1, r1, 32
118 ; CHECK-NEXT: ld r0, 16(r1)
119 ; CHECK-NEXT: mtlr r0
122 ; FAST-LABEL: test_llrint:
123 ; FAST: # %bb.0: # %entry
124 ; FAST-NEXT: fctid f0, f1
125 ; FAST-NEXT: mffprd r3, f0
128 %0 = tail call i64 @llvm.llrint.i64.f64(double %d)
132 declare i64 @llvm.llrint.i64.f64(double)
134 define dso_local i64 @test_llrintf(float %f) local_unnamed_addr {
135 ; BE-LABEL: test_llrintf:
136 ; BE: # %bb.0: # %entry
138 ; BE-NEXT: stdu r1, -112(r1)
139 ; BE-NEXT: std r0, 128(r1)
140 ; BE-NEXT: .cfi_def_cfa_offset 112
141 ; BE-NEXT: .cfi_offset lr, 16
142 ; BE-NEXT: bl llrintf
144 ; BE-NEXT: addi r1, r1, 112
145 ; BE-NEXT: ld r0, 16(r1)
149 ; CHECK-LABEL: test_llrintf:
150 ; CHECK: # %bb.0: # %entry
151 ; CHECK-NEXT: mflr r0
152 ; CHECK-NEXT: stdu r1, -32(r1)
153 ; CHECK-NEXT: std r0, 48(r1)
154 ; CHECK-NEXT: .cfi_def_cfa_offset 32
155 ; CHECK-NEXT: .cfi_offset lr, 16
156 ; CHECK-NEXT: bl llrintf
158 ; CHECK-NEXT: addi r1, r1, 32
159 ; CHECK-NEXT: ld r0, 16(r1)
160 ; CHECK-NEXT: mtlr r0
163 ; FAST-LABEL: test_llrintf:
164 ; FAST: # %bb.0: # %entry
165 ; FAST-NEXT: fctid f0, f1
166 ; FAST-NEXT: mffprd r3, f0
169 %0 = tail call i64 @llvm.llrint.i64.f32(float %f)
173 declare i64 @llvm.llrint.i64.f32(float)
175 define dso_local i64 @test_lround(double %d) local_unnamed_addr {
176 ; BE-LABEL: test_lround:
177 ; BE: # %bb.0: # %entry
179 ; BE-NEXT: stdu r1, -112(r1)
180 ; BE-NEXT: std r0, 128(r1)
181 ; BE-NEXT: .cfi_def_cfa_offset 112
182 ; BE-NEXT: .cfi_offset lr, 16
185 ; BE-NEXT: addi r1, r1, 112
186 ; BE-NEXT: ld r0, 16(r1)
190 ; CHECK-LABEL: test_lround:
191 ; CHECK: # %bb.0: # %entry
192 ; CHECK-NEXT: mflr r0
193 ; CHECK-NEXT: stdu r1, -32(r1)
194 ; CHECK-NEXT: std r0, 48(r1)
195 ; CHECK-NEXT: .cfi_def_cfa_offset 32
196 ; CHECK-NEXT: .cfi_offset lr, 16
197 ; CHECK-NEXT: bl lround
199 ; CHECK-NEXT: addi r1, r1, 32
200 ; CHECK-NEXT: ld r0, 16(r1)
201 ; CHECK-NEXT: mtlr r0
204 ; FAST-LABEL: test_lround:
205 ; FAST: # %bb.0: # %entry
206 ; FAST-NEXT: xsrdpi f0, f1
207 ; FAST-NEXT: fctid f0, f0
208 ; FAST-NEXT: mffprd r3, f0
211 %0 = tail call i64 @llvm.lround.i64.f64(double %d)
215 declare i64 @llvm.lround.i64.f64(double)
217 define dso_local i32 @test_lroundi32f64(double %d) local_unnamed_addr {
218 ; BE-LABEL: test_lroundi32f64:
219 ; BE: # %bb.0: # %entry
221 ; BE-NEXT: stdu r1, -112(r1)
222 ; BE-NEXT: std r0, 128(r1)
223 ; BE-NEXT: .cfi_def_cfa_offset 112
224 ; BE-NEXT: .cfi_offset lr, 16
227 ; BE-NEXT: addi r1, r1, 112
228 ; BE-NEXT: ld r0, 16(r1)
232 ; CHECK-LABEL: test_lroundi32f64:
233 ; CHECK: # %bb.0: # %entry
234 ; CHECK-NEXT: mflr r0
235 ; CHECK-NEXT: stdu r1, -32(r1)
236 ; CHECK-NEXT: std r0, 48(r1)
237 ; CHECK-NEXT: .cfi_def_cfa_offset 32
238 ; CHECK-NEXT: .cfi_offset lr, 16
239 ; CHECK-NEXT: bl lround
241 ; CHECK-NEXT: addi r1, r1, 32
242 ; CHECK-NEXT: ld r0, 16(r1)
243 ; CHECK-NEXT: mtlr r0
246 ; FAST-LABEL: test_lroundi32f64:
247 ; FAST: # %bb.0: # %entry
248 ; FAST-NEXT: xsrdpi f0, f1
249 ; FAST-NEXT: fctiw f0, f0
250 ; FAST-NEXT: mffprwz r3, f0
253 %0 = tail call i32 @llvm.lround.i32.f64(double %d)
257 declare i32 @llvm.lround.i32.f64(double)
259 define dso_local i64 @test_lroundf(float %f) local_unnamed_addr {
260 ; BE-LABEL: test_lroundf:
261 ; BE: # %bb.0: # %entry
263 ; BE-NEXT: stdu r1, -112(r1)
264 ; BE-NEXT: std r0, 128(r1)
265 ; BE-NEXT: .cfi_def_cfa_offset 112
266 ; BE-NEXT: .cfi_offset lr, 16
267 ; BE-NEXT: bl lroundf
269 ; BE-NEXT: addi r1, r1, 112
270 ; BE-NEXT: ld r0, 16(r1)
274 ; CHECK-LABEL: test_lroundf:
275 ; CHECK: # %bb.0: # %entry
276 ; CHECK-NEXT: mflr r0
277 ; CHECK-NEXT: stdu r1, -32(r1)
278 ; CHECK-NEXT: std r0, 48(r1)
279 ; CHECK-NEXT: .cfi_def_cfa_offset 32
280 ; CHECK-NEXT: .cfi_offset lr, 16
281 ; CHECK-NEXT: bl lroundf
283 ; CHECK-NEXT: addi r1, r1, 32
284 ; CHECK-NEXT: ld r0, 16(r1)
285 ; CHECK-NEXT: mtlr r0
288 ; FAST-LABEL: test_lroundf:
289 ; FAST: # %bb.0: # %entry
290 ; FAST-NEXT: xsrdpi f0, f1
291 ; FAST-NEXT: fctid f0, f0
292 ; FAST-NEXT: mffprd r3, f0
295 %0 = tail call i64 @llvm.lround.i64.f32(float %f)
299 declare i64 @llvm.lround.i64.f32(float)
301 define dso_local i32 @test_lroundi32f32(float %d) local_unnamed_addr {
302 ; BE-LABEL: test_lroundi32f32:
303 ; BE: # %bb.0: # %entry
305 ; BE-NEXT: stdu r1, -112(r1)
306 ; BE-NEXT: std r0, 128(r1)
307 ; BE-NEXT: .cfi_def_cfa_offset 112
308 ; BE-NEXT: .cfi_offset lr, 16
309 ; BE-NEXT: bl lroundf
311 ; BE-NEXT: addi r1, r1, 112
312 ; BE-NEXT: ld r0, 16(r1)
316 ; CHECK-LABEL: test_lroundi32f32:
317 ; CHECK: # %bb.0: # %entry
318 ; CHECK-NEXT: mflr r0
319 ; CHECK-NEXT: stdu r1, -32(r1)
320 ; CHECK-NEXT: std r0, 48(r1)
321 ; CHECK-NEXT: .cfi_def_cfa_offset 32
322 ; CHECK-NEXT: .cfi_offset lr, 16
323 ; CHECK-NEXT: bl lroundf
325 ; CHECK-NEXT: addi r1, r1, 32
326 ; CHECK-NEXT: ld r0, 16(r1)
327 ; CHECK-NEXT: mtlr r0
330 ; FAST-LABEL: test_lroundi32f32:
331 ; FAST: # %bb.0: # %entry
332 ; FAST-NEXT: xsrdpi f0, f1
333 ; FAST-NEXT: fctiw f0, f0
334 ; FAST-NEXT: mffprwz r3, f0
337 %0 = tail call i32 @llvm.lround.i32.f32(float %d)
341 declare i32 @llvm.lround.i32.f32(float)
343 define dso_local i64 @test_llround(double %d) local_unnamed_addr {
344 ; BE-LABEL: test_llround:
345 ; BE: # %bb.0: # %entry
347 ; BE-NEXT: stdu r1, -112(r1)
348 ; BE-NEXT: std r0, 128(r1)
349 ; BE-NEXT: .cfi_def_cfa_offset 112
350 ; BE-NEXT: .cfi_offset lr, 16
351 ; BE-NEXT: bl llround
353 ; BE-NEXT: addi r1, r1, 112
354 ; BE-NEXT: ld r0, 16(r1)
358 ; CHECK-LABEL: test_llround:
359 ; CHECK: # %bb.0: # %entry
360 ; CHECK-NEXT: mflr r0
361 ; CHECK-NEXT: stdu r1, -32(r1)
362 ; CHECK-NEXT: std r0, 48(r1)
363 ; CHECK-NEXT: .cfi_def_cfa_offset 32
364 ; CHECK-NEXT: .cfi_offset lr, 16
365 ; CHECK-NEXT: bl llround
367 ; CHECK-NEXT: addi r1, r1, 32
368 ; CHECK-NEXT: ld r0, 16(r1)
369 ; CHECK-NEXT: mtlr r0
372 ; FAST-LABEL: test_llround:
373 ; FAST: # %bb.0: # %entry
374 ; FAST-NEXT: xsrdpi f0, f1
375 ; FAST-NEXT: fctid f0, f0
376 ; FAST-NEXT: mffprd r3, f0
379 %0 = tail call i64 @llvm.llround.i64.f64(double %d)
383 declare i64 @llvm.llround.i64.f64(double)
385 define dso_local i64 @test_llroundf(float %f) local_unnamed_addr {
386 ; BE-LABEL: test_llroundf:
387 ; BE: # %bb.0: # %entry
389 ; BE-NEXT: stdu r1, -112(r1)
390 ; BE-NEXT: std r0, 128(r1)
391 ; BE-NEXT: .cfi_def_cfa_offset 112
392 ; BE-NEXT: .cfi_offset lr, 16
393 ; BE-NEXT: bl llroundf
395 ; BE-NEXT: addi r1, r1, 112
396 ; BE-NEXT: ld r0, 16(r1)
400 ; CHECK-LABEL: test_llroundf:
401 ; CHECK: # %bb.0: # %entry
402 ; CHECK-NEXT: mflr r0
403 ; CHECK-NEXT: stdu r1, -32(r1)
404 ; CHECK-NEXT: std r0, 48(r1)
405 ; CHECK-NEXT: .cfi_def_cfa_offset 32
406 ; CHECK-NEXT: .cfi_offset lr, 16
407 ; CHECK-NEXT: bl llroundf
409 ; CHECK-NEXT: addi r1, r1, 32
410 ; CHECK-NEXT: ld r0, 16(r1)
411 ; CHECK-NEXT: mtlr r0
414 ; FAST-LABEL: test_llroundf:
415 ; FAST: # %bb.0: # %entry
416 ; FAST-NEXT: xsrdpi f0, f1
417 ; FAST-NEXT: fctid f0, f0
418 ; FAST-NEXT: mffprd r3, f0
421 %0 = tail call i64 @llvm.llround.i64.f32(float %f)
425 declare i64 @llvm.llround.i64.f32(float)
427 define dso_local double @test_nearbyint(double %d) local_unnamed_addr {
428 ; BE-LABEL: test_nearbyint:
429 ; BE: # %bb.0: # %entry
431 ; BE-NEXT: stdu r1, -112(r1)
432 ; BE-NEXT: std r0, 128(r1)
433 ; BE-NEXT: .cfi_def_cfa_offset 112
434 ; BE-NEXT: .cfi_offset lr, 16
435 ; BE-NEXT: bl nearbyint
437 ; BE-NEXT: addi r1, r1, 112
438 ; BE-NEXT: ld r0, 16(r1)
442 ; CHECK-LABEL: test_nearbyint:
443 ; CHECK: # %bb.0: # %entry
444 ; CHECK-NEXT: mflr r0
445 ; CHECK-NEXT: stdu r1, -32(r1)
446 ; CHECK-NEXT: std r0, 48(r1)
447 ; CHECK-NEXT: .cfi_def_cfa_offset 32
448 ; CHECK-NEXT: .cfi_offset lr, 16
449 ; CHECK-NEXT: bl nearbyint
451 ; CHECK-NEXT: addi r1, r1, 32
452 ; CHECK-NEXT: ld r0, 16(r1)
453 ; CHECK-NEXT: mtlr r0
456 ; FAST-LABEL: test_nearbyint:
457 ; FAST: # %bb.0: # %entry
458 ; FAST-NEXT: xsrdpic f1, f1
461 %0 = tail call double @llvm.nearbyint.f64(double %d)
465 declare double @llvm.nearbyint.f64(double)
467 define dso_local float @test_nearbyintf(float %f) local_unnamed_addr {
468 ; BE-LABEL: test_nearbyintf:
469 ; BE: # %bb.0: # %entry
471 ; BE-NEXT: stdu r1, -112(r1)
472 ; BE-NEXT: std r0, 128(r1)
473 ; BE-NEXT: .cfi_def_cfa_offset 112
474 ; BE-NEXT: .cfi_offset lr, 16
475 ; BE-NEXT: bl nearbyintf
477 ; BE-NEXT: addi r1, r1, 112
478 ; BE-NEXT: ld r0, 16(r1)
482 ; CHECK-LABEL: test_nearbyintf:
483 ; CHECK: # %bb.0: # %entry
484 ; CHECK-NEXT: mflr r0
485 ; CHECK-NEXT: stdu r1, -32(r1)
486 ; CHECK-NEXT: std r0, 48(r1)
487 ; CHECK-NEXT: .cfi_def_cfa_offset 32
488 ; CHECK-NEXT: .cfi_offset lr, 16
489 ; CHECK-NEXT: bl nearbyintf
491 ; CHECK-NEXT: addi r1, r1, 32
492 ; CHECK-NEXT: ld r0, 16(r1)
493 ; CHECK-NEXT: mtlr r0
496 ; FAST-LABEL: test_nearbyintf:
497 ; FAST: # %bb.0: # %entry
498 ; FAST-NEXT: xsrdpic f1, f1
501 %0 = tail call float @llvm.nearbyint.f32(float %f)
505 declare float @llvm.nearbyint.f32(float)
507 define dso_local double @test_round(double %d) local_unnamed_addr {
508 ; BE-LABEL: test_round:
509 ; BE: # %bb.0: # %entry
510 ; BE-NEXT: xsrdpi f1, f1
513 ; CHECK-LABEL: test_round:
514 ; CHECK: # %bb.0: # %entry
515 ; CHECK-NEXT: xsrdpi f1, f1
518 ; FAST-LABEL: test_round:
519 ; FAST: # %bb.0: # %entry
520 ; FAST-NEXT: xsrdpi f1, f1
523 %0 = tail call double @llvm.round.f64(double %d)
527 declare double @llvm.round.f64(double)
529 define dso_local float @test_roundf(float %f) local_unnamed_addr {
530 ; BE-LABEL: test_roundf:
531 ; BE: # %bb.0: # %entry
532 ; BE-NEXT: xsrdpi f1, f1
535 ; CHECK-LABEL: test_roundf:
536 ; CHECK: # %bb.0: # %entry
537 ; CHECK-NEXT: xsrdpi f1, f1
540 ; FAST-LABEL: test_roundf:
541 ; FAST: # %bb.0: # %entry
542 ; FAST-NEXT: xsrdpi f1, f1
545 %0 = tail call float @llvm.round.f32(float %f)
549 declare float @llvm.round.f32(float)
551 define dso_local double @test_trunc(double %d) local_unnamed_addr {
552 ; BE-LABEL: test_trunc:
553 ; BE: # %bb.0: # %entry
554 ; BE-NEXT: xsrdpiz f1, f1
557 ; CHECK-LABEL: test_trunc:
558 ; CHECK: # %bb.0: # %entry
559 ; CHECK-NEXT: xsrdpiz f1, f1
562 ; FAST-LABEL: test_trunc:
563 ; FAST: # %bb.0: # %entry
564 ; FAST-NEXT: xsrdpiz f1, f1
567 %0 = tail call double @llvm.trunc.f64(double %d)
571 declare double @llvm.trunc.f64(double)
573 define dso_local float @test_truncf(float %f) local_unnamed_addr {
574 ; BE-LABEL: test_truncf:
575 ; BE: # %bb.0: # %entry
576 ; BE-NEXT: xsrdpiz f1, f1
579 ; CHECK-LABEL: test_truncf:
580 ; CHECK: # %bb.0: # %entry
581 ; CHECK-NEXT: xsrdpiz f1, f1
584 ; FAST-LABEL: test_truncf:
585 ; FAST: # %bb.0: # %entry
586 ; FAST-NEXT: xsrdpiz f1, f1
589 %0 = tail call float @llvm.trunc.f32(float %f)
593 declare float @llvm.trunc.f32(float)
595 define dso_local double @test_floor(double %d) local_unnamed_addr {
596 ; BE-LABEL: test_floor:
597 ; BE: # %bb.0: # %entry
598 ; BE-NEXT: xsrdpim f1, f1
601 ; CHECK-LABEL: test_floor:
602 ; CHECK: # %bb.0: # %entry
603 ; CHECK-NEXT: xsrdpim f1, f1
606 ; FAST-LABEL: test_floor:
607 ; FAST: # %bb.0: # %entry
608 ; FAST-NEXT: xsrdpim f1, f1
611 %0 = tail call double @llvm.floor.f64(double %d)
615 declare double @llvm.floor.f64(double)
617 define dso_local float @test_floorf(float %f) local_unnamed_addr {
618 ; BE-LABEL: test_floorf:
619 ; BE: # %bb.0: # %entry
620 ; BE-NEXT: xsrdpim f1, f1
623 ; CHECK-LABEL: test_floorf:
624 ; CHECK: # %bb.0: # %entry
625 ; CHECK-NEXT: xsrdpim f1, f1
628 ; FAST-LABEL: test_floorf:
629 ; FAST: # %bb.0: # %entry
630 ; FAST-NEXT: xsrdpim f1, f1
633 %0 = tail call float @llvm.floor.f32(float %f)
637 declare float @llvm.floor.f32(float)
639 define dso_local double @test_ceil(double %d) local_unnamed_addr {
640 ; BE-LABEL: test_ceil:
641 ; BE: # %bb.0: # %entry
642 ; BE-NEXT: xsrdpip f1, f1
645 ; CHECK-LABEL: test_ceil:
646 ; CHECK: # %bb.0: # %entry
647 ; CHECK-NEXT: xsrdpip f1, f1
650 ; FAST-LABEL: test_ceil:
651 ; FAST: # %bb.0: # %entry
652 ; FAST-NEXT: xsrdpip f1, f1
655 %0 = tail call double @llvm.ceil.f64(double %d)
659 declare double @llvm.ceil.f64(double)
661 define dso_local float @test_ceilf(float %f) local_unnamed_addr {
662 ; BE-LABEL: test_ceilf:
663 ; BE: # %bb.0: # %entry
664 ; BE-NEXT: xsrdpip f1, f1
667 ; CHECK-LABEL: test_ceilf:
668 ; CHECK: # %bb.0: # %entry
669 ; CHECK-NEXT: xsrdpip f1, f1
672 ; FAST-LABEL: test_ceilf:
673 ; FAST: # %bb.0: # %entry
674 ; FAST-NEXT: xsrdpip f1, f1
677 %0 = tail call float @llvm.ceil.f32(float %f)
681 declare float @llvm.ceil.f32(float)
683 define dso_local double @test_rint(double %d) local_unnamed_addr {
684 ; BE-LABEL: test_rint:
685 ; BE: # %bb.0: # %entry
686 ; BE-NEXT: xsrdpic f1, f1
689 ; CHECK-LABEL: test_rint:
690 ; CHECK: # %bb.0: # %entry
691 ; CHECK-NEXT: xsrdpic f1, f1
694 ; FAST-LABEL: test_rint:
695 ; FAST: # %bb.0: # %entry
696 ; FAST-NEXT: xsrdpic f1, f1
699 %0 = tail call double @llvm.rint.f64(double %d)
703 declare double @llvm.rint.f64(double)
705 define dso_local float @test_rintf(float %f) local_unnamed_addr {
706 ; BE-LABEL: test_rintf:
707 ; BE: # %bb.0: # %entry
708 ; BE-NEXT: xsrdpic f1, f1
711 ; CHECK-LABEL: test_rintf:
712 ; CHECK: # %bb.0: # %entry
713 ; CHECK-NEXT: xsrdpic f1, f1
716 ; FAST-LABEL: test_rintf:
717 ; FAST: # %bb.0: # %entry
718 ; FAST-NEXT: xsrdpic f1, f1
721 %0 = tail call float @llvm.rint.f32(float %f)
725 declare float @llvm.rint.f32(float)