/
TensorExtPatterns.td
35 lines (30 loc) · 1.1 KB
/
TensorExtPatterns.td
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef INCLUDE_DIALECT_TENSOREXT_IR_TENSOREXTPATTERNS_TD_
#define INCLUDE_DIALECT_TENSOREXT_IR_TENSOREXTPATTERNS_TD_
include "TensorExtOps.td"
include "mlir/Dialect/Arith/IR/ArithOps.td"
include "mlir/Dialect/Tensor/IR/TensorOps.td"
include "mlir/IR/PatternBase.td"
def InsertRotations : Pattern<
(Arith_AddIOp
(Tensor_ExtractOp $t1, (variadic $i1)),
(Tensor_ExtractOp $t2, (variadic $i2)),
$overflow),
[
(TensorExt_RotateOp:$r1 $t1, $i1),
(TensorExt_RotateOp:$r2 $t2, $i2),
(Arith_AddIOp:$addResult $r1, $r2, $overflow),
(Tensor_ExtractOp $addResult, (Arith_ConstantOp ConstantAttr<IndexAttr, "0">)),
]
>;
#endif // INCLUDE_DIALECT_TENSOREXT_IR_TENSOREXTPATTERNS_TD_
// (Tensor_ExtractOp
// (Arith_AddIOp
// (Tensor_ExtractOp $t1, (variadic $i1)),
// (Tensor_ExtractOp $t2, (variadic $i2))),
// (variadic $targetSlot))
// [
// (TensorExt_RotateOp:$r1 $t1, (Arith_SubIOp $i1, $targetSlot)),
// (TensorExt_RotateOp:$r2 $t2, (Arith_SubIOp $i2, $targetSlot)),
// (Arith_AddIOp:$addResult $r1, $r2),
// (Tensor_ExtractOp $addResult, $targetSlot),
// ]