^=== analyzing loop ===
Analyzing loop at ../../src/test.cc:4
=== analyze_loop_nest ===
=== vect_analyze_loop_form ===
=== get_loop_niters ===
Symbolic number of iterations is
(((((unsigned long) _10 - (unsigned long) _9) - 24) /[ex] 8) * 768614336404564651 & 2305843009213693951) + 1
=== vect_analyze_data_refs ===
got vectype for stmt:
_7 = MEM[(float * *)SR.8_23];
vector(2) long unsigned int
got vectype for stmt:
_8 = MEM[(float * *)SR.8_23 + 8B];
vector(2) long unsigned int
=== vect_analyze_scalar_cycles ===
Analyze phi:
ret_17 = PHI <0(5), ret_6(6)>
Access function of PHI:
{0, +, _16}_1
step:
_16
, init:
0
step unknown.
Analyze phi:
SR.8_23 = PHI <_9(5), _12(6)>
Access function of PHI:
{_9, +, 24}_1
step:
24
, init:
_9
Detected induction.
Analyze phi:
ret_17 = PHI <0(5), ret_6(6)>
detected reduction:
ret_6 = _16 + ret_17;
Detected reduction.
=== vect_pattern_recog ===
vect_is_simple_use: operand
_16
def_stmt:
_16 = (long unsigned int) _15;
type of def: internal
vect_is_simple_use: operand
_16
def_stmt:
_16 = (long unsigned int) _15;
type of def: internal
vect_is_simple_use: operand
_15
def_stmt:
_15 = _14 /[ex] 4;
type of def: internal
vect_is_simple_use: operand
_16
def_stmt:
_16 = (long unsigned int) _15;
type of def: internal
=== vect_analyze_data_ref_accesses ===
Detected interleaving load
MEM[(float * *)SR.8_23]
and
MEM[(float * *)SR.8_23 + 8B]
Detected interleaving load of size 3 starting with
_7 = MEM[(float * *)SR.8_23];
There is a gap of 1 elements after the group
=== vect_mark_stmts_to_be_vectorized ===
init: phi relevant?
ret_17 = PHI <0(5), ret_6(6)>
init: phi relevant?
SR.8_23 = PHI <_9(5), _12(6)>
init: stmt relevant?
_7 = MEM[(float * *)SR.8_23];
init: stmt relevant?
_8 = MEM[(float * *)SR.8_23 + 8B];
init: stmt relevant?
_14 = _8 - _7;
init: stmt relevant?
_15 = _14 /[ex] 4;
init: stmt relevant?
_16 = (long unsigned int) _15;
init: stmt relevant?
ret_6 = _16 + ret_17;
vec_stmt_relevant_p: used out of loop.
vect_is_simple_use: operand
_16
def_stmt:
_16 = (long unsigned int) _15;
type of def: internal
vec_stmt_relevant_p: stmt live but not relevant.
mark relevant 1, live 1:
ret_6 = _16 + ret_17;
init: stmt relevant?
_12 = SR.8_23 + 24;
init: stmt relevant?
if (_10 != _12)
worklist: examine stmt:
ret_6 = _16 + ret_17;
vect_is_simple_use: operand
_16
def_stmt:
_16 = (long unsigned int) _15;
type of def: internal
mark relevant 1, live 0:
_16 = (long unsigned int) _15;
vect_is_simple_use: operand
ret_17
def_stmt:
ret_17 = PHI <0(5), ret_6(6)>
type of def: reduction
mark relevant 1, live 0:
ret_17 = PHI <0(5), ret_6(6)>
worklist: examine stmt:
ret_17 = PHI <0(5), ret_6(6)>
vect_is_simple_use: operand
0
vect_is_simple_use: operand
ret_6
def_stmt:
ret_6 = _16 + ret_17;
type of def: reduction
reduc-stmt defining reduc-phi in the same nest.
worklist: examine stmt:
_16 = (long unsigned int) _15;
vect_is_simple_use: operand
_15
def_stmt:
_15 = _14 /[ex] 4;
type of def: internal
mark relevant 1, live 0:
_15 = _14 /[ex] 4;
worklist: examine stmt:
_15 = _14 /[ex] 4;
vect_is_simple_use: operand
_14
def_stmt:
_14 = _8 - _7;
type of def: internal
mark relevant 1, live 0:
_14 = _8 - _7;
worklist: examine stmt:
_14 = _8 - _7;
vect_is_simple_use: operand
_8
def_stmt:
_8 = MEM[(float * *)SR.8_23 + 8B];
type of def: internal
mark relevant 1, live 0:
_8 = MEM[(float * *)SR.8_23 + 8B];
vect_is_simple_use: operand
_7
def_stmt:
_7 = MEM[(float * *)SR.8_23];
type of def: internal
mark relevant 1, live 0:
_7 = MEM[(float * *)SR.8_23];
worklist: examine stmt:
_7 = MEM[(float * *)SR.8_23];
worklist: examine stmt:
_8 = MEM[(float * *)SR.8_23 + 8B];
=== vect_analyze_data_ref_dependences ===
=== vect_determine_vectorization_factor ===
==> examining phi:
ret_17 = PHI <0(5), ret_6(6)>
get vectype for scalar type:
size_t
vectype:
vector(2) long unsigned int
nunits = 2
==> examining phi:
SR.8_23 = PHI <_9(5), _12(6)>
==> examining statement:
_7 = MEM[(float * *)SR.8_23];
get vectype for scalar type:
float *
vectype:
vector(2) long unsigned int
nunits = 2
==> examining statement:
_8 = MEM[(float * *)SR.8_23 + 8B];
get vectype for scalar type:
float *
vectype:
vector(2) long unsigned int
nunits = 2
==> examining statement:
_14 = _8 - _7;
get vectype for scalar type:
long int
vectype:
vector(2) long int
get vectype for scalar type:
long int
vectype:
vector(2) long int
nunits = 2
==> examining statement:
_15 = _14 /[ex] 4;
get vectype for scalar type:
long int
vectype:
vector(2) long int
get vectype for scalar type:
long int
vectype:
vector(2) long int
nunits = 2
==> examining statement:
_16 = (long unsigned int) _15;
get vectype for scalar type:
long unsigned int
vectype:
vector(2) long unsigned int
get vectype for scalar type:
long unsigned int
vectype:
vector(2) long unsigned int
nunits = 2
==> examining statement:
ret_6 = _16 + ret_17;
get vectype for scalar type:
size_t
vectype:
vector(2) long unsigned int
get vectype for scalar type:
size_t
vectype:
vector(2) long unsigned int
nunits = 2
==> examining statement:
_12 = SR.8_23 + 24;
skip.
==> examining statement:
if (_10 != _12)
skip.
vectorization factor = 2
=== vect_analyze_slp ===
=== vect_make_slp_decision ===
=== vect_analyze_data_refs_alignment ===
recording new base alignment for
_9
alignment: 8
misalignment: 0
based on:
_7 = MEM[(float * *)SR.8_23];
vect_compute_data_ref_alignment:
can't force alignment of ref:
MEM[(float * *)SR.8_23]
vect_compute_data_ref_alignment:
can't force alignment of ref:
MEM[(float * *)SR.8_23 + 8B]
=== vect_prune_runtime_alias_test_list ===
=== vect_enhance_data_refs_alignment ===
vector alignment may not be reachable
vect_can_advance_ivs_p:
Analyze phi:
ret_17 = PHI <0(5), ret_6(6)>
reduc or virtual phi. skip.
Analyze phi:
SR.8_23 = PHI <_9(5), _12(6)>
Vectorizing an unaligned access.
=== vect_analyze_loop_operations ===
examining phi:
ret_17 = PHI <0(5), ret_6(6)>
examining phi:
SR.8_23 = PHI <_9(5), _12(6)>
==> examining statement:
_7 = MEM[(float * *)SR.8_23];
vect_is_simple_use: operand
MEM[(float * *)SR.8_23]
not ssa-name.
use not simple.
vect_is_simple_use: operand
MEM[(float * *)SR.8_23]
not ssa-name.
use not simple.
no array mode for V2DI[3]
Data access with gaps requires scalar epilogue loop
can't use a fully-masked loop because the target doesn't have the appropriate masked load or store.
vect_model_load_cost: strided group_size = 3 .
vect_model_load_cost: unaligned supported by hardware.
vect_model_load_cost: inside_cost = 36, prologue_cost = 0 .
==> examining statement:
_8 = MEM[(float * *)SR.8_23 + 8B];
vect_is_simple_use: operand
MEM[(float * *)SR.8_23 + 8B]
not ssa-name.
use not simple.
vect_is_simple_use: operand
MEM[(float * *)SR.8_23 + 8B]
not ssa-name.
use not simple.
no array mode for V2DI[3]
Data access with gaps requires scalar epilogue loop
vect_model_load_cost: unaligned supported by hardware.
vect_model_load_cost: inside_cost = 12, prologue_cost = 0 .
==> examining statement:
_14 = _8 - _7;
vect_is_simple_use: operand
_8
def_stmt:
_8 = MEM[(float * *)SR.8_23 + 8B];
type of def: internal
vect_is_simple_use: operand
_7
def_stmt:
_7 = MEM[(float * *)SR.8_23];
type of def: internal
=== vectorizable_operation ===
vect_model_simple_cost: inside_cost = 4, prologue_cost = 0 .
==> examining statement:
_15 = _14 /[ex] 4;
vect_is_simple_use: operand
_14
def_stmt:
_14 = _8 - _7;
type of def: internal
vect_is_simple_use: operand
4
op not supported by target.
not vectorized: relevant stmt not supported:
_15 = _14 /[ex] 4;
bad operation or unsupported loop bound.