]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
tcg/loongarch64: Set vector registers call clobbered
authorRichard Henderson <richard.henderson@linaro.org>
Thu, 1 Feb 2024 23:34:14 +0000 (09:34 +1000)
committerMichael Tokarev <mjt@tls.msk.ru>
Fri, 9 Feb 2024 07:44:49 +0000 (10:44 +0300)
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>
Reviewed-by: Song Gao <gaosong@loongson.cn>
Message-Id: <20240201233414.500588-1-richard.henderson@linaro.org>
(cherry picked from commit 45bf0e7aa648369cf8ab2333bd20144806fc1be3)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
tcg/loongarch64/tcg-target.c.inc

index bab0a173a37378535bfe8434a32201cdcbbc6b65..dcf0205458092516a7b6b5eb199e2017f1ee3a91 100644 (file)
@@ -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);