/* { dg-do compile } */ /* { dg-options "-mavx512fp16 -O2" } */ /* { dg-final { scan-assembler-times "(?:vmovsh|vmovw)" 2 { target { ! ia32 } } } } */ /* { dg-final { scan-assembler-times "vpinsrw" 1 { target { ! ia32 } } } } */ /* { dg-final { scan-assembler-times "vpinsrw" 2 { target { ia32 } } } } */ typedef _Float16 __v8hf __attribute__ ((__vector_size__ (16))); typedef _Float16 __m128h __attribute__ ((__vector_size__ (16), __may_alias__)); __m128h __attribute__ ((noinline, noclone)) foo1 (__m128h a, _Float16 f) { __v8hf x = (__v8hf) a; x[2] = f; return (__m128h) x; } __m128h __attribute__ ((noinline, noclone)) foo2 (__m128h a, _Float16 f) { __v8hf x = (__v8hf) a; x[0] = f; return (__m128h) x; }