Author: Wenju He
Date: 2025-08-12T17:19:08+08:00
New Revision: 111cdaac994ba79af6f51f0970b51c0e4d705cd9

URL: 
https://github.com/llvm/llvm-project/commit/111cdaac994ba79af6f51f0970b51c0e4d705cd9
DIFF: 
https://github.com/llvm/llvm-project/commit/111cdaac994ba79af6f51f0970b51c0e4d705cd9.diff

LOG: [libclc] Add __attribute__((const)) to functions that don't access memory 
(#152456)

Before this PR, PostOrderFunctionAttrsPass in opt run can deduce
memory(none) for these functions.

This PR explicitly adds the attribute to align with Clang's OpenCL
headers and ensures the attribute is present throughout the compilation
flow. Generated bitcode files amdgcn--amdhsa.bc and nvptx64--nvidiacl.bc
become slightly smaller.

Added: 
    

Modified: 
    libclc/clc/include/clc/clcfunc.h
    libclc/clc/include/clc/common/clc_smoothstep.inc
    libclc/clc/include/clc/geometric/binary_decl.inc
    libclc/clc/include/clc/geometric/clc_cross.h
    libclc/clc/include/clc/geometric/unary_decl.inc
    libclc/clc/include/clc/integer/clc_abs.inc
    libclc/clc/include/clc/integer/clc_abs_diff.inc
    libclc/clc/include/clc/integer/clc_bitfield_extract_decl.inc
    libclc/clc/include/clc/integer/clc_bitfield_insert.inc
    libclc/clc/include/clc/math/binary_decl_with_scalar_second_arg.inc
    libclc/clc/include/clc/math/binary_def_via_fp32.inc
    libclc/clc/include/clc/math/clc_exp_helper.inc
    libclc/clc/include/clc/math/clc_ldexp.inc
    libclc/clc/include/clc/math/clc_nan.inc
    libclc/clc/include/clc/math/unary_decl.inc
    libclc/clc/include/clc/math/unary_decl_with_int_return.inc
    libclc/clc/include/clc/misc/shuffle2_decl.inc
    libclc/clc/include/clc/misc/shuffle_decl.inc
    libclc/clc/include/clc/relational/binary_decl.inc
    libclc/clc/include/clc/relational/clc_all.h
    libclc/clc/include/clc/relational/clc_any.h
    libclc/clc/include/clc/relational/clc_bitselect.inc
    libclc/clc/include/clc/relational/clc_isequal.h
    libclc/clc/include/clc/relational/clc_isinf.h
    libclc/clc/include/clc/relational/clc_isnan.h
    libclc/clc/include/clc/relational/clc_select_decl.inc
    libclc/clc/include/clc/relational/unary_decl.inc
    libclc/clc/include/clc/shared/binary_decl.inc
    libclc/clc/include/clc/shared/binary_decl_with_int_second_arg.inc
    libclc/clc/include/clc/shared/clc_clamp.inc
    libclc/clc/include/clc/shared/clc_max.inc
    libclc/clc/include/clc/shared/clc_min.inc
    libclc/clc/include/clc/shared/ternary_decl.inc
    libclc/clc/include/clc/shared/unary_decl.inc
    libclc/clc/include/clc/workitem/clc_get_global_id.h
    libclc/clc/include/clc/workitem/clc_get_global_offset.h
    libclc/clc/include/clc/workitem/clc_get_global_size.h
    libclc/clc/include/clc/workitem/clc_get_group_id.h
    libclc/clc/include/clc/workitem/clc_get_local_id.h
    libclc/clc/include/clc/workitem/clc_get_local_linear_id.h
    libclc/clc/include/clc/workitem/clc_get_local_size.h
    libclc/clc/include/clc/workitem/clc_get_max_sub_group_size.h
    libclc/clc/include/clc/workitem/clc_get_num_groups.h
    libclc/clc/include/clc/workitem/clc_get_num_sub_groups.h
    libclc/clc/include/clc/workitem/clc_get_sub_group_id.h
    libclc/clc/include/clc/workitem/clc_get_sub_group_local_id.h
    libclc/clc/include/clc/workitem/clc_get_sub_group_size.h
    libclc/clc/include/clc/workitem/clc_get_work_dim.h
    libclc/opencl/include/clc/opencl/common/mix.inc
    libclc/opencl/include/clc/opencl/common/smoothstep.inc
    libclc/opencl/include/clc/opencl/common/step.inc
    libclc/opencl/include/clc/opencl/geometric/cross.h
    libclc/opencl/include/clc/opencl/integer/abs.inc
    libclc/opencl/include/clc/opencl/integer/abs_diff.inc
    libclc/opencl/include/clc/opencl/integer/upsample.h
    libclc/opencl/include/clc/opencl/math/ldexp.inc
    libclc/opencl/include/clc/opencl/math/nan.inc
    libclc/opencl/include/clc/opencl/relational/all.h
    libclc/opencl/include/clc/opencl/relational/any.h
    libclc/opencl/include/clc/opencl/relational/bitselect.inc
    libclc/opencl/include/clc/opencl/relational/isequal.h
    libclc/opencl/include/clc/opencl/relational/isinf.h
    libclc/opencl/include/clc/opencl/relational/isnan.h
    libclc/opencl/include/clc/opencl/shared/clamp.inc
    libclc/opencl/include/clc/opencl/shared/max.inc
    libclc/opencl/include/clc/opencl/shared/min.inc
    libclc/opencl/include/clc/opencl/workitem/get_global_id.h
    libclc/opencl/include/clc/opencl/workitem/get_global_offset.h
    libclc/opencl/include/clc/opencl/workitem/get_global_size.h
    libclc/opencl/include/clc/opencl/workitem/get_group_id.h
    libclc/opencl/include/clc/opencl/workitem/get_local_id.h
    libclc/opencl/include/clc/opencl/workitem/get_local_linear_id.h
    libclc/opencl/include/clc/opencl/workitem/get_local_size.h
    libclc/opencl/include/clc/opencl/workitem/get_max_sub_group_size.h
    libclc/opencl/include/clc/opencl/workitem/get_num_groups.h
    libclc/opencl/include/clc/opencl/workitem/get_num_sub_groups.h
    libclc/opencl/include/clc/opencl/workitem/get_sub_group_id.h
    libclc/opencl/include/clc/opencl/workitem/get_sub_group_local_id.h
    libclc/opencl/include/clc/opencl/workitem/get_sub_group_size.h
    libclc/opencl/include/clc/opencl/workitem/get_work_dim.h

Removed: 
    


################################################################################
diff  --git a/libclc/clc/include/clc/clcfunc.h 
b/libclc/clc/include/clc/clcfunc.h
index 10b9cdd099900..30feaf99a4d31 100644
--- a/libclc/clc/include/clc/clcfunc.h
+++ b/libclc/clc/include/clc/clcfunc.h
@@ -12,6 +12,7 @@
 #define _CLC_OVERLOAD __attribute__((overloadable))
 #define _CLC_DECL
 #define _CLC_INLINE __attribute__((always_inline)) inline
+#define _CLC_CONST __attribute__((const))
 
 // avoid inlines for SPIR-V related targets since we'll optimise later in the
 // chain

diff  --git a/libclc/clc/include/clc/common/clc_smoothstep.inc 
b/libclc/clc/include/clc/common/clc_smoothstep.inc
index 158c578d73d95..e3752e893ac17 100644
--- a/libclc/clc/include/clc/common/clc_smoothstep.inc
+++ b/libclc/clc/include/clc/common/clc_smoothstep.inc
@@ -6,6 +6,5 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __clc_smoothstep(__CLC_GENTYPE edge0,
-                                                       __CLC_GENTYPE edge1,
-                                                       __CLC_GENTYPE x);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
+__clc_smoothstep(__CLC_GENTYPE edge0, __CLC_GENTYPE edge1, __CLC_GENTYPE x);

diff  --git a/libclc/clc/include/clc/geometric/binary_decl.inc 
b/libclc/clc/include/clc/geometric/binary_decl.inc
index 342d97a802659..4a4235ae44db8 100644
--- a/libclc/clc/include/clc/geometric/binary_decl.inc
+++ b/libclc/clc/include/clc/geometric/binary_decl.inc
@@ -10,7 +10,7 @@
 #if (__CLC_VECSIZE_OR_1 == 1 || __CLC_VECSIZE_OR_1 == 2 ||                     
\
      __CLC_VECSIZE_OR_1 == 3 || __CLC_VECSIZE_OR_1 == 4)
 
-_CLC_OVERLOAD _CLC_DECL __CLC_SCALAR_GENTYPE FUNCTION(__CLC_GENTYPE a,
-                                                      __CLC_GENTYPE b);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_SCALAR_GENTYPE
+FUNCTION(__CLC_GENTYPE a, __CLC_GENTYPE b);
 
 #endif

diff  --git a/libclc/clc/include/clc/geometric/clc_cross.h 
b/libclc/clc/include/clc/geometric/clc_cross.h
index e5aa913abfa29..c0a9cacbc3383 100644
--- a/libclc/clc/include/clc/geometric/clc_cross.h
+++ b/libclc/clc/include/clc/geometric/clc_cross.h
@@ -11,22 +11,22 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_OVERLOAD _CLC_DECL float3 __clc_cross(float3 p0, float3 p1);
-_CLC_OVERLOAD _CLC_DECL float4 __clc_cross(float4 p0, float4 p1);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL float3 __clc_cross(float3 p0, float3 p1);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL float4 __clc_cross(float4 p0, float4 p1);
 
 #ifdef cl_khr_fp64
 #pragma OPENCL EXTENSION cl_khr_fp64 : enable
 
-_CLC_OVERLOAD _CLC_DECL double3 __clc_cross(double3 p0, double3 p1);
-_CLC_OVERLOAD _CLC_DECL double4 __clc_cross(double4 p0, double4 p1);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL double3 __clc_cross(double3 p0, double3 p1);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL double4 __clc_cross(double4 p0, double4 p1);
 
 #endif
 
 #ifdef cl_khr_fp16
 #pragma OPENCL EXTENSION cl_khr_fp16 : enable
 
-_CLC_OVERLOAD _CLC_DECL half3 __clc_cross(half3 p0, half3 p1);
-_CLC_OVERLOAD _CLC_DECL half4 __clc_cross(half4 p0, half4 p1);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL half3 __clc_cross(half3 p0, half3 p1);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL half4 __clc_cross(half4 p0, half4 p1);
 
 #endif
 

diff  --git a/libclc/clc/include/clc/geometric/unary_decl.inc 
b/libclc/clc/include/clc/geometric/unary_decl.inc
index cff66000fcf77..bca1f3b78f177 100644
--- a/libclc/clc/include/clc/geometric/unary_decl.inc
+++ b/libclc/clc/include/clc/geometric/unary_decl.inc
@@ -10,7 +10,7 @@
 #if (__CLC_VECSIZE_OR_1 == 1 || __CLC_VECSIZE_OR_1 == 2 ||                     
\
      __CLC_VECSIZE_OR_1 == 3 || __CLC_VECSIZE_OR_1 == 4)
 
-_CLC_OVERLOAD _CLC_DECL
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL
 #ifdef __CLC_GEOMETRIC_RET_GENTYPE
     __CLC_GENTYPE
 #else

diff  --git a/libclc/clc/include/clc/integer/clc_abs.inc 
b/libclc/clc/include/clc/integer/clc_abs.inc
index f1e2c5a5149cb..4c34b0de6f3ee 100644
--- a/libclc/clc/include/clc/integer/clc_abs.inc
+++ b/libclc/clc/include/clc/integer/clc_abs.inc
@@ -6,4 +6,4 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_U_GENTYPE __clc_abs(__CLC_GENTYPE x);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_U_GENTYPE __clc_abs(__CLC_GENTYPE x);

diff  --git a/libclc/clc/include/clc/integer/clc_abs_
diff .inc b/libclc/clc/include/clc/integer/clc_abs_
diff .inc
index 2514a37b78144..84ef15cdb8ae8 100644
--- a/libclc/clc/include/clc/integer/clc_abs_
diff .inc
+++ b/libclc/clc/include/clc/integer/clc_abs_
diff .inc
@@ -6,5 +6,5 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_U_GENTYPE __clc_abs_
diff (__CLC_GENTYPE x,
-                                                       __CLC_GENTYPE y);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_U_GENTYPE
+__clc_abs_
diff (__CLC_GENTYPE x, __CLC_GENTYPE y);

diff  --git a/libclc/clc/include/clc/integer/clc_bitfield_extract_decl.inc 
b/libclc/clc/include/clc/integer/clc_bitfield_extract_decl.inc
index c93eff08de0bc..b3f0e71a5f538 100644
--- a/libclc/clc/include/clc/integer/clc_bitfield_extract_decl.inc
+++ b/libclc/clc/include/clc/integer/clc_bitfield_extract_decl.inc
@@ -6,5 +6,5 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __RETTYPE FUNCTION(__CLC_GENTYPE base, uint offset,
-                                           uint count);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __RETTYPE FUNCTION(__CLC_GENTYPE base,
+                                                      uint offset, uint count);

diff  --git a/libclc/clc/include/clc/integer/clc_bitfield_insert.inc 
b/libclc/clc/include/clc/integer/clc_bitfield_insert.inc
index 22f58bdc09830..de0b3d9469994 100644
--- a/libclc/clc/include/clc/integer/clc_bitfield_insert.inc
+++ b/libclc/clc/include/clc/integer/clc_bitfield_insert.inc
@@ -6,6 +6,7 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE base,
-                                               __CLC_GENTYPE insert,
-                                               uint offset, uint count);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE base,
+                                                          __CLC_GENTYPE insert,
+                                                          uint offset,
+                                                          uint count);

diff  --git 
a/libclc/clc/include/clc/math/binary_decl_with_scalar_second_arg.inc 
b/libclc/clc/include/clc/math/binary_decl_with_scalar_second_arg.inc
index 1b2b9ff33521b..45f39b73013bd 100644
--- a/libclc/clc/include/clc/math/binary_decl_with_scalar_second_arg.inc
+++ b/libclc/clc/include/clc/math/binary_decl_with_scalar_second_arg.inc
@@ -6,7 +6,7 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE a,
-                                               __CLC_GENTYPE b);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE a,
-                                               __CLC_SCALAR_GENTYPE b);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE a,
+                                                          __CLC_GENTYPE b);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
+FUNCTION(__CLC_GENTYPE a, __CLC_SCALAR_GENTYPE b);

diff  --git a/libclc/clc/include/clc/math/binary_def_via_fp32.inc 
b/libclc/clc/include/clc/math/binary_def_via_fp32.inc
index b53a178bf0f10..c8cdb1e9e5c7d 100644
--- a/libclc/clc/include/clc/math/binary_def_via_fp32.inc
+++ b/libclc/clc/include/clc/math/binary_def_via_fp32.inc
@@ -6,8 +6,8 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x,
-                                              __CLC_GENTYPE y) {
+_CLC_OVERLOAD _CLC_CONST _CLC_DEF __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x,
+                                                         __CLC_GENTYPE y) {
   return __CLC_CONVERT_GENTYPE(
       FUNCTION(__CLC_CONVERT_FLOATN(x), __CLC_CONVERT_FLOATN(y)));
 }

diff  --git a/libclc/clc/include/clc/math/clc_exp_helper.inc 
b/libclc/clc/include/clc/math/clc_exp_helper.inc
index cdf650405c815..cb2a0d30b1974 100644
--- a/libclc/clc/include/clc/math/clc_exp_helper.inc
+++ b/libclc/clc/include/clc/math/clc_exp_helper.inc
@@ -6,8 +6,6 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_DECL _CLC_OVERLOAD __CLC_GENTYPE __clc_exp_helper(__CLC_GENTYPE x,
-                                                       __CLC_GENTYPE x_min,
-                                                       __CLC_GENTYPE x_max,
-                                                       __CLC_GENTYPE r,
-                                                       __CLC_INTN n);
+_CLC_DECL _CLC_OVERLOAD _CLC_CONST __CLC_GENTYPE
+__clc_exp_helper(__CLC_GENTYPE x, __CLC_GENTYPE x_min, __CLC_GENTYPE x_max,
+                 __CLC_GENTYPE r, __CLC_INTN n);

diff  --git a/libclc/clc/include/clc/math/clc_ldexp.inc 
b/libclc/clc/include/clc/math/clc_ldexp.inc
index 9b88359d212d2..b0bea29bed8f2 100644
--- a/libclc/clc/include/clc/math/clc_ldexp.inc
+++ b/libclc/clc/include/clc/math/clc_ldexp.inc
@@ -6,4 +6,5 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_DECL _CLC_OVERLOAD __CLC_GENTYPE __clc_ldexp(__CLC_GENTYPE, __CLC_INTN);
+_CLC_DECL _CLC_OVERLOAD _CLC_CONST __CLC_GENTYPE __clc_ldexp(__CLC_GENTYPE,
+                                                             __CLC_INTN);

diff  --git a/libclc/clc/include/clc/math/clc_nan.inc 
b/libclc/clc/include/clc/math/clc_nan.inc
index 22604e0a5785e..9203499174857 100644
--- a/libclc/clc/include/clc/math/clc_nan.inc
+++ b/libclc/clc/include/clc/math/clc_nan.inc
@@ -6,5 +6,5 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_nan(__CLC_U_GENTYPE code);
-_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_nan(__CLC_S_GENTYPE code);
+_CLC_OVERLOAD _CLC_CONST _CLC_DEF __CLC_GENTYPE __clc_nan(__CLC_U_GENTYPE 
code);
+_CLC_OVERLOAD _CLC_CONST _CLC_DEF __CLC_GENTYPE __clc_nan(__CLC_S_GENTYPE 
code);

diff  --git a/libclc/clc/include/clc/math/unary_decl.inc 
b/libclc/clc/include/clc/math/unary_decl.inc
index ce1a71b8284aa..46108c5fac9e7 100644
--- a/libclc/clc/include/clc/math/unary_decl.inc
+++ b/libclc/clc/include/clc/math/unary_decl.inc
@@ -6,4 +6,4 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x);

diff  --git a/libclc/clc/include/clc/math/unary_decl_with_int_return.inc 
b/libclc/clc/include/clc/math/unary_decl_with_int_return.inc
index ed8d0a12506f2..64fcf4267da34 100644
--- a/libclc/clc/include/clc/math/unary_decl_with_int_return.inc
+++ b/libclc/clc/include/clc/math/unary_decl_with_int_return.inc
@@ -6,4 +6,4 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_INTN FUNCTION(__CLC_GENTYPE x);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_INTN FUNCTION(__CLC_GENTYPE x);

diff  --git a/libclc/clc/include/clc/misc/shuffle2_decl.inc 
b/libclc/clc/include/clc/misc/shuffle2_decl.inc
index 47fd5e28a3142..3504e7876277b 100644
--- a/libclc/clc/include/clc/misc/shuffle2_decl.inc
+++ b/libclc/clc/include/clc/misc/shuffle2_decl.inc
@@ -12,16 +12,16 @@
 // The return type is same base type as the input type, with the same vector
 // size as the mask. Elements in the mask must be the same size (number of 
bits)
 // as the input value., e.g. char8 ret = shuffle(char2 x, uchar8 mask);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
 FUNCTION(__CLC_XCONCAT(__CLC_SCALAR_GENTYPE, 2) x,
          __CLC_XCONCAT(__CLC_SCALAR_GENTYPE, 2) y, __CLC_U_GENTYPE mask);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
 FUNCTION(__CLC_XCONCAT(__CLC_SCALAR_GENTYPE, 4) x,
          __CLC_XCONCAT(__CLC_SCALAR_GENTYPE, 4) y, __CLC_U_GENTYPE mask);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
 FUNCTION(__CLC_XCONCAT(__CLC_SCALAR_GENTYPE, 8) x,
          __CLC_XCONCAT(__CLC_SCALAR_GENTYPE, 8) y, __CLC_U_GENTYPE mask);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
 FUNCTION(__CLC_XCONCAT(__CLC_SCALAR_GENTYPE, 16) x,
          __CLC_XCONCAT(__CLC_SCALAR_GENTYPE, 16) y, __CLC_U_GENTYPE mask);
 

diff  --git a/libclc/clc/include/clc/misc/shuffle_decl.inc 
b/libclc/clc/include/clc/misc/shuffle_decl.inc
index c6c64d5b5fede..1445aaf740527 100644
--- a/libclc/clc/include/clc/misc/shuffle_decl.inc
+++ b/libclc/clc/include/clc/misc/shuffle_decl.inc
@@ -12,13 +12,13 @@
 // The return type is same base type as the input type, with the same vector
 // size as the mask. Elements in the mask must be the same size (number of 
bits)
 // as the input value., e.g. char8 ret = shuffle(char2 x, uchar8 mask);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
 FUNCTION(__CLC_XCONCAT(__CLC_SCALAR_GENTYPE, 2) x, __CLC_U_GENTYPE mask);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
 FUNCTION(__CLC_XCONCAT(__CLC_SCALAR_GENTYPE, 4) x, __CLC_U_GENTYPE mask);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
 FUNCTION(__CLC_XCONCAT(__CLC_SCALAR_GENTYPE, 8) x, __CLC_U_GENTYPE mask);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
 FUNCTION(__CLC_XCONCAT(__CLC_SCALAR_GENTYPE, 16) x, __CLC_U_GENTYPE mask);
 
 #endif

diff  --git a/libclc/clc/include/clc/relational/binary_decl.inc 
b/libclc/clc/include/clc/relational/binary_decl.inc
index dc8ec9db7b7da..87cbc8c37cdf1 100644
--- a/libclc/clc/include/clc/relational/binary_decl.inc
+++ b/libclc/clc/include/clc/relational/binary_decl.inc
@@ -12,6 +12,7 @@
 #define __RETTYPE __CLC_BIT_INTN
 #endif
 
-_CLC_OVERLOAD _CLC_DECL __RETTYPE FUNCTION(__CLC_GENTYPE a, __CLC_GENTYPE b);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __RETTYPE FUNCTION(__CLC_GENTYPE a,
+                                                      __CLC_GENTYPE b);
 
 #undef __RETTYPE

diff  --git a/libclc/clc/include/clc/relational/clc_all.h 
b/libclc/clc/include/clc/relational/clc_all.h
index 4d01fb7795b72..272d879e08cd5 100644
--- a/libclc/clc/include/clc/relational/clc_all.h
+++ b/libclc/clc/include/clc/relational/clc_all.h
@@ -12,7 +12,8 @@
 #include <clc/clcfunc.h>
 #include <clc/clctypes.h>
 
-#define _CLC_ALL_DECL(TYPE) _CLC_OVERLOAD _CLC_DECL int __clc_all(TYPE v);
+#define _CLC_ALL_DECL(TYPE)                                                    
\
+  _CLC_OVERLOAD _CLC_CONST _CLC_DECL int __clc_all(TYPE v);
 
 #define _CLC_VECTOR_ALL_DECL(TYPE)                                             
\
   _CLC_ALL_DECL(TYPE)                                                          
\

diff  --git a/libclc/clc/include/clc/relational/clc_any.h 
b/libclc/clc/include/clc/relational/clc_any.h
index 1e287af58d880..82d08c0129e91 100644
--- a/libclc/clc/include/clc/relational/clc_any.h
+++ b/libclc/clc/include/clc/relational/clc_any.h
@@ -12,7 +12,8 @@
 #include <clc/clcfunc.h>
 #include <clc/clctypes.h>
 
-#define _CLC_ANY_DECL(TYPE) _CLC_OVERLOAD _CLC_DECL int __clc_any(TYPE v);
+#define _CLC_ANY_DECL(TYPE)                                                    
\
+  _CLC_OVERLOAD _CLC_CONST _CLC_DECL int __clc_any(TYPE v);
 
 #define _CLC_VECTOR_ANY_DECL(TYPE)                                             
\
   _CLC_ANY_DECL(TYPE)                                                          
\

diff  --git a/libclc/clc/include/clc/relational/clc_bitselect.inc 
b/libclc/clc/include/clc/relational/clc_bitselect.inc
index b81cfc2ef0468..564f3b00b5f1c 100644
--- a/libclc/clc/include/clc/relational/clc_bitselect.inc
+++ b/libclc/clc/include/clc/relational/clc_bitselect.inc
@@ -6,6 +6,5 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __clc_bitselect(__CLC_GENTYPE x,
-                                                      __CLC_GENTYPE y,
-                                                      __CLC_GENTYPE z);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
+__clc_bitselect(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_GENTYPE z);

diff  --git a/libclc/clc/include/clc/relational/clc_isequal.h 
b/libclc/clc/include/clc/relational/clc_isequal.h
index f3789f595637e..2585dbdaf3cfe 100644
--- a/libclc/clc/include/clc/relational/clc_isequal.h
+++ b/libclc/clc/include/clc/relational/clc_isequal.h
@@ -13,7 +13,7 @@
 #include <clc/clctypes.h>
 
 #define _CLC_ISEQUAL_DECL(TYPE, RETTYPE)                                       
\
-  _CLC_OVERLOAD _CLC_DECL RETTYPE __clc_isequal(TYPE x, TYPE y);
+  _CLC_OVERLOAD _CLC_CONST _CLC_DECL RETTYPE __clc_isequal(TYPE x, TYPE y);
 
 #define _CLC_VECTOR_ISEQUAL_DECL(TYPE, RETTYPE)                                
\
   _CLC_ISEQUAL_DECL(TYPE##2, RETTYPE##2)                                       
\

diff  --git a/libclc/clc/include/clc/relational/clc_isinf.h 
b/libclc/clc/include/clc/relational/clc_isinf.h
index 39a9de6c434e1..fcd87e94c6ee2 100644
--- a/libclc/clc/include/clc/relational/clc_isinf.h
+++ b/libclc/clc/include/clc/relational/clc_isinf.h
@@ -13,7 +13,7 @@
 #include <clc/clctypes.h>
 
 #define _CLC_ISINF_DECL(RET_TYPE, ARG_TYPE)                                    
\
-  _CLC_OVERLOAD _CLC_DECL RET_TYPE __clc_isinf(ARG_TYPE);
+  _CLC_OVERLOAD _CLC_CONST _CLC_DECL RET_TYPE __clc_isinf(ARG_TYPE);
 
 #define _CLC_VECTOR_ISINF_DECL(RET_TYPE, ARG_TYPE)                             
\
   _CLC_ISINF_DECL(RET_TYPE##2, ARG_TYPE##2)                                    
\

diff  --git a/libclc/clc/include/clc/relational/clc_isnan.h 
b/libclc/clc/include/clc/relational/clc_isnan.h
index d0821a3c52639..779e6cc94b91b 100644
--- a/libclc/clc/include/clc/relational/clc_isnan.h
+++ b/libclc/clc/include/clc/relational/clc_isnan.h
@@ -13,7 +13,7 @@
 #include <clc/clctypes.h>
 
 #define _CLC_ISNAN_DECL(RET_TYPE, ARG_TYPE)                                    
\
-  _CLC_OVERLOAD _CLC_DECL RET_TYPE __clc_isnan(ARG_TYPE);
+  _CLC_OVERLOAD _CLC_CONST _CLC_DECL RET_TYPE __clc_isnan(ARG_TYPE);
 
 #define _CLC_VECTOR_ISNAN_DECL(RET_TYPE, ARG_TYPE)                             
\
   _CLC_ISNAN_DECL(RET_TYPE##2, ARG_TYPE##2)                                    
\

diff  --git a/libclc/clc/include/clc/relational/clc_select_decl.inc 
b/libclc/clc/include/clc/relational/clc_select_decl.inc
index 1cf026dc8db36..a2350f7b78440 100644
--- a/libclc/clc/include/clc/relational/clc_select_decl.inc
+++ b/libclc/clc/include/clc/relational/clc_select_decl.inc
@@ -6,9 +6,7 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_SELECT_FN(__CLC_GENTYPE x,
-                                                      __CLC_GENTYPE y,
-                                                      __CLC_S_GENTYPE z);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_SELECT_FN(__CLC_GENTYPE x,
-                                                      __CLC_GENTYPE y,
-                                                      __CLC_U_GENTYPE z);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
+__CLC_SELECT_FN(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_S_GENTYPE z);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
+__CLC_SELECT_FN(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_U_GENTYPE z);

diff  --git a/libclc/clc/include/clc/relational/unary_decl.inc 
b/libclc/clc/include/clc/relational/unary_decl.inc
index cc3f2d065529b..f8123eee316c7 100644
--- a/libclc/clc/include/clc/relational/unary_decl.inc
+++ b/libclc/clc/include/clc/relational/unary_decl.inc
@@ -12,6 +12,6 @@
 #define __RETTYPE __CLC_BIT_INTN
 #endif
 
-_CLC_OVERLOAD _CLC_DECL __RETTYPE FUNCTION(__CLC_GENTYPE x);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __RETTYPE FUNCTION(__CLC_GENTYPE x);
 
 #undef __RETTYPE

diff  --git a/libclc/clc/include/clc/shared/binary_decl.inc 
b/libclc/clc/include/clc/shared/binary_decl.inc
index ff4739dcdb8d1..c6e2b2a5b0603 100644
--- a/libclc/clc/include/clc/shared/binary_decl.inc
+++ b/libclc/clc/include/clc/shared/binary_decl.inc
@@ -6,5 +6,5 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x,
-                                               __CLC_GENTYPE y);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x,
+                                                          __CLC_GENTYPE y);

diff  --git a/libclc/clc/include/clc/shared/binary_decl_with_int_second_arg.inc 
b/libclc/clc/include/clc/shared/binary_decl_with_int_second_arg.inc
index a86d89b4fc85f..a091eb8e8d1db 100644
--- a/libclc/clc/include/clc/shared/binary_decl_with_int_second_arg.inc
+++ b/libclc/clc/include/clc/shared/binary_decl_with_int_second_arg.inc
@@ -8,4 +8,5 @@
 
 #include <clc/utils.h>
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x, __CLC_INTN y);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x,
+                                                          __CLC_INTN y);

diff  --git a/libclc/clc/include/clc/shared/clc_clamp.inc 
b/libclc/clc/include/clc/shared/clc_clamp.inc
index c1280a6f699ac..343fa9d24e749 100644
--- a/libclc/clc/include/clc/shared/clc_clamp.inc
+++ b/libclc/clc/include/clc/shared/clc_clamp.inc
@@ -6,12 +6,11 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __clc_clamp(__CLC_GENTYPE x,
-                                                  __CLC_GENTYPE y,
-                                                  __CLC_GENTYPE z);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE __clc_clamp(__CLC_GENTYPE x,
+                                                             __CLC_GENTYPE y,
+                                                             __CLC_GENTYPE z);
 
 #ifndef __CLC_SCALAR
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __clc_clamp(__CLC_GENTYPE x,
-                                                  __CLC_SCALAR_GENTYPE y,
-                                                  __CLC_SCALAR_GENTYPE z);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
+__clc_clamp(__CLC_GENTYPE x, __CLC_SCALAR_GENTYPE y, __CLC_SCALAR_GENTYPE z);
 #endif

diff  --git a/libclc/clc/include/clc/shared/clc_max.inc 
b/libclc/clc/include/clc/shared/clc_max.inc
index ca99c1264ad62..e2a6de69701f7 100644
--- a/libclc/clc/include/clc/shared/clc_max.inc
+++ b/libclc/clc/include/clc/shared/clc_max.inc
@@ -6,10 +6,10 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __clc_max(__CLC_GENTYPE a,
-                                                __CLC_GENTYPE b);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE __clc_max(__CLC_GENTYPE a,
+                                                           __CLC_GENTYPE b);
 
 #ifndef __CLC_SCALAR
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __clc_max(__CLC_GENTYPE a,
-                                                __CLC_SCALAR_GENTYPE b);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
+__clc_max(__CLC_GENTYPE a, __CLC_SCALAR_GENTYPE b);
 #endif

diff  --git a/libclc/clc/include/clc/shared/clc_min.inc 
b/libclc/clc/include/clc/shared/clc_min.inc
index c7cfe23ec3cd6..86b5edee585a1 100644
--- a/libclc/clc/include/clc/shared/clc_min.inc
+++ b/libclc/clc/include/clc/shared/clc_min.inc
@@ -6,10 +6,10 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __clc_min(__CLC_GENTYPE a,
-                                                __CLC_GENTYPE b);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE __clc_min(__CLC_GENTYPE a,
+                                                           __CLC_GENTYPE b);
 
 #ifndef __CLC_SCALAR
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __clc_min(__CLC_GENTYPE a,
-                                                __CLC_SCALAR_GENTYPE b);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE
+__clc_min(__CLC_GENTYPE a, __CLC_SCALAR_GENTYPE b);
 #endif

diff  --git a/libclc/clc/include/clc/shared/ternary_decl.inc 
b/libclc/clc/include/clc/shared/ternary_decl.inc
index a76db1eefb6a4..1dc8672e3f42c 100644
--- a/libclc/clc/include/clc/shared/ternary_decl.inc
+++ b/libclc/clc/include/clc/shared/ternary_decl.inc
@@ -6,5 +6,6 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE a, __CLC_GENTYPE 
b,
-                                               __CLC_GENTYPE c);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE a,
+                                                          __CLC_GENTYPE b,
+                                                          __CLC_GENTYPE c);

diff  --git a/libclc/clc/include/clc/shared/unary_decl.inc 
b/libclc/clc/include/clc/shared/unary_decl.inc
index ce1a71b8284aa..46108c5fac9e7 100644
--- a/libclc/clc/include/clc/shared/unary_decl.inc
+++ b/libclc/clc/include/clc/shared/unary_decl.inc
@@ -6,4 +6,4 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x);

diff  --git a/libclc/clc/include/clc/workitem/clc_get_global_id.h 
b/libclc/clc/include/clc/workitem/clc_get_global_id.h
index da15ed8e53ca8..8a78c78bbc164 100644
--- a/libclc/clc/include/clc/workitem/clc_get_global_id.h
+++ b/libclc/clc/include/clc/workitem/clc_get_global_id.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_OVERLOAD _CLC_DECL size_t __clc_get_global_id(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t __clc_get_global_id(uint dim);
 
 #endif // __CLC_WORKITEM_CLC_GET_GLOBAL_ID_H__

diff  --git a/libclc/clc/include/clc/workitem/clc_get_global_offset.h 
b/libclc/clc/include/clc/workitem/clc_get_global_offset.h
index 639be48d0b958..bf6d4e5c7642d 100644
--- a/libclc/clc/include/clc/workitem/clc_get_global_offset.h
+++ b/libclc/clc/include/clc/workitem/clc_get_global_offset.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_OVERLOAD _CLC_DECL size_t __clc_get_global_offset(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t __clc_get_global_offset(uint dim);
 
 #endif // __CLC_WORKITEM_CLC_GET_GLOBAL_OFFSET_H__

diff  --git a/libclc/clc/include/clc/workitem/clc_get_global_size.h 
b/libclc/clc/include/clc/workitem/clc_get_global_size.h
index fce11f417bf9d..87b88d7d1b4b0 100644
--- a/libclc/clc/include/clc/workitem/clc_get_global_size.h
+++ b/libclc/clc/include/clc/workitem/clc_get_global_size.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_OVERLOAD _CLC_DECL size_t __clc_get_global_size(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t __clc_get_global_size(uint dim);
 
 #endif // __CLC_WORKITEM_CLC_GET_GLOBAL_SIZE_H__

diff  --git a/libclc/clc/include/clc/workitem/clc_get_group_id.h 
b/libclc/clc/include/clc/workitem/clc_get_group_id.h
index 3fd43cb77f893..cc1b0f13ad792 100644
--- a/libclc/clc/include/clc/workitem/clc_get_group_id.h
+++ b/libclc/clc/include/clc/workitem/clc_get_group_id.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_OVERLOAD _CLC_DECL size_t __clc_get_group_id(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t __clc_get_group_id(uint dim);
 
 #endif // __CLC_WORKITEM_CLC_GET_GROUP_ID_H__

diff  --git a/libclc/clc/include/clc/workitem/clc_get_local_id.h 
b/libclc/clc/include/clc/workitem/clc_get_local_id.h
index c446127a5f90c..a25e5ebaa5e45 100644
--- a/libclc/clc/include/clc/workitem/clc_get_local_id.h
+++ b/libclc/clc/include/clc/workitem/clc_get_local_id.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_OVERLOAD _CLC_DECL size_t __clc_get_local_id(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t __clc_get_local_id(uint dim);
 
 #endif // __CLC_WORKITEM_CLC_GET_LOCAL_ID_H__

diff  --git a/libclc/clc/include/clc/workitem/clc_get_local_linear_id.h 
b/libclc/clc/include/clc/workitem/clc_get_local_linear_id.h
index 34c47f2afcb30..9548644f05ca9 100644
--- a/libclc/clc/include/clc/workitem/clc_get_local_linear_id.h
+++ b/libclc/clc/include/clc/workitem/clc_get_local_linear_id.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_OVERLOAD _CLC_DECL size_t __clc_get_local_linear_id();
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t __clc_get_local_linear_id();
 
 #endif // __CLC_WORKITEM_CLC_GET_LOCAL_LINEAR_ID_H__

diff  --git a/libclc/clc/include/clc/workitem/clc_get_local_size.h 
b/libclc/clc/include/clc/workitem/clc_get_local_size.h
index 7fe3c193e0ec1..1272227b65e1b 100644
--- a/libclc/clc/include/clc/workitem/clc_get_local_size.h
+++ b/libclc/clc/include/clc/workitem/clc_get_local_size.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_OVERLOAD _CLC_DECL size_t __clc_get_local_size(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t __clc_get_local_size(uint dim);
 
 #endif // __CLC_WORKITEM_CLC_GET_LOCAL_SIZE_H__

diff  --git a/libclc/clc/include/clc/workitem/clc_get_max_sub_group_size.h 
b/libclc/clc/include/clc/workitem/clc_get_max_sub_group_size.h
index 8b521fe32862d..c8ea2a1fead12 100644
--- a/libclc/clc/include/clc/workitem/clc_get_max_sub_group_size.h
+++ b/libclc/clc/include/clc/workitem/clc_get_max_sub_group_size.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_DEF _CLC_OVERLOAD uint __clc_get_max_sub_group_size();
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL uint __clc_get_max_sub_group_size();
 
 #endif // __CLC_WORKITEM_CLC_GET_MAX_SUB_GROUP_SIZE_H__

diff  --git a/libclc/clc/include/clc/workitem/clc_get_num_groups.h 
b/libclc/clc/include/clc/workitem/clc_get_num_groups.h
index f860944ad517f..6071fc3f141fb 100644
--- a/libclc/clc/include/clc/workitem/clc_get_num_groups.h
+++ b/libclc/clc/include/clc/workitem/clc_get_num_groups.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_OVERLOAD _CLC_DECL size_t __clc_get_num_groups(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t __clc_get_num_groups(uint dim);
 
 #endif // __CLC_WORKITEM_CLC_GET_NUM_GROUPS_H__

diff  --git a/libclc/clc/include/clc/workitem/clc_get_num_sub_groups.h 
b/libclc/clc/include/clc/workitem/clc_get_num_sub_groups.h
index 6965aef1bce30..f94e898268921 100644
--- a/libclc/clc/include/clc/workitem/clc_get_num_sub_groups.h
+++ b/libclc/clc/include/clc/workitem/clc_get_num_sub_groups.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_DEF _CLC_OVERLOAD uint __clc_get_num_sub_groups();
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL uint __clc_get_num_sub_groups();
 
 #endif // __CLC_WORKITEM_CLC_GET_NUM_SUB_GROUPS_H__

diff  --git a/libclc/clc/include/clc/workitem/clc_get_sub_group_id.h 
b/libclc/clc/include/clc/workitem/clc_get_sub_group_id.h
index ac3d7bd30e454..61b54ecde4766 100644
--- a/libclc/clc/include/clc/workitem/clc_get_sub_group_id.h
+++ b/libclc/clc/include/clc/workitem/clc_get_sub_group_id.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_DEF _CLC_OVERLOAD uint __clc_get_sub_group_id();
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL uint __clc_get_sub_group_id();
 
 #endif // __CLC_WORKITEM_CLC_GET_SUB_GROUP_ID_H__

diff  --git a/libclc/clc/include/clc/workitem/clc_get_sub_group_local_id.h 
b/libclc/clc/include/clc/workitem/clc_get_sub_group_local_id.h
index 06bb6f8b77a5c..a158153bde1e9 100644
--- a/libclc/clc/include/clc/workitem/clc_get_sub_group_local_id.h
+++ b/libclc/clc/include/clc/workitem/clc_get_sub_group_local_id.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_DEF _CLC_OVERLOAD uint __clc_get_sub_group_local_id();
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL uint __clc_get_sub_group_local_id();
 
 #endif // __CLC_WORKITEM_CLC_GET_SUB_GROUP_LOCAL_ID_H__

diff  --git a/libclc/clc/include/clc/workitem/clc_get_sub_group_size.h 
b/libclc/clc/include/clc/workitem/clc_get_sub_group_size.h
index a6e8e49470e4f..c4b1d928b20d2 100644
--- a/libclc/clc/include/clc/workitem/clc_get_sub_group_size.h
+++ b/libclc/clc/include/clc/workitem/clc_get_sub_group_size.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_DEF _CLC_OVERLOAD uint __clc_get_sub_group_size();
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL uint __clc_get_sub_group_size();
 
 #endif // __CLC_WORKITEM_CLC_GET_SUB_GROUP_SIZE_H__

diff  --git a/libclc/clc/include/clc/workitem/clc_get_work_dim.h 
b/libclc/clc/include/clc/workitem/clc_get_work_dim.h
index 7e2da4570c4f5..e93d3773b8ca9 100644
--- a/libclc/clc/include/clc/workitem/clc_get_work_dim.h
+++ b/libclc/clc/include/clc/workitem/clc_get_work_dim.h
@@ -11,6 +11,6 @@
 
 #include <clc/internal/clc.h>
 
-_CLC_OVERLOAD _CLC_DECL uint __clc_get_work_dim();
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL uint __clc_get_work_dim();
 
 #endif // __CLC_WORKITEM_CLC_GET_WORK_DIM_H__

diff  --git a/libclc/opencl/include/clc/opencl/common/mix.inc 
b/libclc/opencl/include/clc/opencl/common/mix.inc
index 2b8350f5baae1..cd32085467bbf 100644
--- a/libclc/opencl/include/clc/opencl/common/mix.inc
+++ b/libclc/opencl/include/clc/opencl/common/mix.inc
@@ -6,10 +6,12 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE mix(__CLC_GENTYPE a, __CLC_GENTYPE b,
-                                          __CLC_GENTYPE c);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE mix(__CLC_GENTYPE a,
+                                                     __CLC_GENTYPE b,
+                                                     __CLC_GENTYPE c);
 
 #ifndef __CLC_SCALAR
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE mix(__CLC_GENTYPE a, __CLC_GENTYPE b,
-                                          __CLC_SCALAR_GENTYPE c);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE mix(__CLC_GENTYPE a,
+                                                     __CLC_GENTYPE b,
+                                                     __CLC_SCALAR_GENTYPE c);
 #endif

diff  --git a/libclc/opencl/include/clc/opencl/common/smoothstep.inc 
b/libclc/opencl/include/clc/opencl/common/smoothstep.inc
index 4547483364ba2..f1402e3c80017 100644
--- a/libclc/opencl/include/clc/opencl/common/smoothstep.inc
+++ b/libclc/opencl/include/clc/opencl/common/smoothstep.inc
@@ -6,13 +6,15 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE smoothstep(__CLC_GENTYPE edge0,
-                                                 __CLC_GENTYPE edge1,
-                                                 __CLC_GENTYPE x);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE smoothstep(float edge0, float edge1,
-                                                 __CLC_GENTYPE x);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE smoothstep(__CLC_GENTYPE 
edge0,
+                                                            __CLC_GENTYPE 
edge1,
+                                                            __CLC_GENTYPE x);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE smoothstep(float edge0,
+                                                            float edge1,
+                                                            __CLC_GENTYPE x);
 
 #ifdef cl_khr_fp64
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE smoothstep(double edge0, double edge1,
-                                                 __CLC_GENTYPE x);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE smoothstep(double edge0,
+                                                            double edge1,
+                                                            __CLC_GENTYPE x);
 #endif

diff  --git a/libclc/opencl/include/clc/opencl/common/step.inc 
b/libclc/opencl/include/clc/opencl/common/step.inc
index 86d4ed03dbcab..ab4b61e606feb 100644
--- a/libclc/opencl/include/clc/opencl/common/step.inc
+++ b/libclc/opencl/include/clc/opencl/common/step.inc
@@ -6,9 +6,10 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE step(__CLC_GENTYPE edge, __CLC_GENTYPE 
x);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE step(__CLC_GENTYPE edge,
+                                                      __CLC_GENTYPE x);
 
 #ifndef __CLC_SCALAR
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE step(__CLC_SCALAR_GENTYPE edge,
-                                           __CLC_GENTYPE x);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE step(__CLC_SCALAR_GENTYPE 
edge,
+                                                      __CLC_GENTYPE x);
 #endif

diff  --git a/libclc/opencl/include/clc/opencl/geometric/cross.h 
b/libclc/opencl/include/clc/opencl/geometric/cross.h
index be137965aea4b..10e8f5641e730 100644
--- a/libclc/opencl/include/clc/opencl/geometric/cross.h
+++ b/libclc/opencl/include/clc/opencl/geometric/cross.h
@@ -9,12 +9,12 @@
 #ifndef __CLC_OPENCL_GEOMETRIC_CROSS_H__
 #define __CLC_OPENCL_GEOMETRIC_CROSS_H__
 
-_CLC_OVERLOAD _CLC_DECL float3 cross(float3 p0, float3 p1);
-_CLC_OVERLOAD _CLC_DECL float4 cross(float4 p0, float4 p1);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL float3 cross(float3 p0, float3 p1);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL float4 cross(float4 p0, float4 p1);
 
 #ifdef cl_khr_fp64
-_CLC_OVERLOAD _CLC_DECL double3 cross(double3 p0, double3 p1);
-_CLC_OVERLOAD _CLC_DECL double4 cross(double4 p0, double4 p1);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL double3 cross(double3 p0, double3 p1);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL double4 cross(double4 p0, double4 p1);
 #endif
 
 #endif // __CLC_OPENCL_GEOMETRIC_CROSS_H__

diff  --git a/libclc/opencl/include/clc/opencl/integer/abs.inc 
b/libclc/opencl/include/clc/opencl/integer/abs.inc
index 6620ce36f8c6c..352babb393212 100644
--- a/libclc/opencl/include/clc/opencl/integer/abs.inc
+++ b/libclc/opencl/include/clc/opencl/integer/abs.inc
@@ -6,4 +6,4 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_U_GENTYPE abs(__CLC_GENTYPE x);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_U_GENTYPE abs(__CLC_GENTYPE x);

diff  --git a/libclc/opencl/include/clc/opencl/integer/abs_
diff .inc b/libclc/opencl/include/clc/opencl/integer/abs_
diff .inc
index 41873854021eb..1f8fd635fad9e 100644
--- a/libclc/opencl/include/clc/opencl/integer/abs_
diff .inc
+++ b/libclc/opencl/include/clc/opencl/integer/abs_
diff .inc
@@ -6,5 +6,5 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_U_GENTYPE abs_
diff (__CLC_GENTYPE x,
-                                                 __CLC_GENTYPE y);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_U_GENTYPE abs_
diff (__CLC_GENTYPE x,
+                                                            __CLC_GENTYPE y);

diff  --git a/libclc/opencl/include/clc/opencl/integer/upsample.h 
b/libclc/opencl/include/clc/opencl/integer/upsample.h
index a713f2b392f27..4432d49ccb062 100644
--- a/libclc/opencl/include/clc/opencl/integer/upsample.h
+++ b/libclc/opencl/include/clc/opencl/integer/upsample.h
@@ -12,7 +12,7 @@
 #include <clc/opencl/opencl-base.h>
 
 #define __CLC_UPSAMPLE_DECL(BGENTYPE, GENTYPE, UGENTYPE)                       
\
-  _CLC_OVERLOAD _CLC_DECL BGENTYPE upsample(GENTYPE hi, UGENTYPE lo);
+  _CLC_OVERLOAD _CLC_CONST _CLC_DECL BGENTYPE upsample(GENTYPE hi, UGENTYPE 
lo);
 
 #define __CLC_UPSAMPLE_VEC(BGENTYPE, GENTYPE, UGENTYPE)                        
\
   __CLC_UPSAMPLE_DECL(BGENTYPE, GENTYPE, UGENTYPE)                             
\

diff  --git a/libclc/opencl/include/clc/opencl/math/ldexp.inc 
b/libclc/opencl/include/clc/opencl/math/ldexp.inc
index b5a5cfcafdd53..9f3ffeeef27e3 100644
--- a/libclc/opencl/include/clc/opencl/math/ldexp.inc
+++ b/libclc/opencl/include/clc/opencl/math/ldexp.inc
@@ -8,6 +8,6 @@
 
 #ifndef __CLC_SCALAR
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE ldexp(__CLC_GENTYPE x, int n);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE ldexp(__CLC_GENTYPE x, int n);
 
 #endif

diff  --git a/libclc/opencl/include/clc/opencl/math/nan.inc 
b/libclc/opencl/include/clc/opencl/math/nan.inc
index 45b96f81d7285..3134e56eaf83e 100644
--- a/libclc/opencl/include/clc/opencl/math/nan.inc
+++ b/libclc/opencl/include/clc/opencl/math/nan.inc
@@ -6,4 +6,4 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE nan(__CLC_U_GENTYPE code);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE nan(__CLC_U_GENTYPE code);

diff  --git a/libclc/opencl/include/clc/opencl/relational/all.h 
b/libclc/opencl/include/clc/opencl/relational/all.h
index 6c19d83e25bbf..f7f14006309fb 100644
--- a/libclc/opencl/include/clc/opencl/relational/all.h
+++ b/libclc/opencl/include/clc/opencl/relational/all.h
@@ -11,7 +11,7 @@
 
 #include <clc/opencl/opencl-base.h>
 
-#define _CLC_ALL_DECL(TYPE) _CLC_OVERLOAD _CLC_DECL int all(TYPE v);
+#define _CLC_ALL_DECL(TYPE) _CLC_OVERLOAD _CLC_CONST _CLC_DECL int all(TYPE v);
 
 #define _CLC_VECTOR_ALL_DECL(TYPE)                                             
\
   _CLC_ALL_DECL(TYPE)                                                          
\

diff  --git a/libclc/opencl/include/clc/opencl/relational/any.h 
b/libclc/opencl/include/clc/opencl/relational/any.h
index 4f6b2e22460c1..7b1ad333cef34 100644
--- a/libclc/opencl/include/clc/opencl/relational/any.h
+++ b/libclc/opencl/include/clc/opencl/relational/any.h
@@ -11,7 +11,7 @@
 
 #include <clc/opencl/opencl-base.h>
 
-#define _CLC_ANY_DECL(TYPE) _CLC_OVERLOAD _CLC_DECL int any(TYPE v);
+#define _CLC_ANY_DECL(TYPE) _CLC_OVERLOAD _CLC_CONST _CLC_DECL int any(TYPE v);
 
 #define _CLC_VECTOR_ANY_DECL(TYPE)                                             
\
   _CLC_ANY_DECL(TYPE)                                                          
\

diff  --git a/libclc/opencl/include/clc/opencl/relational/bitselect.inc 
b/libclc/opencl/include/clc/opencl/relational/bitselect.inc
index d821bb86a1409..429ef372d1214 100644
--- a/libclc/opencl/include/clc/opencl/relational/bitselect.inc
+++ b/libclc/opencl/include/clc/opencl/relational/bitselect.inc
@@ -6,6 +6,6 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE bitselect(__CLC_GENTYPE x,
-                                                __CLC_GENTYPE y,
-                                                __CLC_GENTYPE z);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE bitselect(__CLC_GENTYPE x,
+                                                           __CLC_GENTYPE y,
+                                                           __CLC_GENTYPE z);

diff  --git a/libclc/opencl/include/clc/opencl/relational/isequal.h 
b/libclc/opencl/include/clc/opencl/relational/isequal.h
index c679b2cfc3feb..b3dff2e924d2f 100644
--- a/libclc/opencl/include/clc/opencl/relational/isequal.h
+++ b/libclc/opencl/include/clc/opencl/relational/isequal.h
@@ -12,7 +12,7 @@
 #include <clc/opencl/opencl-base.h>
 
 #define _CLC_ISEQUAL_DECL(TYPE, RETTYPE)                                       
\
-  _CLC_OVERLOAD _CLC_DECL RETTYPE isequal(TYPE x, TYPE y);
+  _CLC_OVERLOAD _CLC_CONST _CLC_DECL RETTYPE isequal(TYPE x, TYPE y);
 
 #define _CLC_VECTOR_ISEQUAL_DECL(TYPE, RETTYPE)                                
\
   _CLC_ISEQUAL_DECL(TYPE##2, RETTYPE##2)                                       
\

diff  --git a/libclc/opencl/include/clc/opencl/relational/isinf.h 
b/libclc/opencl/include/clc/opencl/relational/isinf.h
index 561cb1cda47b7..0dd7246a88fea 100644
--- a/libclc/opencl/include/clc/opencl/relational/isinf.h
+++ b/libclc/opencl/include/clc/opencl/relational/isinf.h
@@ -12,7 +12,7 @@
 #include <clc/opencl/opencl-base.h>
 
 #define _CLC_ISINF_DECL(RET_TYPE, ARG_TYPE)                                    
\
-  _CLC_OVERLOAD _CLC_DECL RET_TYPE isinf(ARG_TYPE);
+  _CLC_OVERLOAD _CLC_CONST _CLC_DECL RET_TYPE isinf(ARG_TYPE);
 
 #define _CLC_VECTOR_ISINF_DECL(RET_TYPE, ARG_TYPE)                             
\
   _CLC_ISINF_DECL(RET_TYPE##2, ARG_TYPE##2)                                    
\

diff  --git a/libclc/opencl/include/clc/opencl/relational/isnan.h 
b/libclc/opencl/include/clc/opencl/relational/isnan.h
index fe1e5721c1d24..f02ec5d04c64f 100644
--- a/libclc/opencl/include/clc/opencl/relational/isnan.h
+++ b/libclc/opencl/include/clc/opencl/relational/isnan.h
@@ -12,7 +12,7 @@
 #include <clc/opencl/opencl-base.h>
 
 #define _CLC_ISNAN_DECL(RET_TYPE, ARG_TYPE)                                    
\
-  _CLC_OVERLOAD _CLC_DECL RET_TYPE isnan(ARG_TYPE);
+  _CLC_OVERLOAD _CLC_CONST _CLC_DECL RET_TYPE isnan(ARG_TYPE);
 
 #define _CLC_VECTOR_ISNAN_DECL(RET_TYPE, ARG_TYPE)                             
\
   _CLC_ISNAN_DECL(RET_TYPE##2, ARG_TYPE##2)                                    
\

diff  --git a/libclc/opencl/include/clc/opencl/shared/clamp.inc 
b/libclc/opencl/include/clc/opencl/shared/clamp.inc
index 75dec9c258e8a..74d2f704fadd9 100644
--- a/libclc/opencl/include/clc/opencl/shared/clamp.inc
+++ b/libclc/opencl/include/clc/opencl/shared/clamp.inc
@@ -6,11 +6,12 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE clamp(__CLC_GENTYPE x, __CLC_GENTYPE y,
-                                            __CLC_GENTYPE z);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE clamp(__CLC_GENTYPE x,
+                                                       __CLC_GENTYPE y,
+                                                       __CLC_GENTYPE z);
 
 #ifndef __CLC_SCALAR
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE clamp(__CLC_GENTYPE x,
-                                            __CLC_SCALAR_GENTYPE y,
-                                            __CLC_SCALAR_GENTYPE z);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE clamp(__CLC_GENTYPE x,
+                                                       __CLC_SCALAR_GENTYPE y,
+                                                       __CLC_SCALAR_GENTYPE z);
 #endif

diff  --git a/libclc/opencl/include/clc/opencl/shared/max.inc 
b/libclc/opencl/include/clc/opencl/shared/max.inc
index 98610dfdb1018..99c28a7e8cd74 100644
--- a/libclc/opencl/include/clc/opencl/shared/max.inc
+++ b/libclc/opencl/include/clc/opencl/shared/max.inc
@@ -6,9 +6,10 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE max(__CLC_GENTYPE a, __CLC_GENTYPE b);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE max(__CLC_GENTYPE a,
+                                                     __CLC_GENTYPE b);
 
 #ifndef __CLC_SCALAR
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE max(__CLC_GENTYPE a,
-                                          __CLC_SCALAR_GENTYPE b);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE max(__CLC_GENTYPE a,
+                                                     __CLC_SCALAR_GENTYPE b);
 #endif

diff  --git a/libclc/opencl/include/clc/opencl/shared/min.inc 
b/libclc/opencl/include/clc/opencl/shared/min.inc
index 3140b637f3953..ce5d906fe26c7 100644
--- a/libclc/opencl/include/clc/opencl/shared/min.inc
+++ b/libclc/opencl/include/clc/opencl/shared/min.inc
@@ -6,9 +6,10 @@
 //
 
//===----------------------------------------------------------------------===//
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE min(__CLC_GENTYPE a, __CLC_GENTYPE b);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE min(__CLC_GENTYPE a,
+                                                     __CLC_GENTYPE b);
 
 #ifndef __CLC_SCALAR
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE min(__CLC_GENTYPE a,
-                                          __CLC_SCALAR_GENTYPE b);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL __CLC_GENTYPE min(__CLC_GENTYPE a,
+                                                     __CLC_SCALAR_GENTYPE b);
 #endif

diff  --git a/libclc/opencl/include/clc/opencl/workitem/get_global_id.h 
b/libclc/opencl/include/clc/opencl/workitem/get_global_id.h
index 98217c0ba6b4d..d64da9d2cc643 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_global_id.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_global_id.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_DECL _CLC_OVERLOAD size_t get_global_id(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t get_global_id(uint dim);
 
 #endif // __CLC_OPENCL_WORKITEM_GET_GLOBAL_ID_H__

diff  --git a/libclc/opencl/include/clc/opencl/workitem/get_global_offset.h 
b/libclc/opencl/include/clc/opencl/workitem/get_global_offset.h
index 8c820331e6ab2..ac9704e274f2d 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_global_offset.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_global_offset.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_DECL _CLC_OVERLOAD size_t get_global_offset(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t get_global_offset(uint dim);
 
 #endif // __CLC_OPENCL_WORKITEM_GET_GLOBAL_OFFSET_H__

diff  --git a/libclc/opencl/include/clc/opencl/workitem/get_global_size.h 
b/libclc/opencl/include/clc/opencl/workitem/get_global_size.h
index 5c7426047d7d0..4809cc4b37712 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_global_size.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_global_size.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_DECL _CLC_OVERLOAD size_t get_global_size(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t get_global_size(uint dim);
 
 #endif // __CLC_OPENCL_WORKITEM_GET_GLOBAL_SIZE_H__

diff  --git a/libclc/opencl/include/clc/opencl/workitem/get_group_id.h 
b/libclc/opencl/include/clc/opencl/workitem/get_group_id.h
index 3d0f51aeb8dc2..e3d8b07e4ad9a 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_group_id.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_group_id.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_DECL _CLC_OVERLOAD size_t get_group_id(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t get_group_id(uint dim);
 
 #endif // __CLC_OPENCL_WORKITEM_GET_GROUP_ID_H__

diff  --git a/libclc/opencl/include/clc/opencl/workitem/get_local_id.h 
b/libclc/opencl/include/clc/opencl/workitem/get_local_id.h
index 31fe9d2943f48..88fbad98dfb19 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_local_id.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_local_id.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_DECL _CLC_OVERLOAD size_t get_local_id(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t get_local_id(uint dim);
 
 #endif // __CLC_OPENCL_WORKITEM_GET_LOCAL_ID_H__

diff  --git a/libclc/opencl/include/clc/opencl/workitem/get_local_linear_id.h 
b/libclc/opencl/include/clc/opencl/workitem/get_local_linear_id.h
index 9a32aa46b8191..072318d1786f1 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_local_linear_id.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_local_linear_id.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_OVERLOAD _CLC_DECL size_t get_local_linear_id();
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t get_local_linear_id();
 
 #endif // __CLC_OPENCL_WORKITEM_GET_LOCAL_LINEAR_ID_H__

diff  --git a/libclc/opencl/include/clc/opencl/workitem/get_local_size.h 
b/libclc/opencl/include/clc/opencl/workitem/get_local_size.h
index c93a7a27bd7cf..49077afde34fd 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_local_size.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_local_size.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_DECL _CLC_OVERLOAD size_t get_local_size(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t get_local_size(uint dim);
 
 #endif // __CLC_OPENCL_WORKITEM_GET_LOCAL_SIZE_H__

diff  --git 
a/libclc/opencl/include/clc/opencl/workitem/get_max_sub_group_size.h 
b/libclc/opencl/include/clc/opencl/workitem/get_max_sub_group_size.h
index 140f22426ef6b..b12737618c64b 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_max_sub_group_size.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_max_sub_group_size.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_OVERLOAD _CLC_DECL uint get_max_sub_group_size();
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL uint get_max_sub_group_size();
 
 #endif // __CLC_OPENCL_WORKITEM_GET_MAX_SUB_GROUP_SIZE_H__

diff  --git a/libclc/opencl/include/clc/opencl/workitem/get_num_groups.h 
b/libclc/opencl/include/clc/opencl/workitem/get_num_groups.h
index 0c47a5ef462b3..29783169415ff 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_num_groups.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_num_groups.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_DECL _CLC_OVERLOAD size_t get_num_groups(uint dim);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL size_t get_num_groups(uint dim);
 
 #endif // __CLC_OPENCL_WORKITEM_GET_NUM_GROUPS_H__

diff  --git a/libclc/opencl/include/clc/opencl/workitem/get_num_sub_groups.h 
b/libclc/opencl/include/clc/opencl/workitem/get_num_sub_groups.h
index 5c72db0b40c72..f9fd2cddbf196 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_num_sub_groups.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_num_sub_groups.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_OVERLOAD _CLC_DECL uint get_num_sub_groups();
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL uint get_num_sub_groups();
 
 #endif // __CLC_OPENCL_WORKITEM_GET_NUM_SUB_GROUPS_H__

diff  --git a/libclc/opencl/include/clc/opencl/workitem/get_sub_group_id.h 
b/libclc/opencl/include/clc/opencl/workitem/get_sub_group_id.h
index 3dbf39b8cfbad..0a67c022a5131 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_sub_group_id.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_sub_group_id.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_OVERLOAD _CLC_DECL uint get_sub_group_id();
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL uint get_sub_group_id();
 
 #endif // __CLC_OPENCL_WORKITEM_GET_SUB_GROUP_ID_H__

diff  --git 
a/libclc/opencl/include/clc/opencl/workitem/get_sub_group_local_id.h 
b/libclc/opencl/include/clc/opencl/workitem/get_sub_group_local_id.h
index 7e139a857a7d7..37891d8f28304 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_sub_group_local_id.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_sub_group_local_id.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_OVERLOAD _CLC_DECL uint get_sub_group_local_id();
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL uint get_sub_group_local_id();
 
 #endif // __CLC_OPENCL_WORKITEM_GET_SUB_GROUP_LOCAL_ID_H__

diff  --git a/libclc/opencl/include/clc/opencl/workitem/get_sub_group_size.h 
b/libclc/opencl/include/clc/opencl/workitem/get_sub_group_size.h
index dd4f89da18a14..74e9b033fd07f 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_sub_group_size.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_sub_group_size.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_OVERLOAD _CLC_DECL uint get_sub_group_size();
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL uint get_sub_group_size();
 
 #endif // __CLC_OPENCL_WORKITEM_GET_SUB_GROUP_SIZE_H__

diff  --git a/libclc/opencl/include/clc/opencl/workitem/get_work_dim.h 
b/libclc/opencl/include/clc/opencl/workitem/get_work_dim.h
index c4c3c1b224a9a..344ffaa43e108 100644
--- a/libclc/opencl/include/clc/opencl/workitem/get_work_dim.h
+++ b/libclc/opencl/include/clc/opencl/workitem/get_work_dim.h
@@ -11,6 +11,6 @@
 
 #include <clc/opencl/opencl-base.h>
 
-_CLC_DECL _CLC_OVERLOAD uint get_work_dim(void);
+_CLC_OVERLOAD _CLC_CONST _CLC_DECL uint get_work_dim(void);
 
 #endif // __CLC_OPENCL_WORKITEM_GET_WORK_DIM_H__


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to