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