18346Smhaupt/* { dg-do run } */ 28346Smhaupt/* { dg-require-effective-target avx } */ 38346Smhaupt/* { dg-options "-O2 -mavx" } */ 48346Smhaupt 58346Smhaupt#include "avx-check.h" 68346Smhaupt 78346Smhaupt#ifndef OFFSET 88346Smhaupt#define OFFSET 1 98346Smhaupt#endif 108346Smhaupt 118346Smhaupt#if OFFSET < 0 || OFFSET > 1 128346Smhaupt#error OFFSET must be within [0..1] 138346Smhaupt#endif 148346Smhaupt 158346Smhauptvoid static 168346Smhauptavx_test (void) 178346Smhaupt{ 188346Smhaupt union256 s1; 198346Smhaupt union128 u; 208346Smhaupt float e [4]; 218346Smhaupt 228346Smhaupt s1.x = _mm256_set_ps (24.43, 68.346, 43.35, 546.46, 46.79, 82.78, 82.7, 9.4); 238346Smhaupt u.x = _mm256_extractf128_ps (s1.x, OFFSET); 248346Smhaupt 258346Smhaupt __builtin_memcpy (e, s1.a + OFFSET * 4, sizeof e); 268346Smhaupt 278346Smhaupt if (check_union128 (u, e)) 288346Smhaupt abort (); 298346Smhaupt} 308346Smhaupt