Change mips16 delay slot jumps to non delay slot forms by default.
authorReed Kotler <rkotler@mips.com>
Tue, 30 Oct 2012 00:54:49 +0000 (00:54 +0000)
committerReed Kotler <rkotler@mips.com>
Tue, 30 Oct 2012 00:54:49 +0000 (00:54 +0000)
We will make them delay slot forms if there is something that can be
placed in the delay slot during a separate pass. Mips16 extended instructions
cannot be placed in delay slots.

llvm-svn: 166990

llvm/lib/Target/Mips/Mips16InstrInfo.cpp
llvm/lib/Target/Mips/Mips16InstrInfo.td
llvm/test/CodeGen/Mips/helloworld.ll
llvm/test/CodeGen/Mips/null.ll

index 5e33fed..fa0876a 100644 (file)
@@ -126,7 +126,7 @@ bool Mips16InstrInfo::expandPostRAPseudo(MachineBasicBlock::iterator MI) const {
   default:
     return false;
   case Mips::RetRA16:
-    ExpandRetRA16(MBB, MI, Mips::JrRa16);
+    ExpandRetRA16(MBB, MI, Mips::JrcRa16);
     break;
   }
 
index 2740a1d..5f8af05 100644 (file)
@@ -515,6 +515,13 @@ def JrRa16: FRR16_JALRC_RA_only_ins<0, 0, "jr", IIAlu> {
   let isBarrier=1;
 }
 
+def JrcRa16: FRR16_JALRC_RA_only_ins<0, 0, "jrc", IIAlu> {
+  let isBranch = 1;
+  let isIndirectBranch = 1;
+  let isTerminator=1;
+  let isBarrier=1;
+}
+
 def JrcRx16: FRR16_JALRC_ins<1, 1, 0, "jrc", IIAlu> {
   let isBranch = 1;
   let isIndirectBranch = 1;
@@ -1011,10 +1018,10 @@ def: Mips16Pat<
 
 
 // Jump and Link (Call)
-let isCall=1, hasDelaySlot=1 in
+let isCall=1, hasDelaySlot=0 in
 def JumpLinkReg16:
   FRR16_JALRC<0, 0, 0, (outs), (ins CPU16Regs:$rs),
-              "jalr \t$rs", [(MipsJmpLink CPU16Regs:$rs)], IIBranch>;
+              "jalrc \t$rs", [(MipsJmpLink CPU16Regs:$rs)], IIBranch>;
 
 // Mips16 pseudos
 let isReturn=1, isTerminator=1, hasDelaySlot=1, isBarrier=1, hasCtrlDep=1,
index bee93ac..aee58b6 100644 (file)
@@ -24,10 +24,10 @@ entry:
 ; C1:  addiu   ${{[0-9]+}}, %lo($.str)
 ; C2:  move    $25, ${{[0-9]+}}
 ; C1:  move    $gp, ${{[0-9]+}}
-; C1:  jalr    ${{[0-9]+}}
+; C1:  jalrc   ${{[0-9]+}}
 ; SR:  restore         $ra, [[FS]]
 ; PE:  li      $2, 0
-; PE:  jr      $ra
+; PE:  jrc     $ra
 
 }
 
index 7beae99..00c66a9 100644 (file)
@@ -8,6 +8,6 @@ entry:
 ; 16:  .set    mips16                  # @main
 
 
-; 16:  jr      $ra
+; 16:  jrc     $ra
 
 }