[RV64_DYNAREC] Fixed 66 0F 38 17 PTEST opcode for vector (#1927)
Some checks are pending
Build and Release Box64 / build (ubuntu-latest, ANDROID, Release) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, ANDROID, Trace) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, ARM64, Box32) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, ARM64, Release) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, ARM64, StaticBuild) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, ARM64, Trace) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, LARCH64, Box32) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, LARCH64, Release) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, LARCH64, StaticBuild) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, LARCH64, Trace) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, RISCV, Box32) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, RISCV, Release) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, RISCV, StaticBuild) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, RISCV, Trace) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, RK3588, Box32) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, RK3588, Release) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, RK3588, StaticBuild) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, RK3588, Trace) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, TERMUX, Release) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, TERMUX, Trace) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, X64, Box32) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, X64, Release) (push) Waiting to run
Build and Release Box64 / build (ubuntu-latest, X64, Trace) (push) Waiting to run

This commit is contained in:
Yang Liu 2024-10-12 03:27:51 +08:00 committed by GitHub
parent 2a4ecc1d28
commit 18e033cdd8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -319,34 +319,34 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
SET_DFNONE();
v0 = fpu_get_scratch_lmul(dyn, VECTOR_LMUL2);
IFX (X_ZF) {
VAND_VV(v0, q1, q0, VECTOR_MASKED);
VAND_VV(v0, q1, q0, VECTOR_UNMASKED);
if (rv64_xtheadvector) {
// Force the mask element width to 32
vector_vsetvli(dyn, ninst, x1, VECTOR_SEW64, VECTOR_LMUL2, 1);
}
VMSGT_VX(VMASK, v0, xZR, VECTOR_UNMASKED);
VMSGTU_VX(VMASK, v0, xZR, VECTOR_UNMASKED);
if (rv64_xtheadvector) {
vector_vsetvli(dyn, ninst, x1, VECTOR_SEW64, VECTOR_LMUL1, 1);
}
VMV_X_S(x4, VMASK);
if (!rv64_xtheadvector) ANDI(x4, x4, 0b11);
BNEZ(x3, 8);
BNEZ(x4, 8);
ORI(xFlags, xFlags, 1 << F_ZF);
}
IFX (X_CF) {
VXOR_VI(v0, q0, 0x1F, VECTOR_UNMASKED);
VAND_VV(v0, q1, v0, VECTOR_MASKED);
VAND_VV(v0, q1, v0, VECTOR_UNMASKED);
if (rv64_xtheadvector) {
// Force the mask element width to 32
vector_vsetvli(dyn, ninst, x1, VECTOR_SEW64, VECTOR_LMUL2, 1);
}
VMSGT_VX(VMASK, v0, xZR, VECTOR_UNMASKED);
VMSGTU_VX(VMASK, v0, xZR, VECTOR_UNMASKED);
if (rv64_xtheadvector) {
vector_vsetvli(dyn, ninst, x1, VECTOR_SEW64, VECTOR_LMUL1, 1);
}
VMV_X_S(x4, VMASK);
if (!rv64_xtheadvector) ANDI(x4, x4, 0b11);
BNEZ(x3, 8);
BNEZ(x4, 8);
ORI(xFlags, xFlags, 1 << F_ZF);
}
break;