1 #ifndef cl_clang_storage_class_specifiers 2 #error Implementation requires cl_clang_storage_class_specifiers extension! 3 #endif 4 5 #pragma OPENCL EXTENSION cl_clang_storage_class_specifiers : enable 6 7 #ifdef cl_khr_fp64 8 #pragma OPENCL EXTENSION cl_khr_fp64 : enable 9 #endif 10 11 #ifdef cl_khr_fp16 12 #pragma OPENCL EXTENSION cl_khr_fp16 : enable 13 #endif 14 15 /* Function Attributes */ 16 #include <clc/clcfunc.h> 17 18 /* 6.1 Supported Data Types */ 19 #include <clc/clctypes.h> 20 21 /* 6.2.3 Explicit Conversions */ 22 #include <clc/convert.h> 23 24 /* 6.2.4.2 Reinterpreting Types Using as_type() and as_typen() */ 25 #include <clc/as_type.h> 26 27 /* 6.9 Preprocessor Directives and Macros */ 28 #include <clc/clcmacros.h> 29 30 /* 6.11.1 Work-Item Functions */ 31 #include <clc/workitem/get_global_size.h> 32 #include <clc/workitem/get_global_id.h> 33 #include <clc/workitem/get_local_size.h> 34 #include <clc/workitem/get_local_id.h> 35 #include <clc/workitem/get_num_groups.h> 36 #include <clc/workitem/get_group_id.h> 37 #include <clc/workitem/get_global_offset.h> 38 #include <clc/workitem/get_work_dim.h> 39 40 /* 6.11.2 Math Functions */ 41 #include <clc/math/acos.h> 42 #include <clc/math/acosh.h> 43 #include <clc/math/acospi.h> 44 #include <clc/math/asin.h> 45 #include <clc/math/asinh.h> 46 #include <clc/math/asinpi.h> 47 #include <clc/math/atan.h> 48 #include <clc/math/atan2.h> 49 #include <clc/math/atan2pi.h> 50 #include <clc/math/atanh.h> 51 #include <clc/math/atanpi.h> 52 #include <clc/math/cbrt.h> 53 #include <clc/math/copysign.h> 54 #include <clc/math/cos.h> 55 #include <clc/math/cosh.h> 56 #include <clc/math/cospi.h> 57 #include <clc/math/ceil.h> 58 #include <clc/math/erf.h> 59 #include <clc/math/erfc.h> 60 #include <clc/math/exp.h> 61 #include <clc/math/expm1.h> 62 #include <clc/math/exp10.h> 63 #include <clc/math/exp2.h> 64 #include <clc/math/fabs.h> 65 #include <clc/math/fdim.h> 66 #include <clc/math/floor.h> 67 #include <clc/math/fma.h> 68 #include <clc/math/fmax.h> 69 #include <clc/math/fmin.h> 70 #include <clc/math/fmod.h> 71 #include <clc/math/fract.h> 72 #include <clc/math/frexp.h> 73 #include <clc/math/half_cos.h> 74 #include <clc/math/half_divide.h> 75 #include <clc/math/half_exp.h> 76 #include <clc/math/half_exp10.h> 77 #include <clc/math/half_exp2.h> 78 #include <clc/math/half_log.h> 79 #include <clc/math/half_log10.h> 80 #include <clc/math/half_log2.h> 81 #include <clc/math/half_powr.h> 82 #include <clc/math/half_recip.h> 83 #include <clc/math/half_rsqrt.h> 84 #include <clc/math/half_sin.h> 85 #include <clc/math/half_sqrt.h> 86 #include <clc/math/half_tan.h> 87 #include <clc/math/hypot.h> 88 #include <clc/math/ilogb.h> 89 #include <clc/math/ldexp.h> 90 #include <clc/math/lgamma.h> 91 #include <clc/math/lgamma_r.h> 92 #include <clc/math/log.h> 93 #include <clc/math/log10.h> 94 #include <clc/math/log1p.h> 95 #include <clc/math/log2.h> 96 #include <clc/math/logb.h> 97 #include <clc/math/mad.h> 98 #include <clc/math/maxmag.h> 99 #include <clc/math/minmag.h> 100 #include <clc/math/modf.h> 101 #include <clc/math/nan.h> 102 #include <clc/math/nextafter.h> 103 #include <clc/math/pow.h> 104 #include <clc/math/pown.h> 105 #include <clc/math/powr.h> 106 #include <clc/math/remainder.h> 107 #include <clc/math/remquo.h> 108 #include <clc/math/rint.h> 109 #include <clc/math/rootn.h> 110 #include <clc/math/round.h> 111 #include <clc/math/sin.h> 112 #include <clc/math/sincos.h> 113 #include <clc/math/sinh.h> 114 #include <clc/math/sinpi.h> 115 #include <clc/math/sqrt.h> 116 #include <clc/math/tan.h> 117 #include <clc/math/tanh.h> 118 #include <clc/math/tanpi.h> 119 #include <clc/math/tgamma.h> 120 #include <clc/math/trunc.h> 121 #include <clc/math/native_cos.h> 122 #include <clc/math/native_divide.h> 123 #include <clc/math/native_exp.h> 124 #include <clc/math/native_exp10.h> 125 #include <clc/math/native_exp2.h> 126 #include <clc/math/native_log.h> 127 #include <clc/math/native_log10.h> 128 #include <clc/math/native_log2.h> 129 #include <clc/math/native_powr.h> 130 #include <clc/math/native_recip.h> 131 #include <clc/math/native_sin.h> 132 #include <clc/math/native_sqrt.h> 133 #include <clc/math/native_rsqrt.h> 134 #include <clc/math/native_tan.h> 135 #include <clc/math/rsqrt.h> 136 137 /* 6.11.2.1 Floating-point macros */ 138 #include <clc/float/definitions.h> 139 140 /* 6.11.3 Integer Functions */ 141 #include <clc/integer/abs.h> 142 #include <clc/integer/abs_diff.h> 143 #include <clc/integer/add_sat.h> 144 #include <clc/integer/clz.h> 145 #include <clc/integer/hadd.h> 146 #include <clc/integer/mad24.h> 147 #include <clc/integer/mad_hi.h> 148 #include <clc/integer/mad_sat.h> 149 #include <clc/integer/mul24.h> 150 #include <clc/integer/mul_hi.h> 151 #include <clc/integer/popcount.h> 152 #include <clc/integer/rhadd.h> 153 #include <clc/integer/rotate.h> 154 #include <clc/integer/sub_sat.h> 155 #include <clc/integer/upsample.h> 156 157 /* 6.11.3 Integer Definitions */ 158 #include <clc/integer/definitions.h> 159 160 /* 6.11.2 and 6.11.3 Shared Integer/Math Functions */ 161 #include <clc/shared/clamp.h> 162 #include <clc/shared/max.h> 163 #include <clc/shared/min.h> 164 #include <clc/shared/vload.h> 165 #include <clc/shared/vstore.h> 166 167 /* 6.11.4 Common Functions */ 168 #include <clc/common/degrees.h> 169 #include <clc/common/radians.h> 170 #include <clc/common/mix.h> 171 #include <clc/common/sign.h> 172 #include <clc/common/smoothstep.h> 173 #include <clc/common/step.h> 174 175 /* 6.11.5 Geometric Functions */ 176 #include <clc/geometric/cross.h> 177 #include <clc/geometric/distance.h> 178 #include <clc/geometric/dot.h> 179 #include <clc/geometric/fast_distance.h> 180 #include <clc/geometric/fast_length.h> 181 #include <clc/geometric/fast_normalize.h> 182 #include <clc/geometric/length.h> 183 #include <clc/geometric/normalize.h> 184 185 /* 6.11.6 Relational Functions */ 186 #include <clc/relational/all.h> 187 #include <clc/relational/any.h> 188 #include <clc/relational/bitselect.h> 189 #include <clc/relational/isequal.h> 190 #include <clc/relational/isfinite.h> 191 #include <clc/relational/isgreater.h> 192 #include <clc/relational/isgreaterequal.h> 193 #include <clc/relational/isinf.h> 194 #include <clc/relational/isless.h> 195 #include <clc/relational/islessequal.h> 196 #include <clc/relational/islessgreater.h> 197 #include <clc/relational/isnan.h> 198 #include <clc/relational/isnormal.h> 199 #include <clc/relational/isnotequal.h> 200 #include <clc/relational/isordered.h> 201 #include <clc/relational/isunordered.h> 202 #include <clc/relational/select.h> 203 #include <clc/relational/signbit.h> 204 205 /* 6.11.8 Synchronization Functions */ 206 #include <clc/synchronization/cl_mem_fence_flags.h> 207 #include <clc/synchronization/barrier.h> 208 209 /* 6.11.9 Explicit Memory Fence Functions */ 210 #include <clc/explicit_fence/explicit_memory_fence.h> 211 212 /* 6.11.10 Async Copy and Prefetch Functions */ 213 #include <clc/async/async_work_group_copy.h> 214 #include <clc/async/async_work_group_strided_copy.h> 215 #include <clc/async/prefetch.h> 216 #include <clc/async/wait_group_events.h> 217 218 /* 6.11.11 Atomic Functions */ 219 #include <clc/atomic/atomic_add.h> 220 #include <clc/atomic/atomic_and.h> 221 #include <clc/atomic/atomic_cmpxchg.h> 222 #include <clc/atomic/atomic_dec.h> 223 #include <clc/atomic/atomic_inc.h> 224 #include <clc/atomic/atomic_max.h> 225 #include <clc/atomic/atomic_min.h> 226 #include <clc/atomic/atomic_or.h> 227 #include <clc/atomic/atomic_sub.h> 228 #include <clc/atomic/atomic_xchg.h> 229 #include <clc/atomic/atomic_xor.h> 230 231 /* cl_khr_global_int32_base_atomics Extension Functions */ 232 #include <clc/cl_khr_global_int32_base_atomics/atom_add.h> 233 #include <clc/cl_khr_global_int32_base_atomics/atom_cmpxchg.h> 234 #include <clc/cl_khr_global_int32_base_atomics/atom_dec.h> 235 #include <clc/cl_khr_global_int32_base_atomics/atom_inc.h> 236 #include <clc/cl_khr_global_int32_base_atomics/atom_sub.h> 237 #include <clc/cl_khr_global_int32_base_atomics/atom_xchg.h> 238 239 /* cl_khr_global_int32_extended_atomics Extension Functions */ 240 #include <clc/cl_khr_global_int32_extended_atomics/atom_and.h> 241 #include <clc/cl_khr_global_int32_extended_atomics/atom_max.h> 242 #include <clc/cl_khr_global_int32_extended_atomics/atom_min.h> 243 #include <clc/cl_khr_global_int32_extended_atomics/atom_or.h> 244 #include <clc/cl_khr_global_int32_extended_atomics/atom_xor.h> 245 246 /* cl_khr_local_int32_base_atomics Extension Functions */ 247 #include <clc/cl_khr_local_int32_base_atomics/atom_add.h> 248 #include <clc/cl_khr_local_int32_base_atomics/atom_cmpxchg.h> 249 #include <clc/cl_khr_local_int32_base_atomics/atom_dec.h> 250 #include <clc/cl_khr_local_int32_base_atomics/atom_inc.h> 251 #include <clc/cl_khr_local_int32_base_atomics/atom_sub.h> 252 #include <clc/cl_khr_local_int32_base_atomics/atom_xchg.h> 253 254 /* cl_khr_local_int32_extended_atomics Extension Functions */ 255 #include <clc/cl_khr_local_int32_extended_atomics/atom_and.h> 256 #include <clc/cl_khr_local_int32_extended_atomics/atom_max.h> 257 #include <clc/cl_khr_local_int32_extended_atomics/atom_min.h> 258 #include <clc/cl_khr_local_int32_extended_atomics/atom_or.h> 259 #include <clc/cl_khr_local_int32_extended_atomics/atom_xor.h> 260 261 /* cl_khr_int64_base_atomics Extension Functions */ 262 #ifdef cl_khr_int64_base_atomics 263 #include <clc/cl_khr_int64_base_atomics/atom_add.h> 264 #include <clc/cl_khr_int64_base_atomics/atom_cmpxchg.h> 265 #include <clc/cl_khr_int64_base_atomics/atom_dec.h> 266 #include <clc/cl_khr_int64_base_atomics/atom_inc.h> 267 #include <clc/cl_khr_int64_base_atomics/atom_sub.h> 268 #include <clc/cl_khr_int64_base_atomics/atom_xchg.h> 269 #endif 270 271 /* cl_khr_int64_extended_atomics Extension Functions */ 272 #ifdef cl_khr_int64_base_atomics 273 #include <clc/cl_khr_int64_extended_atomics/atom_and.h> 274 #include <clc/cl_khr_int64_extended_atomics/atom_max.h> 275 #include <clc/cl_khr_int64_extended_atomics/atom_min.h> 276 #include <clc/cl_khr_int64_extended_atomics/atom_or.h> 277 #include <clc/cl_khr_int64_extended_atomics/atom_xor.h> 278 #endif 279 280 /* 6.12.12 Miscellaneous Vector Functions */ 281 #include <clc/misc/shuffle.h> 282 #include <clc/misc/shuffle2.h> 283 284 /* 6.11.13 Image Read and Write Functions */ 285 #include <clc/image/image_defines.h> 286 #include <clc/image/image.h> 287 288 #pragma OPENCL EXTENSION all : disable 289