Skip to content

Commit 6960b5c

Browse files
committed
Refine
1 parent e215e22 commit 6960b5c

File tree

1 file changed

+49
-105
lines changed

1 file changed

+49
-105
lines changed

mlir/lib/Dialect/XeGPU/Transforms/XeGPUWgToSgDistribute.cpp

Lines changed: 49 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -401,92 +401,6 @@ struct WgToSgElementwiseOp : public OpConversionPattern<Op> {
401401
}
402402
};
403403

404-
// ---- ARITH ops ----
405-
using WgToSgAddFOp = WgToSgElementwiseOp<arith::AddFOp>;
406-
using WgToSgSubFOp = WgToSgElementwiseOp<arith::SubFOp>;
407-
using WgToSgNegFOp = WgToSgElementwiseOp<arith::NegFOp>;
408-
using WgToSgAddIOp = WgToSgElementwiseOp<arith::AddIOp>;
409-
using WgToSgSubIOp = WgToSgElementwiseOp<arith::SubIOp>;
410-
using WgToSgMulFOp = WgToSgElementwiseOp<arith::MulFOp>;
411-
using WgToSgMulIOp = WgToSgElementwiseOp<arith::MulIOp>;
412-
using WgToSgShLIOp = WgToSgElementwiseOp<arith::ShLIOp>;
413-
using WgToSgShRSIOp = WgToSgElementwiseOp<arith::ShRSIOp>;
414-
using WgToSgShRUIOp = WgToSgElementwiseOp<arith::ShRUIOp>;
415-
using WgToSgDivFOp = WgToSgElementwiseOp<arith::DivFOp>;
416-
using WgToSgDivSIOp = WgToSgElementwiseOp<arith::DivSIOp>;
417-
using WgToSgDivUIOp = WgToSgElementwiseOp<arith::DivUIOp>;
418-
using WgToSgMaximumFOp = WgToSgElementwiseOp<arith::MaximumFOp>;
419-
using WgToSgMinimumFOp = WgToSgElementwiseOp<arith::MinimumFOp>;
420-
using WgToSgRemSIOp = WgToSgElementwiseOp<arith::RemSIOp>;
421-
using WgToSgRemUIOp = WgToSgElementwiseOp<arith::RemUIOp>;
422-
using WgToSgTruncFOp = WgToSgElementwiseOp<arith::TruncFOp>;
423-
using WgToSgTruncIOp = WgToSgElementwiseOp<arith::TruncIOp>;
424-
using WgToSgExtFOp = WgToSgElementwiseOp<arith::ExtFOp>;
425-
using WgToSgExtSIOp = WgToSgElementwiseOp<arith::ExtSIOp>;
426-
using WgToSgExtUIOp = WgToSgElementwiseOp<arith::ExtUIOp>;
427-
using WgToSgSIToFPOp = WgToSgElementwiseOp<arith::SIToFPOp>;
428-
using WgToSgUIToFPOp = WgToSgElementwiseOp<arith::UIToFPOp>;
429-
using WgToSgFPToSIOp = WgToSgElementwiseOp<arith::FPToSIOp>;
430-
using WgToSgFPToUIOp = WgToSgElementwiseOp<arith::FPToUIOp>;
431-
using WgToSgIndexCastUIOp = WgToSgElementwiseOp<arith::IndexCastUIOp>;
432-
using WgToSgIndexCastOp = WgToSgElementwiseOp<arith::IndexCastOp>;
433-
using WgToSgBitcastOp = WgToSgElementwiseOp<arith::BitcastOp>;
434-
using WgToSgCmpIOp = WgToSgElementwiseOp<arith::CmpIOp>;
435-
using WgToSgCmpFOp = WgToSgElementwiseOp<arith::CmpFOp>;
436-
using WgToSgAndIOp = WgToSgElementwiseOp<arith::AndIOp>;
437-
using WgToSgCeilDivSIOp = WgToSgElementwiseOp<arith::CeilDivSIOp>;
438-
using WgToSgCeilDivUIOp = WgToSgElementwiseOp<arith::CeilDivUIOp>;
439-
using WgToSgFloorDivSIOp = WgToSgElementwiseOp<arith::FloorDivSIOp>;
440-
using WgToSgMaxNumFOp = WgToSgElementwiseOp<arith::MaxNumFOp>;
441-
using WgToSgMaxSIOp = WgToSgElementwiseOp<arith::MaxSIOp>;
442-
using WgToSgMaxUIOp = WgToSgElementwiseOp<arith::MaxUIOp>;
443-
using WgToSgMinNumFOp = WgToSgElementwiseOp<arith::MinNumFOp>;
444-
using WgToSgMinSIOp = WgToSgElementwiseOp<arith::MinSIOp>;
445-
using WgToSgMinUIOp = WgToSgElementwiseOp<arith::MinUIOp>;
446-
using WgToSgOrIOp = WgToSgElementwiseOp<arith::OrIOp>;
447-
using WgToSgRemFOp = WgToSgElementwiseOp<arith::RemFOp>;
448-
using WgToSgSelectOp = WgToSgElementwiseOp<arith::SelectOp>;
449-
using WgToSgXOrIOp = WgToSgElementwiseOp<arith::XOrIOp>;
450-
451-
// ---- MATH ops ----
452-
using WgToSgExpOp = WgToSgElementwiseOp<math::ExpOp>;
453-
using WgToSgSqrtOp = WgToSgElementwiseOp<math::SqrtOp>;
454-
using WgToSgAbsFOp = WgToSgElementwiseOp<math::AbsFOp>;
455-
using WgToSgCosOp = WgToSgElementwiseOp<math::CosOp>;
456-
using WgToSgCoshOp = WgToSgElementwiseOp<math::CoshOp>;
457-
using WgToSgAcosOp = WgToSgElementwiseOp<math::AcosOp>;
458-
using WgToSgAcoshOp = WgToSgElementwiseOp<math::AcoshOp>;
459-
using WgToSgSinOp = WgToSgElementwiseOp<math::SinOp>;
460-
using WgToSgSinhOp = WgToSgElementwiseOp<math::SinhOp>;
461-
using WgToSgAsinOp = WgToSgElementwiseOp<math::AsinOp>;
462-
using WgToSgAsinhOp = WgToSgElementwiseOp<math::AsinhOp>;
463-
using WgToSgTanOp = WgToSgElementwiseOp<math::TanOp>;
464-
using WgToSgTanhOp = WgToSgElementwiseOp<math::TanhOp>;
465-
using WgToSgAtanOp = WgToSgElementwiseOp<math::AtanOp>;
466-
using WgToSgAtan2Op = WgToSgElementwiseOp<math::Atan2Op>;
467-
using WgToSgAtanhOp = WgToSgElementwiseOp<math::AtanhOp>;
468-
using WgToSgErfOp = WgToSgElementwiseOp<math::ErfOp>;
469-
using WgToSgLogOp = WgToSgElementwiseOp<math::LogOp>;
470-
using WgToSgLog2Op = WgToSgElementwiseOp<math::Log2Op>;
471-
using WgToSgFloorOp = WgToSgElementwiseOp<math::FloorOp>;
472-
using WgToSgCeilOp = WgToSgElementwiseOp<math::CeilOp>;
473-
using WgToSgPowFOp = WgToSgElementwiseOp<math::PowFOp>;
474-
using WgToSgRsqrtOp = WgToSgElementwiseOp<math::RsqrtOp>;
475-
using WgToSgAbsIOp = WgToSgElementwiseOp<math::AbsIOp>;
476-
using WgToSgCbrtOp = WgToSgElementwiseOp<math::CbrtOp>;
477-
using WgToSgCopySignOp = WgToSgElementwiseOp<math::CopySignOp>;
478-
using WgToSgCtPopOp = WgToSgElementwiseOp<math::CtPopOp>;
479-
using WgToSgErfcOp = WgToSgElementwiseOp<math::ErfcOp>;
480-
using WgToSgExp2Op = WgToSgElementwiseOp<math::Exp2Op>;
481-
using WgToSgExpM1Op = WgToSgElementwiseOp<math::ExpM1Op>;
482-
using WgToSgFPowIOp = WgToSgElementwiseOp<math::FPowIOp>;
483-
using WgToSgIPowIOp = WgToSgElementwiseOp<math::IPowIOp>;
484-
using WgToSgLog10Op = WgToSgElementwiseOp<math::Log10Op>;
485-
using WgToSgLog1pOp = WgToSgElementwiseOp<math::Log1pOp>;
486-
using WgToSgRoundOp = WgToSgElementwiseOp<math::RoundOp>;
487-
using WgToSgRoundEvenOp = WgToSgElementwiseOp<math::RoundEvenOp>;
488-
using WgToSgTruncOp = WgToSgElementwiseOp<math::TruncOp>;
489-
490404
} // namespace
491405

492406
namespace mlir {
@@ -497,25 +411,55 @@ void populateXeGPUWgToSgDistributePatterns(RewritePatternSet &patterns) {
497411
patterns.getContext());
498412
// Add elementwise operations that can be distributed to subgroups
499413
patterns.add<
500-
WgToSgAddFOp, WgToSgSubFOp, WgToSgExpOp, WgToSgSqrtOp, WgToSgAbsFOp,
501-
WgToSgCosOp, WgToSgCoshOp, WgToSgAcosOp, WgToSgAcoshOp, WgToSgSinOp,
502-
WgToSgSinhOp, WgToSgAsinOp, WgToSgAsinhOp, WgToSgTanOp, WgToSgTanhOp,
503-
WgToSgAtanOp, WgToSgAtan2Op, WgToSgAtanhOp, WgToSgErfOp, WgToSgLogOp,
504-
WgToSgLog2Op, WgToSgFloorOp, WgToSgCeilOp, WgToSgPowFOp, WgToSgRsqrtOp,
505-
WgToSgNegFOp, WgToSgAddIOp, WgToSgSubIOp, WgToSgMulFOp, WgToSgMulIOp,
506-
WgToSgShLIOp, WgToSgShRSIOp, WgToSgShRUIOp, WgToSgDivFOp, WgToSgDivSIOp,
507-
WgToSgDivUIOp, WgToSgMaximumFOp, WgToSgMinimumFOp, WgToSgRemSIOp,
508-
WgToSgRemUIOp, WgToSgTruncFOp, WgToSgTruncIOp, WgToSgExtFOp,
509-
WgToSgExtSIOp, WgToSgExtUIOp, WgToSgSIToFPOp, WgToSgUIToFPOp,
510-
WgToSgFPToSIOp, WgToSgFPToUIOp, WgToSgIndexCastUIOp, WgToSgIndexCastOp,
511-
WgToSgBitcastOp, WgToSgCmpIOp, WgToSgCmpFOp, WgToSgAndIOp,
512-
WgToSgCeilDivSIOp, WgToSgCeilDivUIOp, WgToSgFloorDivSIOp, WgToSgMaxNumFOp,
513-
WgToSgMaxSIOp, WgToSgMaxUIOp, WgToSgMinNumFOp, WgToSgMinSIOp,
514-
WgToSgMinUIOp, WgToSgOrIOp, WgToSgRemFOp, WgToSgSelectOp, WgToSgXOrIOp,
515-
WgToSgAbsIOp, WgToSgCbrtOp, WgToSgCopySignOp, WgToSgCtPopOp, WgToSgErfcOp,
516-
WgToSgExp2Op, WgToSgExpM1Op, WgToSgFPowIOp, WgToSgIPowIOp, WgToSgLog10Op,
517-
WgToSgLog1pOp, WgToSgRoundOp, WgToSgRoundEvenOp, WgToSgTruncOp>(
518-
patterns.getContext());
414+
WgToSgElementwiseOp<arith::AddFOp>, WgToSgElementwiseOp<arith::SubFOp>,
415+
WgToSgElementwiseOp<math::ExpOp>, WgToSgElementwiseOp<math::SqrtOp>,
416+
WgToSgElementwiseOp<math::AbsFOp>, WgToSgElementwiseOp<math::CosOp>,
417+
WgToSgElementwiseOp<math::CoshOp>, WgToSgElementwiseOp<math::AcosOp>,
418+
WgToSgElementwiseOp<math::AcoshOp>, WgToSgElementwiseOp<math::SinOp>,
419+
WgToSgElementwiseOp<math::SinhOp>, WgToSgElementwiseOp<math::AsinOp>,
420+
WgToSgElementwiseOp<math::AsinhOp>, WgToSgElementwiseOp<math::TanOp>,
421+
WgToSgElementwiseOp<math::TanhOp>, WgToSgElementwiseOp<math::AtanOp>,
422+
WgToSgElementwiseOp<math::Atan2Op>, WgToSgElementwiseOp<math::AtanhOp>,
423+
WgToSgElementwiseOp<math::ErfOp>, WgToSgElementwiseOp<math::LogOp>,
424+
WgToSgElementwiseOp<math::Log2Op>, WgToSgElementwiseOp<math::FloorOp>,
425+
WgToSgElementwiseOp<math::CeilOp>, WgToSgElementwiseOp<math::PowFOp>,
426+
WgToSgElementwiseOp<math::RsqrtOp>, WgToSgElementwiseOp<arith::NegFOp>,
427+
WgToSgElementwiseOp<arith::AddIOp>, WgToSgElementwiseOp<arith::SubIOp>,
428+
WgToSgElementwiseOp<arith::MulFOp>, WgToSgElementwiseOp<arith::MulIOp>,
429+
WgToSgElementwiseOp<arith::ShLIOp>, WgToSgElementwiseOp<arith::ShRSIOp>,
430+
WgToSgElementwiseOp<arith::ShRUIOp>, WgToSgElementwiseOp<arith::DivFOp>,
431+
WgToSgElementwiseOp<arith::DivSIOp>, WgToSgElementwiseOp<arith::DivUIOp>,
432+
WgToSgElementwiseOp<arith::MaximumFOp>,
433+
WgToSgElementwiseOp<arith::MinimumFOp>,
434+
WgToSgElementwiseOp<arith::RemSIOp>, WgToSgElementwiseOp<arith::RemUIOp>,
435+
WgToSgElementwiseOp<arith::TruncFOp>,
436+
WgToSgElementwiseOp<arith::TruncIOp>, WgToSgElementwiseOp<arith::ExtFOp>,
437+
WgToSgElementwiseOp<arith::ExtSIOp>, WgToSgElementwiseOp<arith::ExtUIOp>,
438+
WgToSgElementwiseOp<arith::SIToFPOp>,
439+
WgToSgElementwiseOp<arith::UIToFPOp>,
440+
WgToSgElementwiseOp<arith::FPToSIOp>,
441+
WgToSgElementwiseOp<arith::FPToUIOp>,
442+
WgToSgElementwiseOp<arith::IndexCastUIOp>,
443+
WgToSgElementwiseOp<arith::IndexCastOp>,
444+
WgToSgElementwiseOp<arith::BitcastOp>, WgToSgElementwiseOp<arith::CmpIOp>,
445+
WgToSgElementwiseOp<arith::CmpFOp>, WgToSgElementwiseOp<arith::AndIOp>,
446+
WgToSgElementwiseOp<arith::CeilDivSIOp>,
447+
WgToSgElementwiseOp<arith::CeilDivUIOp>,
448+
WgToSgElementwiseOp<arith::FloorDivSIOp>,
449+
WgToSgElementwiseOp<arith::MaxNumFOp>,
450+
WgToSgElementwiseOp<arith::MaxSIOp>, WgToSgElementwiseOp<arith::MaxUIOp>,
451+
WgToSgElementwiseOp<arith::MinNumFOp>,
452+
WgToSgElementwiseOp<arith::MinSIOp>, WgToSgElementwiseOp<arith::MinUIOp>,
453+
WgToSgElementwiseOp<arith::OrIOp>, WgToSgElementwiseOp<arith::RemFOp>,
454+
WgToSgElementwiseOp<arith::SelectOp>, WgToSgElementwiseOp<arith::XOrIOp>,
455+
WgToSgElementwiseOp<math::AbsIOp>, WgToSgElementwiseOp<math::CbrtOp>,
456+
WgToSgElementwiseOp<math::CopySignOp>, WgToSgElementwiseOp<math::CtPopOp>,
457+
WgToSgElementwiseOp<math::ErfcOp>, WgToSgElementwiseOp<math::Exp2Op>,
458+
WgToSgElementwiseOp<math::ExpM1Op>, WgToSgElementwiseOp<math::FPowIOp>,
459+
WgToSgElementwiseOp<math::IPowIOp>, WgToSgElementwiseOp<math::Log10Op>,
460+
WgToSgElementwiseOp<math::Log1pOp>, WgToSgElementwiseOp<math::RoundOp>,
461+
WgToSgElementwiseOp<math::RoundEvenOp>,
462+
WgToSgElementwiseOp<math::TruncOp>>(patterns.getContext());
519463
}
520464
} // namespace xegpu
521465
} // namespace mlir

0 commit comments

Comments
 (0)