OSDN Git Service

Subzero: Replace global pointers to allocation functions
[android-x86/external-swiftshader.git] / tests_lit / reader_tests / insertextract.ll
1 ; Tests insertelement and extractelement vector instructions.
2
3 ; RUN: %p2i -i %s --insts | FileCheck %s
4 ; RUN: %l2i -i %s --insts | %ifl FileCheck %s
5 ; RUN: %lc2i -i %s --insts | %iflc FileCheck %s
6 ; RUN:   %p2i -i %s --args -notranslate -timing | \
7 ; RUN:   FileCheck --check-prefix=NOIR %s
8
9 define internal void @ExtractV4xi1(<4 x i1> %v) {
10 entry:
11   %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
15   ret void
16 }
17
18 ; CHECK:      define internal void @ExtractV4xi1(<4 x i1> %v) {
19 ; CHECK-NEXT: entry:
20 ; 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
24 ; CHECK-NEXT:   ret void
25 ; CHECK-NEXT: }
26
27 define internal void @ExtractV8xi1(<8 x i1> %v) {
28 entry:
29   %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
37   ret void
38 }
39
40 ; CHECK-NEXT: define internal void @ExtractV8xi1(<8 x i1> %v) {
41 ; CHECK-NEXT: entry:
42 ; 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
50 ; CHECK-NEXT:   ret void
51 ; CHECK-NEXT: }
52
53 define internal void @ExtractV16xi1(<16 x i1> %v) {
54 entry:
55   %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
71   ret void
72 }
73
74 ; CHECK-NEXT: define internal void @ExtractV16xi1(<16 x i1> %v) {
75 ; CHECK-NEXT: entry:
76 ; 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
92 ; CHECK-NEXT:   ret void
93 ; CHECK-NEXT: }
94
95 define internal void @ExtractV16xi8(<16 x i8> %v, i32 %i) {
96 entry:
97   %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
113   ret void
114 }
115
116 ; CHECK-NEXT: define internal void @ExtractV16xi8(<16 x i8> %v, i32 %i) {
117 ; CHECK-NEXT: entry:
118 ; 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
134 ; CHECK-NEXT:   ret void
135 ; CHECK-NEXT: }
136
137 define internal void @ExtractV8xi16(<8 x i16> %v) {
138 entry:
139   %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
147   ret void
148 }
149
150 ; CHECK-NEXT: define internal void @ExtractV8xi16(<8 x i16> %v) {
151 ; CHECK-NEXT: entry:
152 ; 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
160 ; CHECK-NEXT:   ret void
161 ; CHECK-NEXT: }
162
163 define internal i32 @ExtractV4xi32(<4 x i32> %v) {
164 entry:
165   %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
170 }
171
172 ; CHECK-NEXT: define internal i32 @ExtractV4xi32(<4 x i32> %v) {
173 ; CHECK-NEXT: entry:
174 ; 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
179 ; CHECK-NEXT: }
180
181 define internal float @ExtractV4xfloat(<4 x float> %v) {
182 entry:
183   %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
188 }
189
190 ; CHECK-NEXT: define internal float @ExtractV4xfloat(<4 x float> %v) {
191 ; CHECK-NEXT: entry:
192 ; 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
197 ; CHECK-NEXT: }
198
199 define internal <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) {
200 entry:
201   %e = trunc i32 %pe to i1
202   %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
207 }
208
209 ; CHECK-NEXT: define internal <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) {
210 ; CHECK-NEXT: entry:
211 ; CHECK-NEXT:   %e = trunc i32 %pe to i1
212 ; 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
217 ; CHECK-NEXT: }
218
219 define internal <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) {
220 entry:
221   %e = trunc i32 %pe to i1
222   %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
231 }
232
233 ; CHECK-NEXT: define internal <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) {
234 ; CHECK-NEXT: entry:
235 ; CHECK-NEXT:   %e = trunc i32 %pe to i1
236 ; 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
245 ; CHECK-NEXT: }
246
247 define internal <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) {
248 entry:
249   %e = trunc i32 %pe to i1
250   %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
267 }
268
269 ; CHECK-NEXT: define internal <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) {
270 ; CHECK-NEXT: entry:
271 ; CHECK-NEXT:   %e = trunc i32 %pe to i1
272 ; 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
289 ; CHECK-NEXT: }
290
291 define internal <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) {
292 entry:
293   %e = trunc i32 %pe to i8
294   %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
303 }
304
305 ; CHECK-NEXT: define internal <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) {
306 ; CHECK-NEXT: entry:
307 ; CHECK-NEXT:   %e = trunc i32 %pe to i8
308 ; 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
317 ; CHECK-NEXT: }
318
319 define internal <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) {
320 entry:
321   %e = trunc i32 %pe to i16
322   %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
331 }
332
333 ; CHECK-NEXT: define internal <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) {
334 ; CHECK-NEXT: entry:
335 ; CHECK-NEXT:   %e = trunc i32 %pe to i16
336 ; 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
345 ; CHECK-NEXT: }
346
347 define internal <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) {
348 entry:
349   %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
354 }
355
356 ; CHECK-NEXT: define internal <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) {
357 ; CHECK-NEXT: entry:
358 ; 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
363 ; CHECK-NEXT: }
364
365 define internal <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) {
366 entry:
367   %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
372 }
373
374 ; CHECK-NEXT: define internal <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) {
375 ; CHECK-NEXT: entry:
376 ; 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
381 ; CHECK-NEXT: }
382
383 ; NOIR: Total across all functions