llvm-project/mlir/test/Dialect/Linalg
gysit a3655de2c8 [mlir][OpDSL] Add support for basic rank polymorphism.
Previously, OpDSL did not support rank polymorphism, which required a separate implementation of linalg.fill. This revision extends OpDSL to support rank polymorphism for a limited class of operations that access only scalars and tensors of rank zero. At operation instantiation time, it scales these scalar computations to multi-dimensional pointwise computations by replacing the empty indexing maps with identity index maps. The revision does not change the DSL itself, instead it adapts the Python emitter and the YAML generator to generate different indexing maps and and iterators depending on the rank of the first output.

Additionally, the revision introduces a `linalg.fill_tensor` operation that in a future revision shall replace the current handwritten `linalg.fill` operation. `linalg.fill_tensor` is thus only temporarily available and will be renamed to `linalg.fill`.

Reviewed By: nicolasvasilache, stellaraccident

Differential Revision: https://reviews.llvm.org/D119003
2022-02-11 08:27:49 +00:00
..
affine.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
bufferize.mlir Revert "Revert "[mlir] Purge `linalg.copy` and use `memref.copy` instead."" 2022-02-01 18:21:21 +01:00
canonicalize-duplicate-inputs.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
canonicalize.mlir [mlir][linalg] Fold tensor.pad(linalg.fill) with the same value 2022-02-10 08:39:35 -05:00
codegen-strategy.mlir [mlir] Move linalg::PadTensorOp to tensor::PadOp. 2022-01-21 20:02:39 +01:00
comprehensive-bufferize-analysis-2fill-extract-matmul-all-perms.mlir [mlir][linalg][bufferize][NFC] Analyze OpOperands instead of OpResults 2022-01-08 01:00:30 +09:00
comprehensive-function-bufferize-compat.mlir [mlir][linalg][bufferize] Add pass options for `createDeallocs` 2022-01-12 18:55:36 +09:00
comprehensive-function-bufferize.mlir [mlir][bufferize] Move arith BufferizableOpInterface impl to arith dialect 2022-01-28 01:40:22 +09:00
comprehensive-module-bufferize-alloca.mlir [mlir][bufferize] Change insertion point for ToTensorOps 2022-01-25 00:43:04 +09:00
comprehensive-module-bufferize-analysis-init-tensor-elimination.mlir [mlir][Linalg] Disable init_tensor elimination by default 2022-01-10 09:19:18 -05:00
comprehensive-module-bufferize-analysis.mlir [mlir][linalg][bufferize] Print results of FuncOp read/write analysis 2022-02-09 20:52:38 +09:00
comprehensive-module-bufferize-init-tensor-elimination.mlir [mlir][linalg][bufferize] Fix insertion point InitTensorElimination 2022-01-30 22:25:39 +09:00
comprehensive-module-bufferize-invalid.mlir [mlir] Split out a new ControlFlow dialect from Standard 2022-02-06 14:51:16 -08:00
comprehensive-module-bufferize-partial.mlir [mlir][bufferization] Add an option to use memref types without layout maps 2022-01-27 00:03:34 +09:00
comprehensive-module-bufferize.mlir [mlir] Move SelectOp from Standard to Arithmetic 2022-02-02 14:45:12 -08:00
conv-interface-invalid.mlir [mlir][Linalg] Add ConvolutionOpInterface. 2021-09-20 10:41:10 -07:00
convert-elementwise-to-linalg.mlir [mlir] Move SelectOp from Standard to Arithmetic 2022-02-02 14:45:12 -08:00
decompose-convolution.mlir [mlir][linalg] Add decompose to CodegenStrategy. 2021-11-30 15:48:29 +00:00
detensorize_0d.mlir [mlir] Don't print `// no predecessors` on entry blocks 2022-01-19 15:57:58 -08:00
detensorize_br_operands.mlir [mlir] Split out a new ControlFlow dialect from Standard 2022-02-06 14:51:16 -08:00
detensorize_if.mlir [mlir] Split out a new ControlFlow dialect from Standard 2022-02-06 14:51:16 -08:00
detensorize_trivial.mlir [mlir] Remove unnecessary canonicalization from Linalg Detensorize.cpp 2022-01-03 16:33:45 +01:00
detensorize_while.mlir [mlir] Split out a new ControlFlow dialect from Standard 2022-02-06 14:51:16 -08:00
detensorize_while_impure_cf.mlir [mlir] Split out a new ControlFlow dialect from Standard 2022-02-06 14:51:16 -08:00
detensorize_while_pure_cf.mlir [mlir] Split out a new ControlFlow dialect from Standard 2022-02-06 14:51:16 -08:00
distribute-tiled-loop.mlir [mlir] Replace StrEnumAttr -> EnumAttr in core dialects 2022-01-18 17:15:00 +00:00
drop-unit-extent-dims.mlir [mlir] Don't print `// no predecessors` on entry blocks 2022-01-19 15:57:58 -08:00
fold-unit-trip-loops.mlir [mlir] Don't print `// no predecessors` on entry blocks 2022-01-19 15:57:58 -08:00
forward-vector-transfers.mlir Revert "Revert "[mlir] Purge `linalg.copy` and use `memref.copy` instead."" 2022-02-01 18:21:21 +01:00
fusion-2-level.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
fusion-elementwise-ops.mlir [MLIR][arith] Mark addf/mulf as commutative 2022-02-01 08:33:48 +01:00
fusion-elementwise-options.mlir [mlir][Linalg] NFC: Combine elementwise fusion test passes. 2022-02-08 18:08:37 +00:00
fusion-indexed.mlir [mlir] Don't print `// no predecessors` on entry blocks 2022-01-19 15:57:58 -08:00
fusion-pattern.mlir Revert "Revert "[mlir] Purge `linalg.copy` and use `memref.copy` instead."" 2022-02-01 18:21:21 +01:00
fusion-push-reshape.mlir [mlir][Linalg] NFC: Combine elementwise fusion test passes. 2022-02-08 18:08:37 +00:00
fusion-sequence.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
fusion-tensor-pattern.mlir [mlir][linalg] Always generate an extract/insert slice pair when tiling output tensors. 2021-11-22 13:12:43 +00:00
fusion.mlir [mlir] Don't print `// no predecessors` on entry blocks 2022-01-19 15:57:58 -08:00
generalize-named-ops.mlir [mlir][Linalg] Make depthwise convolution naming scheme consistent. 2021-11-15 07:54:29 +00:00
generalize-named-polymorphic-ops.mlir [mlir][OpDSL] Add support for basic rank polymorphism. 2022-02-11 08:27:49 +00:00
generalize-pad-tensor.mlir [mlir] Move linalg::PadTensorOp to tensor::PadOp. 2022-01-21 20:02:39 +01:00
hoist-padding.mlir [mlir][linalg] Add transpose support to hoist padding. 2022-01-24 16:33:05 +00:00
hoisting.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
inline-scalar-operands.mlir [mlir] Don't print `// no predecessors` on entry blocks 2022-01-19 15:57:58 -08:00
inlining.mlir [mlir][Linalg] Add GenericOp self-copy on buffers folding 2022-01-26 05:56:31 -05:00
interchange.mlir [mlir][linalg] Add decompose to CodegenStrategy. 2021-11-30 15:48:29 +00:00
invalid.mlir [mlir] Move linalg::PadTensorOp to tensor::PadOp. 2022-01-21 20:02:39 +01:00
library-calls.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
loops.mlir [mlir] Move SelectOp from Standard to Arithmetic 2022-02-02 14:45:12 -08:00
lower-pad-tensor.mlir [mlir] Move linalg::PadTensorOp to tensor::PadOp. 2022-01-21 20:02:39 +01:00
named-ops.mlir [mlir] Don't print `// no predecessors` on entry blocks 2022-01-19 15:57:58 -08:00
namedop_conversion.mlir [mlir][Linalg] Move named op conversions out of canonicalizations. 2021-12-20 10:19:05 -08:00
pad.mlir [mlir] Move linalg::PadTensorOp to tensor::PadOp. 2022-01-21 20:02:39 +01:00
pad_fusion.mlir [mlir] Move linalg::PadTensorOp to tensor::PadOp. 2022-01-21 20:02:39 +01:00
parallel-loops.mlir [mlir] Don't print `// no predecessors` on entry blocks 2022-01-19 15:57:58 -08:00
promote.mlir Revert "Revert "[mlir] Purge `linalg.copy` and use `memref.copy` instead."" 2022-02-01 18:21:21 +01:00
promotion_options.mlir Revert "Revert "[mlir] Purge `linalg.copy` and use `memref.copy` instead."" 2022-02-01 18:21:21 +01:00
reshape_control_fusion.mlir [mlir][Linalg] NFC: Combine elementwise fusion test passes. 2022-02-08 18:08:37 +00:00
reshape_fusion.mlir [mlir] Don't print `// no predecessors` on entry blocks 2022-01-19 15:57:58 -08:00
reshape_linearization_fusion.mlir [mlir][Linalg] Fix incorrect fusion with reshape ops by linearization. 2022-01-25 11:42:58 -08:00
reshape_linearization_fusion_with_unit_dims.mlir [mlir] Move `linalg.tensor_expand/collapse_shape` to TensorDialect. 2021-12-10 12:11:48 +01:00
resolve-shaped-type-result-dims.mlir [mlir] Move linalg::PadTensorOp to tensor::PadOp. 2022-01-21 20:02:39 +01:00
roundtrip.mlir [mlir] Move SelectOp from Standard to Arithmetic 2022-02-02 14:45:12 -08:00
standard.mlir Revert "Revert "[mlir] Purge `linalg.copy` and use `memref.copy` instead."" 2022-02-01 18:21:21 +01:00
subtensor-of-padtensor.mlir [mlir] Move linalg::PadTensorOp to tensor::PadOp. 2022-01-21 20:02:39 +01:00
tile-and-distribute.mlir [mlir] Replace StrEnumAttr -> EnumAttr in core dialects 2022-01-18 17:15:00 +00:00
tile-and-fuse-no-fuse.mlir [mlir][linalg] Let tile and fuse fail for tile sizes zero. 2022-02-04 19:19:21 +00:00
tile-and-fuse-on-tensors.mlir [mlir] Don't print `// no predecessors` on entry blocks 2022-01-19 15:57:58 -08:00
tile-and-fuse-sequence-on-tensors.mlir [mlir][linalg] Add a tile and fuse on tensors pattern. 2021-11-22 11:13:21 +00:00
tile-and-fuse-tensors.mlir [mlir] Move linalg::PadTensorOp to tensor::PadOp. 2022-01-21 20:02:39 +01:00
tile-and-peel-tensors.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
tile-conv.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
tile-indexed.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
tile-pad-tensor-op.mlir [mlir] Move linalg::PadTensorOp to tensor::PadOp. 2022-01-21 20:02:39 +01:00
tile-parallel-reduce.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
tile-parallel.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
tile-scalarize-dynamic-dims.mlir [MLIR][NFC] Update SCF pass cmd line names to prefix scf 2022-01-31 07:09:30 +05:30
tile-tensors.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
tile-zero.mlir [mlir][Linalg] Do not return failure when all tile sizes are zero. 2021-11-18 09:28:25 -08:00
tile.mlir [mlir] Don't print `// no predecessors` on entry blocks 2022-01-19 15:57:58 -08:00
tiled-loop-peeling.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
tiled-loop-to-scf.mlir [MLIR] Replace std ops with arith dialect ops 2021-10-13 03:07:03 +00:00
transform-patterns-matmul-to-vector.mlir Revert "Revert "[mlir] Purge `linalg.copy` and use `memref.copy` instead."" 2022-02-01 18:21:21 +01:00
transform-patterns.mlir Revert "Revert "[mlir] Purge `linalg.copy` and use `memref.copy` instead."" 2022-02-01 18:21:21 +01:00
vectorization.mlir [mlir] Move SelectOp from Standard to Arithmetic 2022-02-02 14:45:12 -08:00
vectorize-convolution.mlir [mlir][Linalg] NFC - Cleanup conv1d generators 2022-01-17 17:39:19 +00:00