summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-2.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-2.c')
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-2.c37
1 files changed, 35 insertions, 2 deletions
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-2.c
index 926f4d87ffb..ed193af78d4 100644
--- a/gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512f-vgetexpss-2.c
@@ -6,30 +6,63 @@
#include <math.h>
#include "avx512f-check.h"
+#include "avx512f-helper.h"
+#include "avx512f-mask-type.h"
static void
compute_vgetexpss (float *s, float *r)
{
+ int i;
r[0] = floor (log (s[0]) / log (2));
+ for(i = 1; i < SIZE; i++)
+ r[i] = s[i];
}
void static
avx512f_test (void)
{
int i;
- union128 res1, s1;
+ union128 res1, res2, res3, res4, res5, res6, s1;
+ MASK_TYPE mask = MASK_VALUE;
float res_ref[SIZE];
for (i = 0; i < SIZE; i++)
{
s1.a[i] = 5.0 - i;
- res_ref[i] = s1.a[i];
+ res2.a[i] = DEFAULT_VALUE;
+ res5.a[i] = DEFAULT_VALUE;
}
res1.x = _mm_getexp_ss (s1.x, s1.x);
+ res2.x = _mm_mask_getexp_ss (res2.x, mask, s1.x, s1.x);
+ res3.x = _mm_maskz_getexp_ss (mask, s1.x, s1.x);
+ res4.x = _mm_getexp_round_ss (s1.x, s1.x, _MM_FROUND_NO_EXC);
+ res5.x = _mm_mask_getexp_round_ss (res5.x, mask, s1.x, s1.x, _MM_FROUND_NO_EXC);
+ res6.x = _mm_maskz_getexp_round_ss (mask, s1.x, s1.x, _MM_FROUND_NO_EXC);
compute_vgetexpss (s1.a, res_ref);
if (check_fp_union128 (res1, res_ref))
abort ();
+
+ MASK_MERGE () (res_ref, mask, 1);
+ if (check_fp_union128 (res2, res_ref))
+ abort ();
+
+ MASK_ZERO () (res_ref, mask, 1);
+ if (check_fp_union128 (res3, res_ref))
+ abort ();
+
+ compute_vgetexpss (s1.a, res_ref);
+
+ if (check_fp_union128 (res4, res_ref))
+ abort ();
+
+ MASK_MERGE () (res_ref, mask, 1);
+ if (check_fp_union128 (res5, res_ref))
+ abort ();
+
+ MASK_ZERO () (res_ref, mask, 1);
+ if (check_fp_union128 (res6, res_ref))
+ abort ();
}