1 1.12 matt /* $NetBSD: softfloat-for-gcc.h,v 1.12 2013/08/01 23:21:19 matt Exp $ */ 2 1.1 bjh21 3 1.1 bjh21 /* 4 1.1 bjh21 * Move private identifiers with external linkage into implementation 5 1.6 salo * namespace. -- Klaus Klein <kleink (at) NetBSD.org>, May 5, 1999 6 1.1 bjh21 */ 7 1.1 bjh21 #define float_exception_flags _softfloat_float_exception_flags 8 1.5 bjh21 #define float_exception_mask _softfloat_float_exception_mask 9 1.1 bjh21 #define float_rounding_mode _softfloat_float_rounding_mode 10 1.1 bjh21 #define float_raise _softfloat_float_raise 11 1.8 matt 12 1.1 bjh21 /* The following batch are called by GCC through wrappers */ 13 1.1 bjh21 #define float32_eq _softfloat_float32_eq 14 1.1 bjh21 #define float32_le _softfloat_float32_le 15 1.1 bjh21 #define float32_lt _softfloat_float32_lt 16 1.1 bjh21 #define float64_eq _softfloat_float64_eq 17 1.1 bjh21 #define float64_le _softfloat_float64_le 18 1.1 bjh21 #define float64_lt _softfloat_float64_lt 19 1.8 matt #define float128_eq _softfloat_float128_eq 20 1.8 matt #define float128_le _softfloat_float128_le 21 1.8 matt #define float128_lt _softfloat_float128_lt 22 1.1 bjh21 23 1.1 bjh21 /* 24 1.1 bjh21 * Macros to define functions with the GCC expected names 25 1.1 bjh21 */ 26 1.1 bjh21 27 1.1 bjh21 #define float32_add __addsf3 28 1.1 bjh21 #define float64_add __adddf3 29 1.7 jmmv #define floatx80_add __addxf3 30 1.8 matt #define float128_add __addtf3 31 1.8 matt 32 1.1 bjh21 #define float32_sub __subsf3 33 1.1 bjh21 #define float64_sub __subdf3 34 1.7 jmmv #define floatx80_sub __subxf3 35 1.8 matt #define float128_sub __subtf3 36 1.8 matt 37 1.1 bjh21 #define float32_mul __mulsf3 38 1.1 bjh21 #define float64_mul __muldf3 39 1.7 jmmv #define floatx80_mul __mulxf3 40 1.8 matt #define float128_mul __multf3 41 1.8 matt 42 1.1 bjh21 #define float32_div __divsf3 43 1.1 bjh21 #define float64_div __divdf3 44 1.7 jmmv #define floatx80_div __divxf3 45 1.8 matt #define float128_div __divtf3 46 1.8 matt 47 1.8 matt #if 0 48 1.8 matt #define float32_neg __negsf2 49 1.8 matt #define float64_neg __negdf2 50 1.8 matt #define floatx80_neg __negxf2 51 1.8 matt #define float128_neg __negtf2 52 1.8 matt #endif 53 1.8 matt 54 1.1 bjh21 #define int32_to_float32 __floatsisf 55 1.1 bjh21 #define int32_to_float64 __floatsidf 56 1.7 jmmv #define int32_to_floatx80 __floatsixf 57 1.8 matt #define int32_to_float128 __floatsitf 58 1.8 matt 59 1.1 bjh21 #define int64_to_float32 __floatdisf 60 1.1 bjh21 #define int64_to_float64 __floatdidf 61 1.7 jmmv #define int64_to_floatx80 __floatdixf 62 1.8 matt #define int64_to_float128 __floatditf 63 1.8 matt 64 1.8 matt #define int128_to_float32 __floattisf 65 1.8 matt #define int128_to_float64 __floattidf 66 1.8 matt #define int128_to_floatx80 __floattixf 67 1.8 matt #define int128_to_float128 __floattitf 68 1.8 matt 69 1.8 matt #define uint32_to_float32 __floatunsisf 70 1.8 matt #define uint32_to_float64 __floatunsidf 71 1.8 matt #define uint32_to_floatx80 __floatunsixf 72 1.8 matt #define uint32_to_float128 __floatunsitf 73 1.8 matt 74 1.8 matt #define uint64_to_float32 __floatundisf 75 1.8 matt #define uint64_to_float64 __floatundidf 76 1.8 matt #define uint64_to_floatx80 __floatundixf 77 1.8 matt #define uint64_to_float128 __floatunditf 78 1.8 matt 79 1.8 matt #define uint128_to_float32 __floatuntisf 80 1.8 matt #define uint128_to_float64 __floatuntidf 81 1.8 matt #define uint128_to_floatx80 __floatuntixf 82 1.8 matt #define uint128_to_float128 __floatuntitf 83 1.8 matt 84 1.1 bjh21 #define float32_to_int32_round_to_zero __fixsfsi 85 1.1 bjh21 #define float64_to_int32_round_to_zero __fixdfsi 86 1.7 jmmv #define floatx80_to_int32_round_to_zero __fixxfsi 87 1.8 matt #define float128_to_int32_round_to_zero __fixtfsi 88 1.8 matt 89 1.1 bjh21 #define float32_to_int64_round_to_zero __fixsfdi 90 1.1 bjh21 #define float64_to_int64_round_to_zero __fixdfdi 91 1.8 matt #define floatx80_to_int64_round_to_zero __fixxfdi 92 1.8 matt #define float128_to_int64_round_to_zero __fixtfdi 93 1.8 matt 94 1.8 matt #define float32_to_int128_round_to_zero __fixsfti 95 1.8 matt #define float64_to_int128_round_to_zero __fixdfti 96 1.8 matt #define floatx80_to_int128_round_to_zero __fixxfti 97 1.8 matt #define float128_to_int128_round_to_zero __fixtfti 98 1.8 matt 99 1.4 bjh21 #define float32_to_uint32_round_to_zero __fixunssfsi 100 1.4 bjh21 #define float64_to_uint32_round_to_zero __fixunsdfsi 101 1.8 matt #define floatx80_to_uint32_round_to_zero __fixunsxfsi 102 1.8 matt #define float128_to_uint32_round_to_zero __fixunstfsi 103 1.8 matt 104 1.8 matt #define float32_to_uint64_round_to_zero __fixunssfdi 105 1.8 matt #define float64_to_uint64_round_to_zero __fixunsdfdi 106 1.8 matt #define floatx80_to_uint64_round_to_zero __fixunsxfdi 107 1.8 matt #define float128_to_uint64_round_to_zero __fixunstfdi 108 1.8 matt 109 1.8 matt #define float32_to_uint128_round_to_zero __fixunssfti 110 1.8 matt #define float64_to_uint128_round_to_zero __fixunsdfti 111 1.8 matt #define floatx80_to_uint128_round_to_zero __fixunsxfti 112 1.8 matt #define float128_to_uint128_round_to_zero __fixunstfti 113 1.8 matt 114 1.1 bjh21 #define float32_to_float64 __extendsfdf2 115 1.8 matt #define float32_to_floatx80 __extendsfxf2 116 1.8 matt #define float32_to_float128 __extendsftf2 117 1.7 jmmv #define float64_to_floatx80 __extenddfxf2 118 1.8 matt #define float64_to_float128 __extenddftf2 119 1.8 matt 120 1.8 matt #define float128_to_float64 __trunctfdf2 121 1.7 jmmv #define floatx80_to_float64 __truncxfdf2 122 1.8 matt #define float128_to_float32 __trunctfsf2 123 1.7 jmmv #define floatx80_to_float32 __truncxfsf2 124 1.8 matt #define float64_to_float32 __truncdfsf2 125 1.8 matt 126 1.8 matt #if 0 127 1.8 matt #define float32_cmp __cmpsf2 128 1.8 matt #define float32_unord __unordsf2 129 1.8 matt #define float32_eq __eqsf2 130 1.8 matt #define float32_ne __nesf2 131 1.8 matt #define float32_ge __gesf2 132 1.8 matt #define float32_lt __ltsf2 133 1.8 matt #define float32_le __lesf2 134 1.8 matt #define float32_gt __gtsf2 135 1.8 matt #endif 136 1.8 matt 137 1.8 matt #if 0 138 1.8 matt #define float64_cmp __cmpdf2 139 1.8 matt #define float64_unord __unorddf2 140 1.8 matt #define float64_eq __eqdf2 141 1.8 matt #define float64_ne __nedf2 142 1.8 matt #define float64_ge __gedf2 143 1.8 matt #define float64_lt __ltdf2 144 1.8 matt #define float64_le __ledf2 145 1.8 matt #define float64_gt __gtdf2 146 1.8 matt #endif 147 1.7 jmmv 148 1.8 matt /* XXX not in libgcc */ 149 1.8 matt #if 1 150 1.8 matt #define floatx80_cmp __cmpxf2 151 1.8 matt #define floatx80_unord __unordxf2 152 1.8 matt #define floatx80_eq __eqxf2 153 1.8 matt #define floatx80_ne __nexf2 154 1.8 matt #define floatx80_ge __gexf2 155 1.7 jmmv #define floatx80_lt __ltxf2 156 1.7 jmmv #define floatx80_le __lexf2 157 1.8 matt #define floatx80_gt __gtxf2 158 1.8 matt #endif 159 1.8 matt 160 1.8 matt #if 0 161 1.8 matt #define float128_cmp __cmptf2 162 1.8 matt #define float128_unord __unordtf2 163 1.8 matt #define float128_eq __eqtf2 164 1.8 matt #define float128_ne __netf2 165 1.8 matt #define float128_ge __getf2 166 1.8 matt #define float128_lt __lttf2 167 1.8 matt #define float128_le __letf2 168 1.8 matt #define float128_gt __gttf2 169 1.8 matt #endif 170 1.9 matt 171 1.9 matt #ifdef __ARM_EABI__ 172 1.12 matt #ifdef __ARM_PCS_VFP 173 1.11 matt #include <arm/aeabi.h> 174 1.12 matt #endif 175 1.9 matt #define __addsf3 __aeabi_fadd 176 1.9 matt #define __adddf3 __aeabi_dadd 177 1.9 matt 178 1.9 matt #define __subsf3 __aeabi_fsub 179 1.9 matt #define __subdf3 __aeabi_dsub 180 1.9 matt 181 1.9 matt #define __mulsf3 __aeabi_fmul 182 1.9 matt #define __muldf3 __aeabi_dmul 183 1.9 matt 184 1.9 matt #define __divsf3 __aeabi_fdiv 185 1.9 matt #define __divdf3 __aeabi_ddiv 186 1.9 matt 187 1.9 matt #define __floatsisf __aeabi_i2f 188 1.9 matt #define __floatsidf __aeabi_i2d 189 1.9 matt 190 1.9 matt #define __floatdisf __aeabi_l2f 191 1.9 matt #define __floatdidf __aeabi_l2d 192 1.9 matt 193 1.9 matt #define __floatunsisf __aeabi_ui2f 194 1.9 matt #define __floatunsidf __aeabi_ui2d 195 1.9 matt 196 1.9 matt #define __floatundisf __aeabi_ul2f 197 1.9 matt #define __floatundidf __aeabi_ul2d 198 1.9 matt 199 1.9 matt #define __fixsfsi __aeabi_f2iz 200 1.9 matt #define __fixdfsi __aeabi_d2iz 201 1.9 matt 202 1.9 matt #define __fixsfdi __aeabi_f2lz 203 1.9 matt #define __fixdfdi __aeabi_d2lz 204 1.9 matt 205 1.9 matt #define __fixunssfsi __aeabi_f2uiz 206 1.9 matt #define __fixunsdfsi __aeabi_d2uiz 207 1.9 matt 208 1.9 matt #define __fixunssfdi __aeabi_f2ulz 209 1.9 matt #define __fixunsdfdi __aeabi_d2ulz 210 1.9 matt 211 1.9 matt #define __extendsfdf2 __aeabi_f2d 212 1.9 matt #define __truncdfsf2 __aeabi_d2f 213 1.9 matt 214 1.9 matt #endif /* __ARM_EABI__ */ 215