1 ; RUN: llc < %s -march=arm -mattr=+neon | FileCheck %s
3 define <8 x i8> @v_bsli8(<8 x i8>* %A, <8 x i8>* %B, <8 x i8>* %C) nounwind {
6 %tmp1 = load <8 x i8>* %A
7 %tmp2 = load <8 x i8>* %B
8 %tmp3 = load <8 x i8>* %C
9 %tmp4 = and <8 x i8> %tmp1, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
10 %tmp6 = and <8 x i8> %tmp3, <i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4>
11 %tmp7 = or <8 x i8> %tmp4, %tmp6
15 define <4 x i16> @v_bsli16(<4 x i16>* %A, <4 x i16>* %B, <4 x i16>* %C) nounwind {
18 %tmp1 = load <4 x i16>* %A
19 %tmp2 = load <4 x i16>* %B
20 %tmp3 = load <4 x i16>* %C
21 %tmp4 = and <4 x i16> %tmp1, <i16 3, i16 3, i16 3, i16 3>
22 %tmp6 = and <4 x i16> %tmp3, <i16 -4, i16 -4, i16 -4, i16 -4>
23 %tmp7 = or <4 x i16> %tmp4, %tmp6
27 define <2 x i32> @v_bsli32(<2 x i32>* %A, <2 x i32>* %B, <2 x i32>* %C) nounwind {
30 %tmp1 = load <2 x i32>* %A
31 %tmp2 = load <2 x i32>* %B
32 %tmp3 = load <2 x i32>* %C
33 %tmp4 = and <2 x i32> %tmp1, <i32 3, i32 3>
34 %tmp6 = and <2 x i32> %tmp3, <i32 -4, i32 -4>
35 %tmp7 = or <2 x i32> %tmp4, %tmp6
39 define <1 x i64> @v_bsli64(<1 x i64>* %A, <1 x i64>* %B, <1 x i64>* %C) nounwind {
42 %tmp1 = load <1 x i64>* %A
43 %tmp2 = load <1 x i64>* %B
44 %tmp3 = load <1 x i64>* %C
45 %tmp4 = and <1 x i64> %tmp1, <i64 3>
46 %tmp6 = and <1 x i64> %tmp3, <i64 -4>
47 %tmp7 = or <1 x i64> %tmp4, %tmp6
51 define <16 x i8> @v_bslQi8(<16 x i8>* %A, <16 x i8>* %B, <16 x i8>* %C) nounwind {
54 %tmp1 = load <16 x i8>* %A
55 %tmp2 = load <16 x i8>* %B
56 %tmp3 = load <16 x i8>* %C
57 %tmp4 = and <16 x i8> %tmp1, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
58 %tmp6 = and <16 x i8> %tmp3, <i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4, i8 -4>
59 %tmp7 = or <16 x i8> %tmp4, %tmp6
63 define <8 x i16> @v_bslQi16(<8 x i16>* %A, <8 x i16>* %B, <8 x i16>* %C) nounwind {
66 %tmp1 = load <8 x i16>* %A
67 %tmp2 = load <8 x i16>* %B
68 %tmp3 = load <8 x i16>* %C
69 %tmp4 = and <8 x i16> %tmp1, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
70 %tmp6 = and <8 x i16> %tmp3, <i16 -4, i16 -4, i16 -4, i16 -4, i16 -4, i16 -4, i16 -4, i16 -4>
71 %tmp7 = or <8 x i16> %tmp4, %tmp6
75 define <4 x i32> @v_bslQi32(<4 x i32>* %A, <4 x i32>* %B, <4 x i32>* %C) nounwind {
78 %tmp1 = load <4 x i32>* %A
79 %tmp2 = load <4 x i32>* %B
80 %tmp3 = load <4 x i32>* %C
81 %tmp4 = and <4 x i32> %tmp1, <i32 3, i32 3, i32 3, i32 3>
82 %tmp6 = and <4 x i32> %tmp3, <i32 -4, i32 -4, i32 -4, i32 -4>
83 %tmp7 = or <4 x i32> %tmp4, %tmp6
87 define <2 x i64> @v_bslQi64(<2 x i64>* %A, <2 x i64>* %B, <2 x i64>* %C) nounwind {
90 %tmp1 = load <2 x i64>* %A
91 %tmp2 = load <2 x i64>* %B
92 %tmp3 = load <2 x i64>* %C
93 %tmp4 = and <2 x i64> %tmp1, <i64 3, i64 3>
94 %tmp6 = and <2 x i64> %tmp3, <i64 -4, i64 -4>
95 %tmp7 = or <2 x i64> %tmp4, %tmp6