]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/compiler-rt/lib/builtins/ppc/saveFP.S
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / compiler-rt / lib / builtins / ppc / saveFP.S
1 //===-- saveFP.S - Implement saveFP ---------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 #include "../assembly.h"
10
11 //
12 // Helper function used by compiler to save ppc floating point registers in
13 // function prologs.  This routines also saves r0 in the LR slot.
14 // If the compiler wants to save f27..f31, it does a "bl saveFP+52"
15 //
16 // This function should never be exported by a shared library.  Each linkage
17 // unit carries its own copy of this function.
18 //
19 DEFINE_COMPILERRT_PRIVATE_FUNCTION_UNMANGLED(saveFP)
20         stfd    f14,-144(r1)
21         stfd    f15,-136(r1)
22         stfd    f16,-128(r1)
23         stfd    f17,-120(r1)
24         stfd    f18,-112(r1)
25         stfd    f19,-104(r1)
26         stfd    f20,-96(r1)
27         stfd    f21,-88(r1)
28         stfd    f22,-80(r1)
29         stfd    f23,-72(r1)
30         stfd    f24,-64(r1)
31         stfd    f25,-56(r1)
32         stfd    f26,-48(r1)
33         stfd    f27,-40(r1)
34         stfd    f28,-32(r1)
35         stfd    f29,-24(r1)
36         stfd    f30,-16(r1)
37         stfd    f31,-8(r1)
38         stw      r0,8(r1)
39         blr
40
41 NO_EXEC_STACK_DIRECTIVE
42