CIRCT 23.0.0git
Loading...
Searching...
No Matches
Classes | Namespaces | Macros | Functions
LowerArcToLLVM.cpp File Reference
#include "circt/Conversion/ArcToLLVM.h"
#include "circt/Conversion/CombToArith.h"
#include "circt/Conversion/CombToLLVM.h"
#include "circt/Conversion/HWToLLVM.h"
#include "circt/Dialect/Arc/ArcConstants.h"
#include "circt/Dialect/Arc/ArcOps.h"
#include "circt/Dialect/Arc/ModelInfo.h"
#include "circt/Dialect/Arc/Runtime/Common.h"
#include "circt/Dialect/Arc/Runtime/FmtDescriptor.h"
#include "circt/Dialect/Arc/Runtime/JITBind.h"
#include "circt/Dialect/Arc/Runtime/TraceTaps.h"
#include "circt/Dialect/Comb/CombOps.h"
#include "circt/Dialect/LLHD/LLHDOps.h"
#include "circt/Dialect/LLHD/LLHDTypes.h"
#include "circt/Dialect/Seq/SeqOps.h"
#include "circt/Dialect/Sim/SimOps.h"
#include "circt/Support/ConversionPatternSet.h"
#include "circt/Support/Namespace.h"
#include "mlir/Conversion/ArithToLLVM/ArithToLLVM.h"
#include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
#include "mlir/Conversion/IndexToLLVM/IndexToLLVM.h"
#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
#include "mlir/Conversion/LLVMCommon/TypeConverter.h"
#include "mlir/Conversion/SCFToControlFlow/SCFToControlFlow.h"
#include "mlir/Dialect/ControlFlow/IR/ControlFlowOps.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/Index/IR/IndexOps.h"
#include "mlir/Dialect/LLVMIR/FunctionCallUtils.h"
#include "mlir/Dialect/LLVMIR/LLVMAttrs.h"
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
#include "mlir/Dialect/SCF/IR/SCF.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/BuiltinDialect.h"
#include "mlir/Pass/Pass.h"
#include "mlir/Transforms/DialectConversion.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/FormatVariadic.h"
#include <cstddef>
#include "circt/Conversion/Passes.h.inc"
Include dependency graph for LowerArcToLLVM.cpp:

Go to the source code of this file.

Classes

struct  RuntimeModelOpLowering
 
struct  ArrayRefAllocOpLowering
 
struct  ArrayRefCreateOpLowering
 
struct  ArrayRefGetOpLowering
 
struct  ArrayRefInjectOpLowering
 
struct  ArrayRefSliceOpLowering
 
struct  ArrayRefCopyOpLowering
 
struct  ArrayRefToLLVMArrayOpLowering
 
struct  ArrayRefToArrayOpLowering
 
struct  ArrayRefFromArrayOpLowering
 

Namespaces

namespace  circt
 The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
 

Macros

#define DEBUG_TYPE   "lower-arc-to-llvm"
 
#define GEN_PASS_DEF_LOWERARCTOLLVM
 

Functions

static llvm::Twine evalSymbolFromModelName (StringRef modelName)
 
static LogicalResult convert (arc::ExecuteOp op, arc::ExecuteOp::Adaptor adaptor, ConversionPatternRewriter &rewriter, const TypeConverter &converter)
 
template<typename T , typename = std::enable_if_t<std::is_integral<T>::value>>
static LLVM::GlobalOp buildGlobalConstantIntArray (OpBuilder &builder, Location loc, Twine symName, SmallVectorImpl< T > &data, unsigned alignment=alignof(T))
 
template<typename T >
static LLVM::GlobalOp buildGlobalConstantRuntimeStructArray (OpBuilder &builder, Location loc, Twine symName, SmallVectorImpl< T > &array)
 
size_t computeByteWidth (ArrayRefType type)
 
size_t computeElementByteWidth (ArrayRefType arrayRefType)
 
static Value loadArrayRefAsArray (ImplicitLocOpBuilder &builder, Value arrayRef, ArrayRefType arrayRefType, LLVM::LLVMArrayType llvmType)
 
static void storeArrayAsArrayRef (ImplicitLocOpBuilder &builder, Value array, Value arrayRef, ArrayRefType arrayRefType)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "lower-arc-to-llvm"

Definition at line 50 of file LowerArcToLLVM.cpp.

◆ GEN_PASS_DEF_LOWERARCTOLLVM

#define GEN_PASS_DEF_LOWERARCTOLLVM

Definition at line 53 of file LowerArcToLLVM.cpp.

Function Documentation

◆ buildGlobalConstantIntArray()

template<typename T , typename = std::enable_if_t<std::is_integral<T>::value>>
static LLVM::GlobalOp buildGlobalConstantIntArray ( OpBuilder &  builder,
Location  loc,
Twine  symName,
SmallVectorImpl< T > &  data,
unsigned  alignment = alignof(T) 
)
static

Definition at line 1175 of file LowerArcToLLVM.cpp.

Referenced by RuntimeModelOpLowering::buildTraceInfoStruct().

◆ buildGlobalConstantRuntimeStructArray()

template<typename T >
static LLVM::GlobalOp buildGlobalConstantRuntimeStructArray ( OpBuilder &  builder,
Location  loc,
Twine  symName,
SmallVectorImpl< T > &  array 
)
static

Definition at line 1193 of file LowerArcToLLVM.cpp.

References assert().

Referenced by RuntimeModelOpLowering::buildTraceInfoStruct().

◆ computeByteWidth()

size_t computeByteWidth ( ArrayRefType  type)

◆ computeElementByteWidth()

size_t computeElementByteWidth ( ArrayRefType  arrayRefType)

◆ convert()

static LogicalResult convert ( arc::ExecuteOp  op,
arc::ExecuteOp::Adaptor  adaptor,
ConversionPatternRewriter &  rewriter,
const TypeConverter &  converter 
)
static

◆ evalSymbolFromModelName()

static llvm::Twine evalSymbolFromModelName ( StringRef  modelName)
static

Definition at line 67 of file LowerArcToLLVM.cpp.

◆ loadArrayRefAsArray()

static Value loadArrayRefAsArray ( ImplicitLocOpBuilder &  builder,
Value  arrayRef,
ArrayRefType  arrayRefType,
LLVM::LLVMArrayType  llvmType 
)
static

◆ storeArrayAsArrayRef()

static void storeArrayAsArrayRef ( ImplicitLocOpBuilder &  builder,
Value  array,
Value  arrayRef,
ArrayRefType  arrayRefType 
)
static