[mips][mips64r6] b(ge|lt)zal are not available on MIPS32r6/MIPS64r6 and bal is a...
authorDaniel Sanders <daniel.sanders@imgtec.com>
Fri, 13 Jun 2014 13:02:52 +0000 (13:02 +0000)
committerDaniel Sanders <daniel.sanders@imgtec.com>
Fri, 13 Jun 2014 13:02:52 +0000 (13:02 +0000)
commit86cb398b9d09148ef0bde14d6ed2136aa3b3097e
tree4957d3492d81656b0fa168e50206f5a4c7de776f
parente898236bc24171180632d94534a329eb42cf38a2
[mips][mips64r6] b(ge|lt)zal are not available on MIPS32r6/MIPS64r6 and bal is a normal instruction

Summary:
b(ge|lt)zal have been removed in MIPS32r6/MIPS64r6. However, bal (an alias
for 'bgezal $zero, $offset') still remains with the same encoding it had
prior to MIPS32r6/MIPS64r6.

Updated the MipsNaCLELFStreamer, and MipsLongBranch to correctly handle the
MIPS32r6/MIPS64r6 BAL instruction in addition to the existing BAL_BR pseudo.

No changes were required to the CodeGen test that looks for BAL
(test/CodeGen/Mips/longbranch.ll) since the new instruction has the same
syntax.

Depends on D4113

Reviewers: jkolek, zoran.jovanovic, vmedic

Reviewed By: vmedic

Differential Revision: http://reviews.llvm.org/D4114

llvm-svn: 210898
22 files changed:
llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp
llvm/lib/Target/Mips/Mips32r6InstrFormats.td
llvm/lib/Target/Mips/Mips32r6InstrInfo.td
llvm/lib/Target/Mips/MipsInstrInfo.td
llvm/lib/Target/Mips/MipsLongBranch.cpp
llvm/test/MC/Mips/mips1/valid.s
llvm/test/MC/Mips/mips2/valid.s
llvm/test/MC/Mips/mips3/valid.s
llvm/test/MC/Mips/mips32/valid.s
llvm/test/MC/Mips/mips32r2/valid.s
llvm/test/MC/Mips/mips32r6/valid.s
llvm/test/MC/Mips/mips4/valid.s
llvm/test/MC/Mips/mips5/valid.s
llvm/test/MC/Mips/mips64/valid.s
llvm/test/MC/Mips/mips64r2/valid.s
llvm/test/MC/Mips/mips64r6/invalid-mips1.s
llvm/test/MC/Mips/mips64r6/invalid-mips2.s
llvm/test/MC/Mips/mips64r6/invalid-mips3.s
llvm/test/MC/Mips/mips64r6/invalid-mips4.s
llvm/test/MC/Mips/mips64r6/invalid-mips5.s
llvm/test/MC/Mips/mips64r6/invalid-mips64.s
llvm/test/MC/Mips/mips64r6/valid.s