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)
commit4f69a0f25df15231d78c9ce5de735d7529c8bde0
tree650cbe8c6cd4eae2085b81c38693627dce62d410
parent96efb4a4425ebe24c783da1af6c6ae05d80ae887
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
llvm-svn: 177687
llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
llvm/test/MC/Mips/mips-jump-instructions.s