fix an embarassing typo that resulted in llvm-gcc bootstrap miscompare
[llvm/avr.git] / test / CodeGen / ARM / vdup_lane.ll
blob313260a2d6873738298b3353626d393981087ed7
1 ; RUN: llc < %s -march=arm -mattr=+neon | FileCheck %s
3 define <8 x i8> @vduplane8(<8 x i8>* %A) nounwind {
4 ;CHECK: vduplane8:
5 ;CHECK: vdup.8
6         %tmp1 = load <8 x i8>* %A
7         %tmp2 = shufflevector <8 x i8> %tmp1, <8 x i8> undef, <8 x i32> < i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1 >
8         ret <8 x i8> %tmp2
11 define <4 x i16> @vduplane16(<4 x i16>* %A) nounwind {
12 ;CHECK: vduplane16:
13 ;CHECK: vdup.16
14         %tmp1 = load <4 x i16>* %A
15         %tmp2 = shufflevector <4 x i16> %tmp1, <4 x i16> undef, <4 x i32> < i32 1, i32 1, i32 1, i32 1 >
16         ret <4 x i16> %tmp2
19 define <2 x i32> @vduplane32(<2 x i32>* %A) nounwind {
20 ;CHECK: vduplane32:
21 ;CHECK: vdup.32
22         %tmp1 = load <2 x i32>* %A
23         %tmp2 = shufflevector <2 x i32> %tmp1, <2 x i32> undef, <2 x i32> < i32 1, i32 1 >
24         ret <2 x i32> %tmp2
27 define <2 x float> @vduplanefloat(<2 x float>* %A) nounwind {
28 ;CHECK: vduplanefloat:
29 ;CHECK: vdup.32
30         %tmp1 = load <2 x float>* %A
31         %tmp2 = shufflevector <2 x float> %tmp1, <2 x float> undef, <2 x i32> < i32 1, i32 1 >
32         ret <2 x float> %tmp2
35 define <16 x i8> @vduplaneQ8(<8 x i8>* %A) nounwind {
36 ;CHECK: vduplaneQ8:
37 ;CHECK: vdup.8
38         %tmp1 = load <8 x i8>* %A
39         %tmp2 = shufflevector <8 x i8> %tmp1, <8 x i8> undef, <16 x i32> < i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1 >
40         ret <16 x i8> %tmp2
43 define <8 x i16> @vduplaneQ16(<4 x i16>* %A) nounwind {
44 ;CHECK: vduplaneQ16:
45 ;CHECK: vdup.16
46         %tmp1 = load <4 x i16>* %A
47         %tmp2 = shufflevector <4 x i16> %tmp1, <4 x i16> undef, <8 x i32> < i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1 >
48         ret <8 x i16> %tmp2
51 define <4 x i32> @vduplaneQ32(<2 x i32>* %A) nounwind {
52 ;CHECK: vduplaneQ32:
53 ;CHECK: vdup.32
54         %tmp1 = load <2 x i32>* %A
55         %tmp2 = shufflevector <2 x i32> %tmp1, <2 x i32> undef, <4 x i32> < i32 1, i32 1, i32 1, i32 1 >
56         ret <4 x i32> %tmp2
59 define <4 x float> @vduplaneQfloat(<2 x float>* %A) nounwind {
60 ;CHECK: vduplaneQfloat:
61 ;CHECK: vdup.32
62         %tmp1 = load <2 x float>* %A
63         %tmp2 = shufflevector <2 x float> %tmp1, <2 x float> undef, <4 x i32> < i32 1, i32 1, i32 1, i32 1 >
64         ret <4 x float> %tmp2
67 define arm_apcscc <2 x i64> @foo(<2 x i64> %arg0_int64x1_t) nounwind readnone {
68 entry:
69   %0 = shufflevector <2 x i64> %arg0_int64x1_t, <2 x i64> undef, <2 x i32> <i32 1, i32 1>
70   ret <2 x i64> %0
73 define arm_apcscc <2 x i64> @bar(<2 x i64> %arg0_int64x1_t) nounwind readnone {
74 entry:
75   %0 = shufflevector <2 x i64> %arg0_int64x1_t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
76   ret <2 x i64> %0
79 define arm_apcscc <2 x double> @baz(<2 x double> %arg0_int64x1_t) nounwind readnone {
80 entry:
81   %0 = shufflevector <2 x double> %arg0_int64x1_t, <2 x double> undef, <2 x i32> <i32 1, i32 1>
82   ret <2 x double> %0
85 define arm_apcscc <2 x double> @qux(<2 x double> %arg0_int64x1_t) nounwind readnone {
86 entry:
87   %0 = shufflevector <2 x double> %arg0_int64x1_t, <2 x double> undef, <2 x i32> <i32 0, i32 0>
88   ret <2 x double> %0