v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::compiler::turboshaft::SLPTree Class Reference

#include <wasm-revec-reducer.h>

Inheritance diagram for v8::internal::compiler::turboshaft::SLPTree:
Collaboration diagram for v8::internal::compiler::turboshaft::SLPTree:

Classes

struct  ExtendIntToF32x4Info
 
struct  LaneExtendInfo
 

Public Member Functions

 SLPTree (Graph &graph, WasmRevecAnalyzer *analyzer, Zone *zone)
 
PackNodeBuildTree (const NodeGroup &roots)
 
void DeleteTree ()
 
PackNodeGetPackNode (OpIndex node)
 
ZoneVector< PackNode * > * GetIntersectPackNodes (OpIndex node)
 
ZoneUnorderedMap< OpIndex, PackNode * > & GetNodeMapping ()
 
ZoneUnorderedMap< OpIndex, ZoneVector< PackNode * > > & GetIntersectNodeMapping ()
 
void Print (const char *info)
 

Private Member Functions

PackNodeBuildTreeRec (const NodeGroup &node_group, unsigned depth)
 
PackNodeNewPackNode (const NodeGroup &node_group)
 
PackNodeNewIntersectPackNode (const NodeGroup &node_group)
 
PackNodeNewForcePackNode (const NodeGroup &node_group, ForcePackNode::ForcePackType type, const Graph &graph)
 
BundlePackNodeNewBundlePackNode (const NodeGroup &node_group, OpIndex base, int8_t offset, uint8_t lane_size, bool is_sign_extract, bool is_sign_convert)
 
PackNodeNewPackNodeAndRecurs (const NodeGroup &node_group, int start_index, int count, unsigned depth)
 
PackNodeNewCommutativePackNodeAndRecurs (const NodeGroup &node_group, unsigned depth)
 
ShufflePackNodeNewShufflePackNode (const NodeGroup &node_group, ShufflePackNode::SpecificInfo::Kind kind)
 
ShufflePackNodeTry256ShuffleMatchLoad8x8U (const NodeGroup &node_group, const uint8_t *shuffle0, const uint8_t *shuffle1)
 
bool TryMatchExtendIntToF32x4 (const NodeGroup &node_group, ExtendIntToF32x4Info *info)
 
std::optional< ExtendIntToF32x4InfoTryGetExtendIntToF32x4Info (OpIndex index)
 
bool IsSideEffectFree (OpIndex first, OpIndex second)
 
bool CanBePacked (const NodeGroup &node_group)
 
bool IsEqual (const OpIndex node0, const OpIndex node1)
 
bool HasInputDependencies (const NodeGroup &node_group)
 
Graphgraph () const
 
Zonezone () const
 

Private Attributes

Graphgraph_
 
WasmRevecAnalyzeranalyzer_
 
Zonephase_zone_
 
PackNoderoot_
 
ZoneUnorderedMap< OpIndex, PackNode * > node_to_packnode_
 
ZoneUnorderedMap< OpIndex, ZoneVector< PackNode * > > node_to_intersect_packnodes_
 

Static Private Attributes

static constexpr size_t RecursionMaxDepth = 1000
 

Detailed Description

Definition at line 461 of file wasm-revec-reducer.h.

Constructor & Destructor Documentation

◆ SLPTree()

v8::internal::compiler::turboshaft::SLPTree::SLPTree ( Graph & graph,
WasmRevecAnalyzer * analyzer,
Zone * zone )
inlineexplicit

Definition at line 463 of file wasm-revec-reducer.h.

Member Function Documentation

◆ BuildTree()

PackNode * v8::internal::compiler::turboshaft::SLPTree::BuildTree ( const NodeGroup & roots)

Definition at line 859 of file wasm-revec-reducer.cc.

Here is the caller graph for this function:

◆ BuildTreeRec()

PackNode * v8::internal::compiler::turboshaft::SLPTree::BuildTreeRec ( const NodeGroup & node_group,
unsigned depth )
private

Definition at line 890 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ CanBePacked()

bool v8::internal::compiler::turboshaft::SLPTree::CanBePacked ( const NodeGroup & node_group)
private

Definition at line 817 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ DeleteTree()

void v8::internal::compiler::turboshaft::SLPTree::DeleteTree ( )

◆ GetIntersectNodeMapping()

ZoneUnorderedMap< OpIndex, ZoneVector< PackNode * > > & v8::internal::compiler::turboshaft::SLPTree::GetIntersectNodeMapping ( )
inline

Definition at line 497 of file wasm-revec-reducer.h.

Here is the caller graph for this function:

◆ GetIntersectPackNodes()

ZoneVector< PackNode * > * v8::internal::compiler::turboshaft::SLPTree::GetIntersectPackNodes ( OpIndex node)

Definition at line 209 of file wasm-revec-reducer.cc.

◆ GetNodeMapping()

ZoneUnorderedMap< OpIndex, PackNode * > & v8::internal::compiler::turboshaft::SLPTree::GetNodeMapping ( )
inline

Definition at line 494 of file wasm-revec-reducer.h.

Here is the caller graph for this function:

◆ GetPackNode()

PackNode * v8::internal::compiler::turboshaft::SLPTree::GetPackNode ( OpIndex node)

Definition at line 201 of file wasm-revec-reducer.cc.

◆ graph()

Graph & v8::internal::compiler::turboshaft::SLPTree::graph ( ) const
inlineprivate

Definition at line 572 of file wasm-revec-reducer.h.

◆ HasInputDependencies()

bool v8::internal::compiler::turboshaft::SLPTree::HasInputDependencies ( const NodeGroup & node_group)
private

Definition at line 261 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ IsEqual()

bool v8::internal::compiler::turboshaft::SLPTree::IsEqual ( const OpIndex node0,
const OpIndex node1 )
private

Definition at line 849 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ IsSideEffectFree()

bool v8::internal::compiler::turboshaft::SLPTree::IsSideEffectFree ( OpIndex first,
OpIndex second )
private

Definition at line 787 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ NewBundlePackNode()

BundlePackNode * v8::internal::compiler::turboshaft::SLPTree::NewBundlePackNode ( const NodeGroup & node_group,
OpIndex base,
int8_t offset,
uint8_t lane_size,
bool is_sign_extract,
bool is_sign_convert )
private

Definition at line 334 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ NewCommutativePackNodeAndRecurs()

PackNode * v8::internal::compiler::turboshaft::SLPTree::NewCommutativePackNodeAndRecurs ( const NodeGroup & node_group,
unsigned depth )
private

Definition at line 382 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ NewForcePackNode()

PackNode * v8::internal::compiler::turboshaft::SLPTree::NewForcePackNode ( const NodeGroup & node_group,
ForcePackNode::ForcePackType type,
const Graph & graph )
private

Definition at line 303 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ NewIntersectPackNode()

PackNode * v8::internal::compiler::turboshaft::SLPTree::NewIntersectPackNode ( const NodeGroup & node_group)
private

Definition at line 351 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ NewPackNode()

PackNode * v8::internal::compiler::turboshaft::SLPTree::NewPackNode ( const NodeGroup & node_group)
private

Definition at line 292 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ NewPackNodeAndRecurs()

PackNode * v8::internal::compiler::turboshaft::SLPTree::NewPackNodeAndRecurs ( const NodeGroup & node_group,
int start_index,
int count,
unsigned depth )
private

Definition at line 412 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ NewShufflePackNode()

ShufflePackNode * v8::internal::compiler::turboshaft::SLPTree::NewShufflePackNode ( const NodeGroup & node_group,
ShufflePackNode::SpecificInfo::Kind kind )
private

Definition at line 432 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ Print()

void v8::internal::compiler::turboshaft::SLPTree::Print ( const char * info)

Definition at line 249 of file wasm-revec-reducer.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Try256ShuffleMatchLoad8x8U()

ShufflePackNode * v8::internal::compiler::turboshaft::SLPTree::Try256ShuffleMatchLoad8x8U ( const NodeGroup & node_group,
const uint8_t * shuffle0,
const uint8_t * shuffle1 )
private

Definition at line 445 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ TryGetExtendIntToF32x4Info()

std::optional< SLPTree::ExtendIntToF32x4Info > v8::internal::compiler::turboshaft::SLPTree::TryGetExtendIntToF32x4Info ( OpIndex index)
private

Definition at line 644 of file wasm-revec-reducer.cc.

Here is the call graph for this function:

◆ TryMatchExtendIntToF32x4()

bool v8::internal::compiler::turboshaft::SLPTree::TryMatchExtendIntToF32x4 ( const NodeGroup & node_group,
ExtendIntToF32x4Info * info )
private

Definition at line 749 of file wasm-revec-reducer.cc.

◆ zone()

Zone * v8::internal::compiler::turboshaft::SLPTree::zone ( ) const
inlineprivate

Definition at line 573 of file wasm-revec-reducer.h.

Member Data Documentation

◆ analyzer_

WasmRevecAnalyzer* v8::internal::compiler::turboshaft::SLPTree::analyzer_
private

Definition at line 576 of file wasm-revec-reducer.h.

◆ graph_

Graph& v8::internal::compiler::turboshaft::SLPTree::graph_
private

Definition at line 575 of file wasm-revec-reducer.h.

◆ node_to_intersect_packnodes_

ZoneUnorderedMap<OpIndex, ZoneVector<PackNode*> > v8::internal::compiler::turboshaft::SLPTree::node_to_intersect_packnodes_
private

Definition at line 582 of file wasm-revec-reducer.h.

◆ node_to_packnode_

ZoneUnorderedMap<OpIndex, PackNode*> v8::internal::compiler::turboshaft::SLPTree::node_to_packnode_
private

Definition at line 580 of file wasm-revec-reducer.h.

◆ phase_zone_

Zone* v8::internal::compiler::turboshaft::SLPTree::phase_zone_
private

Definition at line 577 of file wasm-revec-reducer.h.

◆ RecursionMaxDepth

size_t v8::internal::compiler::turboshaft::SLPTree::RecursionMaxDepth = 1000
staticconstexprprivate

Definition at line 583 of file wasm-revec-reducer.h.

◆ root_

PackNode* v8::internal::compiler::turboshaft::SLPTree::root_
private

Definition at line 578 of file wasm-revec-reducer.h.


The documentation for this class was generated from the following files: