| /* PR target/93009 */ |
| /* { dg-do run { target { avx512vl } } } */ |
| /* { dg-options "-O2 -mavx512vl" } */ |
| |
| #define AVX512VL |
| #define AVX512F_LEN 512 |
| #define AVX512F_LEN_HALF 256 |
| |
| #include "avx512f-check.h" |
| |
| typedef double v2df __attribute__((vector_size (16))); |
| |
| __attribute__((noipa)) v2df |
| foo (v2df x, v2df y, double *z) |
| { |
| return x * y + (v2df) { z[0], z[0] }; |
| } |
| |
| __attribute__((noipa)) v2df |
| bar (v2df x, v2df y, double *z) |
| { |
| return y * x + (v2df) { z[0], z[0] }; |
| } |
| |
| static void |
| test_256 (void) |
| { |
| } |
| |
| static void |
| test_128 (void) |
| { |
| double z = 5.0; |
| v2df x = foo ((v2df) { 1.0, 2.0 }, (v2df) { 3.0, 4.0 }, &z); |
| v2df y = bar ((v2df) { 6.0, 7.0 }, (v2df) { 8.0, 9.0 }, &z); |
| if (x[0] != 8.0 || x[1] != 13.0 || y[0] != 53.0 || y[1] != 68.0) |
| abort (); |
| } |