diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-06-11 15:07:10 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-06-11 15:07:10 +0200 |
| commit | b246133b3b46b3257fb1f66ab4b6125089560870 (patch) | |
| tree | b35b9c6e53530453282fc2359b0620f238b5c4bf /src | |
| parent | 5b28d7bc0360ebf14f1e267aeed314071989ec61 (diff) | |
| download | box64-b246133b3b46b3257fb1f66ab4b6125089560870.tar.gz box64-b246133b3b46b3257fb1f66ab4b6125089560870.zip | |
[ARM64_DYNAREC] Added AVX.0F 77 256bits opcode
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_avx_0f.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_avx_0f.c b/src/dynarec/arm64/dynarec_arm64_avx_0f.c index fabdc8a8..cfe57d6f 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_avx_0f.c @@ -535,8 +535,8 @@ uintptr_t dynarec64_AVX_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int break; case 0x77: - INST_NAME("VZEROUPPER"); if(!vex.l) { + INST_NAME("VZEROUPPER"); if(vex.v!=0) { UDF(0); } else { @@ -545,7 +545,16 @@ uintptr_t dynarec64_AVX_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int } } } else { - DEFAULT; + INST_NAME("VZEROALL"); + if(vex.v!=0) { + UDF(0); + } else { + for(int i=0; i<(rex.is32bits?8:16); ++i) { + v0 = sse_get_reg_empty(dyn, ninst, x1, i); + VEORQ(v0, v0, v0); + YMM0(i); + } + } } break; |