xref: /llvm-project/llvm/test/CodeGen/PowerPC/const-nonsplat-array-init.ll (revision 032014ef103157bfd8403418538e25f3f58efa9d)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -verify-machineinstrs -mcpu=pwr8 \
3; RUN:   -mtriple=powerpc64-unknown-aix < %s | FileCheck %s --check-prefix=P8-BE
4; RUN: llc -verify-machineinstrs -mcpu=pwr9 \
5; RUN:   -mtriple=powerpc64-unknown-aix < %s | FileCheck %s --check-prefix=P9-BE
6; RUN: llc -verify-machineinstrs -mcpu=pwr10 \
7; RUN:   -mtriple=powerpc64-unknown-aix < %s | FileCheck %s --check-prefix=P10-BE
8; RUN: llc -verify-machineinstrs -mcpu=pwr8 \
9; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s --check-prefix=P8-LE
10; RUN: llc -verify-machineinstrs -mcpu=pwr9 \
11; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s --check-prefix=P9-LE
12; RUN: llc -verify-machineinstrs -mcpu=pwr10 \
13; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s --check-prefix=P10-LE
14
15define dso_local void @foo1_int_be_reuse4B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
16; P8-BE-LABEL: foo1_int_be_reuse4B:
17; P8-BE:       # %bb.0: # %entry
18; P8-BE-NEXT:    ld 4, L..C0(2) # %const.0
19; P8-BE-NEXT:    lxvw4x 0, 0, 4
20; P8-BE-NEXT:    lis 4, 1029
21; P8-BE-NEXT:    ori 4, 4, 1543
22; P8-BE-NEXT:    stw 4, 16(3)
23; P8-BE-NEXT:    li 4, 2057
24; P8-BE-NEXT:    stxvw4x 0, 0, 3
25; P8-BE-NEXT:    sth 4, 20(3)
26; P8-BE-NEXT:    blr
27;
28; P9-BE-LABEL: foo1_int_be_reuse4B:
29; P9-BE:       # %bb.0: # %entry
30; P9-BE-NEXT:    ld 4, L..C0(2) # %const.0
31; P9-BE-NEXT:    lxv 0, 0(4)
32; P9-BE-NEXT:    lis 4, 1029
33; P9-BE-NEXT:    ori 4, 4, 1543
34; P9-BE-NEXT:    stw 4, 16(3)
35; P9-BE-NEXT:    li 4, 2057
36; P9-BE-NEXT:    stxv 0, 0(3)
37; P9-BE-NEXT:    sth 4, 20(3)
38; P9-BE-NEXT:    blr
39;
40; P10-BE-LABEL: foo1_int_be_reuse4B:
41; P10-BE:       # %bb.0: # %entry
42; P10-BE-NEXT:    ld 4, L..C0(2) # %const.0
43; P10-BE-NEXT:    lxv 0, 0(4)
44; P10-BE-NEXT:    pli 4, 67438087
45; P10-BE-NEXT:    stw 4, 16(3)
46; P10-BE-NEXT:    li 4, 2057
47; P10-BE-NEXT:    sth 4, 20(3)
48; P10-BE-NEXT:    stxv 0, 0(3)
49; P10-BE-NEXT:    blr
50;
51; P8-LE-LABEL: foo1_int_be_reuse4B:
52; P8-LE:       # %bb.0: # %entry
53; P8-LE-NEXT:    addis 4, 2, .LCPI0_0@toc@ha
54; P8-LE-NEXT:    addi 4, 4, .LCPI0_0@toc@l
55; P8-LE-NEXT:    lxvd2x 0, 0, 4
56; P8-LE-NEXT:    lis 4, 1798
57; P8-LE-NEXT:    ori 4, 4, 1284
58; P8-LE-NEXT:    stw 4, 16(3)
59; P8-LE-NEXT:    li 4, 2312
60; P8-LE-NEXT:    stxvd2x 0, 0, 3
61; P8-LE-NEXT:    sth 4, 20(3)
62; P8-LE-NEXT:    blr
63;
64; P9-LE-LABEL: foo1_int_be_reuse4B:
65; P9-LE:       # %bb.0: # %entry
66; P9-LE-NEXT:    addis 4, 2, .LCPI0_0@toc@ha
67; P9-LE-NEXT:    addi 4, 4, .LCPI0_0@toc@l
68; P9-LE-NEXT:    lxv 0, 0(4)
69; P9-LE-NEXT:    lis 4, 1798
70; P9-LE-NEXT:    ori 4, 4, 1284
71; P9-LE-NEXT:    stw 4, 16(3)
72; P9-LE-NEXT:    li 4, 2312
73; P9-LE-NEXT:    stxv 0, 0(3)
74; P9-LE-NEXT:    sth 4, 20(3)
75; P9-LE-NEXT:    blr
76;
77; P10-LE-LABEL: foo1_int_be_reuse4B:
78; P10-LE:       # %bb.0: # %entry
79; P10-LE-NEXT:    plxv 0, .LCPI0_0@PCREL(0), 1
80; P10-LE-NEXT:    pli 4, 117835012
81; P10-LE-NEXT:    stw 4, 16(3)
82; P10-LE-NEXT:    li 4, 2312
83; P10-LE-NEXT:    sth 4, 20(3)
84; P10-LE-NEXT:    stxv 0, 0(3)
85; P10-LE-NEXT:    blr
86entry:
87  store <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, ptr %a, align 1
88  %arrayidx16 = getelementptr inbounds i8, ptr %a, i64 16
89  store i8 4, ptr %arrayidx16, align 1
90  %arrayidx17 = getelementptr inbounds i8, ptr %a, i64 17
91  store i8 5, ptr %arrayidx17, align 1
92  %arrayidx18 = getelementptr inbounds i8, ptr %a, i64 18
93  store i8 6, ptr %arrayidx18, align 1
94  %arrayidx19 = getelementptr inbounds i8, ptr %a, i64 19
95  store i8 7, ptr %arrayidx19, align 1
96  %arrayidx20 = getelementptr inbounds i8, ptr %a, i64 20
97  store i8 8, ptr %arrayidx20, align 1
98  %arrayidx21 = getelementptr inbounds i8, ptr %a, i64 21
99  store i8 9, ptr %arrayidx21, align 1
100  ret void
101}
102
103define dso_local void @foo2_int_le_reuse4B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
104; P8-BE-LABEL: foo2_int_le_reuse4B:
105; P8-BE:       # %bb.0: # %entry
106; P8-BE-NEXT:    ld 4, L..C1(2) # %const.0
107; P8-BE-NEXT:    lxvw4x 0, 0, 4
108; P8-BE-NEXT:    lis 4, 2057
109; P8-BE-NEXT:    ori 4, 4, 2571
110; P8-BE-NEXT:    stw 4, 16(3)
111; P8-BE-NEXT:    li 4, 3085
112; P8-BE-NEXT:    stxvw4x 0, 0, 3
113; P8-BE-NEXT:    sth 4, 20(3)
114; P8-BE-NEXT:    blr
115;
116; P9-BE-LABEL: foo2_int_le_reuse4B:
117; P9-BE:       # %bb.0: # %entry
118; P9-BE-NEXT:    ld 4, L..C1(2) # %const.0
119; P9-BE-NEXT:    lxv 0, 0(4)
120; P9-BE-NEXT:    lis 4, 2057
121; P9-BE-NEXT:    ori 4, 4, 2571
122; P9-BE-NEXT:    stw 4, 16(3)
123; P9-BE-NEXT:    li 4, 3085
124; P9-BE-NEXT:    stxv 0, 0(3)
125; P9-BE-NEXT:    sth 4, 20(3)
126; P9-BE-NEXT:    blr
127;
128; P10-BE-LABEL: foo2_int_le_reuse4B:
129; P10-BE:       # %bb.0: # %entry
130; P10-BE-NEXT:    ld 4, L..C1(2) # %const.0
131; P10-BE-NEXT:    lxv 0, 0(4)
132; P10-BE-NEXT:    pli 4, 134810123
133; P10-BE-NEXT:    stw 4, 16(3)
134; P10-BE-NEXT:    li 4, 3085
135; P10-BE-NEXT:    sth 4, 20(3)
136; P10-BE-NEXT:    stxv 0, 0(3)
137; P10-BE-NEXT:    blr
138;
139; P8-LE-LABEL: foo2_int_le_reuse4B:
140; P8-LE:       # %bb.0: # %entry
141; P8-LE-NEXT:    addis 4, 2, .LCPI1_0@toc@ha
142; P8-LE-NEXT:    addi 4, 4, .LCPI1_0@toc@l
143; P8-LE-NEXT:    lxvd2x 0, 0, 4
144; P8-LE-NEXT:    lis 4, 2826
145; P8-LE-NEXT:    ori 4, 4, 2312
146; P8-LE-NEXT:    stw 4, 16(3)
147; P8-LE-NEXT:    li 4, 3340
148; P8-LE-NEXT:    stxvd2x 0, 0, 3
149; P8-LE-NEXT:    sth 4, 20(3)
150; P8-LE-NEXT:    blr
151;
152; P9-LE-LABEL: foo2_int_le_reuse4B:
153; P9-LE:       # %bb.0: # %entry
154; P9-LE-NEXT:    addis 4, 2, .LCPI1_0@toc@ha
155; P9-LE-NEXT:    addi 4, 4, .LCPI1_0@toc@l
156; P9-LE-NEXT:    lxv 0, 0(4)
157; P9-LE-NEXT:    lis 4, 2826
158; P9-LE-NEXT:    ori 4, 4, 2312
159; P9-LE-NEXT:    stw 4, 16(3)
160; P9-LE-NEXT:    li 4, 3340
161; P9-LE-NEXT:    stxv 0, 0(3)
162; P9-LE-NEXT:    sth 4, 20(3)
163; P9-LE-NEXT:    blr
164;
165; P10-LE-LABEL: foo2_int_le_reuse4B:
166; P10-LE:       # %bb.0: # %entry
167; P10-LE-NEXT:    plxv 0, .LCPI1_0@PCREL(0), 1
168; P10-LE-NEXT:    pli 4, 185207048
169; P10-LE-NEXT:    stw 4, 16(3)
170; P10-LE-NEXT:    li 4, 3340
171; P10-LE-NEXT:    sth 4, 20(3)
172; P10-LE-NEXT:    stxv 0, 0(3)
173; P10-LE-NEXT:    blr
174entry:
175  store <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, ptr %a, align 1
176  %arrayidx16 = getelementptr inbounds i8, ptr %a, i64 16
177  store i8 8, ptr %arrayidx16, align 1
178  %arrayidx17 = getelementptr inbounds i8, ptr %a, i64 17
179  store i8 9, ptr %arrayidx17, align 1
180  %arrayidx18 = getelementptr inbounds i8, ptr %a, i64 18
181  store i8 10, ptr %arrayidx18, align 1
182  %arrayidx19 = getelementptr inbounds i8, ptr %a, i64 19
183  store i8 11, ptr %arrayidx19, align 1
184  %arrayidx20 = getelementptr inbounds i8, ptr %a, i64 20
185  store i8 12, ptr %arrayidx20, align 1
186  %arrayidx21 = getelementptr inbounds i8, ptr %a, i64 21
187  store i8 13, ptr %arrayidx21, align 1
188  ret void
189}
190
191define dso_local void @foo3_int_be_reuse4B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
192; P8-BE-LABEL: foo3_int_be_reuse4B:
193; P8-BE:       # %bb.0: # %entry
194; P8-BE-NEXT:    ld 4, L..C2(2) # %const.0
195; P8-BE-NEXT:    lxvw4x 0, 0, 4
196; P8-BE-NEXT:    lis 4, 1029
197; P8-BE-NEXT:    ori 4, 4, 1543
198; P8-BE-NEXT:    stw 4, 16(3)
199; P8-BE-NEXT:    li 4, 2057
200; P8-BE-NEXT:    stxvw4x 0, 0, 3
201; P8-BE-NEXT:    sth 4, 20(3)
202; P8-BE-NEXT:    blr
203;
204; P9-BE-LABEL: foo3_int_be_reuse4B:
205; P9-BE:       # %bb.0: # %entry
206; P9-BE-NEXT:    ld 4, L..C2(2) # %const.0
207; P9-BE-NEXT:    lxv 0, 0(4)
208; P9-BE-NEXT:    lis 4, 1029
209; P9-BE-NEXT:    ori 4, 4, 1543
210; P9-BE-NEXT:    stw 4, 16(3)
211; P9-BE-NEXT:    li 4, 2057
212; P9-BE-NEXT:    stxv 0, 0(3)
213; P9-BE-NEXT:    sth 4, 20(3)
214; P9-BE-NEXT:    blr
215;
216; P10-BE-LABEL: foo3_int_be_reuse4B:
217; P10-BE:       # %bb.0: # %entry
218; P10-BE-NEXT:    ld 4, L..C2(2) # %const.0
219; P10-BE-NEXT:    lxv 0, 0(4)
220; P10-BE-NEXT:    pli 4, 67438087
221; P10-BE-NEXT:    stw 4, 16(3)
222; P10-BE-NEXT:    li 4, 2057
223; P10-BE-NEXT:    sth 4, 20(3)
224; P10-BE-NEXT:    stxv 0, 0(3)
225; P10-BE-NEXT:    blr
226;
227; P8-LE-LABEL: foo3_int_be_reuse4B:
228; P8-LE:       # %bb.0: # %entry
229; P8-LE-NEXT:    addis 4, 2, .LCPI2_0@toc@ha
230; P8-LE-NEXT:    addi 4, 4, .LCPI2_0@toc@l
231; P8-LE-NEXT:    lxvd2x 0, 0, 4
232; P8-LE-NEXT:    lis 4, 1543
233; P8-LE-NEXT:    ori 4, 4, 1029
234; P8-LE-NEXT:    stw 4, 16(3)
235; P8-LE-NEXT:    li 4, 2057
236; P8-LE-NEXT:    stxvd2x 0, 0, 3
237; P8-LE-NEXT:    sth 4, 20(3)
238; P8-LE-NEXT:    blr
239;
240; P9-LE-LABEL: foo3_int_be_reuse4B:
241; P9-LE:       # %bb.0: # %entry
242; P9-LE-NEXT:    addis 4, 2, .LCPI2_0@toc@ha
243; P9-LE-NEXT:    addi 4, 4, .LCPI2_0@toc@l
244; P9-LE-NEXT:    lxv 0, 0(4)
245; P9-LE-NEXT:    lis 4, 1543
246; P9-LE-NEXT:    ori 4, 4, 1029
247; P9-LE-NEXT:    stw 4, 16(3)
248; P9-LE-NEXT:    li 4, 2057
249; P9-LE-NEXT:    stxv 0, 0(3)
250; P9-LE-NEXT:    sth 4, 20(3)
251; P9-LE-NEXT:    blr
252;
253; P10-LE-LABEL: foo3_int_be_reuse4B:
254; P10-LE:       # %bb.0: # %entry
255; P10-LE-NEXT:    plxv 0, .LCPI2_0@PCREL(0), 1
256; P10-LE-NEXT:    pli 4, 101123077
257; P10-LE-NEXT:    stw 4, 16(3)
258; P10-LE-NEXT:    li 4, 2057
259; P10-LE-NEXT:    sth 4, 20(3)
260; P10-LE-NEXT:    stxv 0, 0(3)
261; P10-LE-NEXT:    blr
262entry:
263  store <8 x i16> <i16 1, i16 515, i16 1029, i16 1543, i16 2057, i16 2571, i16 3085, i16 3599>, ptr %a, align 2
264  %arrayidx8 = getelementptr inbounds i16, ptr %a, i64 8
265  store i16 1029, ptr %arrayidx8, align 2
266  %arrayidx9 = getelementptr inbounds i16, ptr %a, i64 9
267  store i16 1543, ptr %arrayidx9, align 2
268  %arrayidx10 = getelementptr inbounds i16, ptr %a, i64 10
269  store i16 2057, ptr %arrayidx10, align 2
270  ret void
271}
272
273define dso_local void @foo4_int_le_reuse4B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
274; P8-BE-LABEL: foo4_int_le_reuse4B:
275; P8-BE:       # %bb.0: # %entry
276; P8-BE-NEXT:    ld 4, L..C3(2) # %const.0
277; P8-BE-NEXT:    lxvw4x 0, 0, 4
278; P8-BE-NEXT:    lis 4, 2057
279; P8-BE-NEXT:    ori 4, 4, 2571
280; P8-BE-NEXT:    stw 4, 16(3)
281; P8-BE-NEXT:    li 4, 3085
282; P8-BE-NEXT:    stxvw4x 0, 0, 3
283; P8-BE-NEXT:    sth 4, 20(3)
284; P8-BE-NEXT:    blr
285;
286; P9-BE-LABEL: foo4_int_le_reuse4B:
287; P9-BE:       # %bb.0: # %entry
288; P9-BE-NEXT:    ld 4, L..C3(2) # %const.0
289; P9-BE-NEXT:    lxv 0, 0(4)
290; P9-BE-NEXT:    lis 4, 2057
291; P9-BE-NEXT:    ori 4, 4, 2571
292; P9-BE-NEXT:    stw 4, 16(3)
293; P9-BE-NEXT:    li 4, 3085
294; P9-BE-NEXT:    stxv 0, 0(3)
295; P9-BE-NEXT:    sth 4, 20(3)
296; P9-BE-NEXT:    blr
297;
298; P10-BE-LABEL: foo4_int_le_reuse4B:
299; P10-BE:       # %bb.0: # %entry
300; P10-BE-NEXT:    ld 4, L..C3(2) # %const.0
301; P10-BE-NEXT:    lxv 0, 0(4)
302; P10-BE-NEXT:    pli 4, 134810123
303; P10-BE-NEXT:    stw 4, 16(3)
304; P10-BE-NEXT:    li 4, 3085
305; P10-BE-NEXT:    sth 4, 20(3)
306; P10-BE-NEXT:    stxv 0, 0(3)
307; P10-BE-NEXT:    blr
308;
309; P8-LE-LABEL: foo4_int_le_reuse4B:
310; P8-LE:       # %bb.0: # %entry
311; P8-LE-NEXT:    addis 4, 2, .LCPI3_0@toc@ha
312; P8-LE-NEXT:    addi 4, 4, .LCPI3_0@toc@l
313; P8-LE-NEXT:    lxvd2x 0, 0, 4
314; P8-LE-NEXT:    lis 4, 2571
315; P8-LE-NEXT:    ori 4, 4, 2057
316; P8-LE-NEXT:    stw 4, 16(3)
317; P8-LE-NEXT:    li 4, 3085
318; P8-LE-NEXT:    stxvd2x 0, 0, 3
319; P8-LE-NEXT:    sth 4, 20(3)
320; P8-LE-NEXT:    blr
321;
322; P9-LE-LABEL: foo4_int_le_reuse4B:
323; P9-LE:       # %bb.0: # %entry
324; P9-LE-NEXT:    addis 4, 2, .LCPI3_0@toc@ha
325; P9-LE-NEXT:    addi 4, 4, .LCPI3_0@toc@l
326; P9-LE-NEXT:    lxv 0, 0(4)
327; P9-LE-NEXT:    lis 4, 2571
328; P9-LE-NEXT:    ori 4, 4, 2057
329; P9-LE-NEXT:    stw 4, 16(3)
330; P9-LE-NEXT:    li 4, 3085
331; P9-LE-NEXT:    stxv 0, 0(3)
332; P9-LE-NEXT:    sth 4, 20(3)
333; P9-LE-NEXT:    blr
334;
335; P10-LE-LABEL: foo4_int_le_reuse4B:
336; P10-LE:       # %bb.0: # %entry
337; P10-LE-NEXT:    plxv 0, .LCPI3_0@PCREL(0), 1
338; P10-LE-NEXT:    pli 4, 168495113
339; P10-LE-NEXT:    stw 4, 16(3)
340; P10-LE-NEXT:    li 4, 3085
341; P10-LE-NEXT:    sth 4, 20(3)
342; P10-LE-NEXT:    stxv 0, 0(3)
343; P10-LE-NEXT:    blr
344entry:
345  store <8 x i16> <i16 1, i16 515, i16 1029, i16 1543, i16 2057, i16 2571, i16 3085, i16 3599>, ptr %a, align 2
346  %arrayidx8 = getelementptr inbounds i16, ptr %a, i64 8
347  store i16 2057, ptr %arrayidx8, align 2
348  %arrayidx9 = getelementptr inbounds i16, ptr %a, i64 9
349  store i16 2571, ptr %arrayidx9, align 2
350  %arrayidx10 = getelementptr inbounds i16, ptr %a, i64 10
351  store i16 3085, ptr %arrayidx10, align 2
352  ret void
353}
354
355define dso_local void @foo5_int_be_reuse4B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
356; P8-BE-LABEL: foo5_int_be_reuse4B:
357; P8-BE:       # %bb.0: # %entry
358; P8-BE-NEXT:    ld 4, L..C4(2) # %const.0
359; P8-BE-NEXT:    lxvw4x 0, 0, 4
360; P8-BE-NEXT:    lis 4, 1029
361; P8-BE-NEXT:    ori 4, 4, 1543
362; P8-BE-NEXT:    stw 4, 16(3)
363; P8-BE-NEXT:    stxvw4x 0, 0, 3
364; P8-BE-NEXT:    blr
365;
366; P9-BE-LABEL: foo5_int_be_reuse4B:
367; P9-BE:       # %bb.0: # %entry
368; P9-BE-NEXT:    ld 4, L..C4(2) # %const.0
369; P9-BE-NEXT:    lxv 0, 0(4)
370; P9-BE-NEXT:    lis 4, 1029
371; P9-BE-NEXT:    ori 4, 4, 1543
372; P9-BE-NEXT:    stw 4, 16(3)
373; P9-BE-NEXT:    stxv 0, 0(3)
374; P9-BE-NEXT:    blr
375;
376; P10-BE-LABEL: foo5_int_be_reuse4B:
377; P10-BE:       # %bb.0: # %entry
378; P10-BE-NEXT:    ld 4, L..C4(2) # %const.0
379; P10-BE-NEXT:    lxv 0, 0(4)
380; P10-BE-NEXT:    pli 4, 67438087
381; P10-BE-NEXT:    stw 4, 16(3)
382; P10-BE-NEXT:    stxv 0, 0(3)
383; P10-BE-NEXT:    blr
384;
385; P8-LE-LABEL: foo5_int_be_reuse4B:
386; P8-LE:       # %bb.0: # %entry
387; P8-LE-NEXT:    addis 4, 2, .LCPI4_0@toc@ha
388; P8-LE-NEXT:    addi 4, 4, .LCPI4_0@toc@l
389; P8-LE-NEXT:    lxvd2x 0, 0, 4
390; P8-LE-NEXT:    lis 4, 1029
391; P8-LE-NEXT:    ori 4, 4, 1543
392; P8-LE-NEXT:    stw 4, 16(3)
393; P8-LE-NEXT:    stxvd2x 0, 0, 3
394; P8-LE-NEXT:    blr
395;
396; P9-LE-LABEL: foo5_int_be_reuse4B:
397; P9-LE:       # %bb.0: # %entry
398; P9-LE-NEXT:    addis 4, 2, .LCPI4_0@toc@ha
399; P9-LE-NEXT:    addi 4, 4, .LCPI4_0@toc@l
400; P9-LE-NEXT:    lxv 0, 0(4)
401; P9-LE-NEXT:    lis 4, 1029
402; P9-LE-NEXT:    ori 4, 4, 1543
403; P9-LE-NEXT:    stw 4, 16(3)
404; P9-LE-NEXT:    stxv 0, 0(3)
405; P9-LE-NEXT:    blr
406;
407; P10-LE-LABEL: foo5_int_be_reuse4B:
408; P10-LE:       # %bb.0: # %entry
409; P10-LE-NEXT:    plxv 0, .LCPI4_0@PCREL(0), 1
410; P10-LE-NEXT:    pli 4, 67438087
411; P10-LE-NEXT:    stw 4, 16(3)
412; P10-LE-NEXT:    stxv 0, 0(3)
413; P10-LE-NEXT:    blr
414entry:
415  store <4 x i32> <i32 66051, i32 67438087, i32 134810123, i32 202182159>, ptr %a, align 4
416  %arrayidx4 = getelementptr inbounds i32, ptr %a, i64 4
417  store i32 67438087, ptr %arrayidx4, align 4
418  ret void
419}
420
421define dso_local void @foo6_int_le_reuse4B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
422; P8-BE-LABEL: foo6_int_le_reuse4B:
423; P8-BE:       # %bb.0: # %entry
424; P8-BE-NEXT:    ld 4, L..C5(2) # %const.0
425; P8-BE-NEXT:    lxvw4x 0, 0, 4
426; P8-BE-NEXT:    lis 4, 2057
427; P8-BE-NEXT:    ori 4, 4, 2571
428; P8-BE-NEXT:    stw 4, 16(3)
429; P8-BE-NEXT:    stxvw4x 0, 0, 3
430; P8-BE-NEXT:    blr
431;
432; P9-BE-LABEL: foo6_int_le_reuse4B:
433; P9-BE:       # %bb.0: # %entry
434; P9-BE-NEXT:    ld 4, L..C5(2) # %const.0
435; P9-BE-NEXT:    lxv 0, 0(4)
436; P9-BE-NEXT:    lis 4, 2057
437; P9-BE-NEXT:    ori 4, 4, 2571
438; P9-BE-NEXT:    stw 4, 16(3)
439; P9-BE-NEXT:    stxv 0, 0(3)
440; P9-BE-NEXT:    blr
441;
442; P10-BE-LABEL: foo6_int_le_reuse4B:
443; P10-BE:       # %bb.0: # %entry
444; P10-BE-NEXT:    ld 4, L..C5(2) # %const.0
445; P10-BE-NEXT:    lxv 0, 0(4)
446; P10-BE-NEXT:    pli 4, 134810123
447; P10-BE-NEXT:    stw 4, 16(3)
448; P10-BE-NEXT:    stxv 0, 0(3)
449; P10-BE-NEXT:    blr
450;
451; P8-LE-LABEL: foo6_int_le_reuse4B:
452; P8-LE:       # %bb.0: # %entry
453; P8-LE-NEXT:    addis 4, 2, .LCPI5_0@toc@ha
454; P8-LE-NEXT:    addi 4, 4, .LCPI5_0@toc@l
455; P8-LE-NEXT:    lxvd2x 0, 0, 4
456; P8-LE-NEXT:    lis 4, 2057
457; P8-LE-NEXT:    ori 4, 4, 2571
458; P8-LE-NEXT:    stw 4, 16(3)
459; P8-LE-NEXT:    stxvd2x 0, 0, 3
460; P8-LE-NEXT:    blr
461;
462; P9-LE-LABEL: foo6_int_le_reuse4B:
463; P9-LE:       # %bb.0: # %entry
464; P9-LE-NEXT:    addis 4, 2, .LCPI5_0@toc@ha
465; P9-LE-NEXT:    addi 4, 4, .LCPI5_0@toc@l
466; P9-LE-NEXT:    lxv 0, 0(4)
467; P9-LE-NEXT:    lis 4, 2057
468; P9-LE-NEXT:    ori 4, 4, 2571
469; P9-LE-NEXT:    stw 4, 16(3)
470; P9-LE-NEXT:    stxv 0, 0(3)
471; P9-LE-NEXT:    blr
472;
473; P10-LE-LABEL: foo6_int_le_reuse4B:
474; P10-LE:       # %bb.0: # %entry
475; P10-LE-NEXT:    plxv 0, .LCPI5_0@PCREL(0), 1
476; P10-LE-NEXT:    pli 4, 134810123
477; P10-LE-NEXT:    stw 4, 16(3)
478; P10-LE-NEXT:    stxv 0, 0(3)
479; P10-LE-NEXT:    blr
480entry:
481  store <4 x i32> <i32 66051, i32 67438087, i32 134810123, i32 202182159>, ptr %a, align 4
482  %arrayidx4 = getelementptr inbounds i32, ptr %a, i64 4
483  store i32 134810123, ptr %arrayidx4, align 4
484  ret void
485}
486
487define dso_local void @foo7_int_be_reuse8B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
488; P8-BE-LABEL: foo7_int_be_reuse8B:
489; P8-BE:       # %bb.0: # %entry
490; P8-BE-NEXT:    ld 4, L..C6(2) # %const.0
491; P8-BE-NEXT:    lxvw4x 0, 0, 4
492; P8-BE-NEXT:    lis 4, 1
493; P8-BE-NEXT:    ori 4, 4, 515
494; P8-BE-NEXT:    rldic 4, 4, 32, 15
495; P8-BE-NEXT:    stxvw4x 0, 0, 3
496; P8-BE-NEXT:    oris 4, 4, 1029
497; P8-BE-NEXT:    ori 4, 4, 1543
498; P8-BE-NEXT:    std 4, 16(3)
499; P8-BE-NEXT:    blr
500;
501; P9-BE-LABEL: foo7_int_be_reuse8B:
502; P9-BE:       # %bb.0: # %entry
503; P9-BE-NEXT:    ld 4, L..C6(2) # %const.0
504; P9-BE-NEXT:    lxv 0, 0(4)
505; P9-BE-NEXT:    lis 4, 1
506; P9-BE-NEXT:    ori 4, 4, 515
507; P9-BE-NEXT:    rldic 4, 4, 32, 15
508; P9-BE-NEXT:    stxv 0, 0(3)
509; P9-BE-NEXT:    oris 4, 4, 1029
510; P9-BE-NEXT:    ori 4, 4, 1543
511; P9-BE-NEXT:    std 4, 16(3)
512; P9-BE-NEXT:    blr
513;
514; P10-BE-LABEL: foo7_int_be_reuse8B:
515; P10-BE:       # %bb.0: # %entry
516; P10-BE-NEXT:    ld 4, L..C6(2) # %const.0
517; P10-BE-NEXT:    pli 5, 67438087
518; P10-BE-NEXT:    lxv 0, 0(4)
519; P10-BE-NEXT:    pli 4, 66051
520; P10-BE-NEXT:    rldimi 5, 4, 32, 0
521; P10-BE-NEXT:    std 5, 16(3)
522; P10-BE-NEXT:    stxv 0, 0(3)
523; P10-BE-NEXT:    blr
524;
525; P8-LE-LABEL: foo7_int_be_reuse8B:
526; P8-LE:       # %bb.0: # %entry
527; P8-LE-NEXT:    addis 4, 2, .LCPI6_0@toc@ha
528; P8-LE-NEXT:    addi 4, 4, .LCPI6_0@toc@l
529; P8-LE-NEXT:    lxvd2x 0, 0, 4
530; P8-LE-NEXT:    lis 4, 449
531; P8-LE-NEXT:    ori 4, 4, 33089
532; P8-LE-NEXT:    rldic 4, 4, 34, 5
533; P8-LE-NEXT:    stxvd2x 0, 0, 3
534; P8-LE-NEXT:    oris 4, 4, 770
535; P8-LE-NEXT:    ori 4, 4, 256
536; P8-LE-NEXT:    std 4, 16(3)
537; P8-LE-NEXT:    blr
538;
539; P9-LE-LABEL: foo7_int_be_reuse8B:
540; P9-LE:       # %bb.0: # %entry
541; P9-LE-NEXT:    addis 4, 2, .LCPI6_0@toc@ha
542; P9-LE-NEXT:    addi 4, 4, .LCPI6_0@toc@l
543; P9-LE-NEXT:    lxv 0, 0(4)
544; P9-LE-NEXT:    lis 4, 449
545; P9-LE-NEXT:    ori 4, 4, 33089
546; P9-LE-NEXT:    rldic 4, 4, 34, 5
547; P9-LE-NEXT:    stxv 0, 0(3)
548; P9-LE-NEXT:    oris 4, 4, 770
549; P9-LE-NEXT:    ori 4, 4, 256
550; P9-LE-NEXT:    std 4, 16(3)
551; P9-LE-NEXT:    blr
552;
553; P10-LE-LABEL: foo7_int_be_reuse8B:
554; P10-LE:       # %bb.0: # %entry
555; P10-LE-NEXT:    plxv 0, .LCPI6_0@PCREL(0), 1
556; P10-LE-NEXT:    pli 4, 117835012
557; P10-LE-NEXT:    pli 5, 50462976
558; P10-LE-NEXT:    rldimi 5, 4, 32, 0
559; P10-LE-NEXT:    std 5, 16(3)
560; P10-LE-NEXT:    stxv 0, 0(3)
561; P10-LE-NEXT:    blr
562entry:
563  store <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, ptr %a, align 1
564  %arrayidx16 = getelementptr inbounds i8, ptr %a, i64 16
565  store i8 0, ptr %arrayidx16, align 1
566  %arrayidx17 = getelementptr inbounds i8, ptr %a, i64 17
567  store i8 1, ptr %arrayidx17, align 1
568  %arrayidx18 = getelementptr inbounds i8, ptr %a, i64 18
569  store i8 2, ptr %arrayidx18, align 1
570  %arrayidx19 = getelementptr inbounds i8, ptr %a, i64 19
571  store i8 3, ptr %arrayidx19, align 1
572  %arrayidx20 = getelementptr inbounds i8, ptr %a, i64 20
573  store i8 4, ptr %arrayidx20, align 1
574  %arrayidx21 = getelementptr inbounds i8, ptr %a, i64 21
575  store i8 5, ptr %arrayidx21, align 1
576  %arrayidx22 = getelementptr inbounds i8, ptr %a, i64 22
577  store i8 6, ptr %arrayidx22, align 1
578  %arrayidx23 = getelementptr inbounds i8, ptr %a, i64 23
579  store i8 7, ptr %arrayidx23, align 1
580  ret void
581}
582
583define dso_local void @foo8_int_le_reuse8B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
584; P8-BE-LABEL: foo8_int_le_reuse8B:
585; P8-BE:       # %bb.0: # %entry
586; P8-BE-NEXT:    ld 4, L..C7(2) # %const.0
587; P8-BE-NEXT:    lxvw4x 0, 0, 4
588; P8-BE-NEXT:    lis 4, 2057
589; P8-BE-NEXT:    ori 4, 4, 2571
590; P8-BE-NEXT:    rldic 4, 4, 32, 4
591; P8-BE-NEXT:    stxvw4x 0, 0, 3
592; P8-BE-NEXT:    oris 4, 4, 3085
593; P8-BE-NEXT:    ori 4, 4, 3599
594; P8-BE-NEXT:    std 4, 16(3)
595; P8-BE-NEXT:    blr
596;
597; P9-BE-LABEL: foo8_int_le_reuse8B:
598; P9-BE:       # %bb.0: # %entry
599; P9-BE-NEXT:    ld 4, L..C7(2) # %const.0
600; P9-BE-NEXT:    lxv 0, 0(4)
601; P9-BE-NEXT:    lis 4, 2057
602; P9-BE-NEXT:    ori 4, 4, 2571
603; P9-BE-NEXT:    rldic 4, 4, 32, 4
604; P9-BE-NEXT:    stxv 0, 0(3)
605; P9-BE-NEXT:    oris 4, 4, 3085
606; P9-BE-NEXT:    ori 4, 4, 3599
607; P9-BE-NEXT:    std 4, 16(3)
608; P9-BE-NEXT:    blr
609;
610; P10-BE-LABEL: foo8_int_le_reuse8B:
611; P10-BE:       # %bb.0: # %entry
612; P10-BE-NEXT:    ld 4, L..C7(2) # %const.0
613; P10-BE-NEXT:    pli 5, 202182159
614; P10-BE-NEXT:    lxv 0, 0(4)
615; P10-BE-NEXT:    pli 4, 134810123
616; P10-BE-NEXT:    rldimi 5, 4, 32, 0
617; P10-BE-NEXT:    std 5, 16(3)
618; P10-BE-NEXT:    stxv 0, 0(3)
619; P10-BE-NEXT:    blr
620;
621; P8-LE-LABEL: foo8_int_le_reuse8B:
622; P8-LE:       # %bb.0: # %entry
623; P8-LE-NEXT:    addis 4, 2, .LCPI7_0@toc@ha
624; P8-LE-NEXT:    addi 4, 4, .LCPI7_0@toc@l
625; P8-LE-NEXT:    lxvd2x 0, 0, 4
626; P8-LE-NEXT:    lis 4, 963
627; P8-LE-NEXT:    ori 4, 4, 33603
628; P8-LE-NEXT:    rldic 4, 4, 34, 4
629; P8-LE-NEXT:    stxvd2x 0, 0, 3
630; P8-LE-NEXT:    oris 4, 4, 2826
631; P8-LE-NEXT:    ori 4, 4, 2312
632; P8-LE-NEXT:    std 4, 16(3)
633; P8-LE-NEXT:    blr
634;
635; P9-LE-LABEL: foo8_int_le_reuse8B:
636; P9-LE:       # %bb.0: # %entry
637; P9-LE-NEXT:    addis 4, 2, .LCPI7_0@toc@ha
638; P9-LE-NEXT:    addi 4, 4, .LCPI7_0@toc@l
639; P9-LE-NEXT:    lxv 0, 0(4)
640; P9-LE-NEXT:    lis 4, 963
641; P9-LE-NEXT:    ori 4, 4, 33603
642; P9-LE-NEXT:    rldic 4, 4, 34, 4
643; P9-LE-NEXT:    stxv 0, 0(3)
644; P9-LE-NEXT:    oris 4, 4, 2826
645; P9-LE-NEXT:    ori 4, 4, 2312
646; P9-LE-NEXT:    std 4, 16(3)
647; P9-LE-NEXT:    blr
648;
649; P10-LE-LABEL: foo8_int_le_reuse8B:
650; P10-LE:       # %bb.0: # %entry
651; P10-LE-NEXT:    plxv 0, .LCPI7_0@PCREL(0), 1
652; P10-LE-NEXT:    pli 4, 252579084
653; P10-LE-NEXT:    pli 5, 185207048
654; P10-LE-NEXT:    rldimi 5, 4, 32, 0
655; P10-LE-NEXT:    std 5, 16(3)
656; P10-LE-NEXT:    stxv 0, 0(3)
657; P10-LE-NEXT:    blr
658entry:
659  store <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, ptr %a, align 1
660  %arrayidx16 = getelementptr inbounds i8, ptr %a, i64 16
661  store i8 8, ptr %arrayidx16, align 1
662  %arrayidx17 = getelementptr inbounds i8, ptr %a, i64 17
663  store i8 9, ptr %arrayidx17, align 1
664  %arrayidx18 = getelementptr inbounds i8, ptr %a, i64 18
665  store i8 10, ptr %arrayidx18, align 1
666  %arrayidx19 = getelementptr inbounds i8, ptr %a, i64 19
667  store i8 11, ptr %arrayidx19, align 1
668  %arrayidx20 = getelementptr inbounds i8, ptr %a, i64 20
669  store i8 12, ptr %arrayidx20, align 1
670  %arrayidx21 = getelementptr inbounds i8, ptr %a, i64 21
671  store i8 13, ptr %arrayidx21, align 1
672  %arrayidx22 = getelementptr inbounds i8, ptr %a, i64 22
673  store i8 14, ptr %arrayidx22, align 1
674  %arrayidx23 = getelementptr inbounds i8, ptr %a, i64 23
675  store i8 15, ptr %arrayidx23, align 1
676  ret void
677}
678
679define dso_local void @foo9_int_be_reuse8B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
680; P8-BE-LABEL: foo9_int_be_reuse8B:
681; P8-BE:       # %bb.0: # %entry
682; P8-BE-NEXT:    ld 4, L..C8(2) # %const.0
683; P8-BE-NEXT:    lxvw4x 0, 0, 4
684; P8-BE-NEXT:    lis 4, 1
685; P8-BE-NEXT:    ori 4, 4, 515
686; P8-BE-NEXT:    rldic 4, 4, 32, 15
687; P8-BE-NEXT:    stxvw4x 0, 0, 3
688; P8-BE-NEXT:    oris 4, 4, 1029
689; P8-BE-NEXT:    ori 4, 4, 1543
690; P8-BE-NEXT:    std 4, 16(3)
691; P8-BE-NEXT:    blr
692;
693; P9-BE-LABEL: foo9_int_be_reuse8B:
694; P9-BE:       # %bb.0: # %entry
695; P9-BE-NEXT:    ld 4, L..C8(2) # %const.0
696; P9-BE-NEXT:    lxv 0, 0(4)
697; P9-BE-NEXT:    lis 4, 1
698; P9-BE-NEXT:    ori 4, 4, 515
699; P9-BE-NEXT:    rldic 4, 4, 32, 15
700; P9-BE-NEXT:    stxv 0, 0(3)
701; P9-BE-NEXT:    oris 4, 4, 1029
702; P9-BE-NEXT:    ori 4, 4, 1543
703; P9-BE-NEXT:    std 4, 16(3)
704; P9-BE-NEXT:    blr
705;
706; P10-BE-LABEL: foo9_int_be_reuse8B:
707; P10-BE:       # %bb.0: # %entry
708; P10-BE-NEXT:    ld 4, L..C8(2) # %const.0
709; P10-BE-NEXT:    pli 5, 67438087
710; P10-BE-NEXT:    lxv 0, 0(4)
711; P10-BE-NEXT:    pli 4, 66051
712; P10-BE-NEXT:    rldimi 5, 4, 32, 0
713; P10-BE-NEXT:    std 5, 16(3)
714; P10-BE-NEXT:    stxv 0, 0(3)
715; P10-BE-NEXT:    blr
716;
717; P8-LE-LABEL: foo9_int_be_reuse8B:
718; P8-LE:       # %bb.0: # %entry
719; P8-LE-NEXT:    addis 4, 2, .LCPI8_0@toc@ha
720; P8-LE-NEXT:    addi 4, 4, .LCPI8_0@toc@l
721; P8-LE-NEXT:    lxvd2x 0, 0, 4
722; P8-LE-NEXT:    lis 4, 1543
723; P8-LE-NEXT:    ori 4, 4, 1029
724; P8-LE-NEXT:    rldic 4, 4, 32, 5
725; P8-LE-NEXT:    stxvd2x 0, 0, 3
726; P8-LE-NEXT:    oris 4, 4, 515
727; P8-LE-NEXT:    ori 4, 4, 1
728; P8-LE-NEXT:    std 4, 16(3)
729; P8-LE-NEXT:    blr
730;
731; P9-LE-LABEL: foo9_int_be_reuse8B:
732; P9-LE:       # %bb.0: # %entry
733; P9-LE-NEXT:    addis 4, 2, .LCPI8_0@toc@ha
734; P9-LE-NEXT:    addi 4, 4, .LCPI8_0@toc@l
735; P9-LE-NEXT:    lxv 0, 0(4)
736; P9-LE-NEXT:    lis 4, 1543
737; P9-LE-NEXT:    ori 4, 4, 1029
738; P9-LE-NEXT:    rldic 4, 4, 32, 5
739; P9-LE-NEXT:    stxv 0, 0(3)
740; P9-LE-NEXT:    oris 4, 4, 515
741; P9-LE-NEXT:    ori 4, 4, 1
742; P9-LE-NEXT:    std 4, 16(3)
743; P9-LE-NEXT:    blr
744;
745; P10-LE-LABEL: foo9_int_be_reuse8B:
746; P10-LE:       # %bb.0: # %entry
747; P10-LE-NEXT:    plxv 0, .LCPI8_0@PCREL(0), 1
748; P10-LE-NEXT:    pli 4, 101123077
749; P10-LE-NEXT:    pli 5, 33751041
750; P10-LE-NEXT:    rldimi 5, 4, 32, 0
751; P10-LE-NEXT:    std 5, 16(3)
752; P10-LE-NEXT:    stxv 0, 0(3)
753; P10-LE-NEXT:    blr
754entry:
755  store <8 x i16> <i16 1, i16 515, i16 1029, i16 1543, i16 2057, i16 2571, i16 3085, i16 3599>, ptr %a, align 2
756  %arrayidx8 = getelementptr inbounds i16, ptr %a, i64 8
757  store i16 1, ptr %arrayidx8, align 2
758  %arrayidx9 = getelementptr inbounds i16, ptr %a, i64 9
759  store i16 515, ptr %arrayidx9, align 2
760  %arrayidx10 = getelementptr inbounds i16, ptr %a, i64 10
761  store i16 1029, ptr %arrayidx10, align 2
762  %arrayidx11 = getelementptr inbounds i16, ptr %a, i64 11
763  store i16 1543, ptr %arrayidx11, align 2
764  ret void
765}
766
767define dso_local void @foo10_int_le_reuse8B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
768; P8-BE-LABEL: foo10_int_le_reuse8B:
769; P8-BE:       # %bb.0: # %entry
770; P8-BE-NEXT:    ld 4, L..C9(2) # %const.0
771; P8-BE-NEXT:    lxvw4x 0, 0, 4
772; P8-BE-NEXT:    lis 4, 2057
773; P8-BE-NEXT:    ori 4, 4, 2571
774; P8-BE-NEXT:    rldic 4, 4, 32, 4
775; P8-BE-NEXT:    stxvw4x 0, 0, 3
776; P8-BE-NEXT:    oris 4, 4, 3085
777; P8-BE-NEXT:    ori 4, 4, 3599
778; P8-BE-NEXT:    std 4, 16(3)
779; P8-BE-NEXT:    blr
780;
781; P9-BE-LABEL: foo10_int_le_reuse8B:
782; P9-BE:       # %bb.0: # %entry
783; P9-BE-NEXT:    ld 4, L..C9(2) # %const.0
784; P9-BE-NEXT:    lxv 0, 0(4)
785; P9-BE-NEXT:    lis 4, 2057
786; P9-BE-NEXT:    ori 4, 4, 2571
787; P9-BE-NEXT:    rldic 4, 4, 32, 4
788; P9-BE-NEXT:    stxv 0, 0(3)
789; P9-BE-NEXT:    oris 4, 4, 3085
790; P9-BE-NEXT:    ori 4, 4, 3599
791; P9-BE-NEXT:    std 4, 16(3)
792; P9-BE-NEXT:    blr
793;
794; P10-BE-LABEL: foo10_int_le_reuse8B:
795; P10-BE:       # %bb.0: # %entry
796; P10-BE-NEXT:    ld 4, L..C9(2) # %const.0
797; P10-BE-NEXT:    pli 5, 202182159
798; P10-BE-NEXT:    lxv 0, 0(4)
799; P10-BE-NEXT:    pli 4, 134810123
800; P10-BE-NEXT:    rldimi 5, 4, 32, 0
801; P10-BE-NEXT:    std 5, 16(3)
802; P10-BE-NEXT:    stxv 0, 0(3)
803; P10-BE-NEXT:    blr
804;
805; P8-LE-LABEL: foo10_int_le_reuse8B:
806; P8-LE:       # %bb.0: # %entry
807; P8-LE-NEXT:    addis 4, 2, .LCPI9_0@toc@ha
808; P8-LE-NEXT:    addi 4, 4, .LCPI9_0@toc@l
809; P8-LE-NEXT:    lxvd2x 0, 0, 4
810; P8-LE-NEXT:    lis 4, 3599
811; P8-LE-NEXT:    ori 4, 4, 3085
812; P8-LE-NEXT:    rldic 4, 4, 32, 4
813; P8-LE-NEXT:    stxvd2x 0, 0, 3
814; P8-LE-NEXT:    oris 4, 4, 2571
815; P8-LE-NEXT:    ori 4, 4, 2057
816; P8-LE-NEXT:    std 4, 16(3)
817; P8-LE-NEXT:    blr
818;
819; P9-LE-LABEL: foo10_int_le_reuse8B:
820; P9-LE:       # %bb.0: # %entry
821; P9-LE-NEXT:    addis 4, 2, .LCPI9_0@toc@ha
822; P9-LE-NEXT:    addi 4, 4, .LCPI9_0@toc@l
823; P9-LE-NEXT:    lxv 0, 0(4)
824; P9-LE-NEXT:    lis 4, 3599
825; P9-LE-NEXT:    ori 4, 4, 3085
826; P9-LE-NEXT:    rldic 4, 4, 32, 4
827; P9-LE-NEXT:    stxv 0, 0(3)
828; P9-LE-NEXT:    oris 4, 4, 2571
829; P9-LE-NEXT:    ori 4, 4, 2057
830; P9-LE-NEXT:    std 4, 16(3)
831; P9-LE-NEXT:    blr
832;
833; P10-LE-LABEL: foo10_int_le_reuse8B:
834; P10-LE:       # %bb.0: # %entry
835; P10-LE-NEXT:    plxv 0, .LCPI9_0@PCREL(0), 1
836; P10-LE-NEXT:    pli 4, 235867149
837; P10-LE-NEXT:    pli 5, 168495113
838; P10-LE-NEXT:    rldimi 5, 4, 32, 0
839; P10-LE-NEXT:    std 5, 16(3)
840; P10-LE-NEXT:    stxv 0, 0(3)
841; P10-LE-NEXT:    blr
842entry:
843  store <8 x i16> <i16 1, i16 515, i16 1029, i16 1543, i16 2057, i16 2571, i16 3085, i16 3599>, ptr %a, align 2
844  %arrayidx8 = getelementptr inbounds i16, ptr %a, i64 8
845  store i16 2057, ptr %arrayidx8, align 2
846  %arrayidx9 = getelementptr inbounds i16, ptr %a, i64 9
847  store i16 2571, ptr %arrayidx9, align 2
848  %arrayidx10 = getelementptr inbounds i16, ptr %a, i64 10
849  store i16 3085, ptr %arrayidx10, align 2
850  %arrayidx11 = getelementptr inbounds i16, ptr %a, i64 11
851  store i16 3599, ptr %arrayidx11, align 2
852  ret void
853}
854
855define dso_local void @foo11_int_be_reuse8B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
856; P8-BE-LABEL: foo11_int_be_reuse8B:
857; P8-BE:       # %bb.0: # %entry
858; P8-BE-NEXT:    ld 4, L..C10(2) # %const.0
859; P8-BE-NEXT:    lxvw4x 0, 0, 4
860; P8-BE-NEXT:    lis 4, 1
861; P8-BE-NEXT:    ori 4, 4, 515
862; P8-BE-NEXT:    rldic 4, 4, 32, 15
863; P8-BE-NEXT:    stxvw4x 0, 0, 3
864; P8-BE-NEXT:    oris 4, 4, 1029
865; P8-BE-NEXT:    ori 4, 4, 1543
866; P8-BE-NEXT:    std 4, 16(3)
867; P8-BE-NEXT:    blr
868;
869; P9-BE-LABEL: foo11_int_be_reuse8B:
870; P9-BE:       # %bb.0: # %entry
871; P9-BE-NEXT:    ld 4, L..C10(2) # %const.0
872; P9-BE-NEXT:    lxv 0, 0(4)
873; P9-BE-NEXT:    lis 4, 1
874; P9-BE-NEXT:    ori 4, 4, 515
875; P9-BE-NEXT:    rldic 4, 4, 32, 15
876; P9-BE-NEXT:    stxv 0, 0(3)
877; P9-BE-NEXT:    oris 4, 4, 1029
878; P9-BE-NEXT:    ori 4, 4, 1543
879; P9-BE-NEXT:    std 4, 16(3)
880; P9-BE-NEXT:    blr
881;
882; P10-BE-LABEL: foo11_int_be_reuse8B:
883; P10-BE:       # %bb.0: # %entry
884; P10-BE-NEXT:    ld 4, L..C10(2) # %const.0
885; P10-BE-NEXT:    pli 5, 67438087
886; P10-BE-NEXT:    lxv 0, 0(4)
887; P10-BE-NEXT:    pli 4, 66051
888; P10-BE-NEXT:    rldimi 5, 4, 32, 0
889; P10-BE-NEXT:    std 5, 16(3)
890; P10-BE-NEXT:    stxv 0, 0(3)
891; P10-BE-NEXT:    blr
892;
893; P8-LE-LABEL: foo11_int_be_reuse8B:
894; P8-LE:       # %bb.0: # %entry
895; P8-LE-NEXT:    addis 4, 2, .LCPI10_0@toc@ha
896; P8-LE-NEXT:    addi 4, 4, .LCPI10_0@toc@l
897; P8-LE-NEXT:    lxvd2x 0, 0, 4
898; P8-LE-NEXT:    lis 4, 1029
899; P8-LE-NEXT:    ori 4, 4, 1543
900; P8-LE-NEXT:    rldic 4, 4, 32, 5
901; P8-LE-NEXT:    stxvd2x 0, 0, 3
902; P8-LE-NEXT:    oris 4, 4, 1
903; P8-LE-NEXT:    ori 4, 4, 515
904; P8-LE-NEXT:    std 4, 16(3)
905; P8-LE-NEXT:    blr
906;
907; P9-LE-LABEL: foo11_int_be_reuse8B:
908; P9-LE:       # %bb.0: # %entry
909; P9-LE-NEXT:    addis 4, 2, .LCPI10_0@toc@ha
910; P9-LE-NEXT:    addi 4, 4, .LCPI10_0@toc@l
911; P9-LE-NEXT:    lxv 0, 0(4)
912; P9-LE-NEXT:    lis 4, 1029
913; P9-LE-NEXT:    ori 4, 4, 1543
914; P9-LE-NEXT:    rldic 4, 4, 32, 5
915; P9-LE-NEXT:    stxv 0, 0(3)
916; P9-LE-NEXT:    oris 4, 4, 1
917; P9-LE-NEXT:    ori 4, 4, 515
918; P9-LE-NEXT:    std 4, 16(3)
919; P9-LE-NEXT:    blr
920;
921; P10-LE-LABEL: foo11_int_be_reuse8B:
922; P10-LE:       # %bb.0: # %entry
923; P10-LE-NEXT:    plxv 0, .LCPI10_0@PCREL(0), 1
924; P10-LE-NEXT:    pli 4, 67438087
925; P10-LE-NEXT:    pli 5, 66051
926; P10-LE-NEXT:    rldimi 5, 4, 32, 0
927; P10-LE-NEXT:    std 5, 16(3)
928; P10-LE-NEXT:    stxv 0, 0(3)
929; P10-LE-NEXT:    blr
930entry:
931  store <4 x i32> <i32 66051, i32 67438087, i32 134810123, i32 202182159>, ptr %a, align 4
932  %arrayidx4 = getelementptr inbounds i32, ptr %a, i64 4
933  store i32 66051, ptr %arrayidx4, align 4
934  %arrayidx5 = getelementptr inbounds i32, ptr %a, i64 5
935  store i32 67438087, ptr %arrayidx5, align 4
936  ret void
937}
938
939define dso_local void @foo12_int_le_reuse8B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
940; P8-BE-LABEL: foo12_int_le_reuse8B:
941; P8-BE:       # %bb.0: # %entry
942; P8-BE-NEXT:    ld 4, L..C11(2) # %const.0
943; P8-BE-NEXT:    lxvw4x 0, 0, 4
944; P8-BE-NEXT:    lis 4, 2057
945; P8-BE-NEXT:    ori 4, 4, 2571
946; P8-BE-NEXT:    rldic 4, 4, 32, 4
947; P8-BE-NEXT:    stxvw4x 0, 0, 3
948; P8-BE-NEXT:    oris 4, 4, 3085
949; P8-BE-NEXT:    ori 4, 4, 3599
950; P8-BE-NEXT:    std 4, 16(3)
951; P8-BE-NEXT:    blr
952;
953; P9-BE-LABEL: foo12_int_le_reuse8B:
954; P9-BE:       # %bb.0: # %entry
955; P9-BE-NEXT:    ld 4, L..C11(2) # %const.0
956; P9-BE-NEXT:    lxv 0, 0(4)
957; P9-BE-NEXT:    lis 4, 2057
958; P9-BE-NEXT:    ori 4, 4, 2571
959; P9-BE-NEXT:    rldic 4, 4, 32, 4
960; P9-BE-NEXT:    stxv 0, 0(3)
961; P9-BE-NEXT:    oris 4, 4, 3085
962; P9-BE-NEXT:    ori 4, 4, 3599
963; P9-BE-NEXT:    std 4, 16(3)
964; P9-BE-NEXT:    blr
965;
966; P10-BE-LABEL: foo12_int_le_reuse8B:
967; P10-BE:       # %bb.0: # %entry
968; P10-BE-NEXT:    ld 4, L..C11(2) # %const.0
969; P10-BE-NEXT:    pli 5, 202182159
970; P10-BE-NEXT:    lxv 0, 0(4)
971; P10-BE-NEXT:    pli 4, 134810123
972; P10-BE-NEXT:    rldimi 5, 4, 32, 0
973; P10-BE-NEXT:    std 5, 16(3)
974; P10-BE-NEXT:    stxv 0, 0(3)
975; P10-BE-NEXT:    blr
976;
977; P8-LE-LABEL: foo12_int_le_reuse8B:
978; P8-LE:       # %bb.0: # %entry
979; P8-LE-NEXT:    addis 4, 2, .LCPI11_0@toc@ha
980; P8-LE-NEXT:    addi 4, 4, .LCPI11_0@toc@l
981; P8-LE-NEXT:    lxvd2x 0, 0, 4
982; P8-LE-NEXT:    lis 4, 3085
983; P8-LE-NEXT:    ori 4, 4, 3599
984; P8-LE-NEXT:    rldic 4, 4, 32, 4
985; P8-LE-NEXT:    stxvd2x 0, 0, 3
986; P8-LE-NEXT:    oris 4, 4, 2057
987; P8-LE-NEXT:    ori 4, 4, 2571
988; P8-LE-NEXT:    std 4, 16(3)
989; P8-LE-NEXT:    blr
990;
991; P9-LE-LABEL: foo12_int_le_reuse8B:
992; P9-LE:       # %bb.0: # %entry
993; P9-LE-NEXT:    addis 4, 2, .LCPI11_0@toc@ha
994; P9-LE-NEXT:    addi 4, 4, .LCPI11_0@toc@l
995; P9-LE-NEXT:    lxv 0, 0(4)
996; P9-LE-NEXT:    lis 4, 3085
997; P9-LE-NEXT:    ori 4, 4, 3599
998; P9-LE-NEXT:    rldic 4, 4, 32, 4
999; P9-LE-NEXT:    stxv 0, 0(3)
1000; P9-LE-NEXT:    oris 4, 4, 2057
1001; P9-LE-NEXT:    ori 4, 4, 2571
1002; P9-LE-NEXT:    std 4, 16(3)
1003; P9-LE-NEXT:    blr
1004;
1005; P10-LE-LABEL: foo12_int_le_reuse8B:
1006; P10-LE:       # %bb.0: # %entry
1007; P10-LE-NEXT:    plxv 0, .LCPI11_0@PCREL(0), 1
1008; P10-LE-NEXT:    pli 4, 202182159
1009; P10-LE-NEXT:    pli 5, 134810123
1010; P10-LE-NEXT:    rldimi 5, 4, 32, 0
1011; P10-LE-NEXT:    std 5, 16(3)
1012; P10-LE-NEXT:    stxv 0, 0(3)
1013; P10-LE-NEXT:    blr
1014entry:
1015  store <4 x i32> <i32 66051, i32 67438087, i32 134810123, i32 202182159>, ptr %a, align 4
1016  %arrayidx4 = getelementptr inbounds i32, ptr %a, i64 4
1017  store i32 134810123, ptr %arrayidx4, align 4
1018  %arrayidx5 = getelementptr inbounds i32, ptr %a, i64 5
1019  store i32 202182159, ptr %arrayidx5, align 4
1020  ret void
1021}
1022
1023define dso_local void @foo13_int_be_reuse8B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
1024; P8-BE-LABEL: foo13_int_be_reuse8B:
1025; P8-BE:       # %bb.0: # %entry
1026; P8-BE-NEXT:    ld 4, L..C12(2) # %const.0
1027; P8-BE-NEXT:    lxvd2x 0, 0, 4
1028; P8-BE-NEXT:    lis 4, 1
1029; P8-BE-NEXT:    ori 4, 4, 515
1030; P8-BE-NEXT:    rldic 4, 4, 32, 15
1031; P8-BE-NEXT:    stxvd2x 0, 0, 3
1032; P8-BE-NEXT:    oris 4, 4, 1029
1033; P8-BE-NEXT:    ori 4, 4, 1543
1034; P8-BE-NEXT:    std 4, 16(3)
1035; P8-BE-NEXT:    blr
1036;
1037; P9-BE-LABEL: foo13_int_be_reuse8B:
1038; P9-BE:       # %bb.0: # %entry
1039; P9-BE-NEXT:    ld 4, L..C12(2) # %const.0
1040; P9-BE-NEXT:    lxv 0, 0(4)
1041; P9-BE-NEXT:    lis 4, 1
1042; P9-BE-NEXT:    ori 4, 4, 515
1043; P9-BE-NEXT:    rldic 4, 4, 32, 15
1044; P9-BE-NEXT:    stxv 0, 0(3)
1045; P9-BE-NEXT:    oris 4, 4, 1029
1046; P9-BE-NEXT:    ori 4, 4, 1543
1047; P9-BE-NEXT:    std 4, 16(3)
1048; P9-BE-NEXT:    blr
1049;
1050; P10-BE-LABEL: foo13_int_be_reuse8B:
1051; P10-BE:       # %bb.0: # %entry
1052; P10-BE-NEXT:    ld 4, L..C12(2) # %const.0
1053; P10-BE-NEXT:    pli 5, 67438087
1054; P10-BE-NEXT:    lxv 0, 0(4)
1055; P10-BE-NEXT:    pli 4, 66051
1056; P10-BE-NEXT:    rldimi 5, 4, 32, 0
1057; P10-BE-NEXT:    std 5, 16(3)
1058; P10-BE-NEXT:    stxv 0, 0(3)
1059; P10-BE-NEXT:    blr
1060;
1061; P8-LE-LABEL: foo13_int_be_reuse8B:
1062; P8-LE:       # %bb.0: # %entry
1063; P8-LE-NEXT:    addis 4, 2, .LCPI12_0@toc@ha
1064; P8-LE-NEXT:    addi 4, 4, .LCPI12_0@toc@l
1065; P8-LE-NEXT:    lxvd2x 0, 0, 4
1066; P8-LE-NEXT:    lis 4, 1
1067; P8-LE-NEXT:    ori 4, 4, 515
1068; P8-LE-NEXT:    rldic 4, 4, 32, 15
1069; P8-LE-NEXT:    stxvd2x 0, 0, 3
1070; P8-LE-NEXT:    oris 4, 4, 1029
1071; P8-LE-NEXT:    ori 4, 4, 1543
1072; P8-LE-NEXT:    std 4, 16(3)
1073; P8-LE-NEXT:    blr
1074;
1075; P9-LE-LABEL: foo13_int_be_reuse8B:
1076; P9-LE:       # %bb.0: # %entry
1077; P9-LE-NEXT:    addis 4, 2, .LCPI12_0@toc@ha
1078; P9-LE-NEXT:    addi 4, 4, .LCPI12_0@toc@l
1079; P9-LE-NEXT:    lxv 0, 0(4)
1080; P9-LE-NEXT:    lis 4, 1
1081; P9-LE-NEXT:    ori 4, 4, 515
1082; P9-LE-NEXT:    rldic 4, 4, 32, 15
1083; P9-LE-NEXT:    stxv 0, 0(3)
1084; P9-LE-NEXT:    oris 4, 4, 1029
1085; P9-LE-NEXT:    ori 4, 4, 1543
1086; P9-LE-NEXT:    std 4, 16(3)
1087; P9-LE-NEXT:    blr
1088;
1089; P10-LE-LABEL: foo13_int_be_reuse8B:
1090; P10-LE:       # %bb.0: # %entry
1091; P10-LE-NEXT:    plxv 0, .LCPI12_0@PCREL(0), 1
1092; P10-LE-NEXT:    pli 4, 66051
1093; P10-LE-NEXT:    pli 5, 67438087
1094; P10-LE-NEXT:    rldimi 5, 4, 32, 0
1095; P10-LE-NEXT:    std 5, 16(3)
1096; P10-LE-NEXT:    stxv 0, 0(3)
1097; P10-LE-NEXT:    blr
1098entry:
1099  store <2 x i64> <i64 283686952306183, i64 579005069656919567>, ptr %a, align 8
1100  %arrayidx2 = getelementptr inbounds i64, ptr %a, i64 2
1101  store i64 283686952306183, ptr %arrayidx2, align 8
1102  ret void
1103}
1104
1105define dso_local void @foo14_int_le_reuse8B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
1106; P8-BE-LABEL: foo14_int_le_reuse8B:
1107; P8-BE:       # %bb.0: # %entry
1108; P8-BE-NEXT:    ld 4, L..C13(2) # %const.0
1109; P8-BE-NEXT:    lxvd2x 0, 0, 4
1110; P8-BE-NEXT:    lis 4, 2057
1111; P8-BE-NEXT:    ori 4, 4, 2571
1112; P8-BE-NEXT:    rldic 4, 4, 32, 4
1113; P8-BE-NEXT:    stxvd2x 0, 0, 3
1114; P8-BE-NEXT:    oris 4, 4, 3085
1115; P8-BE-NEXT:    ori 4, 4, 3599
1116; P8-BE-NEXT:    std 4, 16(3)
1117; P8-BE-NEXT:    blr
1118;
1119; P9-BE-LABEL: foo14_int_le_reuse8B:
1120; P9-BE:       # %bb.0: # %entry
1121; P9-BE-NEXT:    ld 4, L..C13(2) # %const.0
1122; P9-BE-NEXT:    lxv 0, 0(4)
1123; P9-BE-NEXT:    lis 4, 2057
1124; P9-BE-NEXT:    ori 4, 4, 2571
1125; P9-BE-NEXT:    rldic 4, 4, 32, 4
1126; P9-BE-NEXT:    stxv 0, 0(3)
1127; P9-BE-NEXT:    oris 4, 4, 3085
1128; P9-BE-NEXT:    ori 4, 4, 3599
1129; P9-BE-NEXT:    std 4, 16(3)
1130; P9-BE-NEXT:    blr
1131;
1132; P10-BE-LABEL: foo14_int_le_reuse8B:
1133; P10-BE:       # %bb.0: # %entry
1134; P10-BE-NEXT:    ld 4, L..C13(2) # %const.0
1135; P10-BE-NEXT:    pli 5, 202182159
1136; P10-BE-NEXT:    lxv 0, 0(4)
1137; P10-BE-NEXT:    pli 4, 134810123
1138; P10-BE-NEXT:    rldimi 5, 4, 32, 0
1139; P10-BE-NEXT:    std 5, 16(3)
1140; P10-BE-NEXT:    stxv 0, 0(3)
1141; P10-BE-NEXT:    blr
1142;
1143; P8-LE-LABEL: foo14_int_le_reuse8B:
1144; P8-LE:       # %bb.0: # %entry
1145; P8-LE-NEXT:    addis 4, 2, .LCPI13_0@toc@ha
1146; P8-LE-NEXT:    addi 4, 4, .LCPI13_0@toc@l
1147; P8-LE-NEXT:    lxvd2x 0, 0, 4
1148; P8-LE-NEXT:    lis 4, 2057
1149; P8-LE-NEXT:    ori 4, 4, 2571
1150; P8-LE-NEXT:    rldic 4, 4, 32, 4
1151; P8-LE-NEXT:    stxvd2x 0, 0, 3
1152; P8-LE-NEXT:    oris 4, 4, 3085
1153; P8-LE-NEXT:    ori 4, 4, 3599
1154; P8-LE-NEXT:    std 4, 16(3)
1155; P8-LE-NEXT:    blr
1156;
1157; P9-LE-LABEL: foo14_int_le_reuse8B:
1158; P9-LE:       # %bb.0: # %entry
1159; P9-LE-NEXT:    addis 4, 2, .LCPI13_0@toc@ha
1160; P9-LE-NEXT:    addi 4, 4, .LCPI13_0@toc@l
1161; P9-LE-NEXT:    lxv 0, 0(4)
1162; P9-LE-NEXT:    lis 4, 2057
1163; P9-LE-NEXT:    ori 4, 4, 2571
1164; P9-LE-NEXT:    rldic 4, 4, 32, 4
1165; P9-LE-NEXT:    stxv 0, 0(3)
1166; P9-LE-NEXT:    oris 4, 4, 3085
1167; P9-LE-NEXT:    ori 4, 4, 3599
1168; P9-LE-NEXT:    std 4, 16(3)
1169; P9-LE-NEXT:    blr
1170;
1171; P10-LE-LABEL: foo14_int_le_reuse8B:
1172; P10-LE:       # %bb.0: # %entry
1173; P10-LE-NEXT:    plxv 0, .LCPI13_0@PCREL(0), 1
1174; P10-LE-NEXT:    pli 4, 134810123
1175; P10-LE-NEXT:    pli 5, 202182159
1176; P10-LE-NEXT:    rldimi 5, 4, 32, 0
1177; P10-LE-NEXT:    std 5, 16(3)
1178; P10-LE-NEXT:    stxv 0, 0(3)
1179; P10-LE-NEXT:    blr
1180entry:
1181  store <2 x i64> <i64 283686952306183, i64 579005069656919567>, ptr %a, align 8
1182  %arrayidx2 = getelementptr inbounds i64, ptr %a, i64 2
1183  store i64 579005069656919567, ptr %arrayidx2, align 8
1184  ret void
1185}
1186
1187define dso_local void @foo15_int_noreuse4B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
1188; P8-BE-LABEL: foo15_int_noreuse4B:
1189; P8-BE:       # %bb.0: # %entry
1190; P8-BE-NEXT:    ld 4, L..C14(2) # %const.0
1191; P8-BE-NEXT:    lxvw4x 0, 0, 4
1192; P8-BE-NEXT:    lis 4, 1029
1193; P8-BE-NEXT:    ori 4, 4, 1544
1194; P8-BE-NEXT:    stw 4, 16(3)
1195; P8-BE-NEXT:    stxvw4x 0, 0, 3
1196; P8-BE-NEXT:    blr
1197;
1198; P9-BE-LABEL: foo15_int_noreuse4B:
1199; P9-BE:       # %bb.0: # %entry
1200; P9-BE-NEXT:    ld 4, L..C14(2) # %const.0
1201; P9-BE-NEXT:    lxv 0, 0(4)
1202; P9-BE-NEXT:    lis 4, 1029
1203; P9-BE-NEXT:    ori 4, 4, 1544
1204; P9-BE-NEXT:    stw 4, 16(3)
1205; P9-BE-NEXT:    stxv 0, 0(3)
1206; P9-BE-NEXT:    blr
1207;
1208; P10-BE-LABEL: foo15_int_noreuse4B:
1209; P10-BE:       # %bb.0: # %entry
1210; P10-BE-NEXT:    ld 4, L..C14(2) # %const.0
1211; P10-BE-NEXT:    lxv 0, 0(4)
1212; P10-BE-NEXT:    pli 4, 67438088
1213; P10-BE-NEXT:    stw 4, 16(3)
1214; P10-BE-NEXT:    stxv 0, 0(3)
1215; P10-BE-NEXT:    blr
1216;
1217; P8-LE-LABEL: foo15_int_noreuse4B:
1218; P8-LE:       # %bb.0: # %entry
1219; P8-LE-NEXT:    addis 4, 2, .LCPI14_0@toc@ha
1220; P8-LE-NEXT:    addi 4, 4, .LCPI14_0@toc@l
1221; P8-LE-NEXT:    lxvd2x 0, 0, 4
1222; P8-LE-NEXT:    lis 4, 1029
1223; P8-LE-NEXT:    ori 4, 4, 1544
1224; P8-LE-NEXT:    stw 4, 16(3)
1225; P8-LE-NEXT:    stxvd2x 0, 0, 3
1226; P8-LE-NEXT:    blr
1227;
1228; P9-LE-LABEL: foo15_int_noreuse4B:
1229; P9-LE:       # %bb.0: # %entry
1230; P9-LE-NEXT:    addis 4, 2, .LCPI14_0@toc@ha
1231; P9-LE-NEXT:    addi 4, 4, .LCPI14_0@toc@l
1232; P9-LE-NEXT:    lxv 0, 0(4)
1233; P9-LE-NEXT:    lis 4, 1029
1234; P9-LE-NEXT:    ori 4, 4, 1544
1235; P9-LE-NEXT:    stw 4, 16(3)
1236; P9-LE-NEXT:    stxv 0, 0(3)
1237; P9-LE-NEXT:    blr
1238;
1239; P10-LE-LABEL: foo15_int_noreuse4B:
1240; P10-LE:       # %bb.0: # %entry
1241; P10-LE-NEXT:    plxv 0, .LCPI14_0@PCREL(0), 1
1242; P10-LE-NEXT:    pli 4, 67438088
1243; P10-LE-NEXT:    stw 4, 16(3)
1244; P10-LE-NEXT:    stxv 0, 0(3)
1245; P10-LE-NEXT:    blr
1246entry:
1247  store <4 x i32> <i32 66051, i32 67438087, i32 134810123, i32 202182159>, ptr %a, align 4
1248  %arrayidx4 = getelementptr inbounds i32, ptr %a, i64 4
1249  store i32 67438088, ptr %arrayidx4, align 4
1250  ret void
1251}
1252
1253define dso_local void @foo16_int_noreuse8B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
1254; P8-BE-LABEL: foo16_int_noreuse8B:
1255; P8-BE:       # %bb.0: # %entry
1256; P8-BE-NEXT:    ld 4, L..C15(2) # %const.0
1257; P8-BE-NEXT:    lxvw4x 0, 0, 4
1258; P8-BE-NEXT:    lis 4, 1
1259; P8-BE-NEXT:    ori 4, 4, 515
1260; P8-BE-NEXT:    rldic 4, 4, 32, 15
1261; P8-BE-NEXT:    stxvw4x 0, 0, 3
1262; P8-BE-NEXT:    oris 4, 4, 1029
1263; P8-BE-NEXT:    ori 4, 4, 1544
1264; P8-BE-NEXT:    std 4, 16(3)
1265; P8-BE-NEXT:    blr
1266;
1267; P9-BE-LABEL: foo16_int_noreuse8B:
1268; P9-BE:       # %bb.0: # %entry
1269; P9-BE-NEXT:    ld 4, L..C15(2) # %const.0
1270; P9-BE-NEXT:    lxv 0, 0(4)
1271; P9-BE-NEXT:    lis 4, 1
1272; P9-BE-NEXT:    ori 4, 4, 515
1273; P9-BE-NEXT:    rldic 4, 4, 32, 15
1274; P9-BE-NEXT:    stxv 0, 0(3)
1275; P9-BE-NEXT:    oris 4, 4, 1029
1276; P9-BE-NEXT:    ori 4, 4, 1544
1277; P9-BE-NEXT:    std 4, 16(3)
1278; P9-BE-NEXT:    blr
1279;
1280; P10-BE-LABEL: foo16_int_noreuse8B:
1281; P10-BE:       # %bb.0: # %entry
1282; P10-BE-NEXT:    ld 4, L..C15(2) # %const.0
1283; P10-BE-NEXT:    pli 5, 67438088
1284; P10-BE-NEXT:    lxv 0, 0(4)
1285; P10-BE-NEXT:    pli 4, 66051
1286; P10-BE-NEXT:    rldimi 5, 4, 32, 0
1287; P10-BE-NEXT:    std 5, 16(3)
1288; P10-BE-NEXT:    stxv 0, 0(3)
1289; P10-BE-NEXT:    blr
1290;
1291; P8-LE-LABEL: foo16_int_noreuse8B:
1292; P8-LE:       # %bb.0: # %entry
1293; P8-LE-NEXT:    addis 4, 2, .LCPI15_0@toc@ha
1294; P8-LE-NEXT:    addi 4, 4, .LCPI15_0@toc@l
1295; P8-LE-NEXT:    lxvd2x 0, 0, 4
1296; P8-LE-NEXT:    lis 4, 128
1297; P8-LE-NEXT:    ori 4, 4, 41153
1298; P8-LE-NEXT:    rldic 4, 4, 35, 5
1299; P8-LE-NEXT:    stxvd2x 0, 0, 3
1300; P8-LE-NEXT:    oris 4, 4, 1
1301; P8-LE-NEXT:    ori 4, 4, 515
1302; P8-LE-NEXT:    std 4, 16(3)
1303; P8-LE-NEXT:    blr
1304;
1305; P9-LE-LABEL: foo16_int_noreuse8B:
1306; P9-LE:       # %bb.0: # %entry
1307; P9-LE-NEXT:    addis 4, 2, .LCPI15_0@toc@ha
1308; P9-LE-NEXT:    addi 4, 4, .LCPI15_0@toc@l
1309; P9-LE-NEXT:    lxv 0, 0(4)
1310; P9-LE-NEXT:    lis 4, 128
1311; P9-LE-NEXT:    ori 4, 4, 41153
1312; P9-LE-NEXT:    rldic 4, 4, 35, 5
1313; P9-LE-NEXT:    stxv 0, 0(3)
1314; P9-LE-NEXT:    oris 4, 4, 1
1315; P9-LE-NEXT:    ori 4, 4, 515
1316; P9-LE-NEXT:    std 4, 16(3)
1317; P9-LE-NEXT:    blr
1318;
1319; P10-LE-LABEL: foo16_int_noreuse8B:
1320; P10-LE:       # %bb.0: # %entry
1321; P10-LE-NEXT:    plxv 0, .LCPI15_0@PCREL(0), 1
1322; P10-LE-NEXT:    pli 4, 67438088
1323; P10-LE-NEXT:    pli 5, 66051
1324; P10-LE-NEXT:    rldimi 5, 4, 32, 0
1325; P10-LE-NEXT:    std 5, 16(3)
1326; P10-LE-NEXT:    stxv 0, 0(3)
1327; P10-LE-NEXT:    blr
1328entry:
1329  store <4 x i32> <i32 66051, i32 67438087, i32 134810123, i32 202182159>, ptr %a, align 4
1330  %arrayidx4 = getelementptr inbounds i32, ptr %a, i64 4
1331  store i32 66051, ptr %arrayidx4, align 4
1332  %arrayidx5 = getelementptr inbounds i32, ptr %a, i64 5
1333  store i32 67438088, ptr %arrayidx5, align 4
1334  ret void
1335}
1336
1337define dso_local void @foo17_fp_be_reuse4B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
1338; P8-BE-LABEL: foo17_fp_be_reuse4B:
1339; P8-BE:       # %bb.0: # %entry
1340; P8-BE-NEXT:    ld 4, L..C16(2) # %const.0
1341; P8-BE-NEXT:    lxvw4x 0, 0, 4
1342; P8-BE-NEXT:    lis 4, 16673
1343; P8-BE-NEXT:    ori 4, 4, 39322
1344; P8-BE-NEXT:    stw 4, 16(3)
1345; P8-BE-NEXT:    stxvw4x 0, 0, 3
1346; P8-BE-NEXT:    blr
1347;
1348; P9-BE-LABEL: foo17_fp_be_reuse4B:
1349; P9-BE:       # %bb.0: # %entry
1350; P9-BE-NEXT:    ld 4, L..C16(2) # %const.0
1351; P9-BE-NEXT:    lxv 0, 0(4)
1352; P9-BE-NEXT:    lis 4, 16673
1353; P9-BE-NEXT:    ori 4, 4, 39322
1354; P9-BE-NEXT:    stw 4, 16(3)
1355; P9-BE-NEXT:    stxv 0, 0(3)
1356; P9-BE-NEXT:    blr
1357;
1358; P10-BE-LABEL: foo17_fp_be_reuse4B:
1359; P10-BE:       # %bb.0: # %entry
1360; P10-BE-NEXT:    ld 4, L..C16(2) # %const.0
1361; P10-BE-NEXT:    lxv 0, 0(4)
1362; P10-BE-NEXT:    pli 4, 1092721050
1363; P10-BE-NEXT:    stw 4, 16(3)
1364; P10-BE-NEXT:    stxv 0, 0(3)
1365; P10-BE-NEXT:    blr
1366;
1367; P8-LE-LABEL: foo17_fp_be_reuse4B:
1368; P8-LE:       # %bb.0: # %entry
1369; P8-LE-NEXT:    addis 4, 2, .LCPI16_0@toc@ha
1370; P8-LE-NEXT:    addi 4, 4, .LCPI16_0@toc@l
1371; P8-LE-NEXT:    lxvd2x 0, 0, 4
1372; P8-LE-NEXT:    lis 4, 16673
1373; P8-LE-NEXT:    ori 4, 4, 39322
1374; P8-LE-NEXT:    stw 4, 16(3)
1375; P8-LE-NEXT:    stxvd2x 0, 0, 3
1376; P8-LE-NEXT:    blr
1377;
1378; P9-LE-LABEL: foo17_fp_be_reuse4B:
1379; P9-LE:       # %bb.0: # %entry
1380; P9-LE-NEXT:    addis 4, 2, .LCPI16_0@toc@ha
1381; P9-LE-NEXT:    addi 4, 4, .LCPI16_0@toc@l
1382; P9-LE-NEXT:    lxv 0, 0(4)
1383; P9-LE-NEXT:    lis 4, 16673
1384; P9-LE-NEXT:    ori 4, 4, 39322
1385; P9-LE-NEXT:    stw 4, 16(3)
1386; P9-LE-NEXT:    stxv 0, 0(3)
1387; P9-LE-NEXT:    blr
1388;
1389; P10-LE-LABEL: foo17_fp_be_reuse4B:
1390; P10-LE:       # %bb.0: # %entry
1391; P10-LE-NEXT:    plxv 0, .LCPI16_0@PCREL(0), 1
1392; P10-LE-NEXT:    pli 4, 1092721050
1393; P10-LE-NEXT:    stw 4, 16(3)
1394; P10-LE-NEXT:    stxv 0, 0(3)
1395; P10-LE-NEXT:    blr
1396entry:
1397  store <4 x float> <float 1.000000e+00, float 0x4024333340000000, float 0x3FF3333340000000, float 0x3FF4CCCCC0000000>, ptr %a, align 4
1398  %arrayidx4 = getelementptr inbounds float, ptr %a, i64 4
1399  store float 0x4024333340000000, ptr %arrayidx4, align 4
1400  ret void
1401}
1402
1403define dso_local void @foo18_fp_le_reuse4B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
1404; P8-BE-LABEL: foo18_fp_le_reuse4B:
1405; P8-BE:       # %bb.0: # %entry
1406; P8-BE-NEXT:    ld 4, L..C17(2) # %const.0
1407; P8-BE-NEXT:    lxvw4x 0, 0, 4
1408; P8-BE-NEXT:    lis 4, 16675
1409; P8-BE-NEXT:    ori 4, 4, 13107
1410; P8-BE-NEXT:    stw 4, 16(3)
1411; P8-BE-NEXT:    stxvw4x 0, 0, 3
1412; P8-BE-NEXT:    blr
1413;
1414; P9-BE-LABEL: foo18_fp_le_reuse4B:
1415; P9-BE:       # %bb.0: # %entry
1416; P9-BE-NEXT:    ld 4, L..C17(2) # %const.0
1417; P9-BE-NEXT:    lxv 0, 0(4)
1418; P9-BE-NEXT:    lis 4, 16675
1419; P9-BE-NEXT:    ori 4, 4, 13107
1420; P9-BE-NEXT:    stw 4, 16(3)
1421; P9-BE-NEXT:    stxv 0, 0(3)
1422; P9-BE-NEXT:    blr
1423;
1424; P10-BE-LABEL: foo18_fp_le_reuse4B:
1425; P10-BE:       # %bb.0: # %entry
1426; P10-BE-NEXT:    ld 4, L..C17(2) # %const.0
1427; P10-BE-NEXT:    lxv 0, 0(4)
1428; P10-BE-NEXT:    pli 4, 1092825907
1429; P10-BE-NEXT:    stw 4, 16(3)
1430; P10-BE-NEXT:    stxv 0, 0(3)
1431; P10-BE-NEXT:    blr
1432;
1433; P8-LE-LABEL: foo18_fp_le_reuse4B:
1434; P8-LE:       # %bb.0: # %entry
1435; P8-LE-NEXT:    addis 4, 2, .LCPI17_0@toc@ha
1436; P8-LE-NEXT:    addi 4, 4, .LCPI17_0@toc@l
1437; P8-LE-NEXT:    lxvd2x 0, 0, 4
1438; P8-LE-NEXT:    lis 4, 16675
1439; P8-LE-NEXT:    ori 4, 4, 13107
1440; P8-LE-NEXT:    stw 4, 16(3)
1441; P8-LE-NEXT:    stxvd2x 0, 0, 3
1442; P8-LE-NEXT:    blr
1443;
1444; P9-LE-LABEL: foo18_fp_le_reuse4B:
1445; P9-LE:       # %bb.0: # %entry
1446; P9-LE-NEXT:    addis 4, 2, .LCPI17_0@toc@ha
1447; P9-LE-NEXT:    addi 4, 4, .LCPI17_0@toc@l
1448; P9-LE-NEXT:    lxv 0, 0(4)
1449; P9-LE-NEXT:    lis 4, 16675
1450; P9-LE-NEXT:    ori 4, 4, 13107
1451; P9-LE-NEXT:    stw 4, 16(3)
1452; P9-LE-NEXT:    stxv 0, 0(3)
1453; P9-LE-NEXT:    blr
1454;
1455; P10-LE-LABEL: foo18_fp_le_reuse4B:
1456; P10-LE:       # %bb.0: # %entry
1457; P10-LE-NEXT:    plxv 0, .LCPI17_0@PCREL(0), 1
1458; P10-LE-NEXT:    pli 4, 1092825907
1459; P10-LE-NEXT:    stw 4, 16(3)
1460; P10-LE-NEXT:    stxv 0, 0(3)
1461; P10-LE-NEXT:    blr
1462entry:
1463  store <4 x float> <float 1.000000e+00, float 0x3FF19999A0000000, float 0x4024666660000000, float 0x3FF4CCCCC0000000>, ptr %a, align 4
1464  %arrayidx4 = getelementptr inbounds float, ptr %a, i64 4
1465  store float 0x4024666660000000, ptr %arrayidx4, align 4
1466  ret void
1467}
1468
1469define dso_local void @foo19_fp_be_reuse8B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
1470; P8-BE-LABEL: foo19_fp_be_reuse8B:
1471; P8-BE:       # %bb.0: # %entry
1472; P8-BE-NEXT:    ld 4, L..C18(2) # %const.0
1473; P8-BE-NEXT:    lxvd2x 0, 0, 4
1474; P8-BE-NEXT:    li 4, 4105
1475; P8-BE-NEXT:    rldic 4, 4, 50, 1
1476; P8-BE-NEXT:    std 4, 16(3)
1477; P8-BE-NEXT:    stxvd2x 0, 0, 3
1478; P8-BE-NEXT:    blr
1479;
1480; P9-BE-LABEL: foo19_fp_be_reuse8B:
1481; P9-BE:       # %bb.0: # %entry
1482; P9-BE-NEXT:    ld 4, L..C18(2) # %const.0
1483; P9-BE-NEXT:    lxv 0, 0(4)
1484; P9-BE-NEXT:    li 4, 4105
1485; P9-BE-NEXT:    rldic 4, 4, 50, 1
1486; P9-BE-NEXT:    std 4, 16(3)
1487; P9-BE-NEXT:    stxv 0, 0(3)
1488; P9-BE-NEXT:    blr
1489;
1490; P10-BE-LABEL: foo19_fp_be_reuse8B:
1491; P10-BE:       # %bb.0: # %entry
1492; P10-BE-NEXT:    ld 4, L..C18(2) # %const.0
1493; P10-BE-NEXT:    lxv 0, 0(4)
1494; P10-BE-NEXT:    li 4, 4105
1495; P10-BE-NEXT:    rldic 4, 4, 50, 1
1496; P10-BE-NEXT:    std 4, 16(3)
1497; P10-BE-NEXT:    stxv 0, 0(3)
1498; P10-BE-NEXT:    blr
1499;
1500; P8-LE-LABEL: foo19_fp_be_reuse8B:
1501; P8-LE:       # %bb.0: # %entry
1502; P8-LE-NEXT:    addis 4, 2, .LCPI18_0@toc@ha
1503; P8-LE-NEXT:    addi 4, 4, .LCPI18_0@toc@l
1504; P8-LE-NEXT:    lxvd2x 0, 0, 4
1505; P8-LE-NEXT:    li 4, 4105
1506; P8-LE-NEXT:    rldic 4, 4, 50, 1
1507; P8-LE-NEXT:    std 4, 16(3)
1508; P8-LE-NEXT:    stxvd2x 0, 0, 3
1509; P8-LE-NEXT:    blr
1510;
1511; P9-LE-LABEL: foo19_fp_be_reuse8B:
1512; P9-LE:       # %bb.0: # %entry
1513; P9-LE-NEXT:    addis 4, 2, .LCPI18_0@toc@ha
1514; P9-LE-NEXT:    addi 4, 4, .LCPI18_0@toc@l
1515; P9-LE-NEXT:    lxv 0, 0(4)
1516; P9-LE-NEXT:    li 4, 4105
1517; P9-LE-NEXT:    rldic 4, 4, 50, 1
1518; P9-LE-NEXT:    std 4, 16(3)
1519; P9-LE-NEXT:    stxv 0, 0(3)
1520; P9-LE-NEXT:    blr
1521;
1522; P10-LE-LABEL: foo19_fp_be_reuse8B:
1523; P10-LE:       # %bb.0: # %entry
1524; P10-LE-NEXT:    plxv 0, .LCPI18_0@PCREL(0), 1
1525; P10-LE-NEXT:    li 4, 4105
1526; P10-LE-NEXT:    rldic 4, 4, 50, 1
1527; P10-LE-NEXT:    std 4, 16(3)
1528; P10-LE-NEXT:    stxv 0, 0(3)
1529; P10-LE-NEXT:    blr
1530entry:
1531  store <2 x double> <double 1.000000e+01, double 1.100000e+00>, ptr %a, align 8
1532  %arrayidx2 = getelementptr inbounds double, ptr %a, i64 2
1533  store double 1.000000e+01, ptr %arrayidx2, align 8
1534  ret void
1535}
1536
1537define dso_local void @foo20_fp_le_reuse8B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
1538; P8-BE-LABEL: foo20_fp_le_reuse8B:
1539; P8-BE:       # %bb.0: # %entry
1540; P8-BE-NEXT:    ld 4, L..C19(2) # %const.0
1541; P8-BE-NEXT:    lxvd2x 0, 0, 4
1542; P8-BE-NEXT:    lis 4, 16420
1543; P8-BE-NEXT:    ori 4, 4, 13107
1544; P8-BE-NEXT:    rldimi 4, 4, 32, 0
1545; P8-BE-NEXT:    stxvd2x 0, 0, 3
1546; P8-BE-NEXT:    rlwimi 4, 4, 16, 0, 15
1547; P8-BE-NEXT:    std 4, 16(3)
1548; P8-BE-NEXT:    blr
1549;
1550; P9-BE-LABEL: foo20_fp_le_reuse8B:
1551; P9-BE:       # %bb.0: # %entry
1552; P9-BE-NEXT:    ld 4, L..C19(2) # %const.0
1553; P9-BE-NEXT:    lxv 0, 0(4)
1554; P9-BE-NEXT:    lis 4, 16420
1555; P9-BE-NEXT:    ori 4, 4, 13107
1556; P9-BE-NEXT:    rldimi 4, 4, 32, 0
1557; P9-BE-NEXT:    stxv 0, 0(3)
1558; P9-BE-NEXT:    rlwimi 4, 4, 16, 0, 15
1559; P9-BE-NEXT:    std 4, 16(3)
1560; P9-BE-NEXT:    blr
1561;
1562; P10-BE-LABEL: foo20_fp_le_reuse8B:
1563; P10-BE:       # %bb.0: # %entry
1564; P10-BE-NEXT:    ld 4, L..C19(2) # %const.0
1565; P10-BE-NEXT:    pli 5, 858993459
1566; P10-BE-NEXT:    lxv 0, 0(4)
1567; P10-BE-NEXT:    pli 4, 1076114227
1568; P10-BE-NEXT:    rldimi 5, 4, 32, 0
1569; P10-BE-NEXT:    std 5, 16(3)
1570; P10-BE-NEXT:    stxv 0, 0(3)
1571; P10-BE-NEXT:    blr
1572;
1573; P8-LE-LABEL: foo20_fp_le_reuse8B:
1574; P8-LE:       # %bb.0: # %entry
1575; P8-LE-NEXT:    addis 4, 2, .LCPI19_0@toc@ha
1576; P8-LE-NEXT:    addi 4, 4, .LCPI19_0@toc@l
1577; P8-LE-NEXT:    lxvd2x 0, 0, 4
1578; P8-LE-NEXT:    lis 4, 16420
1579; P8-LE-NEXT:    ori 4, 4, 13107
1580; P8-LE-NEXT:    rldimi 4, 4, 32, 0
1581; P8-LE-NEXT:    stxvd2x 0, 0, 3
1582; P8-LE-NEXT:    rlwimi 4, 4, 16, 0, 15
1583; P8-LE-NEXT:    std 4, 16(3)
1584; P8-LE-NEXT:    blr
1585;
1586; P9-LE-LABEL: foo20_fp_le_reuse8B:
1587; P9-LE:       # %bb.0: # %entry
1588; P9-LE-NEXT:    addis 4, 2, .LCPI19_0@toc@ha
1589; P9-LE-NEXT:    addi 4, 4, .LCPI19_0@toc@l
1590; P9-LE-NEXT:    lxv 0, 0(4)
1591; P9-LE-NEXT:    lis 4, 16420
1592; P9-LE-NEXT:    ori 4, 4, 13107
1593; P9-LE-NEXT:    rldimi 4, 4, 32, 0
1594; P9-LE-NEXT:    stxv 0, 0(3)
1595; P9-LE-NEXT:    rlwimi 4, 4, 16, 0, 15
1596; P9-LE-NEXT:    std 4, 16(3)
1597; P9-LE-NEXT:    blr
1598;
1599; P10-LE-LABEL: foo20_fp_le_reuse8B:
1600; P10-LE:       # %bb.0: # %entry
1601; P10-LE-NEXT:    plxv 0, .LCPI19_0@PCREL(0), 1
1602; P10-LE-NEXT:    pli 4, 1076114227
1603; P10-LE-NEXT:    pli 5, 858993459
1604; P10-LE-NEXT:    rldimi 5, 4, 32, 0
1605; P10-LE-NEXT:    std 5, 16(3)
1606; P10-LE-NEXT:    stxv 0, 0(3)
1607; P10-LE-NEXT:    blr
1608entry:
1609  store <2 x double> <double 1.000000e+00, double 1.010000e+01>, ptr %a, align 8
1610  %arrayidx2 = getelementptr inbounds double, ptr %a, i64 2
1611  store double 1.010000e+01, ptr %arrayidx2, align 8
1612  ret void
1613}
1614
1615define dso_local void @foo21_fp_noreuse4B(ptr nocapture noundef writeonly %a) local_unnamed_addr #0 {
1616; P8-BE-LABEL: foo21_fp_noreuse4B:
1617; P8-BE:       # %bb.0: # %entry
1618; P8-BE-NEXT:    ld 4, L..C20(2) # %const.0
1619; P8-BE-NEXT:    lxvw4x 0, 0, 4
1620; P8-BE-NEXT:    lis 4, 16268
1621; P8-BE-NEXT:    ori 4, 4, 52430
1622; P8-BE-NEXT:    stw 4, 16(3)
1623; P8-BE-NEXT:    stxvw4x 0, 0, 3
1624; P8-BE-NEXT:    blr
1625;
1626; P9-BE-LABEL: foo21_fp_noreuse4B:
1627; P9-BE:       # %bb.0: # %entry
1628; P9-BE-NEXT:    ld 4, L..C20(2) # %const.0
1629; P9-BE-NEXT:    lxv 0, 0(4)
1630; P9-BE-NEXT:    lis 4, 16268
1631; P9-BE-NEXT:    ori 4, 4, 52430
1632; P9-BE-NEXT:    stw 4, 16(3)
1633; P9-BE-NEXT:    stxv 0, 0(3)
1634; P9-BE-NEXT:    blr
1635;
1636; P10-BE-LABEL: foo21_fp_noreuse4B:
1637; P10-BE:       # %bb.0: # %entry
1638; P10-BE-NEXT:    ld 4, L..C20(2) # %const.0
1639; P10-BE-NEXT:    lxv 0, 0(4)
1640; P10-BE-NEXT:    pli 4, 1066192078
1641; P10-BE-NEXT:    stw 4, 16(3)
1642; P10-BE-NEXT:    stxv 0, 0(3)
1643; P10-BE-NEXT:    blr
1644;
1645; P8-LE-LABEL: foo21_fp_noreuse4B:
1646; P8-LE:       # %bb.0: # %entry
1647; P8-LE-NEXT:    addis 4, 2, .LCPI20_0@toc@ha
1648; P8-LE-NEXT:    addi 4, 4, .LCPI20_0@toc@l
1649; P8-LE-NEXT:    lxvd2x 0, 0, 4
1650; P8-LE-NEXT:    lis 4, 16268
1651; P8-LE-NEXT:    ori 4, 4, 52430
1652; P8-LE-NEXT:    stw 4, 16(3)
1653; P8-LE-NEXT:    stxvd2x 0, 0, 3
1654; P8-LE-NEXT:    blr
1655;
1656; P9-LE-LABEL: foo21_fp_noreuse4B:
1657; P9-LE:       # %bb.0: # %entry
1658; P9-LE-NEXT:    addis 4, 2, .LCPI20_0@toc@ha
1659; P9-LE-NEXT:    addi 4, 4, .LCPI20_0@toc@l
1660; P9-LE-NEXT:    lxv 0, 0(4)
1661; P9-LE-NEXT:    lis 4, 16268
1662; P9-LE-NEXT:    ori 4, 4, 52430
1663; P9-LE-NEXT:    stw 4, 16(3)
1664; P9-LE-NEXT:    stxv 0, 0(3)
1665; P9-LE-NEXT:    blr
1666;
1667; P10-LE-LABEL: foo21_fp_noreuse4B:
1668; P10-LE:       # %bb.0: # %entry
1669; P10-LE-NEXT:    plxv 0, .LCPI20_0@PCREL(0), 1
1670; P10-LE-NEXT:    pli 4, 1066192078
1671; P10-LE-NEXT:    stw 4, 16(3)
1672; P10-LE-NEXT:    stxv 0, 0(3)
1673; P10-LE-NEXT:    blr
1674entry:
1675  store <4 x float> <float 1.000000e+00, float 0x3FF19999A0000000, float 0x3FF3333340000000, float 0x3FF4CCCCC0000000>, ptr %a, align 4
1676  %arrayidx4 = getelementptr inbounds float, ptr %a, i64 4
1677  store float 0x3FF19999C0000000, ptr %arrayidx4, align 4
1678  ret void
1679}
1680
1681define dso_local void @foo22_fp_noreuse8B(ptr nocapture noundef writeonly %a) local_unnamed_addr {
1682; P8-BE-LABEL: foo22_fp_noreuse8B:
1683; P8-BE:       # %bb.0: # %entry
1684; P8-BE-NEXT:    ld 4, L..C21(2) # %const.0
1685; P8-BE-NEXT:    lxvd2x 0, 0, 4
1686; P8-BE-NEXT:    li 4, 21503
1687; P8-BE-NEXT:    rotldi 4, 4, 52
1688; P8-BE-NEXT:    std 4, 16(3)
1689; P8-BE-NEXT:    stxvd2x 0, 0, 3
1690; P8-BE-NEXT:    blr
1691;
1692; P9-BE-LABEL: foo22_fp_noreuse8B:
1693; P9-BE:       # %bb.0: # %entry
1694; P9-BE-NEXT:    ld 4, L..C21(2) # %const.0
1695; P9-BE-NEXT:    lxv 0, 0(4)
1696; P9-BE-NEXT:    li 4, 21503
1697; P9-BE-NEXT:    rotldi 4, 4, 52
1698; P9-BE-NEXT:    std 4, 16(3)
1699; P9-BE-NEXT:    stxv 0, 0(3)
1700; P9-BE-NEXT:    blr
1701;
1702; P10-BE-LABEL: foo22_fp_noreuse8B:
1703; P10-BE:       # %bb.0: # %entry
1704; P10-BE-NEXT:    ld 4, L..C21(2) # %const.0
1705; P10-BE-NEXT:    lxv 0, 0(4)
1706; P10-BE-NEXT:    li 4, 21503
1707; P10-BE-NEXT:    rotldi 4, 4, 52
1708; P10-BE-NEXT:    std 4, 16(3)
1709; P10-BE-NEXT:    stxv 0, 0(3)
1710; P10-BE-NEXT:    blr
1711;
1712; P8-LE-LABEL: foo22_fp_noreuse8B:
1713; P8-LE:       # %bb.0: # %entry
1714; P8-LE-NEXT:    addis 4, 2, .LCPI21_0@toc@ha
1715; P8-LE-NEXT:    addi 4, 4, .LCPI21_0@toc@l
1716; P8-LE-NEXT:    lxvd2x 0, 0, 4
1717; P8-LE-NEXT:    li 4, 21503
1718; P8-LE-NEXT:    rotldi 4, 4, 52
1719; P8-LE-NEXT:    std 4, 16(3)
1720; P8-LE-NEXT:    stxvd2x 0, 0, 3
1721; P8-LE-NEXT:    blr
1722;
1723; P9-LE-LABEL: foo22_fp_noreuse8B:
1724; P9-LE:       # %bb.0: # %entry
1725; P9-LE-NEXT:    addis 4, 2, .LCPI21_0@toc@ha
1726; P9-LE-NEXT:    addi 4, 4, .LCPI21_0@toc@l
1727; P9-LE-NEXT:    lxv 0, 0(4)
1728; P9-LE-NEXT:    li 4, 21503
1729; P9-LE-NEXT:    rotldi 4, 4, 52
1730; P9-LE-NEXT:    std 4, 16(3)
1731; P9-LE-NEXT:    stxv 0, 0(3)
1732; P9-LE-NEXT:    blr
1733;
1734; P10-LE-LABEL: foo22_fp_noreuse8B:
1735; P10-LE:       # %bb.0: # %entry
1736; P10-LE-NEXT:    plxv 0, .LCPI21_0@PCREL(0), 1
1737; P10-LE-NEXT:    li 4, 21503
1738; P10-LE-NEXT:    rotldi 4, 4, 52
1739; P10-LE-NEXT:    std 4, 16(3)
1740; P10-LE-NEXT:    stxv 0, 0(3)
1741; P10-LE-NEXT:    blr
1742entry:
1743  store <2 x double> <double 1.000000e+00, double 1.100000e+00>, ptr %a, align 8
1744  %arrayidx2 = getelementptr inbounds double, ptr %a, i64 2
1745  store double 0x3FF0000000000005, ptr %arrayidx2, align 8
1746  ret void
1747}
1748