diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp | 6 | ||||
| -rw-r--r-- | llvm/test/MC/Mips/micromips-neg-offset.s | 9 |
2 files changed, 10 insertions, 5 deletions
diff --git a/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp b/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp index ac92fdb6f9e..15195564301 100644 --- a/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp +++ b/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp @@ -2278,7 +2278,7 @@ static DecodeStatus DecodeBranchTarget7MM(MCInst &Inst, unsigned Offset, uint64_t Address, const void *Decoder) { - int32_t BranchOffset = SignExtend32<7>(Offset) << 1; + int32_t BranchOffset = SignExtend32<8>(Offset << 1); Inst.addOperand(MCOperand::createImm(BranchOffset)); return MCDisassembler::Success; } @@ -2287,7 +2287,7 @@ static DecodeStatus DecodeBranchTarget10MM(MCInst &Inst, unsigned Offset, uint64_t Address, const void *Decoder) { - int32_t BranchOffset = SignExtend32<10>(Offset) << 1; + int32_t BranchOffset = SignExtend32<11>(Offset << 1); Inst.addOperand(MCOperand::createImm(BranchOffset)); return MCDisassembler::Success; } @@ -2305,7 +2305,7 @@ static DecodeStatus DecodeBranchTarget26MM(MCInst &Inst, unsigned Offset, uint64_t Address, const void *Decoder) { - int32_t BranchOffset = SignExtend32<26>(Offset) << 1; + int32_t BranchOffset = SignExtend32<27>(Offset << 1); Inst.addOperand(MCOperand::createImm(BranchOffset)); return MCDisassembler::Success; diff --git a/llvm/test/MC/Mips/micromips-neg-offset.s b/llvm/test/MC/Mips/micromips-neg-offset.s index 92ea8ad23d4..6a8e5851fec 100644 --- a/llvm/test/MC/Mips/micromips-neg-offset.s +++ b/llvm/test/MC/Mips/micromips-neg-offset.s @@ -1,8 +1,13 @@ # Check decoding beqz instruction with a negative offset -# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux -mattr=micromips %s -o - \ +# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \ +# RUN: -mattr=micromips -mcpu=mips32r6 %s -o - \ # RUN: | llvm-objdump -d -mattr=micromips - | FileCheck %s -# CHECK: 0: 8f 7e beqz16 $6, -4 +# CHECK: 0: 8f 7e beqzc16 $6, -4 +# CHECK: 6: cf fe bc16 -4 +# CHECK: c: b7 ff ff fe balc -4 beqz16 $6, -4 +b16 -4 +balc -4 |

