brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · e48c291 Raw
106 lines · plain
1; RUN: llc -mtriple=mipsel -disable-mips-delay-filler -relocation-model=pic < %s | \2; RUN:  FileCheck %s -check-prefix=O323; RUN: llc -mtriple=mipsel -mips-load-target-from-got=false \4; RUN:  -disable-mips-delay-filler -relocation-model=pic < %s | FileCheck %s -check-prefix=O32-LOADTGT5 6@gd1 = common global double 0.000000e+00, align 87@gd2 = common global double 0.000000e+00, align 88 9; O32-LABEL: caller3:10; O32-DAG:   lw $25, %call16(callee3)11; O32-DAG:   move $gp12; O32:       jalr $2513; O32-NOT:   move $gp14; O32:       lw $25, %call16(callee3)15; O32-NOT:   move $gp16; O32:       jalr $2517; O32-NOT:   move $gp18; O32:       lw $25, %call16(callee3)19; O32-NOT:   move $gp20; O32:       jalr $2521 22; O32-LOADTGT-LABEL: caller3:23; O32-LOADTGT-DAG:   lw $25, %call16(callee3)24; O32-LOADTGT-DAG:   move $gp25; O32-LOADTGT:       jalr $2526; O32-LOADTGT-NOT:   move $gp27; O32-LOADTGT:       move $2528; O32-LOADTGT-NOT:   move $gp29; O32-LOADTGT:       jalr $2530; O32-LOADTGT-NOT:   move $gp31; O32-LOADTGT:       move $2532; O32-LOADTGT-NOT:   move $gp33; O32-LOADTGT:       jalr $2534 35define void @caller3(i32 %n) {36entry:37  tail call void @callee3()38  tail call void @callee3()39  %tobool1 = icmp eq i32 %n, 040  br i1 %tobool1, label %while.end, label %while.body41 42while.body:43  %n.addr.02 = phi i32 [ %dec, %while.body ], [ %n, %entry ]44  %dec = add nsw i32 %n.addr.02, -145  tail call void @callee3()46  %tobool = icmp eq i32 %dec, 047  br i1 %tobool, label %while.end, label %while.body48 49while.end:50  ret void51}52 53declare void @callee3()54 55; O32-LABEL: caller4:56; O32-DAG:   lw $25, %call16(ceil)57; O32-DAG:   move $gp58; O32:       jalr $2559; O32-NOT:   move $gp60; O32:       lw $25, %call16(ceil)61; O32-NOT:   move $gp62; O32:       jalr $2563; O32-NOT:   move $gp64; O32:       lw $25, %call16(ceil)65; O32-NOT:   move $gp66; O32:       jalr $2567 68; O32-LOADTGT-LABEL: caller4:69; O32-LOADTGT-DAG:   lw $25, %call16(ceil)70; O32-LOADTGT-DAG:   move $gp71; O32-LOADTGT:       jalr $2572; O32-LOADTGT-NOT:   move $gp73; O32-LOADTGT:       move $2574; O32-LOADTGT-NOT:   move $gp75; O32-LOADTGT:       jalr $2576; O32-LOADTGT-NOT:   move $gp77; O32-LOADTGT:       move $2578; O32-LOADTGT-NOT:   move $gp79; O32-LOADTGT:       jalr $2580 81define void @caller4(double %d) {82entry:83  %call = tail call double @ceil(double %d)84  %call1 = tail call double @ceil(double %call)85  store double %call1, ptr @gd2, align 886  %call2 = tail call double @ceil(double %call1)87  store double %call2, ptr @gd1, align 888  ret void89}90 91declare double @ceil(double)92 93; Make sure that the MipsOptimizePICCall pass is run even for optnone functions,94; as we have to make sure that jalr uses $t9 for PIC code in order to adhere to95; the MIPS o32 ABI.96define hidden double @foo(double %dbl) #0 {97entry:98  ; O32:      jalr $2599  %res = call double @sqrt(double %dbl)100  ret double %res101}102 103declare double @sqrt(double)104 105attributes #0 = { noinline optnone }106