Jlm
Loading...
Searching...
No Matches
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 (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 ConstantStructOperation &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 ConstantDataArrayOperation &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 1064 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 1073 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 269 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 598 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 576 of file IpGraphToLlvmConverter.cpp.

◆ convert() [6/29]

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

Definition at line 519 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 215 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 719 of file IpGraphToLlvmConverter.cpp.

◆ convert() [9/29]

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

Definition at line 702 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 921 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 960 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 257 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 1091 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 1046 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 1055 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 391 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 405 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 943 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 977 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 996 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 1028 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 1037 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 1082 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 244 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 1101 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 842 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 443 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 891 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 453 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 142 of file IpGraphToLlvmConverter.cpp.

◆ convert_attributes() [1/2]

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

Definition at line 2059 of file IpGraphToLlvmConverter.cpp.

◆ convert_attributes() [2/2]

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

Definition at line 2078 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 345 of file IpGraphToLlvmConverter.cpp.

◆ convert_cast() [1/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 
)

Definition at line 904 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 2147 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 774 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 759 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 749 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 201 of file IpGraphToLlvmConverter.cpp.

◆ convert_data_node()

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

Definition at line 2233 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 832 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 659 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 626 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 681 of file IpGraphToLlvmConverter.cpp.

◆ convert_function()

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

Definition at line 2218 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 470 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 853 of file IpGraphToLlvmConverter.cpp.

◆ convert_instruction()

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

Definition at line 1742 of file IpGraphToLlvmConverter.cpp.

◆ convert_ipgraph()

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

Definition at line 2268 of file IpGraphToLlvmConverter.cpp.

◆ convert_linkage()

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

Definition at line 2247 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 321 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 1111 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 355 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 611 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 732 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 432 of file IpGraphToLlvmConverter.cpp.

◆ convert_tacs()

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

Definition at line 1758 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 224 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 692 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 879 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 867 of file IpGraphToLlvmConverter.cpp.

◆ ConvertAttributeKind()

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

Definition at line 1914 of file IpGraphToLlvmConverter.cpp.

◆ convertAttributeList()

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

Definition at line 2107 of file IpGraphToLlvmConverter.cpp.

◆ ConvertBasicBlocks()

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

Definition at line 2124 of file IpGraphToLlvmConverter.cpp.

◆ ConvertEnumAttribute()

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

Definition at line 2025 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 185 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 931 of file IpGraphToLlvmConverter.cpp.

◆ ConvertIntAttribute()

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

Definition at line 2033 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 1015 of file IpGraphToLlvmConverter.cpp.

◆ ConvertModule()

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

Definition at line 2330 of file IpGraphToLlvmConverter.cpp.

◆ ConvertStringAttribute()

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

Definition at line 2052 of file IpGraphToLlvmConverter.cpp.

◆ ConvertTypeAttribute()

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

Definition at line 2041 of file IpGraphToLlvmConverter.cpp.

◆ create_conditional_branch()

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

Definition at line 1827 of file IpGraphToLlvmConverter.cpp.

◆ create_return()

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

Definition at line 1796 of file IpGraphToLlvmConverter.cpp.

◆ create_switch()

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

Definition at line 1845 of file IpGraphToLlvmConverter.cpp.

◆ create_terminator_instruction()

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

Definition at line 1886 of file IpGraphToLlvmConverter.cpp.

◆ create_unconditional_branch()

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

Definition at line 1816 of file IpGraphToLlvmConverter.cpp.

◆ CreateAndConvertModule()

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

Definition at line 2346 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 152 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 163 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 374 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 419 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 490 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 505 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: