blob: ffdda6c3955033bb304bb79680982269b9445e3f [file] [log] [blame]
Karl Schimpf71ba8222014-09-03 09:46:24 -07001; Tests insertelement and extractelement vector instructions.
2
Karl Schimpf2a5324a2014-09-25 09:37:49 -07003; RUN: %p2i -i %s --insts | FileCheck %s
Karl Schimpfaff9fa22014-10-29 14:32:07 -07004; RUN: %l2i -i %s --insts | %ifl FileCheck %s
5; RUN: %lc2i -i %s --insts | %iflc FileCheck %s
Jim Stichnoth0d4fc922015-12-13 21:36:33 -08006; RUN: %p2i -i %s --args -notranslate -timing | \
Karl Schimpf6fcbddd2014-11-06 09:49:24 -08007; RUN: FileCheck --check-prefix=NOIR %s
Karl Schimpf71ba8222014-09-03 09:46:24 -07008
Karl Schimpf57d31ac2015-10-07 09:53:12 -07009define internal void @ExtractV4xi1(<4 x i1> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -070010entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070011 %e0 = extractelement <4 x i1> %v, i32 0
12 %e1 = extractelement <4 x i1> %v, i32 1
13 %e2 = extractelement <4 x i1> %v, i32 2
14 %e3 = extractelement <4 x i1> %v, i32 3
Karl Schimpf71ba8222014-09-03 09:46:24 -070015 ret void
16}
17
Karl Schimpf57d31ac2015-10-07 09:53:12 -070018; CHECK: define internal void @ExtractV4xi1(<4 x i1> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -070019; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070020; CHECK-NEXT: %e0 = extractelement <4 x i1> %v, i32 0
21; CHECK-NEXT: %e1 = extractelement <4 x i1> %v, i32 1
22; CHECK-NEXT: %e2 = extractelement <4 x i1> %v, i32 2
23; CHECK-NEXT: %e3 = extractelement <4 x i1> %v, i32 3
Karl Schimpf71ba8222014-09-03 09:46:24 -070024; CHECK-NEXT: ret void
25; CHECK-NEXT: }
26
Karl Schimpf57d31ac2015-10-07 09:53:12 -070027define internal void @ExtractV8xi1(<8 x i1> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -070028entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070029 %e0 = extractelement <8 x i1> %v, i32 0
30 %e1 = extractelement <8 x i1> %v, i32 1
31 %e2 = extractelement <8 x i1> %v, i32 2
32 %e3 = extractelement <8 x i1> %v, i32 3
33 %e4 = extractelement <8 x i1> %v, i32 4
34 %e5 = extractelement <8 x i1> %v, i32 5
35 %e6 = extractelement <8 x i1> %v, i32 6
36 %e7 = extractelement <8 x i1> %v, i32 7
Karl Schimpf71ba8222014-09-03 09:46:24 -070037 ret void
38}
39
Karl Schimpf57d31ac2015-10-07 09:53:12 -070040; CHECK-NEXT: define internal void @ExtractV8xi1(<8 x i1> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -070041; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070042; CHECK-NEXT: %e0 = extractelement <8 x i1> %v, i32 0
43; CHECK-NEXT: %e1 = extractelement <8 x i1> %v, i32 1
44; CHECK-NEXT: %e2 = extractelement <8 x i1> %v, i32 2
45; CHECK-NEXT: %e3 = extractelement <8 x i1> %v, i32 3
46; CHECK-NEXT: %e4 = extractelement <8 x i1> %v, i32 4
47; CHECK-NEXT: %e5 = extractelement <8 x i1> %v, i32 5
48; CHECK-NEXT: %e6 = extractelement <8 x i1> %v, i32 6
49; CHECK-NEXT: %e7 = extractelement <8 x i1> %v, i32 7
Karl Schimpf71ba8222014-09-03 09:46:24 -070050; CHECK-NEXT: ret void
51; CHECK-NEXT: }
52
Karl Schimpf57d31ac2015-10-07 09:53:12 -070053define internal void @ExtractV16xi1(<16 x i1> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -070054entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070055 %e0 = extractelement <16 x i1> %v, i32 0
56 %e1 = extractelement <16 x i1> %v, i32 1
57 %e2 = extractelement <16 x i1> %v, i32 2
58 %e3 = extractelement <16 x i1> %v, i32 3
59 %e4 = extractelement <16 x i1> %v, i32 4
60 %e5 = extractelement <16 x i1> %v, i32 5
61 %e6 = extractelement <16 x i1> %v, i32 6
62 %e7 = extractelement <16 x i1> %v, i32 7
63 %e8 = extractelement <16 x i1> %v, i32 8
64 %e9 = extractelement <16 x i1> %v, i32 9
65 %e10 = extractelement <16 x i1> %v, i32 10
66 %e11 = extractelement <16 x i1> %v, i32 11
67 %e12 = extractelement <16 x i1> %v, i32 12
68 %e13 = extractelement <16 x i1> %v, i32 13
69 %e14 = extractelement <16 x i1> %v, i32 14
70 %e15 = extractelement <16 x i1> %v, i32 15
Karl Schimpf71ba8222014-09-03 09:46:24 -070071 ret void
72}
73
Karl Schimpf57d31ac2015-10-07 09:53:12 -070074; CHECK-NEXT: define internal void @ExtractV16xi1(<16 x i1> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -070075; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070076; CHECK-NEXT: %e0 = extractelement <16 x i1> %v, i32 0
77; CHECK-NEXT: %e1 = extractelement <16 x i1> %v, i32 1
78; CHECK-NEXT: %e2 = extractelement <16 x i1> %v, i32 2
79; CHECK-NEXT: %e3 = extractelement <16 x i1> %v, i32 3
80; CHECK-NEXT: %e4 = extractelement <16 x i1> %v, i32 4
81; CHECK-NEXT: %e5 = extractelement <16 x i1> %v, i32 5
82; CHECK-NEXT: %e6 = extractelement <16 x i1> %v, i32 6
83; CHECK-NEXT: %e7 = extractelement <16 x i1> %v, i32 7
84; CHECK-NEXT: %e8 = extractelement <16 x i1> %v, i32 8
85; CHECK-NEXT: %e9 = extractelement <16 x i1> %v, i32 9
86; CHECK-NEXT: %e10 = extractelement <16 x i1> %v, i32 10
87; CHECK-NEXT: %e11 = extractelement <16 x i1> %v, i32 11
88; CHECK-NEXT: %e12 = extractelement <16 x i1> %v, i32 12
89; CHECK-NEXT: %e13 = extractelement <16 x i1> %v, i32 13
90; CHECK-NEXT: %e14 = extractelement <16 x i1> %v, i32 14
91; CHECK-NEXT: %e15 = extractelement <16 x i1> %v, i32 15
Karl Schimpf71ba8222014-09-03 09:46:24 -070092; CHECK-NEXT: ret void
93; CHECK-NEXT: }
94
Karl Schimpf57d31ac2015-10-07 09:53:12 -070095define internal void @ExtractV16xi8(<16 x i8> %v, i32 %i) {
Karl Schimpfc132b762014-09-11 09:43:47 -070096entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070097 %e0 = extractelement <16 x i8> %v, i32 0
98 %e1 = extractelement <16 x i8> %v, i32 1
99 %e2 = extractelement <16 x i8> %v, i32 2
100 %e3 = extractelement <16 x i8> %v, i32 3
101 %e4 = extractelement <16 x i8> %v, i32 4
102 %e5 = extractelement <16 x i8> %v, i32 5
103 %e6 = extractelement <16 x i8> %v, i32 6
104 %e7 = extractelement <16 x i8> %v, i32 7
105 %e8 = extractelement <16 x i8> %v, i32 8
106 %e9 = extractelement <16 x i8> %v, i32 9
107 %e10 = extractelement <16 x i8> %v, i32 10
108 %e11 = extractelement <16 x i8> %v, i32 11
109 %e12 = extractelement <16 x i8> %v, i32 12
110 %e13 = extractelement <16 x i8> %v, i32 13
111 %e14 = extractelement <16 x i8> %v, i32 14
112 %e15 = extractelement <16 x i8> %v, i32 15
Karl Schimpf71ba8222014-09-03 09:46:24 -0700113 ret void
114}
115
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700116; CHECK-NEXT: define internal void @ExtractV16xi8(<16 x i8> %v, i32 %i) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700117; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700118; CHECK-NEXT: %e0 = extractelement <16 x i8> %v, i32 0
119; CHECK-NEXT: %e1 = extractelement <16 x i8> %v, i32 1
120; CHECK-NEXT: %e2 = extractelement <16 x i8> %v, i32 2
121; CHECK-NEXT: %e3 = extractelement <16 x i8> %v, i32 3
122; CHECK-NEXT: %e4 = extractelement <16 x i8> %v, i32 4
123; CHECK-NEXT: %e5 = extractelement <16 x i8> %v, i32 5
124; CHECK-NEXT: %e6 = extractelement <16 x i8> %v, i32 6
125; CHECK-NEXT: %e7 = extractelement <16 x i8> %v, i32 7
126; CHECK-NEXT: %e8 = extractelement <16 x i8> %v, i32 8
127; CHECK-NEXT: %e9 = extractelement <16 x i8> %v, i32 9
128; CHECK-NEXT: %e10 = extractelement <16 x i8> %v, i32 10
129; CHECK-NEXT: %e11 = extractelement <16 x i8> %v, i32 11
130; CHECK-NEXT: %e12 = extractelement <16 x i8> %v, i32 12
131; CHECK-NEXT: %e13 = extractelement <16 x i8> %v, i32 13
132; CHECK-NEXT: %e14 = extractelement <16 x i8> %v, i32 14
133; CHECK-NEXT: %e15 = extractelement <16 x i8> %v, i32 15
Karl Schimpf71ba8222014-09-03 09:46:24 -0700134; CHECK-NEXT: ret void
135; CHECK-NEXT: }
136
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700137define internal void @ExtractV8xi16(<8 x i16> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700138entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700139 %e0 = extractelement <8 x i16> %v, i32 0
140 %e1 = extractelement <8 x i16> %v, i32 1
141 %e2 = extractelement <8 x i16> %v, i32 2
142 %e3 = extractelement <8 x i16> %v, i32 3
143 %e4 = extractelement <8 x i16> %v, i32 4
144 %e5 = extractelement <8 x i16> %v, i32 5
145 %e6 = extractelement <8 x i16> %v, i32 6
146 %e7 = extractelement <8 x i16> %v, i32 7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700147 ret void
148}
149
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700150; CHECK-NEXT: define internal void @ExtractV8xi16(<8 x i16> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700151; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700152; CHECK-NEXT: %e0 = extractelement <8 x i16> %v, i32 0
153; CHECK-NEXT: %e1 = extractelement <8 x i16> %v, i32 1
154; CHECK-NEXT: %e2 = extractelement <8 x i16> %v, i32 2
155; CHECK-NEXT: %e3 = extractelement <8 x i16> %v, i32 3
156; CHECK-NEXT: %e4 = extractelement <8 x i16> %v, i32 4
157; CHECK-NEXT: %e5 = extractelement <8 x i16> %v, i32 5
158; CHECK-NEXT: %e6 = extractelement <8 x i16> %v, i32 6
159; CHECK-NEXT: %e7 = extractelement <8 x i16> %v, i32 7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700160; CHECK-NEXT: ret void
161; CHECK-NEXT: }
162
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700163define internal i32 @ExtractV4xi32(<4 x i32> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700164entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700165 %e0 = extractelement <4 x i32> %v, i32 0
166 %e1 = extractelement <4 x i32> %v, i32 1
167 %e2 = extractelement <4 x i32> %v, i32 2
168 %e3 = extractelement <4 x i32> %v, i32 3
169 ret i32 %e0
Karl Schimpf71ba8222014-09-03 09:46:24 -0700170}
171
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700172; CHECK-NEXT: define internal i32 @ExtractV4xi32(<4 x i32> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700173; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700174; CHECK-NEXT: %e0 = extractelement <4 x i32> %v, i32 0
175; CHECK-NEXT: %e1 = extractelement <4 x i32> %v, i32 1
176; CHECK-NEXT: %e2 = extractelement <4 x i32> %v, i32 2
177; CHECK-NEXT: %e3 = extractelement <4 x i32> %v, i32 3
178; CHECK-NEXT: ret i32 %e0
Karl Schimpf71ba8222014-09-03 09:46:24 -0700179; CHECK-NEXT: }
180
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700181define internal float @ExtractV4xfloat(<4 x float> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700182entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700183 %e0 = extractelement <4 x float> %v, i32 0
184 %e1 = extractelement <4 x float> %v, i32 1
185 %e2 = extractelement <4 x float> %v, i32 2
186 %e3 = extractelement <4 x float> %v, i32 3
187 ret float %e0
Karl Schimpf71ba8222014-09-03 09:46:24 -0700188}
189
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700190; CHECK-NEXT: define internal float @ExtractV4xfloat(<4 x float> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700191; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700192; CHECK-NEXT: %e0 = extractelement <4 x float> %v, i32 0
193; CHECK-NEXT: %e1 = extractelement <4 x float> %v, i32 1
194; CHECK-NEXT: %e2 = extractelement <4 x float> %v, i32 2
195; CHECK-NEXT: %e3 = extractelement <4 x float> %v, i32 3
196; CHECK-NEXT: ret float %e0
Karl Schimpf71ba8222014-09-03 09:46:24 -0700197; CHECK-NEXT: }
198
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700199define internal <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700200entry:
Karl Schimpf71ba8222014-09-03 09:46:24 -0700201 %e = trunc i32 %pe to i1
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700202 %r0 = insertelement <4 x i1> %v, i1 %e, i32 0
203 %r1 = insertelement <4 x i1> %v, i1 %e, i32 1
204 %r2 = insertelement <4 x i1> %v, i1 %e, i32 2
205 %r3 = insertelement <4 x i1> %v, i1 %e, i32 3
206 ret <4 x i1> %r3
Karl Schimpf71ba8222014-09-03 09:46:24 -0700207}
208
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700209; CHECK-NEXT: define internal <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700210; CHECK-NEXT: entry:
211; CHECK-NEXT: %e = trunc i32 %pe to i1
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700212; CHECK-NEXT: %r0 = insertelement <4 x i1> %v, i1 %e, i32 0
213; CHECK-NEXT: %r1 = insertelement <4 x i1> %v, i1 %e, i32 1
214; CHECK-NEXT: %r2 = insertelement <4 x i1> %v, i1 %e, i32 2
215; CHECK-NEXT: %r3 = insertelement <4 x i1> %v, i1 %e, i32 3
216; CHECK-NEXT: ret <4 x i1> %r3
Karl Schimpf71ba8222014-09-03 09:46:24 -0700217; CHECK-NEXT: }
218
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700219define internal <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700220entry:
Karl Schimpf71ba8222014-09-03 09:46:24 -0700221 %e = trunc i32 %pe to i1
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700222 %r0 = insertelement <8 x i1> %v, i1 %e, i32 0
223 %r1 = insertelement <8 x i1> %v, i1 %e, i32 1
224 %r2 = insertelement <8 x i1> %v, i1 %e, i32 2
225 %r3 = insertelement <8 x i1> %v, i1 %e, i32 3
226 %r4 = insertelement <8 x i1> %v, i1 %e, i32 4
227 %r5 = insertelement <8 x i1> %v, i1 %e, i32 5
228 %r6 = insertelement <8 x i1> %v, i1 %e, i32 6
229 %r7 = insertelement <8 x i1> %v, i1 %e, i32 7
230 ret <8 x i1> %r7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700231}
232
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700233; CHECK-NEXT: define internal <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700234; CHECK-NEXT: entry:
235; CHECK-NEXT: %e = trunc i32 %pe to i1
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700236; CHECK-NEXT: %r0 = insertelement <8 x i1> %v, i1 %e, i32 0
237; CHECK-NEXT: %r1 = insertelement <8 x i1> %v, i1 %e, i32 1
238; CHECK-NEXT: %r2 = insertelement <8 x i1> %v, i1 %e, i32 2
239; CHECK-NEXT: %r3 = insertelement <8 x i1> %v, i1 %e, i32 3
240; CHECK-NEXT: %r4 = insertelement <8 x i1> %v, i1 %e, i32 4
241; CHECK-NEXT: %r5 = insertelement <8 x i1> %v, i1 %e, i32 5
242; CHECK-NEXT: %r6 = insertelement <8 x i1> %v, i1 %e, i32 6
243; CHECK-NEXT: %r7 = insertelement <8 x i1> %v, i1 %e, i32 7
244; CHECK-NEXT: ret <8 x i1> %r7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700245; CHECK-NEXT: }
246
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700247define internal <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700248entry:
Karl Schimpf71ba8222014-09-03 09:46:24 -0700249 %e = trunc i32 %pe to i1
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700250 %r0 = insertelement <16 x i1> %v, i1 %e, i32 0
251 %r1 = insertelement <16 x i1> %v, i1 %e, i32 1
252 %r2 = insertelement <16 x i1> %v, i1 %e, i32 2
253 %r3 = insertelement <16 x i1> %v, i1 %e, i32 3
254 %r4 = insertelement <16 x i1> %v, i1 %e, i32 4
255 %r5 = insertelement <16 x i1> %v, i1 %e, i32 5
256 %r6 = insertelement <16 x i1> %v, i1 %e, i32 6
257 %r7 = insertelement <16 x i1> %v, i1 %e, i32 7
258 %r8 = insertelement <16 x i1> %v, i1 %e, i32 8
259 %r9 = insertelement <16 x i1> %v, i1 %e, i32 9
260 %r10 = insertelement <16 x i1> %v, i1 %e, i32 10
261 %r11 = insertelement <16 x i1> %v, i1 %e, i32 11
262 %r12 = insertelement <16 x i1> %v, i1 %e, i32 12
263 %r13 = insertelement <16 x i1> %v, i1 %e, i32 13
264 %r14 = insertelement <16 x i1> %v, i1 %e, i32 14
265 %r15 = insertelement <16 x i1> %v, i1 %e, i32 15
266 ret <16 x i1> %r15
Karl Schimpf71ba8222014-09-03 09:46:24 -0700267}
268
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700269; CHECK-NEXT: define internal <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700270; CHECK-NEXT: entry:
271; CHECK-NEXT: %e = trunc i32 %pe to i1
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700272; CHECK-NEXT: %r0 = insertelement <16 x i1> %v, i1 %e, i32 0
273; CHECK-NEXT: %r1 = insertelement <16 x i1> %v, i1 %e, i32 1
274; CHECK-NEXT: %r2 = insertelement <16 x i1> %v, i1 %e, i32 2
275; CHECK-NEXT: %r3 = insertelement <16 x i1> %v, i1 %e, i32 3
276; CHECK-NEXT: %r4 = insertelement <16 x i1> %v, i1 %e, i32 4
277; CHECK-NEXT: %r5 = insertelement <16 x i1> %v, i1 %e, i32 5
278; CHECK-NEXT: %r6 = insertelement <16 x i1> %v, i1 %e, i32 6
279; CHECK-NEXT: %r7 = insertelement <16 x i1> %v, i1 %e, i32 7
280; CHECK-NEXT: %r8 = insertelement <16 x i1> %v, i1 %e, i32 8
281; CHECK-NEXT: %r9 = insertelement <16 x i1> %v, i1 %e, i32 9
282; CHECK-NEXT: %r10 = insertelement <16 x i1> %v, i1 %e, i32 10
283; CHECK-NEXT: %r11 = insertelement <16 x i1> %v, i1 %e, i32 11
284; CHECK-NEXT: %r12 = insertelement <16 x i1> %v, i1 %e, i32 12
285; CHECK-NEXT: %r13 = insertelement <16 x i1> %v, i1 %e, i32 13
286; CHECK-NEXT: %r14 = insertelement <16 x i1> %v, i1 %e, i32 14
287; CHECK-NEXT: %r15 = insertelement <16 x i1> %v, i1 %e, i32 15
288; CHECK-NEXT: ret <16 x i1> %r15
Karl Schimpf71ba8222014-09-03 09:46:24 -0700289; CHECK-NEXT: }
290
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700291define internal <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700292entry:
Karl Schimpf71ba8222014-09-03 09:46:24 -0700293 %e = trunc i32 %pe to i8
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700294 %r0 = insertelement <16 x i8> %v, i8 %e, i32 0
295 %r1 = insertelement <16 x i8> %v, i8 %e, i32 1
296 %r2 = insertelement <16 x i8> %v, i8 %e, i32 2
297 %r3 = insertelement <16 x i8> %v, i8 %e, i32 3
298 %r4 = insertelement <16 x i8> %v, i8 %e, i32 4
299 %r5 = insertelement <16 x i8> %v, i8 %e, i32 5
300 %r6 = insertelement <16 x i8> %v, i8 %e, i32 6
301 %r7 = insertelement <16 x i8> %v, i8 %e, i32 7
302 ret <16 x i8> %r7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700303}
304
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700305; CHECK-NEXT: define internal <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700306; CHECK-NEXT: entry:
307; CHECK-NEXT: %e = trunc i32 %pe to i8
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700308; CHECK-NEXT: %r0 = insertelement <16 x i8> %v, i8 %e, i32 0
309; CHECK-NEXT: %r1 = insertelement <16 x i8> %v, i8 %e, i32 1
310; CHECK-NEXT: %r2 = insertelement <16 x i8> %v, i8 %e, i32 2
311; CHECK-NEXT: %r3 = insertelement <16 x i8> %v, i8 %e, i32 3
312; CHECK-NEXT: %r4 = insertelement <16 x i8> %v, i8 %e, i32 4
313; CHECK-NEXT: %r5 = insertelement <16 x i8> %v, i8 %e, i32 5
314; CHECK-NEXT: %r6 = insertelement <16 x i8> %v, i8 %e, i32 6
315; CHECK-NEXT: %r7 = insertelement <16 x i8> %v, i8 %e, i32 7
316; CHECK-NEXT: ret <16 x i8> %r7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700317; CHECK-NEXT: }
318
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700319define internal <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700320entry:
Karl Schimpf71ba8222014-09-03 09:46:24 -0700321 %e = trunc i32 %pe to i16
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700322 %r0 = insertelement <8 x i16> %v, i16 %e, i32 0
323 %r1 = insertelement <8 x i16> %v, i16 %e, i32 1
324 %r2 = insertelement <8 x i16> %v, i16 %e, i32 2
325 %r3 = insertelement <8 x i16> %v, i16 %e, i32 3
326 %r4 = insertelement <8 x i16> %v, i16 %e, i32 4
327 %r5 = insertelement <8 x i16> %v, i16 %e, i32 5
328 %r6 = insertelement <8 x i16> %v, i16 %e, i32 6
329 %r7 = insertelement <8 x i16> %v, i16 %e, i32 7
330 ret <8 x i16> %r7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700331}
332
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700333; CHECK-NEXT: define internal <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700334; CHECK-NEXT: entry:
335; CHECK-NEXT: %e = trunc i32 %pe to i16
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700336; CHECK-NEXT: %r0 = insertelement <8 x i16> %v, i16 %e, i32 0
337; CHECK-NEXT: %r1 = insertelement <8 x i16> %v, i16 %e, i32 1
338; CHECK-NEXT: %r2 = insertelement <8 x i16> %v, i16 %e, i32 2
339; CHECK-NEXT: %r3 = insertelement <8 x i16> %v, i16 %e, i32 3
340; CHECK-NEXT: %r4 = insertelement <8 x i16> %v, i16 %e, i32 4
341; CHECK-NEXT: %r5 = insertelement <8 x i16> %v, i16 %e, i32 5
342; CHECK-NEXT: %r6 = insertelement <8 x i16> %v, i16 %e, i32 6
343; CHECK-NEXT: %r7 = insertelement <8 x i16> %v, i16 %e, i32 7
344; CHECK-NEXT: ret <8 x i16> %r7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700345; CHECK-NEXT: }
346
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700347define internal <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700348entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700349 %r0 = insertelement <4 x i32> %v, i32 %e, i32 0
350 %r1 = insertelement <4 x i32> %v, i32 %e, i32 1
351 %r2 = insertelement <4 x i32> %v, i32 %e, i32 2
352 %r3 = insertelement <4 x i32> %v, i32 %e, i32 3
353 ret <4 x i32> %r3
Karl Schimpf71ba8222014-09-03 09:46:24 -0700354}
355
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700356; CHECK-NEXT: define internal <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700357; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700358; CHECK-NEXT: %r0 = insertelement <4 x i32> %v, i32 %e, i32 0
359; CHECK-NEXT: %r1 = insertelement <4 x i32> %v, i32 %e, i32 1
360; CHECK-NEXT: %r2 = insertelement <4 x i32> %v, i32 %e, i32 2
361; CHECK-NEXT: %r3 = insertelement <4 x i32> %v, i32 %e, i32 3
362; CHECK-NEXT: ret <4 x i32> %r3
Karl Schimpf71ba8222014-09-03 09:46:24 -0700363; CHECK-NEXT: }
364
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700365define internal <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700366entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700367 %r0 = insertelement <4 x float> %v, float %e, i32 0
368 %r1 = insertelement <4 x float> %v, float %e, i32 1
369 %r2 = insertelement <4 x float> %v, float %e, i32 2
370 %r3 = insertelement <4 x float> %v, float %e, i32 3
371 ret <4 x float> %r3
Karl Schimpf71ba8222014-09-03 09:46:24 -0700372}
373
Karl Schimpf57d31ac2015-10-07 09:53:12 -0700374; CHECK-NEXT: define internal <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700375; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700376; CHECK-NEXT: %r0 = insertelement <4 x float> %v, float %e, i32 0
377; CHECK-NEXT: %r1 = insertelement <4 x float> %v, float %e, i32 1
378; CHECK-NEXT: %r2 = insertelement <4 x float> %v, float %e, i32 2
379; CHECK-NEXT: %r3 = insertelement <4 x float> %v, float %e, i32 3
380; CHECK-NEXT: ret <4 x float> %r3
Karl Schimpf71ba8222014-09-03 09:46:24 -0700381; CHECK-NEXT: }
Karl Schimpf6fcbddd2014-11-06 09:49:24 -0800382
383; NOIR: Total across all functions