5#ifndef V8_COMPILER_REVECTORIZER_H_
6#define V8_COMPILER_REVECTORIZER_H_
31class SourcePositionTable;
34 bool operator()(
const Node* lhs,
const Node* rhs)
const;
46 :
nodes_(node_group.cbegin(), node_group.cend(), zone),
51 return nodes_ == node_group;
107 void Print(
const char* info);
109 template <
typename FunctionType>
127 int start_index,
int count,
unsigned depth);
168 void DetectCPUFeatures();
169 bool TryRevectorize(
const char* name);
183 return slp_tree_->GetPackNode(node);
186 bool DecideVectorize();
188 void SetEffectInput(
PackNode* pnode,
int index,
Node*& nput);
192 void UpdateSources();
Node * GetEarlySchedulePosition(Node *node)
bool SameBasicBlock(Node *node0, Node *node1)
PackNode * GetOperand(size_t index)
ZoneVector< PackNode * > operands_
ZoneVector< PackNode * >::size_type GetOperandsSize() const
void SetRevectorizedNode(Node *node)
void SetOperand(size_t index, PackNode *pnode)
ZoneVector< Node * > nodes_
bool IsSame(const ZoneVector< Node * > &node_group) const
const ZoneVector< Node * > & Nodes() const
PackNode(Zone *zone, const ZoneVector< Node * > &node_group)
Node * revectorized_node_
Node * RevectorizedNode() const
PackNode * GetPackNode(Node *node) const
MachineGraph * mcgraph() const
std::unordered_set< Node * > sources_
MachineGraph *const mcgraph_
SourcePositionTable * source_positions_
ZoneMap< Node *, ZoneMap< Node *, StoreNodeSet > * > group_of_stores_
compiler::NodeObserver * node_observer_for_test_
ZoneSet< Node * > on_stack_
static constexpr size_t RecursionMaxDepth
void Print(const char *info)
bool IsSideEffectFreeLoad(const ZoneVector< Node * > &node_group)
Node * GetEarlySchedulePosition(Node *node)
PackNode * BuildTree(const ZoneVector< Node * > &roots)
SLPTree(Zone *zone, TFGraph *graph)
PackNode * NewPackNodeAndRecurs(const ZoneVector< Node * > &node_group, int start_index, int count, unsigned depth)
PackNode * GetPackNode(Node *node)
PackNode * NewPackNode(const ZoneVector< Node * > &node_group)
PackNode * BuildTreeRec(const ZoneVector< Node * > &node_group, unsigned depth)
void TryReduceLoadChain(const ZoneVector< Node * > &loads)
bool CanBePacked(const ZoneVector< Node * > &node_group)
bool SameBasicBlock(Node *node0, Node *node1)
ZoneStack< ZoneVector< Node * > > stack_
void PushStack(const ZoneVector< Node * > &node_group)
LinearScheduler * scheduler_
ZoneUnorderedMap< Node *, PackNode * > node_to_packnode_
void ForEach(FunctionType callback)
bool AllOnStack(const ZoneVector< Node * > &node_group)
SourcePositionTable * source_positions
bool(* FunctionType)(const Operation &op, Zone *zone)
#define NON_EXPORTED_BASE(code)
#define DCHECK_LT(v1, v2)
#define V8_EXPORT_PRIVATE