Skip to content

Commit 25c0554

Browse files
authored
[libclc] Move conversion builtins to the CLC library (#124727)
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 65075a8 commit 25c0554

File tree

6 files changed

+421
-306
lines changed

6 files changed

+421
-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)