xref: /llvm-project/llvm/test/CodeGen/PowerPC/vector-lrint.ll (revision 53c37f300dd1b450671f2aee4cc649c380adb5ad)
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
22
23define <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
42;
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
61;
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
82}
83declare <1 x i64> @llvm.lrint.v1i64.v1f16(<1 x half>)
84
85define <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
127;
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
172;
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
213}
214declare <2 x i64> @llvm.lrint.v2i64.v2f16(<2 x half>)
215
216define <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
298;
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
388;
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
458}
459declare <4 x i64> @llvm.lrint.v4i64.v4f16(<4 x half>)
460
461define <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
623;
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
803;
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
931}
932declare <8 x i64> @llvm.lrint.v8i64.v8f16(<8 x half>)
933
934define <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
1253;
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
1610;
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
1852}
1853declare <16 x i64> @llvm.lrint.v16i64.v16f16(<16 x half>)
1854
1855define <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
2446;
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
3116;
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
3668}
3669declare <32 x i64> @llvm.lrint.v32i64.v32f16(<32 x half>)
3670
3671define <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
3685;
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
3699;
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
3707}
3708declare <1 x i64> @llvm.lrint.v1i64.v1f32(<1 x float>)
3709
3710define <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
3734;
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
3763;
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
3780}
3781declare <2 x i64> @llvm.lrint.v2i64.v2f32(<2 x float>)
3782
3783define <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
3817;
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
3862;
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
3890}
3891declare <4 x i64> @llvm.lrint.v4i64.v4f32(<4 x float>)
3892
3893define <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
3949;
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
4028;
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
4078}
4079declare <8 x i64> @llvm.lrint.v8i64.v8f32(<8 x float>)
4080
4081define <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
4181;
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
4328;
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
4422}
4423declare <16 x i64> @llvm.lrint.v16i64.v16f32(<16 x float>)
4424
4425define <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
4439;
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
4453;
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
4461}
4462declare <1 x i64> @llvm.lrint.v1i64.v1f64(<1 x double>)
4463
4464define <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
4492;
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
4519;
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
4534}
4535declare <2 x i64> @llvm.lrint.v2i64.v2f64(<2 x double>)
4536
4537define <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
4581;
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
4624;
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
4648}
4649declare <4 x i64> @llvm.lrint.v4i64.v4f64(<4 x double>)
4650
4651define <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
4727;
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
4802;
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
4844}
4845declare <8 x i64> @llvm.lrint.v8i64.v8f64(<8 x double>)
4846