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