|
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