@@ -18,6 +18,8 @@ include "imex/Dialect/XeTile/IR/XeTileDialect.td"
1818include "imex/Dialect/XeTile/IR/XeTileTypes.td"
1919include "imex/Dialect/XeTile/IR/XeTileAttrs.td"
2020
21+ include "mlir/Dialect/Vector/IR/VectorAttributes.td"
22+
2123// Base class for dialect operations. This operation inherits from the base
2224// `Op` class in OpBase.td, and provides:
2325// * The parent dialect of the operation.
@@ -519,5 +521,52 @@ def XeTile_AtomicRMWOp : XeTile_Op<"atomic_rmw", []> {
519521 }];
520522}
521523
524+ def XeTile_TransposeOp: XeTile_Op<"transpose", []> {
525+ let summary = "transpose a 2D vector.";
526+ let description = [{
527+ It has the same semantic with `vector.transpose`, but limits the vector to be 2D.
528+ }];
529+
530+ let arguments = (ins XeTile_2DVector: $source,
531+ DenseI64ArrayAttr:$permutation);
532+ let results = (outs XeTile_2DVector: $result);
533+ let assemblyFormat = [{
534+ $source $permutation attr-dict `:` type($source) `->` type($result)
535+ }];
536+ let hasVerifier = 1;
537+ }
538+
539+ def XeTile_ReduceOp: XeTile_Op<"reduce", []> {
540+ let summary = "performs a reduction operation over a 2D vector.";
541+ let description = [{
542+ It has the same semantics as the `vector.multi_reduction`,
543+ but restricts the vector dimension to 2D, and also the result
544+ is 2D too, with the reduced axis being 1.
545+ }];
546+
547+ let arguments = (ins Vector_CombiningKindAttr: $kind,
548+ XeTile_2DVector: $source,
549+ DenseI64ArrayAttr: $reduction_dim);
550+ let results = (outs XeTile_2DVector: $result);
551+ let assemblyFormat = [{
552+ $kind `,` $source $reduction_dim attr-dict `:` type($source) `->` type($result)
553+ }];
554+
555+ let hasVerifier = 1;
556+ }
557+
558+ def XeTile_BroadCastOp: XeTile_Op<"broadcast", []> {
559+ let summary = "broadcast a vector from 1D to 2D.";
560+
561+ let arguments = (ins XeTile_2DVector: $source,
562+ DenseI64ArrayAttr: $broadcast_dim);
563+ let results = (outs XeTile_2DVector: $result);
564+ let assemblyFormat = [{
565+ $source $broadcast_dim attr-dict `:` type($source) `->` type($result)
566+ }];
567+ let hasVerifier = 1;
568+ }
569+
570+
522571
523572#endif // _XETILE_OPS_TD_INCLUDED_
0 commit comments