diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2024-10-29 06:10:17 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-28 23:10:17 +0100 |
| commit | f148b106a5a84cde608f2fb3d8a545f5090d7f58 (patch) | |
| tree | fb51c1ade2694f70ebb60f654a73e1b9168c1c5e /src | |
| parent | 9ffabf4c859ba4933abffc2fba0f0460d05ca3c9 (diff) | |
| download | box64-f148b106a5a84cde608f2fb3d8a545f5090d7f58.tar.gz box64-f148b106a5a84cde608f2fb3d8a545f5090d7f58.zip | |
[RV64_DYNAREC] Fixed MAXSS and MAXSD for vector (#1974)
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_f20f_vector.c | 8 | ||||
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_f30f_vector.c | 8 |
2 files changed, 4 insertions, 12 deletions
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); |