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