[gcc r17-2325] vect: Add back testcases for trapping math with comparisons [PR36190]

Andrew Pinski via Gcc-cvs <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <[email protected]>
https://gcc.gnu.org/g:4302e16581b490a196a11de3a54a424f52e27340

commit r17-2325-g4302e16581b490a196a11de3a54a424f52e27340
Author: Andrew Pinski <[email protected]>
Date:   Fri Jul 10 16:55:19 2026 -0700

    vect: Add back testcases for trapping math with comparisons [PR36190]
    
    These were originally renamed to no-trapping-math-vect-*.c in r0-87196-g04b03edb56633f
    but were fixed in r0-107313-gf9613c9a919462 but never added back to the
    trapping versions.
    This adds them back this time with an explict -ftrapping-math.  Note vect-ifcvt-11.c
    already exists now so need to name it vect-ifcvt-11a.c.
    
    Committed as obvious after testing these testcases work on x86_64-linux-gnu.
    
            PR testsuite/36190
    
    gcc/testsuite/ChangeLog:
    
            * gcc.dg/vect/vect-111.c: New test.
            * gcc.dg/vect/vect-ifcvt-11a.c: New test.
            * gcc.dg/vect/vect-ifcvt-12.c: New test.
            * gcc.dg/vect/vect-ifcvt-13.c: New test.
            * gcc.dg/vect/vect-ifcvt-14.c: New test.
            * gcc.dg/vect/vect-ifcvt-15.c: New test.
    
    Signed-off-by: Andrew Pinski <[email protected]>

Diff:
---
 gcc/testsuite/gcc.dg/vect/vect-111.c       | 40 ++++++++++++++++++++++++++++++
 gcc/testsuite/gcc.dg/vect/vect-ifcvt-11a.c | 34 +++++++++++++++++++++++++
 gcc/testsuite/gcc.dg/vect/vect-ifcvt-12.c  | 33 ++++++++++++++++++++++++
 gcc/testsuite/gcc.dg/vect/vect-ifcvt-13.c  | 34 +++++++++++++++++++++++++
 gcc/testsuite/gcc.dg/vect/vect-ifcvt-14.c  | 34 +++++++++++++++++++++++++
 gcc/testsuite/gcc.dg/vect/vect-ifcvt-15.c  | 34 +++++++++++++++++++++++++
 6 files changed, 209 insertions(+)

diff --git a/gcc/testsuite/gcc.dg/vect/vect-111.c b/gcc/testsuite/gcc.dg/vect/vect-111.c
new file mode 100644
index 000000000000..a8a6d15aa1d8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-111.c
@@ -0,0 +1,40 @@
+/* { dg-require-effective-target vect_float } */
+/* { dg-additional-options "-ftrapping-math" } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 16
+
+float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
+
+__attribute__ ((noinline)) int
+main1 (void)
+{
+  int i;
+  float a[N];
+
+  /* Condition in loop.  */
+  /* This loop is vectorized on platforms that support vect_condition.  */
+  for (i = 0; i < N; i++)
+  {
+    a[i] = (b[i] > 0 ? b[i] : 0);
+  }
+
+#pragma GCC novector
+  for (i = 0; i < N; i++)
+  {
+    if (a[i] != b[i])
+	abort ();
+  }
+  return 0;
+}
+
+int main (void)
+{
+  check_vect ();
+  return main1 ();
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target powerpc*-*-* } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target i?86-*-* x86_64-*-* ia64-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-ifcvt-11a.c b/gcc/testsuite/gcc.dg/vect/vect-ifcvt-11a.c
new file mode 100644
index 000000000000..a7f2f93a6140
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-ifcvt-11a.c
@@ -0,0 +1,34 @@
+/* { dg-require-effective-target vect_condition } */
+/* { dg-require-effective-target vect_float } */
+/* { dg-additional-options "-fno-trapping-math" } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 16
+#define MAX 42
+
+float A[N] = {36,39,42,45,43,32,21,12,23,34,45,56,67,78,89,11};
+float B[N] = {0,0,42,42,42,0,0,0,0,0,42,42,42,42,42,0};
+
+extern void abort(void); 
+
+int main ()
+{  
+  int i, j;
+
+  check_vect ();
+
+  for (i = 0; i < 16; i++)
+    A[i] = ( A[i] >= MAX ? MAX : 0); 
+
+  /* check results:  */
+#pragma GCC novector
+  for (i = 0; i < N; i++)
+    if (A[i] != B[i])
+      abort ();
+
+  return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-ifcvt-12.c b/gcc/testsuite/gcc.dg/vect/vect-ifcvt-12.c
new file mode 100644
index 000000000000..b8418dd5a4ed
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-ifcvt-12.c
@@ -0,0 +1,33 @@
+/* { dg-require-effective-target vect_condition } */
+/* { dg-require-effective-target vect_float } */
+/* { dg-additional-options "-ftrapping-math" } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 16
+#define MAX 42
+
+float A[N] = {36,39,42,45,43,32,21,12,23,34,45,56,67,78,89,11};
+float B[N] = {0,0,0,42,42,0,0,0,0,0,42,42,42,42,42,0};
+
+extern void abort(void); 
+
+int main ()
+{  
+  int i, j;
+
+  check_vect ();
+  for (i = 0; i < 16; i++)
+    A[i] = ( A[i] > MAX ? MAX : 0); 
+
+  /* check results:  */
+#pragma GCC novector
+  for (i = 0; i < N; i++)
+    if (A[i] != B[i])
+      abort ();
+
+  return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-ifcvt-13.c b/gcc/testsuite/gcc.dg/vect/vect-ifcvt-13.c
new file mode 100644
index 000000000000..3a62c8cadba4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-ifcvt-13.c
@@ -0,0 +1,34 @@
+/* { dg-require-effective-target vect_condition } */
+/* { dg-require-effective-target vect_float } */
+/* { dg-additional-options "-ftrapping-math" } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 16
+#define MAX 42
+
+float A[N] = {36,39,42,45,43,32,21,12,23,34,45,56,67,78,89,11};
+float B[N] = {42,42,42,0,0,42,42,42,42,42,0,0,0,0,0,42};
+
+extern void abort(void); 
+
+int main ()
+{  
+  int i, j;
+
+  check_vect ();
+
+  for (i = 0; i < 16; i++)
+    A[i] = ( A[i] <= MAX ? MAX : 0); 
+
+  /* check results:  */
+#pragma GCC novector
+  for (i = 0; i < N; i++)
+    if (A[i] != B[i])
+      abort ();
+
+  return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-ifcvt-14.c b/gcc/testsuite/gcc.dg/vect/vect-ifcvt-14.c
new file mode 100644
index 000000000000..3a62c8cadba4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-ifcvt-14.c
@@ -0,0 +1,34 @@
+/* { dg-require-effective-target vect_condition } */
+/* { dg-require-effective-target vect_float } */
+/* { dg-additional-options "-ftrapping-math" } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 16
+#define MAX 42
+
+float A[N] = {36,39,42,45,43,32,21,12,23,34,45,56,67,78,89,11};
+float B[N] = {42,42,42,0,0,42,42,42,42,42,0,0,0,0,0,42};
+
+extern void abort(void); 
+
+int main ()
+{  
+  int i, j;
+
+  check_vect ();
+
+  for (i = 0; i < 16; i++)
+    A[i] = ( A[i] <= MAX ? MAX : 0); 
+
+  /* check results:  */
+#pragma GCC novector
+  for (i = 0; i < N; i++)
+    if (A[i] != B[i])
+      abort ();
+
+  return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-ifcvt-15.c b/gcc/testsuite/gcc.dg/vect/vect-ifcvt-15.c
new file mode 100644
index 000000000000..3180b36eb785
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-ifcvt-15.c
@@ -0,0 +1,34 @@
+/* { dg-require-effective-target vect_condition } */
+/* { dg-require-effective-target vect_float } */
+/* { dg-additional-options "-ftrapping-math" } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 16
+#define MAX 42
+
+float A[N] = {36,39,42,45,43,32,21,12,23,34,45,56,67,78,89,11};
+float B[N] = {42,42,0,0,0,42,42,42,42,42,0,0,0,0,0,42};
+
+extern void abort(void); 
+
+int main ()
+{  
+  int i, j;
+
+  check_vect ();
+
+  for (i = 0; i < 16; i++)
+    A[i] = ( A[i] < MAX ? MAX : 0); 
+
+  /* check results:  */
+#pragma GCC novector
+  for (i = 0; i < N; i++)
+    if (A[i] != B[i])
+      abort ();
+
+  return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.