Skip to content

Commit c0252c8

Browse files
committed
[libclc] Move conversion builtins to the CLC library
This commit moves the implementations of conversion builtins to the CLC library. It keeps the dichotomy of regular vs. clspv implementations of the conversions. However, for the sake of a consistent interface all CLC conversion routines are built, even the ones that clspv opts out of in the user-facing OpenCL layer. It simultaneously updates the python script to use f-strings for formatting.
1 parent 64735ad commit c0252c8

File tree

6 files changed

+419
-306
lines changed

6 files changed

+419
-306
lines changed

libclc/CMakeLists.txt

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -247,11 +247,27 @@ add_custom_target( "generate_convert.cl" DEPENDS convert.cl )
247247
set_target_properties( "generate_convert.cl" PROPERTIES FOLDER "libclc/Sourcegenning" )
248248

249249
add_custom_command(
250-
OUTPUT clspv-convert.cl
251-
COMMAND ${Python3_EXECUTABLE} ${script_loc} --clspv > clspv-convert.cl
250+
OUTPUT clc-convert.cl
251+
COMMAND ${Python3_EXECUTABLE} ${script_loc} --clc > clc-convert.cl
252252
DEPENDS ${script_loc} )
253-
add_custom_target( "clspv-generate_convert.cl" DEPENDS clspv-convert.cl )
254-
set_target_properties( "clspv-generate_convert.cl" PROPERTIES FOLDER "libclc/Sourcegenning" )
253+
add_custom_target( "clc-generate_convert.cl" DEPENDS clc-convert.cl )
254+
set_target_properties( "clc-generate_convert.cl" PROPERTIES FOLDER "libclc/Sourcegenning" )
255+
256+
if ( clspv-- IN_LIST LIBCLC_TARGETS_TO_BUILD OR clspv64-- IN_LIST LIBCLC_TARGETS_TO_BUILD )
257+
add_custom_command(
258+
OUTPUT clspv-convert.cl
259+
COMMAND ${Python3_EXECUTABLE} ${script_loc} --clspv > clspv-convert.cl
260+
DEPENDS ${script_loc} )
261+
add_custom_target( "clspv-generate_convert.cl" DEPENDS clspv-convert.cl )
262+
set_target_properties( "clspv-generate_convert.cl" PROPERTIES FOLDER "libclc/Sourcegenning" )
263+
264+
add_custom_command(
265+
OUTPUT clc-clspv-convert.cl
266+
COMMAND ${Python3_EXECUTABLE} ${script_loc} --clc --clspv > clc-clspv-convert.cl
267+
DEPENDS ${script_loc} )
268+
add_custom_target( "clc-clspv-generate_convert.cl" DEPENDS clc-clspv-convert.cl )
269+
set_target_properties( "clc-clspv-generate_convert.cl" PROPERTIES FOLDER "libclc/Sourcegenning" )
270+
endif()
255271

256272
enable_testing()
257273

@@ -289,6 +305,12 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
289305
set( clc_lib_files )
290306
set( clc_dirs ${dirs} generic )
291307

308+
if( ARCH STREQUAL clspv OR ARCH STREQUAL clspv64 )
309+
set( clc_gen_files clc-clspv-convert.cl )
310+
else()
311+
set( clc_gen_files clc-convert.cl )
312+
endif()
313+
292314
libclc_configure_lib_source(
293315
clc_lib_files
294316
CLC_INTERNAL
@@ -372,6 +394,7 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
372394
COMPILE_FLAGS ${clc_build_flags}
373395
OPT_FLAGS ${opt_flags}
374396
LIB_FILES ${clc_lib_files}
397+
GEN_FILES ${clc_gen_files}
375398
)
376399

377400
list( APPEND build_flags

libclc/clc/include/clc/clc_convert.h

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
#ifndef __CLC_CLC_CONVERT_H__
2+
#define __CLC_CLC_CONVERT_H__
3+
4+
#define _CLC_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \
5+
_CLC_OVERLOAD _CLC_DECL TO_TYPE __clc_convert_##TO_TYPE##SUFFIX(FROM_TYPE x);
6+
7+
#define _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \
8+
_CLC_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \
9+
_CLC_CONVERT_DECL(FROM_TYPE##2, TO_TYPE##2, SUFFIX) \
10+
_CLC_CONVERT_DECL(FROM_TYPE##3, TO_TYPE##3, SUFFIX) \
11+
_CLC_CONVERT_DECL(FROM_TYPE##4, TO_TYPE##4, SUFFIX) \
12+
_CLC_CONVERT_DECL(FROM_TYPE##8, TO_TYPE##8, SUFFIX) \
13+
_CLC_CONVERT_DECL(FROM_TYPE##16, TO_TYPE##16, SUFFIX)
14+
15+
#define _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \
16+
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, char, SUFFIX) \
17+
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, uchar, SUFFIX) \
18+
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, int, SUFFIX) \
19+
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, uint, SUFFIX) \
20+
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, short, SUFFIX) \
21+
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, ushort, SUFFIX) \
22+
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, long, SUFFIX) \
23+
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, ulong, SUFFIX) \
24+
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, float, SUFFIX)
25+
26+
#if defined(cl_khr_fp64) && defined(cl_khr_fp16)
27+
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
28+
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
29+
#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \
30+
_CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \
31+
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, double, SUFFIX) \
32+
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, half, SUFFIX)
33+
#elif defined(cl_khr_fp64)
34+
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
35+
#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \
36+
_CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \
37+
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, double, SUFFIX)
38+
#elif defined(cl_khr_fp16)
39+
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
40+
#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \
41+
_CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \
42+
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, half, SUFFIX)
43+
#else
44+
#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \
45+
_CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX)
46+
#endif
47+
48+
#define _CLC_VECTOR_CONVERT_TO1(SUFFIX) \
49+
_CLC_VECTOR_CONVERT_FROM(char, SUFFIX) \
50+
_CLC_VECTOR_CONVERT_FROM(uchar, SUFFIX) \
51+
_CLC_VECTOR_CONVERT_FROM(int, SUFFIX) \
52+
_CLC_VECTOR_CONVERT_FROM(uint, SUFFIX) \
53+
_CLC_VECTOR_CONVERT_FROM(short, SUFFIX) \
54+
_CLC_VECTOR_CONVERT_FROM(ushort, SUFFIX) \
55+
_CLC_VECTOR_CONVERT_FROM(long, SUFFIX) \
56+
_CLC_VECTOR_CONVERT_FROM(ulong, SUFFIX) \
57+
_CLC_VECTOR_CONVERT_FROM(float, SUFFIX)
58+
59+
#if defined(cl_khr_fp64) && defined(cl_khr_fp16)
60+
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
61+
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
62+
#define _CLC_VECTOR_CONVERT_TO(SUFFIX) \
63+
_CLC_VECTOR_CONVERT_TO1(SUFFIX) \
64+
_CLC_VECTOR_CONVERT_FROM(double, SUFFIX) \
65+
_CLC_VECTOR_CONVERT_FROM(half, SUFFIX)
66+
#elif defined(cl_khr_fp64)
67+
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
68+
#define _CLC_VECTOR_CONVERT_TO(SUFFIX) \
69+
_CLC_VECTOR_CONVERT_TO1(SUFFIX) \
70+
_CLC_VECTOR_CONVERT_FROM(double, SUFFIX)
71+
#elif defined(cl_khr_fp16)
72+
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
73+
#define _CLC_VECTOR_CONVERT_TO(SUFFIX) \
74+
_CLC_VECTOR_CONVERT_TO1(SUFFIX) \
75+
_CLC_VECTOR_CONVERT_FROM(half, SUFFIX)
76+
#else
77+
#define _CLC_VECTOR_CONVERT_TO(SUFFIX) _CLC_VECTOR_CONVERT_TO1(SUFFIX)
78+
#endif
79+
80+
#define _CLC_VECTOR_CONVERT_TO_SUFFIX(ROUND) \
81+
_CLC_VECTOR_CONVERT_TO(_sat##ROUND) \
82+
_CLC_VECTOR_CONVERT_TO(ROUND)
83+
84+
_CLC_VECTOR_CONVERT_TO_SUFFIX(_rtn)
85+
_CLC_VECTOR_CONVERT_TO_SUFFIX(_rte)
86+
_CLC_VECTOR_CONVERT_TO_SUFFIX(_rtz)
87+
_CLC_VECTOR_CONVERT_TO_SUFFIX(_rtp)
88+
_CLC_VECTOR_CONVERT_TO_SUFFIX()
89+
90+
#undef _CLC_VECTOR_CONVERT_TO_SUFFIX
91+
#undef _CLC_VECTOR_CONVERT_TO
92+
#undef _CLC_VECTOR_CONVERT_TO1
93+
#undef _CLC_VECTOR_CONVERT_FROM
94+
#undef _CLC_VECTOR_CONVERT_FROM1
95+
#undef _CLC_VECTOR_CONVERT_DECL
96+
#undef _CLC_CONVERT_DECL
97+
98+
#endif // __CLC_CLC_CONVERT_H__
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#define MAXFLOAT 0x1.fffffep127f
2+
#define HUGE_VALF __builtin_huge_valf()
3+
#define INFINITY __builtin_inff()
4+
#define NAN __builtin_nanf("")
5+
6+
#define FLT_DIG 6
7+
#define FLT_MANT_DIG 24
8+
#define FLT_MAX_10_EXP +38
9+
#define FLT_MAX_EXP +128
10+
#define FLT_MIN_10_EXP -37
11+
#define FLT_MIN_EXP -125
12+
#define FLT_RADIX 2
13+
#define FLT_MAX MAXFLOAT
14+
#define FLT_MIN 0x1.0p-126f
15+
#define FLT_EPSILON 0x1.0p-23f
16+
17+
#define FP_ILOGB0 (-2147483647 - 1)
18+
#define FP_ILOGBNAN 2147483647
19+
20+
#define M_E_F 0x1.5bf0a8p+1f
21+
#define M_LOG2E_F 0x1.715476p+0f
22+
#define M_LOG10E_F 0x1.bcb7b2p-2f
23+
#define M_LN2_F 0x1.62e430p-1f
24+
#define M_LN10_F 0x1.26bb1cp+1f
25+
#define M_PI_F 0x1.921fb6p+1f
26+
#define M_PI_2_F 0x1.921fb6p+0f
27+
#define M_PI_4_F 0x1.921fb6p-1f
28+
#define M_1_PI_F 0x1.45f306p-2f
29+
#define M_2_PI_F 0x1.45f306p-1f
30+
#define M_2_SQRTPI_F 0x1.20dd76p+0f
31+
#define M_SQRT2_F 0x1.6a09e6p+0f
32+
#define M_SQRT1_2_F 0x1.6a09e6p-1f
33+
34+
#define M_LOG210_F 0x1.a934f0p+1f
35+
36+
#ifdef cl_khr_fp64
37+
38+
#define HUGE_VAL __builtin_huge_val()
39+
40+
#define DBL_DIG 15
41+
#define DBL_MANT_DIG 53
42+
#define DBL_MAX_10_EXP +308
43+
#define DBL_MAX_EXP +1024
44+
#define DBL_MIN_10_EXP -307
45+
#define DBL_MIN_EXP -1021
46+
#define DBL_MAX 0x1.fffffffffffffp1023
47+
#define DBL_MIN 0x1.0p-1022
48+
#define DBL_EPSILON 0x1.0p-52
49+
50+
#define M_E 0x1.5bf0a8b145769p+1
51+
#define M_LOG2E 0x1.71547652b82fep+0
52+
#define M_LOG10E 0x1.bcb7b1526e50ep-2
53+
#define M_LN2 0x1.62e42fefa39efp-1
54+
#define M_LN10 0x1.26bb1bbb55516p+1
55+
#define M_PI 0x1.921fb54442d18p+1
56+
#define M_PI_2 0x1.921fb54442d18p+0
57+
#define M_PI_4 0x1.921fb54442d18p-1
58+
#define M_1_PI 0x1.45f306dc9c883p-2
59+
#define M_2_PI 0x1.45f306dc9c883p-1
60+
#define M_2_SQRTPI 0x1.20dd750429b6dp+0
61+
#define M_SQRT2 0x1.6a09e667f3bcdp+0
62+
#define M_SQRT1_2 0x1.6a09e667f3bcdp-1
63+
64+
#ifdef __CLC_INTERNAL
65+
#define M_LOG210 0x1.a934f0979a371p+1
66+
#endif
67+
68+
#endif
69+
70+
#ifdef cl_khr_fp16
71+
72+
#if __OPENCL_VERSION__ >= 120
73+
74+
#define HALF_DIG 3
75+
#define HALF_MANT_DIG 11
76+
#define HALF_MAX_10_EXP +4
77+
#define HALF_MAX_EXP +16
78+
#define HALF_MIN_10_EXP -4
79+
#define HALF_MIN_EXP -13
80+
81+
#define HALF_RADIX 2
82+
#define HALF_MAX 0x1.ffcp15h
83+
#define HALF_MIN 0x1.0p-14h
84+
#define HALF_EPSILON 0x1.0p-10h
85+
86+
#endif
87+
88+
#endif

libclc/generic/include/clc/convert.h

Lines changed: 49 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,93 @@
1-
#define _CLC_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \
1+
#define _CLC_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \
22
_CLC_OVERLOAD _CLC_DECL TO_TYPE convert_##TO_TYPE##SUFFIX(FROM_TYPE x);
33

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) \
1010
_CLC_CONVERT_DECL(FROM_TYPE##16, TO_TYPE##16, SUFFIX)
1111

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) \
2121
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, float, SUFFIX)
2222

2323
#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
2426
#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \
2527
_CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \
2628
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, double, SUFFIX) \
2729
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, half, SUFFIX)
2830
#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) \
3134
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, double, SUFFIX)
3235
#elif defined(cl_khr_fp16)
36+
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
3337
#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \
3438
_CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \
3539
_CLC_VECTOR_CONVERT_DECL(FROM_TYPE, half, SUFFIX)
3640
#else
37-
#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \
41+
#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \
3842
_CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX)
3943
#endif
4044

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) \
5054
_CLC_VECTOR_CONVERT_FROM(float, SUFFIX)
5155

5256
#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
5359
#define _CLC_VECTOR_CONVERT_TO(SUFFIX) \
5460
_CLC_VECTOR_CONVERT_TO1(SUFFIX) \
5561
_CLC_VECTOR_CONVERT_FROM(double, SUFFIX) \
5662
_CLC_VECTOR_CONVERT_FROM(half, SUFFIX)
5763
#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) \
6067
_CLC_VECTOR_CONVERT_FROM(double, SUFFIX)
6168
#elif defined(cl_khr_fp16)
69+
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
6270
#define _CLC_VECTOR_CONVERT_TO(SUFFIX) \
6371
_CLC_VECTOR_CONVERT_TO1(SUFFIX) \
6472
_CLC_VECTOR_CONVERT_FROM(half, SUFFIX)
6573
#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)
6875
#endif
6976

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) \
7279
_CLC_VECTOR_CONVERT_TO(ROUND)
7380

7481
_CLC_VECTOR_CONVERT_TO_SUFFIX(_rtn)
7582
_CLC_VECTOR_CONVERT_TO_SUFFIX(_rte)
7683
_CLC_VECTOR_CONVERT_TO_SUFFIX(_rtz)
7784
_CLC_VECTOR_CONVERT_TO_SUFFIX(_rtp)
7885
_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

Comments
 (0)