Proteus
Programmable JIT compilation and optimization for C/C++ using LLVM
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
proteus::MLIRCodeBuilder::Impl Struct Reference
Collaboration diagram for proteus::MLIRCodeBuilder::Impl:
Collaboration graph
[legend]

Classes

struct  ScopeEntry
 

Public Member Functions

mlir::Type toScalarMLIRType (IRType Ty)
 
VarAlloc emitElementPtrSlot (IRValue *Base, mlir::Value IdxI64, IRType ElemTy)
 
 Impl (TargetModelType TM)
 
IRValuewrap (mlir::Value V)
 
mlir::Value unwrap (IRValue *V)
 
IRFunctionwrapFunction (mlir::Operation *Op, bool IsKernel, IRType RetTy, const std::vector< IRType > &ArgTys)
 
MLIRIRFunctionunwrapFunction (IRFunction *F)
 
gpu::GPUModuleOp getOrCreateDeviceModule ()
 
bool isRawPointerAbiType (IRType Ty)
 
func::FuncOp getOrCreateFunc (StringRef Name, mlir::FunctionType FTy)
 
gpu::GPUFuncOp lookupDeviceFunc (StringRef Name)
 
func::FuncOp lookupDeviceInternalFunc (StringRef Name)
 

Static Public Member Functions

static unsigned getBitWidthOrZero (mlir::Type Ty)
 
static bool isScalarIntOrFloat (mlir::Type Ty)
 
static bool isScalarSlotType (mlir::Type Ty)
 

Public Attributes

TargetModelType TargetModel
 
MLIRContext Context
 
OpBuilder Builder
 
ModuleOp Module
 
gpu::GPUModuleOp DeviceModule
 
std::string DeviceArch
 
MLIRLoweringResult LoweredModule
 
bool LoweredToLLVM = false
 
std::deque< MLIRIRValueValues
 
std::deque< MLIRIRFunctionFunctions
 
mlir::Operation * CurrentFuncOp = nullptr
 
bool CurrentIsKernel = false
 
Block * EntryBlock = nullptr
 
llvm::SmallVector< ScopeEntryScopeStack
 

Constructor & Destructor Documentation

◆ Impl()

proteus::MLIRCodeBuilder::Impl::Impl ( TargetModelType  TM)
inlineexplicit

Member Function Documentation

◆ emitElementPtrSlot()

VarAlloc proteus::MLIRCodeBuilder::Impl::emitElementPtrSlot ( IRValue Base,
mlir::Value  IdxI64,
IRType  ElemTy 
)
inline

◆ getBitWidthOrZero()

static unsigned proteus::MLIRCodeBuilder::Impl::getBitWidthOrZero ( mlir::Type  Ty)
inlinestatic

◆ getOrCreateDeviceModule()

gpu::GPUModuleOp proteus::MLIRCodeBuilder::Impl::getOrCreateDeviceModule ( )
inline

◆ getOrCreateFunc()

func::FuncOp proteus::MLIRCodeBuilder::Impl::getOrCreateFunc ( StringRef  Name,
mlir::FunctionType  FTy 
)
inline

◆ isRawPointerAbiType()

bool proteus::MLIRCodeBuilder::Impl::isRawPointerAbiType ( IRType  Ty)
inline

◆ isScalarIntOrFloat()

static bool proteus::MLIRCodeBuilder::Impl::isScalarIntOrFloat ( mlir::Type  Ty)
inlinestatic

◆ isScalarSlotType()

static bool proteus::MLIRCodeBuilder::Impl::isScalarSlotType ( mlir::Type  Ty)
inlinestatic

◆ lookupDeviceFunc()

gpu::GPUFuncOp proteus::MLIRCodeBuilder::Impl::lookupDeviceFunc ( StringRef  Name)
inline

◆ lookupDeviceInternalFunc()

func::FuncOp proteus::MLIRCodeBuilder::Impl::lookupDeviceInternalFunc ( StringRef  Name)
inline

◆ toScalarMLIRType()

mlir::Type proteus::MLIRCodeBuilder::Impl::toScalarMLIRType ( IRType  Ty)
inline

◆ unwrap()

mlir::Value proteus::MLIRCodeBuilder::Impl::unwrap ( IRValue V)
inline

◆ unwrapFunction()

MLIRIRFunction * proteus::MLIRCodeBuilder::Impl::unwrapFunction ( IRFunction F)
inline

◆ wrap()

IRValue * proteus::MLIRCodeBuilder::Impl::wrap ( mlir::Value  V)
inline

◆ wrapFunction()

IRFunction * proteus::MLIRCodeBuilder::Impl::wrapFunction ( mlir::Operation *  Op,
bool  IsKernel,
IRType  RetTy,
const std::vector< IRType > &  ArgTys 
)
inline

Member Data Documentation

◆ Builder

OpBuilder proteus::MLIRCodeBuilder::Impl::Builder

◆ Context

MLIRContext proteus::MLIRCodeBuilder::Impl::Context

◆ CurrentFuncOp

mlir::Operation* proteus::MLIRCodeBuilder::Impl::CurrentFuncOp = nullptr

◆ CurrentIsKernel

bool proteus::MLIRCodeBuilder::Impl::CurrentIsKernel = false

◆ DeviceArch

std::string proteus::MLIRCodeBuilder::Impl::DeviceArch

◆ DeviceModule

gpu::GPUModuleOp proteus::MLIRCodeBuilder::Impl::DeviceModule

◆ EntryBlock

Block* proteus::MLIRCodeBuilder::Impl::EntryBlock = nullptr

◆ Functions

std::deque<MLIRIRFunction> proteus::MLIRCodeBuilder::Impl::Functions

◆ LoweredModule

MLIRLoweringResult proteus::MLIRCodeBuilder::Impl::LoweredModule

◆ LoweredToLLVM

bool proteus::MLIRCodeBuilder::Impl::LoweredToLLVM = false

◆ Module

ModuleOp proteus::MLIRCodeBuilder::Impl::Module

◆ ScopeStack

llvm::SmallVector<ScopeEntry> proteus::MLIRCodeBuilder::Impl::ScopeStack

◆ TargetModel

TargetModelType proteus::MLIRCodeBuilder::Impl::TargetModel

◆ Values

std::deque<MLIRIRValue> proteus::MLIRCodeBuilder::Impl::Values

The documentation for this struct was generated from the following file: