209 lines · plain
1; RUN: llc -mtriple=mipsel -mcpu=mips32r6 -relocation-model=static \2; RUN: -disable-mips-delay-filler < %s | FileCheck %s -check-prefix=STATIC323; RUN: llc -mtriple=mipsel -mcpu=mips64r6 -relocation-model=pic -target-abi n64 \4; RUN: -disable-mips-delay-filler < %s | FileCheck %s -check-prefix=PIC5 6; Function Attrs: nounwind7define void @l() {8entry:9; PIC: jalrc $2510 %call = tail call i32 @k()11; PIC: jalrc $2512 %call1 = tail call i32 @j()13 %cmp = icmp eq i32 %call, %call114; CHECK: bnec15 br i1 %cmp, label %if.then, label %if.end16 17if.then: ; preds = %entry:18; STATIC: nop19; STATIC: jal20; PIC: jalrc $2521 tail call void @f(i32 signext -2)22 br label %if.end23 24if.end: ; preds = %if.then, %entry25; CHECK: jrc $ra26 ret void27}28 29declare i32 @k()30 31declare i32 @j()32 33declare void @f(i32 signext) 34 35; Function Attrs: define void @l2() {36define void @l2() {37entry:38; PIC: jalrc $2539 %call = tail call i32 @k()40; PIC: jalrc $2541 %call1 = tail call i32 @i()42 %cmp = icmp eq i32 %call, %call143; CHECK: beqc44 br i1 %cmp, label %if.end, label %if.then45 46if.then: ; preds = %entry:47; STATIC: nop48; STATIC: jal49; PIC: jalrc $2550 tail call void @f(i32 signext -1)51 br label %if.end52 53if.end: ; preds = %entry, %if.then54; CHECK: jrc $ra55 ret void56}57 58declare i32 @i()59 60; Function Attrs: nounwind61define void @l3() {62entry:63; PIC: jalrc $2564 %call = tail call i32 @k()65 %cmp = icmp slt i32 %call, 066; CHECK: bgez67 br i1 %cmp, label %if.then, label %if.end68 69if.then: ; preds = %entry:70; STATIC: nop71; STATIC: jal72; PIC: jalrc $2573 tail call void @f(i32 signext 0)74 br label %if.end75 76if.end: ; preds = %if.then, %entry77; CHECK: jrc $ra78 ret void79}80 81; Function Attrs: nounwind82define void @l4() {83entry:84 %call = tail call i32 @k()85 %cmp = icmp slt i32 %call, 186; CHECK: bgtzc87 br i1 %cmp, label %if.then, label %if.end88 89if.then: ; preds = %entry:90; STATIC: nop91; STATIC: jal92 tail call void @f(i32 signext 1)93 br label %if.end94 95if.end: ; preds = %if.then, %entry96; CHECK: jrc $ra97 ret void98}99 100; Function Attrs: nounwind101define void @l5() {102entry:103; PIC: jalrc $25104 %call = tail call i32 @k()105; PIC: jalrc $25106 %cmp = icmp sgt i32 %call, 0107; CHECK: blezc108 br i1 %cmp, label %if.then, label %if.end109 110if.then: ; preds = %entry:111; STATIC: nop112; STATIC: jal113; PIC: jalrc $25114 tail call void @f(i32 signext 2) 115 br label %if.end116 117if.end: ; preds = %if.then, %entry118; CHECK: jrc $ra119 ret void120}121 122; Function Attrs: nounwind123define void @l6() {124entry:125; PIC: jalrc $25126 %call = tail call i32 @k()127; PIC: jalrc $25128 %cmp = icmp sgt i32 %call, -1129; CHECK: bltzc130 br i1 %cmp, label %if.then, label %if.end131 132if.then: ; preds = %entry:133; STATIC: nop134; STATIC: jal135; PIC: jalrc $25136 tail call void @f(i32 signext 3)137 br label %if.end138 139if.end: ; preds = %if.then, %entry140; CHECK: jrc $ra141 ret void142}143 144; Function Attrs: nounwind145define void @l7() {146entry:147; PIC: jalrc $25148 %call = tail call i32 @k()149 %cmp = icmp eq i32 %call, 0150; CHECK: bnezc151 br i1 %cmp, label %if.then, label %if.end152 153if.then: ; preds = %entry:154; STATIC: nop155; STATIC: jal156; PIC: jalrc $25157 tail call void @f(i32 signext 4)158 br label %if.end159 160if.end: ; preds = %if.then, %entry161; CHECK: jrc $ra162 ret void163}164 165; Function Attrs: nounwind166define void @l8() {167entry:168; PIC: jalrc $25169 %call = tail call i32 @k()170 %cmp = icmp eq i32 %call, 0171; CHECK: beqzc172 br i1 %cmp, label %if.end, label %if.then173 174if.then: ; preds = %entry:175; STATIC: nop176; STATIC: jal177; PIC: jalrc $25178 tail call void @f(i32 signext 5)179 br label %if.end180 181if.end: ; preds = %entry, %if.then182; CHECK: jrc $ra183 ret void184}185 186define i32 @l9(ptr %i) #0 {187entry:188 %i.addr = alloca ptr, align 4189 store ptr %i, ptr %i.addr, align 4190; STATIC32: jal191; STATIC32: nop192; PIC: jalrc $25193 %call = call i32 @k()194; PIC: jalrc $25195 %cmp = icmp ne i32 %call, 0196; CHECK: beqzc197 br i1 %cmp, label %if.then, label %if.end198 199if.then: ; preds = %entry200 %0 = load ptr, ptr %i.addr, align 4201; CHECK: jalrc $25202 %call1 = call ptr %0()203 br label %if.end204 205if.end: ; preds = %if.then, %entry206; CHECK: jrc $ra207 ret i32 -1208}209