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
 
IpGraphToLlvmConverter & operator= (const IpGraphToLlvmConverter &)=delete
 
IpGraphToLlvmConverter & operator= (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< Context > Context_
 

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 2063 of file IpGraphToLlvmConverter.cpp.

◆ convert_attributes() [2/2]

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

Definition at line 2082 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 2151 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 2237 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 2222 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 1746 of file IpGraphToLlvmConverter.cpp.

◆ convert_ipgraph()

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

Definition at line 2272 of file IpGraphToLlvmConverter.cpp.

◆ convert_linkage()

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

Definition at line 2251 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 1762 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 1918 of file IpGraphToLlvmConverter.cpp.

◆ convertAttributeList()

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

Definition at line 2111 of file IpGraphToLlvmConverter.cpp.

◆ ConvertBasicBlocks()

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

Definition at line 2128 of file IpGraphToLlvmConverter.cpp.

◆ ConvertEnumAttribute()

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

Definition at line 2029 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 2037 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 2334 of file IpGraphToLlvmConverter.cpp.

◆ ConvertStringAttribute()

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

Definition at line 2056 of file IpGraphToLlvmConverter.cpp.

◆ ConvertTypeAttribute()

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

Definition at line 2045 of file IpGraphToLlvmConverter.cpp.

◆ create_conditional_branch()

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

Definition at line 1831 of file IpGraphToLlvmConverter.cpp.

◆ create_return()

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

Definition at line 1800 of file IpGraphToLlvmConverter.cpp.

◆ create_switch()

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

Definition at line 1849 of file IpGraphToLlvmConverter.cpp.

◆ create_terminator_instruction()

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

Definition at line 1890 of file IpGraphToLlvmConverter.cpp.

◆ create_unconditional_branch()

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

Definition at line 1820 of file IpGraphToLlvmConverter.cpp.

◆ CreateAndConvertModule()

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

Definition at line 2350 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: