1230557Sjimharris/* { dg-do run { target { ! { ia32 } } } } */ 2230557Sjimharris/* { dg-options "-mavx512f -O2" } */ 3230557Sjimharris/* { dg-require-effective-target avx512f } */ 4230557Sjimharris 5230557Sjimharris#include "avx512f-check.h" 6230557Sjimharris 7230557Sjimharrisstatic void 8230557Sjimharris __attribute__ ((noinline, unused)) 9230557Sjimharriscompute_vcvtusi2ss (float *s1, unsigned long long s2, float *r) 10230557Sjimharris{ 11230557Sjimharris r[0] = (float) s2; 12230557Sjimharris r[1] = s1[1]; 13230557Sjimharris r[2] = s1[2]; 14230557Sjimharris r[3] = s1[3]; 15230557Sjimharris} 16230557Sjimharris 17230557Sjimharrisstatic void 18230557Sjimharrisavx512f_test (void) 19230557Sjimharris{ 20230557Sjimharris union128 s1, res; 21230557Sjimharris unsigned long long s2; 22230557Sjimharris float res_ref[4]; 23230557Sjimharris 24230557Sjimharris s1.x = _mm_set_ps (-24.43, 68.346, -43.35, 546.46); 25230557Sjimharris s2 = 0xFEDCBA9876543210; 26230557Sjimharris 27230557Sjimharris res.x = _mm_cvtu64_ss (s1.x, s2); 28230557Sjimharris 29230557Sjimharris compute_vcvtusi2ss (s1.a, s2, res_ref); 30230557Sjimharris 31230557Sjimharris if (check_union128 (res, res_ref)) 32230557Sjimharris abort (); 33230557Sjimharris} 34230557Sjimharris