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