1 //===-- aeabi_fcmp.S - EABI fcmp* implementation ---------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "../assembly.h"
12 // int __aeabi_fcmp{eq,lt,le,ge,gt}(float a, float b) {
13 // int result = __{eq,lt,le,ge,gt}sf2(a, b);
14 // if (result {==,<,<=,>=,>} 0) {
21 #define DEFINE_AEABI_FCMP(cond) \
22 .syntax unified SEPARATOR \
23 .p2align 2 SEPARATOR \
24 DEFINE_COMPILERRT_FUNCTION(__aeabi_fcmp ## cond) \
25 push { r4, lr } SEPARATOR \
26 bl SYMBOL_NAME(__ ## cond ## sf2) SEPARATOR \
27 cmp r0, #0 SEPARATOR \
28 b ## cond 1f SEPARATOR \
29 movs r0, #0 SEPARATOR \
30 pop { r4, pc } SEPARATOR \
32 movs r0, #1 SEPARATOR \
33 pop { r4, pc } SEPARATOR \
34 END_COMPILERRT_FUNCTION(__aeabi_fcmp ## cond)
42 NO_EXEC_STACK_DIRECTIVE