/* { dg-do run } */
/* { dg-options "-mdsp -mgp32" } */

extern void abort (void);
extern void exit (int);

NOMIPS16 void __attribute__ ((noinline))
test1 (int i)
{
  __builtin_mips_wrdsp (i, 63);
}

NOMIPS16 void __attribute__ ((noinline))
test2 ()
{
  long long a = 0;
  __builtin_mips_extpdp (a, 3);
}

NOMIPS16 void __attribute__ ((noinline))
test3 (int i)
{
  long long a = 0;
  __builtin_mips_extpdp (a, i);
}

NOMIPS16 void __attribute__ ((noinline))
test4 ()
{
  long long a = 0;
  int i = 0;
  __builtin_mips_mthlip (a, i);
}

NOMIPS16 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);
}
