Jlm
Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
jlm::llvm::IpGraphToLlvmConverter Class Referencefinal

#include <IpGraphToLlvmConverter.hpp>

Classes

class  Context
 

Public Member Functions

 ~IpGraphToLlvmConverter () noexcept
 
 IpGraphToLlvmConverter ()
 
 IpGraphToLlvmConverter (const IpGraphToLlvmConverter &)=delete
 
 IpGraphToLlvmConverter (IpGraphToLlvmConverter &&)=delete
 
IpGraphToLlvmConverteroperator= (const IpGraphToLlvmConverter &)=delete
 
IpGraphToLlvmConverteroperator= (IpGraphToLlvmConverter &&)=delete
 
std::unique_ptr<::llvm::Module > ConvertModule (InterProceduralGraphModule &ipGraphModule, ::llvm::LLVMContext &llvmContext)
 
template<::llvm::Instruction::CastOps OPCODE>
::llvm::Value * convert_cast ([[maybe_unused]] const rvsdg::SimpleOperation &op, const rvsdg::SimpleOperation &originalOp, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
template<class OP >
::llvm::Value * convert (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 

Static Public Member Functions

::llvm::Attribute::AttrKind ConvertAttributeKind (const Attribute::kind &kind)
 
static std::unique_ptr<::llvm::Module > CreateAndConvertModule (InterProceduralGraphModule &ipGraphModule, ::llvm::LLVMContext &ctx)
 

Private Member Functions

void convert_ipgraph ()
 
const ::llvm::GlobalValue::LinkageTypes & convert_linkage (const llvm::Linkage &linkage)
 
void convert_data_node (const DataNode &node)
 
void convert_function (const FunctionNode &node)
 
void convert_cfg (ControlFlowGraph &cfg, ::llvm::Function &f)
 
std::vector< ControlFlowGraphNode * > ConvertBasicBlocks (const ControlFlowGraph &controlFlowGraph, ::llvm::Function &function)
 
::llvm::AttributeList convert_attributes (const FunctionNode &f)
 
::llvm::AttributeSet convert_attributes (const AttributeSet &attributeSet)
 
::llvm::AttributeList convertAttributeList (const AttributeList &attributeList)
 
::llvm::Attribute ConvertStringAttribute (const llvm::StringAttribute &attribute)
 
::llvm::Attribute ConvertTypeAttribute (const llvm::TypeAttribute &attribute)
 
::llvm::Attribute ConvertIntAttribute (const llvm::IntAttribute &attribute)
 
::llvm::Attribute ConvertEnumAttribute (const llvm::EnumAttribute &attribute)
 
void create_terminator_instruction (const llvm::ControlFlowGraphNode *node)
 
void create_switch (const ControlFlowGraphNode *node)
 
void create_conditional_branch (const ControlFlowGraphNode *node)
 
void create_unconditional_branch (const ControlFlowGraphNode *node)
 
void create_return (const ControlFlowGraphNode *node)
 
void convert_tacs (const tacsvector_t &tacs)
 
void convert_instruction (const llvm::ThreeAddressCode &tac, const llvm::ControlFlowGraphNode *node)
 
::llvm::Value * convert_operation (const rvsdg::SimpleOperation &op, const rvsdg::SimpleOperation &originalOp, const std::vector< const Variable * > &arguments, ::llvm::IRBuilder<> &builder)
 
template<class OP >
::llvm::Value * convert (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert (const PointerToFunctionOperation &, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const FunctionToPointerOperation &, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const CallExitMemoryStateSplitOperation &, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const CallEntryMemoryStateMergeOperation &, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const LambdaExitMemoryStateMergeOperation &, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const LambdaEntryMemoryStateSplitOperation &, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const MemoryStateSplitOperation &, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const MemoryStateMergeOperation &, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const MemCpyVolatileOperation &, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert (const MemCpyNonVolatileOperation &, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convertMemsetNonVolatileOperation (const rvsdg::SimpleOperation &, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const FreeOperation &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert (const MallocOperation &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert (const ExtractValueOperation &op, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convertInsertValueOperation (const InsertValueOperation &operation, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder) const
 
template<::llvm::Instruction::CastOps OPCODE>
::llvm::Value * convert_cast (const rvsdg::SimpleOperation &op, const rvsdg::SimpleOperation &originalOp, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert (const VectorSelectOperation &, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_vectorbinary (const rvsdg::SimpleOperation &op, const rvsdg::SimpleOperation &originalOp, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_vectorunary (const rvsdg::SimpleOperation &op, const rvsdg::SimpleOperation &originalOp, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_insertelement (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert (const ShuffleVectorOperation &op, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_extractelement (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_constantdatavector (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_constantvector (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert_ctl2bits (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert_select (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert (const ConstantPointerNullOperation &operation, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const ConstantStruct &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert_valist (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert_fpneg (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_fpbin (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_fpcmp (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_ptrcmp (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert (const ConstantAggregateZeroOperation &op, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const ConstantArrayOperation &op, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const ConstantDataArray &op, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
template<typename T >
std::vector< T > get_fpdata (const std::vector< const Variable * > &args)
 
template<typename T >
std::vector< T > get_bitdata (const std::vector< const Variable * > &args)
 
::llvm::Value * convert_getelementptr (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_alloca (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert (const StoreVolatileOperation &operation, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_store (const rvsdg::SimpleOperation &operation, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
void CreateStoreInstruction (const Variable *address, const Variable *value, bool isVolatile, size_t alignment, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert (const LoadVolatileOperation &operation, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert (const LoadNonVolatileOperation &operation, const std::vector< const Variable * > &operands, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * CreateLoadInstruction (const rvsdg::Type &loadedType, const Variable *address, bool isVolatile, size_t alignment, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_phi (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_branch (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert_match (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert (const CallOperation &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert (const PoisonValueOperation &operation, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const FreezeOperation &operation, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert_undef (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &)
 
::llvm::Value * convert (const ConstantFP &op, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_ctlconstant (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * ConverterIntegerConstant (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * CreateICmpInstruction (const ::llvm::CmpInst::Predicate predicate, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * CreateBinOpInstruction (const ::llvm::Instruction::BinaryOps opcode, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &builder)
 
::llvm::Value * convert_assignment (const rvsdg::SimpleOperation &op, const std::vector< const Variable * > &args, ::llvm::IRBuilder<> &)
 

Private Attributes

std::unique_ptr< ContextContext_
 

Detailed Description

Definition at line 71 of file IpGraphToLlvmConverter.hpp.

Constructor & Destructor Documentation

◆ ~IpGraphToLlvmConverter()

jlm::llvm::IpGraphToLlvmConverter::~IpGraphToLlvmConverter ( )
defaultnoexcept

◆ IpGraphToLlvmConverter() [1/3]

jlm::llvm::IpGraphToLlvmConverter::IpGraphToLlvmConverter ( )
default

◆ IpGraphToLlvmConverter() [2/3]

jlm::llvm::IpGraphToLlvmConverter::IpGraphToLlvmConverter ( const IpGraphToLlvmConverter )
delete

◆ IpGraphToLlvmConverter() [3/3]

jlm::llvm::IpGraphToLlvmConverter::IpGraphToLlvmConverter ( IpGraphToLlvmConverter &&  )
delete

Member Function Documentation

◆ convert() [1/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const CallEntryMemoryStateMergeOperation ,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &   
)
private

Definition at line 1060 of file IpGraphToLlvmConverter.cpp.

◆ convert() [2/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const CallExitMemoryStateSplitOperation ,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &   
)
private

Definition at line 1069 of file IpGraphToLlvmConverter.cpp.

◆ convert() [3/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const CallOperation op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 265 of file IpGraphToLlvmConverter.cpp.

◆ convert() [4/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const ConstantAggregateZeroOperation op,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &   
)
private

Definition at line 594 of file IpGraphToLlvmConverter.cpp.

◆ convert() [5/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const ConstantArrayOperation op,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &   
)
private

Definition at line 572 of file IpGraphToLlvmConverter.cpp.

◆ convert() [6/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const ConstantDataArray op,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 515 of file IpGraphToLlvmConverter.cpp.

◆ convert() [7/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const ConstantFP op,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 211 of file IpGraphToLlvmConverter.cpp.

◆ convert() [8/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const ConstantPointerNullOperation operation,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &   
)
private

Definition at line 715 of file IpGraphToLlvmConverter.cpp.

◆ convert() [9/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const ConstantStruct op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &   
)
private

Definition at line 698 of file IpGraphToLlvmConverter.cpp.

◆ convert() [10/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const ExtractValueOperation op,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 917 of file IpGraphToLlvmConverter.cpp.

◆ convert() [11/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const FreeOperation op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 956 of file IpGraphToLlvmConverter.cpp.

◆ convert() [12/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const FreezeOperation operation,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 253 of file IpGraphToLlvmConverter.cpp.

◆ convert() [13/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const FunctionToPointerOperation ,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &   
)
private

Definition at line 1087 of file IpGraphToLlvmConverter.cpp.

◆ convert() [14/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const LambdaEntryMemoryStateSplitOperation ,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &   
)
private

Definition at line 1042 of file IpGraphToLlvmConverter.cpp.

◆ convert() [15/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const LambdaExitMemoryStateMergeOperation ,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &   
)
private

Definition at line 1051 of file IpGraphToLlvmConverter.cpp.

◆ convert() [16/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const LoadNonVolatileOperation operation,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 387 of file IpGraphToLlvmConverter.cpp.

◆ convert() [17/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const LoadVolatileOperation operation,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 401 of file IpGraphToLlvmConverter.cpp.

◆ convert() [18/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const MallocOperation op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 939 of file IpGraphToLlvmConverter.cpp.

◆ convert() [19/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const MemCpyNonVolatileOperation ,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 973 of file IpGraphToLlvmConverter.cpp.

◆ convert() [20/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const MemCpyVolatileOperation ,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 992 of file IpGraphToLlvmConverter.cpp.

◆ convert() [21/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const MemoryStateMergeOperation ,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &   
)
private

Definition at line 1024 of file IpGraphToLlvmConverter.cpp.

◆ convert() [22/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const MemoryStateSplitOperation ,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &   
)
private

Definition at line 1033 of file IpGraphToLlvmConverter.cpp.

◆ convert() [23/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const PointerToFunctionOperation ,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &   
)
private

Definition at line 1078 of file IpGraphToLlvmConverter.cpp.

◆ convert() [24/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const PoisonValueOperation operation,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &   
)
private

Definition at line 240 of file IpGraphToLlvmConverter.cpp.

◆ convert() [25/29]

template<class OP >
::llvm::Value* jlm::llvm::IpGraphToLlvmConverter::convert ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)

Definition at line 1097 of file IpGraphToLlvmConverter.cpp.

◆ convert() [26/29]

template<class OP >
::llvm::Value* jlm::llvm::IpGraphToLlvmConverter::convert ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

◆ convert() [27/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const ShuffleVectorOperation op,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 838 of file IpGraphToLlvmConverter.cpp.

◆ convert() [28/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const StoreVolatileOperation operation,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 439 of file IpGraphToLlvmConverter.cpp.

◆ convert() [29/29]

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert ( const VectorSelectOperation ,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 887 of file IpGraphToLlvmConverter.cpp.

◆ convert_alloca()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_alloca ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 449 of file IpGraphToLlvmConverter.cpp.

◆ convert_assignment()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_assignment ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &   
)
private

Definition at line 138 of file IpGraphToLlvmConverter.cpp.

◆ convert_attributes() [1/2]

llvm::AttributeSet jlm::llvm::IpGraphToLlvmConverter::convert_attributes ( const AttributeSet attributeSet)
private

Definition at line 1806 of file IpGraphToLlvmConverter.cpp.

◆ convert_attributes() [2/2]

llvm::AttributeList jlm::llvm::IpGraphToLlvmConverter::convert_attributes ( const FunctionNode f)
private

Definition at line 1825 of file IpGraphToLlvmConverter.cpp.

◆ convert_branch()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_branch ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &   
)
private

Definition at line 341 of file IpGraphToLlvmConverter.cpp.

◆ convert_cast() [1/2]

template<::llvm::Instruction::CastOps OPCODE>
::llvm::Value* jlm::llvm::IpGraphToLlvmConverter::convert_cast ( [[maybe_unused] ] const rvsdg::SimpleOperation op,
const rvsdg::SimpleOperation originalOp,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)

Definition at line 900 of file IpGraphToLlvmConverter.cpp.

◆ convert_cast() [2/2]

template<::llvm::Instruction::CastOps OPCODE>
::llvm::Value* jlm::llvm::IpGraphToLlvmConverter::convert_cast ( const rvsdg::SimpleOperation op,
const rvsdg::SimpleOperation originalOp,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

◆ convert_cfg()

void jlm::llvm::IpGraphToLlvmConverter::convert_cfg ( ControlFlowGraph cfg,
::llvm::Function &  f 
)
private

Definition at line 1894 of file IpGraphToLlvmConverter.cpp.

◆ convert_constantdatavector()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_constantdatavector ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 770 of file IpGraphToLlvmConverter.cpp.

◆ convert_constantvector()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_constantvector ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &   
)
private

Definition at line 755 of file IpGraphToLlvmConverter.cpp.

◆ convert_ctl2bits()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_ctl2bits ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &   
)
private

Definition at line 745 of file IpGraphToLlvmConverter.cpp.

◆ convert_ctlconstant()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_ctlconstant ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 197 of file IpGraphToLlvmConverter.cpp.

◆ convert_data_node()

void jlm::llvm::IpGraphToLlvmConverter::convert_data_node ( const DataNode node)
private

Definition at line 1980 of file IpGraphToLlvmConverter.cpp.

◆ convert_extractelement()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_extractelement ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 828 of file IpGraphToLlvmConverter.cpp.

◆ convert_fpbin()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_fpbin ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 655 of file IpGraphToLlvmConverter.cpp.

◆ convert_fpcmp()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_fpcmp ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 622 of file IpGraphToLlvmConverter.cpp.

◆ convert_fpneg()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_fpneg ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 677 of file IpGraphToLlvmConverter.cpp.

◆ convert_function()

void jlm::llvm::IpGraphToLlvmConverter::convert_function ( const FunctionNode node)
private

Definition at line 1965 of file IpGraphToLlvmConverter.cpp.

◆ convert_getelementptr()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_getelementptr ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 466 of file IpGraphToLlvmConverter.cpp.

◆ convert_insertelement()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_insertelement ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 849 of file IpGraphToLlvmConverter.cpp.

◆ convert_instruction()

void jlm::llvm::IpGraphToLlvmConverter::convert_instruction ( const llvm::ThreeAddressCode tac,
const llvm::ControlFlowGraphNode node 
)
private

Definition at line 1489 of file IpGraphToLlvmConverter.cpp.

◆ convert_ipgraph()

void jlm::llvm::IpGraphToLlvmConverter::convert_ipgraph ( )
private

Definition at line 2015 of file IpGraphToLlvmConverter.cpp.

◆ convert_linkage()

const ::llvm::GlobalValue::LinkageTypes & jlm::llvm::IpGraphToLlvmConverter::convert_linkage ( const llvm::Linkage linkage)
private

Definition at line 1994 of file IpGraphToLlvmConverter.cpp.

◆ convert_match()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_match ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 317 of file IpGraphToLlvmConverter.cpp.

◆ convert_operation()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_operation ( const rvsdg::SimpleOperation op,
const rvsdg::SimpleOperation originalOp,
const std::vector< const Variable * > &  arguments,
::llvm::IRBuilder<> &  builder 
)
private

Converts the given operation, with the given arguments, to an LLVM instruction. If the operation is wrapped in surrounding operations, it also takes the original operation, for example when converting an addition operation wrapped in a lane-wise vector operation.

Parameters
opthe operation to convert.
originalOpthe top-level operation containing op. Otherwise op itself.
argumentsthe variables representing each argument of the operation.
builderthe LLVM IR builder to append the created instructions to.
Returns
the LLVM Value representing the output of the created instruction.

Definition at line 1107 of file IpGraphToLlvmConverter.cpp.

◆ convert_phi()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_phi ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 351 of file IpGraphToLlvmConverter.cpp.

◆ convert_ptrcmp()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_ptrcmp ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 607 of file IpGraphToLlvmConverter.cpp.

◆ convert_select()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_select ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 728 of file IpGraphToLlvmConverter.cpp.

◆ convert_store()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_store ( const rvsdg::SimpleOperation operation,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 428 of file IpGraphToLlvmConverter.cpp.

◆ convert_tacs()

void jlm::llvm::IpGraphToLlvmConverter::convert_tacs ( const tacsvector_t tacs)
private

Definition at line 1505 of file IpGraphToLlvmConverter.cpp.

◆ convert_undef()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_undef ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &   
)
private

Definition at line 220 of file IpGraphToLlvmConverter.cpp.

◆ convert_valist()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_valist ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &   
)
private

Definition at line 688 of file IpGraphToLlvmConverter.cpp.

◆ convert_vectorbinary()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_vectorbinary ( const rvsdg::SimpleOperation op,
const rvsdg::SimpleOperation originalOp,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 875 of file IpGraphToLlvmConverter.cpp.

◆ convert_vectorunary()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convert_vectorunary ( const rvsdg::SimpleOperation op,
const rvsdg::SimpleOperation originalOp,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 863 of file IpGraphToLlvmConverter.cpp.

◆ ConvertAttributeKind()

llvm::Attribute::AttrKind jlm::llvm::IpGraphToLlvmConverter::ConvertAttributeKind ( const Attribute::kind kind)
static

Definition at line 1661 of file IpGraphToLlvmConverter.cpp.

◆ convertAttributeList()

llvm::AttributeList jlm::llvm::IpGraphToLlvmConverter::convertAttributeList ( const AttributeList attributeList)
private

Definition at line 1854 of file IpGraphToLlvmConverter.cpp.

◆ ConvertBasicBlocks()

std::vector< ControlFlowGraphNode * > jlm::llvm::IpGraphToLlvmConverter::ConvertBasicBlocks ( const ControlFlowGraph controlFlowGraph,
::llvm::Function &  function 
)
private

Definition at line 1871 of file IpGraphToLlvmConverter.cpp.

◆ ConvertEnumAttribute()

llvm::Attribute jlm::llvm::IpGraphToLlvmConverter::ConvertEnumAttribute ( const llvm::EnumAttribute attribute)
private

Definition at line 1772 of file IpGraphToLlvmConverter.cpp.

◆ ConverterIntegerConstant()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::ConverterIntegerConstant ( const rvsdg::SimpleOperation op,
const std::vector< const Variable * > &  ,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 181 of file IpGraphToLlvmConverter.cpp.

◆ convertInsertValueOperation()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convertInsertValueOperation ( const InsertValueOperation operation,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
) const
private

Definition at line 927 of file IpGraphToLlvmConverter.cpp.

◆ ConvertIntAttribute()

llvm::Attribute jlm::llvm::IpGraphToLlvmConverter::ConvertIntAttribute ( const llvm::IntAttribute attribute)
private

Definition at line 1780 of file IpGraphToLlvmConverter.cpp.

◆ convertMemsetNonVolatileOperation()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::convertMemsetNonVolatileOperation ( const rvsdg::SimpleOperation ,
const std::vector< const Variable * > &  operands,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 1011 of file IpGraphToLlvmConverter.cpp.

◆ ConvertModule()

std::unique_ptr<::llvm::Module > jlm::llvm::IpGraphToLlvmConverter::ConvertModule ( InterProceduralGraphModule ipGraphModule,
::llvm::LLVMContext &  llvmContext 
)

Definition at line 2077 of file IpGraphToLlvmConverter.cpp.

◆ ConvertStringAttribute()

llvm::Attribute jlm::llvm::IpGraphToLlvmConverter::ConvertStringAttribute ( const llvm::StringAttribute attribute)
private

Definition at line 1799 of file IpGraphToLlvmConverter.cpp.

◆ ConvertTypeAttribute()

llvm::Attribute jlm::llvm::IpGraphToLlvmConverter::ConvertTypeAttribute ( const llvm::TypeAttribute attribute)
private

Definition at line 1788 of file IpGraphToLlvmConverter.cpp.

◆ create_conditional_branch()

void jlm::llvm::IpGraphToLlvmConverter::create_conditional_branch ( const ControlFlowGraphNode node)
private

Definition at line 1574 of file IpGraphToLlvmConverter.cpp.

◆ create_return()

void jlm::llvm::IpGraphToLlvmConverter::create_return ( const ControlFlowGraphNode node)
private

Definition at line 1543 of file IpGraphToLlvmConverter.cpp.

◆ create_switch()

void jlm::llvm::IpGraphToLlvmConverter::create_switch ( const ControlFlowGraphNode node)
private

Definition at line 1592 of file IpGraphToLlvmConverter.cpp.

◆ create_terminator_instruction()

void jlm::llvm::IpGraphToLlvmConverter::create_terminator_instruction ( const llvm::ControlFlowGraphNode node)
private

Definition at line 1633 of file IpGraphToLlvmConverter.cpp.

◆ create_unconditional_branch()

void jlm::llvm::IpGraphToLlvmConverter::create_unconditional_branch ( const ControlFlowGraphNode node)
private

Definition at line 1563 of file IpGraphToLlvmConverter.cpp.

◆ CreateAndConvertModule()

std::unique_ptr<::llvm::Module > jlm::llvm::IpGraphToLlvmConverter::CreateAndConvertModule ( InterProceduralGraphModule ipGraphModule,
::llvm::LLVMContext &  ctx 
)
static

Definition at line 2093 of file IpGraphToLlvmConverter.cpp.

◆ CreateBinOpInstruction()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::CreateBinOpInstruction ( const ::llvm::Instruction::BinaryOps  opcode,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 148 of file IpGraphToLlvmConverter.cpp.

◆ CreateICmpInstruction()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::CreateICmpInstruction ( const ::llvm::CmpInst::Predicate  predicate,
const std::vector< const Variable * > &  args,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 159 of file IpGraphToLlvmConverter.cpp.

◆ CreateLoadInstruction()

llvm::Value * jlm::llvm::IpGraphToLlvmConverter::CreateLoadInstruction ( const rvsdg::Type loadedType,
const Variable address,
bool  isVolatile,
size_t  alignment,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 370 of file IpGraphToLlvmConverter.cpp.

◆ CreateStoreInstruction()

void jlm::llvm::IpGraphToLlvmConverter::CreateStoreInstruction ( const Variable address,
const Variable value,
bool  isVolatile,
size_t  alignment,
::llvm::IRBuilder<> &  builder 
)
private

Definition at line 415 of file IpGraphToLlvmConverter.cpp.

◆ get_bitdata()

template<typename T >
std::vector< T > jlm::llvm::IpGraphToLlvmConverter::get_bitdata ( const std::vector< const Variable * > &  args)
private

Definition at line 486 of file IpGraphToLlvmConverter.cpp.

◆ get_fpdata()

template<typename T >
std::vector< T > jlm::llvm::IpGraphToLlvmConverter::get_fpdata ( const std::vector< const Variable * > &  args)
private

Definition at line 501 of file IpGraphToLlvmConverter.cpp.

◆ operator=() [1/2]

IpGraphToLlvmConverter& jlm::llvm::IpGraphToLlvmConverter::operator= ( const IpGraphToLlvmConverter )
delete

◆ operator=() [2/2]

IpGraphToLlvmConverter& jlm::llvm::IpGraphToLlvmConverter::operator= ( IpGraphToLlvmConverter &&  )
delete

Member Data Documentation

◆ Context_

std::unique_ptr<Context> jlm::llvm::IpGraphToLlvmConverter::Context_
private

Definition at line 544 of file IpGraphToLlvmConverter.hpp.


The documentation for this class was generated from the following files: