|
GCC Middle and Back End API Reference
|


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_pattern * | recognize (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_tree > | m_workset |
| stmt_vec_info | m_rep |
| unsigned | m_num_args |
| internal_fn | m_ifn |
| slp_tree * | m_node |
| vec< slp_tree > | m_ops |
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.
|
inlineprotected |
References complex_pattern::complex_pattern(), vect_pattern::m_num_args, and vect_pattern::m_ops.
|
finaloverridevirtual |
|
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().
|
static |
Dummy matches implementation for proxy object.
|
staticinherited |
|
static |
Attempt to recognize a complex mul pattern.
References complex_add_pattern::matches(), complex_fms_pattern::matches(), complex_mul_pattern::matches(), complex_add_pattern::mkInstance(), complex_fms_pattern::mkInstance(), complex_mul_pattern::mkInstance(), NULL, and vect_detect_pair_op().
|
protectedinherited |
Referenced by addsub_pattern::build(), complex_mul_pattern::build(), and complex_pattern::build_common().
|
protectedinherited |
|
protectedinherited |
Referenced by complex_add_pattern::build(), complex_fms_pattern::build(), complex_mul_pattern::build(), complex_add_pattern::complex_add_pattern(), complex_fms_pattern::complex_fms_pattern(), complex_mul_pattern::complex_mul_pattern(), complex_operations_pattern::complex_operations_pattern(), complex_pattern::complex_pattern(), complex_add_pattern::mkInstance(), complex_fms_pattern::mkInstance(), complex_mul_pattern::mkInstance(), and vect_pattern().
|
protectedinherited |
Referenced by build_common(), and complex_pattern().
Referenced by build_common().