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