(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
altivec-10.c
       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  
       8  extern void exit (int);
       9  extern void abort (void);
      10  
      11  typedef union
      12  {
      13    float         f[4];
      14    unsigned int  i[4];
      15    vector float  v;
      16  } vec_float_t;
      17  
      18  void 
      19  check_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  
      58  void 
      59  check_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  
      73  int 
      74  main()
      75  {
      76    check_cmple ();
      77    check_vec_all_num ();
      78    exit (0);
      79  }