================ @@ -2760,6 +2760,89 @@ LogicalResult WinogradFilterTransformOp::verify() { return success(); } +SmallVector<Range> +WinogradFilterTransformOp::getIterationDomain(OpBuilder &builder) { + Location loc = getLoc(); + Value zero = builder.create<arith::ConstantIndexOp>(loc, 0); + Value one = builder.create<arith::ConstantIndexOp>(loc, 1); + Value output = getOutput(); + SmallVector<Range> loopBounds(6); + for (unsigned dim = 0; dim < 6; ++dim) { + loopBounds[dim].offset = zero; + loopBounds[dim].size = getDimValue(builder, loc, output, dim); + loopBounds[dim].stride = one; + } + return loopBounds; +} + +SmallVector<utils::IteratorType> +WinogradFilterTransformOp::getLoopIteratorTypes() { + SmallVector<utils::IteratorType> iteratorTypes(6, + utils::IteratorType::parallel); + return iteratorTypes; +} + +Value getValueFromOpFoldResult(OpFoldResult opFoldResult, OpBuilder &builder, + Location loc) { + if (auto val = opFoldResult.dyn_cast<Value>()) { + return val; + } else if (auto attr = opFoldResult.dyn_cast<Attribute>()) { + auto intAttr = cast<IntegerAttr>(attr); + return builder.create<arith::ConstantOp>(loc, intAttr); + } + // This should never happen if OpFoldResult is correctly formed. ---------------- ftynse wrote:
Then this should be an assertion. https://github.com/llvm/llvm-project/pull/96184 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits