tweak test to check instructions rather than relying on the comment string
[oota-llvm.git] / test / CodeGen / ARM / vst1.ll
1 ; RUN: llc < %s -march=arm -mattr=+neon | FileCheck %s
2
3 define void @vst1i8(i8* %A, <8 x i8>* %B) nounwind {
4 ;CHECK: vst1i8:
5 ;CHECK: vst1.8
6         %tmp1 = load <8 x i8>* %B
7         call void @llvm.arm.neon.vst1.v8i8(i8* %A, <8 x i8> %tmp1, i32 1)
8         ret void
9 }
10
11 define void @vst1i16(i16* %A, <4 x i16>* %B) nounwind {
12 ;CHECK: vst1i16:
13 ;CHECK: vst1.16
14         %tmp0 = bitcast i16* %A to i8*
15         %tmp1 = load <4 x i16>* %B
16         call void @llvm.arm.neon.vst1.v4i16(i8* %tmp0, <4 x i16> %tmp1, i32 1)
17         ret void
18 }
19
20 define void @vst1i32(i32* %A, <2 x i32>* %B) nounwind {
21 ;CHECK: vst1i32:
22 ;CHECK: vst1.32
23         %tmp0 = bitcast i32* %A to i8*
24         %tmp1 = load <2 x i32>* %B
25         call void @llvm.arm.neon.vst1.v2i32(i8* %tmp0, <2 x i32> %tmp1, i32 1)
26         ret void
27 }
28
29 define void @vst1f(float* %A, <2 x float>* %B) nounwind {
30 ;CHECK: vst1f:
31 ;CHECK: vst1.32
32         %tmp0 = bitcast float* %A to i8*
33         %tmp1 = load <2 x float>* %B
34         call void @llvm.arm.neon.vst1.v2f32(i8* %tmp0, <2 x float> %tmp1, i32 1)
35         ret void
36 }
37
38 define void @vst1i64(i64* %A, <1 x i64>* %B) nounwind {
39 ;CHECK: vst1i64:
40 ;CHECK: vst1.64
41         %tmp0 = bitcast i64* %A to i8*
42         %tmp1 = load <1 x i64>* %B
43         call void @llvm.arm.neon.vst1.v1i64(i8* %tmp0, <1 x i64> %tmp1, i32 1)
44         ret void
45 }
46
47 define void @vst1Qi8(i8* %A, <16 x i8>* %B) nounwind {
48 ;CHECK: vst1Qi8:
49 ;CHECK: vst1.8
50         %tmp1 = load <16 x i8>* %B
51         call void @llvm.arm.neon.vst1.v16i8(i8* %A, <16 x i8> %tmp1, i32 1)
52         ret void
53 }
54
55 define void @vst1Qi16(i16* %A, <8 x i16>* %B) nounwind {
56 ;CHECK: vst1Qi16:
57 ;CHECK: vst1.16
58         %tmp0 = bitcast i16* %A to i8*
59         %tmp1 = load <8 x i16>* %B
60         call void @llvm.arm.neon.vst1.v8i16(i8* %tmp0, <8 x i16> %tmp1, i32 1)
61         ret void
62 }
63
64 define void @vst1Qi32(i32* %A, <4 x i32>* %B) nounwind {
65 ;CHECK: vst1Qi32:
66 ;CHECK: vst1.32
67         %tmp0 = bitcast i32* %A to i8*
68         %tmp1 = load <4 x i32>* %B
69         call void @llvm.arm.neon.vst1.v4i32(i8* %tmp0, <4 x i32> %tmp1, i32 1)
70         ret void
71 }
72
73 define void @vst1Qf(float* %A, <4 x float>* %B) nounwind {
74 ;CHECK: vst1Qf:
75 ;CHECK: vst1.32
76         %tmp0 = bitcast float* %A to i8*
77         %tmp1 = load <4 x float>* %B
78         call void @llvm.arm.neon.vst1.v4f32(i8* %tmp0, <4 x float> %tmp1, i32 1)
79         ret void
80 }
81
82 define void @vst1Qi64(i64* %A, <2 x i64>* %B) nounwind {
83 ;CHECK: vst1Qi64:
84 ;CHECK: vst1.64
85         %tmp0 = bitcast i64* %A to i8*
86         %tmp1 = load <2 x i64>* %B
87         call void @llvm.arm.neon.vst1.v2i64(i8* %tmp0, <2 x i64> %tmp1, i32 1)
88         ret void
89 }
90
91 declare void @llvm.arm.neon.vst1.v8i8(i8*, <8 x i8>, i32) nounwind
92 declare void @llvm.arm.neon.vst1.v4i16(i8*, <4 x i16>, i32) nounwind
93 declare void @llvm.arm.neon.vst1.v2i32(i8*, <2 x i32>, i32) nounwind
94 declare void @llvm.arm.neon.vst1.v2f32(i8*, <2 x float>, i32) nounwind
95 declare void @llvm.arm.neon.vst1.v1i64(i8*, <1 x i64>, i32) nounwind
96
97 declare void @llvm.arm.neon.vst1.v16i8(i8*, <16 x i8>, i32) nounwind
98 declare void @llvm.arm.neon.vst1.v8i16(i8*, <8 x i16>, i32) nounwind
99 declare void @llvm.arm.neon.vst1.v4i32(i8*, <4 x i32>, i32) nounwind
100 declare void @llvm.arm.neon.vst1.v4f32(i8*, <4 x float>, i32) nounwind
101 declare void @llvm.arm.neon.vst1.v2i64(i8*, <2 x i64>, i32) nounwind