]> Git Repo - qemu.git/blame - tests/fp/Makefile
Merge remote-tracking branch 'remotes/stsquad/tags/pull-hardfloat-and-gitdm-171218...
[qemu.git] / tests / fp / Makefile
CommitLineData
3ac1f813
EC
1BUILD_DIR := $(CURDIR)/../..
2
3include $(BUILD_DIR)/config-host.mak
4include $(SRC_PATH)/rules.mak
5
6SOFTFLOAT_DIR := $(SRC_PATH)/tests/fp/berkeley-softfloat-3
7TESTFLOAT_DIR := $(SRC_PATH)/tests/fp/berkeley-testfloat-3
8
9SF_SOURCE_DIR := $(SOFTFLOAT_DIR)/source
10SF_INCLUDE_DIR := $(SOFTFLOAT_DIR)/source/include
11# we could use any specialize here, it doesn't matter
12SF_SPECIALIZE := 8086-SSE
13SF_SPECIALIZE_DIR := $(SF_SOURCE_DIR)/$(SF_SPECIALIZE)
14
15TF_SOURCE_DIR := $(TESTFLOAT_DIR)/source
16
17$(call set-vpath, $(SRC_PATH)/fpu $(SRC_PATH)/tests/fp)
18
19LIBQEMUUTIL := $(BUILD_DIR)/libqemuutil.a
20
21# Use this variable to be clear when we pull in our own implementation
22# We build the object with a default rule thanks to the vpath above
23QEMU_SOFTFLOAT_OBJ := softfloat.o
24
25QEMU_INCLUDES += -I$(SRC_PATH)/tests/fp
26QEMU_INCLUDES += -I$(SF_INCLUDE_DIR)
27QEMU_INCLUDES += -I$(SF_SPECIALIZE_DIR)
28QEMU_INCLUDES += -I$(TF_SOURCE_DIR)
29
30# work around TARGET_* poisoning
31QEMU_CFLAGS += -DHW_POISON_H
6c49b06d
EC
32# define a target to match testfloat's implementation-defined choices, such as
33# whether to raise the invalid flag when dealing with NaNs in muladd.
34QEMU_CFLAGS += -DTARGET_ARM
3ac1f813
EC
35
36# capstone has a platform.h file that clashes with softfloat's
37QEMU_CFLAGS := $(filter-out %capstone, $(QEMU_CFLAGS))
38
39# softfloat defines
40SF_OPTS :=
41SF_OPTS += -DSOFTFLOAT_ROUND_ODD
42SF_OPTS += -DINLINE_LEVEL=5
43SF_OPTS += -DSOFTFLOAT_FAST_DIV32TO16
44SF_OPTS += -DSOFTFLOAT_FAST_DIV64TO32
45SF_OPTS += -DSOFTFLOAT_FAST_INT64
46QEMU_CFLAGS += $(SF_OPTS)
47
48# silence the build of softfloat objects
49SF_CFLAGS += -Wno-missing-prototypes
50SF_CFLAGS += -Wno-redundant-decls
51SF_CFLAGS += -Wno-return-type
52SF_CFLAGS += -Wno-error
53
54# testfloat defines
55TF_OPTS :=
56TF_OPTS += -DFLOAT16
57TF_OPTS += -DFLOAT64
58TF_OPTS += -DEXTFLOAT80
59TF_OPTS += -DFLOAT128
60TF_OPTS += -DFLOAT_ROUND_ODD
61TF_OPTS += -DLONG_DOUBLE_IS_EXTFLOAT80
62QEMU_CFLAGS += $(TF_OPTS)
63
64# silence the build of testfloat objects
65TF_CFLAGS :=
66TF_CFLAGS += -Wno-strict-prototypes
67TF_CFLAGS += -Wno-unknown-pragmas
68TF_CFLAGS += -Wno-discarded-qualifiers
69TF_CFLAGS += -Wno-maybe-uninitialized
70TF_CFLAGS += -Wno-missing-prototypes
71TF_CFLAGS += -Wno-return-type
72TF_CFLAGS += -Wno-unused-function
73TF_CFLAGS += -Wno-error
74
75# softfloat objects
76SF_OBJS_PRIMITIVES :=
77SF_OBJS_PRIMITIVES += s_eq128.o
78SF_OBJS_PRIMITIVES += s_le128.o
79SF_OBJS_PRIMITIVES += s_lt128.o
80SF_OBJS_PRIMITIVES += s_shortShiftLeft128.o
81SF_OBJS_PRIMITIVES += s_shortShiftRight128.o
82SF_OBJS_PRIMITIVES += s_shortShiftRightJam64.o
83SF_OBJS_PRIMITIVES += s_shortShiftRightJam64Extra.o
84SF_OBJS_PRIMITIVES += s_shortShiftRightJam128.o
85SF_OBJS_PRIMITIVES += s_shortShiftRightJam128Extra.o
86SF_OBJS_PRIMITIVES += s_shiftRightJam32.o
87SF_OBJS_PRIMITIVES += s_shiftRightJam64.o
88SF_OBJS_PRIMITIVES += s_shiftRightJam64Extra.o
89SF_OBJS_PRIMITIVES += s_shiftRightJam128.o
90SF_OBJS_PRIMITIVES += s_shiftRightJam128Extra.o
91SF_OBJS_PRIMITIVES += s_shiftRightJam256M.o
92SF_OBJS_PRIMITIVES += s_countLeadingZeros8.o
93SF_OBJS_PRIMITIVES += s_countLeadingZeros16.o
94SF_OBJS_PRIMITIVES += s_countLeadingZeros32.o
95SF_OBJS_PRIMITIVES += s_countLeadingZeros64.o
96SF_OBJS_PRIMITIVES += s_add128.o
97SF_OBJS_PRIMITIVES += s_add256M.o
98SF_OBJS_PRIMITIVES += s_sub128.o
99SF_OBJS_PRIMITIVES += s_sub256M.o
100SF_OBJS_PRIMITIVES += s_mul64ByShifted32To128.o
101SF_OBJS_PRIMITIVES += s_mul64To128.o
102SF_OBJS_PRIMITIVES += s_mul128By32.o
103SF_OBJS_PRIMITIVES += s_mul128To256M.o
104SF_OBJS_PRIMITIVES += s_approxRecip_1Ks.o
105SF_OBJS_PRIMITIVES += s_approxRecip32_1.o
106SF_OBJS_PRIMITIVES += s_approxRecipSqrt_1Ks.o
107SF_OBJS_PRIMITIVES += s_approxRecipSqrt32_1.o
108
109SF_OBJS_SPECIALIZE :=
110SF_OBJS_SPECIALIZE += softfloat_raiseFlags.o
111SF_OBJS_SPECIALIZE += s_f16UIToCommonNaN.o
112SF_OBJS_SPECIALIZE += s_commonNaNToF16UI.o
113SF_OBJS_SPECIALIZE += s_propagateNaNF16UI.o
114SF_OBJS_SPECIALIZE += s_f32UIToCommonNaN.o
115SF_OBJS_SPECIALIZE += s_commonNaNToF32UI.o
116SF_OBJS_SPECIALIZE += s_propagateNaNF32UI.o
117SF_OBJS_SPECIALIZE += s_f64UIToCommonNaN.o
118SF_OBJS_SPECIALIZE += s_commonNaNToF64UI.o
119SF_OBJS_SPECIALIZE += s_propagateNaNF64UI.o
120SF_OBJS_SPECIALIZE += extF80M_isSignalingNaN.o
121SF_OBJS_SPECIALIZE += s_extF80UIToCommonNaN.o
122SF_OBJS_SPECIALIZE += s_commonNaNToExtF80UI.o
123SF_OBJS_SPECIALIZE += s_propagateNaNExtF80UI.o
124SF_OBJS_SPECIALIZE += f128M_isSignalingNaN.o
125SF_OBJS_SPECIALIZE += s_f128UIToCommonNaN.o
126SF_OBJS_SPECIALIZE += s_commonNaNToF128UI.o
127SF_OBJS_SPECIALIZE += s_propagateNaNF128UI.o
128
129SF_OBJS_OTHERS :=
130SF_OBJS_OTHERS += s_roundToUI32.o
131SF_OBJS_OTHERS += s_roundToUI64.o
132SF_OBJS_OTHERS += s_roundToI32.o
133SF_OBJS_OTHERS += s_roundToI64.o
134SF_OBJS_OTHERS += s_normSubnormalF16Sig.o
135SF_OBJS_OTHERS += s_roundPackToF16.o
136SF_OBJS_OTHERS += s_normRoundPackToF16.o
137SF_OBJS_OTHERS += s_addMagsF16.o
138SF_OBJS_OTHERS += s_subMagsF16.o
139SF_OBJS_OTHERS += s_mulAddF16.o
140SF_OBJS_OTHERS += s_normSubnormalF32Sig.o
141SF_OBJS_OTHERS += s_roundPackToF32.o
142SF_OBJS_OTHERS += s_normRoundPackToF32.o
143SF_OBJS_OTHERS += s_addMagsF32.o
144SF_OBJS_OTHERS += s_subMagsF32.o
145SF_OBJS_OTHERS += s_mulAddF32.o
146SF_OBJS_OTHERS += s_normSubnormalF64Sig.o
147SF_OBJS_OTHERS += s_roundPackToF64.o
148SF_OBJS_OTHERS += s_normRoundPackToF64.o
149SF_OBJS_OTHERS += s_addMagsF64.o
150SF_OBJS_OTHERS += s_subMagsF64.o
151SF_OBJS_OTHERS += s_mulAddF64.o
152SF_OBJS_OTHERS += s_normSubnormalExtF80Sig.o
153SF_OBJS_OTHERS += s_roundPackToExtF80.o
154SF_OBJS_OTHERS += s_normRoundPackToExtF80.o
155SF_OBJS_OTHERS += s_addMagsExtF80.o
156SF_OBJS_OTHERS += s_subMagsExtF80.o
157SF_OBJS_OTHERS += s_normSubnormalF128Sig.o
158SF_OBJS_OTHERS += s_roundPackToF128.o
159SF_OBJS_OTHERS += s_normRoundPackToF128.o
160SF_OBJS_OTHERS += s_addMagsF128.o
161SF_OBJS_OTHERS += s_subMagsF128.o
162SF_OBJS_OTHERS += s_mulAddF128.o
163SF_OBJS_OTHERS += softfloat_state.o
164SF_OBJS_OTHERS += ui32_to_f16.o
165SF_OBJS_OTHERS += ui32_to_f32.o
166SF_OBJS_OTHERS += ui32_to_f64.o
167SF_OBJS_OTHERS += ui32_to_extF80.o
168SF_OBJS_OTHERS += ui32_to_extF80M.o
169SF_OBJS_OTHERS += ui32_to_f128.o
170SF_OBJS_OTHERS += ui32_to_f128M.o
171SF_OBJS_OTHERS += ui64_to_f16.o
172SF_OBJS_OTHERS += ui64_to_f32.o
173SF_OBJS_OTHERS += ui64_to_f64.o
174SF_OBJS_OTHERS += ui64_to_extF80.o
175SF_OBJS_OTHERS += ui64_to_extF80M.o
176SF_OBJS_OTHERS += ui64_to_f128.o
177SF_OBJS_OTHERS += ui64_to_f128M.o
178SF_OBJS_OTHERS += i32_to_f16.o
179SF_OBJS_OTHERS += i32_to_f32.o
180SF_OBJS_OTHERS += i32_to_f64.o
181SF_OBJS_OTHERS += i32_to_extF80.o
182SF_OBJS_OTHERS += i32_to_extF80M.o
183SF_OBJS_OTHERS += i32_to_f128.o
184SF_OBJS_OTHERS += i32_to_f128M.o
185SF_OBJS_OTHERS += i64_to_f16.o
186SF_OBJS_OTHERS += i64_to_f32.o
187SF_OBJS_OTHERS += i64_to_f64.o
188SF_OBJS_OTHERS += i64_to_extF80.o
189SF_OBJS_OTHERS += i64_to_extF80M.o
190SF_OBJS_OTHERS += i64_to_f128.o
191SF_OBJS_OTHERS += i64_to_f128M.o
192SF_OBJS_OTHERS += f16_to_ui32.o
193SF_OBJS_OTHERS += f16_to_ui64.o
194SF_OBJS_OTHERS += f16_to_i32.o
195SF_OBJS_OTHERS += f16_to_i64.o
196SF_OBJS_OTHERS += f16_to_ui32_r_minMag.o
197SF_OBJS_OTHERS += f16_to_ui64_r_minMag.o
198SF_OBJS_OTHERS += f16_to_i32_r_minMag.o
199SF_OBJS_OTHERS += f16_to_i64_r_minMag.o
200SF_OBJS_OTHERS += f16_to_f32.o
201SF_OBJS_OTHERS += f16_to_f64.o
202SF_OBJS_OTHERS += f16_to_extF80.o
203SF_OBJS_OTHERS += f16_to_extF80M.o
204SF_OBJS_OTHERS += f16_to_f128.o
205SF_OBJS_OTHERS += f16_to_f128M.o
206SF_OBJS_OTHERS += f16_roundToInt.o
207SF_OBJS_OTHERS += f16_add.o
208SF_OBJS_OTHERS += f16_sub.o
209SF_OBJS_OTHERS += f16_mul.o
210SF_OBJS_OTHERS += f16_mulAdd.o
211SF_OBJS_OTHERS += f16_div.o
212SF_OBJS_OTHERS += f16_rem.o
213SF_OBJS_OTHERS += f16_sqrt.o
214SF_OBJS_OTHERS += f16_eq.o
215SF_OBJS_OTHERS += f16_le.o
216SF_OBJS_OTHERS += f16_lt.o
217SF_OBJS_OTHERS += f16_eq_signaling.o
218SF_OBJS_OTHERS += f16_le_quiet.o
219SF_OBJS_OTHERS += f16_lt_quiet.o
220SF_OBJS_OTHERS += f16_isSignalingNaN.o
221SF_OBJS_OTHERS += f32_to_ui32.o
222SF_OBJS_OTHERS += f32_to_ui64.o
223SF_OBJS_OTHERS += f32_to_i32.o
224SF_OBJS_OTHERS += f32_to_i64.o
225SF_OBJS_OTHERS += f32_to_ui32_r_minMag.o
226SF_OBJS_OTHERS += f32_to_ui64_r_minMag.o
227SF_OBJS_OTHERS += f32_to_i32_r_minMag.o
228SF_OBJS_OTHERS += f32_to_i64_r_minMag.o
229SF_OBJS_OTHERS += f32_to_f16.o
230SF_OBJS_OTHERS += f32_to_f64.o
231SF_OBJS_OTHERS += f32_to_extF80.o
232SF_OBJS_OTHERS += f32_to_extF80M.o
233SF_OBJS_OTHERS += f32_to_f128.o
234SF_OBJS_OTHERS += f32_to_f128M.o
235SF_OBJS_OTHERS += f32_roundToInt.o
236SF_OBJS_OTHERS += f32_add.o
237SF_OBJS_OTHERS += f32_sub.o
238SF_OBJS_OTHERS += f32_mul.o
239SF_OBJS_OTHERS += f32_mulAdd.o
240SF_OBJS_OTHERS += f32_div.o
241SF_OBJS_OTHERS += f32_rem.o
242SF_OBJS_OTHERS += f32_sqrt.o
243SF_OBJS_OTHERS += f32_eq.o
244SF_OBJS_OTHERS += f32_le.o
245SF_OBJS_OTHERS += f32_lt.o
246SF_OBJS_OTHERS += f32_eq_signaling.o
247SF_OBJS_OTHERS += f32_le_quiet.o
248SF_OBJS_OTHERS += f32_lt_quiet.o
249SF_OBJS_OTHERS += f32_isSignalingNaN.o
250SF_OBJS_OTHERS += f64_to_ui32.o
251SF_OBJS_OTHERS += f64_to_ui64.o
252SF_OBJS_OTHERS += f64_to_i32.o
253SF_OBJS_OTHERS += f64_to_i64.o
254SF_OBJS_OTHERS += f64_to_ui32_r_minMag.o
255SF_OBJS_OTHERS += f64_to_ui64_r_minMag.o
256SF_OBJS_OTHERS += f64_to_i32_r_minMag.o
257SF_OBJS_OTHERS += f64_to_i64_r_minMag.o
258SF_OBJS_OTHERS += f64_to_f16.o
259SF_OBJS_OTHERS += f64_to_f32.o
260SF_OBJS_OTHERS += f64_to_extF80.o
261SF_OBJS_OTHERS += f64_to_extF80M.o
262SF_OBJS_OTHERS += f64_to_f128.o
263SF_OBJS_OTHERS += f64_to_f128M.o
264SF_OBJS_OTHERS += f64_roundToInt.o
265SF_OBJS_OTHERS += f64_add.o
266SF_OBJS_OTHERS += f64_sub.o
267SF_OBJS_OTHERS += f64_mul.o
268SF_OBJS_OTHERS += f64_mulAdd.o
269SF_OBJS_OTHERS += f64_div.o
270SF_OBJS_OTHERS += f64_rem.o
271SF_OBJS_OTHERS += f64_sqrt.o
272SF_OBJS_OTHERS += f64_eq.o
273SF_OBJS_OTHERS += f64_le.o
274SF_OBJS_OTHERS += f64_lt.o
275SF_OBJS_OTHERS += f64_eq_signaling.o
276SF_OBJS_OTHERS += f64_le_quiet.o
277SF_OBJS_OTHERS += f64_lt_quiet.o
278SF_OBJS_OTHERS += f64_isSignalingNaN.o
279SF_OBJS_OTHERS += extF80_to_ui32.o
280SF_OBJS_OTHERS += extF80_to_ui64.o
281SF_OBJS_OTHERS += extF80_to_i32.o
282SF_OBJS_OTHERS += extF80_to_i64.o
283SF_OBJS_OTHERS += extF80_to_ui32_r_minMag.o
284SF_OBJS_OTHERS += extF80_to_ui64_r_minMag.o
285SF_OBJS_OTHERS += extF80_to_i32_r_minMag.o
286SF_OBJS_OTHERS += extF80_to_i64_r_minMag.o
287SF_OBJS_OTHERS += extF80_to_f16.o
288SF_OBJS_OTHERS += extF80_to_f32.o
289SF_OBJS_OTHERS += extF80_to_f64.o
290SF_OBJS_OTHERS += extF80_to_f128.o
291SF_OBJS_OTHERS += extF80_roundToInt.o
292SF_OBJS_OTHERS += extF80_add.o
293SF_OBJS_OTHERS += extF80_sub.o
294SF_OBJS_OTHERS += extF80_mul.o
295SF_OBJS_OTHERS += extF80_div.o
296SF_OBJS_OTHERS += extF80_rem.o
297SF_OBJS_OTHERS += extF80_sqrt.o
298SF_OBJS_OTHERS += extF80_eq.o
299SF_OBJS_OTHERS += extF80_le.o
300SF_OBJS_OTHERS += extF80_lt.o
301SF_OBJS_OTHERS += extF80_eq_signaling.o
302SF_OBJS_OTHERS += extF80_le_quiet.o
303SF_OBJS_OTHERS += extF80_lt_quiet.o
304SF_OBJS_OTHERS += extF80_isSignalingNaN.o
305SF_OBJS_OTHERS += extF80M_to_ui32.o
306SF_OBJS_OTHERS += extF80M_to_ui64.o
307SF_OBJS_OTHERS += extF80M_to_i32.o
308SF_OBJS_OTHERS += extF80M_to_i64.o
309SF_OBJS_OTHERS += extF80M_to_ui32_r_minMag.o
310SF_OBJS_OTHERS += extF80M_to_ui64_r_minMag.o
311SF_OBJS_OTHERS += extF80M_to_i32_r_minMag.o
312SF_OBJS_OTHERS += extF80M_to_i64_r_minMag.o
313SF_OBJS_OTHERS += extF80M_to_f16.o
314SF_OBJS_OTHERS += extF80M_to_f32.o
315SF_OBJS_OTHERS += extF80M_to_f64.o
316SF_OBJS_OTHERS += extF80M_to_f128M.o
317SF_OBJS_OTHERS += extF80M_roundToInt.o
318SF_OBJS_OTHERS += extF80M_add.o
319SF_OBJS_OTHERS += extF80M_sub.o
320SF_OBJS_OTHERS += extF80M_mul.o
321SF_OBJS_OTHERS += extF80M_div.o
322SF_OBJS_OTHERS += extF80M_rem.o
323SF_OBJS_OTHERS += extF80M_sqrt.o
324SF_OBJS_OTHERS += extF80M_eq.o
325SF_OBJS_OTHERS += extF80M_le.o
326SF_OBJS_OTHERS += extF80M_lt.o
327SF_OBJS_OTHERS += extF80M_eq_signaling.o
328SF_OBJS_OTHERS += extF80M_le_quiet.o
329SF_OBJS_OTHERS += extF80M_lt_quiet.o
330SF_OBJS_OTHERS += f128_to_ui32.o
331SF_OBJS_OTHERS += f128_to_ui64.o
332SF_OBJS_OTHERS += f128_to_i32.o
333SF_OBJS_OTHERS += f128_to_i64.o
334SF_OBJS_OTHERS += f128_to_ui32_r_minMag.o
335SF_OBJS_OTHERS += f128_to_ui64_r_minMag.o
336SF_OBJS_OTHERS += f128_to_i32_r_minMag.o
337SF_OBJS_OTHERS += f128_to_i64_r_minMag.o
338SF_OBJS_OTHERS += f128_to_f16.o
339SF_OBJS_OTHERS += f128_to_f32.o
340SF_OBJS_OTHERS += f128_to_extF80.o
341SF_OBJS_OTHERS += f128_to_f64.o
342SF_OBJS_OTHERS += f128_roundToInt.o
343SF_OBJS_OTHERS += f128_add.o
344SF_OBJS_OTHERS += f128_sub.o
345SF_OBJS_OTHERS += f128_mul.o
346SF_OBJS_OTHERS += f128_mulAdd.o
347SF_OBJS_OTHERS += f128_div.o
348SF_OBJS_OTHERS += f128_rem.o
349SF_OBJS_OTHERS += f128_sqrt.o
350SF_OBJS_OTHERS += f128_eq.o
351SF_OBJS_OTHERS += f128_le.o
352SF_OBJS_OTHERS += f128_lt.o
353SF_OBJS_OTHERS += f128_eq_signaling.o
354SF_OBJS_OTHERS += f128_le_quiet.o
355SF_OBJS_OTHERS += f128_lt_quiet.o
356SF_OBJS_OTHERS += f128_isSignalingNaN.o
357SF_OBJS_OTHERS += f128M_to_ui32.o
358SF_OBJS_OTHERS += f128M_to_ui64.o
359SF_OBJS_OTHERS += f128M_to_i32.o
360SF_OBJS_OTHERS += f128M_to_i64.o
361SF_OBJS_OTHERS += f128M_to_ui32_r_minMag.o
362SF_OBJS_OTHERS += f128M_to_ui64_r_minMag.o
363SF_OBJS_OTHERS += f128M_to_i32_r_minMag.o
364SF_OBJS_OTHERS += f128M_to_i64_r_minMag.o
365SF_OBJS_OTHERS += f128M_to_f16.o
366SF_OBJS_OTHERS += f128M_to_f32.o
367SF_OBJS_OTHERS += f128M_to_extF80M.o
368SF_OBJS_OTHERS += f128M_to_f64.o
369SF_OBJS_OTHERS += f128M_roundToInt.o
370SF_OBJS_OTHERS += f128M_add.o
371SF_OBJS_OTHERS += f128M_sub.o
372SF_OBJS_OTHERS += f128M_mul.o
373SF_OBJS_OTHERS += f128M_mulAdd.o
374SF_OBJS_OTHERS += f128M_div.o
375SF_OBJS_OTHERS += f128M_rem.o
376SF_OBJS_OTHERS += f128M_sqrt.o
377SF_OBJS_OTHERS += f128M_eq.o
378SF_OBJS_OTHERS += f128M_le.o
379SF_OBJS_OTHERS += f128M_lt.o
380SF_OBJS_OTHERS += f128M_eq_signaling.o
381SF_OBJS_OTHERS += f128M_le_quiet.o
382SF_OBJS_OTHERS += f128M_lt_quiet.o
383
384SF_OBJS_ALL_NOSPEC :=
385SF_OBJS_ALL_NOSPEC += $(SF_OBJS_PRIMITIVES)
386SF_OBJS_ALL_NOSPEC += $(SF_OBJS_OTHERS)
387
388SF_OBJS_ALL :=
389SF_OBJS_ALL += $(SF_OBJS_ALL_NOSPEC)
390SF_OBJS_ALL += $(SF_OBJS_SPECIALIZE)
391
392# testfloat objects
393TF_OBJS_GENCASES :=
394TF_OBJS_GENCASES += genCases_ui32.o
395TF_OBJS_GENCASES += genCases_ui64.o
396TF_OBJS_GENCASES += genCases_i32.o
397TF_OBJS_GENCASES += genCases_i64.o
398TF_OBJS_GENCASES += genCases_f16.o
399TF_OBJS_GENCASES += genCases_f32.o
400TF_OBJS_GENCASES += genCases_f64.o
401TF_OBJS_GENCASES += genCases_extF80.o
402TF_OBJS_GENCASES += genCases_f128.o
403
404TF_OBJS_WRITECASE :=
405TF_OBJS_WRITECASE += writeCase_a_ui32.o
406TF_OBJS_WRITECASE += writeCase_a_ui64.o
407TF_OBJS_WRITECASE += writeCase_a_f16.o
408TF_OBJS_WRITECASE += writeCase_ab_f16.o
409TF_OBJS_WRITECASE += writeCase_abc_f16.o
410TF_OBJS_WRITECASE += writeCase_a_f32.o
411TF_OBJS_WRITECASE += writeCase_ab_f32.o
412TF_OBJS_WRITECASE += writeCase_abc_f32.o
413TF_OBJS_WRITECASE += writeCase_a_f64.o
414TF_OBJS_WRITECASE += writeCase_ab_f64.o
415TF_OBJS_WRITECASE += writeCase_abc_f64.o
416TF_OBJS_WRITECASE += writeCase_a_extF80M.o
417TF_OBJS_WRITECASE += writeCase_ab_extF80M.o
418TF_OBJS_WRITECASE += writeCase_a_f128M.o
419TF_OBJS_WRITECASE += writeCase_ab_f128M.o
420TF_OBJS_WRITECASE += writeCase_abc_f128M.o
421TF_OBJS_WRITECASE += writeCase_z_bool.o
422TF_OBJS_WRITECASE += writeCase_z_ui32.o
423TF_OBJS_WRITECASE += writeCase_z_ui64.o
424TF_OBJS_WRITECASE += writeCase_z_f16.o
425TF_OBJS_WRITECASE += writeCase_z_f32.o
426TF_OBJS_WRITECASE += writeCase_z_f64.o
427TF_OBJS_WRITECASE += writeCase_z_extF80M.o
428TF_OBJS_WRITECASE += writeCase_z_f128M.o
429
430TF_OBJS_TEST :=
431TF_OBJS_TEST += test_a_ui32_z_f16.o
432TF_OBJS_TEST += test_a_ui32_z_f32.o
433TF_OBJS_TEST += test_a_ui32_z_f64.o
434TF_OBJS_TEST += test_a_ui32_z_extF80.o
435TF_OBJS_TEST += test_a_ui32_z_f128.o
436TF_OBJS_TEST += test_a_ui64_z_f16.o
437TF_OBJS_TEST += test_a_ui64_z_f32.o
438TF_OBJS_TEST += test_a_ui64_z_f64.o
439TF_OBJS_TEST += test_a_ui64_z_extF80.o
440TF_OBJS_TEST += test_a_ui64_z_f128.o
441TF_OBJS_TEST += test_a_i32_z_f16.o
442TF_OBJS_TEST += test_a_i32_z_f32.o
443TF_OBJS_TEST += test_a_i32_z_f64.o
444TF_OBJS_TEST += test_a_i32_z_extF80.o
445TF_OBJS_TEST += test_a_i32_z_f128.o
446TF_OBJS_TEST += test_a_i64_z_f16.o
447TF_OBJS_TEST += test_a_i64_z_f32.o
448TF_OBJS_TEST += test_a_i64_z_f64.o
449TF_OBJS_TEST += test_a_i64_z_extF80.o
450TF_OBJS_TEST += test_a_i64_z_f128.o
451TF_OBJS_TEST += test_a_f16_z_ui32_rx.o
452TF_OBJS_TEST += test_a_f16_z_ui64_rx.o
453TF_OBJS_TEST += test_a_f16_z_i32_rx.o
454TF_OBJS_TEST += test_a_f16_z_i64_rx.o
455TF_OBJS_TEST += test_a_f16_z_ui32_x.o
456TF_OBJS_TEST += test_a_f16_z_ui64_x.o
457TF_OBJS_TEST += test_a_f16_z_i32_x.o
458TF_OBJS_TEST += test_a_f16_z_i64_x.o
459TF_OBJS_TEST += test_a_f16_z_f32.o
460TF_OBJS_TEST += test_a_f16_z_f64.o
461TF_OBJS_TEST += test_a_f16_z_extF80.o
462TF_OBJS_TEST += test_a_f16_z_f128.o
463TF_OBJS_TEST += test_az_f16.o
464TF_OBJS_TEST += test_az_f16_rx.o
465TF_OBJS_TEST += test_abz_f16.o
466TF_OBJS_TEST += test_abcz_f16.o
467TF_OBJS_TEST += test_ab_f16_z_bool.o
468TF_OBJS_TEST += test_a_f32_z_ui32_rx.o
469TF_OBJS_TEST += test_a_f32_z_ui64_rx.o
470TF_OBJS_TEST += test_a_f32_z_i32_rx.o
471TF_OBJS_TEST += test_a_f32_z_i64_rx.o
472TF_OBJS_TEST += test_a_f32_z_ui32_x.o
473TF_OBJS_TEST += test_a_f32_z_ui64_x.o
474TF_OBJS_TEST += test_a_f32_z_i32_x.o
475TF_OBJS_TEST += test_a_f32_z_i64_x.o
476TF_OBJS_TEST += test_a_f32_z_f16.o
477TF_OBJS_TEST += test_a_f32_z_f64.o
478TF_OBJS_TEST += test_a_f32_z_extF80.o
479TF_OBJS_TEST += test_a_f32_z_f128.o
480TF_OBJS_TEST += test_az_f32.o
481TF_OBJS_TEST += test_az_f32_rx.o
482TF_OBJS_TEST += test_abz_f32.o
483TF_OBJS_TEST += test_abcz_f32.o
484TF_OBJS_TEST += test_ab_f32_z_bool.o
485TF_OBJS_TEST += test_a_f64_z_ui32_rx.o
486TF_OBJS_TEST += test_a_f64_z_ui64_rx.o
487TF_OBJS_TEST += test_a_f64_z_i32_rx.o
488TF_OBJS_TEST += test_a_f64_z_i64_rx.o
489TF_OBJS_TEST += test_a_f64_z_ui32_x.o
490TF_OBJS_TEST += test_a_f64_z_ui64_x.o
491TF_OBJS_TEST += test_a_f64_z_i32_x.o
492TF_OBJS_TEST += test_a_f64_z_i64_x.o
493TF_OBJS_TEST += test_a_f64_z_f16.o
494TF_OBJS_TEST += test_a_f64_z_f32.o
495TF_OBJS_TEST += test_a_f64_z_extF80.o
496TF_OBJS_TEST += test_a_f64_z_f128.o
497TF_OBJS_TEST += test_az_f64.o
498TF_OBJS_TEST += test_az_f64_rx.o
499TF_OBJS_TEST += test_abz_f64.o
500TF_OBJS_TEST += test_abcz_f64.o
501TF_OBJS_TEST += test_ab_f64_z_bool.o
502TF_OBJS_TEST += test_a_extF80_z_ui32_rx.o
503TF_OBJS_TEST += test_a_extF80_z_ui64_rx.o
504TF_OBJS_TEST += test_a_extF80_z_i32_rx.o
505TF_OBJS_TEST += test_a_extF80_z_i64_rx.o
506TF_OBJS_TEST += test_a_extF80_z_ui32_x.o
507TF_OBJS_TEST += test_a_extF80_z_ui64_x.o
508TF_OBJS_TEST += test_a_extF80_z_i32_x.o
509TF_OBJS_TEST += test_a_extF80_z_i64_x.o
510TF_OBJS_TEST += test_a_extF80_z_f16.o
511TF_OBJS_TEST += test_a_extF80_z_f32.o
512TF_OBJS_TEST += test_a_extF80_z_f64.o
513TF_OBJS_TEST += test_a_extF80_z_f128.o
514TF_OBJS_TEST += test_az_extF80.o
515TF_OBJS_TEST += test_az_extF80_rx.o
516TF_OBJS_TEST += test_abz_extF80.o
517TF_OBJS_TEST += test_ab_extF80_z_bool.o
518TF_OBJS_TEST += test_a_f128_z_ui32_rx.o
519TF_OBJS_TEST += test_a_f128_z_ui64_rx.o
520TF_OBJS_TEST += test_a_f128_z_i32_rx.o
521TF_OBJS_TEST += test_a_f128_z_i64_rx.o
522TF_OBJS_TEST += test_a_f128_z_ui32_x.o
523TF_OBJS_TEST += test_a_f128_z_ui64_x.o
524TF_OBJS_TEST += test_a_f128_z_i32_x.o
525TF_OBJS_TEST += test_a_f128_z_i64_x.o
526TF_OBJS_TEST += test_a_f128_z_f16.o
527TF_OBJS_TEST += test_a_f128_z_f32.o
528TF_OBJS_TEST += test_a_f128_z_f64.o
529TF_OBJS_TEST += test_a_f128_z_extF80.o
530TF_OBJS_TEST += test_az_f128.o
531TF_OBJS_TEST += test_az_f128_rx.o
532TF_OBJS_TEST += test_abz_f128.o
533TF_OBJS_TEST += test_abcz_f128.o
534TF_OBJS_TEST += test_ab_f128_z_bool.o
535
536TF_OBJS_LIB :=
537TF_OBJS_LIB += uint128_inline.o
538TF_OBJS_LIB += uint128.o
539TF_OBJS_LIB += fail.o
540TF_OBJS_LIB += functions_common.o
541TF_OBJS_LIB += functionInfos.o
542TF_OBJS_LIB += standardFunctionInfos.o
543TF_OBJS_LIB += random.o
544TF_OBJS_LIB += genCases_common.o
545TF_OBJS_LIB += $(TF_OBJS_GENCASES)
546TF_OBJS_LIB += genCases_writeTestsTotal.o
547TF_OBJS_LIB += verCases_inline.o
548TF_OBJS_LIB += verCases_common.o
549TF_OBJS_LIB += verCases_writeFunctionName.o
550TF_OBJS_LIB += readHex.o
551TF_OBJS_LIB += writeHex.o
552TF_OBJS_LIB += $(TF_OBJS_WRITECASE)
553TF_OBJS_LIB += testLoops_common.o
554TF_OBJS_LIB += $(TF_OBJS_TEST)
555
25f539f3 556BINARIES := fp-test$(EXESUF) fp-bench$(EXESUF)
3ac1f813
EC
557
558# everything depends on config-host.h because platform.h includes it
559all: $(BUILD_DIR)/config-host.h
560 $(MAKE) $(BINARIES)
561
562$(LIBQEMUUTIL):
563 $(MAKE) -C $(BUILD_DIR) libqemuutil.a
564
565$(BUILD_DIR)/config-host.h:
566 $(MAKE) -C $(BUILD_DIR) config-host.h
567
568# libtestfloat.a depends on libsoftfloat.a, so specify it first
569FP_TEST_LIBS := libtestfloat.a libsoftfloat.a $(LIBQEMUUTIL)
570
571fp-test$(EXESUF): fp-test.o slowfloat.o $(QEMU_SOFTFLOAT_OBJ) $(FP_TEST_LIBS)
572
573# Custom rule to build with SF_CFLAGS
574SF_BUILD = $(call quiet-command,$(CC) $(QEMU_LOCAL_INCLUDES) $(QEMU_INCLUDES) \
575 $(QEMU_CFLAGS) $(SF_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) \
576 $($@-cflags) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
577
578$(SF_OBJS_ALL_NOSPEC): %.o: $(SF_SOURCE_DIR)/%.c
579 $(SF_BUILD)
580$(SF_OBJS_SPECIALIZE): %.o: $(SF_SPECIALIZE_DIR)/%.c
581 $(SF_BUILD)
582
583libsoftfloat.a: $(SF_OBJS_ALL)
584
585# Custom rule to build with TF_CFLAGS
586$(TF_OBJS_LIB) slowfloat.o: %.o: $(TF_SOURCE_DIR)/%.c
587 $(call quiet-command,$(CC) $(QEMU_LOCAL_INCLUDES) $(QEMU_INCLUDES) \
588 $(QEMU_CFLAGS) $(TF_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) \
589 $($@-cflags) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
590
591libtestfloat.a: $(TF_OBJS_LIB)
592
25f539f3
EC
593fp-bench$(EXESUF): fp-bench.o $(QEMU_SOFTFLOAT_OBJ) $(LIBQEMUUTIL)
594
3ac1f813
EC
595clean:
596 rm -f *.o *.d $(BINARIES)
597 rm -f *.gcno *.gcda *.gcov
598 rm -f fp-test$(EXESUF)
25f539f3 599 rm -f fp-bench$(EXESUF)
3ac1f813
EC
600 rm -f libsoftfloat.a
601 rm -f libtestfloat.a
602
603-include $(wildcard *.d)
This page took 0.093213 seconds and 4 git commands to generate.