diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-11-01 10:49:39 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-11-01 10:49:39 +0100 |
| commit | 51fb706781c438108f64ed32e7d8d05ebaf36d4e (patch) | |
| tree | eb91f6c6fcec2b87b0b5066beeba2a272324e7bd /src | |
| parent | 92ed70f0295641cc1a9e4f340bf929a508014b0b (diff) | |
| download | box64-51fb706781c438108f64ed32e7d8d05ebaf36d4e.tar.gz box64-51fb706781c438108f64ed32e7d8d05ebaf36d4e.zip | |
Added llrintl wrapped function (for #419)
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 2 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 4 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 2 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibm_private.h | 6 |
4 files changed, 13 insertions, 1 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 3021a2f6..edd5d8f8 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -2170,8 +2170,10 @@ #() pFpippppppppppppppppp #() iFpppppppppppppppppppppp #() iFpppppppppppppppppppppppppppppppppp +#defined(HAVE_LD80BITS) IFD #defined(HAVE_LD80BITS) DFD #defined(HAVE_LD80BITS) vFppippDDC +#!defined(HAVE_LD80BITS) IFK #!defined(HAVE_LD80BITS) KFK #!defined(HAVE_LD80BITS) KFKK #!defined(HAVE_LD80BITS) KFKp diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 4edef859..e9a073b7 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -2206,11 +2206,13 @@ typedef int64_t (*iFpppppppppppppppppppppp_t)(void*, void*, void*, void*, void*, typedef int64_t (*iFpppppppppppppppppppppppppppppppppp_t)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); #if defined(HAVE_LD80BITS) +typedef int64_t (*IFD_t)(long double); typedef long double (*DFD_t)(long double); typedef void (*vFppippDDC_t)(void*, void*, int64_t, void*, void*, long double, long double, uint8_t); #endif #if !defined(HAVE_LD80BITS) +typedef int64_t (*IFK_t)(double); typedef double (*KFK_t)(double); typedef double (*KFKK_t)(double, double); typedef double (*KFKp_t)(double, void*); @@ -4402,11 +4404,13 @@ void iFpppppppppppppppppppppp(x64emu_t *emu, uintptr_t fcn) { iFpppppppppppppppp void iFpppppppppppppppppppppppppppppppppp(x64emu_t *emu, uintptr_t fcn) { iFpppppppppppppppppppppppppppppppppp_t fn = (iFpppppppppppppppppppppppppppppppppp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32), *(void**)(R_RSP + 40), *(void**)(R_RSP + 48), *(void**)(R_RSP + 56), *(void**)(R_RSP + 64), *(void**)(R_RSP + 72), *(void**)(R_RSP + 80), *(void**)(R_RSP + 88), *(void**)(R_RSP + 96), *(void**)(R_RSP + 104), *(void**)(R_RSP + 112), *(void**)(R_RSP + 120), *(void**)(R_RSP + 128), *(void**)(R_RSP + 136), *(void**)(R_RSP + 144), *(void**)(R_RSP + 152), *(void**)(R_RSP + 160), *(void**)(R_RSP + 168), *(void**)(R_RSP + 176), *(void**)(R_RSP + 184), *(void**)(R_RSP + 192), *(void**)(R_RSP + 200), *(void**)(R_RSP + 208), *(void**)(R_RSP + 216), *(void**)(R_RSP + 224)); } #if defined(HAVE_LD80BITS) +void IFD(x64emu_t *emu, uintptr_t fcn) { IFD_t fn = (IFD_t)fcn; R_RAX=(int64_t)fn(LD2localLD((void*)(R_RSP + 8))); } void DFD(x64emu_t *emu, uintptr_t fcn) { DFD_t fn = (DFD_t)fcn; long double ld=fn(LD2localLD((void*)(R_RSP + 8))); fpu_do_push(emu); ST0val = ld; } void vFppippDDC(x64emu_t *emu, uintptr_t fcn) { vFppippDDC_t fn = (vFppippDDC_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8, LD2localLD((void*)(R_RSP + 8)), LD2localLD((void*)(R_RSP + 24)), (uint8_t)R_R9); } #endif #if !defined(HAVE_LD80BITS) +void IFK(x64emu_t *emu, uintptr_t fcn) { IFK_t fn = (IFK_t)fcn; R_RAX=(int64_t)fn(FromLD((void*)(R_RSP + 8))); } void KFK(x64emu_t *emu, uintptr_t fcn) { KFK_t fn = (KFK_t)fcn; double db=fn(FromLD((void*)(R_RSP + 8))); fpu_do_push(emu); ST0val = db; } 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; } diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 499e2818..d9e813a3 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -2205,11 +2205,13 @@ void iFpppppppppppppppppppppp(x64emu_t *emu, uintptr_t fnc); void iFpppppppppppppppppppppppppppppppppp(x64emu_t *emu, uintptr_t fnc); #if defined(HAVE_LD80BITS) +void IFD(x64emu_t *emu, uintptr_t fnc); void DFD(x64emu_t *emu, uintptr_t fnc); void vFppippDDC(x64emu_t *emu, uintptr_t fnc); #endif #if !defined(HAVE_LD80BITS) +void IFK(x64emu_t *emu, uintptr_t fnc); void KFK(x64emu_t *emu, uintptr_t fnc); void KFKK(x64emu_t *emu, uintptr_t fnc); void KFKp(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedlibm_private.h b/src/wrapped/wrappedlibm_private.h index 2d9b3098..55287c95 100755 --- a/src/wrapped/wrappedlibm_private.h +++ b/src/wrapped/wrappedlibm_private.h @@ -305,7 +305,11 @@ GOW(lgamma_r, dFdp) DATAV(_LIB_VERSION, 8) GOW(llrint, IFd) GOW(llrintf, IFf) -// llrintl // Weak +#ifdef HAVE_LD80BITS +GOW(llrintl, IFD) +#else +GO2(llrintl, IFK, llrint) +#endif GOW(llround, IFd) GOW(llroundf, IFf) // llroundl // Weak |