在 2024/5/28 上午5:19, Richard Henderson 写道:
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> tcg/loongarch64/tcg-target.h | 2 +-
> tcg/loongarch64/tcg-target.c.inc | 11 ++++++++---
> 2 files changed, 9 insertions(+), 4 deletions(-)
Reviewed-by: Song Gao <gaosong@loongson.cn>
Thanks.
Song Gao
> diff --git a/tcg/loongarch64/tcg-target.h b/tcg/loongarch64/tcg-target.h
> index 990bad1d51..58bd7d258e 100644
> --- a/tcg/loongarch64/tcg-target.h
> +++ b/tcg/loongarch64/tcg-target.h
> @@ -173,7 +173,7 @@ typedef enum {
>
> #define TCG_TARGET_HAS_v64 (cpuinfo & CPUINFO_LSX)
> #define TCG_TARGET_HAS_v128 (cpuinfo & CPUINFO_LSX)
> -#define TCG_TARGET_HAS_v256 0
> +#define TCG_TARGET_HAS_v256 (cpuinfo & CPUINFO_LASX)
>
> #define TCG_TARGET_HAS_not_vec 1
> #define TCG_TARGET_HAS_neg_vec 1
> diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.c.inc
> index e2b5aad5e3..0b41b807e3 100644
> --- a/tcg/loongarch64/tcg-target.c.inc
> +++ b/tcg/loongarch64/tcg-target.c.inc
> @@ -2484,9 +2484,14 @@ static void tcg_target_init(TCGContext *s)
> tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S8);
> tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S9);
>
> - if (cpuinfo & CPUINFO_LSX) {
> - tcg_target_available_regs[TCG_TYPE_V64] = ALL_VECTOR_REGS;
> - tcg_target_available_regs[TCG_TYPE_V128] = ALL_VECTOR_REGS;
> + if (cpuinfo & (CPUINFO_LSX | CPUINFO_LASX)) {
> + if (cpuinfo & CPUINFO_LSX) {
> + tcg_target_available_regs[TCG_TYPE_V64] = ALL_VECTOR_REGS;
> + tcg_target_available_regs[TCG_TYPE_V128] = ALL_VECTOR_REGS;
> + }
> + if (cpuinfo & CPUINFO_LASX) {
> + tcg_target_available_regs[TCG_TYPE_V256] = ALL_VECTOR_REGS;
> + }
> tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_V24);
> tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_V25);
> tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_V26);