/* PR target/84786 */ | |
/* { dg-do run { target { ! ia32 } } } */ | |
/* { dg-options "-mavx512f -mno-avx512vl -O2" } */ | |
/* { dg-require-effective-target avx512f } */ | |
#include "avx512f-check.h" | |
typedef double V __attribute__((vector_size (16))); | |
__attribute__((noipa)) V | |
foo (V x, double y) | |
{ | |
register double z __asm ("xmm18"); | |
asm volatile ("" : "=v" (z) : "0" (y)); | |
x[1] = z; | |
return x; | |
} | |
static void | |
avx512f_test (void) | |
{ | |
V a = foo ((V) { 1.0, 2.0 }, 3.0); | |
if (a[0] != 1.0 || a[1] != 3.0) | |
abort (); | |
} |