llvm-project/mlir/test/Linalg
Nicolas Vasilache 997c7c4a8d Fix Linalg tiling for the partial tile case.
This CL prepares for mixing lowering of tiled linalg operations to loops with load and store operations. In particular it is necessary to capture partial tile information in views. This CL makes slice ops during Linalg tiling properly stop at partial tile boundaries by implementing `min` with a `cmpi` and `select` over values of index type.

    To be consistent with lowering to loops, the implementation of tiling also drops specifics of accessing values via ranges and instead uses ranges of the form
    `[0, dim(view), 1]` for creating view slices. This simplifies the code for the implementation of tiling and utils.

    This also allows removing restrictions around needing a View or SliceOp defined in the current function context (as well as all it RangeOps). The restriction removal is tested by making the dot test operate directly on views.

    The above is still subject to folding of the linalg.dim operation left for a future CL.

    At this time, mixing tiling and lowering to loops all the way to execution is not yet functional because affine.for does not allow arbitrarily defined values of index type as its operands.

    The previously introduced linalg.range_intersection was not sufficient to capture the necessary information and still required dealing with max quantities.
    A followup CL will remove linalg.range_intersection.

--

PiperOrigin-RevId: 249698823
2019-06-01 19:58:43 -07:00
..
llvm.mlir Fix Linalg/llvm_ir test 2019-05-20 13:49:19 -07:00
loops.mlir Fix Linalg lowering to loops 2019-06-01 19:57:54 -07:00
roundtrip.mlir Add a linalg.range_intersect op. 2019-05-20 13:44:07 -07:00
tile.mlir Fix Linalg tiling for the partial tile case. 2019-06-01 19:58:43 -07:00