diff options
Diffstat (limited to 'llvm/test/CodeGen/Hexagon/newvaluejump.ll')
-rw-r--r-- | llvm/test/CodeGen/Hexagon/newvaluejump.ll | 57 |
1 files changed, 30 insertions, 27 deletions
diff --git a/llvm/test/CodeGen/Hexagon/newvaluejump.ll b/llvm/test/CodeGen/Hexagon/newvaluejump.ll index e1437f369c8..0697d297d71 100644 --- a/llvm/test/CodeGen/Hexagon/newvaluejump.ll +++ b/llvm/test/CodeGen/Hexagon/newvaluejump.ll @@ -1,33 +1,36 @@ -; RUN: llc -march=hexagon -mcpu=hexagonv4 < %s | FileCheck %s +; RUN: llc -march=hexagon < %s | FileCheck %s ; Check that we generate new value jump. -@i = global i32 0, align 4 -@j = global i32 10, align 4 - -define i32 @foo(i32 %a) nounwind { -entry: ; CHECK: if (cmp.eq(r{{[0-9]+}}.new,#0)) jump{{.}} - %addr1 = alloca i32, align 4 - %addr2 = alloca i32, align 4 - %0 = load i32, i32* @i, align 4 - store i32 %0, i32* %addr1, align 4 - call void @bar(i32 1, i32 2) - %1 = load i32, i32* @j, align 4 - %tobool = icmp ne i32 %1, 0 - br i1 %tobool, label %if.then, label %if.else - -if.then: - call void @baz(i32 1, i32 2) - br label %if.end - -if.else: - call void @guy(i32 10, i32 20) - br label %if.end - -if.end: + +@g0 = global i32 0, align 4 +@g1 = global i32 10, align 4 + +define i32 @f0(i32 %a0) #0 { +b0: + %v0 = alloca i32, align 4 + %v1 = alloca i32, align 4 + %v2 = load i32, i32* @g0, align 4 + store i32 %v2, i32* %v0, align 4 + call void @f2(i32 1, i32 2) + %v3 = load i32, i32* @g1, align 4 + %v4 = icmp ne i32 %v3, 0 + br i1 %v4, label %b1, label %b2 + +b1: ; preds = %b0 + call void @f3(i32 1, i32 2) + br label %b3 + +b2: ; preds = %b0 + call void @f1(i32 10, i32 20) + br label %b3 + +b3: ; preds = %b2, %b1 ret i32 0 } -declare void @guy(i32, i32) -declare void @bar(i32, i32) -declare void @baz(i32, i32) +declare void @f1(i32, i32) #0 +declare void @f2(i32, i32) #0 +declare void @f3(i32, i32) #0 + +attributes #0 = { nounwind "target-cpu"="hexagonv5" } |