[mlir][tosa] Fix dynamic shape inference in conv2d
authorAnastasia Stulova <Anastasia.Stulova@arm.com>
Tue, 6 Sep 2022 22:07:29 +0000 (15:07 -0700)
committerRob Suderman <suderman@google.com>
Tue, 6 Sep 2022 22:42:04 +0000 (15:42 -0700)
commite28a5ceca957ea0c40933db01cf0246c9c45bbe9
tree951d117d856bce2594e6aa724461a095d17735db
parent67dc6674c1dd1a64854ed301f32fa14e5d9948d4
[mlir][tosa] Fix dynamic shape inference in conv2d

The comment in the code correctly states the equation for the shape inference as follows:

```
H = ((IH+pad_top+pad_bottom-(dilation_y*(KH-1)+1))/stride_y)+1
```

However the final operation is generated as `-` instead of `+`. I believe `+`
is indeed correct. For example if we have an image with dimension 6 and kernel
of dimension 3 (assuming padding is 0 and stride and dilation are both 1) we
are expecting 4 elements in the output (computed for image elements `(0, 1, 2)
x kernel`, `(1, 2, 3) x kernel`, `(2, 3, 4) x kernel` and `(3, 4, 5) x kernel`.
However currently only 2 elements are produced in the output.

Reviewed By: NatashaKnk

Differential Revision: https://reviews.llvm.org/D133208
mlir/lib/Conversion/TosaToLinalg/TosaToLinalgNamed.cpp
mlir/test/Conversion/TosaToLinalg/tosa-to-linalg-named.mlir