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

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Oh and:
  vect_patt_10.16_58 = .VCOND (vect__4.10_47, { 0, 0, 0, 0, 0, 0, 0, 0 }, { 1,
1, 1, 1, 1, 1, 1, 1 }, { 0, 0, 0, 0, 0, 0, 0, 0 }, 114);
  vect_patt_10.16_59 = .VCOND (vect__4.11_49, { 0, 0, 0, 0, 0, 0, 0, 0 }, { 1,
1, 1, 1, 1, 1, 1, 1 }, { 0, 0, 0, 0, 0, 0, 0, 0 }, 114);
  vect_patt_42.17_60 = VEC_PACK_TRUNC_EXPR <vect_patt_10.16_58,
vect_patt_10.16_59>;
  vect__40.18_61 = -vect_patt_42.17_60;

needs to change just into:
  mask__9.16_54 = vect__4.10_46 != { 0, 0, 0, 0, 0, 0, 0, 0 };
  mask__9.16_55 = vect__4.11_48 != { 0, 0, 0, 0, 0, 0, 0, 0 };
  mask_patt_40.17_56 = VEC_PACK_TRUNC_EXPR <mask__9.16_54, mask__9.16_55>;

That is push the negative back if it is a VCOND I think ...

--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Oh and:
  vect_patt_12.16_57 = .VCOND (vect__3.10_47, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 114);
  vect_patt_42.17_58 = [vec_unpack_lo_expr] vect_patt_12.16_57;
  vect_patt_42.17_59 = [vec_unpack_hi_expr] vect_patt_12.16_57;
  vect__40.18_60 = -vect_patt_42.17_58;
  vect__40.18_61 = -vect_patt_42.17_59;

Reply via email to