[PowerPC] Collect some CallLowering arguments into a struct. [NFC]
[llvm-project.git] / compiler-rt / test / builtins / Unit / arm / call_apsr.S
blob86f6c7c944de7435eee131b512de3aba352f2bff
1 //===-- call_apsr.S - Helpers for ARM EABI floating point tests -----------===//
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 // This file implements helpers for ARM EABI floating point tests for the
10 // compiler_rt library.
12 //===----------------------------------------------------------------------===//
14 #include "../../../../lib/builtins/assembly.h"
16 .syntax unified
17 // __attribute__((pcs("aapcs")))
18 // int32_t call_apsr_d(double a, double b, void(*fn)(double, double)) {
19 //   fn(a, b);
20 //   return apsr;
21 // }
23 DEFINE_COMPILERRT_PRIVATE_FUNCTION(call_apsr_d)
24     push {r7, lr}
25     ldr r7, [sp, #8]
26     blx r7
27     mrs r0, apsr
28     pop {r7, pc}
29 END_COMPILERRT_FUNCTION(call_apsr_d)
31 // __attribute__((pcs("aapcs")))
32 // int32_t call_apsr_f(float a, float b, void(*fn)(float, float)) {
33 //   fn(a, b);
34 //   return apsr;
35 // }
37 DEFINE_COMPILERRT_PRIVATE_FUNCTION(call_apsr_f)
38     push {lr}
39     blx r2
40     mrs r0, apsr
41     pop {pc}
42 END_COMPILERRT_FUNCTION(call_apsr_f)