[Mlir-commits] [mlir] 8f2db36 - [mlir][OpDSL] Update op definitions to make shapes more concise (NFC).
Tobias Gysi
llvmlistbot at llvm.org
Wed Sep 15 23:23:02 PDT 2021
Author: Tobias Gysi
Date: 2021-09-16T06:02:00Z
New Revision: 8f2db36b01c043570e36a85c45b87c6df402d3ee
URL: https://github.com/llvm/llvm-project/commit/8f2db36b01c043570e36a85c45b87c6df402d3ee
DIFF: https://github.com/llvm/llvm-project/commit/8f2db36b01c043570e36a85c45b87c6df402d3ee.diff
LOG: [mlir][OpDSL] Update op definitions to make shapes more concise (NFC).
Express the input shape definitions of convolution and pooling operations in terms of the output shapes, filter shapes, strides, and dilations.
Reviewed By: shabalin, rsuderman, stellaraccident
Differential Revision: https://reviews.llvm.org/D109815
Added:
Modified:
mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml b/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
index 70c4a3c59a38d..11bd84b0fcf47 100644
--- a/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
+++ b/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
@@ -642,22 +642,22 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2] -> (s0)>
+ shape_map: affine_map<()[s0, s1] -> (s0 + s1)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2] -> (s1)>
+ shape_map: affine_map<()[s0, s1] -> (s1)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2] -> (s2)>
+ shape_map: affine_map<()[s0, s1] -> (s0)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- - affine_map<(d0, d1)[s0, s1, s2] -> (d0 + d1)>
- - affine_map<(d0, d1)[s0, s1, s2] -> (d1)>
- - affine_map<(d0, d1)[s0, s1, s2] -> (d0)>
+ - affine_map<(d0, d1)[s0, s1] -> (d0 + d1)>
+ - affine_map<(d0, d1)[s0, s1] -> (d1)>
+ - affine_map<(d0, d1)[s0, s1] -> (d0)>
iterator_types:
- parallel
- reduction
@@ -701,22 +701,22 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5] -> (s0, s1)>
+ shape_map: affine_map<()[s0, s1, s2, s3] -> (s0 + s1, s2 + s3)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5] -> (s2, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3] -> (s1, s3)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5] -> (s4, s5)>
+ shape_map: affine_map<()[s0, s1, s2, s3] -> (s0, s2)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- - affine_map<(d0, d1, d2, d3)[s0, s1, s2, s3, s4, s5] -> (d0 + d2, d1 + d3)>
- - affine_map<(d0, d1, d2, d3)[s0, s1, s2, s3, s4, s5] -> (d2, d3)>
- - affine_map<(d0, d1, d2, d3)[s0, s1, s2, s3, s4, s5] -> (d0, d1)>
+ - affine_map<(d0, d1, d2, d3)[s0, s1, s2, s3] -> (d0 + d2, d1 + d3)>
+ - affine_map<(d0, d1, d2, d3)[s0, s1, s2, s3] -> (d2, d3)>
+ - affine_map<(d0, d1, d2, d3)[s0, s1, s2, s3] -> (d0, d1)>
iterator_types:
- parallel
- parallel
@@ -762,25 +762,23 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8] -> (s0, s1, s2)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5] -> (s0 + s1, s2 + s3, s4 + s5)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8] -> (s3, s4, s5)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5] -> (s1, s3, s5)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8] -> (s6, s7, s8)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5] -> (s0, s2, s4)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8] -> (d0
- + d3, d1 + d4, d2 + d5)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8] -> (d3,
- d4, d5)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8] -> (d0,
- d1, d2)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5] -> (d0 + d3, d1
+ + d4, d2 + d5)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5] -> (d3, d4, d5)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5] -> (d0, d1, d2)>
iterator_types:
- parallel
- parallel
@@ -828,35 +826,34 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7] -> (s0, s1, s2)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6] -> (s0, s1 * s2 + s3 * s4,
+ s5)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7] -> (s3, s2, s4)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6] -> (s3, s5, s6)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7] -> (s0, s5, s4)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6] -> (s0, s1, s6)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7] -> (s6)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6] -> (s2)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7] -> (s7)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6] -> (s4)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- - affine_map<(d0, d1, d2, d3, d4)[s0, s1, s2, s3, s4, s5, s6, s7] -> (d0, d1 *
- s6 + d3 * s7, d4)>
- - affine_map<(d0, d1, d2, d3, d4)[s0, s1, s2, s3, s4, s5, s6, s7] -> (d3, d4,
- d2)>
- - affine_map<(d0, d1, d2, d3, d4)[s0, s1, s2, s3, s4, s5, s6, s7] -> (d0, d1,
- d2)>
+ - affine_map<(d0, d1, d2, d3, d4)[s0, s1, s2, s3, s4, s5, s6] -> (d0, d1 * s2
+ + d3 * s4, d4)>
+ - affine_map<(d0, d1, d2, d3, d4)[s0, s1, s2, s3, s4, s5, s6] -> (d3, d4, d2)>
+ - affine_map<(d0, d1, d2, d3, d4)[s0, s1, s2, s3, s4, s5, s6] -> (d0, d1, d2)>
iterator_types:
- parallel
- parallel
@@ -907,40 +904,40 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s0, s1, s2, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s0,
+ s1 * s2 + s3 * s4, s5 * s6 + s7 * s8, s9)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s4, s5, s3, s6)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s3,
+ s7, s9, s10)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s0, s7, s8, s6)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s0,
+ s1, s5, s10)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12] -> (s9, s10)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s2,
+ s6)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12] -> (s11, s12)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s4,
+ s8)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d0, d1 * s9 + d4 * s11, d2 * s10 + d5 * s12, d6)>
+ s9, s10] -> (d0, d1 * s2 + d4 * s4, d2 * s6 + d5 * s8, d6)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d4, d5, d6, d3)>
+ s9, s10] -> (d4, d5, d6, d3)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d0, d1, d2, d3)>
+ s9, s10] -> (d0, d1, d2, d3)>
iterator_types:
- parallel
- parallel
@@ -994,14 +991,14 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s0, s1, s2, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s0,
+ s1 * s2 + s3 * s4, s5 * s6 + s7 * s8, s9)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s4, s5, s3, s6)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s3,
+ s7, s9, s10)>
- !LinalgOperandDefConfig
name: IZp
usage: InputOperand
@@ -1014,32 +1011,32 @@ structured_op: !LinalgStructuredOpConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s0, s7, s8, s6)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s0,
+ s1, s5, s10)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12] -> (s9, s10)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s2,
+ s6)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12] -> (s11, s12)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s4,
+ s8)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d0, d1 * s9 + d4 * s11, d2 * s10 + d5 * s12, d6)>
+ s9, s10] -> (d0, d1 * s2 + d4 * s4, d2 * s6 + d5 * s8, d6)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d4, d5, d6, d3)>
+ s9, s10] -> (d4, d5, d6, d3)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> ()>
+ s9, s10] -> ()>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> ()>
+ s9, s10] -> ()>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d0, d1, d2, d3)>
+ s9, s10] -> (d0, d1, d2, d3)>
iterator_types:
- parallel
- parallel
@@ -1112,40 +1109,40 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s0, s1, s2, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s0,
+ s1, s2 * s3 + s4 * s5, s6 * s7 + s8 * s9)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s4, s1, s5, s6)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s10,
+ s1, s4, s8)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s0, s4, s7, s8)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s0,
+ s10, s2, s6)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12] -> (s9, s10)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s3,
+ s7)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12] -> (s11, s12)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s5,
+ s9)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d0, d4, d2 * s9 + d5 * s11, d3 * s10 + d6 * s12)>
+ s9, s10] -> (d0, d4, d2 * s3 + d5 * s5, d3 * s7 + d6 * s9)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d1, d4, d5, d6)>
+ s9, s10] -> (d1, d4, d5, d6)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d0, d1, d2, d3)>
+ s9, s10] -> (d0, d1, d2, d3)>
iterator_types:
- parallel
- parallel
@@ -1195,40 +1192,41 @@ structured_op: !LinalgStructuredOpConfig
usage: InputOperand
type_var: T1
shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12,
- s13, s14, s15, s16, s17] -> (s0, s1, s2, s3, s4)>
+ s13, s14] -> (s0, s1 * s2 + s3 * s4, s5 * s6 + s7 * s8, s9 * s10 + s11 * s12,
+ s13)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12,
- s13, s14, s15, s16, s17] -> (s5, s6, s7, s4, s8)>
+ s13, s14] -> (s3, s7, s11, s13, s14)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12,
- s13, s14, s15, s16, s17] -> (s0, s9, s10, s11, s8)>
+ s13, s14] -> (s0, s1, s5, s9, s14)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12, s13, s14, s15, s16, s17] -> (s12, s13, s14)>
+ s12, s13, s14] -> (s2, s6, s10)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12, s13, s14, s15, s16, s17] -> (s15, s16, s17)>
+ s12, s13, s14] -> (s4, s8, s12)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- affine_map<(d0, d1, d2, d3, d4, d5, d6, d7, d8)[s0, s1, s2, s3, s4, s5, s6,
- s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17] -> (d0, d1 * s12 + d5 *
- s15, d2 * s13 + d6 * s16, d3 * s14 + d7 * s17, d8)>
+ s7, s8, s9, s10, s11, s12, s13, s14] -> (d0, d1 * s2 + d5 * s4, d2 * s6 + d6
+ * s8, d3 * s10 + d7 * s12, d8)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6, d7, d8)[s0, s1, s2, s3, s4, s5, s6,
- s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17] -> (d5, d6, d7, d8, d4)>
+ s7, s8, s9, s10, s11, s12, s13, s14] -> (d5, d6, d7, d8, d4)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6, d7, d8)[s0, s1, s2, s3, s4, s5, s6,
- s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17] -> (d0, d1, d2, d3, d4)>
+ s7, s8, s9, s10, s11, s12, s13, s14] -> (d0, d1, d2, d3, d4)>
iterator_types:
- parallel
- parallel
@@ -1280,40 +1278,37 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s0, s1, s2, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s0, s1 *
+ s2 + s3 * s4, s5 * s6 + s7 * s8, s9)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s4, s5, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s3, s7, s9)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s0, s6, s7, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s0, s1, s5,
+ s9)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]
- -> (s8, s9)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s2, s6)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]
- -> (s10, s11)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s4, s8)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d0, d1 * s8 + d4 * s10, d2 * s9 + d5 * s11, d3)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d4, d5, d3)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d0, d1, d2, d3)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d0, d1 * s2 + d4 * s4, d2 * s6 + d5 * s8, d3)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d4, d5, d3)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d0, d1, d2, d3)>
iterator_types:
- parallel
- parallel
@@ -1361,14 +1356,13 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s0, s1, s2, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s0, s1 *
+ s2 + s3 * s4, s5 * s6 + s7 * s8, s9)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s4, s5, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s3, s7, s9)>
- !LinalgOperandDefConfig
name: IZp
usage: InputOperand
@@ -1381,32 +1375,30 @@ structured_op: !LinalgStructuredOpConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s0, s6, s7, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s0, s1, s5,
+ s9)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]
- -> (s8, s9)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s2, s6)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]
- -> (s10, s11)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s4, s8)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d0, d1 * s8 + d4 * s10, d2 * s9 + d5 * s11, d3)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d4, d5, d3)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> ()>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> ()>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d0, d1, d2, d3)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d0, d1 * s2 + d4 * s4, d2 * s6 + d5 * s8, d3)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d4, d5, d3)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> ()>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> ()>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d0, d1, d2, d3)>
iterator_types:
- parallel
- parallel
@@ -1474,40 +1466,40 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s0, s1, s2, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s0,
+ s1 * s2 + s3 * s4, s5 * s6 + s7 * s8, s9)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s4, s5, s3, s6)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s3,
+ s7, s9, s10)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s0, s7, s8, s3, s6)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s0,
+ s1, s5, s9, s10)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12] -> (s9, s10)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s2,
+ s6)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12] -> (s11, s12)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s4,
+ s8)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d0, d1 * s9 + d5 * s11, d2 * s10 + d6 * s12, d3)>
+ s9, s10] -> (d0, d1 * s2 + d5 * s4, d2 * s6 + d6 * s8, d3)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d5, d6, d3, d4)>
+ s9, s10] -> (d5, d6, d3, d4)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d0, d1, d2, d3, d4)>
+ s9, s10] -> (d0, d1, d2, d3, d4)>
iterator_types:
- parallel
- parallel
@@ -1556,14 +1548,14 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s0, s1, s2, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s0,
+ s1 * s2 + s3 * s4, s5 * s6 + s7 * s8, s9)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s4, s5, s3, s6)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s3,
+ s7, s9, s10)>
- !LinalgOperandDefConfig
name: IZp
usage: InputOperand
@@ -1576,32 +1568,32 @@ structured_op: !LinalgStructuredOpConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12]
- -> (s0, s7, s8, s3, s6)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s0,
+ s1, s5, s9, s10)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12] -> (s9, s10)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s2,
+ s6)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12] -> (s11, s12)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] -> (s4,
+ s8)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d0, d1 * s9 + d5 * s11, d2 * s10 + d6 * s12, d3)>
+ s9, s10] -> (d0, d1 * s2 + d5 * s4, d2 * s6 + d6 * s8, d3)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d5, d6, d3, d4)>
+ s9, s10] -> (d5, d6, d3, d4)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> ()>
+ s9, s10] -> ()>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> ()>
+ s9, s10] -> ()>
- affine_map<(d0, d1, d2, d3, d4, d5, d6)[s0, s1, s2, s3, s4, s5, s6, s7, s8,
- s9, s10, s11, s12] -> (d0, d1, d2, d3, d4)>
+ s9, s10] -> (d0, d1, d2, d3, d4)>
iterator_types:
- parallel
- parallel
@@ -1670,40 +1662,37 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s0, s1, s2, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s0, s1 *
+ s2 + s3 * s4, s5 * s6 + s7 * s8, s9)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s4, s5)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s3, s7)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s0, s6, s7, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s0, s1, s5,
+ s9)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]
- -> (s8, s9)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s2, s6)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]
- -> (s10, s11)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s4, s8)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d0, d1 * s8 + d3 * s10, d2 * s9 + d4 * s11, d5)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d3, d4)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d0, d1, d2, d5)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d0, d1 * s2 + d3 * s4, d2 * s6 + d4 * s8, d5)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d3, d4)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d0, d1, d2, d5)>
iterator_types:
- parallel
- parallel
@@ -1741,40 +1730,37 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s0, s1, s2, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s0, s1 *
+ s2 + s3 * s4, s5 * s6 + s7 * s8, s9)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s4, s5)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s3, s7)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s0, s6, s7, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s0, s1, s5,
+ s9)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]
- -> (s8, s9)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s2, s6)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]
- -> (s10, s11)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s4, s8)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d0, d1 * s8 + d3 * s10, d2 * s9 + d4 * s11, d5)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d3, d4)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d0, d1, d2, d5)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d0, d1 * s2 + d3 * s4, d2 * s6 + d4 * s8, d5)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d3, d4)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d0, d1, d2, d5)>
iterator_types:
- parallel
- parallel
@@ -1812,40 +1798,37 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s0, s1, s2, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s0, s1, s2
+ * s3 + s4 * s5, s6 * s7 + s8 * s9)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s4, s5)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s4, s8)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s0, s1, s6, s7)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s0, s1, s2,
+ s6)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]
- -> (s8, s9)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s3, s7)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]
- -> (s10, s11)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s5, s9)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d0, d1, d2 * s8 + d4 * s10, d3 * s9 + d5 * s11)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d4, d5)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d0, d1, d2, d3)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d0, d1, d2 * s3 + d4 * s5, d3 * s7 + d5 * s9)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d4, d5)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d0, d1, d2, d3)>
iterator_types:
- parallel
- parallel
@@ -1883,40 +1866,37 @@ structured_op: !LinalgStructuredOpConfig
name: I
usage: InputOperand
type_var: T1
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s0, s1, s2, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s0, s1 *
+ s2 + s3 * s4, s5 * s6 + s7 * s8, s9)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s4, s5)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s3, s7)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
- shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11] ->
- (s0, s6, s7, s3)>
+ shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s0, s1, s5,
+ s9)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]
- -> (s8, s9)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s2, s6)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
- attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]
- -> (s10, s11)>
+ attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9] -> (s4, s8)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d0, d1 * s8 + d3 * s10, d2 * s9 + d4 * s11, d5)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d3, d4)>
- - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,
- s10, s11] -> (d0, d1, d2, d5)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d0, d1 * s2 + d3 * s4, d2 * s6 + d4 * s8, d5)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d3, d4)>
+ - affine_map<(d0, d1, d2, d3, d4, d5)[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9]
+ -> (d0, d1, d2, d5)>
iterator_types:
- parallel
- parallel
@@ -1955,40 +1935,40 @@ structured_op: !LinalgStructuredOpConfig
usage: InputOperand
type_var: T1
shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12,
- s13, s14, s15, s16] -> (s0, s1, s2, s3, s4)>
+ s13] -> (s0, s1 * s2 + s3 * s4, s5 * s6 + s7 * s8, s9 * s10 + s11 * s12, s13)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12,
- s13, s14, s15, s16] -> (s5, s6, s7)>
+ s13] -> (s3, s7, s11)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12,
- s13, s14, s15, s16] -> (s0, s8, s9, s10, s4)>
+ s13] -> (s0, s1, s5, s9, s13)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12, s13, s14, s15, s16] -> (s11, s12, s13)>
+ s12, s13] -> (s2, s6, s10)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12, s13, s14, s15, s16] -> (s14, s15, s16)>
+ s12, s13] -> (s4, s8, s12)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- affine_map<(d0, d1, d2, d3, d4, d5, d6, d7)[s0, s1, s2, s3, s4, s5, s6, s7,
- s8, s9, s10, s11, s12, s13, s14, s15, s16] -> (d0, d1 * s11 + d4 * s14, d2 *
- s12 + d5 * s15, d3 * s13 + d6 * s16, d7)>
+ s8, s9, s10, s11, s12, s13] -> (d0, d1 * s2 + d4 * s4, d2 * s6 + d5 * s8, d3
+ * s10 + d6 * s12, d7)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6, d7)[s0, s1, s2, s3, s4, s5, s6, s7,
- s8, s9, s10, s11, s12, s13, s14, s15, s16] -> (d4, d5, d6)>
+ s8, s9, s10, s11, s12, s13] -> (d4, d5, d6)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6, d7)[s0, s1, s2, s3, s4, s5, s6, s7,
- s8, s9, s10, s11, s12, s13, s14, s15, s16] -> (d0, d1, d2, d3, d7)>
+ s8, s9, s10, s11, s12, s13] -> (d0, d1, d2, d3, d7)>
iterator_types:
- parallel
- parallel
@@ -2029,40 +2009,40 @@ structured_op: !LinalgStructuredOpConfig
usage: InputOperand
type_var: T1
shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12,
- s13, s14, s15, s16] -> (s0, s1, s2, s3, s4)>
+ s13] -> (s0, s1 * s2 + s3 * s4, s5 * s6 + s7 * s8, s9 * s10 + s11 * s12, s13)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12,
- s13, s14, s15, s16] -> (s5, s6, s7)>
+ s13] -> (s3, s7, s11)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12,
- s13, s14, s15, s16] -> (s0, s8, s9, s10, s4)>
+ s13] -> (s0, s1, s5, s9, s13)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12, s13, s14, s15, s16] -> (s11, s12, s13)>
+ s12, s13] -> (s2, s6, s10)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12, s13, s14, s15, s16] -> (s14, s15, s16)>
+ s12, s13] -> (s4, s8, s12)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- affine_map<(d0, d1, d2, d3, d4, d5, d6, d7)[s0, s1, s2, s3, s4, s5, s6, s7,
- s8, s9, s10, s11, s12, s13, s14, s15, s16] -> (d0, d1 * s11 + d4 * s14, d2 *
- s12 + d5 * s15, d3 * s13 + d6 * s16, d7)>
+ s8, s9, s10, s11, s12, s13] -> (d0, d1 * s2 + d4 * s4, d2 * s6 + d5 * s8, d3
+ * s10 + d6 * s12, d7)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6, d7)[s0, s1, s2, s3, s4, s5, s6, s7,
- s8, s9, s10, s11, s12, s13, s14, s15, s16] -> (d4, d5, d6)>
+ s8, s9, s10, s11, s12, s13] -> (d4, d5, d6)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6, d7)[s0, s1, s2, s3, s4, s5, s6, s7,
- s8, s9, s10, s11, s12, s13, s14, s15, s16] -> (d0, d1, d2, d3, d7)>
+ s8, s9, s10, s11, s12, s13] -> (d0, d1, d2, d3, d7)>
iterator_types:
- parallel
- parallel
@@ -2103,40 +2083,40 @@ structured_op: !LinalgStructuredOpConfig
usage: InputOperand
type_var: T1
shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12,
- s13, s14, s15, s16] -> (s0, s1, s2, s3, s4)>
+ s13] -> (s0, s1 * s2 + s3 * s4, s5 * s6 + s7 * s8, s9 * s10 + s11 * s12, s13)>
- !LinalgOperandDefConfig
name: K
usage: InputOperand
type_var: T2
shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12,
- s13, s14, s15, s16] -> (s5, s6, s7)>
+ s13] -> (s3, s7, s11)>
- !LinalgOperandDefConfig
name: O
usage: OutputOperand
type_var: U
shape_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12,
- s13, s14, s15, s16] -> (s0, s8, s9, s10, s4)>
+ s13] -> (s0, s1, s5, s9, s13)>
- !LinalgOperandDefConfig
name: strides
usage: IndexAttribute
type_var: I64
attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12, s13, s14, s15, s16] -> (s11, s12, s13)>
+ s12, s13] -> (s2, s6, s10)>
- !LinalgOperandDefConfig
name: dilations
usage: IndexAttribute
type_var: I64
attribute_map: affine_map<()[s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11,
- s12, s13, s14, s15, s16] -> (s14, s15, s16)>
+ s12, s13] -> (s4, s8, s12)>
indexing_maps: !LinalgIndexingMapsConfig
static_indexing_maps:
- affine_map<(d0, d1, d2, d3, d4, d5, d6, d7)[s0, s1, s2, s3, s4, s5, s6, s7,
- s8, s9, s10, s11, s12, s13, s14, s15, s16] -> (d0, d1 * s11 + d4 * s14, d2 *
- s12 + d5 * s15, d3 * s13 + d6 * s16, d7)>
+ s8, s9, s10, s11, s12, s13] -> (d0, d1 * s2 + d4 * s4, d2 * s6 + d5 * s8, d3
+ * s10 + d6 * s12, d7)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6, d7)[s0, s1, s2, s3, s4, s5, s6, s7,
- s8, s9, s10, s11, s12, s13, s14, s15, s16] -> (d4, d5, d6)>
+ s8, s9, s10, s11, s12, s13] -> (d4, d5, d6)>
- affine_map<(d0, d1, d2, d3, d4, d5, d6, d7)[s0, s1, s2, s3, s4, s5, s6, s7,
- s8, s9, s10, s11, s12, s13, s14, s15, s16] -> (d0, d1, d2, d3, d7)>
+ s8, s9, s10, s11, s12, s13] -> (d0, d1, d2, d3, d7)>
iterator_types:
- parallel
- parallel
diff --git a/mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py b/mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py
index fc37a2e8fa3a4..7a804b7a9fff5 100644
--- a/mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py
+++ b/mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py
@@ -146,7 +146,7 @@ def dot(
@linalg_structured_op
def conv_1d(
- I=TensorDef(T1, S.IW),
+ I=TensorDef(T1, S.OW + S.KW),
K=TensorDef(T2, S.KW),
O=TensorDef(U, S.OW, output=True)):
"""Performs 1-D convolution with no channels.
@@ -160,7 +160,7 @@ def conv_1d(
@linalg_structured_op
def conv_2d(
- I=TensorDef(T1, S.IH, S.IW),
+ I=TensorDef(T1, S.OH + S.KH, S.OW + S.KW),
K=TensorDef(T2, S.KH, S.KW),
O=TensorDef(U, S.OH, S.OW, output=True)):
"""Performs 2-D convolution with no channels.
@@ -174,7 +174,7 @@ def conv_2d(
@linalg_structured_op
def conv_3d(
- I=TensorDef(T1, S.ID, S.IH, S.IW),
+ I=TensorDef(T1, S.OD + S.KD, S.OH + S.KH, S.OW + S.KW),
K=TensorDef(T2, S.KD, S.KH, S.KW),
O=TensorDef(U, S.OD, S.OH, S.OW, output=True)):
"""Performs 3-D convolution with no channels.
@@ -188,7 +188,7 @@ def conv_3d(
@linalg_structured_op
def conv_1d_nwc_wcf(
- I=TensorDef(T1, S.N, S.IW, S.C),
+ I=TensorDef(T1, S.N, S.OW * S.SW + S.KW * S.DW, S.C),
K=TensorDef(T2, S.KW, S.C, S.F),
O=TensorDef(U, S.N, S.OW, S.F, output=True),
strides=AttributeDef(S.SW),
@@ -205,7 +205,7 @@ def conv_1d_nwc_wcf(
@linalg_structured_op
def conv_2d_nhwc_hwcf(
- I=TensorDef(T1, S.N, S.IH, S.IW, S.C),
+ I=TensorDef(T1, S.N, S.OH * S.SH + S.KH * S.DH, S.OW * S.SW + S.KW * S.DW, S.C),
K=TensorDef(T2, S.KH, S.KW, S.C, S.F),
O=TensorDef(U, S.N, S.OH, S.OW, S.F, output=True),
strides=AttributeDef(S.SH, S.SW),
@@ -226,7 +226,7 @@ def conv_2d_nhwc_hwcf(
@linalg_structured_op
def conv_2d_nhwc_hwcf_q(
- I=TensorDef(T1, S.N, S.IH, S.IW, S.C),
+ I=TensorDef(T1, S.N, S.OH * S.SH + S.KH * S.DH, S.OW * S.SW + S.KW * S.DW, S.C),
K=TensorDef(T2, S.KH, S.KW, S.C, S.F),
IZp=ScalarDef(I32),
KZp=ScalarDef(I32),
@@ -250,7 +250,7 @@ def conv_2d_nhwc_hwcf_q(
@linalg_structured_op
def conv_2d_nchw_fchw(
- I=TensorDef(T1, S.N, S.C, S.IH, S.IW),
+ I=TensorDef(T1, S.N, S.C, S.OH * S.SH + S.KH * S.DH, S.OW * S.SW + S.KW * S.DW),
K=TensorDef(T2, S.F, S.C, S.KH, S.KW),
O=TensorDef(U, S.N, S.F, S.OH, S.OW, output=True),
strides=AttributeDef(S.SH, S.SW),
@@ -271,7 +271,8 @@ def conv_2d_nchw_fchw(
@linalg_structured_op
def conv_3d_ndhwc_dhwcf(
- I=TensorDef(T1, S.N, S.ID, S.IH, S.IW, S.C),
+ I=TensorDef(T1, S.N, S.OD * S.SD + S.KD * S.DD,
+ S.OH * S.SH + S.KH * S.DH, S.OW * S.SW + S.KW * S.DW, S.C),
K=TensorDef(T2, S.KD, S.KH, S.KW, S.C, S.F),
O=TensorDef(U, S.N, S.OD, S.OH, S.OW, S.F, output=True),
strides=AttributeDef(S.SD, S.SH, S.SW),
@@ -288,7 +289,7 @@ def conv_3d_ndhwc_dhwcf(
@linalg_structured_op
def depthwise_conv2D_nhw(
- I=TensorDef(T1, S.N, S.IH, S.IW, S.IC),
+ I=TensorDef(T1, S.N, S.OH * S.SH + S.KH * S.DH, S.OW * S.SW + S.KW * S.DW, S.IC),
K=TensorDef(T2, S.KH, S.KW, S.IC),
O=TensorDef(U, S.N, S.OH, S.OW, S.IC, output=True),
strides=AttributeDef(S.SH, S.SW),
@@ -306,7 +307,7 @@ def depthwise_conv2D_nhw(
@linalg_structured_op
def depthwise_conv2D_nhw_q(
- I=TensorDef(T1, S.N, S.IH, S.IW, S.IC),
+ I=TensorDef(T1, S.N, S.OH * S.SH + S.KH * S.DH, S.OW * S.SW + S.KW * S.DW, S.IC),
K=TensorDef(T2, S.KH, S.KW, S.IC),
IZp=ScalarDef(I32),
KZp=ScalarDef(I32),
@@ -326,7 +327,7 @@ def depthwise_conv2D_nhw_q(
@linalg_structured_op
def depthwise_conv2D_nhwc(
- I=TensorDef(T1, S.N, S.IH, S.IW, S.IC),
+ I=TensorDef(T1, S.N, S.OH * S.SH + S.KH * S.DH, S.OW * S.SW + S.KW * S.DW, S.IC),
K=TensorDef(T2, S.KH, S.KW, S.IC, S.CM),
O=TensorDef(U, S.N, S.OH, S.OW, S.IC, S.CM, output=True),
strides=AttributeDef(S.SH, S.SW),
@@ -343,7 +344,7 @@ def depthwise_conv2D_nhwc(
@linalg_structured_op
def depthwise_conv2D_nhwc_q(
- I=TensorDef(T1, S.N, S.IH, S.IW, S.IC),
+ I=TensorDef(T1, S.N, S.OH * S.SH + S.KH * S.DH, S.OW * S.SW + S.KW * S.DW, S.IC),
K=TensorDef(T2, S.KH, S.KW, S.IC, S.CM),
IZp=ScalarDef(I32),
KZp=ScalarDef(I32),
@@ -364,7 +365,7 @@ def depthwise_conv2D_nhwc_q(
@linalg_structured_op
def pooling_nhwc_sum(
- I=TensorDef(T1, S.N, S.H, S.W, S.C),
+ I=TensorDef(T1, S.N, S.OH * S.SH + S.KH * S.DH, S.OW * S.SW + S.KW * S.DW, S.C),
K=TensorDef(T2, S.KH, S.KW, index_dims=[D.kh, D.kw]),
O=TensorDef(U, S.N, S.OH, S.OW, S.C, output=True),
strides=AttributeDef(S.SH, S.SW),
@@ -381,7 +382,7 @@ def pooling_nhwc_sum(
@linalg_structured_op
def pooling_nhwc_max(
- I=TensorDef(T1, S.N, S.H, S.W, S.C),
+ I=TensorDef(T1, S.N, S.OH * S.SH + S.KH * S.DH, S.OW * S.SW + S.KW * S.DW, S.C),
K=TensorDef(T2, S.KH, S.KW, index_dims=[D.kh, D.kw]),
O=TensorDef(U, S.N, S.OH, S.OW, S.C, output=True),
strides=AttributeDef(S.SH, S.SW),
@@ -398,7 +399,7 @@ def pooling_nhwc_max(
@linalg_structured_op
def pooling_nchw_max(
- I=TensorDef(T1, S.N, S.C, S.H, S.W),
+ I=TensorDef(T1, S.N, S.C, S.OH * S.SH + S.KH * S.DH, S.OW * S.SW + S.KW * S.DW),
K=TensorDef(T2, S.KH, S.KW, index_dims=[D.kh, D.kw]),
O=TensorDef(U, S.N, S.C, S.OH, S.OW, output=True),
strides=AttributeDef(S.SH, S.SW),
@@ -415,7 +416,7 @@ def pooling_nchw_max(
@linalg_structured_op
def pooling_nhwc_min(
- I=TensorDef(T1, S.N, S.H, S.W, S.C),
+ I=TensorDef(T1, S.N, S.OH * S.SH + S.KH * S.DH, S.OW * S.SW + S.KW * S.DW, S.C),
K=TensorDef(T2, S.KH, S.KW, index_dims=[D.kh, D.kw]),
O=TensorDef(U, S.N, S.OH, S.OW, S.C, output=True),
strides=AttributeDef(S.SH, S.SW),
@@ -433,7 +434,8 @@ def pooling_nhwc_min(
@linalg_structured_op
def pooling_ndhwc_sum(
- I=TensorDef(T1, S.N, S.D, S.H, S.W, S.C),
+ I=TensorDef(T1, S.N, S.OD * S.SD + S.KD * S.DD, S.OH * S.SH + S.KH * S.DH,
+ S.OW * S.SW + S.KW * S.DW, S.C),
K=TensorDef(T2, S.KD, S.KH, S.KW, index_dims=[D.kd, D.kh, D.kw]),
O=TensorDef(U, S.N, S.OD, S.OH, S.OW, S.C, output=True),
strides=AttributeDef(S.SD, S.SH, S.SW),
@@ -451,7 +453,8 @@ def pooling_ndhwc_sum(
@linalg_structured_op
def pooling_ndhwc_max(
- I=TensorDef(T1, S.N, S.D, S.H, S.W, S.C),
+ I=TensorDef(T1, S.N, S.OD * S.SD + S.KD * S.DD, S.OH * S.SH + S.KH * S.DH,
+ S.OW * S.SW + S.KW * S.DW, S.C),
K=TensorDef(T2, S.KD, S.KH, S.KW, index_dims=[D.kd, D.kh, D.kw]),
O=TensorDef(U, S.N, S.OD, S.OH, S.OW, S.C, output=True),
strides=AttributeDef(S.SD, S.SH, S.SW),
@@ -470,7 +473,8 @@ def pooling_ndhwc_max(
@linalg_structured_op
def pooling_ndhwc_min(
- I=TensorDef(T1, S.N, S.D, S.H, S.W, S.C),
+ I=TensorDef(T1, S.N, S.OD * S.SD + S.KD * S.DD, S.OH * S.SH + S.KH * S.DH,
+ S.OW * S.SW + S.KW * S.DW, S.C),
K=TensorDef(T2, S.KD, S.KH, S.KW, index_dims=[D.kd, D.kh, D.kw]),
O=TensorDef(U, S.N, S.OD, S.OH, S.OW, S.C, output=True),
strides=AttributeDef(S.SD, S.SH, S.SW),
More information about the Mlir-commits
mailing list