在 2024/2/2 上午7:34, Richard Henderson 写道:
> Because there are more call clobbered registers than
> call saved registers, we begin with all registers as
> call clobbered and then reset those that are saved.
>
> This was missed when we introduced the LSX support.
>
> Cc: qemu-stable@nongnu.org
> Fixes: 16288ded944 ("tcg/loongarch64: Lower basic tcg vec ops to LSX")
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2136
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> tcg/loongarch64/tcg-target.c.inc | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
Thank you !
Reviewed-by: Song Gao <gaosong@loongson.cn>
Thanks.
Song Gao
> diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.c.inc
> index bab0a173a3..dcf0205458 100644
> --- a/tcg/loongarch64/tcg-target.c.inc
> +++ b/tcg/loongarch64/tcg-target.c.inc
> @@ -2327,7 +2327,7 @@ static void tcg_target_init(TCGContext *s)
> tcg_target_available_regs[TCG_TYPE_I32] = ALL_GENERAL_REGS;
> tcg_target_available_regs[TCG_TYPE_I64] = ALL_GENERAL_REGS;
>
> - tcg_target_call_clobber_regs = ALL_GENERAL_REGS;
> + tcg_target_call_clobber_regs = ALL_GENERAL_REGS | ALL_VECTOR_REGS;
> tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S0);
> tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S1);
> tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S2);