Fix the invalid opcode for Mips branch instructions in the assembler
authorJack Carter <jack.carter@imgtec.com>
Fri, 22 Mar 2013 00:29:10 +0000 (00:29 +0000)
committerJack Carter <jack.carter@imgtec.com>
Fri, 22 Mar 2013 00:29:10 +0000 (00:29 +0000)
commitd3107fbc54a5b5156f0aabc8788724f1469eb9df
tree33d629334f36d0d98f940190667609cc02388809
parent25df6a93f3324bd30f44dcb95fd17aff0a92d438
Fix the invalid opcode for Mips branch instructions in the assembler

For mips a branch an 18-bit signed offset (the 16-bit
offset field shifted left 2 bits) is added to the
address of the instruction following the branch
(not the branch itself), in the branch delay slot,
to form a PC-relative effective target address.

Previously, the code generator did not perform the
shift of the immediate branch offset which resulted
in wrong instruction opcode. This patch fixes the issue.

Contributor: Vladimir Medic

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177687 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
test/MC/Mips/mips-jump-instructions.s