xref: /llvm-project/llvm/test/CodeGen/ARM/vmls.ll (revision 2e076c4e02fb99c791277d55f1325a4fa31c9ef9)
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