Fix part 1 of pr4682. PICADD is a 16-bit instruction even in thumb2 mode.
[llvm/avr.git] / test / CodeGen / ARM / vmla.ll
blobed77e11a7c47efccf9dab54ee4bd78990827764a
1 ; RUN: llvm-as < %s | llc -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
7 define <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
16 define <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
25 define <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
34 define <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
43 define <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
52 define <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
61 define <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
70 define <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