1/* { dg-do run } */
2/* { dg-options "-mavx512f -O2" } */
3/* { dg-require-effective-target avx512f } */
4
5#define SIZE (128 / 64)
6
7#include <math.h>
8#include "avx512f-check.h"
9
10static void
11compute_vgetexpsd (double *s, double *r)
12{
13  r[0] = floor (log (s[0]) / log (2));
14}
15
16void static
17avx512f_test (void)
18{
19  int i;
20  union128d res1, s1;
21  double res_ref[SIZE];
22
23  for (i = 0; i < SIZE; i++)
24    {
25      s1.a[i] = 5.0 - i;
26      res_ref[i] = s1.a[i];
27    }
28
29  res1.x = _mm_getexp_sd (s1.x, s1.x);
30
31  compute_vgetexpsd (s1.a, res_ref);
32
33  if (check_fp_union128d (res1, res_ref))
34    abort ();
35}
36