[Mlir-commits] [mlir] 215441f - Remove dead code from Linalg vectorization to fix GCC warning (NFC)
Mehdi Amini
llvmlistbot at llvm.org
Thu Feb 4 09:37:55 PST 2021
Author: Mehdi Amini
Date: 2021-02-04T17:37:25Z
New Revision: 215441fcb71d5b18e3b39ce4c4d0c960560fbb6b
URL: https://github.com/llvm/llvm-project/commit/215441fcb71d5b18e3b39ce4c4d0c960560fbb6b
DIFF: https://github.com/llvm/llvm-project/commit/215441fcb71d5b18e3b39ce4c4d0c960560fbb6b.diff
LOG: Remove dead code from Linalg vectorization to fix GCC warning (NFC)
Added:
Modified:
mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
Removed:
################################################################################
diff --git a/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp b/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
index 516606be3c28..6e5b49125845 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
+++ b/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
@@ -38,20 +38,6 @@ using llvm::dbgs;
#define DEBUG_TYPE "linalg-vectorization"
-/// Return true if the use-def chain from `v` to `from` consists of 0 or more
-/// unary single-operand operations.
-// TODO: relax to multi-operands with constants, which are technically unary ops
-// as needed (e.g. add5).
-static bool isChainOfUnaryOpsFrom(Value v, Value from) {
- while (v != from) {
- Operation *op = v.getDefiningOp();
- if (!op || op->getNumOperands() != 1)
- return false;
- v = op->getOperand(0);
- };
- return true;
-}
-
/// Return the unique instance of OpType in `block` if it is indeed unique.
/// Return null if none or more than 1 instances exist.
template <typename OpType>
@@ -68,40 +54,6 @@ static OpType getSingleOpOfType(Block &block) {
return res;
}
-/// Detect whether res is any permutation of `u5(u1(c) + u2(u3(a) * u4(b)))`
-/// on the field (AddOpType, MulOpType), where u1, u2, u3, u4 and u5 represent
-/// unary operations that may change the type.
-template <typename AddOpType, typename MulOpType>
-static bool isAddMul(Block &block) {
- if (block.getNumArguments() != 3)
- return false;
- Operation *yieldOp = block.getTerminator();
- if (yieldOp->getNumOperands() != 1)
- return false;
-
- LLVM_DEBUG(dbgs() << "\n[" DEBUG_TYPE "]: isAddMul: "; block.dump());
- AddOpType addOp = getSingleOpOfType<AddOpType>(block);
- MulOpType mulOp = getSingleOpOfType<MulOpType>(block);
- if (!addOp || !mulOp)
- return false;
-
- Value argA = block.getArgument(0), argB = block.getArgument(1);
- Value a = mulOp->getOperand(0), b = mulOp->getOperand(1);
- Value mul = mulOp->getResult(0);
- Value argC = block.getArgument(2);
- Value c1 = addOp->getOperand(0), c2 = addOp->getOperand(1);
- Value add = addOp->getResult(0);
- Value res = yieldOp->getOperand(0);
- // Result traces back to add.
- auto un = isChainOfUnaryOpsFrom;
- bool success = un(res, add);
- // One of the operands of add traces back to argC, the other to the mul.
- success |= (un(c1, argC) && un(c2, mul)) || ((un(c1, mul)) && un(c2, argC));
- // One of the operands of mul traces back to argA, the other to argB.
- success |= (un(a, argA) && un(b, argB)) || ((un(a, argB)) && un(b, argA));
- return success;
-}
-
/// Helper data structure to represent the result of vectorization.
/// In certain specific cases, like terminators, we do not want to propagate/
enum VectorizationStatus {
More information about the Mlir-commits
mailing list