[Mlir-commits] [mlir] [mlir][tosa] Fold 'small' constant 1D slice operations (PR #128193)
Jack Frankland
llvmlistbot at llvm.org
Thu Feb 27 07:10:55 PST 2025
================
@@ -1115,18 +1115,41 @@ OpFoldResult SliceOp::fold(FoldAdaptor adaptor) {
return SplatElementsAttr::get(outputTy, operand.getSplatValue<Attribute>());
}
- if (inputTy.hasStaticShape() && outputTy.hasStaticShape() &&
- outputTy.getNumElements() == 1) {
- DenseElementsAttr startElems;
- if (!matchPattern(getStart(), m_Constant(&startElems)))
- return {};
+ if (!inputTy.hasStaticShape() || !outputTy.hasStaticShape())
+ return {};
+
+ DenseElementsAttr startElems;
+ if (!matchPattern(getStart(), m_Constant(&startElems)))
+ return {};
- llvm::SmallVector<uint64_t> indices =
- llvm::to_vector(startElems.getValues<uint64_t>());
+ llvm::SmallVector<uint64_t> indices =
+ llvm::to_vector(startElems.getValues<uint64_t>());
+
+ if (outputTy.getNumElements() == 1) {
auto value = operand.getValues<Attribute>()[indices];
return SplatElementsAttr::get(outputTy, value);
}
+ DenseElementsAttr size_elems;
+ if (!matchPattern(getSize(), m_Constant(&size_elems)))
+ return {};
+ const llvm::SmallVector<uint64_t> sizes =
----------------
FranklandJack wrote:
I think this can be `auto`'d , see my above comment.
https://github.com/llvm/llvm-project/pull/128193
More information about the Mlir-commits
mailing list