https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100582
Bug ID: 100582 Summary: vectorize failed to generate VEC_COND_EXPR for v32qi Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: crazylht at gmail dot com CC: hjl.tools at gmail dot com Target Milestone: --- Host: x86_64-pc-linux-gnu https://godbolt.org/z/nfdsGPTxj cat test.c v32qi f2 (v32qi x, v32qi a, v32qi b) { v32qi e; for (int i = 0; i != 32; i++) e[i] = x[i] ? a[i] : b[i]; return e; } clang can generate vplendvb, gcc doesn't vectorize it. also clang can generate clean vplendvb for f1. v32qi f1 (v32qi x, v32qi a, v32qi b) { v32qi e; for (int i = 0; i != 32; i++) e[i] = x[i] & -128 ? a[i] : b[i]; return e; }