55 lines
1.8 KiB
C++
55 lines
1.8 KiB
C++
|
//===- onnx_ops.cpp - MLIR ONNX Operations --------------------------------===//
|
||
|
//
|
||
|
// Copyright 2019 The IBM Research Authors.
|
||
|
//
|
||
|
// =============================================================================
|
||
|
//
|
||
|
// This file defines ONNX operations in the MLIR operation set.
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
|
||
|
#include "llvm/ADT/SetVector.h"
|
||
|
#include "llvm/ADT/SmallBitVector.h"
|
||
|
#include "mlir/IR/Block.h"
|
||
|
#include "mlir/IR/Builders.h"
|
||
|
#include "mlir/IR/Function.h"
|
||
|
#include "mlir/IR/IntegerSet.h"
|
||
|
#include "mlir/IR/Matchers.h"
|
||
|
#include "mlir/IR/OpImplementation.h"
|
||
|
#include "mlir/IR/PatternMatch.h"
|
||
|
|
||
|
#include "onnx_ops.hpp"
|
||
|
|
||
|
using namespace mlir;
|
||
|
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
// ONNXOpsDialect
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
|
||
|
/// Dialect creation, the instance will be owned by the context. This is the
|
||
|
/// point of registration of custom types and operations for the dialect.
|
||
|
ONNXOpsDialect::ONNXOpsDialect(mlir::MLIRContext* ctx)
|
||
|
: mlir::Dialect(getDialectNamespace(), ctx) {
|
||
|
addOperations<
|
||
|
#define GET_OP_LIST
|
||
|
#include "src/compiler/onnx.cpp.inc"
|
||
|
>();
|
||
|
}
|
||
|
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
// ONNX Operations
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
|
||
|
static void buildONNXAddOp(mlir::Builder* builder, mlir::OperationState& state,
|
||
|
mlir::Value* lhs, mlir::Value* rhs) {
|
||
|
state.addTypes(UnrankedTensorType::get(builder->getF32Type()));
|
||
|
state.addOperands({lhs, rhs});
|
||
|
}
|
||
|
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
// TableGen'd op method definitions
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
|
||
|
#define GET_OP_CLASSES
|
||
|
#include "src/compiler/onnx.cpp.inc"
|