[PATCH] D44398: [InstCombine] Replace calls to getNumUses with hasNUses or hasNUsesOrMore
Phabricator via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 12 11:50:38 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL327315: [InstCombine] Replace calls to getNumUses with hasNUses or hasNUsesOrMore (authored by ctopper, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D44398?vs=138062&id=138067#toc
Repository:
rL LLVM
https://reviews.llvm.org/D44398
Files:
llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp
Index: llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp
===================================================================
--- llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp
+++ llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp
@@ -1333,7 +1333,7 @@
// the select.
Value *MinMaxOp = nullptr;
Value *ThirdOp = nullptr;
- if (LHS->getNumUses() <= 2 && RHS->getNumUses() > 2) {
+ if (!LHS->hasNUsesOrMore(3) && RHS->hasNUsesOrMore(3)) {
// If the LHS is only used in this chain and the RHS is used outside of it,
// reuse the RHS min/max because that will eliminate the LHS.
if (D == A || C == A) {
@@ -1347,7 +1347,7 @@
MinMaxOp = RHS;
ThirdOp = A;
}
- } else if (RHS->getNumUses() <= 2) {
+ } else if (!RHS->hasNUsesOrMore(3)) {
// Reuse the LHS. This will eliminate the RHS.
if (D == A || D == B) {
// min(min(a, b), min(c, a)) --> min(min(a, b), c)
Index: llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
===================================================================
--- llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
+++ llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
@@ -1192,7 +1192,7 @@
return nullptr;
Value *X;
- if (!match(Op1, m_ZExt(m_Value(X))) || Op1->getNumUses() > 2)
+ if (!match(Op1, m_ZExt(m_Value(X))) || Op1->hasNUsesOrMore(3))
return nullptr;
Type *Ty = And.getType();
@@ -2471,13 +2471,13 @@
// We're relying on the fact that we only do this transform when the shift has
// exactly 2 uses and the add has exactly 1 use (otherwise, we might increase
// instructions).
- if (Op0->getNumUses() == 2)
+ if (Op0->hasNUses(2))
std::swap(Op0, Op1);
const APInt *ShAmt;
Type *Ty = I.getType();
if (match(Op1, m_AShr(m_Value(A), m_APInt(ShAmt))) &&
- Op1->getNumUses() == 2 && *ShAmt == Ty->getScalarSizeInBits() - 1 &&
+ Op1->hasNUses(2) && *ShAmt == Ty->getScalarSizeInBits() - 1 &&
match(Op0, m_OneUse(m_c_Add(m_Specific(A), m_Specific(Op1))))) {
// B = ashr i32 A, 31 ; smear the sign bit
// xor (add A, B), B ; add -1 and flip bits if negative
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D44398.138067.patch
Type: text/x-patch
Size: 2186 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180312/2cd83049/attachment.bin>
More information about the llvm-commits
mailing list