Eliminate more uses of llvm-as and llvm-dis.
[oota-llvm.git] / test / CodeGen / ARM / vmls.ll
1 ; RUN: llc < %s -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
7 define <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
16 define <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
25 define <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
34 define <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
43 define <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
52 define <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
61 define <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
70 define <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 }