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.