Mercurial > hg > CbC > CbC_llvm
diff test/CodeGen/Hexagon/avoid-predspill-calleesaved.ll @ 120:1172e4bd9c6f
update 4.0.0
author | mir3636 |
---|---|
date | Fri, 25 Nov 2016 19:14:25 +0900 |
parents | |
children | 803732b1fca8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/CodeGen/Hexagon/avoid-predspill-calleesaved.ll Fri Nov 25 19:14:25 2016 +0900 @@ -0,0 +1,49 @@ +; Check that a callee-saved register will be saved correctly if +; the predicate-to-GPR spilling code uses it. +; +; RUN: llc -march=hexagon < %s | FileCheck %s +; +; We expect to spill p0 into a general-purpose register and keep it there, +; without adding an extra spill of that register. +; +; CHECK: PredSpill: +; CHECK: memd(r29{{.*}}) = r17:16 +; CHECK-DAG: r{{[0-9]+}} = p0 +; CHECK-DAG: p0 = r{{[0-9]+}} +; CHECK-NOT: = memw(r29 +; + +define void @PredSpill() { +entry: + br i1 undef, label %if.then, label %if.else.14 + +if.then: ; preds = %entry + br i1 undef, label %if.end.57, label %if.else + +if.else: ; preds = %if.then + unreachable + +if.else.14: ; preds = %entry + br i1 undef, label %if.then.17, label %if.end.57 + +if.then.17: ; preds = %if.else.14 + br i1 undef, label %if.end.57, label %if.then.20 + +if.then.20: ; preds = %if.then.17 + %call21 = tail call i32 @myfun() + %tobool22 = icmp eq i32 %call21, 0 + %0 = tail call i32 @myfun() + br i1 %tobool22, label %if.else.42, label %if.then.23 + +if.then.23: ; preds = %if.then.20 + unreachable + +if.else.42: ; preds = %if.then.20 + ret void + +if.end.57: ; preds = %if.then.17, %if.else.14, %if.then + ret void +} + +declare i32 @myfun() +