diff options
Diffstat (limited to 'llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp')
-rw-r--r-- | llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp b/llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp index f1f968e7312..3ae713be102 100644 --- a/llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp +++ b/llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp @@ -1523,13 +1523,12 @@ static DecodeStatus DecodeSystemPStateInstruction(llvm::MCInst &Inst, Inst.addOperand(MCOperand::createImm(pstate_field)); Inst.addOperand(MCOperand::createImm(crm)); - bool ValidNamed; - const AArch64Disassembler *Dis = + const AArch64Disassembler *Dis = static_cast<const AArch64Disassembler *>(Decoder); - (void)AArch64PState::PStateMapper().toString(pstate_field, - Dis->getSubtargetInfo().getFeatureBits(), ValidNamed); - - return ValidNamed ? Success : Fail; + auto PState = AArch64PState::lookupPStateByEncoding(pstate_field); + if (PState && PState->haveFeatures(Dis->getSubtargetInfo().getFeatureBits())) + return Success; + return Fail; } static DecodeStatus DecodeTestAndBranch(llvm::MCInst &Inst, uint32_t insn, |