Summary:
Alias 'jic $reg, 0' to 'jrc $reg' and 'jialc $reg, 0' to 'jalrc $reg' like
binutils.

This patch was previous committed as r266055 as seemed to have caused some spurious
test failures. They did not reappear after further local testing.

llvm-svn: 266301
diff --git a/llvm/test/CodeGen/Mips/compactbranches/compact-branches.ll b/llvm/test/CodeGen/Mips/compactbranches/compact-branches.ll
index b489a23..a7e9219 100644
--- a/llvm/test/CodeGen/Mips/compactbranches/compact-branches.ll
+++ b/llvm/test/CodeGen/Mips/compactbranches/compact-branches.ll
@@ -4,9 +4,9 @@
 ; Function Attrs: nounwind
 define void @l()  {
 entry:
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   %call = tail call i32 @k()
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   %call1 = tail call i32 @j()
   %cmp = icmp eq i32 %call, %call1
 ; CHECK: bnec
@@ -15,12 +15,12 @@
 if.then:                                          ; preds = %entry:
 ; STATIC: nop
 ; STATIC: jal
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   tail call void @f(i32 signext -2)
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %entry
-; CHECK: jic $ra, 0
+; CHECK: jrc  $ra
   ret void
 }
 
@@ -33,9 +33,9 @@
 ; Function Attrs: define void @l2()  {
 define void @l2()  {
 entry:
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   %call = tail call i32 @k()
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   %call1 = tail call i32 @i()
   %cmp = icmp eq i32 %call, %call1
 ; CHECK beqc
@@ -44,12 +44,12 @@
 if.then:                                          ; preds = %entry:
 ; STATIC: nop
 ; STATIC: jal
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   tail call void @f(i32 signext -1)
   br label %if.end
 
 if.end:                                           ; preds = %entry, %if.then
-; CHECK: jic $ra, 0
+; CHECK: jrc  $ra
   ret void
 }
 
@@ -58,7 +58,7 @@
 ; Function Attrs: nounwind
 define void @l3()  {
 entry:
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   %call = tail call i32 @k()
   %cmp = icmp slt i32 %call, 0
 ; CHECK : bgez
@@ -67,12 +67,12 @@
 if.then:                                          ; preds = %entry:
 ; STATIC: nop
 ; STATIC: jal
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   tail call void @f(i32 signext 0)
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %entry
-; CHECK: jic $ra, 0
+; CHECK: jrc $ra
   ret void
 }
 
@@ -91,16 +91,16 @@
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %entry
-; CHECK: jic $ra, 0
+; CHECK: jrc $ra
   ret void
 }
 
 ; Function Attrs: nounwind
 define void @l5()  {
 entry:
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   %call = tail call i32 @k()
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   %cmp = icmp sgt i32 %call, 0
 ; CHECK: blezc
   br i1 %cmp, label %if.then, label %if.end
@@ -108,21 +108,21 @@
 if.then:                                          ; preds = %entry:
 ; STATIC: nop
 ; STATIC: jal
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   tail call void @f(i32 signext 2) 
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %entry
-; CHECK: jic $ra, 0
+; CHECK: jrc  $ra
   ret void
 }
 
 ; Function Attrs: nounwind
 define void @l6()  {
 entry:
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   %call = tail call i32 @k()
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   %cmp = icmp sgt i32 %call, -1
 ; CHECK: bltzc
   br i1 %cmp, label %if.then, label %if.end
@@ -130,19 +130,19 @@
 if.then:                                          ; preds = %entry:
 ; STATIC: nop
 ; STATIC: jal
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   tail call void @f(i32 signext 3)
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %entry
-; CHECK: jic $ra, 0
+; CHECK: jrc $ra
   ret void
 }
 
 ; Function Attrs: nounwind
 define void @l7()  {
 entry:
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   %call = tail call i32 @k()
   %cmp = icmp eq i32 %call, 0
 ; CHECK: bnezc
@@ -151,19 +151,19 @@
 if.then:                                          ; preds = %entry:
 ; STATIC: nop
 ; STATIC: jal
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   tail call void @f(i32 signext 4)
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %entry
-; CHECK: jic $ra, 0
+; CHECK: jrc  $ra
   ret void
 }
 
 ; Function Attrs: nounwind
 define void @l8()  {
 entry:
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   %call = tail call i32 @k()
   %cmp = icmp eq i32 %call, 0
 ; CHECK: beqzc
@@ -172,12 +172,12 @@
 if.then:                                          ; preds = %entry:
 ; STATIC: nop
 ; STATIC: jal
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   tail call void @f(i32 signext 5)
   br label %if.end
 
 if.end:                                           ; preds = %entry, %if.then
-; CHECK: jic $ra, 0
+; CHECK: jrc  $ra
   ret void
 }
 
@@ -187,20 +187,20 @@
   store i8* ()* %i, i8* ()** %i.addr, align 4
 ; STATIC32: jal
 ; STATIC32: nop
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   %call = call i32 @k()
-; PIC: jialc $25, 0
+; PIC: jalrc $25
   %cmp = icmp ne i32 %call, 0
 ; CHECK: beqzc
   br i1 %cmp, label %if.then, label %if.end
 
 if.then:                                          ; preds = %entry
   %0 = load i8* ()*, i8* ()** %i.addr, align 4
-; CHECK: jialc $25, 0
+; CHECK: jalrc $25
   %call1 = call i8* %0()
   br label %if.end
 
 if.end:                                           ; preds = %if.then, %entry
-; CHECK: jic $ra, 0
+; CHECK: jrc $ra
   ret i32 -1
 }
diff --git a/llvm/test/CodeGen/Mips/llvm-ir/call.ll b/llvm/test/CodeGen/Mips/llvm-ir/call.ll
index da3ffaf..063b746 100644
--- a/llvm/test/CodeGen/Mips/llvm-ir/call.ll
+++ b/llvm/test/CodeGen/Mips/llvm-ir/call.ll
@@ -26,9 +26,10 @@
 ; N64:           ld $[[TGT:[0-9]+]], %call16(extern_void_void)($gp)
 
 ; NOT-R6C:       jalr $[[TGT]]
-; R6C:           jialc $[[TGT]], 0
+; R6C:           jalrc $[[TGT]]
 
   call void @extern_void_void()
+; R6C:           jrc $ra
   ret i32 0
 }
 
@@ -40,10 +41,11 @@
 ; N64:           ld $[[TGT:[0-9]+]], %call16(extern_i32_void)($gp)
 
 ; NOT-R6C:       jalr $[[TGT]]
-; R6C:           jialc $[[TGT]], 0
+; R6C:           jalrc $[[TGT]]
 
   %1 = call i32 @extern_i32_void()
   %2 = add i32 %1, 1
+; R6C:           jrc $ra
   ret i32 %2
 }
 
@@ -58,11 +60,12 @@
 ; N64:           ld $[[TGT:[0-9]+]], %call16(extern_float_void)($gp)
 
 ; NOT-R6C:       jalr $[[TGT]]
-; R6C:           jialc $[[TGT]], 0
+; R6C:           jalrc $[[TGT]]
 
 
   %1 = call float @extern_float_void()
   %2 = fadd float %1, 1.0
+; R6C:           jrc $ra
   ret float %2
 }
 
@@ -110,10 +113,10 @@
 
 ; ALL:           move $25, $4
 ; NOT-R6C:       jalr $25
-; R6C:           jialc $25, 0
-
+; R6C:           jalrc $25
 
   call void %addr()
+; R6C:           jrc $ra
   ret i32 0
 }
 
@@ -122,11 +125,12 @@
 
 ; ALL:           move $25, $4
 ; NOT-R6C:       jalr $25
-; R6C:           jialc $25, 0
+; R6C:           jalrc $25
 
 
   %1 = call i32 %addr()
   %2 = add i32 %1, 1
+; R6C:           jrc $ra
   ret i32 %2
 }
 
@@ -135,11 +139,12 @@
 
 ; ALL:           move $25, $4
 ; NOT-R6C:       jalr $25
-; R6C:           jialc $25, 0
+; R6C:           jalrc $25
 
 
   %1 = call float %addr()
   %2 = fadd float %1, 1.0
+; R6C:           jrc $ra
   ret float %2
 }
 
@@ -197,10 +202,11 @@
 ; ALL:           addiu $[[TGT:[0-9]+]], $zero, 1234
 ; ALL-NOT:       {{jal }}
 ; NOT-R6C:       jalr $[[TGT]]
-; R6C:           jialc $[[TGT]], 0
+; R6C:           jalrc $[[TGT]]
 ; ALL-NOT:       {{jal }}
 
   call void () inttoptr (i32 1234 to void ()*)()
+; R6C:           jrc $ra
   ret i32 0
 }
 
diff --git a/llvm/test/CodeGen/Mips/llvm-ir/indirectbr.ll b/llvm/test/CodeGen/Mips/llvm-ir/indirectbr.ll
index 4fdce5a..26c02ed 100644
--- a/llvm/test/CodeGen/Mips/llvm-ir/indirectbr.ll
+++ b/llvm/test/CodeGen/Mips/llvm-ir/indirectbr.ll
@@ -15,7 +15,7 @@
 define i32 @br(i8 *%addr) {
 ; ALL-LABEL: br:
 ; NOT-R6:        jr $4 # <MCInst #{{[0-9]+}} JR
-; R6C:           jic $4, 0 # <MCInst #{{[0-9]+}} JIC
+; R6C:           jrc $4 # <MCInst #{{[0-9]+}} JIC
 
 
 ; ALL: $BB0_1: # %L1
diff --git a/llvm/test/CodeGen/Mips/llvm-ir/ret.ll b/llvm/test/CodeGen/Mips/llvm-ir/ret.ll
index de104f9..e2bfd9f 100644
--- a/llvm/test/CodeGen/Mips/llvm-ir/ret.ll
+++ b/llvm/test/CodeGen/Mips/llvm-ir/ret.ll
@@ -31,7 +31,7 @@
 
 ; NOT-R6-DAG:    jr $ra # <MCInst #{{[0-9]+}} JR
 ; R6-DAG:        jr $ra # <MCInst #{{[0-9]+}} JALR
-; R6C-DAG:       jic $ra, 0 # <MCInst #{{[0-9]+}} JIC
+; R6C-DAG:       jrc $ra # <MCInst #{{[0-9]+}} JIC
 
   ret void
 }
@@ -181,7 +181,7 @@
 
 ; NOT-R6-DAG:    jr $ra # <MCInst #{{[0-9]+}} JR
 ; R6-DAG:        jr $ra # <MCInst #{{[0-9]+}} JALR
-; R6C-DAG:       jic $ra, 0 # <MCInst #{{[0-9]+}} JIC
+; R6C-DAG:       jrc $ra # <MCInst #{{[0-9]+}} JIC
 
 ; float constants are written as double constants
   ret float 0x36b8000000000000
@@ -200,7 +200,7 @@
 
 ; NOT-R6-DAG:    jr $ra # <MCInst #{{[0-9]+}} JR
 ; R6-DAG:        jr $ra # <MCInst #{{[0-9]+}} JALR
-; R6C-DAG:       jic $ra, 0 # <MCInst #{{[0-9]+}} JIC
+; R6C-DAG:       jrc $ra # <MCInst #{{[0-9]+}} JIC
 
   ret double 0x0000000000000000
 }
@@ -214,7 +214,7 @@
 
 ; NOT-R6-DAG:    jr $ra # <MCInst #{{[0-9]+}} JR
 ; R6-DAG:        jr $ra # <MCInst #{{[0-9]+}} JALR
-; R6C-DAG:       jic $ra, 0 # <MCInst #{{[0-9]+}} JIC
+; R6C-DAG:       jrc $ra # <MCInst #{{[0-9]+}} JIC
 
   ret double 0x0000000000000003
 }
diff --git a/llvm/test/CodeGen/Mips/mips64-f128.ll b/llvm/test/CodeGen/Mips/mips64-f128.ll
index 66a2f95..81fd3b8 100644
--- a/llvm/test/CodeGen/Mips/mips64-f128.ll
+++ b/llvm/test/CodeGen/Mips/mips64-f128.ll
@@ -548,7 +548,7 @@
 ; ALL:   lw   $4, 0($[[R0]])
 ; ALL:   ld   $25, %call16(__extendsftf2)
 ; PRER6: jalr $25
-; R6:    jialc $25, 0
+; R6:    jalrc $25
 
 define fp128 @load_LD_float() {
 entry:
@@ -562,7 +562,7 @@
 ; ALL:   ld   $4, 0($[[R0]])
 ; ALL:   ld   $25, %call16(__extenddftf2)
 ; PRER6: jalr $25
-; R6:    jialc $25, 0
+; R6:    jalrc $25
 
 define fp128 @load_LD_double() {
 entry:
@@ -592,7 +592,7 @@
 ; ALL:   ld   $5, 8($[[R0]])
 ; ALL:   ld   $25, %call16(__trunctfsf2)
 ; PRER6: jalr $25
-; R6:    jialc $25, 0
+; R6:    jalrc $25
 ; ALL:   ld   $[[R1:[0-9]+]], %got_disp(gf1)
 ; ALL:   sw   $2, 0($[[R1]])
 
@@ -610,7 +610,7 @@
 ; ALL:   ld   $5, 8($[[R0]])
 ; ALL:   ld   $25, %call16(__trunctfdf2)
 ; PRER6: jalr $25
-; R6:    jialc $25, 0
+; R6:    jalrc $25
 ; ALL:   ld   $[[R1:[0-9]+]], %got_disp(gd1)
 ; ALL:   sd   $2, 0($[[R1]])
 
@@ -653,7 +653,7 @@
 ; ALL:           move $[[R3:[0-9]+]], $8
 ; ALL:           ld   $25, %call16(__gttf2)($gp)
 ; PRER6:         jalr $25
-; R6:            jialc $25, 0
+; R6:            jalrc $25
 
 ; C_CC_FMT:      slti $[[CC:[0-9]+]], $2, 1
 ; C_CC_FMT:      movz $[[R1]], $[[R3]], $[[CC]]