]> git.proxmox.com Git - rustc.git/blob - src/libcompiler_builtins/compiler-rt/test/builtins/Unit/arm/call_apsr.S
New upstream version 1.25.0+dfsg1
[rustc.git] / src / libcompiler_builtins / compiler-rt / test / builtins / Unit / arm / call_apsr.S
1 //===-- call_apsr.S - Helpers for ARM EABI floating point tests -----------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file implements helpers for ARM EABI floating point tests for the
11 // compiler_rt library.
12 //
13 //===----------------------------------------------------------------------===//
14
15 #include "../../../../lib/builtins/assembly.h"
16
17 .syntax unified
18 // __attribute__((pcs("aapcs")))
19 // int32_t call_apsr_d(double a, double b, void(*fn)(double, double)) {
20 // fn(a, b);
21 // return apsr;
22 // }
23
24 DEFINE_COMPILERRT_PRIVATE_FUNCTION(call_apsr_d)
25 push {r7, lr}
26 ldr r7, [sp, #8]
27 blx r7
28 mrs r0, apsr
29 pop {r7, pc}
30 END_COMPILERRT_FUNCTION(call_apsr_d)
31
32 // __attribute__((pcs("aapcs")))
33 // int32_t call_apsr_f(float a, float b, void(*fn)(float, float)) {
34 // fn(a, b);
35 // return apsr;
36 // }
37
38 DEFINE_COMPILERRT_PRIVATE_FUNCTION(call_apsr_f)
39 push {lr}
40 blx r2
41 mrs r0, apsr
42 pop {pc}
43 END_COMPILERRT_FUNCTION(call_apsr_f)