* gcc.target/mips/dsp-ctrl.c: New test.
authorChao-ying Fu <fu@mips.com>
Mon, 3 Nov 2008 23:58:10 +0000 (23:58 +0000)
committerCatherine Moore <clm@gcc.gnu.org>
Mon, 3 Nov 2008 23:58:10 +0000 (18:58 -0500)
From-SVN: r141569

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/mips/dsp-ctrl.c [new file with mode: 0644]

index 72ef87d053b62537a4c824efef9270c652219d30..28f2ad9ec1be906bc2402755be754097d6831c6a 100644 (file)
@@ -1,3 +1,7 @@
+2008-11-03  Chao-ying Fu  <fu@mips.com>
+
+       * gcc.target/mips/dsp-ctrl.c: New test. 
+
 2008-11-03  Steve Ellcey  <sje@cup.hp.com>
 
        * gfortran.dg/f2003_io_1.f03: XFAIL until PR37839 is fixed.
diff --git a/gcc/testsuite/gcc.target/mips/dsp-ctrl.c b/gcc/testsuite/gcc.target/mips/dsp-ctrl.c
new file mode 100644 (file)
index 0000000..97e93bc
--- /dev/null
@@ -0,0 +1,80 @@
+/* { dg-do run { target mips*-*-* } } */
+/* { dg-options "-O2" } */
+
+extern void abort (void);
+extern void exit (int);
+#if __mips_dsp
+
+void __attribute__ ((noinline))
+test1 (int i)
+{
+  __builtin_mips_wrdsp (i, 63);
+}
+
+void __attribute__ ((noinline))
+test2 ()
+{
+  long long a = 0;
+  __builtin_mips_extpdp (a, 3);
+}
+
+void __attribute__ ((noinline))
+test3 (int i)
+{
+  long long a = 0;
+  __builtin_mips_extpdp (a, i);
+}
+
+void __attribute__ ((noinline))
+test4 ()
+{
+  long long a = 0;
+  int i = 0;
+  __builtin_mips_mthlip (a, i);
+}
+
+int
+main ()
+{
+  int cntl;
+
+  /* Test 1: wrdsp */
+  __builtin_mips_wrdsp (0,63);
+  test1 (63);
+  cntl = __builtin_mips_rddsp (63);
+  if (cntl != 63)
+    abort ();
+
+  /* Test 2: extpdp */
+  __builtin_mips_wrdsp (63,63);
+  test2 ();
+  cntl = __builtin_mips_rddsp (63);
+  if (cntl != 59)
+    abort ();
+
+  /* Test 3: extpdpv */
+  __builtin_mips_wrdsp (63,63);
+  test3 (10);
+  cntl = __builtin_mips_rddsp (63);
+  if (cntl != 52)
+    abort ();
+
+  /* Test 4: mthlip */
+  __builtin_mips_wrdsp (8,63);
+  test4 ();
+  cntl = __builtin_mips_rddsp (63);
+  if (cntl != 40)
+    abort ();
+
+  exit (0);
+}
+
+#else
+
+int
+main ()
+{
+  exit (0); 
+}
+
+#endif