xref: /llvm-project/llvm/test/CodeGen/PowerPC/build-vector-from-load-and-zeros.ll (revision fc59f2cc0f191bb7a0706dfb65e3e46fef69f466)
100f99466SKai Luo; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2afd9582bSKai Luo; RUN: llc -verify-machineinstrs -mtriple=powerpc64-- -mcpu=pwr7 < %s | FileCheck --check-prefix=PWR7-BE %s
3afd9582bSKai Luo; RUN: llc -verify-machineinstrs -mtriple=powerpc64-- -mcpu=pwr8 < %s | FileCheck --check-prefix=PWR8-BE %s
4afd9582bSKai Luo; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-- -mcpu=pwr7 < %s | FileCheck --check-prefix=PWR7-LE %s
5afd9582bSKai Luo; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-- -mcpu=pwr8 < %s | FileCheck --check-prefix=PWR8-LE %s
600f99466SKai Luo
7afd9582bSKai Luodefine  <2 x i64> @build_v2i64_extload_0(ptr nocapture noundef readonly %p) {
8afd9582bSKai Luo; PWR7-BE-LABEL: build_v2i64_extload_0:
9afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
10afd9582bSKai Luo; PWR7-BE-NEXT:    lwz 3, 0(3)
11afd9582bSKai Luo; PWR7-BE-NEXT:    li 4, 0
12afd9582bSKai Luo; PWR7-BE-NEXT:    std 4, -8(1)
13afd9582bSKai Luo; PWR7-BE-NEXT:    std 3, -16(1)
14afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 1, -16
15afd9582bSKai Luo; PWR7-BE-NEXT:    lxvd2x 34, 0, 3
16afd9582bSKai Luo; PWR7-BE-NEXT:    blr
1700f99466SKai Luo;
18afd9582bSKai Luo; PWR8-BE-LABEL: build_v2i64_extload_0:
19afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
20afd9582bSKai Luo; PWR8-BE-NEXT:    lwz 3, 0(3)
21afd9582bSKai Luo; PWR8-BE-NEXT:    li 4, 0
22afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 0, 4
23afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 1, 3
24afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 34, 1, 0
25afd9582bSKai Luo; PWR8-BE-NEXT:    blr
26afd9582bSKai Luo;
27afd9582bSKai Luo; PWR7-LE-LABEL: build_v2i64_extload_0:
28afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
2926ba186bSRolandF77; PWR7-LE-NEXT:    lfiwzx 0, 0, 3
30*fc59f2ccSRolandF77; PWR7-LE-NEXT:    addis 3, 2, .LCPI0_0@toc@ha
31*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxlxor 36, 36, 36
32*fc59f2ccSRolandF77; PWR7-LE-NEXT:    addi 3, 3, .LCPI0_0@toc@l
33*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxspltw 34, 0, 1
34afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 3
35*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxswapd 35, 0
36*fc59f2ccSRolandF77; PWR7-LE-NEXT:    vperm 2, 4, 2, 3
37afd9582bSKai Luo; PWR7-LE-NEXT:    blr
38afd9582bSKai Luo;
39afd9582bSKai Luo; PWR8-LE-LABEL: build_v2i64_extload_0:
40afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
41afd9582bSKai Luo; PWR8-LE-NEXT:    lwz 3, 0(3)
42afd9582bSKai Luo; PWR8-LE-NEXT:    li 4, 0
43afd9582bSKai Luo; PWR8-LE-NEXT:    rldimi 3, 4, 32, 0
44afd9582bSKai Luo; PWR8-LE-NEXT:    rldimi 4, 4, 32, 0
45afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 0, 3
46afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 1, 4
47afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 34, 1, 0
48afd9582bSKai Luo; PWR8-LE-NEXT:    blr
4900f99466SKai Luoentry:
5000f99466SKai Luo  %0 = load i32, ptr %p, align 4
5100f99466SKai Luo  %conv = zext i32 %0 to i64
52afd9582bSKai Luo  %vecinit1 = insertelement <2 x i64> <i64 0, i64 0>, i64 %conv, i64 0
5300f99466SKai Luo  ret <2 x i64> %vecinit1
5400f99466SKai Luo}
5500f99466SKai Luo
56afd9582bSKai Luodefine  <2 x i64> @build_v2i64_extload_1(ptr nocapture noundef readonly %p) {
57afd9582bSKai Luo; PWR7-BE-LABEL: build_v2i64_extload_1:
58afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
59afd9582bSKai Luo; PWR7-BE-NEXT:    lwz 3, 0(3)
60afd9582bSKai Luo; PWR7-BE-NEXT:    li 4, 0
61afd9582bSKai Luo; PWR7-BE-NEXT:    std 4, -16(1)
62afd9582bSKai Luo; PWR7-BE-NEXT:    std 3, -8(1)
63afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 1, -16
64afd9582bSKai Luo; PWR7-BE-NEXT:    lxvd2x 34, 0, 3
65afd9582bSKai Luo; PWR7-BE-NEXT:    blr
6600f99466SKai Luo;
67afd9582bSKai Luo; PWR8-BE-LABEL: build_v2i64_extload_1:
68afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
69afd9582bSKai Luo; PWR8-BE-NEXT:    lwz 3, 0(3)
70afd9582bSKai Luo; PWR8-BE-NEXT:    li 4, 0
71afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 0, 4
72afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 1, 3
73afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 34, 0, 1
74afd9582bSKai Luo; PWR8-BE-NEXT:    blr
75afd9582bSKai Luo;
76afd9582bSKai Luo; PWR7-LE-LABEL: build_v2i64_extload_1:
77afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
78afd9582bSKai Luo; PWR7-LE-NEXT:    lwz 3, 0(3)
79afd9582bSKai Luo; PWR7-LE-NEXT:    li 4, 0
80afd9582bSKai Luo; PWR7-LE-NEXT:    std 4, -16(1)
81afd9582bSKai Luo; PWR7-LE-NEXT:    std 3, -8(1)
82afd9582bSKai Luo; PWR7-LE-NEXT:    addi 3, 1, -16
83afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 3
84afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 34, 0
85afd9582bSKai Luo; PWR7-LE-NEXT:    blr
86afd9582bSKai Luo;
87afd9582bSKai Luo; PWR8-LE-LABEL: build_v2i64_extload_1:
88afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
89afd9582bSKai Luo; PWR8-LE-NEXT:    lwz 3, 0(3)
90afd9582bSKai Luo; PWR8-LE-NEXT:    li 4, 0
91afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 0, 4
92afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 1, 3
93afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 34, 1, 0
94afd9582bSKai Luo; PWR8-LE-NEXT:    blr
95afd9582bSKai Luoentry:
96afd9582bSKai Luo  %0 = load i32, ptr %p, align 4
97afd9582bSKai Luo  %conv = zext i32 %0 to i64
98afd9582bSKai Luo  %vecinit1 = insertelement <2 x i64> <i64 0, i64 0>, i64 %conv, i64 1
99afd9582bSKai Luo  ret <2 x i64> %vecinit1
100afd9582bSKai Luo}
101afd9582bSKai Luo
102afd9582bSKai Luodefine <2 x double> @build_v2f64_extload_0(ptr nocapture noundef readonly %p) {
103afd9582bSKai Luo; PWR7-BE-LABEL: build_v2f64_extload_0:
104afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
105afd9582bSKai Luo; PWR7-BE-NEXT:    lfs 0, 0(3)
106afd9582bSKai Luo; PWR7-BE-NEXT:    xxlxor 1, 1, 1
107afd9582bSKai Luo; PWR7-BE-NEXT:    xxmrghd 34, 0, 1
108afd9582bSKai Luo; PWR7-BE-NEXT:    blr
109afd9582bSKai Luo;
110afd9582bSKai Luo; PWR8-BE-LABEL: build_v2f64_extload_0:
111afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
112afd9582bSKai Luo; PWR8-BE-NEXT:    lfs 0, 0(3)
113afd9582bSKai Luo; PWR8-BE-NEXT:    xxlxor 1, 1, 1
114afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 34, 0, 1
115afd9582bSKai Luo; PWR8-BE-NEXT:    blr
116afd9582bSKai Luo;
117afd9582bSKai Luo; PWR7-LE-LABEL: build_v2f64_extload_0:
118afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
119afd9582bSKai Luo; PWR7-LE-NEXT:    lfs 0, 0(3)
120afd9582bSKai Luo; PWR7-LE-NEXT:    xxlxor 1, 1, 1
121afd9582bSKai Luo; PWR7-LE-NEXT:    xxmrghd 34, 1, 0
122afd9582bSKai Luo; PWR7-LE-NEXT:    blr
123afd9582bSKai Luo;
124afd9582bSKai Luo; PWR8-LE-LABEL: build_v2f64_extload_0:
125afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
126afd9582bSKai Luo; PWR8-LE-NEXT:    lfs 0, 0(3)
127afd9582bSKai Luo; PWR8-LE-NEXT:    xxlxor 1, 1, 1
128afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 34, 1, 0
129afd9582bSKai Luo; PWR8-LE-NEXT:    blr
13000f99466SKai Luoentry:
13100f99466SKai Luo  %0 = load float, ptr %p, align 4
13200f99466SKai Luo  %conv = fpext float %0 to double
133afd9582bSKai Luo  %vecinit1 = insertelement <2 x double> <double 0.000000e+00, double 0.000000e+00>, double %conv, i64 0
13400f99466SKai Luo  ret <2 x double> %vecinit1
13500f99466SKai Luo}
136afd9582bSKai Luo
137afd9582bSKai Luodefine <2 x double> @build_v2f64_extload_1(ptr nocapture noundef readonly %p) {
138afd9582bSKai Luo; PWR7-BE-LABEL: build_v2f64_extload_1:
139afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
140afd9582bSKai Luo; PWR7-BE-NEXT:    lfs 0, 0(3)
141afd9582bSKai Luo; PWR7-BE-NEXT:    xxlxor 1, 1, 1
142afd9582bSKai Luo; PWR7-BE-NEXT:    xxmrghd 34, 1, 0
143afd9582bSKai Luo; PWR7-BE-NEXT:    blr
144afd9582bSKai Luo;
145afd9582bSKai Luo; PWR8-BE-LABEL: build_v2f64_extload_1:
146afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
147afd9582bSKai Luo; PWR8-BE-NEXT:    lfs 0, 0(3)
148afd9582bSKai Luo; PWR8-BE-NEXT:    xxlxor 1, 1, 1
149afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 34, 1, 0
150afd9582bSKai Luo; PWR8-BE-NEXT:    blr
151afd9582bSKai Luo;
152afd9582bSKai Luo; PWR7-LE-LABEL: build_v2f64_extload_1:
153afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
154afd9582bSKai Luo; PWR7-LE-NEXT:    lfs 0, 0(3)
155afd9582bSKai Luo; PWR7-LE-NEXT:    xxlxor 1, 1, 1
156afd9582bSKai Luo; PWR7-LE-NEXT:    xxmrghd 34, 0, 1
157afd9582bSKai Luo; PWR7-LE-NEXT:    blr
158afd9582bSKai Luo;
159afd9582bSKai Luo; PWR8-LE-LABEL: build_v2f64_extload_1:
160afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
161afd9582bSKai Luo; PWR8-LE-NEXT:    lfs 0, 0(3)
162afd9582bSKai Luo; PWR8-LE-NEXT:    xxlxor 1, 1, 1
163afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 34, 0, 1
164afd9582bSKai Luo; PWR8-LE-NEXT:    blr
165afd9582bSKai Luoentry:
166afd9582bSKai Luo  %0 = load float, ptr %p, align 4
167afd9582bSKai Luo  %conv = fpext float %0 to double
168afd9582bSKai Luo  %vecinit1 = insertelement <2 x double> <double 0.000000e+00, double 0.000000e+00>, double %conv, i64 1
169afd9582bSKai Luo  ret <2 x double> %vecinit1
170afd9582bSKai Luo}
171afd9582bSKai Luo
172afd9582bSKai Luodefine <2 x double> @build_v2f64_load_0(ptr nocapture noundef readonly %p) {
173afd9582bSKai Luo; PWR7-BE-LABEL: build_v2f64_load_0:
174afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
175afd9582bSKai Luo; PWR7-BE-NEXT:    lfd 0, 0(3)
176afd9582bSKai Luo; PWR7-BE-NEXT:    xxlxor 1, 1, 1
177afd9582bSKai Luo; PWR7-BE-NEXT:    xxmrghd 34, 0, 1
178afd9582bSKai Luo; PWR7-BE-NEXT:    blr
179afd9582bSKai Luo;
180afd9582bSKai Luo; PWR8-BE-LABEL: build_v2f64_load_0:
181afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
182afd9582bSKai Luo; PWR8-BE-NEXT:    lfd 0, 0(3)
183afd9582bSKai Luo; PWR8-BE-NEXT:    xxlxor 1, 1, 1
184afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 34, 0, 1
185afd9582bSKai Luo; PWR8-BE-NEXT:    blr
186afd9582bSKai Luo;
187afd9582bSKai Luo; PWR7-LE-LABEL: build_v2f64_load_0:
188afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
189afd9582bSKai Luo; PWR7-LE-NEXT:    lfd 0, 0(3)
190afd9582bSKai Luo; PWR7-LE-NEXT:    xxlxor 1, 1, 1
191afd9582bSKai Luo; PWR7-LE-NEXT:    xxmrghd 34, 1, 0
192afd9582bSKai Luo; PWR7-LE-NEXT:    blr
193afd9582bSKai Luo;
194afd9582bSKai Luo; PWR8-LE-LABEL: build_v2f64_load_0:
195afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
196afd9582bSKai Luo; PWR8-LE-NEXT:    lfd 0, 0(3)
197afd9582bSKai Luo; PWR8-LE-NEXT:    xxlxor 1, 1, 1
198afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 34, 1, 0
199afd9582bSKai Luo; PWR8-LE-NEXT:    blr
200afd9582bSKai Luoentry:
201afd9582bSKai Luo  %0 = load double, ptr %p, align 8
202afd9582bSKai Luo  %vecinit1 = insertelement <2 x double> <double 0.000000e+00, double 0.000000e+00>, double %0, i64 0
203afd9582bSKai Luo  ret <2 x double> %vecinit1
204afd9582bSKai Luo}
205afd9582bSKai Luo
206afd9582bSKai Luodefine <2 x double> @build_v2f64_load_1(ptr nocapture noundef readonly %p) {
207afd9582bSKai Luo; PWR7-BE-LABEL: build_v2f64_load_1:
208afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
209afd9582bSKai Luo; PWR7-BE-NEXT:    lfd 0, 0(3)
210afd9582bSKai Luo; PWR7-BE-NEXT:    xxlxor 1, 1, 1
211afd9582bSKai Luo; PWR7-BE-NEXT:    xxmrghd 34, 1, 0
212afd9582bSKai Luo; PWR7-BE-NEXT:    blr
213afd9582bSKai Luo;
214afd9582bSKai Luo; PWR8-BE-LABEL: build_v2f64_load_1:
215afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
216afd9582bSKai Luo; PWR8-BE-NEXT:    lfd 0, 0(3)
217afd9582bSKai Luo; PWR8-BE-NEXT:    xxlxor 1, 1, 1
218afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 34, 1, 0
219afd9582bSKai Luo; PWR8-BE-NEXT:    blr
220afd9582bSKai Luo;
221afd9582bSKai Luo; PWR7-LE-LABEL: build_v2f64_load_1:
222afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
223afd9582bSKai Luo; PWR7-LE-NEXT:    lfd 0, 0(3)
224afd9582bSKai Luo; PWR7-LE-NEXT:    xxlxor 1, 1, 1
225afd9582bSKai Luo; PWR7-LE-NEXT:    xxmrghd 34, 0, 1
226afd9582bSKai Luo; PWR7-LE-NEXT:    blr
227afd9582bSKai Luo;
228afd9582bSKai Luo; PWR8-LE-LABEL: build_v2f64_load_1:
229afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
230afd9582bSKai Luo; PWR8-LE-NEXT:    lfd 0, 0(3)
231afd9582bSKai Luo; PWR8-LE-NEXT:    xxlxor 1, 1, 1
232afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 34, 0, 1
233afd9582bSKai Luo; PWR8-LE-NEXT:    blr
234afd9582bSKai Luoentry:
235afd9582bSKai Luo  %0 = load double, ptr %p, align 8
236afd9582bSKai Luo  %vecinit1 = insertelement <2 x double> <double 0.000000e+00, double 0.000000e+00>, double %0, i64 1
237afd9582bSKai Luo  ret <2 x double> %vecinit1
238afd9582bSKai Luo}
239afd9582bSKai Luo
240afd9582bSKai Luodefine <2 x i64> @build_v2i64_load_0(ptr nocapture noundef readonly %p) {
241afd9582bSKai Luo; PWR7-BE-LABEL: build_v2i64_load_0:
242afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
243afd9582bSKai Luo; PWR7-BE-NEXT:    ld 3, 0(3)
244afd9582bSKai Luo; PWR7-BE-NEXT:    li 4, 0
245afd9582bSKai Luo; PWR7-BE-NEXT:    std 4, -8(1)
246afd9582bSKai Luo; PWR7-BE-NEXT:    std 3, -16(1)
247afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 1, -16
248afd9582bSKai Luo; PWR7-BE-NEXT:    lxvd2x 34, 0, 3
249afd9582bSKai Luo; PWR7-BE-NEXT:    blr
250afd9582bSKai Luo;
251afd9582bSKai Luo; PWR8-BE-LABEL: build_v2i64_load_0:
252afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
253afd9582bSKai Luo; PWR8-BE-NEXT:    ld 3, 0(3)
254afd9582bSKai Luo; PWR8-BE-NEXT:    li 4, 0
255afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 0, 4
256afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 1, 3
257afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 34, 1, 0
258afd9582bSKai Luo; PWR8-BE-NEXT:    blr
259afd9582bSKai Luo;
260afd9582bSKai Luo; PWR7-LE-LABEL: build_v2i64_load_0:
261afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
262afd9582bSKai Luo; PWR7-LE-NEXT:    ld 3, 0(3)
263afd9582bSKai Luo; PWR7-LE-NEXT:    li 4, 0
264afd9582bSKai Luo; PWR7-LE-NEXT:    std 4, -8(1)
265afd9582bSKai Luo; PWR7-LE-NEXT:    std 3, -16(1)
266afd9582bSKai Luo; PWR7-LE-NEXT:    addi 3, 1, -16
267afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 3
268afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 34, 0
269afd9582bSKai Luo; PWR7-LE-NEXT:    blr
270afd9582bSKai Luo;
271afd9582bSKai Luo; PWR8-LE-LABEL: build_v2i64_load_0:
272afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
273afd9582bSKai Luo; PWR8-LE-NEXT:    ld 3, 0(3)
274afd9582bSKai Luo; PWR8-LE-NEXT:    li 4, 0
275afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 0, 4
276afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 1, 3
277afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 34, 0, 1
278afd9582bSKai Luo; PWR8-LE-NEXT:    blr
279afd9582bSKai Luoentry:
280afd9582bSKai Luo  %0 = load i64, ptr %p, align 8
281afd9582bSKai Luo  %vecinit1 = insertelement <2 x i64> <i64 0, i64 0>, i64 %0, i64 0
282afd9582bSKai Luo  ret <2 x i64> %vecinit1
283afd9582bSKai Luo}
284afd9582bSKai Luo
285afd9582bSKai Luodefine <2 x i64> @build_v2i64_load_1(ptr nocapture noundef readonly %p) {
286afd9582bSKai Luo; PWR7-BE-LABEL: build_v2i64_load_1:
287afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
288afd9582bSKai Luo; PWR7-BE-NEXT:    ld 3, 0(3)
289afd9582bSKai Luo; PWR7-BE-NEXT:    li 4, 0
290afd9582bSKai Luo; PWR7-BE-NEXT:    std 4, -16(1)
291afd9582bSKai Luo; PWR7-BE-NEXT:    std 3, -8(1)
292afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 1, -16
293afd9582bSKai Luo; PWR7-BE-NEXT:    lxvd2x 34, 0, 3
294afd9582bSKai Luo; PWR7-BE-NEXT:    blr
295afd9582bSKai Luo;
296afd9582bSKai Luo; PWR8-BE-LABEL: build_v2i64_load_1:
297afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
298afd9582bSKai Luo; PWR8-BE-NEXT:    ld 3, 0(3)
299afd9582bSKai Luo; PWR8-BE-NEXT:    li 4, 0
300afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 0, 4
301afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 1, 3
302afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 34, 0, 1
303afd9582bSKai Luo; PWR8-BE-NEXT:    blr
304afd9582bSKai Luo;
305afd9582bSKai Luo; PWR7-LE-LABEL: build_v2i64_load_1:
306afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
307afd9582bSKai Luo; PWR7-LE-NEXT:    ld 3, 0(3)
308afd9582bSKai Luo; PWR7-LE-NEXT:    li 4, 0
309afd9582bSKai Luo; PWR7-LE-NEXT:    std 4, -16(1)
310afd9582bSKai Luo; PWR7-LE-NEXT:    std 3, -8(1)
311afd9582bSKai Luo; PWR7-LE-NEXT:    addi 3, 1, -16
312afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 3
313afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 34, 0
314afd9582bSKai Luo; PWR7-LE-NEXT:    blr
315afd9582bSKai Luo;
316afd9582bSKai Luo; PWR8-LE-LABEL: build_v2i64_load_1:
317afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
318afd9582bSKai Luo; PWR8-LE-NEXT:    ld 3, 0(3)
319afd9582bSKai Luo; PWR8-LE-NEXT:    li 4, 0
320afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 0, 4
321afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 1, 3
322afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 34, 1, 0
323afd9582bSKai Luo; PWR8-LE-NEXT:    blr
324afd9582bSKai Luoentry:
325afd9582bSKai Luo  %0 = load i64, ptr %p, align 8
326afd9582bSKai Luo  %vecinit1 = insertelement <2 x i64> <i64 0, i64 0>, i64 %0, i64 1
327afd9582bSKai Luo  ret <2 x i64> %vecinit1
328afd9582bSKai Luo}
329afd9582bSKai Luo
330afd9582bSKai Luodefine <4 x i32> @build_v4i32_load_0(ptr nocapture noundef readonly %p) {
331afd9582bSKai Luo; PWR7-BE-LABEL: build_v4i32_load_0:
332afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
33326ba186bSRolandF77; PWR7-BE-NEXT:    lfiwzx 0, 0, 3
334afd9582bSKai Luo; PWR7-BE-NEXT:    addis 3, 2, .LCPI8_0@toc@ha
33526ba186bSRolandF77; PWR7-BE-NEXT:    xxlxor 36, 36, 36
336afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 3, .LCPI8_0@toc@l
3378b6e9de3SRolandF77; PWR7-BE-NEXT:    lxvw4x 35, 0, 3
33826ba186bSRolandF77; PWR7-BE-NEXT:    xxspltw 34, 0, 1
33926ba186bSRolandF77; PWR7-BE-NEXT:    vperm 2, 2, 4, 3
340afd9582bSKai Luo; PWR7-BE-NEXT:    blr
341afd9582bSKai Luo;
342afd9582bSKai Luo; PWR8-BE-LABEL: build_v4i32_load_0:
343afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
344afd9582bSKai Luo; PWR8-BE-NEXT:    lwz 3, 0(3)
345afd9582bSKai Luo; PWR8-BE-NEXT:    li 4, 0
346afd9582bSKai Luo; PWR8-BE-NEXT:    li 5, 0
347afd9582bSKai Luo; PWR8-BE-NEXT:    rldimi 4, 4, 32, 0
348afd9582bSKai Luo; PWR8-BE-NEXT:    rldimi 5, 3, 32, 0
349afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 1, 4
350afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 0, 5
351afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 34, 0, 1
352afd9582bSKai Luo; PWR8-BE-NEXT:    blr
353afd9582bSKai Luo;
354afd9582bSKai Luo; PWR7-LE-LABEL: build_v4i32_load_0:
355afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
35626ba186bSRolandF77; PWR7-LE-NEXT:    lfiwzx 0, 0, 3
357*fc59f2ccSRolandF77; PWR7-LE-NEXT:    addis 3, 2, .LCPI8_0@toc@ha
358*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxlxor 36, 36, 36
359*fc59f2ccSRolandF77; PWR7-LE-NEXT:    addi 3, 3, .LCPI8_0@toc@l
360*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxspltw 34, 0, 1
361afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 3
362*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxswapd 35, 0
363*fc59f2ccSRolandF77; PWR7-LE-NEXT:    vperm 2, 4, 2, 3
364afd9582bSKai Luo; PWR7-LE-NEXT:    blr
365afd9582bSKai Luo;
366afd9582bSKai Luo; PWR8-LE-LABEL: build_v4i32_load_0:
367afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
368afd9582bSKai Luo; PWR8-LE-NEXT:    lwz 3, 0(3)
369afd9582bSKai Luo; PWR8-LE-NEXT:    li 4, 0
370afd9582bSKai Luo; PWR8-LE-NEXT:    rldimi 3, 4, 32, 0
371afd9582bSKai Luo; PWR8-LE-NEXT:    rldimi 4, 4, 32, 0
372afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 0, 3
373afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 1, 4
374afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 34, 1, 0
375afd9582bSKai Luo; PWR8-LE-NEXT:    blr
376afd9582bSKai Luoentry:
377afd9582bSKai Luo  %0 = load i32, ptr %p, align 4
378afd9582bSKai Luo  %vecinit1 = insertelement <4 x i32> <i32 0, i32 0, i32 0, i32 0>, i32 %0, i32 0
379afd9582bSKai Luo  ret <4 x i32> %vecinit1
380afd9582bSKai Luo}
381afd9582bSKai Luo
382afd9582bSKai Luodefine <4 x i32> @build_v4i32_load_1(ptr nocapture noundef readonly %p) {
383afd9582bSKai Luo; PWR7-BE-LABEL: build_v4i32_load_1:
384afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
38526ba186bSRolandF77; PWR7-BE-NEXT:    lfiwzx 0, 0, 3
386afd9582bSKai Luo; PWR7-BE-NEXT:    addis 3, 2, .LCPI9_0@toc@ha
38726ba186bSRolandF77; PWR7-BE-NEXT:    xxlxor 36, 36, 36
388afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 3, .LCPI9_0@toc@l
3898b6e9de3SRolandF77; PWR7-BE-NEXT:    lxvw4x 35, 0, 3
39026ba186bSRolandF77; PWR7-BE-NEXT:    xxspltw 34, 0, 1
39126ba186bSRolandF77; PWR7-BE-NEXT:    vperm 2, 4, 2, 3
392afd9582bSKai Luo; PWR7-BE-NEXT:    blr
393afd9582bSKai Luo;
394afd9582bSKai Luo; PWR8-BE-LABEL: build_v4i32_load_1:
395afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
396afd9582bSKai Luo; PWR8-BE-NEXT:    lwz 3, 0(3)
397afd9582bSKai Luo; PWR8-BE-NEXT:    li 4, 0
398afd9582bSKai Luo; PWR8-BE-NEXT:    rldimi 3, 4, 32, 0
399afd9582bSKai Luo; PWR8-BE-NEXT:    rldimi 4, 4, 32, 0
400afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 0, 3
401afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 1, 4
402afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 34, 0, 1
403afd9582bSKai Luo; PWR8-BE-NEXT:    blr
404afd9582bSKai Luo;
405afd9582bSKai Luo; PWR7-LE-LABEL: build_v4i32_load_1:
406afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
40726ba186bSRolandF77; PWR7-LE-NEXT:    lfiwzx 0, 0, 3
408*fc59f2ccSRolandF77; PWR7-LE-NEXT:    addis 3, 2, .LCPI9_0@toc@ha
409*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxlxor 36, 36, 36
410*fc59f2ccSRolandF77; PWR7-LE-NEXT:    addi 3, 3, .LCPI9_0@toc@l
411*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxspltw 34, 0, 1
412afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 3
413*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxswapd 35, 0
414*fc59f2ccSRolandF77; PWR7-LE-NEXT:    vperm 2, 2, 4, 3
415afd9582bSKai Luo; PWR7-LE-NEXT:    blr
416afd9582bSKai Luo;
417afd9582bSKai Luo; PWR8-LE-LABEL: build_v4i32_load_1:
418afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
419afd9582bSKai Luo; PWR8-LE-NEXT:    lwz 3, 0(3)
420afd9582bSKai Luo; PWR8-LE-NEXT:    li 4, 0
421afd9582bSKai Luo; PWR8-LE-NEXT:    li 5, 0
422afd9582bSKai Luo; PWR8-LE-NEXT:    rldimi 4, 4, 32, 0
423afd9582bSKai Luo; PWR8-LE-NEXT:    rldimi 5, 3, 32, 0
424afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 1, 4
425afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 0, 5
426afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 34, 1, 0
427afd9582bSKai Luo; PWR8-LE-NEXT:    blr
428afd9582bSKai Luoentry:
429afd9582bSKai Luo  %0 = load i32, ptr %p, align 4
430afd9582bSKai Luo  %vecinit1 = insertelement <4 x i32> <i32 0, i32 0, i32 0, i32 0>, i32 %0, i32 1
431afd9582bSKai Luo  ret <4 x i32> %vecinit1
432afd9582bSKai Luo}
433afd9582bSKai Luo
434afd9582bSKai Luodefine <4 x i32> @build_v4i32_load_2(ptr nocapture noundef readonly %p) {
435afd9582bSKai Luo; PWR7-BE-LABEL: build_v4i32_load_2:
436afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
43726ba186bSRolandF77; PWR7-BE-NEXT:    lfiwzx 0, 0, 3
438afd9582bSKai Luo; PWR7-BE-NEXT:    addis 3, 2, .LCPI10_0@toc@ha
43926ba186bSRolandF77; PWR7-BE-NEXT:    xxlxor 36, 36, 36
440afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 3, .LCPI10_0@toc@l
4418b6e9de3SRolandF77; PWR7-BE-NEXT:    lxvw4x 35, 0, 3
44226ba186bSRolandF77; PWR7-BE-NEXT:    xxspltw 34, 0, 1
44326ba186bSRolandF77; PWR7-BE-NEXT:    vperm 2, 4, 2, 3
444afd9582bSKai Luo; PWR7-BE-NEXT:    blr
445afd9582bSKai Luo;
446afd9582bSKai Luo; PWR8-BE-LABEL: build_v4i32_load_2:
447afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
448afd9582bSKai Luo; PWR8-BE-NEXT:    lwz 3, 0(3)
449afd9582bSKai Luo; PWR8-BE-NEXT:    li 4, 0
450afd9582bSKai Luo; PWR8-BE-NEXT:    li 5, 0
451afd9582bSKai Luo; PWR8-BE-NEXT:    rldimi 4, 4, 32, 0
452afd9582bSKai Luo; PWR8-BE-NEXT:    rldimi 5, 3, 32, 0
453afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 1, 4
454afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 0, 5
455afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 34, 1, 0
456afd9582bSKai Luo; PWR8-BE-NEXT:    blr
457afd9582bSKai Luo;
458afd9582bSKai Luo; PWR7-LE-LABEL: build_v4i32_load_2:
459afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
46026ba186bSRolandF77; PWR7-LE-NEXT:    lfiwzx 0, 0, 3
461*fc59f2ccSRolandF77; PWR7-LE-NEXT:    addis 3, 2, .LCPI10_0@toc@ha
462*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxlxor 36, 36, 36
463*fc59f2ccSRolandF77; PWR7-LE-NEXT:    addi 3, 3, .LCPI10_0@toc@l
464*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxspltw 34, 0, 1
465afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 3
466*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxswapd 35, 0
467*fc59f2ccSRolandF77; PWR7-LE-NEXT:    vperm 2, 2, 4, 3
468afd9582bSKai Luo; PWR7-LE-NEXT:    blr
469afd9582bSKai Luo;
470afd9582bSKai Luo; PWR8-LE-LABEL: build_v4i32_load_2:
471afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
472afd9582bSKai Luo; PWR8-LE-NEXT:    lwz 3, 0(3)
473afd9582bSKai Luo; PWR8-LE-NEXT:    li 4, 0
474afd9582bSKai Luo; PWR8-LE-NEXT:    rldimi 3, 4, 32, 0
475afd9582bSKai Luo; PWR8-LE-NEXT:    rldimi 4, 4, 32, 0
476afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 0, 3
477afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 1, 4
478afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 34, 0, 1
479afd9582bSKai Luo; PWR8-LE-NEXT:    blr
480afd9582bSKai Luoentry:
481afd9582bSKai Luo  %0 = load i32, ptr %p, align 4
482afd9582bSKai Luo  %vecinit1 = insertelement <4 x i32> <i32 0, i32 0, i32 0, i32 0>, i32 %0, i32 2
483afd9582bSKai Luo  ret <4 x i32> %vecinit1
484afd9582bSKai Luo}
485afd9582bSKai Luo
486afd9582bSKai Luodefine <4 x i32> @build_v4i32_load_3(ptr nocapture noundef readonly %p) {
487afd9582bSKai Luo; PWR7-BE-LABEL: build_v4i32_load_3:
488afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
48926ba186bSRolandF77; PWR7-BE-NEXT:    lfiwzx 0, 0, 3
490afd9582bSKai Luo; PWR7-BE-NEXT:    addis 3, 2, .LCPI11_0@toc@ha
49126ba186bSRolandF77; PWR7-BE-NEXT:    xxlxor 36, 36, 36
492afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 3, .LCPI11_0@toc@l
4938b6e9de3SRolandF77; PWR7-BE-NEXT:    lxvw4x 35, 0, 3
49426ba186bSRolandF77; PWR7-BE-NEXT:    xxspltw 34, 0, 1
49526ba186bSRolandF77; PWR7-BE-NEXT:    vperm 2, 4, 2, 3
496afd9582bSKai Luo; PWR7-BE-NEXT:    blr
497afd9582bSKai Luo;
498afd9582bSKai Luo; PWR8-BE-LABEL: build_v4i32_load_3:
499afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
500afd9582bSKai Luo; PWR8-BE-NEXT:    lwz 3, 0(3)
501afd9582bSKai Luo; PWR8-BE-NEXT:    li 4, 0
502afd9582bSKai Luo; PWR8-BE-NEXT:    rldimi 3, 4, 32, 0
503afd9582bSKai Luo; PWR8-BE-NEXT:    rldimi 4, 4, 32, 0
504afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 0, 3
505afd9582bSKai Luo; PWR8-BE-NEXT:    mtfprd 1, 4
506afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 34, 1, 0
507afd9582bSKai Luo; PWR8-BE-NEXT:    blr
508afd9582bSKai Luo;
509afd9582bSKai Luo; PWR7-LE-LABEL: build_v4i32_load_3:
510afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
51126ba186bSRolandF77; PWR7-LE-NEXT:    lfiwzx 0, 0, 3
512*fc59f2ccSRolandF77; PWR7-LE-NEXT:    addis 3, 2, .LCPI11_0@toc@ha
513*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxlxor 36, 36, 36
514*fc59f2ccSRolandF77; PWR7-LE-NEXT:    addi 3, 3, .LCPI11_0@toc@l
515*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxspltw 34, 0, 1
516afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 3
517*fc59f2ccSRolandF77; PWR7-LE-NEXT:    xxswapd 35, 0
518*fc59f2ccSRolandF77; PWR7-LE-NEXT:    vperm 2, 2, 4, 3
519afd9582bSKai Luo; PWR7-LE-NEXT:    blr
520afd9582bSKai Luo;
521afd9582bSKai Luo; PWR8-LE-LABEL: build_v4i32_load_3:
522afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
523afd9582bSKai Luo; PWR8-LE-NEXT:    lwz 3, 0(3)
524afd9582bSKai Luo; PWR8-LE-NEXT:    li 4, 0
525afd9582bSKai Luo; PWR8-LE-NEXT:    li 5, 0
526afd9582bSKai Luo; PWR8-LE-NEXT:    rldimi 4, 4, 32, 0
527afd9582bSKai Luo; PWR8-LE-NEXT:    rldimi 5, 3, 32, 0
528afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 1, 4
529afd9582bSKai Luo; PWR8-LE-NEXT:    mtfprd 0, 5
530afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 34, 0, 1
531afd9582bSKai Luo; PWR8-LE-NEXT:    blr
532afd9582bSKai Luoentry:
533afd9582bSKai Luo  %0 = load i32, ptr %p, align 4
534afd9582bSKai Luo  %vecinit1 = insertelement <4 x i32> <i32 0, i32 0, i32 0, i32 0>, i32 %0, i32 3
535afd9582bSKai Luo  ret <4 x i32> %vecinit1
536afd9582bSKai Luo}
537afd9582bSKai Luo
538afd9582bSKai Luodefine <4 x float> @build_v4f32_load_0(ptr nocapture noundef readonly %p) {
539afd9582bSKai Luo; PWR7-BE-LABEL: build_v4f32_load_0:
540afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
541afd9582bSKai Luo; PWR7-BE-NEXT:    lwz 3, 0(3)
542afd9582bSKai Luo; PWR7-BE-NEXT:    li 4, 0
543afd9582bSKai Luo; PWR7-BE-NEXT:    stw 4, -16(1)
544afd9582bSKai Luo; PWR7-BE-NEXT:    stw 3, -32(1)
545afd9582bSKai Luo; PWR7-BE-NEXT:    addis 3, 2, .LCPI12_0@toc@ha
546afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 3, .LCPI12_0@toc@l
547afd9582bSKai Luo; PWR7-BE-NEXT:    lxvw4x 34, 0, 3
548afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 1, -16
549afd9582bSKai Luo; PWR7-BE-NEXT:    lxvw4x 35, 0, 3
550afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 1, -32
551afd9582bSKai Luo; PWR7-BE-NEXT:    lxvw4x 36, 0, 3
552afd9582bSKai Luo; PWR7-BE-NEXT:    vperm 2, 4, 3, 2
553afd9582bSKai Luo; PWR7-BE-NEXT:    blr
554afd9582bSKai Luo;
555afd9582bSKai Luo; PWR8-BE-LABEL: build_v4f32_load_0:
556afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
557afd9582bSKai Luo; PWR8-BE-NEXT:    lfs 0, 0(3)
558afd9582bSKai Luo; PWR8-BE-NEXT:    xxlxor 1, 1, 1
559afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 0, 0, 1
560afd9582bSKai Luo; PWR8-BE-NEXT:    xxspltd 1, 1, 0
561afd9582bSKai Luo; PWR8-BE-NEXT:    xvcvdpsp 34, 0
562afd9582bSKai Luo; PWR8-BE-NEXT:    xvcvdpsp 35, 1
563afd9582bSKai Luo; PWR8-BE-NEXT:    vmrgew 2, 2, 3
564afd9582bSKai Luo; PWR8-BE-NEXT:    blr
565afd9582bSKai Luo;
566afd9582bSKai Luo; PWR7-LE-LABEL: build_v4f32_load_0:
567afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
568afd9582bSKai Luo; PWR7-LE-NEXT:    li 4, 0
569afd9582bSKai Luo; PWR7-LE-NEXT:    lwz 3, 0(3)
570afd9582bSKai Luo; PWR7-LE-NEXT:    stw 4, -16(1)
571afd9582bSKai Luo; PWR7-LE-NEXT:    addis 4, 2, .LCPI12_0@toc@ha
572afd9582bSKai Luo; PWR7-LE-NEXT:    addi 4, 4, .LCPI12_0@toc@l
573afd9582bSKai Luo; PWR7-LE-NEXT:    stw 3, -32(1)
574afd9582bSKai Luo; PWR7-LE-NEXT:    addi 3, 1, -32
575afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 4
576afd9582bSKai Luo; PWR7-LE-NEXT:    addi 4, 1, -16
577afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 1, 0, 4
578afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 34, 0
579afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 3
580afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 35, 1
581afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 36, 0
582afd9582bSKai Luo; PWR7-LE-NEXT:    vperm 2, 3, 4, 2
583afd9582bSKai Luo; PWR7-LE-NEXT:    blr
584afd9582bSKai Luo;
585afd9582bSKai Luo; PWR8-LE-LABEL: build_v4f32_load_0:
586afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
587afd9582bSKai Luo; PWR8-LE-NEXT:    lfs 0, 0(3)
588afd9582bSKai Luo; PWR8-LE-NEXT:    xxlxor 1, 1, 1
589afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 0, 1, 0
590afd9582bSKai Luo; PWR8-LE-NEXT:    xxspltd 1, 1, 0
591afd9582bSKai Luo; PWR8-LE-NEXT:    xvcvdpsp 34, 0
592afd9582bSKai Luo; PWR8-LE-NEXT:    xvcvdpsp 35, 1
593afd9582bSKai Luo; PWR8-LE-NEXT:    vmrgew 2, 3, 2
594afd9582bSKai Luo; PWR8-LE-NEXT:    blr
595afd9582bSKai Luoentry:
596afd9582bSKai Luo  %0 = load float, ptr %p, align 4
597afd9582bSKai Luo  %vecinit1 = insertelement <4 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, float %0, i32 0
598afd9582bSKai Luo  ret <4 x float> %vecinit1
599afd9582bSKai Luo}
600afd9582bSKai Luo
601afd9582bSKai Luodefine <4 x float> @build_v4f32_load_1(ptr nocapture noundef readonly %p) {
602afd9582bSKai Luo; PWR7-BE-LABEL: build_v4f32_load_1:
603afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
604afd9582bSKai Luo; PWR7-BE-NEXT:    lwz 3, 0(3)
605afd9582bSKai Luo; PWR7-BE-NEXT:    li 4, 0
606afd9582bSKai Luo; PWR7-BE-NEXT:    stw 4, -32(1)
607afd9582bSKai Luo; PWR7-BE-NEXT:    stw 3, -16(1)
608afd9582bSKai Luo; PWR7-BE-NEXT:    addis 3, 2, .LCPI13_0@toc@ha
609afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 3, .LCPI13_0@toc@l
610afd9582bSKai Luo; PWR7-BE-NEXT:    lxvw4x 34, 0, 3
611afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 1, -32
612afd9582bSKai Luo; PWR7-BE-NEXT:    lxvw4x 35, 0, 3
613afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 1, -16
614afd9582bSKai Luo; PWR7-BE-NEXT:    lxvw4x 36, 0, 3
615afd9582bSKai Luo; PWR7-BE-NEXT:    vperm 2, 3, 4, 2
616afd9582bSKai Luo; PWR7-BE-NEXT:    blr
617afd9582bSKai Luo;
618afd9582bSKai Luo; PWR8-BE-LABEL: build_v4f32_load_1:
619afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
620afd9582bSKai Luo; PWR8-BE-NEXT:    lfs 0, 0(3)
621afd9582bSKai Luo; PWR8-BE-NEXT:    xxlxor 1, 1, 1
622afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 0, 0, 1
623afd9582bSKai Luo; PWR8-BE-NEXT:    xxspltd 1, 1, 0
624afd9582bSKai Luo; PWR8-BE-NEXT:    xvcvdpsp 34, 0
625afd9582bSKai Luo; PWR8-BE-NEXT:    xvcvdpsp 35, 1
626afd9582bSKai Luo; PWR8-BE-NEXT:    vmrgew 2, 3, 2
627afd9582bSKai Luo; PWR8-BE-NEXT:    blr
628afd9582bSKai Luo;
629afd9582bSKai Luo; PWR7-LE-LABEL: build_v4f32_load_1:
630afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
631afd9582bSKai Luo; PWR7-LE-NEXT:    li 4, 0
632afd9582bSKai Luo; PWR7-LE-NEXT:    lwz 3, 0(3)
633afd9582bSKai Luo; PWR7-LE-NEXT:    stw 4, -32(1)
634afd9582bSKai Luo; PWR7-LE-NEXT:    addis 4, 2, .LCPI13_0@toc@ha
635afd9582bSKai Luo; PWR7-LE-NEXT:    addi 4, 4, .LCPI13_0@toc@l
636afd9582bSKai Luo; PWR7-LE-NEXT:    stw 3, -16(1)
637afd9582bSKai Luo; PWR7-LE-NEXT:    addi 3, 1, -16
638afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 4
639afd9582bSKai Luo; PWR7-LE-NEXT:    addi 4, 1, -32
640afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 1, 0, 4
641afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 34, 0
642afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 3
643afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 35, 1
644afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 36, 0
645afd9582bSKai Luo; PWR7-LE-NEXT:    vperm 2, 4, 3, 2
646afd9582bSKai Luo; PWR7-LE-NEXT:    blr
647afd9582bSKai Luo;
648afd9582bSKai Luo; PWR8-LE-LABEL: build_v4f32_load_1:
649afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
650afd9582bSKai Luo; PWR8-LE-NEXT:    lfs 0, 0(3)
651afd9582bSKai Luo; PWR8-LE-NEXT:    xxlxor 1, 1, 1
652afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 0, 1, 0
653afd9582bSKai Luo; PWR8-LE-NEXT:    xxspltd 1, 1, 0
654afd9582bSKai Luo; PWR8-LE-NEXT:    xvcvdpsp 34, 0
655afd9582bSKai Luo; PWR8-LE-NEXT:    xvcvdpsp 35, 1
656afd9582bSKai Luo; PWR8-LE-NEXT:    vmrgew 2, 2, 3
657afd9582bSKai Luo; PWR8-LE-NEXT:    blr
658afd9582bSKai Luoentry:
659afd9582bSKai Luo  %0 = load float, ptr %p, align 4
660afd9582bSKai Luo  %vecinit1 = insertelement <4 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, float %0, i32 1
661afd9582bSKai Luo  ret <4 x float> %vecinit1
662afd9582bSKai Luo}
663afd9582bSKai Luo
664afd9582bSKai Luodefine <4 x float> @build_v4f32_load_2(ptr nocapture noundef readonly %p) {
665afd9582bSKai Luo; PWR7-BE-LABEL: build_v4f32_load_2:
666afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
667afd9582bSKai Luo; PWR7-BE-NEXT:    lwz 3, 0(3)
668afd9582bSKai Luo; PWR7-BE-NEXT:    li 4, 0
669afd9582bSKai Luo; PWR7-BE-NEXT:    stw 4, -32(1)
670afd9582bSKai Luo; PWR7-BE-NEXT:    stw 3, -16(1)
671afd9582bSKai Luo; PWR7-BE-NEXT:    addis 3, 2, .LCPI14_0@toc@ha
672afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 3, .LCPI14_0@toc@l
673afd9582bSKai Luo; PWR7-BE-NEXT:    lxvw4x 34, 0, 3
674afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 1, -32
675afd9582bSKai Luo; PWR7-BE-NEXT:    lxvw4x 35, 0, 3
676afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 1, -16
677afd9582bSKai Luo; PWR7-BE-NEXT:    lxvw4x 36, 0, 3
678afd9582bSKai Luo; PWR7-BE-NEXT:    vperm 2, 3, 4, 2
679afd9582bSKai Luo; PWR7-BE-NEXT:    blr
680afd9582bSKai Luo;
681afd9582bSKai Luo; PWR8-BE-LABEL: build_v4f32_load_2:
682afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
683afd9582bSKai Luo; PWR8-BE-NEXT:    lfs 0, 0(3)
684afd9582bSKai Luo; PWR8-BE-NEXT:    xxlxor 1, 1, 1
685afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 0, 1, 0
686afd9582bSKai Luo; PWR8-BE-NEXT:    xxspltd 1, 1, 0
687afd9582bSKai Luo; PWR8-BE-NEXT:    xvcvdpsp 34, 0
688afd9582bSKai Luo; PWR8-BE-NEXT:    xvcvdpsp 35, 1
689afd9582bSKai Luo; PWR8-BE-NEXT:    vmrgew 2, 2, 3
690afd9582bSKai Luo; PWR8-BE-NEXT:    blr
691afd9582bSKai Luo;
692afd9582bSKai Luo; PWR7-LE-LABEL: build_v4f32_load_2:
693afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
694afd9582bSKai Luo; PWR7-LE-NEXT:    li 4, 0
695afd9582bSKai Luo; PWR7-LE-NEXT:    lwz 3, 0(3)
696afd9582bSKai Luo; PWR7-LE-NEXT:    stw 4, -32(1)
697afd9582bSKai Luo; PWR7-LE-NEXT:    addis 4, 2, .LCPI14_0@toc@ha
698afd9582bSKai Luo; PWR7-LE-NEXT:    addi 4, 4, .LCPI14_0@toc@l
699afd9582bSKai Luo; PWR7-LE-NEXT:    stw 3, -16(1)
700afd9582bSKai Luo; PWR7-LE-NEXT:    addi 3, 1, -16
701afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 4
702afd9582bSKai Luo; PWR7-LE-NEXT:    addi 4, 1, -32
703afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 1, 0, 4
704afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 34, 0
705afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 3
706afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 35, 1
707afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 36, 0
708afd9582bSKai Luo; PWR7-LE-NEXT:    vperm 2, 4, 3, 2
709afd9582bSKai Luo; PWR7-LE-NEXT:    blr
710afd9582bSKai Luo;
711afd9582bSKai Luo; PWR8-LE-LABEL: build_v4f32_load_2:
712afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
713afd9582bSKai Luo; PWR8-LE-NEXT:    lfs 0, 0(3)
714afd9582bSKai Luo; PWR8-LE-NEXT:    xxlxor 1, 1, 1
715afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 0, 0, 1
716afd9582bSKai Luo; PWR8-LE-NEXT:    xxspltd 1, 1, 0
717afd9582bSKai Luo; PWR8-LE-NEXT:    xvcvdpsp 34, 0
718afd9582bSKai Luo; PWR8-LE-NEXT:    xvcvdpsp 35, 1
719afd9582bSKai Luo; PWR8-LE-NEXT:    vmrgew 2, 3, 2
720afd9582bSKai Luo; PWR8-LE-NEXT:    blr
721afd9582bSKai Luoentry:
722afd9582bSKai Luo  %0 = load float, ptr %p, align 4
723afd9582bSKai Luo  %vecinit1 = insertelement <4 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, float %0, i32 2
724afd9582bSKai Luo  ret <4 x float> %vecinit1
725afd9582bSKai Luo}
726afd9582bSKai Luo
727afd9582bSKai Luodefine <4 x float> @build_v4f32_load_3(ptr nocapture noundef readonly %p) {
728afd9582bSKai Luo; PWR7-BE-LABEL: build_v4f32_load_3:
729afd9582bSKai Luo; PWR7-BE:       # %bb.0: # %entry
730afd9582bSKai Luo; PWR7-BE-NEXT:    lwz 3, 0(3)
731afd9582bSKai Luo; PWR7-BE-NEXT:    li 4, 0
732afd9582bSKai Luo; PWR7-BE-NEXT:    stw 4, -32(1)
733afd9582bSKai Luo; PWR7-BE-NEXT:    stw 3, -16(1)
734afd9582bSKai Luo; PWR7-BE-NEXT:    addis 3, 2, .LCPI15_0@toc@ha
735afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 3, .LCPI15_0@toc@l
736afd9582bSKai Luo; PWR7-BE-NEXT:    lxvw4x 34, 0, 3
737afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 1, -32
738afd9582bSKai Luo; PWR7-BE-NEXT:    lxvw4x 35, 0, 3
739afd9582bSKai Luo; PWR7-BE-NEXT:    addi 3, 1, -16
740afd9582bSKai Luo; PWR7-BE-NEXT:    lxvw4x 36, 0, 3
741afd9582bSKai Luo; PWR7-BE-NEXT:    vperm 2, 3, 4, 2
742afd9582bSKai Luo; PWR7-BE-NEXT:    blr
743afd9582bSKai Luo;
744afd9582bSKai Luo; PWR8-BE-LABEL: build_v4f32_load_3:
745afd9582bSKai Luo; PWR8-BE:       # %bb.0: # %entry
746afd9582bSKai Luo; PWR8-BE-NEXT:    lfs 0, 0(3)
747afd9582bSKai Luo; PWR8-BE-NEXT:    xxlxor 1, 1, 1
748afd9582bSKai Luo; PWR8-BE-NEXT:    xxmrghd 0, 1, 0
749afd9582bSKai Luo; PWR8-BE-NEXT:    xxspltd 1, 1, 0
750afd9582bSKai Luo; PWR8-BE-NEXT:    xvcvdpsp 34, 0
751afd9582bSKai Luo; PWR8-BE-NEXT:    xvcvdpsp 35, 1
752afd9582bSKai Luo; PWR8-BE-NEXT:    vmrgew 2, 3, 2
753afd9582bSKai Luo; PWR8-BE-NEXT:    blr
754afd9582bSKai Luo;
755afd9582bSKai Luo; PWR7-LE-LABEL: build_v4f32_load_3:
756afd9582bSKai Luo; PWR7-LE:       # %bb.0: # %entry
757afd9582bSKai Luo; PWR7-LE-NEXT:    li 4, 0
758afd9582bSKai Luo; PWR7-LE-NEXT:    lwz 3, 0(3)
759afd9582bSKai Luo; PWR7-LE-NEXT:    stw 4, -32(1)
760afd9582bSKai Luo; PWR7-LE-NEXT:    addis 4, 2, .LCPI15_0@toc@ha
761afd9582bSKai Luo; PWR7-LE-NEXT:    addi 4, 4, .LCPI15_0@toc@l
762afd9582bSKai Luo; PWR7-LE-NEXT:    stw 3, -16(1)
763afd9582bSKai Luo; PWR7-LE-NEXT:    addi 3, 1, -16
764afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 4
765afd9582bSKai Luo; PWR7-LE-NEXT:    addi 4, 1, -32
766afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 1, 0, 4
767afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 34, 0
768afd9582bSKai Luo; PWR7-LE-NEXT:    lxvd2x 0, 0, 3
769afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 35, 1
770afd9582bSKai Luo; PWR7-LE-NEXT:    xxswapd 36, 0
771afd9582bSKai Luo; PWR7-LE-NEXT:    vperm 2, 4, 3, 2
772afd9582bSKai Luo; PWR7-LE-NEXT:    blr
773afd9582bSKai Luo;
774afd9582bSKai Luo; PWR8-LE-LABEL: build_v4f32_load_3:
775afd9582bSKai Luo; PWR8-LE:       # %bb.0: # %entry
776afd9582bSKai Luo; PWR8-LE-NEXT:    lfs 0, 0(3)
777afd9582bSKai Luo; PWR8-LE-NEXT:    xxlxor 1, 1, 1
778afd9582bSKai Luo; PWR8-LE-NEXT:    xxmrghd 0, 0, 1
779afd9582bSKai Luo; PWR8-LE-NEXT:    xxspltd 1, 1, 0
780afd9582bSKai Luo; PWR8-LE-NEXT:    xvcvdpsp 34, 0
781afd9582bSKai Luo; PWR8-LE-NEXT:    xvcvdpsp 35, 1
782afd9582bSKai Luo; PWR8-LE-NEXT:    vmrgew 2, 2, 3
783afd9582bSKai Luo; PWR8-LE-NEXT:    blr
784afd9582bSKai Luoentry:
785afd9582bSKai Luo  %0 = load float, ptr %p, align 4
786afd9582bSKai Luo  %vecinit1 = insertelement <4 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, float %0, i32 3
787afd9582bSKai Luo  ret <4 x float> %vecinit1
788afd9582bSKai Luo}
789