Lines Matching refs:ddr
415 struct data_dependence_relation *ddr) in dump_data_dependence_relation() argument
421 if (!ddr || DDR_ARE_DEPENDENT (ddr) == chrec_dont_know) in dump_data_dependence_relation()
423 if (ddr) in dump_data_dependence_relation()
425 dra = DDR_A (ddr); in dump_data_dependence_relation()
426 drb = DDR_B (ddr); in dump_data_dependence_relation()
440 dra = DDR_A (ddr); in dump_data_dependence_relation()
441 drb = DDR_B (ddr); in dump_data_dependence_relation()
445 if (DDR_ARE_DEPENDENT (ddr) == chrec_known) in dump_data_dependence_relation()
448 else if (DDR_ARE_DEPENDENT (ddr) == NULL_TREE) in dump_data_dependence_relation()
454 FOR_EACH_VEC_ELT (DDR_SUBSCRIPTS (ddr), i, sub) in dump_data_dependence_relation()
464 FOR_EACH_VEC_ELT (DDR_LOOP_NEST (ddr), i, loopi) in dump_data_dependence_relation()
468 for (i = 0; i < DDR_NUM_DIST_VECTS (ddr); i++) in dump_data_dependence_relation()
471 print_lambda_vector (outf, DDR_DIST_VECT (ddr, i), in dump_data_dependence_relation()
472 DDR_NB_LOOPS (ddr)); in dump_data_dependence_relation()
475 for (i = 0; i < DDR_NUM_DIR_VECTS (ddr); i++) in dump_data_dependence_relation()
478 print_direction_vector (outf, DDR_DIR_VECT (ddr, i), in dump_data_dependence_relation()
479 DDR_NB_LOOPS (ddr)); in dump_data_dependence_relation()
489 debug_data_dependence_relation (struct data_dependence_relation *ddr) in debug_data_dependence_relation() argument
491 dump_data_dependence_relation (stderr, ddr); in debug_data_dependence_relation()
501 struct data_dependence_relation *ddr; in dump_data_dependence_relations() local
503 FOR_EACH_VEC_ELT (ddrs, i, ddr) in dump_data_dependence_relations()
504 dump_data_dependence_relation (file, ddr); in dump_data_dependence_relations()
540 struct data_dependence_relation *ddr; in dump_dist_dir_vectors() local
543 FOR_EACH_VEC_ELT (ddrs, i, ddr) in dump_dist_dir_vectors()
544 if (DDR_ARE_DEPENDENT (ddr) == NULL_TREE && DDR_AFFINE_P (ddr)) in dump_dist_dir_vectors()
546 FOR_EACH_VEC_ELT (DDR_DIST_VECTS (ddr), j, v) in dump_dist_dir_vectors()
549 print_lambda_vector (file, v, DDR_NB_LOOPS (ddr)); in dump_dist_dir_vectors()
553 FOR_EACH_VEC_ELT (DDR_DIR_VECTS (ddr), j, v) in dump_dist_dir_vectors()
556 print_direction_vector (file, v, DDR_NB_LOOPS (ddr)); in dump_dist_dir_vectors()
570 struct data_dependence_relation *ddr; in dump_ddrs() local
572 FOR_EACH_VEC_ELT (ddrs, i, ddr) in dump_ddrs()
573 dump_data_dependence_relation (file, ddr); in dump_ddrs()
1369 runtime_alias_check_p (ddr_p ddr, class loop *loop, bool speed_p) in runtime_alias_check_p() argument
1374 DR_REF (DDR_A (ddr)), DR_REF (DDR_B (ddr))); in runtime_alias_check_p()
1377 return opt_result::failure_at (DR_STMT (DDR_A (ddr)), in runtime_alias_check_p()
1384 return opt_result::failure_at (DR_STMT (DDR_A (ddr)), in runtime_alias_check_p()
2619 compute_subscript_distance (struct data_dependence_relation *ddr) in compute_subscript_distance() argument
2624 if (DDR_ARE_DEPENDENT (ddr) == NULL_TREE) in compute_subscript_distance()
2628 for (i = 0; i < DDR_NUM_SUBSCRIPTS (ddr); i++) in compute_subscript_distance()
2632 subscript = DDR_SUBSCRIPT (ddr, i); in compute_subscript_distance()
3185 finalize_ddr_dependent (struct data_dependence_relation *ddr, in finalize_ddr_dependent() argument
3188 DDR_ARE_DEPENDENT (ddr) = chrec; in finalize_ddr_dependent()
3189 free_subscripts (DDR_SUBSCRIPTS (ddr)); in finalize_ddr_dependent()
3190 DDR_SUBSCRIPTS (ddr).create (0); in finalize_ddr_dependent()
3197 non_affine_dependence_relation (struct data_dependence_relation *ddr) in non_affine_dependence_relation() argument
3202 DDR_AFFINE_P (ddr) = false; in non_affine_dependence_relation()
4687 save_dist_v (struct data_dependence_relation *ddr, lambda_vector dist_v) in save_dist_v() argument
4692 FOR_EACH_VEC_ELT (DDR_DIST_VECTS (ddr), i, v) in save_dist_v()
4693 if (lambda_vector_equal (v, dist_v, DDR_NB_LOOPS (ddr))) in save_dist_v()
4696 DDR_DIST_VECTS (ddr).safe_push (dist_v); in save_dist_v()
4702 save_dir_v (struct data_dependence_relation *ddr, lambda_vector dir_v) in save_dir_v() argument
4707 FOR_EACH_VEC_ELT (DDR_DIR_VECTS (ddr), i, v) in save_dir_v()
4708 if (lambda_vector_equal (v, dir_v, DDR_NB_LOOPS (ddr))) in save_dir_v()
4711 DDR_DIR_VECTS (ddr).safe_push (dir_v); in save_dir_v()
4729 add_outer_distances (struct data_dependence_relation *ddr, in add_outer_distances() argument
4736 lambda_vector save_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); in add_outer_distances()
4737 lambda_vector_copy (dist_v, save_v, DDR_NB_LOOPS (ddr)); in add_outer_distances()
4739 save_dist_v (ddr, save_v); in add_outer_distances()
4751 build_classic_dist_vector_1 (struct data_dependence_relation *ddr, in build_classic_dist_vector_1() argument
4757 lambda_vector init_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); in build_classic_dist_vector_1()
4758 class loop *loop = DDR_LOOP_NEST (ddr)[0]; in build_classic_dist_vector_1()
4760 for (i = 0; i < DDR_NUM_SUBSCRIPTS (ddr); i++) in build_classic_dist_vector_1()
4763 struct subscript *subscript = DDR_SUBSCRIPT (ddr, i); in build_classic_dist_vector_1()
4767 non_affine_dependence_relation (ddr); in build_classic_dist_vector_1()
4785 non_affine_dependence_relation (ddr); in build_classic_dist_vector_1()
4799 index = index_in_loop_nest (var_a, DDR_LOOP_NEST (ddr)); in build_classic_dist_vector_1()
4814 finalize_ddr_dependent (ddr, chrec_known); in build_classic_dist_vector_1()
4827 non_affine_dependence_relation (ddr); in build_classic_dist_vector_1()
4841 invariant_access_functions (const struct data_dependence_relation *ddr, in invariant_access_functions() argument
4847 FOR_EACH_VEC_ELT (DDR_SUBSCRIPTS (ddr), i, sub) in invariant_access_functions()
4860 add_multivariate_self_dist (struct data_dependence_relation *ddr, tree c_2) in add_multivariate_self_dist() argument
4875 DDR_AFFINE_P (ddr) = false; in add_multivariate_self_dist()
4879 x_2 = index_in_loop_nest (CHREC_VARIABLE (c_2), DDR_LOOP_NEST (ddr)); in add_multivariate_self_dist()
4880 x_1 = index_in_loop_nest (CHREC_VARIABLE (c_1), DDR_LOOP_NEST (ddr)); in add_multivariate_self_dist()
4883 dist_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); in add_multivariate_self_dist()
4898 save_dist_v (ddr, dist_v); in add_multivariate_self_dist()
4900 add_outer_distances (ddr, dist_v, x_1); in add_multivariate_self_dist()
4907 add_other_self_distances (struct data_dependence_relation *ddr) in add_other_self_distances() argument
4911 int index_carry = DDR_NB_LOOPS (ddr); in add_other_self_distances()
4913 class loop *loop = DDR_LOOP_NEST (ddr)[0]; in add_other_self_distances()
4915 FOR_EACH_VEC_ELT (DDR_SUBSCRIPTS (ddr), i, sub) in add_other_self_distances()
4923 if (DDR_NUM_SUBSCRIPTS (ddr) != 1) in add_other_self_distances()
4925 DDR_ARE_DEPENDENT (ddr) = chrec_dont_know; in add_other_self_distances()
4929 access_fun = SUB_ACCESS_FN (DDR_SUBSCRIPT (ddr, 0), 0); in add_other_self_distances()
4932 add_multivariate_self_dist (ddr, access_fun); in add_other_self_distances()
4938 DDR_AFFINE_P (ddr) = false; in add_other_self_distances()
4955 DDR_LOOP_NEST (ddr))); in add_other_self_distances()
4959 dist_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); in add_other_self_distances()
4960 add_outer_distances (ddr, dist_v, index_carry); in add_other_self_distances()
4964 insert_innermost_unit_dist_vector (struct data_dependence_relation *ddr) in insert_innermost_unit_dist_vector() argument
4966 lambda_vector dist_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); in insert_innermost_unit_dist_vector()
4969 save_dist_v (ddr, dist_v); in insert_innermost_unit_dist_vector()
4984 add_distance_for_zero_overlaps (struct data_dependence_relation *ddr) in add_distance_for_zero_overlaps() argument
4988 for (i = 0; i < DDR_NUM_SUBSCRIPTS (ddr); i++) in add_distance_for_zero_overlaps()
4990 subscript_p sub = DDR_SUBSCRIPT (ddr, i); in add_distance_for_zero_overlaps()
4997 insert_innermost_unit_dist_vector (ddr); in add_distance_for_zero_overlaps()
5004 insert_innermost_unit_dist_vector (ddr); in add_distance_for_zero_overlaps()
5014 same_access_functions (const struct data_dependence_relation *ddr) in same_access_functions() argument
5019 FOR_EACH_VEC_ELT (DDR_SUBSCRIPTS (ddr), i, sub) in same_access_functions()
5032 build_classic_dist_vector (struct data_dependence_relation *ddr, in build_classic_dist_vector() argument
5036 int index_carry = DDR_NB_LOOPS (ddr); in build_classic_dist_vector()
5039 if (DDR_ARE_DEPENDENT (ddr) != NULL_TREE) in build_classic_dist_vector()
5042 if (same_access_functions (ddr)) in build_classic_dist_vector()
5045 dist_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); in build_classic_dist_vector()
5046 save_dist_v (ddr, dist_v); in build_classic_dist_vector()
5048 if (invariant_access_functions (ddr, loop_nest->num)) in build_classic_dist_vector()
5049 add_distance_for_zero_overlaps (ddr); in build_classic_dist_vector()
5051 if (DDR_NB_LOOPS (ddr) > 1) in build_classic_dist_vector()
5052 add_other_self_distances (ddr); in build_classic_dist_vector()
5057 dist_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); in build_classic_dist_vector()
5058 if (!build_classic_dist_vector_1 (ddr, 0, 1, dist_v, &init_b, &index_carry)) in build_classic_dist_vector()
5088 if (!lambda_vector_lexico_pos (dist_v, DDR_NB_LOOPS (ddr))) in build_classic_dist_vector()
5090 lambda_vector save_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); in build_classic_dist_vector()
5091 if (!subscript_dependence_tester_1 (ddr, 1, 0, loop_nest)) in build_classic_dist_vector()
5093 compute_subscript_distance (ddr); in build_classic_dist_vector()
5094 if (!build_classic_dist_vector_1 (ddr, 1, 0, save_v, &init_b, in build_classic_dist_vector()
5097 save_dist_v (ddr, save_v); in build_classic_dist_vector()
5098 DDR_REVERSED_P (ddr) = true; in build_classic_dist_vector()
5116 if (DDR_NB_LOOPS (ddr) > 1) in build_classic_dist_vector()
5118 add_outer_distances (ddr, save_v, index_carry); in build_classic_dist_vector()
5119 add_outer_distances (ddr, dist_v, index_carry); in build_classic_dist_vector()
5124 lambda_vector save_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); in build_classic_dist_vector()
5125 lambda_vector_copy (dist_v, save_v, DDR_NB_LOOPS (ddr)); in build_classic_dist_vector()
5127 if (DDR_NB_LOOPS (ddr) > 1) in build_classic_dist_vector()
5129 lambda_vector opposite_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); in build_classic_dist_vector()
5131 if (!subscript_dependence_tester_1 (ddr, 1, 0, loop_nest)) in build_classic_dist_vector()
5133 compute_subscript_distance (ddr); in build_classic_dist_vector()
5134 if (!build_classic_dist_vector_1 (ddr, 1, 0, opposite_v, &init_b, in build_classic_dist_vector()
5138 save_dist_v (ddr, save_v); in build_classic_dist_vector()
5139 add_outer_distances (ddr, dist_v, index_carry); in build_classic_dist_vector()
5140 add_outer_distances (ddr, opposite_v, index_carry); in build_classic_dist_vector()
5143 save_dist_v (ddr, save_v); in build_classic_dist_vector()
5155 add_outer_distances (ddr, dist_v, in build_classic_dist_vector()
5157 DDR_NB_LOOPS (ddr), 0)); in build_classic_dist_vector()
5165 for (i = 0; i < DDR_NUM_DIST_VECTS (ddr); i++) in build_classic_dist_vector()
5168 print_lambda_vector (dump_file, DDR_DIST_VECT (ddr, i), in build_classic_dist_vector()
5169 DDR_NB_LOOPS (ddr)); in build_classic_dist_vector()
5197 build_classic_dir_vector (struct data_dependence_relation *ddr) in build_classic_dir_vector() argument
5202 FOR_EACH_VEC_ELT (DDR_DIST_VECTS (ddr), i, dist_v) in build_classic_dir_vector()
5204 lambda_vector dir_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); in build_classic_dir_vector()
5206 for (j = 0; j < DDR_NB_LOOPS (ddr); j++) in build_classic_dir_vector()
5209 save_dir_v (ddr, dir_v); in build_classic_dir_vector()
5218 subscript_dependence_tester_1 (struct data_dependence_relation *ddr, in subscript_dependence_tester_1() argument
5227 for (i = 0; DDR_SUBSCRIPTS (ddr).iterate (i, &subscript); i++) in subscript_dependence_tester_1()
5271 finalize_ddr_dependent (ddr, res); in subscript_dependence_tester_1()
5278 subscript_dependence_tester (struct data_dependence_relation *ddr, in subscript_dependence_tester() argument
5281 if (subscript_dependence_tester_1 (ddr, 0, 1, loop_nest)) in subscript_dependence_tester()
5284 compute_subscript_distance (ddr); in subscript_dependence_tester()
5285 if (build_classic_dist_vector (ddr, loop_nest)) in subscript_dependence_tester()
5286 build_classic_dir_vector (ddr); in subscript_dependence_tester()
5318 compute_affine_dependence (struct data_dependence_relation *ddr, in compute_affine_dependence() argument
5321 struct data_reference *dra = DDR_A (ddr); in compute_affine_dependence()
5322 struct data_reference *drb = DDR_B (ddr); in compute_affine_dependence()
5338 if (DDR_ARE_DEPENDENT (ddr) == NULL_TREE) in compute_affine_dependence()
5344 subscript_dependence_tester (ddr, loop_nest); in compute_affine_dependence()
5361 finalize_ddr_dependent (ddr, chrec_dont_know); in compute_affine_dependence()
5367 if (DDR_ARE_DEPENDENT (ddr) == chrec_known) in compute_affine_dependence()
5369 else if (DDR_ARE_DEPENDENT (ddr) == chrec_dont_know) in compute_affine_dependence()
5388 struct data_dependence_relation *ddr; in compute_all_dependences() local
5395 struct data_dependence_relation *ddr; in compute_all_dependences() local
5399 ddr = initialize_data_dependence_relation (NULL, NULL, loop_nest); in compute_all_dependences()
5400 dependence_relations->safe_push (ddr); in compute_all_dependences()
5408 ddr = initialize_data_dependence_relation (a, b, loop_nest); in compute_all_dependences()
5409 dependence_relations->safe_push (ddr); in compute_all_dependences()
5411 compute_affine_dependence (ddr, loop_nest[0]); in compute_all_dependences()
5417 ddr = initialize_data_dependence_relation (a, a, loop_nest); in compute_all_dependences()
5418 dependence_relations->safe_push (ddr); in compute_all_dependences()
5420 compute_affine_dependence (ddr, loop_nest[0]); in compute_all_dependences()
5943 free_dependence_relation (struct data_dependence_relation *ddr) in free_dependence_relation() argument
5945 if (ddr == NULL) in free_dependence_relation()
5948 if (DDR_SUBSCRIPTS (ddr).exists ()) in free_dependence_relation()
5949 free_subscripts (DDR_SUBSCRIPTS (ddr)); in free_dependence_relation()
5950 DDR_DIST_VECTS (ddr).release (); in free_dependence_relation()
5951 DDR_DIR_VECTS (ddr).release (); in free_dependence_relation()
5953 free (ddr); in free_dependence_relation()
5963 struct data_dependence_relation *ddr; in free_dependence_relations() local
5965 FOR_EACH_VEC_ELT (dependence_relations, i, ddr) in free_dependence_relations()
5966 if (ddr) in free_dependence_relations()
5967 free_dependence_relation (ddr); in free_dependence_relations()