Fix tests for Neon load/store intrinsics to match the i8* types expected by
[oota-llvm.git] / test / CodeGen / ARM / vst2.ll
1 ; RUN: llc < %s -march=arm -mattr=+neon | FileCheck %s
2
3 define void @vst2i8(i8* %A, <8 x i8>* %B) nounwind {
4 ;CHECK: vst2i8:
5 ;CHECK: vst2.8
6         %tmp1 = load <8 x i8>* %B
7         call void @llvm.arm.neon.vst2.v8i8(i8* %A, <8 x i8> %tmp1, <8 x i8> %tmp1)
8         ret void
9 }
10
11 define void @vst2i16(i16* %A, <4 x i16>* %B) nounwind {
12 ;CHECK: vst2i16:
13 ;CHECK: vst2.16
14         %tmp0 = bitcast i16* %A to i8*
15         %tmp1 = load <4 x i16>* %B
16         call void @llvm.arm.neon.vst2.v4i16(i8* %tmp0, <4 x i16> %tmp1, <4 x i16> %tmp1)
17         ret void
18 }
19
20 define void @vst2i32(i32* %A, <2 x i32>* %B) nounwind {
21 ;CHECK: vst2i32:
22 ;CHECK: vst2.32
23         %tmp0 = bitcast i32* %A to i8*
24         %tmp1 = load <2 x i32>* %B
25         call void @llvm.arm.neon.vst2.v2i32(i8* %tmp0, <2 x i32> %tmp1, <2 x i32> %tmp1)
26         ret void
27 }
28
29 define void @vst2f(float* %A, <2 x float>* %B) nounwind {
30 ;CHECK: vst2f:
31 ;CHECK: vst2.32
32         %tmp0 = bitcast float* %A to i8*
33         %tmp1 = load <2 x float>* %B
34         call void @llvm.arm.neon.vst2.v2f32(i8* %tmp0, <2 x float> %tmp1, <2 x float> %tmp1)
35         ret void
36 }
37
38 define void @vst2i64(i64* %A, <1 x i64>* %B) nounwind {
39 ;CHECK: vst2i64:
40 ;CHECK: vst1.64
41         %tmp0 = bitcast i64* %A to i8*
42         %tmp1 = load <1 x i64>* %B
43         call void @llvm.arm.neon.vst2.v1i64(i8* %tmp0, <1 x i64> %tmp1, <1 x i64> %tmp1)
44         ret void
45 }
46
47 define void @vst2Qi8(i8* %A, <16 x i8>* %B) nounwind {
48 ;CHECK: vst2Qi8:
49 ;CHECK: vst2.8
50         %tmp1 = load <16 x i8>* %B
51         call void @llvm.arm.neon.vst2.v16i8(i8* %A, <16 x i8> %tmp1, <16 x i8> %tmp1)
52         ret void
53 }
54
55 define void @vst2Qi16(i16* %A, <8 x i16>* %B) nounwind {
56 ;CHECK: vst2Qi16:
57 ;CHECK: vst2.16
58         %tmp0 = bitcast i16* %A to i8*
59         %tmp1 = load <8 x i16>* %B
60         call void @llvm.arm.neon.vst2.v8i16(i8* %tmp0, <8 x i16> %tmp1, <8 x i16> %tmp1)
61         ret void
62 }
63
64 define void @vst2Qi32(i32* %A, <4 x i32>* %B) nounwind {
65 ;CHECK: vst2Qi32:
66 ;CHECK: vst2.32
67         %tmp0 = bitcast i32* %A to i8*
68         %tmp1 = load <4 x i32>* %B
69         call void @llvm.arm.neon.vst2.v4i32(i8* %tmp0, <4 x i32> %tmp1, <4 x i32> %tmp1)
70         ret void
71 }
72
73 define void @vst2Qf(float* %A, <4 x float>* %B) nounwind {
74 ;CHECK: vst2Qf:
75 ;CHECK: vst2.32
76         %tmp0 = bitcast float* %A to i8*
77         %tmp1 = load <4 x float>* %B
78         call void @llvm.arm.neon.vst2.v4f32(i8* %tmp0, <4 x float> %tmp1, <4 x float> %tmp1)
79         ret void
80 }
81
82 declare void @llvm.arm.neon.vst2.v8i8(i8*, <8 x i8>, <8 x i8>) nounwind
83 declare void @llvm.arm.neon.vst2.v4i16(i8*, <4 x i16>, <4 x i16>) nounwind
84 declare void @llvm.arm.neon.vst2.v2i32(i8*, <2 x i32>, <2 x i32>) nounwind
85 declare void @llvm.arm.neon.vst2.v2f32(i8*, <2 x float>, <2 x float>) nounwind
86 declare void @llvm.arm.neon.vst2.v1i64(i8*, <1 x i64>, <1 x i64>) nounwind
87
88 declare void @llvm.arm.neon.vst2.v16i8(i8*, <16 x i8>, <16 x i8>) nounwind
89 declare void @llvm.arm.neon.vst2.v8i16(i8*, <8 x i16>, <8 x i16>) nounwind
90 declare void @llvm.arm.neon.vst2.v4i32(i8*, <4 x i32>, <4 x i32>) nounwind
91 declare void @llvm.arm.neon.vst2.v4f32(i8*, <4 x float>, <4 x float>) nounwind