[llvm] [DecoderEmitter] Support for DecodeOrder and `resolve-conflicts-try-all` (PR #157948)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 10 22:46:27 PDT 2025


topperc wrote:

> I guess the process is similar to how we add decoder namespaces today, just expressed differently so that we end up with a single decoder table. For "hard" conflicts, we will get an error message unless we have the resolve-conflicts-try-all enabled. For "soft" conflicts, we today do not get any error message today and I guess folks need to debug (so no changes there).

>From the CM_JALT/CM_JT example, it seems like we can get more "soft" failures with this change?

As an experiment I removed the ZcOverlap namespace in my local repo and I got

```
Decoding Conflict:
    ................
    101.............
    101...........10
    101000________10  CM_JALT
    101000000_____10  CM_JT
    101011___11___10  CM_MVA01S
    101011___01___10  CM_MVSA01
    10111010______10  CM_POP
    10111110______10  CM_POPRET
    10111100______10  CM_POPRETZ
    10111000______10  CM_PUSH
    101___________10  C_FSDSP
```

If I move CM_MVA01S/CM_MVSA01 back to to ZcOverlap. Everything else worked and passed the tests.

The encoding for C_FSDSP is documented as being reused by the other instructions. Predicate checks enforce that they are mutually exclusive.

https://github.com/llvm/llvm-project/pull/157948


More information about the llvm-commits mailing list