2 #=============================================================================
4 # This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
5 # Package, Release 3e, by John R. Hauser.
7 # Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
8 # University of California. All rights reserved.
10 # Redistribution and use in source and binary forms, with or without
11 # modification, are permitted provided that the following conditions are met:
13 # 1. Redistributions of source code must retain the above copyright notice,
14 # this list of conditions, and the following disclaimer.
16 # 2. Redistributions in binary form must reproduce the above copyright
17 # notice, this list of conditions, and the following disclaimer in the
18 # documentation and/or other materials provided with the distribution.
20 # 3. Neither the name of the University nor the names of its contributors
21 # may be used to endorse or promote products derived from this software
22 # without specific prior written permission.
24 # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
25 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
27 # DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
28 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 #=============================================================================
37 SOURCE_DIR ?
= ..
/..
/source
38 SPECIALIZE_TYPE ?
= 8086-SSE
41 -DSOFTFLOAT_ROUND_ODD
-DINLINE_LEVEL
=5 -DSOFTFLOAT_FAST_DIV32TO16 \
42 -DSOFTFLOAT_FAST_DIV64TO32
45 C_INCLUDES
= -I.
-I
$(SOURCE_DIR
)/$(SPECIALIZE_TYPE
) -I
$(SOURCE_DIR
)/include
47 gcc
-c
-Werror-implicit-function-declaration
-DSOFTFLOAT_FAST_INT64 \
48 $(SOFTFLOAT_OPTS
) $(C_INCLUDES
) -O2
-o
$@
54 OTHER_HEADERS
= $(SOURCE_DIR
)/include/opts-GCC.h
63 s_shortShiftLeft128
$(OBJ
) \
64 s_shortShiftRight128
$(OBJ
) \
65 s_shortShiftRightJam64
$(OBJ
) \
66 s_shortShiftRightJam64Extra
$(OBJ
) \
67 s_shortShiftRightJam128
$(OBJ
) \
68 s_shortShiftRightJam128Extra
$(OBJ
) \
69 s_shiftRightJam32
$(OBJ
) \
70 s_shiftRightJam64
$(OBJ
) \
71 s_shiftRightJam64Extra
$(OBJ
) \
72 s_shiftRightJam128
$(OBJ
) \
73 s_shiftRightJam128Extra
$(OBJ
) \
74 s_shiftRightJam256M
$(OBJ
) \
75 s_countLeadingZeros8
$(OBJ
) \
76 s_countLeadingZeros16
$(OBJ
) \
77 s_countLeadingZeros32
$(OBJ
) \
78 s_countLeadingZeros64
$(OBJ
) \
83 s_mul64ByShifted32To128
$(OBJ
) \
86 s_mul128To256M
$(OBJ
) \
87 s_approxRecip_1Ks
$(OBJ
) \
88 s_approxRecip32_1
$(OBJ
) \
89 s_approxRecipSqrt_1Ks
$(OBJ
) \
90 s_approxRecipSqrt32_1
$(OBJ
) \
93 softfloat_raiseFlags
$(OBJ
) \
94 s_f16UIToCommonNaN
$(OBJ
) \
95 s_commonNaNToF16UI
$(OBJ
) \
96 s_propagateNaNF16UI
$(OBJ
) \
97 s_f32UIToCommonNaN
$(OBJ
) \
98 s_commonNaNToF32UI
$(OBJ
) \
99 s_propagateNaNF32UI
$(OBJ
) \
100 s_f64UIToCommonNaN
$(OBJ
) \
101 s_commonNaNToF64UI
$(OBJ
) \
102 s_propagateNaNF64UI
$(OBJ
) \
103 extF80M_isSignalingNaN
$(OBJ
) \
104 s_extF80UIToCommonNaN
$(OBJ
) \
105 s_commonNaNToExtF80UI
$(OBJ
) \
106 s_propagateNaNExtF80UI
$(OBJ
) \
107 f128M_isSignalingNaN
$(OBJ
) \
108 s_f128UIToCommonNaN
$(OBJ
) \
109 s_commonNaNToF128UI
$(OBJ
) \
110 s_propagateNaNF128UI
$(OBJ
) \
113 s_roundToUI32
$(OBJ
) \
114 s_roundToUI64
$(OBJ
) \
117 s_normSubnormalF16Sig
$(OBJ
) \
118 s_roundPackToF16
$(OBJ
) \
119 s_normRoundPackToF16
$(OBJ
) \
123 s_normSubnormalF32Sig
$(OBJ
) \
124 s_roundPackToF32
$(OBJ
) \
125 s_normRoundPackToF32
$(OBJ
) \
129 s_normSubnormalF64Sig
$(OBJ
) \
130 s_roundPackToF64
$(OBJ
) \
131 s_normRoundPackToF64
$(OBJ
) \
135 s_normSubnormalExtF80Sig
$(OBJ
) \
136 s_roundPackToExtF80
$(OBJ
) \
137 s_normRoundPackToExtF80
$(OBJ
) \
138 s_addMagsExtF80
$(OBJ
) \
139 s_subMagsExtF80
$(OBJ
) \
140 s_normSubnormalF128Sig
$(OBJ
) \
141 s_roundPackToF128
$(OBJ
) \
142 s_normRoundPackToF128
$(OBJ
) \
143 s_addMagsF128
$(OBJ
) \
144 s_subMagsF128
$(OBJ
) \
146 softfloat_state
$(OBJ
) \
150 ui32_to_extF80
$(OBJ
) \
151 ui32_to_extF80M
$(OBJ
) \
153 ui32_to_f128M
$(OBJ
) \
157 ui64_to_extF80
$(OBJ
) \
158 ui64_to_extF80M
$(OBJ
) \
160 ui64_to_f128M
$(OBJ
) \
164 i32_to_extF80
$(OBJ
) \
165 i32_to_extF80M
$(OBJ
) \
171 i64_to_extF80
$(OBJ
) \
172 i64_to_extF80M
$(OBJ
) \
179 f16_to_ui32_r_minMag
$(OBJ
) \
180 f16_to_ui64_r_minMag
$(OBJ
) \
181 f16_to_i32_r_minMag
$(OBJ
) \
182 f16_to_i64_r_minMag
$(OBJ
) \
185 f16_to_extF80
$(OBJ
) \
186 f16_to_extF80M
$(OBJ
) \
189 f16_roundToInt
$(OBJ
) \
200 f16_eq_signaling
$(OBJ
) \
203 f16_isSignalingNaN
$(OBJ
) \
208 f32_to_ui32_r_minMag
$(OBJ
) \
209 f32_to_ui64_r_minMag
$(OBJ
) \
210 f32_to_i32_r_minMag
$(OBJ
) \
211 f32_to_i64_r_minMag
$(OBJ
) \
214 f32_to_extF80
$(OBJ
) \
215 f32_to_extF80M
$(OBJ
) \
218 f32_roundToInt
$(OBJ
) \
229 f32_eq_signaling
$(OBJ
) \
232 f32_isSignalingNaN
$(OBJ
) \
237 f64_to_ui32_r_minMag
$(OBJ
) \
238 f64_to_ui64_r_minMag
$(OBJ
) \
239 f64_to_i32_r_minMag
$(OBJ
) \
240 f64_to_i64_r_minMag
$(OBJ
) \
243 f64_to_extF80
$(OBJ
) \
244 f64_to_extF80M
$(OBJ
) \
247 f64_roundToInt
$(OBJ
) \
258 f64_eq_signaling
$(OBJ
) \
261 f64_isSignalingNaN
$(OBJ
) \
262 extF80_to_ui32
$(OBJ
) \
263 extF80_to_ui64
$(OBJ
) \
264 extF80_to_i32
$(OBJ
) \
265 extF80_to_i64
$(OBJ
) \
266 extF80_to_ui32_r_minMag
$(OBJ
) \
267 extF80_to_ui64_r_minMag
$(OBJ
) \
268 extF80_to_i32_r_minMag
$(OBJ
) \
269 extF80_to_i64_r_minMag
$(OBJ
) \
270 extF80_to_f16
$(OBJ
) \
271 extF80_to_f32
$(OBJ
) \
272 extF80_to_f64
$(OBJ
) \
273 extF80_to_f128
$(OBJ
) \
274 extF80_roundToInt
$(OBJ
) \
284 extF80_eq_signaling
$(OBJ
) \
285 extF80_le_quiet
$(OBJ
) \
286 extF80_lt_quiet
$(OBJ
) \
287 extF80_isSignalingNaN
$(OBJ
) \
288 extF80M_to_ui32
$(OBJ
) \
289 extF80M_to_ui64
$(OBJ
) \
290 extF80M_to_i32
$(OBJ
) \
291 extF80M_to_i64
$(OBJ
) \
292 extF80M_to_ui32_r_minMag
$(OBJ
) \
293 extF80M_to_ui64_r_minMag
$(OBJ
) \
294 extF80M_to_i32_r_minMag
$(OBJ
) \
295 extF80M_to_i64_r_minMag
$(OBJ
) \
296 extF80M_to_f16
$(OBJ
) \
297 extF80M_to_f32
$(OBJ
) \
298 extF80M_to_f64
$(OBJ
) \
299 extF80M_to_f128M
$(OBJ
) \
300 extF80M_roundToInt
$(OBJ
) \
310 extF80M_eq_signaling
$(OBJ
) \
311 extF80M_le_quiet
$(OBJ
) \
312 extF80M_lt_quiet
$(OBJ
) \
317 f128_to_ui32_r_minMag
$(OBJ
) \
318 f128_to_ui64_r_minMag
$(OBJ
) \
319 f128_to_i32_r_minMag
$(OBJ
) \
320 f128_to_i64_r_minMag
$(OBJ
) \
323 f128_to_extF80
$(OBJ
) \
325 f128_roundToInt
$(OBJ
) \
336 f128_eq_signaling
$(OBJ
) \
337 f128_le_quiet
$(OBJ
) \
338 f128_lt_quiet
$(OBJ
) \
339 f128_isSignalingNaN
$(OBJ
) \
340 f128M_to_ui32
$(OBJ
) \
341 f128M_to_ui64
$(OBJ
) \
344 f128M_to_ui32_r_minMag
$(OBJ
) \
345 f128M_to_ui64_r_minMag
$(OBJ
) \
346 f128M_to_i32_r_minMag
$(OBJ
) \
347 f128M_to_i64_r_minMag
$(OBJ
) \
350 f128M_to_extF80M
$(OBJ
) \
352 f128M_roundToInt
$(OBJ
) \
363 f128M_eq_signaling
$(OBJ
) \
364 f128M_le_quiet
$(OBJ
) \
365 f128M_lt_quiet
$(OBJ
) \
367 OBJS_ALL
= $(OBJS_PRIMITIVES
) $(OBJS_SPECIALIZE
) $(OBJS_OTHERS
)
370 $(OTHER_HEADERS
) platform.h
$(SOURCE_DIR
)/include/primitiveTypes.h \
371 $(SOURCE_DIR
)/include/primitives.h
372 $(OBJS_SPECIALIZE
) $(OBJS_OTHERS
): \
373 $(SOURCE_DIR
)/include/softfloat_types.h
$(SOURCE_DIR
)/include/internals.h \
374 $(SOURCE_DIR
)/$(SPECIALIZE_TYPE
)/specialize.h \
375 $(SOURCE_DIR
)/include/softfloat.h
377 $(OBJS_PRIMITIVES
) $(OBJS_OTHERS
): %$(OBJ
): $(SOURCE_DIR
)/%.c
378 $(COMPILE_C
) $(SOURCE_DIR
)/$*.c
380 $(OBJS_SPECIALIZE
): %$(OBJ
): $(SOURCE_DIR
)/$(SPECIALIZE_TYPE
)/%.c
381 $(COMPILE_C
) $(SOURCE_DIR
)/$(SPECIALIZE_TYPE
)/$*.c
383 softfloat
$(LIB
): $(OBJS_ALL
)
389 $(DELETE
) $(OBJS_ALL
) softfloat
$(LIB
)