blob: 03d5153fd213a7c6ddc313846a45a834fb6cab3b [file] [log] [blame]
Bob Wilson8a3198b2009-09-01 18:51:56 +00001; RUN: llvm-as < %s | llc -march=arm -mattr=+neon | FileCheck %s
2
3define void @vst2lanei8(i8* %A, <8 x i8>* %B) nounwind {
4;CHECK: vst2lanei8:
5;CHECK: vst2.8
6 %tmp1 = load <8 x i8>* %B
7 call void @llvm.arm.neon.vst2lane.v8i8(i8* %A, <8 x i8> %tmp1, <8 x i8> %tmp1, i32 1)
8 ret void
9}
10
11define void @vst2lanei16(i16* %A, <4 x i16>* %B) nounwind {
12;CHECK: vst2lanei16:
13;CHECK: vst2.16
14 %tmp1 = load <4 x i16>* %B
15 call void @llvm.arm.neon.vst2lane.v4i16(i16* %A, <4 x i16> %tmp1, <4 x i16> %tmp1, i32 1)
16 ret void
17}
18
19define void @vst2lanei32(i32* %A, <2 x i32>* %B) nounwind {
20;CHECK: vst2lanei32:
21;CHECK: vst2.32
22 %tmp1 = load <2 x i32>* %B
23 call void @llvm.arm.neon.vst2lane.v2i32(i32* %A, <2 x i32> %tmp1, <2 x i32> %tmp1, i32 1)
24 ret void
25}
26
27define void @vst2lanef(float* %A, <2 x float>* %B) nounwind {
28;CHECK: vst2lanef:
29;CHECK: vst2.32
30 %tmp1 = load <2 x float>* %B
31 call void @llvm.arm.neon.vst2lane.v2f32(float* %A, <2 x float> %tmp1, <2 x float> %tmp1, i32 1)
32 ret void
33}
34
35declare void @llvm.arm.neon.vst2lane.v8i8(i8*, <8 x i8>, <8 x i8>, i32) nounwind
36declare void @llvm.arm.neon.vst2lane.v4i16(i8*, <4 x i16>, <4 x i16>, i32) nounwind
37declare void @llvm.arm.neon.vst2lane.v2i32(i8*, <2 x i32>, <2 x i32>, i32) nounwind
38declare void @llvm.arm.neon.vst2lane.v2f32(i8*, <2 x float>, <2 x float>, i32) nounwind
39
40define void @vst3lanei8(i8* %A, <8 x i8>* %B) nounwind {
41;CHECK: vst3lanei8:
42;CHECK: vst3.8
43 %tmp1 = load <8 x i8>* %B
44 call void @llvm.arm.neon.vst3lane.v8i8(i8* %A, <8 x i8> %tmp1, <8 x i8> %tmp1, <8 x i8> %tmp1, i32 1)
45 ret void
46}
47
48define void @vst3lanei16(i16* %A, <4 x i16>* %B) nounwind {
49;CHECK: vst3lanei16:
50;CHECK: vst3.16
51 %tmp1 = load <4 x i16>* %B
52 call void @llvm.arm.neon.vst3lane.v4i16(i16* %A, <4 x i16> %tmp1, <4 x i16> %tmp1, <4 x i16> %tmp1, i32 1)
53 ret void
54}
55
56define void @vst3lanei32(i32* %A, <2 x i32>* %B) nounwind {
57;CHECK: vst3lanei32:
58;CHECK: vst3.32
59 %tmp1 = load <2 x i32>* %B
60 call void @llvm.arm.neon.vst3lane.v2i32(i32* %A, <2 x i32> %tmp1, <2 x i32> %tmp1, <2 x i32> %tmp1, i32 1)
61 ret void
62}
63
64define void @vst3lanef(float* %A, <2 x float>* %B) nounwind {
65;CHECK: vst3lanef:
66;CHECK: vst3.32
67 %tmp1 = load <2 x float>* %B
68 call void @llvm.arm.neon.vst3lane.v2f32(float* %A, <2 x float> %tmp1, <2 x float> %tmp1, <2 x float> %tmp1, i32 1)
69 ret void
70}
71
72declare void @llvm.arm.neon.vst3lane.v8i8(i8*, <8 x i8>, <8 x i8>, <8 x i8>, i32) nounwind
73declare void @llvm.arm.neon.vst3lane.v4i16(i8*, <4 x i16>, <4 x i16>, <4 x i16>, i32) nounwind
74declare void @llvm.arm.neon.vst3lane.v2i32(i8*, <2 x i32>, <2 x i32>, <2 x i32>, i32) nounwind
75declare void @llvm.arm.neon.vst3lane.v2f32(i8*, <2 x float>, <2 x float>, <2 x float>, i32) nounwind
76
77
78define void @vst4lanei8(i8* %A, <8 x i8>* %B) nounwind {
79;CHECK: vst4lanei8:
80;CHECK: vst4.8
81 %tmp1 = load <8 x i8>* %B
82 call void @llvm.arm.neon.vst4lane.v8i8(i8* %A, <8 x i8> %tmp1, <8 x i8> %tmp1, <8 x i8> %tmp1, <8 x i8> %tmp1, i32 1)
83 ret void
84}
85
86define void @vst4lanei16(i16* %A, <4 x i16>* %B) nounwind {
87;CHECK: vst4lanei16:
88;CHECK: vst4.16
89 %tmp1 = load <4 x i16>* %B
90 call void @llvm.arm.neon.vst4lane.v4i16(i16* %A, <4 x i16> %tmp1, <4 x i16> %tmp1, <4 x i16> %tmp1, <4 x i16> %tmp1, i32 1)
91 ret void
92}
93
94define void @vst4lanei32(i32* %A, <2 x i32>* %B) nounwind {
95;CHECK: vst4lanei32:
96;CHECK: vst4.32
97 %tmp1 = load <2 x i32>* %B
98 call void @llvm.arm.neon.vst4lane.v2i32(i32* %A, <2 x i32> %tmp1, <2 x i32> %tmp1, <2 x i32> %tmp1, <2 x i32> %tmp1, i32 1)
99 ret void
100}
101
102define void @vst4lanef(float* %A, <2 x float>* %B) nounwind {
103;CHECK: vst4lanef:
104;CHECK: vst4.32
105 %tmp1 = load <2 x float>* %B
106 call void @llvm.arm.neon.vst4lane.v2f32(float* %A, <2 x float> %tmp1, <2 x float> %tmp1, <2 x float> %tmp1, <2 x float> %tmp1, i32 1)
107 ret void
108}
109
110declare void @llvm.arm.neon.vst4lane.v8i8(i8*, <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8>, i32) nounwind
111declare void @llvm.arm.neon.vst4lane.v4i16(i8*, <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16>, i32) nounwind
112declare void @llvm.arm.neon.vst4lane.v2i32(i8*, <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, i32) nounwind
113declare void @llvm.arm.neon.vst4lane.v2f32(i8*, <2 x float>, <2 x float>, <2 x float>, <2 x float>, i32) nounwind