1  /* { dg-do run { target { powerpc*-*-* } } } */
       2  /* { dg-require-effective-target p9vector_hw } */
       3  /* { dg-options "-mdejagnu-cpu=power9" } */
       4  
       5  #include <altivec.h>
       6  #include <stdlib.h>
       7  
       8  __vector unsigned int
       9  get_exponents (__vector float *p)
      10  {
      11    __vector float source = *p;
      12  
      13    return vec_extract_exp (source);
      14  }
      15  
      16  unsigned int bias_float_exp (int unbiased_exp)
      17  {
      18    return (unsigned int) (unbiased_exp + 127);
      19  }
      20  
      21  int
      22  main ()
      23  {
      24    __vector float argument;
      25    __vector unsigned int result;
      26  
      27    argument[0] = (float) (0x1 << 10);
      28    argument[1] = (float) (0x1 << 9);
      29    argument[2] = (float) (0x1 << 8);
      30    argument[3] = (float) (0x1 << 7);
      31  
      32    result = get_exponents (&argument);
      33    if ((result[0] != bias_float_exp (10)) ||
      34        (result[1] != bias_float_exp (9)) ||
      35        (result[2] != bias_float_exp (8)) || (result[3] != bias_float_exp (7)))
      36      abort();
      37    return 0;
      38  }