1*c36abe0dSDavid Schultz /* $NetBSD: softfloat-for-gcc.h,v 1.8 2009/12/14 01:07:42 matt Exp $ */ 215144b0fSOlivier Houchard 315144b0fSOlivier Houchard /* 415144b0fSOlivier Houchard * Move private identifiers with external linkage into implementation 515144b0fSOlivier Houchard * namespace. -- Klaus Klein <kleink@NetBSD.org>, May 5, 1999 615144b0fSOlivier Houchard */ 7980ece80SDavid Schultz #define float_exception_flags __softfloat_float_exception_flags 8980ece80SDavid Schultz #define float_exception_mask __softfloat_float_exception_mask 9980ece80SDavid Schultz #define float_rounding_mode __softfloat_float_rounding_mode 10980ece80SDavid Schultz #define float_raise __softfloat_float_raise 1115144b0fSOlivier Houchard /* The following batch are called by GCC through wrappers */ 12980ece80SDavid Schultz #define float32_eq __softfloat_float32_eq 13980ece80SDavid Schultz #define float32_le __softfloat_float32_le 14980ece80SDavid Schultz #define float32_lt __softfloat_float32_lt 15980ece80SDavid Schultz #define float64_eq __softfloat_float64_eq 16980ece80SDavid Schultz #define float64_le __softfloat_float64_le 17980ece80SDavid Schultz #define float64_lt __softfloat_float64_lt 18*c36abe0dSDavid Schultz #define float128_eq __softfloat_float128_eq 19*c36abe0dSDavid Schultz #define float128_le __softfloat_float128_le 20*c36abe0dSDavid Schultz #define float128_lt __softfloat_float128_lt 2115144b0fSOlivier Houchard 2215144b0fSOlivier Houchard /* 2315144b0fSOlivier Houchard * Macros to define functions with the GCC expected names 2415144b0fSOlivier Houchard */ 2515144b0fSOlivier Houchard 2615144b0fSOlivier Houchard #define float32_add __addsf3 2715144b0fSOlivier Houchard #define float64_add __adddf3 28*c36abe0dSDavid Schultz #define floatx80_add __addxf3 29*c36abe0dSDavid Schultz #define float128_add __addtf3 30*c36abe0dSDavid Schultz 3115144b0fSOlivier Houchard #define float32_sub __subsf3 3215144b0fSOlivier Houchard #define float64_sub __subdf3 33*c36abe0dSDavid Schultz #define floatx80_sub __subxf3 34*c36abe0dSDavid Schultz #define float128_sub __subtf3 35*c36abe0dSDavid Schultz 3615144b0fSOlivier Houchard #define float32_mul __mulsf3 3715144b0fSOlivier Houchard #define float64_mul __muldf3 38*c36abe0dSDavid Schultz #define floatx80_mul __mulxf3 39*c36abe0dSDavid Schultz #define float128_mul __multf3 40*c36abe0dSDavid Schultz 4115144b0fSOlivier Houchard #define float32_div __divsf3 4215144b0fSOlivier Houchard #define float64_div __divdf3 43*c36abe0dSDavid Schultz #define floatx80_div __divxf3 44*c36abe0dSDavid Schultz #define float128_div __divtf3 45*c36abe0dSDavid Schultz 46*c36abe0dSDavid Schultz #if 0 47*c36abe0dSDavid Schultz #define float32_neg __negsf2 48*c36abe0dSDavid Schultz #define float64_neg __negdf2 49*c36abe0dSDavid Schultz #define floatx80_neg __negxf2 50*c36abe0dSDavid Schultz #define float128_neg __negtf2 51*c36abe0dSDavid Schultz #endif 52*c36abe0dSDavid Schultz 5315144b0fSOlivier Houchard #define int32_to_float32 __floatsisf 5415144b0fSOlivier Houchard #define int32_to_float64 __floatsidf 55*c36abe0dSDavid Schultz #define int32_to_floatx80 __floatsixf 56*c36abe0dSDavid Schultz #define int32_to_float128 __floatsitf 57*c36abe0dSDavid Schultz 5815144b0fSOlivier Houchard #define int64_to_float32 __floatdisf 5915144b0fSOlivier Houchard #define int64_to_float64 __floatdidf 60*c36abe0dSDavid Schultz #define int64_to_floatx80 __floatdixf 61*c36abe0dSDavid Schultz #define int64_to_float128 __floatditf 62*c36abe0dSDavid Schultz 63*c36abe0dSDavid Schultz #define int128_to_float32 __floattisf 64*c36abe0dSDavid Schultz #define int128_to_float64 __floattidf 65*c36abe0dSDavid Schultz #define int128_to_floatx80 __floattixf 66*c36abe0dSDavid Schultz #define int128_to_float128 __floattitf 67*c36abe0dSDavid Schultz 68*c36abe0dSDavid Schultz #define uint32_to_float32 __floatunsisf 69*c36abe0dSDavid Schultz #define uint32_to_float64 __floatunsidf 70*c36abe0dSDavid Schultz #define uint32_to_floatx80 __floatunsixf 71*c36abe0dSDavid Schultz #define uint32_to_float128 __floatunsitf 72*c36abe0dSDavid Schultz 73*c36abe0dSDavid Schultz #define uint64_to_float32 __floatundisf 74*c36abe0dSDavid Schultz #define uint64_to_float64 __floatundidf 75*c36abe0dSDavid Schultz #define uint64_to_floatx80 __floatundixf 76*c36abe0dSDavid Schultz #define uint64_to_float128 __floatunditf 77*c36abe0dSDavid Schultz 78*c36abe0dSDavid Schultz #define uint128_to_float32 __floatuntisf 79*c36abe0dSDavid Schultz #define uint128_to_float64 __floatuntidf 80*c36abe0dSDavid Schultz #define uint128_to_floatx80 __floatuntixf 81*c36abe0dSDavid Schultz #define uint128_to_float128 __floatuntitf 82*c36abe0dSDavid Schultz 8315144b0fSOlivier Houchard #define float32_to_int32_round_to_zero __fixsfsi 8415144b0fSOlivier Houchard #define float64_to_int32_round_to_zero __fixdfsi 85*c36abe0dSDavid Schultz #define floatx80_to_int32_round_to_zero __fixxfsi 86*c36abe0dSDavid Schultz #define float128_to_int32_round_to_zero __fixtfsi 87*c36abe0dSDavid Schultz 8815144b0fSOlivier Houchard #define float32_to_int64_round_to_zero __fixsfdi 8915144b0fSOlivier Houchard #define float64_to_int64_round_to_zero __fixdfdi 90*c36abe0dSDavid Schultz #define floatx80_to_int64_round_to_zero __fixxfdi 91*c36abe0dSDavid Schultz #define float128_to_int64_round_to_zero __fixtfdi 92*c36abe0dSDavid Schultz 93*c36abe0dSDavid Schultz #define float32_to_int128_round_to_zero __fixsfti 94*c36abe0dSDavid Schultz #define float64_to_int128_round_to_zero __fixdfti 95*c36abe0dSDavid Schultz #define floatx80_to_int128_round_to_zero __fixxfti 96*c36abe0dSDavid Schultz #define float128_to_int128_round_to_zero __fixtfti 97*c36abe0dSDavid Schultz 9815144b0fSOlivier Houchard #define float32_to_uint32_round_to_zero __fixunssfsi 9915144b0fSOlivier Houchard #define float64_to_uint32_round_to_zero __fixunsdfsi 100*c36abe0dSDavid Schultz #define floatx80_to_uint32_round_to_zero __fixunsxfsi 101*c36abe0dSDavid Schultz #define float128_to_uint32_round_to_zero __fixunstfsi 102*c36abe0dSDavid Schultz 103*c36abe0dSDavid Schultz #define float32_to_uint64_round_to_zero __fixunssfdi 104*c36abe0dSDavid Schultz #define float64_to_uint64_round_to_zero __fixunsdfdi 105*c36abe0dSDavid Schultz #define floatx80_to_uint64_round_to_zero __fixunsxfdi 106*c36abe0dSDavid Schultz #define float128_to_uint64_round_to_zero __fixunstfdi 107*c36abe0dSDavid Schultz 108*c36abe0dSDavid Schultz #define float32_to_uint128_round_to_zero __fixunssfti 109*c36abe0dSDavid Schultz #define float64_to_uint128_round_to_zero __fixunsdfti 110*c36abe0dSDavid Schultz #define floatx80_to_uint128_round_to_zero __fixunsxfti 111*c36abe0dSDavid Schultz #define float128_to_uint128_round_to_zero __fixunstfti 112*c36abe0dSDavid Schultz 11315144b0fSOlivier Houchard #define float32_to_float64 __extendsfdf2 114*c36abe0dSDavid Schultz #define float32_to_floatx80 __extendsfxf2 115*c36abe0dSDavid Schultz #define float32_to_float128 __extendsftf2 116*c36abe0dSDavid Schultz #define float64_to_floatx80 __extenddfxf2 117*c36abe0dSDavid Schultz #define float64_to_float128 __extenddftf2 118*c36abe0dSDavid Schultz 119*c36abe0dSDavid Schultz #define float128_to_float64 __trunctfdf2 120*c36abe0dSDavid Schultz #define floatx80_to_float64 __truncxfdf2 121*c36abe0dSDavid Schultz #define float128_to_float32 __trunctfsf2 122*c36abe0dSDavid Schultz #define floatx80_to_float32 __truncxfsf2 12315144b0fSOlivier Houchard #define float64_to_float32 __truncdfsf2 124*c36abe0dSDavid Schultz 125*c36abe0dSDavid Schultz #if 0 126*c36abe0dSDavid Schultz #define float32_cmp __cmpsf2 127*c36abe0dSDavid Schultz #define float32_unord __unordsf2 128*c36abe0dSDavid Schultz #define float32_eq __eqsf2 129*c36abe0dSDavid Schultz #define float32_ne __nesf2 130*c36abe0dSDavid Schultz #define float32_ge __gesf2 131*c36abe0dSDavid Schultz #define float32_lt __ltsf2 132*c36abe0dSDavid Schultz #define float32_le __lesf2 133*c36abe0dSDavid Schultz #define float32_gt __gtsf2 134*c36abe0dSDavid Schultz #endif 135*c36abe0dSDavid Schultz 136*c36abe0dSDavid Schultz #if 0 137*c36abe0dSDavid Schultz #define float64_cmp __cmpdf2 138*c36abe0dSDavid Schultz #define float64_unord __unorddf2 139*c36abe0dSDavid Schultz #define float64_eq __eqdf2 140*c36abe0dSDavid Schultz #define float64_ne __nedf2 141*c36abe0dSDavid Schultz #define float64_ge __gedf2 142*c36abe0dSDavid Schultz #define float64_lt __ltdf2 143*c36abe0dSDavid Schultz #define float64_le __ledf2 144*c36abe0dSDavid Schultz #define float64_gt __gtdf2 145*c36abe0dSDavid Schultz #endif 146*c36abe0dSDavid Schultz 147*c36abe0dSDavid Schultz /* XXX not in libgcc */ 148*c36abe0dSDavid Schultz #if 1 149*c36abe0dSDavid Schultz #define floatx80_cmp __cmpxf2 150*c36abe0dSDavid Schultz #define floatx80_unord __unordxf2 151*c36abe0dSDavid Schultz #define floatx80_eq __eqxf2 152*c36abe0dSDavid Schultz #define floatx80_ne __nexf2 153*c36abe0dSDavid Schultz #define floatx80_ge __gexf2 154*c36abe0dSDavid Schultz #define floatx80_lt __ltxf2 155*c36abe0dSDavid Schultz #define floatx80_le __lexf2 156*c36abe0dSDavid Schultz #define floatx80_gt __gtxf2 157*c36abe0dSDavid Schultz #endif 158*c36abe0dSDavid Schultz 159*c36abe0dSDavid Schultz #if 0 160*c36abe0dSDavid Schultz #define float128_cmp __cmptf2 161*c36abe0dSDavid Schultz #define float128_unord __unordtf2 162*c36abe0dSDavid Schultz #define float128_eq __eqtf2 163*c36abe0dSDavid Schultz #define float128_ne __netf2 164*c36abe0dSDavid Schultz #define float128_ge __getf2 165*c36abe0dSDavid Schultz #define float128_lt __lttf2 166*c36abe0dSDavid Schultz #define float128_le __letf2 167*c36abe0dSDavid Schultz #define float128_gt __gttf2 168*c36abe0dSDavid Schultz #endif 169