aboutsummaryrefslogtreecommitdiff
path: root/SingleSource/Regression/C/gcc-c-torture/execute/cmpsi-2.c
diff options
context:
space:
mode:
Diffstat (limited to 'SingleSource/Regression/C/gcc-c-torture/execute/cmpsi-2.c')
-rw-r--r--SingleSource/Regression/C/gcc-c-torture/execute/cmpsi-2.c200
1 files changed, 200 insertions, 0 deletions
diff --git a/SingleSource/Regression/C/gcc-c-torture/execute/cmpsi-2.c b/SingleSource/Regression/C/gcc-c-torture/execute/cmpsi-2.c
new file mode 100644
index 00000000..52c8065d
--- /dev/null
+++ b/SingleSource/Regression/C/gcc-c-torture/execute/cmpsi-2.c
@@ -0,0 +1,200 @@
+/* { dg-require-effective-target int32plus } */
+#define F 140
+#define T 13
+
+feq (int x, int y)
+{
+ if (x == y)
+ return T;
+ else
+ return F;
+}
+
+fne (int x, int y)
+{
+ if (x != y)
+ return T;
+ else
+ return F;
+}
+
+flt (int x, int y)
+{
+ if (x < y)
+ return T;
+ else
+ return F;
+}
+
+fge (int x, int y)
+{
+ if (x >= y)
+ return T;
+ else
+ return F;
+}
+
+fgt (int x, int y)
+{
+ if (x > y)
+ return T;
+ else
+ return F;
+}
+
+fle (int x, int y)
+{
+ if (x <= y)
+ return T;
+ else
+ return F;
+}
+
+fltu (unsigned int x, unsigned int y)
+{
+ if (x < y)
+ return T;
+ else
+ return F;
+}
+
+fgeu (unsigned int x, unsigned int y)
+{
+ if (x >= y)
+ return T;
+ else
+ return F;
+}
+
+fgtu (unsigned int x, unsigned int y)
+{
+ if (x > y)
+ return T;
+ else
+ return F;
+}
+
+fleu (unsigned int x, unsigned int y)
+{
+ if (x <= y)
+ return T;
+ else
+ return F;
+}
+
+unsigned int args[] =
+{
+ 0L,
+ 1L,
+ -1L,
+ 0x7fffffffL,
+ 0x80000000L,
+ 0x80000001L,
+ 0x1A3F2373L,
+ 0x93850E92L
+};
+
+int correct_results[] =
+{
+ T, F, F, T, F, T, F, T, F, T,
+ F, T, T, F, F, T, T, F, F, T,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, T, F, F, T, T, F, F, T,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, T, F, F, T, T, F, F, T,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, F, T, T, F, F, T, T, F,
+ T, F, F, T, F, T, F, T, F, T,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, T, F, F, T, T, F, F, T,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, T, F, F, T, T, F, F, T,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, T, F, F, T, F, T, T, F,
+ F, T, T, F, F, T, F, T, T, F,
+ T, F, F, T, F, T, F, T, F, T,
+ F, T, T, F, F, T, F, T, T, F,
+ F, T, F, T, T, F, F, T, T, F,
+ F, T, F, T, T, F, F, T, T, F,
+ F, T, T, F, F, T, F, T, T, F,
+ F, T, F, T, T, F, F, T, T, F,
+ F, T, F, T, T, F, F, T, T, F,
+ F, T, F, T, T, F, F, T, T, F,
+ F, T, F, T, T, F, T, F, F, T,
+ T, F, F, T, F, T, F, T, F, T,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, F, T, T, F, F, T, T, F,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, T, F, F, T, F, T, T, F,
+ F, T, T, F, F, T, F, T, T, F,
+ F, T, T, F, F, T, T, F, F, T,
+ F, T, T, F, F, T, F, T, T, F,
+ T, F, F, T, F, T, F, T, F, T,
+ F, T, T, F, F, T, T, F, F, T,
+ F, T, T, F, F, T, F, T, T, F,
+ F, T, T, F, F, T, T, F, F, T,
+ F, T, T, F, F, T, F, T, T, F,
+ F, T, T, F, F, T, F, T, T, F,
+ F, T, T, F, F, T, T, F, F, T,
+ F, T, T, F, F, T, F, T, T, F,
+ F, T, F, T, T, F, F, T, T, F,
+ T, F, F, T, F, T, F, T, F, T,
+ F, T, T, F, F, T, F, T, T, F,
+ F, T, T, F, F, T, T, F, F, T,
+ F, T, F, T, T, F, F, T, T, F,
+ F, T, F, T, T, F, F, T, T, F,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, T, F, F, T, T, F, F, T,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, F, T, T, F, T, F, F, T,
+ T, F, F, T, F, T, F, T, F, T,
+ F, T, F, T, T, F, T, F, F, T,
+ F, T, T, F, F, T, F, T, T, F,
+ F, T, T, F, F, T, F, T, T, F,
+ F, T, T, F, F, T, T, F, F, T,
+ F, T, T, F, F, T, F, T, T, F,
+ F, T, F, T, T, F, F, T, T, F,
+ F, T, F, T, T, F, F, T, T, F,
+ F, T, T, F, F, T, F, T, T, F,
+ T, F, F, T, F, T, F, T, F, T
+};
+
+int
+main (void)
+{
+ int i, j, *res = correct_results;
+
+ for (i = 0; i < 8; i++)
+ {
+ unsigned int arg0 = args[i];
+ for (j = 0; j < 8; j++)
+ {
+ unsigned int arg1 = args[j];
+
+ if (feq (arg0, arg1) != *res++)
+ abort ();
+ if (fne (arg0, arg1) != *res++)
+ abort ();
+ if (flt (arg0, arg1) != *res++)
+ abort ();
+ if (fge (arg0, arg1) != *res++)
+ abort ();
+ if (fgt (arg0, arg1) != *res++)
+ abort ();
+ if (fle (arg0, arg1) != *res++)
+ abort ();
+ if (fltu (arg0, arg1) != *res++)
+ abort ();
+ if (fgeu (arg0, arg1) != *res++)
+ abort ();
+ if (fgtu (arg0, arg1) != *res++)
+ abort ();
+ if (fleu (arg0, arg1) != *res++)
+ abort ();
+ }
+ }
+ exit (0);
+}