aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2011-09-14 19:12:11 +0000
committerJim Grosbach <grosbach@apple.com>2011-09-14 19:12:11 +0000
commitc2d3164ab467bdfa8508b93177e69b99626cd8e2 (patch)
treed924e672636fef3ecd6212760b35c78b663cb0bc /lib
parentd6361c0954247c4b5978b7f3dc5f42bcfa6bafc7 (diff)
downloadexternal_llvm-c2d3164ab467bdfa8508b93177e69b99626cd8e2.zip
external_llvm-c2d3164ab467bdfa8508b93177e69b99626cd8e2.tar.gz
external_llvm-c2d3164ab467bdfa8508b93177e69b99626cd8e2.tar.bz2
Thumb2 assembly parsing for MOV in IT block.
Select the right 16 vs. 32 bit encoding in an IT block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139714 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/ARM/AsmParser/ARMAsmParser.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
index 614150d..dc310a1 100644
--- a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -3806,8 +3806,9 @@ processInstruction(MCInst &Inst,
// request the 32-bit variant, transform it here.
if (isARMLowRegister(Inst.getOperand(0).getReg()) &&
Inst.getOperand(1).getImm() <= 255 &&
- Inst.getOperand(2).getImm() == ARMCC::AL &&
- Inst.getOperand(4).getReg() == ARM::CPSR &&
+ ((!inITBlock() && Inst.getOperand(2).getImm() == ARMCC::AL &&
+ Inst.getOperand(4).getReg() == ARM::CPSR) ||
+ (inITBlock() && Inst.getOperand(4).getReg() == 0)) &&
(!static_cast<ARMOperand*>(Operands[2])->isToken() ||
static_cast<ARMOperand*>(Operands[2])->getToken() != ".w")) {
// The operands aren't in the same order for tMOVi8...