[CRT] Implement portable + amd64 asm version of fabs/fabsf

Note: older versions of ML64 are broken and don't understand the register form of movq.
See https://stackoverflow.com/questions/24789339/move-quadword-between-xmm-and-general-purpose-register-in-ml64
This commit is contained in:
Timo Kreuzer 2021-05-29 19:40:30 +02:00
parent 8a67170616
commit b85afdfd25
7 changed files with 149 additions and 48 deletions

View file

@ -8,6 +8,8 @@ list(APPEND LIBCNTPR_MATH_SOURCE
if(ARCH STREQUAL "i386")
list(APPEND LIBCNTPR_MATH_SOURCE
math/fabs.c
math/fabsf.c
math/i386/ci.c
math/i386/cicos.c
math/i386/cilog.c
@ -31,7 +33,7 @@ if(ARCH STREQUAL "i386")
math/i386/aullshr_asm.s
math/i386/ceil_asm.s
math/i386/cos_asm.s
math/i386/fabs_asm.s
# math/i386/fabs_asm.s # FIXME
math/i386/floor_asm.s
math/i386/ftol_asm.s
math/i386/ftol2_asm.s
@ -60,6 +62,7 @@ elseif(ARCH STREQUAL "amd64")
math/amd64/ceil.S
math/amd64/exp.S
math/amd64/fabs.S
math/amd64/fabsf.S
math/amd64/floor.S
math/amd64/floorf.S
math/amd64/fmod.S
@ -73,6 +76,8 @@ elseif(ARCH STREQUAL "amd64")
elseif(ARCH STREQUAL "arm")
list(APPEND LIBCNTPR_MATH_SOURCE
math/cos.c
math/fabs.c
math/fabsf.c
math/floorf.c
math/sin.c
math/sqrt.c
@ -92,15 +97,11 @@ elseif(ARCH STREQUAL "arm")
math/arm/__u64tos.c
math/arm/__64tof.h
)
list(APPEND CRT_MATH_SOURCE
math/fabsf.c
)
list(APPEND LIBCNTPR_MATH_ASM_SOURCE
math/arm/atan.s
math/arm/atan2.s
math/arm/ceil.s
math/arm/exp.s
math/arm/fabs.s
math/arm/fmod.s
math/arm/floor.s
math/arm/ldexp.s