|
1 |
| -#define _CLC_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \ |
| 1 | +#define _CLC_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \ |
2 | 2 | _CLC_OVERLOAD _CLC_DECL TO_TYPE convert_##TO_TYPE##SUFFIX(FROM_TYPE x);
|
3 | 3 |
|
4 |
| -#define _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \ |
5 |
| - _CLC_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \ |
6 |
| - _CLC_CONVERT_DECL(FROM_TYPE##2, TO_TYPE##2, SUFFIX) \ |
7 |
| - _CLC_CONVERT_DECL(FROM_TYPE##3, TO_TYPE##3, SUFFIX) \ |
8 |
| - _CLC_CONVERT_DECL(FROM_TYPE##4, TO_TYPE##4, SUFFIX) \ |
9 |
| - _CLC_CONVERT_DECL(FROM_TYPE##8, TO_TYPE##8, SUFFIX) \ |
| 4 | +#define _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \ |
| 5 | + _CLC_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \ |
| 6 | + _CLC_CONVERT_DECL(FROM_TYPE##2, TO_TYPE##2, SUFFIX) \ |
| 7 | + _CLC_CONVERT_DECL(FROM_TYPE##3, TO_TYPE##3, SUFFIX) \ |
| 8 | + _CLC_CONVERT_DECL(FROM_TYPE##4, TO_TYPE##4, SUFFIX) \ |
| 9 | + _CLC_CONVERT_DECL(FROM_TYPE##8, TO_TYPE##8, SUFFIX) \ |
10 | 10 | _CLC_CONVERT_DECL(FROM_TYPE##16, TO_TYPE##16, SUFFIX)
|
11 | 11 |
|
12 |
| -#define _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \ |
13 |
| - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, char, SUFFIX) \ |
14 |
| - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, uchar, SUFFIX) \ |
15 |
| - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, int, SUFFIX) \ |
16 |
| - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, uint, SUFFIX) \ |
17 |
| - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, short, SUFFIX) \ |
18 |
| - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, ushort, SUFFIX) \ |
19 |
| - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, long, SUFFIX) \ |
20 |
| - _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, ulong, SUFFIX) \ |
| 12 | +#define _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \ |
| 13 | + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, char, SUFFIX) \ |
| 14 | + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, uchar, SUFFIX) \ |
| 15 | + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, int, SUFFIX) \ |
| 16 | + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, uint, SUFFIX) \ |
| 17 | + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, short, SUFFIX) \ |
| 18 | + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, ushort, SUFFIX) \ |
| 19 | + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, long, SUFFIX) \ |
| 20 | + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, ulong, SUFFIX) \ |
21 | 21 | _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, float, SUFFIX)
|
22 | 22 |
|
23 | 23 | #if defined(cl_khr_fp64) && defined(cl_khr_fp16)
|
| 24 | +#pragma OPENCL EXTENSION cl_khr_fp16 : enable |
| 25 | +#pragma OPENCL EXTENSION cl_khr_fp64 : enable |
24 | 26 | #define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \
|
25 | 27 | _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \
|
26 | 28 | _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, double, SUFFIX) \
|
27 | 29 | _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, half, SUFFIX)
|
28 | 30 | #elif defined(cl_khr_fp64)
|
29 |
| -#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \ |
30 |
| - _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \ |
| 31 | +#pragma OPENCL EXTENSION cl_khr_fp64 : enable |
| 32 | +#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \ |
| 33 | + _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \ |
31 | 34 | _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, double, SUFFIX)
|
32 | 35 | #elif defined(cl_khr_fp16)
|
| 36 | +#pragma OPENCL EXTENSION cl_khr_fp16 : enable |
33 | 37 | #define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \
|
34 | 38 | _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \
|
35 | 39 | _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, half, SUFFIX)
|
36 | 40 | #else
|
37 |
| -#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \ |
| 41 | +#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \ |
38 | 42 | _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX)
|
39 | 43 | #endif
|
40 | 44 |
|
41 |
| -#define _CLC_VECTOR_CONVERT_TO1(SUFFIX) \ |
42 |
| - _CLC_VECTOR_CONVERT_FROM(char, SUFFIX) \ |
43 |
| - _CLC_VECTOR_CONVERT_FROM(uchar, SUFFIX) \ |
44 |
| - _CLC_VECTOR_CONVERT_FROM(int, SUFFIX) \ |
45 |
| - _CLC_VECTOR_CONVERT_FROM(uint, SUFFIX) \ |
46 |
| - _CLC_VECTOR_CONVERT_FROM(short, SUFFIX) \ |
47 |
| - _CLC_VECTOR_CONVERT_FROM(ushort, SUFFIX) \ |
48 |
| - _CLC_VECTOR_CONVERT_FROM(long, SUFFIX) \ |
49 |
| - _CLC_VECTOR_CONVERT_FROM(ulong, SUFFIX) \ |
| 45 | +#define _CLC_VECTOR_CONVERT_TO1(SUFFIX) \ |
| 46 | + _CLC_VECTOR_CONVERT_FROM(char, SUFFIX) \ |
| 47 | + _CLC_VECTOR_CONVERT_FROM(uchar, SUFFIX) \ |
| 48 | + _CLC_VECTOR_CONVERT_FROM(int, SUFFIX) \ |
| 49 | + _CLC_VECTOR_CONVERT_FROM(uint, SUFFIX) \ |
| 50 | + _CLC_VECTOR_CONVERT_FROM(short, SUFFIX) \ |
| 51 | + _CLC_VECTOR_CONVERT_FROM(ushort, SUFFIX) \ |
| 52 | + _CLC_VECTOR_CONVERT_FROM(long, SUFFIX) \ |
| 53 | + _CLC_VECTOR_CONVERT_FROM(ulong, SUFFIX) \ |
50 | 54 | _CLC_VECTOR_CONVERT_FROM(float, SUFFIX)
|
51 | 55 |
|
52 | 56 | #if defined(cl_khr_fp64) && defined(cl_khr_fp16)
|
| 57 | +#pragma OPENCL EXTENSION cl_khr_fp16 : enable |
| 58 | +#pragma OPENCL EXTENSION cl_khr_fp64 : enable |
53 | 59 | #define _CLC_VECTOR_CONVERT_TO(SUFFIX) \
|
54 | 60 | _CLC_VECTOR_CONVERT_TO1(SUFFIX) \
|
55 | 61 | _CLC_VECTOR_CONVERT_FROM(double, SUFFIX) \
|
56 | 62 | _CLC_VECTOR_CONVERT_FROM(half, SUFFIX)
|
57 | 63 | #elif defined(cl_khr_fp64)
|
58 |
| -#define _CLC_VECTOR_CONVERT_TO(SUFFIX) \ |
59 |
| - _CLC_VECTOR_CONVERT_TO1(SUFFIX) \ |
| 64 | +#pragma OPENCL EXTENSION cl_khr_fp64 : enable |
| 65 | +#define _CLC_VECTOR_CONVERT_TO(SUFFIX) \ |
| 66 | + _CLC_VECTOR_CONVERT_TO1(SUFFIX) \ |
60 | 67 | _CLC_VECTOR_CONVERT_FROM(double, SUFFIX)
|
61 | 68 | #elif defined(cl_khr_fp16)
|
| 69 | +#pragma OPENCL EXTENSION cl_khr_fp16 : enable |
62 | 70 | #define _CLC_VECTOR_CONVERT_TO(SUFFIX) \
|
63 | 71 | _CLC_VECTOR_CONVERT_TO1(SUFFIX) \
|
64 | 72 | _CLC_VECTOR_CONVERT_FROM(half, SUFFIX)
|
65 | 73 | #else
|
66 |
| -#define _CLC_VECTOR_CONVERT_TO(SUFFIX) \ |
67 |
| - _CLC_VECTOR_CONVERT_TO1(SUFFIX) |
| 74 | +#define _CLC_VECTOR_CONVERT_TO(SUFFIX) _CLC_VECTOR_CONVERT_TO1(SUFFIX) |
68 | 75 | #endif
|
69 | 76 |
|
70 |
| -#define _CLC_VECTOR_CONVERT_TO_SUFFIX(ROUND) \ |
71 |
| - _CLC_VECTOR_CONVERT_TO(_sat##ROUND) \ |
| 77 | +#define _CLC_VECTOR_CONVERT_TO_SUFFIX(ROUND) \ |
| 78 | + _CLC_VECTOR_CONVERT_TO(_sat##ROUND) \ |
72 | 79 | _CLC_VECTOR_CONVERT_TO(ROUND)
|
73 | 80 |
|
74 | 81 | _CLC_VECTOR_CONVERT_TO_SUFFIX(_rtn)
|
75 | 82 | _CLC_VECTOR_CONVERT_TO_SUFFIX(_rte)
|
76 | 83 | _CLC_VECTOR_CONVERT_TO_SUFFIX(_rtz)
|
77 | 84 | _CLC_VECTOR_CONVERT_TO_SUFFIX(_rtp)
|
78 | 85 | _CLC_VECTOR_CONVERT_TO_SUFFIX()
|
| 86 | + |
| 87 | +#undef _CLC_VECTOR_CONVERT_TO_SUFFIX |
| 88 | +#undef _CLC_VECTOR_CONVERT_TO |
| 89 | +#undef _CLC_VECTOR_CONVERT_TO1 |
| 90 | +#undef _CLC_VECTOR_CONVERT_FROM |
| 91 | +#undef _CLC_VECTOR_CONVERT_FROM1 |
| 92 | +#undef _CLC_VECTOR_CONVERT_DECL |
| 93 | +#undef _CLC_CONVERT_DECL |
0 commit comments