https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111794
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- I'm failing to see the issue as with -march=rv64gcv I run into t.c:4:8: missed: not vectorized: relevant stmt not supported: *x_50(D) = _6; t.c:4:8: note: removing SLP instance operations starting from: *x_50(D) = _6; t.c:4:8: missed: not vectorized: bad operation in basic block. but just guessing, the issue is bool pattern recognition and t.c:12:1: note: using normal nonmask vectors for _2 = _1 == 1; t.c:12:1: note: using normal nonmask vectors for _4 = _3 == 2; t.c:12:1: note: using normal nonmask vectors for _5 = _2 & _4; ... ? To vectorize you'd want to see t.c:12:1: note: using boolean precision 32 for _2 = _1 == 1; t.c:12:1: note: using boolean precision 16 for _4 = _3 == 2; t.c:12:1: note: using boolean precision 16 for _5 = _2 & _4; ... and a pattern used for the value use: t.c:12:1: note: extra pattern stmt: patt_62 = _5 ? 1 : 0; You need to see why this doesn't work (it's a very delicate area).