class ReassociatePass
Declaration
class ReassociatePass : public PassInfoMixin { /* full declaration omitted */ };
Description
Reassociate commutative expressions.
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:71
Inherits from: PassInfoMixin
Member Variables
- protected DenseMap<llvm::BasicBlock*, unsigned int> RankMap
- protected DenseMap<AssertingVH<llvm::Value>, unsigned int> ValueRankMap
- protected llvm::ReassociatePass::OrderedSet RedoInsts
- protected DenseMap<std::pair<Value*, Value*>, llvm::ReassociatePass::PairMapValue>[18] PairMap
- protected bool MadeChange
- protected static const unsigned int GlobalReassociateLimit = 10
- protected static const unsigned int NumBinaryOps = Instruction::BinaryOpsEnd - Instruction::BinaryOpsBegin
Method Overview
- private void BuildPairMap(ReversePostOrderTraversal<llvm::Function *> & RPOT)
- private void BuildRankMap(llvm::Function & F, ReversePostOrderTraversal<llvm::Function *> & RPOT)
- private bool CombineXorOpnd(llvm::Instruction * I, reassociate::XorOpnd * Opnd1, llvm::APInt & ConstOpnd, llvm::Value *& Res)
- private bool CombineXorOpnd(llvm::Instruction * I, reassociate::XorOpnd * Opnd1, reassociate::XorOpnd * Opnd2, llvm::APInt & ConstOpnd, llvm::Value *& Res)
- private void EraseInst(llvm::Instruction * I)
- private llvm::Value * OptimizeAdd(llvm::Instruction * I, SmallVectorImpl<reassociate::ValueEntry> & Ops)
- private llvm::Value * OptimizeExpression(llvm::BinaryOperator * I, SmallVectorImpl<reassociate::ValueEntry> & Ops)
- private void OptimizeInst(llvm::Instruction * I)
- private llvm::Value * OptimizeMul(llvm::BinaryOperator * I, SmallVectorImpl<reassociate::ValueEntry> & Ops)
- private llvm::Value * OptimizeXor(llvm::Instruction * I, SmallVectorImpl<reassociate::ValueEntry> & Ops)
- private void ReassociateExpression(llvm::BinaryOperator * I)
- private void RecursivelyEraseDeadInsts(llvm::Instruction * I, llvm::ReassociatePass::OrderedSet & Insts)
- private llvm::Value * RemoveFactorFromExpression(llvm::Value * V, llvm::Value * Factor)
- private void RewriteExprTree(llvm::BinaryOperator * I, SmallVectorImpl<reassociate::ValueEntry> & Ops)
- private llvm::Value * buildMinimalMultiplyDAG(llvm::IRBuilderBase & Builder, SmallVectorImpl<reassociate::Factor> & Factors)
- private llvm::Instruction * canonicalizeNegFPConstants(llvm::Instruction * I)
- private llvm::Instruction * canonicalizeNegFPConstantsForOp(llvm::Instruction * I, llvm::Instruction * Op, llvm::Value * OtherOp)
- private void canonicalizeOperands(llvm::Instruction * I)
- private unsigned int getRank(llvm::Value * V)
- public llvm::PreservedAnalyses run(llvm::Function & F, llvm::FunctionAnalysisManager &)
Methods
¶void BuildPairMap(
ReversePostOrderTraversal<llvm::Function*>&
RPOT)
void BuildPairMap(
ReversePostOrderTraversal<llvm::Function*>&
RPOT)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:128
Parameters
- ReversePostOrderTraversal<llvm::Function*>& RPOT
¶void BuildRankMap(
llvm::Function& F,
ReversePostOrderTraversal<llvm::Function*>&
RPOT)
void BuildRankMap(
llvm::Function& F,
ReversePostOrderTraversal<llvm::Function*>&
RPOT)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:100
Parameters
- llvm::Function& F
- ReversePostOrderTraversal<llvm::Function*>& RPOT
¶bool CombineXorOpnd(llvm::Instruction* I,
reassociate::XorOpnd* Opnd1,
llvm::APInt& ConstOpnd,
llvm::Value*& Res)
bool CombineXorOpnd(llvm::Instruction* I,
reassociate::XorOpnd* Opnd1,
llvm::APInt& ConstOpnd,
llvm::Value*& Res)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:112
Parameters
- llvm::Instruction* I
- reassociate::XorOpnd* Opnd1
- llvm::APInt& ConstOpnd
- llvm::Value*& Res
¶bool CombineXorOpnd(llvm::Instruction* I,
reassociate::XorOpnd* Opnd1,
reassociate::XorOpnd* Opnd2,
llvm::APInt& ConstOpnd,
llvm::Value*& Res)
bool CombineXorOpnd(llvm::Instruction* I,
reassociate::XorOpnd* Opnd1,
reassociate::XorOpnd* Opnd2,
llvm::APInt& ConstOpnd,
llvm::Value*& Res)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:114
Parameters
- llvm::Instruction* I
- reassociate::XorOpnd* Opnd1
- reassociate::XorOpnd* Opnd2
- llvm::APInt& ConstOpnd
- llvm::Value*& Res
¶void EraseInst(llvm::Instruction* I)
void EraseInst(llvm::Instruction* I)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:122
Parameters
¶llvm::Value* OptimizeAdd(
llvm::Instruction* I,
SmallVectorImpl<reassociate::ValueEntry>& Ops)
llvm::Value* OptimizeAdd(
llvm::Instruction* I,
SmallVectorImpl<reassociate::ValueEntry>& Ops)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:108
Parameters
- llvm::Instruction* I
- SmallVectorImpl<reassociate::ValueEntry>& Ops
¶llvm::Value* OptimizeExpression(
llvm::BinaryOperator* I,
SmallVectorImpl<reassociate::ValueEntry>& Ops)
llvm::Value* OptimizeExpression(
llvm::BinaryOperator* I,
SmallVectorImpl<reassociate::ValueEntry>& Ops)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:106
Parameters
- llvm::BinaryOperator* I
- SmallVectorImpl<reassociate::ValueEntry>& Ops
¶void OptimizeInst(llvm::Instruction* I)
void OptimizeInst(llvm::Instruction* I)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:124
Parameters
¶llvm::Value* OptimizeMul(
llvm::BinaryOperator* I,
SmallVectorImpl<reassociate::ValueEntry>& Ops)
llvm::Value* OptimizeMul(
llvm::BinaryOperator* I,
SmallVectorImpl<reassociate::ValueEntry>& Ops)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:119
Parameters
- llvm::BinaryOperator* I
- SmallVectorImpl<reassociate::ValueEntry>& Ops
¶llvm::Value* OptimizeXor(
llvm::Instruction* I,
SmallVectorImpl<reassociate::ValueEntry>& Ops)
llvm::Value* OptimizeXor(
llvm::Instruction* I,
SmallVectorImpl<reassociate::ValueEntry>& Ops)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:110
Parameters
- llvm::Instruction* I
- SmallVectorImpl<reassociate::ValueEntry>& Ops
¶void ReassociateExpression(
llvm::BinaryOperator* I)
void ReassociateExpression(
llvm::BinaryOperator* I)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:103
Parameters
¶void RecursivelyEraseDeadInsts(
llvm::Instruction* I,
llvm::ReassociatePass::OrderedSet& Insts)
void RecursivelyEraseDeadInsts(
llvm::Instruction* I,
llvm::ReassociatePass::OrderedSet& Insts)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:123
Parameters
¶llvm::Value* RemoveFactorFromExpression(
llvm::Value* V,
llvm::Value* Factor)
llvm::Value* RemoveFactorFromExpression(
llvm::Value* V,
llvm::Value* Factor)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:121
Parameters
- llvm::Value* V
- llvm::Value* Factor
¶void RewriteExprTree(
llvm::BinaryOperator* I,
SmallVectorImpl<reassociate::ValueEntry>& Ops)
void RewriteExprTree(
llvm::BinaryOperator* I,
SmallVectorImpl<reassociate::ValueEntry>& Ops)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:104
Parameters
- llvm::BinaryOperator* I
- SmallVectorImpl<reassociate::ValueEntry>& Ops
¶llvm::Value* buildMinimalMultiplyDAG(
llvm::IRBuilderBase& Builder,
SmallVectorImpl<reassociate::Factor>& Factors)
llvm::Value* buildMinimalMultiplyDAG(
llvm::IRBuilderBase& Builder,
SmallVectorImpl<reassociate::Factor>& Factors)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:117
Parameters
- llvm::IRBuilderBase& Builder
- SmallVectorImpl<reassociate::Factor>& Factors
¶llvm::Instruction* canonicalizeNegFPConstants(
llvm::Instruction* I)
llvm::Instruction* canonicalizeNegFPConstants(
llvm::Instruction* I)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:127
Parameters
¶llvm::Instruction*
canonicalizeNegFPConstantsForOp(
llvm::Instruction* I,
llvm::Instruction* Op,
llvm::Value* OtherOp)
llvm::Instruction*
canonicalizeNegFPConstantsForOp(
llvm::Instruction* I,
llvm::Instruction* Op,
llvm::Value* OtherOp)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:125
Parameters
- llvm::Instruction* I
- llvm::Instruction* Op
- llvm::Value* OtherOp
¶void canonicalizeOperands(llvm::Instruction* I)
void canonicalizeOperands(llvm::Instruction* I)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:102
Parameters
¶unsigned int getRank(llvm::Value* V)
unsigned int getRank(llvm::Value* V)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:101
Parameters
- llvm::Value* V
¶llvm::PreservedAnalyses run(
llvm::Function& F,
llvm::FunctionAnalysisManager&)
llvm::PreservedAnalyses run(
llvm::Function& F,
llvm::FunctionAnalysisManager&)
Declared at: llvm/include/llvm/Transforms/Scalar/Reassociate.h:97