diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2025-08-08 05:21:52 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-07 23:21:52 +0200 |
| commit | 1535907f2df715f10f18ab5941fa59cee0b55cb8 (patch) | |
| tree | 4035429771b21781c29aeab02538bcd65dc567b6 /src | |
| parent | 9eb1642ec828ff23fc46a1849ef37ab0688ff528 (diff) | |
| download | box64-1535907f2df715f10f18ab5941fa59cee0b55cb8.tar.gz box64-1535907f2df715f10f18ab5941fa59cee0b55cb8.zip | |
[LA64_DYNAREC] Fixed AVX VPBLENDW opcodes (#2917)
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_avx_66_0f3a.c | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/src/dynarec/la64/dynarec_la64_avx_66_0f3a.c b/src/dynarec/la64/dynarec_la64_avx_66_0f3a.c index 13a4d75b..41157301 100644 --- a/src/dynarec/la64/dynarec_la64_avx_66_0f3a.c +++ b/src/dynarec/la64/dynarec_la64_avx_66_0f3a.c @@ -320,24 +320,12 @@ uintptr_t dynarec64_AVX_66_0F3A(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t i GETGY_empty_VYEY_xy(v0, v1, v2, 1); u8 = F8; d0 = fpu_get_scratch(dyn); - if (vex.l) { - // 256bits fast path - if (u8 == 0) { - if (v0 != v1) XVOR_V(v0, v1, v1); - break; - } else if (u8 == 0xFF) { - if (v0 != v2) XVOR_V(v0, v2, v2); - break; - } - } else { - // VEX.128 128bits fast path - if ((u8 & 0xf) == 0) { - if (v0 != v1) VOR_V(v0, v1, v1); - break; - } else if ((u8 & 0xf) == 0xF) { - if (v0 != v2) VOR_V(v0, v2, v2); - break; - } + if (u8 == 0) { + if (v0 != v1) VOR_Vxy(v0, v1, v1); + break; + } else if (u8 == 0xFF) { + if (v0 != v2) VOR_Vxy(v0, v2, v2); + break; } tmp64u = 0; for (int i = 0; i < 8; i++) { |