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 }