diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2022-10-21 10:16:28 +1000 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2023-02-04 06:19:42 -1000 |
commit | c4f4a00ac7d947c9b100e3cb62755a9a157df1fa (patch) | |
tree | 223b7a2576440c2e5718e5e2868cec935ce9f9f0 /tcg/i386/tcg-target.h | |
parent | b959822c94e6d32b36fad038e79c14f841e585c1 (diff) | |
download | qemu-c4f4a00ac7d947c9b100e3cb62755a9a157df1fa.zip qemu-c4f4a00ac7d947c9b100e3cb62755a9a157df1fa.tar.gz qemu-c4f4a00ac7d947c9b100e3cb62755a9a157df1fa.tar.bz2 |
tcg/i386: Add TCG_TARGET_CALL_{RET,ARG}_I128
Fill in the parameters for the host ABI for Int128.
Adjust tcg_target_call_oarg_reg for _WIN64, and
tcg_out_call for i386 sysv. Allow TCG_TYPE_V128
stores without AVX enabled.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'tcg/i386/tcg-target.h')
-rw-r--r-- | tcg/i386/tcg-target.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h index 5797a55..d4f2a6f 100644 --- a/tcg/i386/tcg-target.h +++ b/tcg/i386/tcg-target.h @@ -100,6 +100,16 @@ typedef enum { #endif #define TCG_TARGET_CALL_ARG_I32 TCG_CALL_ARG_NORMAL #define TCG_TARGET_CALL_ARG_I64 TCG_CALL_ARG_NORMAL +#if defined(_WIN64) +# define TCG_TARGET_CALL_ARG_I128 TCG_CALL_ARG_BY_REF +# define TCG_TARGET_CALL_RET_I128 TCG_CALL_RET_BY_VEC +#elif TCG_TARGET_REG_BITS == 64 +# define TCG_TARGET_CALL_ARG_I128 TCG_CALL_ARG_NORMAL +# define TCG_TARGET_CALL_RET_I128 TCG_CALL_RET_NORMAL +#else +# define TCG_TARGET_CALL_ARG_I128 TCG_CALL_ARG_NORMAL +# define TCG_TARGET_CALL_RET_I128 TCG_CALL_RET_BY_REF +#endif extern bool have_bmi1; extern bool have_popcnt; |