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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2025-07-29

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
The reason is that vector lowering of .VEC_CONVERT does not yet support
multi-step conversion for all cases properly.  There has been some
progress there for GCC 15 I think but it's not fully done.

Doing lowering before vectorization does at least allow us to re-vectorize
things, like cvt2 to

  _73 = BIT_FIELD_REF <x_5(D), 256, 0>;
  _74 = BIT_FIELD_REF <x_5(D), 256, 256>;
  vect__10.24_75 = (vector(8) signed int) _73;
  vect__10.24_76 = (vector(8) signed int) _74;
  vect__10.23_77 = VEC_PACK_TRUNC_EXPR <vect__10.24_75, vect__10.24_76>;
  _1 = {vect__10.23_77, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }};
  _78 = BIT_FIELD_REF <y_6(D), 256, 0>;
  _79 = BIT_FIELD_REF <y_6(D), 256, 256>;
  vect__42.26_80 = (vector(8) signed int) _78;
  vect__42.26_81 = (vector(8) signed int) _79;
  vect__42.25_82 = VEC_PACK_TRUNC_EXPR <vect__42.26_80, vect__42.26_81>;
  _3 = {vect__42.25_82, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }};
  _7 = VEC_PERM_EXPR <_1, _3, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47 }>;

which shows some previously observed issues.

Reply via email to