Jlm
Loading...
Searching...
No Matches
Namespaces | Functions
NodeReduction.cpp File Reference
#include <jlm/llvm/ir/operators/ControlOperations.hpp>
#include <jlm/llvm/ir/operators/ConversionOperations.hpp>
#include <jlm/llvm/ir/operators/Gamma.hpp>
#include <jlm/llvm/ir/operators/GetElementPtr.hpp>
#include <jlm/llvm/ir/operators/IntegerOperations.hpp>
#include <jlm/llvm/ir/operators/Load.hpp>
#include <jlm/llvm/ir/operators/MemoryStateOperations.hpp>
#include <jlm/llvm/ir/operators/operators.hpp>
#include <jlm/llvm/ir/operators/Store.hpp>
#include <jlm/llvm/opt/NodeReduction.hpp>
#include <jlm/rvsdg/binary.hpp>
#include <jlm/rvsdg/gamma.hpp>
#include <jlm/rvsdg/MatchType.hpp>
#include <jlm/rvsdg/NodeNormalization.hpp>
#include <jlm/rvsdg/RvsdgModule.hpp>
#include <jlm/rvsdg/traverser.hpp>
#include <jlm/util/Statistics.hpp>
Include dependency graph for NodeReduction.cpp:

Go to the source code of this file.

Namespaces

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

Functions

static std::vector< rvsdg::NodeNormalization< rvsdg::MatchOperation > > jlm::llvm::matchOperationNormalizations ({ foldMatchOperationWithConstant })
 
static std::vector< rvsdg::NodeNormalization< SExtOperation > > jlm::llvm::sextOperationNormalizations ({ SExtOperation::foldConstant })
 
static std::vector< rvsdg::NodeNormalization< ZExtOperation > > jlm::llvm::zextOperationNormalizations ({ ZExtOperation::foldConstant })
 
static std::vector< rvsdg::NodeNormalization< TruncOperation > > jlm::llvm::truncOperationNormalizations ({ TruncOperation::foldConstant })
 
static std::vector< rvsdg::NodeNormalization< IntegerEqOperation > > jlm::llvm::integerEqNormalizations ({ IntegerEqOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerNeOperation > > jlm::llvm::integerNeNormalizations ({ IntegerNeOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerSgeOperation > > jlm::llvm::integerSgeNormalizations ({ IntegerSgeOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerSgtOperation > > jlm::llvm::integerSgtNormalizations ({ IntegerSgtOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerSleOperation > > jlm::llvm::integerSleNormalizations ({ IntegerSleOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerSltOperation > > jlm::llvm::integerSltNormalizations ({ IntegerSltOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerUgeOperation > > jlm::llvm::integerUgeNormalizations ({ IntegerUgeOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerUgtOperation > > jlm::llvm::integerUgtNormalizations ({ IntegerUgtOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerUleOperation > > jlm::llvm::integerUleNormalizations ({ IntegerUleOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerUltOperation > > jlm::llvm::integerUltNormalizations ({ IntegerUltOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerAddOperation > > jlm::llvm::integerAddNormalizations ({ IntegerAddOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerSubOperation > > jlm::llvm::integerSubNormalizations ({ IntegerSubOperation::normalizeAdditiveInverse, IntegerSubOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerMulOperation > > jlm::llvm::integerMulNormalizations ({ IntegerMulOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerSDivOperation > > jlm::llvm::integerSDivNormalizations ({ IntegerSDivOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerUDivOperation > > jlm::llvm::integerUDivNormalizations ({ IntegerUDivOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerSRemOperation > > jlm::llvm::integerSRemNormalizations ({ IntegerSRemOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerURemOperation > > jlm::llvm::integerURemNormalizations ({ IntegerURemOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerAShrOperation > > jlm::llvm::integerAShrNormalizations ({ IntegerAShrOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerShlOperation > > jlm::llvm::integerShlNormalizations ({ IntegerShlOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerLShrOperation > > jlm::llvm::integerLShrNormalizations ({ IntegerLShrOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerAndOperation > > jlm::llvm::integerAndNormalizations ({ IntegerAndOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerOrOperation > > jlm::llvm::integerOrNormalizations ({ IntegerOrOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< IntegerXorOperation > > jlm::llvm::integerXorNormalizations ({ IntegerXorOperation::foldConstants })
 
static std::vector< rvsdg::NodeNormalization< LoadNonVolatileOperation > > jlm::llvm::loadNonVolatileNormalizations ({ LoadNonVolatileOperation::NormalizeLoadStore, LoadNonVolatileOperation::NormalizeLoadAlloca, LoadNonVolatileOperation::NormalizeDuplicateStates, LoadNonVolatileOperation::NormalizeLoadStoreState, LoadNonVolatileOperation::normalizeIOBarrierAddress })
 
static std::vector< rvsdg::NodeNormalization< StoreNonVolatileOperation > > jlm::llvm::storeNonVolatileNormalizations ({ StoreNonVolatileOperation::NormalizeStoreMux, StoreNonVolatileOperation::normalizeStoreStore, StoreNonVolatileOperation::NormalizeStoreAlloca, StoreNonVolatileOperation::NormalizeDuplicateStates, StoreNonVolatileOperation::normalizeIOBarrierAddress, StoreNonVolatileOperation::normalizeStoreAllocaSingleUser })
 
static std::vector< rvsdg::NodeNormalization< MemoryStateMergeOperation > > jlm::llvm::memoryStateMergeNormalizations ({ MemoryStateMergeOperation::NormalizeSingleOperand, MemoryStateMergeOperation::NormalizeDuplicateOperands, MemoryStateMergeOperation::NormalizeNestedMerges, MemoryStateMergeOperation::NormalizeMergeSplit })
 
static std::vector< rvsdg::NodeNormalization< MemoryStateJoinOperation > > jlm::llvm::memoryStateJoinNormalizations ({ MemoryStateJoinOperation::NormalizeSingleOperand, MemoryStateJoinOperation::NormalizeDuplicateOperands })
 
static std::vector< rvsdg::NodeNormalization< MemoryStateSplitOperation > > jlm::llvm::memoryStateSplitNormalizations ({ MemoryStateSplitOperation::NormalizeSingleResult, MemoryStateSplitOperation::NormalizeNestedSplits, MemoryStateSplitOperation::NormalizeSplitMerge })
 
static std::vector< rvsdg::NodeNormalization< LambdaExitMemoryStateMergeOperation > > jlm::llvm::lambdaExitMemoryStateMergeNormalizations ({ LambdaExitMemoryStateMergeOperation::NormalizeLoadFromAlloca, LambdaExitMemoryStateMergeOperation::NormalizeStoreToAlloca, LambdaExitMemoryStateMergeOperation::NormalizeAlloca })
 
static std::vector< rvsdg::NodeNormalization< PtrCmpOperation > > jlm::llvm::ptrCmpNormalizations ({ PtrCmpOperation::normalizeNullPointerComparison })
 
static std::vector< rvsdg::NodeNormalization< GetElementPtrOperation > > jlm::llvm::getElementPtrNormalizations ({ GetElementPtrOperation::normalizeIdempotent })
 
static std::vector< rvsdg::NodeNormalization< rvsdg::BinaryOperation > > jlm::llvm::binaryOperationNormalizations ({ rvsdg::NormalizeBinaryOperation })
 
template<typename TOperation >
static rvsdg::NodeNormalization< TOperation > jlm::llvm::createNormalizer (const std::vector< rvsdg::NodeNormalization< TOperation > > &nodeNormalizations)
 
template<class TOperation >
static bool jlm::llvm::reduceSimpleNode (rvsdg::SimpleNode &simpleNode, const std::vector< rvsdg::NodeNormalization< TOperation > > &normalizations, size_t &counter)