diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-26 11:39:11 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-26 11:39:19 +0100 |
| commit | 50d8016e86485017aee0031c5752c70b8fd3f658 (patch) | |
| tree | 8a85a45fd7a009dc2a0bdb1290a52d5e4d662ee9 /src | |
| parent | 4a033b8e767fee3fd2de805d8a94e8e7f094015f (diff) | |
| download | box64-50d8016e86485017aee0031c5752c70b8fd3f658.tar.gz box64-50d8016e86485017aee0031c5752c70b8fd3f658.zip | |
[DYNAREC] Added a small optim on 0F 57 opcode
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/dynarec_arm64_0f.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/dynarec/dynarec_arm64_0f.c b/src/dynarec/dynarec_arm64_0f.c index d749abdb..6a9a8dff 100755 --- a/src/dynarec/dynarec_arm64_0f.c +++ b/src/dynarec/dynarec_arm64_0f.c @@ -289,9 +289,16 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin case 0x57: INST_NAME("XORPS Gx, Ex"); nextop = F8; - GETEX(q0, 0); - GETGX(v0); - VEORQ(v0, v0, q0); + GETG; + if(MODREG && ((nextop&7)+(rex.b<<3)==gd)) { + // special case for XORPS Gx, Gx + q0 = sse_get_reg_empty(dyn, ninst, x1, gd); + VEORQ(q0, q0, q0); + } else { + q0 = sse_get_reg(dyn, ninst, x1, gd); + GETEX(q1, 0); + VEORQ(q0, q0, q1); + } break; case 0x58: INST_NAME("ADDPS Gx, Ex"); |