CIRCT 24.0.0git
Loading...
Searching...
No Matches
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/ArcTypes.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/Conversion/UBToLLVM/UBToLLVM.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/Interfaces/DataLayoutInterfaces.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 53 of file LowerArcToLLVM.cpp.

◆ GEN_PASS_DEF_LOWERARCTOLLVM

#define GEN_PASS_DEF_LOWERARCTOLLVM

Definition at line 56 of file LowerArcToLLVM.cpp.

Function Documentation

◆ buildGlobalConstantIntArray()

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

Definition at line 1207 of file LowerArcToLLVM.cpp.

Referenced by RuntimeModelOpLowering::buildTraceInfoStruct().

◆ buildGlobalConstantRuntimeStructArray()

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

Definition at line 1225 of file LowerArcToLLVM.cpp.

References assert().

Referenced by RuntimeModelOpLowering::buildTraceInfoStruct().

◆ computeByteWidth()

size_t computeByteWidth ( ArrayRefType type)

◆ computeElementByteWidth()

◆ convert()

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

◆ evalSymbolFromModelName()

llvm::Twine evalSymbolFromModelName ( StringRef modelName)
static

Definition at line 70 of file LowerArcToLLVM.cpp.

◆ loadArrayRefAsArray()

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

◆ storeArrayAsArrayRef()

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