From 1e2bae923734c61c16f7e2ca6e8dbc193a7a6ce2 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Fri, 23 May 2025 23:54:36 +0800 Subject: [RV64_DYNAREC] Improved emit_pf with Zbb (#2665) --- src/dynarec/rv64/dynarec_rv64_helper.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/dynarec/rv64/dynarec_rv64_helper.c b/src/dynarec/rv64/dynarec_rv64_helper.c index ce95d9e4..8de757df 100644 --- a/src/dynarec/rv64/dynarec_rv64_helper.c +++ b/src/dynarec/rv64/dynarec_rv64_helper.c @@ -2904,15 +2904,19 @@ void emit_pf(dynarec_rv64_t* dyn, int ninst, int s1, int s3, int s4) { MAYUSE(dyn); MAYUSE(ninst); + if (rv64_zbb) { + ANDI(s3, s1, 0xFF); + CPOPW(s3, s3); + } else { + SRLI(s3, s1, 4); + XOR(s3, s3, s1); - SRLI(s3, s1, 4); - XOR(s3, s3, s1); - - SRLI(s4, s3, 2); - XOR(s4, s3, s4); + SRLI(s4, s3, 2); + XOR(s4, s3, s4); - SRLI(s3, s4, 1); - XOR(s3, s3, s4); + SRLI(s3, s4, 1); + XOR(s3, s3, s4); + } ANDI(s3, s3, 1); XORI(s3, s3, 1); -- cgit 1.4.1