Skip to content

Commit f296884

Browse files
committed
[GPU] Add XeVM dialect declaration
1 parent 8716a7d commit f296884

File tree

8 files changed

+122
-0
lines changed

8 files changed

+122
-0
lines changed

include/gc/Dialect/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ add_subdirectory(CPURuntime)
22
add_subdirectory(OneDNNGraph)
33
add_subdirectory(Microkernel)
44
add_subdirectory(Linalgx)
5+
add_subdirectory(LLVMIR)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
add_mlir_dialect(XeVMOps xevm)
2+
add_mlir_doc(XeVMOps XeVMDialect Dialects/ -gen-dialect-doc -dialect=xevm)
3+
set(LLVM_TARGET_DEFINITIONS XeVMOps.td)
4+
mlir_tablegen(XeVMOpsEnums.h.inc -gen-enum-decls)
5+
mlir_tablegen(XeVMOpsEnums.cpp.inc -gen-enum-defs)
6+
mlir_tablegen(XeVMOpsAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=xevm)
7+
mlir_tablegen(XeVMOpsAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=xevm)
8+
add_public_tablegen_target(MLIRXeVMConversionsIncGen)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//===-- XeVMDialect.h - MLIR XeVM target definitions ------------*- C++ -*-===//
2+
//
3+
// This file is licensed under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#ifndef MLIR_DIALECT_LLVMIR_XEVMDIALECT_H_
10+
#define MLIR_DIALECT_LLVMIR_XEVMDIALECT_H_
11+
12+
#include "mlir/Bytecode/BytecodeOpInterface.h"
13+
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
14+
#include "mlir/IR/Dialect.h"
15+
#include "mlir/IR/OpDefinition.h"
16+
17+
#define GET_ATTRDEF_CLASSES
18+
#include "gc/Dialect/LLVMIR/XeVMOpsAttributes.h.inc"
19+
20+
#define GET_OP_CLASSES
21+
#include "gc/Dialect/LLVMIR/XeVMOps.h.inc"
22+
23+
#include "gc/Dialect/LLVMIR/XeVMOpsDialect.h.inc"
24+
25+
#endif /* MLIR_DIALECT_LLVMIR_XEVMDIALECT_H_ */

include/gc/Dialect/LLVMIR/XeVMOps.td

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//===-- XeVMOps.td - XeVM dialect definition ---------------*- tablegen -*-===//
2+
//
3+
// This file is licensed under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
#ifndef XEVMIR_OPS
9+
#define XEVMIR_OPS
10+
11+
include "mlir/Dialect/GPU/IR/CompilationAttrInterfaces.td"
12+
include "mlir/Dialect/LLVMIR/LLVMOpBase.td"
13+
include "mlir/Interfaces/SideEffectInterfaces.td"
14+
15+
def XeVM_Dialect : Dialect {
16+
let name = "xevm";
17+
let cppNamespace = "::mlir::xevm";
18+
let dependentDialects = ["LLVM::LLVMDialect"];
19+
let useDefaultAttributePrinterParser = 1;
20+
}
21+
22+
class XeVM_Attr<string attrName, string attrMnemonic, list<Trait> traits = []>
23+
: AttrDef<XeVM_Dialect, attrName, traits> {
24+
let mnemonic = attrMnemonic;
25+
}
26+
27+
def XeVM_TargettAttr : XeVM_Attr<"XeVMTarget", "target"> {}
28+
29+
#endif // XEVMIR_OPS

lib/gc/Dialect/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ add_subdirectory(CPURuntime)
22
add_subdirectory(Linalgx)
33
add_subdirectory(Microkernel)
44
add_subdirectory(OneDNNGraph)
5+
add_subdirectory(LLVMIR)

lib/gc/Dialect/LLVMIR/CMakeLists.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
gc_add_mlir_dialect_library(MLIRXeVMDialect
2+
IR/XeVMDialect.cpp
3+
4+
ADDITIONAL_HEADER_DIRS
5+
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/LLVMIR
6+
${PROJECT_SOURCE_DIR}/include/gc/Dialect/LLVMIR
7+
8+
DEPENDS
9+
MLIRXeVMConversionsIncGen
10+
11+
LINK_COMPONENTS
12+
AsmParser
13+
Core
14+
15+
LINK_LIBS PUBLIC
16+
MLIRIR
17+
MLIRLLVMDialect
18+
MLIRSideEffectInterfaces
19+
GcInterface
20+
)
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
//===-- XeVMDialect.cpp - XeVM dialect registration -------------*- C++ -*-===//
2+
//
3+
// This file is licensed under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
#include "gc/Dialect/LLVMIR/XeVMDialect.h"
9+
10+
#include "mlir/Dialect/GPU/IR/CompilationInterfaces.h"
11+
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
12+
#include "mlir/IR/DialectImplementation.h"
13+
#include "llvm/ADT/TypeSwitch.h"
14+
15+
using namespace mlir;
16+
using namespace xevm;
17+
18+
#include "gc/Dialect/LLVMIR/XeVMOpsDialect.cpp.inc"
19+
20+
void XeVMDialect::initialize() {
21+
addOperations<
22+
#define GET_OP_LIST
23+
#include "gc/Dialect/LLVMIR/XeVMOps.cpp.inc"
24+
>();
25+
26+
addAttributes<
27+
#define GET_ATTRDEF_LIST
28+
#include "gc/Dialect/LLVMIR/XeVMOpsAttributes.cpp.inc"
29+
>();
30+
}
31+
32+
#define GET_OP_CLASSES
33+
#include "gc/Dialect/LLVMIR/XeVMOps.cpp.inc"
34+
35+
#define GET_ATTRDEF_CLASSES
36+
#include "gc/Dialect/LLVMIR/XeVMOpsAttributes.cpp.inc"

src/gc-opt/gc-opt.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919

2020
#include "gc/Dialect/CPURuntime/Transforms/CPURuntimePasses.h"
21+
#include "gc/Dialect/LLVMIR/XeVMDialect.h"
2122
#include "gc/Dialect/Linalgx/LinalgxDialect.h"
2223
#include "gc/Dialect/Microkernel/MicrokernelDialect.h"
2324
#ifdef GC_HAS_ONEDNN_DIALECT
@@ -65,6 +66,7 @@ int main(int argc, char *argv[]) {
6566
registry.insert<mlir::cpuruntime::CPURuntimeDialect>();
6667
registry.insert<mlir::linalgx::LinalgxDialect>();
6768
registry.insert<mlir::microkernel::MicrokernelDialect>();
69+
registry.insert<mlir::xevm::XeVMDialect>();
6870
mlir::registerAllDialects(registry);
6971
#ifdef GC_USE_IMEX
7072
registry.insert<::imex::xetile::XeTileDialect, ::imex::gpux::GPUXDialect>();

0 commit comments

Comments
 (0)