[BACK]Return to softfloat-for-gcc.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libc / softfloat

Annotation of src/lib/libc/softfloat/softfloat-for-gcc.h, Revision 1.12

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

CVSweb <webmaster@jp.NetBSD.org>