Viewing file: avx512fp16-broadcast-2.c (1.77 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* PR target/87767 */ /* { dg-do run } */ /* { dg-options "-O1 -mavx512fp16 -mavx512dq -mavx512vl" } */ /* { dg-require-effective-target avx512dq } */ /* { dg-require-effective-target avx512vl } */ /* { dg-require-effective-target avx512fp16 } */
#define AVX512DQ #define AVX512VL #define AVX512FP16 #include "avx512f-helper.h"
#include "avx512fp16-broadcast-1.c"
#define RTEST(VTYPE, TYPE, N, OP_NAME, OP) \ do \ { \ TYPE exp[N], src[N]; \ VTYPE res; \ for (int i = 0; i < N; i++) \ src[i] = 2.0 * i - 8.4; \ res = foo_##OP_NAME##_##VTYPE (*(VTYPE*)&src[0]); \ for (int i = 0; i < N; i ++) \ exp[i] = src[i] OP CONSTANT; \ for (int j = 0; j < N; j++) \ { \ if (res[j] != exp[j]) \ abort(); \ } \ } \ while (0)
void test_256 (void) { RTEST (v8hf, _Float16, 8, add, +); RTEST (v16hf, _Float16, 16, add, +); RTEST (v32hf, _Float16, 32, add, +); RTEST (v8hf, _Float16, 8, sub, -); RTEST (v16hf, _Float16, 16, sub, -); RTEST (v32hf, _Float16, 32, sub, -); RTEST (v8hf, _Float16, 8, mul, *); RTEST (v16hf, _Float16, 16, mul, *); RTEST (v32hf, _Float16, 32, mul, *); RTEST (v8hf, _Float16, 8, div, /); RTEST (v16hf, _Float16, 16, div, /); RTEST (v32hf, _Float16, 32, div, /); }
void test_128 (void) { }
|