[Mlir-commits] [mlir] [mlir][linalg] Implement Conv2D using Winograd Conv2D algorithm (PR #96181)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon Jul 8 09:00:03 PDT 2024
================
@@ -2812,32 +2819,34 @@ LogicalResult WinogradOutputTransformOp::verify() {
int64_t valueW = valueShape[1];
int64_t valueTileH = valueShape[2];
int64_t valueTileW = valueShape[3];
- auto outputType = cast<ShapedType>(getOutput().getType());
- ArrayRef<int64_t> outputShape = outputType.getShape();
- int64_t outputH = outputShape[1];
- int64_t outputW = outputShape[2];
int m = getM();
int r = getR();
bool leftTransform = valueH != 1;
bool rightTransform = valueW != 1;
- if (!leftTransform && !rightTransform)
- return failure();
-
- if (leftTransform) {
- if (valueH != m + r - 1)
+ SmallVector<int64_t> expectedOutputShape(4, valueH);
+ if (ShapedType::isDynamic(valueH) || ShapedType::isDynamic(valueTileH)) {
+ expectedOutputShape[1] = -1;
+ } else {
+ if (valueH != (leftTransform ? m + r - 1 : 1))
return emitOpError("expect input height equals to input tile size");
- if (outputH != m * valueTileH)
- return emitOpError("expect output height aligned to output tile size");
+ expectedOutputShape[1] = (leftTransform ? m : 1) * valueTileH;
}
-
- if (rightTransform) {
- if (valueW != m + r - 1)
+ if (ShapedType::isDynamic(valueW) || ShapedType::isDynamic(valueTileW)) {
+ expectedOutputShape[2] = -1;
----------------
Max191 wrote:
`ShapedType::kDynamic`
https://github.com/llvm/llvm-project/pull/96181
More information about the Mlir-commits
mailing list