1; RUN: llvm-as < %s | llc -march=arm -mattr=+neon > %t 2; RUN: grep {vsub\\.i8} %t | count 2 3; RUN: grep {vsub\\.i16} %t | count 2 4; RUN: grep {vsub\\.i32} %t | count 2 5; RUN: grep {vsub\\.i64} %t | count 2 6; RUN: grep {vsub\\.f32} %t | count 2 7 8define <8 x i8> @vsubi8(<8 x i8>* %A, <8 x i8>* %B) nounwind { 9 %tmp1 = load <8 x i8>* %A 10 %tmp2 = load <8 x i8>* %B 11 %tmp3 = sub <8 x i8> %tmp1, %tmp2 12 ret <8 x i8> %tmp3 13} 14 15define <4 x i16> @vsubi16(<4 x i16>* %A, <4 x i16>* %B) nounwind { 16 %tmp1 = load <4 x i16>* %A 17 %tmp2 = load <4 x i16>* %B 18 %tmp3 = sub <4 x i16> %tmp1, %tmp2 19 ret <4 x i16> %tmp3 20} 21 22define <2 x i32> @vsubi32(<2 x i32>* %A, <2 x i32>* %B) nounwind { 23 %tmp1 = load <2 x i32>* %A 24 %tmp2 = load <2 x i32>* %B 25 %tmp3 = sub <2 x i32> %tmp1, %tmp2 26 ret <2 x i32> %tmp3 27} 28 29define <1 x i64> @vsubi64(<1 x i64>* %A, <1 x i64>* %B) nounwind { 30 %tmp1 = load <1 x i64>* %A 31 %tmp2 = load <1 x i64>* %B 32 %tmp3 = sub <1 x i64> %tmp1, %tmp2 33 ret <1 x i64> %tmp3 34} 35 36define <2 x float> @vsubf32(<2 x float>* %A, <2 x float>* %B) nounwind { 37 %tmp1 = load <2 x float>* %A 38 %tmp2 = load <2 x float>* %B 39 %tmp3 = sub <2 x float> %tmp1, %tmp2 40 ret <2 x float> %tmp3 41} 42 43define <16 x i8> @vsubQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind { 44 %tmp1 = load <16 x i8>* %A 45 %tmp2 = load <16 x i8>* %B 46 %tmp3 = sub <16 x i8> %tmp1, %tmp2 47 ret <16 x i8> %tmp3 48} 49 50define <8 x i16> @vsubQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind { 51 %tmp1 = load <8 x i16>* %A 52 %tmp2 = load <8 x i16>* %B 53 %tmp3 = sub <8 x i16> %tmp1, %tmp2 54 ret <8 x i16> %tmp3 55} 56 57define <4 x i32> @vsubQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind { 58 %tmp1 = load <4 x i32>* %A 59 %tmp2 = load <4 x i32>* %B 60 %tmp3 = sub <4 x i32> %tmp1, %tmp2 61 ret <4 x i32> %tmp3 62} 63 64define <2 x i64> @vsubQi64(<2 x i64>* %A, <2 x i64>* %B) nounwind { 65 %tmp1 = load <2 x i64>* %A 66 %tmp2 = load <2 x i64>* %B 67 %tmp3 = sub <2 x i64> %tmp1, %tmp2 68 ret <2 x i64> %tmp3 69} 70 71define <4 x float> @vsubQf32(<4 x float>* %A, <4 x float>* %B) nounwind { 72 %tmp1 = load <4 x float>* %A 73 %tmp2 = load <4 x float>* %B 74 %tmp3 = sub <4 x float> %tmp1, %tmp2 75 ret <4 x float> %tmp3 76} 77