xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/recp-fastmath.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=aarch64 -mattr=neon -recip=!div,!vec-div | FileCheck %s --check-prefix=FAULT
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=aarch64 -mattr=neon -recip=div,vec-div   | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine float @frecp(float %x) #0 {
5*9880d681SAndroid Build Coastguard Worker  %div = fdiv fast float 1.0, %x
6*9880d681SAndroid Build Coastguard Worker  ret float %div
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker; FAULT-LABEL: frecp:
9*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: BB#0
10*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: fmov
11*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: fdiv
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: frecp:
14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: BB#0
15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: frecpe
16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fmov
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @f2recp(<2 x float> %x) #0 {
20*9880d681SAndroid Build Coastguard Worker  %div = fdiv fast <2 x float> <float 1.0, float 1.0>, %x
21*9880d681SAndroid Build Coastguard Worker  ret <2 x float> %div
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker; FAULT-LABEL: f2recp:
24*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: BB#0
25*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: fmov
26*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: fdiv
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2recp:
29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: BB#0
30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fmov
31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: frecpe
32*9880d681SAndroid Build Coastguard Worker}
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f4recp(<4 x float> %x) #0 {
35*9880d681SAndroid Build Coastguard Worker  %div = fdiv fast <4 x float> <float 1.0, float 1.0, float 1.0, float 1.0>, %x
36*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %div
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Worker; FAULT-LABEL: f4recp:
39*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: BB#0
40*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: fmov
41*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: fdiv
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f4recp:
44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: BB#0
45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fmov
46*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: frecpe
47*9880d681SAndroid Build Coastguard Worker}
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Workerdefine double @drecp(double %x) #0 {
50*9880d681SAndroid Build Coastguard Worker  %div = fdiv fast double 1.0, %x
51*9880d681SAndroid Build Coastguard Worker  ret double %div
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Worker; FAULT-LABEL: drecp:
54*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: BB#0
55*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: fmov
56*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: fdiv
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: drecp:
59*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: BB#0
60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: frecpe
61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fmov
62*9880d681SAndroid Build Coastguard Worker}
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @d2recp(<2 x double> %x) #0 {
65*9880d681SAndroid Build Coastguard Worker  %div = fdiv fast <2 x double> <double 1.0, double 1.0>, %x
66*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %div
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker; FAULT-LABEL: d2recp:
69*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: BB#0
70*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: fmov
71*9880d681SAndroid Build Coastguard Worker; FAULT-NEXT: fdiv
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: d2recp:
74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: BB#0
75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fmov
76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: frecpe
77*9880d681SAndroid Build Coastguard Worker}
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "unsafe-fp-math"="true" }
80