in lib/Dialect/mhlo/transforms/legalize_to_linalg.cc [2843:2930]
void populateHLOToLinalgConversionPattern(MLIRContext* context,
TypeConverter& type_converter,
RewritePatternSet* patterns) {
// clang-format off
patterns->insert<
BroadcastConverter<mhlo::BroadcastOp>, ConcatenateConverter,
ConstConverterTensor, HloDynamicBroadcastInDimConverter,
HloBroadcastInDimConverter, IotaConverter<mhlo::IotaOp>,
EinsumToLinalgConverter,
IotaConverter<mhlo::DynamicIotaOp>,
PointwiseToLinalgConverter<mhlo::AbsOp>,
PointwiseToLinalgConverter<mhlo::AddOp>,
PointwiseToLinalgConverter<mhlo::AndOp>,
PointwiseToLinalgConverter<mhlo::Atan2Op>,
PointwiseToLinalgConverter<mhlo::BitcastConvertOp>,
PointwiseToLinalgConverter<mhlo::CbrtOp>,
PointwiseToLinalgConverter<mhlo::CeilOp>,
PointwiseToLinalgConverter<mhlo::ClampOp>,
PointwiseToLinalgConverter<mhlo::CompareOp>,
PointwiseToLinalgConverter<mhlo::ComplexOp>,
PointwiseToLinalgConverter<mhlo::ConvertOp>,
PointwiseToLinalgConverter<mhlo::CopyOp>,
PointwiseToLinalgConverter<mhlo::CosOp>,
PointwiseToLinalgConverter<mhlo::DivOp>,
PointwiseToLinalgConverter<mhlo::ExpOp>,
PointwiseToLinalgConverter<mhlo::Expm1Op>,
PointwiseToLinalgConverter<mhlo::FloorOp>,
PointwiseToLinalgConverter<mhlo::ImagOp>,
PointwiseToLinalgConverter<mhlo::IsFiniteOp>,
PointwiseToLinalgConverter<mhlo::LogOp>,
PointwiseToLinalgConverter<mhlo::LogisticOp>,
PointwiseToLinalgConverter<mhlo::Log1pOp>,
PointwiseToLinalgConverter<mhlo::MaxOp>,
PointwiseToLinalgConverter<mhlo::MinOp>,
PointwiseToLinalgConverter<mhlo::MulOp>,
PointwiseToLinalgConverter<mhlo::NegOp>,
PointwiseToLinalgConverter<mhlo::NotOp>,
PointwiseToLinalgConverter<mhlo::OrOp>,
PointwiseToLinalgConverter<mhlo::PopulationCountOp>,
PointwiseToLinalgConverter<mhlo::PowOp>,
PointwiseToLinalgConverter<mhlo::RealOp>,
PointwiseToLinalgConverter<mhlo::RemOp>,
PointwiseToLinalgConverter<mhlo::RoundOp>,
PointwiseToLinalgConverter<mhlo::RsqrtOp>,
PointwiseToLinalgConverter<mhlo::SelectOp>,
PointwiseToLinalgConverter<mhlo::ShiftLeftOp>,
PointwiseToLinalgConverter<mhlo::ShiftRightArithmeticOp>,
PointwiseToLinalgConverter<mhlo::ShiftRightLogicalOp>,
PointwiseToLinalgConverter<mhlo::SignOp>,
PointwiseToLinalgConverter<mhlo::SinOp>,
PointwiseToLinalgConverter<mhlo::SqrtOp>,
PointwiseToLinalgConverter<mhlo::SubOp>,
PointwiseToLinalgConverter<mhlo::TanhOp>,
PointwiseToLinalgConverter<mhlo::XorOp>,
RealDynamicSliceConverter,
ReshapeOpConverter,
ReverseConverter,
SliceConverter,
DynamicSliceConverter,
DynamicUpdateSliceConverter,
TransposeConverter<mhlo::TransposeOp>,
DotOpConversion<DotOperationType::kMatrixMatrix, linalg::MatmulOp>,
DotOpConversion<DotOperationType::kMatrixVector, linalg::MatvecOp>,
DotOpConversion<DotOperationType::kVectorMatrix, linalg::VecmatOp>,
DotOpConversion<DotOperationType::kVectorDot, linalg::DotOp>,
DotGeneralOpConversion,
NormalConvOpConversion,
DepthwiseConvOpConversion,
ReduceConversion,
ReduceWindowOpOnTensorsGenericConversion,
ReduceWindowOpConversion,
RngUniformConversion,
ScatterUpdateConversion,
GatherConversion,
TorchIndexSelectOpConversion,
PadOpConversion>(type_converter, context);
// clang-format on
patterns->insert<ReduceRegionXLAOpConversion<mhlo::AddOp>,
ReduceRegionXLAOpConversion<mhlo::AndOp>,
ReduceRegionXLAOpConversion<mhlo::CompareOp>,
ReduceRegionXLAOpConversion<mhlo::MaxOp>,
ReduceRegionXLAOpConversion<mhlo::MinOp>,
ReduceRegionXLAOpConversion<mhlo::MulOp>,
ReduceRegionXLAOpConversion<mhlo::OrOp>,
ReduceRegionXLAOpConversion<mhlo::SelectOp>,
ReduceRegionReturnOpConversion>(context,
PatternBenefit(1000));
}