mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-08 15:34:09 +00:00
Fix ffi calls with complex parameters.
This commit is contained in:
parent
db99c31890
commit
f660d36138
@ -563,11 +563,12 @@
|
|||||||
cc->retref = !(sz == 1 || sz == 2 || sz == 4 || sz == 8); \
|
cc->retref = !(sz == 1 || sz == 2 || sz == 4 || sz == 8); \
|
||||||
if (cc->retref) cc->gpr[ngpr++] = (GPRArg)dp;
|
if (cc->retref) cc->gpr[ngpr++] = (GPRArg)dp;
|
||||||
|
|
||||||
#define CCALL_HANDLE_COMPLEXRET CCALL_HANDLE_STRUCTRET
|
#define CCALL_HANDLE_COMPLEXRET \
|
||||||
|
cc->retref = 1; /* Return all complex values by reference. */ \
|
||||||
|
cc->gpr[ngpr++] = (GPRArg)dp;
|
||||||
|
|
||||||
#define CCALL_HANDLE_COMPLEXRET2 \
|
#define CCALL_HANDLE_COMPLEXRET2 \
|
||||||
if (!cc->retref) \
|
UNUSED(dp); /* Nothing to do. */
|
||||||
*(int64_t *)dp = *(int64_t *)sp; /* Copy complex float from GPRs. */
|
|
||||||
|
|
||||||
#define CCALL_HANDLE_STRUCTARG \
|
#define CCALL_HANDLE_STRUCTARG \
|
||||||
/* Pass structs of size 1, 2, 4 or 8 in a GPR by value. */ \
|
/* Pass structs of size 1, 2, 4 or 8 in a GPR by value. */ \
|
||||||
@ -577,11 +578,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define CCALL_HANDLE_COMPLEXARG \
|
#define CCALL_HANDLE_COMPLEXARG \
|
||||||
/* Pass complex float in a GPR and complex double by reference. */ \
|
/* Pass complex numbers by reference. */ \
|
||||||
if (sz != 2*sizeof(float)) { \
|
rp = cdataptr(lj_cdata_new(cts, did, sz)); \
|
||||||
rp = cdataptr(lj_cdata_new(cts, did, sz)); \
|
sz = CTSIZE_PTR; \
|
||||||
sz = CTSIZE_PTR; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define CCALL_HANDLE_REGARG \
|
#define CCALL_HANDLE_REGARG \
|
||||||
if (isfp) { \
|
if (isfp) { \
|
||||||
|
Loading…
Reference in New Issue
Block a user