blob: ca01469aa64c477dd45d2c56f01be4cd46b4a6b2 [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
Karl Schimpf6fcbddd2014-11-06 09:49:24 -08006; RUN: %if --need=allow_disable_ir_gen --command \
7; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \
8; RUN: | %if --need=allow_disable_ir_gen --command \
9; RUN: FileCheck --check-prefix=NOIR %s
Karl Schimpf71ba8222014-09-03 09:46:24 -070010
Karl Schimpfaff9fa22014-10-29 14:32:07 -070011define void @ExtractV4xi1(<4 x i1> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -070012entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070013 %e0 = extractelement <4 x i1> %v, i32 0
14 %e1 = extractelement <4 x i1> %v, i32 1
15 %e2 = extractelement <4 x i1> %v, i32 2
16 %e3 = extractelement <4 x i1> %v, i32 3
Karl Schimpf71ba8222014-09-03 09:46:24 -070017 ret void
18}
19
Karl Schimpfaff9fa22014-10-29 14:32:07 -070020; CHECK: define void @ExtractV4xi1(<4 x i1> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -070021; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070022; CHECK-NEXT: %e0 = extractelement <4 x i1> %v, i32 0
23; CHECK-NEXT: %e1 = extractelement <4 x i1> %v, i32 1
24; CHECK-NEXT: %e2 = extractelement <4 x i1> %v, i32 2
25; CHECK-NEXT: %e3 = extractelement <4 x i1> %v, i32 3
Karl Schimpf71ba8222014-09-03 09:46:24 -070026; CHECK-NEXT: ret void
27; CHECK-NEXT: }
28
Karl Schimpfaff9fa22014-10-29 14:32:07 -070029define void @ExtractV8xi1(<8 x i1> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -070030entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070031 %e0 = extractelement <8 x i1> %v, i32 0
32 %e1 = extractelement <8 x i1> %v, i32 1
33 %e2 = extractelement <8 x i1> %v, i32 2
34 %e3 = extractelement <8 x i1> %v, i32 3
35 %e4 = extractelement <8 x i1> %v, i32 4
36 %e5 = extractelement <8 x i1> %v, i32 5
37 %e6 = extractelement <8 x i1> %v, i32 6
38 %e7 = extractelement <8 x i1> %v, i32 7
Karl Schimpf71ba8222014-09-03 09:46:24 -070039 ret void
40}
41
Karl Schimpfaff9fa22014-10-29 14:32:07 -070042; CHECK-NEXT: define void @ExtractV8xi1(<8 x i1> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -070043; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070044; CHECK-NEXT: %e0 = extractelement <8 x i1> %v, i32 0
45; CHECK-NEXT: %e1 = extractelement <8 x i1> %v, i32 1
46; CHECK-NEXT: %e2 = extractelement <8 x i1> %v, i32 2
47; CHECK-NEXT: %e3 = extractelement <8 x i1> %v, i32 3
48; CHECK-NEXT: %e4 = extractelement <8 x i1> %v, i32 4
49; CHECK-NEXT: %e5 = extractelement <8 x i1> %v, i32 5
50; CHECK-NEXT: %e6 = extractelement <8 x i1> %v, i32 6
51; CHECK-NEXT: %e7 = extractelement <8 x i1> %v, i32 7
Karl Schimpf71ba8222014-09-03 09:46:24 -070052; CHECK-NEXT: ret void
53; CHECK-NEXT: }
54
Karl Schimpfaff9fa22014-10-29 14:32:07 -070055define void @ExtractV16xi1(<16 x i1> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -070056entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070057 %e0 = extractelement <16 x i1> %v, i32 0
58 %e1 = extractelement <16 x i1> %v, i32 1
59 %e2 = extractelement <16 x i1> %v, i32 2
60 %e3 = extractelement <16 x i1> %v, i32 3
61 %e4 = extractelement <16 x i1> %v, i32 4
62 %e5 = extractelement <16 x i1> %v, i32 5
63 %e6 = extractelement <16 x i1> %v, i32 6
64 %e7 = extractelement <16 x i1> %v, i32 7
65 %e8 = extractelement <16 x i1> %v, i32 8
66 %e9 = extractelement <16 x i1> %v, i32 9
67 %e10 = extractelement <16 x i1> %v, i32 10
68 %e11 = extractelement <16 x i1> %v, i32 11
69 %e12 = extractelement <16 x i1> %v, i32 12
70 %e13 = extractelement <16 x i1> %v, i32 13
71 %e14 = extractelement <16 x i1> %v, i32 14
72 %e15 = extractelement <16 x i1> %v, i32 15
Karl Schimpf71ba8222014-09-03 09:46:24 -070073 ret void
74}
75
Karl Schimpfaff9fa22014-10-29 14:32:07 -070076; CHECK-NEXT: define void @ExtractV16xi1(<16 x i1> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -070077; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070078; CHECK-NEXT: %e0 = extractelement <16 x i1> %v, i32 0
79; CHECK-NEXT: %e1 = extractelement <16 x i1> %v, i32 1
80; CHECK-NEXT: %e2 = extractelement <16 x i1> %v, i32 2
81; CHECK-NEXT: %e3 = extractelement <16 x i1> %v, i32 3
82; CHECK-NEXT: %e4 = extractelement <16 x i1> %v, i32 4
83; CHECK-NEXT: %e5 = extractelement <16 x i1> %v, i32 5
84; CHECK-NEXT: %e6 = extractelement <16 x i1> %v, i32 6
85; CHECK-NEXT: %e7 = extractelement <16 x i1> %v, i32 7
86; CHECK-NEXT: %e8 = extractelement <16 x i1> %v, i32 8
87; CHECK-NEXT: %e9 = extractelement <16 x i1> %v, i32 9
88; CHECK-NEXT: %e10 = extractelement <16 x i1> %v, i32 10
89; CHECK-NEXT: %e11 = extractelement <16 x i1> %v, i32 11
90; CHECK-NEXT: %e12 = extractelement <16 x i1> %v, i32 12
91; CHECK-NEXT: %e13 = extractelement <16 x i1> %v, i32 13
92; CHECK-NEXT: %e14 = extractelement <16 x i1> %v, i32 14
93; CHECK-NEXT: %e15 = extractelement <16 x i1> %v, i32 15
Karl Schimpf71ba8222014-09-03 09:46:24 -070094; CHECK-NEXT: ret void
95; CHECK-NEXT: }
96
97define void @ExtractV16xi8(<16 x i8> %v, i32 %i) {
Karl Schimpfc132b762014-09-11 09:43:47 -070098entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -070099 %e0 = extractelement <16 x i8> %v, i32 0
100 %e1 = extractelement <16 x i8> %v, i32 1
101 %e2 = extractelement <16 x i8> %v, i32 2
102 %e3 = extractelement <16 x i8> %v, i32 3
103 %e4 = extractelement <16 x i8> %v, i32 4
104 %e5 = extractelement <16 x i8> %v, i32 5
105 %e6 = extractelement <16 x i8> %v, i32 6
106 %e7 = extractelement <16 x i8> %v, i32 7
107 %e8 = extractelement <16 x i8> %v, i32 8
108 %e9 = extractelement <16 x i8> %v, i32 9
109 %e10 = extractelement <16 x i8> %v, i32 10
110 %e11 = extractelement <16 x i8> %v, i32 11
111 %e12 = extractelement <16 x i8> %v, i32 12
112 %e13 = extractelement <16 x i8> %v, i32 13
113 %e14 = extractelement <16 x i8> %v, i32 14
114 %e15 = extractelement <16 x i8> %v, i32 15
Karl Schimpf71ba8222014-09-03 09:46:24 -0700115 ret void
116}
117
Karl Schimpfc132b762014-09-11 09:43:47 -0700118; CHECK-NEXT: define void @ExtractV16xi8(<16 x i8> %v, i32 %i) {
119; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700120; CHECK-NEXT: %e0 = extractelement <16 x i8> %v, i32 0
121; CHECK-NEXT: %e1 = extractelement <16 x i8> %v, i32 1
122; CHECK-NEXT: %e2 = extractelement <16 x i8> %v, i32 2
123; CHECK-NEXT: %e3 = extractelement <16 x i8> %v, i32 3
124; CHECK-NEXT: %e4 = extractelement <16 x i8> %v, i32 4
125; CHECK-NEXT: %e5 = extractelement <16 x i8> %v, i32 5
126; CHECK-NEXT: %e6 = extractelement <16 x i8> %v, i32 6
127; CHECK-NEXT: %e7 = extractelement <16 x i8> %v, i32 7
128; CHECK-NEXT: %e8 = extractelement <16 x i8> %v, i32 8
129; CHECK-NEXT: %e9 = extractelement <16 x i8> %v, i32 9
130; CHECK-NEXT: %e10 = extractelement <16 x i8> %v, i32 10
131; CHECK-NEXT: %e11 = extractelement <16 x i8> %v, i32 11
132; CHECK-NEXT: %e12 = extractelement <16 x i8> %v, i32 12
133; CHECK-NEXT: %e13 = extractelement <16 x i8> %v, i32 13
134; CHECK-NEXT: %e14 = extractelement <16 x i8> %v, i32 14
135; CHECK-NEXT: %e15 = extractelement <16 x i8> %v, i32 15
Karl Schimpf71ba8222014-09-03 09:46:24 -0700136; CHECK-NEXT: ret void
137; CHECK-NEXT: }
138
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700139define void @ExtractV8xi16(<8 x i16> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700140entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700141 %e0 = extractelement <8 x i16> %v, i32 0
142 %e1 = extractelement <8 x i16> %v, i32 1
143 %e2 = extractelement <8 x i16> %v, i32 2
144 %e3 = extractelement <8 x i16> %v, i32 3
145 %e4 = extractelement <8 x i16> %v, i32 4
146 %e5 = extractelement <8 x i16> %v, i32 5
147 %e6 = extractelement <8 x i16> %v, i32 6
148 %e7 = extractelement <8 x i16> %v, i32 7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700149 ret void
150}
151
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700152; CHECK-NEXT: define void @ExtractV8xi16(<8 x i16> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700153; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700154; CHECK-NEXT: %e0 = extractelement <8 x i16> %v, i32 0
155; CHECK-NEXT: %e1 = extractelement <8 x i16> %v, i32 1
156; CHECK-NEXT: %e2 = extractelement <8 x i16> %v, i32 2
157; CHECK-NEXT: %e3 = extractelement <8 x i16> %v, i32 3
158; CHECK-NEXT: %e4 = extractelement <8 x i16> %v, i32 4
159; CHECK-NEXT: %e5 = extractelement <8 x i16> %v, i32 5
160; CHECK-NEXT: %e6 = extractelement <8 x i16> %v, i32 6
161; CHECK-NEXT: %e7 = extractelement <8 x i16> %v, i32 7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700162; CHECK-NEXT: ret void
163; CHECK-NEXT: }
164
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700165define i32 @ExtractV4xi32(<4 x i32> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700166entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700167 %e0 = extractelement <4 x i32> %v, i32 0
168 %e1 = extractelement <4 x i32> %v, i32 1
169 %e2 = extractelement <4 x i32> %v, i32 2
170 %e3 = extractelement <4 x i32> %v, i32 3
171 ret i32 %e0
Karl Schimpf71ba8222014-09-03 09:46:24 -0700172}
173
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700174; CHECK-NEXT: define i32 @ExtractV4xi32(<4 x i32> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700175; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700176; CHECK-NEXT: %e0 = extractelement <4 x i32> %v, i32 0
177; CHECK-NEXT: %e1 = extractelement <4 x i32> %v, i32 1
178; CHECK-NEXT: %e2 = extractelement <4 x i32> %v, i32 2
179; CHECK-NEXT: %e3 = extractelement <4 x i32> %v, i32 3
180; CHECK-NEXT: ret i32 %e0
Karl Schimpf71ba8222014-09-03 09:46:24 -0700181; CHECK-NEXT: }
182
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700183define float @ExtractV4xfloat(<4 x float> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700184entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700185 %e0 = extractelement <4 x float> %v, i32 0
186 %e1 = extractelement <4 x float> %v, i32 1
187 %e2 = extractelement <4 x float> %v, i32 2
188 %e3 = extractelement <4 x float> %v, i32 3
189 ret float %e0
Karl Schimpf71ba8222014-09-03 09:46:24 -0700190}
191
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700192; CHECK-NEXT: define float @ExtractV4xfloat(<4 x float> %v) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700193; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700194; CHECK-NEXT: %e0 = extractelement <4 x float> %v, i32 0
195; CHECK-NEXT: %e1 = extractelement <4 x float> %v, i32 1
196; CHECK-NEXT: %e2 = extractelement <4 x float> %v, i32 2
197; CHECK-NEXT: %e3 = extractelement <4 x float> %v, i32 3
198; CHECK-NEXT: ret float %e0
Karl Schimpf71ba8222014-09-03 09:46:24 -0700199; CHECK-NEXT: }
200
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700201define <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700202entry:
Karl Schimpf71ba8222014-09-03 09:46:24 -0700203 %e = trunc i32 %pe to i1
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700204 %r0 = insertelement <4 x i1> %v, i1 %e, i32 0
205 %r1 = insertelement <4 x i1> %v, i1 %e, i32 1
206 %r2 = insertelement <4 x i1> %v, i1 %e, i32 2
207 %r3 = insertelement <4 x i1> %v, i1 %e, i32 3
208 ret <4 x i1> %r3
Karl Schimpf71ba8222014-09-03 09:46:24 -0700209}
210
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700211; CHECK-NEXT: define <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700212; CHECK-NEXT: entry:
213; CHECK-NEXT: %e = trunc i32 %pe to i1
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700214; CHECK-NEXT: %r0 = insertelement <4 x i1> %v, i1 %e, i32 0
215; CHECK-NEXT: %r1 = insertelement <4 x i1> %v, i1 %e, i32 1
216; CHECK-NEXT: %r2 = insertelement <4 x i1> %v, i1 %e, i32 2
217; CHECK-NEXT: %r3 = insertelement <4 x i1> %v, i1 %e, i32 3
218; CHECK-NEXT: ret <4 x i1> %r3
Karl Schimpf71ba8222014-09-03 09:46:24 -0700219; CHECK-NEXT: }
220
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700221define <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700222entry:
Karl Schimpf71ba8222014-09-03 09:46:24 -0700223 %e = trunc i32 %pe to i1
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700224 %r0 = insertelement <8 x i1> %v, i1 %e, i32 0
225 %r1 = insertelement <8 x i1> %v, i1 %e, i32 1
226 %r2 = insertelement <8 x i1> %v, i1 %e, i32 2
227 %r3 = insertelement <8 x i1> %v, i1 %e, i32 3
228 %r4 = insertelement <8 x i1> %v, i1 %e, i32 4
229 %r5 = insertelement <8 x i1> %v, i1 %e, i32 5
230 %r6 = insertelement <8 x i1> %v, i1 %e, i32 6
231 %r7 = insertelement <8 x i1> %v, i1 %e, i32 7
232 ret <8 x i1> %r7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700233}
234
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700235; CHECK-NEXT: define <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700236; CHECK-NEXT: entry:
237; CHECK-NEXT: %e = trunc i32 %pe to i1
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700238; CHECK-NEXT: %r0 = insertelement <8 x i1> %v, i1 %e, i32 0
239; CHECK-NEXT: %r1 = insertelement <8 x i1> %v, i1 %e, i32 1
240; CHECK-NEXT: %r2 = insertelement <8 x i1> %v, i1 %e, i32 2
241; CHECK-NEXT: %r3 = insertelement <8 x i1> %v, i1 %e, i32 3
242; CHECK-NEXT: %r4 = insertelement <8 x i1> %v, i1 %e, i32 4
243; CHECK-NEXT: %r5 = insertelement <8 x i1> %v, i1 %e, i32 5
244; CHECK-NEXT: %r6 = insertelement <8 x i1> %v, i1 %e, i32 6
245; CHECK-NEXT: %r7 = insertelement <8 x i1> %v, i1 %e, i32 7
246; CHECK-NEXT: ret <8 x i1> %r7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700247; CHECK-NEXT: }
248
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700249define <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700250entry:
Karl Schimpf71ba8222014-09-03 09:46:24 -0700251 %e = trunc i32 %pe to i1
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700252 %r0 = insertelement <16 x i1> %v, i1 %e, i32 0
253 %r1 = insertelement <16 x i1> %v, i1 %e, i32 1
254 %r2 = insertelement <16 x i1> %v, i1 %e, i32 2
255 %r3 = insertelement <16 x i1> %v, i1 %e, i32 3
256 %r4 = insertelement <16 x i1> %v, i1 %e, i32 4
257 %r5 = insertelement <16 x i1> %v, i1 %e, i32 5
258 %r6 = insertelement <16 x i1> %v, i1 %e, i32 6
259 %r7 = insertelement <16 x i1> %v, i1 %e, i32 7
260 %r8 = insertelement <16 x i1> %v, i1 %e, i32 8
261 %r9 = insertelement <16 x i1> %v, i1 %e, i32 9
262 %r10 = insertelement <16 x i1> %v, i1 %e, i32 10
263 %r11 = insertelement <16 x i1> %v, i1 %e, i32 11
264 %r12 = insertelement <16 x i1> %v, i1 %e, i32 12
265 %r13 = insertelement <16 x i1> %v, i1 %e, i32 13
266 %r14 = insertelement <16 x i1> %v, i1 %e, i32 14
267 %r15 = insertelement <16 x i1> %v, i1 %e, i32 15
268 ret <16 x i1> %r15
Karl Schimpf71ba8222014-09-03 09:46:24 -0700269}
270
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700271; CHECK-NEXT: define <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700272; CHECK-NEXT: entry:
273; CHECK-NEXT: %e = trunc i32 %pe to i1
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700274; CHECK-NEXT: %r0 = insertelement <16 x i1> %v, i1 %e, i32 0
275; CHECK-NEXT: %r1 = insertelement <16 x i1> %v, i1 %e, i32 1
276; CHECK-NEXT: %r2 = insertelement <16 x i1> %v, i1 %e, i32 2
277; CHECK-NEXT: %r3 = insertelement <16 x i1> %v, i1 %e, i32 3
278; CHECK-NEXT: %r4 = insertelement <16 x i1> %v, i1 %e, i32 4
279; CHECK-NEXT: %r5 = insertelement <16 x i1> %v, i1 %e, i32 5
280; CHECK-NEXT: %r6 = insertelement <16 x i1> %v, i1 %e, i32 6
281; CHECK-NEXT: %r7 = insertelement <16 x i1> %v, i1 %e, i32 7
282; CHECK-NEXT: %r8 = insertelement <16 x i1> %v, i1 %e, i32 8
283; CHECK-NEXT: %r9 = insertelement <16 x i1> %v, i1 %e, i32 9
284; CHECK-NEXT: %r10 = insertelement <16 x i1> %v, i1 %e, i32 10
285; CHECK-NEXT: %r11 = insertelement <16 x i1> %v, i1 %e, i32 11
286; CHECK-NEXT: %r12 = insertelement <16 x i1> %v, i1 %e, i32 12
287; CHECK-NEXT: %r13 = insertelement <16 x i1> %v, i1 %e, i32 13
288; CHECK-NEXT: %r14 = insertelement <16 x i1> %v, i1 %e, i32 14
289; CHECK-NEXT: %r15 = insertelement <16 x i1> %v, i1 %e, i32 15
290; CHECK-NEXT: ret <16 x i1> %r15
Karl Schimpf71ba8222014-09-03 09:46:24 -0700291; CHECK-NEXT: }
292
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700293define <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700294entry:
Karl Schimpf71ba8222014-09-03 09:46:24 -0700295 %e = trunc i32 %pe to i8
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700296 %r0 = insertelement <16 x i8> %v, i8 %e, i32 0
297 %r1 = insertelement <16 x i8> %v, i8 %e, i32 1
298 %r2 = insertelement <16 x i8> %v, i8 %e, i32 2
299 %r3 = insertelement <16 x i8> %v, i8 %e, i32 3
300 %r4 = insertelement <16 x i8> %v, i8 %e, i32 4
301 %r5 = insertelement <16 x i8> %v, i8 %e, i32 5
302 %r6 = insertelement <16 x i8> %v, i8 %e, i32 6
303 %r7 = insertelement <16 x i8> %v, i8 %e, i32 7
304 ret <16 x i8> %r7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700305}
306
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700307; CHECK-NEXT: define <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700308; CHECK-NEXT: entry:
309; CHECK-NEXT: %e = trunc i32 %pe to i8
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700310; CHECK-NEXT: %r0 = insertelement <16 x i8> %v, i8 %e, i32 0
311; CHECK-NEXT: %r1 = insertelement <16 x i8> %v, i8 %e, i32 1
312; CHECK-NEXT: %r2 = insertelement <16 x i8> %v, i8 %e, i32 2
313; CHECK-NEXT: %r3 = insertelement <16 x i8> %v, i8 %e, i32 3
314; CHECK-NEXT: %r4 = insertelement <16 x i8> %v, i8 %e, i32 4
315; CHECK-NEXT: %r5 = insertelement <16 x i8> %v, i8 %e, i32 5
316; CHECK-NEXT: %r6 = insertelement <16 x i8> %v, i8 %e, i32 6
317; CHECK-NEXT: %r7 = insertelement <16 x i8> %v, i8 %e, i32 7
318; CHECK-NEXT: ret <16 x i8> %r7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700319; CHECK-NEXT: }
320
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700321define <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700322entry:
Karl Schimpf71ba8222014-09-03 09:46:24 -0700323 %e = trunc i32 %pe to i16
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700324 %r0 = insertelement <8 x i16> %v, i16 %e, i32 0
325 %r1 = insertelement <8 x i16> %v, i16 %e, i32 1
326 %r2 = insertelement <8 x i16> %v, i16 %e, i32 2
327 %r3 = insertelement <8 x i16> %v, i16 %e, i32 3
328 %r4 = insertelement <8 x i16> %v, i16 %e, i32 4
329 %r5 = insertelement <8 x i16> %v, i16 %e, i32 5
330 %r6 = insertelement <8 x i16> %v, i16 %e, i32 6
331 %r7 = insertelement <8 x i16> %v, i16 %e, i32 7
332 ret <8 x i16> %r7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700333}
334
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700335; CHECK-NEXT: define <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700336; CHECK-NEXT: entry:
337; CHECK-NEXT: %e = trunc i32 %pe to i16
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700338; CHECK-NEXT: %r0 = insertelement <8 x i16> %v, i16 %e, i32 0
339; CHECK-NEXT: %r1 = insertelement <8 x i16> %v, i16 %e, i32 1
340; CHECK-NEXT: %r2 = insertelement <8 x i16> %v, i16 %e, i32 2
341; CHECK-NEXT: %r3 = insertelement <8 x i16> %v, i16 %e, i32 3
342; CHECK-NEXT: %r4 = insertelement <8 x i16> %v, i16 %e, i32 4
343; CHECK-NEXT: %r5 = insertelement <8 x i16> %v, i16 %e, i32 5
344; CHECK-NEXT: %r6 = insertelement <8 x i16> %v, i16 %e, i32 6
345; CHECK-NEXT: %r7 = insertelement <8 x i16> %v, i16 %e, i32 7
346; CHECK-NEXT: ret <8 x i16> %r7
Karl Schimpf71ba8222014-09-03 09:46:24 -0700347; CHECK-NEXT: }
348
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700349define <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700350entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700351 %r0 = insertelement <4 x i32> %v, i32 %e, i32 0
352 %r1 = insertelement <4 x i32> %v, i32 %e, i32 1
353 %r2 = insertelement <4 x i32> %v, i32 %e, i32 2
354 %r3 = insertelement <4 x i32> %v, i32 %e, i32 3
355 ret <4 x i32> %r3
Karl Schimpf71ba8222014-09-03 09:46:24 -0700356}
357
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700358; CHECK-NEXT: define <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700359; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700360; CHECK-NEXT: %r0 = insertelement <4 x i32> %v, i32 %e, i32 0
361; CHECK-NEXT: %r1 = insertelement <4 x i32> %v, i32 %e, i32 1
362; CHECK-NEXT: %r2 = insertelement <4 x i32> %v, i32 %e, i32 2
363; CHECK-NEXT: %r3 = insertelement <4 x i32> %v, i32 %e, i32 3
364; CHECK-NEXT: ret <4 x i32> %r3
Karl Schimpf71ba8222014-09-03 09:46:24 -0700365; CHECK-NEXT: }
366
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700367define <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700368entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700369 %r0 = insertelement <4 x float> %v, float %e, i32 0
370 %r1 = insertelement <4 x float> %v, float %e, i32 1
371 %r2 = insertelement <4 x float> %v, float %e, i32 2
372 %r3 = insertelement <4 x float> %v, float %e, i32 3
373 ret <4 x float> %r3
Karl Schimpf71ba8222014-09-03 09:46:24 -0700374}
375
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700376; CHECK-NEXT: define <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) {
Karl Schimpfc132b762014-09-11 09:43:47 -0700377; CHECK-NEXT: entry:
Karl Schimpfaff9fa22014-10-29 14:32:07 -0700378; CHECK-NEXT: %r0 = insertelement <4 x float> %v, float %e, i32 0
379; CHECK-NEXT: %r1 = insertelement <4 x float> %v, float %e, i32 1
380; CHECK-NEXT: %r2 = insertelement <4 x float> %v, float %e, i32 2
381; CHECK-NEXT: %r3 = insertelement <4 x float> %v, float %e, i32 3
382; CHECK-NEXT: ret <4 x float> %r3
Karl Schimpf71ba8222014-09-03 09:46:24 -0700383; CHECK-NEXT: }
Karl Schimpf6fcbddd2014-11-06 09:49:24 -0800384
385; NOIR: Total across all functions