https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69848

--- Comment #6 from Jim Wilson <wilson at gcc dot gnu.org> ---
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.

Reply via email to