From b5baeb7e9bbc1e6198edc769af434840cb83f61b Mon Sep 17 00:00:00 2001 From: tastynoob <934348725@qq.com> Date: Thu, 22 May 2025 11:21:12 +0800 Subject: [PATCH] config: add RVV_UNORDER option to control the unorder rvv insts --- src/isa/riscv64/Kconfig | 5 +++++ src/isa/riscv64/instr/rvv/vcompute.h | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/isa/riscv64/Kconfig b/src/isa/riscv64/Kconfig index 339064061..1d69cd858 100644 --- a/src/isa/riscv64/Kconfig +++ b/src/isa/riscv64/Kconfig @@ -586,6 +586,11 @@ config RVV_AGNOSTIC bool "Enable RVV agnostic policy" default y +config RVV_UNORDER + depends on RVV + bool "Enable RVV unorder compute" + default y + config EBREAK_AS_TRAP depends on !RV_DEBUG bool "Treat ebreak same as nemu_trap" diff --git a/src/isa/riscv64/instr/rvv/vcompute.h b/src/isa/riscv64/instr/rvv/vcompute.h index 65fedb75d..e680dbc3d 100644 --- a/src/isa/riscv64/instr/rvv/vcompute.h +++ b/src/isa/riscv64/instr/rvv/vcompute.h @@ -971,10 +971,10 @@ def_EHelper(vfadd) { } def_EHelper(vfredusum) { -#ifdef CONFIG_DIFFTEST - FREDUCTION(FREDUSUM) // use ordered reduction -#else +#ifdef CONFIG_RVV_UNORDER float_reduction_computing(s); // when NEMU is ref, use unordered reduction which is same as XiangShan +#else + FREDUCTION(FREDUSUM) // use ordered reduction #endif }