xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/fnmscs.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm-eabi -mattr=+vfp2 %s -o - \
2*9880d681SAndroid Build Coastguard Worker; RUN:  | FileCheck %s -check-prefix=VFP2
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm-eabi -mattr=+neon %s -o - \
5*9880d681SAndroid Build Coastguard Worker; RUN:  | FileCheck %s -check-prefix=NEON
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm-eabi -mcpu=cortex-a8 %s -o - \
8*9880d681SAndroid Build Coastguard Worker; RUN:  | FileCheck %s -check-prefix=A8
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm-eabi -mcpu=cortex-a8 -regalloc=basic %s -o - \
11*9880d681SAndroid Build Coastguard Worker; RUN:  | FileCheck %s -check-prefix=A8
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm-eabi -mcpu=cortex-a8 --enable-unsafe-fp-math %s -o - \
14*9880d681SAndroid Build Coastguard Worker; RUN:  | FileCheck %s -check-prefix=A8U
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm-darwin -mcpu=cortex-a8 %s -o - \
17*9880d681SAndroid Build Coastguard Worker; RUN:  | FileCheck %s -check-prefix=A8U
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdefine float @t1(float %acc, float %a, float %b) nounwind {
20*9880d681SAndroid Build Coastguard Workerentry:
21*9880d681SAndroid Build Coastguard Worker; VFP2-LABEL: t1:
22*9880d681SAndroid Build Coastguard Worker; VFP2: vnmla.f32
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker; NEON-LABEL: t1:
25*9880d681SAndroid Build Coastguard Worker; NEON: vnmla.f32
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Worker; A8U-LABEL: t1:
28*9880d681SAndroid Build Coastguard Worker; A8U: vnmul.f32 s{{[0-9]}}, s{{[0-9]}}, s{{[0-9]}}
29*9880d681SAndroid Build Coastguard Worker; A8U: vsub.f32 d{{[0-9]}}, d{{[0-9]}}, d{{[0-9]}}
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Worker; A8-LABEL: t1:
32*9880d681SAndroid Build Coastguard Worker; A8: vnmul.f32 s{{[0-9]}}, s{{[0-9]}}, s{{[0-9]}}
33*9880d681SAndroid Build Coastguard Worker; A8: vsub.f32 s{{[0-9]}}, s{{[0-9]}}, s{{[0-9]}}
34*9880d681SAndroid Build Coastguard Worker	%0 = fmul float %a, %b
35*9880d681SAndroid Build Coastguard Worker	%1 = fsub float -0.0, %0
36*9880d681SAndroid Build Coastguard Worker        %2 = fsub float %1, %acc
37*9880d681SAndroid Build Coastguard Worker	ret float %2
38*9880d681SAndroid Build Coastguard Worker}
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Workerdefine float @t2(float %acc, float %a, float %b) nounwind {
41*9880d681SAndroid Build Coastguard Workerentry:
42*9880d681SAndroid Build Coastguard Worker; VFP2-LABEL: t2:
43*9880d681SAndroid Build Coastguard Worker; VFP2: vnmla.f32
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker; NEON-LABEL: t2:
46*9880d681SAndroid Build Coastguard Worker; NEON: vnmla.f32
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Worker; A8U-LABEL: t2:
49*9880d681SAndroid Build Coastguard Worker; A8U: vnmul.f32 s{{[01234]}}, s{{[01234]}}, s{{[01234]}}
50*9880d681SAndroid Build Coastguard Worker; A8U: vsub.f32 d{{[0-9]}}, d{{[0-9]}}, d{{[0-9]}}
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker; A8-LABEL: t2:
53*9880d681SAndroid Build Coastguard Worker; A8: vnmul.f32 s{{[01234]}}, s{{[01234]}}, s{{[01234]}}
54*9880d681SAndroid Build Coastguard Worker; A8: vsub.f32 s{{[0-9]}}, s{{[0-9]}}, s{{[0-9]}}
55*9880d681SAndroid Build Coastguard Worker	%0 = fmul float %a, %b
56*9880d681SAndroid Build Coastguard Worker	%1 = fmul float -1.0, %0
57*9880d681SAndroid Build Coastguard Worker        %2 = fsub float %1, %acc
58*9880d681SAndroid Build Coastguard Worker	ret float %2
59*9880d681SAndroid Build Coastguard Worker}
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workerdefine double @t3(double %acc, double %a, double %b) nounwind {
62*9880d681SAndroid Build Coastguard Workerentry:
63*9880d681SAndroid Build Coastguard Worker; VFP2-LABEL: t3:
64*9880d681SAndroid Build Coastguard Worker; VFP2: vnmla.f64
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Worker; NEON-LABEL: t3:
67*9880d681SAndroid Build Coastguard Worker; NEON: vnmla.f64
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Worker; A8U-LABEL: t3:
70*9880d681SAndroid Build Coastguard Worker; A8U: vnmul.f64 d
71*9880d681SAndroid Build Coastguard Worker; A8U: vsub.f64 d
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Worker; A8-LABEL: t3:
74*9880d681SAndroid Build Coastguard Worker; A8: vnmul.f64 d
75*9880d681SAndroid Build Coastguard Worker; A8: vsub.f64 d
76*9880d681SAndroid Build Coastguard Worker	%0 = fmul double %a, %b
77*9880d681SAndroid Build Coastguard Worker	%1 = fsub double -0.0, %0
78*9880d681SAndroid Build Coastguard Worker        %2 = fsub double %1, %acc
79*9880d681SAndroid Build Coastguard Worker	ret double %2
80*9880d681SAndroid Build Coastguard Worker}
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Workerdefine double @t4(double %acc, double %a, double %b) nounwind {
83*9880d681SAndroid Build Coastguard Workerentry:
84*9880d681SAndroid Build Coastguard Worker; VFP2-LABEL: t4:
85*9880d681SAndroid Build Coastguard Worker; VFP2: vnmla.f64
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard Worker; NEON-LABEL: t4:
88*9880d681SAndroid Build Coastguard Worker; NEON: vnmla.f64
89*9880d681SAndroid Build Coastguard Worker
90*9880d681SAndroid Build Coastguard Worker; A8U-LABEL: t4:
91*9880d681SAndroid Build Coastguard Worker; A8U: vnmul.f64 d
92*9880d681SAndroid Build Coastguard Worker; A8U: vsub.f64 d
93*9880d681SAndroid Build Coastguard Worker
94*9880d681SAndroid Build Coastguard Worker; A8-LABEL: t4:
95*9880d681SAndroid Build Coastguard Worker; A8: vnmul.f64 d
96*9880d681SAndroid Build Coastguard Worker; A8: vsub.f64 d
97*9880d681SAndroid Build Coastguard Worker	%0 = fmul double %a, %b
98*9880d681SAndroid Build Coastguard Worker	%1 = fmul double -1.0, %0
99*9880d681SAndroid Build Coastguard Worker        %2 = fsub double %1, %acc
100*9880d681SAndroid Build Coastguard Worker	ret double %2
101*9880d681SAndroid Build Coastguard Worker}
102