xref: /aosp_15_r20/external/llvm/test/CodeGen/PowerPC/vsx-recip-est.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 -enable-unsafe-fp-math | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 -enable-unsafe-fp-math | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker@a = global float 3.000000e+00, align 4
4*9880d681SAndroid Build Coastguard Worker@b = global float 4.000000e+00, align 4
5*9880d681SAndroid Build Coastguard Worker@c = global double 3.000000e+00, align 8
6*9880d681SAndroid Build Coastguard Worker@d = global double 4.000000e+00, align 8
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind
9*9880d681SAndroid Build Coastguard Workerdefine float @emit_xsresp() {
10*9880d681SAndroid Build Coastguard Workerentry:
11*9880d681SAndroid Build Coastguard Worker  %0 = load float, float* @a, align 4
12*9880d681SAndroid Build Coastguard Worker  %1 = load float, float* @b, align 4
13*9880d681SAndroid Build Coastguard Worker  %div = fdiv fast float %0, %1
14*9880d681SAndroid Build Coastguard Worker  ret float %div
15*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @emit_xsresp
16*9880d681SAndroid Build Coastguard Worker; CHECK: xsresp {{[0-9]+}}
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind
20*9880d681SAndroid Build Coastguard Workerdefine float @emit_xsrsqrtesp(float %f) {
21*9880d681SAndroid Build Coastguard Workerentry:
22*9880d681SAndroid Build Coastguard Worker  %f.addr = alloca float, align 4
23*9880d681SAndroid Build Coastguard Worker  store float %f, float* %f.addr, align 4
24*9880d681SAndroid Build Coastguard Worker  %0 = load float, float* %f.addr, align 4
25*9880d681SAndroid Build Coastguard Worker  %1 = load float, float* @b, align 4
26*9880d681SAndroid Build Coastguard Worker  %2 = call float @llvm.sqrt.f32(float %1)
27*9880d681SAndroid Build Coastguard Worker  %div = fdiv fast float %0, %2
28*9880d681SAndroid Build Coastguard Worker  ret float %div
29*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @emit_xsrsqrtesp
30*9880d681SAndroid Build Coastguard Worker; CHECK: xsrsqrtesp {{[0-9]+}}
31*9880d681SAndroid Build Coastguard Worker}
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
34*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.sqrt.f32(float)
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind
37*9880d681SAndroid Build Coastguard Workerdefine double @emit_xsredp() {
38*9880d681SAndroid Build Coastguard Workerentry:
39*9880d681SAndroid Build Coastguard Worker  %0 = load double, double* @c, align 8
40*9880d681SAndroid Build Coastguard Worker  %1 = load double, double* @d, align 8
41*9880d681SAndroid Build Coastguard Worker  %div = fdiv fast double %0, %1
42*9880d681SAndroid Build Coastguard Worker  ret double %div
43*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @emit_xsredp
44*9880d681SAndroid Build Coastguard Worker; CHECK: xsredp {{[0-9]+}}
45*9880d681SAndroid Build Coastguard Worker}
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind
48*9880d681SAndroid Build Coastguard Workerdefine double @emit_xsrsqrtedp(double %f) {
49*9880d681SAndroid Build Coastguard Workerentry:
50*9880d681SAndroid Build Coastguard Worker  %f.addr = alloca double, align 8
51*9880d681SAndroid Build Coastguard Worker  store double %f, double* %f.addr, align 8
52*9880d681SAndroid Build Coastguard Worker  %0 = load double, double* %f.addr, align 8
53*9880d681SAndroid Build Coastguard Worker  %1 = load double, double* @d, align 8
54*9880d681SAndroid Build Coastguard Worker  %2 = call double @llvm.sqrt.f64(double %1)
55*9880d681SAndroid Build Coastguard Worker  %div = fdiv fast double %0, %2
56*9880d681SAndroid Build Coastguard Worker  ret double %div
57*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @emit_xsrsqrtedp
58*9880d681SAndroid Build Coastguard Worker; CHECK: xsrsqrtedp {{[0-9]+}}
59*9880d681SAndroid Build Coastguard Worker}
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
62*9880d681SAndroid Build Coastguard Workerdeclare double @llvm.sqrt.f64(double) #1
63