From f148b106a5a84cde608f2fb3d8a545f5090d7f58 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Tue, 29 Oct 2024 06:10:17 +0800 Subject: [RV64_DYNAREC] Fixed MAXSS and MAXSD for vector (#1974) --- src/dynarec/rv64/dynarec_rv64_f20f_vector.c | 8 ++------ src/dynarec/rv64/dynarec_rv64_f30f_vector.c | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/dynarec/rv64/dynarec_rv64_f20f_vector.c b/src/dynarec/rv64/dynarec_rv64_f20f_vector.c index e90e5956..ce46c0e0 100644 --- a/src/dynarec/rv64/dynarec_rv64_f20f_vector.c +++ b/src/dynarec/rv64/dynarec_rv64_f20f_vector.c @@ -360,10 +360,8 @@ uintptr_t dynarec64_F20F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i GETGX_vector(v0, 1, VECTOR_SEW64); } if (box64_dynarec_fastnan) { - q0 = fpu_get_scratch(dyn); VECTOR_LOAD_VMASK(0b01, x4, 1); - VFMIN_VV(q0, v0, v1, VECTOR_MASKED); - VMERGE_VVM(v0, v0, q0); + VFMIN_VV(v0, v0, v1, VECTOR_MASKED); } else { d0 = fpu_get_scratch(dyn); d1 = fpu_get_scratch(dyn); @@ -443,10 +441,8 @@ uintptr_t dynarec64_F20F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i GETGX_vector(v0, 1, VECTOR_SEW64); } if (box64_dynarec_fastnan) { - q0 = fpu_get_scratch(dyn); VECTOR_LOAD_VMASK(0b01, x4, 1); - VFMIN_VV(q0, v0, v1, VECTOR_MASKED); - VMERGE_VVM(v0, v0, q0); + VFMAX_VV(v0, v0, v1, VECTOR_MASKED); } else { d0 = fpu_get_scratch(dyn); d1 = fpu_get_scratch(dyn); diff --git a/src/dynarec/rv64/dynarec_rv64_f30f_vector.c b/src/dynarec/rv64/dynarec_rv64_f30f_vector.c index 2c62e35c..d5ac666a 100644 --- a/src/dynarec/rv64/dynarec_rv64_f30f_vector.c +++ b/src/dynarec/rv64/dynarec_rv64_f30f_vector.c @@ -208,10 +208,8 @@ uintptr_t dynarec64_F30F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i GETGX_vector(v0, 1, VECTOR_SEW32); } if (box64_dynarec_fastnan) { - q0 = fpu_get_scratch(dyn); VECTOR_LOAD_VMASK(0b0001, x4, 1); - VFMIN_VV(q0, v0, v1, VECTOR_MASKED); - VMERGE_VVM(v0, v0, q0); + VFMIN_VV(v0, v0, v1, VECTOR_MASKED); } else { d0 = fpu_get_scratch(dyn); d1 = fpu_get_scratch(dyn); @@ -251,10 +249,8 @@ uintptr_t dynarec64_F30F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i GETGX_vector(v0, 1, VECTOR_SEW32); } if (box64_dynarec_fastnan) { - q0 = fpu_get_scratch(dyn); VECTOR_LOAD_VMASK(0b0001, x4, 1); - VFMIN_VV(q0, v0, v1, VECTOR_MASKED); - VMERGE_VVM(v0, v0, q0); + VFMAX_VV(v0, v0, v1, VECTOR_MASKED); } else { d0 = fpu_get_scratch(dyn); d1 = fpu_get_scratch(dyn); -- cgit 1.4.1