[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / PowerPC / ppcf128-constrained-fp-intrinsics.ll
blob033728500abc8cfbbff8ecd2e8125c3573fe55d7
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
9 ; PC64LE-NEXT:    mflr 0
10 ; PC64LE-NEXT:    stdu 1, -32(1)
11 ; PC64LE-NEXT:    std 0, 48(1)
12 ; PC64LE-NEXT:    bl __gcc_qadd
13 ; PC64LE-NEXT:    nop
14 ; PC64LE-NEXT:    addi 1, 1, 32
15 ; PC64LE-NEXT:    ld 0, 16(1)
16 ; PC64LE-NEXT:    mtlr 0
17 ; PC64LE-NEXT:    blr
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
25 ; PC64LE9-NEXT:    nop
26 ; PC64LE9-NEXT:    addi 1, 1, 32
27 ; PC64LE9-NEXT:    ld 0, 16(1)
28 ; PC64LE9-NEXT:    mtlr 0
29 ; PC64LE9-NEXT:    blr
31 ; PC64-LABEL: test_fadd_ppc_fp128:
32 ; PC64:       # %bb.0: # %entry
33 ; PC64-NEXT:    mflr 0
34 ; PC64-NEXT:    stdu 1, -112(1)
35 ; PC64-NEXT:    std 0, 128(1)
36 ; PC64-NEXT:    bl __gcc_qadd
37 ; PC64-NEXT:    nop
38 ; PC64-NEXT:    addi 1, 1, 112
39 ; PC64-NEXT:    ld 0, 16(1)
40 ; PC64-NEXT:    mtlr 0
41 ; PC64-NEXT:    blr
42 entry:
43   %add = call ppc_fp128 @llvm.experimental.constrained.fadd.ppcf128(
44                     ppc_fp128 %first,
45                     ppc_fp128 %second,
46                     metadata !"round.dynamic",
47                     metadata !"fpexcept.strict") #1
48   ret ppc_fp128 %add
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
54 ; PC64LE-NEXT:    mflr 0
55 ; PC64LE-NEXT:    stdu 1, -32(1)
56 ; PC64LE-NEXT:    std 0, 48(1)
57 ; PC64LE-NEXT:    bl __gcc_qsub
58 ; PC64LE-NEXT:    nop
59 ; PC64LE-NEXT:    addi 1, 1, 32
60 ; PC64LE-NEXT:    ld 0, 16(1)
61 ; PC64LE-NEXT:    mtlr 0
62 ; PC64LE-NEXT:    blr
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
70 ; PC64LE9-NEXT:    nop
71 ; PC64LE9-NEXT:    addi 1, 1, 32
72 ; PC64LE9-NEXT:    ld 0, 16(1)
73 ; PC64LE9-NEXT:    mtlr 0
74 ; PC64LE9-NEXT:    blr
76 ; PC64-LABEL: test_fsub_ppc_fp128:
77 ; PC64:       # %bb.0: # %entry
78 ; PC64-NEXT:    mflr 0
79 ; PC64-NEXT:    stdu 1, -112(1)
80 ; PC64-NEXT:    std 0, 128(1)
81 ; PC64-NEXT:    bl __gcc_qsub
82 ; PC64-NEXT:    nop
83 ; PC64-NEXT:    addi 1, 1, 112
84 ; PC64-NEXT:    ld 0, 16(1)
85 ; PC64-NEXT:    mtlr 0
86 ; PC64-NEXT:    blr
87 entry:
88   %sub = call ppc_fp128 @llvm.experimental.constrained.fsub.ppcf128(
89                     ppc_fp128 %first,
90                     ppc_fp128 %second,
91                     metadata !"round.dynamic",
92                     metadata !"fpexcept.strict") #1
93   ret ppc_fp128 %sub
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
99 ; PC64LE-NEXT:    mflr 0
100 ; PC64LE-NEXT:    stdu 1, -32(1)
101 ; PC64LE-NEXT:    std 0, 48(1)
102 ; PC64LE-NEXT:    bl __gcc_qmul
103 ; PC64LE-NEXT:    nop
104 ; PC64LE-NEXT:    addi 1, 1, 32
105 ; PC64LE-NEXT:    ld 0, 16(1)
106 ; PC64LE-NEXT:    mtlr 0
107 ; PC64LE-NEXT:    blr
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
115 ; PC64LE9-NEXT:    nop
116 ; PC64LE9-NEXT:    addi 1, 1, 32
117 ; PC64LE9-NEXT:    ld 0, 16(1)
118 ; PC64LE9-NEXT:    mtlr 0
119 ; PC64LE9-NEXT:    blr
121 ; PC64-LABEL: test_fmul_ppc_fp128:
122 ; PC64:       # %bb.0: # %entry
123 ; PC64-NEXT:    mflr 0
124 ; PC64-NEXT:    stdu 1, -112(1)
125 ; PC64-NEXT:    std 0, 128(1)
126 ; PC64-NEXT:    bl __gcc_qmul
127 ; PC64-NEXT:    nop
128 ; PC64-NEXT:    addi 1, 1, 112
129 ; PC64-NEXT:    ld 0, 16(1)
130 ; PC64-NEXT:    mtlr 0
131 ; PC64-NEXT:    blr
132 entry:
133   %mul = call ppc_fp128 @llvm.experimental.constrained.fmul.ppcf128(
134                     ppc_fp128 %first,
135                     ppc_fp128 %second,
136                     metadata !"round.dynamic",
137                     metadata !"fpexcept.strict") #1
138   ret ppc_fp128 %mul
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
148 ; PC64LE-NEXT:    nop
149 ; PC64LE-NEXT:    addi 1, 1, 32
150 ; PC64LE-NEXT:    ld 0, 16(1)
151 ; PC64LE-NEXT:    mtlr 0
152 ; PC64LE-NEXT:    blr
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
160 ; PC64LE9-NEXT:    nop
161 ; PC64LE9-NEXT:    addi 1, 1, 32
162 ; PC64LE9-NEXT:    ld 0, 16(1)
163 ; PC64LE9-NEXT:    mtlr 0
164 ; PC64LE9-NEXT:    blr
166 ; PC64-LABEL: test_fdiv_ppc_fp128:
167 ; PC64:       # %bb.0: # %entry
168 ; PC64-NEXT:    mflr 0
169 ; PC64-NEXT:    stdu 1, -112(1)
170 ; PC64-NEXT:    std 0, 128(1)
171 ; PC64-NEXT:    bl __gcc_qdiv
172 ; PC64-NEXT:    nop
173 ; PC64-NEXT:    addi 1, 1, 112
174 ; PC64-NEXT:    ld 0, 16(1)
175 ; PC64-NEXT:    mtlr 0
176 ; PC64-NEXT:    blr
177 entry:
178   %div = call ppc_fp128 @llvm.experimental.constrained.fdiv.ppcf128(
179                     ppc_fp128 %first,
180                     ppc_fp128 %second,
181                     metadata !"round.dynamic",
182                     metadata !"fpexcept.strict") #1
183   ret ppc_fp128 %div
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
193 ; PC64LE-NEXT:    nop
194 ; PC64LE-NEXT:    addi 1, 1, 32
195 ; PC64LE-NEXT:    ld 0, 16(1)
196 ; PC64LE-NEXT:    mtlr 0
197 ; PC64LE-NEXT:    blr
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
205 ; PC64LE9-NEXT:    nop
206 ; PC64LE9-NEXT:    addi 1, 1, 32
207 ; PC64LE9-NEXT:    ld 0, 16(1)
208 ; PC64LE9-NEXT:    mtlr 0
209 ; PC64LE9-NEXT:    blr
211 ; PC64-LABEL: test_frem_ppc_fp128:
212 ; PC64:       # %bb.0: # %entry
213 ; PC64-NEXT:    mflr 0
214 ; PC64-NEXT:    stdu 1, -112(1)
215 ; PC64-NEXT:    std 0, 128(1)
216 ; PC64-NEXT:    bl fmodl
217 ; PC64-NEXT:    nop
218 ; PC64-NEXT:    addi 1, 1, 112
219 ; PC64-NEXT:    ld 0, 16(1)
220 ; PC64-NEXT:    mtlr 0
221 ; PC64-NEXT:    blr
222 entry:
223   %rem = call ppc_fp128 @llvm.experimental.constrained.frem.ppcf128(
224                     ppc_fp128 %first,
225                     ppc_fp128 %second,
226                     metadata !"round.dynamic",
227                     metadata !"fpexcept.strict") #1
228   ret ppc_fp128 %rem
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
238 ; PC64LE-NEXT:    nop
239 ; PC64LE-NEXT:    addi 1, 1, 32
240 ; PC64LE-NEXT:    ld 0, 16(1)
241 ; PC64LE-NEXT:    mtlr 0
242 ; PC64LE-NEXT:    blr
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
250 ; PC64LE9-NEXT:    nop
251 ; PC64LE9-NEXT:    addi 1, 1, 32
252 ; PC64LE9-NEXT:    ld 0, 16(1)
253 ; PC64LE9-NEXT:    mtlr 0
254 ; PC64LE9-NEXT:    blr
256 ; PC64-LABEL: test_fma_ppc_fp128:
257 ; PC64:       # %bb.0: # %entry
258 ; PC64-NEXT:    mflr 0
259 ; PC64-NEXT:    stdu 1, -112(1)
260 ; PC64-NEXT:    std 0, 128(1)
261 ; PC64-NEXT:    bl fmal
262 ; PC64-NEXT:    nop
263 ; PC64-NEXT:    addi 1, 1, 112
264 ; PC64-NEXT:    ld 0, 16(1)
265 ; PC64-NEXT:    mtlr 0
266 ; PC64-NEXT:    blr
267 entry:
268   %add = call ppc_fp128 @llvm.experimental.constrained.fma.ppcf128(
269                     ppc_fp128 %first,
270                     ppc_fp128 %second,
271                     ppc_fp128 %third,
272                     metadata !"round.dynamic",
273                     metadata !"fpexcept.strict") #1
274   ret ppc_fp128 %add
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
284 ; PC64LE-NEXT:    nop
285 ; PC64LE-NEXT:    addi 1, 1, 32
286 ; PC64LE-NEXT:    ld 0, 16(1)
287 ; PC64LE-NEXT:    mtlr 0
288 ; PC64LE-NEXT:    blr
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
296 ; PC64LE9-NEXT:    nop
297 ; PC64LE9-NEXT:    addi 1, 1, 32
298 ; PC64LE9-NEXT:    ld 0, 16(1)
299 ; PC64LE9-NEXT:    mtlr 0
300 ; PC64LE9-NEXT:    blr
302 ; PC64-LABEL: test_sqrt_ppc_fp128:
303 ; PC64:       # %bb.0: # %entry
304 ; PC64-NEXT:    mflr 0
305 ; PC64-NEXT:    stdu 1, -112(1)
306 ; PC64-NEXT:    std 0, 128(1)
307 ; PC64-NEXT:    bl sqrtl
308 ; PC64-NEXT:    nop
309 ; PC64-NEXT:    addi 1, 1, 112
310 ; PC64-NEXT:    ld 0, 16(1)
311 ; PC64-NEXT:    mtlr 0
312 ; PC64-NEXT:    blr
313 entry:
314   %sqrt = call ppc_fp128 @llvm.experimental.constrained.sqrt.ppcf128(
315                     ppc_fp128 %first,
316                     metadata !"round.dynamic",
317                     metadata !"fpexcept.strict") #1
318   ret ppc_fp128 %sqrt
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
328 ; PC64LE-NEXT:    nop
329 ; PC64LE-NEXT:    addi 1, 1, 32
330 ; PC64LE-NEXT:    ld 0, 16(1)
331 ; PC64LE-NEXT:    mtlr 0
332 ; PC64LE-NEXT:    blr
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
340 ; PC64LE9-NEXT:    nop
341 ; PC64LE9-NEXT:    addi 1, 1, 32
342 ; PC64LE9-NEXT:    ld 0, 16(1)
343 ; PC64LE9-NEXT:    mtlr 0
344 ; PC64LE9-NEXT:    blr
346 ; PC64-LABEL: test_pow_ppc_fp128:
347 ; PC64:       # %bb.0: # %entry
348 ; PC64-NEXT:    mflr 0
349 ; PC64-NEXT:    stdu 1, -112(1)
350 ; PC64-NEXT:    std 0, 128(1)
351 ; PC64-NEXT:    bl powl
352 ; PC64-NEXT:    nop
353 ; PC64-NEXT:    addi 1, 1, 112
354 ; PC64-NEXT:    ld 0, 16(1)
355 ; PC64-NEXT:    mtlr 0
356 ; PC64-NEXT:    blr
357 entry:
358   %pow = call ppc_fp128 @llvm.experimental.constrained.pow.ppcf128(
359                     ppc_fp128 %first,
360                     ppc_fp128 %second,
361                     metadata !"round.dynamic",
362                     metadata !"fpexcept.strict") #1
363   ret ppc_fp128 %pow
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
374 ; PC64LE-NEXT:    nop
375 ; PC64LE-NEXT:    addi 1, 1, 32
376 ; PC64LE-NEXT:    ld 0, 16(1)
377 ; PC64LE-NEXT:    mtlr 0
378 ; PC64LE-NEXT:    blr
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
387 ; PC64LE9-NEXT:    nop
388 ; PC64LE9-NEXT:    addi 1, 1, 32
389 ; PC64LE9-NEXT:    ld 0, 16(1)
390 ; PC64LE9-NEXT:    mtlr 0
391 ; PC64LE9-NEXT:    blr
393 ; PC64-LABEL: test_powi_ppc_fp128:
394 ; PC64:       # %bb.0: # %entry
395 ; PC64-NEXT:    mflr 0
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
400 ; PC64-NEXT:    nop
401 ; PC64-NEXT:    addi 1, 1, 112
402 ; PC64-NEXT:    ld 0, 16(1)
403 ; PC64-NEXT:    mtlr 0
404 ; PC64-NEXT:    blr
405 entry:
406   %powi = call ppc_fp128 @llvm.experimental.constrained.powi.ppcf128(
407                     ppc_fp128 %first,
408                     i32 %second,
409                     metadata !"round.dynamic",
410                     metadata !"fpexcept.strict") #1
411   ret ppc_fp128 %powi
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
421 ; PC64LE-NEXT:    nop
422 ; PC64LE-NEXT:    addi 1, 1, 32
423 ; PC64LE-NEXT:    ld 0, 16(1)
424 ; PC64LE-NEXT:    mtlr 0
425 ; PC64LE-NEXT:    blr
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
433 ; PC64LE9-NEXT:    nop
434 ; PC64LE9-NEXT:    addi 1, 1, 32
435 ; PC64LE9-NEXT:    ld 0, 16(1)
436 ; PC64LE9-NEXT:    mtlr 0
437 ; PC64LE9-NEXT:    blr
439 ; PC64-LABEL: test_sin_ppc_fp128:
440 ; PC64:       # %bb.0: # %entry
441 ; PC64-NEXT:    mflr 0
442 ; PC64-NEXT:    stdu 1, -112(1)
443 ; PC64-NEXT:    std 0, 128(1)
444 ; PC64-NEXT:    bl sinl
445 ; PC64-NEXT:    nop
446 ; PC64-NEXT:    addi 1, 1, 112
447 ; PC64-NEXT:    ld 0, 16(1)
448 ; PC64-NEXT:    mtlr 0
449 ; PC64-NEXT:    blr
450 entry:
451   %sin = call ppc_fp128 @llvm.experimental.constrained.sin.ppcf128(
452                     ppc_fp128 %first,
453                     metadata !"round.dynamic",
454                     metadata !"fpexcept.strict") #1
455   ret ppc_fp128 %sin
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
465 ; PC64LE-NEXT:    nop
466 ; PC64LE-NEXT:    addi 1, 1, 32
467 ; PC64LE-NEXT:    ld 0, 16(1)
468 ; PC64LE-NEXT:    mtlr 0
469 ; PC64LE-NEXT:    blr
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
477 ; PC64LE9-NEXT:    nop
478 ; PC64LE9-NEXT:    addi 1, 1, 32
479 ; PC64LE9-NEXT:    ld 0, 16(1)
480 ; PC64LE9-NEXT:    mtlr 0
481 ; PC64LE9-NEXT:    blr
483 ; PC64-LABEL: test_cos_ppc_fp128:
484 ; PC64:       # %bb.0: # %entry
485 ; PC64-NEXT:    mflr 0
486 ; PC64-NEXT:    stdu 1, -112(1)
487 ; PC64-NEXT:    std 0, 128(1)
488 ; PC64-NEXT:    bl cosl
489 ; PC64-NEXT:    nop
490 ; PC64-NEXT:    addi 1, 1, 112
491 ; PC64-NEXT:    ld 0, 16(1)
492 ; PC64-NEXT:    mtlr 0
493 ; PC64-NEXT:    blr
494 entry:
495   %cos = call ppc_fp128 @llvm.experimental.constrained.cos.ppcf128(
496                     ppc_fp128 %first,
497                     metadata !"round.dynamic",
498                     metadata !"fpexcept.strict") #1
499   ret ppc_fp128 %cos
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
509 ; PC64LE-NEXT:    nop
510 ; PC64LE-NEXT:    addi 1, 1, 32
511 ; PC64LE-NEXT:    ld 0, 16(1)
512 ; PC64LE-NEXT:    mtlr 0
513 ; PC64LE-NEXT:    blr
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
521 ; PC64LE9-NEXT:    nop
522 ; PC64LE9-NEXT:    addi 1, 1, 32
523 ; PC64LE9-NEXT:    ld 0, 16(1)
524 ; PC64LE9-NEXT:    mtlr 0
525 ; PC64LE9-NEXT:    blr
527 ; PC64-LABEL: test_exp_ppc_fp128:
528 ; PC64:       # %bb.0: # %entry
529 ; PC64-NEXT:    mflr 0
530 ; PC64-NEXT:    stdu 1, -112(1)
531 ; PC64-NEXT:    std 0, 128(1)
532 ; PC64-NEXT:    bl expl
533 ; PC64-NEXT:    nop
534 ; PC64-NEXT:    addi 1, 1, 112
535 ; PC64-NEXT:    ld 0, 16(1)
536 ; PC64-NEXT:    mtlr 0
537 ; PC64-NEXT:    blr
538 entry:
539   %exp = call ppc_fp128 @llvm.experimental.constrained.exp.ppcf128(
540                     ppc_fp128 %first,
541                     metadata !"round.dynamic",
542                     metadata !"fpexcept.strict") #1
543   ret ppc_fp128 %exp
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
553 ; PC64LE-NEXT:    nop
554 ; PC64LE-NEXT:    addi 1, 1, 32
555 ; PC64LE-NEXT:    ld 0, 16(1)
556 ; PC64LE-NEXT:    mtlr 0
557 ; PC64LE-NEXT:    blr
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
565 ; PC64LE9-NEXT:    nop
566 ; PC64LE9-NEXT:    addi 1, 1, 32
567 ; PC64LE9-NEXT:    ld 0, 16(1)
568 ; PC64LE9-NEXT:    mtlr 0
569 ; PC64LE9-NEXT:    blr
571 ; PC64-LABEL: test_exp2_ppc_fp128:
572 ; PC64:       # %bb.0: # %entry
573 ; PC64-NEXT:    mflr 0
574 ; PC64-NEXT:    stdu 1, -112(1)
575 ; PC64-NEXT:    std 0, 128(1)
576 ; PC64-NEXT:    bl exp2l
577 ; PC64-NEXT:    nop
578 ; PC64-NEXT:    addi 1, 1, 112
579 ; PC64-NEXT:    ld 0, 16(1)
580 ; PC64-NEXT:    mtlr 0
581 ; PC64-NEXT:    blr
582 entry:
583   %exp2 = call ppc_fp128 @llvm.experimental.constrained.exp2.ppcf128(
584                     ppc_fp128 %first,
585                     metadata !"round.dynamic",
586                     metadata !"fpexcept.strict") #1
587   ret ppc_fp128 %exp2
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
597 ; PC64LE-NEXT:    nop
598 ; PC64LE-NEXT:    addi 1, 1, 32
599 ; PC64LE-NEXT:    ld 0, 16(1)
600 ; PC64LE-NEXT:    mtlr 0
601 ; PC64LE-NEXT:    blr
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
609 ; PC64LE9-NEXT:    nop
610 ; PC64LE9-NEXT:    addi 1, 1, 32
611 ; PC64LE9-NEXT:    ld 0, 16(1)
612 ; PC64LE9-NEXT:    mtlr 0
613 ; PC64LE9-NEXT:    blr
615 ; PC64-LABEL: test_log_ppc_fp128:
616 ; PC64:       # %bb.0: # %entry
617 ; PC64-NEXT:    mflr 0
618 ; PC64-NEXT:    stdu 1, -112(1)
619 ; PC64-NEXT:    std 0, 128(1)
620 ; PC64-NEXT:    bl logl
621 ; PC64-NEXT:    nop
622 ; PC64-NEXT:    addi 1, 1, 112
623 ; PC64-NEXT:    ld 0, 16(1)
624 ; PC64-NEXT:    mtlr 0
625 ; PC64-NEXT:    blr
626 entry:
627   %log = call ppc_fp128 @llvm.experimental.constrained.log.ppcf128(
628                     ppc_fp128 %first,
629                     metadata !"round.dynamic",
630                     metadata !"fpexcept.strict") #1
631   ret ppc_fp128 %log
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
641 ; PC64LE-NEXT:    nop
642 ; PC64LE-NEXT:    addi 1, 1, 32
643 ; PC64LE-NEXT:    ld 0, 16(1)
644 ; PC64LE-NEXT:    mtlr 0
645 ; PC64LE-NEXT:    blr
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
653 ; PC64LE9-NEXT:    nop
654 ; PC64LE9-NEXT:    addi 1, 1, 32
655 ; PC64LE9-NEXT:    ld 0, 16(1)
656 ; PC64LE9-NEXT:    mtlr 0
657 ; PC64LE9-NEXT:    blr
659 ; PC64-LABEL: test_log2_ppc_fp128:
660 ; PC64:       # %bb.0: # %entry
661 ; PC64-NEXT:    mflr 0
662 ; PC64-NEXT:    stdu 1, -112(1)
663 ; PC64-NEXT:    std 0, 128(1)
664 ; PC64-NEXT:    bl log2l
665 ; PC64-NEXT:    nop
666 ; PC64-NEXT:    addi 1, 1, 112
667 ; PC64-NEXT:    ld 0, 16(1)
668 ; PC64-NEXT:    mtlr 0
669 ; PC64-NEXT:    blr
670 entry:
671   %log2 = call ppc_fp128 @llvm.experimental.constrained.log2.ppcf128(
672                     ppc_fp128 %first,
673                     metadata !"round.dynamic",
674                     metadata !"fpexcept.strict") #1
675   ret ppc_fp128 %log2
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
685 ; PC64LE-NEXT:    nop
686 ; PC64LE-NEXT:    addi 1, 1, 32
687 ; PC64LE-NEXT:    ld 0, 16(1)
688 ; PC64LE-NEXT:    mtlr 0
689 ; PC64LE-NEXT:    blr
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
697 ; PC64LE9-NEXT:    nop
698 ; PC64LE9-NEXT:    addi 1, 1, 32
699 ; PC64LE9-NEXT:    ld 0, 16(1)
700 ; PC64LE9-NEXT:    mtlr 0
701 ; PC64LE9-NEXT:    blr
703 ; PC64-LABEL: test_log10_ppc_fp128:
704 ; PC64:       # %bb.0: # %entry
705 ; PC64-NEXT:    mflr 0
706 ; PC64-NEXT:    stdu 1, -112(1)
707 ; PC64-NEXT:    std 0, 128(1)
708 ; PC64-NEXT:    bl log10l
709 ; PC64-NEXT:    nop
710 ; PC64-NEXT:    addi 1, 1, 112
711 ; PC64-NEXT:    ld 0, 16(1)
712 ; PC64-NEXT:    mtlr 0
713 ; PC64-NEXT:    blr
714 entry:
715   %log10 = call ppc_fp128 @llvm.experimental.constrained.log10.ppcf128(
716                     ppc_fp128 %first,
717                     metadata !"round.dynamic",
718                     metadata !"fpexcept.strict") #1
719   ret ppc_fp128 %log10
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
729 ; PC64LE-NEXT:    nop
730 ; PC64LE-NEXT:    addi 1, 1, 32
731 ; PC64LE-NEXT:    ld 0, 16(1)
732 ; PC64LE-NEXT:    mtlr 0
733 ; PC64LE-NEXT:    blr
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
741 ; PC64LE9-NEXT:    nop
742 ; PC64LE9-NEXT:    addi 1, 1, 32
743 ; PC64LE9-NEXT:    ld 0, 16(1)
744 ; PC64LE9-NEXT:    mtlr 0
745 ; PC64LE9-NEXT:    blr
747 ; PC64-LABEL: test_rint_ppc_fp128:
748 ; PC64:       # %bb.0: # %entry
749 ; PC64-NEXT:    mflr 0
750 ; PC64-NEXT:    stdu 1, -112(1)
751 ; PC64-NEXT:    std 0, 128(1)
752 ; PC64-NEXT:    bl rintl
753 ; PC64-NEXT:    nop
754 ; PC64-NEXT:    addi 1, 1, 112
755 ; PC64-NEXT:    ld 0, 16(1)
756 ; PC64-NEXT:    mtlr 0
757 ; PC64-NEXT:    blr
758 entry:
759   %rint = call ppc_fp128 @llvm.experimental.constrained.rint.ppcf128(
760                     ppc_fp128 %first,
761                     metadata !"round.dynamic",
762                     metadata !"fpexcept.strict") #1
763   ret ppc_fp128 %rint
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
773 ; PC64LE-NEXT:    nop
774 ; PC64LE-NEXT:    addi 1, 1, 32
775 ; PC64LE-NEXT:    ld 0, 16(1)
776 ; PC64LE-NEXT:    mtlr 0
777 ; PC64LE-NEXT:    blr
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
785 ; PC64LE9-NEXT:    nop
786 ; PC64LE9-NEXT:    addi 1, 1, 32
787 ; PC64LE9-NEXT:    ld 0, 16(1)
788 ; PC64LE9-NEXT:    mtlr 0
789 ; PC64LE9-NEXT:    blr
791 ; PC64-LABEL: test_nearbyint_ppc_fp128:
792 ; PC64:       # %bb.0: # %entry
793 ; PC64-NEXT:    mflr 0
794 ; PC64-NEXT:    stdu 1, -112(1)
795 ; PC64-NEXT:    std 0, 128(1)
796 ; PC64-NEXT:    bl nearbyintl
797 ; PC64-NEXT:    nop
798 ; PC64-NEXT:    addi 1, 1, 112
799 ; PC64-NEXT:    ld 0, 16(1)
800 ; PC64-NEXT:    mtlr 0
801 ; PC64-NEXT:    blr
802 entry:
803   %nearbyint = call ppc_fp128 @llvm.experimental.constrained.nearbyint.ppcf128(
804                     ppc_fp128 %first,
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
817 ; PC64LE-NEXT:    nop
818 ; PC64LE-NEXT:    addi 1, 1, 32
819 ; PC64LE-NEXT:    ld 0, 16(1)
820 ; PC64LE-NEXT:    mtlr 0
821 ; PC64LE-NEXT:    blr
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
829 ; PC64LE9-NEXT:    nop
830 ; PC64LE9-NEXT:    addi 1, 1, 32
831 ; PC64LE9-NEXT:    ld 0, 16(1)
832 ; PC64LE9-NEXT:    mtlr 0
833 ; PC64LE9-NEXT:    blr
835 ; PC64-LABEL: test_maxnum_ppc_fp128:
836 ; PC64:       # %bb.0: # %entry
837 ; PC64-NEXT:    mflr 0
838 ; PC64-NEXT:    stdu 1, -112(1)
839 ; PC64-NEXT:    std 0, 128(1)
840 ; PC64-NEXT:    bl fmaxl
841 ; PC64-NEXT:    nop
842 ; PC64-NEXT:    addi 1, 1, 112
843 ; PC64-NEXT:    ld 0, 16(1)
844 ; PC64-NEXT:    mtlr 0
845 ; PC64-NEXT:    blr
846 entry:
847   %maxnum = call ppc_fp128 @llvm.experimental.constrained.maxnum.ppcf128(
848                     ppc_fp128 %first,
849                     ppc_fp128 %second,
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
861 ; PC64LE-NEXT:    nop
862 ; PC64LE-NEXT:    addi 1, 1, 32
863 ; PC64LE-NEXT:    ld 0, 16(1)
864 ; PC64LE-NEXT:    mtlr 0
865 ; PC64LE-NEXT:    blr
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
873 ; PC64LE9-NEXT:    nop
874 ; PC64LE9-NEXT:    addi 1, 1, 32
875 ; PC64LE9-NEXT:    ld 0, 16(1)
876 ; PC64LE9-NEXT:    mtlr 0
877 ; PC64LE9-NEXT:    blr
879 ; PC64-LABEL: test_minnum_ppc_fp128:
880 ; PC64:       # %bb.0: # %entry
881 ; PC64-NEXT:    mflr 0
882 ; PC64-NEXT:    stdu 1, -112(1)
883 ; PC64-NEXT:    std 0, 128(1)
884 ; PC64-NEXT:    bl fminl
885 ; PC64-NEXT:    nop
886 ; PC64-NEXT:    addi 1, 1, 112
887 ; PC64-NEXT:    ld 0, 16(1)
888 ; PC64-NEXT:    mtlr 0
889 ; PC64-NEXT:    blr
890 entry:
891   %minnum = call ppc_fp128 @llvm.experimental.constrained.minnum.ppcf128(
892                     ppc_fp128 %first,
893                     ppc_fp128 %second,
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
905 ; PC64LE-NEXT:    nop
906 ; PC64LE-NEXT:    addi 1, 1, 32
907 ; PC64LE-NEXT:    ld 0, 16(1)
908 ; PC64LE-NEXT:    mtlr 0
909 ; PC64LE-NEXT:    blr
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
917 ; PC64LE9-NEXT:    nop
918 ; PC64LE9-NEXT:    addi 1, 1, 32
919 ; PC64LE9-NEXT:    ld 0, 16(1)
920 ; PC64LE9-NEXT:    mtlr 0
921 ; PC64LE9-NEXT:    blr
923 ; PC64-LABEL: test_ceil_ppc_fp128:
924 ; PC64:       # %bb.0: # %entry
925 ; PC64-NEXT:    mflr 0
926 ; PC64-NEXT:    stdu 1, -112(1)
927 ; PC64-NEXT:    std 0, 128(1)
928 ; PC64-NEXT:    bl ceill
929 ; PC64-NEXT:    nop
930 ; PC64-NEXT:    addi 1, 1, 112
931 ; PC64-NEXT:    ld 0, 16(1)
932 ; PC64-NEXT:    mtlr 0
933 ; PC64-NEXT:    blr
934 entry:
935   %ceil = call ppc_fp128 @llvm.experimental.constrained.ceil.ppcf128(
936                     ppc_fp128 %first,
937                     metadata !"fpexcept.strict") #1
938   ret ppc_fp128 %ceil
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
948 ; PC64LE-NEXT:    nop
949 ; PC64LE-NEXT:    addi 1, 1, 32
950 ; PC64LE-NEXT:    ld 0, 16(1)
951 ; PC64LE-NEXT:    mtlr 0
952 ; PC64LE-NEXT:    blr
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
960 ; PC64LE9-NEXT:    nop
961 ; PC64LE9-NEXT:    addi 1, 1, 32
962 ; PC64LE9-NEXT:    ld 0, 16(1)
963 ; PC64LE9-NEXT:    mtlr 0
964 ; PC64LE9-NEXT:    blr
966 ; PC64-LABEL: test_floor_ppc_fp128:
967 ; PC64:       # %bb.0: # %entry
968 ; PC64-NEXT:    mflr 0
969 ; PC64-NEXT:    stdu 1, -112(1)
970 ; PC64-NEXT:    std 0, 128(1)
971 ; PC64-NEXT:    bl floorl
972 ; PC64-NEXT:    nop
973 ; PC64-NEXT:    addi 1, 1, 112
974 ; PC64-NEXT:    ld 0, 16(1)
975 ; PC64-NEXT:    mtlr 0
976 ; PC64-NEXT:    blr
977 entry:
978   %floor = call ppc_fp128 @llvm.experimental.constrained.floor.ppcf128(
979                     ppc_fp128 %first,
980                     metadata !"fpexcept.strict") #1
981   ret ppc_fp128 %floor
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
991 ; PC64LE-NEXT:    nop
992 ; PC64LE-NEXT:    addi 1, 1, 32
993 ; PC64LE-NEXT:    ld 0, 16(1)
994 ; PC64LE-NEXT:    mtlr 0
995 ; PC64LE-NEXT:    blr
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
1003 ; PC64LE9-NEXT:    nop
1004 ; PC64LE9-NEXT:    addi 1, 1, 32
1005 ; PC64LE9-NEXT:    ld 0, 16(1)
1006 ; PC64LE9-NEXT:    mtlr 0
1007 ; PC64LE9-NEXT:    blr
1009 ; PC64-LABEL: test_round_ppc_fp128:
1010 ; PC64:       # %bb.0: # %entry
1011 ; PC64-NEXT:    mflr 0
1012 ; PC64-NEXT:    stdu 1, -112(1)
1013 ; PC64-NEXT:    std 0, 128(1)
1014 ; PC64-NEXT:    bl roundl
1015 ; PC64-NEXT:    nop
1016 ; PC64-NEXT:    addi 1, 1, 112
1017 ; PC64-NEXT:    ld 0, 16(1)
1018 ; PC64-NEXT:    mtlr 0
1019 ; PC64-NEXT:    blr
1020 entry:
1021   %round = call ppc_fp128 @llvm.experimental.constrained.round.ppcf128(
1022                     ppc_fp128 %first,
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
1034 ; PC64LE-NEXT:    nop
1035 ; PC64LE-NEXT:    addi 1, 1, 32
1036 ; PC64LE-NEXT:    ld 0, 16(1)
1037 ; PC64LE-NEXT:    mtlr 0
1038 ; PC64LE-NEXT:    blr
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
1046 ; PC64LE9-NEXT:    nop
1047 ; PC64LE9-NEXT:    addi 1, 1, 32
1048 ; PC64LE9-NEXT:    ld 0, 16(1)
1049 ; PC64LE9-NEXT:    mtlr 0
1050 ; PC64LE9-NEXT:    blr
1052 ; PC64-LABEL: test_trunc_ppc_fp128:
1053 ; PC64:       # %bb.0: # %entry
1054 ; PC64-NEXT:    mflr 0
1055 ; PC64-NEXT:    stdu 1, -112(1)
1056 ; PC64-NEXT:    std 0, 128(1)
1057 ; PC64-NEXT:    bl truncl
1058 ; PC64-NEXT:    nop
1059 ; PC64-NEXT:    addi 1, 1, 112
1060 ; PC64-NEXT:    ld 0, 16(1)
1061 ; PC64-NEXT:    mtlr 0
1062 ; PC64-NEXT:    blr
1063 entry:
1064   %trunc = call ppc_fp128 @llvm.experimental.constrained.trunc.ppcf128(
1065                     ppc_fp128 %first,
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
1074 ; PC64LE-NEXT:    blr
1076 ; PC64LE9-LABEL: test_fptrunc_ppc_fp128_f32:
1077 ; PC64LE9:       # %bb.0: # %entry
1078 ; PC64LE9-NEXT:    xsrsp 1, 1
1079 ; PC64LE9-NEXT:    blr
1081 ; PC64-LABEL: test_fptrunc_ppc_fp128_f32:
1082 ; PC64:       # %bb.0: # %entry
1083 ; PC64-NEXT:    frsp 1, 1
1084 ; PC64-NEXT:    blr
1085 entry:
1086   %fptrunc = call float @llvm.experimental.constrained.fptrunc.ppcf128.f32(
1087                     ppc_fp128 %first,
1088                     metadata !"round.dynamic",
1089                     metadata !"fpexcept.strict") #1
1090   ret float %fptrunc
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
1096 ; PC64LE-NEXT:    blr
1098 ; PC64LE9-LABEL: test_fptrunc_ppc_fp128_f64:
1099 ; PC64LE9:       # %bb.0: # %entry
1100 ; PC64LE9-NEXT:    blr
1102 ; PC64-LABEL: test_fptrunc_ppc_fp128_f64:
1103 ; PC64:       # %bb.0: # %entry
1104 ; PC64-NEXT:    blr
1105 entry:
1106   %fptrunc = call double @llvm.experimental.constrained.fptrunc.ppcf128.f64(
1107                     ppc_fp128 %first,
1108                     metadata !"round.dynamic",
1109                     metadata !"fpexcept.strict") #1
1110   ret double %fptrunc
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
1117 ; PC64LE-NEXT:    blr
1119 ; PC64LE9-LABEL: test_fpext_ppc_fp128_f32:
1120 ; PC64LE9:       # %bb.0: # %entry
1121 ; PC64LE9-NEXT:    xxlxor 2, 2, 2
1122 ; PC64LE9-NEXT:    blr
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)
1128 ; PC64-NEXT:    blr
1129 entry:
1130   %fpext = call ppc_fp128 @llvm.experimental.constrained.fpext.f32.ppcf128(
1131                     float %first,
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
1140 ; PC64LE-NEXT:    blr
1142 ; PC64LE9-LABEL: test_fpext_ppc_fp128_f64:
1143 ; PC64LE9:       # %bb.0: # %entry
1144 ; PC64LE9-NEXT:    xxlxor 2, 2, 2
1145 ; PC64LE9-NEXT:    blr
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)
1151 ; PC64-NEXT:    blr
1152 entry:
1153   %fpext = call ppc_fp128 @llvm.experimental.constrained.fpext.f64.ppcf128(
1154                     double %first,
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
1166 ; PC64LE-NEXT:    nop
1167 ; PC64LE-NEXT:    addi 1, 1, 32
1168 ; PC64LE-NEXT:    ld 0, 16(1)
1169 ; PC64LE-NEXT:    mtlr 0
1170 ; PC64LE-NEXT:    blr
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
1178 ; PC64LE9-NEXT:    nop
1179 ; PC64LE9-NEXT:    addi 1, 1, 32
1180 ; PC64LE9-NEXT:    ld 0, 16(1)
1181 ; PC64LE9-NEXT:    mtlr 0
1182 ; PC64LE9-NEXT:    blr
1184 ; PC64-LABEL: test_fptosi_ppc_i64_ppc_fp128:
1185 ; PC64:       # %bb.0: # %entry
1186 ; PC64-NEXT:    mflr 0
1187 ; PC64-NEXT:    stdu 1, -112(1)
1188 ; PC64-NEXT:    std 0, 128(1)
1189 ; PC64-NEXT:    bl __fixtfdi
1190 ; PC64-NEXT:    nop
1191 ; PC64-NEXT:    addi 1, 1, 112
1192 ; PC64-NEXT:    ld 0, 16(1)
1193 ; PC64-NEXT:    mtlr 0
1194 ; PC64-NEXT:    blr
1195 entry:
1196   %fpext = call i64 @llvm.experimental.constrained.fptosi.i64.ppcf128(
1197                     ppc_fp128 %first,
1198                     metadata !"fpexcept.strict") #1
1199   ret i64 %fpext
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
1212 ; PC64LE-NEXT:    blr
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
1223 ; PC64LE9-NEXT:    blr
1225 ; PC64-LABEL: test_fptosi_ppc_i32_ppc_fp128:
1226 ; PC64:       # %bb.0: # %entry
1227 ; PC64-NEXT:    mffs 0
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)
1235 ; PC64-NEXT:    blr
1236 entry:
1237   %fpext = call i32 @llvm.experimental.constrained.fptosi.i32.ppcf128(
1238                     ppc_fp128  %first,
1239                     metadata !"fpexcept.strict") #1
1240   ret i32 %fpext
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
1250 ; PC64LE-NEXT:    nop
1251 ; PC64LE-NEXT:    addi 1, 1, 32
1252 ; PC64LE-NEXT:    ld 0, 16(1)
1253 ; PC64LE-NEXT:    mtlr 0
1254 ; PC64LE-NEXT:    blr
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
1262 ; PC64LE9-NEXT:    nop
1263 ; PC64LE9-NEXT:    addi 1, 1, 32
1264 ; PC64LE9-NEXT:    ld 0, 16(1)
1265 ; PC64LE9-NEXT:    mtlr 0
1266 ; PC64LE9-NEXT:    blr
1268 ; PC64-LABEL: test_fptoui_ppc_i64_ppc_fp128:
1269 ; PC64:       # %bb.0: # %entry
1270 ; PC64-NEXT:    mflr 0
1271 ; PC64-NEXT:    stdu 1, -112(1)
1272 ; PC64-NEXT:    std 0, 128(1)
1273 ; PC64-NEXT:    bl __fixunstfdi
1274 ; PC64-NEXT:    nop
1275 ; PC64-NEXT:    addi 1, 1, 112
1276 ; PC64-NEXT:    ld 0, 16(1)
1277 ; PC64-NEXT:    mtlr 0
1278 ; PC64-NEXT:    blr
1279 entry:
1280   %fpext = call i64 @llvm.experimental.constrained.fptoui.i64.ppcf128(
1281                     ppc_fp128   %first,
1282                     metadata !"fpexcept.strict") #1
1283   ret i64 %fpext
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
1309 ; PC64LE-NEXT:    nop
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
1322 ; PC64LE-NEXT:    blr
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
1346 ; PC64LE9-NEXT:    nop
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
1359 ; PC64LE9-NEXT:    blr
1361 ; PC64-LABEL: test_fptoui_ppc_i32_ppc_fp128:
1362 ; PC64:       # %bb.0: # %entry
1363 ; PC64-NEXT:    mfcr 12
1364 ; PC64-NEXT:    mflr 0
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
1383 ; PC64-NEXT:    nop
1384 ; PC64-NEXT:    mffs 0
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)
1402 ; PC64-NEXT:    mtlr 0
1403 ; PC64-NEXT:    mtcrf 32, 12 # cr2
1404 ; PC64-NEXT:    blr
1405 entry:
1406   %fpext = call i32 @llvm.experimental.constrained.fptoui.i32.ppcf128(
1407                     ppc_fp128   %first,
1408                     metadata !"fpexcept.strict") #1
1409   ret i32 %fpext
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:
1416 ; PC64LE:       # %bb.0:
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
1436 ; PC64LE-NEXT:    nop
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
1444 ; PC64LE-NEXT:    nop
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
1451 ; PC64LE-NEXT:    nop
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
1464 ; PC64LE-NEXT:    blr
1466 ; PC64LE9-LABEL: test_constrained_libcall_multichain:
1467 ; PC64LE9:       # %bb.0:
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
1487 ; PC64LE9-NEXT:    nop
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
1495 ; PC64LE9-NEXT:    nop
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
1502 ; PC64LE9-NEXT:    nop
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
1515 ; PC64LE9-NEXT:    blr
1517 ; PC64-LABEL: test_constrained_libcall_multichain:
1518 ; PC64:       # %bb.0:
1519 ; PC64-NEXT:    mflr 0
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
1541 ; PC64-NEXT:    nop
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
1549 ; PC64-NEXT:    nop
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
1556 ; PC64-NEXT:    nop
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)
1569 ; PC64-NEXT:    mtlr 0
1570 ; PC64-NEXT:    blr
1571   %load = load float, ptr %firstptr
1572   %first = call ppc_fp128 @llvm.experimental.constrained.fpext.f32.ppcf128(
1573                     float %load,
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(
1580                     ppc_fp128 %first,
1581                     ppc_fp128 %first,
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(
1587                     ppc_fp128 %fadd,
1588                     ppc_fp128 %fadd,
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(
1598                     ppc_fp128 %first,
1599                     i32 2,
1600                     metadata !"round.dynamic",
1601                     metadata !"fpexcept.strict") #1
1602   %tinypow = call float @llvm.experimental.constrained.fptrunc.ppcf128.f32(
1603                     ppc_fp128 %powi,
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
1609   ret void
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
1618 ; PC64LE-NEXT:    blr
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
1625 ; PC64LE9-NEXT:    blr
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
1634 ; PC64-NEXT:    blr
1635 entry:
1636   %conv = tail call ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i32(i32 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1637   ret ppc_fp128 %conv
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
1647 ; PC64LE-NEXT:    nop
1648 ; PC64LE-NEXT:    addi 1, 1, 32
1649 ; PC64LE-NEXT:    ld 0, 16(1)
1650 ; PC64LE-NEXT:    mtlr 0
1651 ; PC64LE-NEXT:    blr
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
1659 ; PC64LE9-NEXT:    nop
1660 ; PC64LE9-NEXT:    addi 1, 1, 32
1661 ; PC64LE9-NEXT:    ld 0, 16(1)
1662 ; PC64LE9-NEXT:    mtlr 0
1663 ; PC64LE9-NEXT:    blr
1665 ; PC64-LABEL: i64_to_ppcq:
1666 ; PC64:       # %bb.0: # %entry
1667 ; PC64-NEXT:    mflr 0
1668 ; PC64-NEXT:    stdu 1, -112(1)
1669 ; PC64-NEXT:    std 0, 128(1)
1670 ; PC64-NEXT:    bl __floatditf
1671 ; PC64-NEXT:    nop
1672 ; PC64-NEXT:    addi 1, 1, 112
1673 ; PC64-NEXT:    ld 0, 16(1)
1674 ; PC64-NEXT:    mtlr 0
1675 ; PC64-NEXT:    blr
1676 entry:
1677   %conv = tail call ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i64(i64 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1678   ret ppc_fp128 %conv
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
1687 ; PC64LE-NEXT:    blr
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
1694 ; PC64LE9-NEXT:    blr
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
1707 ; PC64-NEXT:    blr
1708 entry:
1709   %conv = tail call ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i32(i32 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1710   ret ppc_fp128 %conv
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
1724 ; PC64LE-NEXT:    nop
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
1731 ; PC64LE-NEXT:    nop
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
1747 ; PC64LE-NEXT:    blr
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
1759 ; PC64LE9-NEXT:    nop
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
1766 ; PC64LE9-NEXT:    nop
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
1782 ; PC64LE9-NEXT:    blr
1784 ; PC64-LABEL: u64_to_ppcq:
1785 ; PC64:       # %bb.0: # %entry
1786 ; PC64-NEXT:    mflr 0
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
1794 ; PC64-NEXT:    nop
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
1802 ; PC64-NEXT:    nop
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)
1817 ; PC64-NEXT:    mtlr 0
1818 ; PC64-NEXT:    blr
1819 entry:
1820   %conv = tail call ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i64(i64 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1821   ret ppc_fp128 %conv
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
1831 ; PC64LE-NEXT:    nop
1832 ; PC64LE-NEXT:    addi 1, 1, 32
1833 ; PC64LE-NEXT:    ld 0, 16(1)
1834 ; PC64LE-NEXT:    mtlr 0
1835 ; PC64LE-NEXT:    blr
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
1843 ; PC64LE9-NEXT:    nop
1844 ; PC64LE9-NEXT:    addi 1, 1, 32
1845 ; PC64LE9-NEXT:    ld 0, 16(1)
1846 ; PC64LE9-NEXT:    mtlr 0
1847 ; PC64LE9-NEXT:    blr
1849 ; PC64-LABEL: i128_to_ppcq:
1850 ; PC64:       # %bb.0: # %entry
1851 ; PC64-NEXT:    mflr 0
1852 ; PC64-NEXT:    stdu 1, -112(1)
1853 ; PC64-NEXT:    std 0, 128(1)
1854 ; PC64-NEXT:    bl __floattitf
1855 ; PC64-NEXT:    nop
1856 ; PC64-NEXT:    addi 1, 1, 112
1857 ; PC64-NEXT:    ld 0, 16(1)
1858 ; PC64-NEXT:    mtlr 0
1859 ; PC64-NEXT:    blr
1860 entry:
1861   %conv = tail call ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i128(i128 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1862   ret ppc_fp128 %conv
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
1876 ; PC64LE-NEXT:    nop
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
1883 ; PC64LE-NEXT:    nop
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
1899 ; PC64LE-NEXT:    blr
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
1911 ; PC64LE9-NEXT:    nop
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
1918 ; PC64LE9-NEXT:    nop
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
1934 ; PC64LE9-NEXT:    blr
1936 ; PC64-LABEL: u128_to_ppcq:
1937 ; PC64:       # %bb.0: # %entry
1938 ; PC64-NEXT:    mflr 0
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
1946 ; PC64-NEXT:    nop
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
1954 ; PC64-NEXT:    nop
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)
1969 ; PC64-NEXT:    mtlr 0
1970 ; PC64-NEXT:    blr
1971 entry:
1972   %conv = tail call ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i128(i128 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #1
1973   ret ppc_fp128 %conv
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
1985 ; PC64LE-NEXT:    nop
1986 ; PC64LE-NEXT:    addi 1, 1, 32
1987 ; PC64LE-NEXT:    ld 0, 16(1)
1988 ; PC64LE-NEXT:    mtlr 0
1989 ; PC64LE-NEXT:    blr
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
1999 ; PC64LE9-NEXT:    nop
2000 ; PC64LE9-NEXT:    addi 1, 1, 32
2001 ; PC64LE9-NEXT:    ld 0, 16(1)
2002 ; PC64LE9-NEXT:    mtlr 0
2003 ; PC64LE9-NEXT:    blr
2005 ; PC64-LABEL: ppcq_to_s1:
2006 ; PC64:       # %bb.0: # %entry
2007 ; PC64-NEXT:    mflr 0
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
2013 ; PC64-NEXT:    nop
2014 ; PC64-NEXT:    addi 1, 1, 112
2015 ; PC64-NEXT:    ld 0, 16(1)
2016 ; PC64-NEXT:    mtlr 0
2017 ; PC64-NEXT:    blr
2018 entry:
2019   %conv = tail call i1 @llvm.experimental.constrained.fptosi.ppcf128.i1(ppc_fp128 %a, metadata !"fpexcept.strict") #1
2020   ret i1 %conv
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
2032 ; PC64LE-NEXT:    nop
2033 ; PC64LE-NEXT:    addi 1, 1, 32
2034 ; PC64LE-NEXT:    ld 0, 16(1)
2035 ; PC64LE-NEXT:    mtlr 0
2036 ; PC64LE-NEXT:    blr
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
2046 ; PC64LE9-NEXT:    nop
2047 ; PC64LE9-NEXT:    addi 1, 1, 32
2048 ; PC64LE9-NEXT:    ld 0, 16(1)
2049 ; PC64LE9-NEXT:    mtlr 0
2050 ; PC64LE9-NEXT:    blr
2052 ; PC64-LABEL: ppcq_to_u1:
2053 ; PC64:       # %bb.0: # %entry
2054 ; PC64-NEXT:    mflr 0
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
2060 ; PC64-NEXT:    nop
2061 ; PC64-NEXT:    addi 1, 1, 112
2062 ; PC64-NEXT:    ld 0, 16(1)
2063 ; PC64-NEXT:    mtlr 0
2064 ; PC64-NEXT:    blr
2065 entry:
2066   %conv = tail call i1 @llvm.experimental.constrained.fptoui.ppcf128.i1(ppc_fp128 %a, metadata !"fpexcept.strict") #1
2067   ret i1 %conv
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)