xref: /aosp_15_r20/external/compiler-rt/lib/builtins/subtf3.c (revision 7c3d14c8b49c529e04be81a3ce6f5cc23712e4c6)
1*7c3d14c8STreehugger Robot //===-- lib/subtf3.c - Quad-precision subtraction -----------------*- C -*-===//
2*7c3d14c8STreehugger Robot //
3*7c3d14c8STreehugger Robot //                     The LLVM Compiler Infrastructure
4*7c3d14c8STreehugger Robot //
5*7c3d14c8STreehugger Robot // This file is dual licensed under the MIT and the University of Illinois Open
6*7c3d14c8STreehugger Robot // Source Licenses. See LICENSE.TXT for details.
7*7c3d14c8STreehugger Robot //
8*7c3d14c8STreehugger Robot //===----------------------------------------------------------------------===//
9*7c3d14c8STreehugger Robot //
10*7c3d14c8STreehugger Robot // This file implements quad-precision soft-float subtraction with the
11*7c3d14c8STreehugger Robot // IEEE-754 default rounding (to nearest, ties to even).
12*7c3d14c8STreehugger Robot //
13*7c3d14c8STreehugger Robot //===----------------------------------------------------------------------===//
14*7c3d14c8STreehugger Robot 
15*7c3d14c8STreehugger Robot #define QUAD_PRECISION
16*7c3d14c8STreehugger Robot #include "fp_lib.h"
17*7c3d14c8STreehugger Robot 
18*7c3d14c8STreehugger Robot #if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT)
19*7c3d14c8STreehugger Robot COMPILER_RT_ABI fp_t __addtf3(fp_t a, fp_t b);
20*7c3d14c8STreehugger Robot 
21*7c3d14c8STreehugger Robot // Subtraction; flip the sign bit of b and add.
22*7c3d14c8STreehugger Robot COMPILER_RT_ABI fp_t
__subtf3(fp_t a,fp_t b)23*7c3d14c8STreehugger Robot __subtf3(fp_t a, fp_t b) {
24*7c3d14c8STreehugger Robot     return __addtf3(a, fromRep(toRep(b) ^ signBit));
25*7c3d14c8STreehugger Robot }
26*7c3d14c8STreehugger Robot 
27*7c3d14c8STreehugger Robot #endif
28