aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.target/i386/cadd.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.target/i386/cadd.c')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/cadd.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/cadd.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/cadd.c
new file mode 100644
index 000000000..7a39c67ed
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/cadd.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=k8" } */
+/* { dg-final { scan-assembler "sbb" } } */
+
+extern void abort (void);
+
+/* Conditional increment is best done using sbb $-1, val. */
+int t[]={0,0,0,0,1,1,1,1,1,1};
+q()
+{
+ int sum=0;
+ int i;
+ for (i=0;i<10;i++)
+ if (t[i])
+ sum++;
+ if (sum != 6)
+ abort ();
+}
+main()
+{
+ int i;
+ for (i=0;i<10000000;i++)
+ q();
+}