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 long long int
       9  get_exponents (__vector double *p)
      10  {
      11    __vector double source = *p;
      12  
      13    return vec_extract_exp (source);
      14  }
      15  
      16  unsigned long long int
      17  bias_double_exp (long long int unbiased_exp)
      18  {
      19    return (unsigned long long int) (unbiased_exp + 1023);
      20  }
      21  
      22  int
      23  main ()
      24  {
      25    __vector double argument;
      26    __vector unsigned long long int result;
      27  
      28    argument[0] = (double) (0x1 << 22);
      29    argument[1] = (double) (0x1 << 23);
      30  
      31    result = get_exponents (&argument);
      32    if ((result[0] != bias_double_exp (22)) ||
      33        (result[1] != bias_double_exp (23)))
      34      abort();
      35    return 0;
      36  }