/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
/* { dg-require-effective-target powerpc_altivec_ok } */
/* { dg-options "-maltivec" } */

/* Test the vec_splats and vec_promote VMX intrinsics.  */
#include <altivec.h>
    
extern void abort (void);
        
vector int a[] = {{0, 0, 0, 0}, {1,0,0,0}, {1,2,0,0},{1,2,3,0},{1,2,3,4},{5,2,3,4},{5,6,3,4}};
vector int c = {0,6,3,4};
vector int d = {0,0,3,4};
int main1(int t) __attribute__((noinline));
int main1(int t)
{ 
  int i;
  vector int b = vec_splats(0);
  for(i = 0;i<sizeof(a)/sizeof(a[0])-1;i++)
    { 
	if (__builtin_memcmp (&b, &a[i], sizeof(vector int)))
          abort ();
        b = vec_insert(i+1, b, i);
    } 
  if (__builtin_memcmp (&b, &a[i], sizeof(vector int)))
    abort ();
  
  b = vec_insert(0, b, 0);
  if (__builtin_memcmp (&b, &c, sizeof(vector int)))
    abort ();
  
  b = vec_insert(0, b, 1);
  if (__builtin_memcmp (&b, &d, sizeof(vector int)))
    abort ();
  
  return 0;
} 
  
int main(void)
{
  return main1 (0);
}
