diff options
author | Hans Wennborg <hans@hanshq.net> | 2019-08-12 14:23:13 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2019-08-12 14:23:13 +0000 |
commit | a45f301f7a5d0f62910d0ed93c96d221555697c9 (patch) | |
tree | 41fa455129e4bddd79433bca19e28dc6e27b844e /llvm/test/CodeGen/PowerPC/machine-pre.ll | |
parent | e011a5b4edf828dcaaa4ab5552b71d2bacaaecab (diff) | |
download | bcm5719-llvm-a45f301f7a5d0f62910d0ed93c96d221555697c9.tar.gz bcm5719-llvm-a45f301f7a5d0f62910d0ed93c96d221555697c9.zip |
Revert r368339 "[MBP] Disable aggressive loop rotate in plain mode"
It caused assertions to fire when building Chromium:
lib/CodeGen/LiveDebugValues.cpp:331: bool
{anonymous}::LiveDebugValues::OpenRangesSet::empty() const: Assertion
`Vars.empty() == VarLocs.empty() && "open ranges are inconsistent"' failed.
See https://crbug.com/992871#c3 for how to reproduce.
> Patch https://reviews.llvm.org/D43256 introduced more aggressive loop layout optimization which depends on profile information. If profile information is not available, the statically estimated profile information(generated by BranchProbabilityInfo.cpp) is used. If user program doesn't behave as BranchProbabilityInfo.cpp expected, the layout may be worse.
>
> To be conservative this patch restores the original layout algorithm in plain mode. But user can still try the aggressive layout optimization with -force-precise-rotation-cost=true.
>
> Differential Revision: https://reviews.llvm.org/D65673
llvm-svn: 368579
Diffstat (limited to 'llvm/test/CodeGen/PowerPC/machine-pre.ll')
-rw-r--r-- | llvm/test/CodeGen/PowerPC/machine-pre.ll | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/llvm/test/CodeGen/PowerPC/machine-pre.ll b/llvm/test/CodeGen/PowerPC/machine-pre.ll index 2d7a5619c63..596c0a4624c 100644 --- a/llvm/test/CodeGen/PowerPC/machine-pre.ll +++ b/llvm/test/CodeGen/PowerPC/machine-pre.ll @@ -75,8 +75,19 @@ define dso_local signext i32 @foo(i32 signext %x, i32 signext %y) local_unnamed_ ; CHECK-P9-NEXT: lis r3, 21845 ; CHECK-P9-NEXT: add r28, r30, r29 ; CHECK-P9-NEXT: ori r27, r3, 21846 +; CHECK-P9-NEXT: b .LBB1_4 ; CHECK-P9-NEXT: .p2align 4 -; CHECK-P9-NEXT: .LBB1_1: # %while.cond +; CHECK-P9-NEXT: .LBB1_1: # %sw.bb3 +; CHECK-P9-NEXT: # +; CHECK-P9-NEXT: mulli r3, r30, 23 +; CHECK-P9-NEXT: .LBB1_2: # %sw.epilog +; CHECK-P9-NEXT: # +; CHECK-P9-NEXT: add r28, r3, r28 +; CHECK-P9-NEXT: .LBB1_3: # %sw.epilog +; CHECK-P9-NEXT: # +; CHECK-P9-NEXT: cmpwi r28, 1025 +; CHECK-P9-NEXT: bge cr0, .LBB1_7 +; CHECK-P9-NEXT: .LBB1_4: # %while.cond ; CHECK-P9-NEXT: # ; CHECK-P9-NEXT: extsw r3, r29 ; CHECK-P9-NEXT: bl bar @@ -95,27 +106,16 @@ define dso_local signext i32 @foo(i32 signext %x, i32 signext %y) local_unnamed_ ; CHECK-P9-NEXT: add r4, r4, r5 ; CHECK-P9-NEXT: subf r3, r4, r3 ; CHECK-P9-NEXT: cmplwi r3, 1 -; CHECK-P9-NEXT: beq cr0, .LBB1_4 -; CHECK-P9-NEXT: # %bb.2: # %while.cond +; CHECK-P9-NEXT: beq cr0, .LBB1_1 +; CHECK-P9-NEXT: # %bb.5: # %while.cond ; CHECK-P9-NEXT: # ; CHECK-P9-NEXT: cmplwi r3, 0 -; CHECK-P9-NEXT: bne cr0, .LBB1_6 -; CHECK-P9-NEXT: # %bb.3: # %sw.bb +; CHECK-P9-NEXT: bne cr0, .LBB1_3 +; CHECK-P9-NEXT: # %bb.6: # %sw.bb ; CHECK-P9-NEXT: # ; CHECK-P9-NEXT: mulli r3, r29, 13 -; CHECK-P9-NEXT: b .LBB1_5 -; CHECK-P9-NEXT: .p2align 4 -; CHECK-P9-NEXT: .LBB1_4: # %sw.bb3 -; CHECK-P9-NEXT: # -; CHECK-P9-NEXT: mulli r3, r30, 23 -; CHECK-P9-NEXT: .LBB1_5: # %sw.epilog -; CHECK-P9-NEXT: # -; CHECK-P9-NEXT: add r28, r3, r28 -; CHECK-P9-NEXT: .LBB1_6: # %sw.epilog -; CHECK-P9-NEXT: # -; CHECK-P9-NEXT: cmpwi r28, 1025 -; CHECK-P9-NEXT: blt cr0, .LBB1_1 -; CHECK-P9-NEXT: # %bb.7: # %while.end +; CHECK-P9-NEXT: b .LBB1_2 +; CHECK-P9-NEXT: .LBB1_7: # %while.end ; CHECK-P9-NEXT: lis r3, -13108 ; CHECK-P9-NEXT: ori r3, r3, 52429 ; CHECK-P9-NEXT: mullw r3, r28, r3 |