]> git.ipfire.org Git - thirdparty/gcc.git/blob
8260472
[thirdparty/gcc.git] /
1 /* { dg-do run { target { riscv_vector } } } */
2 /* { dg-additional-options "--param=riscv-autovec-preference=scalable -fno-vect-cost-model" } */
3
4 #include "cond_mulh-1.c"
5
6 #define N 99
7
8 #define TEST_LOOP(TYPE, WTYPE) \
9 { \
10 TYPE a[N], b[N], c[N], pred[N]; \
11 for (int i = 0; i < N; ++i) \
12 { \
13 a[i] = i * i; \
14 b[i] = ((i + 2) % 3) * (i + 1); \
15 pred[i] = i % 3; \
16 asm volatile ("" ::: "memory"); \
17 } \
18 test_##TYPE##_##WTYPE (a, b, c, pred, N); \
19 for (int i = 0; i < N; ++i) \
20 if (c[i] \
21 != (pred[i] \
22 ? (TYPE) (((WTYPE) a[i] * (WTYPE) b[i]) >> sizeof (TYPE) * 8) \
23 : c[i])) \
24 __builtin_abort (); \
25 }
26
27 int
28 main ()
29 {
30 TEST_ALL (TEST_LOOP)
31 return 0;
32 }