xref: /minix3/sys/external/bsd/compiler_rt/dist/lib/builtins/subtf3.c (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc //===-- lib/subtf3.c - Quad-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 quad-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 QUAD_PRECISION
16*0a6a1f1dSLionel Sambuc #include "fp_lib.h"
17*0a6a1f1dSLionel Sambuc 
18*0a6a1f1dSLionel Sambuc #if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT)
19*0a6a1f1dSLionel Sambuc COMPILER_RT_ABI fp_t __addtf3(fp_t a, fp_t b);
20*0a6a1f1dSLionel Sambuc 
21*0a6a1f1dSLionel Sambuc // Subtraction; flip the sign bit of b and add.
22*0a6a1f1dSLionel Sambuc COMPILER_RT_ABI fp_t
__subtf3(fp_t a,fp_t b)23*0a6a1f1dSLionel Sambuc __subtf3(fp_t a, fp_t b) {
24*0a6a1f1dSLionel Sambuc     return __addtf3(a, fromRep(toRep(b) ^ signBit));
25*0a6a1f1dSLionel Sambuc }
26*0a6a1f1dSLionel Sambuc 
27*0a6a1f1dSLionel Sambuc #endif
28