[llvm] r205873 - [ARM64] Use PStateMapper to ensure that MSRcpsr operands are validated during disassembly.

Bradley Smith bradley.smith at arm.com
Wed Apr 9 07:42:57 PDT 2014


Author: brasmi01
Date: Wed Apr  9 09:42:56 2014
New Revision: 205873

URL: http://llvm.org/viewvc/llvm-project?rev=205873&view=rev
Log:
[ARM64] Use PStateMapper to ensure that MSRcpsr operands are validated during disassembly.

Modified:
    llvm/trunk/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp

Modified: llvm/trunk/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp?rev=205873&r1=205872&r2=205873&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp (original)
+++ llvm/trunk/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp Wed Apr  9 09:42:56 2014
@@ -1579,10 +1579,15 @@ static DecodeStatus DecodeSystemCPSRInst
   uint64_t op2 = fieldFromInstruction(insn, 5, 3);
   uint64_t crm = fieldFromInstruction(insn, 8, 4);
 
-  Inst.addOperand(MCOperand::CreateImm((op1 << 3) | op2));
+  uint64_t cpsr_field = (op1 << 3) | op2;
+
+  Inst.addOperand(MCOperand::CreateImm(cpsr_field));
   Inst.addOperand(MCOperand::CreateImm(crm));
 
-  return Success;
+  bool ValidNamed;
+  (void)ARM64PState::PStateMapper().toString(cpsr_field, ValidNamed);
+  
+  return ValidNamed ? Success : Fail;
 }
 
 static DecodeStatus DecodeTestAndBranch(llvm::MCInst &Inst, uint32_t insn,





More information about the llvm-commits mailing list