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 {
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
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)
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)
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)
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)
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)
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
76 define dso_local void @foo2(ptr nocapture noundef writeonly %a) local_unnamed_addr {
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
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)
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)
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)
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)
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)
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
143 define dso_local void @foo3(ptr nocapture noundef writeonly %a) local_unnamed_addr {
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)
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)
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)
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)
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)
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)
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
224 define dso_local void @foo4(ptr nocapture noundef writeonly %a) local_unnamed_addr {
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)
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)
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)
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)
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)
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)
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
301 define dso_local void @foo5(ptr nocapture noundef writeonly %a) local_unnamed_addr {
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
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)
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)
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)
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)
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)
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
366 define dso_local void @foo6(ptr nocapture noundef writeonly %a) local_unnamed_addr {
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)
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)
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)
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)
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)
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)
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
439 define dso_local void @foo7(ptr nocapture noundef writeonly %a) local_unnamed_addr {
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
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)
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)
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)
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)
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)
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
506 define dso_local void @foo8(ptr nocapture noundef writeonly %a) local_unnamed_addr {
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
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)
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)
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)
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)
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)
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
571 define dso_local void @foo9(ptr nocapture noundef writeonly %a) local_unnamed_addr {
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)
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)
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)
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)
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)
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)
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
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)
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)
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)
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)
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)
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)
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