diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-02-27 18:23:01 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-02-27 18:23:01 +0100 |
| commit | 7a27b95df7be9a45f35d1d8a7d2573c164da4346 (patch) | |
| tree | 3c2103061663a1a91a1199a1c14224dc39910e3e /src | |
| parent | a730935e6e44fb0f96c3dcdb499d02fdefd51c92 (diff) | |
| download | box64-7a27b95df7be9a45f35d1d8a7d2573c164da4346.tar.gz box64-7a27b95df7be9a45f35d1d8a7d2573c164da4346.zip | |
Added some more wrapped libm functions
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 4 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 8 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 4 | ||||
| -rw-r--r-- | src/wrapped/wrappedlibm_private.h | 57 |
4 files changed, 63 insertions, 10 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 514b18eb..e38c2566 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -3021,6 +3021,8 @@ #defined(HAVE_LD80BITS) IFED #defined(HAVE_LD80BITS) DFiD #defined(HAVE_LD80BITS) lFDD +#defined(HAVE_LD80BITS) YFYY +#defined(HAVE_LD80BITS) vFDpp #defined(HAVE_LD80BITS) DFDDD #!defined(HAVE_LD80BITS) KFK #!defined(HAVE_LD80BITS) KFy @@ -3031,6 +3033,8 @@ #!defined(HAVE_LD80BITS) KFKK #!defined(HAVE_LD80BITS) KFKp #!defined(HAVE_LD80BITS) lFKK +#!defined(HAVE_LD80BITS) yFyy +#!defined(HAVE_LD80BITS) vFKpp #!defined(HAVE_LD80BITS) KFKKK #defined(NOALIGN) iFipiip #!defined(NOALIGN) iFEppu diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 78ec76b8..1c41cca2 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -3061,6 +3061,8 @@ typedef complexl_t (*YFY_t)(complexl_t); typedef int64_t (*IFED_t)(x64emu_t*, long double); typedef long double (*DFiD_t)(int32_t, long double); typedef intptr_t (*lFDD_t)(long double, long double); +typedef complexl_t (*YFYY_t)(complexl_t, complexl_t); +typedef void (*vFDpp_t)(long double, void*, void*); typedef long double (*DFDDD_t)(long double, long double, long double); #endif @@ -3074,6 +3076,8 @@ typedef double (*KFiK_t)(int32_t, double); typedef double (*KFKK_t)(double, double); typedef double (*KFKp_t)(double, void*); typedef intptr_t (*lFKK_t)(double, double); +typedef complex_t (*yFyy_t)(complex_t, complex_t); +typedef void (*vFKpp_t)(double, void*, void*); typedef double (*KFKKK_t)(double, double, double); #endif @@ -6122,6 +6126,8 @@ void YFY(x64emu_t *emu, uintptr_t fcn) { YFY_t fn = (YFY_t)fcn; from_complexl(em void IFED(x64emu_t *emu, uintptr_t fcn) { IFED_t fn = (IFED_t)fcn; R_RAX=(int64_t)fn(emu, LD2localLD((void*)(R_RSP + 8))); } void DFiD(x64emu_t *emu, uintptr_t fcn) { DFiD_t fn = (DFiD_t)fcn; long double ld=fn((int32_t)R_RDI, LD2localLD((void*)(R_RSP + 8))); fpu_do_push(emu); ST0val = ld; } void lFDD(x64emu_t *emu, uintptr_t fcn) { lFDD_t fn = (lFDD_t)fcn; R_RAX=(intptr_t)fn(LD2localLD((void*)(R_RSP + 8)), LD2localLD((void*)(R_RSP + 24))); } +void YFYY(x64emu_t *emu, uintptr_t fcn) { YFYY_t fn = (YFYY_t)fcn; from_complexl(emu, fn(to_complexl(emu, R_RSP + 8), to_complexl(emu, R_RSP + 40))); } +void vFDpp(x64emu_t *emu, uintptr_t fcn) { vFDpp_t fn = (vFDpp_t)fcn; fn(LD2localLD((void*)(R_RSP + 8)), (void*)R_RDI, (void*)R_RSI); } void DFDDD(x64emu_t *emu, uintptr_t fcn) { DFDDD_t fn = (DFDDD_t)fcn; long double ld=fn(LD2localLD((void*)(R_RSP + 8)), LD2localLD((void*)(R_RSP + 24)), LD2localLD((void*)(R_RSP + 40))); fpu_do_push(emu); ST0val = ld; } #endif @@ -6135,6 +6141,8 @@ void KFiK(x64emu_t *emu, uintptr_t fcn) { KFiK_t fn = (KFiK_t)fcn; double db=fn( void KFKK(x64emu_t *emu, uintptr_t fcn) { KFKK_t fn = (KFKK_t)fcn; double db=fn(FromLD((void*)(R_RSP + 8)), FromLD((void*)(R_RSP + 24))); fpu_do_push(emu); ST0val = db; } void KFKp(x64emu_t *emu, uintptr_t fcn) { KFKp_t fn = (KFKp_t)fcn; double db=fn(FromLD((void*)(R_RSP + 8)), (void*)R_RDI); fpu_do_push(emu); ST0val = db; } void lFKK(x64emu_t *emu, uintptr_t fcn) { lFKK_t fn = (lFKK_t)fcn; R_RAX=(intptr_t)fn(FromLD((void*)(R_RSP + 8)), FromLD((void*)(R_RSP + 24))); } +void yFyy(x64emu_t *emu, uintptr_t fcn) { yFyy_t fn = (yFyy_t)fcn; from_complexk(emu, fn(to_complexk(emu, R_RSP + 8), to_complexk(emu, R_RSP + 40))); } +void vFKpp(x64emu_t *emu, uintptr_t fcn) { vFKpp_t fn = (vFKpp_t)fcn; fn(FromLD((void*)(R_RSP + 8)), (void*)R_RDI, (void*)R_RSI); } void KFKKK(x64emu_t *emu, uintptr_t fcn) { KFKKK_t fn = (KFKKK_t)fcn; double db=fn(FromLD((void*)(R_RSP + 8)), FromLD((void*)(R_RSP + 24)), FromLD((void*)(R_RSP + 40))); fpu_do_push(emu); ST0val = db; } #endif diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index a6464e60..4a59b2fa 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -3061,6 +3061,8 @@ void YFY(x64emu_t *emu, uintptr_t fnc); void IFED(x64emu_t *emu, uintptr_t fnc); void DFiD(x64emu_t *emu, uintptr_t fnc); void lFDD(x64emu_t *emu, uintptr_t fnc); +void YFYY(x64emu_t *emu, uintptr_t fnc); +void vFDpp(x64emu_t *emu, uintptr_t fnc); void DFDDD(x64emu_t *emu, uintptr_t fnc); #endif @@ -3074,6 +3076,8 @@ void KFiK(x64emu_t *emu, uintptr_t fnc); void KFKK(x64emu_t *emu, uintptr_t fnc); void KFKp(x64emu_t *emu, uintptr_t fnc); void lFKK(x64emu_t *emu, uintptr_t fnc); +void yFyy(x64emu_t *emu, uintptr_t fnc); +void vFKpp(x64emu_t *emu, uintptr_t fnc); void KFKKK(x64emu_t *emu, uintptr_t fnc); #endif diff --git a/src/wrapped/wrappedlibm_private.h b/src/wrapped/wrappedlibm_private.h index 64e9a7ec..2849d57d 100644 --- a/src/wrapped/wrappedlibm_private.h +++ b/src/wrapped/wrappedlibm_private.h @@ -155,7 +155,11 @@ GO2(cosl, KFK, cos) #endif GOW(cpow, XFXX) GOW(cpowf, xFxx) -// cpowl // Weak +#ifdef HAVE_LD80BITS +GOW(cpowl, YFYY) +#else +GO2(cpowl, yFyy, cpow) +#endif GOW(cproj, XFX) GOW(cprojf, xFx) // cprojl // Weak @@ -184,8 +188,13 @@ GOW(ctan, XFX) GOW(ctanf, xFx) GOW(ctanh, XFX) GOW(ctanhf, xFx) -// ctanhl // Weak -// ctanl // Weak +#ifdef HAVE_LD80BITS +GOW(ctanhl, YFY) +GOW(ctanl, YFY) +#else +GO2(ctanhl, yFy, ctanh) +GO2(ctanl, yFy, ctan) +#endif // __cxa_finalize // Weak // drem // Weak // dremf // Weak @@ -214,7 +223,11 @@ GOW(exp2, dFd) GOW(exp2f, fFf) GOM(__exp2f_finite, fFf) GOM(__exp2_finite, dFd) -// exp2l // Weak +#ifdef HAVE_LD80BITS +GOW(exp2l, DFD) +#else +GO2(exp2l, KFK, exp2) +#endif GOW(expf, fFf) GOM(__expf_finite, fFf) GOM(__exp_finite, dFd) @@ -225,7 +238,11 @@ GO2(expl, KFK, exp) #endif GOW(expm1, dFd) GOW(expm1f, fFf) -// expm1l // Weak +#ifdef HAVE_LD80BITS +GOW(expm1l, DFD) +#else +GO2(expm1l, KFK, expm1) +#endif GOW(fabs, dFd) GOW(fabsf, fFf) // fabsl // Weak @@ -300,7 +317,11 @@ GOW(hypot, dFdd) GOW(hypotf, fFff) GOM(__hypotf_finite, fFff) GOM(__hypot_finite, dFdd) -// hypotl // Weak +#ifdef HAVE_LD80BITS +GOW(hypotl, DFDD) +#else +GO2(hypotl, KFKK, hypot) +#endif GOW(ilogb, iFd) GOW(ilogbf, iFf) // ilogbl // Weak @@ -377,12 +398,20 @@ GO2(log10l, KFK, log10) //Weak #endif GOW(log1p, dFd) GOW(log1pf, fFf) -// log1pl // Weak +#ifdef HAVE_LD80BITS +GOW(log1pl, DFD) +#else +GO2(log1pl, KFK, log1p) +#endif GOW(log2, dFd) GOW(log2f, fFf) GOM(__log2f_finite, fFf) GOM(__log2_finite, dFd) -// log2l // Weak +#ifdef HAVE_LD80BITS +GOW(log2l, DFD) +#else +GO2(log2l, KFK, log2) +#endif GOW(logb, dFd) GOW(logbf, fFf) // logbl // Weak @@ -416,7 +445,11 @@ GOWM(nearbyintf, fFEf) // nearbyintl // Weak GOW(nextafter, dFdd) GOW(nextafterf, fFff) -// nextafterl // Weak +#ifdef HAVE_LD80BITS +GOW(nextafterl, DFDD) +#else +GO2(nextafterl, KFKK, nextafter) +#endif GOW(nexttoward, dFdD) GOW(nexttowardf, fFfD) // nexttowardl // Weak @@ -477,7 +510,11 @@ DATAB(signgam, 8) GOW(sin, dFd) GOW(sincos, vFdpp) GOW(sincosf, vFfpp) -// sincosl // Weak +#ifdef HAVE_LD80BITS +GOW(sincosl, vFDpp) +#else +GO2(sincosl, vFKpp, sincos) +#endif GOW(sinf, fFf) GOW(sinh, dFd) GOW(sinhf, fFf) |