[llvm] New POC (PR #159201)
Rahul Joshi via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 16 16:01:03 PDT 2025
jurahul wrote:
When we remove all the decoder namesapces for AARch64, we get this conflict:
```
................................
...101..........................
110101..........................
11010101000.....................
11010101000 .....................
11010101000 0111001110000000_____ APAS
11010101000 000000100____01011111 AXFLAG
11010101000 000000100____00011111 CFINV
11010101000 000110011____01011111 CLREX
11010101000 000110011____10111111 DMB
11010101000 000110011____10011111 DSB
11010101000 000110011__1000111111 DSBnXS
11010101000 0101101110111000_____ GCSPUSHM
11010101000 0101101110111010_____ GCSSS1
11010101000 000110010_______11111 HINT
11010101000 000110011____11011111 ISB
11010101000 _____________________ MSR,
11010101000 00___0100_______11111 MSRpstateImm1,
11010101000 00___0100_______11111 MSRpstateImm4,
11010101000 000110100____01111111 MSRpstatesvcrImm1
11010101000 000110011____11111111 SB
11010101000 0000110010110___11111 STSHH
11010101000 01___________________ SYSxt
11010101000 0101101110010111_____ TRCIT
11010101000 0001100010000000_____ WFET
11010101000 0001100010000001_____ WFIT
11010101000 000000100____00111111 XAFLAG
```
The heuristic here is to separate the `MSR` instruction as it has the least assertive known bits and attempt to decode the rest of the set under a OPC_SCope. If any one of them succeeds, we are good, else if it fails and pops the scope (which can happen if a checkfield or checkpredicate fail or one of these does not have a complete decoder and its Decode fails) and then attempt each of the N insts with all unfiltered unknown bits 1 by 1.
https://github.com/llvm/llvm-project/pull/159201
More information about the llvm-commits
mailing list