/* { dg-do compile { target powerpc*-*-* } } */
/* { dg-require-effective-target powerpc_altivec_ok } */
/* { dg-options "-maltivec -mabi=altivec -O2" } */

/* Testcase by Richard Guenther and Steven Bosscher.
   Check that "easy" AltiVec constants are correctly synthesized
   if they need to be reloaded.  */

typedef __attribute__ ((vector_size (16))) unsigned char v16qi;
typedef __attribute__ ((vector_size (16))) unsigned short v8hi;
typedef __attribute__ ((vector_size (16))) unsigned int v4si;

#define REGLIST								\
  "77",  "78",  "79",  "80",  "81",  "82",  "83",  "84",  "85",  "86",	\
  "87",  "88",  "89",  "90",  "91",  "92",  "93",  "94",  "95",  "96",	\
  "97",  "98",  "99", "100", "101", "102", "103", "104", "105", "106",	\
 "107", "108"


#define TEST(a, result, b)				\
  void a##_##b (int h)					\
  {							\
    volatile a tmp;					\
    while (h-- > 0)					\
      {							\
        asm ("" : : : REGLIST);				\
        tmp = (a) (result) __builtin_altivec_##b (5);	\
      }							\
  }							\
							\
  void a##_##b##_neg (int h)				\
  {							\
    volatile a tmp;					\
    while (h-- > 0)					\
      {							\
        asm ("" : : : REGLIST);				\
        tmp = (a) (result) __builtin_altivec_##b (-5);	\
      }							\
  }

TEST(v16qi, v16qi, vspltisb)
TEST(v16qi, v8hi, vspltish)
TEST(v16qi, v4si, vspltisw)
TEST(v8hi, v16qi, vspltisb)
TEST(v8hi, v8hi, vspltish)
TEST(v8hi, v4si, vspltisw)
TEST(v4si, v16qi, vspltisb)
TEST(v4si, v8hi, vspltish)
TEST(v4si, v4si, vspltisw)
