[PATCH] D64795: [PowerPC] exclude more icmps in LSR which is converted in later hardware loop pass
ChenZheng via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 24 18:21:51 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL366976: [PowerPC] exclude more icmps in LSR which is converted in later hardware loop… (authored by shchenz, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D64795?vs=210078&id=211654#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D64795/new/
https://reviews.llvm.org/D64795
Files:
llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cpp
llvm/trunk/test/CodeGen/PowerPC/ctrloop-le.ll
llvm/trunk/test/CodeGen/PowerPC/ctrloop-lt.ll
Index: llvm/trunk/test/CodeGen/PowerPC/ctrloop-lt.ll
===================================================================
--- llvm/trunk/test/CodeGen/PowerPC/ctrloop-lt.ll
+++ llvm/trunk/test/CodeGen/PowerPC/ctrloop-lt.ll
@@ -2,9 +2,6 @@
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"
target triple = "powerpc64-unknown-linux-gnu"
-; XFAIL: *
-; SE needs improvement
-
; CHECK: test_pos1_ir_slt
; CHECK: bdnz
; a < b
@@ -35,7 +32,6 @@
; CHECK: test_pos2_ir_slt
-; FIXME: Support this loop!
; CHECK: bdnz
; a < b
define void @test_pos2_ir_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
@@ -65,7 +61,6 @@
; CHECK: test_pos4_ir_slt
-; FIXME: Support this loop!
; CHECK: bdnz
; a < b
define void @test_pos4_ir_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
Index: llvm/trunk/test/CodeGen/PowerPC/ctrloop-le.ll
===================================================================
--- llvm/trunk/test/CodeGen/PowerPC/ctrloop-le.ll
+++ llvm/trunk/test/CodeGen/PowerPC/ctrloop-le.ll
@@ -2,9 +2,6 @@
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"
target triple = "powerpc64-unknown-linux-gnu"
-; XFAIL: *
-; SE needs improvement
-
; CHECK: test_pos1_ir_sle
; CHECK: bdnz
; a < b
Index: llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cpp
===================================================================
--- llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+++ llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cpp
@@ -3265,12 +3265,12 @@
// requirements for both N and i at the same time. Limiting this code to
// equality icmps is not a problem because all interesting loops use
// equality icmps, thanks to IndVarSimplify.
- if (ICmpInst *CI = dyn_cast<ICmpInst>(UserInst))
+ if (ICmpInst *CI = dyn_cast<ICmpInst>(UserInst)) {
+ // If CI can be saved in some target, like replaced inside hardware loop
+ // in PowerPC, no need to generate initial formulae for it.
+ if (SaveCmp && CI == dyn_cast<ICmpInst>(ExitBranch->getCondition()))
+ continue;
if (CI->isEquality()) {
- // If CI can be saved in some target, like replaced inside hardware loop
- // in PowerPC, no need to generate initial formulae for it.
- if (SaveCmp && CI == dyn_cast<ICmpInst>(ExitBranch->getCondition()))
- continue;
// Swap the operands if needed to put the OperandValToReplace on the
// left, for consistency.
Value *NV = CI->getOperand(1);
@@ -3298,6 +3298,7 @@
Factors.insert(-(uint64_t)Factors[i]);
Factors.insert(-1);
}
+ }
// Get or create an LSRUse.
std::pair<size_t, int64_t> P = getUse(S, Kind, AccessTy);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D64795.211654.patch
Type: text/x-patch
Size: 2826 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190725/596780f8/attachment.bin>
More information about the llvm-commits
mailing list