| /* { dg-do compile } */ |
| /* { dg-options "-O2 -mavx512fp16" } */ |
| |
| typedef _Float16 __v8hf __attribute__ ((__vector_size__ (16))); |
| typedef _Float16 __m128h __attribute__ ((__vector_size__ (16), __may_alias__)); |
| |
| __m128h |
| __attribute__ ((noinline, noclone)) |
| foo1 (_Float16 x) |
| { |
| return __extension__ (__m128h)(__v8hf) { x, 0.0f, 0.0f, 0.0f, |
| 0.0f, 0.0f, 0.0f, 0.0f }; |
| } |
| |
| __m128h |
| __attribute__ ((noinline, noclone)) |
| foo2 (_Float16 *x) |
| { |
| return __extension__ (__m128h)(__v8hf) { *x, 0.0f, 0.0f, 0.0f, |
| 0.0f, 0.0f, 0.0f, 0.0f }; |
| } |
| |
| /* { dg-final { scan-assembler-times "vmovw\[^\n\r]*xmm0" 3 { target { ! ia32 } } } } */ |
| /* { dg-final { scan-assembler-times "vmovw\[^\n\r]*xmm0" 2 { target { ia32 } } } } */ |