Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,9 @@
/mlir/lib/Dialect/Vector/Transforms/VectorEmulateNarrowType.cpp @banach-space @dcaballe @MaheshRavishankar @nicolasvasilache
/mlir/**/*EmulateNarrowType* @dcaballe

# Polygeist dialect in MLIR
/mlir/**/*Polygeist* @wsmoses @ftynse @ivanradanov @chelini

# Presburger library in MLIR
/mlir/**/*Presburger* @Groverkss @Superty

Expand Down
1 change: 1 addition & 0 deletions mlir/include/mlir/Dialect/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ add_subdirectory(OpenACCMPCommon)
add_subdirectory(OpenMP)
add_subdirectory(PDL)
add_subdirectory(PDLInterp)
add_subdirectory(Polygeist)
add_subdirectory(Ptr)
add_subdirectory(Quant)
add_subdirectory(SCF)
Expand Down
1 change: 1 addition & 0 deletions mlir/include/mlir/Dialect/Polygeist/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
add_subdirectory(IR)
3 changes: 3 additions & 0 deletions mlir/include/mlir/Dialect/Polygeist/IR/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
set(LLVM_TARGET_DEFINITIONS PolygeistOps.td)
add_mlir_dialect(PolygeistOps polygeist)
add_mlir_doc(PolygeistOps PolygeistOps Dialects/ -gen-dialect-doc)
15 changes: 15 additions & 0 deletions mlir/include/mlir/Dialect/Polygeist/IR/Polygeist.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#ifndef MLIR_DIALECT_POLYGEIST_IR_POLYGEIST_H_
#define MLIR_DIALECT_POLYGEIST_IR_POLYGEIST_H_

#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
#include "mlir/IR/Dialect.h"
#include "mlir/IR/OpDefinition.h"
#include "mlir/Interfaces/SideEffectInterfaces.h"
#include "mlir/Interfaces/ViewLikeInterface.h"

#include "mlir/Dialect/Polygeist/IR/PolygeistOpsDialect.h.inc"

#define GET_OP_CLASSES
#include "mlir/Dialect/Polygeist/IR/PolygeistOps.h.inc"

#endif // MLIR_DIALECT_POLYGEIST_IR_POLYGEIST_H_
15 changes: 15 additions & 0 deletions mlir/include/mlir/Dialect/Polygeist/IR/PolygeistBase.td
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#ifndef POLYGEIST_BASE
#define POLYGEIST_BASE

include "mlir/IR/OpBase.td"

def Polygeist_Dialect : Dialect {
let name = "polygeist";
let cppNamespace = "::mlir::polygeist";
let summary = "The Polygeist dialect.";
let description = [{
The Polygeist dialect contains operations for raising low-level code to higher-level forms, and performing parallel and device transformations (including polyhedral).
}];
}

#endif // POLYGEIST_BASE
40 changes: 40 additions & 0 deletions mlir/include/mlir/Dialect/Polygeist/IR/PolygeistOps.td
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#ifndef POLYGEIST_OPS
#define POLYGEIST_OPS

include "mlir/IR/OpBase.td"
include "mlir/Interfaces/ViewLikeInterface.td"
include "mlir/Interfaces/SideEffectInterfaces.td"
include "mlir/Dialect/LLVMIR/LLVMOpBase.td"
include "mlir/Dialect/Polygeist/IR/PolygeistBase.td"

def Memref2PointerOp
: Op<Polygeist_Dialect, "memref2pointer", [ViewLikeOpInterface, Pure]> {
let summary = "Extract an LLVM pointer from a MemRef";

let arguments = (ins AnyMemRef:$source);
let results = (outs LLVM_AnyPointer:$result);

let hasFolder = 1;
let hasCanonicalizer = 1;

let extraClassDeclaration = [{
::mlir::Value getViewSource() { return getSource(); }
}];
}

def Pointer2MemrefOp
: Op<Polygeist_Dialect, "pointer2memref", [ViewLikeOpInterface, Pure]> {
let summary = "Upgrade a pointer to a memref";

let arguments = (ins LLVM_AnyPointer:$source);
let results = (outs AnyMemRef:$result);

let hasFolder = 1;
let hasCanonicalizer = 1;

let extraClassDeclaration = [{
::mlir::Value getViewSource() { return getSource(); }
}];
}

#endif // POLYGEIST_OPS
1 change: 1 addition & 0 deletions mlir/lib/Dialect/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ add_subdirectory(OpenACCMPCommon)
add_subdirectory(OpenMP)
add_subdirectory(PDL)
add_subdirectory(PDLInterp)
add_subdirectory(Polygeist)
add_subdirectory(Ptr)
add_subdirectory(Quant)
add_subdirectory(SCF)
Expand Down
1 change: 1 addition & 0 deletions mlir/lib/Dialect/Polygeist/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
add_subdirectory(IR)
19 changes: 19 additions & 0 deletions mlir/lib/Dialect/Polygeist/IR/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
add_mlir_dialect_library(MLIRPolygeistDialect
PolygeistOps.cpp
PolygeistDialect.cpp

ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Polygeist

DEPENDS
MLIRPolygeistOpsIncGen

LINK_LIBS PUBLIC
MLIRDialect
MLIRIR
MLIRMemRefDialect
MLIRLLVMDialect
MLIRArithDialect
MLIRAffineDialect
MLIRSCFDialect
)
15 changes: 15 additions & 0 deletions mlir/lib/Dialect/Polygeist/IR/PolygeistDialect.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#include "mlir/Dialect/Polygeist/IR/Polygeist.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/DialectImplementation.h"

using namespace mlir;
using namespace mlir::polygeist;

#include "mlir/Dialect/Polygeist/IR/PolygeistOpsDialect.cpp.inc"

void PolygeistDialect::initialize() {
addOperations<
#define GET_OP_LIST
#include "mlir/Dialect/Polygeist/IR/PolygeistOps.cpp.inc"
>();
}
Loading
Loading