[testsuite] Fix PR94019 to allow one vector char when !vect_hw_misalign

Kewen.Lin linkw@linux.ibm.com
Wed Mar 4 07:14:00 GMT 2020


Hi,

As PR94019 shows, without misaligned vector access support but with
realign load, the vectorized loop will end up with realign scheme.
It generates mask (control vector) with return type vector signed
char which breaks the not check.

The fix is to differentiate powerpc vect_hw_misalign and powerpc
!vect_hw_misalign, permit one vector char occurance for powerpc
!vect_hw_misalign and keep other targets same as before.

Verified it on ppc64-redhat-linux (Power7 BE).

Is it ok for trunk, and backport to GCC 9 after some burn-in time?


BR,
Kewen
--------

gcc/testsuite/ChangeLog

2020-03-04  Kewen Lin  <linkw@gcc.gnu.org>

	PR testsuite/94019
	* gcc.dg/vect/vect-over-widen-17.c: Expect one vector char if it's on
	POWER and without misaligned vector access support.

--------

--- a/gcc/testsuite/gcc.dg/vect/vect-over-widen-17.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-over-widen-17.c
@@ -41,6 +41,10 @@ main (void)
 }

 /* { dg-final { scan-tree-dump-not {vect_recog_over_widening_pattern: detected} "vect" } } */
-/* { dg-final { scan-tree-dump-not {vector[^\n]*char} "vect" } } */
+/* { dg-final { scan-tree-dump-not {vector[^\n]*char} "vect" { target { { ! powerpc*-*-* } || { powerpc*-*-* && vect_hw_misalign } } } } }
+/* On Power, if there is no vect_hw_misalign support, unaligned vector access
+   adopts realign_load scheme.  It requires rs6000_builtin_mask_for_load to
+   generate mask whose return type is vector char.  */
+/* { dg-final { scan-tree-dump-times {vector[^\n]*char} 1 "vect" { target { powerpc*-*-* && { ! vect_hw_misalign } } } } } */
 /* { dg-final { scan-tree-dump-not {vector[^ ]* int} "vect" } } */
 /* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" } } */



More information about the Gcc-patches mailing list