xref: /llvm-project/llvm/test/CodeGen/PowerPC/aix-insert-extract.ll (revision f818ec9dd173bfacd0ee8b403146c26e17271a46)
1*f818ec9dSZarko Todorovski; RUN: llc -mcpu=pwr9 -mtriple=powerpc64-ibm-aix-xcoff -vec-extabi \
2*f818ec9dSZarko Todorovski; RUN:   -verify-machineinstrs < %s | FileCheck %s --check-prefix=CHECK-64
3*f818ec9dSZarko Todorovski; RUN: llc -mcpu=pwr9 -mtriple=powerpc-ibm-aix-xcoff -vec-extabi \
4*f818ec9dSZarko Todorovski; RUN:   -verify-machineinstrs < %s | FileCheck %s --check-prefix=CHECK-32
5*f818ec9dSZarko Todorovski
6*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj0EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
7*f818ec9dSZarko Todorovskientry:
8*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj0EDv4_fET1_S1_S1_
9*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
10*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
11*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 4, i32 1, i32 2, i32 3>
12*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
13*f818ec9dSZarko Todorovski}
14*f818ec9dSZarko Todorovski
15*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj1EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
16*f818ec9dSZarko Todorovskientry:
17*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj1EDv4_fET1_S1_S1_
18*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
19*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 0
20*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 5, i32 1, i32 2, i32 3>
21*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
22*f818ec9dSZarko Todorovski}
23*f818ec9dSZarko Todorovski
24*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj2EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
25*f818ec9dSZarko Todorovskientry:
26*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj2EDv4_fET1_S1_S1_
27*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
28*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
29*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 6, i32 1, i32 2, i32 3>
30*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
31*f818ec9dSZarko Todorovski}
32*f818ec9dSZarko Todorovski
33*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj3EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
34*f818ec9dSZarko Todorovskientry:
35*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj3EDv4_fET1_S1_S1_
36*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
37*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
38*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 7, i32 1, i32 2, i32 3>
39*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
40*f818ec9dSZarko Todorovski}
41*f818ec9dSZarko Todorovski
42*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj0EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
43*f818ec9dSZarko Todorovskientry:
44*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj0EDv4_fET1_S1_S1_
45*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
46*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
47*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 3>
48*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
49*f818ec9dSZarko Todorovski}
50*f818ec9dSZarko Todorovski
51*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj1EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
52*f818ec9dSZarko Todorovskientry:
53*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj1EDv4_fET1_S1_S1_
54*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
55*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 4
56*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 5, i32 2, i32 3>
57*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
58*f818ec9dSZarko Todorovski}
59*f818ec9dSZarko Todorovski
60*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj2EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
61*f818ec9dSZarko Todorovskientry:
62*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj2EDv4_fET1_S1_S1_
63*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
64*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
65*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 6, i32 2, i32 3>
66*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
67*f818ec9dSZarko Todorovski}
68*f818ec9dSZarko Todorovski
69*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj3EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
70*f818ec9dSZarko Todorovskientry:
71*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj3EDv4_fET1_S1_S1_
72*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
73*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
74*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 7, i32 2, i32 3>
75*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
76*f818ec9dSZarko Todorovski}
77*f818ec9dSZarko Todorovski
78*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj0EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
79*f818ec9dSZarko Todorovskientry:
80*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj0EDv4_fET1_S1_S1_
81*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
82*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
83*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 4, i32 3>
84*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
85*f818ec9dSZarko Todorovski}
86*f818ec9dSZarko Todorovski
87*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj1EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
88*f818ec9dSZarko Todorovskientry:
89*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj1EDv4_fET1_S1_S1_
90*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
91*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 8
92*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 5, i32 3>
93*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
94*f818ec9dSZarko Todorovski}
95*f818ec9dSZarko Todorovski
96*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj2EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
97*f818ec9dSZarko Todorovskientry:
98*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj2EDv4_fET1_S1_S1_
99*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
100*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
101*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 6, i32 3>
102*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
103*f818ec9dSZarko Todorovski}
104*f818ec9dSZarko Todorovski
105*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj3EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
106*f818ec9dSZarko Todorovskientry:
107*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj3EDv4_fET1_S1_S1_
108*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
109*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
110*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 7, i32 3>
111*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
112*f818ec9dSZarko Todorovski}
113*f818ec9dSZarko Todorovski
114*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj0EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
115*f818ec9dSZarko Todorovskientry:
116*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj0EDv4_fET1_S1_S1_
117*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
118*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
119*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 4>
120*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
121*f818ec9dSZarko Todorovski}
122*f818ec9dSZarko Todorovski
123*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj1EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
124*f818ec9dSZarko Todorovskientry:
125*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj1EDv4_fET1_S1_S1_
126*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
127*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 12
128*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 5>
129*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
130*f818ec9dSZarko Todorovski}
131*f818ec9dSZarko Todorovski
132*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj2EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
133*f818ec9dSZarko Todorovskientry:
134*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj2EDv4_fET1_S1_S1_
135*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
136*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
137*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 6>
138*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
139*f818ec9dSZarko Todorovski}
140*f818ec9dSZarko Todorovski
141*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj3EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) {
142*f818ec9dSZarko Todorovskientry:
143*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj3EDv4_fET1_S1_S1_
144*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
145*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
146*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 7>
147*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
148*f818ec9dSZarko Todorovski}
149*f818ec9dSZarko Todorovski
150*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj0EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
151*f818ec9dSZarko Todorovskientry:
152*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj0EDv4_jET1_S1_S1_
153*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
154*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
155*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 4, i32 1, i32 2, i32 3>
156*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
157*f818ec9dSZarko Todorovski}
158*f818ec9dSZarko Todorovski
159*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj1EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
160*f818ec9dSZarko Todorovskientry:
161*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj1EDv4_jET1_S1_S1_
162*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
163*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 0
164*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 5, i32 1, i32 2, i32 3>
165*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
166*f818ec9dSZarko Todorovski}
167*f818ec9dSZarko Todorovski
168*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj2EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
169*f818ec9dSZarko Todorovskientry:
170*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj2EDv4_jET1_S1_S1_
171*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
172*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
173*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 6, i32 1, i32 2, i32 3>
174*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
175*f818ec9dSZarko Todorovski}
176*f818ec9dSZarko Todorovski
177*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj3EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
178*f818ec9dSZarko Todorovskientry:
179*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj3EDv4_jET1_S1_S1_
180*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
181*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
182*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 7, i32 1, i32 2, i32 3>
183*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
184*f818ec9dSZarko Todorovski}
185*f818ec9dSZarko Todorovski
186*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj0EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
187*f818ec9dSZarko Todorovskientry:
188*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj0EDv4_jET1_S1_S1_
189*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
190*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
191*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 3>
192*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
193*f818ec9dSZarko Todorovski}
194*f818ec9dSZarko Todorovski
195*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj1EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
196*f818ec9dSZarko Todorovskientry:
197*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj1EDv4_jET1_S1_S1_
198*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
199*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 4
200*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 5, i32 2, i32 3>
201*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
202*f818ec9dSZarko Todorovski}
203*f818ec9dSZarko Todorovski
204*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj2EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
205*f818ec9dSZarko Todorovskientry:
206*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj2EDv4_jET1_S1_S1_
207*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
208*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
209*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 6, i32 2, i32 3>
210*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
211*f818ec9dSZarko Todorovski}
212*f818ec9dSZarko Todorovski
213*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj3EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
214*f818ec9dSZarko Todorovskientry:
215*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj3EDv4_jET1_S1_S1_
216*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
217*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
218*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 7, i32 2, i32 3>
219*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
220*f818ec9dSZarko Todorovski}
221*f818ec9dSZarko Todorovski
222*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj0EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
223*f818ec9dSZarko Todorovskientry:
224*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj0EDv4_jET1_S1_S1_
225*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
226*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
227*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 4, i32 3>
228*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
229*f818ec9dSZarko Todorovski}
230*f818ec9dSZarko Todorovski
231*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj1EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
232*f818ec9dSZarko Todorovskientry:
233*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj1EDv4_jET1_S1_S1_
234*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
235*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 8
236*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 5, i32 3>
237*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
238*f818ec9dSZarko Todorovski}
239*f818ec9dSZarko Todorovski
240*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj2EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
241*f818ec9dSZarko Todorovskientry:
242*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj2EDv4_jET1_S1_S1_
243*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
244*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
245*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 6, i32 3>
246*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
247*f818ec9dSZarko Todorovski}
248*f818ec9dSZarko Todorovski
249*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj3EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
250*f818ec9dSZarko Todorovskientry:
251*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj3EDv4_jET1_S1_S1_
252*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
253*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
254*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 7, i32 3>
255*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
256*f818ec9dSZarko Todorovski}
257*f818ec9dSZarko Todorovski
258*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj0EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
259*f818ec9dSZarko Todorovskientry:
260*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj0EDv4_jET1_S1_S1_
261*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
262*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
263*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 4>
264*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
265*f818ec9dSZarko Todorovski}
266*f818ec9dSZarko Todorovski
267*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj1EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
268*f818ec9dSZarko Todorovskientry:
269*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj1EDv4_jET1_S1_S1_
270*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
271*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 12
272*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 5>
273*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
274*f818ec9dSZarko Todorovski}
275*f818ec9dSZarko Todorovski
276*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj2EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
277*f818ec9dSZarko Todorovskientry:
278*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj2EDv4_jET1_S1_S1_
279*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
280*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
281*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 6>
282*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
283*f818ec9dSZarko Todorovski}
284*f818ec9dSZarko Todorovski
285*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj3EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) {
286*f818ec9dSZarko Todorovskientry:
287*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj3EDv4_jET1_S1_S1_
288*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
289*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
290*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 7>
291*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
292*f818ec9dSZarko Todorovski}
293*f818ec9dSZarko Todorovski
294*f818ec9dSZarko Todorovskidefine float @_Z13testUiToFpExtILj0EEfDv4_j(<4 x i32> %a) {
295*f818ec9dSZarko Todorovskientry:
296*f818ec9dSZarko Todorovski; CHECK-64-LABEL: _Z13testUiToFpExtILj0EEfDv4_j
297*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw 0, 34, 0
298*f818ec9dSZarko Todorovski; CHECK-64: xscvuxdsp 1, 0
299*f818ec9dSZarko Todorovski; CHECK-32-LABEL: _Z13testUiToFpExtILj0EEfDv4_j
300*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx 0, 0, 3
301*f818ec9dSZarko Todorovski; CHECK-32: xscvuxdsp 1, 0
302*f818ec9dSZarko Todorovski  %vecext = extractelement <4 x i32> %a, i32 0
303*f818ec9dSZarko Todorovski  %conv = uitofp i32 %vecext to float
304*f818ec9dSZarko Todorovski  ret float %conv
305*f818ec9dSZarko Todorovski}
306*f818ec9dSZarko Todorovski
307*f818ec9dSZarko Todorovskidefine float @_Z13testUiToFpExtILj1EEfDv4_j(<4 x i32> %a) {
308*f818ec9dSZarko Todorovskientry:
309*f818ec9dSZarko Todorovski; CHECK-64-LABEL: _Z13testUiToFpExtILj1EEfDv4_j
310*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw 0, 34, 4
311*f818ec9dSZarko Todorovski; CHECK-64: xscvuxdsp 1, 0
312*f818ec9dSZarko Todorovski; CHECK-32-LABEL: _Z13testUiToFpExtILj1EEfDv4_j
313*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx 0, 0, 3
314*f818ec9dSZarko Todorovski; CHECK-32: xscvuxdsp 1, 0
315*f818ec9dSZarko Todorovski  %vecext = extractelement <4 x i32> %a, i32 1
316*f818ec9dSZarko Todorovski  %conv = uitofp i32 %vecext to float
317*f818ec9dSZarko Todorovski  ret float %conv
318*f818ec9dSZarko Todorovski}
319*f818ec9dSZarko Todorovski
320*f818ec9dSZarko Todorovskidefine float @_Z13testUiToFpExtILj2EEfDv4_j(<4 x i32> %a) {
321*f818ec9dSZarko Todorovskientry:
322*f818ec9dSZarko Todorovski; CHECK-64-LABEL: _Z13testUiToFpExtILj2EEfDv4_j
323*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw 0, 34, 8
324*f818ec9dSZarko Todorovski; CHECK-64: xscvuxdsp 1, 0
325*f818ec9dSZarko Todorovski; CHECK-32-LABEL: _Z13testUiToFpExtILj2EEfDv4_j
326*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx 0, 0, 3
327*f818ec9dSZarko Todorovski; CHECK-32: xscvuxdsp 1, 0
328*f818ec9dSZarko Todorovski  %vecext = extractelement <4 x i32> %a, i32 2
329*f818ec9dSZarko Todorovski  %conv = uitofp i32 %vecext to float
330*f818ec9dSZarko Todorovski  ret float %conv
331*f818ec9dSZarko Todorovski}
332*f818ec9dSZarko Todorovski
333*f818ec9dSZarko Todorovskidefine float @_Z13testUiToFpExtILj3EEfDv4_j(<4 x i32> %a) {
334*f818ec9dSZarko Todorovskientry:
335*f818ec9dSZarko Todorovski; CHECK-64-LABEL: _Z13testUiToFpExtILj3EEfDv4_j
336*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw 0, 34, 12
337*f818ec9dSZarko Todorovski; CHECK-64: xscvuxdsp 1, 0
338*f818ec9dSZarko Todorovski; CHECK-32-LABEL: _Z13testUiToFpExtILj3EEfDv4_j
339*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx 0, 0, 3
340*f818ec9dSZarko Todorovski; CHECK-32: xscvuxdsp 1, 0
341*f818ec9dSZarko Todorovski  %vecext = extractelement <4 x i32> %a, i32 3
342*f818ec9dSZarko Todorovski  %conv = uitofp i32 %vecext to float
343*f818ec9dSZarko Todorovski  ret float %conv
344*f818ec9dSZarko Todorovski}
345*f818ec9dSZarko Todorovski
346*f818ec9dSZarko Todorovski; Verify we generate optimal code for unsigned vector int elem extract followed
347*f818ec9dSZarko Todorovski; by conversion to double
348*f818ec9dSZarko Todorovski
349*f818ec9dSZarko Todorovskidefine double @conv2dlbTestui0(<4 x i32> %a) {
350*f818ec9dSZarko Todorovskientry:
351*f818ec9dSZarko Todorovski; CHECK-64-LABEL: conv2dlbTestui0
352*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw [[CP64:[0-9]+]], 34, 0
353*f818ec9dSZarko Todorovski; CHECK-64: xscvuxddp 1, [[CP64]]
354*f818ec9dSZarko Todorovski; CHECK-32-LABEL: conv2dlbTestui0
355*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx [[CP32:[0-9]+]], 0, 3
356*f818ec9dSZarko Todorovski; CHECK-32: xscvuxddp 1, [[CP32]]
357*f818ec9dSZarko Todorovski  %0 = extractelement <4 x i32> %a, i32 0
358*f818ec9dSZarko Todorovski  %1 = uitofp i32 %0 to double
359*f818ec9dSZarko Todorovski  ret double %1
360*f818ec9dSZarko Todorovski}
361*f818ec9dSZarko Todorovski
362*f818ec9dSZarko Todorovskidefine double @conv2dlbTestui1(<4 x i32> %a) {
363*f818ec9dSZarko Todorovskientry:
364*f818ec9dSZarko Todorovski; CHECK-64-LABEL: conv2dlbTestui1
365*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw [[CP64:[0-9]+]], 34, 4
366*f818ec9dSZarko Todorovski; CHECK-64: xscvuxddp 1, [[CP64]]
367*f818ec9dSZarko Todorovski; CHECK-32-LABEL: conv2dlbTestui1
368*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx [[CP32:[0-9]+]], 0, 3
369*f818ec9dSZarko Todorovski; CHECK-32: xscvuxddp 1, [[CP32]]
370*f818ec9dSZarko Todorovski  %0 = extractelement <4 x i32> %a, i32 1
371*f818ec9dSZarko Todorovski  %1 = uitofp i32 %0 to double
372*f818ec9dSZarko Todorovski  ret double %1
373*f818ec9dSZarko Todorovski}
374*f818ec9dSZarko Todorovski
375*f818ec9dSZarko Todorovskidefine double @conv2dlbTestui2(<4 x i32> %a) {
376*f818ec9dSZarko Todorovskientry:
377*f818ec9dSZarko Todorovski; CHECK-64-LABEL: conv2dlbTestui2
378*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw [[CP64:[0-9]+]], 34, 8
379*f818ec9dSZarko Todorovski; CHECK-64: xscvuxddp 1, [[CP64]]
380*f818ec9dSZarko Todorovski; CHECK-32-LABEL: conv2dlbTestui2
381*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx [[CP32:[0-9]+]], 0, 3
382*f818ec9dSZarko Todorovski; CHECK-32: xscvuxddp 1, [[CP32]]
383*f818ec9dSZarko Todorovski  %0 = extractelement <4 x i32> %a, i32 2
384*f818ec9dSZarko Todorovski  %1 = uitofp i32 %0 to double
385*f818ec9dSZarko Todorovski  ret double %1
386*f818ec9dSZarko Todorovski}
387*f818ec9dSZarko Todorovski
388*f818ec9dSZarko Todorovskidefine double @conv2dlbTestui3(<4 x i32> %a) {
389*f818ec9dSZarko Todorovskientry:
390*f818ec9dSZarko Todorovski; CHECK-64-LABEL: conv2dlbTestui3
391*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw [[CP64:[0-9]+]], 34, 12
392*f818ec9dSZarko Todorovski; CHECK-64: xscvuxddp 1, [[CP64]]
393*f818ec9dSZarko Todorovski; CHECK-32-LABEL: conv2dlbTestui3
394*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx [[CP32:[0-9]+]], 0, 3
395*f818ec9dSZarko Todorovski; CHECK-32: xscvuxddp 1, [[CP32]]
396*f818ec9dSZarko Todorovski  %0 = extractelement <4 x i32> %a, i32 3
397*f818ec9dSZarko Todorovski  %1 = uitofp i32 %0 to double
398*f818ec9dSZarko Todorovski  ret double %1
399*f818ec9dSZarko Todorovski}
400*f818ec9dSZarko Todorovski
401*f818ec9dSZarko Todorovski; verify we don't crash for variable elem extract
402*f818ec9dSZarko Todorovskidefine double @conv2dlbTestuiVar(<4 x i32> %a, i32 zeroext %elem) {
403*f818ec9dSZarko Todorovskientry:
404*f818ec9dSZarko Todorovski  %vecext = extractelement <4 x i32> %a, i32 %elem
405*f818ec9dSZarko Todorovski  %conv = uitofp i32 %vecext to double
406*f818ec9dSZarko Todorovski  ret double %conv
407*f818ec9dSZarko Todorovski}
408*f818ec9dSZarko Todorovski
409*f818ec9dSZarko Todorovskidefine <4 x float> @_Z10testInsEltILj0EDv4_ffET0_S1_T1_(<4 x float> %a, float %b) {
410*f818ec9dSZarko Todorovskientry:
411*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj0EDv4_ffET0_S1_T1_
412*f818ec9dSZarko Todorovski; CHECK: xscvdpspn 0, 1
413*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 0, 0, 3
414*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
415*f818ec9dSZarko Todorovski  %vecins = insertelement <4 x float> %a, float %b, i32 0
416*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
417*f818ec9dSZarko Todorovski}
418*f818ec9dSZarko Todorovski
419*f818ec9dSZarko Todorovskidefine <4 x float> @_Z10testInsEltILj1EDv4_ffET0_S1_T1_(<4 x float> %a, float %b) {
420*f818ec9dSZarko Todorovskientry:
421*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj1EDv4_ffET0_S1_T1_
422*f818ec9dSZarko Todorovski; CHECK: xscvdpspn 0, 1
423*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 0, 0, 3
424*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
425*f818ec9dSZarko Todorovski  %vecins = insertelement <4 x float> %a, float %b, i32 1
426*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
427*f818ec9dSZarko Todorovski}
428*f818ec9dSZarko Todorovski
429*f818ec9dSZarko Todorovskidefine <4 x float> @_Z10testInsEltILj2EDv4_ffET0_S1_T1_(<4 x float> %a, float %b) {
430*f818ec9dSZarko Todorovskientry:
431*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj2EDv4_ffET0_S1_T1_
432*f818ec9dSZarko Todorovski; CHECK: xscvdpspn 0, 1
433*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 0, 0, 3
434*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
435*f818ec9dSZarko Todorovski  %vecins = insertelement <4 x float> %a, float %b, i32 2
436*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
437*f818ec9dSZarko Todorovski}
438*f818ec9dSZarko Todorovski
439*f818ec9dSZarko Todorovskidefine <4 x float> @_Z10testInsEltILj3EDv4_ffET0_S1_T1_(<4 x float> %a, float %b) {
440*f818ec9dSZarko Todorovskientry:
441*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj3EDv4_ffET0_S1_T1_
442*f818ec9dSZarko Todorovski; CHECK: xscvdpspn 0, 1
443*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 0, 0, 3
444*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
445*f818ec9dSZarko Todorovski  %vecins = insertelement <4 x float> %a, float %b, i32 3
446*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
447*f818ec9dSZarko Todorovski}
448*f818ec9dSZarko Todorovski
449*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z10testInsEltILj0EDv4_jjET0_S1_T1_(<4 x i32> %a, i32 zeroext %b) {
450*f818ec9dSZarko Todorovskientry:
451*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj0EDv4_jjET0_S1_T1_
452*f818ec9dSZarko Todorovski; CHECK: mtfprwz 0, 3
453*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
454*f818ec9dSZarko Todorovski  %vecins = insertelement <4 x i32> %a, i32 %b, i32 0
455*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
456*f818ec9dSZarko Todorovski}
457*f818ec9dSZarko Todorovski
458*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z10testInsEltILj1EDv4_jjET0_S1_T1_(<4 x i32> %a, i32 zeroext %b) {
459*f818ec9dSZarko Todorovskientry:
460*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj1EDv4_jjET0_S1_T1_
461*f818ec9dSZarko Todorovski; CHECK: mtfprwz 0, 3
462*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
463*f818ec9dSZarko Todorovski  %vecins = insertelement <4 x i32> %a, i32 %b, i32 1
464*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
465*f818ec9dSZarko Todorovski}
466*f818ec9dSZarko Todorovski
467*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z10testInsEltILj2EDv4_jjET0_S1_T1_(<4 x i32> %a, i32 zeroext %b) {
468*f818ec9dSZarko Todorovskientry:
469*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj2EDv4_jjET0_S1_T1_
470*f818ec9dSZarko Todorovski; CHECK: mtfprwz 0, 3
471*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
472*f818ec9dSZarko Todorovski  %vecins = insertelement <4 x i32> %a, i32 %b, i32 2
473*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
474*f818ec9dSZarko Todorovski}
475*f818ec9dSZarko Todorovski
476*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z10testInsEltILj3EDv4_jjET0_S1_T1_(<4 x i32> %a, i32 zeroext %b) {
477*f818ec9dSZarko Todorovskientry:
478*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj3EDv4_jjET0_S1_T1_
479*f818ec9dSZarko Todorovski; CHECK: mtfprwz 0, 3
480*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
481*f818ec9dSZarko Todorovski  %vecins = insertelement <4 x i32> %a, i32 %b, i32 3
482*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
483*f818ec9dSZarko Todorovski}
484*f818ec9dSZarko Todorovski
485*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj0EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
486*f818ec9dSZarko Todorovskientry:
487*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj0EDv4_fET1_S1_S1_
488*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
489*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
490*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 0, i32 5, i32 6, i32 7>
491*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
492*f818ec9dSZarko Todorovski}
493*f818ec9dSZarko Todorovski
494*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj1EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
495*f818ec9dSZarko Todorovskientry:
496*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj1EDv4_fET1_S1_S1_
497*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
498*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 0
499*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 1, i32 5, i32 6, i32 7>
500*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
501*f818ec9dSZarko Todorovski}
502*f818ec9dSZarko Todorovski
503*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj2EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
504*f818ec9dSZarko Todorovskientry:
505*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj2EDv4_fET1_S1_S1_
506*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
507*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
508*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 2, i32 5, i32 6, i32 7>
509*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
510*f818ec9dSZarko Todorovski}
511*f818ec9dSZarko Todorovski
512*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj3EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
513*f818ec9dSZarko Todorovskientry:
514*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj3EDv4_fET1_S1_S1_
515*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
516*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
517*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 3, i32 5, i32 6, i32 7>
518*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
519*f818ec9dSZarko Todorovski}
520*f818ec9dSZarko Todorovski
521*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj0EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
522*f818ec9dSZarko Todorovskientry:
523*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj0EDv4_fET1_S1_S1_
524*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
525*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
526*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 0, i32 6, i32 7>
527*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
528*f818ec9dSZarko Todorovski}
529*f818ec9dSZarko Todorovski
530*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj1EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
531*f818ec9dSZarko Todorovskientry:
532*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj1EDv4_fET1_S1_S1_
533*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
534*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 4
535*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 1, i32 6, i32 7>
536*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
537*f818ec9dSZarko Todorovski}
538*f818ec9dSZarko Todorovski
539*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj2EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
540*f818ec9dSZarko Todorovskientry:
541*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj2EDv4_fET1_S1_S1_
542*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
543*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
544*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 2, i32 6, i32 7>
545*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
546*f818ec9dSZarko Todorovski}
547*f818ec9dSZarko Todorovski
548*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj3EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
549*f818ec9dSZarko Todorovskientry:
550*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj3EDv4_fET1_S1_S1_
551*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
552*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
553*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 3, i32 6, i32 7>
554*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
555*f818ec9dSZarko Todorovski}
556*f818ec9dSZarko Todorovski
557*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj0EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
558*f818ec9dSZarko Todorovskientry:
559*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj0EDv4_fET1_S1_S1_
560*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
561*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
562*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 0, i32 7>
563*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
564*f818ec9dSZarko Todorovski}
565*f818ec9dSZarko Todorovski
566*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj1EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
567*f818ec9dSZarko Todorovskientry:
568*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj1EDv4_fET1_S1_S1_
569*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
570*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 8
571*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 1, i32 7>
572*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
573*f818ec9dSZarko Todorovski}
574*f818ec9dSZarko Todorovski
575*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj2EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
576*f818ec9dSZarko Todorovskientry:
577*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj2EDv4_fET1_S1_S1_
578*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
579*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
580*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 2, i32 7>
581*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
582*f818ec9dSZarko Todorovski}
583*f818ec9dSZarko Todorovski
584*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj3EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
585*f818ec9dSZarko Todorovskientry:
586*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj3EDv4_fET1_S1_S1_
587*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
588*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
589*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 3, i32 7>
590*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
591*f818ec9dSZarko Todorovski}
592*f818ec9dSZarko Todorovski
593*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj0EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
594*f818ec9dSZarko Todorovskientry:
595*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj0EDv4_fET1_S1_S1_
596*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
597*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
598*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 0>
599*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
600*f818ec9dSZarko Todorovski}
601*f818ec9dSZarko Todorovski
602*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj1EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
603*f818ec9dSZarko Todorovskientry:
604*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj1EDv4_fET1_S1_S1_
605*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
606*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 12
607*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 1>
608*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
609*f818ec9dSZarko Todorovski}
610*f818ec9dSZarko Todorovski
611*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj2EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
612*f818ec9dSZarko Todorovskientry:
613*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj2EDv4_fET1_S1_S1_
614*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
615*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
616*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 2>
617*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
618*f818ec9dSZarko Todorovski}
619*f818ec9dSZarko Todorovski
620*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj3EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) {
621*f818ec9dSZarko Todorovskientry:
622*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj3EDv4_fET1_S1_S1_
623*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
624*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
625*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 3>
626*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
627*f818ec9dSZarko Todorovski}
628*f818ec9dSZarko Todorovski
629*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj0EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
630*f818ec9dSZarko Todorovskientry:
631*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj0EDv4_jET1_S1_S1_
632*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
633*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
634*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 0, i32 5, i32 6, i32 7>
635*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
636*f818ec9dSZarko Todorovski}
637*f818ec9dSZarko Todorovski
638*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj1EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
639*f818ec9dSZarko Todorovskientry:
640*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj1EDv4_jET1_S1_S1_
641*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
642*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 0
643*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 1, i32 5, i32 6, i32 7>
644*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
645*f818ec9dSZarko Todorovski}
646*f818ec9dSZarko Todorovski
647*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj2EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
648*f818ec9dSZarko Todorovskientry:
649*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj2EDv4_jET1_S1_S1_
650*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
651*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
652*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 2, i32 5, i32 6, i32 7>
653*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
654*f818ec9dSZarko Todorovski}
655*f818ec9dSZarko Todorovski
656*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj3EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
657*f818ec9dSZarko Todorovskientry:
658*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj3EDv4_jET1_S1_S1_
659*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
660*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0
661*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 3, i32 5, i32 6, i32 7>
662*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
663*f818ec9dSZarko Todorovski}
664*f818ec9dSZarko Todorovski
665*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj0EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
666*f818ec9dSZarko Todorovskientry:
667*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj0EDv4_jET1_S1_S1_
668*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
669*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
670*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 0, i32 6, i32 7>
671*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
672*f818ec9dSZarko Todorovski}
673*f818ec9dSZarko Todorovski
674*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj1EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
675*f818ec9dSZarko Todorovskientry:
676*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj1EDv4_jET1_S1_S1_
677*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
678*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 4
679*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 1, i32 6, i32 7>
680*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
681*f818ec9dSZarko Todorovski}
682*f818ec9dSZarko Todorovski
683*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj2EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
684*f818ec9dSZarko Todorovskientry:
685*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj2EDv4_jET1_S1_S1_
686*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
687*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
688*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 2, i32 6, i32 7>
689*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
690*f818ec9dSZarko Todorovski}
691*f818ec9dSZarko Todorovski
692*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj3EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
693*f818ec9dSZarko Todorovskientry:
694*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj3EDv4_jET1_S1_S1_
695*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
696*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4
697*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 3, i32 6, i32 7>
698*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
699*f818ec9dSZarko Todorovski}
700*f818ec9dSZarko Todorovski
701*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj0EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
702*f818ec9dSZarko Todorovskientry:
703*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj0EDv4_jET1_S1_S1_
704*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
705*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
706*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 0, i32 7>
707*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
708*f818ec9dSZarko Todorovski}
709*f818ec9dSZarko Todorovski
710*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj1EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
711*f818ec9dSZarko Todorovskientry:
712*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj1EDv4_jET1_S1_S1_
713*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
714*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 8
715*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 1, i32 7>
716*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
717*f818ec9dSZarko Todorovski}
718*f818ec9dSZarko Todorovski
719*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj2EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
720*f818ec9dSZarko Todorovskientry:
721*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj2EDv4_jET1_S1_S1_
722*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
723*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
724*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 2, i32 7>
725*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
726*f818ec9dSZarko Todorovski}
727*f818ec9dSZarko Todorovski
728*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj3EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
729*f818ec9dSZarko Todorovskientry:
730*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj3EDv4_jET1_S1_S1_
731*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
732*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8
733*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 3, i32 7>
734*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
735*f818ec9dSZarko Todorovski}
736*f818ec9dSZarko Todorovski
737*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj0EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
738*f818ec9dSZarko Todorovskientry:
739*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj0EDv4_jET1_S1_S1_
740*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3
741*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
742*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 0>
743*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
744*f818ec9dSZarko Todorovski}
745*f818ec9dSZarko Todorovski
746*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj1EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
747*f818ec9dSZarko Todorovskientry:
748*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj1EDv4_jET1_S1_S1_
749*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi
750*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 12
751*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 1>
752*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
753*f818ec9dSZarko Todorovski}
754*f818ec9dSZarko Todorovski
755*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj2EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
756*f818ec9dSZarko Todorovskientry:
757*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj2EDv4_jET1_S1_S1_
758*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1
759*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
760*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 2>
761*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
762*f818ec9dSZarko Todorovski}
763*f818ec9dSZarko Todorovski
764*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj3EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) {
765*f818ec9dSZarko Todorovskientry:
766*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj3EDv4_jET1_S1_S1_
767*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35
768*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12
769*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 3>
770*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
771*f818ec9dSZarko Todorovski}
772*f818ec9dSZarko Todorovskidefine <4 x float> @testSameVecEl0BE(<4 x float> %a) {
773*f818ec9dSZarko Todorovskientry:
774*f818ec9dSZarko Todorovski; CHECK-LABEL: testSameVecEl0BE
775*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 34, 0
776*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 5, i32 1, i32 2, i32 3>
777*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
778*f818ec9dSZarko Todorovski}
779*f818ec9dSZarko Todorovskidefine <4 x float> @testSameVecEl2BE(<4 x float> %a) {
780*f818ec9dSZarko Todorovskientry:
781*f818ec9dSZarko Todorovski; CHECK-LABEL: testSameVecEl2BE
782*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 34, 8
783*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 0, i32 1, i32 5, i32 3>
784*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
785*f818ec9dSZarko Todorovski}
786*f818ec9dSZarko Todorovskidefine <4 x float> @testSameVecEl3BE(<4 x float> %a) {
787*f818ec9dSZarko Todorovskientry:
788*f818ec9dSZarko Todorovski; CHECK-LABEL: testSameVecEl3BE
789*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 34, 12
790*f818ec9dSZarko Todorovski  %vecins = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 0, i32 1, i32 2, i32 5>
791*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
792*f818ec9dSZarko Todorovski}
793*f818ec9dSZarko Todorovskidefine <4 x float> @insertVarF(<4 x float> %a, float %f, i32 %el) {
794*f818ec9dSZarko Todorovskientry:
795*f818ec9dSZarko Todorovski; CHECK-LABEL: insertVarF
796*f818ec9dSZarko Todorovski; CHECK: stfsx 1,
797*f818ec9dSZarko Todorovski; CHECK: lxv
798*f818ec9dSZarko Todorovski  %vecins = insertelement <4 x float> %a, float %f, i32 %el
799*f818ec9dSZarko Todorovski  ret <4 x float> %vecins
800*f818ec9dSZarko Todorovski}
801*f818ec9dSZarko Todorovskidefine <4 x i32> @insertVarI(<4 x i32> %a, i32 %i, i32 %el) {
802*f818ec9dSZarko Todorovskientry:
803*f818ec9dSZarko Todorovski; CHECK-LABEL: insertVarI
804*f818ec9dSZarko Todorovski; CHECK: stwx
805*f818ec9dSZarko Todorovski; CHECK: lxv
806*f818ec9dSZarko Todorovski  %vecins = insertelement <4 x i32> %a, i32 %i, i32 %el
807*f818ec9dSZarko Todorovski  ret <4 x i32> %vecins
808*f818ec9dSZarko Todorovski}
809