* presentation-inlined.c:13:3: === analyzing loop === [pass=vect] [count(precise)=76800000] ** === analyze_loop_nest === *** === vect_analyze_loop_form === **** === get_loop_niters === *** symbolic number of iterations is (unsigned int) n_8(D) *** === vect_analyze_data_refs === **** got vectype for stmt: _4 = *_3;vector(4) int *** === vect_analyze_scalar_cycles === **** Analyze phi: i_17 = PHI <0(5), i_10(6)> **** Access function of PHI: {0, +, 1}_1 **** step: 1, init: 0 **** Detected induction **** Analyze phi: sum_20 = PHI <0(5), _12(6)> **** Access function of PHI: {0, +, _4}_1 **** step: _4, init: 0 **** step unknown **** Analyze phi: sum_20 = PHI <0(5), _12(6)> **** detected reduction: _12 = _4 + sum_20; **** Detected reduction *** === vect_pattern_recog === **** vect_is_simple_use: operand _1 **** def_stmt: _1 = (long unsigned int) i_17; **** type of def: internal **** vect_is_simple_use: operand i_17 **** def_stmt: i_17 = PHI <0(5), i_10(6)> **** type of def: induction **** vect_is_simple_use: operand 4 **** vect_is_simple_use: operand _4 **** def_stmt: _4 = *_3; **** type of def: internal **** vect_is_simple_use: operand _4 **** def_stmt: _4 = *_3; **** type of def: internal **** vect_is_simple_use: operand _4 **** def_stmt: _4 = *_3; **** type of def: internal *** === vect_analyze_data_ref_accesses === *** === vect_mark_stmts_to_be_vectorized === **** vect_is_simple_use: operand _4 **** def_stmt: _4 = *_3; **** type of def: internal **** vect_is_simple_use: operand _4 **** def_stmt: _4 = *_3; **** type of def: internal **** vect_is_simple_use: operand sum_20 **** def_stmt: sum_20 = PHI <0(5), _12(6)> **** type of def: reduction **** vect_is_simple_use: operand 0 **** vect_is_simple_use: operand _12 **** def_stmt: _12 = _4 + sum_20; **** type of def: reduction *** === vect_analyze_data_ref_dependences === *** === vect_determine_vectorization_factor === **** ==> examining phi: i_17 = PHI <0(5), i_10(6)> **** ==> examining phi: sum_20 = PHI <0(5), _12(6)> **** get vectype for scalar type: int **** vectype: vector(4) int **** nunits = 4 **** ==> examining statement: # DEBUG sum => sum_20 **** skip **** ==> examining statement: # DEBUG i => i_17 **** skip **** ==> examining statement: # DEBUG BEGIN_STMT **** skip **** ==> examining statement: _1 = (long unsigned int) i_17; **** skip **** ==> examining statement: _2 = _1 * 4; **** skip **** ==> examining statement: _3 = arr_9(D) + _2; **** skip **** ==> examining statement: _4 = *_3; **** get vectype for scalar type: int **** vectype: vector(4) int **** nunits = 4 **** ==> examining statement: # DEBUG x => _4 **** skip **** ==> examining statement: # DEBUG a => &sum **** skip **** ==> examining statement: # DEBUG BEGIN_STMT **** skip **** ==> examining statement: _12 = _4 + sum_20; **** get vectype for scalar type: int **** vectype: vector(4) int **** get vectype for scalar type: int **** vectype: vector(4) int **** nunits = 4 **** ==> examining statement: # DEBUG sum => _12 **** skip **** ==> examining statement: # DEBUG x => NULL **** skip **** ==> examining statement: # DEBUG a => NULL **** skip **** ==> examining statement: i_10 = i_17 + 1; **** skip **** ==> examining statement: # DEBUG i => i_10 **** skip **** ==> examining statement: # DEBUG sum => _12 **** skip **** ==> examining statement: # DEBUG i => i_10 **** skip **** ==> examining statement: if (n_8(D) > i_10) **** skip **** vectorization factor = 4 *** === vect_analyze_slp === *** === vect_make_slp_decision === *** === vect_analyze_data_refs_alignment === **** recording new base alignment for arr_9(D) alignment: 4 misalignment: 0 based on: _4 = *_3; **** vect_compute_data_ref_alignment: **** can't force alignment of ref: *_3 *** === vect_prune_runtime_alias_test_list === *** === vect_enhance_data_refs_alignment === **** Unknown misalignment, naturally aligned **** Analyze phi: i_17 = PHI <0(5), i_10(6)> **** Analyze phi: sum_20 = PHI <0(5), _12(6)> **** reduc or virtual phi. skip **** vect_get_data_access_cost: inside_cost = 12, outside_cost = 0. **** cost model: epilogue peel iters set to vf/2 because loop iterations are unknown **** vect_get_data_access_cost: inside_cost = 12, outside_cost = 0. **** cost model: epilogue peel iters set to vf/2 because loop iterations are unknown **** Vectorizing an unaligned access *** === vect_analyze_loop_operations === **** examining phi: i_17 = PHI <0(5), i_10(6)> **** examining phi: sum_20 = PHI <0(5), _12(6)> **** vect_is_simple_use: operand *_3 **** not ssa-name **** use not simple **** vect_is_simple_use: operand *_3 **** not ssa-name **** use not simple **** can't use a fully-masked loop because the target doesn't have the appropriate masked load or store. **** vect_is_simple_use: operand _4 **** def_stmt: _4 = *_3; **** type of def: internal **** vect_is_simple_use: operand sum_20 **** def_stmt: sum_20 = PHI <0(5), _12(6)> **** type of def: reduction **** reduc op not supported by target *** not using a fully-masked loop *** cost model: epilogue peel iters set to vf/2 because loop iterations are unknown *** Cost model analysis: Vector inside of loop cost: 16 Vector prologue cost: 36 Vector epilogue cost: 52 Scalar iteration cost: 16 Scalar outside cost: 32 Vector outside cost: 88 prologue iterations: 0 epilogue iterations: 2 *** Runtime profitability threshold = 5 *** Static estimate profitability threshold = 9 *** epilog loop required *** Analyze phi: i_17 = PHI <0(5), i_10(6)> *** Analyze phi: sum_20 = PHI <0(5), _12(6)> *** reduc or virtual phi. skip ** loop vectorized ** === vec_transform_loop === *** Profitability threshold is 5 loop iterations *** Analyze phi: i_17 = PHI *** Analyze phi: sum_20 = PHI <_12(6), 0(9)> *** reduc or virtual phi. skip *** vect_update_ivs_after_vectorizer: phi: i_17 = PHI *** vect_update_ivs_after_vectorizer: phi: sum_20 = PHI <_12(6), 0(9)> *** reduc or virtual phi. skip. *** ------>vectorizing phi: i_17 = PHI *** ------>vectorizing phi: sum_20 = PHI <_12(6), 0(16)> *** transform phi *** ------>vectorizing phi: vect__12.4_33 = PHI <(6), (16)> *** ------>vectorizing statement: # DEBUG sum => sum_20 *** ------>vectorizing statement: # DEBUG i => i_17 *** ------>vectorizing statement: # DEBUG BEGIN_STMT *** ------>vectorizing statement: _1 = (long unsigned int) i_17; *** ------>vectorizing statement: _2 = _1 * 4; *** ------>vectorizing statement: _3 = arr_9(D) + _2; *** ------>vectorizing statement: _4 = *_3; *** transform statement *** create vector_type-pointer variable to type: vector(4) int vectorizing a pointer ref: *arr_9(D) *** created arr_9(D) *** ------>vectorizing statement: # DEBUG x => _4 *** ------>vectorizing statement: # DEBUG a => &sum *** ------>vectorizing statement: # DEBUG BEGIN_STMT *** ------>vectorizing statement: _12 = _4 + sum_20; *** transform statement *** vect_is_simple_use: operand _4 *** def_stmt: _4 = *_3; *** type of def: internal *** vect_is_simple_use: operand sum_20 *** def_stmt: sum_20 = PHI <_12(6), 0(16)> *** type of def: reduction *** reduc op not supported by target *** transform reduction *** vect_get_vec_def_for_operand: _4 *** vect_is_simple_use: operand _4 *** def_stmt: _4 = *_3; *** type of def: internal *** def_stmt = _4 = *_3; *** vect_get_vec_def_for_operand: sum_20 *** vect_is_simple_use: operand sum_20 *** def_stmt: sum_20 = PHI <_12(6), 0(16)> *** type of def: reduction *** def_stmt = sum_20 = PHI <_12(6), 0(16)> *** vect_is_simple_use: operand 0 *** transform reduction: created def-use cycle: vect__12.4_33 = PHI vect__12.8_37 = vect__4.7_36 + vect__12.4_33; *** Reduce using vector shifts *** extract scalar result *** ------>vectorizing statement: # DEBUG sum => _12 *** ------>vectorizing statement: # DEBUG x => NULL *** ------>vectorizing statement: # DEBUG a => NULL *** ------>vectorizing statement: i_10 = i_17 + 1; *** ------>vectorizing statement: # DEBUG i => i_10 *** ------>vectorizing statement: # DEBUG sum => _12 *** ------>vectorizing statement: # DEBUG i => i_10 *** ------>vectorizing statement: vectp_arr.5_35 = vectp_arr.5_34 + 16; *** ------>vectorizing statement: if (n_8(D) > i_10) *** New loop exit condition: if (ivtmp_46 < bnd.1_29) *** LOOP VECTORIZED * presentation-not-inlined.c:9:5: not inlinable: compute_sum_without_inlining/0 -> accumulate/1: function body not available [pass=inline] [count(precise)=76800000] * presentation-not-inlined.c:8:3: === analyzing loop === [pass=vect] [count(precise)=76800000] ** === analyze_loop_nest === *** === vect_analyze_loop_form === **** === get_loop_niters === *** symbolic number of iterations is (unsigned int) n_9(D) *** not vectorized: loop contains function calls or data references that cannot be analyzed * presentation-not-inlined.c:8:3: vectorized 0 loops in function [pass=vect] [count(precise)=76800000] * loop-interchange.c:36:3: === analyzing loop === [pass=vect] [count(precise)=5346680] ** === analyze_loop_nest === *** === vect_analyze_loop_form === **** === get_loop_niters === *** === vect_analyze_data_refs === **** got vectype for stmt: u[i_13] = 2.0e+0;vector(2) double *** === vect_analyze_scalar_cycles === **** Analyze phi: i_13 = PHI <0(2), i_6(7)> **** Access function of PHI: {0, +, 1}_1 **** step: 1, init: 0 **** Detected induction **** Analyze phi: .MEM_14 = PHI <.MEM_4(D)(2), .MEM_5(7)> **** Analyze phi: ivtmp_2 = PHI <1782225(2), ivtmp_11(7)> **** Access function of PHI: {1782225, +, 4294967295}_1 **** step: 4294967295, init: 1782225 **** Detected induction *** === vect_pattern_recog === *** === vect_analyze_data_ref_accesses === *** === vect_mark_stmts_to_be_vectorized === *** === vect_analyze_data_ref_dependences === *** === vect_determine_vectorization_factor === **** ==> examining phi: i_13 = PHI <0(2), i_6(7)> **** ==> examining phi: .MEM_14 = PHI <.MEM_4(D)(2), .MEM_5(7)> **** ==> examining phi: ivtmp_2 = PHI <1782225(2), ivtmp_11(7)> **** ==> examining statement: # DEBUG i => i_13 **** skip **** ==> examining statement: # DEBUG BEGIN_STMT **** skip **** ==> examining statement: u[i_13] = 2.0e+0; **** get vectype for scalar type: double **** vectype: vector(2) double **** nunits = 2 **** ==> examining statement: i_6 = i_13 + 1; **** skip **** ==> examining statement: # DEBUG i => i_6 **** skip **** ==> examining statement: # DEBUG i => i_6 **** skip **** ==> examining statement: ivtmp_11 = ivtmp_2 - 1; **** skip **** ==> examining statement: if (ivtmp_11 != 0) **** skip **** vectorization factor = 2 *** === vect_analyze_slp === *** === vect_make_slp_decision === *** vectorization_factor = 2, niters = 1782225 *** === vect_analyze_data_refs_alignment === **** recording new base alignment for &u alignment: 16 misalignment: 0 based on: u[i_13] = 2.0e+0; **** vect_compute_data_ref_alignment: **** misalign = 0 bytes of ref u[i_13] *** === vect_prune_runtime_alias_test_list === *** === vect_enhance_data_refs_alignment === **** Analyze phi: i_13 = PHI <0(2), i_6(7)> **** Analyze phi: .MEM_14 = PHI <.MEM_4(D)(2), .MEM_5(7)> **** reduc or virtual phi. skip **** Analyze phi: ivtmp_2 = PHI <1782225(2), ivtmp_11(7)> **** vect_get_data_access_cost: inside_cost = 12, outside_cost = 0. *** === vect_analyze_loop_operations === **** examining phi: i_13 = PHI <0(2), i_6(7)> **** examining phi: .MEM_14 = PHI <.MEM_4(D)(2), .MEM_5(7)> **** examining phi: ivtmp_2 = PHI <1782225(2), ivtmp_11(7)> **** vect_is_simple_use: operand 2.0e+0 **** can't use a fully-masked loop because the target doesn't have the appropriate masked load or store. *** not using a fully-masked loop *** Cost model analysis: Vector inside of loop cost: 12 Vector prologue cost: 4 Vector epilogue cost: 12 Scalar iteration cost: 12 Scalar outside cost: 0 Vector outside cost: 16 prologue iterations: 0 epilogue iterations: 1 *** Runtime profitability threshold = 2 *** Static estimate profitability threshold = 2 *** epilog loop required *** Analyze phi: i_13 = PHI <0(2), i_6(7)> *** Analyze phi: .MEM_14 = PHI <.MEM_4(D)(2), .MEM_5(7)> *** reduc or virtual phi. skip *** Analyze phi: ivtmp_2 = PHI <1782225(2), ivtmp_11(7)> ** loop vectorized ** === vec_transform_loop === *** Analyze phi: i_13 = PHI *** Analyze phi: .MEM_14 = PHI <.MEM_5(7), .MEM_4(D)(2)> *** reduc or virtual phi. skip *** Analyze phi: ivtmp_2 = PHI *** vect_update_ivs_after_vectorizer: phi: i_13 = PHI *** vect_update_ivs_after_vectorizer: phi: .MEM_14 = PHI <.MEM_5(7), .MEM_4(D)(2)> *** reduc or virtual phi. skip. *** vect_update_ivs_after_vectorizer: phi: ivtmp_2 = PHI *** ------>vectorizing phi: i_13 = PHI *** ------>vectorizing phi: .MEM_14 = PHI <.MEM_5(7), .MEM_4(D)(12)> *** ------>vectorizing phi: ivtmp_2 = PHI *** ------>vectorizing statement: # DEBUG i => i_13 *** ------>vectorizing statement: # DEBUG BEGIN_STMT *** ------>vectorizing statement: u[i_13] = 2.0e+0; *** transform statement *** vect_is_simple_use: operand 2.0e+0 *** vect_get_vec_def_for_operand: 2.0e+0 *** vect_is_simple_use: operand 2.0e+0 *** create vector_type-pointer variable to type: vector(2) double vectorizing an array ref: u *** created &u *** ------>vectorizing statement: i_6 = i_13 + 1; *** ------>vectorizing statement: # DEBUG i => i_6 *** ------>vectorizing statement: # DEBUG i => i_6 *** ------>vectorizing statement: ivtmp_11 = ivtmp_2 - 1; *** ------>vectorizing statement: vectp_u.3_22 = vectp_u.3_21 + 16; *** ------>vectorizing statement: if (ivtmp_11 != 0) *** New loop exit condition: if (ivtmp_25 < 891112) *** LOOP VECTORIZED * loop-interchange.c:20:5: === considering loop for interchange === [pass=linterchange] [count(precise)=5346680] ** === prepare_perfect_loop_nest === *** interchange gives better data locality behavior: iloop_strides: 10680 > (oloop_strides: 8 * ratio: 3) *** consider loop interchange for loop_nest<2 - 3> ** === tree_loop_interchange::interchange === *** interchange gives better data locality behavior: iloop_strides: 10680 > (oloop_strides: 8 * ratio: 3) *** Loop_pair is interchanged *** removing dead stmt: j_8 = j_17 + 1; *** removing dead stmt: i_9 = i_26 + 1; *** removing dead stmt: ivtmp_30 = ivtmp_24 - 1; *** removing dead stmt: ivtmp_32 = ivtmp_6 - 1; *** loops interchanged in loop nest * loop-interchange.c:20:5: === analyzing loop === [pass=vect] [count(precise)=5346680] ** === analyze_loop_nest === *** === vect_analyze_loop_form === **** === get_loop_niters === *** === vect_analyze_data_refs === **** got vectype for stmt: _5 = u[_4];vector(2) double *** === vect_analyze_scalar_cycles === **** Analyze phi: sum_40 = PHI **** Access function of PHI: {sum_42, +, _5}_3 **** step: _5, init: sum_42 **** step unknown **** Analyze phi: i_26 = PHI <0(5), i_25(11)> **** Access function of PHI: {0, +, 1}_3 **** step: 1, init: 0 **** Detected induction **** Analyze phi: ivtmp_24 = PHI <1335(5), ivtmp_19(11)> **** Access function of PHI: {1335, +, 4294967295}_3 **** step: 4294967295, init: 1335 **** Detected induction **** Analyze phi: ivtmp_45 = PHI <1335(5), ivtmp_46(11)> **** Access function of PHI: {1335, +, 4294967295}_3 **** step: 4294967295, init: 1335 **** Detected induction **** Analyze phi: sum_40 = PHI **** detected reduction: sum_7 = _5 + sum_40; **** Detected reduction *** === vect_pattern_recog === **** vect_is_simple_use: operand j_17 **** def_stmt: j_17 = PHI <0(2), j_10(10)> **** type of def: external **** vect_is_simple_use: operand _5 **** def_stmt: _5 = u[_4]; **** type of def: internal **** vect_is_simple_use: operand _5 **** def_stmt: _5 = u[_4]; **** type of def: internal **** vect_is_simple_use: operand _5 **** def_stmt: _5 = u[_4]; **** type of def: internal *** === vect_analyze_data_ref_accesses === *** === vect_mark_stmts_to_be_vectorized === **** vect_is_simple_use: operand _5 **** def_stmt: _5 = u[_4]; **** type of def: internal **** vect_is_simple_use: operand _5 **** def_stmt: _5 = u[_4]; **** type of def: internal **** vect_is_simple_use: operand sum_40 **** def_stmt: sum_40 = PHI **** type of def: reduction **** vect_is_simple_use: operand sum_42 **** def_stmt: sum_42 = PHI <0.0(2), sum_37(10)> **** type of def: external **** vect_is_simple_use: operand sum_7 **** def_stmt: sum_7 = _5 + sum_40; **** type of def: reduction *** === vect_analyze_data_ref_dependences === *** === vect_determine_vectorization_factor === **** ==> examining phi: sum_40 = PHI **** get vectype for scalar type: double **** vectype: vector(2) double **** nunits = 2 **** ==> examining phi: i_26 = PHI <0(5), i_25(11)> **** ==> examining phi: ivtmp_24 = PHI <1335(5), ivtmp_19(11)> **** ==> examining phi: ivtmp_45 = PHI <1335(5), ivtmp_46(11)> **** ==> examining statement: # DEBUG sum => NULL **** skip **** ==> examining statement: # DEBUG i => i_26 **** skip **** ==> examining statement: # DEBUG sum => NULL **** skip **** ==> examining statement: # DEBUG j => 0 **** skip **** ==> examining statement: # DEBUG sum => sum_40 **** skip **** ==> examining statement: # DEBUG j => j_17 **** skip **** ==> examining statement: # DEBUG BEGIN_STMT **** skip **** ==> examining statement: _2 = j_17 * 1335; **** skip **** ==> examining statement: _4 = _2 + i_26; **** skip **** ==> examining statement: _5 = u[_4]; **** get vectype for scalar type: double **** vectype: vector(2) double **** nunits = 2 **** ==> examining statement: sum_7 = _5 + sum_40; **** get vectype for scalar type: double **** vectype: vector(2) double **** get vectype for scalar type: double **** vectype: vector(2) double **** nunits = 2 **** ==> examining statement: # DEBUG sum => sum_7 **** skip **** ==> examining statement: # DEBUG D#2 => j_17 + 1 **** skip **** ==> examining statement: # DEBUG j => D#2 **** skip **** ==> examining statement: # DEBUG sum => sum_7 **** skip **** ==> examining statement: # DEBUG j => D#2 **** skip **** ==> examining statement: # DEBUG i => NULL **** skip **** ==> examining statement: # DEBUG sum => NULL **** skip **** ==> examining statement: # DEBUG i => NULL **** skip **** ==> examining statement: ivtmp_19 = ivtmp_24 - 1; **** skip **** ==> examining statement: i_25 = i_26 + 1; **** skip **** ==> examining statement: ivtmp_46 = ivtmp_45 - 1; **** skip **** ==> examining statement: if (ivtmp_46 != 0) **** skip **** vectorization factor = 2 *** === vect_analyze_slp === *** === vect_make_slp_decision === *** vectorization_factor = 2, niters = 1335 *** === vect_analyze_data_refs_alignment === **** recording new base alignment for &u alignment: 16 misalignment: 0 based on: _5 = u[_4]; **** vect_compute_data_ref_alignment: **** Unknown alignment for access: u[_4] *** === vect_prune_runtime_alias_test_list === *** === vect_enhance_data_refs_alignment === **** Unknown misalignment, naturally aligned **** Analyze phi: sum_40 = PHI **** reduc or virtual phi. skip **** Analyze phi: i_26 = PHI <0(5), i_25(11)> **** Analyze phi: ivtmp_24 = PHI <1335(5), ivtmp_19(11)> **** Analyze phi: ivtmp_45 = PHI <1335(5), ivtmp_46(11)> **** vect_get_data_access_cost: inside_cost = 12, outside_cost = 0. **** vect_get_data_access_cost: inside_cost = 12, outside_cost = 0. **** Vectorizing an unaligned access *** === vect_analyze_loop_operations === **** examining phi: sum_40 = PHI **** examining phi: i_26 = PHI <0(5), i_25(11)> **** examining phi: ivtmp_24 = PHI <1335(5), ivtmp_19(11)> **** examining phi: ivtmp_45 = PHI <1335(5), ivtmp_46(11)> **** num. args = 4 (not unary/binary/ternary op). **** vect_is_simple_use: operand u[_4] **** not ssa-name **** use not simple **** can't use a fully-masked loop because the target doesn't have the appropriate masked load or store. **** vect_is_simple_use: operand _5 **** def_stmt: _5 = u[_4]; **** type of def: internal **** vect_is_simple_use: operand sum_40 **** def_stmt: sum_40 = PHI **** type of def: reduction **** reduc op not supported by target *** not using a fully-masked loop *** Cost model analysis: Vector inside of loop cost: 24 Vector prologue cost: 4 Vector epilogue cost: 44 Scalar iteration cost: 16 Scalar outside cost: 0 Vector outside cost: 48 prologue iterations: 0 epilogue iterations: 1 *** Runtime profitability threshold = 10 *** Static estimate profitability threshold = 10 *** epilog loop required *** Analyze phi: sum_40 = PHI *** reduc or virtual phi. skip *** Analyze phi: i_26 = PHI <0(5), i_25(11)> *** Analyze phi: ivtmp_24 = PHI <1335(5), ivtmp_19(11)> *** Analyze phi: ivtmp_45 = PHI <1335(5), ivtmp_46(11)> ** loop vectorized ** === vec_transform_loop === *** Analyze phi: sum_40 = PHI *** reduc or virtual phi. skip *** Analyze phi: i_26 = PHI *** Analyze phi: ivtmp_24 = PHI *** Analyze phi: ivtmp_45 = PHI *** vect_update_ivs_after_vectorizer: phi: sum_40 = PHI *** reduc or virtual phi. skip. *** vect_update_ivs_after_vectorizer: phi: i_26 = PHI *** vect_update_ivs_after_vectorizer: phi: ivtmp_24 = PHI *** vect_update_ivs_after_vectorizer: phi: ivtmp_45 = PHI *** ------>vectorizing phi: sum_40 = PHI *** transform phi *** ------>vectorizing phi: i_26 = PHI *** ------>vectorizing phi: ivtmp_24 = PHI *** ------>vectorizing phi: ivtmp_45 = PHI *** ------>vectorizing phi: vect_sum_7.15_51 = PHI <(11), (16)> *** ------>vectorizing statement: # DEBUG sum => NULL *** ------>vectorizing statement: # DEBUG i => i_26 *** ------>vectorizing statement: # DEBUG sum => NULL *** ------>vectorizing statement: # DEBUG j => 0 *** ------>vectorizing statement: # DEBUG sum => sum_40 *** ------>vectorizing statement: # DEBUG j => j_17 *** ------>vectorizing statement: # DEBUG BEGIN_STMT *** ------>vectorizing statement: _2 = j_17 * 1335; *** ------>vectorizing statement: _4 = _2 + i_26; *** ------>vectorizing statement: _5 = u[_4]; *** transform statement *** create vector_type-pointer variable to type: vector(2) double vectorizing an array ref: u *** created vectp_u.17_52 *** ------>vectorizing statement: sum_7 = _5 + sum_40; *** transform statement *** vect_is_simple_use: operand _5 *** def_stmt: _5 = u[_4]; *** type of def: internal *** vect_is_simple_use: operand sum_40 *** def_stmt: sum_40 = PHI *** type of def: reduction *** reduc op not supported by target *** transform reduction *** vect_get_vec_def_for_operand: _5 *** vect_is_simple_use: operand _5 *** def_stmt: _5 = u[_4]; *** type of def: internal *** def_stmt = _5 = u[_4]; *** vect_get_vec_def_for_operand: sum_40 *** vect_is_simple_use: operand sum_40 *** def_stmt: sum_40 = PHI *** type of def: reduction *** def_stmt = sum_40 = PHI *** vect_is_simple_use: operand sum_42 *** def_stmt: sum_42 = PHI <0.0(2), sum_37(10)> *** type of def: external *** transform reduction: created def-use cycle: vect_sum_7.15_51 = PHI vect_sum_7.19_59 = vect__5.18_58 + vect_sum_7.15_51; *** Reduce using vector shifts *** extract scalar result *** ------>vectorizing statement: # DEBUG sum => sum_7 *** ------>vectorizing statement: # DEBUG D#2 => j_17 + 1 *** ------>vectorizing statement: # DEBUG j => D#2 *** ------>vectorizing statement: # DEBUG sum => sum_7 *** ------>vectorizing statement: # DEBUG j => D#2 *** ------>vectorizing statement: # DEBUG i => NULL *** ------>vectorizing statement: # DEBUG sum => NULL *** ------>vectorizing statement: # DEBUG i => NULL *** ------>vectorizing statement: ivtmp_19 = ivtmp_24 - 1; *** ------>vectorizing statement: i_25 = i_26 + 1; *** ------>vectorizing statement: ivtmp_46 = ivtmp_45 - 1; *** ------>vectorizing statement: vectp_u.16_57 = vectp_u.16_56 + 16; *** ------>vectorizing statement: if (ivtmp_46 != 0) *** New loop exit condition: if (ivtmp_66 < 667) *** LOOP VECTORIZED * replaced redundant expr _50 = (void *) ivtmp.43_26; with vectp_u.17_52 [pass=dom] [count(precise)=5346680] * loop-opts.c:7:7: not inlinable: loop_opts_c_body/0 -> not_inlinable/1: function body not available [pass=inline] [count(precise)=300000] * main.c:19:7: not inlinable: main/12 -> compute_sum_without_inlining/18: function body not available [pass=inline] [count(precise)=300000] * main.c:18:7: not inlinable: main/12 -> compute_sum_with_inlining/17: function body not available [pass=inline] [count(precise)=300000] * main.c:17:7: not inlinable: main/12 -> workload_c_body/16: function body not available [pass=inline] [count(precise)=300000] * main.c:16:7: not inlinable: main/12 -> loop_opts_c_body/15: function body not available [pass=inline] [count(precise)=300000] * main.c:15:7: not inlinable: main/12 -> devirt_cc_body/14: function body not available [pass=inline] [count(precise)=300000] * main.c:13:3: === analyzing loop === [pass=vect] [count(precise)=300000] ** === analyze_loop_nest === *** === vect_analyze_loop_form === **** === get_loop_niters === *** not vectorized: loop contains function calls or data references that cannot be analyzed * main.c:13:3: vectorized 0 loops in function [pass=vect] [count(precise)=300000] * replaced redundant expr _25 = (unsigned int) n_8(D); with niters.0_19 [pass=dom] [count(precise)=298833] * replaced redundant expr _24 = (unsigned long) arr_10(D); with ivtmp.3_16 [pass=dom] [count(precise)=298833] * loop-interchange.c:23:3: === considering loop for interchange === [pass=linterchange] [count(precise)=4005] ** === prepare_perfect_loop_nest === * loop-interchange.c:19:3: === analyzing loop === [pass=vect] [count(precise)=4005] ** === analyze_loop_nest === *** === vect_analyze_loop_form === **** === vect_analyze_loop_form === ***** === get_loop_niters === **** Considering outer-loop vectorization **** === get_loop_niters === *** === vect_analyze_data_refs === **** analyze in outer loop: *(&u + (sizetype) (j_17 * 1335) * 8) **** outer base_address: &u outer offset from base address: 0 outer constant offset from base address: 0 outer step: 10680 outer base alignment: 16 outer base misalignment: 0 outer offset alignment: 128 outer step alignment: 8 **** got vectype for stmt: _5 = u[_4];vector(2) double *** === vect_analyze_scalar_cycles === **** Analyze phi: sum_42 = PHI <0.0(2), sum_37(10)> **** Access function of PHI: sum_42 **** Analyze phi: j_17 = PHI <0(2), j_10(10)> **** Access function of PHI: {0, +, 1}_2 **** step: 1, init: 0 **** Detected induction **** Analyze phi: ivtmp_6 = PHI <1335(2), ivtmp_3(10)> **** Access function of PHI: {1335, +, 4294967295}_2 **** step: 4294967295, init: 1335 **** Detected induction **** Analyze phi: ivtmp_1 = PHI <1335(2), ivtmp_44(10)> **** Access function of PHI: {1335, +, 4294967295}_2 **** step: 4294967295, init: 1335 **** Detected induction **** Analyze phi: sum_42 = PHI <0.0(2), sum_37(10)> **** detected double reduction: sum_37 = PHI **** Detected double reduction *** === vect_analyze_scalar_cycles === **** Analyze phi: sum_40 = PHI **** Access function of PHI: {sum_42, +, _5}_3 **** step: _5, init: sum_42 **** step unknown **** Analyze phi: i_26 = PHI <0(5), i_25(11)> **** Access function of PHI: {0, +, 1}_3 **** step: 1, init: 0 **** Detected induction **** Analyze phi: ivtmp_24 = PHI <1335(5), ivtmp_19(11)> **** Access function of PHI: {1335, +, 4294967295}_3 **** step: 4294967295, init: 1335 **** Detected induction **** Analyze phi: ivtmp_45 = PHI <1335(5), ivtmp_46(11)> **** Access function of PHI: {1335, +, 4294967295}_3 **** step: 4294967295, init: 1335 **** Detected induction **** Analyze phi: sum_40 = PHI **** detected reduction: sum_7 = _5 + sum_40; **** Detected vectorizable nested cycle *** === vect_pattern_recog === **** vect_is_simple_use: operand j_17 **** def_stmt: j_17 = PHI <0(2), j_10(10)> **** type of def: induction *** === vect_analyze_data_ref_accesses === **** grouped access in outer loop. **** not vectorized: complicated access pattern. *** bad data access * replaced redundant expr _8 = (void *) ivtmp.29_37; with _48 [pass=dom] [count(precise)=4005] * loop-interchange.c:39:3: not inlinable: loop_interchange_c_main/2 -> foo.constprop/4: function not inlinable [pass=inline] [count(precise)=3] * loop-interchange.c:39:3: not inlinable: loop_interchange_c_main/2 -> foo.constprop/4: function not inlinable [pass=inline] [count(precise)=3] * loop-interchange.c:39:3: not inlinable: loop_interchange_c_main/2 -> foo.constprop/4: function not inlinable [pass=inline] [count(precise)=3] * loop-interchange.c:48:10: not attempting to optimize loop nest [pass=vect] [count(precise)=3] * replaced redundant expr _2 = (unsigned long) &u; with ivtmp.43_9 [pass=dom] [count(precise)=3] * replaced redundant expr ivtmp.29_49 = (unsigned long) &u; with ivtmp.43_9 [pass=dom] [count(adjusted)=3] * replaced redundant expr _30 = (unsigned long) &u; with ivtmp.43_9 [pass=dom] [count(adjusted)=3] * main.c:24:3: not inlinable: main/12 -> loop_interchange_c_main/21: function body not available [pass=inline] [count(precise)=3] * main.c:22:3: not inlinable: main/12 -> printf/20: function body not available [pass=inline] [count(precise)=3] * main.c:11:3: not inlinable: main/12 -> __builtin_puts/13: function body not available [pass=inline] [count(precise)=3] * presentation-inlined.c:14:5: inlining accumulate/0 into compute_sum_with_inlining/1 [pass=einline] * presentation-inlined.c:14:5: Inlining accumulate/2 to compute_sum_with_inlining/1 with frequency 1.00 [pass=einline] * presentation-inlined.c:13:3: vectorized 1 loops in function [pass=vect] * vectorized 0 loops in function [pass=vect] * loop-interchange.c:46:5: not inlinable: loop_interchange_c_main/2 -> abort/3: function body not available [pass=inline] [count(precise)=0] * loop-interchange.c:36:3: vectorized 1 loops in function [pass=vect] * loop-interchange.c:20:5: vectorized 1 loops in function [pass=vect] * devirt.cc:26:8: inlining void test(base*)/1 into void devirt_cc_body()/8 [pass=einline] * devirt.cc:26:8: Inlining void test(base*)/1 to void devirt_cc_body()/8 with frequency 1.00 [pass=einline] * devirt.cc:19:15: folding virtual function call to virtual void subclass::meth() [pass=einline] * vectorized 0 loops in function [pass=vect]