summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/PowerPC
diff options
context:
space:
mode:
authorKyle Butt <kyle+llvm@iteratee.net>2017-01-11 19:55:19 +0000
committerKyle Butt <kyle+llvm@iteratee.net>2017-01-11 19:55:19 +0000
commitefe56fed125ead532877ae87add255e0aa14db37 (patch)
treec625d4b0981bfa75c68e4999ecbb0c48ac7609f5 /llvm/test/CodeGen/PowerPC
parentde782d16160dd7c0324c0759e29e5ca0a7460387 (diff)
downloadbcm5719-llvm-efe56fed125ead532877ae87add255e0aa14db37.tar.gz
bcm5719-llvm-efe56fed125ead532877ae87add255e0aa14db37.zip
Revert "CodeGen: Allow small copyable blocks to "break" the CFG."
This reverts commit ada6595a526d71df04988eb0a4b4fe84df398ded. This needs a simple probability check because there are some cases where it is not profitable. llvm-svn: 291695
Diffstat (limited to 'llvm/test/CodeGen/PowerPC')
-rw-r--r--llvm/test/CodeGen/PowerPC/misched-inorder-latency.ll4
-rw-r--r--llvm/test/CodeGen/PowerPC/tail-dup-break-cfg.ll59
-rw-r--r--llvm/test/CodeGen/PowerPC/tail-dup-layout.ll54
3 files changed, 3 insertions, 114 deletions
diff --git a/llvm/test/CodeGen/PowerPC/misched-inorder-latency.ll b/llvm/test/CodeGen/PowerPC/misched-inorder-latency.ll
index 26663d81f35..ded3111da97 100644
--- a/llvm/test/CodeGen/PowerPC/misched-inorder-latency.ll
+++ b/llvm/test/CodeGen/PowerPC/misched-inorder-latency.ll
@@ -17,7 +17,7 @@ entry:
%sum1 = add i32 %sumin, 1
%val1 = load i32, i32* %ptr
%p = icmp eq i32 %sumin, 0
- br i1 %p, label %true, label %end, !prof !1
+ br i1 %p, label %true, label %end
true:
%sum2 = add i32 %sum1, 1
%ptr2 = getelementptr i32, i32* %ptr, i32 1
@@ -53,5 +53,3 @@ end:
ret i32 %valmerge
}
declare void @llvm.prefetch(i8*, i32, i32, i32) nounwind
-
-!1 = !{!"branch_weights", i32 2, i32 1}
diff --git a/llvm/test/CodeGen/PowerPC/tail-dup-break-cfg.ll b/llvm/test/CodeGen/PowerPC/tail-dup-break-cfg.ll
deleted file mode 100644
index 0c95388934c..00000000000
--- a/llvm/test/CodeGen/PowerPC/tail-dup-break-cfg.ll
+++ /dev/null
@@ -1,59 +0,0 @@
-; RUN: llc -O2 -o - %s | FileCheck %s
-target datalayout = "e-m:e-i64:64-n32:64"
-target triple = "powerpc64le-grtev4-linux-gnu"
-
-; Intended layout:
-; The code for tail-duplication during layout will produce the layout:
-; test1
-; test2
-; body1 (with copy of test2)
-; body2
-; exit
-
-;CHECK-LABEL: tail_dup_break_cfg:
-;CHECK: mr [[TAGREG:[0-9]+]], 3
-;CHECK: andi. {{[0-9]+}}, [[TAGREG]], 1
-;CHECK-NEXT: bc 12, 1, [[BODY1LABEL:[._0-9A-Za-z]+]]
-;CHECK-NEXT: [[TEST2LABEL:[._0-9A-Za-z]+]]: # %test2
-;CHECK-NEXT: rlwinm. {{[0-9]+}}, [[TAGREG]], 0, 30, 30
-;CHECK-NEXT: bne 0, [[BODY2LABEL:[._0-9A-Za-z]+]]
-;CHECK-NEXT: b [[EXITLABEL:[._0-9A-Za-z]+]]
-;CHECK-NEXT: [[BODY1LABEL]]
-;CHECK: rlwinm. {{[0-9]+}}, [[TAGREG]], 0, 30, 30
-;CHECK-NEXT: beq 0, [[EXITLABEL]]
-;CHECK-NEXT: [[BODY2LABEL]]
-;CHECK: [[EXITLABEL:[._0-9A-Za-z]+]]: # %exit
-;CHECK: blr
-define void @tail_dup_break_cfg(i32 %tag) {
-entry:
- br label %test1
-test1:
- %tagbit1 = and i32 %tag, 1
- %tagbit1eq0 = icmp eq i32 %tagbit1, 0
- br i1 %tagbit1eq0, label %test2, label %body1, !prof !1 ; %test2 more likely
-body1:
- call void @a()
- call void @a()
- call void @a()
- call void @a()
- br label %test2
-test2:
- %tagbit2 = and i32 %tag, 2
- %tagbit2eq0 = icmp eq i32 %tagbit2, 0
- br i1 %tagbit2eq0, label %exit, label %body2
-body2:
- call void @b()
- call void @b()
- call void @b()
- call void @b()
- br label %exit
-exit:
- ret void
-}
-
-declare void @a()
-declare void @b()
-declare void @c()
-declare void @d()
-
-!1 = !{!"branch_weights", i32 2, i32 1}
diff --git a/llvm/test/CodeGen/PowerPC/tail-dup-layout.ll b/llvm/test/CodeGen/PowerPC/tail-dup-layout.ll
index d6e339e1a97..6790aa8e944 100644
--- a/llvm/test/CodeGen/PowerPC/tail-dup-layout.ll
+++ b/llvm/test/CodeGen/PowerPC/tail-dup-layout.ll
@@ -19,7 +19,7 @@ target triple = "powerpc64le-grtev4-linux-gnu"
; The CHECK statements check for the whole string of tests and exit block,
; and then check that the correct test has been duplicated into the end of
; the optional blocks and that the optional blocks are in the correct order.
-;CHECK-LABEL: straight_test:
+;CHECK-LABEL: f:
; test1 may have been merged with entry
;CHECK: mr [[TAGREG:[0-9]+]], 3
;CHECK: andi. {{[0-9]+}}, [[TAGREG]], 1
@@ -47,7 +47,7 @@ target triple = "powerpc64le-grtev4-linux-gnu"
;CHECK-NEXT: [[OPT4LABEL]]
;CHECK: b [[EXITLABEL]]
-define void @straight_test(i32 %tag) {
+define void @f(i32 %tag) {
entry:
br label %test1
test1:
@@ -94,57 +94,7 @@ exit:
ret void
}
-; The block then2 is not unavoidable, but since it can be tail-duplicated, it
-; should be placed as a fallthrough from test2 and copied.
-; CHECK-LABEL: avoidable_test:
-; CHECK: # %entry
-; CHECK: andi.
-; CHECK: # %test2
-; Make sure then2 falls through from test2
-; CHECK-NOT: # %{{[-_a-zA-Z0-9]+}}
-; CHECK: # %then2
-; CHECK: rlwinm. {{[0-9]+}}, {{[0-9]+}}, 0, 29, 29
-; CHECK-NOT: # %{{[-_a-zA-Z0-9]+}}
-; CHECK: # %end2
-; CHECK: # %else1
-; CHECK: bl a
-; CHECK: bl a
-; Make sure then2 was copied into else1
-; CHECK: rlwinm. {{[0-9]+}}, {{[0-9]+}}, 0, 29, 29
-; CHECK: # %else2
-; CHECK: bl c
-define void @avoidable_test(i32 %tag) {
-entry:
- br label %test1
-test1:
- %tagbit1 = and i32 %tag, 1
- %tagbit1eq0 = icmp eq i32 %tagbit1, 0
- br i1 %tagbit1eq0, label %test2, label %else1, !prof !1 ; %test2 more likely
-else1:
- call void @a()
- call void @a()
- br label %then2
-test2:
- %tagbit2 = and i32 %tag, 2
- %tagbit2eq0 = icmp eq i32 %tagbit2, 0
- br i1 %tagbit2eq0, label %then2, label %else2, !prof !1 ; %then2 more likely
-then2:
- %tagbit3 = and i32 %tag, 4
- %tagbit3eq0 = icmp eq i32 %tagbit3, 0
- br i1 %tagbit3eq0, label %end2, label %end1, !prof !1 ; %end2 more likely
-else2:
- call void @c()
- br label %end2
-end2:
- ret void
-end1:
- call void @d()
- ret void
-}
-
declare void @a()
declare void @b()
declare void @c()
declare void @d()
-
-!1 = !{!"branch_weights", i32 2, i32 1}
OpenPOWER on IntegriCloud