1; RUN: llc < %s -march=arm -mattr=+neon > %t 2; RUN: grep {vmla\\.i8} %t | count 2 3; RUN: grep {vmla\\.i16} %t | count 2 4; RUN: grep {vmla\\.i32} %t | count 2 5; RUN: grep {vmla\\.f32} %t | count 2 6 7define <8 x i8> @vmlai8(<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 = add <8 x i8> %tmp1, %tmp4 13 ret <8 x i8> %tmp5 14} 15 16define <4 x i16> @vmlai16(<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 = add <4 x i16> %tmp1, %tmp4 22 ret <4 x i16> %tmp5 23} 24 25define <2 x i32> @vmlai32(<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 = add <2 x i32> %tmp1, %tmp4 31 ret <2 x i32> %tmp5 32} 33 34define <2 x float> @vmlaf32(<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 = add <2 x float> %tmp1, %tmp4 40 ret <2 x float> %tmp5 41} 42 43define <16 x i8> @vmlaQi8(<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 = add <16 x i8> %tmp1, %tmp4 49 ret <16 x i8> %tmp5 50} 51 52define <8 x i16> @vmlaQi16(<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 = add <8 x i16> %tmp1, %tmp4 58 ret <8 x i16> %tmp5 59} 60 61define <4 x i32> @vmlaQi32(<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 = add <4 x i32> %tmp1, %tmp4 67 ret <4 x i32> %tmp5 68} 69 70define <4 x float> @vmlaQf32(<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 = add <4 x float> %tmp1, %tmp4 76 ret <4 x float> %tmp5 77} 78