xref: /minix3/sys/external/bsd/compiler_rt/dist/lib/builtins/subsf3.c (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc //===-- lib/subsf3.c - Single-precision subtraction ---------------*- C -*-===//
2*0a6a1f1dSLionel Sambuc //
3*0a6a1f1dSLionel Sambuc //                     The LLVM Compiler Infrastructure
4*0a6a1f1dSLionel Sambuc //
5*0a6a1f1dSLionel Sambuc // This file is dual licensed under the MIT and the University of Illinois Open
6*0a6a1f1dSLionel Sambuc // Source Licenses. See LICENSE.TXT for details.
7*0a6a1f1dSLionel Sambuc //
8*0a6a1f1dSLionel Sambuc //===----------------------------------------------------------------------===//
9*0a6a1f1dSLionel Sambuc //
10*0a6a1f1dSLionel Sambuc // This file implements single-precision soft-float subtraction with the
11*0a6a1f1dSLionel Sambuc // IEEE-754 default rounding (to nearest, ties to even).
12*0a6a1f1dSLionel Sambuc //
13*0a6a1f1dSLionel Sambuc //===----------------------------------------------------------------------===//
14*0a6a1f1dSLionel Sambuc 
15*0a6a1f1dSLionel Sambuc #define SINGLE_PRECISION
16*0a6a1f1dSLionel Sambuc #include "fp_lib.h"
17*0a6a1f1dSLionel Sambuc 
ARM_EABI_FNALIAS(fsub,subsf3)18*0a6a1f1dSLionel Sambuc ARM_EABI_FNALIAS(fsub, subsf3)
19*0a6a1f1dSLionel Sambuc 
20*0a6a1f1dSLionel Sambuc // Subtraction; flip the sign bit of b and add.
21*0a6a1f1dSLionel Sambuc COMPILER_RT_ABI fp_t
22*0a6a1f1dSLionel Sambuc __subsf3(fp_t a, fp_t b) {
23*0a6a1f1dSLionel Sambuc     return __addsf3(a, fromRep(toRep(b) ^ signBit));
24*0a6a1f1dSLionel Sambuc }
25*0a6a1f1dSLionel Sambuc 
26*0a6a1f1dSLionel Sambuc /* FIXME: rsub for ARM EABI */
27