]>
Commit | Line | Data |
---|---|---|
03749834 | 1 | /* { dg-do compile } */ |
2 | /* { dg-options "-O2 -ftree-vectorize -fno-trapping-math" } */ | |
3 | ||
4 | #include <stdint.h> | |
5 | ||
6 | #define DEF_LOOP(FLOAT_TYPE, INT_TYPE) \ | |
7 | void __attribute__ ((noipa)) \ | |
8 | test_##INT_TYPE (FLOAT_TYPE *__restrict r, \ | |
9 | INT_TYPE *__restrict a, \ | |
10 | FLOAT_TYPE *__restrict b, \ | |
11 | INT_TYPE *__restrict pred, int n) \ | |
12 | { \ | |
13 | for (int i = 0; i < n; ++i) \ | |
e7362200 | 14 | { \ |
15 | FLOAT_TYPE bi = b[i]; \ | |
16 | r[i] = pred[i] ? (FLOAT_TYPE) a[i] : bi; \ | |
17 | } \ | |
03749834 | 18 | } |
19 | ||
20 | #define TEST_ALL(T) \ | |
21 | T (_Float16, int16_t) \ | |
22 | T (_Float16, uint16_t) \ | |
23 | T (float, int32_t) \ | |
24 | T (float, uint32_t) \ | |
25 | T (double, int64_t) \ | |
26 | T (double, uint64_t) | |
27 | ||
28 | TEST_ALL (DEF_LOOP) | |
29 | ||
30 | /* { dg-final { scan-assembler-times {\tscvtf\tz[0-9]+\.h, p[0-7]/m,} 1 } } */ | |
31 | /* { dg-final { scan-assembler-times {\tucvtf\tz[0-9]+\.h, p[0-7]/m,} 1 } } */ | |
32 | /* { dg-final { scan-assembler-times {\tscvtf\tz[0-9]+\.s, p[0-7]/m,} 1 } } */ | |
33 | /* { dg-final { scan-assembler-times {\tucvtf\tz[0-9]+\.s, p[0-7]/m,} 1 } } */ | |
34 | /* { dg-final { scan-assembler-times {\tscvtf\tz[0-9]+\.d, p[0-7]/m,} 1 } } */ | |
35 | /* { dg-final { scan-assembler-times {\tucvtf\tz[0-9]+\.d, p[0-7]/m,} 1 } } */ | |
36 | ||
37 | /* { dg-final { scan-assembler-not {\tmov\tz} } } */ | |
6160faf7 | 38 | /* { dg-final { scan-assembler-not {\tmovprfx\t} } } */ |
03749834 | 39 | /* { dg-final { scan-assembler-not {\tsel\t} } } */ |