[RISCV] Change func to funct in RISCVInstrInfoXqci.td. NFC (#119669)
[llvm-project.git] / llvm / test / CodeGen / PowerPC / scalar-rounding-ops.ll
blob2be370f638d5bd11a52306f0ce245b9b0e8f1e79
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 | \
7 ; RUN:   FileCheck %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
14 ; BE-NEXT:    mflr r0
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
19 ; BE-NEXT:    bl lrint
20 ; BE-NEXT:    nop
21 ; BE-NEXT:    addi r1, r1, 112
22 ; BE-NEXT:    ld r0, 16(r1)
23 ; BE-NEXT:    mtlr r0
24 ; BE-NEXT:    blr
26 ; CHECK-LABEL: test_lrint:
27 ; CHECK:       # %bb.0: # %entry
28 ; CHECK-NEXT:    mflr r0
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
34 ; CHECK-NEXT:    nop
35 ; CHECK-NEXT:    addi r1, r1, 32
36 ; CHECK-NEXT:    ld r0, 16(r1)
37 ; CHECK-NEXT:    mtlr r0
38 ; CHECK-NEXT:    blr
40 ; FAST-LABEL: test_lrint:
41 ; FAST:       # %bb.0: # %entry
42 ; FAST-NEXT:    fctid f0, f1
43 ; FAST-NEXT:    mffprd r3, f0
44 ; FAST-NEXT:    blr
45 entry:
46   %0 = tail call i64 @llvm.lrint.i64.f64(double %d)
47   ret i64 %0
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
55 ; BE-NEXT:    mflr r0
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
60 ; BE-NEXT:    bl lrintf
61 ; BE-NEXT:    nop
62 ; BE-NEXT:    addi r1, r1, 112
63 ; BE-NEXT:    ld r0, 16(r1)
64 ; BE-NEXT:    mtlr r0
65 ; BE-NEXT:    blr
67 ; CHECK-LABEL: test_lrintf:
68 ; CHECK:       # %bb.0: # %entry
69 ; CHECK-NEXT:    mflr r0
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
75 ; CHECK-NEXT:    nop
76 ; CHECK-NEXT:    addi r1, r1, 32
77 ; CHECK-NEXT:    ld r0, 16(r1)
78 ; CHECK-NEXT:    mtlr r0
79 ; CHECK-NEXT:    blr
81 ; FAST-LABEL: test_lrintf:
82 ; FAST:       # %bb.0: # %entry
83 ; FAST-NEXT:    fctid f0, f1
84 ; FAST-NEXT:    mffprd r3, f0
85 ; FAST-NEXT:    blr
86 entry:
87   %0 = tail call i64 @llvm.lrint.i64.f32(float %f)
88   ret i64 %0
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
96 ; BE-NEXT:    mflr r0
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
101 ; BE-NEXT:    bl llrint
102 ; BE-NEXT:    nop
103 ; BE-NEXT:    addi r1, r1, 112
104 ; BE-NEXT:    ld r0, 16(r1)
105 ; BE-NEXT:    mtlr r0
106 ; BE-NEXT:    blr
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
116 ; CHECK-NEXT:    nop
117 ; CHECK-NEXT:    addi r1, r1, 32
118 ; CHECK-NEXT:    ld r0, 16(r1)
119 ; CHECK-NEXT:    mtlr r0
120 ; CHECK-NEXT:    blr
122 ; FAST-LABEL: test_llrint:
123 ; FAST:       # %bb.0: # %entry
124 ; FAST-NEXT:    fctid f0, f1
125 ; FAST-NEXT:    mffprd r3, f0
126 ; FAST-NEXT:    blr
127 entry:
128   %0 = tail call i64 @llvm.llrint.i64.f64(double %d)
129   ret i64 %0
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
137 ; BE-NEXT:    mflr r0
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
143 ; BE-NEXT:    nop
144 ; BE-NEXT:    addi r1, r1, 112
145 ; BE-NEXT:    ld r0, 16(r1)
146 ; BE-NEXT:    mtlr r0
147 ; BE-NEXT:    blr
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
157 ; CHECK-NEXT:    nop
158 ; CHECK-NEXT:    addi r1, r1, 32
159 ; CHECK-NEXT:    ld r0, 16(r1)
160 ; CHECK-NEXT:    mtlr r0
161 ; CHECK-NEXT:    blr
163 ; FAST-LABEL: test_llrintf:
164 ; FAST:       # %bb.0: # %entry
165 ; FAST-NEXT:    fctid f0, f1
166 ; FAST-NEXT:    mffprd r3, f0
167 ; FAST-NEXT:    blr
168 entry:
169   %0 = tail call i64 @llvm.llrint.i64.f32(float %f)
170   ret i64 %0
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
178 ; BE-NEXT:    mflr r0
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
183 ; BE-NEXT:    bl lround
184 ; BE-NEXT:    nop
185 ; BE-NEXT:    addi r1, r1, 112
186 ; BE-NEXT:    ld r0, 16(r1)
187 ; BE-NEXT:    mtlr r0
188 ; BE-NEXT:    blr
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
198 ; CHECK-NEXT:    nop
199 ; CHECK-NEXT:    addi r1, r1, 32
200 ; CHECK-NEXT:    ld r0, 16(r1)
201 ; CHECK-NEXT:    mtlr r0
202 ; CHECK-NEXT:    blr
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
209 ; FAST-NEXT:    blr
210 entry:
211   %0 = tail call i64 @llvm.lround.i64.f64(double %d)
212   ret i64 %0
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
220 ; BE-NEXT:    mflr r0
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
225 ; BE-NEXT:    bl lround
226 ; BE-NEXT:    nop
227 ; BE-NEXT:    addi r1, r1, 112
228 ; BE-NEXT:    ld r0, 16(r1)
229 ; BE-NEXT:    mtlr r0
230 ; BE-NEXT:    blr
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
240 ; CHECK-NEXT:    nop
241 ; CHECK-NEXT:    addi r1, r1, 32
242 ; CHECK-NEXT:    ld r0, 16(r1)
243 ; CHECK-NEXT:    mtlr r0
244 ; CHECK-NEXT:    blr
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
251 ; FAST-NEXT:    blr
252 entry:
253   %0 = tail call i32 @llvm.lround.i32.f64(double %d)
254   ret i32 %0
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
262 ; BE-NEXT:    mflr r0
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
268 ; BE-NEXT:    nop
269 ; BE-NEXT:    addi r1, r1, 112
270 ; BE-NEXT:    ld r0, 16(r1)
271 ; BE-NEXT:    mtlr r0
272 ; BE-NEXT:    blr
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
282 ; CHECK-NEXT:    nop
283 ; CHECK-NEXT:    addi r1, r1, 32
284 ; CHECK-NEXT:    ld r0, 16(r1)
285 ; CHECK-NEXT:    mtlr r0
286 ; CHECK-NEXT:    blr
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
293 ; FAST-NEXT:    blr
294 entry:
295   %0 = tail call i64 @llvm.lround.i64.f32(float %f)
296   ret i64 %0
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
304 ; BE-NEXT:    mflr r0
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
310 ; BE-NEXT:    nop
311 ; BE-NEXT:    addi r1, r1, 112
312 ; BE-NEXT:    ld r0, 16(r1)
313 ; BE-NEXT:    mtlr r0
314 ; BE-NEXT:    blr
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
324 ; CHECK-NEXT:    nop
325 ; CHECK-NEXT:    addi r1, r1, 32
326 ; CHECK-NEXT:    ld r0, 16(r1)
327 ; CHECK-NEXT:    mtlr r0
328 ; CHECK-NEXT:    blr
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
335 ; FAST-NEXT:    blr
336 entry:
337   %0 = tail call i32 @llvm.lround.i32.f32(float %d)
338   ret i32 %0
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
346 ; BE-NEXT:    mflr r0
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
352 ; BE-NEXT:    nop
353 ; BE-NEXT:    addi r1, r1, 112
354 ; BE-NEXT:    ld r0, 16(r1)
355 ; BE-NEXT:    mtlr r0
356 ; BE-NEXT:    blr
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
366 ; CHECK-NEXT:    nop
367 ; CHECK-NEXT:    addi r1, r1, 32
368 ; CHECK-NEXT:    ld r0, 16(r1)
369 ; CHECK-NEXT:    mtlr r0
370 ; CHECK-NEXT:    blr
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
377 ; FAST-NEXT:    blr
378 entry:
379   %0 = tail call i64 @llvm.llround.i64.f64(double %d)
380   ret i64 %0
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
388 ; BE-NEXT:    mflr r0
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
394 ; BE-NEXT:    nop
395 ; BE-NEXT:    addi r1, r1, 112
396 ; BE-NEXT:    ld r0, 16(r1)
397 ; BE-NEXT:    mtlr r0
398 ; BE-NEXT:    blr
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
408 ; CHECK-NEXT:    nop
409 ; CHECK-NEXT:    addi r1, r1, 32
410 ; CHECK-NEXT:    ld r0, 16(r1)
411 ; CHECK-NEXT:    mtlr r0
412 ; CHECK-NEXT:    blr
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
419 ; FAST-NEXT:    blr
420 entry:
421   %0 = tail call i64 @llvm.llround.i64.f32(float %f)
422   ret i64 %0
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
430 ; BE-NEXT:    mflr r0
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
436 ; BE-NEXT:    nop
437 ; BE-NEXT:    addi r1, r1, 112
438 ; BE-NEXT:    ld r0, 16(r1)
439 ; BE-NEXT:    mtlr r0
440 ; BE-NEXT:    blr
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
450 ; CHECK-NEXT:    nop
451 ; CHECK-NEXT:    addi r1, r1, 32
452 ; CHECK-NEXT:    ld r0, 16(r1)
453 ; CHECK-NEXT:    mtlr r0
454 ; CHECK-NEXT:    blr
456 ; FAST-LABEL: test_nearbyint:
457 ; FAST:       # %bb.0: # %entry
458 ; FAST-NEXT:    xsrdpic f1, f1
459 ; FAST-NEXT:    blr
460 entry:
461   %0 = tail call double @llvm.nearbyint.f64(double %d)
462   ret double %0
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
470 ; BE-NEXT:    mflr r0
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
476 ; BE-NEXT:    nop
477 ; BE-NEXT:    addi r1, r1, 112
478 ; BE-NEXT:    ld r0, 16(r1)
479 ; BE-NEXT:    mtlr r0
480 ; BE-NEXT:    blr
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
490 ; CHECK-NEXT:    nop
491 ; CHECK-NEXT:    addi r1, r1, 32
492 ; CHECK-NEXT:    ld r0, 16(r1)
493 ; CHECK-NEXT:    mtlr r0
494 ; CHECK-NEXT:    blr
496 ; FAST-LABEL: test_nearbyintf:
497 ; FAST:       # %bb.0: # %entry
498 ; FAST-NEXT:    xsrdpic f1, f1
499 ; FAST-NEXT:    blr
500 entry:
501   %0 = tail call float @llvm.nearbyint.f32(float %f)
502   ret float %0
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
511 ; BE-NEXT:    blr
513 ; CHECK-LABEL: test_round:
514 ; CHECK:       # %bb.0: # %entry
515 ; CHECK-NEXT:    xsrdpi f1, f1
516 ; CHECK-NEXT:    blr
518 ; FAST-LABEL: test_round:
519 ; FAST:       # %bb.0: # %entry
520 ; FAST-NEXT:    xsrdpi f1, f1
521 ; FAST-NEXT:    blr
522 entry:
523   %0 = tail call double @llvm.round.f64(double %d)
524   ret double %0
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
533 ; BE-NEXT:    blr
535 ; CHECK-LABEL: test_roundf:
536 ; CHECK:       # %bb.0: # %entry
537 ; CHECK-NEXT:    xsrdpi f1, f1
538 ; CHECK-NEXT:    blr
540 ; FAST-LABEL: test_roundf:
541 ; FAST:       # %bb.0: # %entry
542 ; FAST-NEXT:    xsrdpi f1, f1
543 ; FAST-NEXT:    blr
544 entry:
545   %0 = tail call float @llvm.round.f32(float %f)
546   ret float %0
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
555 ; BE-NEXT:    blr
557 ; CHECK-LABEL: test_trunc:
558 ; CHECK:       # %bb.0: # %entry
559 ; CHECK-NEXT:    xsrdpiz f1, f1
560 ; CHECK-NEXT:    blr
562 ; FAST-LABEL: test_trunc:
563 ; FAST:       # %bb.0: # %entry
564 ; FAST-NEXT:    xsrdpiz f1, f1
565 ; FAST-NEXT:    blr
566 entry:
567   %0 = tail call double @llvm.trunc.f64(double %d)
568   ret double %0
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
577 ; BE-NEXT:    blr
579 ; CHECK-LABEL: test_truncf:
580 ; CHECK:       # %bb.0: # %entry
581 ; CHECK-NEXT:    xsrdpiz f1, f1
582 ; CHECK-NEXT:    blr
584 ; FAST-LABEL: test_truncf:
585 ; FAST:       # %bb.0: # %entry
586 ; FAST-NEXT:    xsrdpiz f1, f1
587 ; FAST-NEXT:    blr
588 entry:
589   %0 = tail call float @llvm.trunc.f32(float %f)
590   ret float %0
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
599 ; BE-NEXT:    blr
601 ; CHECK-LABEL: test_floor:
602 ; CHECK:       # %bb.0: # %entry
603 ; CHECK-NEXT:    xsrdpim f1, f1
604 ; CHECK-NEXT:    blr
606 ; FAST-LABEL: test_floor:
607 ; FAST:       # %bb.0: # %entry
608 ; FAST-NEXT:    xsrdpim f1, f1
609 ; FAST-NEXT:    blr
610 entry:
611   %0 = tail call double @llvm.floor.f64(double %d)
612   ret double %0
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
621 ; BE-NEXT:    blr
623 ; CHECK-LABEL: test_floorf:
624 ; CHECK:       # %bb.0: # %entry
625 ; CHECK-NEXT:    xsrdpim f1, f1
626 ; CHECK-NEXT:    blr
628 ; FAST-LABEL: test_floorf:
629 ; FAST:       # %bb.0: # %entry
630 ; FAST-NEXT:    xsrdpim f1, f1
631 ; FAST-NEXT:    blr
632 entry:
633   %0 = tail call float @llvm.floor.f32(float %f)
634   ret float %0
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
643 ; BE-NEXT:    blr
645 ; CHECK-LABEL: test_ceil:
646 ; CHECK:       # %bb.0: # %entry
647 ; CHECK-NEXT:    xsrdpip f1, f1
648 ; CHECK-NEXT:    blr
650 ; FAST-LABEL: test_ceil:
651 ; FAST:       # %bb.0: # %entry
652 ; FAST-NEXT:    xsrdpip f1, f1
653 ; FAST-NEXT:    blr
654 entry:
655   %0 = tail call double @llvm.ceil.f64(double %d)
656   ret double %0
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
665 ; BE-NEXT:    blr
667 ; CHECK-LABEL: test_ceilf:
668 ; CHECK:       # %bb.0: # %entry
669 ; CHECK-NEXT:    xsrdpip f1, f1
670 ; CHECK-NEXT:    blr
672 ; FAST-LABEL: test_ceilf:
673 ; FAST:       # %bb.0: # %entry
674 ; FAST-NEXT:    xsrdpip f1, f1
675 ; FAST-NEXT:    blr
676 entry:
677   %0 = tail call float @llvm.ceil.f32(float %f)
678   ret float %0
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
687 ; BE-NEXT:    blr
689 ; CHECK-LABEL: test_rint:
690 ; CHECK:       # %bb.0: # %entry
691 ; CHECK-NEXT:    xsrdpic f1, f1
692 ; CHECK-NEXT:    blr
694 ; FAST-LABEL: test_rint:
695 ; FAST:       # %bb.0: # %entry
696 ; FAST-NEXT:    xsrdpic f1, f1
697 ; FAST-NEXT:    blr
698 entry:
699   %0 = tail call double @llvm.rint.f64(double %d)
700   ret double %0
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
709 ; BE-NEXT:    blr
711 ; CHECK-LABEL: test_rintf:
712 ; CHECK:       # %bb.0: # %entry
713 ; CHECK-NEXT:    xsrdpic f1, f1
714 ; CHECK-NEXT:    blr
716 ; FAST-LABEL: test_rintf:
717 ; FAST:       # %bb.0: # %entry
718 ; FAST-NEXT:    xsrdpic f1, f1
719 ; FAST-NEXT:    blr
720 entry:
721   %0 = tail call float @llvm.rint.f32(float %f)
722   ret float %0
725 declare float @llvm.rint.f32(float)