RISC-V: Add vector fmin/fmax expanders.
[official-gcc.git] / gcc / testsuite / gcc.target / riscv / rvv / autovec / binop / fmax_run-1.c
blob31661ee890014eb0aa9ab5a4cab0ec13e40e46e1
1 /* { dg-do run { target { riscv_v } } } */
2 /* { dg-additional-options "--param=riscv-autovec-preference=scalable -fno-signaling-nans" } */
4 #include <math.h>
5 #include "fmax-1.c"
7 #define N 99
9 #define TEST_LOOP(FN, SUFFIX, TYPE) \
10 { \
11 TYPE dst[N], x[N], y[N]; \
12 for (int i = 0; i < N; ++i) \
13 { \
14 x[i] = i; \
15 dst[i] = i; \
16 y[i] = ((i & 1) - 1) * i * i; \
17 } \
18 y[0] = -0.0; \
19 y[1] = 0.0; \
20 y[2] = nan ("0.0"); \
21 y[3] = INFINITY; \
22 y[4] = -INFINITY; \
23 x[5] = -0.0; \
24 x[6] = 0.0; \
25 x[7] = nan ("0.0"); \
26 x[8] = INFINITY; \
27 x[9] = -INFINITY; \
28 dst[5] = -0.0; \
29 dst[6] = 0.0; \
30 dst[7] = nan ("0.0"); \
31 dst[8] = INFINITY; \
32 dst[9] = -INFINITY; \
33 test_##TYPE (dst, y, N); \
34 for (int i = 0; i < N; ++i) \
35 { \
36 double ref = FN (SUFFIX) (x[i], y[i]); \
37 if (dst[i] != ref) \
38 __builtin_abort (); \
39 asm volatile ("" ::: "memory"); \
40 } \
43 int __attribute__ ((optimize ("1"))) main (void)
45 TEST_ALL (TEST_LOOP)
46 return 0;