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 vect_pattern * | mkInstance (slp_tree *node, vec< slp_tree > *m_ops, internal_fn ifn) |
static internal_fn | matches (complex_operation_t op, slp_tree_to_load_perm_map_t *, slp_tree *, vec< slp_tree > *) |
Protected Member Functions | |
complex_mul_pattern (slp_tree *node, vec< slp_tree > *m_ops, internal_fn ifn) | |
Protected Attributes | |
auto_vec< slp_tree > | m_workset |
unsigned | m_num_args |
internal_fn | m_ifn |
slp_tree * | m_node |
vec< slp_tree > | m_ops |
|
inlineprotected |
References vect_pattern::m_num_args.
Referenced by mkInstance(), and recognize().
|
finaloverridevirtual |
Perform a replacement of the detected complex mul pattern with the new instruction sequences.
Implements vect_pattern.
References complex_pattern::build(), FOR_EACH_VEC_ELT, gcc_unreachable, i, vect_pattern::m_ifn, vect_pattern::m_node, vect_pattern::m_num_args, vect_pattern::m_ops, SLP_TREE_CHILDREN, SLP_TREE_REF_COUNT, vect_build_combine_node(), and vect_free_slp_tree().
|
static |
Pattern matcher for trying to match complex multiply and complex multiply and accumulate pattern in SLP tree. If the operation matches then IFN is set to the operation it matched and the arguments to the two replacement statements are put in m_ops. If no match is found then IFN is set to IFN_LAST and m_ops is unchanged. This function matches the patterns shaped as: double ax = (b[i+1] * a[i]); double bx = (a[i+1] * b[i]); c[i] = c[i] - ax; c[i+1] = c[i+1] + bx; If a match occurred then TRUE is returned, else FALSE. The initial match is expected to be in OP1 and the initial match operands in args0.
References CONJ_NONE, CONJ_SND, FLOAT_TYPE_P, FP_CONTRACT_FAST, linear_loads_p(), MINUS_PLUS, NULL, PERM_EVENEVEN, PERM_EVENODD, PERM_ODDEVEN, PERM_TOP, SLP_TREE_CHILDREN, SLP_TREE_VECTYPE, vect_match_expression_p(), vect_pattern_validate_optab(), and vect_validate_multiplication().
Referenced by recognize(), and complex_operations_pattern::recognize().
|
staticinherited |
|
inlinestatic |
References complex_mul_pattern(), and vect_pattern::m_ops.
Referenced by complex_operations_pattern::recognize().
|
static |
Attempt to recognize a complex mul pattern.
References complex_mul_pattern(), matches(), NULL, and vect_detect_pair_op().
|
protectedinherited |
Referenced by addsub_pattern::build(), build(), and complex_pattern::build().
|
protectedinherited |
Referenced by addsub_pattern::build(), complex_add_pattern::build(), complex_fms_pattern::build(), and build().
|
protectedinherited |
Referenced by complex_pattern::build().