[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / PowerPC / const-splat-array-init.ll
blob4139a8fbcbb4f1e7a792d6c8b145cf368fd334c2
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
15 define dso_local void @foo1(ptr nocapture noundef writeonly %a) local_unnamed_addr {
16 ; P8-BE-LABEL: foo1:
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:    li 4, 3333
21 ; P8-BE-NEXT:    sth 4, 16(3)
22 ; P8-BE-NEXT:    stxvw4x 0, 0, 3
23 ; P8-BE-NEXT:    blr
25 ; P9-BE-LABEL: foo1:
26 ; P9-BE:       # %bb.0: # %entry
27 ; P9-BE-NEXT:    ld 4, L..C0(2) # %const.0
28 ; P9-BE-NEXT:    lxv 0, 0(4)
29 ; P9-BE-NEXT:    li 4, 3333
30 ; P9-BE-NEXT:    sth 4, 16(3)
31 ; P9-BE-NEXT:    stxv 0, 0(3)
32 ; P9-BE-NEXT:    blr
34 ; P10-BE-LABEL: foo1:
35 ; P10-BE:       # %bb.0: # %entry
36 ; P10-BE-NEXT:    xxspltiw 0, 218434821
37 ; P10-BE-NEXT:    li 4, 3333
38 ; P10-BE-NEXT:    sth 4, 16(3)
39 ; P10-BE-NEXT:    stxv 0, 0(3)
40 ; P10-BE-NEXT:    blr
42 ; P8-LE-LABEL: foo1:
43 ; P8-LE:       # %bb.0: # %entry
44 ; P8-LE-NEXT:    addis 4, 2, .LCPI0_0@toc@ha
45 ; P8-LE-NEXT:    addi 4, 4, .LCPI0_0@toc@l
46 ; P8-LE-NEXT:    lxvd2x 0, 0, 4
47 ; P8-LE-NEXT:    li 4, 3333
48 ; P8-LE-NEXT:    stxvd2x 0, 0, 3
49 ; P8-LE-NEXT:    sth 4, 16(3)
50 ; P8-LE-NEXT:    blr
52 ; P9-LE-LABEL: foo1:
53 ; P9-LE:       # %bb.0: # %entry
54 ; P9-LE-NEXT:    addis 4, 2, .LCPI0_0@toc@ha
55 ; P9-LE-NEXT:    addi 4, 4, .LCPI0_0@toc@l
56 ; P9-LE-NEXT:    lxv 0, 0(4)
57 ; P9-LE-NEXT:    li 4, 3333
58 ; P9-LE-NEXT:    sth 4, 16(3)
59 ; P9-LE-NEXT:    stxv 0, 0(3)
60 ; P9-LE-NEXT:    blr
62 ; P10-LE-LABEL: foo1:
63 ; P10-LE:       # %bb.0: # %entry
64 ; P10-LE-NEXT:    xxspltiw 0, 218434821
65 ; P10-LE-NEXT:    li 4, 3333
66 ; P10-LE-NEXT:    sth 4, 16(3)
67 ; P10-LE-NEXT:    stxv 0, 0(3)
68 ; P10-LE-NEXT:    blr
69 entry:
70   store <8 x i16> <i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333>, ptr %a, align 2
71   %arrayidx8 = getelementptr inbounds i16, ptr %a, i64 8
72   store i16 3333, ptr %arrayidx8, align 2
73   ret void
76 define dso_local void @foo2(ptr nocapture noundef writeonly %a) local_unnamed_addr {
77 ; P8-BE-LABEL: foo2:
78 ; P8-BE:       # %bb.0: # %entry
79 ; P8-BE-NEXT:    ld 4, L..C1(2) # %const.0
80 ; P8-BE-NEXT:    lxvw4x 0, 0, 4
81 ; P8-BE-NEXT:    lis 4, 3333
82 ; P8-BE-NEXT:    ori 4, 4, 3333
83 ; P8-BE-NEXT:    stw 4, 16(3)
84 ; P8-BE-NEXT:    stxvw4x 0, 0, 3
85 ; P8-BE-NEXT:    blr
87 ; P9-BE-LABEL: foo2:
88 ; P9-BE:       # %bb.0: # %entry
89 ; P9-BE-NEXT:    ld 4, L..C1(2) # %const.0
90 ; P9-BE-NEXT:    lxv 0, 0(4)
91 ; P9-BE-NEXT:    lis 4, 3333
92 ; P9-BE-NEXT:    ori 4, 4, 3333
93 ; P9-BE-NEXT:    stw 4, 16(3)
94 ; P9-BE-NEXT:    stxv 0, 0(3)
95 ; P9-BE-NEXT:    blr
97 ; P10-BE-LABEL: foo2:
98 ; P10-BE:       # %bb.0: # %entry
99 ; P10-BE-NEXT:    xxspltiw 0, 218434821
100 ; P10-BE-NEXT:    pli 4, 218434821
101 ; P10-BE-NEXT:    stw 4, 16(3)
102 ; P10-BE-NEXT:    stxv 0, 0(3)
103 ; P10-BE-NEXT:    blr
105 ; P8-LE-LABEL: foo2:
106 ; P8-LE:       # %bb.0: # %entry
107 ; P8-LE-NEXT:    addis 4, 2, .LCPI1_0@toc@ha
108 ; P8-LE-NEXT:    addi 4, 4, .LCPI1_0@toc@l
109 ; P8-LE-NEXT:    lxvd2x 0, 0, 4
110 ; P8-LE-NEXT:    lis 4, 3333
111 ; P8-LE-NEXT:    ori 4, 4, 3333
112 ; P8-LE-NEXT:    stxvd2x 0, 0, 3
113 ; P8-LE-NEXT:    stw 4, 16(3)
114 ; P8-LE-NEXT:    blr
116 ; P9-LE-LABEL: foo2:
117 ; P9-LE:       # %bb.0: # %entry
118 ; P9-LE-NEXT:    addis 4, 2, .LCPI1_0@toc@ha
119 ; P9-LE-NEXT:    addi 4, 4, .LCPI1_0@toc@l
120 ; P9-LE-NEXT:    lxv 0, 0(4)
121 ; P9-LE-NEXT:    lis 4, 3333
122 ; P9-LE-NEXT:    ori 4, 4, 3333
123 ; P9-LE-NEXT:    stw 4, 16(3)
124 ; P9-LE-NEXT:    stxv 0, 0(3)
125 ; P9-LE-NEXT:    blr
127 ; P10-LE-LABEL: foo2:
128 ; P10-LE:       # %bb.0: # %entry
129 ; P10-LE-NEXT:    xxspltiw 0, 218434821
130 ; P10-LE-NEXT:    pli 4, 218434821
131 ; P10-LE-NEXT:    stw 4, 16(3)
132 ; P10-LE-NEXT:    stxv 0, 0(3)
133 ; P10-LE-NEXT:    blr
134 entry:
135   store <8 x i16> <i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333>, ptr %a, align 2
136   %arrayidx8 = getelementptr inbounds i16, ptr %a, i64 8
137   store i16 3333, ptr %arrayidx8, align 2
138   %arrayidx9 = getelementptr inbounds i16, ptr %a, i64 9
139   store i16 3333, ptr %arrayidx9, align 2
140   ret void
143 define dso_local void @foo3(ptr nocapture noundef writeonly %a) local_unnamed_addr {
144 ; P8-BE-LABEL: foo3:
145 ; P8-BE:       # %bb.0: # %entry
146 ; P8-BE-NEXT:    ld 4, L..C2(2) # %const.0
147 ; P8-BE-NEXT:    lxvw4x 0, 0, 4
148 ; P8-BE-NEXT:    lis 4, 3333
149 ; P8-BE-NEXT:    ori 4, 4, 3333
150 ; P8-BE-NEXT:    stw 4, 16(3)
151 ; P8-BE-NEXT:    li 4, 3333
152 ; P8-BE-NEXT:    stxvw4x 0, 0, 3
153 ; P8-BE-NEXT:    sth 4, 20(3)
154 ; P8-BE-NEXT:    blr
156 ; P9-BE-LABEL: foo3:
157 ; P9-BE:       # %bb.0: # %entry
158 ; P9-BE-NEXT:    ld 4, L..C2(2) # %const.0
159 ; P9-BE-NEXT:    lxv 0, 0(4)
160 ; P9-BE-NEXT:    lis 4, 3333
161 ; P9-BE-NEXT:    ori 4, 4, 3333
162 ; P9-BE-NEXT:    stw 4, 16(3)
163 ; P9-BE-NEXT:    li 4, 3333
164 ; P9-BE-NEXT:    stxv 0, 0(3)
165 ; P9-BE-NEXT:    sth 4, 20(3)
166 ; P9-BE-NEXT:    blr
168 ; P10-BE-LABEL: foo3:
169 ; P10-BE:       # %bb.0: # %entry
170 ; P10-BE-NEXT:    pli 4, 218434821
171 ; P10-BE-NEXT:    xxspltiw 0, 218434821
172 ; P10-BE-NEXT:    stw 4, 16(3)
173 ; P10-BE-NEXT:    li 4, 3333
174 ; P10-BE-NEXT:    stxv 0, 0(3)
175 ; P10-BE-NEXT:    sth 4, 20(3)
176 ; P10-BE-NEXT:    blr
178 ; P8-LE-LABEL: foo3:
179 ; P8-LE:       # %bb.0: # %entry
180 ; P8-LE-NEXT:    addis 4, 2, .LCPI2_0@toc@ha
181 ; P8-LE-NEXT:    addi 4, 4, .LCPI2_0@toc@l
182 ; P8-LE-NEXT:    lxvd2x 0, 0, 4
183 ; P8-LE-NEXT:    lis 4, 3333
184 ; P8-LE-NEXT:    ori 4, 4, 3333
185 ; P8-LE-NEXT:    stxvd2x 0, 0, 3
186 ; P8-LE-NEXT:    stw 4, 16(3)
187 ; P8-LE-NEXT:    li 4, 3333
188 ; P8-LE-NEXT:    sth 4, 20(3)
189 ; P8-LE-NEXT:    blr
191 ; P9-LE-LABEL: foo3:
192 ; P9-LE:       # %bb.0: # %entry
193 ; P9-LE-NEXT:    addis 4, 2, .LCPI2_0@toc@ha
194 ; P9-LE-NEXT:    addi 4, 4, .LCPI2_0@toc@l
195 ; P9-LE-NEXT:    lxv 0, 0(4)
196 ; P9-LE-NEXT:    lis 4, 3333
197 ; P9-LE-NEXT:    ori 4, 4, 3333
198 ; P9-LE-NEXT:    stw 4, 16(3)
199 ; P9-LE-NEXT:    li 4, 3333
200 ; P9-LE-NEXT:    stxv 0, 0(3)
201 ; P9-LE-NEXT:    sth 4, 20(3)
202 ; P9-LE-NEXT:    blr
204 ; P10-LE-LABEL: foo3:
205 ; P10-LE:       # %bb.0: # %entry
206 ; P10-LE-NEXT:    pli 4, 218434821
207 ; P10-LE-NEXT:    xxspltiw 0, 218434821
208 ; P10-LE-NEXT:    stw 4, 16(3)
209 ; P10-LE-NEXT:    li 4, 3333
210 ; P10-LE-NEXT:    stxv 0, 0(3)
211 ; P10-LE-NEXT:    sth 4, 20(3)
212 ; P10-LE-NEXT:    blr
213 entry:
214   store <8 x i16> <i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333>, ptr %a, align 2
215   %arrayidx8 = getelementptr inbounds i16, ptr %a, i64 8
216   store i16 3333, ptr %arrayidx8, align 2
217   %arrayidx9 = getelementptr inbounds i16, ptr %a, i64 9
218   store i16 3333, ptr %arrayidx9, align 2
219   %arrayidx10 = getelementptr inbounds i16, ptr %a, i64 10
220   store i16 3333, ptr %arrayidx10, align 2
221   ret void
224 define dso_local void @foo4(ptr nocapture noundef writeonly %a) local_unnamed_addr {
225 ; P8-BE-LABEL: foo4:
226 ; P8-BE:       # %bb.0: # %entry
227 ; P8-BE-NEXT:    ld 4, L..C3(2) # %const.0
228 ; P8-BE-NEXT:    lxvw4x 0, 0, 4
229 ; P8-BE-NEXT:    lis 4, 3333
230 ; P8-BE-NEXT:    ori 4, 4, 3333
231 ; P8-BE-NEXT:    rldimi 4, 4, 32, 0
232 ; P8-BE-NEXT:    stxvw4x 0, 0, 3
233 ; P8-BE-NEXT:    std 4, 16(3)
234 ; P8-BE-NEXT:    blr
236 ; P9-BE-LABEL: foo4:
237 ; P9-BE:       # %bb.0: # %entry
238 ; P9-BE-NEXT:    ld 4, L..C3(2) # %const.0
239 ; P9-BE-NEXT:    lxv 0, 0(4)
240 ; P9-BE-NEXT:    lis 4, 3333
241 ; P9-BE-NEXT:    ori 4, 4, 3333
242 ; P9-BE-NEXT:    rldimi 4, 4, 32, 0
243 ; P9-BE-NEXT:    stxv 0, 0(3)
244 ; P9-BE-NEXT:    std 4, 16(3)
245 ; P9-BE-NEXT:    blr
247 ; P10-BE-LABEL: foo4:
248 ; P10-BE:       # %bb.0: # %entry
249 ; P10-BE-NEXT:    pli 4, 218434821
250 ; P10-BE-NEXT:    xxspltiw 0, 218434821
251 ; P10-BE-NEXT:    rldimi 4, 4, 32, 0
252 ; P10-BE-NEXT:    stxv 0, 0(3)
253 ; P10-BE-NEXT:    std 4, 16(3)
254 ; P10-BE-NEXT:    blr
256 ; P8-LE-LABEL: foo4:
257 ; P8-LE:       # %bb.0: # %entry
258 ; P8-LE-NEXT:    addis 4, 2, .LCPI3_0@toc@ha
259 ; P8-LE-NEXT:    addi 4, 4, .LCPI3_0@toc@l
260 ; P8-LE-NEXT:    lxvd2x 0, 0, 4
261 ; P8-LE-NEXT:    lis 4, 3333
262 ; P8-LE-NEXT:    ori 4, 4, 3333
263 ; P8-LE-NEXT:    rldimi 4, 4, 32, 0
264 ; P8-LE-NEXT:    stxvd2x 0, 0, 3
265 ; P8-LE-NEXT:    std 4, 16(3)
266 ; P8-LE-NEXT:    blr
268 ; P9-LE-LABEL: foo4:
269 ; P9-LE:       # %bb.0: # %entry
270 ; P9-LE-NEXT:    addis 4, 2, .LCPI3_0@toc@ha
271 ; P9-LE-NEXT:    addi 4, 4, .LCPI3_0@toc@l
272 ; P9-LE-NEXT:    lxv 0, 0(4)
273 ; P9-LE-NEXT:    lis 4, 3333
274 ; P9-LE-NEXT:    ori 4, 4, 3333
275 ; P9-LE-NEXT:    rldimi 4, 4, 32, 0
276 ; P9-LE-NEXT:    stxv 0, 0(3)
277 ; P9-LE-NEXT:    std 4, 16(3)
278 ; P9-LE-NEXT:    blr
280 ; P10-LE-LABEL: foo4:
281 ; P10-LE:       # %bb.0: # %entry
282 ; P10-LE-NEXT:    pli 4, 218434821
283 ; P10-LE-NEXT:    xxspltiw 0, 218434821
284 ; P10-LE-NEXT:    rldimi 4, 4, 32, 0
285 ; P10-LE-NEXT:    stxv 0, 0(3)
286 ; P10-LE-NEXT:    std 4, 16(3)
287 ; P10-LE-NEXT:    blr
288 entry:
289   store <8 x i16> <i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333, i16 3333>, ptr %a, align 2
290   %arrayidx8 = getelementptr inbounds i16, ptr %a, i64 8
291   store i16 3333, ptr %arrayidx8, align 2
292   %arrayidx9 = getelementptr inbounds i16, ptr %a, i64 9
293   store i16 3333, ptr %arrayidx9, align 2
294   %arrayidx10 = getelementptr inbounds i16, ptr %a, i64 10
295   store i16 3333, ptr %arrayidx10, align 2
296   %arrayidx11 = getelementptr inbounds i16, ptr %a, i64 11
297   store i16 3333, ptr %arrayidx11, align 2
298   ret void
301 define dso_local void @foo5(ptr nocapture noundef writeonly %a) local_unnamed_addr {
302 ; P8-BE-LABEL: foo5:
303 ; P8-BE:       # %bb.0: # %entry
304 ; P8-BE-NEXT:    ld 4, L..C4(2) # %const.0
305 ; P8-BE-NEXT:    lxvw4x 0, 0, 4
306 ; P8-BE-NEXT:    lis 4, 5
307 ; P8-BE-NEXT:    ori 4, 4, 5653
308 ; P8-BE-NEXT:    stw 4, 16(3)
309 ; P8-BE-NEXT:    stxvw4x 0, 0, 3
310 ; P8-BE-NEXT:    blr
312 ; P9-BE-LABEL: foo5:
313 ; P9-BE:       # %bb.0: # %entry
314 ; P9-BE-NEXT:    ld 4, L..C4(2) # %const.0
315 ; P9-BE-NEXT:    lxv 0, 0(4)
316 ; P9-BE-NEXT:    lis 4, 5
317 ; P9-BE-NEXT:    ori 4, 4, 5653
318 ; P9-BE-NEXT:    stw 4, 16(3)
319 ; P9-BE-NEXT:    stxv 0, 0(3)
320 ; P9-BE-NEXT:    blr
322 ; P10-BE-LABEL: foo5:
323 ; P10-BE:       # %bb.0: # %entry
324 ; P10-BE-NEXT:    xxspltiw 0, 333333
325 ; P10-BE-NEXT:    pli 4, 333333
326 ; P10-BE-NEXT:    stw 4, 16(3)
327 ; P10-BE-NEXT:    stxv 0, 0(3)
328 ; P10-BE-NEXT:    blr
330 ; P8-LE-LABEL: foo5:
331 ; P8-LE:       # %bb.0: # %entry
332 ; P8-LE-NEXT:    addis 4, 2, .LCPI4_0@toc@ha
333 ; P8-LE-NEXT:    addi 4, 4, .LCPI4_0@toc@l
334 ; P8-LE-NEXT:    lxvd2x 0, 0, 4
335 ; P8-LE-NEXT:    lis 4, 5
336 ; P8-LE-NEXT:    ori 4, 4, 5653
337 ; P8-LE-NEXT:    stxvd2x 0, 0, 3
338 ; P8-LE-NEXT:    stw 4, 16(3)
339 ; P8-LE-NEXT:    blr
341 ; P9-LE-LABEL: foo5:
342 ; P9-LE:       # %bb.0: # %entry
343 ; P9-LE-NEXT:    addis 4, 2, .LCPI4_0@toc@ha
344 ; P9-LE-NEXT:    addi 4, 4, .LCPI4_0@toc@l
345 ; P9-LE-NEXT:    lxv 0, 0(4)
346 ; P9-LE-NEXT:    lis 4, 5
347 ; P9-LE-NEXT:    ori 4, 4, 5653
348 ; P9-LE-NEXT:    stw 4, 16(3)
349 ; P9-LE-NEXT:    stxv 0, 0(3)
350 ; P9-LE-NEXT:    blr
352 ; P10-LE-LABEL: foo5:
353 ; P10-LE:       # %bb.0: # %entry
354 ; P10-LE-NEXT:    xxspltiw 0, 333333
355 ; P10-LE-NEXT:    pli 4, 333333
356 ; P10-LE-NEXT:    stw 4, 16(3)
357 ; P10-LE-NEXT:    stxv 0, 0(3)
358 ; P10-LE-NEXT:    blr
359 entry:
360   store <4 x i32> <i32 333333, i32 333333, i32 333333, i32 333333>, ptr %a, align 4
361   %arrayidx4 = getelementptr inbounds i32, ptr %a, i64 4
362   store i32 333333, ptr %arrayidx4, align 4
363   ret void
366 define dso_local void @foo6(ptr nocapture noundef writeonly %a) local_unnamed_addr {
367 ; P8-BE-LABEL: foo6:
368 ; P8-BE:       # %bb.0: # %entry
369 ; P8-BE-NEXT:    ld 4, L..C5(2) # %const.0
370 ; P8-BE-NEXT:    lxvw4x 0, 0, 4
371 ; P8-BE-NEXT:    lis 4, 5
372 ; P8-BE-NEXT:    ori 4, 4, 5653
373 ; P8-BE-NEXT:    rldimi 4, 4, 32, 0
374 ; P8-BE-NEXT:    stxvw4x 0, 0, 3
375 ; P8-BE-NEXT:    std 4, 16(3)
376 ; P8-BE-NEXT:    blr
378 ; P9-BE-LABEL: foo6:
379 ; P9-BE:       # %bb.0: # %entry
380 ; P9-BE-NEXT:    ld 4, L..C5(2) # %const.0
381 ; P9-BE-NEXT:    lxv 0, 0(4)
382 ; P9-BE-NEXT:    lis 4, 5
383 ; P9-BE-NEXT:    ori 4, 4, 5653
384 ; P9-BE-NEXT:    rldimi 4, 4, 32, 0
385 ; P9-BE-NEXT:    stxv 0, 0(3)
386 ; P9-BE-NEXT:    std 4, 16(3)
387 ; P9-BE-NEXT:    blr
389 ; P10-BE-LABEL: foo6:
390 ; P10-BE:       # %bb.0: # %entry
391 ; P10-BE-NEXT:    pli 4, 333333
392 ; P10-BE-NEXT:    xxspltiw 0, 333333
393 ; P10-BE-NEXT:    rldimi 4, 4, 32, 0
394 ; P10-BE-NEXT:    stxv 0, 0(3)
395 ; P10-BE-NEXT:    std 4, 16(3)
396 ; P10-BE-NEXT:    blr
398 ; P8-LE-LABEL: foo6:
399 ; P8-LE:       # %bb.0: # %entry
400 ; P8-LE-NEXT:    addis 4, 2, .LCPI5_0@toc@ha
401 ; P8-LE-NEXT:    addi 4, 4, .LCPI5_0@toc@l
402 ; P8-LE-NEXT:    lxvd2x 0, 0, 4
403 ; P8-LE-NEXT:    lis 4, 5
404 ; P8-LE-NEXT:    ori 4, 4, 5653
405 ; P8-LE-NEXT:    rldimi 4, 4, 32, 0
406 ; P8-LE-NEXT:    stxvd2x 0, 0, 3
407 ; P8-LE-NEXT:    std 4, 16(3)
408 ; P8-LE-NEXT:    blr
410 ; P9-LE-LABEL: foo6:
411 ; P9-LE:       # %bb.0: # %entry
412 ; P9-LE-NEXT:    addis 4, 2, .LCPI5_0@toc@ha
413 ; P9-LE-NEXT:    addi 4, 4, .LCPI5_0@toc@l
414 ; P9-LE-NEXT:    lxv 0, 0(4)
415 ; P9-LE-NEXT:    lis 4, 5
416 ; P9-LE-NEXT:    ori 4, 4, 5653
417 ; P9-LE-NEXT:    rldimi 4, 4, 32, 0
418 ; P9-LE-NEXT:    stxv 0, 0(3)
419 ; P9-LE-NEXT:    std 4, 16(3)
420 ; P9-LE-NEXT:    blr
422 ; P10-LE-LABEL: foo6:
423 ; P10-LE:       # %bb.0: # %entry
424 ; P10-LE-NEXT:    pli 4, 333333
425 ; P10-LE-NEXT:    xxspltiw 0, 333333
426 ; P10-LE-NEXT:    rldimi 4, 4, 32, 0
427 ; P10-LE-NEXT:    stxv 0, 0(3)
428 ; P10-LE-NEXT:    std 4, 16(3)
429 ; P10-LE-NEXT:    blr
430 entry:
431   store <4 x i32> <i32 333333, i32 333333, i32 333333, i32 333333>, ptr %a, align 4
432   %arrayidx4 = getelementptr inbounds i32, ptr %a, i64 4
433   store i32 333333, ptr %arrayidx4, align 4
434   %arrayidx5 = getelementptr inbounds i32, ptr %a, i64 5
435   store i32 333333, ptr %arrayidx5, align 4
436   ret void
439 define dso_local void @foo7(ptr nocapture noundef writeonly %a) local_unnamed_addr {
440 ; P8-BE-LABEL: foo7:
441 ; P8-BE:       # %bb.0: # %entry
442 ; P8-BE-NEXT:    ld 4, L..C6(2) # %const.0
443 ; P8-BE-NEXT:    lxvd2x 0, 0, 4
444 ; P8-BE-NEXT:    lis 4, 508
445 ; P8-BE-NEXT:    ori 4, 4, 41045
446 ; P8-BE-NEXT:    std 4, 16(3)
447 ; P8-BE-NEXT:    stxvd2x 0, 0, 3
448 ; P8-BE-NEXT:    blr
450 ; P9-BE-LABEL: foo7:
451 ; P9-BE:       # %bb.0: # %entry
452 ; P9-BE-NEXT:    ld 4, L..C6(2) # %const.0
453 ; P9-BE-NEXT:    lxv 0, 0(4)
454 ; P9-BE-NEXT:    lis 4, 508
455 ; P9-BE-NEXT:    ori 4, 4, 41045
456 ; P9-BE-NEXT:    std 4, 16(3)
457 ; P9-BE-NEXT:    stxv 0, 0(3)
458 ; P9-BE-NEXT:    blr
460 ; P10-BE-LABEL: foo7:
461 ; P10-BE:       # %bb.0: # %entry
462 ; P10-BE-NEXT:    xxlxor 0, 0, 0
463 ; P10-BE-NEXT:    pli 4, 33333333
464 ; P10-BE-NEXT:    xxsplti32dx 0, 1, 33333333
465 ; P10-BE-NEXT:    std 4, 16(3)
466 ; P10-BE-NEXT:    stxv 0, 0(3)
467 ; P10-BE-NEXT:    blr
469 ; P8-LE-LABEL: foo7:
470 ; P8-LE:       # %bb.0: # %entry
471 ; P8-LE-NEXT:    addis 4, 2, .LCPI6_0@toc@ha
472 ; P8-LE-NEXT:    addi 4, 4, .LCPI6_0@toc@l
473 ; P8-LE-NEXT:    lxvd2x 0, 0, 4
474 ; P8-LE-NEXT:    lis 4, 508
475 ; P8-LE-NEXT:    ori 4, 4, 41045
476 ; P8-LE-NEXT:    stxvd2x 0, 0, 3
477 ; P8-LE-NEXT:    std 4, 16(3)
478 ; P8-LE-NEXT:    blr
480 ; P9-LE-LABEL: foo7:
481 ; P9-LE:       # %bb.0: # %entry
482 ; P9-LE-NEXT:    addis 4, 2, .LCPI6_0@toc@ha
483 ; P9-LE-NEXT:    addi 4, 4, .LCPI6_0@toc@l
484 ; P9-LE-NEXT:    lxv 0, 0(4)
485 ; P9-LE-NEXT:    lis 4, 508
486 ; P9-LE-NEXT:    ori 4, 4, 41045
487 ; P9-LE-NEXT:    std 4, 16(3)
488 ; P9-LE-NEXT:    stxv 0, 0(3)
489 ; P9-LE-NEXT:    blr
491 ; P10-LE-LABEL: foo7:
492 ; P10-LE:       # %bb.0: # %entry
493 ; P10-LE-NEXT:    xxlxor 0, 0, 0
494 ; P10-LE-NEXT:    pli 4, 33333333
495 ; P10-LE-NEXT:    xxsplti32dx 0, 1, 33333333
496 ; P10-LE-NEXT:    std 4, 16(3)
497 ; P10-LE-NEXT:    stxv 0, 0(3)
498 ; P10-LE-NEXT:    blr
499 entry:
500   store <2 x i64> <i64 33333333, i64 33333333>, ptr %a, align 8
501   %arrayidx2 = getelementptr inbounds i64, ptr %a, i64 2
502   store i64 33333333, ptr %arrayidx2, align 8
503   ret void
506 define dso_local void @foo8(ptr nocapture noundef writeonly %a) local_unnamed_addr {
507 ; P8-BE-LABEL: foo8:
508 ; P8-BE:       # %bb.0: # %entry
509 ; P8-BE-NEXT:    ld 4, L..C7(2) # %const.0
510 ; P8-BE-NEXT:    lxvw4x 0, 0, 4
511 ; P8-BE-NEXT:    lis 4, 16469
512 ; P8-BE-NEXT:    ori 4, 4, 7864
513 ; P8-BE-NEXT:    stw 4, 16(3)
514 ; P8-BE-NEXT:    stxvw4x 0, 0, 3
515 ; P8-BE-NEXT:    blr
517 ; P9-BE-LABEL: foo8:
518 ; P9-BE:       # %bb.0: # %entry
519 ; P9-BE-NEXT:    ld 4, L..C7(2) # %const.0
520 ; P9-BE-NEXT:    lxv 0, 0(4)
521 ; P9-BE-NEXT:    lis 4, 16469
522 ; P9-BE-NEXT:    ori 4, 4, 7864
523 ; P9-BE-NEXT:    stw 4, 16(3)
524 ; P9-BE-NEXT:    stxv 0, 0(3)
525 ; P9-BE-NEXT:    blr
527 ; P10-BE-LABEL: foo8:
528 ; P10-BE:       # %bb.0: # %entry
529 ; P10-BE-NEXT:    xxspltiw 0, 1079320248
530 ; P10-BE-NEXT:    pli 4, 1079320248
531 ; P10-BE-NEXT:    stw 4, 16(3)
532 ; P10-BE-NEXT:    stxv 0, 0(3)
533 ; P10-BE-NEXT:    blr
535 ; P8-LE-LABEL: foo8:
536 ; P8-LE:       # %bb.0: # %entry
537 ; P8-LE-NEXT:    addis 4, 2, .LCPI7_0@toc@ha
538 ; P8-LE-NEXT:    addi 4, 4, .LCPI7_0@toc@l
539 ; P8-LE-NEXT:    lxvd2x 0, 0, 4
540 ; P8-LE-NEXT:    lis 4, 16469
541 ; P8-LE-NEXT:    ori 4, 4, 7864
542 ; P8-LE-NEXT:    stxvd2x 0, 0, 3
543 ; P8-LE-NEXT:    stw 4, 16(3)
544 ; P8-LE-NEXT:    blr
546 ; P9-LE-LABEL: foo8:
547 ; P9-LE:       # %bb.0: # %entry
548 ; P9-LE-NEXT:    addis 4, 2, .LCPI7_0@toc@ha
549 ; P9-LE-NEXT:    addi 4, 4, .LCPI7_0@toc@l
550 ; P9-LE-NEXT:    lxv 0, 0(4)
551 ; P9-LE-NEXT:    lis 4, 16469
552 ; P9-LE-NEXT:    ori 4, 4, 7864
553 ; P9-LE-NEXT:    stw 4, 16(3)
554 ; P9-LE-NEXT:    stxv 0, 0(3)
555 ; P9-LE-NEXT:    blr
557 ; P10-LE-LABEL: foo8:
558 ; P10-LE:       # %bb.0: # %entry
559 ; P10-LE-NEXT:    xxspltiw 0, 1079320248
560 ; P10-LE-NEXT:    pli 4, 1079320248
561 ; P10-LE-NEXT:    stw 4, 16(3)
562 ; P10-LE-NEXT:    stxv 0, 0(3)
563 ; P10-LE-NEXT:    blr
564 entry:
565   store <4 x float> <float 0x400AA3D700000000, float 0x400AA3D700000000, float 0x400AA3D700000000, float 0x400AA3D700000000>, ptr %a, align 4
566   %arrayidx4 = getelementptr inbounds float, ptr %a, i64 4
567   store float 0x400AA3D700000000, ptr %arrayidx4, align 4
568   ret void
571 define dso_local void @foo9(ptr nocapture noundef writeonly %a) local_unnamed_addr {
572 ; P8-BE-LABEL: foo9:
573 ; P8-BE:       # %bb.0: # %entry
574 ; P8-BE-NEXT:    ld 4, L..C8(2) # %const.0
575 ; P8-BE-NEXT:    lxvd2x 0, 0, 4
576 ; P8-BE-NEXT:    lis 4, 16394
577 ; P8-BE-NEXT:    ori 4, 4, 41943
578 ; P8-BE-NEXT:    rldic 4, 4, 32, 1
579 ; P8-BE-NEXT:    stxvd2x 0, 0, 3
580 ; P8-BE-NEXT:    oris 4, 4, 2621
581 ; P8-BE-NEXT:    ori 4, 4, 28836
582 ; P8-BE-NEXT:    std 4, 16(3)
583 ; P8-BE-NEXT:    blr
585 ; P9-BE-LABEL: foo9:
586 ; P9-BE:       # %bb.0: # %entry
587 ; P9-BE-NEXT:    ld 4, L..C8(2) # %const.0
588 ; P9-BE-NEXT:    lxv 0, 0(4)
589 ; P9-BE-NEXT:    lis 4, 16394
590 ; P9-BE-NEXT:    ori 4, 4, 41943
591 ; P9-BE-NEXT:    rldic 4, 4, 32, 1
592 ; P9-BE-NEXT:    stxv 0, 0(3)
593 ; P9-BE-NEXT:    oris 4, 4, 2621
594 ; P9-BE-NEXT:    ori 4, 4, 28836
595 ; P9-BE-NEXT:    std 4, 16(3)
596 ; P9-BE-NEXT:    blr
598 ; P10-BE-LABEL: foo9:
599 ; P10-BE:       # %bb.0: # %entry
600 ; P10-BE-NEXT:    xxsplti32dx 0, 0, 1074439127
601 ; P10-BE-NEXT:    pli 4, 1074439127
602 ; P10-BE-NEXT:    pli 5, 171798692
603 ; P10-BE-NEXT:    rldimi 5, 4, 32, 0
604 ; P10-BE-NEXT:    xxsplti32dx 0, 1, 171798692
605 ; P10-BE-NEXT:    std 5, 16(3)
606 ; P10-BE-NEXT:    stxv 0, 0(3)
607 ; P10-BE-NEXT:    blr
609 ; P8-LE-LABEL: foo9:
610 ; P8-LE:       # %bb.0: # %entry
611 ; P8-LE-NEXT:    addis 4, 2, .LCPI8_0@toc@ha
612 ; P8-LE-NEXT:    addi 4, 4, .LCPI8_0@toc@l
613 ; P8-LE-NEXT:    lxvd2x 0, 0, 4
614 ; P8-LE-NEXT:    lis 4, 16394
615 ; P8-LE-NEXT:    ori 4, 4, 41943
616 ; P8-LE-NEXT:    rldic 4, 4, 32, 1
617 ; P8-LE-NEXT:    stxvd2x 0, 0, 3
618 ; P8-LE-NEXT:    oris 4, 4, 2621
619 ; P8-LE-NEXT:    ori 4, 4, 28836
620 ; P8-LE-NEXT:    std 4, 16(3)
621 ; P8-LE-NEXT:    blr
623 ; P9-LE-LABEL: foo9:
624 ; P9-LE:       # %bb.0: # %entry
625 ; P9-LE-NEXT:    addis 4, 2, .LCPI8_0@toc@ha
626 ; P9-LE-NEXT:    addi 4, 4, .LCPI8_0@toc@l
627 ; P9-LE-NEXT:    lxv 0, 0(4)
628 ; P9-LE-NEXT:    lis 4, 16394
629 ; P9-LE-NEXT:    ori 4, 4, 41943
630 ; P9-LE-NEXT:    rldic 4, 4, 32, 1
631 ; P9-LE-NEXT:    stxv 0, 0(3)
632 ; P9-LE-NEXT:    oris 4, 4, 2621
633 ; P9-LE-NEXT:    ori 4, 4, 28836
634 ; P9-LE-NEXT:    std 4, 16(3)
635 ; P9-LE-NEXT:    blr
637 ; P10-LE-LABEL: foo9:
638 ; P10-LE:       # %bb.0: # %entry
639 ; P10-LE-NEXT:    xxsplti32dx 0, 0, 1074439127
640 ; P10-LE-NEXT:    pli 4, 1074439127
641 ; P10-LE-NEXT:    pli 5, 171798692
642 ; P10-LE-NEXT:    rldimi 5, 4, 32, 0
643 ; P10-LE-NEXT:    xxsplti32dx 0, 1, 171798692
644 ; P10-LE-NEXT:    std 5, 16(3)
645 ; P10-LE-NEXT:    stxv 0, 0(3)
646 ; P10-LE-NEXT:    blr
647 entry:
648   store <2 x double> <double 3.330000e+00, double 3.330000e+00>, ptr %a, align 8
649   %arrayidx2 = getelementptr inbounds double, ptr %a, i64 2
650   store double 3.330000e+00, ptr %arrayidx2, align 8
651   ret void
654 define dso_local void @foo10(ptr nocapture noundef writeonly %a) local_unnamed_addr {
655 ; P8-BE-LABEL: foo10:
656 ; P8-BE:       # %bb.0: # %entry
657 ; P8-BE-NEXT:    ld 4, L..C9(2) # %const.0
658 ; P8-BE-NEXT:    lxvw4x 0, 0, 4
659 ; P8-BE-NEXT:    lis 4, 16469
660 ; P8-BE-NEXT:    ori 4, 4, 7864
661 ; P8-BE-NEXT:    rldimi 4, 4, 32, 0
662 ; P8-BE-NEXT:    stxvw4x 0, 0, 3
663 ; P8-BE-NEXT:    std 4, 16(3)
664 ; P8-BE-NEXT:    blr
666 ; P9-BE-LABEL: foo10:
667 ; P9-BE:       # %bb.0: # %entry
668 ; P9-BE-NEXT:    ld 4, L..C9(2) # %const.0
669 ; P9-BE-NEXT:    lxv 0, 0(4)
670 ; P9-BE-NEXT:    lis 4, 16469
671 ; P9-BE-NEXT:    ori 4, 4, 7864
672 ; P9-BE-NEXT:    rldimi 4, 4, 32, 0
673 ; P9-BE-NEXT:    stxv 0, 0(3)
674 ; P9-BE-NEXT:    std 4, 16(3)
675 ; P9-BE-NEXT:    blr
677 ; P10-BE-LABEL: foo10:
678 ; P10-BE:       # %bb.0: # %entry
679 ; P10-BE-NEXT:    pli 4, 1079320248
680 ; P10-BE-NEXT:    xxspltiw 0, 1079320248
681 ; P10-BE-NEXT:    rldimi 4, 4, 32, 0
682 ; P10-BE-NEXT:    stxv 0, 0(3)
683 ; P10-BE-NEXT:    std 4, 16(3)
684 ; P10-BE-NEXT:    blr
686 ; P8-LE-LABEL: foo10:
687 ; P8-LE:       # %bb.0: # %entry
688 ; P8-LE-NEXT:    addis 4, 2, .LCPI9_0@toc@ha
689 ; P8-LE-NEXT:    addi 4, 4, .LCPI9_0@toc@l
690 ; P8-LE-NEXT:    lxvd2x 0, 0, 4
691 ; P8-LE-NEXT:    lis 4, 16469
692 ; P8-LE-NEXT:    ori 4, 4, 7864
693 ; P8-LE-NEXT:    rldimi 4, 4, 32, 0
694 ; P8-LE-NEXT:    stxvd2x 0, 0, 3
695 ; P8-LE-NEXT:    std 4, 16(3)
696 ; P8-LE-NEXT:    blr
698 ; P9-LE-LABEL: foo10:
699 ; P9-LE:       # %bb.0: # %entry
700 ; P9-LE-NEXT:    addis 4, 2, .LCPI9_0@toc@ha
701 ; P9-LE-NEXT:    addi 4, 4, .LCPI9_0@toc@l
702 ; P9-LE-NEXT:    lxv 0, 0(4)
703 ; P9-LE-NEXT:    lis 4, 16469
704 ; P9-LE-NEXT:    ori 4, 4, 7864
705 ; P9-LE-NEXT:    rldimi 4, 4, 32, 0
706 ; P9-LE-NEXT:    stxv 0, 0(3)
707 ; P9-LE-NEXT:    std 4, 16(3)
708 ; P9-LE-NEXT:    blr
710 ; P10-LE-LABEL: foo10:
711 ; P10-LE:       # %bb.0: # %entry
712 ; P10-LE-NEXT:    pli 4, 1079320248
713 ; P10-LE-NEXT:    xxspltiw 0, 1079320248
714 ; P10-LE-NEXT:    rldimi 4, 4, 32, 0
715 ; P10-LE-NEXT:    stxv 0, 0(3)
716 ; P10-LE-NEXT:    std 4, 16(3)
717 ; P10-LE-NEXT:    blr
718 entry:
719   store <4 x float> <float 0x400AA3D700000000, float 0x400AA3D700000000, float 0x400AA3D700000000, float 0x400AA3D700000000>, ptr %a, align 4
720   %arrayidx4 = getelementptr inbounds float, ptr %a, i64 4
721   store float 0x400AA3D700000000, ptr %arrayidx4, align 4
722   %arrayidx5 = getelementptr inbounds float, ptr %a, i64 5
723   store float 0x400AA3D700000000, ptr %arrayidx5, align 4
724   ret void