[llvm-branch-commits] [mlir] 4600d68 - Initial commit to add ops into MIOpen dialect.
Wen-Heng Chung via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Oct 22 13:20:08 PDT 2020
Author: Wen-Heng (Jack) Chung
Date: 2020-06-05T22:18:19-05:00
New Revision: 4600d68a403647ea41eca5c62616d7abd77d9281
URL: https://github.com/llvm/llvm-project/commit/4600d68a403647ea41eca5c62616d7abd77d9281
DIFF: https://github.com/llvm/llvm-project/commit/4600d68a403647ea41eca5c62616d7abd77d9281.diff
LOG: Initial commit to add ops into MIOpen dialect.
- conv2d
- transform
- gridwise_gemm
add dummy parse / print / verify logic.
add dummy test.
Added:
mlir/include/mlir/Dialect/MIOpenOps/MIOpenOps.td
mlir/test/Dialect/MIOpen/ops.mlir
Modified:
mlir/include/mlir/Dialect/MIOpenOps/MIOpenOps.h
mlir/lib/Dialect/MIOpenOps/CMakeLists.txt
mlir/lib/Dialect/MIOpenOps/MIOpenOps.cpp
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/MIOpenOps/MIOpenOps.h b/mlir/include/mlir/Dialect/MIOpenOps/MIOpenOps.h
index e0c36c23a854..47341c1637b1 100644
--- a/mlir/include/mlir/Dialect/MIOpenOps/MIOpenOps.h
+++ b/mlir/include/mlir/Dialect/MIOpenOps/MIOpenOps.h
@@ -28,8 +28,8 @@ class MIOpenOpsDialect : public Dialect {
static StringRef getDialectNamespace() { return "miopen"; }
};
-//#define GET_OP_CLASSES
-//#include "mlir/Dialect/MIOpenOps/MIOpenOps.h.inc"
+#define GET_OP_CLASSES
+#include "mlir/Dialect/MIOpenOps/MIOpenOps.h.inc"
} // end namespace miopen
} // end namespace mlir
diff --git a/mlir/include/mlir/Dialect/MIOpenOps/MIOpenOps.td b/mlir/include/mlir/Dialect/MIOpenOps/MIOpenOps.td
new file mode 100644
index 000000000000..1304f16f3b30
--- /dev/null
+++ b/mlir/include/mlir/Dialect/MIOpenOps/MIOpenOps.td
@@ -0,0 +1,44 @@
+//===- MIOpenOps.td - MIOpen operation definitions ---------*- tablegen -*-===//
+//
+// Part of the MLIR Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Defines MLIR MIOpen operations.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef MIOPEN_OPS
+#define MIOPEN_OPS
+
+include "mlir/IR/OpBase.td"
+//include "mlir/Transforms/LoopLikeInterface.td"
+
+def MIOpen_Dialect : Dialect {
+ let name = "miopen";
+ let cppNamespace = "";
+}
+
+// Base class for MIOpen dialect ops.
+class MIOpen_Op<string mnemonic, list<OpTrait> traits = []> :
+ Op<MIOpen_Dialect, mnemonic, traits> {
+ // For every standard op, there needs to be a:
+ // * void print(OpAsmPrinter &p, ${C++ class of Op} op)
+ // * LogicalResult verify(${C++ class of Op} op)
+ // * ParseResult parse${C++ class of Op}(OpAsmParser &parser,
+ // OperationState &result)
+ // functions.
+ let printer = [{ return ::print(p, *this); }];
+ let verifier = [{ return ::verify(*this); }];
+ let parser = [{ return ::parse$cppClass(parser, result); }];
+}
+
+def MIOpen_Conv2DOp : MIOpen_Op<"conv2d">;
+
+def MIOpen_TransformOp : MIOpen_Op<"transform">;
+
+def MIOpen_GridwiseGemmOp : MIOpen_Op<"gridwise_gemm">;
+
+#endif // MIOPEN_OPS
diff --git a/mlir/lib/Dialect/MIOpenOps/CMakeLists.txt b/mlir/lib/Dialect/MIOpenOps/CMakeLists.txt
index 474196162792..ba32051bbb39 100644
--- a/mlir/lib/Dialect/MIOpenOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/MIOpenOps/CMakeLists.txt
@@ -5,5 +5,5 @@ add_llvm_library(MLIRMIOpenOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/MIOpenOps
)
-add_dependencies(MLIRMIOpenOps MLIRStandardOps LLVMSupport)
+add_dependencies(MLIRMIOpenOps MLIRMIOpenOpsIncGen MLIRStandardOps LLVMSupport)
target_link_libraries(MLIRMIOpenOps LLVMSupport)
diff --git a/mlir/lib/Dialect/MIOpenOps/MIOpenOps.cpp b/mlir/lib/Dialect/MIOpenOps/MIOpenOps.cpp
index ced4d25e866f..9408e17b2831 100644
--- a/mlir/lib/Dialect/MIOpenOps/MIOpenOps.cpp
+++ b/mlir/lib/Dialect/MIOpenOps/MIOpenOps.cpp
@@ -36,17 +36,65 @@ namespace {
MIOpenOpsDialect::MIOpenOpsDialect(MLIRContext *context)
: Dialect(getDialectNamespace(), context) {
-// addOperations<
-//#define GET_OP_LIST
-//#include "mlir/Dialect/MIOpenOps/MIOpenOps.cpp.inc"
-// >();
+ addOperations<
+#define GET_OP_LIST
+#include "mlir/Dialect/MIOpenOps/MIOpenOps.cpp.inc"
+ >();
//addInterfaces<LoopSideEffectsInterface>();
}
+//===----------------------------------------------------------------------===//
+// Conv2DOp
+//===----------------------------------------------------------------------===//
+
+static ParseResult parseConv2DOp(OpAsmParser &parser, OperationState &result) {
+ return success();
+}
+
+static void print(OpAsmPrinter &p, Conv2DOp op) {
+ p << Conv2DOp::getOperationName();
+}
+
+static LogicalResult verify(Conv2DOp op) {
+ return success();
+}
+
+//===----------------------------------------------------------------------===//
+// TransformOp
+//===----------------------------------------------------------------------===//
+
+static ParseResult parseTransformOp(OpAsmParser &parser, OperationState &result) {
+ return success();
+}
+
+static void print(OpAsmPrinter &p, TransformOp op) {
+ p << TransformOp::getOperationName();
+}
+
+static LogicalResult verify(TransformOp op) {
+ return success();
+}
+
+//===----------------------------------------------------------------------===//
+// GridwiseGemmOp
+//===----------------------------------------------------------------------===//
+
+static ParseResult parseGridwiseGemmOp(OpAsmParser &parser, OperationState &result) {
+ return success();
+}
+
+static void print(OpAsmPrinter &p, GridwiseGemmOp op) {
+ p << GridwiseGemmOp::getOperationName();
+}
+
+static LogicalResult verify(GridwiseGemmOp op) {
+ return success();
+}
+
//===----------------------------------------------------------------------===//
// TableGen'd op method definitions
//===----------------------------------------------------------------------===//
-//#define GET_OP_CLASSES
-//#include "mlir/Dialect/MIOpenOps/MIOpenOps.cpp.inc"
+#define GET_OP_CLASSES
+#include "mlir/Dialect/MIOpenOps/MIOpenOps.cpp.inc"
diff --git a/mlir/test/Dialect/MIOpen/ops.mlir b/mlir/test/Dialect/MIOpen/ops.mlir
new file mode 100644
index 000000000000..a37e54110186
--- /dev/null
+++ b/mlir/test/Dialect/MIOpen/ops.mlir
@@ -0,0 +1,26 @@
+// RUN: mlir-opt %s | FileCheck %s
+// RUN: mlir-opt %s | mlir-opt | FileCheck %s
+// Run: mlir-opt -mlir-print-op-generic %s | mlir-opt | FileCheck %s
+
+func @miopen_conv2d(%filter : memref<?x?x?x?xf32>, %input : memref<?x?x?x?xf32>, %output : memref<?x?x?x?xf32>) {
+ miopen.conv2d
+ return
+}
+// CHECK-LABEL: func @miopen_conv2d
+// CHECK-NEXT: miopen.conv2d
+
+func @miopen_transform(%memref : memref<?x?x?x?xf32>) {
+ miopen.transform
+ return
+}
+
+// CHECK-LABEL: func @miopen_transform
+// CHECK-NEXT: miopen.transform
+
+func @miopen_gridwise_gemm(%A : memref<?x?xf32>, %B : memref<?x?xf32>, %C : memref<?x?xf32>) {
+ miopen.gridwise_gemm
+ return
+}
+
+// CHECK-LABEL: func @miopen_gridwise_gemm
+// CHECK-NEXT: miopen.gridwise_gemm
More information about the llvm-branch-commits
mailing list