[Bug middle-end/100582] New: vectorize failed to generate VEC_COND_EXPR for v32qi

crazylht at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu May 13 08:48:49 GMT 2021


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;
}


More information about the Gcc-bugs mailing list