2019-11-13 02:37:46 +08:00
|
|
|
//===- ONNXCombine.cpp - ONNX High Level Optimizer ------------------------===//
|
|
|
|
//
|
|
|
|
// Copyright 2019 The IBM Research Authors.
|
|
|
|
//
|
|
|
|
// =============================================================================
|
|
|
|
//
|
|
|
|
// This file implements a set of simple combiners for optimizing operations in
|
|
|
|
// the ONNX dialect.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
|
|
#include "mlir/IR/Matchers.h"
|
|
|
|
#include "mlir/IR/PatternMatch.h"
|
|
|
|
|
|
|
|
#include <numeric>
|
2019-12-23 13:13:52 +08:00
|
|
|
#include "src/dialect/onnx/onnx_ops.hpp"
|
2019-11-13 02:37:46 +08:00
|
|
|
|
|
|
|
using namespace mlir;
|
|
|
|
|
|
|
|
namespace {
|
|
|
|
/// Include the patterns defined in the Declarative Rewrite framework.
|
2019-12-23 13:13:52 +08:00
|
|
|
#include "src/onnx_combine.inc"
|
2019-11-13 02:37:46 +08:00
|
|
|
} // end anonymous namespace
|
|
|
|
|
|
|
|
/// Register optimization patterns as "canonicalization" patterns
|
|
|
|
/// on the ONNXMatMultOp.
|
|
|
|
void ONNXAddOp::getCanonicalizationPatterns(
|
|
|
|
OwningRewritePatternList& results, MLIRContext* context) {
|
|
|
|
results.insert<MulAddToGemmOptPattern>(context);
|
|
|
|
}
|
2020-02-24 23:46:48 +08:00
|
|
|
|
|
|
|
void ONNXGemmOp::getCanonicalizationPatterns(
|
|
|
|
OwningRewritePatternList& results, MLIRContext* context) {
|
|
|
|
results.insert<FuseGemmFollowedByAddition>(context);
|
|
|
|
}
|
2019-11-21 10:57:13 +08:00
|
|
|
/// on the ONNXIdentityOp.
|
|
|
|
void ONNXIdentityOp::getCanonicalizationPatterns(
|
|
|
|
OwningRewritePatternList& results, MLIRContext* context) {
|
|
|
|
results.insert<IdentityEliminationPattern>(context);
|
|
|
|
}
|
2020-02-12 04:32:01 +08:00
|
|
|
|
|
|
|
///on the ONNXPadConstantValueOp.
|
|
|
|
void ONNXPadConstantValueOp::getCanonicalizationPatterns(
|
|
|
|
OwningRewritePatternList& result, MLIRContext* context) {
|
|
|
|
result.insert<ConstantPadPattern>(context);
|
|
|
|
}
|