xref: /llvm-project/flang/test/Lower/PowerPC/ppc-vec-insert.f90 (revision af06c5f6349beca7411af53e5d8d37a157bb4cf7)
1! RUN: %flang_fc1 -flang-experimental-hlfir -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefixes="LLVMIR","LLVMIR-LE" %s
2! RUN: %flang_fc1 -flang-experimental-hlfir -triple powerpc64-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefixes="LLVMIR","LLVMIR-BE" %s
3! REQUIRES: target=powerpc{{.*}}
4
5! vec_insert
6
7!CHECK-LABEL: vec_insert_testf32
8subroutine vec_insert_testf32(v, x, i1, i2, i4, i8)
9  real(4) :: v
10  vector(real(4)) :: x
11  vector(real(4)) :: r
12  integer(1) :: i1
13  integer(2) :: i2
14  integer(4) :: i4
15  integer(8) :: i8
16  r = vec_insert(v, x, i1)
17
18! LLVMIR: %[[v:.*]] = load float, ptr %{{[0-9]}}, align 4
19! LLVMIR: %[[x:.*]] = load <4 x float>, ptr %{{[0-9]}}, align 16
20! LLVMIR: %[[i1:.*]] = load i8, ptr %{{[0-9]}}, align 1
21! LLVMIR: %[[urem:.*]] = urem i8 %[[i1]], 4
22! LLVMIR-BE: %[[s:.*]] = sub i8 3, %[[urem]]
23! LLVMIR-LE: %[[r:.*]] = insertelement <4 x float> %[[x]], float %[[v]], i8 %[[urem]]
24! LLVMIR-BE: %[[r:.*]] = insertelement <4 x float> %[[x]], float %[[v]], i8 %[[s]]
25! LLVMIR: store <4 x float> %[[r]], ptr %{{[0-9]}}, align 16
26
27  r = vec_insert(v, x, i2)
28
29! LLVMIR: %[[v:.*]] = load float, ptr %{{[0-9]}}, align 4
30! LLVMIR: %[[x:.*]] = load <4 x float>, ptr %{{[0-9]}}, align 16
31! LLVMIR: %[[i2:.*]] = load i16, ptr %{{[0-9]}}, align 2
32! LLVMIR: %[[urem:.*]] = urem i16 %[[i2]], 4
33! LLVMIR-BE: %[[s:.*]] = sub i16 3, %[[urem]]
34! LLVMIR-LE: %[[r:.*]] = insertelement <4 x float> %[[x]], float %[[v]], i16 %[[urem]]
35! LLVMIR-BE: %[[r:.*]] = insertelement <4 x float> %[[x]], float %[[v]], i16 %[[s]]
36! LLVMIR: store <4 x float> %[[r]], ptr %{{[0-9]}}, align 16
37
38  r = vec_insert(v, x, i4)
39
40! LLVMIR: %[[v:.*]] = load float, ptr %{{[0-9]}}, align 4
41! LLVMIR: %[[x:.*]] = load <4 x float>, ptr %{{[0-9]}}, align 16
42! LLVMIR: %[[i4:.*]] = load i32, ptr %{{[0-9]}}, align 4
43! LLVMIR: %[[urem:.*]] = urem i32 %[[i4]], 4
44! LLVMIR-BE: %[[s:.*]] = sub i32 3, %[[urem]]
45! LLVMIR-LE: %[[r:.*]] = insertelement <4 x float> %[[x]], float %[[v]], i32 %[[urem]]
46! LLVMIR-BE: %[[r:.*]] = insertelement <4 x float> %[[x]], float %[[v]], i32 %[[s]]
47! LLVMIR: store <4 x float> %[[r]], ptr %{{[0-9]}}, align 16
48
49  r = vec_insert(v, x, i8)
50
51! LLVMIR: %[[v:.*]] = load float, ptr %{{[0-9]}}, align 4
52! LLVMIR: %[[x:.*]] = load <4 x float>, ptr %{{[0-9]}}, align 16
53! LLVMIR: %[[i8:.*]] = load i64, ptr %{{[0-9]}}, align 8
54! LLVMIR: %[[urem:.*]] = urem i64 %[[i8]], 4
55! LLVMIR-BE: %[[s:.*]] = sub i64 3, %[[urem]]
56! LLVMIR-LE: %[[r:.*]] = insertelement <4 x float> %[[x]], float %[[v]], i64 %[[urem]]
57! LLVMIR-BE: %[[r:.*]] = insertelement <4 x float> %[[x]], float %[[v]], i64 %[[s]]
58! LLVMIR: store <4 x float> %[[r]], ptr %{{[0-9]}}, align 16
59end subroutine vec_insert_testf32
60
61!CHECK-LABEL: vec_insert_testf64
62subroutine vec_insert_testf64(v, x, i1, i2, i4, i8)
63  real(8) :: v
64  vector(real(8)) :: x
65  vector(real(8)) :: r
66  integer(1) :: i1
67  integer(2) :: i2
68  integer(4) :: i4
69  integer(8) :: i8
70  r = vec_insert(v, x, i1)
71
72! LLVMIR: %[[v:.*]] = load double, ptr %{{[0-9]}}, align 8
73! LLVMIR: %[[x:.*]] = load <2 x double>, ptr %{{[0-9]}}, align 16
74! LLVMIR: %[[i1:.*]] = load i8, ptr %{{[0-9]}}, align 1
75! LLVMIR: %[[urem:.*]] = urem i8 %[[i1]], 2
76! LLVMIR-BE: %[[s:.*]] = sub i8 1, %[[urem]]
77! LLVMIR-LE: %[[r:.*]] = insertelement <2 x double> %[[x]], double %[[v]], i8 %[[urem]]
78! LLVMIR-BE: %[[r:.*]] = insertelement <2 x double> %[[x]], double %[[v]], i8 %[[s]]
79! LLVMIR: store <2 x double> %[[r]], ptr %{{[0-9]}}, align 16
80
81  r = vec_insert(v, x, i2)
82
83! LLVMIR: %[[v:.*]] = load double, ptr %{{[0-9]}}, align 8
84! LLVMIR: %[[x:.*]] = load <2 x double>, ptr %{{[0-9]}}, align 16
85! LLVMIR: %[[i2:.*]] = load i16, ptr %{{[0-9]}}, align 2
86! LLVMIR: %[[urem:.*]] = urem i16 %[[i2]], 2
87! LLVMIR-BE: %[[s:.*]] = sub i16 1, %[[urem]]
88! LLVMIR-LE: %[[r:.*]] = insertelement <2 x double> %[[x]], double %[[v]], i16 %[[urem]]
89! LLVMIR-BE: %[[r:.*]] = insertelement <2 x double> %[[x]], double %[[v]], i16 %[[s]]
90! LLVMIR: store <2 x double> %[[r]], ptr %{{[0-9]}}, align 16
91
92  r = vec_insert(v, x, i4)
93
94! LLVMIR: %[[v:.*]] = load double, ptr %{{[0-9]}}, align 8
95! LLVMIR: %[[x:.*]] = load <2 x double>, ptr %{{[0-9]}}, align 16
96! LLVMIR: %[[i4:.*]] = load i32, ptr %{{[0-9]}}, align 4
97! LLVMIR: %[[urem:.*]] = urem i32 %[[i4]], 2
98! LLVMIR-BE: %[[s:.*]] = sub i32 1, %[[urem]]
99! LLVMIR-LE: %[[r:.*]] = insertelement <2 x double> %[[x]], double %[[v]], i32 %[[urem]]
100! LLVMIR-BE: %[[r:.*]] = insertelement <2 x double> %[[x]], double %[[v]], i32 %[[s]]
101! LLVMIR: store <2 x double> %[[r]], ptr %{{[0-9]}}, align 16
102
103  r = vec_insert(v, x, i8)
104
105! LLVMIR: %[[v:.*]] = load double, ptr %{{[0-9]}}, align 8
106! LLVMIR: %[[x:.*]] = load <2 x double>, ptr %{{[0-9]}}, align 16
107! LLVMIR: %[[i8:.*]] = load i64, ptr %{{[0-9]}}, align 8
108! LLVMIR: %[[urem:.*]] = urem i64 %[[i8]], 2
109! LLVMIR-BE: %[[s:.*]] = sub i64 1, %[[urem]]
110! LLVMIR-LE: %[[r:.*]] = insertelement <2 x double> %[[x]], double %[[v]], i64 %[[urem]]
111! LLVMIR-BE: %[[r:.*]] = insertelement <2 x double> %[[x]], double %[[v]], i64 %[[s]]
112! LLVMIR: store <2 x double> %[[r]], ptr %{{[0-9]}}, align 16
113end subroutine vec_insert_testf64
114
115!CHECK-LABEL: vec_insert_testi8
116subroutine vec_insert_testi8(v, x, i1, i2, i4, i8)
117  integer(1) :: v
118  vector(integer(1)) :: x
119  vector(integer(1)) :: r
120  integer(1) :: i1
121  integer(2) :: i2
122  integer(4) :: i4
123  integer(8) :: i8
124  r = vec_insert(v, x, i1)
125
126! LLVMIR: %[[v:.*]] = load i8, ptr %{{[0-9]}}, align 1
127! LLVMIR: %[[x:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 16
128! LLVMIR: %[[i1:.*]] = load i8, ptr %{{[0-9]}}, align 1
129! LLVMIR: %[[urem:.*]] = urem i8 %[[i1]], 16
130! LLVMIR-BE: %[[s:.*]] = sub i8 15, %[[urem]]
131! LLVMIR-LE: %[[r:.*]] = insertelement <16 x i8> %[[x]], i8 %[[v]], i8 %[[urem]]
132! LLVMIR-BE: %[[r:.*]] = insertelement <16 x i8> %[[x]], i8 %[[v]], i8 %[[s]]
133! LLVMIR: store <16 x i8> %[[r]], ptr %{{[0-9]}}, align 16
134
135  r = vec_insert(v, x, i2)
136
137! LLVMIR: %[[v:.*]] = load i8, ptr %{{[0-9]}}, align 1
138! LLVMIR: %[[x:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 16
139! LLVMIR: %[[i2:.*]] = load i16, ptr %{{[0-9]}}, align 2
140! LLVMIR: %[[urem:.*]] = urem i16 %[[i2]], 16
141! LLVMIR-BE: %[[s:.*]] = sub i16 15, %[[urem]]
142! LLVMIR-LE: %[[r:.*]] = insertelement <16 x i8> %[[x]], i8 %[[v]], i16 %[[urem]]
143! LLVMIR-BE: %[[r:.*]] = insertelement <16 x i8> %[[x]], i8 %[[v]], i16 %[[s]]
144! LLVMIR: store <16 x i8> %[[r]], ptr %{{[0-9]}}, align 16
145
146  r = vec_insert(v, x, i4)
147
148! LLVMIR: %[[v:.*]] = load i8, ptr %{{[0-9]}}, align 1
149! LLVMIR: %[[x:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 16
150! LLVMIR: %[[i4:.*]] = load i32, ptr %{{[0-9]}}, align 4
151! LLVMIR: %[[urem:.*]] = urem i32 %[[i4]], 16
152! LLVMIR-BE: %[[s:.*]] = sub i32 15, %[[urem]]
153! LLVMIR-LE: %[[r:.*]] = insertelement <16 x i8> %[[x]], i8 %[[v]], i32 %[[urem]]
154! LLVMIR-BE: %[[r:.*]] = insertelement <16 x i8> %[[x]], i8 %[[v]], i32 %[[s]]
155! LLVMIR: store <16 x i8> %[[r]], ptr %{{[0-9]}}, align 16
156
157  r = vec_insert(v, x, i8)
158
159! LLVMIR: %[[v:.*]] = load i8, ptr %{{[0-9]}}, align 1
160! LLVMIR: %[[x:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 16
161! LLVMIR: %[[i8:.*]] = load i64, ptr %{{[0-9]}}, align 8
162! LLVMIR: %[[urem:.*]] = urem i64 %[[i8]], 16
163! LLVMIR-BE: %[[s:.*]] = sub i64 15, %[[urem]]
164! LLVMIR-LE: %[[r:.*]] = insertelement <16 x i8> %[[x]], i8 %[[v]], i64 %[[urem]]
165! LLVMIR-BE: %[[r:.*]] = insertelement <16 x i8> %[[x]], i8 %[[v]], i64 %[[s]]
166! LLVMIR: store <16 x i8> %[[r]], ptr %{{[0-9]}}, align 16
167end subroutine vec_insert_testi8
168
169!CHECK-LABEL: vec_insert_testi16
170subroutine vec_insert_testi16(v, x, i1, i2, i4, i8)
171  integer(2) :: v
172  vector(integer(2)) :: x
173  vector(integer(2)) :: r
174  integer(1) :: i1
175  integer(2) :: i2
176  integer(4) :: i4
177  integer(8) :: i8
178  r = vec_insert(v, x, i1)
179
180! LLVMIR: %[[v:.*]] = load i16, ptr %{{[0-9]}}, align 2
181! LLVMIR: %[[x:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 16
182! LLVMIR: %[[i1:.*]] = load i8, ptr %{{[0-9]}}, align 1
183! LLVMIR: %[[urem:.*]] = urem i8 %[[i1]], 8
184! LLVMIR-BE: %[[s:.*]] = sub i8 7, %[[urem]]
185! LLVMIR-LE: %[[r:.*]] = insertelement <8 x i16> %[[x]], i16 %[[v]], i8 %[[urem]]
186! LLVMIR-BE: %[[r:.*]] = insertelement <8 x i16> %[[x]], i16 %[[v]], i8 %[[s]]
187! LLVMIR: store <8 x i16> %[[r]], ptr %{{[0-9]}}, align 16
188
189  r = vec_insert(v, x, i2)
190
191! LLVMIR: %[[v:.*]] = load i16, ptr %{{[0-9]}}, align 2
192! LLVMIR: %[[x:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 16
193! LLVMIR: %[[i2:.*]] = load i16, ptr %{{[0-9]}}, align 2
194! LLVMIR: %[[urem:.*]] = urem i16 %[[i2]], 8
195! LLVMIR-BE: %[[s:.*]] = sub i16 7, %[[urem]]
196! LLVMIR-LE: %[[r:.*]] = insertelement <8 x i16> %[[x]], i16 %[[v]], i16 %[[urem]]
197! LLVMIR-BE: %[[r:.*]] = insertelement <8 x i16> %[[x]], i16 %[[v]], i16 %[[s]]
198! LLVMIR: store <8 x i16> %[[r]], ptr %{{[0-9]}}, align 16
199
200  r = vec_insert(v, x, i4)
201
202! LLVMIR: %[[v:.*]] = load i16, ptr %{{[0-9]}}, align 2
203! LLVMIR: %[[x:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 16
204! LLVMIR: %[[i4:.*]] = load i32, ptr %{{[0-9]}}, align 4
205! LLVMIR: %[[urem:.*]] = urem i32 %[[i4]], 8
206! LLVMIR-BE: %[[s:.*]] = sub i32 7, %[[urem]]
207! LLVMIR-LE: %[[r:.*]] = insertelement <8 x i16> %[[x]], i16 %[[v]], i32 %[[urem]]
208! LLVMIR-BE: %[[r:.*]] = insertelement <8 x i16> %[[x]], i16 %[[v]], i32 %[[s]]
209! LLVMIR: store <8 x i16> %[[r]], ptr %{{[0-9]}}, align 16
210
211  r = vec_insert(v, x, i8)
212
213! LLVMIR: %[[v:.*]] = load i16, ptr %{{[0-9]}}, align 2
214! LLVMIR: %[[x:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 16
215! LLVMIR: %[[i8:.*]] = load i64, ptr %{{[0-9]}}, align 8
216! LLVMIR: %[[urem:.*]] = urem i64 %[[i8]], 8
217! LLVMIR-BE: %[[s:.*]] = sub i64 7, %[[urem]]
218! LLVMIR-LE: %[[r:.*]] = insertelement <8 x i16> %[[x]], i16 %[[v]], i64 %[[urem]]
219! LLVMIR-BE: %[[r:.*]] = insertelement <8 x i16> %[[x]], i16 %[[v]], i64 %[[s]]
220! LLVMIR: store <8 x i16> %[[r]], ptr %{{[0-9]}}, align 16
221end subroutine vec_insert_testi16
222
223!CHECK-LABEL: vec_insert_testi32
224subroutine vec_insert_testi32(v, x, i1, i2, i4, i8)
225  integer(4) :: v
226  vector(integer(4)) :: x
227  vector(integer(4)) :: r
228  integer(1) :: i1
229  integer(2) :: i2
230  integer(4) :: i4
231  integer(8) :: i8
232  r = vec_insert(v, x, i1)
233
234! LLVMIR: %[[v:.*]] = load i32, ptr %{{[0-9]}}, align 4
235! LLVMIR: %[[x:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 16
236! LLVMIR: %[[i1:.*]] = load i8, ptr %{{[0-9]}}, align 1
237! LLVMIR: %[[urem:.*]] = urem i8 %[[i1]], 4
238! LLVMIR-BE: %[[s:.*]] = sub i8 3, %[[urem]]
239! LLVMIR-LE: %[[r:.*]] = insertelement <4 x i32> %[[x]], i32 %[[v]], i8 %[[urem]]
240! LLVMIR-BE: %[[r:.*]] = insertelement <4 x i32> %[[x]], i32 %[[v]], i8 %[[s]]
241! LLVMIR: store <4 x i32> %[[r]], ptr %{{[0-9]}}, align 16
242
243  r = vec_insert(v, x, i2)
244
245! LLVMIR: %[[v:.*]] = load i32, ptr %{{[0-9]}}, align 4
246! LLVMIR: %[[x:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 16
247! LLVMIR: %[[i2:.*]] = load i16, ptr %{{[0-9]}}, align 2
248! LLVMIR: %[[urem:.*]] = urem i16 %[[i2]], 4
249! LLVMIR-BE: %[[s:.*]] = sub i16 3, %[[urem]]
250! LLVMIR-LE: %[[r:.*]] = insertelement <4 x i32> %[[x]], i32 %[[v]], i16 %[[urem]]
251! LLVMIR-BE: %[[r:.*]] = insertelement <4 x i32> %[[x]], i32 %[[v]], i16 %[[s]]
252! LLVMIR: store <4 x i32> %[[r]], ptr %{{[0-9]}}, align 16
253
254  r = vec_insert(v, x, i4)
255
256! LLVMIR: %[[v:.*]] = load i32, ptr %{{[0-9]}}, align 4
257! LLVMIR: %[[x:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 16
258! LLVMIR: %[[i4:.*]] = load i32, ptr %{{[0-9]}}, align 4
259! LLVMIR: %[[urem:.*]] = urem i32 %[[i4]], 4
260! LLVMIR-BE: %[[s:.*]] = sub i32 3, %[[urem]]
261! LLVMIR-LE: %[[r:.*]] = insertelement <4 x i32> %[[x]], i32 %[[v]], i32 %[[urem]]
262! LLVMIR-BE: %[[r:.*]] = insertelement <4 x i32> %[[x]], i32 %[[v]], i32 %[[s]]
263! LLVMIR: store <4 x i32> %[[r]], ptr %{{[0-9]}}, align 16
264
265  r = vec_insert(v, x, i8)
266
267! LLVMIR: %[[v:.*]] = load i32, ptr %{{[0-9]}}, align 4
268! LLVMIR: %[[x:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 16
269! LLVMIR: %[[i8:.*]] = load i64, ptr %{{[0-9]}}, align 8
270! LLVMIR: %[[urem:.*]] = urem i64 %[[i8]], 4
271! LLVMIR-BE: %[[s:.*]] = sub i64 3, %[[urem]]
272! LLVMIR-LE: %[[r:.*]] = insertelement <4 x i32> %[[x]], i32 %[[v]], i64 %[[urem]]
273! LLVMIR-BE: %[[r:.*]] = insertelement <4 x i32> %[[x]], i32 %[[v]], i64 %[[s]]
274! LLVMIR: store <4 x i32> %[[r]], ptr %{{[0-9]}}, align 16
275end subroutine vec_insert_testi32
276
277!CHECK-LABEL: vec_insert_testi64
278subroutine vec_insert_testi64(v, x, i1, i2, i4, i8)
279  integer(8) :: v
280  vector(integer(8)) :: x
281  vector(integer(8)) :: r
282  integer(1) :: i1
283  integer(2) :: i2
284  integer(4) :: i4
285  integer(8) :: i8
286  r = vec_insert(v, x, i1)
287
288! LLVMIR: %[[v:.*]] = load i64, ptr %{{[0-9]}}, align 8
289! LLVMIR: %[[x:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16
290! LLVMIR: %[[i1:.*]] = load i8, ptr %{{[0-9]}}, align 1
291! LLVMIR: %[[urem:.*]] = urem i8 %[[i1]], 2
292! LLVMIR-BE: %[[s:.*]] = sub i8 1, %[[urem]]
293! LLVMIR-LE: %[[r:.*]] = insertelement <2 x i64> %[[x]], i64 %[[v]], i8 %[[urem]]
294! LLVMIR-BE: %[[r:.*]] = insertelement <2 x i64> %[[x]], i64 %[[v]], i8 %[[s]]
295! LLVMIR: store <2 x i64> %[[r]], ptr %{{[0-9]}}, align 16
296
297  r = vec_insert(v, x, i2)
298
299! LLVMIR: %[[v:.*]] = load i64, ptr %{{[0-9]}}, align 8
300! LLVMIR: %[[x:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16
301! LLVMIR: %[[i2:.*]] = load i16, ptr %{{[0-9]}}, align 2
302! LLVMIR: %[[urem:.*]] = urem i16 %[[i2]], 2
303! LLVMIR-BE: %[[s:.*]] = sub i16 1, %[[urem]]
304! LLVMIR-LE: %[[r:.*]] = insertelement <2 x i64> %[[x]], i64 %[[v]], i16 %[[urem]]
305! LLVMIR-BE: %[[r:.*]] = insertelement <2 x i64> %[[x]], i64 %[[v]], i16 %[[s]]
306! LLVMIR: store <2 x i64> %[[r]], ptr %{{[0-9]}}, align 16
307
308  r = vec_insert(v, x, i4)
309
310! LLVMIR: %[[v:.*]] = load i64, ptr %{{[0-9]}}, align 8
311! LLVMIR: %[[x:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16
312! LLVMIR: %[[i4:.*]] = load i32, ptr %{{[0-9]}}, align 4
313! LLVMIR: %[[urem:.*]] = urem i32 %[[i4]], 2
314! LLVMIR-BE: %[[s:.*]] = sub i32 1, %[[urem]]
315! LLVMIR-LE: %[[r:.*]] = insertelement <2 x i64> %[[x]], i64 %[[v]], i32 %[[urem]]
316! LLVMIR-BE: %[[r:.*]] = insertelement <2 x i64> %[[x]], i64 %[[v]], i32 %[[s]]
317! LLVMIR: store <2 x i64> %[[r]], ptr %{{[0-9]}}, align 16
318
319  r = vec_insert(v, x, i8)
320
321! LLVMIR: %[[v:.*]] = load i64, ptr %{{[0-9]}}, align 8
322! LLVMIR: %[[x:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16
323! LLVMIR: %[[i8:.*]] = load i64, ptr %{{[0-9]}}, align 8
324! LLVMIR: %[[urem:.*]] = urem i64 %[[i8]], 2
325! LLVMIR-BE: %[[s:.*]] = sub i64 1, %[[urem]]
326! LLVMIR-LE: %[[r:.*]] = insertelement <2 x i64> %[[x]], i64 %[[v]], i64 %[[urem]]
327! LLVMIR-BE: %[[r:.*]] = insertelement <2 x i64> %[[x]], i64 %[[v]], i64 %[[s]]
328! LLVMIR: store <2 x i64> %[[r]], ptr %{{[0-9]}}, align 16
329end subroutine vec_insert_testi64
330