diff options
| author | Zoran Jovanovic <zoran.jovanovic@imgtec.com> | 2014-10-10 13:31:18 +0000 |
|---|---|---|
| committer | Zoran Jovanovic <zoran.jovanovic@imgtec.com> | 2014-10-10 13:31:18 +0000 |
| commit | b39a174f111420df7711f9fb9ace5f250122d1a2 (patch) | |
| tree | 7b2fdd4d275933310156d1d5f2b2c6b34dc1fe7d /llvm/lib | |
| parent | 6097bad3f837307b26d0543b4e2c3af64e2fd4ae (diff) | |
| download | bcm5719-llvm-b39a174f111420df7711f9fb9ace5f250122d1a2.tar.gz bcm5719-llvm-b39a174f111420df7711f9fb9ace5f250122d1a2.zip | |
ps][microMIPS] Implement JRC instruction
Differential Revision: http://reviews.llvm.org/D5045
llvm-svn: 219494
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/Mips/MicroMipsInstrInfo.td | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MicroMipsInstrInfo.td b/llvm/lib/Target/Mips/MicroMipsInstrInfo.td index 1ff67546be8..86b4b0f279e 100644 --- a/llvm/lib/Target/Mips/MicroMipsInstrInfo.td +++ b/llvm/lib/Target/Mips/MicroMipsInstrInfo.td @@ -128,6 +128,16 @@ class JumpLinkRegSMM16<string opstr, RegisterOperand RO> : let Defs = [RA]; } +// 16-bit Jump Register Compact - No delay slot +class JumpRegCMM16<string opstr, RegisterOperand RO> : + MicroMipsInst16<(outs), (ins RO:$rs), !strconcat(opstr, "\t$rs"), + [], IIBranch, FrmR> { + let isTerminator = 1; + let isBarrier = 1; + let isBranch = 1; + let isIndirectBranch = 1; +} + // MicroMIPS Jump and Link (Call) - Short Delay Slot let isCall = 1, hasDelaySlot = 1, Defs = [RA] in { class JumpLinkMM<string opstr, DAGOperand opnd> : @@ -151,6 +161,7 @@ def MFLO16_MM : MoveFromHILOMM<"mflo", GPR32Opnd, AC0>, MFHILO_FM_MM16<0x12>; def MOVE16_MM : MoveMM16<"move", GPR32Opnd>, MOVE_FM_MM16<0x03>; def JALR16_MM : JumpLinkRegMM16<"jalr", GPR32Opnd>, JALR_FM_MM16<0x0e>; def JALRS16_MM : JumpLinkRegSMM16<"jalrs16", GPR32Opnd>, JALR_FM_MM16<0x0f>; +def JRC16_MM : JumpRegCMM16<"jrc", GPR32Opnd>, JALR_FM_MM16<0x0d>; def JRADDIUSP : JumpRAddiuStackMM16, JRADDIUSP_FM_MM16<0x18>; class WaitMM<string opstr> : |

