tree 8103a3602f86ef1e2e2f578f0d162861aa9b8db3
parent 1547ac28f48c6f455adf726828ce548e20a3f3d5
author Han-Chung Wang <hanchung@google.com> 1632436337 +0800
committer GitHub <noreply@github.com> 1632436337 +0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJhTQBxCRBK7hj4Ov3rIwAAtgwIAKCzKBCn4vtqXVcGHFeaxSKo
 ayAggr8PEjC2FFSx1g0Rlun/5pBL67KWScNScU3RJSrwkYmcUqWEdJVxiikbPzby
 xkE2pSXaelhU6HLcwBWWrtYxSBZuGTYqUuJ+CQmWvc7GOSCLX2Ld2bK6dfPyq3ZF
 HWX7ZX7ri9R5A54WBfKH4D6o9gtstkortkEhkk3iIXSPwaHBVTnRH7NsOt9JsqzL
 /vz6wJcf9tx9wBncp1MFB+XRz33uaWN2FmbNuap340Rgjzyc81XziFoVAIZDX2BM
 Hazv1mzSzOtWQrInyejAHpEFYBw5+/BsgjpP7u4Dg3cE4jVk7T7G3pD2e5oVEo0=
 =XYyT
 -----END PGP SIGNATURE-----
 

Update semantics of linalg_ext.reverse. (#7155)

1. Allow the op takes multiple reverse dimensions.
2. Update the loop bound of reverse dim with the whole size.

Re (2), it is required because of tiling interface. The current tiling
interface expects the implmenetation returned a tiled op. However, two
tiled ops are required in the previous definition. E.g., say that we
have `M` tiles in total.

[T_1], [T_2], ... , [T_M]

The result of `T_1` will be stored to the position of `T_M`, and vise
versa. If we iterate only half of the tensor, we need to create reversed
`T_1` and reversed `T_M`, then store them to corresponding offsets. In
this context, two tiled op are created, but only one can be returned.

The updated semantic also meets the current lowering, instead of
emitting the affine maps into the op itself.

This PR also adds e2e tests for the op.

It is a step toward https://github.com/google/iree/issues/5045