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