133fc675eSKrzysztof Parzyszek; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
233fc675eSKrzysztof Parzyszek; RUN: llc -march=hexagon < %s | FileCheck %s
333fc675eSKrzysztof Parzyszek
433fc675eSKrzysztof Parzyszekdefine void @f0(<128 x i8>* %a0, <128 x i8>* %a1) #0 {
533fc675eSKrzysztof Parzyszek; CHECK-LABEL: f0:
633fc675eSKrzysztof Parzyszek; CHECK:       // %bb.0:
733fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
833fc675eSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
933fc675eSKrzysztof Parzyszek; CHECK-NEXT:     v0.cur = vmem(r0+#1)
1033fc675eSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#2) = v0
1133fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
1233fc675eSKrzysztof Parzyszek  %v0 = getelementptr <128 x i8>, <128 x i8>* %a0, i32 1
1333fc675eSKrzysztof Parzyszek  %v1 = load <128 x i8>, <128 x i8>* %v0, align 128
1433fc675eSKrzysztof Parzyszek  %v2 = getelementptr <128 x i8>, <128 x i8>* %a1, i32 2
1533fc675eSKrzysztof Parzyszek  store <128 x i8> %v1, <128 x i8>* %v2, align 128
1633fc675eSKrzysztof Parzyszek  ret void
1733fc675eSKrzysztof Parzyszek}
1833fc675eSKrzysztof Parzyszek
1933fc675eSKrzysztof Parzyszekdefine void @f1(<64 x i16>* %a0, <64 x i16>* %a1) #0 {
2033fc675eSKrzysztof Parzyszek; CHECK-LABEL: f1:
2133fc675eSKrzysztof Parzyszek; CHECK:       // %bb.0:
2233fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
2333fc675eSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
2433fc675eSKrzysztof Parzyszek; CHECK-NEXT:     v0.cur = vmem(r0+#1)
2533fc675eSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#2) = v0
2633fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
2733fc675eSKrzysztof Parzyszek  %v0 = getelementptr <64 x i16>, <64 x i16>* %a0, i32 1
2833fc675eSKrzysztof Parzyszek  %v1 = load <64 x i16>, <64 x i16>* %v0, align 128
2933fc675eSKrzysztof Parzyszek  %v2 = getelementptr <64 x i16>, <64 x i16>* %a1, i32 2
3033fc675eSKrzysztof Parzyszek  store <64 x i16> %v1, <64 x i16>* %v2, align 128
3133fc675eSKrzysztof Parzyszek  ret void
3233fc675eSKrzysztof Parzyszek}
3333fc675eSKrzysztof Parzyszek
3433fc675eSKrzysztof Parzyszekdefine void @f2(<32 x i32>* %a0, <32 x i32>* %a1) #0 {
3533fc675eSKrzysztof Parzyszek; CHECK-LABEL: f2:
3633fc675eSKrzysztof Parzyszek; CHECK:       // %bb.0:
3733fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
3833fc675eSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
3933fc675eSKrzysztof Parzyszek; CHECK-NEXT:     v0.cur = vmem(r0+#1)
4033fc675eSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#2) = v0
4133fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
4233fc675eSKrzysztof Parzyszek  %v0 = getelementptr <32 x i32>, <32 x i32>* %a0, i32 1
4333fc675eSKrzysztof Parzyszek  %v1 = load <32 x i32>, <32 x i32>* %v0, align 128
4433fc675eSKrzysztof Parzyszek  %v2 = getelementptr <32 x i32>, <32 x i32>* %a1, i32 2
4533fc675eSKrzysztof Parzyszek  store <32 x i32> %v1, <32 x i32>* %v2, align 128
4633fc675eSKrzysztof Parzyszek  ret void
4733fc675eSKrzysztof Parzyszek}
4833fc675eSKrzysztof Parzyszek
4933fc675eSKrzysztof Parzyszekdefine void @f3(<64 x half>* %a0, <64 x half>* %a1) #0 {
5033fc675eSKrzysztof Parzyszek; CHECK-LABEL: f3:
5133fc675eSKrzysztof Parzyszek; CHECK:       // %bb.0:
5233fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
5333fc675eSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
5433fc675eSKrzysztof Parzyszek; CHECK-NEXT:     v0.cur = vmem(r0+#1)
5533fc675eSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#2) = v0
5633fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
5733fc675eSKrzysztof Parzyszek  %v0 = getelementptr <64 x half>, <64 x half>* %a0, i32 1
5833fc675eSKrzysztof Parzyszek  %v1 = load <64 x half>, <64 x half>* %v0, align 128
5933fc675eSKrzysztof Parzyszek  %v2 = getelementptr <64 x half>, <64 x half>* %a1, i32 2
6033fc675eSKrzysztof Parzyszek  store <64 x half> %v1, <64 x half>* %v2, align 128
6133fc675eSKrzysztof Parzyszek  ret void
6233fc675eSKrzysztof Parzyszek}
6333fc675eSKrzysztof Parzyszek
6433fc675eSKrzysztof Parzyszekdefine void @f4(<32 x float>* %a0, <32 x float>* %a1) #0 {
6533fc675eSKrzysztof Parzyszek; CHECK-LABEL: f4:
6633fc675eSKrzysztof Parzyszek; CHECK:       // %bb.0:
6733fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
6833fc675eSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
6933fc675eSKrzysztof Parzyszek; CHECK-NEXT:     v0.cur = vmem(r0+#1)
7033fc675eSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#2) = v0
7133fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
7233fc675eSKrzysztof Parzyszek  %v0 = getelementptr <32 x float>, <32 x float>* %a0, i32 1
7333fc675eSKrzysztof Parzyszek  %v1 = load <32 x float>, <32 x float>* %v0, align 128
7433fc675eSKrzysztof Parzyszek  %v2 = getelementptr <32 x float>, <32 x float>* %a1, i32 2
7533fc675eSKrzysztof Parzyszek  store <32 x float> %v1, <32 x float>* %v2, align 128
7633fc675eSKrzysztof Parzyszek  ret void
7733fc675eSKrzysztof Parzyszek}
7833fc675eSKrzysztof Parzyszek
7933fc675eSKrzysztof Parzyszekdefine void @f5(<128 x i8>* %a0, <128 x i8>* %a1) #0 {
8033fc675eSKrzysztof Parzyszek; CHECK-LABEL: f5:
8133fc675eSKrzysztof Parzyszek; CHECK:       // %bb.0:
8233fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
8333fc675eSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmemu(r0+#1)
8433fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
8533fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
8633fc675eSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
8733fc675eSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#2) = v0
8833fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
8933fc675eSKrzysztof Parzyszek  %v0 = getelementptr <128 x i8>, <128 x i8>* %a0, i32 1
9033fc675eSKrzysztof Parzyszek  %v1 = load <128 x i8>, <128 x i8>* %v0, align 1
9133fc675eSKrzysztof Parzyszek  %v2 = getelementptr <128 x i8>, <128 x i8>* %a1, i32 2
9233fc675eSKrzysztof Parzyszek  store <128 x i8> %v1, <128 x i8>* %v2, align 1
9333fc675eSKrzysztof Parzyszek  ret void
9433fc675eSKrzysztof Parzyszek}
9533fc675eSKrzysztof Parzyszek
9633fc675eSKrzysztof Parzyszekdefine void @f6(<64 x i16>* %a0, <64 x i16>* %a1) #0 {
9733fc675eSKrzysztof Parzyszek; CHECK-LABEL: f6:
9833fc675eSKrzysztof Parzyszek; CHECK:       // %bb.0:
9933fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
10033fc675eSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmemu(r0+#1)
10133fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
10233fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
10333fc675eSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
10433fc675eSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#2) = v0
10533fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
10633fc675eSKrzysztof Parzyszek  %v0 = getelementptr <64 x i16>, <64 x i16>* %a0, i32 1
10733fc675eSKrzysztof Parzyszek  %v1 = load <64 x i16>, <64 x i16>* %v0, align 1
10833fc675eSKrzysztof Parzyszek  %v2 = getelementptr <64 x i16>, <64 x i16>* %a1, i32 2
10933fc675eSKrzysztof Parzyszek  store <64 x i16> %v1, <64 x i16>* %v2, align 1
11033fc675eSKrzysztof Parzyszek  ret void
11133fc675eSKrzysztof Parzyszek}
11233fc675eSKrzysztof Parzyszek
11333fc675eSKrzysztof Parzyszekdefine void @f7(<32 x i32>* %a0, <32 x i32>* %a1) #0 {
11433fc675eSKrzysztof Parzyszek; CHECK-LABEL: f7:
11533fc675eSKrzysztof Parzyszek; CHECK:       // %bb.0:
11633fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
11733fc675eSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmemu(r0+#1)
11833fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
11933fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
12033fc675eSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
12133fc675eSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#2) = v0
12233fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
12333fc675eSKrzysztof Parzyszek  %v0 = getelementptr <32 x i32>, <32 x i32>* %a0, i32 1
12433fc675eSKrzysztof Parzyszek  %v1 = load <32 x i32>, <32 x i32>* %v0, align 1
12533fc675eSKrzysztof Parzyszek  %v2 = getelementptr <32 x i32>, <32 x i32>* %a1, i32 2
12633fc675eSKrzysztof Parzyszek  store <32 x i32> %v1, <32 x i32>* %v2, align 1
12733fc675eSKrzysztof Parzyszek  ret void
12833fc675eSKrzysztof Parzyszek}
12933fc675eSKrzysztof Parzyszek
13033fc675eSKrzysztof Parzyszekdefine void @f8(<64 x half>* %a0, <64 x half>* %a1) #0 {
13133fc675eSKrzysztof Parzyszek; CHECK-LABEL: f8:
13233fc675eSKrzysztof Parzyszek; CHECK:       // %bb.0:
13333fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
13433fc675eSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmemu(r0+#1)
13533fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
13633fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
13733fc675eSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
13833fc675eSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#2) = v0
13933fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
14033fc675eSKrzysztof Parzyszek  %v0 = getelementptr <64 x half>, <64 x half>* %a0, i32 1
14133fc675eSKrzysztof Parzyszek  %v1 = load <64 x half>, <64 x half>* %v0, align 1
14233fc675eSKrzysztof Parzyszek  %v2 = getelementptr <64 x half>, <64 x half>* %a1, i32 2
14333fc675eSKrzysztof Parzyszek  store <64 x half> %v1, <64 x half>* %v2, align 1
14433fc675eSKrzysztof Parzyszek  ret void
14533fc675eSKrzysztof Parzyszek}
14633fc675eSKrzysztof Parzyszek
14733fc675eSKrzysztof Parzyszekdefine void @f9(<32 x float>* %a0, <32 x float>* %a1) #0 {
14833fc675eSKrzysztof Parzyszek; CHECK-LABEL: f9:
14933fc675eSKrzysztof Parzyszek; CHECK:       // %bb.0:
15033fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
15133fc675eSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmemu(r0+#1)
15233fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
15333fc675eSKrzysztof Parzyszek; CHECK-NEXT:    {
15433fc675eSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
15533fc675eSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#2) = v0
15633fc675eSKrzysztof Parzyszek; CHECK-NEXT:    }
15733fc675eSKrzysztof Parzyszek  %v0 = getelementptr <32 x float>, <32 x float>* %a0, i32 1
15833fc675eSKrzysztof Parzyszek  %v1 = load <32 x float>, <32 x float>* %v0, align 1
15933fc675eSKrzysztof Parzyszek  %v2 = getelementptr <32 x float>, <32 x float>* %a1, i32 2
16033fc675eSKrzysztof Parzyszek  store <32 x float> %v1, <32 x float>* %v2, align 1
16133fc675eSKrzysztof Parzyszek  ret void
16233fc675eSKrzysztof Parzyszek}
16333fc675eSKrzysztof Parzyszek
164*0792161cSKrzysztof Parzyszekdefine void @f10(<256 x i8>* %a0, <256 x i8>* %a1) #0 {
165*0792161cSKrzysztof Parzyszek; CHECK-LABEL: f10:
166*0792161cSKrzysztof Parzyszek; CHECK:       // %bb.0:
167*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
168*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmem(r0+#2)
169*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
170*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
171*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v1.cur = vmem(r0+#3)
172*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#5) = v1
173*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
174*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
175*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
176*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#4) = v0
177*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
178*0792161cSKrzysztof Parzyszek  %v0 = getelementptr <256 x i8>, <256 x i8>* %a0, i32 1
179*0792161cSKrzysztof Parzyszek  %v1 = load <256 x i8>, <256 x i8>* %v0, align 128
180*0792161cSKrzysztof Parzyszek  %v2 = getelementptr <256 x i8>, <256 x i8>* %a1, i32 2
181*0792161cSKrzysztof Parzyszek  store <256 x i8> %v1, <256 x i8>* %v2, align 128
182*0792161cSKrzysztof Parzyszek  ret void
183*0792161cSKrzysztof Parzyszek}
184*0792161cSKrzysztof Parzyszek
185*0792161cSKrzysztof Parzyszekdefine void @f11(<128 x i16>* %a0, <128 x i16>* %a1) #0 {
186*0792161cSKrzysztof Parzyszek; CHECK-LABEL: f11:
187*0792161cSKrzysztof Parzyszek; CHECK:       // %bb.0:
188*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
189*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmem(r0+#2)
190*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
191*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
192*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v1.cur = vmem(r0+#3)
193*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#5) = v1
194*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
195*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
196*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
197*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#4) = v0
198*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
199*0792161cSKrzysztof Parzyszek  %v0 = getelementptr <128 x i16>, <128 x i16>* %a0, i32 1
200*0792161cSKrzysztof Parzyszek  %v1 = load <128 x i16>, <128 x i16>* %v0, align 128
201*0792161cSKrzysztof Parzyszek  %v2 = getelementptr <128 x i16>, <128 x i16>* %a1, i32 2
202*0792161cSKrzysztof Parzyszek  store <128 x i16> %v1, <128 x i16>* %v2, align 128
203*0792161cSKrzysztof Parzyszek  ret void
204*0792161cSKrzysztof Parzyszek}
205*0792161cSKrzysztof Parzyszek
206*0792161cSKrzysztof Parzyszekdefine void @f12(<64 x i32>* %a0, <64 x i32>* %a1) #0 {
207*0792161cSKrzysztof Parzyszek; CHECK-LABEL: f12:
208*0792161cSKrzysztof Parzyszek; CHECK:       // %bb.0:
209*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
210*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmem(r0+#2)
211*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
212*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
213*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v1.cur = vmem(r0+#3)
214*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#5) = v1
215*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
216*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
217*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
218*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#4) = v0
219*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
220*0792161cSKrzysztof Parzyszek  %v0 = getelementptr <64 x i32>, <64 x i32>* %a0, i32 1
221*0792161cSKrzysztof Parzyszek  %v1 = load <64 x i32>, <64 x i32>* %v0, align 128
222*0792161cSKrzysztof Parzyszek  %v2 = getelementptr <64 x i32>, <64 x i32>* %a1, i32 2
223*0792161cSKrzysztof Parzyszek  store <64 x i32> %v1, <64 x i32>* %v2, align 128
224*0792161cSKrzysztof Parzyszek  ret void
225*0792161cSKrzysztof Parzyszek}
226*0792161cSKrzysztof Parzyszek
227*0792161cSKrzysztof Parzyszekdefine void @f13(<128 x half>* %a0, <128 x half>* %a1) #0 {
228*0792161cSKrzysztof Parzyszek; CHECK-LABEL: f13:
229*0792161cSKrzysztof Parzyszek; CHECK:       // %bb.0:
230*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
231*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmem(r0+#2)
232*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
233*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
234*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v1.cur = vmem(r0+#3)
235*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#5) = v1
236*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
237*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
238*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
239*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#4) = v0
240*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
241*0792161cSKrzysztof Parzyszek  %v0 = getelementptr <128 x half>, <128 x half>* %a0, i32 1
242*0792161cSKrzysztof Parzyszek  %v1 = load <128 x half>, <128 x half>* %v0, align 128
243*0792161cSKrzysztof Parzyszek  %v2 = getelementptr <128 x half>, <128 x half>* %a1, i32 2
244*0792161cSKrzysztof Parzyszek  store <128 x half> %v1, <128 x half>* %v2, align 128
245*0792161cSKrzysztof Parzyszek  ret void
246*0792161cSKrzysztof Parzyszek}
247*0792161cSKrzysztof Parzyszek
248*0792161cSKrzysztof Parzyszekdefine void @f14(<64 x float>* %a0, <64 x float>* %a1) #0 {
249*0792161cSKrzysztof Parzyszek; CHECK-LABEL: f14:
250*0792161cSKrzysztof Parzyszek; CHECK:       // %bb.0:
251*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
252*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmem(r0+#2)
253*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
254*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
255*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v1.cur = vmem(r0+#3)
256*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#5) = v1
257*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
258*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
259*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
260*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmem(r1+#4) = v0
261*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
262*0792161cSKrzysztof Parzyszek  %v0 = getelementptr <64 x float>, <64 x float>* %a0, i32 1
263*0792161cSKrzysztof Parzyszek  %v1 = load <64 x float>, <64 x float>* %v0, align 128
264*0792161cSKrzysztof Parzyszek  %v2 = getelementptr <64 x float>, <64 x float>* %a1, i32 2
265*0792161cSKrzysztof Parzyszek  store <64 x float> %v1, <64 x float>* %v2, align 128
266*0792161cSKrzysztof Parzyszek  ret void
267*0792161cSKrzysztof Parzyszek}
268*0792161cSKrzysztof Parzyszek
269*0792161cSKrzysztof Parzyszekdefine void @f15(<256 x i8>* %a0, <256 x i8>* %a1) #0 {
270*0792161cSKrzysztof Parzyszek; CHECK-LABEL: f15:
271*0792161cSKrzysztof Parzyszek; CHECK:       // %bb.0:
272*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
273*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmemu(r0+#3)
274*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
275*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
276*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v1 = vmemu(r0+#2)
277*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
278*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
279*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#5) = v0
280*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
281*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
282*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
283*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#4) = v1
284*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
285*0792161cSKrzysztof Parzyszek  %v0 = getelementptr <256 x i8>, <256 x i8>* %a0, i32 1
286*0792161cSKrzysztof Parzyszek  %v1 = load <256 x i8>, <256 x i8>* %v0, align 1
287*0792161cSKrzysztof Parzyszek  %v2 = getelementptr <256 x i8>, <256 x i8>* %a1, i32 2
288*0792161cSKrzysztof Parzyszek  store <256 x i8> %v1, <256 x i8>* %v2, align 1
289*0792161cSKrzysztof Parzyszek  ret void
290*0792161cSKrzysztof Parzyszek}
291*0792161cSKrzysztof Parzyszek
292*0792161cSKrzysztof Parzyszekdefine void @f16(<128 x i16>* %a0, <128 x i16>* %a1) #0 {
293*0792161cSKrzysztof Parzyszek; CHECK-LABEL: f16:
294*0792161cSKrzysztof Parzyszek; CHECK:       // %bb.0:
295*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
296*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmemu(r0+#3)
297*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
298*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
299*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v1 = vmemu(r0+#2)
300*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
301*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
302*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#5) = v0
303*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
304*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
305*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
306*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#4) = v1
307*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
308*0792161cSKrzysztof Parzyszek  %v0 = getelementptr <128 x i16>, <128 x i16>* %a0, i32 1
309*0792161cSKrzysztof Parzyszek  %v1 = load <128 x i16>, <128 x i16>* %v0, align 1
310*0792161cSKrzysztof Parzyszek  %v2 = getelementptr <128 x i16>, <128 x i16>* %a1, i32 2
311*0792161cSKrzysztof Parzyszek  store <128 x i16> %v1, <128 x i16>* %v2, align 1
312*0792161cSKrzysztof Parzyszek  ret void
313*0792161cSKrzysztof Parzyszek}
314*0792161cSKrzysztof Parzyszek
315*0792161cSKrzysztof Parzyszekdefine void @f17(<64 x i32>* %a0, <64 x i32>* %a1) #0 {
316*0792161cSKrzysztof Parzyszek; CHECK-LABEL: f17:
317*0792161cSKrzysztof Parzyszek; CHECK:       // %bb.0:
318*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
319*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmemu(r0+#3)
320*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
321*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
322*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v1 = vmemu(r0+#2)
323*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
324*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
325*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#5) = v0
326*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
327*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
328*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
329*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#4) = v1
330*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
331*0792161cSKrzysztof Parzyszek  %v0 = getelementptr <64 x i32>, <64 x i32>* %a0, i32 1
332*0792161cSKrzysztof Parzyszek  %v1 = load <64 x i32>, <64 x i32>* %v0, align 1
333*0792161cSKrzysztof Parzyszek  %v2 = getelementptr <64 x i32>, <64 x i32>* %a1, i32 2
334*0792161cSKrzysztof Parzyszek  store <64 x i32> %v1, <64 x i32>* %v2, align 1
335*0792161cSKrzysztof Parzyszek  ret void
336*0792161cSKrzysztof Parzyszek}
337*0792161cSKrzysztof Parzyszek
338*0792161cSKrzysztof Parzyszekdefine void @f18(<128 x half>* %a0, <128 x half>* %a1) #0 {
339*0792161cSKrzysztof Parzyszek; CHECK-LABEL: f18:
340*0792161cSKrzysztof Parzyszek; CHECK:       // %bb.0:
341*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
342*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmemu(r0+#3)
343*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
344*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
345*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v1 = vmemu(r0+#2)
346*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
347*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
348*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#5) = v0
349*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
350*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
351*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
352*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#4) = v1
353*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
354*0792161cSKrzysztof Parzyszek  %v0 = getelementptr <128 x half>, <128 x half>* %a0, i32 1
355*0792161cSKrzysztof Parzyszek  %v1 = load <128 x half>, <128 x half>* %v0, align 1
356*0792161cSKrzysztof Parzyszek  %v2 = getelementptr <128 x half>, <128 x half>* %a1, i32 2
357*0792161cSKrzysztof Parzyszek  store <128 x half> %v1, <128 x half>* %v2, align 1
358*0792161cSKrzysztof Parzyszek  ret void
359*0792161cSKrzysztof Parzyszek}
360*0792161cSKrzysztof Parzyszek
361*0792161cSKrzysztof Parzyszekdefine void @f19(<64 x float>* %a0, <64 x float>* %a1) #0 {
362*0792161cSKrzysztof Parzyszek; CHECK-LABEL: f19:
363*0792161cSKrzysztof Parzyszek; CHECK:       // %bb.0:
364*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
365*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v0 = vmemu(r0+#3)
366*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
367*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
368*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     v1 = vmemu(r0+#2)
369*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
370*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
371*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#5) = v0
372*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
373*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    {
374*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     jumpr r31
375*0792161cSKrzysztof Parzyszek; CHECK-NEXT:     vmemu(r1+#4) = v1
376*0792161cSKrzysztof Parzyszek; CHECK-NEXT:    }
377*0792161cSKrzysztof Parzyszek  %v0 = getelementptr <64 x float>, <64 x float>* %a0, i32 1
378*0792161cSKrzysztof Parzyszek  %v1 = load <64 x float>, <64 x float>* %v0, align 1
379*0792161cSKrzysztof Parzyszek  %v2 = getelementptr <64 x float>, <64 x float>* %a1, i32 2
380*0792161cSKrzysztof Parzyszek  store <64 x float> %v1, <64 x float>* %v2, align 1
381*0792161cSKrzysztof Parzyszek  ret void
382*0792161cSKrzysztof Parzyszek}
383*0792161cSKrzysztof Parzyszek
384*0792161cSKrzysztof Parzyszek
38533fc675eSKrzysztof Parzyszekattributes #0 = { nounwind "target-cpu"="hexagonv69" "target-features"="+hvxv69,+hvx-length128b,+hvx-qfloat" }
386