]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[testsuite] [arm] [vect] adjust mve-vshr test [PR113281]
authorAlexandre Oliva <oliva@adacore.com>
Wed, 26 Jun 2024 05:08:18 +0000 (02:08 -0300)
committerRichard Ball <richard.ball@arm.com>
Wed, 21 Aug 2024 13:22:51 +0000 (14:22 +0100)
The test was too optimistic, alas.  We used to vectorize shifts by
clamping the shift counts below the bit width of the types (e.g. at 15
for 16-bit vector elements), but (uint16_t)32768 >> (uint16_t)16 is
well defined (because of promotion to 32-bit int) and must yield 0,
not 1 (as before the fix).

Unfortunately, in the gimple model of vector units, such large shift
counts wouldn't be well-defined, so we won't vectorize such shifts any
more, unless we can tell they're in range or undefined.

So the test that expected the vectorization we no longer performed
needs to be adjusted.  Instead of nobbling the test, Richard Earnshaw
suggested annotating the test with the expected ranges so as to enable
the optimization, and Christophe Lyon suggested a further
simplification.

Co-Authored-By: Richard Earnshaw <Richard.Earnshaw@arm.com>
for  gcc/testsuite/ChangeLog

PR tree-optimization/113281
* gcc.target/arm/simd/mve-vshr.c: Add expected ranges.

(cherry picked from commit 54d2339c9f87f702e02e571a5460e11c19e1c02f)

gcc/testsuite/gcc.target/arm/simd/mve-vshr.c

index 8c7adef9ed8f1010ff3c907969c430288298d648..03078de49c65ed481db7bb735774385526a9bf63 100644 (file)
@@ -9,6 +9,8 @@
   void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a, TYPE##BITS##_t *b) { \
     int i;                                                             \
     for (i=0; i<NB; i++) {                                             \
+      if ((unsigned)b[i] >= (unsigned)(BITS))                          \
+       __builtin_unreachable();                                        \
       dest[i] = a[i] OP b[i];                                          \
     }                                                                  \
 }