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 -mabi=altivec -fno-inline" } */ 5 6#include <altivec.h> 7 8extern void exit (int); 9extern void abort (void); 10 11typedef union 12{ 13 float f[4]; 14 unsigned int i[4]; 15 vector float v; 16} vec_float_t; 17 18void 19check_vec_all_num () 20{ 21 vec_float_t a, b, c; 22 23 a.i[0] = 0xfffa5a5a; 24 a.f[1] = 1.0; 25 a.f[2] = 1.0; 26 a.f[3] = 1.0; 27 28 b.f[0] = 1.0; 29 b.f[1] = 1.0; 30 b.f[2] = 1.0; 31 b.f[3] = 1.0; 32 33 c.i[0] = 0xfffa5a5a; 34 c.i[1] = 0xfffa5a5a; 35 c.i[2] = 0xfffa5a5a; 36 c.i[3] = 0xfffa5a5a; 37 38 if (vec_all_numeric (a.v)) 39 abort (); 40 41 if (vec_all_nan (a.v)) 42 abort (); 43 44 if (!vec_all_numeric (b.v)) 45 abort (); 46 47 if (vec_all_nan (b.v)) 48 abort (); 49 50 if (vec_all_numeric (c.v)) 51 abort (); 52 53 if (!vec_all_nan (c.v)) 54 abort (); 55 56} 57 58void 59check_cmple() 60{ 61 vector float a = {1.0, 2.0, 3.0, 4.0}; 62 vector float b = {1.0, 3.0, 2.0, 5.0}; 63 vector bool int aux; 64 vector signed int le = {-1, -1, 0, -1}; 65 66 aux = vec_cmple (a, b); 67 68 if (!vec_all_eq (aux, le)) 69 abort (); 70} 71 72 73int 74main() 75{ 76 check_cmple (); 77 check_vec_all_num (); 78 exit (0); 79} 80