1/* { dg-do run } */ 2/* { dg-options "-O2 -mavx512f" } */ 3/* { dg-require-effective-target avx512f } */ 4 5#define AVX512F 6 7#include "avx512f-helper.h" 8 9#define SIZE (AVX512F_LEN / 32) 10#include "avx512f-mask-type.h" 11 12static void 13CALC (unsigned *r, float *s) 14{ 15 int i; 16 for (i = 0; i < SIZE; i++) 17 r[i] = (unsigned) (s[i] + 0.5); 18} 19 20void 21TEST (void) 22{ 23 int i; 24 UNION_TYPE (AVX512F_LEN, i_ud) res1, res2, res3; 25 UNION_TYPE (AVX512F_LEN,) src; 26 MASK_TYPE mask = MASK_VALUE; 27 unsigned res_ref[SIZE]; 28 29 for (i = 0; i < SIZE; i++) 30 { 31 src.a[i] = 1.5 + 34.67 * i; 32 res2.a[i] = DEFAULT_VALUE; 33 } 34 35 res1.x = INTRINSIC (_cvtps_epu32) (src.x); 36 res2.x = INTRINSIC (_mask_cvtps_epu32) (res2.x, mask, src.x); 37 res3.x = INTRINSIC (_maskz_cvtps_epu32) (mask, src.x); 38 39 CALC (res_ref, src.a); 40 41 if (UNION_CHECK (AVX512F_LEN, i_ud) (res1, res_ref)) 42 abort (); 43 44 MASK_MERGE (i_ud) (res_ref, mask, SIZE); 45 if (UNION_CHECK (AVX512F_LEN, i_ud) (res2, res_ref)) 46 abort (); 47 48 MASK_ZERO (i_ud) (res_ref, mask, SIZE); 49 if (UNION_CHECK (AVX512F_LEN, i_ud) (res3, res_ref)) 50 abort (); 51} 52