- Notifications
You must be signed in to change notification settings - Fork 15.3k
[AArch64] Remove post-decoding instruction mutations #156364
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[AArch64] Remove post-decoding instruction mutations #156364
Conversation
| ✅ With the latest revision this PR passed the C/C++ code formatter. |
769d57a to ed29165 Compare 5cc7d7a to 261f86f Compare a112090 to c66fd0b Compare 261f86f to d72f713 Compare b60b806 to ec3ee1e Compare 772f655 to 7112890 Compare ec3ee1e to 098f887 Compare 7112890 to ed950c3 Compare 098f887 to 46fc93b Compare ed950c3 to f3b4f27 Compare ee67c36 to 9709854 Compare f3b4f27 to 6830ba2 Compare 9709854 to aa97c88 Compare 6830ba2 to b95e187 Compare aa97c88 to f31a7b8 Compare b95e187 to 9758552 Compare 607d600 to 054fefc Compare | gentle ping |
davemgreen left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not the biggest expert here, and bits<0> seems a little unusual, but as far as I can tell this LGTM. Thanks
It kind of makes sense if you look at related instructions, e.g.: |
These instructions can now be fully decoded automatically.
5e59a9a to cbbc47b Compare This was updated in #156364 but `-ignore-non-decodable-operands` was removed from the wrong tablegen arg list (arm vs aarch64)
| LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/18/builds/21322 Here is the relevant piece of the build log for the reference |
| LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/168/builds/16243 Here is the relevant piece of the build log for the reference |
| LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/72/builds/15142 Here is the relevant piece of the build log for the reference |

Add
bits<0>fields to instructions using the ZTR/MPR/MPR8 register classes.These register classes contain only one register, and it is not encoded in the instruction.
This way, the generated decoder can completely decode instructions without having to perform a post-decoding pass to insert missing operands.
Some immediate operands are also not encoded and have only one possible value "zero". Use this trick for them, too.
Finally, remove
-ignore-non-decodable-operandsoption fromllvm-tblgeninvocation to ensure that non-decodable operands do not appear in the future.