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.