[Lldb-commits] [lldb] [llvm] [AArch64][llvm] Tighten SYSP parsing; don't disassemble invalid encodings (PR #182410)
via lldb-commits
lldb-commits at lists.llvm.org
Tue Apr 28 08:50:33 PDT 2026
================
@@ -2114,16 +2122,42 @@ class MSRpstateImm0_1
}
// SYS and SYSL generic system instructions.
-def SysCRAsmOperand : AsmOperandClass {
- let Name = "SysCR";
+class SysCRAsmOperand<int Low, int High> : AsmOperandClass {
+ let Name = "SysCR" # Low # "_" # High;
+ let RenderMethod = "addSysCROperands";
let ParserMethod = "tryParseSysCROperand";
+ let PredicateMethod = "isSysCRInRange<" # Low # "," # High # ">";
+ let DiagnosticType = "InvalidSysCR" # Low # "_" # High;
}
+def SysCRm0_7AsmOperand : SysCRAsmOperand<0, 7>;
+def SysCRn8_9AsmOperand : SysCRAsmOperand<8, 9>;
+def SysCR0_15AsmOperand : SysCRAsmOperand<0, 15>;
+
def sys_cr_op : Operand<i32>, TImmLeaf<i32, [{
return ((uint32_t)Imm) < 16;
}]> {
let PrintMethod = "printSysCROperand";
- let ParserMatchClass = SysCRAsmOperand;
+ let ParserMatchClass = SysCR0_15AsmOperand;
+ let OperandType = "OPERAND_IMMEDIATE";
+}
+
+def sysp_crn_op : Operand<i32> {
+ let PrintMethod = "printSysCROperand";
+ let ParserMatchClass = SysCRn8_9AsmOperand;
+ let OperandType = "OPERAND_IMMEDIATE";
+}
+
+def sysp_crm_op : Operand<i32> {
+ let PrintMethod = "printSysCROperand";
+ let ParserMatchClass = SysCRm0_7AsmOperand;
+ let OperandType = "OPERAND_IMMEDIATE";
+}
+
+def sysp_op1 : Operand<i64>, ImmLeaf<i64, [{
----------------
CarolineConcatto wrote:
Is this being used?
https://github.com/llvm/llvm-project/pull/182410
More information about the lldb-commits
mailing list