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]]