2 /* { dg-options "-mavx512f -O2" } */
3 /* { dg-require-effective-target avx512f } */
5 #define SIZE (128 / 32)
8 #include "avx512f-check.h"
9 #include "avx512f-helper.h"
10 #include "avx512f-mask-type.h"
13 compute_vgetexpss (float *s
, float *r
)
16 r
[0] = floor (log (s
[0]) / log (2));
17 for(i
= 1; i
< SIZE
; i
++)
25 union128 res1
, res2
, res3
, res4
, res5
, res6
, s1
;
26 MASK_TYPE mask
= MASK_VALUE
;
29 for (i
= 0; i
< SIZE
; i
++)
32 res2
.a
[i
] = DEFAULT_VALUE
;
33 res5
.a
[i
] = DEFAULT_VALUE
;
36 res1
.x
= _mm_getexp_ss (s1
.x
, s1
.x
);
37 res2
.x
= _mm_mask_getexp_ss (res2
.x
, mask
, s1
.x
, s1
.x
);
38 res3
.x
= _mm_maskz_getexp_ss (mask
, s1
.x
, s1
.x
);
39 res4
.x
= _mm_getexp_round_ss (s1
.x
, s1
.x
, _MM_FROUND_NO_EXC
);
40 res5
.x
= _mm_mask_getexp_round_ss (res5
.x
, mask
, s1
.x
, s1
.x
, _MM_FROUND_NO_EXC
);
41 res6
.x
= _mm_maskz_getexp_round_ss (mask
, s1
.x
, s1
.x
, _MM_FROUND_NO_EXC
);
43 compute_vgetexpss (s1
.a
, res_ref
);
45 if (check_fp_union128 (res1
, res_ref
))
48 MASK_MERGE () (res_ref
, mask
, 1);
49 if (check_fp_union128 (res2
, res_ref
))
52 MASK_ZERO () (res_ref
, mask
, 1);
53 if (check_fp_union128 (res3
, res_ref
))
56 compute_vgetexpss (s1
.a
, res_ref
);
58 if (check_fp_union128 (res4
, res_ref
))
61 MASK_MERGE () (res_ref
, mask
, 1);
62 if (check_fp_union128 (res5
, res_ref
))
65 MASK_ZERO () (res_ref
, mask
, 1);
66 if (check_fp_union128 (res6
, res_ref
))