1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -O3 -mtriple=powerpc64le-linux-gnu < %s | FileCheck --check-prefix=PC64LE %s
3 ; RUN: llc -O3 -mtriple=powerpc64le-linux-gnu -mcpu=pwr9 < %s | FileCheck --check-prefix=PC64LE9 %s
4 ; RUN: llc -O3 -mtriple=powerpc64-linux-gnu < %s | FileCheck --check-prefix=PC64 %s
6 define ppc_fp128 @test_fadd_ppc_fp128(ppc_fp128 %first, ppc_fp128 %second) #0 {
7 ; PC64LE-LABEL: test_fadd_ppc_fp128:
8 ; PC64LE: # %bb.0: # %entry
10 ; PC64LE-NEXT: stdu 1, -32(1)
11 ; PC64LE-NEXT: std 0, 48(1)
12 ; PC64LE-NEXT: bl __gcc_qadd
14 ; PC64LE-NEXT: addi 1, 1, 32
15 ; PC64LE-NEXT: ld 0, 16(1)
19 ; PC64LE9-LABEL: test_fadd_ppc_fp128:
20 ; PC64LE9: # %bb.0: # %entry
21 ; PC64LE9-NEXT: mflr 0
22 ; PC64LE9-NEXT: stdu 1, -32(1)
23 ; PC64LE9-NEXT: std 0, 48(1)
24 ; PC64LE9-NEXT: bl __gcc_qadd
26 ; PC64LE9-NEXT: addi 1, 1, 32
27 ; PC64LE9-NEXT: ld 0, 16(1)
28 ; PC64LE9-NEXT: mtlr 0
31 ; PC64-LABEL: test_fadd_ppc_fp128:
32 ; PC64: # %bb.0: # %entry
34 ; PC64-NEXT: stdu 1, -112(1)
35 ; PC64-NEXT: std 0, 128(1)
36 ; PC64-NEXT: bl __gcc_qadd
38 ; PC64-NEXT: addi 1, 1, 112
39 ; PC64-NEXT: ld 0, 16(1)
43 %add = call ppc_fp128 @llvm.experimental.constrained.fadd.ppcf128(
46 metadata !"round.dynamic",
47 metadata !"fpexcept.strict") #1
51 define ppc_fp128 @test_fsub_ppc_fp128(ppc_fp128 %first, ppc_fp128 %second) #0 {
52 ; PC64LE-LABEL: test_fsub_ppc_fp128:
53 ; PC64LE: # %bb.0: # %entry
55 ; PC64LE-NEXT: stdu 1, -32(1)
56 ; PC64LE-NEXT: std 0, 48(1)
57 ; PC64LE-NEXT: bl __gcc_qsub
59 ; PC64LE-NEXT: addi 1, 1, 32
60 ; PC64LE-NEXT: ld 0, 16(1)
64 ; PC64LE9-LABEL: test_fsub_ppc_fp128:
65 ; PC64LE9: # %bb.0: # %entry
66 ; PC64LE9-NEXT: mflr 0
67 ; PC64LE9-NEXT: stdu 1, -32(1)
68 ; PC64LE9-NEXT: std 0, 48(1)
69 ; PC64LE9-NEXT: bl __gcc_qsub
71 ; PC64LE9-NEXT: addi 1, 1, 32
72 ; PC64LE9-NEXT: ld 0, 16(1)
73 ; PC64LE9-NEXT: mtlr 0
76 ; PC64-LABEL: test_fsub_ppc_fp128:
77 ; PC64: # %bb.0: # %entry
79 ; PC64-NEXT: stdu 1, -112(1)
80 ; PC64-NEXT: std 0, 128(1)
81 ; PC64-NEXT: bl __gcc_qsub
83 ; PC64-NEXT: addi 1, 1, 112
84 ; PC64-NEXT: ld 0, 16(1)
88 %sub = call ppc_fp128 @llvm.experimental.constrained.fsub.ppcf128(
91 metadata !"round.dynamic",
92 metadata !"fpexcept.strict") #1
96 define ppc_fp128 @test_fmul_ppc_fp128(ppc_fp128 %first, ppc_fp128 %second) #0 {
97 ; PC64LE-LABEL: test_fmul_ppc_fp128:
98 ; PC64LE: # %bb.0: # %entry
100 ; PC64LE-NEXT: stdu 1, -32(1)
101 ; PC64LE-NEXT: std 0, 48(1)
102 ; PC64LE-NEXT: bl __gcc_qmul
104 ; PC64LE-NEXT: addi 1, 1, 32
105 ; PC64LE-NEXT: ld 0, 16(1)
106 ; PC64LE-NEXT: mtlr 0
109 ; PC64LE9-LABEL: test_fmul_ppc_fp128:
110 ; PC64LE9: # %bb.0: # %entry
111 ; PC64LE9-NEXT: mflr 0
112 ; PC64LE9-NEXT: stdu 1, -32(1)
113 ; PC64LE9-NEXT: std 0, 48(1)
114 ; PC64LE9-NEXT: bl __gcc_qmul
116 ; PC64LE9-NEXT: addi 1, 1, 32
117 ; PC64LE9-NEXT: ld 0, 16(1)
118 ; PC64LE9-NEXT: mtlr 0
121 ; PC64-LABEL: test_fmul_ppc_fp128:
122 ; PC64: # %bb.0: # %entry
124 ; PC64-NEXT: stdu 1, -112(1)
125 ; PC64-NEXT: std 0, 128(1)
126 ; PC64-NEXT: bl __gcc_qmul
128 ; PC64-NEXT: addi 1, 1, 112
129 ; PC64-NEXT: ld 0, 16(1)
133 %mul = call ppc_fp128 @llvm.experimental.constrained.fmul.ppcf128(
136 metadata !"round.dynamic",
137 metadata !"fpexcept.strict") #1
141 define ppc_fp128 @test_fdiv_ppc_fp128(ppc_fp128 %first, ppc_fp128 %second) #0 {
142 ; PC64LE-LABEL: test_fdiv_ppc_fp128:
143 ; PC64LE: # %bb.0: # %entry
144 ; PC64LE-NEXT: mflr 0
145 ; PC64LE-NEXT: stdu 1, -32(1)
146 ; PC64LE-NEXT: std 0, 48(1)
147 ; PC64LE-NEXT: bl __gcc_qdiv
149 ; PC64LE-NEXT: addi 1, 1, 32
150 ; PC64LE-NEXT: ld 0, 16(1)
151 ; PC64LE-NEXT: mtlr 0
154 ; PC64LE9-LABEL: test_fdiv_ppc_fp128:
155 ; PC64LE9: # %bb.0: # %entry
156 ; PC64LE9-NEXT: mflr 0
157 ; PC64LE9-NEXT: stdu 1, -32(1)
158 ; PC64LE9-NEXT: std 0, 48(1)
159 ; PC64LE9-NEXT: bl __gcc_qdiv
161 ; PC64LE9-NEXT: addi 1, 1, 32
162 ; PC64LE9-NEXT: ld 0, 16(1)
163 ; PC64LE9-NEXT: mtlr 0
166 ; PC64-LABEL: test_fdiv_ppc_fp128:
167 ; PC64: # %bb.0: # %entry
169 ; PC64-NEXT: stdu 1, -112(1)
170 ; PC64-NEXT: std 0, 128(1)
171 ; PC64-NEXT: bl __gcc_qdiv
173 ; PC64-NEXT: addi 1, 1, 112
174 ; PC64-NEXT: ld 0, 16(1)
178 %div = call ppc_fp128 @llvm.experimental.constrained.fdiv.ppcf128(
181 metadata !"round.dynamic",
182 metadata !"fpexcept.strict") #1
186 define ppc_fp128 @test_frem_ppc_fp128(ppc_fp128 %first, ppc_fp128 %second) #0 {
187 ; PC64LE-LABEL: test_frem_ppc_fp128:
188 ; PC64LE: # %bb.0: # %entry
189 ; PC64LE-NEXT: mflr 0
190 ; PC64LE-NEXT: stdu 1, -32(1)
191 ; PC64LE-NEXT: std 0, 48(1)
192 ; PC64LE-NEXT: bl fmodl
194 ; PC64LE-NEXT: addi 1, 1, 32
195 ; PC64LE-NEXT: ld 0, 16(1)
196 ; PC64LE-NEXT: mtlr 0
199 ; PC64LE9-LABEL: test_frem_ppc_fp128:
200 ; PC64LE9: # %bb.0: # %entry
201 ; PC64LE9-NEXT: mflr 0
202 ; PC64LE9-NEXT: stdu 1, -32(1)
203 ; PC64LE9-NEXT: std 0, 48(1)
204 ; PC64LE9-NEXT: bl fmodl
206 ; PC64LE9-NEXT: addi 1, 1, 32
207 ; PC64LE9-NEXT: ld 0, 16(1)
208 ; PC64LE9-NEXT: mtlr 0
211 ; PC64-LABEL: test_frem_ppc_fp128:
212 ; PC64: # %bb.0: # %entry
214 ; PC64-NEXT: stdu 1, -112(1)
215 ; PC64-NEXT: std 0, 128(1)
216 ; PC64-NEXT: bl fmodl
218 ; PC64-NEXT: addi 1, 1, 112
219 ; PC64-NEXT: ld 0, 16(1)
223 %rem = call ppc_fp128 @llvm.experimental.constrained.frem.ppcf128(
226 metadata !"round.dynamic",
227 metadata !"fpexcept.strict") #1
231 define ppc_fp128 @test_fma_ppc_fp128(ppc_fp128 %first, ppc_fp128 %second, ppc_fp128 %third) #0 {
232 ; PC64LE-LABEL: test_fma_ppc_fp128:
233 ; PC64LE: # %bb.0: # %entry
234 ; PC64LE-NEXT: mflr 0
235 ; PC64LE-NEXT: stdu 1, -32(1)
236 ; PC64LE-NEXT: std 0, 48(1)
237 ; PC64LE-NEXT: bl fmal
239 ; PC64LE-NEXT: addi 1, 1, 32
240 ; PC64LE-NEXT: ld 0, 16(1)
241 ; PC64LE-NEXT: mtlr 0
244 ; PC64LE9-LABEL: test_fma_ppc_fp128:
245 ; PC64LE9: # %bb.0: # %entry
246 ; PC64LE9-NEXT: mflr 0
247 ; PC64LE9-NEXT: stdu 1, -32(1)
248 ; PC64LE9-NEXT: std 0, 48(1)
249 ; PC64LE9-NEXT: bl fmal
251 ; PC64LE9-NEXT: addi 1, 1, 32
252 ; PC64LE9-NEXT: ld 0, 16(1)
253 ; PC64LE9-NEXT: mtlr 0
256 ; PC64-LABEL: test_fma_ppc_fp128:
257 ; PC64: # %bb.0: # %entry
259 ; PC64-NEXT: stdu 1, -112(1)
260 ; PC64-NEXT: std 0, 128(1)
263 ; PC64-NEXT: addi 1, 1, 112
264 ; PC64-NEXT: ld 0, 16(1)
268 %add = call ppc_fp128 @llvm.experimental.constrained.fma.ppcf128(
272 metadata !"round.dynamic",
273 metadata !"fpexcept.strict") #1
277 define ppc_fp128 @test_sqrt_ppc_fp128(ppc_fp128 %first) #0 {
278 ; PC64LE-LABEL: test_sqrt_ppc_fp128:
279 ; PC64LE: # %bb.0: # %entry
280 ; PC64LE-NEXT: mflr 0
281 ; PC64LE-NEXT: stdu 1, -32(1)
282 ; PC64LE-NEXT: std 0, 48(1)
283 ; PC64LE-NEXT: bl sqrtl
285 ; PC64LE-NEXT: addi 1, 1, 32
286 ; PC64LE-NEXT: ld 0, 16(1)
287 ; PC64LE-NEXT: mtlr 0
290 ; PC64LE9-LABEL: test_sqrt_ppc_fp128:
291 ; PC64LE9: # %bb.0: # %entry
292 ; PC64LE9-NEXT: mflr 0
293 ; PC64LE9-NEXT: stdu 1, -32(1)
294 ; PC64LE9-NEXT: std 0, 48(1)
295 ; PC64LE9-NEXT: bl sqrtl
297 ; PC64LE9-NEXT: addi 1, 1, 32
298 ; PC64LE9-NEXT: ld 0, 16(1)
299 ; PC64LE9-NEXT: mtlr 0
302 ; PC64-LABEL: test_sqrt_ppc_fp128:
303 ; PC64: # %bb.0: # %entry
305 ; PC64-NEXT: stdu 1, -112(1)
306 ; PC64-NEXT: std 0, 128(1)
307 ; PC64-NEXT: bl sqrtl
309 ; PC64-NEXT: addi 1, 1, 112
310 ; PC64-NEXT: ld 0, 16(1)
314 %sqrt = call ppc_fp128 @llvm.experimental.constrained.sqrt.ppcf128(
316 metadata !"round.dynamic",
317 metadata !"fpexcept.strict") #1
321 define ppc_fp128 @test_pow_ppc_fp128(ppc_fp128 %first, ppc_fp128 %second) #0 {
322 ; PC64LE-LABEL: test_pow_ppc_fp128:
323 ; PC64LE: # %bb.0: # %entry
324 ; PC64LE-NEXT: mflr 0
325 ; PC64LE-NEXT: stdu 1, -32(1)
326 ; PC64LE-NEXT: std 0, 48(1)
327 ; PC64LE-NEXT: bl powl
329 ; PC64LE-NEXT: addi 1, 1, 32
330 ; PC64LE-NEXT: ld 0, 16(1)
331 ; PC64LE-NEXT: mtlr 0
334 ; PC64LE9-LABEL: test_pow_ppc_fp128:
335 ; PC64LE9: # %bb.0: # %entry
336 ; PC64LE9-NEXT: mflr 0
337 ; PC64LE9-NEXT: stdu 1, -32(1)
338 ; PC64LE9-NEXT: std 0, 48(1)
339 ; PC64LE9-NEXT: bl powl
341 ; PC64LE9-NEXT: addi 1, 1, 32
342 ; PC64LE9-NEXT: ld 0, 16(1)
343 ; PC64LE9-NEXT: mtlr 0
346 ; PC64-LABEL: test_pow_ppc_fp128:
347 ; PC64: # %bb.0: # %entry
349 ; PC64-NEXT: stdu 1, -112(1)
350 ; PC64-NEXT: std 0, 128(1)
353 ; PC64-NEXT: addi 1, 1, 112
354 ; PC64-NEXT: ld 0, 16(1)
358 %pow = call ppc_fp128 @llvm.experimental.constrained.pow.ppcf128(
361 metadata !"round.dynamic",
362 metadata !"fpexcept.strict") #1
366 define ppc_fp128 @test_powi_ppc_fp128(ppc_fp128 %first, i32 %second) #0 {
367 ; PC64LE-LABEL: test_powi_ppc_fp128:
368 ; PC64LE: # %bb.0: # %entry
369 ; PC64LE-NEXT: mflr 0
370 ; PC64LE-NEXT: stdu 1, -32(1)
371 ; PC64LE-NEXT: clrldi 5, 5, 32
372 ; PC64LE-NEXT: std 0, 48(1)
373 ; PC64LE-NEXT: bl __powitf2
375 ; PC64LE-NEXT: addi 1, 1, 32
376 ; PC64LE-NEXT: ld 0, 16(1)
377 ; PC64LE-NEXT: mtlr 0
380 ; PC64LE9-LABEL: test_powi_ppc_fp128:
381 ; PC64LE9: # %bb.0: # %entry
382 ; PC64LE9-NEXT: mflr 0
383 ; PC64LE9-NEXT: stdu 1, -32(1)
384 ; PC64LE9-NEXT: clrldi 5, 5, 32
385 ; PC64LE9-NEXT: std 0, 48(1)
386 ; PC64LE9-NEXT: bl __powitf2
388 ; PC64LE9-NEXT: addi 1, 1, 32
389 ; PC64LE9-NEXT: ld 0, 16(1)
390 ; PC64LE9-NEXT: mtlr 0
393 ; PC64-LABEL: test_powi_ppc_fp128:
394 ; PC64: # %bb.0: # %entry
396 ; PC64-NEXT: stdu 1, -112(1)
397 ; PC64-NEXT: clrldi 5, 5, 32
398 ; PC64-NEXT: std 0, 128(1)
399 ; PC64-NEXT: bl __powitf2
401 ; PC64-NEXT: addi 1, 1, 112
402 ; PC64-NEXT: ld 0, 16(1)
406 %powi = call ppc_fp128 @llvm.experimental.constrained.powi.ppcf128(
409 metadata !"round.dynamic",
410 metadata !"fpexcept.strict") #1
414 define ppc_fp128 @test_sin_ppc_fp128(ppc_fp128 %first) #0 {
415 ; PC64LE-LABEL: test_sin_ppc_fp128:
416 ; PC64LE: # %bb.0: # %entry
417 ; PC64LE-NEXT: mflr 0
418 ; PC64LE-NEXT: stdu 1, -32(1)
419 ; PC64LE-NEXT: std 0, 48(1)
420 ; PC64LE-NEXT: bl sinl
422 ; PC64LE-NEXT: addi 1, 1, 32
423 ; PC64LE-NEXT: ld 0, 16(1)
424 ; PC64LE-NEXT: mtlr 0
427 ; PC64LE9-LABEL: test_sin_ppc_fp128:
428 ; PC64LE9: # %bb.0: # %entry
429 ; PC64LE9-NEXT: mflr 0
430 ; PC64LE9-NEXT: stdu 1, -32(1)
431 ; PC64LE9-NEXT: std 0, 48(1)
432 ; PC64LE9-NEXT: bl sinl
434 ; PC64LE9-NEXT: addi 1, 1, 32
435 ; PC64LE9-NEXT: ld 0, 16(1)
436 ; PC64LE9-NEXT: mtlr 0
439 ; PC64-LABEL: test_sin_ppc_fp128:
440 ; PC64: # %bb.0: # %entry
442 ; PC64-NEXT: stdu 1, -112(1)
443 ; PC64-NEXT: std 0, 128(1)
446 ; PC64-NEXT: addi 1, 1, 112
447 ; PC64-NEXT: ld 0, 16(1)
451 %sin = call ppc_fp128 @llvm.experimental.constrained.sin.ppcf128(
453 metadata !"round.dynamic",
454 metadata !"fpexcept.strict") #1
458 define ppc_fp128 @test_cos_ppc_fp128(ppc_fp128 %first) #0 {
459 ; PC64LE-LABEL: test_cos_ppc_fp128:
460 ; PC64LE: # %bb.0: # %entry
461 ; PC64LE-NEXT: mflr 0
462 ; PC64LE-NEXT: stdu 1, -32(1)
463 ; PC64LE-NEXT: std 0, 48(1)
464 ; PC64LE-NEXT: bl cosl
466 ; PC64LE-NEXT: addi 1, 1, 32
467 ; PC64LE-NEXT: ld 0, 16(1)
468 ; PC64LE-NEXT: mtlr 0
471 ; PC64LE9-LABEL: test_cos_ppc_fp128:
472 ; PC64LE9: # %bb.0: # %entry
473 ; PC64LE9-NEXT: mflr 0
474 ; PC64LE9-NEXT: stdu 1, -32(1)
475 ; PC64LE9-NEXT: std 0, 48(1)
476 ; PC64LE9-NEXT: bl cosl
478 ; PC64LE9-NEXT: addi 1, 1, 32
479 ; PC64LE9-NEXT: ld 0, 16(1)
480 ; PC64LE9-NEXT: mtlr 0
483 ; PC64-LABEL: test_cos_ppc_fp128:
484 ; PC64: # %bb.0: # %entry
486 ; PC64-NEXT: stdu 1, -112(1)
487 ; PC64-NEXT: std 0, 128(1)
490 ; PC64-NEXT: addi 1, 1, 112
491 ; PC64-NEXT: ld 0, 16(1)
495 %cos = call ppc_fp128 @llvm.experimental.constrained.cos.ppcf128(
497 metadata !"round.dynamic",
498 metadata !"fpexcept.strict") #1
502 define ppc_fp128 @test_exp_ppc_fp128(ppc_fp128 %first) #0 {
503 ; PC64LE-LABEL: test_exp_ppc_fp128:
504 ; PC64LE: # %bb.0: # %entry
505 ; PC64LE-NEXT: mflr 0
506 ; PC64LE-NEXT: stdu 1, -32(1)
507 ; PC64LE-NEXT: std 0, 48(1)
508 ; PC64LE-NEXT: bl expl
510 ; PC64LE-NEXT: addi 1, 1, 32
511 ; PC64LE-NEXT: ld 0, 16(1)
512 ; PC64LE-NEXT: mtlr 0
515 ; PC64LE9-LABEL: test_exp_ppc_fp128:
516 ; PC64LE9: # %bb.0: # %entry
517 ; PC64LE9-NEXT: mflr 0
518 ; PC64LE9-NEXT: stdu 1, -32(1)
519 ; PC64LE9-NEXT: std 0, 48(1)
520 ; PC64LE9-NEXT: bl expl
522 ; PC64LE9-NEXT: addi 1, 1, 32
523 ; PC64LE9-NEXT: ld 0, 16(1)
524 ; PC64LE9-NEXT: mtlr 0
527 ; PC64-LABEL: test_exp_ppc_fp128:
528 ; PC64: # %bb.0: # %entry
530 ; PC64-NEXT: stdu 1, -112(1)
531 ; PC64-NEXT: std 0, 128(1)
534 ; PC64-NEXT: addi 1, 1, 112
535 ; PC64-NEXT: ld 0, 16(1)
539 %exp = call ppc_fp128 @llvm.experimental.constrained.exp.ppcf128(
541 metadata !"round.dynamic",
542 metadata !"fpexcept.strict") #1
546 define ppc_fp128 @test_exp2_ppc_fp128(ppc_fp128 %first) #0 {
547 ; PC64LE-LABEL: test_exp2_ppc_fp128:
548 ; PC64LE: # %bb.0: # %entry
549 ; PC64LE-NEXT: mflr 0
550 ; PC64LE-NEXT: stdu 1, -32(1)
551 ; PC64LE-NEXT: std 0, 48(1)
552 ; PC64LE-NEXT: bl exp2l
554 ; PC64LE-NEXT: addi 1, 1, 32
555 ; PC64LE-NEXT: ld 0, 16(1)
556 ; PC64LE-NEXT: mtlr 0
559 ; PC64LE9-LABEL: test_exp2_ppc_fp128:
560 ; PC64LE9: # %bb.0: # %entry
561 ; PC64LE9-NEXT: mflr 0
562 ; PC64LE9-NEXT: stdu 1, -32(1)
563 ; PC64LE9-NEXT: std 0, 48(1)
564 ; PC64LE9-NEXT: bl exp2l
566 ; PC64LE9-NEXT: addi 1, 1, 32
567 ; PC64LE9-NEXT: ld 0, 16(1)
568 ; PC64LE9-NEXT: mtlr 0
571 ; PC64-LABEL: test_exp2_ppc_fp128:
572 ; PC64: # %bb.0: # %entry
574 ; PC64-NEXT: stdu 1, -112(1)
575 ; PC64-NEXT: std 0, 128(1)
576 ; PC64-NEXT: bl exp2l
578 ; PC64-NEXT: addi 1, 1, 112
579 ; PC64-NEXT: ld 0, 16(1)
583 %exp2 = call ppc_fp128 @llvm.experimental.constrained.exp2.ppcf128(
585 metadata !"round.dynamic",
586 metadata !"fpexcept.strict") #1
590 define ppc_fp128 @test_log_ppc_fp128(ppc_fp128 %first) #0 {
591 ; PC64LE-LABEL: test_log_ppc_fp128:
592 ; PC64LE: # %bb.0: # %entry
593 ; PC64LE-NEXT: mflr 0
594 ; PC64LE-NEXT: stdu 1, -32(1)
595 ; PC64LE-NEXT: std 0, 48(1)
596 ; PC64LE-NEXT: bl logl
598 ; PC64LE-NEXT: addi 1, 1, 32
599 ; PC64LE-NEXT: ld 0, 16(1)
600 ; PC64LE-NEXT: mtlr 0
603 ; PC64LE9-LABEL: test_log_ppc_fp128:
604 ; PC64LE9: # %bb.0: # %entry
605 ; PC64LE9-NEXT: mflr 0
606 ; PC64LE9-NEXT: stdu 1, -32(1)
607 ; PC64LE9-NEXT: std 0, 48(1)
608 ; PC64LE9-NEXT: bl logl
610 ; PC64LE9-NEXT: addi 1, 1, 32
611 ; PC64LE9-NEXT: ld 0, 16(1)
612 ; PC64LE9-NEXT: mtlr 0
615 ; PC64-LABEL: test_log_ppc_fp128:
616 ; PC64: # %bb.0: # %entry
618 ; PC64-NEXT: stdu 1, -112(1)
619 ; PC64-NEXT: std 0, 128(1)
622 ; PC64-NEXT: addi 1, 1, 112
623 ; PC64-NEXT: ld 0, 16(1)
627 %log = call ppc_fp128 @llvm.experimental.constrained.log.ppcf128(
629 metadata !"round.dynamic",
630 metadata !"fpexcept.strict") #1
634 define ppc_fp128 @test_log2_ppc_fp128(ppc_fp128 %first) #0 {
635 ; PC64LE-LABEL: test_log2_ppc_fp128:
636 ; PC64LE: # %bb.0: # %entry
637 ; PC64LE-NEXT: mflr 0
638 ; PC64LE-NEXT: stdu 1, -32(1)
639 ; PC64LE-NEXT: std 0, 48(1)
640 ; PC64LE-NEXT: bl log2l
642 ; PC64LE-NEXT: addi 1, 1, 32
643 ; PC64LE-NEXT: ld 0, 16(1)
644 ; PC64LE-NEXT: mtlr 0
647 ; PC64LE9-LABEL: test_log2_ppc_fp128:
648 ; PC64LE9: # %bb.0: # %entry
649 ; PC64LE9-NEXT: mflr 0
650 ; PC64LE9-NEXT: stdu 1, -32(1)
651 ; PC64LE9-NEXT: std 0, 48(1)
652 ; PC64LE9-NEXT: bl log2l
654 ; PC64LE9-NEXT: addi 1, 1, 32
655 ; PC64LE9-NEXT: ld 0, 16(1)
656 ; PC64LE9-NEXT: mtlr 0
659 ; PC64-LABEL: test_log2_ppc_fp128:
660 ; PC64: # %bb.0: # %entry
662 ; PC64-NEXT: stdu 1, -112(1)
663 ; PC64-NEXT: std 0, 128(1)
664 ; PC64-NEXT: bl log2l
666 ; PC64-NEXT: addi 1, 1, 112
667 ; PC64-NEXT: ld 0, 16(1)
671 %log2 = call ppc_fp128 @llvm.experimental.constrained.log2.ppcf128(
673 metadata !"round.dynamic",
674 metadata !"fpexcept.strict") #1
678 define ppc_fp128 @test_log10_ppc_fp128(ppc_fp128 %first) #0 {
679 ; PC64LE-LABEL: test_log10_ppc_fp128:
680 ; PC64LE: # %bb.0: # %entry
681 ; PC64LE-NEXT: mflr 0
682 ; PC64LE-NEXT: stdu 1, -32(1)
683 ; PC64LE-NEXT: std 0, 48(1)
684 ; PC64LE-NEXT: bl log10l
686 ; PC64LE-NEXT: addi 1, 1, 32
687 ; PC64LE-NEXT: ld 0, 16(1)
688 ; PC64LE-NEXT: mtlr 0
691 ; PC64LE9-LABEL: test_log10_ppc_fp128:
692 ; PC64LE9: # %bb.0: # %entry
693 ; PC64LE9-NEXT: mflr 0
694 ; PC64LE9-NEXT: stdu 1, -32(1)
695 ; PC64LE9-NEXT: std 0, 48(1)
696 ; PC64LE9-NEXT: bl log10l
698 ; PC64LE9-NEXT: addi 1, 1, 32
699 ; PC64LE9-NEXT: ld 0, 16(1)
700 ; PC64LE9-NEXT: mtlr 0
703 ; PC64-LABEL: test_log10_ppc_fp128:
704 ; PC64: # %bb.0: # %entry
706 ; PC64-NEXT: stdu 1, -112(1)
707 ; PC64-NEXT: std 0, 128(1)
708 ; PC64-NEXT: bl log10l
710 ; PC64-NEXT: addi 1, 1, 112
711 ; PC64-NEXT: ld 0, 16(1)
715 %log10 = call ppc_fp128 @llvm.experimental.constrained.log10.ppcf128(
717 metadata !"round.dynamic",
718 metadata !"fpexcept.strict") #1
722 define ppc_fp128 @test_rint_ppc_fp128(ppc_fp128 %first) #0 {
723 ; PC64LE-LABEL: test_rint_ppc_fp128:
724 ; PC64LE: # %bb.0: # %entry
725 ; PC64LE-NEXT: mflr 0
726 ; PC64LE-NEXT: stdu 1, -32(1)
727 ; PC64LE-NEXT: std 0, 48(1)
728 ; PC64LE-NEXT: bl rintl
730 ; PC64LE-NEXT: addi 1, 1, 32
731 ; PC64LE-NEXT: ld 0, 16(1)
732 ; PC64LE-NEXT: mtlr 0
735 ; PC64LE9-LABEL: test_rint_ppc_fp128:
736 ; PC64LE9: # %bb.0: # %entry
737 ; PC64LE9-NEXT: mflr 0
738 ; PC64LE9-NEXT: stdu 1, -32(1)
739 ; PC64LE9-NEXT: std 0, 48(1)
740 ; PC64LE9-NEXT: bl rintl
742 ; PC64LE9-NEXT: addi 1, 1, 32
743 ; PC64LE9-NEXT: ld 0, 16(1)
744 ; PC64LE9-NEXT: mtlr 0
747 ; PC64-LABEL: test_rint_ppc_fp128:
748 ; PC64: # %bb.0: # %entry
750 ; PC64-NEXT: stdu 1, -112(1)
751 ; PC64-NEXT: std 0, 128(1)
752 ; PC64-NEXT: bl rintl
754 ; PC64-NEXT: addi 1, 1, 112
755 ; PC64-NEXT: ld 0, 16(1)
759 %rint = call ppc_fp128 @llvm.experimental.constrained.rint.ppcf128(
761 metadata !"round.dynamic",
762 metadata !"fpexcept.strict") #1
766 define ppc_fp128 @test_nearbyint_ppc_fp128(ppc_fp128 %first) #0 {
767 ; PC64LE-LABEL: test_nearbyint_ppc_fp128:
768 ; PC64LE: # %bb.0: # %entry
769 ; PC64LE-NEXT: mflr 0
770 ; PC64LE-NEXT: stdu 1, -32(1)
771 ; PC64LE-NEXT: std 0, 48(1)
772 ; PC64LE-NEXT: bl nearbyintl
774 ; PC64LE-NEXT: addi 1, 1, 32
775 ; PC64LE-NEXT: ld 0, 16(1)
776 ; PC64LE-NEXT: mtlr 0
779 ; PC64LE9-LABEL: test_nearbyint_ppc_fp128:
780 ; PC64LE9: # %bb.0: # %entry
781 ; PC64LE9-NEXT: mflr 0
782 ; PC64LE9-NEXT: stdu 1, -32(1)
783 ; PC64LE9-NEXT: std 0, 48(1)
784 ; PC64LE9-NEXT: bl nearbyintl
786 ; PC64LE9-NEXT: addi 1, 1, 32
787 ; PC64LE9-NEXT: ld 0, 16(1)
788 ; PC64LE9-NEXT: mtlr 0
791 ; PC64-LABEL: test_nearbyint_ppc_fp128:
792 ; PC64: # %bb.0: # %entry
794 ; PC64-NEXT: stdu 1, -112(1)
795 ; PC64-NEXT: std 0, 128(1)
796 ; PC64-NEXT: bl nearbyintl
798 ; PC64-NEXT: addi 1, 1, 112
799 ; PC64-NEXT: ld 0, 16(1)
803 %nearbyint = call ppc_fp128 @llvm.experimental.constrained.nearbyint.ppcf128(
805 metadata !"round.dynamic",
806 metadata !"fpexcept.strict") #1
807 ret ppc_fp128 %nearbyint
810 define ppc_fp128 @test_maxnum_ppc_fp128(ppc_fp128 %first, ppc_fp128 %second) #0 {
811 ; PC64LE-LABEL: test_maxnum_ppc_fp128:
812 ; PC64LE: # %bb.0: # %entry
813 ; PC64LE-NEXT: mflr 0
814 ; PC64LE-NEXT: stdu 1, -32(1)
815 ; PC64LE-NEXT: std 0, 48(1)
816 ; PC64LE-NEXT: bl fmaxl
818 ; PC64LE-NEXT: addi 1, 1, 32
819 ; PC64LE-NEXT: ld 0, 16(1)
820 ; PC64LE-NEXT: mtlr 0
823 ; PC64LE9-LABEL: test_maxnum_ppc_fp128:
824 ; PC64LE9: # %bb.0: # %entry
825 ; PC64LE9-NEXT: mflr 0
826 ; PC64LE9-NEXT: stdu 1, -32(1)
827 ; PC64LE9-NEXT: std 0, 48(1)
828 ; PC64LE9-NEXT: bl fmaxl
830 ; PC64LE9-NEXT: addi 1, 1, 32
831 ; PC64LE9-NEXT: ld 0, 16(1)
832 ; PC64LE9-NEXT: mtlr 0
835 ; PC64-LABEL: test_maxnum_ppc_fp128:
836 ; PC64: # %bb.0: # %entry
838 ; PC64-NEXT: stdu 1, -112(1)
839 ; PC64-NEXT: std 0, 128(1)
840 ; PC64-NEXT: bl fmaxl
842 ; PC64-NEXT: addi 1, 1, 112
843 ; PC64-NEXT: ld 0, 16(1)
847 %maxnum = call ppc_fp128 @llvm.experimental.constrained.maxnum.ppcf128(
850 metadata !"fpexcept.strict") #1
851 ret ppc_fp128 %maxnum
854 define ppc_fp128 @test_minnum_ppc_fp128(ppc_fp128 %first, ppc_fp128 %second) #0 {
855 ; PC64LE-LABEL: test_minnum_ppc_fp128:
856 ; PC64LE: # %bb.0: # %entry
857 ; PC64LE-NEXT: mflr 0
858 ; PC64LE-NEXT: stdu 1, -32(1)
859 ; PC64LE-NEXT: std 0, 48(1)
860 ; PC64LE-NEXT: bl fminl
862 ; PC64LE-NEXT: addi 1, 1, 32
863 ; PC64LE-NEXT: ld 0, 16(1)
864 ; PC64LE-NEXT: mtlr 0
867 ; PC64LE9-LABEL: test_minnum_ppc_fp128:
868 ; PC64LE9: # %bb.0: # %entry
869 ; PC64LE9-NEXT: mflr 0
870 ; PC64LE9-NEXT: stdu 1, -32(1)
871 ; PC64LE9-NEXT: std 0, 48(1)
872 ; PC64LE9-NEXT: bl fminl
874 ; PC64LE9-NEXT: addi 1, 1, 32
875 ; PC64LE9-NEXT: ld 0, 16(1)
876 ; PC64LE9-NEXT: mtlr 0
879 ; PC64-LABEL: test_minnum_ppc_fp128:
880 ; PC64: # %bb.0: # %entry
882 ; PC64-NEXT: stdu 1, -112(1)
883 ; PC64-NEXT: std 0, 128(1)
884 ; PC64-NEXT: bl fminl
886 ; PC64-NEXT: addi 1, 1, 112
887 ; PC64-NEXT: ld 0, 16(1)
891 %minnum = call ppc_fp128 @llvm.experimental.constrained.minnum.ppcf128(
894 metadata !"fpexcept.strict") #1
895 ret ppc_fp128 %minnum
898 define ppc_fp128 @test_ceil_ppc_fp128(ppc_fp128 %first) #0 {
899 ; PC64LE-LABEL: test_ceil_ppc_fp128:
900 ; PC64LE: # %bb.0: # %entry
901 ; PC64LE-NEXT: mflr 0
902 ; PC64LE-NEXT: stdu 1, -32(1)
903 ; PC64LE-NEXT: std 0, 48(1)
904 ; PC64LE-NEXT: bl ceill
906 ; PC64LE-NEXT: addi 1, 1, 32
907 ; PC64LE-NEXT: ld 0, 16(1)
908 ; PC64LE-NEXT: mtlr 0
911 ; PC64LE9-LABEL: test_ceil_ppc_fp128:
912 ; PC64LE9: # %bb.0: # %entry
913 ; PC64LE9-NEXT: mflr 0
914 ; PC64LE9-NEXT: stdu 1, -32(1)
915 ; PC64LE9-NEXT: std 0, 48(1)
916 ; PC64LE9-NEXT: bl ceill
918 ; PC64LE9-NEXT: addi 1, 1, 32
919 ; PC64LE9-NEXT: ld 0, 16(1)
920 ; PC64LE9-NEXT: mtlr 0
923 ; PC64-LABEL: test_ceil_ppc_fp128:
924 ; PC64: # %bb.0: # %entry
926 ; PC64-NEXT: stdu 1, -112(1)
927 ; PC64-NEXT: std 0, 128(1)
928 ; PC64-NEXT: bl ceill
930 ; PC64-NEXT: addi 1, 1, 112
931 ; PC64-NEXT: ld 0, 16(1)
935 %ceil = call ppc_fp128 @llvm.experimental.constrained.ceil.ppcf128(
937 metadata !"fpexcept.strict") #1
941 define ppc_fp128 @test_floor_ppc_fp128(ppc_fp128 %first) #0 {
942 ; PC64LE-LABEL: test_floor_ppc_fp128:
943 ; PC64LE: # %bb.0: # %entry
944 ; PC64LE-NEXT: mflr 0
945 ; PC64LE-NEXT: stdu 1, -32(1)
946 ; PC64LE-NEXT: std 0, 48(1)
947 ; PC64LE-NEXT: bl floorl
949 ; PC64LE-NEXT: addi 1, 1, 32
950 ; PC64LE-NEXT: ld 0, 16(1)
951 ; PC64LE-NEXT: mtlr 0
954 ; PC64LE9-LABEL: test_floor_ppc_fp128:
955 ; PC64LE9: # %bb.0: # %entry
956 ; PC64LE9-NEXT: mflr 0
957 ; PC64LE9-NEXT: stdu 1, -32(1)
958 ; PC64LE9-NEXT: std 0, 48(1)
959 ; PC64LE9-NEXT: bl floorl
961 ; PC64LE9-NEXT: addi 1, 1, 32
962 ; PC64LE9-NEXT: ld 0, 16(1)
963 ; PC64LE9-NEXT: mtlr 0
966 ; PC64-LABEL: test_floor_ppc_fp128:
967 ; PC64: # %bb.0: # %entry
969 ; PC64-NEXT: stdu 1, -112(1)
970 ; PC64-NEXT: std 0, 128(1)
971 ; PC64-NEXT: bl floorl
973 ; PC64-NEXT: addi 1, 1, 112
974 ; PC64-NEXT: ld 0, 16(1)
978 %floor = call ppc_fp128 @llvm.experimental.constrained.floor.ppcf128(
980 metadata !"fpexcept.strict") #1
984 define ppc_fp128 @test_round_ppc_fp128(ppc_fp128 %first) #0 {
985 ; PC64LE-LABEL: test_round_ppc_fp128:
986 ; PC64LE: # %bb.0: # %entry
987 ; PC64LE-NEXT: mflr 0
988 ; PC64LE-NEXT: stdu 1, -32(1)
989 ; PC64LE-NEXT: std 0, 48(1)
990 ; PC64LE-NEXT: bl roundl
992 ; PC64LE-NEXT: addi 1, 1, 32
993 ; PC64LE-NEXT: ld 0, 16(1)
994 ; PC64LE-NEXT: mtlr 0
997 ; PC64LE9-LABEL: test_round_ppc_fp128:
998 ; PC64LE9: # %bb.0: # %entry
999 ; PC64LE9-NEXT: mflr 0
1000 ; PC64LE9-NEXT: stdu 1, -32(1)
1001 ; PC64LE9-NEXT: std 0, 48(1)
1002 ; PC64LE9-NEXT: bl roundl
1004 ; PC64LE9-NEXT: addi 1, 1, 32
1005 ; PC64LE9-NEXT: ld 0, 16(1)
1006 ; PC64LE9-NEXT: mtlr 0
1009 ; PC64-LABEL: test_round_ppc_fp128:
1010 ; PC64: # %bb.0: # %entry
1012 ; PC64-NEXT: stdu 1, -112(1)
1013 ; PC64-NEXT: std 0, 128(1)
1014 ; PC64-NEXT: bl roundl
1016 ; PC64-NEXT: addi 1, 1, 112
1017 ; PC64-NEXT: ld 0, 16(1)
1021 %round = call ppc_fp128 @llvm.experimental.constrained.round.ppcf128(
1023 metadata !"fpexcept.strict") #1
1024 ret ppc_fp128 %round
1027 define ppc_fp128 @test_trunc_ppc_fp128(ppc_fp128 %first) #0 {
1028 ; PC64LE-LABEL: test_trunc_ppc_fp128:
1029 ; PC64LE: # %bb.0: # %entry
1030 ; PC64LE-NEXT: mflr 0
1031 ; PC64LE-NEXT: stdu 1, -32(1)
1032 ; PC64LE-NEXT: std 0, 48(1)
1033 ; PC64LE-NEXT: bl truncl
1035 ; PC64LE-NEXT: addi 1, 1, 32
1036 ; PC64LE-NEXT: ld 0, 16(1)
1037 ; PC64LE-NEXT: mtlr 0
1040 ; PC64LE9-LABEL: test_trunc_ppc_fp128:
1041 ; PC64LE9: # %bb.0: # %entry
1042 ; PC64LE9-NEXT: mflr 0
1043 ; PC64LE9-NEXT: stdu 1, -32(1)
1044 ; PC64LE9-NEXT: std 0, 48(1)
1045 ; PC64LE9-NEXT: bl truncl
1047 ; PC64LE9-NEXT: addi 1, 1, 32
1048 ; PC64LE9-NEXT: ld 0, 16(1)
1049 ; PC64LE9-NEXT: mtlr 0
1052 ; PC64-LABEL: test_trunc_ppc_fp128:
1053 ; PC64: # %bb.0: # %entry
1055 ; PC64-NEXT: stdu 1, -112(1)
1056 ; PC64-NEXT: std 0, 128(1)
1057 ; PC64-NEXT: bl truncl
1059 ; PC64-NEXT: addi 1, 1, 112
1060 ; PC64-NEXT: ld 0, 16(1)
1064 %trunc = call ppc_fp128 @llvm.experimental.constrained.trunc.ppcf128(
1066 metadata !"fpexcept.strict") #1
1067 ret ppc_fp128 %trunc
1070 define float @test_fptrunc_ppc_fp128_f32(ppc_fp128 %first) #0 {
1071 ; PC64LE-LABEL: test_fptrunc_ppc_fp128_f32:
1072 ; PC64LE: # %bb.0: # %entry
1073 ; PC64LE-NEXT: xsrsp 1, 1
1076 ; PC64LE9-LABEL: test_fptrunc_ppc_fp128_f32:
1077 ; PC64LE9: # %bb.0: # %entry
1078 ; PC64LE9-NEXT: xsrsp 1, 1
1081 ; PC64-LABEL: test_fptrunc_ppc_fp128_f32:
1082 ; PC64: # %bb.0: # %entry
1083 ; PC64-NEXT: frsp 1, 1
1086 %fptrunc = call float @llvm.experimental.constrained.fptrunc.ppcf128.f32(
1088 metadata !"round.dynamic",
1089 metadata !"fpexcept.strict") #1
1093 define double @test_fptrunc_ppc_fp128_f64(ppc_fp128 %first) #0 {
1094 ; PC64LE-LABEL: test_fptrunc_ppc_fp128_f64:
1095 ; PC64LE: # %bb.0: # %entry
1098 ; PC64LE9-LABEL: test_fptrunc_ppc_fp128_f64:
1099 ; PC64LE9: # %bb.0: # %entry
1102 ; PC64-LABEL: test_fptrunc_ppc_fp128_f64:
1103 ; PC64: # %bb.0: # %entry
1106 %fptrunc = call double @llvm.experimental.constrained.fptrunc.ppcf128.f64(
1108 metadata !"round.dynamic",
1109 metadata !"fpexcept.strict") #1
1113 define ppc_fp128 @test_fpext_ppc_fp128_f32(float %first) #0 {
1114 ; PC64LE-LABEL: test_fpext_ppc_fp128_f32:
1115 ; PC64LE: # %bb.0: # %entry
1116 ; PC64LE-NEXT: xxlxor 2, 2, 2
1119 ; PC64LE9-LABEL: test_fpext_ppc_fp128_f32:
1120 ; PC64LE9: # %bb.0: # %entry
1121 ; PC64LE9-NEXT: xxlxor 2, 2, 2
1124 ; PC64-LABEL: test_fpext_ppc_fp128_f32:
1125 ; PC64: # %bb.0: # %entry
1126 ; PC64-NEXT: addis 3, 2, .LCPI26_0@toc@ha
1127 ; PC64-NEXT: lfs 2, .LCPI26_0@toc@l(3)
1130 %fpext = call ppc_fp128 @llvm.experimental.constrained.fpext.f32.ppcf128(
1132 metadata !"fpexcept.strict") #1
1133 ret ppc_fp128 %fpext
1136 define ppc_fp128 @test_fpext_ppc_fp128_f64(double %first) #0 {
1137 ; PC64LE-LABEL: test_fpext_ppc_fp128_f64:
1138 ; PC64LE: # %bb.0: # %entry
1139 ; PC64LE-NEXT: xxlxor 2, 2, 2
1142 ; PC64LE9-LABEL: test_fpext_ppc_fp128_f64:
1143 ; PC64LE9: # %bb.0: # %entry
1144 ; PC64LE9-NEXT: xxlxor 2, 2, 2
1147 ; PC64-LABEL: test_fpext_ppc_fp128_f64:
1148 ; PC64: # %bb.0: # %entry
1149 ; PC64-NEXT: addis 3, 2, .LCPI27_0@toc@ha
1150 ; PC64-NEXT: lfs 2, .LCPI27_0@toc@l(3)
1153 %fpext = call ppc_fp128 @llvm.experimental.constrained.fpext.f64.ppcf128(
1155 metadata !"fpexcept.strict") #1
1156 ret ppc_fp128 %fpext
1159 define i64 @test_fptosi_ppc_i64_ppc_fp128(ppc_fp128 %first) #0 {
1160 ; PC64LE-LABEL: test_fptosi_ppc_i64_ppc_fp128:
1161 ; PC64LE: # %bb.0: # %entry
1162 ; PC64LE-NEXT: mflr 0
1163 ; PC64LE-NEXT: stdu 1, -32(1)
1164 ; PC64LE-NEXT: std 0, 48(1)
1165 ; PC64LE-NEXT: bl __fixtfdi
1167 ; PC64LE-NEXT: addi 1, 1, 32
1168 ; PC64LE-NEXT: ld 0, 16(1)
1169 ; PC64LE-NEXT: mtlr 0
1172 ; PC64LE9-LABEL: test_fptosi_ppc_i64_ppc_fp128:
1173 ; PC64LE9: # %bb.0: # %entry
1174 ; PC64LE9-NEXT: mflr 0
1175 ; PC64LE9-NEXT: stdu 1, -32(1)
1176 ; PC64LE9-NEXT: std 0, 48(1)
1177 ; PC64LE9-NEXT: bl __fixtfdi
1179 ; PC64LE9-NEXT: addi 1, 1, 32
1180 ; PC64LE9-NEXT: ld 0, 16(1)
1181 ; PC64LE9-NEXT: mtlr 0
1184 ; PC64-LABEL: test_fptosi_ppc_i64_ppc_fp128:
1185 ; PC64: # %bb.0: # %entry
1187 ; PC64-NEXT: stdu 1, -112(1)
1188 ; PC64-NEXT: std 0, 128(1)
1189 ; PC64-NEXT: bl __fixtfdi
1191 ; PC64-NEXT: addi 1, 1, 112
1192 ; PC64-NEXT: ld 0, 16(1)
1196 %fpext = call i64 @llvm.experimental.constrained.fptosi.i64.ppcf128(
1198 metadata !"fpexcept.strict") #1
1202 define i32 @test_fptosi_ppc_i32_ppc_fp128(ppc_fp128 %first) #0 {
1203 ; PC64LE-LABEL: test_fptosi_ppc_i32_ppc_fp128:
1204 ; PC64LE: # %bb.0: # %entry
1205 ; PC64LE-NEXT: mffs 0
1206 ; PC64LE-NEXT: mtfsb1 31
1207 ; PC64LE-NEXT: mtfsb0 30
1208 ; PC64LE-NEXT: fadd 1, 2, 1
1209 ; PC64LE-NEXT: mtfsf 1, 0
1210 ; PC64LE-NEXT: xscvdpsxws 0, 1
1211 ; PC64LE-NEXT: mffprwz 3, 0
1214 ; PC64LE9-LABEL: test_fptosi_ppc_i32_ppc_fp128:
1215 ; PC64LE9: # %bb.0: # %entry
1216 ; PC64LE9-NEXT: mffs 0
1217 ; PC64LE9-NEXT: mtfsb1 31
1218 ; PC64LE9-NEXT: mtfsb0 30
1219 ; PC64LE9-NEXT: fadd 1, 2, 1
1220 ; PC64LE9-NEXT: mtfsf 1, 0
1221 ; PC64LE9-NEXT: xscvdpsxws 0, 1
1222 ; PC64LE9-NEXT: mffprwz 3, 0
1225 ; PC64-LABEL: test_fptosi_ppc_i32_ppc_fp128:
1226 ; PC64: # %bb.0: # %entry
1228 ; PC64-NEXT: mtfsb1 31
1229 ; PC64-NEXT: mtfsb0 30
1230 ; PC64-NEXT: fadd 1, 2, 1
1231 ; PC64-NEXT: mtfsf 1, 0
1232 ; PC64-NEXT: fctiwz 0, 1
1233 ; PC64-NEXT: stfd 0, -8(1)
1234 ; PC64-NEXT: lwz 3, -4(1)
1237 %fpext = call i32 @llvm.experimental.constrained.fptosi.i32.ppcf128(
1239 metadata !"fpexcept.strict") #1
1243 define i64 @test_fptoui_ppc_i64_ppc_fp128(ppc_fp128 %first) #0 {
1244 ; PC64LE-LABEL: test_fptoui_ppc_i64_ppc_fp128:
1245 ; PC64LE: # %bb.0: # %entry
1246 ; PC64LE-NEXT: mflr 0
1247 ; PC64LE-NEXT: stdu 1, -32(1)
1248 ; PC64LE-NEXT: std 0, 48(1)
1249 ; PC64LE-NEXT: bl __fixunstfdi
1251 ; PC64LE-NEXT: addi 1, 1, 32
1252 ; PC64LE-NEXT: ld 0, 16(1)
1253 ; PC64LE-NEXT: mtlr 0
1256 ; PC64LE9-LABEL: test_fptoui_ppc_i64_ppc_fp128:
1257 ; PC64LE9: # %bb.0: # %entry
1258 ; PC64LE9-NEXT: mflr 0
1259 ; PC64LE9-NEXT: stdu 1, -32(1)
1260 ; PC64LE9-NEXT: std 0, 48(1)
1261 ; PC64LE9-NEXT: bl __fixunstfdi
1263 ; PC64LE9-NEXT: addi 1, 1, 32
1264 ; PC64LE9-NEXT: ld 0, 16(1)
1265 ; PC64LE9-NEXT: mtlr 0
1268 ; PC64-LABEL: test_fptoui_ppc_i64_ppc_fp128:
1269 ; PC64: # %bb.0: # %entry
1271 ; PC64-NEXT: stdu 1, -112(1)
1272 ; PC64-NEXT: std 0, 128(1)
1273 ; PC64-NEXT: bl __fixunstfdi
1275 ; PC64-NEXT: addi 1, 1, 112
1276 ; PC64-NEXT: ld 0, 16(1)
1280 %fpext = call i64 @llvm.experimental.constrained.fptoui.i64.ppcf128(
1282 metadata !"fpexcept.strict") #1
1286 define i32 @test_fptoui_ppc_i32_ppc_fp128(ppc_fp128 %first) #0 {
1287 ; PC64LE-LABEL: test_fptoui_ppc_i32_ppc_fp128:
1288 ; PC64LE: # %bb.0: # %entry
1289 ; PC64LE-NEXT: mflr 0
1290 ; PC64LE-NEXT: std 30, -16(1) # 8-byte Folded Spill
1291 ; PC64LE-NEXT: stdu 1, -48(1)
1292 ; PC64LE-NEXT: addis 3, 2, .LCPI31_0@toc@ha
1293 ; PC64LE-NEXT: xxlxor 3, 3, 3
1294 ; PC64LE-NEXT: std 0, 64(1)
1295 ; PC64LE-NEXT: lfs 0, .LCPI31_0@toc@l(3)
1296 ; PC64LE-NEXT: fcmpo 1, 2, 3
1297 ; PC64LE-NEXT: lis 3, -32768
1298 ; PC64LE-NEXT: fcmpo 0, 1, 0
1299 ; PC64LE-NEXT: crand 20, 2, 4
1300 ; PC64LE-NEXT: crandc 21, 0, 2
1301 ; PC64LE-NEXT: cror 20, 21, 20
1302 ; PC64LE-NEXT: isel 30, 0, 3, 20
1303 ; PC64LE-NEXT: bc 12, 20, .LBB31_2
1304 ; PC64LE-NEXT: # %bb.1: # %entry
1305 ; PC64LE-NEXT: fmr 3, 0
1306 ; PC64LE-NEXT: .LBB31_2: # %entry
1307 ; PC64LE-NEXT: xxlxor 4, 4, 4
1308 ; PC64LE-NEXT: bl __gcc_qsub
1310 ; PC64LE-NEXT: mffs 0
1311 ; PC64LE-NEXT: mtfsb1 31
1312 ; PC64LE-NEXT: mtfsb0 30
1313 ; PC64LE-NEXT: fadd 1, 2, 1
1314 ; PC64LE-NEXT: mtfsf 1, 0
1315 ; PC64LE-NEXT: xscvdpsxws 0, 1
1316 ; PC64LE-NEXT: mffprwz 3, 0
1317 ; PC64LE-NEXT: xor 3, 3, 30
1318 ; PC64LE-NEXT: addi 1, 1, 48
1319 ; PC64LE-NEXT: ld 0, 16(1)
1320 ; PC64LE-NEXT: ld 30, -16(1) # 8-byte Folded Reload
1321 ; PC64LE-NEXT: mtlr 0
1324 ; PC64LE9-LABEL: test_fptoui_ppc_i32_ppc_fp128:
1325 ; PC64LE9: # %bb.0: # %entry
1326 ; PC64LE9-NEXT: mflr 0
1327 ; PC64LE9-NEXT: std 30, -16(1) # 8-byte Folded Spill
1328 ; PC64LE9-NEXT: stdu 1, -48(1)
1329 ; PC64LE9-NEXT: addis 3, 2, .LCPI31_0@toc@ha
1330 ; PC64LE9-NEXT: xxlxor 3, 3, 3
1331 ; PC64LE9-NEXT: std 0, 64(1)
1332 ; PC64LE9-NEXT: lfs 0, .LCPI31_0@toc@l(3)
1333 ; PC64LE9-NEXT: fcmpo 1, 2, 3
1334 ; PC64LE9-NEXT: lis 3, -32768
1335 ; PC64LE9-NEXT: fcmpo 0, 1, 0
1336 ; PC64LE9-NEXT: crand 20, 2, 4
1337 ; PC64LE9-NEXT: crandc 21, 0, 2
1338 ; PC64LE9-NEXT: cror 20, 21, 20
1339 ; PC64LE9-NEXT: isel 30, 0, 3, 20
1340 ; PC64LE9-NEXT: bc 12, 20, .LBB31_2
1341 ; PC64LE9-NEXT: # %bb.1: # %entry
1342 ; PC64LE9-NEXT: fmr 3, 0
1343 ; PC64LE9-NEXT: .LBB31_2: # %entry
1344 ; PC64LE9-NEXT: xxlxor 4, 4, 4
1345 ; PC64LE9-NEXT: bl __gcc_qsub
1347 ; PC64LE9-NEXT: mffs 0
1348 ; PC64LE9-NEXT: mtfsb1 31
1349 ; PC64LE9-NEXT: mtfsb0 30
1350 ; PC64LE9-NEXT: fadd 1, 2, 1
1351 ; PC64LE9-NEXT: mtfsf 1, 0
1352 ; PC64LE9-NEXT: xscvdpsxws 0, 1
1353 ; PC64LE9-NEXT: mffprwz 3, 0
1354 ; PC64LE9-NEXT: xor 3, 3, 30
1355 ; PC64LE9-NEXT: addi 1, 1, 48
1356 ; PC64LE9-NEXT: ld 0, 16(1)
1357 ; PC64LE9-NEXT: ld 30, -16(1) # 8-byte Folded Reload
1358 ; PC64LE9-NEXT: mtlr 0
1361 ; PC64-LABEL: test_fptoui_ppc_i32_ppc_fp128:
1362 ; PC64: # %bb.0: # %entry
1363 ; PC64-NEXT: mfcr 12
1365 ; PC64-NEXT: stw 12, 8(1)
1366 ; PC64-NEXT: stdu 1, -128(1)
1367 ; PC64-NEXT: addis 3, 2, .LCPI31_0@toc@ha
1368 ; PC64-NEXT: std 0, 144(1)
1369 ; PC64-NEXT: lfs 0, .LCPI31_0@toc@l(3)
1370 ; PC64-NEXT: addis 3, 2, .LCPI31_1@toc@ha
1371 ; PC64-NEXT: lfs 4, .LCPI31_1@toc@l(3)
1372 ; PC64-NEXT: fcmpo 0, 1, 0
1373 ; PC64-NEXT: crandc 21, 0, 2
1374 ; PC64-NEXT: fcmpo 1, 2, 4
1375 ; PC64-NEXT: crand 20, 2, 4
1376 ; PC64-NEXT: cror 8, 21, 20
1377 ; PC64-NEXT: fmr 3, 4
1378 ; PC64-NEXT: bc 12, 8, .LBB31_2
1379 ; PC64-NEXT: # %bb.1: # %entry
1380 ; PC64-NEXT: fmr 3, 0
1381 ; PC64-NEXT: .LBB31_2: # %entry
1382 ; PC64-NEXT: bl __gcc_qsub
1385 ; PC64-NEXT: mtfsb1 31
1386 ; PC64-NEXT: lis 4, -32768
1387 ; PC64-NEXT: bc 12, 8, .LBB31_3
1388 ; PC64-NEXT: b .LBB31_4
1389 ; PC64-NEXT: .LBB31_3: # %entry
1390 ; PC64-NEXT: li 4, 0
1391 ; PC64-NEXT: .LBB31_4: # %entry
1392 ; PC64-NEXT: mtfsb0 30
1393 ; PC64-NEXT: fadd 1, 2, 1
1394 ; PC64-NEXT: mtfsf 1, 0
1395 ; PC64-NEXT: fctiwz 0, 1
1396 ; PC64-NEXT: stfd 0, 120(1)
1397 ; PC64-NEXT: lwz 3, 124(1)
1398 ; PC64-NEXT: xor 3, 3, 4
1399 ; PC64-NEXT: addi 1, 1, 128
1400 ; PC64-NEXT: ld 0, 16(1)
1401 ; PC64-NEXT: lwz 12, 8(1)
1403 ; PC64-NEXT: mtcrf 32, 12 # cr2
1406 %fpext = call i32 @llvm.experimental.constrained.fptoui.i32.ppcf128(
1408 metadata !"fpexcept.strict") #1
1412 ; Test that resultant libcalls retain order even when their non-strict FLOP form could be
1413 ; trivially optimized into differing sequences.
1414 define void @test_constrained_libcall_multichain(ptr %firstptr, ptr %result) #0 {
1415 ; PC64LE-LABEL: test_constrained_libcall_multichain:
1417 ; PC64LE-NEXT: mflr 0
1418 ; PC64LE-NEXT: std 29, -48(1) # 8-byte Folded Spill
1419 ; PC64LE-NEXT: std 30, -40(1) # 8-byte Folded Spill
1420 ; PC64LE-NEXT: stfd 29, -24(1) # 8-byte Folded Spill
1421 ; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill
1422 ; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill
1423 ; PC64LE-NEXT: stdu 1, -80(1)
1424 ; PC64LE-NEXT: std 0, 96(1)
1425 ; PC64LE-NEXT: mr 29, 3
1426 ; PC64LE-NEXT: xxlxor 2, 2, 2
1427 ; PC64LE-NEXT: xxlxor 4, 4, 4
1428 ; PC64LE-NEXT: lfs 31, 0(3)
1429 ; PC64LE-NEXT: li 3, 0
1430 ; PC64LE-NEXT: mr 30, 4
1431 ; PC64LE-NEXT: std 3, 8(4)
1432 ; PC64LE-NEXT: fmr 1, 31
1433 ; PC64LE-NEXT: fmr 3, 31
1434 ; PC64LE-NEXT: stfd 31, 0(4)
1435 ; PC64LE-NEXT: bl __gcc_qadd
1437 ; PC64LE-NEXT: fmr 3, 1
1438 ; PC64LE-NEXT: fmr 4, 2
1439 ; PC64LE-NEXT: stfd 2, 24(30)
1440 ; PC64LE-NEXT: stfd 1, 16(30)
1441 ; PC64LE-NEXT: fmr 30, 1
1442 ; PC64LE-NEXT: fmr 29, 2
1443 ; PC64LE-NEXT: bl __gcc_qmul
1445 ; PC64LE-NEXT: fmr 1, 31
1446 ; PC64LE-NEXT: xxlxor 2, 2, 2
1447 ; PC64LE-NEXT: li 5, 2
1448 ; PC64LE-NEXT: stfd 29, 40(30)
1449 ; PC64LE-NEXT: stfd 30, 32(30)
1450 ; PC64LE-NEXT: bl __powitf2
1452 ; PC64LE-NEXT: xsrsp 0, 1
1453 ; PC64LE-NEXT: stfs 0, 0(29)
1454 ; PC64LE-NEXT: stfd 1, -16(30)
1455 ; PC64LE-NEXT: stfd 2, -8(30)
1456 ; PC64LE-NEXT: addi 1, 1, 80
1457 ; PC64LE-NEXT: ld 0, 16(1)
1458 ; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload
1459 ; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload
1460 ; PC64LE-NEXT: ld 30, -40(1) # 8-byte Folded Reload
1461 ; PC64LE-NEXT: lfd 29, -24(1) # 8-byte Folded Reload
1462 ; PC64LE-NEXT: ld 29, -48(1) # 8-byte Folded Reload
1463 ; PC64LE-NEXT: mtlr 0
1466 ; PC64LE9-LABEL: test_constrained_libcall_multichain:
1468 ; PC64LE9-NEXT: mflr 0
1469 ; PC64LE9-NEXT: std 29, -48(1) # 8-byte Folded Spill
1470 ; PC64LE9-NEXT: std 30, -40(1) # 8-byte Folded Spill
1471 ; PC64LE9-NEXT: stfd 29, -24(1) # 8-byte Folded Spill
1472 ; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill
1473 ; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill
1474 ; PC64LE9-NEXT: stdu 1, -80(1)
1475 ; PC64LE9-NEXT: std 0, 96(1)
1476 ; PC64LE9-NEXT: mr 29, 3
1477 ; PC64LE9-NEXT: xxlxor 2, 2, 2
1478 ; PC64LE9-NEXT: mr 30, 4
1479 ; PC64LE9-NEXT: lfs 31, 0(3)
1480 ; PC64LE9-NEXT: li 3, 0
1481 ; PC64LE9-NEXT: xxlxor 4, 4, 4
1482 ; PC64LE9-NEXT: std 3, 8(4)
1483 ; PC64LE9-NEXT: fmr 1, 31
1484 ; PC64LE9-NEXT: fmr 3, 31
1485 ; PC64LE9-NEXT: stfd 31, 0(4)
1486 ; PC64LE9-NEXT: bl __gcc_qadd
1488 ; PC64LE9-NEXT: fmr 3, 1
1489 ; PC64LE9-NEXT: fmr 4, 2
1490 ; PC64LE9-NEXT: fmr 30, 1
1491 ; PC64LE9-NEXT: fmr 29, 2
1492 ; PC64LE9-NEXT: stfd 2, 24(30)
1493 ; PC64LE9-NEXT: stfd 1, 16(30)
1494 ; PC64LE9-NEXT: bl __gcc_qmul
1496 ; PC64LE9-NEXT: fmr 1, 31
1497 ; PC64LE9-NEXT: xxlxor 2, 2, 2
1498 ; PC64LE9-NEXT: li 5, 2
1499 ; PC64LE9-NEXT: stfd 29, 40(30)
1500 ; PC64LE9-NEXT: stfd 30, 32(30)
1501 ; PC64LE9-NEXT: bl __powitf2
1503 ; PC64LE9-NEXT: xsrsp 0, 1
1504 ; PC64LE9-NEXT: stfs 0, 0(29)
1505 ; PC64LE9-NEXT: stfd 1, -16(30)
1506 ; PC64LE9-NEXT: stfd 2, -8(30)
1507 ; PC64LE9-NEXT: addi 1, 1, 80
1508 ; PC64LE9-NEXT: ld 0, 16(1)
1509 ; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload
1510 ; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload
1511 ; PC64LE9-NEXT: ld 30, -40(1) # 8-byte Folded Reload
1512 ; PC64LE9-NEXT: ld 29, -48(1) # 8-byte Folded Reload
1513 ; PC64LE9-NEXT: mtlr 0
1514 ; PC64LE9-NEXT: lfd 29, -24(1) # 8-byte Folded Reload
1517 ; PC64-LABEL: test_constrained_libcall_multichain:
1520 ; PC64-NEXT: stdu 1, -176(1)
1521 ; PC64-NEXT: std 0, 192(1)
1522 ; PC64-NEXT: std 29, 120(1) # 8-byte Folded Spill
1523 ; PC64-NEXT: mr 29, 3
1524 ; PC64-NEXT: li 3, 0
1525 ; PC64-NEXT: stfd 31, 168(1) # 8-byte Folded Spill
1526 ; PC64-NEXT: std 30, 128(1) # 8-byte Folded Spill
1527 ; PC64-NEXT: mr 30, 4
1528 ; PC64-NEXT: lfs 31, 0(29)
1529 ; PC64-NEXT: std 3, 8(4)
1530 ; PC64-NEXT: addis 3, 2, .LCPI32_0@toc@ha
1531 ; PC64-NEXT: stfd 30, 160(1) # 8-byte Folded Spill
1532 ; PC64-NEXT: lfs 30, .LCPI32_0@toc@l(3)
1533 ; PC64-NEXT: fmr 1, 31
1534 ; PC64-NEXT: fmr 3, 31
1535 ; PC64-NEXT: stfd 28, 144(1) # 8-byte Folded Spill
1536 ; PC64-NEXT: fmr 2, 30
1537 ; PC64-NEXT: fmr 4, 30
1538 ; PC64-NEXT: stfd 29, 152(1) # 8-byte Folded Spill
1539 ; PC64-NEXT: stfd 31, 0(4)
1540 ; PC64-NEXT: bl __gcc_qadd
1542 ; PC64-NEXT: fmr 3, 1
1543 ; PC64-NEXT: fmr 4, 2
1544 ; PC64-NEXT: fmr 29, 1
1545 ; PC64-NEXT: fmr 28, 2
1546 ; PC64-NEXT: stfd 2, 24(30)
1547 ; PC64-NEXT: stfd 1, 16(30)
1548 ; PC64-NEXT: bl __gcc_qmul
1550 ; PC64-NEXT: fmr 1, 31
1551 ; PC64-NEXT: fmr 2, 30
1552 ; PC64-NEXT: li 5, 2
1553 ; PC64-NEXT: stfd 28, 40(30)
1554 ; PC64-NEXT: stfd 29, 32(30)
1555 ; PC64-NEXT: bl __powitf2
1557 ; PC64-NEXT: frsp 0, 1
1558 ; PC64-NEXT: stfs 0, 0(29)
1559 ; PC64-NEXT: ld 29, 120(1) # 8-byte Folded Reload
1560 ; PC64-NEXT: stfd 1, -16(30)
1561 ; PC64-NEXT: stfd 2, -8(30)
1562 ; PC64-NEXT: ld 30, 128(1) # 8-byte Folded Reload
1563 ; PC64-NEXT: lfd 31, 168(1) # 8-byte Folded Reload
1564 ; PC64-NEXT: lfd 30, 160(1) # 8-byte Folded Reload
1565 ; PC64-NEXT: lfd 29, 152(1) # 8-byte Folded Reload
1566 ; PC64-NEXT: lfd 28, 144(1) # 8-byte Folded Reload
1567 ; PC64-NEXT: addi 1, 1, 176
1568 ; PC64-NEXT: ld 0, 16(1)
1571 %load = load float, ptr %firstptr
1572 %first = call ppc_fp128 @llvm.experimental.constrained.fpext.f32.ppcf128(
1574 metadata !"fpexcept.strict") #1
1575 store ppc_fp128 %first, ptr %result
1577 ; For unconstrained FLOPs, these next two FP instructions would necessarily
1578 ; be executed in series with one another.
1579 %fadd = call ppc_fp128 @llvm.experimental.constrained.fadd.ppcf128(
1582 metadata !"round.dynamic",
1583 metadata !"fpexcept.strict") #1
1584 %stridx1 = getelementptr ppc_fp128, ptr %result, i32 1
1585 store ppc_fp128 %fadd, ptr %stridx1
1586 %fmul = call ppc_fp128 @llvm.experimental.constrained.fmul.ppcf128(
1589 metadata !"round.dynamic",
1590 metadata !"fpexcept.strict") #1
1591 %stridx2 = getelementptr ppc_fp128, ptr %stridx1, i32 1
1592 store ppc_fp128 %fadd, ptr %stridx2
1594 ; For unconstrained FLOPs, these next two FP instructions could be reordered
1595 ; or even executed in parallel with respect to the previous two instructions.
1596 ; However, strict floating point rules would not allow this.
1597 %powi = call ppc_fp128 @llvm.experimental.constrained.powi.ppcf128(
1600 metadata !"round.dynamic",
1601 metadata !"fpexcept.strict") #1
1602 %tinypow = call float @llvm.experimental.constrained.fptrunc.ppcf128.f32(
1604 metadata !"round.dynamic",
1605 metadata !"fpexcept.strict") #1
1606 store float %tinypow, ptr %firstptr
1607 %stridxn1 = getelementptr ppc_fp128, ptr %result, i32 -1
1608 store ppc_fp128 %powi, ptr %stridxn1
1612 define ppc_fp128 @i32_to_ppcq(i32 signext %m) #0 {
1613 ; PC64LE-LABEL: i32_to_ppcq:
1614 ; PC64LE: # %bb.0: # %entry
1615 ; PC64LE-NEXT: mtfprwa 0, 3
1616 ; PC64LE-NEXT: xxlxor 2, 2, 2
1617 ; PC64LE-NEXT: xscvsxddp 1, 0
1620 ; PC64LE9-LABEL: i32_to_ppcq:
1621 ; PC64LE9: # %bb.0: # %entry
1622 ; PC64LE9-NEXT: mtfprwa 0, 3
1623 ; PC64LE9-NEXT: xxlxor 2, 2, 2
1624 ; PC64LE9-NEXT: xscvsxddp 1, 0
1627 ; PC64-LABEL: i32_to_ppcq:
1628 ; PC64: # %bb.0: # %entry
1629 ; PC64-NEXT: std 3, -8(1)
1630 ; PC64-NEXT: addis 3, 2, .LCPI33_0@toc@ha
1631 ; PC64-NEXT: lfd 0, -8(1)
1632 ; PC64-NEXT: lfs 2, .LCPI33_0@toc@l(3)
1633 ; PC64-NEXT: fcfid 1, 0
1636 %conv = tail call ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i32(i32 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1640 define ppc_fp128 @i64_to_ppcq(i64 %m) #0 {
1641 ; PC64LE-LABEL: i64_to_ppcq:
1642 ; PC64LE: # %bb.0: # %entry
1643 ; PC64LE-NEXT: mflr 0
1644 ; PC64LE-NEXT: stdu 1, -32(1)
1645 ; PC64LE-NEXT: std 0, 48(1)
1646 ; PC64LE-NEXT: bl __floatditf
1648 ; PC64LE-NEXT: addi 1, 1, 32
1649 ; PC64LE-NEXT: ld 0, 16(1)
1650 ; PC64LE-NEXT: mtlr 0
1653 ; PC64LE9-LABEL: i64_to_ppcq:
1654 ; PC64LE9: # %bb.0: # %entry
1655 ; PC64LE9-NEXT: mflr 0
1656 ; PC64LE9-NEXT: stdu 1, -32(1)
1657 ; PC64LE9-NEXT: std 0, 48(1)
1658 ; PC64LE9-NEXT: bl __floatditf
1660 ; PC64LE9-NEXT: addi 1, 1, 32
1661 ; PC64LE9-NEXT: ld 0, 16(1)
1662 ; PC64LE9-NEXT: mtlr 0
1665 ; PC64-LABEL: i64_to_ppcq:
1666 ; PC64: # %bb.0: # %entry
1668 ; PC64-NEXT: stdu 1, -112(1)
1669 ; PC64-NEXT: std 0, 128(1)
1670 ; PC64-NEXT: bl __floatditf
1672 ; PC64-NEXT: addi 1, 1, 112
1673 ; PC64-NEXT: ld 0, 16(1)
1677 %conv = tail call ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i64(i64 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1681 define ppc_fp128 @u32_to_ppcq(i32 zeroext %m) #0 {
1682 ; PC64LE-LABEL: u32_to_ppcq:
1683 ; PC64LE: # %bb.0: # %entry
1684 ; PC64LE-NEXT: mtfprwz 0, 3
1685 ; PC64LE-NEXT: xxlxor 2, 2, 2
1686 ; PC64LE-NEXT: xscvuxddp 1, 0
1689 ; PC64LE9-LABEL: u32_to_ppcq:
1690 ; PC64LE9: # %bb.0: # %entry
1691 ; PC64LE9-NEXT: mtfprwz 0, 3
1692 ; PC64LE9-NEXT: xxlxor 2, 2, 2
1693 ; PC64LE9-NEXT: xscvuxddp 1, 0
1696 ; PC64-LABEL: u32_to_ppcq:
1697 ; PC64: # %bb.0: # %entry
1698 ; PC64-NEXT: lis 4, 17200
1699 ; PC64-NEXT: stw 3, -4(1)
1700 ; PC64-NEXT: addis 3, 2, .LCPI35_0@toc@ha
1701 ; PC64-NEXT: stw 4, -8(1)
1702 ; PC64-NEXT: lfs 0, .LCPI35_0@toc@l(3)
1703 ; PC64-NEXT: addis 3, 2, .LCPI35_1@toc@ha
1704 ; PC64-NEXT: lfd 1, -8(1)
1705 ; PC64-NEXT: lfs 2, .LCPI35_1@toc@l(3)
1706 ; PC64-NEXT: fsub 1, 1, 0
1709 %conv = tail call ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i32(i32 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1713 define ppc_fp128 @u64_to_ppcq(i64 %m) #0 {
1714 ; PC64LE-LABEL: u64_to_ppcq:
1715 ; PC64LE: # %bb.0: # %entry
1716 ; PC64LE-NEXT: mflr 0
1717 ; PC64LE-NEXT: std 30, -32(1) # 8-byte Folded Spill
1718 ; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill
1719 ; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill
1720 ; PC64LE-NEXT: stdu 1, -64(1)
1721 ; PC64LE-NEXT: std 0, 80(1)
1722 ; PC64LE-NEXT: mr 30, 3
1723 ; PC64LE-NEXT: bl __floatditf
1725 ; PC64LE-NEXT: addis 3, 2, .LCPI36_0@toc@ha
1726 ; PC64LE-NEXT: xxlxor 4, 4, 4
1727 ; PC64LE-NEXT: fmr 30, 1
1728 ; PC64LE-NEXT: lfs 3, .LCPI36_0@toc@l(3)
1729 ; PC64LE-NEXT: fmr 31, 2
1730 ; PC64LE-NEXT: bl __gcc_qadd
1732 ; PC64LE-NEXT: cmpdi 30, 0
1733 ; PC64LE-NEXT: blt 0, .LBB36_2
1734 ; PC64LE-NEXT: # %bb.1: # %entry
1735 ; PC64LE-NEXT: fmr 1, 30
1736 ; PC64LE-NEXT: .LBB36_2: # %entry
1737 ; PC64LE-NEXT: blt 0, .LBB36_4
1738 ; PC64LE-NEXT: # %bb.3: # %entry
1739 ; PC64LE-NEXT: fmr 2, 31
1740 ; PC64LE-NEXT: .LBB36_4: # %entry
1741 ; PC64LE-NEXT: addi 1, 1, 64
1742 ; PC64LE-NEXT: ld 0, 16(1)
1743 ; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload
1744 ; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload
1745 ; PC64LE-NEXT: ld 30, -32(1) # 8-byte Folded Reload
1746 ; PC64LE-NEXT: mtlr 0
1749 ; PC64LE9-LABEL: u64_to_ppcq:
1750 ; PC64LE9: # %bb.0: # %entry
1751 ; PC64LE9-NEXT: mflr 0
1752 ; PC64LE9-NEXT: std 30, -32(1) # 8-byte Folded Spill
1753 ; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill
1754 ; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill
1755 ; PC64LE9-NEXT: stdu 1, -64(1)
1756 ; PC64LE9-NEXT: std 0, 80(1)
1757 ; PC64LE9-NEXT: mr 30, 3
1758 ; PC64LE9-NEXT: bl __floatditf
1760 ; PC64LE9-NEXT: addis 3, 2, .LCPI36_0@toc@ha
1761 ; PC64LE9-NEXT: xxlxor 4, 4, 4
1762 ; PC64LE9-NEXT: fmr 30, 1
1763 ; PC64LE9-NEXT: fmr 31, 2
1764 ; PC64LE9-NEXT: lfs 3, .LCPI36_0@toc@l(3)
1765 ; PC64LE9-NEXT: bl __gcc_qadd
1767 ; PC64LE9-NEXT: cmpdi 30, 0
1768 ; PC64LE9-NEXT: blt 0, .LBB36_2
1769 ; PC64LE9-NEXT: # %bb.1: # %entry
1770 ; PC64LE9-NEXT: fmr 1, 30
1771 ; PC64LE9-NEXT: .LBB36_2: # %entry
1772 ; PC64LE9-NEXT: blt 0, .LBB36_4
1773 ; PC64LE9-NEXT: # %bb.3: # %entry
1774 ; PC64LE9-NEXT: fmr 2, 31
1775 ; PC64LE9-NEXT: .LBB36_4: # %entry
1776 ; PC64LE9-NEXT: addi 1, 1, 64
1777 ; PC64LE9-NEXT: ld 0, 16(1)
1778 ; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload
1779 ; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload
1780 ; PC64LE9-NEXT: ld 30, -32(1) # 8-byte Folded Reload
1781 ; PC64LE9-NEXT: mtlr 0
1784 ; PC64-LABEL: u64_to_ppcq:
1785 ; PC64: # %bb.0: # %entry
1787 ; PC64-NEXT: stdu 1, -144(1)
1788 ; PC64-NEXT: std 0, 160(1)
1789 ; PC64-NEXT: std 30, 112(1) # 8-byte Folded Spill
1790 ; PC64-NEXT: stfd 30, 128(1) # 8-byte Folded Spill
1791 ; PC64-NEXT: mr 30, 3
1792 ; PC64-NEXT: stfd 31, 136(1) # 8-byte Folded Spill
1793 ; PC64-NEXT: bl __floatditf
1795 ; PC64-NEXT: addis 3, 2, .LCPI36_0@toc@ha
1796 ; PC64-NEXT: fmr 31, 2
1797 ; PC64-NEXT: lfs 3, .LCPI36_0@toc@l(3)
1798 ; PC64-NEXT: addis 3, 2, .LCPI36_1@toc@ha
1799 ; PC64-NEXT: fmr 30, 1
1800 ; PC64-NEXT: lfs 4, .LCPI36_1@toc@l(3)
1801 ; PC64-NEXT: bl __gcc_qadd
1803 ; PC64-NEXT: cmpdi 30, 0
1804 ; PC64-NEXT: blt 0, .LBB36_2
1805 ; PC64-NEXT: # %bb.1: # %entry
1806 ; PC64-NEXT: fmr 1, 30
1807 ; PC64-NEXT: .LBB36_2: # %entry
1808 ; PC64-NEXT: blt 0, .LBB36_4
1809 ; PC64-NEXT: # %bb.3: # %entry
1810 ; PC64-NEXT: fmr 2, 31
1811 ; PC64-NEXT: .LBB36_4: # %entry
1812 ; PC64-NEXT: lfd 31, 136(1) # 8-byte Folded Reload
1813 ; PC64-NEXT: ld 30, 112(1) # 8-byte Folded Reload
1814 ; PC64-NEXT: lfd 30, 128(1) # 8-byte Folded Reload
1815 ; PC64-NEXT: addi 1, 1, 144
1816 ; PC64-NEXT: ld 0, 16(1)
1820 %conv = tail call ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i64(i64 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1824 define ppc_fp128 @i128_to_ppcq(i128 %m) #0 {
1825 ; PC64LE-LABEL: i128_to_ppcq:
1826 ; PC64LE: # %bb.0: # %entry
1827 ; PC64LE-NEXT: mflr 0
1828 ; PC64LE-NEXT: stdu 1, -32(1)
1829 ; PC64LE-NEXT: std 0, 48(1)
1830 ; PC64LE-NEXT: bl __floattitf
1832 ; PC64LE-NEXT: addi 1, 1, 32
1833 ; PC64LE-NEXT: ld 0, 16(1)
1834 ; PC64LE-NEXT: mtlr 0
1837 ; PC64LE9-LABEL: i128_to_ppcq:
1838 ; PC64LE9: # %bb.0: # %entry
1839 ; PC64LE9-NEXT: mflr 0
1840 ; PC64LE9-NEXT: stdu 1, -32(1)
1841 ; PC64LE9-NEXT: std 0, 48(1)
1842 ; PC64LE9-NEXT: bl __floattitf
1844 ; PC64LE9-NEXT: addi 1, 1, 32
1845 ; PC64LE9-NEXT: ld 0, 16(1)
1846 ; PC64LE9-NEXT: mtlr 0
1849 ; PC64-LABEL: i128_to_ppcq:
1850 ; PC64: # %bb.0: # %entry
1852 ; PC64-NEXT: stdu 1, -112(1)
1853 ; PC64-NEXT: std 0, 128(1)
1854 ; PC64-NEXT: bl __floattitf
1856 ; PC64-NEXT: addi 1, 1, 112
1857 ; PC64-NEXT: ld 0, 16(1)
1861 %conv = tail call ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i128(i128 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1865 define ppc_fp128 @u128_to_ppcq(i128 %m) #0 {
1866 ; PC64LE-LABEL: u128_to_ppcq:
1867 ; PC64LE: # %bb.0: # %entry
1868 ; PC64LE-NEXT: mflr 0
1869 ; PC64LE-NEXT: std 30, -32(1) # 8-byte Folded Spill
1870 ; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill
1871 ; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill
1872 ; PC64LE-NEXT: stdu 1, -64(1)
1873 ; PC64LE-NEXT: std 0, 80(1)
1874 ; PC64LE-NEXT: mr 30, 4
1875 ; PC64LE-NEXT: bl __floattitf
1877 ; PC64LE-NEXT: addis 3, 2, .LCPI38_0@toc@ha
1878 ; PC64LE-NEXT: xxlxor 4, 4, 4
1879 ; PC64LE-NEXT: fmr 30, 1
1880 ; PC64LE-NEXT: lfd 3, .LCPI38_0@toc@l(3)
1881 ; PC64LE-NEXT: fmr 31, 2
1882 ; PC64LE-NEXT: bl __gcc_qadd
1884 ; PC64LE-NEXT: cmpdi 30, 0
1885 ; PC64LE-NEXT: blt 0, .LBB38_2
1886 ; PC64LE-NEXT: # %bb.1: # %entry
1887 ; PC64LE-NEXT: fmr 1, 30
1888 ; PC64LE-NEXT: .LBB38_2: # %entry
1889 ; PC64LE-NEXT: blt 0, .LBB38_4
1890 ; PC64LE-NEXT: # %bb.3: # %entry
1891 ; PC64LE-NEXT: fmr 2, 31
1892 ; PC64LE-NEXT: .LBB38_4: # %entry
1893 ; PC64LE-NEXT: addi 1, 1, 64
1894 ; PC64LE-NEXT: ld 0, 16(1)
1895 ; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload
1896 ; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload
1897 ; PC64LE-NEXT: ld 30, -32(1) # 8-byte Folded Reload
1898 ; PC64LE-NEXT: mtlr 0
1901 ; PC64LE9-LABEL: u128_to_ppcq:
1902 ; PC64LE9: # %bb.0: # %entry
1903 ; PC64LE9-NEXT: mflr 0
1904 ; PC64LE9-NEXT: std 30, -32(1) # 8-byte Folded Spill
1905 ; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill
1906 ; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill
1907 ; PC64LE9-NEXT: stdu 1, -64(1)
1908 ; PC64LE9-NEXT: std 0, 80(1)
1909 ; PC64LE9-NEXT: mr 30, 4
1910 ; PC64LE9-NEXT: bl __floattitf
1912 ; PC64LE9-NEXT: addis 3, 2, .LCPI38_0@toc@ha
1913 ; PC64LE9-NEXT: xxlxor 4, 4, 4
1914 ; PC64LE9-NEXT: fmr 30, 1
1915 ; PC64LE9-NEXT: lfd 3, .LCPI38_0@toc@l(3)
1916 ; PC64LE9-NEXT: fmr 31, 2
1917 ; PC64LE9-NEXT: bl __gcc_qadd
1919 ; PC64LE9-NEXT: cmpdi 30, 0
1920 ; PC64LE9-NEXT: blt 0, .LBB38_2
1921 ; PC64LE9-NEXT: # %bb.1: # %entry
1922 ; PC64LE9-NEXT: fmr 1, 30
1923 ; PC64LE9-NEXT: .LBB38_2: # %entry
1924 ; PC64LE9-NEXT: blt 0, .LBB38_4
1925 ; PC64LE9-NEXT: # %bb.3: # %entry
1926 ; PC64LE9-NEXT: fmr 2, 31
1927 ; PC64LE9-NEXT: .LBB38_4: # %entry
1928 ; PC64LE9-NEXT: addi 1, 1, 64
1929 ; PC64LE9-NEXT: ld 0, 16(1)
1930 ; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload
1931 ; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload
1932 ; PC64LE9-NEXT: ld 30, -32(1) # 8-byte Folded Reload
1933 ; PC64LE9-NEXT: mtlr 0
1936 ; PC64-LABEL: u128_to_ppcq:
1937 ; PC64: # %bb.0: # %entry
1939 ; PC64-NEXT: stdu 1, -144(1)
1940 ; PC64-NEXT: std 0, 160(1)
1941 ; PC64-NEXT: std 30, 112(1) # 8-byte Folded Spill
1942 ; PC64-NEXT: stfd 30, 128(1) # 8-byte Folded Spill
1943 ; PC64-NEXT: mr 30, 3
1944 ; PC64-NEXT: stfd 31, 136(1) # 8-byte Folded Spill
1945 ; PC64-NEXT: bl __floattitf
1947 ; PC64-NEXT: addis 3, 2, .LCPI38_0@toc@ha
1948 ; PC64-NEXT: fmr 31, 2
1949 ; PC64-NEXT: lfd 3, .LCPI38_0@toc@l(3)
1950 ; PC64-NEXT: addis 3, 2, .LCPI38_1@toc@ha
1951 ; PC64-NEXT: fmr 30, 1
1952 ; PC64-NEXT: lfs 4, .LCPI38_1@toc@l(3)
1953 ; PC64-NEXT: bl __gcc_qadd
1955 ; PC64-NEXT: cmpdi 30, 0
1956 ; PC64-NEXT: blt 0, .LBB38_2
1957 ; PC64-NEXT: # %bb.1: # %entry
1958 ; PC64-NEXT: fmr 1, 30
1959 ; PC64-NEXT: .LBB38_2: # %entry
1960 ; PC64-NEXT: blt 0, .LBB38_4
1961 ; PC64-NEXT: # %bb.3: # %entry
1962 ; PC64-NEXT: fmr 2, 31
1963 ; PC64-NEXT: .LBB38_4: # %entry
1964 ; PC64-NEXT: lfd 31, 136(1) # 8-byte Folded Reload
1965 ; PC64-NEXT: ld 30, 112(1) # 8-byte Folded Reload
1966 ; PC64-NEXT: lfd 30, 128(1) # 8-byte Folded Reload
1967 ; PC64-NEXT: addi 1, 1, 144
1968 ; PC64-NEXT: ld 0, 16(1)
1972 %conv = tail call ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i128(i128 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1976 define i1 @ppcq_to_s1(ppc_fp128 %a) {
1977 ; PC64LE-LABEL: ppcq_to_s1:
1978 ; PC64LE: # %bb.0: # %entry
1979 ; PC64LE-NEXT: mflr 0
1980 ; PC64LE-NEXT: stdu 1, -32(1)
1981 ; PC64LE-NEXT: std 0, 48(1)
1982 ; PC64LE-NEXT: .cfi_def_cfa_offset 32
1983 ; PC64LE-NEXT: .cfi_offset lr, 16
1984 ; PC64LE-NEXT: bl __gcc_qtou
1986 ; PC64LE-NEXT: addi 1, 1, 32
1987 ; PC64LE-NEXT: ld 0, 16(1)
1988 ; PC64LE-NEXT: mtlr 0
1991 ; PC64LE9-LABEL: ppcq_to_s1:
1992 ; PC64LE9: # %bb.0: # %entry
1993 ; PC64LE9-NEXT: mflr 0
1994 ; PC64LE9-NEXT: stdu 1, -32(1)
1995 ; PC64LE9-NEXT: std 0, 48(1)
1996 ; PC64LE9-NEXT: .cfi_def_cfa_offset 32
1997 ; PC64LE9-NEXT: .cfi_offset lr, 16
1998 ; PC64LE9-NEXT: bl __gcc_qtou
2000 ; PC64LE9-NEXT: addi 1, 1, 32
2001 ; PC64LE9-NEXT: ld 0, 16(1)
2002 ; PC64LE9-NEXT: mtlr 0
2005 ; PC64-LABEL: ppcq_to_s1:
2006 ; PC64: # %bb.0: # %entry
2008 ; PC64-NEXT: stdu 1, -112(1)
2009 ; PC64-NEXT: std 0, 128(1)
2010 ; PC64-NEXT: .cfi_def_cfa_offset 112
2011 ; PC64-NEXT: .cfi_offset lr, 16
2012 ; PC64-NEXT: bl __gcc_qtou
2014 ; PC64-NEXT: addi 1, 1, 112
2015 ; PC64-NEXT: ld 0, 16(1)
2019 %conv = tail call i1 @llvm.experimental.constrained.fptosi.ppcf128.i1(ppc_fp128 %a, metadata !"fpexcept.strict") #1
2023 define i1 @ppcq_to_u1(ppc_fp128 %a) {
2024 ; PC64LE-LABEL: ppcq_to_u1:
2025 ; PC64LE: # %bb.0: # %entry
2026 ; PC64LE-NEXT: mflr 0
2027 ; PC64LE-NEXT: stdu 1, -32(1)
2028 ; PC64LE-NEXT: std 0, 48(1)
2029 ; PC64LE-NEXT: .cfi_def_cfa_offset 32
2030 ; PC64LE-NEXT: .cfi_offset lr, 16
2031 ; PC64LE-NEXT: bl __fixunstfsi
2033 ; PC64LE-NEXT: addi 1, 1, 32
2034 ; PC64LE-NEXT: ld 0, 16(1)
2035 ; PC64LE-NEXT: mtlr 0
2038 ; PC64LE9-LABEL: ppcq_to_u1:
2039 ; PC64LE9: # %bb.0: # %entry
2040 ; PC64LE9-NEXT: mflr 0
2041 ; PC64LE9-NEXT: stdu 1, -32(1)
2042 ; PC64LE9-NEXT: std 0, 48(1)
2043 ; PC64LE9-NEXT: .cfi_def_cfa_offset 32
2044 ; PC64LE9-NEXT: .cfi_offset lr, 16
2045 ; PC64LE9-NEXT: bl __fixunstfsi
2047 ; PC64LE9-NEXT: addi 1, 1, 32
2048 ; PC64LE9-NEXT: ld 0, 16(1)
2049 ; PC64LE9-NEXT: mtlr 0
2052 ; PC64-LABEL: ppcq_to_u1:
2053 ; PC64: # %bb.0: # %entry
2055 ; PC64-NEXT: stdu 1, -112(1)
2056 ; PC64-NEXT: std 0, 128(1)
2057 ; PC64-NEXT: .cfi_def_cfa_offset 112
2058 ; PC64-NEXT: .cfi_offset lr, 16
2059 ; PC64-NEXT: bl __fixunstfsi
2061 ; PC64-NEXT: addi 1, 1, 112
2062 ; PC64-NEXT: ld 0, 16(1)
2066 %conv = tail call i1 @llvm.experimental.constrained.fptoui.ppcf128.i1(ppc_fp128 %a, metadata !"fpexcept.strict") #1
2070 attributes #0 = { nounwind strictfp }
2071 attributes #1 = { strictfp }
2073 declare ppc_fp128 @llvm.experimental.constrained.fadd.ppcf128(ppc_fp128, ppc_fp128, metadata, metadata)
2074 declare ppc_fp128 @llvm.experimental.constrained.ceil.ppcf128(ppc_fp128, metadata)
2075 declare ppc_fp128 @llvm.experimental.constrained.cos.ppcf128(ppc_fp128, metadata, metadata)
2076 declare ppc_fp128 @llvm.experimental.constrained.fdiv.ppcf128(ppc_fp128, ppc_fp128, metadata, metadata)
2077 declare ppc_fp128 @llvm.experimental.constrained.exp.ppcf128(ppc_fp128, metadata, metadata)
2078 declare ppc_fp128 @llvm.experimental.constrained.exp2.ppcf128(ppc_fp128, metadata, metadata)
2079 declare ppc_fp128 @llvm.experimental.constrained.floor.ppcf128(ppc_fp128, metadata)
2080 declare ppc_fp128 @llvm.experimental.constrained.fma.ppcf128(ppc_fp128, ppc_fp128, ppc_fp128, metadata, metadata)
2081 declare ppc_fp128 @llvm.experimental.constrained.fpext.f32.ppcf128(float, metadata)
2082 declare ppc_fp128 @llvm.experimental.constrained.fpext.f64.ppcf128(double, metadata)
2083 declare float @llvm.experimental.constrained.fptrunc.ppcf128.f32(ppc_fp128, metadata, metadata)
2084 declare double @llvm.experimental.constrained.fptrunc.ppcf128.f64(ppc_fp128, metadata, metadata)
2085 declare ppc_fp128 @llvm.experimental.constrained.log.ppcf128(ppc_fp128, metadata, metadata)
2086 declare ppc_fp128 @llvm.experimental.constrained.log10.ppcf128(ppc_fp128, metadata, metadata)
2087 declare ppc_fp128 @llvm.experimental.constrained.log2.ppcf128(ppc_fp128, metadata, metadata)
2088 declare ppc_fp128 @llvm.experimental.constrained.maxnum.ppcf128(ppc_fp128, ppc_fp128, metadata)
2089 declare ppc_fp128 @llvm.experimental.constrained.minnum.ppcf128(ppc_fp128, ppc_fp128, metadata)
2090 declare ppc_fp128 @llvm.experimental.constrained.fmul.ppcf128(ppc_fp128, ppc_fp128, metadata, metadata)
2091 declare ppc_fp128 @llvm.experimental.constrained.nearbyint.ppcf128(ppc_fp128, metadata, metadata)
2092 declare ppc_fp128 @llvm.experimental.constrained.pow.ppcf128(ppc_fp128, ppc_fp128, metadata, metadata)
2093 declare ppc_fp128 @llvm.experimental.constrained.powi.ppcf128(ppc_fp128, i32, metadata, metadata)
2094 declare ppc_fp128 @llvm.experimental.constrained.frem.ppcf128(ppc_fp128, ppc_fp128, metadata, metadata)
2095 declare ppc_fp128 @llvm.experimental.constrained.rint.ppcf128(ppc_fp128, metadata, metadata)
2096 declare ppc_fp128 @llvm.experimental.constrained.round.ppcf128(ppc_fp128, metadata)
2097 declare ppc_fp128 @llvm.experimental.constrained.sin.ppcf128(ppc_fp128, metadata, metadata)
2098 declare ppc_fp128 @llvm.experimental.constrained.sqrt.ppcf128(ppc_fp128, metadata, metadata)
2099 declare ppc_fp128 @llvm.experimental.constrained.fsub.ppcf128(ppc_fp128, ppc_fp128, metadata, metadata)
2100 declare ppc_fp128 @llvm.experimental.constrained.trunc.ppcf128(ppc_fp128, metadata)
2101 declare i64 @llvm.experimental.constrained.fptosi.i64.ppcf128(ppc_fp128, metadata)
2102 declare i32 @llvm.experimental.constrained.fptosi.i32.ppcf128(ppc_fp128, metadata)
2103 declare i1 @llvm.experimental.constrained.fptosi.ppcf128.i1(ppc_fp128, metadata)
2104 declare i64 @llvm.experimental.constrained.fptoui.i64.ppcf128(ppc_fp128, metadata)
2105 declare i32 @llvm.experimental.constrained.fptoui.i32.ppcf128(ppc_fp128, metadata)
2106 declare i1 @llvm.experimental.constrained.fptoui.ppcf128.i1(ppc_fp128, metadata)
2107 declare ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i32(i32, metadata, metadata)
2108 declare ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i32(i32, metadata, metadata)
2109 declare ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i64(i64, metadata, metadata)
2110 declare ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i64(i64, metadata, metadata)
2111 declare ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i128(i128, metadata, metadata)
2112 declare ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i128(i128, metadata, metadata)