summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp
diff options
context:
space:
mode:
authorAlexandros Lamprineas <alexandros.lamprineas@arm.com>2015-10-05 13:42:31 +0000
committerAlexandros Lamprineas <alexandros.lamprineas@arm.com>2015-10-05 13:42:31 +0000
commit1bab191f25ac74f43a7c25c9a04beb029d843af0 (patch)
treeba79e7be08cf0d15f9ce5e29eba3318b06e5ecfa /llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp
parentfcbea71b4fa4495ed6feb7d23e0a79742685c077 (diff)
downloadbcm5719-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.cpp3
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));
OpenPOWER on IntegriCloud