From 34c3e2dab306a85f913f89b3bfcf5c764061b904 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Thu, 4 Jul 2024 20:08:11 +0200 Subject: [ARM64_DYNAREC] Improved 0F C7 /6 opcode --- src/dynarec/arm64/dynarec_arm64_0f.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c index 1c1c2c98..85025081 100644 --- a/src/dynarec/arm64/dynarec_arm64_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_0f.c @@ -2337,8 +2337,29 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin case 0xC7: // rep has no impact here nextop = F8; - if(MODREG) { DEFAULT; } - else switch((nextop>>3)&7) { + if(MODREG) switch((nextop>>3)&7) { + case 6: + INST_NAME("RDRAND Ed"); + SETFLAGS(X_ALL, SF_SET_DF); + SET_DFNONE(x1); + GETED(0); + IFX(X_OF|X_SF|X_ZF|X_PF|X_AF) { + MOV32w(x1, (1<>3)&7) { case 1: INST_NAME("CMPXCHG8B Gq, Eq"); SETFLAGS(X_ZF, SF_SUBSET); -- cgit 1.4.1