1295367Sdes/* { dg-do run } */ 276259Sgreen/* { dg-require-effective-target avx } */ 376259Sgreen/* { dg-options "-O2 -mavx" } */ 476259Sgreen 576259Sgreen#include "avx-check.h" 676259Sgreen 776259Sgreen#ifndef MASK 876259Sgreen#define MASK 134 976259Sgreen#endif 1076259Sgreen 1176259Sgreen#define mask_v(pos) (((MASK & (0x1 << (pos))) >> (pos)) << 31) 1276259Sgreen 1376259Sgreenvoid static 1476259Sgreenavx_test (void) 1576259Sgreen{ 1676259Sgreen int i; 1776259Sgreen int m[4] = {mask_v(0), mask_v(1), mask_v(2), mask_v(3)}; 1876259Sgreen float s[4] = {1,2,3,4}; 1976259Sgreen union128 u; 2076259Sgreen union128i_d mask; 2176259Sgreen float e[4] = {0.0}; 2276259Sgreen 2376259Sgreen mask.x = _mm_loadu_si128 ((__m128i *)m); 2476259Sgreen u.x = _mm_maskload_ps (s, mask.x); 2576259Sgreen 2676259Sgreen for (i = 0 ; i < 4; i++) 2776259Sgreen e[i] = m[i] ? s[i] : 0; 28162852Sdes 29162852Sdes if (check_union128 (u, e)) 30162852Sdes abort (); 31162852Sdes} 32162852Sdes