aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorJonathan Thackray <jonathan.thackray@arm.com>2025-08-18 14:41:41 +0100
committerGitHub <noreply@github.com>2025-08-18 14:41:41 +0100
commitf38c83c582cb9de04556c32bc6b18ad1aeda74af (patch)
treefc4fdba66ef481466ce22750d7bf8f821f1b1509 /flang/lib/Frontend/CompilerInvocation.cpp
parent31d2db2a68ae6e810f3e5532b521b913b50cc25e (diff)
downloadllvm-f38c83c582cb9de04556c32bc6b18ad1aeda74af.zip
llvm-f38c83c582cb9de04556c32bc6b18ad1aeda74af.tar.gz
llvm-f38c83c582cb9de04556c32bc6b18ad1aeda74af.tar.bz2
[AArch64][llvm] Disassemble instructions in `SYS` alias encoding space more correctly (#153905)
For instructions in the `SYS` alias encoding space which take no register operands, and where the unused 5 register bits are not all set (0x31, 0b11111), then disassemble to a `SYS` alias and not the instruction, since it is not considered valid. This is because it is specified in the Arm ARM in text similar to this (e.g. page C5-1037 of DDI0487L.b for `TLBI ALLE1`, or page C5-1585 for `GCSPOPX`): ``` Rt should be encoded as 0b11111. If the Rt field is not set to 0b11111, it is CONSTRAINED UNPREDICTABLE whether: * The instruction is UNDEFINED. * The instruction behaves as if the Rt field is set to 0b11111. ``` Since we want to follow "should" directives, and not encourage undefined behaviour, only assemble or disassemble instructions considered valid. Add an extra test-case for this, and all existing test-cases are continuing to pass.
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions