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: li 3, 0
1387 ; PC64-NEXT: mtfsb0 30
1388 ; PC64-NEXT: fadd 1, 2, 1
1389 ; PC64-NEXT: mtfsf 1, 0
1390 ; PC64-NEXT: fctiwz 0, 1
1391 ; PC64-NEXT: stfd 0, 120(1)
1392 ; PC64-NEXT: bc 12, 8, .LBB31_4
1393 ; PC64-NEXT: # %bb.3: # %entry
1394 ; PC64-NEXT: lis 3, -32768
1395 ; PC64-NEXT: .LBB31_4: # %entry
1396 ; PC64-NEXT: lwz 4, 124(1)
1397 ; PC64-NEXT: xor 3, 4, 3
1398 ; PC64-NEXT: addi 1, 1, 128
1399 ; PC64-NEXT: ld 0, 16(1)
1400 ; PC64-NEXT: lwz 12, 8(1)
1402 ; PC64-NEXT: mtcrf 32, 12 # cr2
1405 %fpext = call i32 @llvm.experimental.constrained.fptoui.i32.ppcf128(
1407 metadata !"fpexcept.strict") #1
1411 ; Test that resultant libcalls retain order even when their non-strict FLOP form could be
1412 ; trivially optimized into differing sequences.
1413 define void @test_constrained_libcall_multichain(ptr %firstptr, ptr %result) #0 {
1414 ; PC64LE-LABEL: test_constrained_libcall_multichain:
1416 ; PC64LE-NEXT: mflr 0
1417 ; PC64LE-NEXT: std 29, -48(1) # 8-byte Folded Spill
1418 ; PC64LE-NEXT: std 30, -40(1) # 8-byte Folded Spill
1419 ; PC64LE-NEXT: stfd 29, -24(1) # 8-byte Folded Spill
1420 ; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill
1421 ; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill
1422 ; PC64LE-NEXT: stdu 1, -80(1)
1423 ; PC64LE-NEXT: std 0, 96(1)
1424 ; PC64LE-NEXT: mr 29, 3
1425 ; PC64LE-NEXT: xxlxor 2, 2, 2
1426 ; PC64LE-NEXT: xxlxor 4, 4, 4
1427 ; PC64LE-NEXT: lfs 31, 0(3)
1428 ; PC64LE-NEXT: li 3, 0
1429 ; PC64LE-NEXT: mr 30, 4
1430 ; PC64LE-NEXT: std 3, 8(4)
1431 ; PC64LE-NEXT: fmr 1, 31
1432 ; PC64LE-NEXT: fmr 3, 31
1433 ; PC64LE-NEXT: stfd 31, 0(4)
1434 ; PC64LE-NEXT: bl __gcc_qadd
1436 ; PC64LE-NEXT: fmr 3, 1
1437 ; PC64LE-NEXT: fmr 4, 2
1438 ; PC64LE-NEXT: stfd 2, 24(30)
1439 ; PC64LE-NEXT: stfd 1, 16(30)
1440 ; PC64LE-NEXT: fmr 30, 1
1441 ; PC64LE-NEXT: fmr 29, 2
1442 ; PC64LE-NEXT: bl __gcc_qmul
1444 ; PC64LE-NEXT: fmr 1, 31
1445 ; PC64LE-NEXT: xxlxor 2, 2, 2
1446 ; PC64LE-NEXT: li 5, 2
1447 ; PC64LE-NEXT: stfd 29, 40(30)
1448 ; PC64LE-NEXT: stfd 30, 32(30)
1449 ; PC64LE-NEXT: bl __powitf2
1451 ; PC64LE-NEXT: xsrsp 0, 1
1452 ; PC64LE-NEXT: stfs 0, 0(29)
1453 ; PC64LE-NEXT: stfd 1, -16(30)
1454 ; PC64LE-NEXT: stfd 2, -8(30)
1455 ; PC64LE-NEXT: addi 1, 1, 80
1456 ; PC64LE-NEXT: ld 0, 16(1)
1457 ; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload
1458 ; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload
1459 ; PC64LE-NEXT: ld 30, -40(1) # 8-byte Folded Reload
1460 ; PC64LE-NEXT: lfd 29, -24(1) # 8-byte Folded Reload
1461 ; PC64LE-NEXT: ld 29, -48(1) # 8-byte Folded Reload
1462 ; PC64LE-NEXT: mtlr 0
1465 ; PC64LE9-LABEL: test_constrained_libcall_multichain:
1467 ; PC64LE9-NEXT: mflr 0
1468 ; PC64LE9-NEXT: std 29, -48(1) # 8-byte Folded Spill
1469 ; PC64LE9-NEXT: std 30, -40(1) # 8-byte Folded Spill
1470 ; PC64LE9-NEXT: stfd 29, -24(1) # 8-byte Folded Spill
1471 ; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill
1472 ; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill
1473 ; PC64LE9-NEXT: stdu 1, -80(1)
1474 ; PC64LE9-NEXT: std 0, 96(1)
1475 ; PC64LE9-NEXT: mr 29, 3
1476 ; PC64LE9-NEXT: xxlxor 2, 2, 2
1477 ; PC64LE9-NEXT: mr 30, 4
1478 ; PC64LE9-NEXT: lfs 31, 0(3)
1479 ; PC64LE9-NEXT: li 3, 0
1480 ; PC64LE9-NEXT: xxlxor 4, 4, 4
1481 ; PC64LE9-NEXT: std 3, 8(4)
1482 ; PC64LE9-NEXT: fmr 1, 31
1483 ; PC64LE9-NEXT: fmr 3, 31
1484 ; PC64LE9-NEXT: stfd 31, 0(4)
1485 ; PC64LE9-NEXT: bl __gcc_qadd
1487 ; PC64LE9-NEXT: fmr 3, 1
1488 ; PC64LE9-NEXT: fmr 4, 2
1489 ; PC64LE9-NEXT: fmr 30, 1
1490 ; PC64LE9-NEXT: fmr 29, 2
1491 ; PC64LE9-NEXT: stfd 2, 24(30)
1492 ; PC64LE9-NEXT: stfd 1, 16(30)
1493 ; PC64LE9-NEXT: bl __gcc_qmul
1495 ; PC64LE9-NEXT: fmr 1, 31
1496 ; PC64LE9-NEXT: xxlxor 2, 2, 2
1497 ; PC64LE9-NEXT: li 5, 2
1498 ; PC64LE9-NEXT: stfd 29, 40(30)
1499 ; PC64LE9-NEXT: stfd 30, 32(30)
1500 ; PC64LE9-NEXT: bl __powitf2
1502 ; PC64LE9-NEXT: xsrsp 0, 1
1503 ; PC64LE9-NEXT: stfs 0, 0(29)
1504 ; PC64LE9-NEXT: stfd 1, -16(30)
1505 ; PC64LE9-NEXT: stfd 2, -8(30)
1506 ; PC64LE9-NEXT: addi 1, 1, 80
1507 ; PC64LE9-NEXT: ld 0, 16(1)
1508 ; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload
1509 ; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload
1510 ; PC64LE9-NEXT: ld 30, -40(1) # 8-byte Folded Reload
1511 ; PC64LE9-NEXT: ld 29, -48(1) # 8-byte Folded Reload
1512 ; PC64LE9-NEXT: mtlr 0
1513 ; PC64LE9-NEXT: lfd 29, -24(1) # 8-byte Folded Reload
1516 ; PC64-LABEL: test_constrained_libcall_multichain:
1519 ; PC64-NEXT: stdu 1, -176(1)
1520 ; PC64-NEXT: std 0, 192(1)
1521 ; PC64-NEXT: std 29, 120(1) # 8-byte Folded Spill
1522 ; PC64-NEXT: mr 29, 3
1523 ; PC64-NEXT: li 3, 0
1524 ; PC64-NEXT: stfd 31, 168(1) # 8-byte Folded Spill
1525 ; PC64-NEXT: std 30, 128(1) # 8-byte Folded Spill
1526 ; PC64-NEXT: mr 30, 4
1527 ; PC64-NEXT: lfs 31, 0(29)
1528 ; PC64-NEXT: std 3, 8(4)
1529 ; PC64-NEXT: addis 3, 2, .LCPI32_0@toc@ha
1530 ; PC64-NEXT: stfd 30, 160(1) # 8-byte Folded Spill
1531 ; PC64-NEXT: lfs 30, .LCPI32_0@toc@l(3)
1532 ; PC64-NEXT: fmr 1, 31
1533 ; PC64-NEXT: fmr 3, 31
1534 ; PC64-NEXT: stfd 28, 144(1) # 8-byte Folded Spill
1535 ; PC64-NEXT: fmr 2, 30
1536 ; PC64-NEXT: fmr 4, 30
1537 ; PC64-NEXT: stfd 29, 152(1) # 8-byte Folded Spill
1538 ; PC64-NEXT: stfd 31, 0(4)
1539 ; PC64-NEXT: bl __gcc_qadd
1541 ; PC64-NEXT: fmr 3, 1
1542 ; PC64-NEXT: fmr 4, 2
1543 ; PC64-NEXT: fmr 29, 1
1544 ; PC64-NEXT: fmr 28, 2
1545 ; PC64-NEXT: stfd 2, 24(30)
1546 ; PC64-NEXT: stfd 1, 16(30)
1547 ; PC64-NEXT: bl __gcc_qmul
1549 ; PC64-NEXT: fmr 1, 31
1550 ; PC64-NEXT: fmr 2, 30
1551 ; PC64-NEXT: li 5, 2
1552 ; PC64-NEXT: stfd 28, 40(30)
1553 ; PC64-NEXT: stfd 29, 32(30)
1554 ; PC64-NEXT: bl __powitf2
1556 ; PC64-NEXT: frsp 0, 1
1557 ; PC64-NEXT: stfs 0, 0(29)
1558 ; PC64-NEXT: ld 29, 120(1) # 8-byte Folded Reload
1559 ; PC64-NEXT: stfd 1, -16(30)
1560 ; PC64-NEXT: stfd 2, -8(30)
1561 ; PC64-NEXT: ld 30, 128(1) # 8-byte Folded Reload
1562 ; PC64-NEXT: lfd 31, 168(1) # 8-byte Folded Reload
1563 ; PC64-NEXT: lfd 30, 160(1) # 8-byte Folded Reload
1564 ; PC64-NEXT: lfd 29, 152(1) # 8-byte Folded Reload
1565 ; PC64-NEXT: lfd 28, 144(1) # 8-byte Folded Reload
1566 ; PC64-NEXT: addi 1, 1, 176
1567 ; PC64-NEXT: ld 0, 16(1)
1570 %load = load float, ptr %firstptr
1571 %first = call ppc_fp128 @llvm.experimental.constrained.fpext.f32.ppcf128(
1573 metadata !"fpexcept.strict") #1
1574 store ppc_fp128 %first, ptr %result
1576 ; For unconstrained FLOPs, these next two FP instructions would necessarily
1577 ; be executed in series with one another.
1578 %fadd = call ppc_fp128 @llvm.experimental.constrained.fadd.ppcf128(
1581 metadata !"round.dynamic",
1582 metadata !"fpexcept.strict") #1
1583 %stridx1 = getelementptr ppc_fp128, ptr %result, i32 1
1584 store ppc_fp128 %fadd, ptr %stridx1
1585 %fmul = call ppc_fp128 @llvm.experimental.constrained.fmul.ppcf128(
1588 metadata !"round.dynamic",
1589 metadata !"fpexcept.strict") #1
1590 %stridx2 = getelementptr ppc_fp128, ptr %stridx1, i32 1
1591 store ppc_fp128 %fadd, ptr %stridx2
1593 ; For unconstrained FLOPs, these next two FP instructions could be reordered
1594 ; or even executed in parallel with respect to the previous two instructions.
1595 ; However, strict floating point rules would not allow this.
1596 %powi = call ppc_fp128 @llvm.experimental.constrained.powi.ppcf128(
1599 metadata !"round.dynamic",
1600 metadata !"fpexcept.strict") #1
1601 %tinypow = call float @llvm.experimental.constrained.fptrunc.ppcf128.f32(
1603 metadata !"round.dynamic",
1604 metadata !"fpexcept.strict") #1
1605 store float %tinypow, ptr %firstptr
1606 %stridxn1 = getelementptr ppc_fp128, ptr %result, i32 -1
1607 store ppc_fp128 %powi, ptr %stridxn1
1611 define ppc_fp128 @i32_to_ppcq(i32 signext %m) #0 {
1612 ; PC64LE-LABEL: i32_to_ppcq:
1613 ; PC64LE: # %bb.0: # %entry
1614 ; PC64LE-NEXT: mtfprwa 0, 3
1615 ; PC64LE-NEXT: xxlxor 2, 2, 2
1616 ; PC64LE-NEXT: xscvsxddp 1, 0
1619 ; PC64LE9-LABEL: i32_to_ppcq:
1620 ; PC64LE9: # %bb.0: # %entry
1621 ; PC64LE9-NEXT: mtfprwa 0, 3
1622 ; PC64LE9-NEXT: xxlxor 2, 2, 2
1623 ; PC64LE9-NEXT: xscvsxddp 1, 0
1626 ; PC64-LABEL: i32_to_ppcq:
1627 ; PC64: # %bb.0: # %entry
1628 ; PC64-NEXT: std 3, -8(1)
1629 ; PC64-NEXT: addis 3, 2, .LCPI33_0@toc@ha
1630 ; PC64-NEXT: lfd 0, -8(1)
1631 ; PC64-NEXT: lfs 2, .LCPI33_0@toc@l(3)
1632 ; PC64-NEXT: fcfid 1, 0
1635 %conv = tail call ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i32(i32 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1639 define ppc_fp128 @i64_to_ppcq(i64 %m) #0 {
1640 ; PC64LE-LABEL: i64_to_ppcq:
1641 ; PC64LE: # %bb.0: # %entry
1642 ; PC64LE-NEXT: mflr 0
1643 ; PC64LE-NEXT: stdu 1, -32(1)
1644 ; PC64LE-NEXT: std 0, 48(1)
1645 ; PC64LE-NEXT: bl __floatditf
1647 ; PC64LE-NEXT: addi 1, 1, 32
1648 ; PC64LE-NEXT: ld 0, 16(1)
1649 ; PC64LE-NEXT: mtlr 0
1652 ; PC64LE9-LABEL: i64_to_ppcq:
1653 ; PC64LE9: # %bb.0: # %entry
1654 ; PC64LE9-NEXT: mflr 0
1655 ; PC64LE9-NEXT: stdu 1, -32(1)
1656 ; PC64LE9-NEXT: std 0, 48(1)
1657 ; PC64LE9-NEXT: bl __floatditf
1659 ; PC64LE9-NEXT: addi 1, 1, 32
1660 ; PC64LE9-NEXT: ld 0, 16(1)
1661 ; PC64LE9-NEXT: mtlr 0
1664 ; PC64-LABEL: i64_to_ppcq:
1665 ; PC64: # %bb.0: # %entry
1667 ; PC64-NEXT: stdu 1, -112(1)
1668 ; PC64-NEXT: std 0, 128(1)
1669 ; PC64-NEXT: bl __floatditf
1671 ; PC64-NEXT: addi 1, 1, 112
1672 ; PC64-NEXT: ld 0, 16(1)
1676 %conv = tail call ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i64(i64 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1680 define ppc_fp128 @u32_to_ppcq(i32 zeroext %m) #0 {
1681 ; PC64LE-LABEL: u32_to_ppcq:
1682 ; PC64LE: # %bb.0: # %entry
1683 ; PC64LE-NEXT: mtfprwz 0, 3
1684 ; PC64LE-NEXT: xxlxor 2, 2, 2
1685 ; PC64LE-NEXT: xscvuxddp 1, 0
1688 ; PC64LE9-LABEL: u32_to_ppcq:
1689 ; PC64LE9: # %bb.0: # %entry
1690 ; PC64LE9-NEXT: mtfprwz 0, 3
1691 ; PC64LE9-NEXT: xxlxor 2, 2, 2
1692 ; PC64LE9-NEXT: xscvuxddp 1, 0
1695 ; PC64-LABEL: u32_to_ppcq:
1696 ; PC64: # %bb.0: # %entry
1697 ; PC64-NEXT: lis 4, 17200
1698 ; PC64-NEXT: stw 3, -4(1)
1699 ; PC64-NEXT: addis 3, 2, .LCPI35_0@toc@ha
1700 ; PC64-NEXT: stw 4, -8(1)
1701 ; PC64-NEXT: lfs 0, .LCPI35_0@toc@l(3)
1702 ; PC64-NEXT: addis 3, 2, .LCPI35_1@toc@ha
1703 ; PC64-NEXT: lfd 1, -8(1)
1704 ; PC64-NEXT: lfs 2, .LCPI35_1@toc@l(3)
1705 ; PC64-NEXT: fsub 1, 1, 0
1708 %conv = tail call ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i32(i32 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1712 define ppc_fp128 @u64_to_ppcq(i64 %m) #0 {
1713 ; PC64LE-LABEL: u64_to_ppcq:
1714 ; PC64LE: # %bb.0: # %entry
1715 ; PC64LE-NEXT: mflr 0
1716 ; PC64LE-NEXT: std 30, -32(1) # 8-byte Folded Spill
1717 ; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill
1718 ; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill
1719 ; PC64LE-NEXT: stdu 1, -64(1)
1720 ; PC64LE-NEXT: std 0, 80(1)
1721 ; PC64LE-NEXT: mr 30, 3
1722 ; PC64LE-NEXT: bl __floatditf
1724 ; PC64LE-NEXT: addis 3, 2, .LCPI36_0@toc@ha
1725 ; PC64LE-NEXT: xxlxor 4, 4, 4
1726 ; PC64LE-NEXT: fmr 30, 1
1727 ; PC64LE-NEXT: lfs 3, .LCPI36_0@toc@l(3)
1728 ; PC64LE-NEXT: fmr 31, 2
1729 ; PC64LE-NEXT: bl __gcc_qadd
1731 ; PC64LE-NEXT: cmpdi 30, 0
1732 ; PC64LE-NEXT: blt 0, .LBB36_2
1733 ; PC64LE-NEXT: # %bb.1: # %entry
1734 ; PC64LE-NEXT: fmr 1, 30
1735 ; PC64LE-NEXT: .LBB36_2: # %entry
1736 ; PC64LE-NEXT: blt 0, .LBB36_4
1737 ; PC64LE-NEXT: # %bb.3: # %entry
1738 ; PC64LE-NEXT: fmr 2, 31
1739 ; PC64LE-NEXT: .LBB36_4: # %entry
1740 ; PC64LE-NEXT: addi 1, 1, 64
1741 ; PC64LE-NEXT: ld 0, 16(1)
1742 ; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload
1743 ; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload
1744 ; PC64LE-NEXT: ld 30, -32(1) # 8-byte Folded Reload
1745 ; PC64LE-NEXT: mtlr 0
1748 ; PC64LE9-LABEL: u64_to_ppcq:
1749 ; PC64LE9: # %bb.0: # %entry
1750 ; PC64LE9-NEXT: mflr 0
1751 ; PC64LE9-NEXT: std 30, -32(1) # 8-byte Folded Spill
1752 ; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill
1753 ; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill
1754 ; PC64LE9-NEXT: stdu 1, -64(1)
1755 ; PC64LE9-NEXT: std 0, 80(1)
1756 ; PC64LE9-NEXT: mr 30, 3
1757 ; PC64LE9-NEXT: bl __floatditf
1759 ; PC64LE9-NEXT: addis 3, 2, .LCPI36_0@toc@ha
1760 ; PC64LE9-NEXT: xxlxor 4, 4, 4
1761 ; PC64LE9-NEXT: fmr 30, 1
1762 ; PC64LE9-NEXT: fmr 31, 2
1763 ; PC64LE9-NEXT: lfs 3, .LCPI36_0@toc@l(3)
1764 ; PC64LE9-NEXT: bl __gcc_qadd
1766 ; PC64LE9-NEXT: cmpdi 30, 0
1767 ; PC64LE9-NEXT: blt 0, .LBB36_2
1768 ; PC64LE9-NEXT: # %bb.1: # %entry
1769 ; PC64LE9-NEXT: fmr 1, 30
1770 ; PC64LE9-NEXT: .LBB36_2: # %entry
1771 ; PC64LE9-NEXT: blt 0, .LBB36_4
1772 ; PC64LE9-NEXT: # %bb.3: # %entry
1773 ; PC64LE9-NEXT: fmr 2, 31
1774 ; PC64LE9-NEXT: .LBB36_4: # %entry
1775 ; PC64LE9-NEXT: addi 1, 1, 64
1776 ; PC64LE9-NEXT: ld 0, 16(1)
1777 ; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload
1778 ; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload
1779 ; PC64LE9-NEXT: ld 30, -32(1) # 8-byte Folded Reload
1780 ; PC64LE9-NEXT: mtlr 0
1783 ; PC64-LABEL: u64_to_ppcq:
1784 ; PC64: # %bb.0: # %entry
1786 ; PC64-NEXT: stdu 1, -144(1)
1787 ; PC64-NEXT: std 0, 160(1)
1788 ; PC64-NEXT: std 30, 112(1) # 8-byte Folded Spill
1789 ; PC64-NEXT: stfd 30, 128(1) # 8-byte Folded Spill
1790 ; PC64-NEXT: mr 30, 3
1791 ; PC64-NEXT: stfd 31, 136(1) # 8-byte Folded Spill
1792 ; PC64-NEXT: bl __floatditf
1794 ; PC64-NEXT: addis 3, 2, .LCPI36_0@toc@ha
1795 ; PC64-NEXT: fmr 31, 2
1796 ; PC64-NEXT: lfs 3, .LCPI36_0@toc@l(3)
1797 ; PC64-NEXT: addis 3, 2, .LCPI36_1@toc@ha
1798 ; PC64-NEXT: fmr 30, 1
1799 ; PC64-NEXT: lfs 4, .LCPI36_1@toc@l(3)
1800 ; PC64-NEXT: bl __gcc_qadd
1802 ; PC64-NEXT: cmpdi 30, 0
1803 ; PC64-NEXT: blt 0, .LBB36_2
1804 ; PC64-NEXT: # %bb.1: # %entry
1805 ; PC64-NEXT: fmr 1, 30
1806 ; PC64-NEXT: .LBB36_2: # %entry
1807 ; PC64-NEXT: blt 0, .LBB36_4
1808 ; PC64-NEXT: # %bb.3: # %entry
1809 ; PC64-NEXT: fmr 2, 31
1810 ; PC64-NEXT: .LBB36_4: # %entry
1811 ; PC64-NEXT: lfd 31, 136(1) # 8-byte Folded Reload
1812 ; PC64-NEXT: ld 30, 112(1) # 8-byte Folded Reload
1813 ; PC64-NEXT: lfd 30, 128(1) # 8-byte Folded Reload
1814 ; PC64-NEXT: addi 1, 1, 144
1815 ; PC64-NEXT: ld 0, 16(1)
1819 %conv = tail call ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i64(i64 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1823 define ppc_fp128 @i128_to_ppcq(i128 %m) #0 {
1824 ; PC64LE-LABEL: i128_to_ppcq:
1825 ; PC64LE: # %bb.0: # %entry
1826 ; PC64LE-NEXT: mflr 0
1827 ; PC64LE-NEXT: stdu 1, -32(1)
1828 ; PC64LE-NEXT: std 0, 48(1)
1829 ; PC64LE-NEXT: bl __floattitf
1831 ; PC64LE-NEXT: addi 1, 1, 32
1832 ; PC64LE-NEXT: ld 0, 16(1)
1833 ; PC64LE-NEXT: mtlr 0
1836 ; PC64LE9-LABEL: i128_to_ppcq:
1837 ; PC64LE9: # %bb.0: # %entry
1838 ; PC64LE9-NEXT: mflr 0
1839 ; PC64LE9-NEXT: stdu 1, -32(1)
1840 ; PC64LE9-NEXT: std 0, 48(1)
1841 ; PC64LE9-NEXT: bl __floattitf
1843 ; PC64LE9-NEXT: addi 1, 1, 32
1844 ; PC64LE9-NEXT: ld 0, 16(1)
1845 ; PC64LE9-NEXT: mtlr 0
1848 ; PC64-LABEL: i128_to_ppcq:
1849 ; PC64: # %bb.0: # %entry
1851 ; PC64-NEXT: stdu 1, -112(1)
1852 ; PC64-NEXT: std 0, 128(1)
1853 ; PC64-NEXT: bl __floattitf
1855 ; PC64-NEXT: addi 1, 1, 112
1856 ; PC64-NEXT: ld 0, 16(1)
1860 %conv = tail call ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i128(i128 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1864 define ppc_fp128 @u128_to_ppcq(i128 %m) #0 {
1865 ; PC64LE-LABEL: u128_to_ppcq:
1866 ; PC64LE: # %bb.0: # %entry
1867 ; PC64LE-NEXT: mflr 0
1868 ; PC64LE-NEXT: std 30, -32(1) # 8-byte Folded Spill
1869 ; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill
1870 ; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill
1871 ; PC64LE-NEXT: stdu 1, -64(1)
1872 ; PC64LE-NEXT: std 0, 80(1)
1873 ; PC64LE-NEXT: mr 30, 4
1874 ; PC64LE-NEXT: bl __floattitf
1876 ; PC64LE-NEXT: addis 3, 2, .LCPI38_0@toc@ha
1877 ; PC64LE-NEXT: xxlxor 4, 4, 4
1878 ; PC64LE-NEXT: fmr 30, 1
1879 ; PC64LE-NEXT: lfd 3, .LCPI38_0@toc@l(3)
1880 ; PC64LE-NEXT: fmr 31, 2
1881 ; PC64LE-NEXT: bl __gcc_qadd
1883 ; PC64LE-NEXT: cmpdi 30, 0
1884 ; PC64LE-NEXT: blt 0, .LBB38_2
1885 ; PC64LE-NEXT: # %bb.1: # %entry
1886 ; PC64LE-NEXT: fmr 1, 30
1887 ; PC64LE-NEXT: .LBB38_2: # %entry
1888 ; PC64LE-NEXT: blt 0, .LBB38_4
1889 ; PC64LE-NEXT: # %bb.3: # %entry
1890 ; PC64LE-NEXT: fmr 2, 31
1891 ; PC64LE-NEXT: .LBB38_4: # %entry
1892 ; PC64LE-NEXT: addi 1, 1, 64
1893 ; PC64LE-NEXT: ld 0, 16(1)
1894 ; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload
1895 ; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload
1896 ; PC64LE-NEXT: ld 30, -32(1) # 8-byte Folded Reload
1897 ; PC64LE-NEXT: mtlr 0
1900 ; PC64LE9-LABEL: u128_to_ppcq:
1901 ; PC64LE9: # %bb.0: # %entry
1902 ; PC64LE9-NEXT: mflr 0
1903 ; PC64LE9-NEXT: std 30, -32(1) # 8-byte Folded Spill
1904 ; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill
1905 ; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill
1906 ; PC64LE9-NEXT: stdu 1, -64(1)
1907 ; PC64LE9-NEXT: std 0, 80(1)
1908 ; PC64LE9-NEXT: mr 30, 4
1909 ; PC64LE9-NEXT: bl __floattitf
1911 ; PC64LE9-NEXT: addis 3, 2, .LCPI38_0@toc@ha
1912 ; PC64LE9-NEXT: xxlxor 4, 4, 4
1913 ; PC64LE9-NEXT: fmr 30, 1
1914 ; PC64LE9-NEXT: lfd 3, .LCPI38_0@toc@l(3)
1915 ; PC64LE9-NEXT: fmr 31, 2
1916 ; PC64LE9-NEXT: bl __gcc_qadd
1918 ; PC64LE9-NEXT: cmpdi 30, 0
1919 ; PC64LE9-NEXT: blt 0, .LBB38_2
1920 ; PC64LE9-NEXT: # %bb.1: # %entry
1921 ; PC64LE9-NEXT: fmr 1, 30
1922 ; PC64LE9-NEXT: .LBB38_2: # %entry
1923 ; PC64LE9-NEXT: blt 0, .LBB38_4
1924 ; PC64LE9-NEXT: # %bb.3: # %entry
1925 ; PC64LE9-NEXT: fmr 2, 31
1926 ; PC64LE9-NEXT: .LBB38_4: # %entry
1927 ; PC64LE9-NEXT: addi 1, 1, 64
1928 ; PC64LE9-NEXT: ld 0, 16(1)
1929 ; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload
1930 ; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload
1931 ; PC64LE9-NEXT: ld 30, -32(1) # 8-byte Folded Reload
1932 ; PC64LE9-NEXT: mtlr 0
1935 ; PC64-LABEL: u128_to_ppcq:
1936 ; PC64: # %bb.0: # %entry
1938 ; PC64-NEXT: stdu 1, -144(1)
1939 ; PC64-NEXT: std 0, 160(1)
1940 ; PC64-NEXT: std 30, 112(1) # 8-byte Folded Spill
1941 ; PC64-NEXT: stfd 30, 128(1) # 8-byte Folded Spill
1942 ; PC64-NEXT: mr 30, 3
1943 ; PC64-NEXT: stfd 31, 136(1) # 8-byte Folded Spill
1944 ; PC64-NEXT: bl __floattitf
1946 ; PC64-NEXT: addis 3, 2, .LCPI38_0@toc@ha
1947 ; PC64-NEXT: fmr 31, 2
1948 ; PC64-NEXT: lfd 3, .LCPI38_0@toc@l(3)
1949 ; PC64-NEXT: addis 3, 2, .LCPI38_1@toc@ha
1950 ; PC64-NEXT: fmr 30, 1
1951 ; PC64-NEXT: lfs 4, .LCPI38_1@toc@l(3)
1952 ; PC64-NEXT: bl __gcc_qadd
1954 ; PC64-NEXT: cmpdi 30, 0
1955 ; PC64-NEXT: blt 0, .LBB38_2
1956 ; PC64-NEXT: # %bb.1: # %entry
1957 ; PC64-NEXT: fmr 1, 30
1958 ; PC64-NEXT: .LBB38_2: # %entry
1959 ; PC64-NEXT: blt 0, .LBB38_4
1960 ; PC64-NEXT: # %bb.3: # %entry
1961 ; PC64-NEXT: fmr 2, 31
1962 ; PC64-NEXT: .LBB38_4: # %entry
1963 ; PC64-NEXT: lfd 31, 136(1) # 8-byte Folded Reload
1964 ; PC64-NEXT: ld 30, 112(1) # 8-byte Folded Reload
1965 ; PC64-NEXT: lfd 30, 128(1) # 8-byte Folded Reload
1966 ; PC64-NEXT: addi 1, 1, 144
1967 ; PC64-NEXT: ld 0, 16(1)
1971 %conv = tail call ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i128(i128 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1975 define i1 @ppcq_to_s1(ppc_fp128 %a) {
1976 ; PC64LE-LABEL: ppcq_to_s1:
1977 ; PC64LE: # %bb.0: # %entry
1978 ; PC64LE-NEXT: mflr 0
1979 ; PC64LE-NEXT: stdu 1, -32(1)
1980 ; PC64LE-NEXT: std 0, 48(1)
1981 ; PC64LE-NEXT: .cfi_def_cfa_offset 32
1982 ; PC64LE-NEXT: .cfi_offset lr, 16
1983 ; PC64LE-NEXT: bl __gcc_qtou
1985 ; PC64LE-NEXT: addi 1, 1, 32
1986 ; PC64LE-NEXT: ld 0, 16(1)
1987 ; PC64LE-NEXT: mtlr 0
1990 ; PC64LE9-LABEL: ppcq_to_s1:
1991 ; PC64LE9: # %bb.0: # %entry
1992 ; PC64LE9-NEXT: mflr 0
1993 ; PC64LE9-NEXT: stdu 1, -32(1)
1994 ; PC64LE9-NEXT: std 0, 48(1)
1995 ; PC64LE9-NEXT: .cfi_def_cfa_offset 32
1996 ; PC64LE9-NEXT: .cfi_offset lr, 16
1997 ; PC64LE9-NEXT: bl __gcc_qtou
1999 ; PC64LE9-NEXT: addi 1, 1, 32
2000 ; PC64LE9-NEXT: ld 0, 16(1)
2001 ; PC64LE9-NEXT: mtlr 0
2004 ; PC64-LABEL: ppcq_to_s1:
2005 ; PC64: # %bb.0: # %entry
2007 ; PC64-NEXT: stdu 1, -112(1)
2008 ; PC64-NEXT: std 0, 128(1)
2009 ; PC64-NEXT: .cfi_def_cfa_offset 112
2010 ; PC64-NEXT: .cfi_offset lr, 16
2011 ; PC64-NEXT: bl __gcc_qtou
2013 ; PC64-NEXT: addi 1, 1, 112
2014 ; PC64-NEXT: ld 0, 16(1)
2018 %conv = tail call i1 @llvm.experimental.constrained.fptosi.ppcf128.i1(ppc_fp128 %a, metadata !"fpexcept.strict") #1
2022 define i1 @ppcq_to_u1(ppc_fp128 %a) {
2023 ; PC64LE-LABEL: ppcq_to_u1:
2024 ; PC64LE: # %bb.0: # %entry
2025 ; PC64LE-NEXT: mflr 0
2026 ; PC64LE-NEXT: stdu 1, -32(1)
2027 ; PC64LE-NEXT: std 0, 48(1)
2028 ; PC64LE-NEXT: .cfi_def_cfa_offset 32
2029 ; PC64LE-NEXT: .cfi_offset lr, 16
2030 ; PC64LE-NEXT: bl __fixunstfsi
2032 ; PC64LE-NEXT: addi 1, 1, 32
2033 ; PC64LE-NEXT: ld 0, 16(1)
2034 ; PC64LE-NEXT: mtlr 0
2037 ; PC64LE9-LABEL: ppcq_to_u1:
2038 ; PC64LE9: # %bb.0: # %entry
2039 ; PC64LE9-NEXT: mflr 0
2040 ; PC64LE9-NEXT: stdu 1, -32(1)
2041 ; PC64LE9-NEXT: std 0, 48(1)
2042 ; PC64LE9-NEXT: .cfi_def_cfa_offset 32
2043 ; PC64LE9-NEXT: .cfi_offset lr, 16
2044 ; PC64LE9-NEXT: bl __fixunstfsi
2046 ; PC64LE9-NEXT: addi 1, 1, 32
2047 ; PC64LE9-NEXT: ld 0, 16(1)
2048 ; PC64LE9-NEXT: mtlr 0
2051 ; PC64-LABEL: ppcq_to_u1:
2052 ; PC64: # %bb.0: # %entry
2054 ; PC64-NEXT: stdu 1, -112(1)
2055 ; PC64-NEXT: std 0, 128(1)
2056 ; PC64-NEXT: .cfi_def_cfa_offset 112
2057 ; PC64-NEXT: .cfi_offset lr, 16
2058 ; PC64-NEXT: bl __fixunstfsi
2060 ; PC64-NEXT: addi 1, 1, 112
2061 ; PC64-NEXT: ld 0, 16(1)
2065 %conv = tail call i1 @llvm.experimental.constrained.fptoui.ppcf128.i1(ppc_fp128 %a, metadata !"fpexcept.strict") #1
2069 define ppc_fp128 @test_tan_ppc_fp128(ppc_fp128 %first) #0 {
2070 ; PC64LE-LABEL: test_tan_ppc_fp128:
2071 ; PC64LE: # %bb.0: # %entry
2072 ; PC64LE-NEXT: mflr 0
2073 ; PC64LE-NEXT: stdu 1, -32(1)
2074 ; PC64LE-NEXT: std 0, 48(1)
2075 ; PC64LE-NEXT: bl tanl
2077 ; PC64LE-NEXT: addi 1, 1, 32
2078 ; PC64LE-NEXT: ld 0, 16(1)
2079 ; PC64LE-NEXT: mtlr 0
2082 ; PC64LE9-LABEL: test_tan_ppc_fp128:
2083 ; PC64LE9: # %bb.0: # %entry
2084 ; PC64LE9-NEXT: mflr 0
2085 ; PC64LE9-NEXT: stdu 1, -32(1)
2086 ; PC64LE9-NEXT: std 0, 48(1)
2087 ; PC64LE9-NEXT: bl tanl
2089 ; PC64LE9-NEXT: addi 1, 1, 32
2090 ; PC64LE9-NEXT: ld 0, 16(1)
2091 ; PC64LE9-NEXT: mtlr 0
2094 ; PC64-LABEL: test_tan_ppc_fp128:
2095 ; PC64: # %bb.0: # %entry
2097 ; PC64-NEXT: stdu 1, -112(1)
2098 ; PC64-NEXT: std 0, 128(1)
2099 ; PC64-NEXT: bl tanl
2101 ; PC64-NEXT: addi 1, 1, 112
2102 ; PC64-NEXT: ld 0, 16(1)
2106 %tan = call ppc_fp128 @llvm.experimental.constrained.tan.ppcf128(
2108 metadata !"round.dynamic",
2109 metadata !"fpexcept.strict") #1
2113 attributes #0 = { nounwind strictfp }
2114 attributes #1 = { strictfp }
2116 declare ppc_fp128 @llvm.experimental.constrained.fadd.ppcf128(ppc_fp128, ppc_fp128, metadata, metadata)
2117 declare ppc_fp128 @llvm.experimental.constrained.ceil.ppcf128(ppc_fp128, metadata)
2118 declare ppc_fp128 @llvm.experimental.constrained.cos.ppcf128(ppc_fp128, metadata, metadata)
2119 declare ppc_fp128 @llvm.experimental.constrained.fdiv.ppcf128(ppc_fp128, ppc_fp128, metadata, metadata)
2120 declare ppc_fp128 @llvm.experimental.constrained.exp.ppcf128(ppc_fp128, metadata, metadata)
2121 declare ppc_fp128 @llvm.experimental.constrained.exp2.ppcf128(ppc_fp128, metadata, metadata)
2122 declare ppc_fp128 @llvm.experimental.constrained.floor.ppcf128(ppc_fp128, metadata)
2123 declare ppc_fp128 @llvm.experimental.constrained.fma.ppcf128(ppc_fp128, ppc_fp128, ppc_fp128, metadata, metadata)
2124 declare ppc_fp128 @llvm.experimental.constrained.fpext.f32.ppcf128(float, metadata)
2125 declare ppc_fp128 @llvm.experimental.constrained.fpext.f64.ppcf128(double, metadata)
2126 declare float @llvm.experimental.constrained.fptrunc.ppcf128.f32(ppc_fp128, metadata, metadata)
2127 declare double @llvm.experimental.constrained.fptrunc.ppcf128.f64(ppc_fp128, metadata, metadata)
2128 declare ppc_fp128 @llvm.experimental.constrained.log.ppcf128(ppc_fp128, metadata, metadata)
2129 declare ppc_fp128 @llvm.experimental.constrained.log10.ppcf128(ppc_fp128, metadata, metadata)
2130 declare ppc_fp128 @llvm.experimental.constrained.log2.ppcf128(ppc_fp128, metadata, metadata)
2131 declare ppc_fp128 @llvm.experimental.constrained.maxnum.ppcf128(ppc_fp128, ppc_fp128, metadata)
2132 declare ppc_fp128 @llvm.experimental.constrained.minnum.ppcf128(ppc_fp128, ppc_fp128, metadata)
2133 declare ppc_fp128 @llvm.experimental.constrained.fmul.ppcf128(ppc_fp128, ppc_fp128, metadata, metadata)
2134 declare ppc_fp128 @llvm.experimental.constrained.nearbyint.ppcf128(ppc_fp128, metadata, metadata)
2135 declare ppc_fp128 @llvm.experimental.constrained.pow.ppcf128(ppc_fp128, ppc_fp128, metadata, metadata)
2136 declare ppc_fp128 @llvm.experimental.constrained.powi.ppcf128(ppc_fp128, i32, metadata, metadata)
2137 declare ppc_fp128 @llvm.experimental.constrained.frem.ppcf128(ppc_fp128, ppc_fp128, metadata, metadata)
2138 declare ppc_fp128 @llvm.experimental.constrained.rint.ppcf128(ppc_fp128, metadata, metadata)
2139 declare ppc_fp128 @llvm.experimental.constrained.round.ppcf128(ppc_fp128, metadata)
2140 declare ppc_fp128 @llvm.experimental.constrained.sin.ppcf128(ppc_fp128, metadata, metadata)
2141 declare ppc_fp128 @llvm.experimental.constrained.sqrt.ppcf128(ppc_fp128, metadata, metadata)
2142 declare ppc_fp128 @llvm.experimental.constrained.fsub.ppcf128(ppc_fp128, ppc_fp128, metadata, metadata)
2143 declare ppc_fp128 @llvm.experimental.constrained.tan.ppcf128(ppc_fp128, metadata, metadata)
2144 declare ppc_fp128 @llvm.experimental.constrained.trunc.ppcf128(ppc_fp128, metadata)
2145 declare i64 @llvm.experimental.constrained.fptosi.i64.ppcf128(ppc_fp128, metadata)
2146 declare i32 @llvm.experimental.constrained.fptosi.i32.ppcf128(ppc_fp128, metadata)
2147 declare i1 @llvm.experimental.constrained.fptosi.ppcf128.i1(ppc_fp128, metadata)
2148 declare i64 @llvm.experimental.constrained.fptoui.i64.ppcf128(ppc_fp128, metadata)
2149 declare i32 @llvm.experimental.constrained.fptoui.i32.ppcf128(ppc_fp128, metadata)
2150 declare i1 @llvm.experimental.constrained.fptoui.ppcf128.i1(ppc_fp128, metadata)
2151 declare ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i32(i32, metadata, metadata)
2152 declare ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i32(i32, metadata, metadata)
2153 declare ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i64(i64, metadata, metadata)
2154 declare ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i64(i64, metadata, metadata)
2155 declare ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i128(i128, metadata, metadata)
2156 declare ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i128(i128, metadata, metadata)