re PR target/82662 (ifcvt is not performed on double-word compare)
authorUros Bizjak <ubizjak@gmail.com>
Mon, 23 Oct 2017 19:01:38 +0000 (21:01 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 23 Oct 2017 19:01:38 +0000 (21:01 +0200)
PR target/82662
* gcc.target/i386/pr82662.c: New test.

From-SVN: r254020

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr82662.c [new file with mode: 0644]

index 97055524d4a4fe55913685cbbc24c5926b3aced9..0e3a0e3867d37ba561854153a44e6cf5ac6dedf8 100644 (file)
@@ -1,3 +1,8 @@
+2017-10-23  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/82662
+       * gcc.target/i386/pr82662.c: New test.
+
 2017-10-23  Marek Polacek  <polacek@redhat.com>
 
        PR c/82681
diff --git a/gcc/testsuite/gcc.target/i386/pr82662.c b/gcc/testsuite/gcc.target/i386/pr82662.c
new file mode 100644 (file)
index 0000000..8a9332b
--- /dev/null
@@ -0,0 +1,26 @@
+/* PR target/82580 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+#ifdef __SIZEOF_INT128__
+typedef unsigned __int128 U;
+typedef signed __int128 S;
+#else
+typedef unsigned long long U;
+typedef signed long long S;
+#endif
+void bar (void);
+int f0 (U x, U y) { return x == y; }
+int f1 (U x, U y) { return x != y; }
+int f2 (U x, U y) { return x > y; }
+int f3 (U x, U y) { return x >= y; }
+int f4 (U x, U y) { return x < y; }
+int f5 (U x, U y) { return x <= y; }
+int f6 (S x, S y) { return x == y; }
+int f7 (S x, S y) { return x != y; }
+int f8 (S x, S y) { return x > y; }
+int f9 (S x, S y) { return x >= y; }
+int f10 (S x, S y) { return x < y; }
+int f11 (S x, S y) { return x <= y; }
+
+/* { dg-final { scan-assembler-times {\mset} 12 } } */