Jlm
Classes | Namespaces | Typedefs | Functions
LlvmModuleConversion.cpp File Reference
#include <jlm/llvm/frontend/LlvmModuleConversion.hpp>
#include <jlm/llvm/ir/CallingConvention.hpp>
#include <jlm/llvm/ir/cfg-structure.hpp>
#include <jlm/llvm/ir/operators/AggregateOperations.hpp>
#include <jlm/llvm/ir/operators/alloca.hpp>
#include <jlm/llvm/ir/operators/call.hpp>
#include <jlm/llvm/ir/operators/FunctionPointer.hpp>
#include <jlm/llvm/ir/operators/GetElementPtr.hpp>
#include <jlm/llvm/ir/operators/IntegerOperations.hpp>
#include <jlm/llvm/ir/operators/IOBarrier.hpp>
#include <jlm/llvm/ir/operators/Load.hpp>
#include <jlm/llvm/ir/operators/operators.hpp>
#include <jlm/llvm/ir/operators/sext.hpp>
#include <jlm/llvm/ir/operators/SpecializedArithmeticIntrinsicOperations.hpp>
#include <jlm/llvm/ir/operators/StdLibIntrinsicOperations.hpp>
#include <jlm/llvm/ir/operators/Store.hpp>
#include <jlm/llvm/ir/TypeConverter.hpp>
#include <llvm/ADT/PostOrderIterator.h>
#include <llvm/ADT/StringExtras.h>
#include <llvm/IR/BasicBlock.h>
#include <llvm/IR/Constants.h>
#include <llvm/IR/Function.h>
#include <llvm/IR/Instructions.h>
#include <llvm/IR/IntrinsicInst.h>
#include <llvm/IR/Intrinsics.h>
#include <llvm/IR/Module.h>
Include dependency graph for LlvmModuleConversion.cpp:

Go to the source code of this file.

Classes

class  jlm::llvm::Context
 

Namespaces

 jlm
 
 jlm::llvm
 Global memory state passed between functions.
 

Typedefs

using jlm::llvm::BasicBlockMap = util::BijectiveMap< const ::llvm::BasicBlock *, BasicBlock * >
 

Functions

static const Variable * jlm::llvm::ConvertConstant (::llvm::Constant *, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &, Context &)
 
static const Variable * jlm::llvm::convertInstruction (::llvm::Instruction *instruction, std::vector< std::unique_ptr< ThreeAddressCode >> &threeAddressCodes, Context &context)
 
const Variable * jlm::llvm::ConvertValueOrFunction (::llvm::Value *v, tacsvector_t &tacs, Context &ctx)
 
const Variable * jlm::llvm::ConvertValue (::llvm::Value *v, tacsvector_t &tacs, Context &ctx)
 
static rvsdg::BitValueRepresentation jlm::llvm::convert_apint (const ::llvm::APInt &value)
 
Attribute::kind jlm::llvm::ConvertAttributeKind (const ::llvm::Attribute::AttrKind &kind)
 
static EnumAttribute jlm::llvm::ConvertEnumAttribute (const ::llvm::Attribute &attribute)
 
static IntAttribute jlm::llvm::ConvertIntAttribute (const ::llvm::Attribute &attribute)
 
static TypeAttribute jlm::llvm::ConvertTypeAttribute (const ::llvm::Attribute &attribute, TypeConverter &typeConverter)
 
static StringAttribute jlm::llvm::ConvertStringAttribute (const ::llvm::Attribute &attribute)
 
static AttributeSet jlm::llvm::convert_attributes (const ::llvm::AttributeSet &as, TypeConverter &typeConverter)
 
AttributeList jlm::llvm::convertAttributeList (const ::llvm::AttributeList &attributeList, const size_t numParameters, TypeConverter &typeConverter)
 
static const Variable * jlm::llvm::convert_int_constant (::llvm::Constant *c, std::vector< std::unique_ptr< ThreeAddressCode >> &tacs, Context &)
 
static const Variable * jlm::llvm::convert_undefvalue (::llvm::Constant *c, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_constantExpr (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_constantFP (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_globalVariable (::llvm::Constant *c, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_constantPointerNull (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_blockAddress (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &, Context &)
 
static const Variable * jlm::llvm::convert_constantAggregateZero (::llvm::Constant *c, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_constantArray (::llvm::Constant *c, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_constantDataArray (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_constantDataVector (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &tacs, Context &ctx)
 
static const Variable * jlm::llvm::ConvertConstantStruct (::llvm::Constant *c, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_constantVector (::llvm::Constant *c, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_globalAlias (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode >> &, Context &)
 
static const Variable * jlm::llvm::convert_function (::llvm::Constant *c, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::ConvertConstant (::llvm::PoisonValue *poisonValue, tacsvector_t &threeAddressCodeVector, Context &context)
 
template<class T >
static const Variable * jlm::llvm::ConvertConstant (::llvm::Constant *constant, tacsvector_t &threeAddressCodeVector, Context &context)
 
static std::vector< std::unique_ptr< llvm::ThreeAddressCode > > jlm::llvm::ConvertConstant (::llvm::Constant *c, Context &ctx)
 
static const Variable * jlm::llvm::convert_return_instruction (::llvm::Instruction *instruction, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::ConvertBranchInstruction (::llvm::Instruction *instruction, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convertSwitchInstruction (::llvm::SwitchInst *switchInstruction, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_unreachable_instruction (::llvm::Instruction *i, tacsvector_t &, Context &ctx)
 
static std::unique_ptr< rvsdg::BinaryOperation > jlm::llvm::ConvertIntegerIcmpPredicate (const ::llvm::CmpInst::Predicate predicate, const std::size_t numBits)
 
static std::unique_ptr< rvsdg::BinaryOperation > jlm::llvm::ConvertPointerIcmpPredicate (const ::llvm::CmpInst::Predicate predicate)
 
static const Variable * jlm::llvm::convert (const ::llvm::ICmpInst *instruction, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_fcmp_instruction (::llvm::Instruction *instruction, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::AddIOBarrier (tacsvector_t &tacs, const Variable *operand, const Context &ctx)
 
static const Variable * jlm::llvm::convert_load_instruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_store_instruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::ConvertPhiInstruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_getelementptr_instruction (::llvm::Instruction *inst, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convertMallocCall (const ::llvm::CallInst &instruction, tacsvector_t &threeAddressCodes, Context &context)
 
static const Variable * jlm::llvm::convertFreeCall (const ::llvm::CallInst &instruction, tacsvector_t &threeAddressCodes, Context &context)
 
static bool jlm::llvm::IsVolatile (const ::llvm::Value &value)
 
static const Variable * jlm::llvm::convertMemCpyCall (const ::llvm::IntrinsicInst *instruction, tacsvector_t &threeAddressCodes, Context &context)
 
static const Variable * jlm::llvm::convertMemSetCall (const ::llvm::IntrinsicInst &instruction, tacsvector_t &threeAddressCodes, Context &context)
 
static bool jlm::llvm::isMallocCall (const ::llvm::CallInst &callInstruction)
 
static bool jlm::llvm::isFreeCall (const ::llvm::CallInst &callInstruction)
 
static const Variable * jlm::llvm::convertFMulAddIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &ctx)
 
std::vector< const Variable * > jlm::llvm::convertCallArguments (const ::llvm::CallInst &callInstruction, tacsvector_t &threeAddressCodes, Context &context)
 
static const Variable * jlm::llvm::createCall (const ::llvm::CallInst &callInstruction, tacsvector_t &threeAddressCodes, Context &context)
 
static bool jlm::llvm::shouldIgnoreIntrinsic (::llvm::Intrinsic::ID intrinsicId)
 
static const Variable * jlm::llvm::convertIntrinsicInstruction (const ::llvm::IntrinsicInst &intrinsicInstruction, tacsvector_t &threeAddressCodes, Context &context)
 
static const Variable * jlm::llvm::convertCallInstruction (const ::llvm::CallInst &callInstruction, tacsvector_t &threeAddressCodes, Context &context)
 
static const Variable * jlm::llvm::convert_select_instruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx)
 
static std::unique_ptr< rvsdg::BinaryOperation > jlm::llvm::ConvertIntegerBinaryOperation (const ::llvm::Instruction::BinaryOps binaryOperation, std::size_t numBits)
 
static std::unique_ptr< rvsdg::BinaryOperation > jlm::llvm::ConvertFloatingPointBinaryOperation (const ::llvm::Instruction::BinaryOps binaryOperation, fpsize floatingPointSize)
 
static const Variable * jlm::llvm::convert (const ::llvm::BinaryOperator *instruction, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_alloca_instruction (::llvm::Instruction *instruction, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_extractvalue (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convertInsertValueInstruction (const ::llvm::InsertValueInst &instruction, tacsvector_t &tacs, Context &context)
 
static const Variable * jlm::llvm::convert_extractelement_instruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert (::llvm::ShuffleVectorInst *i, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert_insertelement_instruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convertFreezeInstruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx)
 
static const Variable * jlm::llvm::convert (::llvm::UnaryOperator *unaryOperator, tacsvector_t &threeAddressCodeVector, Context &ctx)
 
template<class OP >
static std::unique_ptr< rvsdg::SimpleOperation > jlm::llvm::create_unop (std::shared_ptr< const rvsdg::Type > st, std::shared_ptr< const rvsdg::Type > dt)
 
static const Variable * jlm::llvm::convert_cast_instruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx)
 
template<class INSTRUCTIONTYPE >
static const Variable * jlm::llvm::convert (::llvm::Instruction *instruction, tacsvector_t &tacs, Context &ctx)
 
static std::vector<::llvm::PHINode * > jlm::llvm::convert_instructions (::llvm::Function &function, Context &ctx)
 
static void jlm::llvm::PatchPhiOperands (const std::vector<::llvm::PHINode * > &phis, Context &ctx)
 
static BasicBlockMap jlm::llvm::convert_basic_blocks (::llvm::Function &f, ControlFlowGraph &cfg)
 
static std::unique_ptr< llvm::Argument > jlm::llvm::convert_argument (const ::llvm::Argument &argument, Context &ctx)
 
static void jlm::llvm::EnsureSingleInEdgeToExitNode (ControlFlowGraph &cfg)
 
static std::unique_ptr< ControlFlowGraph > jlm::llvm::create_cfg (::llvm::Function &f, Context &ctx)
 
static void jlm::llvm::convert_function (::llvm::Function &function, Context &ctx)
 
static const llvm::Linkage & jlm::llvm::convert_linkage (const ::llvm::GlobalValue::LinkageTypes &linkage)
 
static void jlm::llvm::declare_globals (::llvm::Module &lm, Context &ctx)
 
static std::unique_ptr< DataNodeInit > jlm::llvm::create_initialization (::llvm::GlobalVariable &gv, Context &ctx)
 
static void jlm::llvm::convert_global_value (::llvm::GlobalVariable &gv, Context &ctx)
 
static void jlm::llvm::convert_globals (::llvm::Module &lm, Context &ctx)
 
std::unique_ptr< InterProceduralGraphModule > jlm::llvm::ConvertLlvmModule (::llvm::Module &llvmModule)