The problem here is after some heurstics changes the check
loop is now unrolled so we eliminate the array. This means
the check for not having -2147483648 no longer works as
we don't handle SLP in this case.
So the best option is to force the check loop not to unroll
(no vectorize) as this is just testing we SLP the normal
signbit places rather than dealing with the checking loop.

Pushed as obvious after testing the testcase on aarch64-linux-gnu.

        PR testsuite/122522
gcc/testsuite/ChangeLog:

        * gcc.target/aarch64/signbitv2sf.c (main): Disable
        unrolling and vectorizer for the checking loop.

Signed-off-by: Andrew Pinski <[email protected]>
---
 gcc/testsuite/gcc.target/aarch64/signbitv2sf.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gcc/testsuite/gcc.target/aarch64/signbitv2sf.c 
b/gcc/testsuite/gcc.target/aarch64/signbitv2sf.c
index 2587bfedd53..e67de487788 100644
--- a/gcc/testsuite/gcc.target/aarch64/signbitv2sf.c
+++ b/gcc/testsuite/gcc.target/aarch64/signbitv2sf.c
@@ -27,6 +27,8 @@ main ()
   foo (out + 4, in + 4);
   foo (out + 6, in + 6);
 
+  #pragma GCC novector
+  #pragma GCC unroll(0)
   for (i = 0; i < N; i++)
   {
     if (in[i] >= 0.0 && out[i])
-- 
2.43.0

Reply via email to