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
6/* Program to test PowerPC AltiVec instructions.  */
7
8#include <altivec.h>
9
10extern void abort (void);
11
12vector int a1 = { 100, 200, 300, 400 };
13vector int a2 = { 500, 600, 700, 800 };
14vector int addi = { 600, 800, 1000, 1200 };
15vector int avgi = { 300, 400, 500, 600 };
16
17vector float f1 = { 1.0, 2.0, 3.0, 4.0 };
18vector float f2 = { 5.0, 6.0, 7.0, 8.0 };
19vector float f3;
20vector float addf = { 6.0, 8.0, 10.0, 12.0 };
21
22vector int k;
23vector float f, g, h;
24
25int main ()
26{
27  k = vec_add (a1, a2);
28  if (!vec_all_eq (addi, k))
29    abort ();
30
31  k = vec_avg (a1, a2);
32  if (!vec_all_eq (k, avgi))
33    abort ();
34
35  h = vec_add (f1, f2);
36  if (!vec_all_eq (h, addf))
37    abort ();
38
39  return 0;
40}
41