mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
af1d5782c1
Here only add the implementation when building the RV32 port. These macros are used when the following situations occur at the same time: soft-fp fma, ldbl-128 and 32-bit _FP_W_TYPE_SIZE. The RISC-V 32-bit port is the first port which use all three together. This is the building flow about the situation: When building soft-fp/s_fmal.c, there uses the FP_FMA_Q in __fmal. The _FP_W_TYPE_SIZE is defined to 32-bit in sysdeps/riscv/sfp-machine.h, so the FP_FMA_Q was defined to _FP_FMA (Q, 4, 8, R, X, Y, Z) in soft-fp/quad.h. Something in the soft-fp/quad.h: #if _FP_W_TYPE_SIZE < 64 # define FP_FMA_Q(R, X, Y, Z) _FP_FMA (Q, 4, 8, R, X, Y, Z) #else # define FP_FMA_Q(R, X, Y, Z) _FP_FMA (Q, 2, 4, R, X, Y, Z) #endif Finally, in _FP_FMA (fs, wc, dwc, R, X, Y, Z), it will use the _FP_FRAC_HIGHBIT_DW_##dwc macro, and it will be expanded to _FP_FRAC_HIGHBIT_DW_8, but the _FP_FRAC_HIGHBIT_DW_8 is not be implemented in soft-fp/op-8.h. there is only _FP_FRAC_HIGHBIT_DW_1, _FP_FRAC_HIGHBIT_DW_2 and _FP_FRAC_HIGHBIT_DW_4 in the soft-fp/op-*.h. After this modification, we can pass the soft floating testing of glibc testsuites on RV32. * soft-fp/op-8.h (_FP_FRAC_SET_8, _FP_FRAC_ADD_8, _FP_FRAC_SUB_8) (_FP_FRAC_CLZ_8, _FP_MINFRAC_8, _FP_FRAC_NEGP_8, _FP_FRAC_ZEROP_8) (_FP_FRAC_HIGHBIT_DW_8, _FP_FRAC_COPY_4_8, _FP_FRAC_COPY_8_4) (__FP_FRAC_SET_8): Add implementation for RV32 use. |
||
---|---|---|
.. | ||
adddf3.c | ||
addsf3.c | ||
addtf3.c | ||
divdf3.c | ||
divsf3.c | ||
divtf3.c | ||
double.h | ||
eqdf2.c | ||
eqsf2.c | ||
eqtf2.c | ||
extenddftf2.c | ||
extended.h | ||
extendhftf2.c | ||
extendsfdf2.c | ||
extendsftf2.c | ||
extendxftf2.c | ||
fixdfdi.c | ||
fixdfsi.c | ||
fixdfti.c | ||
fixhfti.c | ||
fixsfdi.c | ||
fixsfsi.c | ||
fixsfti.c | ||
fixtfdi.c | ||
fixtfsi.c | ||
fixtfti.c | ||
fixunsdfdi.c | ||
fixunsdfsi.c | ||
fixunsdfti.c | ||
fixunshfti.c | ||
fixunssfdi.c | ||
fixunssfsi.c | ||
fixunssfti.c | ||
fixunstfdi.c | ||
fixunstfsi.c | ||
fixunstfti.c | ||
floatdidf.c | ||
floatdisf.c | ||
floatditf.c | ||
floatsidf.c | ||
floatsisf.c | ||
floatsitf.c | ||
floattidf.c | ||
floattihf.c | ||
floattisf.c | ||
floattitf.c | ||
floatundidf.c | ||
floatundisf.c | ||
floatunditf.c | ||
floatunsidf.c | ||
floatunsisf.c | ||
floatunsitf.c | ||
floatuntidf.c | ||
floatuntihf.c | ||
floatuntisf.c | ||
floatuntitf.c | ||
gedf2.c | ||
gesf2.c | ||
getf2.c | ||
half.h | ||
ledf2.c | ||
lesf2.c | ||
letf2.c | ||
Makefile | ||
muldf3.c | ||
mulsf3.c | ||
multf3.c | ||
negdf2.c | ||
negsf2.c | ||
negtf2.c | ||
op-1.h | ||
op-2.h | ||
op-4.h | ||
op-8.h | ||
op-common.h | ||
quad.h | ||
single.h | ||
soft-fp.h | ||
subdf3.c | ||
subsf3.c | ||
subtf3.c | ||
testit.c | ||
truncdfsf2.c | ||
trunctfdf2.c | ||
trunctfhf2.c | ||
trunctfsf2.c | ||
trunctfxf2.c | ||
unorddf2.c | ||
unordsf2.c | ||
unordtf2.c |