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.