@@ -538,15 +538,8 @@ class ConversionPattern : public RewritePattern {
538
538
ConversionPatternRewriter &rewriter) const {
539
539
llvm_unreachable (" unimplemented rewrite" );
540
540
}
541
- virtual void rewrite (Operation *op, ArrayRef<ValueRange> operands,
542
- ConversionPatternRewriter &rewriter) const {
543
- rewrite (op, getOneToOneAdaptorOperands (operands), rewriter);
544
- }
545
541
546
542
// / Hook for derived classes to implement combined matching and rewriting.
547
- // / This overload supports only 1:1 replacements. The 1:N overload is called
548
- // / by the driver. By default, it calls this 1:1 overload or reports a fatal
549
- // / error if 1:N replacements were found.
550
543
virtual LogicalResult
551
544
matchAndRewrite (Operation *op, ArrayRef<Value> operands,
552
545
ConversionPatternRewriter &rewriter) const {
@@ -556,14 +549,6 @@ class ConversionPattern : public RewritePattern {
556
549
return success ();
557
550
}
558
551
559
- // / Hook for derived classes to implement combined matching and rewriting.
560
- // / This overload supports 1:N replacements.
561
- virtual LogicalResult
562
- matchAndRewrite (Operation *op, ArrayRef<ValueRange> operands,
563
- ConversionPatternRewriter &rewriter) const {
564
- return matchAndRewrite (op, getOneToOneAdaptorOperands (operands), rewriter);
565
- }
566
-
567
552
// / Attempt to match and rewrite the IR root at the specified operation.
568
553
LogicalResult matchAndRewrite (Operation *op,
569
554
PatternRewriter &rewriter) const final ;
@@ -590,15 +575,6 @@ class ConversionPattern : public RewritePattern {
590
575
: RewritePattern(std::forward<Args>(args)...),
591
576
typeConverter (&typeConverter) {}
592
577
593
- // / Given an array of value ranges, which are the inputs to a 1:N adaptor,
594
- // / try to extract the single value of each range to construct a the inputs
595
- // / for a 1:1 adaptor.
596
- // /
597
- // / This function produces a fatal error if at least one range has 0 or
598
- // / more than 1 value: "pattern 'name' does not support 1:N conversion"
599
- SmallVector<Value>
600
- getOneToOneAdaptorOperands (ArrayRef<ValueRange> operands) const ;
601
-
602
578
protected:
603
579
// / An optional type converter for use by this pattern.
604
580
const TypeConverter *typeConverter = nullptr ;
@@ -614,8 +590,6 @@ template <typename SourceOp>
614
590
class OpConversionPattern : public ConversionPattern {
615
591
public:
616
592
using OpAdaptor = typename SourceOp::Adaptor;
617
- using OneToNOpAdaptor =
618
- typename SourceOp::template GenericAdaptor<ArrayRef<ValueRange>>;
619
593
620
594
OpConversionPattern (MLIRContext *context, PatternBenefit benefit = 1 )
621
595
: ConversionPattern(SourceOp::getOperationName(), benefit, context) {}
@@ -634,24 +608,12 @@ class OpConversionPattern : public ConversionPattern {
634
608
auto sourceOp = cast<SourceOp>(op);
635
609
rewrite (sourceOp, OpAdaptor (operands, sourceOp), rewriter);
636
610
}
637
- void rewrite (Operation *op, ArrayRef<ValueRange> operands,
638
- ConversionPatternRewriter &rewriter) const final {
639
- auto sourceOp = cast<SourceOp>(op);
640
- rewrite (sourceOp, OneToNOpAdaptor (operands, sourceOp), rewriter);
641
- }
642
611
LogicalResult
643
612
matchAndRewrite (Operation *op, ArrayRef<Value> operands,
644
613
ConversionPatternRewriter &rewriter) const final {
645
614
auto sourceOp = cast<SourceOp>(op);
646
615
return matchAndRewrite (sourceOp, OpAdaptor (operands, sourceOp), rewriter);
647
616
}
648
- LogicalResult
649
- matchAndRewrite (Operation *op, ArrayRef<ValueRange> operands,
650
- ConversionPatternRewriter &rewriter) const final {
651
- auto sourceOp = cast<SourceOp>(op);
652
- return matchAndRewrite (sourceOp, OneToNOpAdaptor (operands, sourceOp),
653
- rewriter);
654
- }
655
617
656
618
// / Rewrite and Match methods that operate on the SourceOp type. These must be
657
619
// / overridden by the derived pattern class.
@@ -662,12 +624,6 @@ class OpConversionPattern : public ConversionPattern {
662
624
ConversionPatternRewriter &rewriter) const {
663
625
llvm_unreachable (" must override matchAndRewrite or a rewrite method" );
664
626
}
665
- virtual void rewrite (SourceOp op, OneToNOpAdaptor adaptor,
666
- ConversionPatternRewriter &rewriter) const {
667
- SmallVector<Value> oneToOneOperands =
668
- getOneToOneAdaptorOperands (adaptor.getOperands ());
669
- rewrite (op, OpAdaptor (oneToOneOperands, adaptor), rewriter);
670
- }
671
627
virtual LogicalResult
672
628
matchAndRewrite (SourceOp op, OpAdaptor adaptor,
673
629
ConversionPatternRewriter &rewriter) const {
@@ -676,13 +632,6 @@ class OpConversionPattern : public ConversionPattern {
676
632
rewrite (op, adaptor, rewriter);
677
633
return success ();
678
634
}
679
- virtual LogicalResult
680
- matchAndRewrite (SourceOp op, OneToNOpAdaptor adaptor,
681
- ConversionPatternRewriter &rewriter) const {
682
- SmallVector<Value> oneToOneOperands =
683
- getOneToOneAdaptorOperands (adaptor.getOperands ());
684
- return matchAndRewrite (op, OpAdaptor (oneToOneOperands, adaptor), rewriter);
685
- }
686
635
687
636
private:
688
637
using ConversionPattern::matchAndRewrite;
@@ -708,31 +657,18 @@ class OpInterfaceConversionPattern : public ConversionPattern {
708
657
ConversionPatternRewriter &rewriter) const final {
709
658
rewrite (cast<SourceOp>(op), operands, rewriter);
710
659
}
711
- void rewrite (Operation *op, ArrayRef<ValueRange> operands,
712
- ConversionPatternRewriter &rewriter) const final {
713
- rewrite (cast<SourceOp>(op), operands, rewriter);
714
- }
715
660
LogicalResult
716
661
matchAndRewrite (Operation *op, ArrayRef<Value> operands,
717
662
ConversionPatternRewriter &rewriter) const final {
718
663
return matchAndRewrite (cast<SourceOp>(op), operands, rewriter);
719
664
}
720
- LogicalResult
721
- matchAndRewrite (Operation *op, ArrayRef<ValueRange> operands,
722
- ConversionPatternRewriter &rewriter) const final {
723
- return matchAndRewrite (cast<SourceOp>(op), operands, rewriter);
724
- }
725
665
726
666
// / Rewrite and Match methods that operate on the SourceOp type. These must be
727
667
// / overridden by the derived pattern class.
728
668
virtual void rewrite (SourceOp op, ArrayRef<Value> operands,
729
669
ConversionPatternRewriter &rewriter) const {
730
670
llvm_unreachable (" must override matchAndRewrite or a rewrite method" );
731
671
}
732
- virtual void rewrite (SourceOp op, ArrayRef<ValueRange> operands,
733
- ConversionPatternRewriter &rewriter) const {
734
- rewrite (op, getOneToOneAdaptorOperands (operands), rewriter);
735
- }
736
672
virtual LogicalResult
737
673
matchAndRewrite (SourceOp op, ArrayRef<Value> operands,
738
674
ConversionPatternRewriter &rewriter) const {
@@ -741,11 +677,6 @@ class OpInterfaceConversionPattern : public ConversionPattern {
741
677
rewrite (op, operands, rewriter);
742
678
return success ();
743
679
}
744
- virtual LogicalResult
745
- matchAndRewrite (SourceOp op, ArrayRef<ValueRange> operands,
746
- ConversionPatternRewriter &rewriter) const {
747
- return matchAndRewrite (op, getOneToOneAdaptorOperands (operands), rewriter);
748
- }
749
680
750
681
private:
751
682
using ConversionPattern::matchAndRewrite;
0 commit comments