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>