/* { dg-do run } */ | |
/* { dg-require-effective-target avx } */ | |
/* { dg-options "-O2 -mavx" } */ | |
#include "avx-check.h" | |
#ifndef OFFSET | |
#define OFFSET 1 | |
#endif | |
#if OFFSET < 0 || OFFSET > 1 | |
#error OFFSET must be within [0..1] | |
#endif | |
void static | |
avx_test (void) | |
{ | |
union256 s1; | |
union128 u; | |
float e [4]; | |
s1.x = _mm256_set_ps (24.43, 68.346, 43.35, 546.46, 46.79, 82.78, 82.7, 9.4); | |
u.x = _mm256_extractf128_ps (s1.x, OFFSET); | |
__builtin_memcpy (e, s1.a + OFFSET * 4, sizeof e); | |
if (check_union128 (u, e)) | |
abort (); | |
} |