Lines Matching refs:ForwardingAction
133 struct ForwardingAction { struct
155 static ForwardingAction notApplicable() { in notApplicable() argument
156 ForwardingAction Result; in notApplicable()
162 static ForwardingAction cannotForward() { in cannotForward() argument
163 ForwardingAction Result; in cannotForward()
169 static ForwardingAction triviallyForwardable(bool IsProfitable, Value *Val) { in triviallyForwardable() argument
170 ForwardingAction Result; in triviallyForwardable()
181 static ForwardingAction canForward(std::function<bool()> Execute, in canForward() argument
184 ForwardingAction Result; in canForward()
202 using MemoizationTy = DenseMap<ForwardingAction::KeyTy, ForwardingAction>;
454 ForwardingAction forwardKnownLoad(ScopStmt *TargetStmt, Instruction *Inst, in forwardKnownLoad()
460 return ForwardingAction::notApplicable(); in forwardKnownLoad()
464 return ForwardingAction::notApplicable(); in forwardKnownLoad()
473 return ForwardingAction::cannotForward(); in forwardKnownLoad()
499 return ForwardingAction::canForward( in forwardKnownLoad()
526 return ForwardingAction::notApplicable(); in forwardKnownLoad()
572 return ForwardingAction::notApplicable(); in forwardKnownLoad()
590 return ForwardingAction::canForward( in forwardKnownLoad()
607 ForwardingAction reloadKnownContent(ScopStmt *TargetStmt, Instruction *Inst, in reloadKnownContent()
613 return ForwardingAction::notApplicable(); in reloadKnownContent()
635 return ForwardingAction::notApplicable(); in reloadKnownContent()
650 return ForwardingAction::canForward(ExecAction, {}, true); in reloadKnownContent()
663 ForwardingAction forwardSpeculatable(ScopStmt *TargetStmt, in forwardSpeculatable()
668 return ForwardingAction::notApplicable(); in forwardSpeculatable()
683 return ForwardingAction::notApplicable(); in forwardSpeculatable()
685 SmallVector<ForwardingAction::KeyTy, 4> Depends; in forwardSpeculatable()
692 return ForwardingAction::cannotForward(); in forwardSpeculatable()
718 return ForwardingAction::canForward(ExecAction, Depends, true); in forwardSpeculatable()
733 ForwardingAction forwardTreeImpl(ScopStmt *TargetStmt, Value *UseVal, in forwardTreeImpl()
747 return ForwardingAction::triviallyForwardable(false, UseVal); in forwardTreeImpl()
763 return ForwardingAction::triviallyForwardable(false, UseVal); in forwardTreeImpl()
768 return ForwardingAction::cannotForward(); in forwardTreeImpl()
773 return ForwardingAction::triviallyForwardable(false, UseVal); in forwardTreeImpl()
793 return ForwardingAction::canForward(ExecAction, {}, false); in forwardTreeImpl()
808 return ForwardingAction::cannotForward(); in forwardTreeImpl()
813 ForwardingAction SpeculativeResult = in forwardTreeImpl()
818 ForwardingAction KnownResult = forwardKnownLoad( in forwardTreeImpl()
823 ForwardingAction ReloadResult = reloadKnownContent( in forwardTreeImpl()
831 return ForwardingAction::cannotForward(); in forwardTreeImpl()
859 ForwardingAction Action = in forwardTree()
879 decltype(std::declval<ForwardingAction>().Depends.begin()); in applyForwardingActions()
880 using EdgeTy = std::pair<ForwardingAction *, ChildItTy>; in applyForwardingActions()
882 DenseSet<ForwardingAction::KeyTy> Visited; in applyForwardingActions()
884 SmallVector<ForwardingAction *, 32> Ordered; in applyForwardingActions()
888 ForwardingAction *RootAction = &ForwardingActions[{UseVal, Stmt}]; in applyForwardingActions()
903 ForwardingAction *TopAction = Top.first; in applyForwardingActions()
912 ForwardingAction::KeyTy Key = *TopEdge; in applyForwardingActions()
923 ForwardingAction *ChildAction = &ForwardingActions[Key]; in applyForwardingActions()