[MSVCRTEX] Add some floating point functions for CLang build

Clang makes optimisations requiring functions not present in msvcrt
This commit is contained in:
Jérôme Gardou 2020-11-06 21:39:00 +01:00 committed by Jérôme Gardou
parent 3936c3f19e
commit 15c9f63b65
2 changed files with 47 additions and 0 deletions

View file

@ -0,0 +1,38 @@
#include <asm.inc>
PUBLIC _exp2
/* FUNCTIONS ***************************************************************/
.code
_exp2:
push ebp
mov ebp, esp
fld qword ptr [ebp + 8]
fxam
fstsw ax
fwait
sahf
jnp .not_inf
jnc .not_inf
test ah, 2
jz .done
fstp st
fldz
jmp .done
.not_inf:
fst st(1)
frndint
fxch st(1)
fsub st, st(1)
f2xm1
fld1
faddp st(1), st
fscale
fstp st(1)
.done:
pop ebp
ret
END

View file

@ -58,6 +58,15 @@ if(ARCH STREQUAL "i386")
math/i386/cipow.c
math/i386/cisin.c
math/i386/cisqrt.c)
if (GCC AND CLANG)
# CLang performs some optimisations requiring those funtions
list(APPEND MSVCRTEX_ASM_SOURCE
math/i386/ceilf.S
math/i386/exp2_asm.s
math/i386/floorf.S)
list(APPEND MSVCRTEX_SOURCE
math/i386/sqrtf.c)
endif()
elseif(ARCH STREQUAL "amd64")
list(APPEND MSVCRTEX_ASM_SOURCE
except/amd64/chkstk_ms.s)