diff options
author | Alexandros Lamprineas <alexandros.lamprineas@arm.com> | 2015-10-05 13:42:31 +0000 |
---|---|---|
committer | Alexandros Lamprineas <alexandros.lamprineas@arm.com> | 2015-10-05 13:42:31 +0000 |
commit | 1bab191f25ac74f43a7c25c9a04beb029d843af0 (patch) | |
tree | ba79e7be08cf0d15f9ce5e29eba3318b06e5ecfa /llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp | |
parent | fcbea71b4fa4495ed6feb7d23e0a79742685c077 (diff) | |
download | bcm5719-llvm-1bab191f25ac74f43a7c25c9a04beb029d843af0.tar.gz bcm5719-llvm-1bab191f25ac74f43a7c25c9a04beb029d843af0.zip |
[MC layer][AArch64] llvm-mc accepts 4-bit immediate values for
"msr pan, #imm", while only 1-bit immediate values should be valid.
Changed encoding and decoding for msr pstate instructions.
Differential Revision: http://reviews.llvm.org/D13011
llvm-svn: 249313
Diffstat (limited to 'llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp')
-rw-r--r-- | llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp b/llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp index db9fb0e775d..00e0eef266a 100644 --- a/llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp +++ b/llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp @@ -1516,6 +1516,9 @@ static DecodeStatus DecodeSystemPStateInstruction(llvm::MCInst &Inst, uint64_t pstate_field = (op1 << 3) | op2; + if (pstate_field == AArch64PState::PAN && crm > 1) + return Fail; + Inst.addOperand(MCOperand::createImm(pstate_field)); Inst.addOperand(MCOperand::createImm(crm)); |