https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69848
amker at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amker at gcc dot gnu.org --- Comment #7 from amker at gcc dot gnu.org --- (In reply to Jim Wilson from comment #6) > Testing the vcond_mask* patch with make check gave 6 regressions for both > armhf and aarch64. > > FAIL: gcc.dg/vect/pr65947-10.c (internal compiler error) > FAIL: gcc.dg/vect/pr65947-10.c (test for excess errors) > FAIL: gcc.dg/vect/pr65947-10.c scan-tree-dump-times vect "LOOP VECTORIZED" 2 > FAIL: gcc.dg/vect/pr65947-10.c -flto -ffat-lto-objects (internal compiler > error) > FAIL: gcc.dg/vect/pr65947-10.c -flto -ffat-lto-objects (test for excess > errors) > FAIL: gcc.dg/vect/pr65947-10.c -flto -ffat-lto-objects scan-tree-dump-times > vec > t "LOOP VECTORIZED" 2 > > The problem here looks like a flaw in the vcond* patterns. They support int > and fp compare operands, but only int selection operands. E.g. for > (A op B ? X : Y) > A and B can be either int or fp, but X and Y can only be int. Adding the > vcond_mask* patterns apparently causes gcc to call vcond* in ways it didn't > before, and that exposes the problem. > > The x86 port is the only port with vcond and vcond_mask patterns, and it > supports all four combinations if int/fp compare/select operands, so it > appears that aarch64 should also. > > I will need time to figure out how to fix the vcond* problems before I can > formally submit the vcond_mask* patch. Hi Jim, We have a patch which supports all vcond/vcondu patterns (AArch64 yet) including missing ones. The patch also introduces vec_cmp&vcond_mask because it re-implements vcond/vcondu using these two patterns. It will be ready for review shortly, but this issue itself needs vectorizer fix I think.