tcg/i386: Mark Win64 call-saved vector regs as reserved

While we do not include these in tcg_target_reg_alloc_order,
and therefore they ought never be allocated, it seems safer
to mark them reserved as well.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2022-11-08 08:39:26 +11:00
parent 5d133dd839
commit 6b258e74aa

View File

@ -4218,6 +4218,19 @@ static void tcg_target_init(TCGContext *s)
s->reserved_regs = 0; s->reserved_regs = 0;
tcg_regset_set_reg(s->reserved_regs, TCG_REG_CALL_STACK); tcg_regset_set_reg(s->reserved_regs, TCG_REG_CALL_STACK);
#ifdef _WIN64
/* These are call saved, and we don't save them, so don't use them. */
tcg_regset_set_reg(s->reserved_regs, TCG_REG_XMM6);
tcg_regset_set_reg(s->reserved_regs, TCG_REG_XMM7);
tcg_regset_set_reg(s->reserved_regs, TCG_REG_XMM8);
tcg_regset_set_reg(s->reserved_regs, TCG_REG_XMM9);
tcg_regset_set_reg(s->reserved_regs, TCG_REG_XMM10);
tcg_regset_set_reg(s->reserved_regs, TCG_REG_XMM11);
tcg_regset_set_reg(s->reserved_regs, TCG_REG_XMM12);
tcg_regset_set_reg(s->reserved_regs, TCG_REG_XMM13);
tcg_regset_set_reg(s->reserved_regs, TCG_REG_XMM14);
tcg_regset_set_reg(s->reserved_regs, TCG_REG_XMM15);
#endif
} }
typedef struct { typedef struct {