// Test EH with V2SI SIMD registers actually restores correct values.
// Origin: Joseph Myers <joseph@codesourcery.com>
// { dg-options "-O" }
// { dg-do run { target powerpc_spe } }

extern "C" void abort (void);
extern "C" int memcmp (const void *, const void *, __SIZE_TYPE__);
typedef int __attribute__((vector_size (8))) v2si;

v2si a = { 1, 2 };
v2si b = { 3, 4 };
v2si c = { 4, 6 };
volatile v2si r;
v2si r2;

void
f ()
{
  register v2si v asm("r15");
  v = __builtin_spe_evaddw (b, c);
  asm volatile ("" : "+r" (v));
  r = v;
  throw 1;
}

int
main ()
{
  register v2si v asm("r15");
  v = __builtin_spe_evaddw (a, b);
  asm volatile ("" : "+r" (v));
  try
    {
      f ();
    }
  catch (int)
    {
      r = v;
      r2 = r;
      if (memcmp (&r2, &c, sizeof (v2si)))
	abort ();
    }
  return 0;
}
