GCC Middle and Back End API Reference
complex_operations_pattern Class Reference
Inheritance diagram for complex_operations_pattern:
Collaboration diagram for complex_operations_pattern:

Public Member Functions

void build (vec_info *) final override

Static Public Member Functions

static internal_fn matches (complex_operation_t op, slp_tree_to_load_perm_map_t *, slp_compat_nodes_map_t *, slp_tree *, vec< slp_tree > *)
static vect_patternrecognize (slp_tree_to_load_perm_map_t *, slp_compat_nodes_map_t *, slp_tree *)
static internal_fn matches (complex_operation_t op, slp_tree_to_load_perm_map_t *, slp_tree *, vec< slp_tree > *)

Protected Member Functions

 complex_operations_pattern (slp_tree *node, vec< slp_tree > *m_ops, internal_fn ifn)
void build_common (vec_info *)

Protected Attributes

auto_vec< slp_treem_workset
stmt_vec_info m_rep
unsigned m_num_args
internal_fn m_ifn
slp_treem_node
vec< slp_treem_ops

Detailed Description

This function combines all the existing pattern matchers above into one class
that shares the functionality between them.  The initial match is shared
between all complex operations.   

Constructor & Destructor Documentation

◆ complex_operations_pattern()

complex_operations_pattern::complex_operations_pattern ( slp_tree * node,
vec< slp_tree > * m_ops,
internal_fn ifn )
inlineprotected

Member Function Documentation

◆ build()

void complex_operations_pattern::build ( vec_info * )
finaloverridevirtual
Dummy implementation of build.   

Implements vect_pattern.

References gcc_unreachable.

◆ build_common()

void complex_pattern::build_common ( vec_info * vinfo)
protectedinherited
Create a replacement pattern statement for each node in m_node and inserts
  the new statement into m_node as the new representative statement.  The old
  statement is marked as being in a pattern defined by the new statement.  The
  statement is created as call to internal function IFN with m_num_args
  arguments.

  Furthermore the new pattern is also added to the vectorization information
  structure VINFO and the old statement STMT_INFO is marked as unused while
  the new statement is marked as used and the number of SLP uses of the new
  statement is incremented.

  The newly created SLP nodes are marked as SLP only and will be dissolved
  if SLP is aborted.

  The newly created gimple call is returned and the BB remains unchanged.

  This default method is designed to only match against simple operands where
  all the input and output types are the same.

References vec_info::add_pattern_stmt(), FOR_EACH_VEC_ELT, gimple_bb(), gimple_build_call_internal_vec(), gimple_call_set_lhs(), gimple_call_set_nothrow(), gimple_get_lhs(), gimple_location(), gimple_set_bb(), gimple_set_location(), i, vect_pattern::m_ifn, vect_pattern::m_num_args, m_rep, m_workset, make_temp_ssa_name(), NULL, pure_slp, SLP_TREE_CODE, SLP_TREE_LANE_PERMUTATION, SLP_TREE_REPRESENTATIVE, SLP_TREE_VECTYPE, STMT_SLP_TYPE, STMT_VINFO_RELEVANT, STMT_VINFO_STMT, STMT_VINFO_VECTYPE, TREE_TYPE, vect_orig_stmt(), and vect_used_in_scope.

Referenced by complex_add_pattern::build(), complex_fms_pattern::build(), and complex_mul_pattern::build().

◆ matches() [1/2]

internal_fn complex_operations_pattern::matches ( complex_operation_t op,
slp_tree_to_load_perm_map_t * ,
slp_compat_nodes_map_t * ,
slp_tree * ,
vec< slp_tree > *  )
static
Dummy matches implementation for proxy object.   

◆ matches() [2/2]

internal_fn complex_pattern::matches ( complex_operation_t op,
slp_tree_to_load_perm_map_t * ,
slp_tree * ,
vec< slp_tree > *  )
staticinherited

◆ recognize()

Field Documentation

◆ m_ifn

internal_fn vect_pattern::m_ifn
protectedinherited

◆ m_node

◆ m_num_args

◆ m_ops

◆ m_rep

stmt_vec_info complex_pattern::m_rep
protectedinherited

Referenced by build_common(), and complex_pattern().

◆ m_workset

auto_vec<slp_tree> complex_pattern::m_workset
protectedinherited

Referenced by build_common().


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