diff options
author | Owen Anderson <resistor@mac.com> | 2011-08-11 18:41:59 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2011-08-11 18:41:59 +0000 |
commit | 3dac0bec7e7874ffb378385b6160bd2117184ca9 (patch) | |
tree | bcf3c9b06159f41b2f52f2b20d688f7b2aec3fb0 /lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp | |
parent | 0fa5e053a914cbbea7c66f13da190d96f8fe2a2c (diff) | |
download | external_llvm-3dac0bec7e7874ffb378385b6160bd2117184ca9.zip external_llvm-3dac0bec7e7874ffb378385b6160bd2117184ca9.tar.gz external_llvm-3dac0bec7e7874ffb378385b6160bd2117184ca9.tar.bz2 |
Correct immediate range for shifter operands. Patch by James Molloy, with additional encoding fixes added by me.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137322 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp')
-rw-r--r-- | lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp b/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp index e047fb8..ee720d7 100644 --- a/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp +++ b/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp @@ -1032,7 +1032,10 @@ getSORegImmOpValue(const MCInst &MI, unsigned OpIdx, // Encode shift_imm bit[11:7]. Binary |= SBits << 4; - return Binary | ARM_AM::getSORegOffset(MO1.getImm()) << 7; + unsigned Offset = ARM_AM::getSORegOffset(MO1.getImm()); + assert(Offset && "Offset must be in range 1-32!"); + if (Offset == 32) Offset = 0; + return Binary | (Offset << 7); } |