Home | History | Annotate | Download | only in gcc

Lines Matching refs:stmt_info

102 /* Return the smallest scalar part of STMT_INFO.
120 vect_get_smallest_scalar_type (stmt_vec_info stmt_info, tree scalar_type)
131 gassign *assign = dyn_cast <gassign *> (stmt_info->stmt);
151 else if (gcall *call = dyn_cast <gcall *> (stmt_info->stmt))
705 stmt_vec_info stmt_info = vinfo->lookup_stmt (stmt);
706 data_reference *dr_b = STMT_VINFO_DATA_REF (stmt_info);
764 stmt_vec_info stmt_info = vinfo->lookup_stmt (stmt);
772 if (stmt_info != last_store_info)
789 auto check_hoist = [&] (stmt_vec_info stmt_info) -> bool
795 if (stmt_may_clobber_ref_p_1 (stmt_info->stmt, &ref, true))
799 data_reference *dr_b = STMT_VINFO_DATA_REF (stmt_info);
813 if (STMT_VINFO_GROUPED_ACCESS (stmt_info))
824 if (!grp_visited.add (DR_GROUP_FIRST_ELEMENT (stmt_info)))
825 for (auto store_info = DR_GROUP_FIRST_ELEMENT (stmt_info);
828 if ((store_info == stmt_info
829 || get_later_stmt (store_info, stmt_info) == stmt_info)
835 if (!check_hoist (stmt_info))
942 in STMT_INFO. */
945 vect_record_base_alignment (vec_info *vinfo, stmt_vec_info stmt_info,
953 entry = std::make_pair (stmt_info, drb);
963 stmt_info->stmt);
983 stmt_vec_info stmt_info = dr_info->stmt;
985 && STMT_VINFO_VECTORIZABLE (stmt_info)
986 && !STMT_VINFO_GATHER_SCATTER_P (stmt_info))
988 vect_record_base_alignment (vinfo, stmt_info, &DR_INNERMOST (dr));
992 if (loop && nested_in_vect_loop_p (loop, stmt_info))
994 (vinfo, stmt_info, &STMT_VINFO_DR_WRT_VEC_LOOP (stmt_info));
1014 stmt_vec_info stmt_info = dr_info->stmt;
1030 if (STMT_VINFO_GATHER_SCATTER_P (stmt_info))
1070 else if (nested_in_vect_loop_p (loop, stmt_info))
1112 || (dominated_by_p (CDI_DOMINATORS, gimple_bb (stmt_info->stmt),
1114 && (gimple_bb (stmt_info->stmt) != gimple_bb (entry->first->stmt)
1291 stmt_vec_info stmt_info = dr_info->stmt;
1293 if (!STMT_VINFO_RELEVANT_P (stmt_info))
1297 if (STMT_VINFO_GROUPED_ACCESS (stmt_info)
1298 && DR_GROUP_FIRST_ELEMENT (stmt_info) != stmt_info)
1303 if (STMT_VINFO_GATHER_SCATTER_P (stmt_info)
1309 if (STMT_VINFO_STRIDED_P (stmt_info)
1310 && !STMT_VINFO_GROUPED_ACCESS (stmt_info))
1337 stmt_vec_info stmt_info = dr_info->stmt;
1338 tree vectype = STMT_VINFO_VECTYPE (stmt_info);
1340 if (STMT_VINFO_GROUPED_ACCESS (stmt_info))
1356 if (!multiple_p (nelements - mis_in_elements, DR_GROUP_SIZE (stmt_info)))
1408 stmt_vec_info stmt_info = dr_info->stmt;
1412 if (PURE_SLP_STMT (stmt_info))
1415 ncopies = vect_get_num_copies (loop_vinfo, STMT_VINFO_VECTYPE (stmt_info));
1418 vect_get_load_cost (vinfo, stmt_info, ncopies, alignment_support_scheme,
1422 vect_get_store_cost (vinfo,stmt_info, ncopies, alignment_support_scheme,
1955 stmt_vec_info stmt_info = dr_info->stmt;
1956 tree vectype = STMT_VINFO_VECTYPE (stmt_info);
1998 nscalars = (STMT_SLP_TYPE (stmt_info)
1999 ? vf * DR_GROUP_SIZE (stmt_info) : vf);
2240 stmt_vec_info stmt_info = dr0_info->stmt;
2242 STMT_VINFO_VECTYPE (stmt_info)))
2253 tree vectype = STMT_VINFO_VECTYPE (stmt_info);
2274 if (STMT_VINFO_GROUPED_ACCESS (stmt_info))
2275 npeel /= DR_GROUP_SIZE (stmt_info);
2290 STMT_VINFO_VECTYPE (stmt_info)))
2406 stmt_vec_info stmt_info = dr_info->stmt;
2407 if (STMT_VINFO_STRIDED_P (stmt_info))
2413 tree vectype = STMT_VINFO_VECTYPE (stmt_info);
2478 LOOP_VINFO_MAY_MISALIGN_STMTS (loop_vinfo).safe_push (stmt_info);
2493 stmt_vec_info stmt_info;
2498 FOR_EACH_VEC_ELT (may_misalign_stmts, i, stmt_info)
2500 dr_vec_info *dr_info = STMT_VINFO_DR_INFO (stmt_info);
2631 stmt_vec_info stmt_info = dr_info->stmt;
2665 if (!DR_GROUP_FIRST_ELEMENT (stmt_info))
2680 DR_GROUP_FIRST_ELEMENT (stmt_info) = stmt_info;
2681 DR_GROUP_SIZE (stmt_info) = groupsize;
2682 DR_GROUP_GAP (stmt_info) = groupsize - 1;
2694 "not consecutive access %G", stmt_info->stmt);
2699 STMT_VINFO_VECTORIZABLE (stmt_info) = false;
2705 STMT_VINFO_STRIDED_P (stmt_info) = true;
2709 if (DR_GROUP_FIRST_ELEMENT (stmt_info) == stmt_info)
2712 stmt_vec_info next = DR_GROUP_NEXT_ELEMENT (stmt_info);
2793 STMT_VINFO_STRIDED_P (stmt_info) = true;
2800 DR_GROUP_GAP (stmt_info) = groupsize - last_accessed_element;
2802 DR_GROUP_SIZE (stmt_info) = groupsize;
2809 else if (STMT_VINFO_STRIDED_P (stmt_info))
2815 dump_printf_loc (MSG_NOTE, vect_location, "\t%G", stmt_info->stmt);
2816 next = DR_GROUP_NEXT_ELEMENT (stmt_info);
2826 if (DR_GROUP_GAP (stmt_info) != 0)
2829 DR_GROUP_GAP (stmt_info));
2837 LOOP_VINFO_GROUPED_STORES (loop_vinfo).safe_push (stmt_info);
2839 BB_VINFO_GROUPED_STORES (bb_vinfo).safe_push (stmt_info);
2857 stmt_vec_info stmt_info = DR_GROUP_FIRST_ELEMENT (dr_info->stmt);
2858 while (stmt_info)
2860 stmt_vec_info next = DR_GROUP_NEXT_ELEMENT (stmt_info);
2861 DR_GROUP_FIRST_ELEMENT (stmt_info) = NULL;
2862 DR_GROUP_NEXT_ELEMENT (stmt_info) = NULL;
2863 stmt_info = next;
2880 stmt_vec_info stmt_info = dr_info->stmt;
2884 if (STMT_VINFO_GATHER_SCATTER_P (stmt_info))
2901 DR_GROUP_FIRST_ELEMENT (stmt_info) = NULL;
2902 if (!nested_in_vect_loop_p (loop, stmt_info))
2916 if (loop && nested_in_vect_loop_p (loop, stmt_info))
2920 DR_GROUP_FIRST_ELEMENT (stmt_info) = NULL;
2923 step = STMT_VINFO_DR_STEP (stmt_info);
2942 DR_GROUP_FIRST_ELEMENT (stmt_info) = NULL;
2947 if (loop && nested_in_vect_loop_p (loop, stmt_info))
2958 return (STMT_VINFO_STRIDED_P (stmt_info)
2959 && (!STMT_VINFO_GROUPED_ACCESS (stmt_info)
3561 stmt_vec_info stmt_info = dr_info->stmt;
3564 if (DR_GROUP_FIRST_ELEMENT (stmt_info))
3565 count *= DR_GROUP_SIZE (DR_GROUP_FIRST_ELEMENT (stmt_info));
3947 /* STMT_INFO is a call to an internal gather load or scatter store function.
3951 vect_describe_gather_scatter_call (stmt_vec_info stmt_info,
3954 gcall *call = as_a <gcall *> (stmt_info->stmt);
3955 tree vectype = STMT_VINFO_VECTYPE (stmt_info);
3956 data_reference *dr = STMT_VINFO_DATA_REF (stmt_info);
3969 /* Return true if a non-affine read or write in STMT_INFO is suitable for a
3973 vect_check_gather_scatter (stmt_vec_info stmt_info, loop_vec_info loop_vinfo,
3979 struct data_reference *dr = STMT_VINFO_DATA_REF (stmt_info);
3982 tree vectype = STMT_VINFO_VECTYPE (stmt_info);
3992 gcall *call = dyn_cast <gcall *> (stmt_info->stmt);
3998 vect_describe_gather_scatter_call (stmt_info, info);
4469 stmt_vec_info stmt_info = vinfo->lookup_stmt (DR_STMT (dr));
4470 gcc_assert (!stmt_info->dr_aux.dr);
4471 stmt_info->dr_aux.dr = dr;
4472 stmt_info->dr_aux.stmt = stmt_info;
4490 && !nested_in_vect_loop_p (loop, stmt_info))
4506 "failed %G", stmt_info->stmt);
4511 STMT_VINFO_VECTORIZABLE (stmt_info) = false;
4514 return opt_result::failure_at (stmt_info->stmt,
4517 stmt_info->stmt);
4527 if (nested_in_vect_loop_p (loop, stmt_info))
4528 return opt_result::failure_at (stmt_info->stmt,
4531 stmt_info->stmt);
4532 STMT_VINFO_SIMD_LANE_ACCESS_P (stmt_info)
4542 "for stmt: %G", stmt_info->stmt);
4547 STMT_VINFO_VECTORIZABLE (stmt_info) = false;
4550 return opt_result::failure_at (stmt_info->stmt,
4553 stmt_info->stmt);
4560 if (nested_in_vect_loop_p (loop, stmt_info))
4561 return opt_result::failure_at (stmt_info->stmt,
4564 stmt_info->stmt);
4565 STMT_VINFO_STRIDED_P (stmt_info) = true;
4576 if (loop && nested_in_vect_loop_p (loop, stmt_info))
4595 = dr_analyze_innermost (&STMT_VINFO_DR_WRT_VEC_LOOP (stmt_info),
4596 init_ref, loop, stmt_info->stmt);
4611 STMT_VINFO_DR_BASE_ADDRESS (stmt_info),
4612 STMT_VINFO_DR_OFFSET (stmt_info),
4613 STMT_VINFO_DR_INIT (stmt_info),
4614 STMT_VINFO_DR_STEP (stmt_info),
4615 STMT_VINFO_DR_BASE_ALIGNMENT (stmt_info),
4616 STMT_VINFO_DR_BASE_MISALIGNMENT (stmt_info),
4617 STMT_VINFO_DR_OFFSET_ALIGNMENT (stmt_info),
4618 STMT_VINFO_DR_STEP_ALIGNMENT (stmt_info));
4630 stmt_info->stmt);
4641 STMT_VINFO_VECTORIZABLE (stmt_info) = false;
4646 return opt_result::failure_at (stmt_info->stmt,
4650 stmt_info->stmt, scalar_type);
4657 stmt_info->stmt, vectype);
4668 STMT_VINFO_VECTYPE (stmt_info) = vectype;
4673 if (!vect_check_gather_scatter (stmt_info,
4682 (stmt_info->stmt,
4686 stmt_info->stmt);
4688 STMT_VINFO_GATHER_SCATTER_P (stmt_info) = gatherscatter;
4795 STMT_INFO: The statement containing the data reference.
4821 vect_create_addr_base_for_vector_ref (vec_info *vinfo, stmt_vec_info stmt_info,
4825 dr_vec_info *dr_info = STMT_VINFO_DR_INFO (stmt_info);
4896 location accessed in the loop by STMT_INFO, along with the def-use update
4903 1. STMT_INFO: a stmt that references memory. Expected to be of the form
4910 accessed by the data-ref in STMT_INFO.
4944 vect_create_data_ref_ptr (vec_info *vinfo, stmt_vec_info stmt_info,
4962 dr_vec_info *dr_info = STMT_VINFO_DR_INFO (stmt_info);
4978 nested_in_vect_loop = nested_in_vect_loop_p (loop, stmt_info);
4979 containing_loop = (gimple_bb (stmt_info->stmt))->loop_father;
5021 else if (DR_GROUP_SIZE (stmt_info) > 1)
5023 stmt_vec_info sinfo = DR_GROUP_FIRST_ELEMENT (stmt_info);
5079 stmt_info, &new_stmt_list,
5197 STMT_INFO - the original scalar memory-access stmt that is being vectorized.
5208 stmt_vec_info stmt_info, tree bump)
5210 struct data_reference *dr = STMT_VINFO_DATA_REF (stmt_info);
5211 tree vectype = STMT_VINFO_VECTYPE (stmt_info);
5227 vect_finish_stmt_generation (vinfo, stmt_info, incr_stmt, gsi);
5518 stmt_vec_info stmt_info,
5524 tree vectype = STMT_VINFO_VECTYPE (stmt_info);
5583 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
5594 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
5633 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
5643 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
5668 location accessed by STMT_INFO, and a "floor-aligned" load using that
5692 STMT_INFO - (scalar) load stmt to be vectorized. This load accesses
5704 vect_setup_realignment (vec_info *vinfo, stmt_vec_info stmt_info,
5710 tree vectype = STMT_VINFO_VECTYPE (stmt_info);
5712 dr_vec_info *dr_info = STMT_VINFO_DR_INFO (stmt_info);
5716 tree scalar_dest = gimple_assign_lhs (stmt_info->stmt);
5729 class loop *containing_loop = (gimple_bb (stmt_info->stmt))->loop_father;
5735 nested_in_vect_loop = nested_in_vect_loop_p (loop, stmt_info);
5795 tree outerloop_step = STMT_VINFO_DR_STEP (stmt_info);
5818 ptr = vect_create_data_ref_ptr (vinfo, stmt_info, vectype,
5866 stmt_info, &stmts,
6142 stmt_vec_info stmt_info,
6150 tree vectype = STMT_VINFO_VECTYPE (stmt_info);
6193 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
6203 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
6238 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
6246 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
6345 stmt_vec_info stmt_info,
6354 tree vectype = STMT_VINFO_VECTYPE (stmt_info);
6445 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
6452 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
6458 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
6464 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
6561 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
6571 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
6582 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
6591 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
6597 vect_finish_stmt_generation (vinfo, stmt_info, perm_stmt, gsi);
6612 vect_transform_grouped_load (vec_info *vinfo, stmt_vec_info stmt_info,
6627 mode = TYPE_MODE (STMT_VINFO_VECTYPE (stmt_info));
6630 || !vect_shift_permute_load_chain (vinfo, dr_chain, size, stmt_info,
6633 size, stmt_info, gsi, &result_chain);
6634 vect_record_grouped_load_vectors (vinfo, stmt_info, result_chain);
6639 generated as part of the vectorization of STMT_INFO. Assign the statement
6643 vect_record_grouped_load_vectors (vec_info *, stmt_vec_info stmt_info,
6646 stmt_vec_info first_stmt_info = DR_GROUP_FIRST_ELEMENT (stmt_info);
6721 stmt_vec_info stmt_info = dr_info->stmt;
6732 if (gcall *stmt = dyn_cast <gcall *> (stmt_info->stmt))
6741 nested_in_vect_loop = nested_in_vect_loop_p (vect_loop, stmt_info);
6816 && STMT_SLP_TYPE (stmt_info)
6819 (DR_GROUP_FIRST_ELEMENT (stmt_info))),