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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
           Keywords|                            |wrong-code
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2024-05-02
             Status|UNCONFIRMED                 |ASSIGNED

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.  We vectorize the loop to

  <bb 2> [local count: 119292720]:
  vect_temp_9.6_3 = MEM <vector(4) _Float16> [(_Float16 *)f_7(D)];
  vect__4.7_9 = VIEW_CONVERT_EXPR<vector(4) __bf16>(vect_temp_9.6_3);
  MEM <vector(4) __bf16> [(__bf16 *)f_7(D)] = vect__4.7_9;
  vect_temp_9.6_17 = MEM <vector(4) _Float16> [(_Float16 *)f_7(D) + 8B];
  vect__4.7_18 = VIEW_CONVERT_EXPR<vector(4) __bf16>(vect_temp_9.6_17);
  MEM <vector(4) __bf16> [(__bf16 *)f_7(D) + 8B] = vect__4.7_18;

likely because the vectorizer thinks this is a noop conversion, it handles
it via vectorizable_assignment.

Reply via email to