mirror of
https://github.com/capstone-engine/capstone
synced 2026-08-11 16:26:07 -04:00
The Xtensa disassembler enabled the ESP32-S3 SIMD/AI (ee.*) and HiFi3 ops for every target because the subtarget feature gates were stubbed to return true (Xtensa_getFeatureBits and hasDensity/hasESP32S3Ops/hasHIFI3). As a result, on a non-ESP32-S3 Xtensa config any instruction with op0=0xE/0xF was matched as a 4-byte ee.* op, so a base-ISA byte stream desynced. Make Xtensa_getFeatureBits map the mode to a feature set (mirroring the SystemZ precedent), thread MI->csh->mode into the three has*Ops gates, and add an opt-in CS_MODE_XTENSA_ESP32S3. Base/esp32/esp32s2/esp8266 no longer emit ESP32-S3 ops; CS_MODE_XTENSA_ESP32S3 preserves them. Concrete instance of issue #1992. The saved auto-sync patch hashes are updated so the fix survives the next LLVM re-sync. Adds tests/MC/Xtensa/esp32s3.s.yaml. Co-authored-by: Denys Melnyk <denys@com2cloud.com> |
||
|---|---|---|
| .. | ||
| AArch64 | ||
| Alpha | ||
| ARC | ||
| ARM | ||
| BPF | ||
| HPPA | ||
| LoongArch | ||
| Mips | ||
| PowerPC | ||
| RISCV | ||
| Sparc | ||
| SystemZ | ||
| TriCore | ||
| X86 | ||
| Xtensa | ||