[clang-tidy][modernize-use-starts-ends-with] Fix operator rewriting false negative...
[llvm-project.git] / llvm / test / CodeGen / PowerPC / vector-llrint.ll
blob190cf6fe1eaadc2e4cdc5ed9a8f8bfed85f7c28f
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mcpu=pwr7 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
3 ; RUN:   -mtriple=powerpc64-unknown-unknown -verify-machineinstrs < %s | \
4 ; RUN:   FileCheck %s --check-prefix=BE
5 ; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
6 ; RUN:   -mtriple=powerpc64le-unknown-unknown -verify-machineinstrs < %s | \
7 ; RUN:   FileCheck %s
8 ; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
9 ; RUN:   -mtriple=powerpc64le-unknown-unknown -verify-machineinstrs < %s \
10 ; RUN:   --enable-unsafe-fp-math | FileCheck %s --check-prefix=FAST
12 define <1 x i64> @llrint_v1i64_v1f16(<1 x half> %x) {
13 ; BE-LABEL: llrint_v1i64_v1f16:
14 ; BE:       # %bb.0:
15 ; BE-NEXT:    mflr r0
16 ; BE-NEXT:    stdu r1, -112(r1)
17 ; BE-NEXT:    std r0, 128(r1)
18 ; BE-NEXT:    .cfi_def_cfa_offset 112
19 ; BE-NEXT:    .cfi_offset lr, 16
20 ; BE-NEXT:    bl __gnu_f2h_ieee
21 ; BE-NEXT:    nop
22 ; BE-NEXT:    clrldi r3, r3, 48
23 ; BE-NEXT:    bl __gnu_h2f_ieee
24 ; BE-NEXT:    nop
25 ; BE-NEXT:    bl llrintf
26 ; BE-NEXT:    nop
27 ; BE-NEXT:    addi r1, r1, 112
28 ; BE-NEXT:    ld r0, 16(r1)
29 ; BE-NEXT:    mtlr r0
30 ; BE-NEXT:    blr
32 ; CHECK-LABEL: llrint_v1i64_v1f16:
33 ; CHECK:       # %bb.0:
34 ; CHECK-NEXT:    mflr r0
35 ; CHECK-NEXT:    stdu r1, -32(r1)
36 ; CHECK-NEXT:    std r0, 48(r1)
37 ; CHECK-NEXT:    .cfi_def_cfa_offset 32
38 ; CHECK-NEXT:    .cfi_offset lr, 16
39 ; CHECK-NEXT:    bl __gnu_f2h_ieee
40 ; CHECK-NEXT:    nop
41 ; CHECK-NEXT:    clrldi r3, r3, 48
42 ; CHECK-NEXT:    bl __gnu_h2f_ieee
43 ; CHECK-NEXT:    nop
44 ; CHECK-NEXT:    bl llrintf
45 ; CHECK-NEXT:    nop
46 ; CHECK-NEXT:    addi r1, r1, 32
47 ; CHECK-NEXT:    ld r0, 16(r1)
48 ; CHECK-NEXT:    mtlr r0
49 ; CHECK-NEXT:    blr
51 ; FAST-LABEL: llrint_v1i64_v1f16:
52 ; FAST:       # %bb.0:
53 ; FAST-NEXT:    mflr r0
54 ; FAST-NEXT:    stdu r1, -32(r1)
55 ; FAST-NEXT:    std r0, 48(r1)
56 ; FAST-NEXT:    .cfi_def_cfa_offset 32
57 ; FAST-NEXT:    .cfi_offset lr, 16
58 ; FAST-NEXT:    bl __gnu_f2h_ieee
59 ; FAST-NEXT:    nop
60 ; FAST-NEXT:    clrldi r3, r3, 48
61 ; FAST-NEXT:    bl __gnu_h2f_ieee
62 ; FAST-NEXT:    nop
63 ; FAST-NEXT:    fctid f0, f1
64 ; FAST-NEXT:    mffprd r3, f0
65 ; FAST-NEXT:    addi r1, r1, 32
66 ; FAST-NEXT:    ld r0, 16(r1)
67 ; FAST-NEXT:    mtlr r0
68 ; FAST-NEXT:    blr
69   %a = call <1 x i64> @llvm.llrint.v1i64.v1f16(<1 x half> %x)
70   ret <1 x i64> %a
72 declare <1 x i64> @llvm.llrint.v1i64.v1f16(<1 x half>)
74 define <2 x i64> @llrint_v1i64_v2f16(<2 x half> %x) {
75 ; BE-LABEL: llrint_v1i64_v2f16:
76 ; BE:       # %bb.0:
77 ; BE-NEXT:    mflr r0
78 ; BE-NEXT:    stdu r1, -160(r1)
79 ; BE-NEXT:    std r0, 176(r1)
80 ; BE-NEXT:    .cfi_def_cfa_offset 160
81 ; BE-NEXT:    .cfi_offset lr, 16
82 ; BE-NEXT:    .cfi_offset r30, -24
83 ; BE-NEXT:    .cfi_offset f31, -8
84 ; BE-NEXT:    stfd f31, 152(r1) # 8-byte Folded Spill
85 ; BE-NEXT:    fmr f31, f1
86 ; BE-NEXT:    fmr f1, f2
87 ; BE-NEXT:    std r30, 136(r1) # 8-byte Folded Spill
88 ; BE-NEXT:    bl __gnu_f2h_ieee
89 ; BE-NEXT:    nop
90 ; BE-NEXT:    fmr f1, f31
91 ; BE-NEXT:    mr r30, r3
92 ; BE-NEXT:    bl __gnu_f2h_ieee
93 ; BE-NEXT:    nop
94 ; BE-NEXT:    clrldi r3, r3, 48
95 ; BE-NEXT:    bl __gnu_h2f_ieee
96 ; BE-NEXT:    nop
97 ; BE-NEXT:    clrldi r3, r30, 48
98 ; BE-NEXT:    fmr f31, f1
99 ; BE-NEXT:    bl __gnu_h2f_ieee
100 ; BE-NEXT:    nop
101 ; BE-NEXT:    bl llrintf
102 ; BE-NEXT:    nop
103 ; BE-NEXT:    fmr f1, f31
104 ; BE-NEXT:    std r3, 120(r1)
105 ; BE-NEXT:    bl llrintf
106 ; BE-NEXT:    nop
107 ; BE-NEXT:    std r3, 112(r1)
108 ; BE-NEXT:    addi r3, r1, 112
109 ; BE-NEXT:    ld r30, 136(r1) # 8-byte Folded Reload
110 ; BE-NEXT:    lfd f31, 152(r1) # 8-byte Folded Reload
111 ; BE-NEXT:    lxvd2x v2, 0, r3
112 ; BE-NEXT:    addi r1, r1, 160
113 ; BE-NEXT:    ld r0, 16(r1)
114 ; BE-NEXT:    mtlr r0
115 ; BE-NEXT:    blr
117 ; CHECK-LABEL: llrint_v1i64_v2f16:
118 ; CHECK:       # %bb.0:
119 ; CHECK-NEXT:    mflr r0
120 ; CHECK-NEXT:    stdu r1, -96(r1)
121 ; CHECK-NEXT:    std r0, 112(r1)
122 ; CHECK-NEXT:    .cfi_def_cfa_offset 96
123 ; CHECK-NEXT:    .cfi_offset lr, 16
124 ; CHECK-NEXT:    .cfi_offset r30, -24
125 ; CHECK-NEXT:    .cfi_offset f31, -8
126 ; CHECK-NEXT:    .cfi_offset v31, -48
127 ; CHECK-NEXT:    li r3, 48
128 ; CHECK-NEXT:    std r30, 72(r1) # 8-byte Folded Spill
129 ; CHECK-NEXT:    stfd f31, 88(r1) # 8-byte Folded Spill
130 ; CHECK-NEXT:    fmr f31, f2
131 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
132 ; CHECK-NEXT:    bl __gnu_f2h_ieee
133 ; CHECK-NEXT:    nop
134 ; CHECK-NEXT:    fmr f1, f31
135 ; CHECK-NEXT:    mr r30, r3
136 ; CHECK-NEXT:    bl __gnu_f2h_ieee
137 ; CHECK-NEXT:    nop
138 ; CHECK-NEXT:    clrldi r3, r3, 48
139 ; CHECK-NEXT:    bl __gnu_h2f_ieee
140 ; CHECK-NEXT:    nop
141 ; CHECK-NEXT:    clrldi r3, r30, 48
142 ; CHECK-NEXT:    fmr f31, f1
143 ; CHECK-NEXT:    bl __gnu_h2f_ieee
144 ; CHECK-NEXT:    nop
145 ; CHECK-NEXT:    bl llrintf
146 ; CHECK-NEXT:    nop
147 ; CHECK-NEXT:    fmr f1, f31
148 ; CHECK-NEXT:    mtvsrd v31, r3
149 ; CHECK-NEXT:    bl llrintf
150 ; CHECK-NEXT:    nop
151 ; CHECK-NEXT:    mtfprd f0, r3
152 ; CHECK-NEXT:    li r3, 48
153 ; CHECK-NEXT:    lfd f31, 88(r1) # 8-byte Folded Reload
154 ; CHECK-NEXT:    ld r30, 72(r1) # 8-byte Folded Reload
155 ; CHECK-NEXT:    xxmrghd v2, vs0, v31
156 ; CHECK-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload
157 ; CHECK-NEXT:    addi r1, r1, 96
158 ; CHECK-NEXT:    ld r0, 16(r1)
159 ; CHECK-NEXT:    mtlr r0
160 ; CHECK-NEXT:    blr
162 ; FAST-LABEL: llrint_v1i64_v2f16:
163 ; FAST:       # %bb.0:
164 ; FAST-NEXT:    mflr r0
165 ; FAST-NEXT:    .cfi_def_cfa_offset 48
166 ; FAST-NEXT:    .cfi_offset lr, 16
167 ; FAST-NEXT:    .cfi_offset f30, -16
168 ; FAST-NEXT:    .cfi_offset f31, -8
169 ; FAST-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill
170 ; FAST-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill
171 ; FAST-NEXT:    stdu r1, -48(r1)
172 ; FAST-NEXT:    fmr f31, f1
173 ; FAST-NEXT:    fmr f1, f2
174 ; FAST-NEXT:    std r0, 64(r1)
175 ; FAST-NEXT:    bl __gnu_f2h_ieee
176 ; FAST-NEXT:    nop
177 ; FAST-NEXT:    clrldi r3, r3, 48
178 ; FAST-NEXT:    bl __gnu_h2f_ieee
179 ; FAST-NEXT:    nop
180 ; FAST-NEXT:    fmr f30, f1
181 ; FAST-NEXT:    fmr f1, f31
182 ; FAST-NEXT:    bl __gnu_f2h_ieee
183 ; FAST-NEXT:    nop
184 ; FAST-NEXT:    clrldi r3, r3, 48
185 ; FAST-NEXT:    bl __gnu_h2f_ieee
186 ; FAST-NEXT:    nop
187 ; FAST-NEXT:    fctid f0, f1
188 ; FAST-NEXT:    fctid f1, f30
189 ; FAST-NEXT:    mffprd r3, f0
190 ; FAST-NEXT:    mtfprd f0, r3
191 ; FAST-NEXT:    mffprd r3, f1
192 ; FAST-NEXT:    mtfprd f1, r3
193 ; FAST-NEXT:    xxmrghd v2, vs1, vs0
194 ; FAST-NEXT:    addi r1, r1, 48
195 ; FAST-NEXT:    ld r0, 16(r1)
196 ; FAST-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload
197 ; FAST-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload
198 ; FAST-NEXT:    mtlr r0
199 ; FAST-NEXT:    blr
200   %a = call <2 x i64> @llvm.llrint.v2i64.v2f16(<2 x half> %x)
201   ret <2 x i64> %a
203 declare <2 x i64> @llvm.llrint.v2i64.v2f16(<2 x half>)
205 define <4 x i64> @llrint_v4i64_v4f16(<4 x half> %x) {
206 ; BE-LABEL: llrint_v4i64_v4f16:
207 ; BE:       # %bb.0:
208 ; BE-NEXT:    mflr r0
209 ; BE-NEXT:    stdu r1, -208(r1)
210 ; BE-NEXT:    std r0, 224(r1)
211 ; BE-NEXT:    .cfi_def_cfa_offset 208
212 ; BE-NEXT:    .cfi_offset lr, 16
213 ; BE-NEXT:    .cfi_offset r28, -56
214 ; BE-NEXT:    .cfi_offset r29, -48
215 ; BE-NEXT:    .cfi_offset r30, -40
216 ; BE-NEXT:    .cfi_offset f29, -24
217 ; BE-NEXT:    .cfi_offset f30, -16
218 ; BE-NEXT:    .cfi_offset f31, -8
219 ; BE-NEXT:    stfd f29, 184(r1) # 8-byte Folded Spill
220 ; BE-NEXT:    fmr f29, f1
221 ; BE-NEXT:    fmr f1, f2
222 ; BE-NEXT:    std r28, 152(r1) # 8-byte Folded Spill
223 ; BE-NEXT:    std r29, 160(r1) # 8-byte Folded Spill
224 ; BE-NEXT:    std r30, 168(r1) # 8-byte Folded Spill
225 ; BE-NEXT:    stfd f30, 192(r1) # 8-byte Folded Spill
226 ; BE-NEXT:    stfd f31, 200(r1) # 8-byte Folded Spill
227 ; BE-NEXT:    fmr f31, f4
228 ; BE-NEXT:    fmr f30, f3
229 ; BE-NEXT:    bl __gnu_f2h_ieee
230 ; BE-NEXT:    nop
231 ; BE-NEXT:    fmr f1, f29
232 ; BE-NEXT:    mr r30, r3
233 ; BE-NEXT:    bl __gnu_f2h_ieee
234 ; BE-NEXT:    nop
235 ; BE-NEXT:    fmr f1, f31
236 ; BE-NEXT:    mr r29, r3
237 ; BE-NEXT:    bl __gnu_f2h_ieee
238 ; BE-NEXT:    nop
239 ; BE-NEXT:    fmr f1, f30
240 ; BE-NEXT:    mr r28, r3
241 ; BE-NEXT:    bl __gnu_f2h_ieee
242 ; BE-NEXT:    nop
243 ; BE-NEXT:    clrldi r3, r3, 48
244 ; BE-NEXT:    bl __gnu_h2f_ieee
245 ; BE-NEXT:    nop
246 ; BE-NEXT:    clrldi r3, r28, 48
247 ; BE-NEXT:    fmr f31, f1
248 ; BE-NEXT:    bl __gnu_h2f_ieee
249 ; BE-NEXT:    nop
250 ; BE-NEXT:    clrldi r3, r29, 48
251 ; BE-NEXT:    fmr f30, f1
252 ; BE-NEXT:    bl __gnu_h2f_ieee
253 ; BE-NEXT:    nop
254 ; BE-NEXT:    clrldi r3, r30, 48
255 ; BE-NEXT:    fmr f29, f1
256 ; BE-NEXT:    bl __gnu_h2f_ieee
257 ; BE-NEXT:    nop
258 ; BE-NEXT:    bl llrintf
259 ; BE-NEXT:    nop
260 ; BE-NEXT:    fmr f1, f29
261 ; BE-NEXT:    std r3, 120(r1)
262 ; BE-NEXT:    bl llrintf
263 ; BE-NEXT:    nop
264 ; BE-NEXT:    fmr f1, f30
265 ; BE-NEXT:    std r3, 112(r1)
266 ; BE-NEXT:    bl llrintf
267 ; BE-NEXT:    nop
268 ; BE-NEXT:    fmr f1, f31
269 ; BE-NEXT:    std r3, 136(r1)
270 ; BE-NEXT:    bl llrintf
271 ; BE-NEXT:    nop
272 ; BE-NEXT:    std r3, 128(r1)
273 ; BE-NEXT:    addi r3, r1, 112
274 ; BE-NEXT:    ld r30, 168(r1) # 8-byte Folded Reload
275 ; BE-NEXT:    lfd f31, 200(r1) # 8-byte Folded Reload
276 ; BE-NEXT:    lfd f30, 192(r1) # 8-byte Folded Reload
277 ; BE-NEXT:    lfd f29, 184(r1) # 8-byte Folded Reload
278 ; BE-NEXT:    lxvd2x v2, 0, r3
279 ; BE-NEXT:    addi r3, r1, 128
280 ; BE-NEXT:    ld r29, 160(r1) # 8-byte Folded Reload
281 ; BE-NEXT:    ld r28, 152(r1) # 8-byte Folded Reload
282 ; BE-NEXT:    lxvd2x v3, 0, r3
283 ; BE-NEXT:    addi r1, r1, 208
284 ; BE-NEXT:    ld r0, 16(r1)
285 ; BE-NEXT:    mtlr r0
286 ; BE-NEXT:    blr
288 ; CHECK-LABEL: llrint_v4i64_v4f16:
289 ; CHECK:       # %bb.0:
290 ; CHECK-NEXT:    mflr r0
291 ; CHECK-NEXT:    stdu r1, -144(r1)
292 ; CHECK-NEXT:    std r0, 160(r1)
293 ; CHECK-NEXT:    .cfi_def_cfa_offset 144
294 ; CHECK-NEXT:    .cfi_offset lr, 16
295 ; CHECK-NEXT:    .cfi_offset r28, -56
296 ; CHECK-NEXT:    .cfi_offset r29, -48
297 ; CHECK-NEXT:    .cfi_offset r30, -40
298 ; CHECK-NEXT:    .cfi_offset f29, -24
299 ; CHECK-NEXT:    .cfi_offset f30, -16
300 ; CHECK-NEXT:    .cfi_offset f31, -8
301 ; CHECK-NEXT:    .cfi_offset v30, -96
302 ; CHECK-NEXT:    .cfi_offset v31, -80
303 ; CHECK-NEXT:    li r3, 48
304 ; CHECK-NEXT:    std r28, 88(r1) # 8-byte Folded Spill
305 ; CHECK-NEXT:    std r29, 96(r1) # 8-byte Folded Spill
306 ; CHECK-NEXT:    std r30, 104(r1) # 8-byte Folded Spill
307 ; CHECK-NEXT:    stfd f29, 120(r1) # 8-byte Folded Spill
308 ; CHECK-NEXT:    fmr f29, f2
309 ; CHECK-NEXT:    stfd f30, 128(r1) # 8-byte Folded Spill
310 ; CHECK-NEXT:    fmr f30, f3
311 ; CHECK-NEXT:    stvx v30, r1, r3 # 16-byte Folded Spill
312 ; CHECK-NEXT:    li r3, 64
313 ; CHECK-NEXT:    stfd f31, 136(r1) # 8-byte Folded Spill
314 ; CHECK-NEXT:    fmr f31, f4
315 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
316 ; CHECK-NEXT:    bl __gnu_f2h_ieee
317 ; CHECK-NEXT:    nop
318 ; CHECK-NEXT:    fmr f1, f29
319 ; CHECK-NEXT:    mr r30, r3
320 ; CHECK-NEXT:    bl __gnu_f2h_ieee
321 ; CHECK-NEXT:    nop
322 ; CHECK-NEXT:    fmr f1, f30
323 ; CHECK-NEXT:    mr r29, r3
324 ; CHECK-NEXT:    bl __gnu_f2h_ieee
325 ; CHECK-NEXT:    nop
326 ; CHECK-NEXT:    fmr f1, f31
327 ; CHECK-NEXT:    mr r28, r3
328 ; CHECK-NEXT:    bl __gnu_f2h_ieee
329 ; CHECK-NEXT:    nop
330 ; CHECK-NEXT:    clrldi r3, r3, 48
331 ; CHECK-NEXT:    bl __gnu_h2f_ieee
332 ; CHECK-NEXT:    nop
333 ; CHECK-NEXT:    clrldi r3, r28, 48
334 ; CHECK-NEXT:    fmr f31, f1
335 ; CHECK-NEXT:    bl __gnu_h2f_ieee
336 ; CHECK-NEXT:    nop
337 ; CHECK-NEXT:    clrldi r3, r29, 48
338 ; CHECK-NEXT:    fmr f30, f1
339 ; CHECK-NEXT:    bl __gnu_h2f_ieee
340 ; CHECK-NEXT:    nop
341 ; CHECK-NEXT:    clrldi r3, r30, 48
342 ; CHECK-NEXT:    fmr f29, f1
343 ; CHECK-NEXT:    bl __gnu_h2f_ieee
344 ; CHECK-NEXT:    nop
345 ; CHECK-NEXT:    bl llrintf
346 ; CHECK-NEXT:    nop
347 ; CHECK-NEXT:    fmr f1, f29
348 ; CHECK-NEXT:    mtvsrd v31, r3
349 ; CHECK-NEXT:    bl llrintf
350 ; CHECK-NEXT:    nop
351 ; CHECK-NEXT:    fmr f1, f30
352 ; CHECK-NEXT:    mtfprd f0, r3
353 ; CHECK-NEXT:    xxmrghd v31, vs0, v31
354 ; CHECK-NEXT:    bl llrintf
355 ; CHECK-NEXT:    nop
356 ; CHECK-NEXT:    fmr f1, f31
357 ; CHECK-NEXT:    mtvsrd v30, r3
358 ; CHECK-NEXT:    bl llrintf
359 ; CHECK-NEXT:    nop
360 ; CHECK-NEXT:    mtfprd f0, r3
361 ; CHECK-NEXT:    li r3, 64
362 ; CHECK-NEXT:    vmr v2, v31
363 ; CHECK-NEXT:    lfd f31, 136(r1) # 8-byte Folded Reload
364 ; CHECK-NEXT:    lfd f30, 128(r1) # 8-byte Folded Reload
365 ; CHECK-NEXT:    lfd f29, 120(r1) # 8-byte Folded Reload
366 ; CHECK-NEXT:    ld r30, 104(r1) # 8-byte Folded Reload
367 ; CHECK-NEXT:    ld r29, 96(r1) # 8-byte Folded Reload
368 ; CHECK-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload
369 ; CHECK-NEXT:    li r3, 48
370 ; CHECK-NEXT:    ld r28, 88(r1) # 8-byte Folded Reload
371 ; CHECK-NEXT:    xxmrghd v3, vs0, v30
372 ; CHECK-NEXT:    lvx v30, r1, r3 # 16-byte Folded Reload
373 ; CHECK-NEXT:    addi r1, r1, 144
374 ; CHECK-NEXT:    ld r0, 16(r1)
375 ; CHECK-NEXT:    mtlr r0
376 ; CHECK-NEXT:    blr
378 ; FAST-LABEL: llrint_v4i64_v4f16:
379 ; FAST:       # %bb.0:
380 ; FAST-NEXT:    mflr r0
381 ; FAST-NEXT:    .cfi_def_cfa_offset 64
382 ; FAST-NEXT:    .cfi_offset lr, 16
383 ; FAST-NEXT:    .cfi_offset f28, -32
384 ; FAST-NEXT:    .cfi_offset f29, -24
385 ; FAST-NEXT:    .cfi_offset f30, -16
386 ; FAST-NEXT:    .cfi_offset f31, -8
387 ; FAST-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill
388 ; FAST-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill
389 ; FAST-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill
390 ; FAST-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill
391 ; FAST-NEXT:    stdu r1, -64(r1)
392 ; FAST-NEXT:    fmr f29, f1
393 ; FAST-NEXT:    fmr f1, f4
394 ; FAST-NEXT:    std r0, 80(r1)
395 ; FAST-NEXT:    fmr f31, f3
396 ; FAST-NEXT:    fmr f30, f2
397 ; FAST-NEXT:    bl __gnu_f2h_ieee
398 ; FAST-NEXT:    nop
399 ; FAST-NEXT:    clrldi r3, r3, 48
400 ; FAST-NEXT:    bl __gnu_h2f_ieee
401 ; FAST-NEXT:    nop
402 ; FAST-NEXT:    fmr f28, f1
403 ; FAST-NEXT:    fmr f1, f31
404 ; FAST-NEXT:    bl __gnu_f2h_ieee
405 ; FAST-NEXT:    nop
406 ; FAST-NEXT:    clrldi r3, r3, 48
407 ; FAST-NEXT:    bl __gnu_h2f_ieee
408 ; FAST-NEXT:    nop
409 ; FAST-NEXT:    fmr f31, f1
410 ; FAST-NEXT:    fmr f1, f30
411 ; FAST-NEXT:    bl __gnu_f2h_ieee
412 ; FAST-NEXT:    nop
413 ; FAST-NEXT:    clrldi r3, r3, 48
414 ; FAST-NEXT:    bl __gnu_h2f_ieee
415 ; FAST-NEXT:    nop
416 ; FAST-NEXT:    fmr f30, f1
417 ; FAST-NEXT:    fmr f1, f29
418 ; FAST-NEXT:    bl __gnu_f2h_ieee
419 ; FAST-NEXT:    nop
420 ; FAST-NEXT:    clrldi r3, r3, 48
421 ; FAST-NEXT:    bl __gnu_h2f_ieee
422 ; FAST-NEXT:    nop
423 ; FAST-NEXT:    fctid f0, f30
424 ; FAST-NEXT:    fctid f2, f31
425 ; FAST-NEXT:    mffprd r3, f0
426 ; FAST-NEXT:    fctid f1, f1
427 ; FAST-NEXT:    mtfprd f0, r3
428 ; FAST-NEXT:    mffprd r3, f2
429 ; FAST-NEXT:    mtfprd f2, r3
430 ; FAST-NEXT:    mffprd r3, f1
431 ; FAST-NEXT:    mtfprd f1, r3
432 ; FAST-NEXT:    xxmrghd v2, vs0, vs1
433 ; FAST-NEXT:    fctid f0, f28
434 ; FAST-NEXT:    mffprd r3, f0
435 ; FAST-NEXT:    mtfprd f0, r3
436 ; FAST-NEXT:    xxmrghd v3, vs0, vs2
437 ; FAST-NEXT:    addi r1, r1, 64
438 ; FAST-NEXT:    ld r0, 16(r1)
439 ; FAST-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload
440 ; FAST-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload
441 ; FAST-NEXT:    mtlr r0
442 ; FAST-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload
443 ; FAST-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload
444 ; FAST-NEXT:    blr
445   %a = call <4 x i64> @llvm.llrint.v4i64.v4f16(<4 x half> %x)
446   ret <4 x i64> %a
448 declare <4 x i64> @llvm.llrint.v4i64.v4f16(<4 x half>)
450 define <8 x i64> @llrint_v8i64_v8f16(<8 x half> %x) {
451 ; BE-LABEL: llrint_v8i64_v8f16:
452 ; BE:       # %bb.0:
453 ; BE-NEXT:    mflr r0
454 ; BE-NEXT:    stdu r1, -304(r1)
455 ; BE-NEXT:    std r0, 320(r1)
456 ; BE-NEXT:    .cfi_def_cfa_offset 304
457 ; BE-NEXT:    .cfi_offset lr, 16
458 ; BE-NEXT:    .cfi_offset r24, -120
459 ; BE-NEXT:    .cfi_offset r25, -112
460 ; BE-NEXT:    .cfi_offset r26, -104
461 ; BE-NEXT:    .cfi_offset r27, -96
462 ; BE-NEXT:    .cfi_offset r28, -88
463 ; BE-NEXT:    .cfi_offset r29, -80
464 ; BE-NEXT:    .cfi_offset r30, -72
465 ; BE-NEXT:    .cfi_offset f25, -56
466 ; BE-NEXT:    .cfi_offset f26, -48
467 ; BE-NEXT:    .cfi_offset f27, -40
468 ; BE-NEXT:    .cfi_offset f28, -32
469 ; BE-NEXT:    .cfi_offset f29, -24
470 ; BE-NEXT:    .cfi_offset f30, -16
471 ; BE-NEXT:    .cfi_offset f31, -8
472 ; BE-NEXT:    stfd f25, 248(r1) # 8-byte Folded Spill
473 ; BE-NEXT:    fmr f25, f1
474 ; BE-NEXT:    fmr f1, f2
475 ; BE-NEXT:    std r24, 184(r1) # 8-byte Folded Spill
476 ; BE-NEXT:    std r25, 192(r1) # 8-byte Folded Spill
477 ; BE-NEXT:    std r26, 200(r1) # 8-byte Folded Spill
478 ; BE-NEXT:    std r27, 208(r1) # 8-byte Folded Spill
479 ; BE-NEXT:    std r28, 216(r1) # 8-byte Folded Spill
480 ; BE-NEXT:    std r29, 224(r1) # 8-byte Folded Spill
481 ; BE-NEXT:    std r30, 232(r1) # 8-byte Folded Spill
482 ; BE-NEXT:    stfd f26, 256(r1) # 8-byte Folded Spill
483 ; BE-NEXT:    stfd f27, 264(r1) # 8-byte Folded Spill
484 ; BE-NEXT:    stfd f28, 272(r1) # 8-byte Folded Spill
485 ; BE-NEXT:    stfd f29, 280(r1) # 8-byte Folded Spill
486 ; BE-NEXT:    stfd f30, 288(r1) # 8-byte Folded Spill
487 ; BE-NEXT:    stfd f31, 296(r1) # 8-byte Folded Spill
488 ; BE-NEXT:    fmr f31, f8
489 ; BE-NEXT:    fmr f30, f7
490 ; BE-NEXT:    fmr f29, f6
491 ; BE-NEXT:    fmr f28, f5
492 ; BE-NEXT:    fmr f27, f4
493 ; BE-NEXT:    fmr f26, f3
494 ; BE-NEXT:    bl __gnu_f2h_ieee
495 ; BE-NEXT:    nop
496 ; BE-NEXT:    fmr f1, f25
497 ; BE-NEXT:    mr r30, r3
498 ; BE-NEXT:    bl __gnu_f2h_ieee
499 ; BE-NEXT:    nop
500 ; BE-NEXT:    fmr f1, f27
501 ; BE-NEXT:    mr r29, r3
502 ; BE-NEXT:    bl __gnu_f2h_ieee
503 ; BE-NEXT:    nop
504 ; BE-NEXT:    fmr f1, f26
505 ; BE-NEXT:    mr r28, r3
506 ; BE-NEXT:    bl __gnu_f2h_ieee
507 ; BE-NEXT:    nop
508 ; BE-NEXT:    fmr f1, f29
509 ; BE-NEXT:    mr r27, r3
510 ; BE-NEXT:    bl __gnu_f2h_ieee
511 ; BE-NEXT:    nop
512 ; BE-NEXT:    fmr f1, f28
513 ; BE-NEXT:    mr r26, r3
514 ; BE-NEXT:    bl __gnu_f2h_ieee
515 ; BE-NEXT:    nop
516 ; BE-NEXT:    fmr f1, f31
517 ; BE-NEXT:    mr r25, r3
518 ; BE-NEXT:    bl __gnu_f2h_ieee
519 ; BE-NEXT:    nop
520 ; BE-NEXT:    fmr f1, f30
521 ; BE-NEXT:    mr r24, r3
522 ; BE-NEXT:    bl __gnu_f2h_ieee
523 ; BE-NEXT:    nop
524 ; BE-NEXT:    clrldi r3, r3, 48
525 ; BE-NEXT:    bl __gnu_h2f_ieee
526 ; BE-NEXT:    nop
527 ; BE-NEXT:    clrldi r3, r24, 48
528 ; BE-NEXT:    fmr f31, f1
529 ; BE-NEXT:    bl __gnu_h2f_ieee
530 ; BE-NEXT:    nop
531 ; BE-NEXT:    clrldi r3, r25, 48
532 ; BE-NEXT:    fmr f30, f1
533 ; BE-NEXT:    bl __gnu_h2f_ieee
534 ; BE-NEXT:    nop
535 ; BE-NEXT:    clrldi r3, r26, 48
536 ; BE-NEXT:    fmr f29, f1
537 ; BE-NEXT:    bl __gnu_h2f_ieee
538 ; BE-NEXT:    nop
539 ; BE-NEXT:    clrldi r3, r27, 48
540 ; BE-NEXT:    fmr f28, f1
541 ; BE-NEXT:    bl __gnu_h2f_ieee
542 ; BE-NEXT:    nop
543 ; BE-NEXT:    clrldi r3, r28, 48
544 ; BE-NEXT:    fmr f27, f1
545 ; BE-NEXT:    bl __gnu_h2f_ieee
546 ; BE-NEXT:    nop
547 ; BE-NEXT:    clrldi r3, r29, 48
548 ; BE-NEXT:    fmr f26, f1
549 ; BE-NEXT:    bl __gnu_h2f_ieee
550 ; BE-NEXT:    nop
551 ; BE-NEXT:    clrldi r3, r30, 48
552 ; BE-NEXT:    fmr f25, f1
553 ; BE-NEXT:    bl __gnu_h2f_ieee
554 ; BE-NEXT:    nop
555 ; BE-NEXT:    bl llrintf
556 ; BE-NEXT:    nop
557 ; BE-NEXT:    fmr f1, f25
558 ; BE-NEXT:    std r3, 120(r1)
559 ; BE-NEXT:    bl llrintf
560 ; BE-NEXT:    nop
561 ; BE-NEXT:    fmr f1, f26
562 ; BE-NEXT:    std r3, 112(r1)
563 ; BE-NEXT:    bl llrintf
564 ; BE-NEXT:    nop
565 ; BE-NEXT:    fmr f1, f27
566 ; BE-NEXT:    std r3, 136(r1)
567 ; BE-NEXT:    bl llrintf
568 ; BE-NEXT:    nop
569 ; BE-NEXT:    fmr f1, f28
570 ; BE-NEXT:    std r3, 128(r1)
571 ; BE-NEXT:    bl llrintf
572 ; BE-NEXT:    nop
573 ; BE-NEXT:    fmr f1, f29
574 ; BE-NEXT:    std r3, 152(r1)
575 ; BE-NEXT:    bl llrintf
576 ; BE-NEXT:    nop
577 ; BE-NEXT:    fmr f1, f30
578 ; BE-NEXT:    std r3, 144(r1)
579 ; BE-NEXT:    bl llrintf
580 ; BE-NEXT:    nop
581 ; BE-NEXT:    fmr f1, f31
582 ; BE-NEXT:    std r3, 168(r1)
583 ; BE-NEXT:    bl llrintf
584 ; BE-NEXT:    nop
585 ; BE-NEXT:    std r3, 160(r1)
586 ; BE-NEXT:    addi r3, r1, 112
587 ; BE-NEXT:    ld r30, 232(r1) # 8-byte Folded Reload
588 ; BE-NEXT:    lfd f31, 296(r1) # 8-byte Folded Reload
589 ; BE-NEXT:    lfd f30, 288(r1) # 8-byte Folded Reload
590 ; BE-NEXT:    lfd f29, 280(r1) # 8-byte Folded Reload
591 ; BE-NEXT:    lxvd2x v2, 0, r3
592 ; BE-NEXT:    addi r3, r1, 128
593 ; BE-NEXT:    lfd f28, 272(r1) # 8-byte Folded Reload
594 ; BE-NEXT:    lfd f27, 264(r1) # 8-byte Folded Reload
595 ; BE-NEXT:    lfd f26, 256(r1) # 8-byte Folded Reload
596 ; BE-NEXT:    ld r29, 224(r1) # 8-byte Folded Reload
597 ; BE-NEXT:    ld r28, 216(r1) # 8-byte Folded Reload
598 ; BE-NEXT:    lxvd2x v3, 0, r3
599 ; BE-NEXT:    addi r3, r1, 144
600 ; BE-NEXT:    lfd f25, 248(r1) # 8-byte Folded Reload
601 ; BE-NEXT:    ld r27, 208(r1) # 8-byte Folded Reload
602 ; BE-NEXT:    ld r26, 200(r1) # 8-byte Folded Reload
603 ; BE-NEXT:    ld r25, 192(r1) # 8-byte Folded Reload
604 ; BE-NEXT:    ld r24, 184(r1) # 8-byte Folded Reload
605 ; BE-NEXT:    lxvd2x v4, 0, r3
606 ; BE-NEXT:    addi r3, r1, 160
607 ; BE-NEXT:    lxvd2x v5, 0, r3
608 ; BE-NEXT:    addi r1, r1, 304
609 ; BE-NEXT:    ld r0, 16(r1)
610 ; BE-NEXT:    mtlr r0
611 ; BE-NEXT:    blr
613 ; CHECK-LABEL: llrint_v8i64_v8f16:
614 ; CHECK:       # %bb.0:
615 ; CHECK-NEXT:    mflr r0
616 ; CHECK-NEXT:    stdu r1, -240(r1)
617 ; CHECK-NEXT:    std r0, 256(r1)
618 ; CHECK-NEXT:    .cfi_def_cfa_offset 240
619 ; CHECK-NEXT:    .cfi_offset lr, 16
620 ; CHECK-NEXT:    .cfi_offset r24, -120
621 ; CHECK-NEXT:    .cfi_offset r25, -112
622 ; CHECK-NEXT:    .cfi_offset r26, -104
623 ; CHECK-NEXT:    .cfi_offset r27, -96
624 ; CHECK-NEXT:    .cfi_offset r28, -88
625 ; CHECK-NEXT:    .cfi_offset r29, -80
626 ; CHECK-NEXT:    .cfi_offset r30, -72
627 ; CHECK-NEXT:    .cfi_offset f25, -56
628 ; CHECK-NEXT:    .cfi_offset f26, -48
629 ; CHECK-NEXT:    .cfi_offset f27, -40
630 ; CHECK-NEXT:    .cfi_offset f28, -32
631 ; CHECK-NEXT:    .cfi_offset f29, -24
632 ; CHECK-NEXT:    .cfi_offset f30, -16
633 ; CHECK-NEXT:    .cfi_offset f31, -8
634 ; CHECK-NEXT:    .cfi_offset v28, -192
635 ; CHECK-NEXT:    .cfi_offset v29, -176
636 ; CHECK-NEXT:    .cfi_offset v30, -160
637 ; CHECK-NEXT:    .cfi_offset v31, -144
638 ; CHECK-NEXT:    li r3, 48
639 ; CHECK-NEXT:    std r24, 120(r1) # 8-byte Folded Spill
640 ; CHECK-NEXT:    std r25, 128(r1) # 8-byte Folded Spill
641 ; CHECK-NEXT:    std r26, 136(r1) # 8-byte Folded Spill
642 ; CHECK-NEXT:    std r27, 144(r1) # 8-byte Folded Spill
643 ; CHECK-NEXT:    std r28, 152(r1) # 8-byte Folded Spill
644 ; CHECK-NEXT:    std r29, 160(r1) # 8-byte Folded Spill
645 ; CHECK-NEXT:    std r30, 168(r1) # 8-byte Folded Spill
646 ; CHECK-NEXT:    stvx v28, r1, r3 # 16-byte Folded Spill
647 ; CHECK-NEXT:    li r3, 64
648 ; CHECK-NEXT:    stfd f25, 184(r1) # 8-byte Folded Spill
649 ; CHECK-NEXT:    fmr f25, f2
650 ; CHECK-NEXT:    stfd f26, 192(r1) # 8-byte Folded Spill
651 ; CHECK-NEXT:    fmr f26, f3
652 ; CHECK-NEXT:    stfd f27, 200(r1) # 8-byte Folded Spill
653 ; CHECK-NEXT:    fmr f27, f4
654 ; CHECK-NEXT:    stvx v29, r1, r3 # 16-byte Folded Spill
655 ; CHECK-NEXT:    li r3, 80
656 ; CHECK-NEXT:    stfd f28, 208(r1) # 8-byte Folded Spill
657 ; CHECK-NEXT:    fmr f28, f5
658 ; CHECK-NEXT:    stfd f29, 216(r1) # 8-byte Folded Spill
659 ; CHECK-NEXT:    fmr f29, f6
660 ; CHECK-NEXT:    stfd f30, 224(r1) # 8-byte Folded Spill
661 ; CHECK-NEXT:    fmr f30, f7
662 ; CHECK-NEXT:    stvx v30, r1, r3 # 16-byte Folded Spill
663 ; CHECK-NEXT:    li r3, 96
664 ; CHECK-NEXT:    stfd f31, 232(r1) # 8-byte Folded Spill
665 ; CHECK-NEXT:    fmr f31, f8
666 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
667 ; CHECK-NEXT:    bl __gnu_f2h_ieee
668 ; CHECK-NEXT:    nop
669 ; CHECK-NEXT:    fmr f1, f25
670 ; CHECK-NEXT:    mr r30, r3
671 ; CHECK-NEXT:    bl __gnu_f2h_ieee
672 ; CHECK-NEXT:    nop
673 ; CHECK-NEXT:    fmr f1, f26
674 ; CHECK-NEXT:    mr r29, r3
675 ; CHECK-NEXT:    bl __gnu_f2h_ieee
676 ; CHECK-NEXT:    nop
677 ; CHECK-NEXT:    fmr f1, f27
678 ; CHECK-NEXT:    mr r28, r3
679 ; CHECK-NEXT:    bl __gnu_f2h_ieee
680 ; CHECK-NEXT:    nop
681 ; CHECK-NEXT:    fmr f1, f28
682 ; CHECK-NEXT:    mr r27, r3
683 ; CHECK-NEXT:    bl __gnu_f2h_ieee
684 ; CHECK-NEXT:    nop
685 ; CHECK-NEXT:    fmr f1, f29
686 ; CHECK-NEXT:    mr r26, r3
687 ; CHECK-NEXT:    bl __gnu_f2h_ieee
688 ; CHECK-NEXT:    nop
689 ; CHECK-NEXT:    fmr f1, f30
690 ; CHECK-NEXT:    mr r25, r3
691 ; CHECK-NEXT:    bl __gnu_f2h_ieee
692 ; CHECK-NEXT:    nop
693 ; CHECK-NEXT:    fmr f1, f31
694 ; CHECK-NEXT:    mr r24, r3
695 ; CHECK-NEXT:    bl __gnu_f2h_ieee
696 ; CHECK-NEXT:    nop
697 ; CHECK-NEXT:    clrldi r3, r3, 48
698 ; CHECK-NEXT:    bl __gnu_h2f_ieee
699 ; CHECK-NEXT:    nop
700 ; CHECK-NEXT:    clrldi r3, r24, 48
701 ; CHECK-NEXT:    fmr f31, f1
702 ; CHECK-NEXT:    bl __gnu_h2f_ieee
703 ; CHECK-NEXT:    nop
704 ; CHECK-NEXT:    clrldi r3, r25, 48
705 ; CHECK-NEXT:    fmr f30, f1
706 ; CHECK-NEXT:    bl __gnu_h2f_ieee
707 ; CHECK-NEXT:    nop
708 ; CHECK-NEXT:    clrldi r3, r26, 48
709 ; CHECK-NEXT:    fmr f29, f1
710 ; CHECK-NEXT:    bl __gnu_h2f_ieee
711 ; CHECK-NEXT:    nop
712 ; CHECK-NEXT:    clrldi r3, r27, 48
713 ; CHECK-NEXT:    fmr f28, f1
714 ; CHECK-NEXT:    bl __gnu_h2f_ieee
715 ; CHECK-NEXT:    nop
716 ; CHECK-NEXT:    clrldi r3, r28, 48
717 ; CHECK-NEXT:    fmr f27, f1
718 ; CHECK-NEXT:    bl __gnu_h2f_ieee
719 ; CHECK-NEXT:    nop
720 ; CHECK-NEXT:    clrldi r3, r29, 48
721 ; CHECK-NEXT:    fmr f26, f1
722 ; CHECK-NEXT:    bl __gnu_h2f_ieee
723 ; CHECK-NEXT:    nop
724 ; CHECK-NEXT:    clrldi r3, r30, 48
725 ; CHECK-NEXT:    fmr f25, f1
726 ; CHECK-NEXT:    bl __gnu_h2f_ieee
727 ; CHECK-NEXT:    nop
728 ; CHECK-NEXT:    bl llrintf
729 ; CHECK-NEXT:    nop
730 ; CHECK-NEXT:    fmr f1, f25
731 ; CHECK-NEXT:    mtvsrd v31, r3
732 ; CHECK-NEXT:    bl llrintf
733 ; CHECK-NEXT:    nop
734 ; CHECK-NEXT:    fmr f1, f26
735 ; CHECK-NEXT:    mtfprd f0, r3
736 ; CHECK-NEXT:    xxmrghd v31, vs0, v31
737 ; CHECK-NEXT:    bl llrintf
738 ; CHECK-NEXT:    nop
739 ; CHECK-NEXT:    fmr f1, f27
740 ; CHECK-NEXT:    mtvsrd v30, r3
741 ; CHECK-NEXT:    bl llrintf
742 ; CHECK-NEXT:    nop
743 ; CHECK-NEXT:    fmr f1, f28
744 ; CHECK-NEXT:    mtfprd f0, r3
745 ; CHECK-NEXT:    xxmrghd v30, vs0, v30
746 ; CHECK-NEXT:    bl llrintf
747 ; CHECK-NEXT:    nop
748 ; CHECK-NEXT:    fmr f1, f29
749 ; CHECK-NEXT:    mtvsrd v29, r3
750 ; CHECK-NEXT:    bl llrintf
751 ; CHECK-NEXT:    nop
752 ; CHECK-NEXT:    fmr f1, f30
753 ; CHECK-NEXT:    mtfprd f0, r3
754 ; CHECK-NEXT:    xxmrghd v29, vs0, v29
755 ; CHECK-NEXT:    bl llrintf
756 ; CHECK-NEXT:    nop
757 ; CHECK-NEXT:    fmr f1, f31
758 ; CHECK-NEXT:    mtvsrd v28, r3
759 ; CHECK-NEXT:    bl llrintf
760 ; CHECK-NEXT:    nop
761 ; CHECK-NEXT:    mtfprd f0, r3
762 ; CHECK-NEXT:    li r3, 96
763 ; CHECK-NEXT:    vmr v2, v31
764 ; CHECK-NEXT:    lfd f31, 232(r1) # 8-byte Folded Reload
765 ; CHECK-NEXT:    vmr v3, v30
766 ; CHECK-NEXT:    vmr v4, v29
767 ; CHECK-NEXT:    lfd f30, 224(r1) # 8-byte Folded Reload
768 ; CHECK-NEXT:    lfd f29, 216(r1) # 8-byte Folded Reload
769 ; CHECK-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload
770 ; CHECK-NEXT:    li r3, 80
771 ; CHECK-NEXT:    lfd f28, 208(r1) # 8-byte Folded Reload
772 ; CHECK-NEXT:    lfd f27, 200(r1) # 8-byte Folded Reload
773 ; CHECK-NEXT:    lfd f26, 192(r1) # 8-byte Folded Reload
774 ; CHECK-NEXT:    lfd f25, 184(r1) # 8-byte Folded Reload
775 ; CHECK-NEXT:    ld r30, 168(r1) # 8-byte Folded Reload
776 ; CHECK-NEXT:    ld r29, 160(r1) # 8-byte Folded Reload
777 ; CHECK-NEXT:    lvx v30, r1, r3 # 16-byte Folded Reload
778 ; CHECK-NEXT:    li r3, 64
779 ; CHECK-NEXT:    ld r28, 152(r1) # 8-byte Folded Reload
780 ; CHECK-NEXT:    ld r27, 144(r1) # 8-byte Folded Reload
781 ; CHECK-NEXT:    xxmrghd v5, vs0, v28
782 ; CHECK-NEXT:    ld r26, 136(r1) # 8-byte Folded Reload
783 ; CHECK-NEXT:    ld r25, 128(r1) # 8-byte Folded Reload
784 ; CHECK-NEXT:    ld r24, 120(r1) # 8-byte Folded Reload
785 ; CHECK-NEXT:    lvx v29, r1, r3 # 16-byte Folded Reload
786 ; CHECK-NEXT:    li r3, 48
787 ; CHECK-NEXT:    lvx v28, r1, r3 # 16-byte Folded Reload
788 ; CHECK-NEXT:    addi r1, r1, 240
789 ; CHECK-NEXT:    ld r0, 16(r1)
790 ; CHECK-NEXT:    mtlr r0
791 ; CHECK-NEXT:    blr
793 ; FAST-LABEL: llrint_v8i64_v8f16:
794 ; FAST:       # %bb.0:
795 ; FAST-NEXT:    mflr r0
796 ; FAST-NEXT:    .cfi_def_cfa_offset 96
797 ; FAST-NEXT:    .cfi_offset lr, 16
798 ; FAST-NEXT:    .cfi_offset f24, -64
799 ; FAST-NEXT:    .cfi_offset f25, -56
800 ; FAST-NEXT:    .cfi_offset f26, -48
801 ; FAST-NEXT:    .cfi_offset f27, -40
802 ; FAST-NEXT:    .cfi_offset f28, -32
803 ; FAST-NEXT:    .cfi_offset f29, -24
804 ; FAST-NEXT:    .cfi_offset f30, -16
805 ; FAST-NEXT:    .cfi_offset f31, -8
806 ; FAST-NEXT:    stfd f24, -64(r1) # 8-byte Folded Spill
807 ; FAST-NEXT:    stfd f25, -56(r1) # 8-byte Folded Spill
808 ; FAST-NEXT:    stfd f26, -48(r1) # 8-byte Folded Spill
809 ; FAST-NEXT:    stfd f27, -40(r1) # 8-byte Folded Spill
810 ; FAST-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill
811 ; FAST-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill
812 ; FAST-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill
813 ; FAST-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill
814 ; FAST-NEXT:    stdu r1, -96(r1)
815 ; FAST-NEXT:    fmr f24, f1
816 ; FAST-NEXT:    fmr f1, f8
817 ; FAST-NEXT:    std r0, 112(r1)
818 ; FAST-NEXT:    fmr f30, f7
819 ; FAST-NEXT:    fmr f29, f6
820 ; FAST-NEXT:    fmr f28, f5
821 ; FAST-NEXT:    fmr f27, f4
822 ; FAST-NEXT:    fmr f26, f3
823 ; FAST-NEXT:    fmr f25, f2
824 ; FAST-NEXT:    bl __gnu_f2h_ieee
825 ; FAST-NEXT:    nop
826 ; FAST-NEXT:    clrldi r3, r3, 48
827 ; FAST-NEXT:    bl __gnu_h2f_ieee
828 ; FAST-NEXT:    nop
829 ; FAST-NEXT:    fmr f31, f1
830 ; FAST-NEXT:    fmr f1, f30
831 ; FAST-NEXT:    bl __gnu_f2h_ieee
832 ; FAST-NEXT:    nop
833 ; FAST-NEXT:    clrldi r3, r3, 48
834 ; FAST-NEXT:    bl __gnu_h2f_ieee
835 ; FAST-NEXT:    nop
836 ; FAST-NEXT:    fmr f30, f1
837 ; FAST-NEXT:    fmr f1, f29
838 ; FAST-NEXT:    bl __gnu_f2h_ieee
839 ; FAST-NEXT:    nop
840 ; FAST-NEXT:    clrldi r3, r3, 48
841 ; FAST-NEXT:    bl __gnu_h2f_ieee
842 ; FAST-NEXT:    nop
843 ; FAST-NEXT:    fmr f29, f1
844 ; FAST-NEXT:    fmr f1, f28
845 ; FAST-NEXT:    bl __gnu_f2h_ieee
846 ; FAST-NEXT:    nop
847 ; FAST-NEXT:    clrldi r3, r3, 48
848 ; FAST-NEXT:    bl __gnu_h2f_ieee
849 ; FAST-NEXT:    nop
850 ; FAST-NEXT:    fmr f28, f1
851 ; FAST-NEXT:    fmr f1, f27
852 ; FAST-NEXT:    bl __gnu_f2h_ieee
853 ; FAST-NEXT:    nop
854 ; FAST-NEXT:    clrldi r3, r3, 48
855 ; FAST-NEXT:    bl __gnu_h2f_ieee
856 ; FAST-NEXT:    nop
857 ; FAST-NEXT:    fmr f27, f1
858 ; FAST-NEXT:    fmr f1, f26
859 ; FAST-NEXT:    bl __gnu_f2h_ieee
860 ; FAST-NEXT:    nop
861 ; FAST-NEXT:    clrldi r3, r3, 48
862 ; FAST-NEXT:    bl __gnu_h2f_ieee
863 ; FAST-NEXT:    nop
864 ; FAST-NEXT:    fmr f26, f1
865 ; FAST-NEXT:    fmr f1, f25
866 ; FAST-NEXT:    bl __gnu_f2h_ieee
867 ; FAST-NEXT:    nop
868 ; FAST-NEXT:    clrldi r3, r3, 48
869 ; FAST-NEXT:    bl __gnu_h2f_ieee
870 ; FAST-NEXT:    nop
871 ; FAST-NEXT:    fmr f25, f1
872 ; FAST-NEXT:    fmr f1, f24
873 ; FAST-NEXT:    bl __gnu_f2h_ieee
874 ; FAST-NEXT:    nop
875 ; FAST-NEXT:    clrldi r3, r3, 48
876 ; FAST-NEXT:    bl __gnu_h2f_ieee
877 ; FAST-NEXT:    nop
878 ; FAST-NEXT:    fctid f0, f25
879 ; FAST-NEXT:    fctid f2, f26
880 ; FAST-NEXT:    mffprd r3, f0
881 ; FAST-NEXT:    fctid f3, f27
882 ; FAST-NEXT:    fctid f4, f28
883 ; FAST-NEXT:    fctid f5, f29
884 ; FAST-NEXT:    fctid f6, f30
885 ; FAST-NEXT:    fctid f1, f1
886 ; FAST-NEXT:    mtfprd f0, r3
887 ; FAST-NEXT:    mffprd r3, f2
888 ; FAST-NEXT:    mtfprd f2, r3
889 ; FAST-NEXT:    mffprd r3, f3
890 ; FAST-NEXT:    mtfprd f3, r3
891 ; FAST-NEXT:    mffprd r3, f4
892 ; FAST-NEXT:    mtfprd f4, r3
893 ; FAST-NEXT:    mffprd r3, f5
894 ; FAST-NEXT:    mtfprd f5, r3
895 ; FAST-NEXT:    mffprd r3, f6
896 ; FAST-NEXT:    mtfprd f6, r3
897 ; FAST-NEXT:    mffprd r3, f1
898 ; FAST-NEXT:    mtfprd f1, r3
899 ; FAST-NEXT:    xxmrghd v3, vs3, vs2
900 ; FAST-NEXT:    xxmrghd v4, vs5, vs4
901 ; FAST-NEXT:    xxmrghd v2, vs0, vs1
902 ; FAST-NEXT:    fctid f0, f31
903 ; FAST-NEXT:    mffprd r3, f0
904 ; FAST-NEXT:    mtfprd f0, r3
905 ; FAST-NEXT:    xxmrghd v5, vs0, vs6
906 ; FAST-NEXT:    addi r1, r1, 96
907 ; FAST-NEXT:    ld r0, 16(r1)
908 ; FAST-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload
909 ; FAST-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload
910 ; FAST-NEXT:    mtlr r0
911 ; FAST-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload
912 ; FAST-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload
913 ; FAST-NEXT:    lfd f27, -40(r1) # 8-byte Folded Reload
914 ; FAST-NEXT:    lfd f26, -48(r1) # 8-byte Folded Reload
915 ; FAST-NEXT:    lfd f25, -56(r1) # 8-byte Folded Reload
916 ; FAST-NEXT:    lfd f24, -64(r1) # 8-byte Folded Reload
917 ; FAST-NEXT:    blr
918   %a = call <8 x i64> @llvm.llrint.v8i64.v8f16(<8 x half> %x)
919   ret <8 x i64> %a
921 declare <8 x i64> @llvm.llrint.v8i64.v8f16(<8 x half>)
923 define <16 x i64> @llrint_v16i64_v16f16(<16 x half> %x) {
924 ; BE-LABEL: llrint_v16i64_v16f16:
925 ; BE:       # %bb.0:
926 ; BE-NEXT:    mflr r0
927 ; BE-NEXT:    stdu r1, -496(r1)
928 ; BE-NEXT:    std r0, 512(r1)
929 ; BE-NEXT:    .cfi_def_cfa_offset 496
930 ; BE-NEXT:    .cfi_offset lr, 16
931 ; BE-NEXT:    .cfi_offset r16, -248
932 ; BE-NEXT:    .cfi_offset r17, -240
933 ; BE-NEXT:    .cfi_offset r18, -232
934 ; BE-NEXT:    .cfi_offset r19, -224
935 ; BE-NEXT:    .cfi_offset r20, -216
936 ; BE-NEXT:    .cfi_offset r21, -208
937 ; BE-NEXT:    .cfi_offset r22, -200
938 ; BE-NEXT:    .cfi_offset r23, -192
939 ; BE-NEXT:    .cfi_offset r24, -184
940 ; BE-NEXT:    .cfi_offset r25, -176
941 ; BE-NEXT:    .cfi_offset r26, -168
942 ; BE-NEXT:    .cfi_offset r27, -160
943 ; BE-NEXT:    .cfi_offset r28, -152
944 ; BE-NEXT:    .cfi_offset r29, -144
945 ; BE-NEXT:    .cfi_offset r30, -136
946 ; BE-NEXT:    .cfi_offset f17, -120
947 ; BE-NEXT:    .cfi_offset f18, -112
948 ; BE-NEXT:    .cfi_offset f19, -104
949 ; BE-NEXT:    .cfi_offset f20, -96
950 ; BE-NEXT:    .cfi_offset f21, -88
951 ; BE-NEXT:    .cfi_offset f22, -80
952 ; BE-NEXT:    .cfi_offset f23, -72
953 ; BE-NEXT:    .cfi_offset f24, -64
954 ; BE-NEXT:    .cfi_offset f25, -56
955 ; BE-NEXT:    .cfi_offset f26, -48
956 ; BE-NEXT:    .cfi_offset f27, -40
957 ; BE-NEXT:    .cfi_offset f28, -32
958 ; BE-NEXT:    .cfi_offset f29, -24
959 ; BE-NEXT:    .cfi_offset f30, -16
960 ; BE-NEXT:    .cfi_offset f31, -8
961 ; BE-NEXT:    stfd f20, 400(r1) # 8-byte Folded Spill
962 ; BE-NEXT:    fmr f20, f1
963 ; BE-NEXT:    fmr f1, f2
964 ; BE-NEXT:    std r16, 248(r1) # 8-byte Folded Spill
965 ; BE-NEXT:    std r17, 256(r1) # 8-byte Folded Spill
966 ; BE-NEXT:    std r18, 264(r1) # 8-byte Folded Spill
967 ; BE-NEXT:    std r19, 272(r1) # 8-byte Folded Spill
968 ; BE-NEXT:    std r20, 280(r1) # 8-byte Folded Spill
969 ; BE-NEXT:    std r21, 288(r1) # 8-byte Folded Spill
970 ; BE-NEXT:    std r22, 296(r1) # 8-byte Folded Spill
971 ; BE-NEXT:    std r23, 304(r1) # 8-byte Folded Spill
972 ; BE-NEXT:    std r24, 312(r1) # 8-byte Folded Spill
973 ; BE-NEXT:    std r25, 320(r1) # 8-byte Folded Spill
974 ; BE-NEXT:    std r26, 328(r1) # 8-byte Folded Spill
975 ; BE-NEXT:    std r27, 336(r1) # 8-byte Folded Spill
976 ; BE-NEXT:    std r28, 344(r1) # 8-byte Folded Spill
977 ; BE-NEXT:    std r29, 352(r1) # 8-byte Folded Spill
978 ; BE-NEXT:    std r30, 360(r1) # 8-byte Folded Spill
979 ; BE-NEXT:    stfd f17, 376(r1) # 8-byte Folded Spill
980 ; BE-NEXT:    stfd f18, 384(r1) # 8-byte Folded Spill
981 ; BE-NEXT:    stfd f19, 392(r1) # 8-byte Folded Spill
982 ; BE-NEXT:    stfd f21, 408(r1) # 8-byte Folded Spill
983 ; BE-NEXT:    stfd f22, 416(r1) # 8-byte Folded Spill
984 ; BE-NEXT:    stfd f23, 424(r1) # 8-byte Folded Spill
985 ; BE-NEXT:    stfd f24, 432(r1) # 8-byte Folded Spill
986 ; BE-NEXT:    stfd f25, 440(r1) # 8-byte Folded Spill
987 ; BE-NEXT:    stfd f26, 448(r1) # 8-byte Folded Spill
988 ; BE-NEXT:    stfd f27, 456(r1) # 8-byte Folded Spill
989 ; BE-NEXT:    stfd f28, 464(r1) # 8-byte Folded Spill
990 ; BE-NEXT:    stfd f29, 472(r1) # 8-byte Folded Spill
991 ; BE-NEXT:    stfd f30, 480(r1) # 8-byte Folded Spill
992 ; BE-NEXT:    stfd f31, 488(r1) # 8-byte Folded Spill
993 ; BE-NEXT:    fmr f31, f13
994 ; BE-NEXT:    fmr f29, f12
995 ; BE-NEXT:    fmr f30, f11
996 ; BE-NEXT:    fmr f28, f10
997 ; BE-NEXT:    fmr f27, f9
998 ; BE-NEXT:    fmr f26, f8
999 ; BE-NEXT:    fmr f25, f7
1000 ; BE-NEXT:    fmr f24, f6
1001 ; BE-NEXT:    fmr f23, f5
1002 ; BE-NEXT:    fmr f22, f4
1003 ; BE-NEXT:    fmr f21, f3
1004 ; BE-NEXT:    bl __gnu_f2h_ieee
1005 ; BE-NEXT:    nop
1006 ; BE-NEXT:    fmr f1, f20
1007 ; BE-NEXT:    mr r30, r3
1008 ; BE-NEXT:    bl __gnu_f2h_ieee
1009 ; BE-NEXT:    nop
1010 ; BE-NEXT:    fmr f1, f22
1011 ; BE-NEXT:    mr r29, r3
1012 ; BE-NEXT:    bl __gnu_f2h_ieee
1013 ; BE-NEXT:    nop
1014 ; BE-NEXT:    fmr f1, f21
1015 ; BE-NEXT:    mr r28, r3
1016 ; BE-NEXT:    bl __gnu_f2h_ieee
1017 ; BE-NEXT:    nop
1018 ; BE-NEXT:    fmr f1, f24
1019 ; BE-NEXT:    mr r27, r3
1020 ; BE-NEXT:    bl __gnu_f2h_ieee
1021 ; BE-NEXT:    nop
1022 ; BE-NEXT:    fmr f1, f23
1023 ; BE-NEXT:    mr r26, r3
1024 ; BE-NEXT:    bl __gnu_f2h_ieee
1025 ; BE-NEXT:    nop
1026 ; BE-NEXT:    fmr f1, f26
1027 ; BE-NEXT:    mr r25, r3
1028 ; BE-NEXT:    bl __gnu_f2h_ieee
1029 ; BE-NEXT:    nop
1030 ; BE-NEXT:    fmr f1, f25
1031 ; BE-NEXT:    mr r24, r3
1032 ; BE-NEXT:    bl __gnu_f2h_ieee
1033 ; BE-NEXT:    nop
1034 ; BE-NEXT:    fmr f1, f28
1035 ; BE-NEXT:    mr r23, r3
1036 ; BE-NEXT:    bl __gnu_f2h_ieee
1037 ; BE-NEXT:    nop
1038 ; BE-NEXT:    fmr f1, f27
1039 ; BE-NEXT:    mr r22, r3
1040 ; BE-NEXT:    bl __gnu_f2h_ieee
1041 ; BE-NEXT:    nop
1042 ; BE-NEXT:    fmr f1, f29
1043 ; BE-NEXT:    mr r21, r3
1044 ; BE-NEXT:    bl __gnu_f2h_ieee
1045 ; BE-NEXT:    nop
1046 ; BE-NEXT:    fmr f1, f30
1047 ; BE-NEXT:    mr r20, r3
1048 ; BE-NEXT:    bl __gnu_f2h_ieee
1049 ; BE-NEXT:    nop
1050 ; BE-NEXT:    lfs f1, 652(r1)
1051 ; BE-NEXT:    mr r19, r3
1052 ; BE-NEXT:    bl __gnu_f2h_ieee
1053 ; BE-NEXT:    nop
1054 ; BE-NEXT:    fmr f1, f31
1055 ; BE-NEXT:    mr r18, r3
1056 ; BE-NEXT:    bl __gnu_f2h_ieee
1057 ; BE-NEXT:    nop
1058 ; BE-NEXT:    lfs f1, 668(r1)
1059 ; BE-NEXT:    mr r17, r3
1060 ; BE-NEXT:    bl __gnu_f2h_ieee
1061 ; BE-NEXT:    nop
1062 ; BE-NEXT:    lfs f1, 660(r1)
1063 ; BE-NEXT:    mr r16, r3
1064 ; BE-NEXT:    bl __gnu_f2h_ieee
1065 ; BE-NEXT:    nop
1066 ; BE-NEXT:    clrldi r3, r3, 48
1067 ; BE-NEXT:    bl __gnu_h2f_ieee
1068 ; BE-NEXT:    nop
1069 ; BE-NEXT:    clrldi r3, r16, 48
1070 ; BE-NEXT:    fmr f31, f1
1071 ; BE-NEXT:    bl __gnu_h2f_ieee
1072 ; BE-NEXT:    nop
1073 ; BE-NEXT:    clrldi r3, r17, 48
1074 ; BE-NEXT:    fmr f30, f1
1075 ; BE-NEXT:    bl __gnu_h2f_ieee
1076 ; BE-NEXT:    nop
1077 ; BE-NEXT:    clrldi r3, r18, 48
1078 ; BE-NEXT:    fmr f29, f1
1079 ; BE-NEXT:    bl __gnu_h2f_ieee
1080 ; BE-NEXT:    nop
1081 ; BE-NEXT:    clrldi r3, r19, 48
1082 ; BE-NEXT:    fmr f28, f1
1083 ; BE-NEXT:    bl __gnu_h2f_ieee
1084 ; BE-NEXT:    nop
1085 ; BE-NEXT:    clrldi r3, r20, 48
1086 ; BE-NEXT:    fmr f27, f1
1087 ; BE-NEXT:    bl __gnu_h2f_ieee
1088 ; BE-NEXT:    nop
1089 ; BE-NEXT:    clrldi r3, r21, 48
1090 ; BE-NEXT:    fmr f26, f1
1091 ; BE-NEXT:    bl __gnu_h2f_ieee
1092 ; BE-NEXT:    nop
1093 ; BE-NEXT:    clrldi r3, r22, 48
1094 ; BE-NEXT:    fmr f25, f1
1095 ; BE-NEXT:    bl __gnu_h2f_ieee
1096 ; BE-NEXT:    nop
1097 ; BE-NEXT:    clrldi r3, r23, 48
1098 ; BE-NEXT:    fmr f24, f1
1099 ; BE-NEXT:    bl __gnu_h2f_ieee
1100 ; BE-NEXT:    nop
1101 ; BE-NEXT:    clrldi r3, r24, 48
1102 ; BE-NEXT:    fmr f23, f1
1103 ; BE-NEXT:    bl __gnu_h2f_ieee
1104 ; BE-NEXT:    nop
1105 ; BE-NEXT:    clrldi r3, r25, 48
1106 ; BE-NEXT:    fmr f22, f1
1107 ; BE-NEXT:    bl __gnu_h2f_ieee
1108 ; BE-NEXT:    nop
1109 ; BE-NEXT:    clrldi r3, r26, 48
1110 ; BE-NEXT:    fmr f21, f1
1111 ; BE-NEXT:    bl __gnu_h2f_ieee
1112 ; BE-NEXT:    nop
1113 ; BE-NEXT:    clrldi r3, r27, 48
1114 ; BE-NEXT:    fmr f20, f1
1115 ; BE-NEXT:    bl __gnu_h2f_ieee
1116 ; BE-NEXT:    nop
1117 ; BE-NEXT:    clrldi r3, r28, 48
1118 ; BE-NEXT:    fmr f19, f1
1119 ; BE-NEXT:    bl __gnu_h2f_ieee
1120 ; BE-NEXT:    nop
1121 ; BE-NEXT:    clrldi r3, r29, 48
1122 ; BE-NEXT:    fmr f18, f1
1123 ; BE-NEXT:    bl __gnu_h2f_ieee
1124 ; BE-NEXT:    nop
1125 ; BE-NEXT:    clrldi r3, r30, 48
1126 ; BE-NEXT:    fmr f17, f1
1127 ; BE-NEXT:    bl __gnu_h2f_ieee
1128 ; BE-NEXT:    nop
1129 ; BE-NEXT:    bl llrintf
1130 ; BE-NEXT:    nop
1131 ; BE-NEXT:    fmr f1, f17
1132 ; BE-NEXT:    std r3, 120(r1)
1133 ; BE-NEXT:    bl llrintf
1134 ; BE-NEXT:    nop
1135 ; BE-NEXT:    fmr f1, f18
1136 ; BE-NEXT:    std r3, 112(r1)
1137 ; BE-NEXT:    bl llrintf
1138 ; BE-NEXT:    nop
1139 ; BE-NEXT:    fmr f1, f19
1140 ; BE-NEXT:    std r3, 136(r1)
1141 ; BE-NEXT:    bl llrintf
1142 ; BE-NEXT:    nop
1143 ; BE-NEXT:    fmr f1, f20
1144 ; BE-NEXT:    std r3, 128(r1)
1145 ; BE-NEXT:    bl llrintf
1146 ; BE-NEXT:    nop
1147 ; BE-NEXT:    fmr f1, f21
1148 ; BE-NEXT:    std r3, 152(r1)
1149 ; BE-NEXT:    bl llrintf
1150 ; BE-NEXT:    nop
1151 ; BE-NEXT:    fmr f1, f22
1152 ; BE-NEXT:    std r3, 144(r1)
1153 ; BE-NEXT:    bl llrintf
1154 ; BE-NEXT:    nop
1155 ; BE-NEXT:    fmr f1, f23
1156 ; BE-NEXT:    std r3, 168(r1)
1157 ; BE-NEXT:    bl llrintf
1158 ; BE-NEXT:    nop
1159 ; BE-NEXT:    fmr f1, f24
1160 ; BE-NEXT:    std r3, 160(r1)
1161 ; BE-NEXT:    bl llrintf
1162 ; BE-NEXT:    nop
1163 ; BE-NEXT:    fmr f1, f25
1164 ; BE-NEXT:    std r3, 184(r1)
1165 ; BE-NEXT:    bl llrintf
1166 ; BE-NEXT:    nop
1167 ; BE-NEXT:    fmr f1, f26
1168 ; BE-NEXT:    std r3, 176(r1)
1169 ; BE-NEXT:    bl llrintf
1170 ; BE-NEXT:    nop
1171 ; BE-NEXT:    fmr f1, f27
1172 ; BE-NEXT:    std r3, 200(r1)
1173 ; BE-NEXT:    bl llrintf
1174 ; BE-NEXT:    nop
1175 ; BE-NEXT:    fmr f1, f28
1176 ; BE-NEXT:    std r3, 192(r1)
1177 ; BE-NEXT:    bl llrintf
1178 ; BE-NEXT:    nop
1179 ; BE-NEXT:    fmr f1, f29
1180 ; BE-NEXT:    std r3, 216(r1)
1181 ; BE-NEXT:    bl llrintf
1182 ; BE-NEXT:    nop
1183 ; BE-NEXT:    fmr f1, f30
1184 ; BE-NEXT:    std r3, 208(r1)
1185 ; BE-NEXT:    bl llrintf
1186 ; BE-NEXT:    nop
1187 ; BE-NEXT:    fmr f1, f31
1188 ; BE-NEXT:    std r3, 232(r1)
1189 ; BE-NEXT:    bl llrintf
1190 ; BE-NEXT:    nop
1191 ; BE-NEXT:    std r3, 224(r1)
1192 ; BE-NEXT:    addi r3, r1, 112
1193 ; BE-NEXT:    ld r30, 360(r1) # 8-byte Folded Reload
1194 ; BE-NEXT:    lfd f31, 488(r1) # 8-byte Folded Reload
1195 ; BE-NEXT:    lfd f30, 480(r1) # 8-byte Folded Reload
1196 ; BE-NEXT:    lfd f29, 472(r1) # 8-byte Folded Reload
1197 ; BE-NEXT:    lxvd2x v2, 0, r3
1198 ; BE-NEXT:    addi r3, r1, 128
1199 ; BE-NEXT:    lfd f28, 464(r1) # 8-byte Folded Reload
1200 ; BE-NEXT:    lfd f27, 456(r1) # 8-byte Folded Reload
1201 ; BE-NEXT:    lfd f26, 448(r1) # 8-byte Folded Reload
1202 ; BE-NEXT:    ld r29, 352(r1) # 8-byte Folded Reload
1203 ; BE-NEXT:    ld r28, 344(r1) # 8-byte Folded Reload
1204 ; BE-NEXT:    lxvd2x v3, 0, r3
1205 ; BE-NEXT:    addi r3, r1, 144
1206 ; BE-NEXT:    lfd f25, 440(r1) # 8-byte Folded Reload
1207 ; BE-NEXT:    lfd f24, 432(r1) # 8-byte Folded Reload
1208 ; BE-NEXT:    lfd f23, 424(r1) # 8-byte Folded Reload
1209 ; BE-NEXT:    ld r27, 336(r1) # 8-byte Folded Reload
1210 ; BE-NEXT:    ld r26, 328(r1) # 8-byte Folded Reload
1211 ; BE-NEXT:    lxvd2x v4, 0, r3
1212 ; BE-NEXT:    addi r3, r1, 160
1213 ; BE-NEXT:    lfd f22, 416(r1) # 8-byte Folded Reload
1214 ; BE-NEXT:    lfd f21, 408(r1) # 8-byte Folded Reload
1215 ; BE-NEXT:    lfd f20, 400(r1) # 8-byte Folded Reload
1216 ; BE-NEXT:    ld r25, 320(r1) # 8-byte Folded Reload
1217 ; BE-NEXT:    ld r24, 312(r1) # 8-byte Folded Reload
1218 ; BE-NEXT:    lxvd2x v5, 0, r3
1219 ; BE-NEXT:    addi r3, r1, 176
1220 ; BE-NEXT:    lfd f19, 392(r1) # 8-byte Folded Reload
1221 ; BE-NEXT:    lfd f18, 384(r1) # 8-byte Folded Reload
1222 ; BE-NEXT:    lfd f17, 376(r1) # 8-byte Folded Reload
1223 ; BE-NEXT:    ld r23, 304(r1) # 8-byte Folded Reload
1224 ; BE-NEXT:    ld r22, 296(r1) # 8-byte Folded Reload
1225 ; BE-NEXT:    lxvd2x v6, 0, r3
1226 ; BE-NEXT:    addi r3, r1, 192
1227 ; BE-NEXT:    ld r21, 288(r1) # 8-byte Folded Reload
1228 ; BE-NEXT:    ld r20, 280(r1) # 8-byte Folded Reload
1229 ; BE-NEXT:    ld r19, 272(r1) # 8-byte Folded Reload
1230 ; BE-NEXT:    ld r18, 264(r1) # 8-byte Folded Reload
1231 ; BE-NEXT:    ld r17, 256(r1) # 8-byte Folded Reload
1232 ; BE-NEXT:    ld r16, 248(r1) # 8-byte Folded Reload
1233 ; BE-NEXT:    lxvd2x v7, 0, r3
1234 ; BE-NEXT:    addi r3, r1, 208
1235 ; BE-NEXT:    lxvd2x v8, 0, r3
1236 ; BE-NEXT:    addi r3, r1, 224
1237 ; BE-NEXT:    lxvd2x v9, 0, r3
1238 ; BE-NEXT:    addi r1, r1, 496
1239 ; BE-NEXT:    ld r0, 16(r1)
1240 ; BE-NEXT:    mtlr r0
1241 ; BE-NEXT:    blr
1243 ; CHECK-LABEL: llrint_v16i64_v16f16:
1244 ; CHECK:       # %bb.0:
1245 ; CHECK-NEXT:    mflr r0
1246 ; CHECK-NEXT:    stdu r1, -432(r1)
1247 ; CHECK-NEXT:    std r0, 448(r1)
1248 ; CHECK-NEXT:    .cfi_def_cfa_offset 432
1249 ; CHECK-NEXT:    .cfi_offset lr, 16
1250 ; CHECK-NEXT:    .cfi_offset r16, -248
1251 ; CHECK-NEXT:    .cfi_offset r17, -240
1252 ; CHECK-NEXT:    .cfi_offset r18, -232
1253 ; CHECK-NEXT:    .cfi_offset r19, -224
1254 ; CHECK-NEXT:    .cfi_offset r20, -216
1255 ; CHECK-NEXT:    .cfi_offset r21, -208
1256 ; CHECK-NEXT:    .cfi_offset r22, -200
1257 ; CHECK-NEXT:    .cfi_offset r23, -192
1258 ; CHECK-NEXT:    .cfi_offset r24, -184
1259 ; CHECK-NEXT:    .cfi_offset r25, -176
1260 ; CHECK-NEXT:    .cfi_offset r26, -168
1261 ; CHECK-NEXT:    .cfi_offset r27, -160
1262 ; CHECK-NEXT:    .cfi_offset r28, -152
1263 ; CHECK-NEXT:    .cfi_offset r29, -144
1264 ; CHECK-NEXT:    .cfi_offset r30, -136
1265 ; CHECK-NEXT:    .cfi_offset f17, -120
1266 ; CHECK-NEXT:    .cfi_offset f18, -112
1267 ; CHECK-NEXT:    .cfi_offset f19, -104
1268 ; CHECK-NEXT:    .cfi_offset f20, -96
1269 ; CHECK-NEXT:    .cfi_offset f21, -88
1270 ; CHECK-NEXT:    .cfi_offset f22, -80
1271 ; CHECK-NEXT:    .cfi_offset f23, -72
1272 ; CHECK-NEXT:    .cfi_offset f24, -64
1273 ; CHECK-NEXT:    .cfi_offset f25, -56
1274 ; CHECK-NEXT:    .cfi_offset f26, -48
1275 ; CHECK-NEXT:    .cfi_offset f27, -40
1276 ; CHECK-NEXT:    .cfi_offset f28, -32
1277 ; CHECK-NEXT:    .cfi_offset f29, -24
1278 ; CHECK-NEXT:    .cfi_offset f30, -16
1279 ; CHECK-NEXT:    .cfi_offset f31, -8
1280 ; CHECK-NEXT:    .cfi_offset v24, -384
1281 ; CHECK-NEXT:    .cfi_offset v25, -368
1282 ; CHECK-NEXT:    .cfi_offset v26, -352
1283 ; CHECK-NEXT:    .cfi_offset v27, -336
1284 ; CHECK-NEXT:    .cfi_offset v28, -320
1285 ; CHECK-NEXT:    .cfi_offset v29, -304
1286 ; CHECK-NEXT:    .cfi_offset v30, -288
1287 ; CHECK-NEXT:    .cfi_offset v31, -272
1288 ; CHECK-NEXT:    li r3, 48
1289 ; CHECK-NEXT:    std r16, 184(r1) # 8-byte Folded Spill
1290 ; CHECK-NEXT:    std r17, 192(r1) # 8-byte Folded Spill
1291 ; CHECK-NEXT:    std r18, 200(r1) # 8-byte Folded Spill
1292 ; CHECK-NEXT:    std r19, 208(r1) # 8-byte Folded Spill
1293 ; CHECK-NEXT:    std r20, 216(r1) # 8-byte Folded Spill
1294 ; CHECK-NEXT:    std r21, 224(r1) # 8-byte Folded Spill
1295 ; CHECK-NEXT:    std r22, 232(r1) # 8-byte Folded Spill
1296 ; CHECK-NEXT:    stvx v24, r1, r3 # 16-byte Folded Spill
1297 ; CHECK-NEXT:    li r3, 64
1298 ; CHECK-NEXT:    std r23, 240(r1) # 8-byte Folded Spill
1299 ; CHECK-NEXT:    std r24, 248(r1) # 8-byte Folded Spill
1300 ; CHECK-NEXT:    std r25, 256(r1) # 8-byte Folded Spill
1301 ; CHECK-NEXT:    std r26, 264(r1) # 8-byte Folded Spill
1302 ; CHECK-NEXT:    std r27, 272(r1) # 8-byte Folded Spill
1303 ; CHECK-NEXT:    std r28, 280(r1) # 8-byte Folded Spill
1304 ; CHECK-NEXT:    stvx v25, r1, r3 # 16-byte Folded Spill
1305 ; CHECK-NEXT:    li r3, 80
1306 ; CHECK-NEXT:    std r29, 288(r1) # 8-byte Folded Spill
1307 ; CHECK-NEXT:    std r30, 296(r1) # 8-byte Folded Spill
1308 ; CHECK-NEXT:    stfd f17, 312(r1) # 8-byte Folded Spill
1309 ; CHECK-NEXT:    stfd f18, 320(r1) # 8-byte Folded Spill
1310 ; CHECK-NEXT:    stfd f19, 328(r1) # 8-byte Folded Spill
1311 ; CHECK-NEXT:    stfd f20, 336(r1) # 8-byte Folded Spill
1312 ; CHECK-NEXT:    fmr f20, f2
1313 ; CHECK-NEXT:    stvx v26, r1, r3 # 16-byte Folded Spill
1314 ; CHECK-NEXT:    li r3, 96
1315 ; CHECK-NEXT:    stfd f21, 344(r1) # 8-byte Folded Spill
1316 ; CHECK-NEXT:    fmr f21, f3
1317 ; CHECK-NEXT:    stfd f22, 352(r1) # 8-byte Folded Spill
1318 ; CHECK-NEXT:    fmr f22, f4
1319 ; CHECK-NEXT:    stfd f23, 360(r1) # 8-byte Folded Spill
1320 ; CHECK-NEXT:    fmr f23, f5
1321 ; CHECK-NEXT:    stvx v27, r1, r3 # 16-byte Folded Spill
1322 ; CHECK-NEXT:    li r3, 112
1323 ; CHECK-NEXT:    stfd f24, 368(r1) # 8-byte Folded Spill
1324 ; CHECK-NEXT:    fmr f24, f6
1325 ; CHECK-NEXT:    stfd f25, 376(r1) # 8-byte Folded Spill
1326 ; CHECK-NEXT:    fmr f25, f7
1327 ; CHECK-NEXT:    stfd f26, 384(r1) # 8-byte Folded Spill
1328 ; CHECK-NEXT:    fmr f26, f8
1329 ; CHECK-NEXT:    stvx v28, r1, r3 # 16-byte Folded Spill
1330 ; CHECK-NEXT:    li r3, 128
1331 ; CHECK-NEXT:    stfd f27, 392(r1) # 8-byte Folded Spill
1332 ; CHECK-NEXT:    fmr f27, f9
1333 ; CHECK-NEXT:    stfd f28, 400(r1) # 8-byte Folded Spill
1334 ; CHECK-NEXT:    fmr f28, f10
1335 ; CHECK-NEXT:    stfd f29, 408(r1) # 8-byte Folded Spill
1336 ; CHECK-NEXT:    fmr f29, f11
1337 ; CHECK-NEXT:    stvx v29, r1, r3 # 16-byte Folded Spill
1338 ; CHECK-NEXT:    li r3, 144
1339 ; CHECK-NEXT:    stfd f30, 416(r1) # 8-byte Folded Spill
1340 ; CHECK-NEXT:    fmr f30, f12
1341 ; CHECK-NEXT:    stfd f31, 424(r1) # 8-byte Folded Spill
1342 ; CHECK-NEXT:    fmr f31, f13
1343 ; CHECK-NEXT:    stvx v30, r1, r3 # 16-byte Folded Spill
1344 ; CHECK-NEXT:    li r3, 160
1345 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
1346 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1347 ; CHECK-NEXT:    nop
1348 ; CHECK-NEXT:    fmr f1, f20
1349 ; CHECK-NEXT:    mr r30, r3
1350 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1351 ; CHECK-NEXT:    nop
1352 ; CHECK-NEXT:    fmr f1, f21
1353 ; CHECK-NEXT:    mr r29, r3
1354 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1355 ; CHECK-NEXT:    nop
1356 ; CHECK-NEXT:    fmr f1, f22
1357 ; CHECK-NEXT:    mr r28, r3
1358 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1359 ; CHECK-NEXT:    nop
1360 ; CHECK-NEXT:    fmr f1, f23
1361 ; CHECK-NEXT:    mr r27, r3
1362 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1363 ; CHECK-NEXT:    nop
1364 ; CHECK-NEXT:    fmr f1, f24
1365 ; CHECK-NEXT:    mr r26, r3
1366 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1367 ; CHECK-NEXT:    nop
1368 ; CHECK-NEXT:    fmr f1, f25
1369 ; CHECK-NEXT:    mr r25, r3
1370 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1371 ; CHECK-NEXT:    nop
1372 ; CHECK-NEXT:    fmr f1, f26
1373 ; CHECK-NEXT:    mr r24, r3
1374 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1375 ; CHECK-NEXT:    nop
1376 ; CHECK-NEXT:    fmr f1, f27
1377 ; CHECK-NEXT:    mr r23, r3
1378 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1379 ; CHECK-NEXT:    nop
1380 ; CHECK-NEXT:    fmr f1, f28
1381 ; CHECK-NEXT:    mr r22, r3
1382 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1383 ; CHECK-NEXT:    nop
1384 ; CHECK-NEXT:    fmr f1, f29
1385 ; CHECK-NEXT:    mr r21, r3
1386 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1387 ; CHECK-NEXT:    nop
1388 ; CHECK-NEXT:    fmr f1, f30
1389 ; CHECK-NEXT:    mr r20, r3
1390 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1391 ; CHECK-NEXT:    nop
1392 ; CHECK-NEXT:    fmr f1, f31
1393 ; CHECK-NEXT:    mr r19, r3
1394 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1395 ; CHECK-NEXT:    nop
1396 ; CHECK-NEXT:    lfs f1, 568(r1)
1397 ; CHECK-NEXT:    mr r18, r3
1398 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1399 ; CHECK-NEXT:    nop
1400 ; CHECK-NEXT:    lfs f1, 576(r1)
1401 ; CHECK-NEXT:    mr r17, r3
1402 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1403 ; CHECK-NEXT:    nop
1404 ; CHECK-NEXT:    lfs f1, 584(r1)
1405 ; CHECK-NEXT:    mr r16, r3
1406 ; CHECK-NEXT:    bl __gnu_f2h_ieee
1407 ; CHECK-NEXT:    nop
1408 ; CHECK-NEXT:    clrldi r3, r3, 48
1409 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1410 ; CHECK-NEXT:    nop
1411 ; CHECK-NEXT:    clrldi r3, r16, 48
1412 ; CHECK-NEXT:    fmr f31, f1
1413 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1414 ; CHECK-NEXT:    nop
1415 ; CHECK-NEXT:    clrldi r3, r17, 48
1416 ; CHECK-NEXT:    fmr f30, f1
1417 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1418 ; CHECK-NEXT:    nop
1419 ; CHECK-NEXT:    clrldi r3, r18, 48
1420 ; CHECK-NEXT:    fmr f29, f1
1421 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1422 ; CHECK-NEXT:    nop
1423 ; CHECK-NEXT:    clrldi r3, r19, 48
1424 ; CHECK-NEXT:    fmr f28, f1
1425 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1426 ; CHECK-NEXT:    nop
1427 ; CHECK-NEXT:    clrldi r3, r20, 48
1428 ; CHECK-NEXT:    fmr f27, f1
1429 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1430 ; CHECK-NEXT:    nop
1431 ; CHECK-NEXT:    clrldi r3, r21, 48
1432 ; CHECK-NEXT:    fmr f26, f1
1433 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1434 ; CHECK-NEXT:    nop
1435 ; CHECK-NEXT:    clrldi r3, r22, 48
1436 ; CHECK-NEXT:    fmr f25, f1
1437 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1438 ; CHECK-NEXT:    nop
1439 ; CHECK-NEXT:    clrldi r3, r23, 48
1440 ; CHECK-NEXT:    fmr f24, f1
1441 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1442 ; CHECK-NEXT:    nop
1443 ; CHECK-NEXT:    clrldi r3, r24, 48
1444 ; CHECK-NEXT:    fmr f23, f1
1445 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1446 ; CHECK-NEXT:    nop
1447 ; CHECK-NEXT:    clrldi r3, r25, 48
1448 ; CHECK-NEXT:    fmr f22, f1
1449 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1450 ; CHECK-NEXT:    nop
1451 ; CHECK-NEXT:    clrldi r3, r26, 48
1452 ; CHECK-NEXT:    fmr f21, f1
1453 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1454 ; CHECK-NEXT:    nop
1455 ; CHECK-NEXT:    clrldi r3, r27, 48
1456 ; CHECK-NEXT:    fmr f20, f1
1457 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1458 ; CHECK-NEXT:    nop
1459 ; CHECK-NEXT:    clrldi r3, r28, 48
1460 ; CHECK-NEXT:    fmr f19, f1
1461 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1462 ; CHECK-NEXT:    nop
1463 ; CHECK-NEXT:    clrldi r3, r29, 48
1464 ; CHECK-NEXT:    fmr f18, f1
1465 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1466 ; CHECK-NEXT:    nop
1467 ; CHECK-NEXT:    clrldi r3, r30, 48
1468 ; CHECK-NEXT:    fmr f17, f1
1469 ; CHECK-NEXT:    bl __gnu_h2f_ieee
1470 ; CHECK-NEXT:    nop
1471 ; CHECK-NEXT:    bl llrintf
1472 ; CHECK-NEXT:    nop
1473 ; CHECK-NEXT:    fmr f1, f17
1474 ; CHECK-NEXT:    mtvsrd v31, r3
1475 ; CHECK-NEXT:    bl llrintf
1476 ; CHECK-NEXT:    nop
1477 ; CHECK-NEXT:    fmr f1, f18
1478 ; CHECK-NEXT:    mtfprd f0, r3
1479 ; CHECK-NEXT:    xxmrghd v31, vs0, v31
1480 ; CHECK-NEXT:    bl llrintf
1481 ; CHECK-NEXT:    nop
1482 ; CHECK-NEXT:    fmr f1, f19
1483 ; CHECK-NEXT:    mtvsrd v30, r3
1484 ; CHECK-NEXT:    bl llrintf
1485 ; CHECK-NEXT:    nop
1486 ; CHECK-NEXT:    fmr f1, f20
1487 ; CHECK-NEXT:    mtfprd f0, r3
1488 ; CHECK-NEXT:    xxmrghd v30, vs0, v30
1489 ; CHECK-NEXT:    bl llrintf
1490 ; CHECK-NEXT:    nop
1491 ; CHECK-NEXT:    fmr f1, f21
1492 ; CHECK-NEXT:    mtvsrd v29, r3
1493 ; CHECK-NEXT:    bl llrintf
1494 ; CHECK-NEXT:    nop
1495 ; CHECK-NEXT:    fmr f1, f22
1496 ; CHECK-NEXT:    mtfprd f0, r3
1497 ; CHECK-NEXT:    xxmrghd v29, vs0, v29
1498 ; CHECK-NEXT:    bl llrintf
1499 ; CHECK-NEXT:    nop
1500 ; CHECK-NEXT:    fmr f1, f23
1501 ; CHECK-NEXT:    mtvsrd v28, r3
1502 ; CHECK-NEXT:    bl llrintf
1503 ; CHECK-NEXT:    nop
1504 ; CHECK-NEXT:    fmr f1, f24
1505 ; CHECK-NEXT:    mtfprd f0, r3
1506 ; CHECK-NEXT:    xxmrghd v28, vs0, v28
1507 ; CHECK-NEXT:    bl llrintf
1508 ; CHECK-NEXT:    nop
1509 ; CHECK-NEXT:    fmr f1, f25
1510 ; CHECK-NEXT:    mtvsrd v27, r3
1511 ; CHECK-NEXT:    bl llrintf
1512 ; CHECK-NEXT:    nop
1513 ; CHECK-NEXT:    fmr f1, f26
1514 ; CHECK-NEXT:    mtfprd f0, r3
1515 ; CHECK-NEXT:    xxmrghd v27, vs0, v27
1516 ; CHECK-NEXT:    bl llrintf
1517 ; CHECK-NEXT:    nop
1518 ; CHECK-NEXT:    fmr f1, f27
1519 ; CHECK-NEXT:    mtvsrd v26, r3
1520 ; CHECK-NEXT:    bl llrintf
1521 ; CHECK-NEXT:    nop
1522 ; CHECK-NEXT:    fmr f1, f28
1523 ; CHECK-NEXT:    mtfprd f0, r3
1524 ; CHECK-NEXT:    xxmrghd v26, vs0, v26
1525 ; CHECK-NEXT:    bl llrintf
1526 ; CHECK-NEXT:    nop
1527 ; CHECK-NEXT:    fmr f1, f29
1528 ; CHECK-NEXT:    mtvsrd v25, r3
1529 ; CHECK-NEXT:    bl llrintf
1530 ; CHECK-NEXT:    nop
1531 ; CHECK-NEXT:    fmr f1, f30
1532 ; CHECK-NEXT:    mtfprd f0, r3
1533 ; CHECK-NEXT:    xxmrghd v25, vs0, v25
1534 ; CHECK-NEXT:    bl llrintf
1535 ; CHECK-NEXT:    nop
1536 ; CHECK-NEXT:    fmr f1, f31
1537 ; CHECK-NEXT:    mtvsrd v24, r3
1538 ; CHECK-NEXT:    bl llrintf
1539 ; CHECK-NEXT:    nop
1540 ; CHECK-NEXT:    mtfprd f0, r3
1541 ; CHECK-NEXT:    li r3, 160
1542 ; CHECK-NEXT:    vmr v2, v31
1543 ; CHECK-NEXT:    lfd f31, 424(r1) # 8-byte Folded Reload
1544 ; CHECK-NEXT:    vmr v3, v30
1545 ; CHECK-NEXT:    vmr v4, v29
1546 ; CHECK-NEXT:    lfd f30, 416(r1) # 8-byte Folded Reload
1547 ; CHECK-NEXT:    lfd f29, 408(r1) # 8-byte Folded Reload
1548 ; CHECK-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload
1549 ; CHECK-NEXT:    li r3, 144
1550 ; CHECK-NEXT:    vmr v5, v28
1551 ; CHECK-NEXT:    vmr v6, v27
1552 ; CHECK-NEXT:    vmr v7, v26
1553 ; CHECK-NEXT:    vmr v8, v25
1554 ; CHECK-NEXT:    lfd f28, 400(r1) # 8-byte Folded Reload
1555 ; CHECK-NEXT:    lfd f27, 392(r1) # 8-byte Folded Reload
1556 ; CHECK-NEXT:    lvx v30, r1, r3 # 16-byte Folded Reload
1557 ; CHECK-NEXT:    li r3, 128
1558 ; CHECK-NEXT:    lfd f26, 384(r1) # 8-byte Folded Reload
1559 ; CHECK-NEXT:    lfd f25, 376(r1) # 8-byte Folded Reload
1560 ; CHECK-NEXT:    xxmrghd v9, vs0, v24
1561 ; CHECK-NEXT:    lfd f24, 368(r1) # 8-byte Folded Reload
1562 ; CHECK-NEXT:    lfd f23, 360(r1) # 8-byte Folded Reload
1563 ; CHECK-NEXT:    lfd f22, 352(r1) # 8-byte Folded Reload
1564 ; CHECK-NEXT:    lvx v29, r1, r3 # 16-byte Folded Reload
1565 ; CHECK-NEXT:    li r3, 112
1566 ; CHECK-NEXT:    lfd f21, 344(r1) # 8-byte Folded Reload
1567 ; CHECK-NEXT:    ld r30, 296(r1) # 8-byte Folded Reload
1568 ; CHECK-NEXT:    lfd f20, 336(r1) # 8-byte Folded Reload
1569 ; CHECK-NEXT:    lfd f19, 328(r1) # 8-byte Folded Reload
1570 ; CHECK-NEXT:    ld r29, 288(r1) # 8-byte Folded Reload
1571 ; CHECK-NEXT:    ld r28, 280(r1) # 8-byte Folded Reload
1572 ; CHECK-NEXT:    lvx v28, r1, r3 # 16-byte Folded Reload
1573 ; CHECK-NEXT:    li r3, 96
1574 ; CHECK-NEXT:    lfd f18, 320(r1) # 8-byte Folded Reload
1575 ; CHECK-NEXT:    ld r27, 272(r1) # 8-byte Folded Reload
1576 ; CHECK-NEXT:    lfd f17, 312(r1) # 8-byte Folded Reload
1577 ; CHECK-NEXT:    ld r26, 264(r1) # 8-byte Folded Reload
1578 ; CHECK-NEXT:    ld r25, 256(r1) # 8-byte Folded Reload
1579 ; CHECK-NEXT:    ld r24, 248(r1) # 8-byte Folded Reload
1580 ; CHECK-NEXT:    lvx v27, r1, r3 # 16-byte Folded Reload
1581 ; CHECK-NEXT:    li r3, 80
1582 ; CHECK-NEXT:    ld r23, 240(r1) # 8-byte Folded Reload
1583 ; CHECK-NEXT:    ld r22, 232(r1) # 8-byte Folded Reload
1584 ; CHECK-NEXT:    ld r21, 224(r1) # 8-byte Folded Reload
1585 ; CHECK-NEXT:    ld r20, 216(r1) # 8-byte Folded Reload
1586 ; CHECK-NEXT:    ld r19, 208(r1) # 8-byte Folded Reload
1587 ; CHECK-NEXT:    ld r18, 200(r1) # 8-byte Folded Reload
1588 ; CHECK-NEXT:    lvx v26, r1, r3 # 16-byte Folded Reload
1589 ; CHECK-NEXT:    li r3, 64
1590 ; CHECK-NEXT:    ld r17, 192(r1) # 8-byte Folded Reload
1591 ; CHECK-NEXT:    ld r16, 184(r1) # 8-byte Folded Reload
1592 ; CHECK-NEXT:    lvx v25, r1, r3 # 16-byte Folded Reload
1593 ; CHECK-NEXT:    li r3, 48
1594 ; CHECK-NEXT:    lvx v24, r1, r3 # 16-byte Folded Reload
1595 ; CHECK-NEXT:    addi r1, r1, 432
1596 ; CHECK-NEXT:    ld r0, 16(r1)
1597 ; CHECK-NEXT:    mtlr r0
1598 ; CHECK-NEXT:    blr
1600 ; FAST-LABEL: llrint_v16i64_v16f16:
1601 ; FAST:       # %bb.0:
1602 ; FAST-NEXT:    mflr r0
1603 ; FAST-NEXT:    .cfi_def_cfa_offset 160
1604 ; FAST-NEXT:    .cfi_offset lr, 16
1605 ; FAST-NEXT:    .cfi_offset f16, -128
1606 ; FAST-NEXT:    .cfi_offset f17, -120
1607 ; FAST-NEXT:    .cfi_offset f18, -112
1608 ; FAST-NEXT:    .cfi_offset f19, -104
1609 ; FAST-NEXT:    .cfi_offset f20, -96
1610 ; FAST-NEXT:    .cfi_offset f21, -88
1611 ; FAST-NEXT:    .cfi_offset f22, -80
1612 ; FAST-NEXT:    .cfi_offset f23, -72
1613 ; FAST-NEXT:    .cfi_offset f24, -64
1614 ; FAST-NEXT:    .cfi_offset f25, -56
1615 ; FAST-NEXT:    .cfi_offset f26, -48
1616 ; FAST-NEXT:    .cfi_offset f27, -40
1617 ; FAST-NEXT:    .cfi_offset f28, -32
1618 ; FAST-NEXT:    .cfi_offset f29, -24
1619 ; FAST-NEXT:    .cfi_offset f30, -16
1620 ; FAST-NEXT:    .cfi_offset f31, -8
1621 ; FAST-NEXT:    stfd f16, -128(r1) # 8-byte Folded Spill
1622 ; FAST-NEXT:    stfd f17, -120(r1) # 8-byte Folded Spill
1623 ; FAST-NEXT:    stfd f18, -112(r1) # 8-byte Folded Spill
1624 ; FAST-NEXT:    stfd f19, -104(r1) # 8-byte Folded Spill
1625 ; FAST-NEXT:    stfd f20, -96(r1) # 8-byte Folded Spill
1626 ; FAST-NEXT:    stfd f21, -88(r1) # 8-byte Folded Spill
1627 ; FAST-NEXT:    stfd f22, -80(r1) # 8-byte Folded Spill
1628 ; FAST-NEXT:    stfd f23, -72(r1) # 8-byte Folded Spill
1629 ; FAST-NEXT:    stfd f24, -64(r1) # 8-byte Folded Spill
1630 ; FAST-NEXT:    stfd f25, -56(r1) # 8-byte Folded Spill
1631 ; FAST-NEXT:    stfd f26, -48(r1) # 8-byte Folded Spill
1632 ; FAST-NEXT:    stfd f27, -40(r1) # 8-byte Folded Spill
1633 ; FAST-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill
1634 ; FAST-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill
1635 ; FAST-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill
1636 ; FAST-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill
1637 ; FAST-NEXT:    stdu r1, -160(r1)
1638 ; FAST-NEXT:    fmr f26, f1
1639 ; FAST-NEXT:    lfs f1, 312(r1)
1640 ; FAST-NEXT:    std r0, 176(r1)
1641 ; FAST-NEXT:    fmr f28, f13
1642 ; FAST-NEXT:    fmr f27, f12
1643 ; FAST-NEXT:    fmr f24, f11
1644 ; FAST-NEXT:    fmr f21, f10
1645 ; FAST-NEXT:    fmr f19, f9
1646 ; FAST-NEXT:    fmr f18, f8
1647 ; FAST-NEXT:    fmr f17, f7
1648 ; FAST-NEXT:    fmr f16, f6
1649 ; FAST-NEXT:    fmr f20, f5
1650 ; FAST-NEXT:    fmr f22, f4
1651 ; FAST-NEXT:    fmr f23, f3
1652 ; FAST-NEXT:    fmr f25, f2
1653 ; FAST-NEXT:    bl __gnu_f2h_ieee
1654 ; FAST-NEXT:    nop
1655 ; FAST-NEXT:    clrldi r3, r3, 48
1656 ; FAST-NEXT:    bl __gnu_h2f_ieee
1657 ; FAST-NEXT:    nop
1658 ; FAST-NEXT:    fmr f31, f1
1659 ; FAST-NEXT:    lfs f1, 304(r1)
1660 ; FAST-NEXT:    bl __gnu_f2h_ieee
1661 ; FAST-NEXT:    nop
1662 ; FAST-NEXT:    clrldi r3, r3, 48
1663 ; FAST-NEXT:    bl __gnu_h2f_ieee
1664 ; FAST-NEXT:    nop
1665 ; FAST-NEXT:    fmr f30, f1
1666 ; FAST-NEXT:    lfs f1, 296(r1)
1667 ; FAST-NEXT:    bl __gnu_f2h_ieee
1668 ; FAST-NEXT:    nop
1669 ; FAST-NEXT:    clrldi r3, r3, 48
1670 ; FAST-NEXT:    bl __gnu_h2f_ieee
1671 ; FAST-NEXT:    nop
1672 ; FAST-NEXT:    fmr f29, f1
1673 ; FAST-NEXT:    fmr f1, f28
1674 ; FAST-NEXT:    bl __gnu_f2h_ieee
1675 ; FAST-NEXT:    nop
1676 ; FAST-NEXT:    clrldi r3, r3, 48
1677 ; FAST-NEXT:    bl __gnu_h2f_ieee
1678 ; FAST-NEXT:    nop
1679 ; FAST-NEXT:    fmr f28, f1
1680 ; FAST-NEXT:    fmr f1, f27
1681 ; FAST-NEXT:    bl __gnu_f2h_ieee
1682 ; FAST-NEXT:    nop
1683 ; FAST-NEXT:    clrldi r3, r3, 48
1684 ; FAST-NEXT:    bl __gnu_h2f_ieee
1685 ; FAST-NEXT:    nop
1686 ; FAST-NEXT:    fmr f27, f1
1687 ; FAST-NEXT:    fmr f1, f24
1688 ; FAST-NEXT:    bl __gnu_f2h_ieee
1689 ; FAST-NEXT:    nop
1690 ; FAST-NEXT:    clrldi r3, r3, 48
1691 ; FAST-NEXT:    bl __gnu_h2f_ieee
1692 ; FAST-NEXT:    nop
1693 ; FAST-NEXT:    fmr f24, f1
1694 ; FAST-NEXT:    fmr f1, f21
1695 ; FAST-NEXT:    bl __gnu_f2h_ieee
1696 ; FAST-NEXT:    nop
1697 ; FAST-NEXT:    clrldi r3, r3, 48
1698 ; FAST-NEXT:    bl __gnu_h2f_ieee
1699 ; FAST-NEXT:    nop
1700 ; FAST-NEXT:    fmr f21, f1
1701 ; FAST-NEXT:    fmr f1, f19
1702 ; FAST-NEXT:    bl __gnu_f2h_ieee
1703 ; FAST-NEXT:    nop
1704 ; FAST-NEXT:    clrldi r3, r3, 48
1705 ; FAST-NEXT:    bl __gnu_h2f_ieee
1706 ; FAST-NEXT:    nop
1707 ; FAST-NEXT:    fmr f19, f1
1708 ; FAST-NEXT:    fmr f1, f18
1709 ; FAST-NEXT:    bl __gnu_f2h_ieee
1710 ; FAST-NEXT:    nop
1711 ; FAST-NEXT:    clrldi r3, r3, 48
1712 ; FAST-NEXT:    bl __gnu_h2f_ieee
1713 ; FAST-NEXT:    nop
1714 ; FAST-NEXT:    fmr f18, f1
1715 ; FAST-NEXT:    fmr f1, f17
1716 ; FAST-NEXT:    bl __gnu_f2h_ieee
1717 ; FAST-NEXT:    nop
1718 ; FAST-NEXT:    clrldi r3, r3, 48
1719 ; FAST-NEXT:    bl __gnu_h2f_ieee
1720 ; FAST-NEXT:    nop
1721 ; FAST-NEXT:    fmr f17, f1
1722 ; FAST-NEXT:    fmr f1, f16
1723 ; FAST-NEXT:    bl __gnu_f2h_ieee
1724 ; FAST-NEXT:    nop
1725 ; FAST-NEXT:    clrldi r3, r3, 48
1726 ; FAST-NEXT:    bl __gnu_h2f_ieee
1727 ; FAST-NEXT:    nop
1728 ; FAST-NEXT:    fmr f16, f1
1729 ; FAST-NEXT:    fmr f1, f20
1730 ; FAST-NEXT:    bl __gnu_f2h_ieee
1731 ; FAST-NEXT:    nop
1732 ; FAST-NEXT:    clrldi r3, r3, 48
1733 ; FAST-NEXT:    bl __gnu_h2f_ieee
1734 ; FAST-NEXT:    nop
1735 ; FAST-NEXT:    fmr f20, f1
1736 ; FAST-NEXT:    fmr f1, f22
1737 ; FAST-NEXT:    bl __gnu_f2h_ieee
1738 ; FAST-NEXT:    nop
1739 ; FAST-NEXT:    clrldi r3, r3, 48
1740 ; FAST-NEXT:    bl __gnu_h2f_ieee
1741 ; FAST-NEXT:    nop
1742 ; FAST-NEXT:    fmr f22, f1
1743 ; FAST-NEXT:    fmr f1, f23
1744 ; FAST-NEXT:    bl __gnu_f2h_ieee
1745 ; FAST-NEXT:    nop
1746 ; FAST-NEXT:    clrldi r3, r3, 48
1747 ; FAST-NEXT:    bl __gnu_h2f_ieee
1748 ; FAST-NEXT:    nop
1749 ; FAST-NEXT:    fmr f23, f1
1750 ; FAST-NEXT:    fmr f1, f25
1751 ; FAST-NEXT:    bl __gnu_f2h_ieee
1752 ; FAST-NEXT:    nop
1753 ; FAST-NEXT:    clrldi r3, r3, 48
1754 ; FAST-NEXT:    bl __gnu_h2f_ieee
1755 ; FAST-NEXT:    nop
1756 ; FAST-NEXT:    fmr f25, f1
1757 ; FAST-NEXT:    fmr f1, f26
1758 ; FAST-NEXT:    bl __gnu_f2h_ieee
1759 ; FAST-NEXT:    nop
1760 ; FAST-NEXT:    clrldi r3, r3, 48
1761 ; FAST-NEXT:    bl __gnu_h2f_ieee
1762 ; FAST-NEXT:    nop
1763 ; FAST-NEXT:    fctid f0, f25
1764 ; FAST-NEXT:    fctid f2, f23
1765 ; FAST-NEXT:    mffprd r3, f0
1766 ; FAST-NEXT:    fctid f3, f22
1767 ; FAST-NEXT:    fctid f4, f20
1768 ; FAST-NEXT:    fctid f5, f16
1769 ; FAST-NEXT:    fctid f6, f17
1770 ; FAST-NEXT:    fctid f7, f18
1771 ; FAST-NEXT:    fctid f8, f19
1772 ; FAST-NEXT:    fctid f9, f21
1773 ; FAST-NEXT:    fctid f10, f24
1774 ; FAST-NEXT:    fctid f1, f1
1775 ; FAST-NEXT:    mtfprd f0, r3
1776 ; FAST-NEXT:    mffprd r3, f2
1777 ; FAST-NEXT:    mtfprd f2, r3
1778 ; FAST-NEXT:    mffprd r3, f3
1779 ; FAST-NEXT:    mtfprd f3, r3
1780 ; FAST-NEXT:    mffprd r3, f4
1781 ; FAST-NEXT:    mtfprd f4, r3
1782 ; FAST-NEXT:    mffprd r3, f5
1783 ; FAST-NEXT:    mtfprd f5, r3
1784 ; FAST-NEXT:    mffprd r3, f6
1785 ; FAST-NEXT:    mtfprd f6, r3
1786 ; FAST-NEXT:    mffprd r3, f7
1787 ; FAST-NEXT:    mtfprd f7, r3
1788 ; FAST-NEXT:    mffprd r3, f8
1789 ; FAST-NEXT:    mtfprd f8, r3
1790 ; FAST-NEXT:    mffprd r3, f9
1791 ; FAST-NEXT:    mtfprd f9, r3
1792 ; FAST-NEXT:    mffprd r3, f10
1793 ; FAST-NEXT:    mtfprd f10, r3
1794 ; FAST-NEXT:    mffprd r3, f1
1795 ; FAST-NEXT:    mtfprd f1, r3
1796 ; FAST-NEXT:    xxmrghd v3, vs3, vs2
1797 ; FAST-NEXT:    xxmrghd v4, vs5, vs4
1798 ; FAST-NEXT:    xxmrghd v5, vs7, vs6
1799 ; FAST-NEXT:    xxmrghd v6, vs9, vs8
1800 ; FAST-NEXT:    xxmrghd v2, vs0, vs1
1801 ; FAST-NEXT:    fctid f0, f27
1802 ; FAST-NEXT:    fctid f1, f29
1803 ; FAST-NEXT:    mffprd r3, f0
1804 ; FAST-NEXT:    mtfprd f0, r3
1805 ; FAST-NEXT:    xxmrghd v7, vs0, vs10
1806 ; FAST-NEXT:    fctid f0, f28
1807 ; FAST-NEXT:    mffprd r3, f0
1808 ; FAST-NEXT:    mtfprd f0, r3
1809 ; FAST-NEXT:    mffprd r3, f1
1810 ; FAST-NEXT:    mtfprd f1, r3
1811 ; FAST-NEXT:    xxmrghd v8, vs1, vs0
1812 ; FAST-NEXT:    fctid f0, f30
1813 ; FAST-NEXT:    fctid f1, f31
1814 ; FAST-NEXT:    mffprd r3, f0
1815 ; FAST-NEXT:    mtfprd f0, r3
1816 ; FAST-NEXT:    mffprd r3, f1
1817 ; FAST-NEXT:    mtfprd f1, r3
1818 ; FAST-NEXT:    xxmrghd v9, vs1, vs0
1819 ; FAST-NEXT:    addi r1, r1, 160
1820 ; FAST-NEXT:    ld r0, 16(r1)
1821 ; FAST-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload
1822 ; FAST-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload
1823 ; FAST-NEXT:    mtlr r0
1824 ; FAST-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload
1825 ; FAST-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload
1826 ; FAST-NEXT:    lfd f27, -40(r1) # 8-byte Folded Reload
1827 ; FAST-NEXT:    lfd f26, -48(r1) # 8-byte Folded Reload
1828 ; FAST-NEXT:    lfd f25, -56(r1) # 8-byte Folded Reload
1829 ; FAST-NEXT:    lfd f24, -64(r1) # 8-byte Folded Reload
1830 ; FAST-NEXT:    lfd f23, -72(r1) # 8-byte Folded Reload
1831 ; FAST-NEXT:    lfd f22, -80(r1) # 8-byte Folded Reload
1832 ; FAST-NEXT:    lfd f21, -88(r1) # 8-byte Folded Reload
1833 ; FAST-NEXT:    lfd f20, -96(r1) # 8-byte Folded Reload
1834 ; FAST-NEXT:    lfd f19, -104(r1) # 8-byte Folded Reload
1835 ; FAST-NEXT:    lfd f18, -112(r1) # 8-byte Folded Reload
1836 ; FAST-NEXT:    lfd f17, -120(r1) # 8-byte Folded Reload
1837 ; FAST-NEXT:    lfd f16, -128(r1) # 8-byte Folded Reload
1838 ; FAST-NEXT:    blr
1839   %a = call <16 x i64> @llvm.llrint.v16i64.v16f16(<16 x half> %x)
1840   ret <16 x i64> %a
1842 declare <16 x i64> @llvm.llrint.v16i64.v16f16(<16 x half>)
1844 define <32 x i64> @llrint_v32i64_v32f16(<32 x half> %x) {
1845 ; BE-LABEL: llrint_v32i64_v32f16:
1846 ; BE:       # %bb.0:
1847 ; BE-NEXT:    mflr r0
1848 ; BE-NEXT:    stdu r1, -864(r1)
1849 ; BE-NEXT:    std r0, 880(r1)
1850 ; BE-NEXT:    .cfi_def_cfa_offset 864
1851 ; BE-NEXT:    .cfi_offset lr, 16
1852 ; BE-NEXT:    .cfi_offset r14, -288
1853 ; BE-NEXT:    .cfi_offset r15, -280
1854 ; BE-NEXT:    .cfi_offset r16, -272
1855 ; BE-NEXT:    .cfi_offset r17, -264
1856 ; BE-NEXT:    .cfi_offset r18, -256
1857 ; BE-NEXT:    .cfi_offset r19, -248
1858 ; BE-NEXT:    .cfi_offset r20, -240
1859 ; BE-NEXT:    .cfi_offset r21, -232
1860 ; BE-NEXT:    .cfi_offset r22, -224
1861 ; BE-NEXT:    .cfi_offset r23, -216
1862 ; BE-NEXT:    .cfi_offset r24, -208
1863 ; BE-NEXT:    .cfi_offset r25, -200
1864 ; BE-NEXT:    .cfi_offset r26, -192
1865 ; BE-NEXT:    .cfi_offset r27, -184
1866 ; BE-NEXT:    .cfi_offset r28, -176
1867 ; BE-NEXT:    .cfi_offset r29, -168
1868 ; BE-NEXT:    .cfi_offset r30, -160
1869 ; BE-NEXT:    .cfi_offset r31, -152
1870 ; BE-NEXT:    .cfi_offset f14, -144
1871 ; BE-NEXT:    .cfi_offset f15, -136
1872 ; BE-NEXT:    .cfi_offset f16, -128
1873 ; BE-NEXT:    .cfi_offset f17, -120
1874 ; BE-NEXT:    .cfi_offset f18, -112
1875 ; BE-NEXT:    .cfi_offset f19, -104
1876 ; BE-NEXT:    .cfi_offset f20, -96
1877 ; BE-NEXT:    .cfi_offset f21, -88
1878 ; BE-NEXT:    .cfi_offset f22, -80
1879 ; BE-NEXT:    .cfi_offset f23, -72
1880 ; BE-NEXT:    .cfi_offset f24, -64
1881 ; BE-NEXT:    .cfi_offset f25, -56
1882 ; BE-NEXT:    .cfi_offset f26, -48
1883 ; BE-NEXT:    .cfi_offset f27, -40
1884 ; BE-NEXT:    .cfi_offset f28, -32
1885 ; BE-NEXT:    .cfi_offset f29, -24
1886 ; BE-NEXT:    .cfi_offset f30, -16
1887 ; BE-NEXT:    .cfi_offset f31, -8
1888 ; BE-NEXT:    stfd f20, 768(r1) # 8-byte Folded Spill
1889 ; BE-NEXT:    fmr f20, f1
1890 ; BE-NEXT:    fmr f1, f2
1891 ; BE-NEXT:    std r14, 576(r1) # 8-byte Folded Spill
1892 ; BE-NEXT:    std r15, 584(r1) # 8-byte Folded Spill
1893 ; BE-NEXT:    std r16, 592(r1) # 8-byte Folded Spill
1894 ; BE-NEXT:    std r17, 600(r1) # 8-byte Folded Spill
1895 ; BE-NEXT:    std r18, 608(r1) # 8-byte Folded Spill
1896 ; BE-NEXT:    std r19, 616(r1) # 8-byte Folded Spill
1897 ; BE-NEXT:    std r20, 624(r1) # 8-byte Folded Spill
1898 ; BE-NEXT:    std r21, 632(r1) # 8-byte Folded Spill
1899 ; BE-NEXT:    std r22, 640(r1) # 8-byte Folded Spill
1900 ; BE-NEXT:    std r23, 648(r1) # 8-byte Folded Spill
1901 ; BE-NEXT:    std r24, 656(r1) # 8-byte Folded Spill
1902 ; BE-NEXT:    std r25, 664(r1) # 8-byte Folded Spill
1903 ; BE-NEXT:    std r26, 672(r1) # 8-byte Folded Spill
1904 ; BE-NEXT:    std r27, 680(r1) # 8-byte Folded Spill
1905 ; BE-NEXT:    std r28, 688(r1) # 8-byte Folded Spill
1906 ; BE-NEXT:    std r29, 696(r1) # 8-byte Folded Spill
1907 ; BE-NEXT:    std r30, 704(r1) # 8-byte Folded Spill
1908 ; BE-NEXT:    std r31, 712(r1) # 8-byte Folded Spill
1909 ; BE-NEXT:    stfd f14, 720(r1) # 8-byte Folded Spill
1910 ; BE-NEXT:    stfd f15, 728(r1) # 8-byte Folded Spill
1911 ; BE-NEXT:    stfd f16, 736(r1) # 8-byte Folded Spill
1912 ; BE-NEXT:    stfd f17, 744(r1) # 8-byte Folded Spill
1913 ; BE-NEXT:    stfd f18, 752(r1) # 8-byte Folded Spill
1914 ; BE-NEXT:    stfd f19, 760(r1) # 8-byte Folded Spill
1915 ; BE-NEXT:    stfd f21, 776(r1) # 8-byte Folded Spill
1916 ; BE-NEXT:    stfd f22, 784(r1) # 8-byte Folded Spill
1917 ; BE-NEXT:    stfd f23, 792(r1) # 8-byte Folded Spill
1918 ; BE-NEXT:    stfd f24, 800(r1) # 8-byte Folded Spill
1919 ; BE-NEXT:    stfd f25, 808(r1) # 8-byte Folded Spill
1920 ; BE-NEXT:    stfd f26, 816(r1) # 8-byte Folded Spill
1921 ; BE-NEXT:    stfd f27, 824(r1) # 8-byte Folded Spill
1922 ; BE-NEXT:    stfd f28, 832(r1) # 8-byte Folded Spill
1923 ; BE-NEXT:    stfd f29, 840(r1) # 8-byte Folded Spill
1924 ; BE-NEXT:    stfd f30, 848(r1) # 8-byte Folded Spill
1925 ; BE-NEXT:    stfd f31, 856(r1) # 8-byte Folded Spill
1926 ; BE-NEXT:    fmr f31, f13
1927 ; BE-NEXT:    fmr f29, f12
1928 ; BE-NEXT:    fmr f30, f11
1929 ; BE-NEXT:    fmr f28, f10
1930 ; BE-NEXT:    fmr f27, f9
1931 ; BE-NEXT:    fmr f26, f8
1932 ; BE-NEXT:    fmr f25, f7
1933 ; BE-NEXT:    fmr f24, f6
1934 ; BE-NEXT:    fmr f23, f5
1935 ; BE-NEXT:    fmr f22, f4
1936 ; BE-NEXT:    fmr f21, f3
1937 ; BE-NEXT:    mr r30, r3
1938 ; BE-NEXT:    bl __gnu_f2h_ieee
1939 ; BE-NEXT:    nop
1940 ; BE-NEXT:    fmr f1, f20
1941 ; BE-NEXT:    std r3, 304(r1) # 8-byte Folded Spill
1942 ; BE-NEXT:    bl __gnu_f2h_ieee
1943 ; BE-NEXT:    nop
1944 ; BE-NEXT:    fmr f1, f22
1945 ; BE-NEXT:    std r3, 296(r1) # 8-byte Folded Spill
1946 ; BE-NEXT:    bl __gnu_f2h_ieee
1947 ; BE-NEXT:    nop
1948 ; BE-NEXT:    fmr f1, f21
1949 ; BE-NEXT:    std r3, 280(r1) # 8-byte Folded Spill
1950 ; BE-NEXT:    bl __gnu_f2h_ieee
1951 ; BE-NEXT:    nop
1952 ; BE-NEXT:    fmr f1, f24
1953 ; BE-NEXT:    std r3, 264(r1) # 8-byte Folded Spill
1954 ; BE-NEXT:    bl __gnu_f2h_ieee
1955 ; BE-NEXT:    nop
1956 ; BE-NEXT:    fmr f1, f23
1957 ; BE-NEXT:    std r3, 248(r1) # 8-byte Folded Spill
1958 ; BE-NEXT:    bl __gnu_f2h_ieee
1959 ; BE-NEXT:    nop
1960 ; BE-NEXT:    fmr f1, f26
1961 ; BE-NEXT:    std r3, 232(r1) # 8-byte Folded Spill
1962 ; BE-NEXT:    bl __gnu_f2h_ieee
1963 ; BE-NEXT:    nop
1964 ; BE-NEXT:    fmr f1, f25
1965 ; BE-NEXT:    std r3, 216(r1) # 8-byte Folded Spill
1966 ; BE-NEXT:    bl __gnu_f2h_ieee
1967 ; BE-NEXT:    nop
1968 ; BE-NEXT:    fmr f1, f28
1969 ; BE-NEXT:    std r3, 200(r1) # 8-byte Folded Spill
1970 ; BE-NEXT:    bl __gnu_f2h_ieee
1971 ; BE-NEXT:    nop
1972 ; BE-NEXT:    fmr f1, f27
1973 ; BE-NEXT:    std r3, 184(r1) # 8-byte Folded Spill
1974 ; BE-NEXT:    bl __gnu_f2h_ieee
1975 ; BE-NEXT:    nop
1976 ; BE-NEXT:    fmr f1, f29
1977 ; BE-NEXT:    std r3, 168(r1) # 8-byte Folded Spill
1978 ; BE-NEXT:    bl __gnu_f2h_ieee
1979 ; BE-NEXT:    nop
1980 ; BE-NEXT:    fmr f1, f30
1981 ; BE-NEXT:    std r3, 152(r1) # 8-byte Folded Spill
1982 ; BE-NEXT:    bl __gnu_f2h_ieee
1983 ; BE-NEXT:    nop
1984 ; BE-NEXT:    lfs f1, 1028(r1)
1985 ; BE-NEXT:    std r3, 136(r1) # 8-byte Folded Spill
1986 ; BE-NEXT:    bl __gnu_f2h_ieee
1987 ; BE-NEXT:    nop
1988 ; BE-NEXT:    fmr f1, f31
1989 ; BE-NEXT:    std r3, 120(r1) # 8-byte Folded Spill
1990 ; BE-NEXT:    bl __gnu_f2h_ieee
1991 ; BE-NEXT:    nop
1992 ; BE-NEXT:    lfs f1, 1044(r1)
1993 ; BE-NEXT:    std r3, 112(r1) # 8-byte Folded Spill
1994 ; BE-NEXT:    bl __gnu_f2h_ieee
1995 ; BE-NEXT:    nop
1996 ; BE-NEXT:    lfs f1, 1036(r1)
1997 ; BE-NEXT:    mr r15, r3
1998 ; BE-NEXT:    bl __gnu_f2h_ieee
1999 ; BE-NEXT:    nop
2000 ; BE-NEXT:    lfs f1, 1060(r1)
2001 ; BE-NEXT:    mr r14, r3
2002 ; BE-NEXT:    bl __gnu_f2h_ieee
2003 ; BE-NEXT:    nop
2004 ; BE-NEXT:    lfs f1, 1052(r1)
2005 ; BE-NEXT:    mr r31, r3
2006 ; BE-NEXT:    bl __gnu_f2h_ieee
2007 ; BE-NEXT:    nop
2008 ; BE-NEXT:    lfs f1, 1076(r1)
2009 ; BE-NEXT:    mr r29, r3
2010 ; BE-NEXT:    bl __gnu_f2h_ieee
2011 ; BE-NEXT:    nop
2012 ; BE-NEXT:    lfs f1, 1068(r1)
2013 ; BE-NEXT:    mr r28, r3
2014 ; BE-NEXT:    bl __gnu_f2h_ieee
2015 ; BE-NEXT:    nop
2016 ; BE-NEXT:    lfs f1, 1092(r1)
2017 ; BE-NEXT:    mr r27, r3
2018 ; BE-NEXT:    bl __gnu_f2h_ieee
2019 ; BE-NEXT:    nop
2020 ; BE-NEXT:    lfs f1, 1084(r1)
2021 ; BE-NEXT:    mr r26, r3
2022 ; BE-NEXT:    bl __gnu_f2h_ieee
2023 ; BE-NEXT:    nop
2024 ; BE-NEXT:    lfs f1, 1108(r1)
2025 ; BE-NEXT:    mr r25, r3
2026 ; BE-NEXT:    bl __gnu_f2h_ieee
2027 ; BE-NEXT:    nop
2028 ; BE-NEXT:    lfs f1, 1100(r1)
2029 ; BE-NEXT:    mr r24, r3
2030 ; BE-NEXT:    bl __gnu_f2h_ieee
2031 ; BE-NEXT:    nop
2032 ; BE-NEXT:    lfs f1, 1124(r1)
2033 ; BE-NEXT:    mr r23, r3
2034 ; BE-NEXT:    bl __gnu_f2h_ieee
2035 ; BE-NEXT:    nop
2036 ; BE-NEXT:    lfs f1, 1116(r1)
2037 ; BE-NEXT:    mr r22, r3
2038 ; BE-NEXT:    bl __gnu_f2h_ieee
2039 ; BE-NEXT:    nop
2040 ; BE-NEXT:    lfs f1, 1140(r1)
2041 ; BE-NEXT:    mr r21, r3
2042 ; BE-NEXT:    bl __gnu_f2h_ieee
2043 ; BE-NEXT:    nop
2044 ; BE-NEXT:    lfs f1, 1132(r1)
2045 ; BE-NEXT:    mr r20, r3
2046 ; BE-NEXT:    bl __gnu_f2h_ieee
2047 ; BE-NEXT:    nop
2048 ; BE-NEXT:    lfs f1, 1156(r1)
2049 ; BE-NEXT:    mr r19, r3
2050 ; BE-NEXT:    bl __gnu_f2h_ieee
2051 ; BE-NEXT:    nop
2052 ; BE-NEXT:    lfs f1, 1148(r1)
2053 ; BE-NEXT:    mr r18, r3
2054 ; BE-NEXT:    bl __gnu_f2h_ieee
2055 ; BE-NEXT:    nop
2056 ; BE-NEXT:    lfs f1, 1172(r1)
2057 ; BE-NEXT:    mr r17, r3
2058 ; BE-NEXT:    bl __gnu_f2h_ieee
2059 ; BE-NEXT:    nop
2060 ; BE-NEXT:    lfs f1, 1164(r1)
2061 ; BE-NEXT:    mr r16, r3
2062 ; BE-NEXT:    bl __gnu_f2h_ieee
2063 ; BE-NEXT:    nop
2064 ; BE-NEXT:    clrldi r3, r3, 48
2065 ; BE-NEXT:    bl __gnu_h2f_ieee
2066 ; BE-NEXT:    nop
2067 ; BE-NEXT:    clrldi r3, r16, 48
2068 ; BE-NEXT:    stfs f1, 316(r1) # 4-byte Folded Spill
2069 ; BE-NEXT:    bl __gnu_h2f_ieee
2070 ; BE-NEXT:    nop
2071 ; BE-NEXT:    clrldi r3, r17, 48
2072 ; BE-NEXT:    stfs f1, 312(r1) # 4-byte Folded Spill
2073 ; BE-NEXT:    bl __gnu_h2f_ieee
2074 ; BE-NEXT:    nop
2075 ; BE-NEXT:    clrldi r3, r18, 48
2076 ; BE-NEXT:    stfs f1, 292(r1) # 4-byte Folded Spill
2077 ; BE-NEXT:    bl __gnu_h2f_ieee
2078 ; BE-NEXT:    nop
2079 ; BE-NEXT:    clrldi r3, r19, 48
2080 ; BE-NEXT:    stfs f1, 276(r1) # 4-byte Folded Spill
2081 ; BE-NEXT:    bl __gnu_h2f_ieee
2082 ; BE-NEXT:    nop
2083 ; BE-NEXT:    clrldi r3, r20, 48
2084 ; BE-NEXT:    stfs f1, 260(r1) # 4-byte Folded Spill
2085 ; BE-NEXT:    bl __gnu_h2f_ieee
2086 ; BE-NEXT:    nop
2087 ; BE-NEXT:    clrldi r3, r21, 48
2088 ; BE-NEXT:    stfs f1, 244(r1) # 4-byte Folded Spill
2089 ; BE-NEXT:    bl __gnu_h2f_ieee
2090 ; BE-NEXT:    nop
2091 ; BE-NEXT:    clrldi r3, r22, 48
2092 ; BE-NEXT:    stfs f1, 228(r1) # 4-byte Folded Spill
2093 ; BE-NEXT:    bl __gnu_h2f_ieee
2094 ; BE-NEXT:    nop
2095 ; BE-NEXT:    clrldi r3, r23, 48
2096 ; BE-NEXT:    stfs f1, 212(r1) # 4-byte Folded Spill
2097 ; BE-NEXT:    bl __gnu_h2f_ieee
2098 ; BE-NEXT:    nop
2099 ; BE-NEXT:    clrldi r3, r24, 48
2100 ; BE-NEXT:    stfs f1, 196(r1) # 4-byte Folded Spill
2101 ; BE-NEXT:    bl __gnu_h2f_ieee
2102 ; BE-NEXT:    nop
2103 ; BE-NEXT:    clrldi r3, r25, 48
2104 ; BE-NEXT:    stfs f1, 180(r1) # 4-byte Folded Spill
2105 ; BE-NEXT:    bl __gnu_h2f_ieee
2106 ; BE-NEXT:    nop
2107 ; BE-NEXT:    clrldi r3, r26, 48
2108 ; BE-NEXT:    stfs f1, 164(r1) # 4-byte Folded Spill
2109 ; BE-NEXT:    bl __gnu_h2f_ieee
2110 ; BE-NEXT:    nop
2111 ; BE-NEXT:    clrldi r3, r27, 48
2112 ; BE-NEXT:    stfs f1, 148(r1) # 4-byte Folded Spill
2113 ; BE-NEXT:    bl __gnu_h2f_ieee
2114 ; BE-NEXT:    nop
2115 ; BE-NEXT:    clrldi r3, r28, 48
2116 ; BE-NEXT:    stfs f1, 132(r1) # 4-byte Folded Spill
2117 ; BE-NEXT:    bl __gnu_h2f_ieee
2118 ; BE-NEXT:    nop
2119 ; BE-NEXT:    clrldi r3, r29, 48
2120 ; BE-NEXT:    fmr f18, f1
2121 ; BE-NEXT:    bl __gnu_h2f_ieee
2122 ; BE-NEXT:    nop
2123 ; BE-NEXT:    clrldi r3, r31, 48
2124 ; BE-NEXT:    fmr f17, f1
2125 ; BE-NEXT:    bl __gnu_h2f_ieee
2126 ; BE-NEXT:    nop
2127 ; BE-NEXT:    clrldi r3, r14, 48
2128 ; BE-NEXT:    fmr f16, f1
2129 ; BE-NEXT:    bl __gnu_h2f_ieee
2130 ; BE-NEXT:    nop
2131 ; BE-NEXT:    clrldi r3, r15, 48
2132 ; BE-NEXT:    fmr f15, f1
2133 ; BE-NEXT:    bl __gnu_h2f_ieee
2134 ; BE-NEXT:    nop
2135 ; BE-NEXT:    ld r3, 112(r1) # 8-byte Folded Reload
2136 ; BE-NEXT:    fmr f14, f1
2137 ; BE-NEXT:    clrldi r3, r3, 48
2138 ; BE-NEXT:    bl __gnu_h2f_ieee
2139 ; BE-NEXT:    nop
2140 ; BE-NEXT:    ld r3, 120(r1) # 8-byte Folded Reload
2141 ; BE-NEXT:    fmr f31, f1
2142 ; BE-NEXT:    clrldi r3, r3, 48
2143 ; BE-NEXT:    bl __gnu_h2f_ieee
2144 ; BE-NEXT:    nop
2145 ; BE-NEXT:    ld r3, 136(r1) # 8-byte Folded Reload
2146 ; BE-NEXT:    fmr f30, f1
2147 ; BE-NEXT:    clrldi r3, r3, 48
2148 ; BE-NEXT:    bl __gnu_h2f_ieee
2149 ; BE-NEXT:    nop
2150 ; BE-NEXT:    ld r3, 152(r1) # 8-byte Folded Reload
2151 ; BE-NEXT:    fmr f29, f1
2152 ; BE-NEXT:    clrldi r3, r3, 48
2153 ; BE-NEXT:    bl __gnu_h2f_ieee
2154 ; BE-NEXT:    nop
2155 ; BE-NEXT:    ld r3, 168(r1) # 8-byte Folded Reload
2156 ; BE-NEXT:    fmr f28, f1
2157 ; BE-NEXT:    clrldi r3, r3, 48
2158 ; BE-NEXT:    bl __gnu_h2f_ieee
2159 ; BE-NEXT:    nop
2160 ; BE-NEXT:    ld r3, 184(r1) # 8-byte Folded Reload
2161 ; BE-NEXT:    fmr f27, f1
2162 ; BE-NEXT:    clrldi r3, r3, 48
2163 ; BE-NEXT:    bl __gnu_h2f_ieee
2164 ; BE-NEXT:    nop
2165 ; BE-NEXT:    ld r3, 200(r1) # 8-byte Folded Reload
2166 ; BE-NEXT:    fmr f26, f1
2167 ; BE-NEXT:    clrldi r3, r3, 48
2168 ; BE-NEXT:    bl __gnu_h2f_ieee
2169 ; BE-NEXT:    nop
2170 ; BE-NEXT:    ld r3, 216(r1) # 8-byte Folded Reload
2171 ; BE-NEXT:    fmr f25, f1
2172 ; BE-NEXT:    clrldi r3, r3, 48
2173 ; BE-NEXT:    bl __gnu_h2f_ieee
2174 ; BE-NEXT:    nop
2175 ; BE-NEXT:    ld r3, 232(r1) # 8-byte Folded Reload
2176 ; BE-NEXT:    fmr f24, f1
2177 ; BE-NEXT:    clrldi r3, r3, 48
2178 ; BE-NEXT:    bl __gnu_h2f_ieee
2179 ; BE-NEXT:    nop
2180 ; BE-NEXT:    ld r3, 248(r1) # 8-byte Folded Reload
2181 ; BE-NEXT:    fmr f23, f1
2182 ; BE-NEXT:    clrldi r3, r3, 48
2183 ; BE-NEXT:    bl __gnu_h2f_ieee
2184 ; BE-NEXT:    nop
2185 ; BE-NEXT:    ld r3, 264(r1) # 8-byte Folded Reload
2186 ; BE-NEXT:    fmr f22, f1
2187 ; BE-NEXT:    clrldi r3, r3, 48
2188 ; BE-NEXT:    bl __gnu_h2f_ieee
2189 ; BE-NEXT:    nop
2190 ; BE-NEXT:    ld r3, 280(r1) # 8-byte Folded Reload
2191 ; BE-NEXT:    fmr f21, f1
2192 ; BE-NEXT:    clrldi r3, r3, 48
2193 ; BE-NEXT:    bl __gnu_h2f_ieee
2194 ; BE-NEXT:    nop
2195 ; BE-NEXT:    ld r3, 296(r1) # 8-byte Folded Reload
2196 ; BE-NEXT:    fmr f20, f1
2197 ; BE-NEXT:    clrldi r3, r3, 48
2198 ; BE-NEXT:    bl __gnu_h2f_ieee
2199 ; BE-NEXT:    nop
2200 ; BE-NEXT:    ld r3, 304(r1) # 8-byte Folded Reload
2201 ; BE-NEXT:    fmr f19, f1
2202 ; BE-NEXT:    clrldi r3, r3, 48
2203 ; BE-NEXT:    bl __gnu_h2f_ieee
2204 ; BE-NEXT:    nop
2205 ; BE-NEXT:    bl llrintf
2206 ; BE-NEXT:    nop
2207 ; BE-NEXT:    fmr f1, f19
2208 ; BE-NEXT:    std r3, 328(r1)
2209 ; BE-NEXT:    bl llrintf
2210 ; BE-NEXT:    nop
2211 ; BE-NEXT:    fmr f1, f20
2212 ; BE-NEXT:    std r3, 320(r1)
2213 ; BE-NEXT:    bl llrintf
2214 ; BE-NEXT:    nop
2215 ; BE-NEXT:    fmr f1, f21
2216 ; BE-NEXT:    std r3, 344(r1)
2217 ; BE-NEXT:    bl llrintf
2218 ; BE-NEXT:    nop
2219 ; BE-NEXT:    fmr f1, f22
2220 ; BE-NEXT:    std r3, 336(r1)
2221 ; BE-NEXT:    bl llrintf
2222 ; BE-NEXT:    nop
2223 ; BE-NEXT:    fmr f1, f23
2224 ; BE-NEXT:    std r3, 360(r1)
2225 ; BE-NEXT:    bl llrintf
2226 ; BE-NEXT:    nop
2227 ; BE-NEXT:    fmr f1, f24
2228 ; BE-NEXT:    std r3, 352(r1)
2229 ; BE-NEXT:    bl llrintf
2230 ; BE-NEXT:    nop
2231 ; BE-NEXT:    fmr f1, f25
2232 ; BE-NEXT:    std r3, 376(r1)
2233 ; BE-NEXT:    bl llrintf
2234 ; BE-NEXT:    nop
2235 ; BE-NEXT:    fmr f1, f26
2236 ; BE-NEXT:    std r3, 368(r1)
2237 ; BE-NEXT:    bl llrintf
2238 ; BE-NEXT:    nop
2239 ; BE-NEXT:    fmr f1, f27
2240 ; BE-NEXT:    std r3, 392(r1)
2241 ; BE-NEXT:    bl llrintf
2242 ; BE-NEXT:    nop
2243 ; BE-NEXT:    fmr f1, f28
2244 ; BE-NEXT:    std r3, 384(r1)
2245 ; BE-NEXT:    bl llrintf
2246 ; BE-NEXT:    nop
2247 ; BE-NEXT:    fmr f1, f29
2248 ; BE-NEXT:    std r3, 408(r1)
2249 ; BE-NEXT:    bl llrintf
2250 ; BE-NEXT:    nop
2251 ; BE-NEXT:    fmr f1, f30
2252 ; BE-NEXT:    std r3, 400(r1)
2253 ; BE-NEXT:    bl llrintf
2254 ; BE-NEXT:    nop
2255 ; BE-NEXT:    fmr f1, f31
2256 ; BE-NEXT:    std r3, 424(r1)
2257 ; BE-NEXT:    bl llrintf
2258 ; BE-NEXT:    nop
2259 ; BE-NEXT:    fmr f1, f14
2260 ; BE-NEXT:    std r3, 416(r1)
2261 ; BE-NEXT:    bl llrintf
2262 ; BE-NEXT:    nop
2263 ; BE-NEXT:    fmr f1, f15
2264 ; BE-NEXT:    std r3, 440(r1)
2265 ; BE-NEXT:    bl llrintf
2266 ; BE-NEXT:    nop
2267 ; BE-NEXT:    fmr f1, f16
2268 ; BE-NEXT:    std r3, 432(r1)
2269 ; BE-NEXT:    bl llrintf
2270 ; BE-NEXT:    nop
2271 ; BE-NEXT:    fmr f1, f17
2272 ; BE-NEXT:    std r3, 456(r1)
2273 ; BE-NEXT:    bl llrintf
2274 ; BE-NEXT:    nop
2275 ; BE-NEXT:    fmr f1, f18
2276 ; BE-NEXT:    std r3, 448(r1)
2277 ; BE-NEXT:    bl llrintf
2278 ; BE-NEXT:    nop
2279 ; BE-NEXT:    lfs f1, 132(r1) # 4-byte Folded Reload
2280 ; BE-NEXT:    std r3, 472(r1)
2281 ; BE-NEXT:    bl llrintf
2282 ; BE-NEXT:    nop
2283 ; BE-NEXT:    lfs f1, 148(r1) # 4-byte Folded Reload
2284 ; BE-NEXT:    std r3, 464(r1)
2285 ; BE-NEXT:    bl llrintf
2286 ; BE-NEXT:    nop
2287 ; BE-NEXT:    lfs f1, 164(r1) # 4-byte Folded Reload
2288 ; BE-NEXT:    std r3, 488(r1)
2289 ; BE-NEXT:    bl llrintf
2290 ; BE-NEXT:    nop
2291 ; BE-NEXT:    lfs f1, 180(r1) # 4-byte Folded Reload
2292 ; BE-NEXT:    std r3, 480(r1)
2293 ; BE-NEXT:    bl llrintf
2294 ; BE-NEXT:    nop
2295 ; BE-NEXT:    lfs f1, 196(r1) # 4-byte Folded Reload
2296 ; BE-NEXT:    std r3, 504(r1)
2297 ; BE-NEXT:    bl llrintf
2298 ; BE-NEXT:    nop
2299 ; BE-NEXT:    lfs f1, 212(r1) # 4-byte Folded Reload
2300 ; BE-NEXT:    std r3, 496(r1)
2301 ; BE-NEXT:    bl llrintf
2302 ; BE-NEXT:    nop
2303 ; BE-NEXT:    lfs f1, 228(r1) # 4-byte Folded Reload
2304 ; BE-NEXT:    std r3, 520(r1)
2305 ; BE-NEXT:    bl llrintf
2306 ; BE-NEXT:    nop
2307 ; BE-NEXT:    lfs f1, 244(r1) # 4-byte Folded Reload
2308 ; BE-NEXT:    std r3, 512(r1)
2309 ; BE-NEXT:    bl llrintf
2310 ; BE-NEXT:    nop
2311 ; BE-NEXT:    lfs f1, 260(r1) # 4-byte Folded Reload
2312 ; BE-NEXT:    std r3, 536(r1)
2313 ; BE-NEXT:    bl llrintf
2314 ; BE-NEXT:    nop
2315 ; BE-NEXT:    lfs f1, 276(r1) # 4-byte Folded Reload
2316 ; BE-NEXT:    std r3, 528(r1)
2317 ; BE-NEXT:    bl llrintf
2318 ; BE-NEXT:    nop
2319 ; BE-NEXT:    lfs f1, 292(r1) # 4-byte Folded Reload
2320 ; BE-NEXT:    std r3, 552(r1)
2321 ; BE-NEXT:    bl llrintf
2322 ; BE-NEXT:    nop
2323 ; BE-NEXT:    lfs f1, 312(r1) # 4-byte Folded Reload
2324 ; BE-NEXT:    std r3, 544(r1)
2325 ; BE-NEXT:    bl llrintf
2326 ; BE-NEXT:    nop
2327 ; BE-NEXT:    lfs f1, 316(r1) # 4-byte Folded Reload
2328 ; BE-NEXT:    std r3, 568(r1)
2329 ; BE-NEXT:    bl llrintf
2330 ; BE-NEXT:    nop
2331 ; BE-NEXT:    std r3, 560(r1)
2332 ; BE-NEXT:    addi r3, r1, 320
2333 ; BE-NEXT:    lxvd2x vs0, 0, r3
2334 ; BE-NEXT:    addi r3, r1, 336
2335 ; BE-NEXT:    lxvd2x vs1, 0, r3
2336 ; BE-NEXT:    addi r3, r1, 352
2337 ; BE-NEXT:    lxvd2x vs2, 0, r3
2338 ; BE-NEXT:    addi r3, r1, 368
2339 ; BE-NEXT:    lxvd2x vs3, 0, r3
2340 ; BE-NEXT:    addi r3, r1, 384
2341 ; BE-NEXT:    lxvd2x vs4, 0, r3
2342 ; BE-NEXT:    addi r3, r1, 400
2343 ; BE-NEXT:    lxvd2x vs5, 0, r3
2344 ; BE-NEXT:    addi r3, r1, 416
2345 ; BE-NEXT:    lxvd2x vs6, 0, r3
2346 ; BE-NEXT:    addi r3, r1, 432
2347 ; BE-NEXT:    lxvd2x vs7, 0, r3
2348 ; BE-NEXT:    addi r3, r1, 448
2349 ; BE-NEXT:    lxvd2x vs8, 0, r3
2350 ; BE-NEXT:    addi r3, r1, 464
2351 ; BE-NEXT:    lxvd2x vs9, 0, r3
2352 ; BE-NEXT:    addi r3, r1, 480
2353 ; BE-NEXT:    lxvd2x vs10, 0, r3
2354 ; BE-NEXT:    addi r3, r1, 496
2355 ; BE-NEXT:    lxvd2x vs11, 0, r3
2356 ; BE-NEXT:    addi r3, r1, 512
2357 ; BE-NEXT:    lxvd2x vs12, 0, r3
2358 ; BE-NEXT:    addi r3, r1, 528
2359 ; BE-NEXT:    lxvd2x vs13, 0, r3
2360 ; BE-NEXT:    addi r3, r1, 544
2361 ; BE-NEXT:    lxvd2x v2, 0, r3
2362 ; BE-NEXT:    addi r3, r1, 560
2363 ; BE-NEXT:    lxvd2x v3, 0, r3
2364 ; BE-NEXT:    li r3, 240
2365 ; BE-NEXT:    stxvd2x v3, r30, r3
2366 ; BE-NEXT:    li r3, 224
2367 ; BE-NEXT:    stxvd2x v2, r30, r3
2368 ; BE-NEXT:    li r3, 208
2369 ; BE-NEXT:    stxvd2x vs13, r30, r3
2370 ; BE-NEXT:    li r3, 192
2371 ; BE-NEXT:    stxvd2x vs12, r30, r3
2372 ; BE-NEXT:    li r3, 176
2373 ; BE-NEXT:    stxvd2x vs11, r30, r3
2374 ; BE-NEXT:    li r3, 160
2375 ; BE-NEXT:    stxvd2x vs10, r30, r3
2376 ; BE-NEXT:    li r3, 144
2377 ; BE-NEXT:    stxvd2x vs9, r30, r3
2378 ; BE-NEXT:    li r3, 128
2379 ; BE-NEXT:    stxvd2x vs8, r30, r3
2380 ; BE-NEXT:    li r3, 112
2381 ; BE-NEXT:    stxvd2x vs7, r30, r3
2382 ; BE-NEXT:    li r3, 96
2383 ; BE-NEXT:    stxvd2x vs6, r30, r3
2384 ; BE-NEXT:    li r3, 80
2385 ; BE-NEXT:    stxvd2x vs5, r30, r3
2386 ; BE-NEXT:    li r3, 64
2387 ; BE-NEXT:    stxvd2x vs4, r30, r3
2388 ; BE-NEXT:    li r3, 48
2389 ; BE-NEXT:    stxvd2x vs3, r30, r3
2390 ; BE-NEXT:    li r3, 32
2391 ; BE-NEXT:    stxvd2x vs2, r30, r3
2392 ; BE-NEXT:    li r3, 16
2393 ; BE-NEXT:    stxvd2x vs1, r30, r3
2394 ; BE-NEXT:    stxvd2x vs0, 0, r30
2395 ; BE-NEXT:    lfd f31, 856(r1) # 8-byte Folded Reload
2396 ; BE-NEXT:    lfd f30, 848(r1) # 8-byte Folded Reload
2397 ; BE-NEXT:    lfd f29, 840(r1) # 8-byte Folded Reload
2398 ; BE-NEXT:    lfd f28, 832(r1) # 8-byte Folded Reload
2399 ; BE-NEXT:    lfd f27, 824(r1) # 8-byte Folded Reload
2400 ; BE-NEXT:    lfd f26, 816(r1) # 8-byte Folded Reload
2401 ; BE-NEXT:    lfd f25, 808(r1) # 8-byte Folded Reload
2402 ; BE-NEXT:    lfd f24, 800(r1) # 8-byte Folded Reload
2403 ; BE-NEXT:    lfd f23, 792(r1) # 8-byte Folded Reload
2404 ; BE-NEXT:    lfd f22, 784(r1) # 8-byte Folded Reload
2405 ; BE-NEXT:    lfd f21, 776(r1) # 8-byte Folded Reload
2406 ; BE-NEXT:    lfd f20, 768(r1) # 8-byte Folded Reload
2407 ; BE-NEXT:    lfd f19, 760(r1) # 8-byte Folded Reload
2408 ; BE-NEXT:    lfd f18, 752(r1) # 8-byte Folded Reload
2409 ; BE-NEXT:    lfd f17, 744(r1) # 8-byte Folded Reload
2410 ; BE-NEXT:    lfd f16, 736(r1) # 8-byte Folded Reload
2411 ; BE-NEXT:    lfd f15, 728(r1) # 8-byte Folded Reload
2412 ; BE-NEXT:    lfd f14, 720(r1) # 8-byte Folded Reload
2413 ; BE-NEXT:    ld r31, 712(r1) # 8-byte Folded Reload
2414 ; BE-NEXT:    ld r30, 704(r1) # 8-byte Folded Reload
2415 ; BE-NEXT:    ld r29, 696(r1) # 8-byte Folded Reload
2416 ; BE-NEXT:    ld r28, 688(r1) # 8-byte Folded Reload
2417 ; BE-NEXT:    ld r27, 680(r1) # 8-byte Folded Reload
2418 ; BE-NEXT:    ld r26, 672(r1) # 8-byte Folded Reload
2419 ; BE-NEXT:    ld r25, 664(r1) # 8-byte Folded Reload
2420 ; BE-NEXT:    ld r24, 656(r1) # 8-byte Folded Reload
2421 ; BE-NEXT:    ld r23, 648(r1) # 8-byte Folded Reload
2422 ; BE-NEXT:    ld r22, 640(r1) # 8-byte Folded Reload
2423 ; BE-NEXT:    ld r21, 632(r1) # 8-byte Folded Reload
2424 ; BE-NEXT:    ld r20, 624(r1) # 8-byte Folded Reload
2425 ; BE-NEXT:    ld r19, 616(r1) # 8-byte Folded Reload
2426 ; BE-NEXT:    ld r18, 608(r1) # 8-byte Folded Reload
2427 ; BE-NEXT:    ld r17, 600(r1) # 8-byte Folded Reload
2428 ; BE-NEXT:    ld r16, 592(r1) # 8-byte Folded Reload
2429 ; BE-NEXT:    ld r15, 584(r1) # 8-byte Folded Reload
2430 ; BE-NEXT:    ld r14, 576(r1) # 8-byte Folded Reload
2431 ; BE-NEXT:    addi r1, r1, 864
2432 ; BE-NEXT:    ld r0, 16(r1)
2433 ; BE-NEXT:    mtlr r0
2434 ; BE-NEXT:    blr
2436 ; CHECK-LABEL: llrint_v32i64_v32f16:
2437 ; CHECK:       # %bb.0:
2438 ; CHECK-NEXT:    mflr r0
2439 ; CHECK-NEXT:    stdu r1, -688(r1)
2440 ; CHECK-NEXT:    std r0, 704(r1)
2441 ; CHECK-NEXT:    .cfi_def_cfa_offset 688
2442 ; CHECK-NEXT:    .cfi_offset lr, 16
2443 ; CHECK-NEXT:    .cfi_offset r14, -288
2444 ; CHECK-NEXT:    .cfi_offset r15, -280
2445 ; CHECK-NEXT:    .cfi_offset r16, -272
2446 ; CHECK-NEXT:    .cfi_offset r17, -264
2447 ; CHECK-NEXT:    .cfi_offset r18, -256
2448 ; CHECK-NEXT:    .cfi_offset r19, -248
2449 ; CHECK-NEXT:    .cfi_offset r20, -240
2450 ; CHECK-NEXT:    .cfi_offset r21, -232
2451 ; CHECK-NEXT:    .cfi_offset r22, -224
2452 ; CHECK-NEXT:    .cfi_offset r23, -216
2453 ; CHECK-NEXT:    .cfi_offset r24, -208
2454 ; CHECK-NEXT:    .cfi_offset r25, -200
2455 ; CHECK-NEXT:    .cfi_offset r26, -192
2456 ; CHECK-NEXT:    .cfi_offset r27, -184
2457 ; CHECK-NEXT:    .cfi_offset r28, -176
2458 ; CHECK-NEXT:    .cfi_offset r29, -168
2459 ; CHECK-NEXT:    .cfi_offset r30, -160
2460 ; CHECK-NEXT:    .cfi_offset r31, -152
2461 ; CHECK-NEXT:    .cfi_offset f14, -144
2462 ; CHECK-NEXT:    .cfi_offset f15, -136
2463 ; CHECK-NEXT:    .cfi_offset f16, -128
2464 ; CHECK-NEXT:    .cfi_offset f17, -120
2465 ; CHECK-NEXT:    .cfi_offset f18, -112
2466 ; CHECK-NEXT:    .cfi_offset f19, -104
2467 ; CHECK-NEXT:    .cfi_offset f20, -96
2468 ; CHECK-NEXT:    .cfi_offset f21, -88
2469 ; CHECK-NEXT:    .cfi_offset f22, -80
2470 ; CHECK-NEXT:    .cfi_offset f23, -72
2471 ; CHECK-NEXT:    .cfi_offset f24, -64
2472 ; CHECK-NEXT:    .cfi_offset f25, -56
2473 ; CHECK-NEXT:    .cfi_offset f26, -48
2474 ; CHECK-NEXT:    .cfi_offset f27, -40
2475 ; CHECK-NEXT:    .cfi_offset f28, -32
2476 ; CHECK-NEXT:    .cfi_offset f29, -24
2477 ; CHECK-NEXT:    .cfi_offset f30, -16
2478 ; CHECK-NEXT:    .cfi_offset f31, -8
2479 ; CHECK-NEXT:    .cfi_offset v20, -480
2480 ; CHECK-NEXT:    .cfi_offset v21, -464
2481 ; CHECK-NEXT:    .cfi_offset v22, -448
2482 ; CHECK-NEXT:    .cfi_offset v23, -432
2483 ; CHECK-NEXT:    .cfi_offset v24, -416
2484 ; CHECK-NEXT:    .cfi_offset v25, -400
2485 ; CHECK-NEXT:    .cfi_offset v26, -384
2486 ; CHECK-NEXT:    .cfi_offset v27, -368
2487 ; CHECK-NEXT:    .cfi_offset v28, -352
2488 ; CHECK-NEXT:    .cfi_offset v29, -336
2489 ; CHECK-NEXT:    .cfi_offset v30, -320
2490 ; CHECK-NEXT:    .cfi_offset v31, -304
2491 ; CHECK-NEXT:    li r4, 208
2492 ; CHECK-NEXT:    std r14, 400(r1) # 8-byte Folded Spill
2493 ; CHECK-NEXT:    std r15, 408(r1) # 8-byte Folded Spill
2494 ; CHECK-NEXT:    std r16, 416(r1) # 8-byte Folded Spill
2495 ; CHECK-NEXT:    std r17, 424(r1) # 8-byte Folded Spill
2496 ; CHECK-NEXT:    std r18, 432(r1) # 8-byte Folded Spill
2497 ; CHECK-NEXT:    std r19, 440(r1) # 8-byte Folded Spill
2498 ; CHECK-NEXT:    std r20, 448(r1) # 8-byte Folded Spill
2499 ; CHECK-NEXT:    stvx v20, r1, r4 # 16-byte Folded Spill
2500 ; CHECK-NEXT:    li r4, 224
2501 ; CHECK-NEXT:    std r21, 456(r1) # 8-byte Folded Spill
2502 ; CHECK-NEXT:    std r22, 464(r1) # 8-byte Folded Spill
2503 ; CHECK-NEXT:    std r23, 472(r1) # 8-byte Folded Spill
2504 ; CHECK-NEXT:    std r24, 480(r1) # 8-byte Folded Spill
2505 ; CHECK-NEXT:    std r25, 488(r1) # 8-byte Folded Spill
2506 ; CHECK-NEXT:    std r26, 496(r1) # 8-byte Folded Spill
2507 ; CHECK-NEXT:    stvx v21, r1, r4 # 16-byte Folded Spill
2508 ; CHECK-NEXT:    li r4, 240
2509 ; CHECK-NEXT:    std r27, 504(r1) # 8-byte Folded Spill
2510 ; CHECK-NEXT:    std r28, 512(r1) # 8-byte Folded Spill
2511 ; CHECK-NEXT:    std r29, 520(r1) # 8-byte Folded Spill
2512 ; CHECK-NEXT:    std r30, 528(r1) # 8-byte Folded Spill
2513 ; CHECK-NEXT:    mr r30, r3
2514 ; CHECK-NEXT:    std r31, 536(r1) # 8-byte Folded Spill
2515 ; CHECK-NEXT:    stvx v22, r1, r4 # 16-byte Folded Spill
2516 ; CHECK-NEXT:    li r4, 256
2517 ; CHECK-NEXT:    stfd f14, 544(r1) # 8-byte Folded Spill
2518 ; CHECK-NEXT:    stfd f15, 552(r1) # 8-byte Folded Spill
2519 ; CHECK-NEXT:    stfd f16, 560(r1) # 8-byte Folded Spill
2520 ; CHECK-NEXT:    stfd f17, 568(r1) # 8-byte Folded Spill
2521 ; CHECK-NEXT:    stfd f18, 576(r1) # 8-byte Folded Spill
2522 ; CHECK-NEXT:    stfd f19, 584(r1) # 8-byte Folded Spill
2523 ; CHECK-NEXT:    stvx v23, r1, r4 # 16-byte Folded Spill
2524 ; CHECK-NEXT:    li r4, 272
2525 ; CHECK-NEXT:    stfd f20, 592(r1) # 8-byte Folded Spill
2526 ; CHECK-NEXT:    fmr f20, f2
2527 ; CHECK-NEXT:    stfd f21, 600(r1) # 8-byte Folded Spill
2528 ; CHECK-NEXT:    fmr f21, f3
2529 ; CHECK-NEXT:    stfd f22, 608(r1) # 8-byte Folded Spill
2530 ; CHECK-NEXT:    fmr f22, f4
2531 ; CHECK-NEXT:    stvx v24, r1, r4 # 16-byte Folded Spill
2532 ; CHECK-NEXT:    li r4, 288
2533 ; CHECK-NEXT:    stfd f23, 616(r1) # 8-byte Folded Spill
2534 ; CHECK-NEXT:    fmr f23, f5
2535 ; CHECK-NEXT:    stfd f24, 624(r1) # 8-byte Folded Spill
2536 ; CHECK-NEXT:    fmr f24, f6
2537 ; CHECK-NEXT:    stfd f25, 632(r1) # 8-byte Folded Spill
2538 ; CHECK-NEXT:    fmr f25, f7
2539 ; CHECK-NEXT:    stvx v25, r1, r4 # 16-byte Folded Spill
2540 ; CHECK-NEXT:    li r4, 304
2541 ; CHECK-NEXT:    stfd f26, 640(r1) # 8-byte Folded Spill
2542 ; CHECK-NEXT:    fmr f26, f8
2543 ; CHECK-NEXT:    stfd f27, 648(r1) # 8-byte Folded Spill
2544 ; CHECK-NEXT:    fmr f27, f9
2545 ; CHECK-NEXT:    stfd f28, 656(r1) # 8-byte Folded Spill
2546 ; CHECK-NEXT:    fmr f28, f10
2547 ; CHECK-NEXT:    stvx v26, r1, r4 # 16-byte Folded Spill
2548 ; CHECK-NEXT:    li r4, 320
2549 ; CHECK-NEXT:    stfd f29, 664(r1) # 8-byte Folded Spill
2550 ; CHECK-NEXT:    fmr f29, f11
2551 ; CHECK-NEXT:    stfd f30, 672(r1) # 8-byte Folded Spill
2552 ; CHECK-NEXT:    fmr f30, f12
2553 ; CHECK-NEXT:    stfd f31, 680(r1) # 8-byte Folded Spill
2554 ; CHECK-NEXT:    fmr f31, f13
2555 ; CHECK-NEXT:    stvx v27, r1, r4 # 16-byte Folded Spill
2556 ; CHECK-NEXT:    li r4, 336
2557 ; CHECK-NEXT:    stvx v28, r1, r4 # 16-byte Folded Spill
2558 ; CHECK-NEXT:    li r4, 352
2559 ; CHECK-NEXT:    stvx v29, r1, r4 # 16-byte Folded Spill
2560 ; CHECK-NEXT:    li r4, 368
2561 ; CHECK-NEXT:    stvx v30, r1, r4 # 16-byte Folded Spill
2562 ; CHECK-NEXT:    li r4, 384
2563 ; CHECK-NEXT:    stvx v31, r1, r4 # 16-byte Folded Spill
2564 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2565 ; CHECK-NEXT:    nop
2566 ; CHECK-NEXT:    fmr f1, f20
2567 ; CHECK-NEXT:    std r3, 176(r1) # 8-byte Folded Spill
2568 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2569 ; CHECK-NEXT:    nop
2570 ; CHECK-NEXT:    fmr f1, f21
2571 ; CHECK-NEXT:    std r3, 160(r1) # 8-byte Folded Spill
2572 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2573 ; CHECK-NEXT:    nop
2574 ; CHECK-NEXT:    fmr f1, f22
2575 ; CHECK-NEXT:    std r3, 144(r1) # 8-byte Folded Spill
2576 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2577 ; CHECK-NEXT:    nop
2578 ; CHECK-NEXT:    fmr f1, f23
2579 ; CHECK-NEXT:    std r3, 128(r1) # 8-byte Folded Spill
2580 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2581 ; CHECK-NEXT:    nop
2582 ; CHECK-NEXT:    fmr f1, f24
2583 ; CHECK-NEXT:    std r3, 120(r1) # 8-byte Folded Spill
2584 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2585 ; CHECK-NEXT:    nop
2586 ; CHECK-NEXT:    fmr f1, f25
2587 ; CHECK-NEXT:    std r3, 112(r1) # 8-byte Folded Spill
2588 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2589 ; CHECK-NEXT:    nop
2590 ; CHECK-NEXT:    fmr f1, f26
2591 ; CHECK-NEXT:    std r3, 104(r1) # 8-byte Folded Spill
2592 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2593 ; CHECK-NEXT:    nop
2594 ; CHECK-NEXT:    fmr f1, f27
2595 ; CHECK-NEXT:    std r3, 96(r1) # 8-byte Folded Spill
2596 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2597 ; CHECK-NEXT:    nop
2598 ; CHECK-NEXT:    fmr f1, f28
2599 ; CHECK-NEXT:    std r3, 88(r1) # 8-byte Folded Spill
2600 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2601 ; CHECK-NEXT:    nop
2602 ; CHECK-NEXT:    fmr f1, f29
2603 ; CHECK-NEXT:    std r3, 80(r1) # 8-byte Folded Spill
2604 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2605 ; CHECK-NEXT:    nop
2606 ; CHECK-NEXT:    fmr f1, f30
2607 ; CHECK-NEXT:    std r3, 72(r1) # 8-byte Folded Spill
2608 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2609 ; CHECK-NEXT:    nop
2610 ; CHECK-NEXT:    fmr f1, f31
2611 ; CHECK-NEXT:    std r3, 64(r1) # 8-byte Folded Spill
2612 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2613 ; CHECK-NEXT:    nop
2614 ; CHECK-NEXT:    lfs f1, 832(r1)
2615 ; CHECK-NEXT:    std r3, 56(r1) # 8-byte Folded Spill
2616 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2617 ; CHECK-NEXT:    nop
2618 ; CHECK-NEXT:    lfs f1, 840(r1)
2619 ; CHECK-NEXT:    std r3, 48(r1) # 8-byte Folded Spill
2620 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2621 ; CHECK-NEXT:    nop
2622 ; CHECK-NEXT:    lfs f1, 848(r1)
2623 ; CHECK-NEXT:    mr r15, r3
2624 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2625 ; CHECK-NEXT:    nop
2626 ; CHECK-NEXT:    lfs f1, 856(r1)
2627 ; CHECK-NEXT:    mr r14, r3
2628 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2629 ; CHECK-NEXT:    nop
2630 ; CHECK-NEXT:    lfs f1, 864(r1)
2631 ; CHECK-NEXT:    mr r31, r3
2632 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2633 ; CHECK-NEXT:    nop
2634 ; CHECK-NEXT:    lfs f1, 872(r1)
2635 ; CHECK-NEXT:    mr r29, r3
2636 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2637 ; CHECK-NEXT:    nop
2638 ; CHECK-NEXT:    lfs f1, 880(r1)
2639 ; CHECK-NEXT:    mr r28, r3
2640 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2641 ; CHECK-NEXT:    nop
2642 ; CHECK-NEXT:    lfs f1, 888(r1)
2643 ; CHECK-NEXT:    mr r27, r3
2644 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2645 ; CHECK-NEXT:    nop
2646 ; CHECK-NEXT:    lfs f1, 896(r1)
2647 ; CHECK-NEXT:    mr r26, r3
2648 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2649 ; CHECK-NEXT:    nop
2650 ; CHECK-NEXT:    lfs f1, 904(r1)
2651 ; CHECK-NEXT:    mr r25, r3
2652 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2653 ; CHECK-NEXT:    nop
2654 ; CHECK-NEXT:    lfs f1, 912(r1)
2655 ; CHECK-NEXT:    mr r24, r3
2656 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2657 ; CHECK-NEXT:    nop
2658 ; CHECK-NEXT:    lfs f1, 920(r1)
2659 ; CHECK-NEXT:    mr r23, r3
2660 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2661 ; CHECK-NEXT:    nop
2662 ; CHECK-NEXT:    lfs f1, 928(r1)
2663 ; CHECK-NEXT:    mr r22, r3
2664 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2665 ; CHECK-NEXT:    nop
2666 ; CHECK-NEXT:    lfs f1, 936(r1)
2667 ; CHECK-NEXT:    mr r21, r3
2668 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2669 ; CHECK-NEXT:    nop
2670 ; CHECK-NEXT:    lfs f1, 944(r1)
2671 ; CHECK-NEXT:    mr r20, r3
2672 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2673 ; CHECK-NEXT:    nop
2674 ; CHECK-NEXT:    lfs f1, 952(r1)
2675 ; CHECK-NEXT:    mr r19, r3
2676 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2677 ; CHECK-NEXT:    nop
2678 ; CHECK-NEXT:    lfs f1, 960(r1)
2679 ; CHECK-NEXT:    mr r18, r3
2680 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2681 ; CHECK-NEXT:    nop
2682 ; CHECK-NEXT:    lfs f1, 968(r1)
2683 ; CHECK-NEXT:    mr r17, r3
2684 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2685 ; CHECK-NEXT:    nop
2686 ; CHECK-NEXT:    lfs f1, 976(r1)
2687 ; CHECK-NEXT:    mr r16, r3
2688 ; CHECK-NEXT:    bl __gnu_f2h_ieee
2689 ; CHECK-NEXT:    nop
2690 ; CHECK-NEXT:    clrldi r3, r3, 48
2691 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2692 ; CHECK-NEXT:    nop
2693 ; CHECK-NEXT:    li r3, 204
2694 ; CHECK-NEXT:    stxsspx f1, r1, r3 # 4-byte Folded Spill
2695 ; CHECK-NEXT:    clrldi r3, r16, 48
2696 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2697 ; CHECK-NEXT:    nop
2698 ; CHECK-NEXT:    li r3, 200
2699 ; CHECK-NEXT:    stxsspx f1, r1, r3 # 4-byte Folded Spill
2700 ; CHECK-NEXT:    clrldi r3, r17, 48
2701 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2702 ; CHECK-NEXT:    nop
2703 ; CHECK-NEXT:    clrldi r3, r18, 48
2704 ; CHECK-NEXT:    fmr f29, f1
2705 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2706 ; CHECK-NEXT:    nop
2707 ; CHECK-NEXT:    clrldi r3, r19, 48
2708 ; CHECK-NEXT:    fmr f28, f1
2709 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2710 ; CHECK-NEXT:    nop
2711 ; CHECK-NEXT:    clrldi r3, r20, 48
2712 ; CHECK-NEXT:    fmr f27, f1
2713 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2714 ; CHECK-NEXT:    nop
2715 ; CHECK-NEXT:    clrldi r3, r21, 48
2716 ; CHECK-NEXT:    fmr f26, f1
2717 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2718 ; CHECK-NEXT:    nop
2719 ; CHECK-NEXT:    clrldi r3, r22, 48
2720 ; CHECK-NEXT:    fmr f25, f1
2721 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2722 ; CHECK-NEXT:    nop
2723 ; CHECK-NEXT:    clrldi r3, r23, 48
2724 ; CHECK-NEXT:    fmr f24, f1
2725 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2726 ; CHECK-NEXT:    nop
2727 ; CHECK-NEXT:    clrldi r3, r24, 48
2728 ; CHECK-NEXT:    fmr f23, f1
2729 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2730 ; CHECK-NEXT:    nop
2731 ; CHECK-NEXT:    clrldi r3, r25, 48
2732 ; CHECK-NEXT:    fmr f22, f1
2733 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2734 ; CHECK-NEXT:    nop
2735 ; CHECK-NEXT:    clrldi r3, r26, 48
2736 ; CHECK-NEXT:    fmr f21, f1
2737 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2738 ; CHECK-NEXT:    nop
2739 ; CHECK-NEXT:    clrldi r3, r27, 48
2740 ; CHECK-NEXT:    fmr f20, f1
2741 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2742 ; CHECK-NEXT:    nop
2743 ; CHECK-NEXT:    clrldi r3, r28, 48
2744 ; CHECK-NEXT:    fmr f19, f1
2745 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2746 ; CHECK-NEXT:    nop
2747 ; CHECK-NEXT:    clrldi r3, r29, 48
2748 ; CHECK-NEXT:    fmr f18, f1
2749 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2750 ; CHECK-NEXT:    nop
2751 ; CHECK-NEXT:    clrldi r3, r31, 48
2752 ; CHECK-NEXT:    fmr f17, f1
2753 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2754 ; CHECK-NEXT:    nop
2755 ; CHECK-NEXT:    clrldi r3, r14, 48
2756 ; CHECK-NEXT:    fmr f16, f1
2757 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2758 ; CHECK-NEXT:    nop
2759 ; CHECK-NEXT:    clrldi r3, r15, 48
2760 ; CHECK-NEXT:    fmr f15, f1
2761 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2762 ; CHECK-NEXT:    nop
2763 ; CHECK-NEXT:    ld r3, 48(r1) # 8-byte Folded Reload
2764 ; CHECK-NEXT:    fmr f14, f1
2765 ; CHECK-NEXT:    clrldi r3, r3, 48
2766 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2767 ; CHECK-NEXT:    nop
2768 ; CHECK-NEXT:    ld r3, 56(r1) # 8-byte Folded Reload
2769 ; CHECK-NEXT:    fmr f30, f1
2770 ; CHECK-NEXT:    clrldi r3, r3, 48
2771 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2772 ; CHECK-NEXT:    nop
2773 ; CHECK-NEXT:    ld r3, 64(r1) # 8-byte Folded Reload
2774 ; CHECK-NEXT:    xxlor v30, f1, f1
2775 ; CHECK-NEXT:    clrldi r3, r3, 48
2776 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2777 ; CHECK-NEXT:    nop
2778 ; CHECK-NEXT:    ld r3, 72(r1) # 8-byte Folded Reload
2779 ; CHECK-NEXT:    xxlor v29, f1, f1
2780 ; CHECK-NEXT:    clrldi r3, r3, 48
2781 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2782 ; CHECK-NEXT:    nop
2783 ; CHECK-NEXT:    ld r3, 80(r1) # 8-byte Folded Reload
2784 ; CHECK-NEXT:    xxlor v28, f1, f1
2785 ; CHECK-NEXT:    clrldi r3, r3, 48
2786 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2787 ; CHECK-NEXT:    nop
2788 ; CHECK-NEXT:    ld r3, 88(r1) # 8-byte Folded Reload
2789 ; CHECK-NEXT:    xxlor v27, f1, f1
2790 ; CHECK-NEXT:    clrldi r3, r3, 48
2791 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2792 ; CHECK-NEXT:    nop
2793 ; CHECK-NEXT:    ld r3, 96(r1) # 8-byte Folded Reload
2794 ; CHECK-NEXT:    xxlor v26, f1, f1
2795 ; CHECK-NEXT:    clrldi r3, r3, 48
2796 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2797 ; CHECK-NEXT:    nop
2798 ; CHECK-NEXT:    ld r3, 104(r1) # 8-byte Folded Reload
2799 ; CHECK-NEXT:    xxlor v25, f1, f1
2800 ; CHECK-NEXT:    clrldi r3, r3, 48
2801 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2802 ; CHECK-NEXT:    nop
2803 ; CHECK-NEXT:    ld r3, 112(r1) # 8-byte Folded Reload
2804 ; CHECK-NEXT:    xxlor v24, f1, f1
2805 ; CHECK-NEXT:    clrldi r3, r3, 48
2806 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2807 ; CHECK-NEXT:    nop
2808 ; CHECK-NEXT:    ld r3, 120(r1) # 8-byte Folded Reload
2809 ; CHECK-NEXT:    xxlor v23, f1, f1
2810 ; CHECK-NEXT:    clrldi r3, r3, 48
2811 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2812 ; CHECK-NEXT:    nop
2813 ; CHECK-NEXT:    ld r3, 128(r1) # 8-byte Folded Reload
2814 ; CHECK-NEXT:    xxlor v22, f1, f1
2815 ; CHECK-NEXT:    clrldi r3, r3, 48
2816 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2817 ; CHECK-NEXT:    nop
2818 ; CHECK-NEXT:    ld r3, 144(r1) # 8-byte Folded Reload
2819 ; CHECK-NEXT:    xxlor v21, f1, f1
2820 ; CHECK-NEXT:    clrldi r3, r3, 48
2821 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2822 ; CHECK-NEXT:    nop
2823 ; CHECK-NEXT:    ld r3, 160(r1) # 8-byte Folded Reload
2824 ; CHECK-NEXT:    xxlor v20, f1, f1
2825 ; CHECK-NEXT:    clrldi r3, r3, 48
2826 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2827 ; CHECK-NEXT:    nop
2828 ; CHECK-NEXT:    ld r3, 176(r1) # 8-byte Folded Reload
2829 ; CHECK-NEXT:    fmr f31, f1
2830 ; CHECK-NEXT:    clrldi r3, r3, 48
2831 ; CHECK-NEXT:    bl __gnu_h2f_ieee
2832 ; CHECK-NEXT:    nop
2833 ; CHECK-NEXT:    bl llrintf
2834 ; CHECK-NEXT:    nop
2835 ; CHECK-NEXT:    fmr f1, f31
2836 ; CHECK-NEXT:    mtvsrd v31, r3
2837 ; CHECK-NEXT:    bl llrintf
2838 ; CHECK-NEXT:    nop
2839 ; CHECK-NEXT:    mtfprd f0, r3
2840 ; CHECK-NEXT:    li r3, 176
2841 ; CHECK-NEXT:    xxlor f1, v20, v20
2842 ; CHECK-NEXT:    xxmrghd vs0, vs0, v31
2843 ; CHECK-NEXT:    stxvd2x vs0, r1, r3 # 16-byte Folded Spill
2844 ; CHECK-NEXT:    bl llrintf
2845 ; CHECK-NEXT:    nop
2846 ; CHECK-NEXT:    xxlor f1, v21, v21
2847 ; CHECK-NEXT:    mtvsrd v31, r3
2848 ; CHECK-NEXT:    bl llrintf
2849 ; CHECK-NEXT:    nop
2850 ; CHECK-NEXT:    mtfprd f0, r3
2851 ; CHECK-NEXT:    li r3, 160
2852 ; CHECK-NEXT:    xxlor f1, v22, v22
2853 ; CHECK-NEXT:    xxmrghd vs0, vs0, v31
2854 ; CHECK-NEXT:    stxvd2x vs0, r1, r3 # 16-byte Folded Spill
2855 ; CHECK-NEXT:    bl llrintf
2856 ; CHECK-NEXT:    nop
2857 ; CHECK-NEXT:    xxlor f1, v23, v23
2858 ; CHECK-NEXT:    mtvsrd v31, r3
2859 ; CHECK-NEXT:    bl llrintf
2860 ; CHECK-NEXT:    nop
2861 ; CHECK-NEXT:    mtfprd f0, r3
2862 ; CHECK-NEXT:    li r3, 144
2863 ; CHECK-NEXT:    xxlor f1, v24, v24
2864 ; CHECK-NEXT:    xxmrghd vs0, vs0, v31
2865 ; CHECK-NEXT:    stxvd2x vs0, r1, r3 # 16-byte Folded Spill
2866 ; CHECK-NEXT:    bl llrintf
2867 ; CHECK-NEXT:    nop
2868 ; CHECK-NEXT:    xxlor f1, v25, v25
2869 ; CHECK-NEXT:    mtvsrd v31, r3
2870 ; CHECK-NEXT:    bl llrintf
2871 ; CHECK-NEXT:    nop
2872 ; CHECK-NEXT:    mtfprd f0, r3
2873 ; CHECK-NEXT:    li r3, 128
2874 ; CHECK-NEXT:    xxlor f1, v26, v26
2875 ; CHECK-NEXT:    xxmrghd vs0, vs0, v31
2876 ; CHECK-NEXT:    stxvd2x vs0, r1, r3 # 16-byte Folded Spill
2877 ; CHECK-NEXT:    bl llrintf
2878 ; CHECK-NEXT:    nop
2879 ; CHECK-NEXT:    xxlor f1, v27, v27
2880 ; CHECK-NEXT:    mtvsrd v31, r3
2881 ; CHECK-NEXT:    bl llrintf
2882 ; CHECK-NEXT:    nop
2883 ; CHECK-NEXT:    mtfprd f0, r3
2884 ; CHECK-NEXT:    xxlor f1, v28, v28
2885 ; CHECK-NEXT:    xxmrghd v27, vs0, v31
2886 ; CHECK-NEXT:    bl llrintf
2887 ; CHECK-NEXT:    nop
2888 ; CHECK-NEXT:    xxlor f1, v29, v29
2889 ; CHECK-NEXT:    mtvsrd v31, r3
2890 ; CHECK-NEXT:    bl llrintf
2891 ; CHECK-NEXT:    nop
2892 ; CHECK-NEXT:    mtfprd f0, r3
2893 ; CHECK-NEXT:    xxlor f1, v30, v30
2894 ; CHECK-NEXT:    xxmrghd v29, vs0, v31
2895 ; CHECK-NEXT:    bl llrintf
2896 ; CHECK-NEXT:    nop
2897 ; CHECK-NEXT:    fmr f1, f30
2898 ; CHECK-NEXT:    mtvsrd v31, r3
2899 ; CHECK-NEXT:    bl llrintf
2900 ; CHECK-NEXT:    nop
2901 ; CHECK-NEXT:    fmr f1, f14
2902 ; CHECK-NEXT:    mtfprd f0, r3
2903 ; CHECK-NEXT:    xxmrghd v31, vs0, v31
2904 ; CHECK-NEXT:    bl llrintf
2905 ; CHECK-NEXT:    nop
2906 ; CHECK-NEXT:    fmr f1, f15
2907 ; CHECK-NEXT:    mtvsrd v30, r3
2908 ; CHECK-NEXT:    bl llrintf
2909 ; CHECK-NEXT:    nop
2910 ; CHECK-NEXT:    fmr f1, f16
2911 ; CHECK-NEXT:    mtfprd f0, r3
2912 ; CHECK-NEXT:    xxmrghd v30, vs0, v30
2913 ; CHECK-NEXT:    bl llrintf
2914 ; CHECK-NEXT:    nop
2915 ; CHECK-NEXT:    fmr f1, f17
2916 ; CHECK-NEXT:    mtvsrd v28, r3
2917 ; CHECK-NEXT:    bl llrintf
2918 ; CHECK-NEXT:    nop
2919 ; CHECK-NEXT:    fmr f1, f18
2920 ; CHECK-NEXT:    mtfprd f0, r3
2921 ; CHECK-NEXT:    xxmrghd v28, vs0, v28
2922 ; CHECK-NEXT:    bl llrintf
2923 ; CHECK-NEXT:    nop
2924 ; CHECK-NEXT:    fmr f1, f19
2925 ; CHECK-NEXT:    mtvsrd v26, r3
2926 ; CHECK-NEXT:    bl llrintf
2927 ; CHECK-NEXT:    nop
2928 ; CHECK-NEXT:    fmr f1, f20
2929 ; CHECK-NEXT:    mtfprd f0, r3
2930 ; CHECK-NEXT:    xxmrghd v26, vs0, v26
2931 ; CHECK-NEXT:    bl llrintf
2932 ; CHECK-NEXT:    nop
2933 ; CHECK-NEXT:    fmr f1, f21
2934 ; CHECK-NEXT:    mtvsrd v24, r3
2935 ; CHECK-NEXT:    bl llrintf
2936 ; CHECK-NEXT:    nop
2937 ; CHECK-NEXT:    fmr f1, f22
2938 ; CHECK-NEXT:    mtfprd f0, r3
2939 ; CHECK-NEXT:    xxmrghd v24, vs0, v24
2940 ; CHECK-NEXT:    bl llrintf
2941 ; CHECK-NEXT:    nop
2942 ; CHECK-NEXT:    fmr f1, f23
2943 ; CHECK-NEXT:    mtvsrd v22, r3
2944 ; CHECK-NEXT:    bl llrintf
2945 ; CHECK-NEXT:    nop
2946 ; CHECK-NEXT:    fmr f1, f24
2947 ; CHECK-NEXT:    mtfprd f0, r3
2948 ; CHECK-NEXT:    xxmrghd v22, vs0, v22
2949 ; CHECK-NEXT:    bl llrintf
2950 ; CHECK-NEXT:    nop
2951 ; CHECK-NEXT:    fmr f1, f25
2952 ; CHECK-NEXT:    mtvsrd v20, r3
2953 ; CHECK-NEXT:    bl llrintf
2954 ; CHECK-NEXT:    nop
2955 ; CHECK-NEXT:    fmr f1, f26
2956 ; CHECK-NEXT:    mtfprd f0, r3
2957 ; CHECK-NEXT:    xxmrghd v20, vs0, v20
2958 ; CHECK-NEXT:    bl llrintf
2959 ; CHECK-NEXT:    nop
2960 ; CHECK-NEXT:    fmr f1, f27
2961 ; CHECK-NEXT:    mtvsrd v21, r3
2962 ; CHECK-NEXT:    bl llrintf
2963 ; CHECK-NEXT:    nop
2964 ; CHECK-NEXT:    fmr f1, f28
2965 ; CHECK-NEXT:    mtfprd f0, r3
2966 ; CHECK-NEXT:    xxmrghd v21, vs0, v21
2967 ; CHECK-NEXT:    bl llrintf
2968 ; CHECK-NEXT:    nop
2969 ; CHECK-NEXT:    fmr f1, f29
2970 ; CHECK-NEXT:    mtvsrd v23, r3
2971 ; CHECK-NEXT:    bl llrintf
2972 ; CHECK-NEXT:    nop
2973 ; CHECK-NEXT:    mtfprd f0, r3
2974 ; CHECK-NEXT:    li r3, 200
2975 ; CHECK-NEXT:    lxsspx f1, r1, r3 # 4-byte Folded Reload
2976 ; CHECK-NEXT:    xxmrghd v23, vs0, v23
2977 ; CHECK-NEXT:    bl llrintf
2978 ; CHECK-NEXT:    nop
2979 ; CHECK-NEXT:    mtvsrd v25, r3
2980 ; CHECK-NEXT:    li r3, 204
2981 ; CHECK-NEXT:    lxsspx f1, r1, r3 # 4-byte Folded Reload
2982 ; CHECK-NEXT:    bl llrintf
2983 ; CHECK-NEXT:    nop
2984 ; CHECK-NEXT:    mtfprd f0, r3
2985 ; CHECK-NEXT:    li r3, 240
2986 ; CHECK-NEXT:    xxswapd vs1, v23
2987 ; CHECK-NEXT:    li r4, 128
2988 ; CHECK-NEXT:    xxswapd vs2, v21
2989 ; CHECK-NEXT:    xxswapd vs3, v31
2990 ; CHECK-NEXT:    xxmrghd v2, vs0, v25
2991 ; CHECK-NEXT:    xxswapd vs0, v2
2992 ; CHECK-NEXT:    stxvd2x vs0, r30, r3
2993 ; CHECK-NEXT:    li r3, 224
2994 ; CHECK-NEXT:    stxvd2x vs1, r30, r3
2995 ; CHECK-NEXT:    li r3, 208
2996 ; CHECK-NEXT:    stxvd2x vs2, r30, r3
2997 ; CHECK-NEXT:    li r3, 192
2998 ; CHECK-NEXT:    xxswapd vs0, v20
2999 ; CHECK-NEXT:    stxvd2x vs0, r30, r3
3000 ; CHECK-NEXT:    li r3, 176
3001 ; CHECK-NEXT:    xxswapd vs1, v22
3002 ; CHECK-NEXT:    stxvd2x vs1, r30, r3
3003 ; CHECK-NEXT:    li r3, 160
3004 ; CHECK-NEXT:    xxswapd vs2, v28
3005 ; CHECK-NEXT:    xxswapd vs0, v24
3006 ; CHECK-NEXT:    stxvd2x vs0, r30, r3
3007 ; CHECK-NEXT:    li r3, 144
3008 ; CHECK-NEXT:    xxswapd vs1, v26
3009 ; CHECK-NEXT:    stxvd2x vs1, r30, r3
3010 ; CHECK-NEXT:    li r3, 128
3011 ; CHECK-NEXT:    stxvd2x vs2, r30, r3
3012 ; CHECK-NEXT:    li r3, 112
3013 ; CHECK-NEXT:    xxswapd vs0, v30
3014 ; CHECK-NEXT:    stxvd2x vs0, r30, r3
3015 ; CHECK-NEXT:    li r3, 96
3016 ; CHECK-NEXT:    stxvd2x vs3, r30, r3
3017 ; CHECK-NEXT:    li r3, 80
3018 ; CHECK-NEXT:    lxvd2x vs2, r1, r4 # 16-byte Folded Reload
3019 ; CHECK-NEXT:    li r4, 144
3020 ; CHECK-NEXT:    xxswapd vs1, v29
3021 ; CHECK-NEXT:    stxvd2x vs1, r30, r3
3022 ; CHECK-NEXT:    li r3, 64
3023 ; CHECK-NEXT:    lxvd2x vs1, r1, r4 # 16-byte Folded Reload
3024 ; CHECK-NEXT:    li r4, 160
3025 ; CHECK-NEXT:    lxvd2x vs3, r1, r4 # 16-byte Folded Reload
3026 ; CHECK-NEXT:    li r4, 176
3027 ; CHECK-NEXT:    lxvd2x vs4, r1, r4 # 16-byte Folded Reload
3028 ; CHECK-NEXT:    xxswapd vs0, v27
3029 ; CHECK-NEXT:    stxvd2x vs0, r30, r3
3030 ; CHECK-NEXT:    li r3, 48
3031 ; CHECK-NEXT:    xxswapd vs2, vs2
3032 ; CHECK-NEXT:    stxvd2x vs2, r30, r3
3033 ; CHECK-NEXT:    li r3, 32
3034 ; CHECK-NEXT:    xxswapd vs1, vs1
3035 ; CHECK-NEXT:    stxvd2x vs1, r30, r3
3036 ; CHECK-NEXT:    li r3, 16
3037 ; CHECK-NEXT:    xxswapd vs3, vs3
3038 ; CHECK-NEXT:    stxvd2x vs3, r30, r3
3039 ; CHECK-NEXT:    li r3, 384
3040 ; CHECK-NEXT:    xxswapd vs4, vs4
3041 ; CHECK-NEXT:    stxvd2x vs4, 0, r30
3042 ; CHECK-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload
3043 ; CHECK-NEXT:    li r3, 368
3044 ; CHECK-NEXT:    lfd f31, 680(r1) # 8-byte Folded Reload
3045 ; CHECK-NEXT:    lfd f30, 672(r1) # 8-byte Folded Reload
3046 ; CHECK-NEXT:    lfd f29, 664(r1) # 8-byte Folded Reload
3047 ; CHECK-NEXT:    lfd f28, 656(r1) # 8-byte Folded Reload
3048 ; CHECK-NEXT:    lfd f27, 648(r1) # 8-byte Folded Reload
3049 ; CHECK-NEXT:    lfd f26, 640(r1) # 8-byte Folded Reload
3050 ; CHECK-NEXT:    lfd f25, 632(r1) # 8-byte Folded Reload
3051 ; CHECK-NEXT:    lfd f24, 624(r1) # 8-byte Folded Reload
3052 ; CHECK-NEXT:    lfd f23, 616(r1) # 8-byte Folded Reload
3053 ; CHECK-NEXT:    lfd f22, 608(r1) # 8-byte Folded Reload
3054 ; CHECK-NEXT:    lfd f21, 600(r1) # 8-byte Folded Reload
3055 ; CHECK-NEXT:    lfd f20, 592(r1) # 8-byte Folded Reload
3056 ; CHECK-NEXT:    lfd f19, 584(r1) # 8-byte Folded Reload
3057 ; CHECK-NEXT:    lfd f18, 576(r1) # 8-byte Folded Reload
3058 ; CHECK-NEXT:    lfd f17, 568(r1) # 8-byte Folded Reload
3059 ; CHECK-NEXT:    lfd f16, 560(r1) # 8-byte Folded Reload
3060 ; CHECK-NEXT:    lvx v30, r1, r3 # 16-byte Folded Reload
3061 ; CHECK-NEXT:    li r3, 352
3062 ; CHECK-NEXT:    lfd f15, 552(r1) # 8-byte Folded Reload
3063 ; CHECK-NEXT:    lfd f14, 544(r1) # 8-byte Folded Reload
3064 ; CHECK-NEXT:    ld r31, 536(r1) # 8-byte Folded Reload
3065 ; CHECK-NEXT:    ld r30, 528(r1) # 8-byte Folded Reload
3066 ; CHECK-NEXT:    ld r29, 520(r1) # 8-byte Folded Reload
3067 ; CHECK-NEXT:    ld r28, 512(r1) # 8-byte Folded Reload
3068 ; CHECK-NEXT:    lvx v29, r1, r3 # 16-byte Folded Reload
3069 ; CHECK-NEXT:    li r3, 336
3070 ; CHECK-NEXT:    ld r27, 504(r1) # 8-byte Folded Reload
3071 ; CHECK-NEXT:    ld r26, 496(r1) # 8-byte Folded Reload
3072 ; CHECK-NEXT:    ld r25, 488(r1) # 8-byte Folded Reload
3073 ; CHECK-NEXT:    ld r24, 480(r1) # 8-byte Folded Reload
3074 ; CHECK-NEXT:    ld r23, 472(r1) # 8-byte Folded Reload
3075 ; CHECK-NEXT:    ld r22, 464(r1) # 8-byte Folded Reload
3076 ; CHECK-NEXT:    lvx v28, r1, r3 # 16-byte Folded Reload
3077 ; CHECK-NEXT:    li r3, 320
3078 ; CHECK-NEXT:    ld r21, 456(r1) # 8-byte Folded Reload
3079 ; CHECK-NEXT:    ld r20, 448(r1) # 8-byte Folded Reload
3080 ; CHECK-NEXT:    ld r19, 440(r1) # 8-byte Folded Reload
3081 ; CHECK-NEXT:    ld r18, 432(r1) # 8-byte Folded Reload
3082 ; CHECK-NEXT:    ld r17, 424(r1) # 8-byte Folded Reload
3083 ; CHECK-NEXT:    ld r16, 416(r1) # 8-byte Folded Reload
3084 ; CHECK-NEXT:    lvx v27, r1, r3 # 16-byte Folded Reload
3085 ; CHECK-NEXT:    li r3, 304
3086 ; CHECK-NEXT:    ld r15, 408(r1) # 8-byte Folded Reload
3087 ; CHECK-NEXT:    ld r14, 400(r1) # 8-byte Folded Reload
3088 ; CHECK-NEXT:    lvx v26, r1, r3 # 16-byte Folded Reload
3089 ; CHECK-NEXT:    li r3, 288
3090 ; CHECK-NEXT:    lvx v25, r1, r3 # 16-byte Folded Reload
3091 ; CHECK-NEXT:    li r3, 272
3092 ; CHECK-NEXT:    lvx v24, r1, r3 # 16-byte Folded Reload
3093 ; CHECK-NEXT:    li r3, 256
3094 ; CHECK-NEXT:    lvx v23, r1, r3 # 16-byte Folded Reload
3095 ; CHECK-NEXT:    li r3, 240
3096 ; CHECK-NEXT:    lvx v22, r1, r3 # 16-byte Folded Reload
3097 ; CHECK-NEXT:    li r3, 224
3098 ; CHECK-NEXT:    lvx v21, r1, r3 # 16-byte Folded Reload
3099 ; CHECK-NEXT:    li r3, 208
3100 ; CHECK-NEXT:    lvx v20, r1, r3 # 16-byte Folded Reload
3101 ; CHECK-NEXT:    addi r1, r1, 688
3102 ; CHECK-NEXT:    ld r0, 16(r1)
3103 ; CHECK-NEXT:    mtlr r0
3104 ; CHECK-NEXT:    blr
3106 ; FAST-LABEL: llrint_v32i64_v32f16:
3107 ; FAST:       # %bb.0:
3108 ; FAST-NEXT:    mflr r0
3109 ; FAST-NEXT:    stdu r1, -480(r1)
3110 ; FAST-NEXT:    std r0, 496(r1)
3111 ; FAST-NEXT:    .cfi_def_cfa_offset 480
3112 ; FAST-NEXT:    .cfi_offset lr, 16
3113 ; FAST-NEXT:    .cfi_offset r30, -160
3114 ; FAST-NEXT:    .cfi_offset f14, -144
3115 ; FAST-NEXT:    .cfi_offset f15, -136
3116 ; FAST-NEXT:    .cfi_offset f16, -128
3117 ; FAST-NEXT:    .cfi_offset f17, -120
3118 ; FAST-NEXT:    .cfi_offset f18, -112
3119 ; FAST-NEXT:    .cfi_offset f19, -104
3120 ; FAST-NEXT:    .cfi_offset f20, -96
3121 ; FAST-NEXT:    .cfi_offset f21, -88
3122 ; FAST-NEXT:    .cfi_offset f22, -80
3123 ; FAST-NEXT:    .cfi_offset f23, -72
3124 ; FAST-NEXT:    .cfi_offset f24, -64
3125 ; FAST-NEXT:    .cfi_offset f25, -56
3126 ; FAST-NEXT:    .cfi_offset f26, -48
3127 ; FAST-NEXT:    .cfi_offset f27, -40
3128 ; FAST-NEXT:    .cfi_offset f28, -32
3129 ; FAST-NEXT:    .cfi_offset f29, -24
3130 ; FAST-NEXT:    .cfi_offset f30, -16
3131 ; FAST-NEXT:    .cfi_offset f31, -8
3132 ; FAST-NEXT:    .cfi_offset v20, -352
3133 ; FAST-NEXT:    .cfi_offset v21, -336
3134 ; FAST-NEXT:    .cfi_offset v22, -320
3135 ; FAST-NEXT:    .cfi_offset v23, -304
3136 ; FAST-NEXT:    .cfi_offset v24, -288
3137 ; FAST-NEXT:    .cfi_offset v25, -272
3138 ; FAST-NEXT:    .cfi_offset v26, -256
3139 ; FAST-NEXT:    .cfi_offset v27, -240
3140 ; FAST-NEXT:    .cfi_offset v28, -224
3141 ; FAST-NEXT:    .cfi_offset v29, -208
3142 ; FAST-NEXT:    .cfi_offset v30, -192
3143 ; FAST-NEXT:    .cfi_offset v31, -176
3144 ; FAST-NEXT:    li r4, 128
3145 ; FAST-NEXT:    std r30, 320(r1) # 8-byte Folded Spill
3146 ; FAST-NEXT:    stfd f14, 336(r1) # 8-byte Folded Spill
3147 ; FAST-NEXT:    fmr f14, f5
3148 ; FAST-NEXT:    stfd f15, 344(r1) # 8-byte Folded Spill
3149 ; FAST-NEXT:    stfd f16, 352(r1) # 8-byte Folded Spill
3150 ; FAST-NEXT:    fmr f16, f4
3151 ; FAST-NEXT:    mr r30, r3
3152 ; FAST-NEXT:    stvx v20, r1, r4 # 16-byte Folded Spill
3153 ; FAST-NEXT:    li r4, 144
3154 ; FAST-NEXT:    stfd f17, 360(r1) # 8-byte Folded Spill
3155 ; FAST-NEXT:    stfd f18, 368(r1) # 8-byte Folded Spill
3156 ; FAST-NEXT:    stfd f19, 376(r1) # 8-byte Folded Spill
3157 ; FAST-NEXT:    stfd f20, 384(r1) # 8-byte Folded Spill
3158 ; FAST-NEXT:    stfd f21, 392(r1) # 8-byte Folded Spill
3159 ; FAST-NEXT:    stfd f22, 400(r1) # 8-byte Folded Spill
3160 ; FAST-NEXT:    stvx v21, r1, r4 # 16-byte Folded Spill
3161 ; FAST-NEXT:    li r4, 160
3162 ; FAST-NEXT:    stfd f23, 408(r1) # 8-byte Folded Spill
3163 ; FAST-NEXT:    stfd f24, 416(r1) # 8-byte Folded Spill
3164 ; FAST-NEXT:    stfd f25, 424(r1) # 8-byte Folded Spill
3165 ; FAST-NEXT:    stfd f26, 432(r1) # 8-byte Folded Spill
3166 ; FAST-NEXT:    stfd f27, 440(r1) # 8-byte Folded Spill
3167 ; FAST-NEXT:    stfd f28, 448(r1) # 8-byte Folded Spill
3168 ; FAST-NEXT:    stvx v22, r1, r4 # 16-byte Folded Spill
3169 ; FAST-NEXT:    li r4, 176
3170 ; FAST-NEXT:    xxlor v22, f3, f3
3171 ; FAST-NEXT:    stfd f29, 456(r1) # 8-byte Folded Spill
3172 ; FAST-NEXT:    fmr f29, f9
3173 ; FAST-NEXT:    stfd f30, 464(r1) # 8-byte Folded Spill
3174 ; FAST-NEXT:    stfd f31, 472(r1) # 8-byte Folded Spill
3175 ; FAST-NEXT:    stvx v23, r1, r4 # 16-byte Folded Spill
3176 ; FAST-NEXT:    li r4, 192
3177 ; FAST-NEXT:    xxlor v23, f2, f2
3178 ; FAST-NEXT:    stvx v24, r1, r4 # 16-byte Folded Spill
3179 ; FAST-NEXT:    li r4, 208
3180 ; FAST-NEXT:    stvx v25, r1, r4 # 16-byte Folded Spill
3181 ; FAST-NEXT:    li r4, 224
3182 ; FAST-NEXT:    xxlor v25, f13, f13
3183 ; FAST-NEXT:    stvx v26, r1, r4 # 16-byte Folded Spill
3184 ; FAST-NEXT:    li r4, 240
3185 ; FAST-NEXT:    xxlor v26, f12, f12
3186 ; FAST-NEXT:    stvx v27, r1, r4 # 16-byte Folded Spill
3187 ; FAST-NEXT:    li r4, 256
3188 ; FAST-NEXT:    xxlor v27, f11, f11
3189 ; FAST-NEXT:    stvx v28, r1, r4 # 16-byte Folded Spill
3190 ; FAST-NEXT:    li r4, 272
3191 ; FAST-NEXT:    xxlor v28, f10, f10
3192 ; FAST-NEXT:    stvx v29, r1, r4 # 16-byte Folded Spill
3193 ; FAST-NEXT:    li r4, 288
3194 ; FAST-NEXT:    xxlor v29, f8, f8
3195 ; FAST-NEXT:    stvx v30, r1, r4 # 16-byte Folded Spill
3196 ; FAST-NEXT:    li r4, 304
3197 ; FAST-NEXT:    xxlor v30, f7, f7
3198 ; FAST-NEXT:    stvx v31, r1, r4 # 16-byte Folded Spill
3199 ; FAST-NEXT:    li r4, 44
3200 ; FAST-NEXT:    xxlor v31, f6, f6
3201 ; FAST-NEXT:    stxsspx f1, r1, r4 # 4-byte Folded Spill
3202 ; FAST-NEXT:    lfs f1, 768(r1)
3203 ; FAST-NEXT:    bl __gnu_f2h_ieee
3204 ; FAST-NEXT:    nop
3205 ; FAST-NEXT:    clrldi r3, r3, 48
3206 ; FAST-NEXT:    bl __gnu_h2f_ieee
3207 ; FAST-NEXT:    nop
3208 ; FAST-NEXT:    li r3, 120
3209 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
3210 ; FAST-NEXT:    lfs f1, 760(r1)
3211 ; FAST-NEXT:    bl __gnu_f2h_ieee
3212 ; FAST-NEXT:    nop
3213 ; FAST-NEXT:    clrldi r3, r3, 48
3214 ; FAST-NEXT:    bl __gnu_h2f_ieee
3215 ; FAST-NEXT:    nop
3216 ; FAST-NEXT:    li r3, 112
3217 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
3218 ; FAST-NEXT:    lfs f1, 752(r1)
3219 ; FAST-NEXT:    bl __gnu_f2h_ieee
3220 ; FAST-NEXT:    nop
3221 ; FAST-NEXT:    clrldi r3, r3, 48
3222 ; FAST-NEXT:    bl __gnu_h2f_ieee
3223 ; FAST-NEXT:    nop
3224 ; FAST-NEXT:    li r3, 104
3225 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
3226 ; FAST-NEXT:    lfs f1, 744(r1)
3227 ; FAST-NEXT:    bl __gnu_f2h_ieee
3228 ; FAST-NEXT:    nop
3229 ; FAST-NEXT:    clrldi r3, r3, 48
3230 ; FAST-NEXT:    bl __gnu_h2f_ieee
3231 ; FAST-NEXT:    nop
3232 ; FAST-NEXT:    li r3, 96
3233 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
3234 ; FAST-NEXT:    lfs f1, 736(r1)
3235 ; FAST-NEXT:    bl __gnu_f2h_ieee
3236 ; FAST-NEXT:    nop
3237 ; FAST-NEXT:    clrldi r3, r3, 48
3238 ; FAST-NEXT:    bl __gnu_h2f_ieee
3239 ; FAST-NEXT:    nop
3240 ; FAST-NEXT:    li r3, 88
3241 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
3242 ; FAST-NEXT:    lfs f1, 728(r1)
3243 ; FAST-NEXT:    bl __gnu_f2h_ieee
3244 ; FAST-NEXT:    nop
3245 ; FAST-NEXT:    clrldi r3, r3, 48
3246 ; FAST-NEXT:    bl __gnu_h2f_ieee
3247 ; FAST-NEXT:    nop
3248 ; FAST-NEXT:    li r3, 80
3249 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
3250 ; FAST-NEXT:    lfs f1, 720(r1)
3251 ; FAST-NEXT:    bl __gnu_f2h_ieee
3252 ; FAST-NEXT:    nop
3253 ; FAST-NEXT:    clrldi r3, r3, 48
3254 ; FAST-NEXT:    bl __gnu_h2f_ieee
3255 ; FAST-NEXT:    nop
3256 ; FAST-NEXT:    li r3, 72
3257 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
3258 ; FAST-NEXT:    lfs f1, 712(r1)
3259 ; FAST-NEXT:    bl __gnu_f2h_ieee
3260 ; FAST-NEXT:    nop
3261 ; FAST-NEXT:    clrldi r3, r3, 48
3262 ; FAST-NEXT:    bl __gnu_h2f_ieee
3263 ; FAST-NEXT:    nop
3264 ; FAST-NEXT:    li r3, 64
3265 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
3266 ; FAST-NEXT:    lfs f1, 704(r1)
3267 ; FAST-NEXT:    bl __gnu_f2h_ieee
3268 ; FAST-NEXT:    nop
3269 ; FAST-NEXT:    clrldi r3, r3, 48
3270 ; FAST-NEXT:    bl __gnu_h2f_ieee
3271 ; FAST-NEXT:    nop
3272 ; FAST-NEXT:    li r3, 56
3273 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
3274 ; FAST-NEXT:    lfs f1, 696(r1)
3275 ; FAST-NEXT:    bl __gnu_f2h_ieee
3276 ; FAST-NEXT:    nop
3277 ; FAST-NEXT:    clrldi r3, r3, 48
3278 ; FAST-NEXT:    bl __gnu_h2f_ieee
3279 ; FAST-NEXT:    nop
3280 ; FAST-NEXT:    li r3, 48
3281 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
3282 ; FAST-NEXT:    lfs f1, 688(r1)
3283 ; FAST-NEXT:    bl __gnu_f2h_ieee
3284 ; FAST-NEXT:    nop
3285 ; FAST-NEXT:    clrldi r3, r3, 48
3286 ; FAST-NEXT:    bl __gnu_h2f_ieee
3287 ; FAST-NEXT:    nop
3288 ; FAST-NEXT:    xxlor v21, f1, f1
3289 ; FAST-NEXT:    lfs f1, 680(r1)
3290 ; FAST-NEXT:    bl __gnu_f2h_ieee
3291 ; FAST-NEXT:    nop
3292 ; FAST-NEXT:    clrldi r3, r3, 48
3293 ; FAST-NEXT:    bl __gnu_h2f_ieee
3294 ; FAST-NEXT:    nop
3295 ; FAST-NEXT:    xxlor v20, f1, f1
3296 ; FAST-NEXT:    lfs f1, 672(r1)
3297 ; FAST-NEXT:    bl __gnu_f2h_ieee
3298 ; FAST-NEXT:    nop
3299 ; FAST-NEXT:    clrldi r3, r3, 48
3300 ; FAST-NEXT:    bl __gnu_h2f_ieee
3301 ; FAST-NEXT:    nop
3302 ; FAST-NEXT:    xxlor v24, f1, f1
3303 ; FAST-NEXT:    lfs f1, 664(r1)
3304 ; FAST-NEXT:    bl __gnu_f2h_ieee
3305 ; FAST-NEXT:    nop
3306 ; FAST-NEXT:    clrldi r3, r3, 48
3307 ; FAST-NEXT:    bl __gnu_h2f_ieee
3308 ; FAST-NEXT:    nop
3309 ; FAST-NEXT:    fmr f31, f1
3310 ; FAST-NEXT:    lfs f1, 656(r1)
3311 ; FAST-NEXT:    bl __gnu_f2h_ieee
3312 ; FAST-NEXT:    nop
3313 ; FAST-NEXT:    clrldi r3, r3, 48
3314 ; FAST-NEXT:    bl __gnu_h2f_ieee
3315 ; FAST-NEXT:    nop
3316 ; FAST-NEXT:    fmr f30, f1
3317 ; FAST-NEXT:    lfs f1, 648(r1)
3318 ; FAST-NEXT:    bl __gnu_f2h_ieee
3319 ; FAST-NEXT:    nop
3320 ; FAST-NEXT:    clrldi r3, r3, 48
3321 ; FAST-NEXT:    bl __gnu_h2f_ieee
3322 ; FAST-NEXT:    nop
3323 ; FAST-NEXT:    fmr f28, f1
3324 ; FAST-NEXT:    lfs f1, 640(r1)
3325 ; FAST-NEXT:    bl __gnu_f2h_ieee
3326 ; FAST-NEXT:    nop
3327 ; FAST-NEXT:    clrldi r3, r3, 48
3328 ; FAST-NEXT:    bl __gnu_h2f_ieee
3329 ; FAST-NEXT:    nop
3330 ; FAST-NEXT:    fmr f27, f1
3331 ; FAST-NEXT:    lfs f1, 632(r1)
3332 ; FAST-NEXT:    bl __gnu_f2h_ieee
3333 ; FAST-NEXT:    nop
3334 ; FAST-NEXT:    clrldi r3, r3, 48
3335 ; FAST-NEXT:    bl __gnu_h2f_ieee
3336 ; FAST-NEXT:    nop
3337 ; FAST-NEXT:    fmr f26, f1
3338 ; FAST-NEXT:    lfs f1, 624(r1)
3339 ; FAST-NEXT:    bl __gnu_f2h_ieee
3340 ; FAST-NEXT:    nop
3341 ; FAST-NEXT:    clrldi r3, r3, 48
3342 ; FAST-NEXT:    bl __gnu_h2f_ieee
3343 ; FAST-NEXT:    nop
3344 ; FAST-NEXT:    fmr f25, f1
3345 ; FAST-NEXT:    xxlor f1, v25, v25
3346 ; FAST-NEXT:    bl __gnu_f2h_ieee
3347 ; FAST-NEXT:    nop
3348 ; FAST-NEXT:    clrldi r3, r3, 48
3349 ; FAST-NEXT:    bl __gnu_h2f_ieee
3350 ; FAST-NEXT:    nop
3351 ; FAST-NEXT:    fmr f24, f1
3352 ; FAST-NEXT:    xxlor f1, v26, v26
3353 ; FAST-NEXT:    bl __gnu_f2h_ieee
3354 ; FAST-NEXT:    nop
3355 ; FAST-NEXT:    clrldi r3, r3, 48
3356 ; FAST-NEXT:    bl __gnu_h2f_ieee
3357 ; FAST-NEXT:    nop
3358 ; FAST-NEXT:    fmr f23, f1
3359 ; FAST-NEXT:    xxlor f1, v27, v27
3360 ; FAST-NEXT:    bl __gnu_f2h_ieee
3361 ; FAST-NEXT:    nop
3362 ; FAST-NEXT:    clrldi r3, r3, 48
3363 ; FAST-NEXT:    bl __gnu_h2f_ieee
3364 ; FAST-NEXT:    nop
3365 ; FAST-NEXT:    fmr f22, f1
3366 ; FAST-NEXT:    xxlor f1, v28, v28
3367 ; FAST-NEXT:    bl __gnu_f2h_ieee
3368 ; FAST-NEXT:    nop
3369 ; FAST-NEXT:    clrldi r3, r3, 48
3370 ; FAST-NEXT:    bl __gnu_h2f_ieee
3371 ; FAST-NEXT:    nop
3372 ; FAST-NEXT:    fmr f21, f1
3373 ; FAST-NEXT:    fmr f1, f29
3374 ; FAST-NEXT:    bl __gnu_f2h_ieee
3375 ; FAST-NEXT:    nop
3376 ; FAST-NEXT:    clrldi r3, r3, 48
3377 ; FAST-NEXT:    bl __gnu_h2f_ieee
3378 ; FAST-NEXT:    nop
3379 ; FAST-NEXT:    fmr f20, f1
3380 ; FAST-NEXT:    xxlor f1, v29, v29
3381 ; FAST-NEXT:    bl __gnu_f2h_ieee
3382 ; FAST-NEXT:    nop
3383 ; FAST-NEXT:    clrldi r3, r3, 48
3384 ; FAST-NEXT:    bl __gnu_h2f_ieee
3385 ; FAST-NEXT:    nop
3386 ; FAST-NEXT:    fmr f19, f1
3387 ; FAST-NEXT:    xxlor f1, v30, v30
3388 ; FAST-NEXT:    bl __gnu_f2h_ieee
3389 ; FAST-NEXT:    nop
3390 ; FAST-NEXT:    clrldi r3, r3, 48
3391 ; FAST-NEXT:    bl __gnu_h2f_ieee
3392 ; FAST-NEXT:    nop
3393 ; FAST-NEXT:    fmr f18, f1
3394 ; FAST-NEXT:    xxlor f1, v31, v31
3395 ; FAST-NEXT:    bl __gnu_f2h_ieee
3396 ; FAST-NEXT:    nop
3397 ; FAST-NEXT:    clrldi r3, r3, 48
3398 ; FAST-NEXT:    bl __gnu_h2f_ieee
3399 ; FAST-NEXT:    nop
3400 ; FAST-NEXT:    fmr f29, f1
3401 ; FAST-NEXT:    fmr f1, f14
3402 ; FAST-NEXT:    bl __gnu_f2h_ieee
3403 ; FAST-NEXT:    nop
3404 ; FAST-NEXT:    clrldi r3, r3, 48
3405 ; FAST-NEXT:    bl __gnu_h2f_ieee
3406 ; FAST-NEXT:    nop
3407 ; FAST-NEXT:    fmr f14, f1
3408 ; FAST-NEXT:    fmr f1, f16
3409 ; FAST-NEXT:    bl __gnu_f2h_ieee
3410 ; FAST-NEXT:    nop
3411 ; FAST-NEXT:    clrldi r3, r3, 48
3412 ; FAST-NEXT:    bl __gnu_h2f_ieee
3413 ; FAST-NEXT:    nop
3414 ; FAST-NEXT:    fmr f16, f1
3415 ; FAST-NEXT:    xxlor f1, v22, v22
3416 ; FAST-NEXT:    bl __gnu_f2h_ieee
3417 ; FAST-NEXT:    nop
3418 ; FAST-NEXT:    clrldi r3, r3, 48
3419 ; FAST-NEXT:    bl __gnu_h2f_ieee
3420 ; FAST-NEXT:    nop
3421 ; FAST-NEXT:    fmr f17, f1
3422 ; FAST-NEXT:    xxlor f1, v23, v23
3423 ; FAST-NEXT:    bl __gnu_f2h_ieee
3424 ; FAST-NEXT:    nop
3425 ; FAST-NEXT:    clrldi r3, r3, 48
3426 ; FAST-NEXT:    bl __gnu_h2f_ieee
3427 ; FAST-NEXT:    nop
3428 ; FAST-NEXT:    li r3, 44
3429 ; FAST-NEXT:    fmr f15, f1
3430 ; FAST-NEXT:    lxsspx f1, r1, r3 # 4-byte Folded Reload
3431 ; FAST-NEXT:    bl __gnu_f2h_ieee
3432 ; FAST-NEXT:    nop
3433 ; FAST-NEXT:    clrldi r3, r3, 48
3434 ; FAST-NEXT:    bl __gnu_h2f_ieee
3435 ; FAST-NEXT:    nop
3436 ; FAST-NEXT:    fctid f3, f15
3437 ; FAST-NEXT:    fctid f4, f17
3438 ; FAST-NEXT:    mffprd r3, f3
3439 ; FAST-NEXT:    fctid f5, f16
3440 ; FAST-NEXT:    fctid f6, f14
3441 ; FAST-NEXT:    fctid f7, f18
3442 ; FAST-NEXT:    fctid f8, f19
3443 ; FAST-NEXT:    fctid f13, f1
3444 ; FAST-NEXT:    fctid f9, f20
3445 ; FAST-NEXT:    fctid f10, f22
3446 ; FAST-NEXT:    fctid f11, f24
3447 ; FAST-NEXT:    fctid f12, f25
3448 ; FAST-NEXT:    fctid f2, f23
3449 ; FAST-NEXT:    fctid f0, f21
3450 ; FAST-NEXT:    mtvsrd v2, r3
3451 ; FAST-NEXT:    mffprd r3, f4
3452 ; FAST-NEXT:    mtvsrd v3, r3
3453 ; FAST-NEXT:    mffprd r3, f5
3454 ; FAST-NEXT:    mtfprd f5, r3
3455 ; FAST-NEXT:    mffprd r3, f6
3456 ; FAST-NEXT:    mtfprd f1, r3
3457 ; FAST-NEXT:    mffprd r3, f7
3458 ; FAST-NEXT:    mtfprd f6, r3
3459 ; FAST-NEXT:    mffprd r3, f8
3460 ; FAST-NEXT:    mtfprd f7, r3
3461 ; FAST-NEXT:    mffprd r3, f9
3462 ; FAST-NEXT:    mtfprd f3, r3
3463 ; FAST-NEXT:    mffprd r3, f10
3464 ; FAST-NEXT:    mtfprd f4, r3
3465 ; FAST-NEXT:    mffprd r3, f11
3466 ; FAST-NEXT:    fctid f11, f31
3467 ; FAST-NEXT:    lfd f31, 56(r1) # 8-byte Folded Reload
3468 ; FAST-NEXT:    mtfprd f8, r3
3469 ; FAST-NEXT:    mffprd r3, f12
3470 ; FAST-NEXT:    xxlor f12, v24, v24
3471 ; FAST-NEXT:    fctid f31, f31
3472 ; FAST-NEXT:    fctid f12, f12
3473 ; FAST-NEXT:    mtfprd f9, r3
3474 ; FAST-NEXT:    mffprd r3, f13
3475 ; FAST-NEXT:    lfd f13, 48(r1) # 8-byte Folded Reload
3476 ; FAST-NEXT:    mtfprd f10, r3
3477 ; FAST-NEXT:    fctid f13, f13
3478 ; FAST-NEXT:    xxmrghd v3, vs5, v3
3479 ; FAST-NEXT:    fctid f5, f26
3480 ; FAST-NEXT:    mffprd r3, f5
3481 ; FAST-NEXT:    mtfprd f5, r3
3482 ; FAST-NEXT:    xxmrghd v4, vs7, vs6
3483 ; FAST-NEXT:    fctid f6, f27
3484 ; FAST-NEXT:    fctid f7, f28
3485 ; FAST-NEXT:    mffprd r3, f6
3486 ; FAST-NEXT:    lfd f28, 96(r1) # 8-byte Folded Reload
3487 ; FAST-NEXT:    fctid f28, f28
3488 ; FAST-NEXT:    mtfprd f6, r3
3489 ; FAST-NEXT:    mffprd r3, f7
3490 ; FAST-NEXT:    mtfprd f7, r3
3491 ; FAST-NEXT:    xxmrghd v2, v2, vs10
3492 ; FAST-NEXT:    fctid f10, f30
3493 ; FAST-NEXT:    mffprd r3, f10
3494 ; FAST-NEXT:    lfd f30, 80(r1) # 8-byte Folded Reload
3495 ; FAST-NEXT:    fctid f30, f30
3496 ; FAST-NEXT:    mtfprd f10, r3
3497 ; FAST-NEXT:    mffprd r3, f11
3498 ; FAST-NEXT:    mtfprd f11, r3
3499 ; FAST-NEXT:    mffprd r3, f12
3500 ; FAST-NEXT:    mtfprd f12, r3
3501 ; FAST-NEXT:    xxmrghd v5, vs12, vs11
3502 ; FAST-NEXT:    xxlor f11, v20, v20
3503 ; FAST-NEXT:    xxlor f12, v21, v21
3504 ; FAST-NEXT:    fctid f11, f11
3505 ; FAST-NEXT:    fctid f12, f12
3506 ; FAST-NEXT:    mffprd r3, f11
3507 ; FAST-NEXT:    mtfprd f11, r3
3508 ; FAST-NEXT:    mffprd r3, f12
3509 ; FAST-NEXT:    mtfprd f12, r3
3510 ; FAST-NEXT:    mffprd r3, f13
3511 ; FAST-NEXT:    mtfprd f13, r3
3512 ; FAST-NEXT:    mffprd r3, f31
3513 ; FAST-NEXT:    lfd f31, 64(r1) # 8-byte Folded Reload
3514 ; FAST-NEXT:    fctid f31, f31
3515 ; FAST-NEXT:    mtvsrd v0, r3
3516 ; FAST-NEXT:    mffprd r3, f31
3517 ; FAST-NEXT:    lfd f31, 72(r1) # 8-byte Folded Reload
3518 ; FAST-NEXT:    mtvsrd v1, r3
3519 ; FAST-NEXT:    mffprd r3, f30
3520 ; FAST-NEXT:    lfd f30, 88(r1) # 8-byte Folded Reload
3521 ; FAST-NEXT:    fctid f31, f31
3522 ; FAST-NEXT:    mtvsrd v6, r3
3523 ; FAST-NEXT:    mffprd r3, f28
3524 ; FAST-NEXT:    lfd f28, 104(r1) # 8-byte Folded Reload
3525 ; FAST-NEXT:    fctid f30, f30
3526 ; FAST-NEXT:    fctid f28, f28
3527 ; FAST-NEXT:    mtvsrd v7, r3
3528 ; FAST-NEXT:    mffprd r3, f28
3529 ; FAST-NEXT:    lfd f28, 112(r1) # 8-byte Folded Reload
3530 ; FAST-NEXT:    fctid f28, f28
3531 ; FAST-NEXT:    mtvsrd v8, r3
3532 ; FAST-NEXT:    mffprd r3, f28
3533 ; FAST-NEXT:    lfd f28, 120(r1) # 8-byte Folded Reload
3534 ; FAST-NEXT:    fctid f28, f28
3535 ; FAST-NEXT:    xxmrghd v10, vs12, vs11
3536 ; FAST-NEXT:    xxmrghd v0, v0, vs13
3537 ; FAST-NEXT:    xxswapd vs12, v0
3538 ; FAST-NEXT:    xxmrghd v0, vs9, vs8
3539 ; FAST-NEXT:    xxmrghd v7, v8, v7
3540 ; FAST-NEXT:    mtvsrd v8, r3
3541 ; FAST-NEXT:    mffprd r3, f28
3542 ; FAST-NEXT:    mtvsrd v9, r3
3543 ; FAST-NEXT:    mffprd r3, f30
3544 ; FAST-NEXT:    xxswapd v7, v7
3545 ; FAST-NEXT:    xxmrghd v8, v9, v8
3546 ; FAST-NEXT:    mtvsrd v9, r3
3547 ; FAST-NEXT:    mffprd r3, f31
3548 ; FAST-NEXT:    xxswapd v8, v8
3549 ; FAST-NEXT:    xxmrghd v6, v9, v6
3550 ; FAST-NEXT:    mtvsrd v9, r3
3551 ; FAST-NEXT:    li r3, 240
3552 ; FAST-NEXT:    stxvd2x v8, r30, r3
3553 ; FAST-NEXT:    li r3, 224
3554 ; FAST-NEXT:    stxvd2x v7, r30, r3
3555 ; FAST-NEXT:    li r3, 208
3556 ; FAST-NEXT:    xxswapd vs11, v6
3557 ; FAST-NEXT:    xxmrghd v6, vs10, vs7
3558 ; FAST-NEXT:    stxvd2x vs11, r30, r3
3559 ; FAST-NEXT:    li r3, 192
3560 ; FAST-NEXT:    xxmrghd v1, v9, v1
3561 ; FAST-NEXT:    xxswapd vs11, v1
3562 ; FAST-NEXT:    xxmrghd v1, vs6, vs5
3563 ; FAST-NEXT:    xxswapd vs5, v10
3564 ; FAST-NEXT:    xxswapd vs6, v5
3565 ; FAST-NEXT:    stxvd2x vs11, r30, r3
3566 ; FAST-NEXT:    li r3, 176
3567 ; FAST-NEXT:    stxvd2x vs12, r30, r3
3568 ; FAST-NEXT:    li r3, 160
3569 ; FAST-NEXT:    stxvd2x vs5, r30, r3
3570 ; FAST-NEXT:    li r3, 144
3571 ; FAST-NEXT:    stxvd2x vs6, r30, r3
3572 ; FAST-NEXT:    mffprd r3, f2
3573 ; FAST-NEXT:    mtfprd f7, r3
3574 ; FAST-NEXT:    li r3, 128
3575 ; FAST-NEXT:    xxswapd vs5, v6
3576 ; FAST-NEXT:    stxvd2x vs5, r30, r3
3577 ; FAST-NEXT:    li r3, 112
3578 ; FAST-NEXT:    xxswapd vs2, v1
3579 ; FAST-NEXT:    xxswapd vs6, v0
3580 ; FAST-NEXT:    stxvd2x vs2, r30, r3
3581 ; FAST-NEXT:    li r3, 96
3582 ; FAST-NEXT:    fctid f2, f29
3583 ; FAST-NEXT:    stxvd2x vs6, r30, r3
3584 ; FAST-NEXT:    mffprd r3, f0
3585 ; FAST-NEXT:    mtfprd f0, r3
3586 ; FAST-NEXT:    mffprd r3, f2
3587 ; FAST-NEXT:    mtfprd f2, r3
3588 ; FAST-NEXT:    li r3, 80
3589 ; FAST-NEXT:    xxmrghd v5, vs7, vs4
3590 ; FAST-NEXT:    xxswapd vs4, v2
3591 ; FAST-NEXT:    xxmrghd v0, vs0, vs3
3592 ; FAST-NEXT:    xxswapd vs0, v5
3593 ; FAST-NEXT:    xxswapd vs3, v3
3594 ; FAST-NEXT:    stxvd2x vs0, r30, r3
3595 ; FAST-NEXT:    li r3, 64
3596 ; FAST-NEXT:    xxswapd vs0, v0
3597 ; FAST-NEXT:    stxvd2x vs0, r30, r3
3598 ; FAST-NEXT:    li r3, 48
3599 ; FAST-NEXT:    xxmrghd v5, vs2, vs1
3600 ; FAST-NEXT:    xxswapd vs1, v4
3601 ; FAST-NEXT:    stxvd2x vs1, r30, r3
3602 ; FAST-NEXT:    li r3, 32
3603 ; FAST-NEXT:    xxswapd vs2, v5
3604 ; FAST-NEXT:    stxvd2x vs2, r30, r3
3605 ; FAST-NEXT:    li r3, 16
3606 ; FAST-NEXT:    stxvd2x vs3, r30, r3
3607 ; FAST-NEXT:    li r3, 304
3608 ; FAST-NEXT:    stxvd2x vs4, 0, r30
3609 ; FAST-NEXT:    lfd f31, 472(r1) # 8-byte Folded Reload
3610 ; FAST-NEXT:    lfd f30, 464(r1) # 8-byte Folded Reload
3611 ; FAST-NEXT:    lfd f29, 456(r1) # 8-byte Folded Reload
3612 ; FAST-NEXT:    lfd f28, 448(r1) # 8-byte Folded Reload
3613 ; FAST-NEXT:    lfd f27, 440(r1) # 8-byte Folded Reload
3614 ; FAST-NEXT:    lfd f26, 432(r1) # 8-byte Folded Reload
3615 ; FAST-NEXT:    lfd f25, 424(r1) # 8-byte Folded Reload
3616 ; FAST-NEXT:    lfd f24, 416(r1) # 8-byte Folded Reload
3617 ; FAST-NEXT:    lfd f23, 408(r1) # 8-byte Folded Reload
3618 ; FAST-NEXT:    lfd f22, 400(r1) # 8-byte Folded Reload
3619 ; FAST-NEXT:    lfd f21, 392(r1) # 8-byte Folded Reload
3620 ; FAST-NEXT:    lfd f20, 384(r1) # 8-byte Folded Reload
3621 ; FAST-NEXT:    lfd f19, 376(r1) # 8-byte Folded Reload
3622 ; FAST-NEXT:    lfd f18, 368(r1) # 8-byte Folded Reload
3623 ; FAST-NEXT:    lfd f17, 360(r1) # 8-byte Folded Reload
3624 ; FAST-NEXT:    lfd f16, 352(r1) # 8-byte Folded Reload
3625 ; FAST-NEXT:    lfd f15, 344(r1) # 8-byte Folded Reload
3626 ; FAST-NEXT:    lfd f14, 336(r1) # 8-byte Folded Reload
3627 ; FAST-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload
3628 ; FAST-NEXT:    li r3, 288
3629 ; FAST-NEXT:    ld r30, 320(r1) # 8-byte Folded Reload
3630 ; FAST-NEXT:    lvx v30, r1, r3 # 16-byte Folded Reload
3631 ; FAST-NEXT:    li r3, 272
3632 ; FAST-NEXT:    lvx v29, r1, r3 # 16-byte Folded Reload
3633 ; FAST-NEXT:    li r3, 256
3634 ; FAST-NEXT:    lvx v28, r1, r3 # 16-byte Folded Reload
3635 ; FAST-NEXT:    li r3, 240
3636 ; FAST-NEXT:    lvx v27, r1, r3 # 16-byte Folded Reload
3637 ; FAST-NEXT:    li r3, 224
3638 ; FAST-NEXT:    lvx v26, r1, r3 # 16-byte Folded Reload
3639 ; FAST-NEXT:    li r3, 208
3640 ; FAST-NEXT:    lvx v25, r1, r3 # 16-byte Folded Reload
3641 ; FAST-NEXT:    li r3, 192
3642 ; FAST-NEXT:    lvx v24, r1, r3 # 16-byte Folded Reload
3643 ; FAST-NEXT:    li r3, 176
3644 ; FAST-NEXT:    lvx v23, r1, r3 # 16-byte Folded Reload
3645 ; FAST-NEXT:    li r3, 160
3646 ; FAST-NEXT:    lvx v22, r1, r3 # 16-byte Folded Reload
3647 ; FAST-NEXT:    li r3, 144
3648 ; FAST-NEXT:    lvx v21, r1, r3 # 16-byte Folded Reload
3649 ; FAST-NEXT:    li r3, 128
3650 ; FAST-NEXT:    lvx v20, r1, r3 # 16-byte Folded Reload
3651 ; FAST-NEXT:    addi r1, r1, 480
3652 ; FAST-NEXT:    ld r0, 16(r1)
3653 ; FAST-NEXT:    mtlr r0
3654 ; FAST-NEXT:    blr
3655   %a = call <32 x i64> @llvm.llrint.v32i64.v32f16(<32 x half> %x)
3656   ret <32 x i64> %a
3658 declare <32 x i64> @llvm.llrint.v32i64.v32f16(<32 x half>)
3660 define <1 x i64> @llrint_v1i64_v1f32(<1 x float> %x) {
3661 ; BE-LABEL: llrint_v1i64_v1f32:
3662 ; BE:       # %bb.0:
3663 ; BE-NEXT:    mflr r0
3664 ; BE-NEXT:    stdu r1, -112(r1)
3665 ; BE-NEXT:    std r0, 128(r1)
3666 ; BE-NEXT:    .cfi_def_cfa_offset 112
3667 ; BE-NEXT:    .cfi_offset lr, 16
3668 ; BE-NEXT:    bl llrintf
3669 ; BE-NEXT:    nop
3670 ; BE-NEXT:    addi r1, r1, 112
3671 ; BE-NEXT:    ld r0, 16(r1)
3672 ; BE-NEXT:    mtlr r0
3673 ; BE-NEXT:    blr
3675 ; CHECK-LABEL: llrint_v1i64_v1f32:
3676 ; CHECK:       # %bb.0:
3677 ; CHECK-NEXT:    mflr r0
3678 ; CHECK-NEXT:    stdu r1, -32(r1)
3679 ; CHECK-NEXT:    std r0, 48(r1)
3680 ; CHECK-NEXT:    .cfi_def_cfa_offset 32
3681 ; CHECK-NEXT:    .cfi_offset lr, 16
3682 ; CHECK-NEXT:    bl llrintf
3683 ; CHECK-NEXT:    nop
3684 ; CHECK-NEXT:    addi r1, r1, 32
3685 ; CHECK-NEXT:    ld r0, 16(r1)
3686 ; CHECK-NEXT:    mtlr r0
3687 ; CHECK-NEXT:    blr
3689 ; FAST-LABEL: llrint_v1i64_v1f32:
3690 ; FAST:       # %bb.0:
3691 ; FAST-NEXT:    fctid f0, f1
3692 ; FAST-NEXT:    mffprd r3, f0
3693 ; FAST-NEXT:    blr
3694   %a = call <1 x i64> @llvm.llrint.v1i64.v1f32(<1 x float> %x)
3695   ret <1 x i64> %a
3697 declare <1 x i64> @llvm.llrint.v1i64.v1f32(<1 x float>)
3699 define <2 x i64> @llrint_v2i64_v2f32(<2 x float> %x) {
3700 ; BE-LABEL: llrint_v2i64_v2f32:
3701 ; BE:       # %bb.0:
3702 ; BE-NEXT:    mflr r0
3703 ; BE-NEXT:    stdu r1, -144(r1)
3704 ; BE-NEXT:    std r0, 160(r1)
3705 ; BE-NEXT:    .cfi_def_cfa_offset 144
3706 ; BE-NEXT:    .cfi_offset lr, 16
3707 ; BE-NEXT:    addi r3, r1, 112
3708 ; BE-NEXT:    stxvw4x v2, 0, r3
3709 ; BE-NEXT:    lfs f1, 116(r1)
3710 ; BE-NEXT:    bl llrintf
3711 ; BE-NEXT:    nop
3712 ; BE-NEXT:    lfs f1, 112(r1)
3713 ; BE-NEXT:    std r3, 136(r1)
3714 ; BE-NEXT:    bl llrintf
3715 ; BE-NEXT:    nop
3716 ; BE-NEXT:    std r3, 128(r1)
3717 ; BE-NEXT:    addi r3, r1, 128
3718 ; BE-NEXT:    lxvd2x v2, 0, r3
3719 ; BE-NEXT:    addi r1, r1, 144
3720 ; BE-NEXT:    ld r0, 16(r1)
3721 ; BE-NEXT:    mtlr r0
3722 ; BE-NEXT:    blr
3724 ; CHECK-LABEL: llrint_v2i64_v2f32:
3725 ; CHECK:       # %bb.0:
3726 ; CHECK-NEXT:    mflr r0
3727 ; CHECK-NEXT:    stdu r1, -64(r1)
3728 ; CHECK-NEXT:    std r0, 80(r1)
3729 ; CHECK-NEXT:    .cfi_def_cfa_offset 64
3730 ; CHECK-NEXT:    .cfi_offset lr, 16
3731 ; CHECK-NEXT:    .cfi_offset v31, -16
3732 ; CHECK-NEXT:    xxsldwi vs0, v2, v2, 3
3733 ; CHECK-NEXT:    li r3, 48
3734 ; CHECK-NEXT:    xscvspdpn f1, vs0
3735 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
3736 ; CHECK-NEXT:    vmr v31, v2
3737 ; CHECK-NEXT:    bl llrintf
3738 ; CHECK-NEXT:    nop
3739 ; CHECK-NEXT:    xxswapd vs0, v31
3740 ; CHECK-NEXT:    mtvsrd v31, r3
3741 ; CHECK-NEXT:    xscvspdpn f1, vs0
3742 ; CHECK-NEXT:    bl llrintf
3743 ; CHECK-NEXT:    nop
3744 ; CHECK-NEXT:    mtfprd f0, r3
3745 ; CHECK-NEXT:    li r3, 48
3746 ; CHECK-NEXT:    xxmrghd v2, vs0, v31
3747 ; CHECK-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload
3748 ; CHECK-NEXT:    addi r1, r1, 64
3749 ; CHECK-NEXT:    ld r0, 16(r1)
3750 ; CHECK-NEXT:    mtlr r0
3751 ; CHECK-NEXT:    blr
3753 ; FAST-LABEL: llrint_v2i64_v2f32:
3754 ; FAST:       # %bb.0:
3755 ; FAST-NEXT:    xxsldwi vs0, v2, v2, 3
3756 ; FAST-NEXT:    xxswapd vs1, v2
3757 ; FAST-NEXT:    xscvspdpn f0, vs0
3758 ; FAST-NEXT:    xscvspdpn f1, vs1
3759 ; FAST-NEXT:    fctid f0, f0
3760 ; FAST-NEXT:    fctid f1, f1
3761 ; FAST-NEXT:    mffprd r3, f0
3762 ; FAST-NEXT:    mtfprd f0, r3
3763 ; FAST-NEXT:    mffprd r3, f1
3764 ; FAST-NEXT:    mtfprd f1, r3
3765 ; FAST-NEXT:    xxmrghd v2, vs1, vs0
3766 ; FAST-NEXT:    blr
3767   %a = call <2 x i64> @llvm.llrint.v2i64.v2f32(<2 x float> %x)
3768   ret <2 x i64> %a
3770 declare <2 x i64> @llvm.llrint.v2i64.v2f32(<2 x float>)
3772 define <4 x i64> @llrint_v4i64_v4f32(<4 x float> %x) {
3773 ; BE-LABEL: llrint_v4i64_v4f32:
3774 ; BE:       # %bb.0:
3775 ; BE-NEXT:    mflr r0
3776 ; BE-NEXT:    stdu r1, -160(r1)
3777 ; BE-NEXT:    std r0, 176(r1)
3778 ; BE-NEXT:    .cfi_def_cfa_offset 160
3779 ; BE-NEXT:    .cfi_offset lr, 16
3780 ; BE-NEXT:    addi r3, r1, 112
3781 ; BE-NEXT:    stxvw4x v2, 0, r3
3782 ; BE-NEXT:    lfs f1, 116(r1)
3783 ; BE-NEXT:    bl llrintf
3784 ; BE-NEXT:    nop
3785 ; BE-NEXT:    lfs f1, 112(r1)
3786 ; BE-NEXT:    std r3, 136(r1)
3787 ; BE-NEXT:    bl llrintf
3788 ; BE-NEXT:    nop
3789 ; BE-NEXT:    lfs f1, 124(r1)
3790 ; BE-NEXT:    std r3, 128(r1)
3791 ; BE-NEXT:    bl llrintf
3792 ; BE-NEXT:    nop
3793 ; BE-NEXT:    lfs f1, 120(r1)
3794 ; BE-NEXT:    std r3, 152(r1)
3795 ; BE-NEXT:    bl llrintf
3796 ; BE-NEXT:    nop
3797 ; BE-NEXT:    std r3, 144(r1)
3798 ; BE-NEXT:    addi r3, r1, 128
3799 ; BE-NEXT:    lxvd2x v2, 0, r3
3800 ; BE-NEXT:    addi r3, r1, 144
3801 ; BE-NEXT:    lxvd2x v3, 0, r3
3802 ; BE-NEXT:    addi r1, r1, 160
3803 ; BE-NEXT:    ld r0, 16(r1)
3804 ; BE-NEXT:    mtlr r0
3805 ; BE-NEXT:    blr
3807 ; CHECK-LABEL: llrint_v4i64_v4f32:
3808 ; CHECK:       # %bb.0:
3809 ; CHECK-NEXT:    mflr r0
3810 ; CHECK-NEXT:    stdu r1, -80(r1)
3811 ; CHECK-NEXT:    std r0, 96(r1)
3812 ; CHECK-NEXT:    .cfi_def_cfa_offset 80
3813 ; CHECK-NEXT:    .cfi_offset lr, 16
3814 ; CHECK-NEXT:    .cfi_offset v30, -32
3815 ; CHECK-NEXT:    .cfi_offset v31, -16
3816 ; CHECK-NEXT:    xxsldwi vs0, v2, v2, 3
3817 ; CHECK-NEXT:    li r3, 48
3818 ; CHECK-NEXT:    xscvspdpn f1, vs0
3819 ; CHECK-NEXT:    stvx v30, r1, r3 # 16-byte Folded Spill
3820 ; CHECK-NEXT:    li r3, 64
3821 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
3822 ; CHECK-NEXT:    vmr v31, v2
3823 ; CHECK-NEXT:    bl llrintf
3824 ; CHECK-NEXT:    nop
3825 ; CHECK-NEXT:    xxswapd vs0, v31
3826 ; CHECK-NEXT:    mtvsrd v30, r3
3827 ; CHECK-NEXT:    xscvspdpn f1, vs0
3828 ; CHECK-NEXT:    bl llrintf
3829 ; CHECK-NEXT:    nop
3830 ; CHECK-NEXT:    xscvspdpn f1, v31
3831 ; CHECK-NEXT:    mtfprd f0, r3
3832 ; CHECK-NEXT:    xxmrghd v30, vs0, v30
3833 ; CHECK-NEXT:    bl llrintf
3834 ; CHECK-NEXT:    nop
3835 ; CHECK-NEXT:    xxsldwi vs0, v31, v31, 1
3836 ; CHECK-NEXT:    mtvsrd v31, r3
3837 ; CHECK-NEXT:    xscvspdpn f1, vs0
3838 ; CHECK-NEXT:    bl llrintf
3839 ; CHECK-NEXT:    nop
3840 ; CHECK-NEXT:    mtfprd f0, r3
3841 ; CHECK-NEXT:    li r3, 64
3842 ; CHECK-NEXT:    vmr v2, v30
3843 ; CHECK-NEXT:    xxmrghd v3, v31, vs0
3844 ; CHECK-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload
3845 ; CHECK-NEXT:    li r3, 48
3846 ; CHECK-NEXT:    lvx v30, r1, r3 # 16-byte Folded Reload
3847 ; CHECK-NEXT:    addi r1, r1, 80
3848 ; CHECK-NEXT:    ld r0, 16(r1)
3849 ; CHECK-NEXT:    mtlr r0
3850 ; CHECK-NEXT:    blr
3852 ; FAST-LABEL: llrint_v4i64_v4f32:
3853 ; FAST:       # %bb.0:
3854 ; FAST-NEXT:    xxsldwi vs0, v2, v2, 3
3855 ; FAST-NEXT:    xxswapd vs1, v2
3856 ; FAST-NEXT:    xscvspdpn f0, vs0
3857 ; FAST-NEXT:    xxsldwi vs2, v2, v2, 1
3858 ; FAST-NEXT:    fctid f0, f0
3859 ; FAST-NEXT:    mffprd r3, f0
3860 ; FAST-NEXT:    xscvspdpn f0, vs1
3861 ; FAST-NEXT:    mtfprd f1, r3
3862 ; FAST-NEXT:    fctid f0, f0
3863 ; FAST-NEXT:    mffprd r3, f0
3864 ; FAST-NEXT:    mtfprd f0, r3
3865 ; FAST-NEXT:    xxmrghd v4, vs0, vs1
3866 ; FAST-NEXT:    xscvspdpn f0, v2
3867 ; FAST-NEXT:    vmr v2, v4
3868 ; FAST-NEXT:    fctid f0, f0
3869 ; FAST-NEXT:    mffprd r3, f0
3870 ; FAST-NEXT:    xscvspdpn f0, vs2
3871 ; FAST-NEXT:    mtfprd f1, r3
3872 ; FAST-NEXT:    fctid f0, f0
3873 ; FAST-NEXT:    mffprd r3, f0
3874 ; FAST-NEXT:    mtfprd f0, r3
3875 ; FAST-NEXT:    xxmrghd v3, vs1, vs0
3876 ; FAST-NEXT:    blr
3877   %a = call <4 x i64> @llvm.llrint.v4i64.v4f32(<4 x float> %x)
3878   ret <4 x i64> %a
3880 declare <4 x i64> @llvm.llrint.v4i64.v4f32(<4 x float>)
3882 define <8 x i64> @llrint_v8i64_v8f32(<8 x float> %x) {
3883 ; BE-LABEL: llrint_v8i64_v8f32:
3884 ; BE:       # %bb.0:
3885 ; BE-NEXT:    mflr r0
3886 ; BE-NEXT:    stdu r1, -208(r1)
3887 ; BE-NEXT:    std r0, 224(r1)
3888 ; BE-NEXT:    .cfi_def_cfa_offset 208
3889 ; BE-NEXT:    .cfi_offset lr, 16
3890 ; BE-NEXT:    addi r3, r1, 112
3891 ; BE-NEXT:    stxvw4x v2, 0, r3
3892 ; BE-NEXT:    addi r3, r1, 128
3893 ; BE-NEXT:    stxvw4x v3, 0, r3
3894 ; BE-NEXT:    lfs f1, 116(r1)
3895 ; BE-NEXT:    bl llrintf
3896 ; BE-NEXT:    nop
3897 ; BE-NEXT:    lfs f1, 112(r1)
3898 ; BE-NEXT:    std r3, 152(r1)
3899 ; BE-NEXT:    bl llrintf
3900 ; BE-NEXT:    nop
3901 ; BE-NEXT:    lfs f1, 124(r1)
3902 ; BE-NEXT:    std r3, 144(r1)
3903 ; BE-NEXT:    bl llrintf
3904 ; BE-NEXT:    nop
3905 ; BE-NEXT:    lfs f1, 120(r1)
3906 ; BE-NEXT:    std r3, 168(r1)
3907 ; BE-NEXT:    bl llrintf
3908 ; BE-NEXT:    nop
3909 ; BE-NEXT:    lfs f1, 132(r1)
3910 ; BE-NEXT:    std r3, 160(r1)
3911 ; BE-NEXT:    bl llrintf
3912 ; BE-NEXT:    nop
3913 ; BE-NEXT:    lfs f1, 128(r1)
3914 ; BE-NEXT:    std r3, 184(r1)
3915 ; BE-NEXT:    bl llrintf
3916 ; BE-NEXT:    nop
3917 ; BE-NEXT:    lfs f1, 140(r1)
3918 ; BE-NEXT:    std r3, 176(r1)
3919 ; BE-NEXT:    bl llrintf
3920 ; BE-NEXT:    nop
3921 ; BE-NEXT:    lfs f1, 136(r1)
3922 ; BE-NEXT:    std r3, 200(r1)
3923 ; BE-NEXT:    bl llrintf
3924 ; BE-NEXT:    nop
3925 ; BE-NEXT:    std r3, 192(r1)
3926 ; BE-NEXT:    addi r3, r1, 144
3927 ; BE-NEXT:    lxvd2x v2, 0, r3
3928 ; BE-NEXT:    addi r3, r1, 160
3929 ; BE-NEXT:    lxvd2x v3, 0, r3
3930 ; BE-NEXT:    addi r3, r1, 176
3931 ; BE-NEXT:    lxvd2x v4, 0, r3
3932 ; BE-NEXT:    addi r3, r1, 192
3933 ; BE-NEXT:    lxvd2x v5, 0, r3
3934 ; BE-NEXT:    addi r1, r1, 208
3935 ; BE-NEXT:    ld r0, 16(r1)
3936 ; BE-NEXT:    mtlr r0
3937 ; BE-NEXT:    blr
3939 ; CHECK-LABEL: llrint_v8i64_v8f32:
3940 ; CHECK:       # %bb.0:
3941 ; CHECK-NEXT:    mflr r0
3942 ; CHECK-NEXT:    stdu r1, -112(r1)
3943 ; CHECK-NEXT:    std r0, 128(r1)
3944 ; CHECK-NEXT:    .cfi_def_cfa_offset 112
3945 ; CHECK-NEXT:    .cfi_offset lr, 16
3946 ; CHECK-NEXT:    .cfi_offset v28, -64
3947 ; CHECK-NEXT:    .cfi_offset v29, -48
3948 ; CHECK-NEXT:    .cfi_offset v30, -32
3949 ; CHECK-NEXT:    .cfi_offset v31, -16
3950 ; CHECK-NEXT:    li r3, 48
3951 ; CHECK-NEXT:    xxsldwi vs0, v2, v2, 3
3952 ; CHECK-NEXT:    stvx v28, r1, r3 # 16-byte Folded Spill
3953 ; CHECK-NEXT:    li r3, 64
3954 ; CHECK-NEXT:    xscvspdpn f1, vs0
3955 ; CHECK-NEXT:    stvx v29, r1, r3 # 16-byte Folded Spill
3956 ; CHECK-NEXT:    li r3, 80
3957 ; CHECK-NEXT:    stvx v30, r1, r3 # 16-byte Folded Spill
3958 ; CHECK-NEXT:    li r3, 96
3959 ; CHECK-NEXT:    vmr v30, v2
3960 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
3961 ; CHECK-NEXT:    vmr v31, v3
3962 ; CHECK-NEXT:    bl llrintf
3963 ; CHECK-NEXT:    nop
3964 ; CHECK-NEXT:    xxswapd vs0, v30
3965 ; CHECK-NEXT:    mtvsrd v29, r3
3966 ; CHECK-NEXT:    xscvspdpn f1, vs0
3967 ; CHECK-NEXT:    bl llrintf
3968 ; CHECK-NEXT:    nop
3969 ; CHECK-NEXT:    xscvspdpn f1, v30
3970 ; CHECK-NEXT:    mtfprd f0, r3
3971 ; CHECK-NEXT:    xxmrghd v29, vs0, v29
3972 ; CHECK-NEXT:    bl llrintf
3973 ; CHECK-NEXT:    nop
3974 ; CHECK-NEXT:    xxsldwi vs0, v30, v30, 1
3975 ; CHECK-NEXT:    mtvsrd v30, r3
3976 ; CHECK-NEXT:    xscvspdpn f1, vs0
3977 ; CHECK-NEXT:    bl llrintf
3978 ; CHECK-NEXT:    nop
3979 ; CHECK-NEXT:    mtfprd f0, r3
3980 ; CHECK-NEXT:    xxmrghd v30, v30, vs0
3981 ; CHECK-NEXT:    xxsldwi vs0, v31, v31, 3
3982 ; CHECK-NEXT:    xscvspdpn f1, vs0
3983 ; CHECK-NEXT:    bl llrintf
3984 ; CHECK-NEXT:    nop
3985 ; CHECK-NEXT:    xxswapd vs0, v31
3986 ; CHECK-NEXT:    mtvsrd v28, r3
3987 ; CHECK-NEXT:    xscvspdpn f1, vs0
3988 ; CHECK-NEXT:    bl llrintf
3989 ; CHECK-NEXT:    nop
3990 ; CHECK-NEXT:    xscvspdpn f1, v31
3991 ; CHECK-NEXT:    mtfprd f0, r3
3992 ; CHECK-NEXT:    xxmrghd v28, vs0, v28
3993 ; CHECK-NEXT:    bl llrintf
3994 ; CHECK-NEXT:    nop
3995 ; CHECK-NEXT:    xxsldwi vs0, v31, v31, 1
3996 ; CHECK-NEXT:    mtvsrd v31, r3
3997 ; CHECK-NEXT:    xscvspdpn f1, vs0
3998 ; CHECK-NEXT:    bl llrintf
3999 ; CHECK-NEXT:    nop
4000 ; CHECK-NEXT:    mtfprd f0, r3
4001 ; CHECK-NEXT:    li r3, 96
4002 ; CHECK-NEXT:    vmr v3, v30
4003 ; CHECK-NEXT:    vmr v2, v29
4004 ; CHECK-NEXT:    vmr v4, v28
4005 ; CHECK-NEXT:    xxmrghd v5, v31, vs0
4006 ; CHECK-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload
4007 ; CHECK-NEXT:    li r3, 80
4008 ; CHECK-NEXT:    lvx v30, r1, r3 # 16-byte Folded Reload
4009 ; CHECK-NEXT:    li r3, 64
4010 ; CHECK-NEXT:    lvx v29, r1, r3 # 16-byte Folded Reload
4011 ; CHECK-NEXT:    li r3, 48
4012 ; CHECK-NEXT:    lvx v28, r1, r3 # 16-byte Folded Reload
4013 ; CHECK-NEXT:    addi r1, r1, 112
4014 ; CHECK-NEXT:    ld r0, 16(r1)
4015 ; CHECK-NEXT:    mtlr r0
4016 ; CHECK-NEXT:    blr
4018 ; FAST-LABEL: llrint_v8i64_v8f32:
4019 ; FAST:       # %bb.0:
4020 ; FAST-NEXT:    xxsldwi vs0, v2, v2, 3
4021 ; FAST-NEXT:    xxswapd vs1, v2
4022 ; FAST-NEXT:    xscvspdpn f0, vs0
4023 ; FAST-NEXT:    xxsldwi vs2, v2, v2, 1
4024 ; FAST-NEXT:    xxsldwi vs3, v3, v3, 3
4025 ; FAST-NEXT:    xxswapd vs4, v3
4026 ; FAST-NEXT:    xxsldwi vs5, v3, v3, 1
4027 ; FAST-NEXT:    fctid f0, f0
4028 ; FAST-NEXT:    mffprd r3, f0
4029 ; FAST-NEXT:    xscvspdpn f0, vs1
4030 ; FAST-NEXT:    mtfprd f1, r3
4031 ; FAST-NEXT:    fctid f0, f0
4032 ; FAST-NEXT:    mffprd r3, f0
4033 ; FAST-NEXT:    mtfprd f0, r3
4034 ; FAST-NEXT:    xxmrghd v0, vs0, vs1
4035 ; FAST-NEXT:    xscvspdpn f0, v2
4036 ; FAST-NEXT:    vmr v2, v0
4037 ; FAST-NEXT:    fctid f0, f0
4038 ; FAST-NEXT:    mffprd r3, f0
4039 ; FAST-NEXT:    xscvspdpn f0, vs2
4040 ; FAST-NEXT:    mtfprd f1, r3
4041 ; FAST-NEXT:    fctid f0, f0
4042 ; FAST-NEXT:    mffprd r3, f0
4043 ; FAST-NEXT:    mtfprd f0, r3
4044 ; FAST-NEXT:    xxmrghd v1, vs1, vs0
4045 ; FAST-NEXT:    xscvspdpn f0, vs3
4046 ; FAST-NEXT:    fctid f0, f0
4047 ; FAST-NEXT:    mffprd r3, f0
4048 ; FAST-NEXT:    xscvspdpn f0, vs4
4049 ; FAST-NEXT:    mtfprd f1, r3
4050 ; FAST-NEXT:    fctid f0, f0
4051 ; FAST-NEXT:    mffprd r3, f0
4052 ; FAST-NEXT:    mtfprd f0, r3
4053 ; FAST-NEXT:    xxmrghd v4, vs0, vs1
4054 ; FAST-NEXT:    xscvspdpn f0, v3
4055 ; FAST-NEXT:    vmr v3, v1
4056 ; FAST-NEXT:    fctid f0, f0
4057 ; FAST-NEXT:    mffprd r3, f0
4058 ; FAST-NEXT:    xscvspdpn f0, vs5
4059 ; FAST-NEXT:    mtfprd f1, r3
4060 ; FAST-NEXT:    fctid f0, f0
4061 ; FAST-NEXT:    mffprd r3, f0
4062 ; FAST-NEXT:    mtfprd f0, r3
4063 ; FAST-NEXT:    xxmrghd v5, vs1, vs0
4064 ; FAST-NEXT:    blr
4065   %a = call <8 x i64> @llvm.llrint.v8i64.v8f32(<8 x float> %x)
4066   ret <8 x i64> %a
4068 declare <8 x i64> @llvm.llrint.v8i64.v8f32(<8 x float>)
4070 define <16 x i64> @llrint_v16i64_v16f32(<16 x float> %x) {
4071 ; BE-LABEL: llrint_v16i64_v16f32:
4072 ; BE:       # %bb.0:
4073 ; BE-NEXT:    mflr r0
4074 ; BE-NEXT:    stdu r1, -304(r1)
4075 ; BE-NEXT:    std r0, 320(r1)
4076 ; BE-NEXT:    .cfi_def_cfa_offset 304
4077 ; BE-NEXT:    .cfi_offset lr, 16
4078 ; BE-NEXT:    addi r3, r1, 112
4079 ; BE-NEXT:    stxvw4x v2, 0, r3
4080 ; BE-NEXT:    addi r3, r1, 128
4081 ; BE-NEXT:    stxvw4x v3, 0, r3
4082 ; BE-NEXT:    addi r3, r1, 144
4083 ; BE-NEXT:    stxvw4x v4, 0, r3
4084 ; BE-NEXT:    addi r3, r1, 160
4085 ; BE-NEXT:    stxvw4x v5, 0, r3
4086 ; BE-NEXT:    lfs f1, 116(r1)
4087 ; BE-NEXT:    bl llrintf
4088 ; BE-NEXT:    nop
4089 ; BE-NEXT:    lfs f1, 112(r1)
4090 ; BE-NEXT:    std r3, 184(r1)
4091 ; BE-NEXT:    bl llrintf
4092 ; BE-NEXT:    nop
4093 ; BE-NEXT:    lfs f1, 124(r1)
4094 ; BE-NEXT:    std r3, 176(r1)
4095 ; BE-NEXT:    bl llrintf
4096 ; BE-NEXT:    nop
4097 ; BE-NEXT:    lfs f1, 120(r1)
4098 ; BE-NEXT:    std r3, 200(r1)
4099 ; BE-NEXT:    bl llrintf
4100 ; BE-NEXT:    nop
4101 ; BE-NEXT:    lfs f1, 132(r1)
4102 ; BE-NEXT:    std r3, 192(r1)
4103 ; BE-NEXT:    bl llrintf
4104 ; BE-NEXT:    nop
4105 ; BE-NEXT:    lfs f1, 128(r1)
4106 ; BE-NEXT:    std r3, 216(r1)
4107 ; BE-NEXT:    bl llrintf
4108 ; BE-NEXT:    nop
4109 ; BE-NEXT:    lfs f1, 140(r1)
4110 ; BE-NEXT:    std r3, 208(r1)
4111 ; BE-NEXT:    bl llrintf
4112 ; BE-NEXT:    nop
4113 ; BE-NEXT:    lfs f1, 136(r1)
4114 ; BE-NEXT:    std r3, 232(r1)
4115 ; BE-NEXT:    bl llrintf
4116 ; BE-NEXT:    nop
4117 ; BE-NEXT:    lfs f1, 148(r1)
4118 ; BE-NEXT:    std r3, 224(r1)
4119 ; BE-NEXT:    bl llrintf
4120 ; BE-NEXT:    nop
4121 ; BE-NEXT:    lfs f1, 144(r1)
4122 ; BE-NEXT:    std r3, 248(r1)
4123 ; BE-NEXT:    bl llrintf
4124 ; BE-NEXT:    nop
4125 ; BE-NEXT:    lfs f1, 156(r1)
4126 ; BE-NEXT:    std r3, 240(r1)
4127 ; BE-NEXT:    bl llrintf
4128 ; BE-NEXT:    nop
4129 ; BE-NEXT:    lfs f1, 152(r1)
4130 ; BE-NEXT:    std r3, 264(r1)
4131 ; BE-NEXT:    bl llrintf
4132 ; BE-NEXT:    nop
4133 ; BE-NEXT:    lfs f1, 164(r1)
4134 ; BE-NEXT:    std r3, 256(r1)
4135 ; BE-NEXT:    bl llrintf
4136 ; BE-NEXT:    nop
4137 ; BE-NEXT:    lfs f1, 160(r1)
4138 ; BE-NEXT:    std r3, 280(r1)
4139 ; BE-NEXT:    bl llrintf
4140 ; BE-NEXT:    nop
4141 ; BE-NEXT:    lfs f1, 172(r1)
4142 ; BE-NEXT:    std r3, 272(r1)
4143 ; BE-NEXT:    bl llrintf
4144 ; BE-NEXT:    nop
4145 ; BE-NEXT:    lfs f1, 168(r1)
4146 ; BE-NEXT:    std r3, 296(r1)
4147 ; BE-NEXT:    bl llrintf
4148 ; BE-NEXT:    nop
4149 ; BE-NEXT:    std r3, 288(r1)
4150 ; BE-NEXT:    addi r3, r1, 176
4151 ; BE-NEXT:    lxvd2x v2, 0, r3
4152 ; BE-NEXT:    addi r3, r1, 192
4153 ; BE-NEXT:    lxvd2x v3, 0, r3
4154 ; BE-NEXT:    addi r3, r1, 208
4155 ; BE-NEXT:    lxvd2x v4, 0, r3
4156 ; BE-NEXT:    addi r3, r1, 224
4157 ; BE-NEXT:    lxvd2x v5, 0, r3
4158 ; BE-NEXT:    addi r3, r1, 240
4159 ; BE-NEXT:    lxvd2x v6, 0, r3
4160 ; BE-NEXT:    addi r3, r1, 256
4161 ; BE-NEXT:    lxvd2x v7, 0, r3
4162 ; BE-NEXT:    addi r3, r1, 272
4163 ; BE-NEXT:    lxvd2x v8, 0, r3
4164 ; BE-NEXT:    addi r3, r1, 288
4165 ; BE-NEXT:    lxvd2x v9, 0, r3
4166 ; BE-NEXT:    addi r1, r1, 304
4167 ; BE-NEXT:    ld r0, 16(r1)
4168 ; BE-NEXT:    mtlr r0
4169 ; BE-NEXT:    blr
4171 ; CHECK-LABEL: llrint_v16i64_v16f32:
4172 ; CHECK:       # %bb.0:
4173 ; CHECK-NEXT:    mflr r0
4174 ; CHECK-NEXT:    stdu r1, -176(r1)
4175 ; CHECK-NEXT:    std r0, 192(r1)
4176 ; CHECK-NEXT:    .cfi_def_cfa_offset 176
4177 ; CHECK-NEXT:    .cfi_offset lr, 16
4178 ; CHECK-NEXT:    .cfi_offset v24, -128
4179 ; CHECK-NEXT:    .cfi_offset v25, -112
4180 ; CHECK-NEXT:    .cfi_offset v26, -96
4181 ; CHECK-NEXT:    .cfi_offset v27, -80
4182 ; CHECK-NEXT:    .cfi_offset v28, -64
4183 ; CHECK-NEXT:    .cfi_offset v29, -48
4184 ; CHECK-NEXT:    .cfi_offset v30, -32
4185 ; CHECK-NEXT:    .cfi_offset v31, -16
4186 ; CHECK-NEXT:    li r3, 48
4187 ; CHECK-NEXT:    xxsldwi vs0, v2, v2, 3
4188 ; CHECK-NEXT:    stvx v24, r1, r3 # 16-byte Folded Spill
4189 ; CHECK-NEXT:    li r3, 64
4190 ; CHECK-NEXT:    xscvspdpn f1, vs0
4191 ; CHECK-NEXT:    stvx v25, r1, r3 # 16-byte Folded Spill
4192 ; CHECK-NEXT:    li r3, 80
4193 ; CHECK-NEXT:    stvx v26, r1, r3 # 16-byte Folded Spill
4194 ; CHECK-NEXT:    li r3, 96
4195 ; CHECK-NEXT:    vmr v26, v3
4196 ; CHECK-NEXT:    stvx v27, r1, r3 # 16-byte Folded Spill
4197 ; CHECK-NEXT:    li r3, 112
4198 ; CHECK-NEXT:    stvx v28, r1, r3 # 16-byte Folded Spill
4199 ; CHECK-NEXT:    li r3, 128
4200 ; CHECK-NEXT:    vmr v28, v4
4201 ; CHECK-NEXT:    stvx v29, r1, r3 # 16-byte Folded Spill
4202 ; CHECK-NEXT:    li r3, 144
4203 ; CHECK-NEXT:    vmr v29, v2
4204 ; CHECK-NEXT:    stvx v30, r1, r3 # 16-byte Folded Spill
4205 ; CHECK-NEXT:    li r3, 160
4206 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
4207 ; CHECK-NEXT:    vmr v31, v5
4208 ; CHECK-NEXT:    bl llrintf
4209 ; CHECK-NEXT:    nop
4210 ; CHECK-NEXT:    xxswapd vs0, v29
4211 ; CHECK-NEXT:    mtvsrd v30, r3
4212 ; CHECK-NEXT:    xscvspdpn f1, vs0
4213 ; CHECK-NEXT:    bl llrintf
4214 ; CHECK-NEXT:    nop
4215 ; CHECK-NEXT:    xscvspdpn f1, v29
4216 ; CHECK-NEXT:    mtfprd f0, r3
4217 ; CHECK-NEXT:    xxmrghd v30, vs0, v30
4218 ; CHECK-NEXT:    bl llrintf
4219 ; CHECK-NEXT:    nop
4220 ; CHECK-NEXT:    xxsldwi vs0, v29, v29, 1
4221 ; CHECK-NEXT:    mtvsrd v29, r3
4222 ; CHECK-NEXT:    xscvspdpn f1, vs0
4223 ; CHECK-NEXT:    bl llrintf
4224 ; CHECK-NEXT:    nop
4225 ; CHECK-NEXT:    mtfprd f0, r3
4226 ; CHECK-NEXT:    xxmrghd v29, v29, vs0
4227 ; CHECK-NEXT:    xxsldwi vs0, v26, v26, 3
4228 ; CHECK-NEXT:    xscvspdpn f1, vs0
4229 ; CHECK-NEXT:    bl llrintf
4230 ; CHECK-NEXT:    nop
4231 ; CHECK-NEXT:    xxswapd vs0, v26
4232 ; CHECK-NEXT:    mtvsrd v27, r3
4233 ; CHECK-NEXT:    xscvspdpn f1, vs0
4234 ; CHECK-NEXT:    bl llrintf
4235 ; CHECK-NEXT:    nop
4236 ; CHECK-NEXT:    xscvspdpn f1, v26
4237 ; CHECK-NEXT:    mtfprd f0, r3
4238 ; CHECK-NEXT:    xxmrghd v27, vs0, v27
4239 ; CHECK-NEXT:    bl llrintf
4240 ; CHECK-NEXT:    nop
4241 ; CHECK-NEXT:    xxsldwi vs0, v26, v26, 1
4242 ; CHECK-NEXT:    mtvsrd v26, r3
4243 ; CHECK-NEXT:    xscvspdpn f1, vs0
4244 ; CHECK-NEXT:    bl llrintf
4245 ; CHECK-NEXT:    nop
4246 ; CHECK-NEXT:    mtfprd f0, r3
4247 ; CHECK-NEXT:    xxmrghd v26, v26, vs0
4248 ; CHECK-NEXT:    xxsldwi vs0, v28, v28, 3
4249 ; CHECK-NEXT:    xscvspdpn f1, vs0
4250 ; CHECK-NEXT:    bl llrintf
4251 ; CHECK-NEXT:    nop
4252 ; CHECK-NEXT:    xxswapd vs0, v28
4253 ; CHECK-NEXT:    mtvsrd v25, r3
4254 ; CHECK-NEXT:    xscvspdpn f1, vs0
4255 ; CHECK-NEXT:    bl llrintf
4256 ; CHECK-NEXT:    nop
4257 ; CHECK-NEXT:    xscvspdpn f1, v28
4258 ; CHECK-NEXT:    mtfprd f0, r3
4259 ; CHECK-NEXT:    xxmrghd v25, vs0, v25
4260 ; CHECK-NEXT:    bl llrintf
4261 ; CHECK-NEXT:    nop
4262 ; CHECK-NEXT:    xxsldwi vs0, v28, v28, 1
4263 ; CHECK-NEXT:    mtvsrd v28, r3
4264 ; CHECK-NEXT:    xscvspdpn f1, vs0
4265 ; CHECK-NEXT:    bl llrintf
4266 ; CHECK-NEXT:    nop
4267 ; CHECK-NEXT:    mtfprd f0, r3
4268 ; CHECK-NEXT:    xxmrghd v28, v28, vs0
4269 ; CHECK-NEXT:    xxsldwi vs0, v31, v31, 3
4270 ; CHECK-NEXT:    xscvspdpn f1, vs0
4271 ; CHECK-NEXT:    bl llrintf
4272 ; CHECK-NEXT:    nop
4273 ; CHECK-NEXT:    xxswapd vs0, v31
4274 ; CHECK-NEXT:    mtvsrd v24, r3
4275 ; CHECK-NEXT:    xscvspdpn f1, vs0
4276 ; CHECK-NEXT:    bl llrintf
4277 ; CHECK-NEXT:    nop
4278 ; CHECK-NEXT:    xscvspdpn f1, v31
4279 ; CHECK-NEXT:    mtfprd f0, r3
4280 ; CHECK-NEXT:    xxmrghd v24, vs0, v24
4281 ; CHECK-NEXT:    bl llrintf
4282 ; CHECK-NEXT:    nop
4283 ; CHECK-NEXT:    xxsldwi vs0, v31, v31, 1
4284 ; CHECK-NEXT:    mtvsrd v31, r3
4285 ; CHECK-NEXT:    xscvspdpn f1, vs0
4286 ; CHECK-NEXT:    bl llrintf
4287 ; CHECK-NEXT:    nop
4288 ; CHECK-NEXT:    mtfprd f0, r3
4289 ; CHECK-NEXT:    li r3, 160
4290 ; CHECK-NEXT:    vmr v2, v30
4291 ; CHECK-NEXT:    vmr v3, v29
4292 ; CHECK-NEXT:    vmr v7, v28
4293 ; CHECK-NEXT:    vmr v4, v27
4294 ; CHECK-NEXT:    vmr v5, v26
4295 ; CHECK-NEXT:    vmr v6, v25
4296 ; CHECK-NEXT:    vmr v8, v24
4297 ; CHECK-NEXT:    xxmrghd v9, v31, vs0
4298 ; CHECK-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload
4299 ; CHECK-NEXT:    li r3, 144
4300 ; CHECK-NEXT:    lvx v30, r1, r3 # 16-byte Folded Reload
4301 ; CHECK-NEXT:    li r3, 128
4302 ; CHECK-NEXT:    lvx v29, r1, r3 # 16-byte Folded Reload
4303 ; CHECK-NEXT:    li r3, 112
4304 ; CHECK-NEXT:    lvx v28, r1, r3 # 16-byte Folded Reload
4305 ; CHECK-NEXT:    li r3, 96
4306 ; CHECK-NEXT:    lvx v27, r1, r3 # 16-byte Folded Reload
4307 ; CHECK-NEXT:    li r3, 80
4308 ; CHECK-NEXT:    lvx v26, r1, r3 # 16-byte Folded Reload
4309 ; CHECK-NEXT:    li r3, 64
4310 ; CHECK-NEXT:    lvx v25, r1, r3 # 16-byte Folded Reload
4311 ; CHECK-NEXT:    li r3, 48
4312 ; CHECK-NEXT:    lvx v24, r1, r3 # 16-byte Folded Reload
4313 ; CHECK-NEXT:    addi r1, r1, 176
4314 ; CHECK-NEXT:    ld r0, 16(r1)
4315 ; CHECK-NEXT:    mtlr r0
4316 ; CHECK-NEXT:    blr
4318 ; FAST-LABEL: llrint_v16i64_v16f32:
4319 ; FAST:       # %bb.0:
4320 ; FAST-NEXT:    xxsldwi vs0, v2, v2, 3
4321 ; FAST-NEXT:    xxswapd vs1, v2
4322 ; FAST-NEXT:    xscvspdpn f0, vs0
4323 ; FAST-NEXT:    xxsldwi vs2, v2, v2, 1
4324 ; FAST-NEXT:    xxsldwi vs3, v3, v3, 3
4325 ; FAST-NEXT:    xxswapd vs4, v3
4326 ; FAST-NEXT:    xxsldwi vs5, v3, v3, 1
4327 ; FAST-NEXT:    xxsldwi vs6, v4, v4, 3
4328 ; FAST-NEXT:    xxswapd vs7, v4
4329 ; FAST-NEXT:    xxsldwi vs8, v4, v4, 1
4330 ; FAST-NEXT:    xxsldwi vs9, v5, v5, 3
4331 ; FAST-NEXT:    xxswapd vs10, v5
4332 ; FAST-NEXT:    xxsldwi vs11, v5, v5, 1
4333 ; FAST-NEXT:    fctid f0, f0
4334 ; FAST-NEXT:    mffprd r3, f0
4335 ; FAST-NEXT:    xscvspdpn f0, vs1
4336 ; FAST-NEXT:    mtfprd f1, r3
4337 ; FAST-NEXT:    fctid f0, f0
4338 ; FAST-NEXT:    mffprd r3, f0
4339 ; FAST-NEXT:    mtfprd f0, r3
4340 ; FAST-NEXT:    xxmrghd v0, vs0, vs1
4341 ; FAST-NEXT:    xscvspdpn f0, v2
4342 ; FAST-NEXT:    vmr v2, v0
4343 ; FAST-NEXT:    fctid f0, f0
4344 ; FAST-NEXT:    mffprd r3, f0
4345 ; FAST-NEXT:    xscvspdpn f0, vs2
4346 ; FAST-NEXT:    mtfprd f1, r3
4347 ; FAST-NEXT:    fctid f0, f0
4348 ; FAST-NEXT:    mffprd r3, f0
4349 ; FAST-NEXT:    mtfprd f0, r3
4350 ; FAST-NEXT:    xxmrghd v1, vs1, vs0
4351 ; FAST-NEXT:    xscvspdpn f0, vs3
4352 ; FAST-NEXT:    fctid f0, f0
4353 ; FAST-NEXT:    mffprd r3, f0
4354 ; FAST-NEXT:    xscvspdpn f0, vs4
4355 ; FAST-NEXT:    mtfprd f1, r3
4356 ; FAST-NEXT:    fctid f0, f0
4357 ; FAST-NEXT:    mffprd r3, f0
4358 ; FAST-NEXT:    mtfprd f0, r3
4359 ; FAST-NEXT:    xxmrghd v10, vs0, vs1
4360 ; FAST-NEXT:    xscvspdpn f0, v3
4361 ; FAST-NEXT:    vmr v3, v1
4362 ; FAST-NEXT:    fctid f0, f0
4363 ; FAST-NEXT:    mffprd r3, f0
4364 ; FAST-NEXT:    xscvspdpn f0, vs5
4365 ; FAST-NEXT:    mtfprd f1, r3
4366 ; FAST-NEXT:    fctid f0, f0
4367 ; FAST-NEXT:    mffprd r3, f0
4368 ; FAST-NEXT:    mtfprd f0, r3
4369 ; FAST-NEXT:    xxmrghd v11, vs1, vs0
4370 ; FAST-NEXT:    xscvspdpn f0, vs6
4371 ; FAST-NEXT:    fctid f0, f0
4372 ; FAST-NEXT:    mffprd r3, f0
4373 ; FAST-NEXT:    xscvspdpn f0, vs7
4374 ; FAST-NEXT:    mtfprd f1, r3
4375 ; FAST-NEXT:    fctid f0, f0
4376 ; FAST-NEXT:    mffprd r3, f0
4377 ; FAST-NEXT:    mtfprd f0, r3
4378 ; FAST-NEXT:    xxmrghd v6, vs0, vs1
4379 ; FAST-NEXT:    xscvspdpn f0, v4
4380 ; FAST-NEXT:    xscvspdpn f1, vs8
4381 ; FAST-NEXT:    vmr v4, v10
4382 ; FAST-NEXT:    fctid f0, f0
4383 ; FAST-NEXT:    fctid f1, f1
4384 ; FAST-NEXT:    mffprd r3, f0
4385 ; FAST-NEXT:    mtfprd f0, r3
4386 ; FAST-NEXT:    mffprd r3, f1
4387 ; FAST-NEXT:    mtfprd f1, r3
4388 ; FAST-NEXT:    xxmrghd v7, vs0, vs1
4389 ; FAST-NEXT:    xscvspdpn f0, vs9
4390 ; FAST-NEXT:    xscvspdpn f1, vs10
4391 ; FAST-NEXT:    fctid f0, f0
4392 ; FAST-NEXT:    fctid f1, f1
4393 ; FAST-NEXT:    mffprd r3, f0
4394 ; FAST-NEXT:    mtfprd f0, r3
4395 ; FAST-NEXT:    mffprd r3, f1
4396 ; FAST-NEXT:    mtfprd f1, r3
4397 ; FAST-NEXT:    xxmrghd v8, vs1, vs0
4398 ; FAST-NEXT:    xscvspdpn f0, v5
4399 ; FAST-NEXT:    xscvspdpn f1, vs11
4400 ; FAST-NEXT:    vmr v5, v11
4401 ; FAST-NEXT:    fctid f0, f0
4402 ; FAST-NEXT:    fctid f1, f1
4403 ; FAST-NEXT:    mffprd r3, f0
4404 ; FAST-NEXT:    mtfprd f0, r3
4405 ; FAST-NEXT:    mffprd r3, f1
4406 ; FAST-NEXT:    mtfprd f1, r3
4407 ; FAST-NEXT:    xxmrghd v9, vs0, vs1
4408 ; FAST-NEXT:    blr
4409   %a = call <16 x i64> @llvm.llrint.v16i64.v16f32(<16 x float> %x)
4410   ret <16 x i64> %a
4412 declare <16 x i64> @llvm.llrint.v16i64.v16f32(<16 x float>)
4414 define <1 x i64> @llrint_v1i64_v1f64(<1 x double> %x) {
4415 ; BE-LABEL: llrint_v1i64_v1f64:
4416 ; BE:       # %bb.0:
4417 ; BE-NEXT:    mflr r0
4418 ; BE-NEXT:    stdu r1, -112(r1)
4419 ; BE-NEXT:    std r0, 128(r1)
4420 ; BE-NEXT:    .cfi_def_cfa_offset 112
4421 ; BE-NEXT:    .cfi_offset lr, 16
4422 ; BE-NEXT:    bl llrint
4423 ; BE-NEXT:    nop
4424 ; BE-NEXT:    addi r1, r1, 112
4425 ; BE-NEXT:    ld r0, 16(r1)
4426 ; BE-NEXT:    mtlr r0
4427 ; BE-NEXT:    blr
4429 ; CHECK-LABEL: llrint_v1i64_v1f64:
4430 ; CHECK:       # %bb.0:
4431 ; CHECK-NEXT:    mflr r0
4432 ; CHECK-NEXT:    stdu r1, -32(r1)
4433 ; CHECK-NEXT:    std r0, 48(r1)
4434 ; CHECK-NEXT:    .cfi_def_cfa_offset 32
4435 ; CHECK-NEXT:    .cfi_offset lr, 16
4436 ; CHECK-NEXT:    bl llrint
4437 ; CHECK-NEXT:    nop
4438 ; CHECK-NEXT:    addi r1, r1, 32
4439 ; CHECK-NEXT:    ld r0, 16(r1)
4440 ; CHECK-NEXT:    mtlr r0
4441 ; CHECK-NEXT:    blr
4443 ; FAST-LABEL: llrint_v1i64_v1f64:
4444 ; FAST:       # %bb.0:
4445 ; FAST-NEXT:    fctid f0, f1
4446 ; FAST-NEXT:    mffprd r3, f0
4447 ; FAST-NEXT:    blr
4448   %a = call <1 x i64> @llvm.llrint.v1i64.v1f64(<1 x double> %x)
4449   ret <1 x i64> %a
4451 declare <1 x i64> @llvm.llrint.v1i64.v1f64(<1 x double>)
4453 define <2 x i64> @llrint_v2i64_v2f64(<2 x double> %x) {
4454 ; BE-LABEL: llrint_v2i64_v2f64:
4455 ; BE:       # %bb.0:
4456 ; BE-NEXT:    mflr r0
4457 ; BE-NEXT:    stdu r1, -160(r1)
4458 ; BE-NEXT:    std r0, 176(r1)
4459 ; BE-NEXT:    .cfi_def_cfa_offset 160
4460 ; BE-NEXT:    .cfi_offset lr, 16
4461 ; BE-NEXT:    .cfi_offset v31, -16
4462 ; BE-NEXT:    li r3, 144
4463 ; BE-NEXT:    stxvd2x v31, r1, r3 # 16-byte Folded Spill
4464 ; BE-NEXT:    vmr v31, v2
4465 ; BE-NEXT:    xxlor f1, v31, v31
4466 ; BE-NEXT:    bl llrint
4467 ; BE-NEXT:    nop
4468 ; BE-NEXT:    xxswapd vs1, v31
4469 ; BE-NEXT:    std r3, 128(r1)
4470 ; BE-NEXT:    bl llrint
4471 ; BE-NEXT:    nop
4472 ; BE-NEXT:    std r3, 136(r1)
4473 ; BE-NEXT:    addi r3, r1, 128
4474 ; BE-NEXT:    lxvd2x v2, 0, r3
4475 ; BE-NEXT:    li r3, 144
4476 ; BE-NEXT:    lxvd2x v31, r1, r3 # 16-byte Folded Reload
4477 ; BE-NEXT:    addi r1, r1, 160
4478 ; BE-NEXT:    ld r0, 16(r1)
4479 ; BE-NEXT:    mtlr r0
4480 ; BE-NEXT:    blr
4482 ; CHECK-LABEL: llrint_v2i64_v2f64:
4483 ; CHECK:       # %bb.0:
4484 ; CHECK-NEXT:    mflr r0
4485 ; CHECK-NEXT:    stdu r1, -64(r1)
4486 ; CHECK-NEXT:    std r0, 80(r1)
4487 ; CHECK-NEXT:    .cfi_def_cfa_offset 64
4488 ; CHECK-NEXT:    .cfi_offset lr, 16
4489 ; CHECK-NEXT:    .cfi_offset v31, -16
4490 ; CHECK-NEXT:    li r3, 48
4491 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
4492 ; CHECK-NEXT:    vmr v31, v2
4493 ; CHECK-NEXT:    xxlor f1, v31, v31
4494 ; CHECK-NEXT:    bl llrint
4495 ; CHECK-NEXT:    nop
4496 ; CHECK-NEXT:    xxswapd vs1, v31
4497 ; CHECK-NEXT:    mtvsrd v31, r3
4498 ; CHECK-NEXT:    bl llrint
4499 ; CHECK-NEXT:    nop
4500 ; CHECK-NEXT:    mtfprd f0, r3
4501 ; CHECK-NEXT:    li r3, 48
4502 ; CHECK-NEXT:    xxmrghd v2, v31, vs0
4503 ; CHECK-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload
4504 ; CHECK-NEXT:    addi r1, r1, 64
4505 ; CHECK-NEXT:    ld r0, 16(r1)
4506 ; CHECK-NEXT:    mtlr r0
4507 ; CHECK-NEXT:    blr
4509 ; FAST-LABEL: llrint_v2i64_v2f64:
4510 ; FAST:       # %bb.0:
4511 ; FAST-NEXT:    xxlor f1, v2, v2
4512 ; FAST-NEXT:    xxswapd vs0, v2
4513 ; FAST-NEXT:    fctid f1, f1
4514 ; FAST-NEXT:    fctid f0, f0
4515 ; FAST-NEXT:    mffprd r3, f1
4516 ; FAST-NEXT:    mtfprd f1, r3
4517 ; FAST-NEXT:    mffprd r3, f0
4518 ; FAST-NEXT:    mtfprd f0, r3
4519 ; FAST-NEXT:    xxmrghd v2, vs1, vs0
4520 ; FAST-NEXT:    blr
4521   %a = call <2 x i64> @llvm.llrint.v2i64.v2f64(<2 x double> %x)
4522   ret <2 x i64> %a
4524 declare <2 x i64> @llvm.llrint.v2i64.v2f64(<2 x double>)
4526 define <4 x i64> @llrint_v4i64_v4f64(<4 x double> %x) {
4527 ; BE-LABEL: llrint_v4i64_v4f64:
4528 ; BE:       # %bb.0:
4529 ; BE-NEXT:    mflr r0
4530 ; BE-NEXT:    stdu r1, -192(r1)
4531 ; BE-NEXT:    std r0, 208(r1)
4532 ; BE-NEXT:    .cfi_def_cfa_offset 192
4533 ; BE-NEXT:    .cfi_offset lr, 16
4534 ; BE-NEXT:    .cfi_offset v30, -32
4535 ; BE-NEXT:    .cfi_offset v31, -16
4536 ; BE-NEXT:    li r3, 160
4537 ; BE-NEXT:    stxvd2x v30, r1, r3 # 16-byte Folded Spill
4538 ; BE-NEXT:    vmr v30, v2
4539 ; BE-NEXT:    li r3, 176
4540 ; BE-NEXT:    xxlor f1, v30, v30
4541 ; BE-NEXT:    stxvd2x v31, r1, r3 # 16-byte Folded Spill
4542 ; BE-NEXT:    vmr v31, v3
4543 ; BE-NEXT:    bl llrint
4544 ; BE-NEXT:    nop
4545 ; BE-NEXT:    xxswapd vs1, v30
4546 ; BE-NEXT:    std r3, 128(r1)
4547 ; BE-NEXT:    bl llrint
4548 ; BE-NEXT:    nop
4549 ; BE-NEXT:    xxlor f1, v31, v31
4550 ; BE-NEXT:    std r3, 136(r1)
4551 ; BE-NEXT:    bl llrint
4552 ; BE-NEXT:    nop
4553 ; BE-NEXT:    xxswapd vs1, v31
4554 ; BE-NEXT:    std r3, 144(r1)
4555 ; BE-NEXT:    bl llrint
4556 ; BE-NEXT:    nop
4557 ; BE-NEXT:    std r3, 152(r1)
4558 ; BE-NEXT:    addi r3, r1, 128
4559 ; BE-NEXT:    lxvd2x v2, 0, r3
4560 ; BE-NEXT:    addi r3, r1, 144
4561 ; BE-NEXT:    lxvd2x v3, 0, r3
4562 ; BE-NEXT:    li r3, 176
4563 ; BE-NEXT:    lxvd2x v31, r1, r3 # 16-byte Folded Reload
4564 ; BE-NEXT:    li r3, 160
4565 ; BE-NEXT:    lxvd2x v30, r1, r3 # 16-byte Folded Reload
4566 ; BE-NEXT:    addi r1, r1, 192
4567 ; BE-NEXT:    ld r0, 16(r1)
4568 ; BE-NEXT:    mtlr r0
4569 ; BE-NEXT:    blr
4571 ; CHECK-LABEL: llrint_v4i64_v4f64:
4572 ; CHECK:       # %bb.0:
4573 ; CHECK-NEXT:    mflr r0
4574 ; CHECK-NEXT:    stdu r1, -80(r1)
4575 ; CHECK-NEXT:    std r0, 96(r1)
4576 ; CHECK-NEXT:    .cfi_def_cfa_offset 80
4577 ; CHECK-NEXT:    .cfi_offset lr, 16
4578 ; CHECK-NEXT:    .cfi_offset v30, -32
4579 ; CHECK-NEXT:    .cfi_offset v31, -16
4580 ; CHECK-NEXT:    li r3, 48
4581 ; CHECK-NEXT:    stvx v30, r1, r3 # 16-byte Folded Spill
4582 ; CHECK-NEXT:    vmr v30, v2
4583 ; CHECK-NEXT:    li r3, 64
4584 ; CHECK-NEXT:    xxlor f1, v30, v30
4585 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
4586 ; CHECK-NEXT:    vmr v31, v3
4587 ; CHECK-NEXT:    bl llrint
4588 ; CHECK-NEXT:    nop
4589 ; CHECK-NEXT:    xxswapd vs1, v30
4590 ; CHECK-NEXT:    mtvsrd v30, r3
4591 ; CHECK-NEXT:    bl llrint
4592 ; CHECK-NEXT:    nop
4593 ; CHECK-NEXT:    mtfprd f0, r3
4594 ; CHECK-NEXT:    xxlor f1, v31, v31
4595 ; CHECK-NEXT:    xxmrghd v30, v30, vs0
4596 ; CHECK-NEXT:    bl llrint
4597 ; CHECK-NEXT:    nop
4598 ; CHECK-NEXT:    xxswapd vs1, v31
4599 ; CHECK-NEXT:    mtvsrd v31, r3
4600 ; CHECK-NEXT:    bl llrint
4601 ; CHECK-NEXT:    nop
4602 ; CHECK-NEXT:    mtfprd f0, r3
4603 ; CHECK-NEXT:    li r3, 64
4604 ; CHECK-NEXT:    vmr v2, v30
4605 ; CHECK-NEXT:    xxmrghd v3, v31, vs0
4606 ; CHECK-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload
4607 ; CHECK-NEXT:    li r3, 48
4608 ; CHECK-NEXT:    lvx v30, r1, r3 # 16-byte Folded Reload
4609 ; CHECK-NEXT:    addi r1, r1, 80
4610 ; CHECK-NEXT:    ld r0, 16(r1)
4611 ; CHECK-NEXT:    mtlr r0
4612 ; CHECK-NEXT:    blr
4614 ; FAST-LABEL: llrint_v4i64_v4f64:
4615 ; FAST:       # %bb.0:
4616 ; FAST-NEXT:    xxswapd vs0, v2
4617 ; FAST-NEXT:    xxlor f2, v2, v2
4618 ; FAST-NEXT:    xxswapd vs1, v3
4619 ; FAST-NEXT:    fctid f0, f0
4620 ; FAST-NEXT:    fctid f2, f2
4621 ; FAST-NEXT:    fctid f1, f1
4622 ; FAST-NEXT:    mffprd r4, f0
4623 ; FAST-NEXT:    xxlor f0, v3, v3
4624 ; FAST-NEXT:    mffprd r3, f2
4625 ; FAST-NEXT:    fctid f0, f0
4626 ; FAST-NEXT:    mtfprd f2, r4
4627 ; FAST-NEXT:    mffprd r5, f0
4628 ; FAST-NEXT:    mtfprd f0, r3
4629 ; FAST-NEXT:    mffprd r3, f1
4630 ; FAST-NEXT:    mtfprd f1, r3
4631 ; FAST-NEXT:    xxmrghd v2, vs0, vs2
4632 ; FAST-NEXT:    mtfprd f0, r5
4633 ; FAST-NEXT:    xxmrghd v3, vs0, vs1
4634 ; FAST-NEXT:    blr
4635   %a = call <4 x i64> @llvm.llrint.v4i64.v4f64(<4 x double> %x)
4636   ret <4 x i64> %a
4638 declare <4 x i64> @llvm.llrint.v4i64.v4f64(<4 x double>)
4640 define <8 x i64> @llrint_v8i64_v8f64(<8 x double> %x) {
4641 ; BE-LABEL: llrint_v8i64_v8f64:
4642 ; BE:       # %bb.0:
4643 ; BE-NEXT:    mflr r0
4644 ; BE-NEXT:    stdu r1, -256(r1)
4645 ; BE-NEXT:    std r0, 272(r1)
4646 ; BE-NEXT:    .cfi_def_cfa_offset 256
4647 ; BE-NEXT:    .cfi_offset lr, 16
4648 ; BE-NEXT:    .cfi_offset v28, -64
4649 ; BE-NEXT:    .cfi_offset v29, -48
4650 ; BE-NEXT:    .cfi_offset v30, -32
4651 ; BE-NEXT:    .cfi_offset v31, -16
4652 ; BE-NEXT:    li r3, 192
4653 ; BE-NEXT:    stxvd2x v28, r1, r3 # 16-byte Folded Spill
4654 ; BE-NEXT:    li r3, 208
4655 ; BE-NEXT:    vmr v28, v2
4656 ; BE-NEXT:    xxlor f1, v28, v28
4657 ; BE-NEXT:    stxvd2x v29, r1, r3 # 16-byte Folded Spill
4658 ; BE-NEXT:    li r3, 224
4659 ; BE-NEXT:    vmr v29, v3
4660 ; BE-NEXT:    stxvd2x v30, r1, r3 # 16-byte Folded Spill
4661 ; BE-NEXT:    li r3, 240
4662 ; BE-NEXT:    vmr v30, v4
4663 ; BE-NEXT:    stxvd2x v31, r1, r3 # 16-byte Folded Spill
4664 ; BE-NEXT:    vmr v31, v5
4665 ; BE-NEXT:    bl llrint
4666 ; BE-NEXT:    nop
4667 ; BE-NEXT:    xxswapd vs1, v28
4668 ; BE-NEXT:    std r3, 128(r1)
4669 ; BE-NEXT:    bl llrint
4670 ; BE-NEXT:    nop
4671 ; BE-NEXT:    xxlor f1, v29, v29
4672 ; BE-NEXT:    std r3, 136(r1)
4673 ; BE-NEXT:    bl llrint
4674 ; BE-NEXT:    nop
4675 ; BE-NEXT:    xxswapd vs1, v29
4676 ; BE-NEXT:    std r3, 144(r1)
4677 ; BE-NEXT:    bl llrint
4678 ; BE-NEXT:    nop
4679 ; BE-NEXT:    xxlor f1, v30, v30
4680 ; BE-NEXT:    std r3, 152(r1)
4681 ; BE-NEXT:    bl llrint
4682 ; BE-NEXT:    nop
4683 ; BE-NEXT:    xxswapd vs1, v30
4684 ; BE-NEXT:    std r3, 160(r1)
4685 ; BE-NEXT:    bl llrint
4686 ; BE-NEXT:    nop
4687 ; BE-NEXT:    xxlor f1, v31, v31
4688 ; BE-NEXT:    std r3, 168(r1)
4689 ; BE-NEXT:    bl llrint
4690 ; BE-NEXT:    nop
4691 ; BE-NEXT:    xxswapd vs1, v31
4692 ; BE-NEXT:    std r3, 176(r1)
4693 ; BE-NEXT:    bl llrint
4694 ; BE-NEXT:    nop
4695 ; BE-NEXT:    std r3, 184(r1)
4696 ; BE-NEXT:    addi r3, r1, 128
4697 ; BE-NEXT:    lxvd2x v2, 0, r3
4698 ; BE-NEXT:    addi r3, r1, 144
4699 ; BE-NEXT:    lxvd2x v3, 0, r3
4700 ; BE-NEXT:    addi r3, r1, 160
4701 ; BE-NEXT:    lxvd2x v4, 0, r3
4702 ; BE-NEXT:    addi r3, r1, 176
4703 ; BE-NEXT:    lxvd2x v5, 0, r3
4704 ; BE-NEXT:    li r3, 240
4705 ; BE-NEXT:    lxvd2x v31, r1, r3 # 16-byte Folded Reload
4706 ; BE-NEXT:    li r3, 224
4707 ; BE-NEXT:    lxvd2x v30, r1, r3 # 16-byte Folded Reload
4708 ; BE-NEXT:    li r3, 208
4709 ; BE-NEXT:    lxvd2x v29, r1, r3 # 16-byte Folded Reload
4710 ; BE-NEXT:    li r3, 192
4711 ; BE-NEXT:    lxvd2x v28, r1, r3 # 16-byte Folded Reload
4712 ; BE-NEXT:    addi r1, r1, 256
4713 ; BE-NEXT:    ld r0, 16(r1)
4714 ; BE-NEXT:    mtlr r0
4715 ; BE-NEXT:    blr
4717 ; CHECK-LABEL: llrint_v8i64_v8f64:
4718 ; CHECK:       # %bb.0:
4719 ; CHECK-NEXT:    mflr r0
4720 ; CHECK-NEXT:    stdu r1, -112(r1)
4721 ; CHECK-NEXT:    std r0, 128(r1)
4722 ; CHECK-NEXT:    .cfi_def_cfa_offset 112
4723 ; CHECK-NEXT:    .cfi_offset lr, 16
4724 ; CHECK-NEXT:    .cfi_offset v28, -64
4725 ; CHECK-NEXT:    .cfi_offset v29, -48
4726 ; CHECK-NEXT:    .cfi_offset v30, -32
4727 ; CHECK-NEXT:    .cfi_offset v31, -16
4728 ; CHECK-NEXT:    li r3, 48
4729 ; CHECK-NEXT:    stvx v28, r1, r3 # 16-byte Folded Spill
4730 ; CHECK-NEXT:    li r3, 64
4731 ; CHECK-NEXT:    vmr v28, v2
4732 ; CHECK-NEXT:    stvx v29, r1, r3 # 16-byte Folded Spill
4733 ; CHECK-NEXT:    li r3, 80
4734 ; CHECK-NEXT:    xxlor f1, v28, v28
4735 ; CHECK-NEXT:    vmr v29, v3
4736 ; CHECK-NEXT:    stvx v30, r1, r3 # 16-byte Folded Spill
4737 ; CHECK-NEXT:    li r3, 96
4738 ; CHECK-NEXT:    vmr v30, v4
4739 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
4740 ; CHECK-NEXT:    vmr v31, v5
4741 ; CHECK-NEXT:    bl llrint
4742 ; CHECK-NEXT:    nop
4743 ; CHECK-NEXT:    xxswapd vs1, v28
4744 ; CHECK-NEXT:    mtvsrd v28, r3
4745 ; CHECK-NEXT:    bl llrint
4746 ; CHECK-NEXT:    nop
4747 ; CHECK-NEXT:    mtfprd f0, r3
4748 ; CHECK-NEXT:    xxlor f1, v29, v29
4749 ; CHECK-NEXT:    xxmrghd v28, v28, vs0
4750 ; CHECK-NEXT:    bl llrint
4751 ; CHECK-NEXT:    nop
4752 ; CHECK-NEXT:    xxswapd vs1, v29
4753 ; CHECK-NEXT:    mtvsrd v29, r3
4754 ; CHECK-NEXT:    bl llrint
4755 ; CHECK-NEXT:    nop
4756 ; CHECK-NEXT:    mtfprd f0, r3
4757 ; CHECK-NEXT:    xxlor f1, v30, v30
4758 ; CHECK-NEXT:    xxmrghd v29, v29, vs0
4759 ; CHECK-NEXT:    bl llrint
4760 ; CHECK-NEXT:    nop
4761 ; CHECK-NEXT:    xxswapd vs1, v30
4762 ; CHECK-NEXT:    mtvsrd v30, r3
4763 ; CHECK-NEXT:    bl llrint
4764 ; CHECK-NEXT:    nop
4765 ; CHECK-NEXT:    mtfprd f0, r3
4766 ; CHECK-NEXT:    xxlor f1, v31, v31
4767 ; CHECK-NEXT:    xxmrghd v30, v30, vs0
4768 ; CHECK-NEXT:    bl llrint
4769 ; CHECK-NEXT:    nop
4770 ; CHECK-NEXT:    xxswapd vs1, v31
4771 ; CHECK-NEXT:    mtvsrd v31, r3
4772 ; CHECK-NEXT:    bl llrint
4773 ; CHECK-NEXT:    nop
4774 ; CHECK-NEXT:    mtfprd f0, r3
4775 ; CHECK-NEXT:    li r3, 96
4776 ; CHECK-NEXT:    vmr v4, v30
4777 ; CHECK-NEXT:    vmr v3, v29
4778 ; CHECK-NEXT:    vmr v2, v28
4779 ; CHECK-NEXT:    xxmrghd v5, v31, vs0
4780 ; CHECK-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload
4781 ; CHECK-NEXT:    li r3, 80
4782 ; CHECK-NEXT:    lvx v30, r1, r3 # 16-byte Folded Reload
4783 ; CHECK-NEXT:    li r3, 64
4784 ; CHECK-NEXT:    lvx v29, r1, r3 # 16-byte Folded Reload
4785 ; CHECK-NEXT:    li r3, 48
4786 ; CHECK-NEXT:    lvx v28, r1, r3 # 16-byte Folded Reload
4787 ; CHECK-NEXT:    addi r1, r1, 112
4788 ; CHECK-NEXT:    ld r0, 16(r1)
4789 ; CHECK-NEXT:    mtlr r0
4790 ; CHECK-NEXT:    blr
4792 ; FAST-LABEL: llrint_v8i64_v8f64:
4793 ; FAST:       # %bb.0:
4794 ; FAST-NEXT:    xxswapd vs0, v2
4795 ; FAST-NEXT:    xxswapd vs1, v3
4796 ; FAST-NEXT:    xxlor f4, v2, v2
4797 ; FAST-NEXT:    xxswapd vs2, v4
4798 ; FAST-NEXT:    xxswapd vs3, v5
4799 ; FAST-NEXT:    fctid f0, f0
4800 ; FAST-NEXT:    fctid f4, f4
4801 ; FAST-NEXT:    mffprd r4, f0
4802 ; FAST-NEXT:    xxlor f0, v3, v3
4803 ; FAST-NEXT:    mffprd r3, f4
4804 ; FAST-NEXT:    fctid f0, f0
4805 ; FAST-NEXT:    mffprd r5, f0
4806 ; FAST-NEXT:    fctid f0, f1
4807 ; FAST-NEXT:    mtfprd f1, r4
4808 ; FAST-NEXT:    mffprd r6, f0
4809 ; FAST-NEXT:    xxlor f0, v4, v4
4810 ; FAST-NEXT:    fctid f0, f0
4811 ; FAST-NEXT:    mtfprd f4, r6
4812 ; FAST-NEXT:    mffprd r7, f0
4813 ; FAST-NEXT:    fctid f0, f2
4814 ; FAST-NEXT:    mtfprd f2, r5
4815 ; FAST-NEXT:    mtfprd f5, r7
4816 ; FAST-NEXT:    mffprd r8, f0
4817 ; FAST-NEXT:    xxlor f0, v5, v5
4818 ; FAST-NEXT:    fctid f0, f0
4819 ; FAST-NEXT:    mtfprd f6, r8
4820 ; FAST-NEXT:    mffprd r9, f0
4821 ; FAST-NEXT:    mtfprd f0, r3
4822 ; FAST-NEXT:    xxmrghd v3, vs2, vs4
4823 ; FAST-NEXT:    xxmrghd v4, vs5, vs6
4824 ; FAST-NEXT:    xxmrghd v2, vs0, vs1
4825 ; FAST-NEXT:    fctid f1, f3
4826 ; FAST-NEXT:    mtfprd f0, r9
4827 ; FAST-NEXT:    mffprd r3, f1
4828 ; FAST-NEXT:    mtfprd f1, r3
4829 ; FAST-NEXT:    xxmrghd v5, vs0, vs1
4830 ; FAST-NEXT:    blr
4831   %a = call <8 x i64> @llvm.llrint.v8i64.v8f64(<8 x double> %x)
4832   ret <8 x i64> %a
4834 declare <8 x i64> @llvm.llrint.v8i64.v8f64(<8 x double>)