blob: c61ea8c9a7892d5ffd421148474c0fb7f2b5a6f7 [file] [log] [blame]
Dan Gohmanfce288f2009-09-09 00:09:15 +00001; RUN: llc < %s -march=arm -mattr=+neon | FileCheck %s
Bob Wilson205a5ca2009-07-08 18:11:30 +00002
3define <8 x i8> @vld1i8(i8* %A) nounwind {
Bob Wilson3765d0f2009-08-05 23:51:20 +00004;CHECK: vld1i8:
5;CHECK: vld1.8
Bob Wilsonb0abb4d2009-08-11 05:39:44 +00006 %tmp1 = call <8 x i8> @llvm.arm.neon.vld1.v8i8(i8* %A)
Bob Wilson205a5ca2009-07-08 18:11:30 +00007 ret <8 x i8> %tmp1
8}
9
10define <4 x i16> @vld1i16(i16* %A) nounwind {
Bob Wilson3765d0f2009-08-05 23:51:20 +000011;CHECK: vld1i16:
12;CHECK: vld1.16
Bob Wilson02170c02010-04-20 00:17:16 +000013 %tmp0 = bitcast i16* %A to i8*
14 %tmp1 = call <4 x i16> @llvm.arm.neon.vld1.v4i16(i8* %tmp0)
Bob Wilson205a5ca2009-07-08 18:11:30 +000015 ret <4 x i16> %tmp1
16}
17
18define <2 x i32> @vld1i32(i32* %A) nounwind {
Bob Wilson3765d0f2009-08-05 23:51:20 +000019;CHECK: vld1i32:
20;CHECK: vld1.32
Bob Wilson02170c02010-04-20 00:17:16 +000021 %tmp0 = bitcast i32* %A to i8*
22 %tmp1 = call <2 x i32> @llvm.arm.neon.vld1.v2i32(i8* %tmp0)
Bob Wilson205a5ca2009-07-08 18:11:30 +000023 ret <2 x i32> %tmp1
24}
25
26define <2 x float> @vld1f(float* %A) nounwind {
Bob Wilson3765d0f2009-08-05 23:51:20 +000027;CHECK: vld1f:
28;CHECK: vld1.32
Bob Wilson02170c02010-04-20 00:17:16 +000029 %tmp0 = bitcast float* %A to i8*
30 %tmp1 = call <2 x float> @llvm.arm.neon.vld1.v2f32(i8* %tmp0)
Bob Wilson205a5ca2009-07-08 18:11:30 +000031 ret <2 x float> %tmp1
32}
33
34define <1 x i64> @vld1i64(i64* %A) nounwind {
Bob Wilson3765d0f2009-08-05 23:51:20 +000035;CHECK: vld1i64:
36;CHECK: vld1.64
Bob Wilson02170c02010-04-20 00:17:16 +000037 %tmp0 = bitcast i64* %A to i8*
38 %tmp1 = call <1 x i64> @llvm.arm.neon.vld1.v1i64(i8* %tmp0)
Bob Wilson205a5ca2009-07-08 18:11:30 +000039 ret <1 x i64> %tmp1
40}
41
42define <16 x i8> @vld1Qi8(i8* %A) nounwind {
Bob Wilson3765d0f2009-08-05 23:51:20 +000043;CHECK: vld1Qi8:
44;CHECK: vld1.8
Bob Wilsonb0abb4d2009-08-11 05:39:44 +000045 %tmp1 = call <16 x i8> @llvm.arm.neon.vld1.v16i8(i8* %A)
Bob Wilson205a5ca2009-07-08 18:11:30 +000046 ret <16 x i8> %tmp1
47}
48
49define <8 x i16> @vld1Qi16(i16* %A) nounwind {
Bob Wilson3765d0f2009-08-05 23:51:20 +000050;CHECK: vld1Qi16:
51;CHECK: vld1.16
Bob Wilson02170c02010-04-20 00:17:16 +000052 %tmp0 = bitcast i16* %A to i8*
53 %tmp1 = call <8 x i16> @llvm.arm.neon.vld1.v8i16(i8* %tmp0)
Bob Wilson205a5ca2009-07-08 18:11:30 +000054 ret <8 x i16> %tmp1
55}
56
57define <4 x i32> @vld1Qi32(i32* %A) nounwind {
Bob Wilson3765d0f2009-08-05 23:51:20 +000058;CHECK: vld1Qi32:
59;CHECK: vld1.32
Bob Wilson02170c02010-04-20 00:17:16 +000060 %tmp0 = bitcast i32* %A to i8*
61 %tmp1 = call <4 x i32> @llvm.arm.neon.vld1.v4i32(i8* %tmp0)
Bob Wilson205a5ca2009-07-08 18:11:30 +000062 ret <4 x i32> %tmp1
63}
64
65define <4 x float> @vld1Qf(float* %A) nounwind {
Bob Wilson3765d0f2009-08-05 23:51:20 +000066;CHECK: vld1Qf:
67;CHECK: vld1.32
Bob Wilson02170c02010-04-20 00:17:16 +000068 %tmp0 = bitcast float* %A to i8*
69 %tmp1 = call <4 x float> @llvm.arm.neon.vld1.v4f32(i8* %tmp0)
Bob Wilson205a5ca2009-07-08 18:11:30 +000070 ret <4 x float> %tmp1
71}
72
73define <2 x i64> @vld1Qi64(i64* %A) nounwind {
Bob Wilson3765d0f2009-08-05 23:51:20 +000074;CHECK: vld1Qi64:
75;CHECK: vld1.64
Bob Wilson02170c02010-04-20 00:17:16 +000076 %tmp0 = bitcast i64* %A to i8*
77 %tmp1 = call <2 x i64> @llvm.arm.neon.vld1.v2i64(i8* %tmp0)
Bob Wilson205a5ca2009-07-08 18:11:30 +000078 ret <2 x i64> %tmp1
79}
80
Bob Wilsonb0abb4d2009-08-11 05:39:44 +000081declare <8 x i8> @llvm.arm.neon.vld1.v8i8(i8*) nounwind readonly
82declare <4 x i16> @llvm.arm.neon.vld1.v4i16(i8*) nounwind readonly
83declare <2 x i32> @llvm.arm.neon.vld1.v2i32(i8*) nounwind readonly
84declare <2 x float> @llvm.arm.neon.vld1.v2f32(i8*) nounwind readonly
85declare <1 x i64> @llvm.arm.neon.vld1.v1i64(i8*) nounwind readonly
Bob Wilson205a5ca2009-07-08 18:11:30 +000086
Bob Wilsonb0abb4d2009-08-11 05:39:44 +000087declare <16 x i8> @llvm.arm.neon.vld1.v16i8(i8*) nounwind readonly
88declare <8 x i16> @llvm.arm.neon.vld1.v8i16(i8*) nounwind readonly
89declare <4 x i32> @llvm.arm.neon.vld1.v4i32(i8*) nounwind readonly
90declare <4 x float> @llvm.arm.neon.vld1.v4f32(i8*) nounwind readonly
91declare <2 x i64> @llvm.arm.neon.vld1.v2i64(i8*) nounwind readonly