1 ;RUN: llc -mtriple=arm-eabi -mattr=+v7 -mattr=+neon %s -o - | FileCheck %s
6 define void @v64_v8i8_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
7 ;CHECK-LABEL: v64_v8i8_1:
10 %v1 = load <8 x i8>, ptr %in, align 1
12 store <8 x i8> %v1, ptr %out, align 1
20 define void @v64_v4i16_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
21 ;CHECK-LABEL: v64_v4i16_1:
24 %v1 = load <4 x i16>, ptr %in, align 1
26 store <4 x i16> %v1, ptr %out, align 1
34 define void @v64_v2i32_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
35 ;CHECK-LABEL: v64_v2i32_1:
38 %v1 = load <2 x i32>, ptr %in, align 1
40 store <2 x i32> %v1, ptr %out, align 1
48 define void @v64_v2f32_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
49 ;CHECK-LABEL: v64_v2f32_1:
52 %v1 = load <2 x float>, ptr %in, align 1
54 store <2 x float> %v1, ptr %out, align 1
62 define void @v128_v16i8_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
63 ;CHECK-LABEL: v128_v16i8_1:
66 %v1 = load <16 x i8>, ptr %in, align 1
68 store <16 x i8> %v1, ptr %out, align 1
76 define void @v128_v8i16_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
77 ;CHECK-LABEL: v128_v8i16_1:
80 %v1 = load <8 x i16>, ptr %in, align 1
82 store <8 x i16> %v1, ptr %out, align 1
90 define void @v128_v4i32_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
91 ;CHECK-LABEL: v128_v4i32_1:
94 %v1 = load <4 x i32>, ptr %in, align 1
96 store <4 x i32> %v1, ptr %out, align 1
104 define void @v128_v2i64_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
105 ;CHECK-LABEL: v128_v2i64_1:
108 %v1 = load <2 x i64>, ptr %in, align 1
110 store <2 x i64> %v1, ptr %out, align 1
118 define void @v128_v4f32_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
119 ;CHECK-LABEL: v128_v4f32_1:
122 %v1 = load <4 x float>, ptr %in, align 1
124 store <4 x float> %v1, ptr %out, align 1
132 define void @v64_v8i8_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
133 ;CHECK-LABEL: v64_v8i8_2:
136 %v1 = load <8 x i8>, ptr %in, align 2
138 store <8 x i8> %v1, ptr %out, align 2
146 define void @v64_v4i16_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
147 ;CHECK-LABEL: v64_v4i16_2:
150 %v1 = load <4 x i16>, ptr %in, align 2
152 store <4 x i16> %v1, ptr %out, align 2
160 define void @v64_v2i32_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
161 ;CHECK-LABEL: v64_v2i32_2:
164 %v1 = load <2 x i32>, ptr %in, align 2
166 store <2 x i32> %v1, ptr %out, align 2
174 define void @v64_v2f32_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
175 ;CHECK-LABEL: v64_v2f32_2:
178 %v1 = load <2 x float>, ptr %in, align 2
180 store <2 x float> %v1, ptr %out, align 2
188 define void @v128_v16i8_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
189 ;CHECK-LABEL: v128_v16i8_2:
192 %v1 = load <16 x i8>, ptr %in, align 2
194 store <16 x i8> %v1, ptr %out, align 2
202 define void @v128_v8i16_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
203 ;CHECK-LABEL: v128_v8i16_2:
206 %v1 = load <8 x i16>, ptr %in, align 2
208 store <8 x i16> %v1, ptr %out, align 2
216 define void @v128_v4i32_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
217 ;CHECK-LABEL: v128_v4i32_2:
220 %v1 = load <4 x i32>, ptr %in, align 2
222 store <4 x i32> %v1, ptr %out, align 2
230 define void @v128_v2i64_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
231 ;CHECK-LABEL: v128_v2i64_2:
234 %v1 = load <2 x i64>, ptr %in, align 2
236 store <2 x i64> %v1, ptr %out, align 2
244 define void @v128_v4f32_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
245 ;CHECK-LABEL: v128_v4f32_2:
248 %v1 = load <4 x float>, ptr %in, align 2
250 store <4 x float> %v1, ptr %out, align 2
258 define void @v64_v8i8_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
259 ;CHECK-LABEL: v64_v8i8_4:
262 %v1 = load <8 x i8>, ptr %in, align 4
264 store <8 x i8> %v1, ptr %out, align 4
272 define void @v64_v4i16_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
273 ;CHECK-LABEL: v64_v4i16_4:
276 %v1 = load <4 x i16>, ptr %in, align 4
278 store <4 x i16> %v1, ptr %out, align 4
286 define void @v64_v2i32_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
287 ;CHECK-LABEL: v64_v2i32_4:
290 %v1 = load <2 x i32>, ptr %in, align 4
292 store <2 x i32> %v1, ptr %out, align 4
300 define void @v64_v2f32_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
301 ;CHECK-LABEL: v64_v2f32_4:
304 %v1 = load <2 x float>, ptr %in, align 4
306 store <2 x float> %v1, ptr %out, align 4
314 define void @v128_v16i8_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
315 ;CHECK-LABEL: v128_v16i8_4:
318 %v1 = load <16 x i8>, ptr %in, align 4
320 store <16 x i8> %v1, ptr %out, align 4
328 define void @v128_v8i16_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
329 ;CHECK-LABEL: v128_v8i16_4:
332 %v1 = load <8 x i16>, ptr %in, align 4
334 store <8 x i16> %v1, ptr %out, align 4
342 define void @v128_v4i32_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
343 ;CHECK-LABEL: v128_v4i32_4:
346 %v1 = load <4 x i32>, ptr %in, align 4
348 store <4 x i32> %v1, ptr %out, align 4
356 define void @v128_v2i64_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
357 ;CHECK-LABEL: v128_v2i64_4:
360 %v1 = load <2 x i64>, ptr %in, align 4
362 store <2 x i64> %v1, ptr %out, align 4
370 define void @v128_v4f32_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {
371 ;CHECK-LABEL: v128_v4f32_4:
374 %v1 = load <4 x float>, ptr %in, align 4
376 store <4 x float> %v1, ptr %out, align 4
380 define void @test_weird_type(<3 x double> %in, ptr %ptr) {
381 ; CHECK-LABEL: test_weird_type:
384 %vec.int = bitcast <3 x double> %in to <3 x i64>
385 store <3 x i64> %vec.int, ptr %ptr, align 8