https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122844

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
Differences no ranger vs. ranger during vectorization are for the 2nd loop we
do

+t.c:12:24: note:   can narrow to unsigned:8 without loss of precision: _44 =
MIN_EXPR <ad_31, _45>;
+t.c:12:24: note:   only the low 32 bits of _45 are significant
...
+t.c:12:24: note:   vect_recog_over_widening_pattern: detected: _44 = MIN_EXPR
<ad_31, _45>;
+t.c:12:24: note:   demoting long long unsigned int to unsigned int
+t.c:12:24: note:   Splitting statement: ad_31 = (long long unsigned int)
m.3_4;
+t.c:12:24: note:   into pattern statements: patt_179 = (unsigned int) m.3_4;
+t.c:12:24: note:   and: patt_180 = (long long unsigned int) patt_179;
+t.c:12:24: note:   created pattern stmt: patt_181 = MIN_EXPR <patt_179,
patt_179>;
+t.c:12:24: note:   over_widening pattern recognized: patt_182 = (long long
unsigned int) patt_181;
+t.c:12:24: note:   extra pattern stmt: patt_181 = MIN_EXPR <patt_179,
patt_179>;
 t.c:12:24: note:   vect_is_simple_use: operand MIN_EXPR <ad_31, _45>, type of
def: internal
+t.c:12:24: note:   vect_is_simple_use: operand MIN_EXPR <patt_179, patt_179>,
type of def: internal
+t.c:12:24: note:   vect_recog_cast_forwprop_pattern: detected: ad_43 = (int)
_44;
+t.c:12:24: note:   cast_forwprop pattern recognized: patt_183 = (int)
patt_181;

with the consequence

-t.c:12:24: note:  vectorization factor = [16,16]
+t.c:12:24: note:  vectorization factor = [8,8]

and the vector loop somehow ends up with only a single MIN:

  <bb 20> [local count: 4344425328]:
  # RANGE [irange] int [0, +INF] MASK 0x7fffffff VALUE 0x0
  # ab_50 = PHI <0(19), ab_24(23)>
  # a_lsm.10_48 = PHI <a_lsm.10_52(19), _30(23)>
  # vect_a_lsm.27_202 = PHI <_198(19), vect__30.28_210(23)>
  # vect_a_lsm.27_203 = PHI <_197(19), vect__30.28_211(23)>
  # vect_a_lsm.27_204 = PHI <_197(19), vect__30.28_212(23)>
  # vect_a_lsm.27_205 = PHI <_197(19), vect__30.28_213(23)>
  # ivtmp_225 = PHI <0(19), ivtmp_226(23)>
  # loop_mask_209 = PHI <max_mask_229(19), next_mask_230(23)>
  # loop_mask_208 = PHI <max_mask_233(19), next_mask_234(23)>
  # loop_mask_207 = PHI <max_mask_237(19), next_mask_238(23)>
  # loop_mask_206 = PHI <max_mask_239(19), next_mask_240(23)>
  vect_patt_179.26_189 = [vec_unpack_lo_expr] _188;
  vect_patt_179.26_190 = [vec_unpack_hi_expr] _188;
  vect_patt_179.25_191 = [vec_unpack_lo_expr] vect_patt_179.26_189;
  vect_patt_179.25_192 = [vec_unpack_hi_expr] vect_patt_179.26_189;
  vect_patt_179.25_193 = [vec_unpack_lo_expr] vect_patt_179.26_190;
  vect_patt_179.25_194 = [vec_unpack_hi_expr] vect_patt_179.26_190;
  vect__30.28_210 = .COND_MIN (loop_mask_206, vect_a_lsm.27_202,
vect_patt_179.25_191, vect_a_lsm.27_202);
  vect__30.28_211 = .COND_MIN (loop_mask_207, vect_a_lsm.27_203,
vect_patt_179.25_192, vect_a_lsm.27_203);
  vect__30.28_212 = .COND_MIN (loop_mask_208, vect_a_lsm.27_204,
vect_patt_179.25_193, vect_a_lsm.27_204);
  vect__30.28_213 = .COND_MIN (loop_mask_209, vect_a_lsm.27_205,
vect_patt_179.25_194, vect_a_lsm.27_205);
  # RANGE [irange] int [0, 255] MASK 0xff VALUE 0x0
  ac_5 = (int) m.3_4;
  # RANGE [irange] long long unsigned int [0, 255] MASK 0xff VALUE 0x0
  ad_31 = (long long unsigned int) m.3_4;
  _30 = MIN_EXPR <ac_5, a_lsm.10_48>;
  # RANGE [irange] int [1, +INF] MASK 0x7fffffff VALUE 0x0
  ab_24 = ab_50 + 1;
  ivtmp_226 = ivtmp_225 + POLY_INT_CST [16, 16];
  next_mask_230 = .WHILE_ULT (ivtmp_226, _228, { 0, ... });
  next_mask_234 = .WHILE_ULT (ivtmp_226, _232, { 0, ... });
  next_mask_238 = .WHILE_ULT (ivtmp_226, _236, { 0, ... });
  next_mask_240 = .WHILE_ULT (ivtmp_226, _224, { 0, ... });
  if (next_mask_240 != { 0, ... })

Reply via email to