Home | History | Annotate | Download | only in aarch64

Lines Matching refs:stmt_info

15573 /* Return true if STMT_INFO accesses a decl that is known to be the
15576 aarch64_accesses_vector_load_decl_p (stmt_vec_info stmt_info)
15580 auto dr = STMT_VINFO_DATA_REF (stmt_info);
15790 stmt_vec_info stmt_info, slp_tree, tree vectype,
15947 /* If STMT_INFO is a memory reference, return the scalar memory type,
15950 aarch64_dr_type (stmt_vec_info stmt_info)
15952 if (auto dr = STMT_VINFO_DATA_REF (stmt_info))
16118 /* Return true if an access of kind KIND for STMT_INFO represents one
16122 aarch64_ld234_st234_vectors (vect_cost_for_stmt kind, stmt_vec_info stmt_info)
16128 && STMT_VINFO_DATA_REF (stmt_info))
16130 stmt_info = DR_GROUP_FIRST_ELEMENT (stmt_info);
16131 if (stmt_info
16132 && STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info) == VMAT_LOAD_STORE_LANES)
16133 return DR_GROUP_SIZE (stmt_info);
16138 /* Return true if creating multiple copies of STMT_INFO for Advanced SIMD
16140 kind of statement that STMT_INFO represents. */
16143 stmt_vec_info stmt_info)
16161 return is_gimple_assign (stmt_info->stmt);
16164 /* Return true if STMT_INFO is the second part of a two-statement multiply-add
16170 aarch64_multiply_add_p (vec_info *vinfo, stmt_vec_info stmt_info,
16173 gassign *assign = dyn_cast<gassign *> (stmt_info->stmt);
16220 /* We are considering implementing STMT_INFO using SVE. If STMT_INFO is an
16226 stmt_vec_info stmt_info,
16229 switch (vect_reduc_type (vinfo, stmt_info))
16235 switch (TYPE_MODE (TREE_TYPE (gimple_get_lhs (stmt_info->stmt))))
16256 /* STMT_INFO describes a loop-carried operation in the original scalar code
16269 aarch64_in_loop_reduction_latency (vec_info *vinfo, stmt_vec_info stmt_info,
16282 = aarch64_sve_in_loop_reduction_latency (vinfo, stmt_info, sve_costs);
16288 bool is_float = FLOAT_TYPE_P (TREE_TYPE (gimple_get_lhs (stmt_info->stmt)));
16306 for STMT_INFO, which has cost kind KIND. If this is a scalar operation,
16311 stmt_vec_info stmt_info,
16316 if (kind == scalar_stmt && vect_is_extending_load (vinfo, stmt_info))
16323 for the vectorized form of STMT_INFO, which has cost kind KIND and which
16330 stmt_vec_info stmt_info, tree vectype,
16342 if (is_a<gphi *> (stmt_info->stmt))
16348 if (vect_is_store_elt_extraction (kind, stmt_info))
16356 && STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info) == VMAT_GATHER_SCATTER)
16368 && STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info) == VMAT_GATHER_SCATTER)
16377 = aarch64_sve_in_loop_reduction_latency (vinfo, stmt_info, sve_costs);
16386 && vect_is_reduction (stmt_info))
16420 for STMT_INFO, which has cost kind KIND and which when vectorized would
16425 stmt_vec_info stmt_info, tree vectype,
16436 if (kind == vector_stmt && vect_is_extending_load (vinfo, stmt_info))
16441 if (kind == vector_stmt && vect_is_integer_truncation (stmt_info))
16474 if (STMT_VINFO_GROUPED_ACCESS (stmt_info))
16476 stmt_vec_info first = DR_GROUP_FIRST_ELEMENT (stmt_info);
16480 && aarch64_advsimd_ldp_stp_p (kind, stmt_info))
16487 /* STMT_COST is the cost calculated for STMT_INFO, which has cost kind KIND
16491 aarch64_adjust_stmt_cost (vect_cost_for_stmt kind, stmt_vec_info stmt_info,
16500 switch (aarch64_ld234_st234_vectors (kind, stmt_info))
16516 if (tree cmp_type = vect_embedded_comparison_type (stmt_info))
16526 if (tree cmp_type = vect_embedded_comparison_type (stmt_info))
16537 /* COUNT, KIND and STMT_INFO are the same as for vector_costs::add_stmt_cost
16542 stmt_vec_info stmt_info,
16554 && vect_is_reduction (stmt_info))
16557 = aarch64_in_loop_reduction_latency (m_vinfo, stmt_info, m_vec_flags);
16565 if (stmt_info && aarch64_multiply_add_p (m_vinfo, stmt_info, m_vec_flags))
16592 if (m_vec_flags || FLOAT_TYPE_P (aarch64_dr_type (stmt_info)))
16600 if (m_vec_flags || FLOAT_TYPE_P (aarch64_dr_type (stmt_info)))
16607 && vect_embedded_comparison_type (stmt_info))
16613 && vect_reduc_type (m_vinfo, stmt_info) == COND_REDUCTION)
16618 if (tree type = vect_comparison_type (stmt_info))
16628 switch (aarch64_ld234_st234_vectors (kind, stmt_info))
16646 && STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info) == VMAT_GATHER_SCATTER)
16654 /* Return true if STMT_INFO contains a memory access and if the constant
16657 aarch64_aligned_constant_offset_p (stmt_vec_info stmt_info,
16660 if (!STMT_VINFO_DATA_REF (stmt_info))
16663 if (auto first_stmt = DR_GROUP_FIRST_ELEMENT (stmt_info))
16664 stmt_info = first_stmt;
16665 tree constant_offset = DR_INIT (STMT_VINFO_DATA_REF (stmt_info));
16681 stmt_vec_info stmt_info, tree vectype)
16718 if (stmt_info)
16725 if (!aarch64_aligned_constant_offset_p (stmt_info, size))
16731 if (stmt_info && STMT_VINFO_DATA_REF (stmt_info))
16734 auto size = GET_MODE_SIZE (TYPE_MODE (aarch64_dr_type (stmt_info)));
16742 if (!aarch64_aligned_constant_offset_p (stmt_info, size))
16754 stmt_vec_info stmt_info, slp_tree,
16762 && stmt_info
16763 && stmt_in_inner_loop_p (m_vinfo, stmt_info));
16779 stmt_info, vectype);
16783 /* Try to get a more accurate cost by looking at STMT_INFO instead
16785 if (stmt_info && aarch64_use_new_vector_costs_p ())
16790 if (vect_is_store_elt_extraction (kind, stmt_info))
16794 stmt_info, stmt_cost);
16798 stmt_info, vectype,
16803 if (stmt_info && vectype && aarch64_sve_mode_p (TYPE_MODE (vectype)))
16804 stmt_cost = aarch64_sve_adjust_stmt_cost (m_vinfo, kind, stmt_info,
16807 if (stmt_info && aarch64_use_new_vector_costs_p ())
16811 stmt_cost = aarch64_adjust_stmt_cost (kind, stmt_info, vectype,
16822 count_ops (count, kind, stmt_info, &ops);
16833 gimple *stmt = stmt_info->stmt;
16851 if (stmt_info
16853 && aarch64_accesses_vector_load_decl_p (stmt_info))
16859 return record_stmt_cost (stmt_info, where, (count * stmt_cost).ceil ());