1/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
2/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
3/* { dg-require-effective-target powerpc_altivec_ok } */
4/* { dg-options "-maltivec" } */
5/* Test the vec_splats and vec_promote VMX intrinsics.  */
6#include <altivec.h>
7
8extern void abort (void);
9
10vector int a = {0, 0, 0, 0};
11int main1(int t) __attribute__((noinline));
12int main1(int t)
13{
14  int i;
15  vector int b = vec_splats(0);
16  if (__builtin_memcmp (&a, &b, sizeof(vector int)))
17    abort ();
18
19  b = vec_splats(t);
20  if (__builtin_memcmp (&a, &b, sizeof(vector int)))
21    abort ();
22
23  b = vec_promote(0, 1);
24  if (vec_extract (b, 1) != 0)
25    abort ();
26
27  b = vec_promote(t, t);
28  if (vec_extract (b, t) != 0)
29    abort ();
30
31  return 0;
32}
33
34int main(void)
35{
36  return main1 (0);
37}
38