https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119534
--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Though wonder if for the boolean vectors one couldn't actually emit different code altogether. If the whole vec_offset is all falses or all trues, we could just broadcast the same memory, otherwise load both memories, broadcast and select between them based on the boolean vector. Perhaps it can be done without multiple bbs by loading the memory twice, but using COND_EXPRs in there, m0 = x[all_true ? 1 : 0]; m1 = x[all_false ? 0 : 1];