39 ConversionPatternRewriter &,
41 llvm::type_identity_t<ExtraArgs>... args) {
44 LogicalResult (*implFn)(Op,
typename Op::Adaptor,
45 ConversionPatternRewriter &, ExtraArgs...);
46 std::tuple<ExtraArgs...> extraArgs;
48 FnPattern(
const TypeConverter &tc, MLIRContext *ctx,
49 LogicalResult (*implFn)(Op,
typename Op::Adaptor,
50 ConversionPatternRewriter &,
57 matchAndRewrite(Op op,
typename Op::Adaptor adaptor,
58 ConversionPatternRewriter &rewriter)
const override {
60 implFn, std::tuple_cat(std::tie(op, adaptor, rewriter), extraArgs));
74 ConversionPatternRewriter &,
75 const TypeConverter &,
77 llvm::type_identity_t<ExtraArgs>... args) {
80 LogicalResult (*implFn)(Op,
typename Op::Adaptor,
81 ConversionPatternRewriter &,
82 const TypeConverter &, ExtraArgs...);
83 std::tuple<ExtraArgs...> extraArgs;
85 FnPattern(
const TypeConverter &tc, MLIRContext *ctx,
86 LogicalResult (*implFn)(Op,
typename Op::Adaptor,
87 ConversionPatternRewriter &,
88 const TypeConverter &, ExtraArgs...),
94 matchAndRewrite(Op op,
typename Op::Adaptor adaptor,
95 ConversionPatternRewriter &rewriter)
const override {
97 implFn, std::tuple_cat(std::tie(op, adaptor, rewriter),
98 std::tie(*this->typeConverter), extraArgs));