diff --git a/libclc/generic/include/clc/as_type.h b/libclc/generic/include/clc/as_type.h new file mode 100644 index 0000000000000000000000000000000000000000..0bb9ee2e8313b59698965b20f10b36d3e22fe585 --- /dev/null +++ b/libclc/generic/include/clc/as_type.h @@ -0,0 +1,68 @@ +#define as_char(x) __builtin_astype(x, char) +#define as_uchar(x) __builtin_astype(x, uchar) +#define as_short(x) __builtin_astype(x, short) +#define as_ushort(x) __builtin_astype(x, ushort) +#define as_int(x) __builtin_astype(x, int) +#define as_uint(x) __builtin_astype(x, uint) +#define as_long(x) __builtin_astype(x, long) +#define as_ulong(x) __builtin_astype(x, ulong) +#define as_float(x) __builtin_astype(x, float) + +#define as_char2(x) __builtin_astype(x, char2) +#define as_uchar2(x) __builtin_astype(x, uchar2) +#define as_short2(x) __builtin_astype(x, short2) +#define as_ushort2(x) __builtin_astype(x, ushort2) +#define as_int2(x) __builtin_astype(x, int2) +#define as_uint2(x) __builtin_astype(x, uint2) +#define as_long2(x) __builtin_astype(x, long2) +#define as_ulong2(x) __builtin_astype(x, ulong2) +#define as_float2(x) __builtin_astype(x, float2) + +#define as_char3(x) __builtin_astype(x, char3) +#define as_uchar3(x) __builtin_astype(x, uchar3) +#define as_short3(x) __builtin_astype(x, short3) +#define as_ushort3(x) __builtin_astype(x, ushort3) +#define as_int3(x) __builtin_astype(x, int3) +#define as_uint3(x) __builtin_astype(x, uint3) +#define as_long3(x) __builtin_astype(x, long3) +#define as_ulong3(x) __builtin_astype(x, ulong3) +#define as_float3(x) __builtin_astype(x, float3) + +#define as_char4(x) __builtin_astype(x, char4) +#define as_uchar4(x) __builtin_astype(x, uchar4) +#define as_short4(x) __builtin_astype(x, short4) +#define as_ushort4(x) __builtin_astype(x, ushort4) +#define as_int4(x) __builtin_astype(x, int4) +#define as_uint4(x) __builtin_astype(x, uint4) +#define as_long4(x) __builtin_astype(x, long4) +#define as_ulong4(x) __builtin_astype(x, ulong4) +#define as_float4(x) __builtin_astype(x, float4) + +#define as_char8(x) __builtin_astype(x, char8) +#define as_uchar8(x) __builtin_astype(x, uchar8) +#define as_short8(x) __builtin_astype(x, short8) +#define as_ushort8(x) __builtin_astype(x, ushort8) +#define as_int8(x) __builtin_astype(x, int8) +#define as_uint8(x) __builtin_astype(x, uint8) +#define as_long8(x) __builtin_astype(x, long8) +#define as_ulong8(x) __builtin_astype(x, ulong8) +#define as_float8(x) __builtin_astype(x, float8) + +#define as_char16(x) __builtin_astype(x, char16) +#define as_uchar16(x) __builtin_astype(x, uchar16) +#define as_short16(x) __builtin_astype(x, short16) +#define as_ushort16(x) __builtin_astype(x, ushort16) +#define as_int16(x) __builtin_astype(x, int16) +#define as_uint16(x) __builtin_astype(x, uint16) +#define as_long16(x) __builtin_astype(x, long16) +#define as_ulong16(x) __builtin_astype(x, ulong16) +#define as_float16(x) __builtin_astype(x, float16) + +#ifdef cl_khr_fp64 +#define as_double(x) __builtin_astype(x, double) +#define as_double2(x) __builtin_astype(x, double2) +#define as_double3(x) __builtin_astype(x, double3) +#define as_double4(x) __builtin_astype(x, double4) +#define as_double8(x) __builtin_astype(x, double8) +#define as_double16(x) __builtin_astype(x, double16) +#endif diff --git a/libclc/generic/include/clc/atomic/atomic_add.h b/libclc/generic/include/clc/atomic/atomic_add.h new file mode 100644 index 0000000000000000000000000000000000000000..66d897805ca4cee0779211217a4ad42f9013ef54 --- /dev/null +++ b/libclc/generic/include/clc/atomic/atomic_add.h @@ -0,0 +1,3 @@ +#define __CLC_FUNCTION atomic_add +#include <clc/atomic/atomic_decl.inc> +#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/atomic/atomic_dec.h b/libclc/generic/include/clc/atomic/atomic_dec.h new file mode 100644 index 0000000000000000000000000000000000000000..621905f21d3e7a9f55a2ce9d3f59eba6e988de88 --- /dev/null +++ b/libclc/generic/include/clc/atomic/atomic_dec.h @@ -0,0 +1 @@ +#define atomic_dec(p) atomic_sub(p, 1); diff --git a/libclc/generic/include/clc/atomic/atomic_decl.inc b/libclc/generic/include/clc/atomic/atomic_decl.inc new file mode 100644 index 0000000000000000000000000000000000000000..03d01aa045e30c86576cb403c84afd1b6abe3b98 --- /dev/null +++ b/libclc/generic/include/clc/atomic/atomic_decl.inc @@ -0,0 +1,10 @@ + +#define __CLC_DECLARE_ATOMIC(ADDRSPACE, TYPE) \ + _CLC_OVERLOAD _CLC_DECL TYPE __CLC_FUNCTION (volatile ADDRSPACE TYPE *, TYPE); + +#define __CLC_DECLARE_ATOMIC_ADDRSPACE(TYPE) \ + __CLC_DECLARE_ATOMIC(global, TYPE); \ + __CLC_DECLARE_ATOMIC(local, TYPE); + +__CLC_DECLARE_ATOMIC_ADDRSPACE(int); +__CLC_DECLARE_ATOMIC_ADDRSPACE(uint); diff --git a/libclc/generic/include/clc/atomic/atomic_inc.h b/libclc/generic/include/clc/atomic/atomic_inc.h new file mode 100644 index 0000000000000000000000000000000000000000..2137391980418ae3ddc667907022b623d896cc00 --- /dev/null +++ b/libclc/generic/include/clc/atomic/atomic_inc.h @@ -0,0 +1 @@ +#define atomic_inc(p) atomic_add(p, 1); diff --git a/libclc/generic/include/clc/atomic/atomic_sub.h b/libclc/generic/include/clc/atomic/atomic_sub.h new file mode 100644 index 0000000000000000000000000000000000000000..576a3ab1f395f91af324152e73e86e279956a40c --- /dev/null +++ b/libclc/generic/include/clc/atomic/atomic_sub.h @@ -0,0 +1,3 @@ +#define __CLC_FUNCTION atomic_sub +#include <clc/atomic/atomic_decl.inc> +#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_add.h b/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_add.h new file mode 100644 index 0000000000000000000000000000000000000000..9740b3ddab63183c10cbc4a931ebeec0792373ac --- /dev/null +++ b/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_add.h @@ -0,0 +1,2 @@ +_CLC_OVERLOAD _CLC_DECL int atom_add(global int *p, int val); +_CLC_OVERLOAD _CLC_DECL unsigned int atom_add(global unsigned int *p, unsigned int val); diff --git a/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_dec.h b/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_dec.h new file mode 100644 index 0000000000000000000000000000000000000000..bbc872ce0527e37713dcf3c55b9fc4c82846b774 --- /dev/null +++ b/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_dec.h @@ -0,0 +1,2 @@ +_CLC_OVERLOAD _CLC_DECL int atom_dec(global int *p); +_CLC_OVERLOAD _CLC_DECL unsigned int atom_dec(global unsigned int *p); diff --git a/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_inc.h b/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_inc.h new file mode 100644 index 0000000000000000000000000000000000000000..050747c7940342a1043a6228ccdc73aa5f9f46ca --- /dev/null +++ b/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_inc.h @@ -0,0 +1,2 @@ +_CLC_OVERLOAD _CLC_DECL int atom_inc(global int *p); +_CLC_OVERLOAD _CLC_DECL unsigned int atom_inc(global unsigned int *p); diff --git a/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_sub.h b/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_sub.h new file mode 100644 index 0000000000000000000000000000000000000000..c435c726798ced2aa6a70afa150cd4d7b8cedb75 --- /dev/null +++ b/libclc/generic/include/clc/cl_khr_global_int32_base_atomics/atom_sub.h @@ -0,0 +1,2 @@ +_CLC_OVERLOAD _CLC_DECL int atom_sub(global int *p, int val); +_CLC_OVERLOAD _CLC_DECL unsigned int atom_sub(global unsigned int *p, unsigned int val); diff --git a/libclc/generic/include/clc/clc.h b/libclc/generic/include/clc/clc.h new file mode 100644 index 0000000000000000000000000000000000000000..9815c56e3b5a03dc6bae72817d386833ddba14f8 --- /dev/null +++ b/libclc/generic/include/clc/clc.h @@ -0,0 +1,146 @@ +#ifndef cl_clang_storage_class_specifiers +#error Implementation requires cl_clang_storage_class_specifiers extension! +#endif + +#pragma OPENCL EXTENSION cl_clang_storage_class_specifiers : enable + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +/* Function Attributes */ +#include <clc/clcfunc.h> + +/* 6.1 Supported Data Types */ +#include <clc/clctypes.h> + +/* 6.2.3 Explicit Conversions */ +#include <clc/convert.h> + +/* 6.2.4.2 Reinterpreting Types Using as_type() and as_typen() */ +#include <clc/as_type.h> + +/* 6.9 Preprocessor Directives and Macros */ +#include <clc/clcversion.h> + +/* 6.11.1 Work-Item Functions */ +#include <clc/workitem/get_global_size.h> +#include <clc/workitem/get_global_id.h> +#include <clc/workitem/get_local_size.h> +#include <clc/workitem/get_local_id.h> +#include <clc/workitem/get_num_groups.h> +#include <clc/workitem/get_group_id.h> + +/* 6.11.2 Math Functions */ +#include <clc/math/atan.h> +#include <clc/math/atan2.h> +#include <clc/math/copysign.h> +#include <clc/math/cos.h> +#include <clc/math/ceil.h> +#include <clc/math/exp.h> +#include <clc/math/exp10.h> +#include <clc/math/exp2.h> +#include <clc/math/fabs.h> +#include <clc/math/floor.h> +#include <clc/math/fma.h> +#include <clc/math/fmax.h> +#include <clc/math/fmin.h> +#include <clc/math/hypot.h> +#include <clc/math/log.h> +#include <clc/math/log2.h> +#include <clc/math/mad.h> +#include <clc/math/mix.h> +#include <clc/math/nextafter.h> +#include <clc/math/pow.h> +#include <clc/math/pown.h> +#include <clc/math/rint.h> +#include <clc/math/round.h> +#include <clc/math/sin.h> +#include <clc/math/sincos.h> +#include <clc/math/sqrt.h> +#include <clc/math/trunc.h> +#include <clc/math/native_cos.h> +#include <clc/math/native_divide.h> +#include <clc/math/native_exp.h> +#include <clc/math/native_exp10.h> +#include <clc/math/native_exp2.h> +#include <clc/math/native_log.h> +#include <clc/math/native_log2.h> +#include <clc/math/native_powr.h> +#include <clc/math/native_sin.h> +#include <clc/math/native_sqrt.h> +#include <clc/math/rsqrt.h> + +/* 6.11.2.1 Floating-point macros */ +#include <clc/float/definitions.h> + +/* 6.11.3 Integer Functions */ +#include <clc/integer/abs.h> +#include <clc/integer/abs_diff.h> +#include <clc/integer/add_sat.h> +#include <clc/integer/clz.h> +#include <clc/integer/hadd.h> +#include <clc/integer/mad24.h> +#include <clc/integer/mad_hi.h> +#include <clc/integer/mul24.h> +#include <clc/integer/mul_hi.h> +#include <clc/integer/rhadd.h> +#include <clc/integer/rotate.h> +#include <clc/integer/sub_sat.h> +#include <clc/integer/upsample.h> + +/* 6.11.3 Integer Definitions */ +#include <clc/integer/definitions.h> + +/* 6.11.2 and 6.11.3 Shared Integer/Math Functions */ +#include <clc/shared/clamp.h> +#include <clc/shared/max.h> +#include <clc/shared/min.h> +#include <clc/shared/vload.h> +#include <clc/shared/vstore.h> + +/* 6.11.4 Common Functions */ +#include <clc/common/sign.h> + +/* 6.11.5 Geometric Functions */ +#include <clc/geometric/cross.h> +#include <clc/geometric/dot.h> +#include <clc/geometric/length.h> +#include <clc/geometric/normalize.h> + +/* 6.11.6 Relational Functions */ +#include <clc/relational/all.h> +#include <clc/relational/any.h> +#include <clc/relational/bitselect.h> +#include <clc/relational/isequal.h> +#include <clc/relational/isgreater.h> +#include <clc/relational/isgreaterequal.h> +#include <clc/relational/isless.h> +#include <clc/relational/islessequal.h> +#include <clc/relational/isnan.h> +#include <clc/relational/isnotequal.h> +#include <clc/relational/select.h> +#include <clc/relational/signbit.h> + +/* 6.11.8 Synchronization Functions */ +#include <clc/synchronization/cl_mem_fence_flags.h> +#include <clc/synchronization/barrier.h> + +/* 6.11.11 Atomic Functions */ +#include <clc/atomic/atomic_add.h> +#include <clc/atomic/atomic_dec.h> +#include <clc/atomic/atomic_inc.h> +#include <clc/atomic/atomic_sub.h> + +/* cl_khr_global_int32_base_atomics Extension Functions */ +#include <clc/cl_khr_global_int32_base_atomics/atom_add.h> +#include <clc/cl_khr_global_int32_base_atomics/atom_dec.h> +#include <clc/cl_khr_global_int32_base_atomics/atom_inc.h> +#include <clc/cl_khr_global_int32_base_atomics/atom_sub.h> + +/* libclc internal defintions */ +#ifdef __CLC_INTERNAL +#include <math/clc_nextafter.h> +#endif + +#pragma OPENCL EXTENSION all : disable diff --git a/libclc/generic/include/clc/clcfunc.h b/libclc/generic/include/clc/clcfunc.h new file mode 100644 index 0000000000000000000000000000000000000000..5f166c5a4143e1ac3a97b00285a7a714a04bd189 --- /dev/null +++ b/libclc/generic/include/clc/clcfunc.h @@ -0,0 +1,4 @@ +#define _CLC_OVERLOAD __attribute__((overloadable)) +#define _CLC_DECL +#define _CLC_DEF __attribute__((always_inline)) +#define _CLC_INLINE __attribute__((always_inline)) inline diff --git a/libclc/generic/include/clc/clctypes.h b/libclc/generic/include/clc/clctypes.h new file mode 100644 index 0000000000000000000000000000000000000000..ca1372d0892720b7949c667ca2c05657d76556b3 --- /dev/null +++ b/libclc/generic/include/clc/clctypes.h @@ -0,0 +1,86 @@ +/* 6.1.1 Built-in Scalar Data Types */ + +#include <stddef.h> + +typedef unsigned char uchar; +typedef unsigned short ushort; +typedef unsigned int uint; +typedef unsigned long ulong; + +#define __stdint_join3(a,b,c) a ## b ## c + +#define __intn_t(n) __stdint_join3(__INT, n, _TYPE__) +#define __uintn_t(n) __stdint_join3(unsigned __INT, n, _TYPE__) + +typedef __intn_t(__INTPTR_WIDTH__) intptr_t; +typedef __uintn_t(__INTPTR_WIDTH__) uintptr_t; + +#undef __uintn_t +#undef __intn_t +#undef __stdint_join3 + +/* 6.1.2 Built-in Vector Data Types */ + +typedef __attribute__((ext_vector_type(2))) char char2; +typedef __attribute__((ext_vector_type(3))) char char3; +typedef __attribute__((ext_vector_type(4))) char char4; +typedef __attribute__((ext_vector_type(8))) char char8; +typedef __attribute__((ext_vector_type(16))) char char16; + +typedef __attribute__((ext_vector_type(2))) uchar uchar2; +typedef __attribute__((ext_vector_type(3))) uchar uchar3; +typedef __attribute__((ext_vector_type(4))) uchar uchar4; +typedef __attribute__((ext_vector_type(8))) uchar uchar8; +typedef __attribute__((ext_vector_type(16))) uchar uchar16; + +typedef __attribute__((ext_vector_type(2))) short short2; +typedef __attribute__((ext_vector_type(3))) short short3; +typedef __attribute__((ext_vector_type(4))) short short4; +typedef __attribute__((ext_vector_type(8))) short short8; +typedef __attribute__((ext_vector_type(16))) short short16; + +typedef __attribute__((ext_vector_type(2))) ushort ushort2; +typedef __attribute__((ext_vector_type(3))) ushort ushort3; +typedef __attribute__((ext_vector_type(4))) ushort ushort4; +typedef __attribute__((ext_vector_type(8))) ushort ushort8; +typedef __attribute__((ext_vector_type(16))) ushort ushort16; + +typedef __attribute__((ext_vector_type(2))) int int2; +typedef __attribute__((ext_vector_type(3))) int int3; +typedef __attribute__((ext_vector_type(4))) int int4; +typedef __attribute__((ext_vector_type(8))) int int8; +typedef __attribute__((ext_vector_type(16))) int int16; + +typedef __attribute__((ext_vector_type(2))) uint uint2; +typedef __attribute__((ext_vector_type(3))) uint uint3; +typedef __attribute__((ext_vector_type(4))) uint uint4; +typedef __attribute__((ext_vector_type(8))) uint uint8; +typedef __attribute__((ext_vector_type(16))) uint uint16; + +typedef __attribute__((ext_vector_type(2))) long long2; +typedef __attribute__((ext_vector_type(3))) long long3; +typedef __attribute__((ext_vector_type(4))) long long4; +typedef __attribute__((ext_vector_type(8))) long long8; +typedef __attribute__((ext_vector_type(16))) long long16; + +typedef __attribute__((ext_vector_type(2))) ulong ulong2; +typedef __attribute__((ext_vector_type(3))) ulong ulong3; +typedef __attribute__((ext_vector_type(4))) ulong ulong4; +typedef __attribute__((ext_vector_type(8))) ulong ulong8; +typedef __attribute__((ext_vector_type(16))) ulong ulong16; + +typedef __attribute__((ext_vector_type(2))) float float2; +typedef __attribute__((ext_vector_type(3))) float float3; +typedef __attribute__((ext_vector_type(4))) float float4; +typedef __attribute__((ext_vector_type(8))) float float8; +typedef __attribute__((ext_vector_type(16))) float float16; + +/* 9.3 Double Precision Floating-Point */ + +#ifdef cl_khr_fp64 +typedef __attribute__((ext_vector_type(2))) double double2; +typedef __attribute__((ext_vector_type(3))) double double3; +typedef __attribute__((ext_vector_type(4))) double double4; +typedef __attribute__((ext_vector_type(8))) double double8; +typedef __attribute__((ext_vector_type(16))) double double16; +#endif diff --git a/libclc/generic/include/clc/clcversion.h b/libclc/generic/include/clc/clcversion.h new file mode 100644 index 0000000000000000000000000000000000000000..57c989e3b713bb70530d99ff66a511b0ad6a647b --- /dev/null +++ b/libclc/generic/include/clc/clcversion.h @@ -0,0 +1,8 @@ +#if __OPENCL_VERSION__ >= 110 +#define CLC_VERSION_1_0 100 +#define CLC_VERSION_1_1 110 +#endif + +#if __OPENCL_VERSION__ >= 120 +#define CLC_VERSION_1_2 120 +#endif diff --git a/libclc/generic/include/clc/common/sign.h b/libclc/generic/include/clc/common/sign.h new file mode 100644 index 0000000000000000000000000000000000000000..fa9aa096541f19e426687dcb80e5b279fcf690c2 --- /dev/null +++ b/libclc/generic/include/clc/common/sign.h @@ -0,0 +1,5 @@ +#define __CLC_FUNCTION sign +#define __CLC_BODY <clc/math/unary_decl.inc> +#include <clc/math/gentype.inc> +#undef __CLC_FUNCTION +#undef __CLC_BODY diff --git a/libclc/generic/include/clc/convert.h b/libclc/generic/include/clc/convert.h new file mode 100644 index 0000000000000000000000000000000000000000..f0ba796864d4dd6645582c802a3128f250ca46ed --- /dev/null +++ b/libclc/generic/include/clc/convert.h @@ -0,0 +1,60 @@ +#define _CLC_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \ + _CLC_OVERLOAD _CLC_DECL TO_TYPE convert_##TO_TYPE##SUFFIX(FROM_TYPE x); + +#define _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \ + _CLC_CONVERT_DECL(FROM_TYPE, TO_TYPE, SUFFIX) \ + _CLC_CONVERT_DECL(FROM_TYPE##2, TO_TYPE##2, SUFFIX) \ + _CLC_CONVERT_DECL(FROM_TYPE##3, TO_TYPE##3, SUFFIX) \ + _CLC_CONVERT_DECL(FROM_TYPE##4, TO_TYPE##4, SUFFIX) \ + _CLC_CONVERT_DECL(FROM_TYPE##8, TO_TYPE##8, SUFFIX) \ + _CLC_CONVERT_DECL(FROM_TYPE##16, TO_TYPE##16, SUFFIX) + +#define _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \ + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, char, SUFFIX) \ + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, uchar, SUFFIX) \ + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, int, SUFFIX) \ + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, uint, SUFFIX) \ + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, short, SUFFIX) \ + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, ushort, SUFFIX) \ + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, long, SUFFIX) \ + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, ulong, SUFFIX) \ + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, float, SUFFIX) + +#ifdef cl_khr_fp64 +#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \ + _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) \ + _CLC_VECTOR_CONVERT_DECL(FROM_TYPE, double, SUFFIX) +#else +#define _CLC_VECTOR_CONVERT_FROM(FROM_TYPE, SUFFIX) \ + _CLC_VECTOR_CONVERT_FROM1(FROM_TYPE, SUFFIX) +#endif + +#define _CLC_VECTOR_CONVERT_TO1(SUFFIX) \ + _CLC_VECTOR_CONVERT_FROM(char, SUFFIX) \ + _CLC_VECTOR_CONVERT_FROM(uchar, SUFFIX) \ + _CLC_VECTOR_CONVERT_FROM(int, SUFFIX) \ + _CLC_VECTOR_CONVERT_FROM(uint, SUFFIX) \ + _CLC_VECTOR_CONVERT_FROM(short, SUFFIX) \ + _CLC_VECTOR_CONVERT_FROM(ushort, SUFFIX) \ + _CLC_VECTOR_CONVERT_FROM(long, SUFFIX) \ + _CLC_VECTOR_CONVERT_FROM(ulong, SUFFIX) \ + _CLC_VECTOR_CONVERT_FROM(float, SUFFIX) + +#ifdef cl_khr_fp64 +#define _CLC_VECTOR_CONVERT_TO(SUFFIX) \ + _CLC_VECTOR_CONVERT_TO1(SUFFIX) \ + _CLC_VECTOR_CONVERT_FROM(double, SUFFIX) +#else +#define _CLC_VECTOR_CONVERT_TO(SUFFIX) \ + _CLC_VECTOR_CONVERT_TO1(SUFFIX) +#endif + +#define _CLC_VECTOR_CONVERT_TO_SUFFIX(ROUND) \ + _CLC_VECTOR_CONVERT_TO(_sat##ROUND) \ + _CLC_VECTOR_CONVERT_TO(ROUND) + +_CLC_VECTOR_CONVERT_TO_SUFFIX(_rtn) +_CLC_VECTOR_CONVERT_TO_SUFFIX(_rte) +_CLC_VECTOR_CONVERT_TO_SUFFIX(_rtz) +_CLC_VECTOR_CONVERT_TO_SUFFIX(_rtp) +_CLC_VECTOR_CONVERT_TO_SUFFIX() diff --git a/libclc/generic/include/clc/float/definitions.h b/libclc/generic/include/clc/float/definitions.h new file mode 100644 index 0000000000000000000000000000000000000000..329b6238c3f494c224c9d03f68362085acab3f27 --- /dev/null +++ b/libclc/generic/include/clc/float/definitions.h @@ -0,0 +1,74 @@ +#define MAXFLOAT 0x1.fffffep127f +#define HUGE_VALF __builtin_huge_valf() +#define INFINITY __builtin_inff() +#define NAN __builtin_nanf("") + +#define FLT_DIG 6 +#define FLT_MANT_DIG 24 +#define FLT_MAX_10_EXP +38 +#define FLT_MAX_EXP +128 +#define FLT_MIN_10_EXP -37 +#define FLT_MIN_EXP -125 +#define FLT_RADIX 2 +#define FLT_MAX MAXFLOAT +#define FLT_MIN 0x1.0p-126f +#define FLT_EPSILON 0x1.0p-23f + +#define M_E_F 0x1.5bf0a8p+1f +#define M_LOG2E_F 0x1.715476p+0f +#define M_LOG10E_F 0x1.bcb7b2p-2f +#define M_LN2_F 0x1.62e430p-1f +#define M_LN10_F 0x1.26bb1cp+1f +#define M_PI_F 0x1.921fb6p+1f +#define M_PI_2_F 0x1.921fb6p+0f +#define M_PI_4_F 0x1.921fb6p-1f +#define M_1_PI_F 0x1.45f306p-2f +#define M_2_PI_F 0x1.45f306p-1f +#define M_2_SQRTPI_F 0x1.20dd76p+0f +#define M_SQRT2_F 0x1.6a09e6p+0f +#define M_SQRT1_2_F 0x1.6a09e6p-1f + +#ifdef cl_khr_fp64 + +#define HUGE_VAL __builtin_huge_val() + +#define DBL_DIG 15 +#define DBL_MANT_DIG 53 +#define DBL_MAX_10_EXP +308 +#define DBL_MAX_EXP +1024 +#define DBL_MIN_10_EXP -307 +#define DBL_MIN_EXP -1021 +#define DBL_MAX 0x1.fffffffffffffp1023 +#define DBL_MIN 0x1.0p-1022 +#define DBL_EPSILON 0x1.0p-52 + +#define M_E 0x1.5bf0a8b145769p+1 +#define M_LOG2E 0x1.71547652b82fep+0 +#define M_LOG10E 0x1.bcb7b1526e50ep-2 +#define M_LN2 0x1.62e42fefa39efp-1 +#define M_LN10 0x1.26bb1bbb55516p+1 +#define M_PI 0x1.921fb54442d18p+1 +#define M_PI_2 0x1.921fb54442d18p+0 +#define M_PI_4 0x1.921fb54442d18p-1 +#define M_1_PI 0x1.45f306dc9c883p-2 +#define M_2_PI 0x1.45f306dc9c883p-1 +#define M_2_SQRTPI 0x1.20dd750429b6dp+0 +#define M_SQRT2 0x1.6a09e667f3bcdp+0 +#define M_SQRT1_2 0x1.6a09e667f3bcdp-1 + +#endif + +#ifdef cl_khr_fp16 + +#if __OPENCL_VERSION__ >= 120 + +#define HALF_DIG 3 +#define HALF_MANT_DIG 11 +#define HALF_MAX_10_EXP +4 +#define HALF_MAX_EXP +16 +#define HALF_MIN_10_EXP -4 +#define HALF_MIN_EXP -13 + +#endif + +#endif diff --git a/libclc/generic/include/clc/geometric/cross.h b/libclc/generic/include/clc/geometric/cross.h new file mode 100644 index 0000000000000000000000000000000000000000..eee0cc81bb924ae773240aaf987e410853a9358d --- /dev/null +++ b/libclc/generic/include/clc/geometric/cross.h @@ -0,0 +1,7 @@ +_CLC_OVERLOAD _CLC_DECL float3 cross(float3 p0, float3 p1); +_CLC_OVERLOAD _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); +#endif diff --git a/libclc/generic/include/clc/geometric/distance.h b/libclc/generic/include/clc/geometric/distance.h new file mode 100644 index 0000000000000000000000000000000000000000..3e91332d78380c10730a9614e85c1753f0b16d29 --- /dev/null +++ b/libclc/generic/include/clc/geometric/distance.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/geometric/distance.inc> +#include <clc/geometric/floatn.inc> diff --git a/libclc/generic/include/clc/geometric/dot.h b/libclc/generic/include/clc/geometric/dot.h new file mode 100644 index 0000000000000000000000000000000000000000..7f65fed9760d422ed2af5b520e78c8635a002951 --- /dev/null +++ b/libclc/generic/include/clc/geometric/dot.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/geometric/dot.inc> +#include <clc/geometric/floatn.inc> diff --git a/libclc/generic/include/clc/geometric/dot.inc b/libclc/generic/include/clc/geometric/dot.inc new file mode 100644 index 0000000000000000000000000000000000000000..34245e2935a47337edba02582bfce70e990d08a7 --- /dev/null +++ b/libclc/generic/include/clc/geometric/dot.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_FLOAT dot(__CLC_FLOATN p0, __CLC_FLOATN p1); diff --git a/libclc/generic/include/clc/geometric/floatn.inc b/libclc/generic/include/clc/geometric/floatn.inc new file mode 100644 index 0000000000000000000000000000000000000000..fb7a9ae601cd3ba0183f50e9bee71ed1f308ae29 --- /dev/null +++ b/libclc/generic/include/clc/geometric/floatn.inc @@ -0,0 +1,45 @@ +#define __CLC_FLOAT float + +#define __CLC_FLOATN float +#include __CLC_BODY +#undef __CLC_FLOATN + +#define __CLC_FLOATN float2 +#include __CLC_BODY +#undef __CLC_FLOATN + +#define __CLC_FLOATN float3 +#include __CLC_BODY +#undef __CLC_FLOATN + +#define __CLC_FLOATN float4 +#include __CLC_BODY +#undef __CLC_FLOATN + +#undef __CLC_FLOAT + +#ifdef cl_khr_fp64 + +#define __CLC_FLOAT double + +#define __CLC_FLOATN double +#include __CLC_BODY +#undef __CLC_FLOATN + +#define __CLC_FLOATN double2 +#include __CLC_BODY +#undef __CLC_FLOATN + +#define __CLC_FLOATN double3 +#include __CLC_BODY +#undef __CLC_FLOATN + +#define __CLC_FLOATN double4 +#include __CLC_BODY +#undef __CLC_FLOATN + +#undef __CLC_FLOAT + +#endif + +#undef __CLC_BODY diff --git a/libclc/generic/include/clc/geometric/length.h b/libclc/generic/include/clc/geometric/length.h new file mode 100644 index 0000000000000000000000000000000000000000..cb992b9bc72ec79b699100a59a8240ace5c4b090 --- /dev/null +++ b/libclc/generic/include/clc/geometric/length.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/geometric/length.inc> +#include <clc/geometric/floatn.inc> diff --git a/libclc/generic/include/clc/geometric/length.inc b/libclc/generic/include/clc/geometric/length.inc new file mode 100644 index 0000000000000000000000000000000000000000..c2d95e876831b8896acec310b2d27773e4b85f63 --- /dev/null +++ b/libclc/generic/include/clc/geometric/length.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_FLOAT length(__CLC_FLOATN p0); diff --git a/libclc/generic/include/clc/geometric/normalize.h b/libclc/generic/include/clc/geometric/normalize.h new file mode 100644 index 0000000000000000000000000000000000000000..dccff9b4e0414203f79395ccaa59fcfe2d8fdefa --- /dev/null +++ b/libclc/generic/include/clc/geometric/normalize.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/geometric/normalize.inc> +#include <clc/geometric/floatn.inc> diff --git a/libclc/generic/include/clc/geometric/normalize.inc b/libclc/generic/include/clc/geometric/normalize.inc new file mode 100644 index 0000000000000000000000000000000000000000..6eb13150603e6f7e64d905b442bfb22a64cb13ea --- /dev/null +++ b/libclc/generic/include/clc/geometric/normalize.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_FLOATN normalize(__CLC_FLOATN p); diff --git a/libclc/generic/include/clc/integer/abs.h b/libclc/generic/include/clc/integer/abs.h new file mode 100644 index 0000000000000000000000000000000000000000..77a4cbeb4fe37a3aa60a8ffc76cf2afe2a452f42 --- /dev/null +++ b/libclc/generic/include/clc/integer/abs.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/integer/abs.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/abs.inc b/libclc/generic/include/clc/integer/abs.inc new file mode 100644 index 0000000000000000000000000000000000000000..952bce7e29e36323472ecfd6d1047d899b261603 --- /dev/null +++ b/libclc/generic/include/clc/integer/abs.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_U_GENTYPE abs(__CLC_GENTYPE x); diff --git a/libclc/generic/include/clc/integer/abs_diff.h b/libclc/generic/include/clc/integer/abs_diff.h new file mode 100644 index 0000000000000000000000000000000000000000..3f3b4b43c5d7ca830a1920625c77dbc8dc5d709a --- /dev/null +++ b/libclc/generic/include/clc/integer/abs_diff.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/integer/abs_diff.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/abs_diff.inc b/libclc/generic/include/clc/integer/abs_diff.inc new file mode 100644 index 0000000000000000000000000000000000000000..e844d46e808bbc4944a0e6b7169c9b85e958f0d4 --- /dev/null +++ b/libclc/generic/include/clc/integer/abs_diff.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_U_GENTYPE abs_diff(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/add_sat.h b/libclc/generic/include/clc/integer/add_sat.h new file mode 100644 index 0000000000000000000000000000000000000000..2e5e69851442c387fbebe2c4476b600efe329998 --- /dev/null +++ b/libclc/generic/include/clc/integer/add_sat.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/integer/add_sat.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/add_sat.inc b/libclc/generic/include/clc/integer/add_sat.inc new file mode 100644 index 0000000000000000000000000000000000000000..913841a1dada557f84498bf309c0d2715f5ac733 --- /dev/null +++ b/libclc/generic/include/clc/integer/add_sat.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE add_sat(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/clz.h b/libclc/generic/include/clc/integer/clz.h new file mode 100644 index 0000000000000000000000000000000000000000..f7cdbf78ec06075517fef47733b01f17e8457bd3 --- /dev/null +++ b/libclc/generic/include/clc/integer/clz.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/integer/clz.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/clz.inc b/libclc/generic/include/clc/integer/clz.inc new file mode 100644 index 0000000000000000000000000000000000000000..45826d10c9fafe429c3ea4d1f80fc35c92177e47 --- /dev/null +++ b/libclc/generic/include/clc/integer/clz.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE clz(__CLC_GENTYPE x); diff --git a/libclc/generic/include/clc/integer/definitions.h b/libclc/generic/include/clc/integer/definitions.h new file mode 100644 index 0000000000000000000000000000000000000000..a407974a0d4e9aa221b3644b47986df87f920957 --- /dev/null +++ b/libclc/generic/include/clc/integer/definitions.h @@ -0,0 +1,15 @@ +#define CHAR_BIT 8 +#define INT_MAX 2147483647 +#define INT_MIN -2147483648 +#define LONG_MAX 0x7fffffffffffffffL +#define LONG_MIN -0x8000000000000000L +#define SCHAR_MAX 127 +#define SCHAR_MIN -128 +#define CHAR_MAX 127 +#define CHAR_MIN -128 +#define SHRT_MAX 32767 +#define SHRT_MIN -32768 +#define UCHAR_MAX 255 +#define USHRT_MAX 65535 +#define UINT_MAX 0xffffffff +#define ULONG_MAX 0xffffffffffffffffUL diff --git a/libclc/generic/include/clc/integer/gentype.inc b/libclc/generic/include/clc/integer/gentype.inc new file mode 100644 index 0000000000000000000000000000000000000000..6f4d6996d8f59aa801b0de6406f5f26edf1b7667 --- /dev/null +++ b/libclc/generic/include/clc/integer/gentype.inc @@ -0,0 +1,435 @@ +//These 2 defines only change when switching between data sizes or base types to +//keep this file manageable. +#define __CLC_GENSIZE 8 +#define __CLC_SCALAR_GENTYPE char + +#define __CLC_GENTYPE char +#define __CLC_U_GENTYPE uchar +#define __CLC_S_GENTYPE char +#define __CLC_SCALAR 1 +#include __CLC_BODY +#undef __CLC_SCALAR +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE char2 +#define __CLC_U_GENTYPE uchar2 +#define __CLC_S_GENTYPE char2 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE char3 +#define __CLC_U_GENTYPE uchar3 +#define __CLC_S_GENTYPE char3 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE char4 +#define __CLC_U_GENTYPE uchar4 +#define __CLC_S_GENTYPE char4 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE char8 +#define __CLC_U_GENTYPE uchar8 +#define __CLC_S_GENTYPE char8 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE char16 +#define __CLC_U_GENTYPE uchar16 +#define __CLC_S_GENTYPE char16 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#undef __CLC_SCALAR_GENTYPE +#define __CLC_SCALAR_GENTYPE uchar + +#define __CLC_GENTYPE uchar +#define __CLC_U_GENTYPE uchar +#define __CLC_S_GENTYPE char +#define __CLC_SCALAR 1 +#include __CLC_BODY +#undef __CLC_SCALAR +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE uchar2 +#define __CLC_U_GENTYPE uchar2 +#define __CLC_S_GENTYPE char2 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE uchar3 +#define __CLC_U_GENTYPE uchar3 +#define __CLC_S_GENTYPE char3 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE uchar4 +#define __CLC_U_GENTYPE uchar4 +#define __CLC_S_GENTYPE char4 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE uchar8 +#define __CLC_U_GENTYPE uchar8 +#define __CLC_S_GENTYPE char8 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE uchar16 +#define __CLC_U_GENTYPE uchar16 +#define __CLC_S_GENTYPE char16 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#undef __CLC_GENSIZE +#define __CLC_GENSIZE 16 +#undef __CLC_SCALAR_GENTYPE +#define __CLC_SCALAR_GENTYPE short + +#define __CLC_GENTYPE short +#define __CLC_U_GENTYPE ushort +#define __CLC_S_GENTYPE short +#define __CLC_SCALAR 1 +#include __CLC_BODY +#undef __CLC_SCALAR +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE short2 +#define __CLC_U_GENTYPE ushort2 +#define __CLC_S_GENTYPE short2 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE short3 +#define __CLC_U_GENTYPE ushort3 +#define __CLC_S_GENTYPE short3 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE short4 +#define __CLC_U_GENTYPE ushort4 +#define __CLC_S_GENTYPE short4 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE short8 +#define __CLC_U_GENTYPE ushort8 +#define __CLC_S_GENTYPE short8 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE short16 +#define __CLC_U_GENTYPE ushort16 +#define __CLC_S_GENTYPE short16 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#undef __CLC_SCALAR_GENTYPE +#define __CLC_SCALAR_GENTYPE ushort + +#define __CLC_GENTYPE ushort +#define __CLC_U_GENTYPE ushort +#define __CLC_S_GENTYPE short +#define __CLC_SCALAR 1 +#include __CLC_BODY +#undef __CLC_SCALAR +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE ushort2 +#define __CLC_U_GENTYPE ushort2 +#define __CLC_S_GENTYPE short2 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE ushort3 +#define __CLC_U_GENTYPE ushort3 +#define __CLC_S_GENTYPE short3 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE ushort4 +#define __CLC_U_GENTYPE ushort4 +#define __CLC_S_GENTYPE short4 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE ushort8 +#define __CLC_U_GENTYPE ushort8 +#define __CLC_S_GENTYPE short8 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE ushort16 +#define __CLC_U_GENTYPE ushort16 +#define __CLC_S_GENTYPE short16 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#undef __CLC_GENSIZE +#define __CLC_GENSIZE 32 +#undef __CLC_SCALAR_GENTYPE +#define __CLC_SCALAR_GENTYPE int + +#define __CLC_GENTYPE int +#define __CLC_U_GENTYPE uint +#define __CLC_S_GENTYPE int +#define __CLC_SCALAR 1 +#include __CLC_BODY +#undef __CLC_SCALAR +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE int2 +#define __CLC_U_GENTYPE uint2 +#define __CLC_S_GENTYPE int2 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE int3 +#define __CLC_U_GENTYPE uint3 +#define __CLC_S_GENTYPE int3 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE int4 +#define __CLC_U_GENTYPE uint4 +#define __CLC_S_GENTYPE int4 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE int8 +#define __CLC_U_GENTYPE uint8 +#define __CLC_S_GENTYPE int8 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE int16 +#define __CLC_U_GENTYPE uint16 +#define __CLC_S_GENTYPE int16 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#undef __CLC_SCALAR_GENTYPE +#define __CLC_SCALAR_GENTYPE uint + +#define __CLC_GENTYPE uint +#define __CLC_U_GENTYPE uint +#define __CLC_S_GENTYPE int +#define __CLC_SCALAR 1 +#include __CLC_BODY +#undef __CLC_SCALAR +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE uint2 +#define __CLC_U_GENTYPE uint2 +#define __CLC_S_GENTYPE int2 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE uint3 +#define __CLC_U_GENTYPE uint3 +#define __CLC_S_GENTYPE int3 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE uint4 +#define __CLC_U_GENTYPE uint4 +#define __CLC_S_GENTYPE int4 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE uint8 +#define __CLC_U_GENTYPE uint8 +#define __CLC_S_GENTYPE int8 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE uint16 +#define __CLC_U_GENTYPE uint16 +#define __CLC_S_GENTYPE int16 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#undef __CLC_GENSIZE +#define __CLC_GENSIZE 64 +#undef __CLC_SCALAR_GENTYPE +#define __CLC_SCALAR_GENTYPE long + +#define __CLC_GENTYPE long +#define __CLC_U_GENTYPE ulong +#define __CLC_S_GENTYPE long +#define __CLC_SCALAR 1 +#include __CLC_BODY +#undef __CLC_SCALAR +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE long2 +#define __CLC_U_GENTYPE ulong2 +#define __CLC_S_GENTYPE long2 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE long3 +#define __CLC_U_GENTYPE ulong3 +#define __CLC_S_GENTYPE long3 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE long4 +#define __CLC_U_GENTYPE ulong4 +#define __CLC_S_GENTYPE long4 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE long8 +#define __CLC_U_GENTYPE ulong8 +#define __CLC_S_GENTYPE long8 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE long16 +#define __CLC_U_GENTYPE ulong16 +#define __CLC_S_GENTYPE long16 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#undef __CLC_SCALAR_GENTYPE +#define __CLC_SCALAR_GENTYPE ulong + +#define __CLC_GENTYPE ulong +#define __CLC_U_GENTYPE ulong +#define __CLC_S_GENTYPE long +#define __CLC_SCALAR 1 +#include __CLC_BODY +#undef __CLC_SCALAR +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE ulong2 +#define __CLC_U_GENTYPE ulong2 +#define __CLC_S_GENTYPE long2 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE ulong3 +#define __CLC_U_GENTYPE ulong3 +#define __CLC_S_GENTYPE long3 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE ulong4 +#define __CLC_U_GENTYPE ulong4 +#define __CLC_S_GENTYPE long4 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE ulong8 +#define __CLC_U_GENTYPE ulong8 +#define __CLC_S_GENTYPE long8 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#define __CLC_GENTYPE ulong16 +#define __CLC_U_GENTYPE ulong16 +#define __CLC_S_GENTYPE long16 +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_U_GENTYPE +#undef __CLC_S_GENTYPE + +#undef __CLC_GENSIZE +#undef __CLC_SCALAR_GENTYPE +#undef __CLC_BODY diff --git a/libclc/generic/include/clc/integer/hadd.h b/libclc/generic/include/clc/integer/hadd.h new file mode 100644 index 0000000000000000000000000000000000000000..37304e26cc2d628d580e2cfb810732a26898b3b9 --- /dev/null +++ b/libclc/generic/include/clc/integer/hadd.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/integer/hadd.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/hadd.inc b/libclc/generic/include/clc/integer/hadd.inc new file mode 100644 index 0000000000000000000000000000000000000000..f698989cef2026b8e8868175ece6060389adc13c --- /dev/null +++ b/libclc/generic/include/clc/integer/hadd.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE hadd(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/integer-gentype.inc b/libclc/generic/include/clc/integer/integer-gentype.inc new file mode 100644 index 0000000000000000000000000000000000000000..6470eb3ae9743e4f255d1a70b3ce83563aeb7304 --- /dev/null +++ b/libclc/generic/include/clc/integer/integer-gentype.inc @@ -0,0 +1,39 @@ +#define __CLC_GENTYPE int +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE int2 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE int4 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE int8 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE int16 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE uint +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE uint2 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE uint4 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE uint8 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE uint16 +#include __CLC_BODY +#undef __CLC_GENTYPE diff --git a/libclc/generic/include/clc/integer/mad24.h b/libclc/generic/include/clc/integer/mad24.h new file mode 100644 index 0000000000000000000000000000000000000000..0c120faac2b15b3d0eddb6450001cbd8b142f0ca --- /dev/null +++ b/libclc/generic/include/clc/integer/mad24.h @@ -0,0 +1,3 @@ +#define __CLC_BODY <clc/integer/mad24.inc> +#include <clc/integer/integer-gentype.inc> +#undef __CLC_BODY diff --git a/libclc/generic/include/clc/integer/mad24.inc b/libclc/generic/include/clc/integer/mad24.inc new file mode 100644 index 0000000000000000000000000000000000000000..81fe0c2a89266c30861c95c0cb64ce32c2893e85 --- /dev/null +++ b/libclc/generic/include/clc/integer/mad24.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE mad24(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_GENTYPE z); diff --git a/libclc/generic/include/clc/integer/mad_hi.h b/libclc/generic/include/clc/integer/mad_hi.h new file mode 100644 index 0000000000000000000000000000000000000000..863ce92d9f2d8c2bdb3b9f06788d2c67706984d4 --- /dev/null +++ b/libclc/generic/include/clc/integer/mad_hi.h @@ -0,0 +1 @@ +#define mad_hi(a, b, c) (mul_hi((a),(b))+(c)) diff --git a/libclc/generic/include/clc/integer/mul24.h b/libclc/generic/include/clc/integer/mul24.h new file mode 100644 index 0000000000000000000000000000000000000000..4f97098d70f0f407204f42aed945251e788da061 --- /dev/null +++ b/libclc/generic/include/clc/integer/mul24.h @@ -0,0 +1,3 @@ +#define __CLC_BODY <clc/integer/mul24.inc> +#include <clc/integer/integer-gentype.inc> +#undef __CLC_BODY diff --git a/libclc/generic/include/clc/integer/mul24.inc b/libclc/generic/include/clc/integer/mul24.inc new file mode 100644 index 0000000000000000000000000000000000000000..8cbf7c10ac447d43fb95e56c8a79e469d05f8b26 --- /dev/null +++ b/libclc/generic/include/clc/integer/mul24.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE mul24(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/mul_hi.h b/libclc/generic/include/clc/integer/mul_hi.h new file mode 100644 index 0000000000000000000000000000000000000000..27b95d83442f97adb8030a8a0500592f80dba369 --- /dev/null +++ b/libclc/generic/include/clc/integer/mul_hi.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/integer/mul_hi.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/mul_hi.inc b/libclc/generic/include/clc/integer/mul_hi.inc new file mode 100644 index 0000000000000000000000000000000000000000..ce9e5c0b2c18c85362fc53b5b25144e736bf164a --- /dev/null +++ b/libclc/generic/include/clc/integer/mul_hi.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE mul_hi(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/rhadd.h b/libclc/generic/include/clc/integer/rhadd.h new file mode 100644 index 0000000000000000000000000000000000000000..69b43faeebd246c6129a03379502eb8b0c6c5cf7 --- /dev/null +++ b/libclc/generic/include/clc/integer/rhadd.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/integer/rhadd.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/rhadd.inc b/libclc/generic/include/clc/integer/rhadd.inc new file mode 100644 index 0000000000000000000000000000000000000000..88ccaf09fd5ef8708dc53355858c345178e11bfb --- /dev/null +++ b/libclc/generic/include/clc/integer/rhadd.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE rhadd(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/rotate.h b/libclc/generic/include/clc/integer/rotate.h new file mode 100644 index 0000000000000000000000000000000000000000..6320223e7cf2ced365fe6bbca1d137ab3f7c405a --- /dev/null +++ b/libclc/generic/include/clc/integer/rotate.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/integer/rotate.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/rotate.inc b/libclc/generic/include/clc/integer/rotate.inc new file mode 100644 index 0000000000000000000000000000000000000000..c97711ecf88281b001a0d923af425fd20b998035 --- /dev/null +++ b/libclc/generic/include/clc/integer/rotate.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE rotate(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/sub_sat.h b/libclc/generic/include/clc/integer/sub_sat.h new file mode 100644 index 0000000000000000000000000000000000000000..f84152944817e1c953c86c3e89d03f142b1c52ec --- /dev/null +++ b/libclc/generic/include/clc/integer/sub_sat.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/integer/sub_sat.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/include/clc/integer/sub_sat.inc b/libclc/generic/include/clc/integer/sub_sat.inc new file mode 100644 index 0000000000000000000000000000000000000000..425df2e4b6964f0c646f3b4eaaf659bf471289e5 --- /dev/null +++ b/libclc/generic/include/clc/integer/sub_sat.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE sub_sat(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/integer/upsample.h b/libclc/generic/include/clc/integer/upsample.h new file mode 100644 index 0000000000000000000000000000000000000000..0b36b692a2c8d3da0a7db4ca475594b8f1710cd6 --- /dev/null +++ b/libclc/generic/include/clc/integer/upsample.h @@ -0,0 +1,25 @@ +#define __CLC_UPSAMPLE_DECL(BGENTYPE, GENTYPE, UGENTYPE) \ + _CLC_OVERLOAD _CLC_DECL BGENTYPE upsample(GENTYPE hi, UGENTYPE lo); + +#define __CLC_UPSAMPLE_VEC(BGENTYPE, GENTYPE, UGENTYPE) \ + __CLC_UPSAMPLE_DECL(BGENTYPE, GENTYPE, UGENTYPE) \ + __CLC_UPSAMPLE_DECL(BGENTYPE##2, GENTYPE##2, UGENTYPE##2) \ + __CLC_UPSAMPLE_DECL(BGENTYPE##3, GENTYPE##3, UGENTYPE##3) \ + __CLC_UPSAMPLE_DECL(BGENTYPE##4, GENTYPE##4, UGENTYPE##4) \ + __CLC_UPSAMPLE_DECL(BGENTYPE##8, GENTYPE##8, UGENTYPE##8) \ + __CLC_UPSAMPLE_DECL(BGENTYPE##16, GENTYPE##16, UGENTYPE##16) \ + +#define __CLC_UPSAMPLE_TYPES() \ + __CLC_UPSAMPLE_VEC(short, char, uchar) \ + __CLC_UPSAMPLE_VEC(ushort, uchar, uchar) \ + __CLC_UPSAMPLE_VEC(int, short, ushort) \ + __CLC_UPSAMPLE_VEC(uint, ushort, ushort) \ + __CLC_UPSAMPLE_VEC(long, int, uint) \ + __CLC_UPSAMPLE_VEC(ulong, uint, uint) \ + +__CLC_UPSAMPLE_TYPES() + +#undef __CLC_UPSAMPLE_TYPES +#undef __CLC_UPSAMPLE_DECL +#undef __CLC_UPSAMPLE_VEC + diff --git a/libclc/generic/include/clc/math/atan.h b/libclc/generic/include/clc/math/atan.h new file mode 100644 index 0000000000000000000000000000000000000000..d9697194ee8a600d67a3f93206dc9db1ec5eedda --- /dev/null +++ b/libclc/generic/include/clc/math/atan.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2014 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#define __CLC_BODY <clc/math/atan.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/math/atan.inc b/libclc/generic/include/clc/math/atan.inc new file mode 100644 index 0000000000000000000000000000000000000000..d217c955593fc1ad6ec20b9337a3de08a8c78c6e --- /dev/null +++ b/libclc/generic/include/clc/math/atan.inc @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2014 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE atan(__CLC_GENTYPE a); diff --git a/libclc/generic/include/clc/math/atan2.h b/libclc/generic/include/clc/math/atan2.h new file mode 100644 index 0000000000000000000000000000000000000000..9c082a082f0aaad4b26d1c46f5313731770539c5 --- /dev/null +++ b/libclc/generic/include/clc/math/atan2.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2014 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#define __CLC_BODY <clc/math/atan2.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/math/atan2.inc b/libclc/generic/include/clc/math/atan2.inc new file mode 100644 index 0000000000000000000000000000000000000000..ce273da5334639ab908a2e7d9e989eb397a8e06c --- /dev/null +++ b/libclc/generic/include/clc/math/atan2.inc @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2014 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE atan2(__CLC_GENTYPE a, __CLC_GENTYPE b); diff --git a/libclc/generic/include/clc/math/binary_decl.inc b/libclc/generic/include/clc/math/binary_decl.inc new file mode 100644 index 0000000000000000000000000000000000000000..70a711477704535ec222908dacc6a25c71f07e9e --- /dev/null +++ b/libclc/generic/include/clc/math/binary_decl.inc @@ -0,0 +1,6 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_FUNCTION(__CLC_GENTYPE a, __CLC_GENTYPE b); +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_FUNCTION(__CLC_GENTYPE a, float b); + +#ifdef cl_khr_fp64 +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_FUNCTION(__CLC_GENTYPE a, double b); +#endif diff --git a/libclc/generic/include/clc/math/binary_intrin.inc b/libclc/generic/include/clc/math/binary_intrin.inc new file mode 100644 index 0000000000000000000000000000000000000000..cfbe74159ec24bc361cad8af9a083f6351b7bf6d --- /dev/null +++ b/libclc/generic/include/clc/math/binary_intrin.inc @@ -0,0 +1,18 @@ +_CLC_OVERLOAD float __CLC_FUNCTION(float, float) __asm(__CLC_INTRINSIC ".f32"); +_CLC_OVERLOAD float2 __CLC_FUNCTION(float2, float2) __asm(__CLC_INTRINSIC ".v2f32"); +_CLC_OVERLOAD float3 __CLC_FUNCTION(float3, float3) __asm(__CLC_INTRINSIC ".v3f32"); +_CLC_OVERLOAD float4 __CLC_FUNCTION(float4, float4) __asm(__CLC_INTRINSIC ".v4f32"); +_CLC_OVERLOAD float8 __CLC_FUNCTION(float8, float8) __asm(__CLC_INTRINSIC ".v8f32"); +_CLC_OVERLOAD float16 __CLC_FUNCTION(float16, float16) __asm(__CLC_INTRINSIC ".v16f32"); + +#ifdef cl_khr_fp64 +_CLC_OVERLOAD double __CLC_FUNCTION(double, double) __asm(__CLC_INTRINSIC ".f64"); +_CLC_OVERLOAD double2 __CLC_FUNCTION(double2, double2) __asm(__CLC_INTRINSIC ".v2f64"); +_CLC_OVERLOAD double3 __CLC_FUNCTION(double3, double3) __asm(__CLC_INTRINSIC ".v3f64"); +_CLC_OVERLOAD double4 __CLC_FUNCTION(double4, double4) __asm(__CLC_INTRINSIC ".v4f64"); +_CLC_OVERLOAD double8 __CLC_FUNCTION(double8, double8) __asm(__CLC_INTRINSIC ".v8f64"); +_CLC_OVERLOAD double16 __CLC_FUNCTION(double16, double16) __asm(__CLC_INTRINSIC ".v16f64"); +#endif + +#undef __CLC_FUNCTION +#undef __CLC_INTRINSIC diff --git a/libclc/generic/include/clc/math/ceil.h b/libclc/generic/include/clc/math/ceil.h new file mode 100644 index 0000000000000000000000000000000000000000..5b40abf97c20a0e3288586fe2d55f94218ff570f --- /dev/null +++ b/libclc/generic/include/clc/math/ceil.h @@ -0,0 +1,6 @@ +#undef ceil +#define ceil __clc_ceil + +#define __CLC_FUNCTION __clc_ceil +#define __CLC_INTRINSIC "llvm.ceil" +#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/clc_nextafter.h b/libclc/generic/include/clc/math/clc_nextafter.h new file mode 100644 index 0000000000000000000000000000000000000000..81c8f369c3bd531d800a4e290fbdef1c45796803 --- /dev/null +++ b/libclc/generic/include/clc/math/clc_nextafter.h @@ -0,0 +1,11 @@ +#define __CLC_BODY <clc/math/binary_decl.inc> + +#define __CLC_FUNCTION nextafter +#include <clc/math/gentype.inc> +#undef __CLC_FUNCTION + +#define __CLC_FUNCTION __clc_nextafter +#include <clc/math/gentype.inc> +#undef __CLC_FUNCTION + +#undef __CLC_BODY diff --git a/libclc/generic/include/clc/math/copysign.h b/libclc/generic/include/clc/math/copysign.h new file mode 100644 index 0000000000000000000000000000000000000000..9d6cf76deb74ecc57e9042a11532052a8529c9b7 --- /dev/null +++ b/libclc/generic/include/clc/math/copysign.h @@ -0,0 +1 @@ +#define copysign(x, y) __builtin_copysign(x, y) diff --git a/libclc/generic/include/clc/math/cos.h b/libclc/generic/include/clc/math/cos.h new file mode 100644 index 0000000000000000000000000000000000000000..3d4cf39a0f80cef49ae2ad81060750a486e45c8e --- /dev/null +++ b/libclc/generic/include/clc/math/cos.h @@ -0,0 +1,3 @@ +#define __CLC_BODY <clc/math/cos.inc> +#include <clc/math/gentype.inc> +#undef __CLC_BODY diff --git a/libclc/generic/include/clc/math/cos.inc b/libclc/generic/include/clc/math/cos.inc new file mode 100644 index 0000000000000000000000000000000000000000..160e625c6912c773f18f5fadc8d6d7d7843d3e5e --- /dev/null +++ b/libclc/generic/include/clc/math/cos.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE cos(__CLC_GENTYPE a); diff --git a/libclc/generic/include/clc/math/exp.h b/libclc/generic/include/clc/math/exp.h new file mode 100644 index 0000000000000000000000000000000000000000..9866524762958533724f5bc05b9596b30270e985 --- /dev/null +++ b/libclc/generic/include/clc/math/exp.h @@ -0,0 +1,9 @@ +#undef exp + +#define __CLC_BODY <clc/math/unary_decl.inc> +#define __CLC_FUNCTION exp + +#include <clc/math/gentype.inc> + +#undef __CLC_BODY +#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/math/exp10.h b/libclc/generic/include/clc/math/exp10.h new file mode 100644 index 0000000000000000000000000000000000000000..a1d426a20ab0702b60459a1ad011962098bc572a --- /dev/null +++ b/libclc/generic/include/clc/math/exp10.h @@ -0,0 +1,9 @@ +#undef exp10 + +#define __CLC_BODY <clc/math/unary_decl.inc> +#define __CLC_FUNCTION exp10 + +#include <clc/math/gentype.inc> + +#undef __CLC_BODY +#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/math/exp2.h b/libclc/generic/include/clc/math/exp2.h new file mode 100644 index 0000000000000000000000000000000000000000..ec0dad268a7b9eeaa04924a72e2ca09a933895e3 --- /dev/null +++ b/libclc/generic/include/clc/math/exp2.h @@ -0,0 +1,6 @@ +#undef exp2 +#define exp2 __clc_exp2 + +#define __CLC_FUNCTION __clc_exp2 +#define __CLC_INTRINSIC "llvm.exp2" +#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/fabs.h b/libclc/generic/include/clc/math/fabs.h new file mode 100644 index 0000000000000000000000000000000000000000..ee2f8932a94d2b1ebbf9a98a36fd177845b39082 --- /dev/null +++ b/libclc/generic/include/clc/math/fabs.h @@ -0,0 +1,6 @@ +#undef fabs +#define fabs __clc_fabs + +#define __CLC_FUNCTION __clc_fabs +#define __CLC_INTRINSIC "llvm.fabs" +#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/floor.h b/libclc/generic/include/clc/math/floor.h new file mode 100644 index 0000000000000000000000000000000000000000..2337d35caae624cdf60f7fce8ae5ff725a9c62f1 --- /dev/null +++ b/libclc/generic/include/clc/math/floor.h @@ -0,0 +1,6 @@ +#undef floor +#define floor __clc_floor + +#define __CLC_FUNCTION __clc_floor +#define __CLC_INTRINSIC "llvm.floor" +#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/fma.h b/libclc/generic/include/clc/math/fma.h new file mode 100644 index 0000000000000000000000000000000000000000..02d39f68167511609808762014783b950bbf0475 --- /dev/null +++ b/libclc/generic/include/clc/math/fma.h @@ -0,0 +1,6 @@ +#undef fma +#define fma __clc_fma + +#define __CLC_FUNCTION __clc_fma +#define __CLC_INTRINSIC "llvm.fma" +#include <clc/math/ternary_intrin.inc> diff --git a/libclc/generic/include/clc/math/fmax.h b/libclc/generic/include/clc/math/fmax.h new file mode 100644 index 0000000000000000000000000000000000000000..d6956af85a5fbf3d0ee40d075f1786824f38851c --- /dev/null +++ b/libclc/generic/include/clc/math/fmax.h @@ -0,0 +1,11 @@ +#undef fmax +#define fmax __clc_fmax + +#define __CLC_BODY <clc/math/binary_decl.inc> +#define __CLC_FUNCTION __clc_fmax + +#include <clc/math/gentype.inc> + +#undef __CLC_BODY +#undef __CLC_FUNCTION + diff --git a/libclc/generic/include/clc/math/fmin.h b/libclc/generic/include/clc/math/fmin.h new file mode 100644 index 0000000000000000000000000000000000000000..5588ba93a8b8c284b5190e79c9a4bfd3fdb5b9b7 --- /dev/null +++ b/libclc/generic/include/clc/math/fmin.h @@ -0,0 +1,11 @@ +#undef fmin +#define fmin __clc_fmin + +#define __CLC_BODY <clc/math/binary_decl.inc> +#define __CLC_FUNCTION __clc_fmin + +#include <clc/math/gentype.inc> + +#undef __CLC_BODY +#undef __CLC_FUNCTION + diff --git a/libclc/generic/include/clc/math/gentype.inc b/libclc/generic/include/clc/math/gentype.inc new file mode 100644 index 0000000000000000000000000000000000000000..9f79f6eb037ff466b4038b82bcb58bdbeefb2cc1 --- /dev/null +++ b/libclc/generic/include/clc/math/gentype.inc @@ -0,0 +1,67 @@ +#define __CLC_SCALAR_GENTYPE float +#define __CLC_FPSIZE 32 + +#define __CLC_GENTYPE float +#define __CLC_SCALAR +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_SCALAR + +#define __CLC_GENTYPE float2 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE float3 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE float4 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE float8 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE float16 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#undef __CLC_FPSIZE +#undef __CLC_SCALAR_GENTYPE + +#ifdef cl_khr_fp64 +#define __CLC_SCALAR_GENTYPE double +#define __CLC_FPSIZE 64 + +#define __CLC_SCALAR +#define __CLC_GENTYPE double +#include __CLC_BODY +#undef __CLC_GENTYPE +#undef __CLC_SCALAR + +#define __CLC_GENTYPE double2 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE double3 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE double4 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE double8 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#define __CLC_GENTYPE double16 +#include __CLC_BODY +#undef __CLC_GENTYPE + +#undef __CLC_FPSIZE +#undef __CLC_SCALAR_GENTYPE +#endif + +#undef __CLC_BODY diff --git a/libclc/generic/include/clc/math/hypot.h b/libclc/generic/include/clc/math/hypot.h new file mode 100644 index 0000000000000000000000000000000000000000..c00eb4532461f5d77e1227ee9a59492cb447c325 --- /dev/null +++ b/libclc/generic/include/clc/math/hypot.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/math/hypot.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/math/hypot.inc b/libclc/generic/include/clc/math/hypot.inc new file mode 100644 index 0000000000000000000000000000000000000000..08b46058b0aae6be5508afd284934f05be960dd6 --- /dev/null +++ b/libclc/generic/include/clc/math/hypot.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE hypot(__CLC_GENTYPE x, __CLC_GENTYPE y); diff --git a/libclc/generic/include/clc/math/log.h b/libclc/generic/include/clc/math/log.h new file mode 100644 index 0000000000000000000000000000000000000000..644f8575c1b3047a367556741845d2cfe0886cb6 --- /dev/null +++ b/libclc/generic/include/clc/math/log.h @@ -0,0 +1,4 @@ +#undef log + +// log(x) = log2(x) * (1/log2(e)) +#define log(val) (__clc_log2(val) * 0.693147181f) diff --git a/libclc/generic/include/clc/math/log2.h b/libclc/generic/include/clc/math/log2.h new file mode 100644 index 0000000000000000000000000000000000000000..880124097ed0c1016060e8dd94f5487ee3feaf7a --- /dev/null +++ b/libclc/generic/include/clc/math/log2.h @@ -0,0 +1,6 @@ +#undef log2 +#define log2 __clc_log2 + +#define __CLC_FUNCTION __clc_log2 +#define __CLC_INTRINSIC "llvm.log2" +#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/mad.h b/libclc/generic/include/clc/math/mad.h new file mode 100644 index 0000000000000000000000000000000000000000..c4e50840ced09e20c769a570d932da9d3fad96f4 --- /dev/null +++ b/libclc/generic/include/clc/math/mad.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/math/mad.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/math/mad.inc b/libclc/generic/include/clc/math/mad.inc new file mode 100644 index 0000000000000000000000000000000000000000..61194b6ca4a7f989a3af5f6c900eefdac4a58a0f --- /dev/null +++ b/libclc/generic/include/clc/math/mad.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE mad(__CLC_GENTYPE a, __CLC_GENTYPE b, __CLC_GENTYPE c); diff --git a/libclc/generic/include/clc/math/mix.h b/libclc/generic/include/clc/math/mix.h new file mode 100644 index 0000000000000000000000000000000000000000..c3c95c1f0c4bb1e1e34e915b19557e996187a2cb --- /dev/null +++ b/libclc/generic/include/clc/math/mix.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/math/mix.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/math/mix.inc b/libclc/generic/include/clc/math/mix.inc new file mode 100644 index 0000000000000000000000000000000000000000..52cb10ad9027cb261f0fee7cb64160d4f53f8e9d --- /dev/null +++ b/libclc/generic/include/clc/math/mix.inc @@ -0,0 +1,5 @@ +_CLC_OVERLOAD _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); +#endif diff --git a/libclc/generic/include/clc/math/native_cos.h b/libclc/generic/include/clc/math/native_cos.h new file mode 100644 index 0000000000000000000000000000000000000000..c7212cc4b663b0541683d981c2a3f1796103d70f --- /dev/null +++ b/libclc/generic/include/clc/math/native_cos.h @@ -0,0 +1 @@ +#define native_cos cos diff --git a/libclc/generic/include/clc/math/native_divide.h b/libclc/generic/include/clc/math/native_divide.h new file mode 100644 index 0000000000000000000000000000000000000000..5c52167fd3e78b3398cc4fbda3e4590f6283ac54 --- /dev/null +++ b/libclc/generic/include/clc/math/native_divide.h @@ -0,0 +1 @@ +#define native_divide(x, y) ((x) / (y)) diff --git a/libclc/generic/include/clc/math/native_exp.h b/libclc/generic/include/clc/math/native_exp.h new file mode 100644 index 0000000000000000000000000000000000000000..e206de66926d5a7e14e9747fb1da11622355c812 --- /dev/null +++ b/libclc/generic/include/clc/math/native_exp.h @@ -0,0 +1 @@ +#define native_exp exp diff --git a/libclc/generic/include/clc/math/native_exp10.h b/libclc/generic/include/clc/math/native_exp10.h new file mode 100644 index 0000000000000000000000000000000000000000..1156f58c53a57be399e488a2983409203311d522 --- /dev/null +++ b/libclc/generic/include/clc/math/native_exp10.h @@ -0,0 +1 @@ +#define native_exp10 exp10 diff --git a/libclc/generic/include/clc/math/native_exp2.h b/libclc/generic/include/clc/math/native_exp2.h new file mode 100644 index 0000000000000000000000000000000000000000..b6759390ee438ffb67074d3daebe61ad0615b765 --- /dev/null +++ b/libclc/generic/include/clc/math/native_exp2.h @@ -0,0 +1 @@ +#define native_exp2 exp2 diff --git a/libclc/generic/include/clc/math/native_log.h b/libclc/generic/include/clc/math/native_log.h new file mode 100644 index 0000000000000000000000000000000000000000..7805a39ed696171129105330852b7af1f5ab334c --- /dev/null +++ b/libclc/generic/include/clc/math/native_log.h @@ -0,0 +1 @@ +#define native_log log diff --git a/libclc/generic/include/clc/math/native_log2.h b/libclc/generic/include/clc/math/native_log2.h new file mode 100644 index 0000000000000000000000000000000000000000..0c692eec27f4b0ae58311b89ec19e0d9ed15d3c8 --- /dev/null +++ b/libclc/generic/include/clc/math/native_log2.h @@ -0,0 +1 @@ +#define native_log2 log2 diff --git a/libclc/generic/include/clc/math/native_powr.h b/libclc/generic/include/clc/math/native_powr.h new file mode 100644 index 0000000000000000000000000000000000000000..e8a37d9cb06681be623f106ca2b82caba28e4194 --- /dev/null +++ b/libclc/generic/include/clc/math/native_powr.h @@ -0,0 +1 @@ +#define native_powr pow diff --git a/libclc/generic/include/clc/math/native_sin.h b/libclc/generic/include/clc/math/native_sin.h new file mode 100644 index 0000000000000000000000000000000000000000..569a051ccc750f49ef6113129a4f11cfa8af59e1 --- /dev/null +++ b/libclc/generic/include/clc/math/native_sin.h @@ -0,0 +1 @@ +#define native_sin sin diff --git a/libclc/generic/include/clc/math/native_sqrt.h b/libclc/generic/include/clc/math/native_sqrt.h new file mode 100644 index 0000000000000000000000000000000000000000..a9525fccb7c18abe1d593a42cd148e173f8aa06b --- /dev/null +++ b/libclc/generic/include/clc/math/native_sqrt.h @@ -0,0 +1 @@ +#define native_sqrt sqrt diff --git a/libclc/generic/include/clc/math/nextafter.h b/libclc/generic/include/clc/math/nextafter.h new file mode 100644 index 0000000000000000000000000000000000000000..06e1b2a53c5229ecb4731f20e6dcb3cd5bd012b9 --- /dev/null +++ b/libclc/generic/include/clc/math/nextafter.h @@ -0,0 +1,5 @@ +#define __CLC_BODY <clc/math/binary_decl.inc> +#define __CLC_FUNCTION nextafter +#include <clc/math/gentype.inc> +#undef __CLC_FUNCTION +#undef __CLC_BODY diff --git a/libclc/generic/include/clc/math/pow.h b/libclc/generic/include/clc/math/pow.h new file mode 100644 index 0000000000000000000000000000000000000000..320d341a6830a407f7f1bf8c9a1e2205bfe6342d --- /dev/null +++ b/libclc/generic/include/clc/math/pow.h @@ -0,0 +1,6 @@ +#undef pow +#define pow __clc_pow + +#define __CLC_FUNCTION __clc_pow +#define __CLC_INTRINSIC "llvm.pow" +#include <clc/math/binary_intrin.inc> diff --git a/libclc/generic/include/clc/math/pown.h b/libclc/generic/include/clc/math/pown.h new file mode 100644 index 0000000000000000000000000000000000000000..bdbf50c1de6fd4682636843e59ad1173352f3182 --- /dev/null +++ b/libclc/generic/include/clc/math/pown.h @@ -0,0 +1,24 @@ +#define _CLC_POWN_INTRINSIC "llvm.powi" + +#define _CLC_POWN_DECL(GENTYPE, INTTYPE) \ + _CLC_OVERLOAD _CLC_DECL GENTYPE pown(GENTYPE x, INTTYPE y); + +#define _CLC_VECTOR_POWN_DECL(GENTYPE, INTTYPE) \ + _CLC_POWN_DECL(GENTYPE##2, INTTYPE##2) \ + _CLC_POWN_DECL(GENTYPE##3, INTTYPE##3) \ + _CLC_POWN_DECL(GENTYPE##4, INTTYPE##4) \ + _CLC_POWN_DECL(GENTYPE##8, INTTYPE##8) \ + _CLC_POWN_DECL(GENTYPE##16, INTTYPE##16) + +_CLC_OVERLOAD float pown(float x, int y) __asm(_CLC_POWN_INTRINSIC ".f32"); + +_CLC_VECTOR_POWN_DECL(float, int) + +#ifdef cl_khr_fp64 +_CLC_OVERLOAD double pown(double x, int y) __asm(_CLC_POWN_INTRINSIC ".f64"); +_CLC_VECTOR_POWN_DECL(double, int) +#endif + +#undef _CLC_POWN_INTRINSIC +#undef _CLC_POWN_DECL +#undef _CLC_VECTOR_POWN_DECL diff --git a/libclc/generic/include/clc/math/rint.h b/libclc/generic/include/clc/math/rint.h new file mode 100644 index 0000000000000000000000000000000000000000..d257634a6f953641861014fa644ef320168be36f --- /dev/null +++ b/libclc/generic/include/clc/math/rint.h @@ -0,0 +1,6 @@ +#undef rint +#define rint __clc_rint + +#define __CLC_FUNCTION __clc_rint +#define __CLC_INTRINSIC "llvm.rint" +#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/round.h b/libclc/generic/include/clc/math/round.h new file mode 100644 index 0000000000000000000000000000000000000000..43e16aed028f17a32327e2b09737f0a4f72110ff --- /dev/null +++ b/libclc/generic/include/clc/math/round.h @@ -0,0 +1,9 @@ +#undef round +#define round __clc_round + +#define __CLC_FUNCTION __clc_round +#define __CLC_INTRINSIC "llvm.round" +#include <clc/math/unary_intrin.inc> + +#undef __CLC_FUNCTION +#undef __CLC_INTRINSIC diff --git a/libclc/generic/include/clc/math/rsqrt.h b/libclc/generic/include/clc/math/rsqrt.h new file mode 100644 index 0000000000000000000000000000000000000000..9d49ee652262af2a8f0ad184334aaf49beb96209 --- /dev/null +++ b/libclc/generic/include/clc/math/rsqrt.h @@ -0,0 +1 @@ +#define rsqrt(x) (1.f/sqrt(x)) diff --git a/libclc/generic/include/clc/math/sin.h b/libclc/generic/include/clc/math/sin.h new file mode 100644 index 0000000000000000000000000000000000000000..6d4cf5a3142c34d3ba7fb8f099aa64bfc3865135 --- /dev/null +++ b/libclc/generic/include/clc/math/sin.h @@ -0,0 +1,3 @@ +#define __CLC_BODY <clc/math/sin.inc> +#include <clc/math/gentype.inc> +#undef __CLC_BODY diff --git a/libclc/generic/include/clc/math/sin.inc b/libclc/generic/include/clc/math/sin.inc new file mode 100644 index 0000000000000000000000000000000000000000..e722fa35273102761a206221219b4199f3b71638 --- /dev/null +++ b/libclc/generic/include/clc/math/sin.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE sin(__CLC_GENTYPE a); diff --git a/libclc/generic/include/clc/math/sincos.h b/libclc/generic/include/clc/math/sincos.h new file mode 100644 index 0000000000000000000000000000000000000000..fbb9b55cd1f79f989356e43489de7f1e360ad17c --- /dev/null +++ b/libclc/generic/include/clc/math/sincos.h @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/math/sincos.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/math/sincos.inc b/libclc/generic/include/clc/math/sincos.inc new file mode 100644 index 0000000000000000000000000000000000000000..444ac82a5204128eb03a8ff6e8f6bf8e7b6bb04b --- /dev/null +++ b/libclc/generic/include/clc/math/sincos.inc @@ -0,0 +1,8 @@ +#define __CLC_DECLARE_SINCOS(ADDRSPACE, TYPE) \ + _CLC_OVERLOAD _CLC_DECL TYPE sincos (TYPE x, ADDRSPACE TYPE * cosval); + +__CLC_DECLARE_SINCOS(global, __CLC_GENTYPE) +__CLC_DECLARE_SINCOS(local, __CLC_GENTYPE) +__CLC_DECLARE_SINCOS(private, __CLC_GENTYPE) + +#undef __CLC_DECLARE_SINCOS diff --git a/libclc/generic/include/clc/math/sqrt.h b/libclc/generic/include/clc/math/sqrt.h new file mode 100644 index 0000000000000000000000000000000000000000..f69de847e6299281fedf30fcd03d9a04118594a9 --- /dev/null +++ b/libclc/generic/include/clc/math/sqrt.h @@ -0,0 +1,6 @@ +#undef sqrt +#define sqrt __clc_sqrt + +#define __CLC_FUNCTION __clc_sqrt +#define __CLC_INTRINSIC "llvm.sqrt" +#include <clc/math/unary_intrin.inc> diff --git a/libclc/generic/include/clc/math/ternary_intrin.inc b/libclc/generic/include/clc/math/ternary_intrin.inc new file mode 100644 index 0000000000000000000000000000000000000000..9633696ed9c4d53b6c936ce468acd9c9f8b7ffa1 --- /dev/null +++ b/libclc/generic/include/clc/math/ternary_intrin.inc @@ -0,0 +1,18 @@ +_CLC_OVERLOAD float __CLC_FUNCTION(float, float, float) __asm(__CLC_INTRINSIC ".f32"); +_CLC_OVERLOAD float2 __CLC_FUNCTION(float2, float2, float2) __asm(__CLC_INTRINSIC ".v2f32"); +_CLC_OVERLOAD float3 __CLC_FUNCTION(float3, float3, float3) __asm(__CLC_INTRINSIC ".v3f32"); +_CLC_OVERLOAD float4 __CLC_FUNCTION(float4, float4, float4) __asm(__CLC_INTRINSIC ".v4f32"); +_CLC_OVERLOAD float8 __CLC_FUNCTION(float8, float8, float8) __asm(__CLC_INTRINSIC ".v8f32"); +_CLC_OVERLOAD float16 __CLC_FUNCTION(float16, float16, float16) __asm(__CLC_INTRINSIC ".v16f32"); + +#ifdef cl_khr_fp64 +_CLC_OVERLOAD double __CLC_FUNCTION(double, double, double) __asm(__CLC_INTRINSIC ".f64"); +_CLC_OVERLOAD double2 __CLC_FUNCTION(double2, double2, double2) __asm(__CLC_INTRINSIC ".v2f64"); +_CLC_OVERLOAD double3 __CLC_FUNCTION(double3, double3, double3) __asm(__CLC_INTRINSIC ".v3f64"); +_CLC_OVERLOAD double4 __CLC_FUNCTION(double4, double4, double4) __asm(__CLC_INTRINSIC ".v4f64"); +_CLC_OVERLOAD double8 __CLC_FUNCTION(double8, double8, double8) __asm(__CLC_INTRINSIC ".v8f64"); +_CLC_OVERLOAD double16 __CLC_FUNCTION(double16, double16, double16) __asm(__CLC_INTRINSIC ".v16f64"); +#endif + +#undef __CLC_FUNCTION +#undef __CLC_INTRINSIC diff --git a/libclc/generic/include/clc/math/trunc.h b/libclc/generic/include/clc/math/trunc.h new file mode 100644 index 0000000000000000000000000000000000000000..d34f66190433dc050f900d2a852ee0012ce3460d --- /dev/null +++ b/libclc/generic/include/clc/math/trunc.h @@ -0,0 +1,9 @@ +#undef trunc +#define trunc __clc_trunc + +#define __CLC_FUNCTION __clc_trunc +#define __CLC_INTRINSIC "llvm.trunc" +#include <clc/math/unary_intrin.inc> + +#undef __CLC_FUNCTION +#undef __CLC_INTRINSIC diff --git a/libclc/generic/include/clc/math/unary_decl.inc b/libclc/generic/include/clc/math/unary_decl.inc new file mode 100644 index 0000000000000000000000000000000000000000..9858d908da09fe325b66d95d0fbe6e84d5324d18 --- /dev/null +++ b/libclc/generic/include/clc/math/unary_decl.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_FUNCTION(__CLC_GENTYPE x); diff --git a/libclc/generic/include/clc/math/unary_intrin.inc b/libclc/generic/include/clc/math/unary_intrin.inc new file mode 100644 index 0000000000000000000000000000000000000000..8c62d8827fe74a3be243c8f924aec7c6645e7900 --- /dev/null +++ b/libclc/generic/include/clc/math/unary_intrin.inc @@ -0,0 +1,18 @@ +_CLC_OVERLOAD float __CLC_FUNCTION(float f) __asm(__CLC_INTRINSIC ".f32"); +_CLC_OVERLOAD float2 __CLC_FUNCTION(float2 f) __asm(__CLC_INTRINSIC ".v2f32"); +_CLC_OVERLOAD float3 __CLC_FUNCTION(float3 f) __asm(__CLC_INTRINSIC ".v3f32"); +_CLC_OVERLOAD float4 __CLC_FUNCTION(float4 f) __asm(__CLC_INTRINSIC ".v4f32"); +_CLC_OVERLOAD float8 __CLC_FUNCTION(float8 f) __asm(__CLC_INTRINSIC ".v8f32"); +_CLC_OVERLOAD float16 __CLC_FUNCTION(float16 f) __asm(__CLC_INTRINSIC ".v16f32"); + +#ifdef cl_khr_fp64 +_CLC_OVERLOAD double __CLC_FUNCTION(double d) __asm(__CLC_INTRINSIC ".f64"); +_CLC_OVERLOAD double2 __CLC_FUNCTION(double2 d) __asm(__CLC_INTRINSIC ".v2f64"); +_CLC_OVERLOAD double3 __CLC_FUNCTION(double3 d) __asm(__CLC_INTRINSIC ".v3f64"); +_CLC_OVERLOAD double4 __CLC_FUNCTION(double4 d) __asm(__CLC_INTRINSIC ".v4f64"); +_CLC_OVERLOAD double8 __CLC_FUNCTION(double8 d) __asm(__CLC_INTRINSIC ".v8f64"); +_CLC_OVERLOAD double16 __CLC_FUNCTION(double16 d) __asm(__CLC_INTRINSIC ".v16f64"); +#endif + +#undef __CLC_FUNCTION +#undef __CLC_INTRINSIC diff --git a/libclc/generic/include/clc/relational/all.h b/libclc/generic/include/clc/relational/all.h new file mode 100644 index 0000000000000000000000000000000000000000..f8b0942444a2bab0750aa72a682622fdd74ed728 --- /dev/null +++ b/libclc/generic/include/clc/relational/all.h @@ -0,0 +1,18 @@ +#define _CLC_ALL_DECL(TYPE) \ + _CLC_OVERLOAD _CLC_DECL int all(TYPE v); + +#define _CLC_VECTOR_ALL_DECL(TYPE) \ + _CLC_ALL_DECL(TYPE) \ + _CLC_ALL_DECL(TYPE##2) \ + _CLC_ALL_DECL(TYPE##3) \ + _CLC_ALL_DECL(TYPE##4) \ + _CLC_ALL_DECL(TYPE##8) \ + _CLC_ALL_DECL(TYPE##16) + +_CLC_VECTOR_ALL_DECL(char) +_CLC_VECTOR_ALL_DECL(short) +_CLC_VECTOR_ALL_DECL(int) +_CLC_VECTOR_ALL_DECL(long) + +#undef _CLC_ALL_DECL +#undef _CLC_VECTOR_ALL_DECL diff --git a/libclc/generic/include/clc/relational/any.h b/libclc/generic/include/clc/relational/any.h new file mode 100644 index 0000000000000000000000000000000000000000..4687ed263793e515e58164168c9dfdad6aea9e44 --- /dev/null +++ b/libclc/generic/include/clc/relational/any.h @@ -0,0 +1,16 @@ + +#define _CLC_ANY_DECL(TYPE) \ + _CLC_OVERLOAD _CLC_DECL int any(TYPE v); + +#define _CLC_VECTOR_ANY_DECL(TYPE) \ + _CLC_ANY_DECL(TYPE) \ + _CLC_ANY_DECL(TYPE##2) \ + _CLC_ANY_DECL(TYPE##3) \ + _CLC_ANY_DECL(TYPE##4) \ + _CLC_ANY_DECL(TYPE##8) \ + _CLC_ANY_DECL(TYPE##16) + +_CLC_VECTOR_ANY_DECL(char) +_CLC_VECTOR_ANY_DECL(short) +_CLC_VECTOR_ANY_DECL(int) +_CLC_VECTOR_ANY_DECL(long) diff --git a/libclc/generic/include/clc/relational/binary_decl.inc b/libclc/generic/include/clc/relational/binary_decl.inc new file mode 100644 index 0000000000000000000000000000000000000000..c9e4aee839a17ca5e2988d15e6fe777bc193c910 --- /dev/null +++ b/libclc/generic/include/clc/relational/binary_decl.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_INTN __CLC_FUNCTION(__CLC_FLOATN a, __CLC_FLOATN b); diff --git a/libclc/generic/include/clc/relational/bitselect.h b/libclc/generic/include/clc/relational/bitselect.h new file mode 100644 index 0000000000000000000000000000000000000000..e91cbfded8b78b3976a21256329c7b78e4c6503f --- /dev/null +++ b/libclc/generic/include/clc/relational/bitselect.h @@ -0,0 +1 @@ +#define bitselect(x, y, z) ((x) ^ ((z) & ((y) ^ (x)))) diff --git a/libclc/generic/include/clc/relational/floatn.inc b/libclc/generic/include/clc/relational/floatn.inc new file mode 100644 index 0000000000000000000000000000000000000000..8d7fd52cc7da931fc03eb0fd08091b039f06ed71 --- /dev/null +++ b/libclc/generic/include/clc/relational/floatn.inc @@ -0,0 +1,81 @@ + +#define __CLC_FLOATN float +#define __CLC_INTN int +#include __CLC_BODY +#undef __CLC_INTN +#undef __CLC_FLOATN + +#define __CLC_FLOATN float2 +#define __CLC_INTN int2 +#include __CLC_BODY +#undef __CLC_INTN +#undef __CLC_FLOATN + +#define __CLC_FLOATN float3 +#define __CLC_INTN int3 +#include __CLC_BODY +#undef __CLC_INTN +#undef __CLC_FLOATN + +#define __CLC_FLOATN float4 +#define __CLC_INTN int4 +#include __CLC_BODY +#undef __CLC_INTN +#undef __CLC_FLOATN + +#define __CLC_FLOATN float8 +#define __CLC_INTN int8 +#include __CLC_BODY +#undef __CLC_INTN +#undef __CLC_FLOATN + +#define __CLC_FLOATN float16 +#define __CLC_INTN int16 +#include __CLC_BODY +#undef __CLC_INTN +#undef __CLC_FLOATN + +#undef __CLC_FLOAT +#undef __CLC_INT + +#ifdef cl_khr_fp64 + +#define __CLC_FLOATN double +#define __CLC_INTN int +#include __CLC_BODY +#undef __CLC_INTN +#undef __CLC_FLOATN + +#define __CLC_FLOATN double2 +#define __CLC_INTN long2 +#include __CLC_BODY +#undef __CLC_INTN +#undef __CLC_FLOATN + +#define __CLC_FLOATN double3 +#define __CLC_INTN long3 +#include __CLC_BODY +#undef __CLC_INTN +#undef __CLC_FLOATN + +#define __CLC_FLOATN double4 +#define __CLC_INTN long4 +#include __CLC_BODY +#undef __CLC_INTN +#undef __CLC_FLOATN + +#define __CLC_FLOATN double8 +#define __CLC_INTN long8 +#include __CLC_BODY +#undef __CLC_INTN +#undef __CLC_FLOATN + +#define __CLC_FLOATN double16 +#define __CLC_INTN long16 +#include __CLC_BODY +#undef __CLC_INTN +#undef __CLC_FLOATN + +#endif + +#undef __CLC_BODY diff --git a/libclc/generic/include/clc/relational/isequal.h b/libclc/generic/include/clc/relational/isequal.h new file mode 100644 index 0000000000000000000000000000000000000000..c28a98565ee369b7c037ece0c29cf7b90ec4033d --- /dev/null +++ b/libclc/generic/include/clc/relational/isequal.h @@ -0,0 +1,20 @@ +#define _CLC_ISEQUAL_DECL(TYPE, RETTYPE) \ + _CLC_OVERLOAD _CLC_DECL RETTYPE isequal(TYPE x, TYPE y); + +#define _CLC_VECTOR_ISEQUAL_DECL(TYPE, RETTYPE) \ + _CLC_ISEQUAL_DECL(TYPE##2, RETTYPE##2) \ + _CLC_ISEQUAL_DECL(TYPE##3, RETTYPE##3) \ + _CLC_ISEQUAL_DECL(TYPE##4, RETTYPE##4) \ + _CLC_ISEQUAL_DECL(TYPE##8, RETTYPE##8) \ + _CLC_ISEQUAL_DECL(TYPE##16, RETTYPE##16) + +_CLC_ISEQUAL_DECL(float, int) +_CLC_VECTOR_ISEQUAL_DECL(float, int) + +#ifdef cl_khr_fp64 +_CLC_ISEQUAL_DECL(double, int) +_CLC_VECTOR_ISEQUAL_DECL(double, long) +#endif + +#undef _CLC_ISEQUAL_DECL +#undef _CLC_VECTOR_ISEQUAL_DEC diff --git a/libclc/generic/include/clc/relational/isgreater.h b/libclc/generic/include/clc/relational/isgreater.h new file mode 100644 index 0000000000000000000000000000000000000000..d17ae0c00c8262e0a45e6115356006feb655e9cd --- /dev/null +++ b/libclc/generic/include/clc/relational/isgreater.h @@ -0,0 +1,9 @@ +#undef isgreater + +#define __CLC_FUNCTION isgreater +#define __CLC_BODY <clc/relational/binary_decl.inc> + +#include <clc/relational/floatn.inc> + +#undef __CLC_BODY +#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/relational/isgreaterequal.h b/libclc/generic/include/clc/relational/isgreaterequal.h new file mode 100644 index 0000000000000000000000000000000000000000..835332858d296155bb73104cedd201377d163d00 --- /dev/null +++ b/libclc/generic/include/clc/relational/isgreaterequal.h @@ -0,0 +1,9 @@ +#undef isgreaterequal + +#define __CLC_FUNCTION isgreaterequal +#define __CLC_BODY <clc/relational/binary_decl.inc> + +#include <clc/relational/floatn.inc> + +#undef __CLC_BODY +#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/relational/isless.h b/libclc/generic/include/clc/relational/isless.h new file mode 100644 index 0000000000000000000000000000000000000000..1debd87f386e98133049490a1082c98d9fdb6230 --- /dev/null +++ b/libclc/generic/include/clc/relational/isless.h @@ -0,0 +1,7 @@ +#define __CLC_FUNCTION isless +#define __CLC_BODY <clc/relational/binary_decl.inc> + +#include <clc/relational/floatn.inc> + +#undef __CLC_BODY +#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/relational/islessequal.h b/libclc/generic/include/clc/relational/islessequal.h new file mode 100644 index 0000000000000000000000000000000000000000..e6a99d7f21c8bd209a4fb3670c2bcc9eaea5027a --- /dev/null +++ b/libclc/generic/include/clc/relational/islessequal.h @@ -0,0 +1,7 @@ +#define __CLC_FUNCTION islessequal +#define __CLC_BODY <clc/relational/binary_decl.inc> + +#include <clc/relational/floatn.inc> + +#undef __CLC_BODY +#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/relational/isnan.h b/libclc/generic/include/clc/relational/isnan.h new file mode 100644 index 0000000000000000000000000000000000000000..93eb9dffb4240cd4afc1139fcc504f230031ee70 --- /dev/null +++ b/libclc/generic/include/clc/relational/isnan.h @@ -0,0 +1,21 @@ + +#define _CLC_ISNAN_DECL(RET_TYPE, ARG_TYPE) \ + _CLC_OVERLOAD _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) \ + _CLC_ISNAN_DECL(RET_TYPE##3, ARG_TYPE##3) \ + _CLC_ISNAN_DECL(RET_TYPE##4, ARG_TYPE##4) \ + _CLC_ISNAN_DECL(RET_TYPE##8, ARG_TYPE##8) \ + _CLC_ISNAN_DECL(RET_TYPE##16, ARG_TYPE##16) + +_CLC_ISNAN_DECL(int, float) +_CLC_VECTOR_ISNAN_DECL(int, float) + +#ifdef cl_khr_fp64 +_CLC_ISNAN_DECL(int, double) +_CLC_VECTOR_ISNAN_DECL(long, double) +#endif + +#undef _CLC_ISNAN_DECL +#undef _CLC_VECTOR_ISNAN_DECL diff --git a/libclc/generic/include/clc/relational/isnotequal.h b/libclc/generic/include/clc/relational/isnotequal.h new file mode 100644 index 0000000000000000000000000000000000000000..f2ceea2110469c2bdfe515c439c1e154a03a61c9 --- /dev/null +++ b/libclc/generic/include/clc/relational/isnotequal.h @@ -0,0 +1,9 @@ +#undef isnotequal + +#define __CLC_FUNCTION isnotequal +#define __CLC_BODY <clc/relational/binary_decl.inc> + +#include <clc/relational/floatn.inc> + +#undef __CLC_BODY +#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/relational/select.h b/libclc/generic/include/clc/relational/select.h new file mode 100644 index 0000000000000000000000000000000000000000..33a6909fb929c5bbb2c88239e93c19b8a78f26e2 --- /dev/null +++ b/libclc/generic/include/clc/relational/select.h @@ -0,0 +1 @@ +#define select(a, b, c) ((c) ? (b) : (a)) diff --git a/libclc/generic/include/clc/relational/signbit.h b/libclc/generic/include/clc/relational/signbit.h new file mode 100644 index 0000000000000000000000000000000000000000..41e5284bb34c4bbfb9b2aaa91df3039b7cad9f36 --- /dev/null +++ b/libclc/generic/include/clc/relational/signbit.h @@ -0,0 +1,9 @@ +#undef signbit + +#define __CLC_FUNCTION signbit +#define __CLC_BODY <clc/relational/unary_decl.inc> + +#include <clc/relational/floatn.inc> + +#undef __CLC_BODY +#undef __CLC_FUNCTION diff --git a/libclc/generic/include/clc/relational/unary_decl.inc b/libclc/generic/include/clc/relational/unary_decl.inc new file mode 100644 index 0000000000000000000000000000000000000000..ab9b776a46ecfbd6ab8e62fe6ca5fff628781366 --- /dev/null +++ b/libclc/generic/include/clc/relational/unary_decl.inc @@ -0,0 +1 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_INTN __CLC_FUNCTION(__CLC_FLOATN x); diff --git a/libclc/generic/include/clc/shared/clamp.h b/libclc/generic/include/clc/shared/clamp.h new file mode 100644 index 0000000000000000000000000000000000000000..a389b85d2666e339554a1da238d4a6df83b2dda6 --- /dev/null +++ b/libclc/generic/include/clc/shared/clamp.h @@ -0,0 +1,5 @@ +#define __CLC_BODY <clc/shared/clamp.inc> +#include <clc/integer/gentype.inc> + +#define __CLC_BODY <clc/shared/clamp.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/shared/clamp.inc b/libclc/generic/include/clc/shared/clamp.inc new file mode 100644 index 0000000000000000000000000000000000000000..aaff9d0ff07f07137faab587db1c13240730b637 --- /dev/null +++ b/libclc/generic/include/clc/shared/clamp.inc @@ -0,0 +1,5 @@ +_CLC_OVERLOAD _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); +#endif diff --git a/libclc/generic/include/clc/shared/max.h b/libclc/generic/include/clc/shared/max.h new file mode 100644 index 0000000000000000000000000000000000000000..ee20b9e64df76b6e1a2433655cd01ef9f4273277 --- /dev/null +++ b/libclc/generic/include/clc/shared/max.h @@ -0,0 +1,5 @@ +#define __CLC_BODY <clc/shared/max.inc> +#include <clc/integer/gentype.inc> + +#define __CLC_BODY <clc/shared/max.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/shared/max.inc b/libclc/generic/include/clc/shared/max.inc new file mode 100644 index 0000000000000000000000000000000000000000..590107435e66a28d1eb369f7a2e3685b5b6bc247 --- /dev/null +++ b/libclc/generic/include/clc/shared/max.inc @@ -0,0 +1,5 @@ +_CLC_OVERLOAD _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); +#endif diff --git a/libclc/generic/include/clc/shared/min.h b/libclc/generic/include/clc/shared/min.h new file mode 100644 index 0000000000000000000000000000000000000000..e11d9f9551ff95f58c4dab923de6839de2c4ebd1 --- /dev/null +++ b/libclc/generic/include/clc/shared/min.h @@ -0,0 +1,5 @@ +#define __CLC_BODY <clc/shared/min.inc> +#include <clc/integer/gentype.inc> + +#define __CLC_BODY <clc/shared/min.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/include/clc/shared/min.inc b/libclc/generic/include/clc/shared/min.inc new file mode 100644 index 0000000000000000000000000000000000000000..d8c1568a590c1b8572d58e96af0cbc039d01209b --- /dev/null +++ b/libclc/generic/include/clc/shared/min.inc @@ -0,0 +1,5 @@ +_CLC_OVERLOAD _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); +#endif diff --git a/libclc/generic/include/clc/shared/vload.h b/libclc/generic/include/clc/shared/vload.h new file mode 100644 index 0000000000000000000000000000000000000000..93d07501d4a10a914daf617ad52d262cc138d7ba --- /dev/null +++ b/libclc/generic/include/clc/shared/vload.h @@ -0,0 +1,37 @@ +#define _CLC_VLOAD_DECL(PRIM_TYPE, VEC_TYPE, WIDTH, ADDR_SPACE) \ + _CLC_OVERLOAD _CLC_DECL VEC_TYPE vload##WIDTH(size_t offset, const ADDR_SPACE PRIM_TYPE *x); + +#define _CLC_VECTOR_VLOAD_DECL(PRIM_TYPE, ADDR_SPACE) \ + _CLC_VLOAD_DECL(PRIM_TYPE, PRIM_TYPE##2, 2, ADDR_SPACE) \ + _CLC_VLOAD_DECL(PRIM_TYPE, PRIM_TYPE##3, 3, ADDR_SPACE) \ + _CLC_VLOAD_DECL(PRIM_TYPE, PRIM_TYPE##4, 4, ADDR_SPACE) \ + _CLC_VLOAD_DECL(PRIM_TYPE, PRIM_TYPE##8, 8, ADDR_SPACE) \ + _CLC_VLOAD_DECL(PRIM_TYPE, PRIM_TYPE##16, 16, ADDR_SPACE) + +#define _CLC_VECTOR_VLOAD_PRIM1(PRIM_TYPE) \ + _CLC_VECTOR_VLOAD_DECL(PRIM_TYPE, __private) \ + _CLC_VECTOR_VLOAD_DECL(PRIM_TYPE, __local) \ + _CLC_VECTOR_VLOAD_DECL(PRIM_TYPE, __constant) \ + _CLC_VECTOR_VLOAD_DECL(PRIM_TYPE, __global) \ + +#define _CLC_VECTOR_VLOAD_PRIM() \ + _CLC_VECTOR_VLOAD_PRIM1(char) \ + _CLC_VECTOR_VLOAD_PRIM1(uchar) \ + _CLC_VECTOR_VLOAD_PRIM1(short) \ + _CLC_VECTOR_VLOAD_PRIM1(ushort) \ + _CLC_VECTOR_VLOAD_PRIM1(int) \ + _CLC_VECTOR_VLOAD_PRIM1(uint) \ + _CLC_VECTOR_VLOAD_PRIM1(long) \ + _CLC_VECTOR_VLOAD_PRIM1(ulong) \ + _CLC_VECTOR_VLOAD_PRIM1(float) \ + +#ifdef cl_khr_fp64 +#define _CLC_VECTOR_VLOAD() \ + _CLC_VECTOR_VLOAD_PRIM1(double) \ + _CLC_VECTOR_VLOAD_PRIM() +#else +#define _CLC_VECTOR_VLOAD() \ + _CLC_VECTOR_VLOAD_PRIM() +#endif + +_CLC_VECTOR_VLOAD() diff --git a/libclc/generic/include/clc/shared/vstore.h b/libclc/generic/include/clc/shared/vstore.h new file mode 100644 index 0000000000000000000000000000000000000000..1f784f82fec0c6bf30b991b2350c020d18442328 --- /dev/null +++ b/libclc/generic/include/clc/shared/vstore.h @@ -0,0 +1,36 @@ +#define _CLC_VSTORE_DECL(PRIM_TYPE, VEC_TYPE, WIDTH, ADDR_SPACE) \ + _CLC_OVERLOAD _CLC_DECL void vstore##WIDTH(VEC_TYPE vec, size_t offset, ADDR_SPACE PRIM_TYPE *out); + +#define _CLC_VECTOR_VSTORE_DECL(PRIM_TYPE, ADDR_SPACE) \ + _CLC_VSTORE_DECL(PRIM_TYPE, PRIM_TYPE##2, 2, ADDR_SPACE) \ + _CLC_VSTORE_DECL(PRIM_TYPE, PRIM_TYPE##3, 3, ADDR_SPACE) \ + _CLC_VSTORE_DECL(PRIM_TYPE, PRIM_TYPE##4, 4, ADDR_SPACE) \ + _CLC_VSTORE_DECL(PRIM_TYPE, PRIM_TYPE##8, 8, ADDR_SPACE) \ + _CLC_VSTORE_DECL(PRIM_TYPE, PRIM_TYPE##16, 16, ADDR_SPACE) + +#define _CLC_VECTOR_VSTORE_PRIM1(PRIM_TYPE) \ + _CLC_VECTOR_VSTORE_DECL(PRIM_TYPE, __private) \ + _CLC_VECTOR_VSTORE_DECL(PRIM_TYPE, __local) \ + _CLC_VECTOR_VSTORE_DECL(PRIM_TYPE, __global) \ + +#define _CLC_VECTOR_VSTORE_PRIM() \ + _CLC_VECTOR_VSTORE_PRIM1(char) \ + _CLC_VECTOR_VSTORE_PRIM1(uchar) \ + _CLC_VECTOR_VSTORE_PRIM1(short) \ + _CLC_VECTOR_VSTORE_PRIM1(ushort) \ + _CLC_VECTOR_VSTORE_PRIM1(int) \ + _CLC_VECTOR_VSTORE_PRIM1(uint) \ + _CLC_VECTOR_VSTORE_PRIM1(long) \ + _CLC_VECTOR_VSTORE_PRIM1(ulong) \ + _CLC_VECTOR_VSTORE_PRIM1(float) \ + +#ifdef cl_khr_fp64 +#define _CLC_VECTOR_VSTORE() \ + _CLC_VECTOR_VSTORE_PRIM1(double) \ + _CLC_VECTOR_VSTORE_PRIM() +#else +#define _CLC_VECTOR_VSTORE() \ + _CLC_VECTOR_VSTORE_PRIM() +#endif + +_CLC_VECTOR_VSTORE() diff --git a/libclc/generic/include/clc/synchronization/barrier.h b/libclc/generic/include/clc/synchronization/barrier.h new file mode 100644 index 0000000000000000000000000000000000000000..7167a3d3f0937a2ae21df2fe82f362b853b3d7dc --- /dev/null +++ b/libclc/generic/include/clc/synchronization/barrier.h @@ -0,0 +1 @@ +_CLC_DECL void barrier(cl_mem_fence_flags flags); diff --git a/libclc/generic/include/clc/synchronization/cl_mem_fence_flags.h b/libclc/generic/include/clc/synchronization/cl_mem_fence_flags.h new file mode 100644 index 0000000000000000000000000000000000000000..c57eb4249a413a900c92709841b45b3a0fae5dfa --- /dev/null +++ b/libclc/generic/include/clc/synchronization/cl_mem_fence_flags.h @@ -0,0 +1,4 @@ +typedef uint cl_mem_fence_flags; + +#define CLK_LOCAL_MEM_FENCE 1 +#define CLK_GLOBAL_MEM_FENCE 2 diff --git a/libclc/generic/include/clc/workitem/get_global_id.h b/libclc/generic/include/clc/workitem/get_global_id.h new file mode 100644 index 0000000000000000000000000000000000000000..92759f146894036c278d7942ec073ea7dce46e39 --- /dev/null +++ b/libclc/generic/include/clc/workitem/get_global_id.h @@ -0,0 +1 @@ +_CLC_DECL size_t get_global_id(uint dim); diff --git a/libclc/generic/include/clc/workitem/get_global_size.h b/libclc/generic/include/clc/workitem/get_global_size.h new file mode 100644 index 0000000000000000000000000000000000000000..2f837058539739558e2a7d1615ea8f6810742cd5 --- /dev/null +++ b/libclc/generic/include/clc/workitem/get_global_size.h @@ -0,0 +1 @@ +_CLC_DECL size_t get_global_size(uint dim); diff --git a/libclc/generic/include/clc/workitem/get_group_id.h b/libclc/generic/include/clc/workitem/get_group_id.h new file mode 100644 index 0000000000000000000000000000000000000000..346c82c6c316f5f8202cd181d3a333ad507c6132 --- /dev/null +++ b/libclc/generic/include/clc/workitem/get_group_id.h @@ -0,0 +1 @@ +_CLC_DECL size_t get_group_id(uint dim); diff --git a/libclc/generic/include/clc/workitem/get_local_id.h b/libclc/generic/include/clc/workitem/get_local_id.h new file mode 100644 index 0000000000000000000000000000000000000000..169aeed867869c0613aff49d52d75ac9ed5f6114 --- /dev/null +++ b/libclc/generic/include/clc/workitem/get_local_id.h @@ -0,0 +1 @@ +_CLC_DECL size_t get_local_id(uint dim); diff --git a/libclc/generic/include/clc/workitem/get_local_size.h b/libclc/generic/include/clc/workitem/get_local_size.h new file mode 100644 index 0000000000000000000000000000000000000000..040ec58a3d8bb5d817173aa5631029210c1d3c6d --- /dev/null +++ b/libclc/generic/include/clc/workitem/get_local_size.h @@ -0,0 +1 @@ +_CLC_DECL size_t get_local_size(uint dim); diff --git a/libclc/generic/include/clc/workitem/get_num_groups.h b/libclc/generic/include/clc/workitem/get_num_groups.h new file mode 100644 index 0000000000000000000000000000000000000000..e555c7efc2d2a7b4ebb900ba40e7bc5a6eda2d7c --- /dev/null +++ b/libclc/generic/include/clc/workitem/get_num_groups.h @@ -0,0 +1 @@ +_CLC_DECL size_t get_num_groups(uint dim); diff --git a/libclc/generic/include/math/clc_nextafter.h b/libclc/generic/include/math/clc_nextafter.h new file mode 100644 index 0000000000000000000000000000000000000000..2b674b7079568f2f217c9232da28b8db01aaedf8 --- /dev/null +++ b/libclc/generic/include/math/clc_nextafter.h @@ -0,0 +1,7 @@ +#define __CLC_BODY <clc/math/binary_decl.inc> +#define __CLC_FUNCTION __clc_nextafter + +#include <clc/math/gentype.inc> + +#undef __CLC_BODY +#undef __CLC_FUNCTION diff --git a/libclc/generic/lib/SOURCES b/libclc/generic/lib/SOURCES new file mode 100644 index 0000000000000000000000000000000000000000..bfdec7b7cd4c96ef31a2588ebf758ac3ce37e3ea --- /dev/null +++ b/libclc/generic/lib/SOURCES @@ -0,0 +1,64 @@ +atomic/atomic_impl.ll +cl_khr_global_int32_base_atomics/atom_add.cl +cl_khr_global_int32_base_atomics/atom_dec.cl +cl_khr_global_int32_base_atomics/atom_inc.cl +cl_khr_global_int32_base_atomics/atom_sub.cl +convert.cl +common/sign.cl +geometric/cross.cl +geometric/dot.cl +geometric/length.cl +geometric/normalize.cl +integer/abs.cl +integer/abs_diff.cl +integer/add_sat.cl +integer/add_sat_if.ll +integer/add_sat_impl.ll +integer/clz.cl +integer/clz_if.ll +integer/clz_impl.ll +integer/hadd.cl +integer/mad24.cl +integer/mul24.cl +integer/mul_hi.cl +integer/rhadd.cl +integer/rotate.cl +integer/sub_sat.cl +integer/sub_sat_if.ll +integer/sub_sat_impl.ll +integer/upsample.cl +math/atan.cl +math/atan2.cl +math/cos.cl +math/exp.cl +math/exp10.cl +math/fmax.cl +math/fmin.cl +math/hypot.cl +math/mad.cl +math/mix.cl +math/clc_nextafter.cl +math/nextafter.cl +math/pown.cl +math/sin.cl +math/sincos.cl +math/sincos_helpers.cl +relational/all.cl +relational/any.cl +relational/isequal.cl +relational/isgreater.cl +relational/isgreaterequal.cl +relational/isless.cl +relational/islessequal.cl +relational/isnan.cl +relational/isnotequal.cl +relational/signbit.cl +shared/clamp.cl +shared/max.cl +shared/min.cl +shared/vload.cl +shared/vload_impl.ll +shared/vstore.cl +shared/vstore_impl.ll +workitem/get_global_id.cl +workitem/get_global_size.cl diff --git a/libclc/generic/lib/atomic/atomic_impl.ll b/libclc/generic/lib/atomic/atomic_impl.ll new file mode 100644 index 0000000000000000000000000000000000000000..9df5b9f3c55b5b4b3297c49e51d5ea2823ece69d --- /dev/null +++ b/libclc/generic/lib/atomic/atomic_impl.ll @@ -0,0 +1,23 @@ +define i32 @__clc_atomic_add_addr1(i32 addrspace(1)* nocapture %ptr, i32 %value) nounwind alwaysinline { +entry: + %0 = atomicrmw volatile add i32 addrspace(1)* %ptr, i32 %value seq_cst + ret i32 %0 +} + +define i32 @__clc_atomic_add_addr3(i32 addrspace(3)* nocapture %ptr, i32 %value) nounwind alwaysinline { +entry: + %0 = atomicrmw volatile add i32 addrspace(3)* %ptr, i32 %value seq_cst + ret i32 %0 +} + +define i32 @__clc_atomic_sub_addr1(i32 addrspace(1)* nocapture %ptr, i32 %value) nounwind alwaysinline { +entry: + %0 = atomicrmw volatile sub i32 addrspace(1)* %ptr, i32 %value seq_cst + ret i32 %0 +} + +define i32 @__clc_atomic_sub_addr3(i32 addrspace(3)* nocapture %ptr, i32 %value) nounwind alwaysinline { +entry: + %0 = atomicrmw volatile sub i32 addrspace(3)* %ptr, i32 %value seq_cst + ret i32 %0 +} diff --git a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl new file mode 100644 index 0000000000000000000000000000000000000000..9151b0ccf8d919a66a8af883c620a59b1bee01fa --- /dev/null +++ b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl @@ -0,0 +1,9 @@ +#include <clc/clc.h> + +#define IMPL(TYPE) \ +_CLC_OVERLOAD _CLC_DEF TYPE atom_add(global TYPE *p, TYPE val) { \ + return atomic_add(p, val); \ +} + +IMPL(int) +IMPL(unsigned int) diff --git a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl new file mode 100644 index 0000000000000000000000000000000000000000..a74158d45fc840e6b5746219b4e3bb3e53338c4d --- /dev/null +++ b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl @@ -0,0 +1,9 @@ +#include <clc/clc.h> + +#define IMPL(TYPE) \ +_CLC_OVERLOAD _CLC_DEF TYPE atom_dec(global TYPE *p) { \ + return atom_sub(p, 1); \ +} + +IMPL(int) +IMPL(unsigned int) diff --git a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl new file mode 100644 index 0000000000000000000000000000000000000000..1404b5aa4477ddb1fad1b30dd1d077a490142f52 --- /dev/null +++ b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl @@ -0,0 +1,9 @@ +#include <clc/clc.h> + +#define IMPL(TYPE) \ +_CLC_OVERLOAD _CLC_DEF TYPE atom_inc(global TYPE *p) { \ + return atom_add(p, 1); \ +} + +IMPL(int) +IMPL(unsigned int) diff --git a/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl new file mode 100644 index 0000000000000000000000000000000000000000..7faa3cc040f0e02d336879c22e92193a841be54e --- /dev/null +++ b/libclc/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl @@ -0,0 +1,9 @@ +#include <clc/clc.h> + +#define IMPL(TYPE) \ +_CLC_OVERLOAD _CLC_DEF TYPE atom_sub(global TYPE *p, TYPE val) { \ + return atomic_sub(p, val); \ +} + +IMPL(int) +IMPL(unsigned int) diff --git a/libclc/generic/lib/clcmacro.h b/libclc/generic/lib/clcmacro.h new file mode 100644 index 0000000000000000000000000000000000000000..730073ae1f9922cfaf3d56856ae099fa0d72956c --- /dev/null +++ b/libclc/generic/lib/clcmacro.h @@ -0,0 +1,54 @@ +#define _CLC_UNARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE) \ + DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x) { \ + return (RET_TYPE##2)(FUNCTION(x.x), FUNCTION(x.y)); \ + } \ +\ + DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x) { \ + return (RET_TYPE##3)(FUNCTION(x.x), FUNCTION(x.y), FUNCTION(x.z)); \ + } \ +\ + DECLSPEC RET_TYPE##4 FUNCTION(ARG1_TYPE##4 x) { \ + return (RET_TYPE##4)(FUNCTION(x.lo), FUNCTION(x.hi)); \ + } \ +\ + DECLSPEC RET_TYPE##8 FUNCTION(ARG1_TYPE##8 x) { \ + return (RET_TYPE##8)(FUNCTION(x.lo), FUNCTION(x.hi)); \ + } \ +\ + DECLSPEC RET_TYPE##16 FUNCTION(ARG1_TYPE##16 x) { \ + return (RET_TYPE##16)(FUNCTION(x.lo), FUNCTION(x.hi)); \ + } + +#define _CLC_BINARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, ARG2_TYPE) \ + DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x, ARG2_TYPE##2 y) { \ + return (RET_TYPE##2)(FUNCTION(x.x, y.x), FUNCTION(x.y, y.y)); \ + } \ +\ + DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x, ARG2_TYPE##3 y) { \ + return (RET_TYPE##3)(FUNCTION(x.x, y.x), FUNCTION(x.y, y.y), \ + FUNCTION(x.z, y.z)); \ + } \ +\ + DECLSPEC RET_TYPE##4 FUNCTION(ARG1_TYPE##4 x, ARG2_TYPE##4 y) { \ + return (RET_TYPE##4)(FUNCTION(x.lo, y.lo), FUNCTION(x.hi, y.hi)); \ + } \ +\ + DECLSPEC RET_TYPE##8 FUNCTION(ARG1_TYPE##8 x, ARG2_TYPE##8 y) { \ + return (RET_TYPE##8)(FUNCTION(x.lo, y.lo), FUNCTION(x.hi, y.hi)); \ + } \ +\ + DECLSPEC RET_TYPE##16 FUNCTION(ARG1_TYPE##16 x, ARG2_TYPE##16 y) { \ + return (RET_TYPE##16)(FUNCTION(x.lo, y.lo), FUNCTION(x.hi, y.hi)); \ + } + +#define _CLC_DEFINE_BINARY_BUILTIN(RET_TYPE, FUNCTION, BUILTIN, ARG1_TYPE, ARG2_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y) { \ + return BUILTIN(x, y); \ +} \ +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, RET_TYPE, FUNCTION, ARG1_TYPE, ARG2_TYPE) + +#define _CLC_DEFINE_UNARY_BUILTIN(RET_TYPE, FUNCTION, BUILTIN, ARG1_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x) { \ + return BUILTIN(x); \ +} \ +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, RET_TYPE, FUNCTION, ARG1_TYPE) diff --git a/libclc/generic/lib/common/sign.cl b/libclc/generic/lib/common/sign.cl new file mode 100644 index 0000000000000000000000000000000000000000..25832e0b4f8b929e0f3be55249b391b59f439b3e --- /dev/null +++ b/libclc/generic/lib/common/sign.cl @@ -0,0 +1,28 @@ +#include <clc/clc.h> +#include "../clcmacro.h" + +#define SIGN(TYPE, F) \ +_CLC_DEF _CLC_OVERLOAD TYPE sign(TYPE x) { \ + if (isnan(x)) { \ + return 0.0F; \ + } \ + if (x > 0.0F) { \ + return 1.0F; \ + } \ + if (x < 0.0F) { \ + return -1.0F; \ + } \ + return x; /* -0.0 or +0.0 */ \ +} + +SIGN(float, f) +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, sign, float) + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +SIGN(double, ) +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, sign, double) + +#endif diff --git a/libclc/generic/lib/convert.cl b/libclc/generic/lib/convert.cl new file mode 100644 index 0000000000000000000000000000000000000000..92bfc51cadfa2017dd2b6d8976a7b3fb17db54b3 --- /dev/null +++ b/libclc/generic/lib/convert.cl @@ -0,0 +1,36114 @@ +/* !!!! AUTOGENERATED FILE generated by convert_type.py !!!!! + + DON'T CHANGE THIS FILE. MAKE YOUR CHANGES TO convert_type.py AND RUN: + $ ./generate-conversion-type-cl.sh + + OpenCL type conversion functions + + Copyright (c) 2013 Victor Oliveira <victormatheus@gmail.com> + Copyright (c) 2013 Jesse Towner <jessetowner@lavabit.com> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +#include <clc/clc.h> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + + +_CLC_DEF _CLC_OVERLOAD +char convert_char(char x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2(char2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4(char4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8(char8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16(char16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3(char3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar(char x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2(char2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4(char4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8(char8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16(char16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3(char3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short(char x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2(char2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4(char4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8(char8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16(char16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3(char3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort(char x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2(char2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4(char4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8(char8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16(char16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3(char3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int(char x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2(char2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4(char4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8(char8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16(char16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3(char3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint(char x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2(char2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4(char4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8(char8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16(char16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3(char3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long(char x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2(char2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4(char4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8(char8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16(char16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3(char3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong(char x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2(char2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4(char4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8(char8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16(char16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3(char3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float(char x) +{ + return (float)x; +} + +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2(char2 x) +{ + return (float2)(convert_float(x.lo), convert_float(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4(char4 x) +{ + return (float4)(convert_float2(x.lo), convert_float2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8(char8 x) +{ + return (float8)(convert_float4(x.lo), convert_float4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16(char16 x) +{ + return (float16)(convert_float8(x.lo), convert_float8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3(char3 x) +{ + return (float3)(convert_float2(x.s01), convert_float(x.s2)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double(char x) +{ + return (double)x; +} + +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2(char2 x) +{ + return (double2)(convert_double(x.lo), convert_double(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4(char4 x) +{ + return (double4)(convert_double2(x.lo), convert_double2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8(char8 x) +{ + return (double8)(convert_double4(x.lo), convert_double4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16(char16 x) +{ + return (double16)(convert_double8(x.lo), convert_double8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3(char3 x) +{ + return (double3)(convert_double2(x.s01), convert_double(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char(uchar x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2(uchar2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4(uchar4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8(uchar8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16(uchar16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3(uchar3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar(uchar x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2(uchar2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4(uchar4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8(uchar8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16(uchar16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3(uchar3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short(uchar x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2(uchar2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4(uchar4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8(uchar8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16(uchar16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3(uchar3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort(uchar x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2(uchar2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4(uchar4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8(uchar8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16(uchar16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3(uchar3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int(uchar x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2(uchar2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4(uchar4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8(uchar8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16(uchar16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3(uchar3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint(uchar x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2(uchar2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4(uchar4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8(uchar8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16(uchar16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3(uchar3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long(uchar x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2(uchar2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4(uchar4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8(uchar8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16(uchar16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3(uchar3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong(uchar x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2(uchar2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4(uchar4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8(uchar8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16(uchar16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3(uchar3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float(uchar x) +{ + return (float)x; +} + +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2(uchar2 x) +{ + return (float2)(convert_float(x.lo), convert_float(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4(uchar4 x) +{ + return (float4)(convert_float2(x.lo), convert_float2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8(uchar8 x) +{ + return (float8)(convert_float4(x.lo), convert_float4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16(uchar16 x) +{ + return (float16)(convert_float8(x.lo), convert_float8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3(uchar3 x) +{ + return (float3)(convert_float2(x.s01), convert_float(x.s2)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double(uchar x) +{ + return (double)x; +} + +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2(uchar2 x) +{ + return (double2)(convert_double(x.lo), convert_double(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4(uchar4 x) +{ + return (double4)(convert_double2(x.lo), convert_double2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8(uchar8 x) +{ + return (double8)(convert_double4(x.lo), convert_double4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16(uchar16 x) +{ + return (double16)(convert_double8(x.lo), convert_double8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3(uchar3 x) +{ + return (double3)(convert_double2(x.s01), convert_double(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char(short x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2(short2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4(short4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8(short8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16(short16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3(short3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar(short x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2(short2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4(short4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8(short8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16(short16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3(short3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short(short x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2(short2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4(short4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8(short8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16(short16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3(short3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort(short x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2(short2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4(short4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8(short8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16(short16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3(short3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int(short x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2(short2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4(short4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8(short8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16(short16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3(short3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint(short x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2(short2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4(short4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8(short8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16(short16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3(short3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long(short x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2(short2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4(short4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8(short8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16(short16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3(short3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong(short x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2(short2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4(short4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8(short8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16(short16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3(short3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float(short x) +{ + return (float)x; +} + +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2(short2 x) +{ + return (float2)(convert_float(x.lo), convert_float(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4(short4 x) +{ + return (float4)(convert_float2(x.lo), convert_float2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8(short8 x) +{ + return (float8)(convert_float4(x.lo), convert_float4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16(short16 x) +{ + return (float16)(convert_float8(x.lo), convert_float8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3(short3 x) +{ + return (float3)(convert_float2(x.s01), convert_float(x.s2)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double(short x) +{ + return (double)x; +} + +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2(short2 x) +{ + return (double2)(convert_double(x.lo), convert_double(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4(short4 x) +{ + return (double4)(convert_double2(x.lo), convert_double2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8(short8 x) +{ + return (double8)(convert_double4(x.lo), convert_double4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16(short16 x) +{ + return (double16)(convert_double8(x.lo), convert_double8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3(short3 x) +{ + return (double3)(convert_double2(x.s01), convert_double(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char(ushort x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2(ushort2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4(ushort4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8(ushort8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16(ushort16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3(ushort3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar(ushort x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2(ushort2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4(ushort4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8(ushort8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16(ushort16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3(ushort3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short(ushort x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2(ushort2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4(ushort4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8(ushort8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16(ushort16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3(ushort3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort(ushort x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2(ushort2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4(ushort4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8(ushort8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16(ushort16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3(ushort3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int(ushort x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2(ushort2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4(ushort4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8(ushort8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16(ushort16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3(ushort3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint(ushort x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2(ushort2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4(ushort4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8(ushort8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16(ushort16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3(ushort3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long(ushort x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2(ushort2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4(ushort4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8(ushort8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16(ushort16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3(ushort3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong(ushort x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2(ushort2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4(ushort4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8(ushort8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16(ushort16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3(ushort3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float(ushort x) +{ + return (float)x; +} + +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2(ushort2 x) +{ + return (float2)(convert_float(x.lo), convert_float(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4(ushort4 x) +{ + return (float4)(convert_float2(x.lo), convert_float2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8(ushort8 x) +{ + return (float8)(convert_float4(x.lo), convert_float4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16(ushort16 x) +{ + return (float16)(convert_float8(x.lo), convert_float8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3(ushort3 x) +{ + return (float3)(convert_float2(x.s01), convert_float(x.s2)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double(ushort x) +{ + return (double)x; +} + +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2(ushort2 x) +{ + return (double2)(convert_double(x.lo), convert_double(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4(ushort4 x) +{ + return (double4)(convert_double2(x.lo), convert_double2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8(ushort8 x) +{ + return (double8)(convert_double4(x.lo), convert_double4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16(ushort16 x) +{ + return (double16)(convert_double8(x.lo), convert_double8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3(ushort3 x) +{ + return (double3)(convert_double2(x.s01), convert_double(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char(int x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2(int2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4(int4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8(int8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16(int16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3(int3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar(int x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2(int2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4(int4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8(int8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16(int16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3(int3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short(int x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2(int2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4(int4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8(int8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16(int16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3(int3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort(int x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2(int2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4(int4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8(int8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16(int16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3(int3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int(int x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2(int2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4(int4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8(int8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16(int16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3(int3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint(int x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2(int2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4(int4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8(int8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16(int16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3(int3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long(int x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2(int2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4(int4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8(int8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16(int16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3(int3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong(int x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2(int2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4(int4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8(int8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16(int16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3(int3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float(int x) +{ + return (float)x; +} + +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2(int2 x) +{ + return (float2)(convert_float(x.lo), convert_float(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4(int4 x) +{ + return (float4)(convert_float2(x.lo), convert_float2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8(int8 x) +{ + return (float8)(convert_float4(x.lo), convert_float4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16(int16 x) +{ + return (float16)(convert_float8(x.lo), convert_float8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3(int3 x) +{ + return (float3)(convert_float2(x.s01), convert_float(x.s2)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double(int x) +{ + return (double)x; +} + +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2(int2 x) +{ + return (double2)(convert_double(x.lo), convert_double(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4(int4 x) +{ + return (double4)(convert_double2(x.lo), convert_double2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8(int8 x) +{ + return (double8)(convert_double4(x.lo), convert_double4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16(int16 x) +{ + return (double16)(convert_double8(x.lo), convert_double8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3(int3 x) +{ + return (double3)(convert_double2(x.s01), convert_double(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char(uint x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2(uint2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4(uint4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8(uint8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16(uint16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3(uint3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar(uint x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2(uint2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4(uint4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8(uint8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16(uint16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3(uint3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short(uint x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2(uint2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4(uint4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8(uint8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16(uint16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3(uint3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort(uint x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2(uint2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4(uint4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8(uint8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16(uint16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3(uint3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int(uint x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2(uint2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4(uint4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8(uint8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16(uint16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3(uint3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint(uint x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2(uint2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4(uint4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8(uint8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16(uint16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3(uint3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long(uint x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2(uint2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4(uint4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8(uint8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16(uint16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3(uint3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong(uint x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2(uint2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4(uint4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8(uint8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16(uint16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3(uint3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float(uint x) +{ + return (float)x; +} + +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2(uint2 x) +{ + return (float2)(convert_float(x.lo), convert_float(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4(uint4 x) +{ + return (float4)(convert_float2(x.lo), convert_float2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8(uint8 x) +{ + return (float8)(convert_float4(x.lo), convert_float4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16(uint16 x) +{ + return (float16)(convert_float8(x.lo), convert_float8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3(uint3 x) +{ + return (float3)(convert_float2(x.s01), convert_float(x.s2)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double(uint x) +{ + return (double)x; +} + +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2(uint2 x) +{ + return (double2)(convert_double(x.lo), convert_double(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4(uint4 x) +{ + return (double4)(convert_double2(x.lo), convert_double2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8(uint8 x) +{ + return (double8)(convert_double4(x.lo), convert_double4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16(uint16 x) +{ + return (double16)(convert_double8(x.lo), convert_double8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3(uint3 x) +{ + return (double3)(convert_double2(x.s01), convert_double(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char(long x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2(long2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4(long4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8(long8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16(long16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3(long3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar(long x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2(long2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4(long4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8(long8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16(long16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3(long3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short(long x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2(long2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4(long4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8(long8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16(long16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3(long3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort(long x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2(long2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4(long4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8(long8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16(long16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3(long3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int(long x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2(long2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4(long4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8(long8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16(long16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3(long3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint(long x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2(long2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4(long4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8(long8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16(long16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3(long3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long(long x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2(long2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4(long4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8(long8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16(long16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3(long3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong(long x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2(long2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4(long4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8(long8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16(long16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3(long3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float convert_float(long x) +{ + return (float)x; +} + +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2(long2 x) +{ + return (float2)(convert_float(x.lo), convert_float(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4(long4 x) +{ + return (float4)(convert_float2(x.lo), convert_float2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8(long8 x) +{ + return (float8)(convert_float4(x.lo), convert_float4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16(long16 x) +{ + return (float16)(convert_float8(x.lo), convert_float8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3(long3 x) +{ + return (float3)(convert_float2(x.s01), convert_float(x.s2)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double convert_double(long x) +{ + return (double)x; +} + +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2(long2 x) +{ + return (double2)(convert_double(x.lo), convert_double(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4(long4 x) +{ + return (double4)(convert_double2(x.lo), convert_double2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8(long8 x) +{ + return (double8)(convert_double4(x.lo), convert_double4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16(long16 x) +{ + return (double16)(convert_double8(x.lo), convert_double8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3(long3 x) +{ + return (double3)(convert_double2(x.s01), convert_double(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char(ulong x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2(ulong2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4(ulong4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8(ulong8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16(ulong16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3(ulong3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar(ulong x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2(ulong2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4(ulong4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8(ulong8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16(ulong16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3(ulong3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short(ulong x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2(ulong2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4(ulong4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8(ulong8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16(ulong16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3(ulong3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort(ulong x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2(ulong2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4(ulong4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8(ulong8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16(ulong16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3(ulong3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int(ulong x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2(ulong2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4(ulong4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8(ulong8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16(ulong16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3(ulong3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint(ulong x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2(ulong2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4(ulong4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8(ulong8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16(ulong16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3(ulong3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long(ulong x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2(ulong2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4(ulong4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8(ulong8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16(ulong16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3(ulong3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong(ulong x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2(ulong2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4(ulong4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8(ulong8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16(ulong16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3(ulong3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float convert_float(ulong x) +{ + return (float)x; +} + +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2(ulong2 x) +{ + return (float2)(convert_float(x.lo), convert_float(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4(ulong4 x) +{ + return (float4)(convert_float2(x.lo), convert_float2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8(ulong8 x) +{ + return (float8)(convert_float4(x.lo), convert_float4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16(ulong16 x) +{ + return (float16)(convert_float8(x.lo), convert_float8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3(ulong3 x) +{ + return (float3)(convert_float2(x.s01), convert_float(x.s2)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double convert_double(ulong x) +{ + return (double)x; +} + +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2(ulong2 x) +{ + return (double2)(convert_double(x.lo), convert_double(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4(ulong4 x) +{ + return (double4)(convert_double2(x.lo), convert_double2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8(ulong8 x) +{ + return (double8)(convert_double4(x.lo), convert_double4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16(ulong16 x) +{ + return (double16)(convert_double8(x.lo), convert_double8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3(ulong3 x) +{ + return (double3)(convert_double2(x.s01), convert_double(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char(float x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2(float2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4(float4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8(float8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16(float16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3(float3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar(float x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2(float2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4(float4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8(float8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16(float16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3(float3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short(float x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2(float2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4(float4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8(float8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16(float16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3(float3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort(float x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2(float2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4(float4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8(float8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16(float16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3(float3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int(float x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2(float2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4(float4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8(float8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16(float16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3(float3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint(float x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2(float2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4(float4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8(float8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16(float16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3(float3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long(float x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2(float2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4(float4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8(float8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16(float16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3(float3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong(float x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2(float2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4(float4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8(float8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16(float16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3(float3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float(float x) +{ + return (float)x; +} + +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2(float2 x) +{ + return (float2)(convert_float(x.lo), convert_float(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4(float4 x) +{ + return (float4)(convert_float2(x.lo), convert_float2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8(float8 x) +{ + return (float8)(convert_float4(x.lo), convert_float4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16(float16 x) +{ + return (float16)(convert_float8(x.lo), convert_float8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3(float3 x) +{ + return (float3)(convert_float2(x.s01), convert_float(x.s2)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double(float x) +{ + return (double)x; +} + +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2(float2 x) +{ + return (double2)(convert_double(x.lo), convert_double(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4(float4 x) +{ + return (double4)(convert_double2(x.lo), convert_double2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8(float8 x) +{ + return (double8)(convert_double4(x.lo), convert_double4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16(float16 x) +{ + return (double16)(convert_double8(x.lo), convert_double8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3(float3 x) +{ + return (double3)(convert_double2(x.s01), convert_double(x.s2)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char convert_char(double x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2(double2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4(double4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8(double8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16(double16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3(double3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar(double x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2(double2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4(double4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8(double8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16(double16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3(double3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short convert_short(double x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2(double2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4(double4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8(double8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16(double16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3(double3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort(double x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2(double2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4(double4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8(double8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16(double16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3(double3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int convert_int(double x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2(double2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4(double4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8(double8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16(double16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3(double3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint(double x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2(double2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4(double4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8(double8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16(double16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3(double3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long convert_long(double x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2(double2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4(double4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8(double8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16(double16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3(double3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong(double x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2(double2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4(double4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8(double8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16(double16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3(double3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float convert_float(double x) +{ + return (float)x; +} + +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2(double2 x) +{ + return (float2)(convert_float(x.lo), convert_float(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4(double4 x) +{ + return (float4)(convert_float2(x.lo), convert_float2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8(double8 x) +{ + return (float8)(convert_float4(x.lo), convert_float4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16(double16 x) +{ + return (float16)(convert_float8(x.lo), convert_float8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3(double3 x) +{ + return (float3)(convert_float2(x.s01), convert_float(x.s2)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double(double x) +{ + return (double)x; +} + +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2(double2 x) +{ + return (double2)(convert_double(x.lo), convert_double(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4(double4 x) +{ + return (double4)(convert_double2(x.lo), convert_double2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8(double8 x) +{ + return (double8)(convert_double4(x.lo), convert_double4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16(double16 x) +{ + return (double16)(convert_double8(x.lo), convert_double8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3(double3 x) +{ + return (double3)(convert_double2(x.s01), convert_double(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtz(char x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtz(char2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtz(char4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtz(char8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtz(char16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtz(char3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rte(char x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rte(char2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rte(char4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rte(char8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rte(char16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rte(char3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtp(char x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtp(char2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtp(char4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtp(char8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtp(char16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtp(char3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtn(char x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtn(char2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtn(char4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtn(char8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtn(char16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtn(char3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtz(char x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtz(char2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtz(char4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtz(char8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtz(char16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtz(char3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rte(char x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rte(char2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rte(char4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rte(char8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rte(char16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rte(char3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtp(char x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtp(char2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtp(char4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtp(char8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtp(char16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtp(char3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtn(char x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtn(char2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtn(char4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtn(char8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtn(char16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtn(char3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtz(char x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtz(char2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtz(char4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtz(char8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtz(char16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtz(char3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rte(char x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rte(char2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rte(char4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rte(char8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rte(char16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rte(char3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtp(char x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtp(char2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtp(char4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtp(char8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtp(char16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtp(char3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtn(char x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtn(char2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtn(char4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtn(char8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtn(char16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtn(char3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtz(char x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtz(char2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtz(char4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtz(char8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtz(char16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtz(char3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rte(char x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rte(char2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rte(char4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rte(char8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rte(char16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rte(char3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtp(char x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtp(char2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtp(char4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtp(char8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtp(char16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtp(char3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtn(char x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtn(char2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtn(char4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtn(char8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtn(char16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtn(char3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtz(char x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtz(char2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtz(char4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtz(char8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtz(char16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtz(char3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rte(char x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rte(char2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rte(char4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rte(char8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rte(char16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rte(char3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtp(char x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtp(char2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtp(char4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtp(char8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtp(char16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtp(char3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtn(char x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtn(char2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtn(char4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtn(char8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtn(char16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtn(char3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtz(char x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtz(char2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtz(char4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtz(char8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtz(char16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtz(char3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rte(char x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rte(char2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rte(char4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rte(char8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rte(char16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rte(char3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtp(char x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtp(char2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtp(char4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtp(char8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtp(char16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtp(char3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtn(char x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtn(char2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtn(char4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtn(char8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtn(char16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtn(char3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtz(char x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtz(char2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtz(char4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtz(char8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtz(char16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtz(char3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rte(char x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rte(char2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rte(char4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rte(char8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rte(char16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rte(char3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtp(char x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtp(char2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtp(char4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtp(char8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtp(char16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtp(char3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtn(char x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtn(char2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtn(char4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtn(char8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtn(char16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtn(char3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtz(char x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtz(char2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtz(char4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtz(char8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtz(char16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtz(char3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rte(char x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rte(char2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rte(char4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rte(char8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rte(char16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rte(char3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtp(char x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtp(char2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtp(char4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtp(char8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtp(char16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtp(char3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtn(char x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtn(char2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtn(char4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtn(char8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtn(char16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtn(char3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtz(uchar x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtz(uchar2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtz(uchar4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtz(uchar8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtz(uchar16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtz(uchar3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rte(uchar x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rte(uchar2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rte(uchar4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rte(uchar8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rte(uchar16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rte(uchar3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtp(uchar x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtp(uchar2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtp(uchar4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtp(uchar8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtp(uchar16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtp(uchar3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtn(uchar x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtn(uchar2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtn(uchar4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtn(uchar8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtn(uchar16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtn(uchar3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtz(uchar x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtz(uchar2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtz(uchar4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtz(uchar8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtz(uchar16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtz(uchar3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rte(uchar x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rte(uchar2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rte(uchar4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rte(uchar8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rte(uchar16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rte(uchar3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtp(uchar x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtp(uchar2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtp(uchar4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtp(uchar8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtp(uchar16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtp(uchar3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtn(uchar x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtn(uchar2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtn(uchar4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtn(uchar8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtn(uchar16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtn(uchar3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtz(uchar x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtz(uchar2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtz(uchar4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtz(uchar8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtz(uchar16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtz(uchar3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rte(uchar x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rte(uchar2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rte(uchar4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rte(uchar8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rte(uchar16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rte(uchar3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtp(uchar x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtp(uchar2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtp(uchar4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtp(uchar8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtp(uchar16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtp(uchar3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtn(uchar x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtn(uchar2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtn(uchar4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtn(uchar8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtn(uchar16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtn(uchar3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtz(uchar x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtz(uchar2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtz(uchar4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtz(uchar8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtz(uchar16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtz(uchar3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rte(uchar x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rte(uchar2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rte(uchar4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rte(uchar8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rte(uchar16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rte(uchar3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtp(uchar x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtp(uchar2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtp(uchar4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtp(uchar8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtp(uchar16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtp(uchar3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtn(uchar x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtn(uchar2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtn(uchar4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtn(uchar8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtn(uchar16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtn(uchar3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtz(uchar x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtz(uchar2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtz(uchar4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtz(uchar8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtz(uchar16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtz(uchar3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rte(uchar x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rte(uchar2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rte(uchar4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rte(uchar8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rte(uchar16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rte(uchar3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtp(uchar x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtp(uchar2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtp(uchar4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtp(uchar8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtp(uchar16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtp(uchar3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtn(uchar x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtn(uchar2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtn(uchar4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtn(uchar8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtn(uchar16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtn(uchar3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtz(uchar x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtz(uchar2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtz(uchar4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtz(uchar8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtz(uchar16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtz(uchar3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rte(uchar x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rte(uchar2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rte(uchar4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rte(uchar8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rte(uchar16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rte(uchar3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtp(uchar x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtp(uchar2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtp(uchar4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtp(uchar8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtp(uchar16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtp(uchar3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtn(uchar x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtn(uchar2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtn(uchar4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtn(uchar8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtn(uchar16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtn(uchar3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtz(uchar x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtz(uchar2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtz(uchar4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtz(uchar8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtz(uchar16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtz(uchar3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rte(uchar x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rte(uchar2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rte(uchar4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rte(uchar8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rte(uchar16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rte(uchar3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtp(uchar x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtp(uchar2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtp(uchar4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtp(uchar8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtp(uchar16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtp(uchar3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtn(uchar x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtn(uchar2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtn(uchar4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtn(uchar8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtn(uchar16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtn(uchar3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtz(uchar x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtz(uchar2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtz(uchar4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtz(uchar8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtz(uchar16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtz(uchar3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rte(uchar x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rte(uchar2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rte(uchar4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rte(uchar8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rte(uchar16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rte(uchar3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtp(uchar x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtp(uchar2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtp(uchar4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtp(uchar8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtp(uchar16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtp(uchar3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtn(uchar x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtn(uchar2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtn(uchar4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtn(uchar8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtn(uchar16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtn(uchar3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtz(short x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtz(short2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtz(short4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtz(short8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtz(short16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtz(short3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rte(short x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rte(short2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rte(short4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rte(short8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rte(short16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rte(short3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtp(short x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtp(short2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtp(short4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtp(short8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtp(short16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtp(short3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtn(short x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtn(short2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtn(short4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtn(short8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtn(short16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtn(short3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtz(short x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtz(short2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtz(short4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtz(short8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtz(short16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtz(short3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rte(short x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rte(short2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rte(short4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rte(short8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rte(short16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rte(short3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtp(short x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtp(short2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtp(short4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtp(short8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtp(short16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtp(short3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtn(short x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtn(short2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtn(short4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtn(short8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtn(short16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtn(short3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtz(short x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtz(short2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtz(short4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtz(short8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtz(short16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtz(short3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rte(short x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rte(short2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rte(short4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rte(short8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rte(short16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rte(short3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtp(short x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtp(short2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtp(short4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtp(short8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtp(short16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtp(short3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtn(short x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtn(short2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtn(short4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtn(short8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtn(short16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtn(short3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtz(short x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtz(short2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtz(short4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtz(short8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtz(short16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtz(short3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rte(short x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rte(short2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rte(short4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rte(short8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rte(short16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rte(short3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtp(short x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtp(short2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtp(short4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtp(short8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtp(short16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtp(short3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtn(short x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtn(short2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtn(short4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtn(short8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtn(short16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtn(short3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtz(short x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtz(short2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtz(short4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtz(short8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtz(short16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtz(short3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rte(short x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rte(short2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rte(short4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rte(short8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rte(short16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rte(short3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtp(short x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtp(short2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtp(short4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtp(short8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtp(short16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtp(short3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtn(short x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtn(short2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtn(short4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtn(short8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtn(short16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtn(short3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtz(short x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtz(short2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtz(short4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtz(short8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtz(short16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtz(short3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rte(short x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rte(short2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rte(short4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rte(short8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rte(short16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rte(short3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtp(short x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtp(short2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtp(short4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtp(short8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtp(short16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtp(short3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtn(short x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtn(short2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtn(short4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtn(short8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtn(short16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtn(short3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtz(short x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtz(short2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtz(short4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtz(short8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtz(short16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtz(short3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rte(short x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rte(short2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rte(short4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rte(short8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rte(short16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rte(short3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtp(short x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtp(short2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtp(short4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtp(short8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtp(short16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtp(short3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtn(short x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtn(short2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtn(short4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtn(short8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtn(short16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtn(short3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtz(short x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtz(short2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtz(short4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtz(short8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtz(short16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtz(short3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rte(short x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rte(short2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rte(short4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rte(short8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rte(short16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rte(short3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtp(short x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtp(short2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtp(short4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtp(short8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtp(short16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtp(short3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtn(short x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtn(short2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtn(short4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtn(short8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtn(short16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtn(short3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtz(ushort x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtz(ushort2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtz(ushort4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtz(ushort8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtz(ushort16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtz(ushort3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rte(ushort x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rte(ushort2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rte(ushort4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rte(ushort8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rte(ushort16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rte(ushort3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtp(ushort x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtp(ushort2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtp(ushort4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtp(ushort8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtp(ushort16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtp(ushort3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtn(ushort x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtn(ushort2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtn(ushort4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtn(ushort8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtn(ushort16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtn(ushort3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtz(ushort x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtz(ushort2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtz(ushort4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtz(ushort8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtz(ushort16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtz(ushort3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rte(ushort x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rte(ushort2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rte(ushort4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rte(ushort8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rte(ushort16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rte(ushort3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtp(ushort x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtp(ushort2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtp(ushort4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtp(ushort8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtp(ushort16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtp(ushort3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtn(ushort x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtn(ushort2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtn(ushort4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtn(ushort8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtn(ushort16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtn(ushort3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtz(ushort x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtz(ushort2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtz(ushort4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtz(ushort8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtz(ushort16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtz(ushort3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rte(ushort x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rte(ushort2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rte(ushort4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rte(ushort8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rte(ushort16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rte(ushort3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtp(ushort x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtp(ushort2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtp(ushort4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtp(ushort8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtp(ushort16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtp(ushort3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtn(ushort x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtn(ushort2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtn(ushort4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtn(ushort8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtn(ushort16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtn(ushort3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtz(ushort x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtz(ushort2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtz(ushort4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtz(ushort8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtz(ushort16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtz(ushort3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rte(ushort x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rte(ushort2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rte(ushort4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rte(ushort8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rte(ushort16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rte(ushort3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtp(ushort x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtp(ushort2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtp(ushort4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtp(ushort8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtp(ushort16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtp(ushort3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtn(ushort x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtn(ushort2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtn(ushort4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtn(ushort8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtn(ushort16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtn(ushort3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtz(ushort x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtz(ushort2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtz(ushort4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtz(ushort8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtz(ushort16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtz(ushort3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rte(ushort x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rte(ushort2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rte(ushort4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rte(ushort8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rte(ushort16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rte(ushort3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtp(ushort x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtp(ushort2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtp(ushort4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtp(ushort8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtp(ushort16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtp(ushort3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtn(ushort x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtn(ushort2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtn(ushort4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtn(ushort8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtn(ushort16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtn(ushort3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtz(ushort x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtz(ushort2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtz(ushort4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtz(ushort8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtz(ushort16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtz(ushort3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rte(ushort x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rte(ushort2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rte(ushort4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rte(ushort8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rte(ushort16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rte(ushort3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtp(ushort x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtp(ushort2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtp(ushort4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtp(ushort8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtp(ushort16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtp(ushort3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtn(ushort x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtn(ushort2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtn(ushort4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtn(ushort8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtn(ushort16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtn(ushort3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtz(ushort x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtz(ushort2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtz(ushort4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtz(ushort8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtz(ushort16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtz(ushort3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rte(ushort x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rte(ushort2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rte(ushort4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rte(ushort8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rte(ushort16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rte(ushort3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtp(ushort x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtp(ushort2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtp(ushort4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtp(ushort8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtp(ushort16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtp(ushort3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtn(ushort x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtn(ushort2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtn(ushort4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtn(ushort8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtn(ushort16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtn(ushort3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtz(ushort x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtz(ushort2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtz(ushort4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtz(ushort8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtz(ushort16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtz(ushort3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rte(ushort x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rte(ushort2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rte(ushort4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rte(ushort8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rte(ushort16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rte(ushort3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtp(ushort x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtp(ushort2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtp(ushort4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtp(ushort8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtp(ushort16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtp(ushort3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtn(ushort x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtn(ushort2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtn(ushort4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtn(ushort8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtn(ushort16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtn(ushort3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtz(int x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtz(int2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtz(int4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtz(int8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtz(int16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtz(int3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rte(int x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rte(int2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rte(int4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rte(int8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rte(int16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rte(int3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtp(int x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtp(int2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtp(int4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtp(int8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtp(int16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtp(int3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtn(int x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtn(int2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtn(int4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtn(int8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtn(int16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtn(int3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtz(int x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtz(int2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtz(int4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtz(int8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtz(int16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtz(int3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rte(int x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rte(int2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rte(int4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rte(int8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rte(int16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rte(int3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtp(int x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtp(int2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtp(int4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtp(int8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtp(int16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtp(int3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtn(int x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtn(int2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtn(int4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtn(int8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtn(int16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtn(int3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtz(int x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtz(int2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtz(int4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtz(int8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtz(int16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtz(int3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rte(int x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rte(int2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rte(int4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rte(int8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rte(int16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rte(int3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtp(int x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtp(int2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtp(int4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtp(int8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtp(int16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtp(int3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtn(int x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtn(int2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtn(int4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtn(int8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtn(int16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtn(int3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtz(int x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtz(int2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtz(int4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtz(int8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtz(int16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtz(int3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rte(int x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rte(int2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rte(int4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rte(int8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rte(int16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rte(int3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtp(int x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtp(int2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtp(int4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtp(int8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtp(int16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtp(int3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtn(int x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtn(int2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtn(int4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtn(int8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtn(int16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtn(int3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtz(int x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtz(int2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtz(int4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtz(int8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtz(int16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtz(int3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rte(int x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rte(int2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rte(int4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rte(int8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rte(int16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rte(int3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtp(int x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtp(int2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtp(int4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtp(int8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtp(int16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtp(int3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtn(int x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtn(int2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtn(int4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtn(int8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtn(int16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtn(int3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtz(int x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtz(int2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtz(int4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtz(int8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtz(int16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtz(int3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rte(int x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rte(int2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rte(int4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rte(int8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rte(int16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rte(int3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtp(int x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtp(int2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtp(int4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtp(int8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtp(int16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtp(int3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtn(int x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtn(int2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtn(int4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtn(int8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtn(int16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtn(int3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtz(int x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtz(int2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtz(int4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtz(int8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtz(int16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtz(int3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rte(int x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rte(int2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rte(int4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rte(int8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rte(int16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rte(int3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtp(int x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtp(int2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtp(int4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtp(int8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtp(int16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtp(int3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtn(int x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtn(int2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtn(int4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtn(int8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtn(int16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtn(int3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtz(int x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtz(int2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtz(int4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtz(int8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtz(int16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtz(int3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rte(int x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rte(int2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rte(int4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rte(int8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rte(int16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rte(int3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtp(int x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtp(int2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtp(int4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtp(int8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtp(int16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtp(int3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtn(int x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtn(int2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtn(int4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtn(int8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtn(int16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtn(int3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtz(uint x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtz(uint2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtz(uint4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtz(uint8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtz(uint16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtz(uint3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rte(uint x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rte(uint2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rte(uint4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rte(uint8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rte(uint16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rte(uint3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtp(uint x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtp(uint2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtp(uint4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtp(uint8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtp(uint16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtp(uint3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtn(uint x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtn(uint2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtn(uint4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtn(uint8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtn(uint16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtn(uint3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtz(uint x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtz(uint2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtz(uint4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtz(uint8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtz(uint16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtz(uint3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rte(uint x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rte(uint2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rte(uint4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rte(uint8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rte(uint16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rte(uint3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtp(uint x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtp(uint2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtp(uint4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtp(uint8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtp(uint16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtp(uint3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtn(uint x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtn(uint2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtn(uint4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtn(uint8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtn(uint16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtn(uint3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtz(uint x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtz(uint2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtz(uint4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtz(uint8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtz(uint16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtz(uint3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rte(uint x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rte(uint2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rte(uint4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rte(uint8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rte(uint16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rte(uint3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtp(uint x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtp(uint2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtp(uint4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtp(uint8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtp(uint16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtp(uint3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtn(uint x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtn(uint2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtn(uint4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtn(uint8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtn(uint16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtn(uint3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtz(uint x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtz(uint2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtz(uint4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtz(uint8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtz(uint16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtz(uint3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rte(uint x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rte(uint2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rte(uint4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rte(uint8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rte(uint16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rte(uint3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtp(uint x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtp(uint2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtp(uint4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtp(uint8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtp(uint16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtp(uint3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtn(uint x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtn(uint2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtn(uint4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtn(uint8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtn(uint16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtn(uint3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtz(uint x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtz(uint2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtz(uint4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtz(uint8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtz(uint16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtz(uint3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rte(uint x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rte(uint2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rte(uint4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rte(uint8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rte(uint16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rte(uint3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtp(uint x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtp(uint2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtp(uint4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtp(uint8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtp(uint16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtp(uint3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtn(uint x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtn(uint2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtn(uint4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtn(uint8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtn(uint16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtn(uint3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtz(uint x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtz(uint2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtz(uint4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtz(uint8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtz(uint16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtz(uint3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rte(uint x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rte(uint2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rte(uint4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rte(uint8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rte(uint16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rte(uint3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtp(uint x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtp(uint2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtp(uint4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtp(uint8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtp(uint16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtp(uint3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtn(uint x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtn(uint2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtn(uint4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtn(uint8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtn(uint16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtn(uint3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtz(uint x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtz(uint2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtz(uint4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtz(uint8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtz(uint16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtz(uint3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rte(uint x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rte(uint2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rte(uint4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rte(uint8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rte(uint16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rte(uint3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtp(uint x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtp(uint2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtp(uint4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtp(uint8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtp(uint16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtp(uint3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtn(uint x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtn(uint2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtn(uint4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtn(uint8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtn(uint16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtn(uint3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtz(uint x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtz(uint2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtz(uint4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtz(uint8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtz(uint16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtz(uint3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rte(uint x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rte(uint2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rte(uint4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rte(uint8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rte(uint16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rte(uint3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtp(uint x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtp(uint2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtp(uint4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtp(uint8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtp(uint16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtp(uint3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtn(uint x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtn(uint2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtn(uint4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtn(uint8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtn(uint16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtn(uint3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtz(long x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtz(long2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtz(long4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtz(long8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtz(long16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtz(long3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_rte(long x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rte(long2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rte(long4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rte(long8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rte(long16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rte(long3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtp(long x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtp(long2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtp(long4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtp(long8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtp(long16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtp(long3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtn(long x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtn(long2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtn(long4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtn(long8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtn(long16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtn(long3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtz(long x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtz(long2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtz(long4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtz(long8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtz(long16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtz(long3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rte(long x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rte(long2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rte(long4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rte(long8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rte(long16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rte(long3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtp(long x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtp(long2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtp(long4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtp(long8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtp(long16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtp(long3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtn(long x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtn(long2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtn(long4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtn(long8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtn(long16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtn(long3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtz(long x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtz(long2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtz(long4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtz(long8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtz(long16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtz(long3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_rte(long x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rte(long2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rte(long4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rte(long8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rte(long16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rte(long3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtp(long x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtp(long2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtp(long4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtp(long8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtp(long16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtp(long3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtn(long x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtn(long2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtn(long4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtn(long8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtn(long16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtn(long3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtz(long x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtz(long2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtz(long4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtz(long8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtz(long16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtz(long3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rte(long x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rte(long2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rte(long4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rte(long8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rte(long16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rte(long3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtp(long x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtp(long2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtp(long4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtp(long8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtp(long16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtp(long3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtn(long x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtn(long2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtn(long4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtn(long8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtn(long16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtn(long3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtz(long x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtz(long2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtz(long4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtz(long8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtz(long16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtz(long3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_rte(long x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rte(long2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rte(long4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rte(long8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rte(long16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rte(long3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtp(long x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtp(long2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtp(long4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtp(long8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtp(long16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtp(long3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtn(long x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtn(long2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtn(long4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtn(long8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtn(long16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtn(long3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtz(long x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtz(long2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtz(long4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtz(long8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtz(long16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtz(long3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rte(long x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rte(long2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rte(long4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rte(long8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rte(long16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rte(long3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtp(long x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtp(long2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtp(long4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtp(long8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtp(long16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtp(long3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtn(long x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtn(long2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtn(long4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtn(long8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtn(long16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtn(long3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtz(long x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtz(long2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtz(long4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtz(long8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtz(long16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtz(long3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rte(long x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rte(long2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rte(long4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rte(long8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rte(long16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rte(long3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtp(long x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtp(long2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtp(long4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtp(long8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtp(long16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtp(long3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtn(long x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtn(long2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtn(long4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtn(long8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtn(long16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtn(long3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtz(long x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtz(long2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtz(long4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtz(long8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtz(long16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtz(long3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rte(long x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rte(long2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rte(long4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rte(long8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rte(long16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rte(long3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtp(long x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtp(long2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtp(long4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtp(long8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtp(long16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtp(long3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtn(long x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtn(long2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtn(long4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtn(long8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtn(long16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtn(long3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtz(ulong x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtz(ulong2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtz(ulong4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtz(ulong8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtz(ulong16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtz(ulong3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_rte(ulong x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rte(ulong2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rte(ulong4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rte(ulong8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rte(ulong16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rte(ulong3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtp(ulong x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtp(ulong2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtp(ulong4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtp(ulong8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtp(ulong16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtp(ulong3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtn(ulong x) +{ + return (char)x; +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtn(ulong2 x) +{ + return (char2)(convert_char(x.lo), convert_char(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtn(ulong4 x) +{ + return (char4)(convert_char2(x.lo), convert_char2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtn(ulong8 x) +{ + return (char8)(convert_char4(x.lo), convert_char4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtn(ulong16 x) +{ + return (char16)(convert_char8(x.lo), convert_char8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtn(ulong3 x) +{ + return (char3)(convert_char2(x.s01), convert_char(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtz(ulong x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtz(ulong2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtz(ulong4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtz(ulong8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtz(ulong16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtz(ulong3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rte(ulong x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rte(ulong2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rte(ulong4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rte(ulong8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rte(ulong16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rte(ulong3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtp(ulong x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtp(ulong2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtp(ulong4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtp(ulong8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtp(ulong16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtp(ulong3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtn(ulong x) +{ + return (uchar)x; +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtn(ulong2 x) +{ + return (uchar2)(convert_uchar(x.lo), convert_uchar(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtn(ulong4 x) +{ + return (uchar4)(convert_uchar2(x.lo), convert_uchar2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtn(ulong8 x) +{ + return (uchar8)(convert_uchar4(x.lo), convert_uchar4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtn(ulong16 x) +{ + return (uchar16)(convert_uchar8(x.lo), convert_uchar8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtn(ulong3 x) +{ + return (uchar3)(convert_uchar2(x.s01), convert_uchar(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtz(ulong x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtz(ulong2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtz(ulong4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtz(ulong8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtz(ulong16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtz(ulong3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_rte(ulong x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rte(ulong2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rte(ulong4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rte(ulong8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rte(ulong16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rte(ulong3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtp(ulong x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtp(ulong2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtp(ulong4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtp(ulong8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtp(ulong16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtp(ulong3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtn(ulong x) +{ + return (short)x; +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtn(ulong2 x) +{ + return (short2)(convert_short(x.lo), convert_short(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtn(ulong4 x) +{ + return (short4)(convert_short2(x.lo), convert_short2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtn(ulong8 x) +{ + return (short8)(convert_short4(x.lo), convert_short4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtn(ulong16 x) +{ + return (short16)(convert_short8(x.lo), convert_short8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtn(ulong3 x) +{ + return (short3)(convert_short2(x.s01), convert_short(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtz(ulong x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtz(ulong2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtz(ulong4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtz(ulong8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtz(ulong16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtz(ulong3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rte(ulong x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rte(ulong2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rte(ulong4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rte(ulong8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rte(ulong16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rte(ulong3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtp(ulong x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtp(ulong2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtp(ulong4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtp(ulong8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtp(ulong16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtp(ulong3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtn(ulong x) +{ + return (ushort)x; +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtn(ulong2 x) +{ + return (ushort2)(convert_ushort(x.lo), convert_ushort(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtn(ulong4 x) +{ + return (ushort4)(convert_ushort2(x.lo), convert_ushort2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtn(ulong8 x) +{ + return (ushort8)(convert_ushort4(x.lo), convert_ushort4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtn(ulong16 x) +{ + return (ushort16)(convert_ushort8(x.lo), convert_ushort8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtn(ulong3 x) +{ + return (ushort3)(convert_ushort2(x.s01), convert_ushort(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtz(ulong x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtz(ulong2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtz(ulong4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtz(ulong8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtz(ulong16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtz(ulong3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_rte(ulong x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rte(ulong2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rte(ulong4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rte(ulong8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rte(ulong16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rte(ulong3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtp(ulong x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtp(ulong2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtp(ulong4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtp(ulong8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtp(ulong16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtp(ulong3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtn(ulong x) +{ + return (int)x; +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtn(ulong2 x) +{ + return (int2)(convert_int(x.lo), convert_int(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtn(ulong4 x) +{ + return (int4)(convert_int2(x.lo), convert_int2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtn(ulong8 x) +{ + return (int8)(convert_int4(x.lo), convert_int4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtn(ulong16 x) +{ + return (int16)(convert_int8(x.lo), convert_int8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtn(ulong3 x) +{ + return (int3)(convert_int2(x.s01), convert_int(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtz(ulong x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtz(ulong2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtz(ulong4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtz(ulong8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtz(ulong16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtz(ulong3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rte(ulong x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rte(ulong2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rte(ulong4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rte(ulong8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rte(ulong16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rte(ulong3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtp(ulong x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtp(ulong2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtp(ulong4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtp(ulong8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtp(ulong16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtp(ulong3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtn(ulong x) +{ + return (uint)x; +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtn(ulong2 x) +{ + return (uint2)(convert_uint(x.lo), convert_uint(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtn(ulong4 x) +{ + return (uint4)(convert_uint2(x.lo), convert_uint2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtn(ulong8 x) +{ + return (uint8)(convert_uint4(x.lo), convert_uint4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtn(ulong16 x) +{ + return (uint16)(convert_uint8(x.lo), convert_uint8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtn(ulong3 x) +{ + return (uint3)(convert_uint2(x.s01), convert_uint(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtz(ulong x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtz(ulong2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtz(ulong4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtz(ulong8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtz(ulong16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtz(ulong3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rte(ulong x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rte(ulong2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rte(ulong4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rte(ulong8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rte(ulong16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rte(ulong3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtp(ulong x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtp(ulong2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtp(ulong4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtp(ulong8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtp(ulong16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtp(ulong3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtn(ulong x) +{ + return (long)x; +} + +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtn(ulong2 x) +{ + return (long2)(convert_long(x.lo), convert_long(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtn(ulong4 x) +{ + return (long4)(convert_long2(x.lo), convert_long2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtn(ulong8 x) +{ + return (long8)(convert_long4(x.lo), convert_long4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtn(ulong16 x) +{ + return (long16)(convert_long8(x.lo), convert_long8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtn(ulong3 x) +{ + return (long3)(convert_long2(x.s01), convert_long(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtz(ulong x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtz(ulong2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtz(ulong4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtz(ulong8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtz(ulong16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtz(ulong3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rte(ulong x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rte(ulong2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rte(ulong4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rte(ulong8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rte(ulong16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rte(ulong3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtp(ulong x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtp(ulong2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtp(ulong4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtp(ulong8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtp(ulong16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtp(ulong3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtn(ulong x) +{ + return (ulong)x; +} + +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtn(ulong2 x) +{ + return (ulong2)(convert_ulong(x.lo), convert_ulong(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtn(ulong4 x) +{ + return (ulong4)(convert_ulong2(x.lo), convert_ulong2(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtn(ulong8 x) +{ + return (ulong8)(convert_ulong4(x.lo), convert_ulong4(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtn(ulong16 x) +{ + return (ulong16)(convert_ulong8(x.lo), convert_ulong8(x.hi)); +} + +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtn(ulong3 x) +{ + return (ulong3)(convert_ulong2(x.s01), convert_ulong(x.s2)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat(char x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat(char2 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat(char3 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat(char4 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat(char8 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat(char16 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat(char x) +{ + x = max(x, (char)0); + return convert_uchar(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat(char2 x) +{ + x = max(x, (char)0); + return convert_uchar2(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat(char3 x) +{ + x = max(x, (char)0); + return convert_uchar3(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat(char4 x) +{ + x = max(x, (char)0); + return convert_uchar4(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat(char8 x) +{ + x = max(x, (char)0); + return convert_uchar8(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat(char16 x) +{ + x = max(x, (char)0); + return convert_uchar16(x); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat(char x) +{ + return convert_short(x); +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat(char2 x) +{ + return convert_short2(x); +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat(char3 x) +{ + return convert_short3(x); +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat(char4 x) +{ + return convert_short4(x); +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat(char8 x) +{ + return convert_short8(x); +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat(char16 x) +{ + return convert_short16(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat(char x) +{ + x = max(x, (char)0); + return convert_ushort(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat(char2 x) +{ + x = max(x, (char)0); + return convert_ushort2(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat(char3 x) +{ + x = max(x, (char)0); + return convert_ushort3(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat(char4 x) +{ + x = max(x, (char)0); + return convert_ushort4(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat(char8 x) +{ + x = max(x, (char)0); + return convert_ushort8(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat(char16 x) +{ + x = max(x, (char)0); + return convert_ushort16(x); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat(char x) +{ + return convert_int(x); +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat(char2 x) +{ + return convert_int2(x); +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat(char3 x) +{ + return convert_int3(x); +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat(char4 x) +{ + return convert_int4(x); +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat(char8 x) +{ + return convert_int8(x); +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat(char16 x) +{ + return convert_int16(x); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat(char x) +{ + x = max(x, (char)0); + return convert_uint(x); +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat(char2 x) +{ + x = max(x, (char)0); + return convert_uint2(x); +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat(char3 x) +{ + x = max(x, (char)0); + return convert_uint3(x); +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat(char4 x) +{ + x = max(x, (char)0); + return convert_uint4(x); +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat(char8 x) +{ + x = max(x, (char)0); + return convert_uint8(x); +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat(char16 x) +{ + x = max(x, (char)0); + return convert_uint16(x); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat(char x) +{ + return convert_long(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat(char2 x) +{ + return convert_long2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat(char3 x) +{ + return convert_long3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat(char4 x) +{ + return convert_long4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat(char8 x) +{ + return convert_long8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat(char16 x) +{ + return convert_long16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat(char x) +{ + x = max(x, (char)0); + return convert_ulong(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat(char2 x) +{ + x = max(x, (char)0); + return convert_ulong2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat(char3 x) +{ + x = max(x, (char)0); + return convert_ulong3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat(char4 x) +{ + x = max(x, (char)0); + return convert_ulong4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat(char8 x) +{ + x = max(x, (char)0); + return convert_ulong8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat(char16 x) +{ + x = max(x, (char)0); + return convert_ulong16(x); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat(uchar x) +{ + x = min(x, (uchar)CHAR_MAX); + return convert_char(x); +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat(uchar2 x) +{ + x = min(x, (uchar)CHAR_MAX); + return convert_char2(x); +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat(uchar3 x) +{ + x = min(x, (uchar)CHAR_MAX); + return convert_char3(x); +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat(uchar4 x) +{ + x = min(x, (uchar)CHAR_MAX); + return convert_char4(x); +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat(uchar8 x) +{ + x = min(x, (uchar)CHAR_MAX); + return convert_char8(x); +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat(uchar16 x) +{ + x = min(x, (uchar)CHAR_MAX); + return convert_char16(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat(uchar x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat(uchar2 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat(uchar3 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat(uchar4 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat(uchar8 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat(uchar16 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat(uchar x) +{ + return convert_short(x); +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat(uchar2 x) +{ + return convert_short2(x); +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat(uchar3 x) +{ + return convert_short3(x); +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat(uchar4 x) +{ + return convert_short4(x); +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat(uchar8 x) +{ + return convert_short8(x); +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat(uchar16 x) +{ + return convert_short16(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat(uchar x) +{ + return convert_ushort(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat(uchar2 x) +{ + return convert_ushort2(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat(uchar3 x) +{ + return convert_ushort3(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat(uchar4 x) +{ + return convert_ushort4(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat(uchar8 x) +{ + return convert_ushort8(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat(uchar16 x) +{ + return convert_ushort16(x); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat(uchar x) +{ + return convert_int(x); +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat(uchar2 x) +{ + return convert_int2(x); +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat(uchar3 x) +{ + return convert_int3(x); +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat(uchar4 x) +{ + return convert_int4(x); +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat(uchar8 x) +{ + return convert_int8(x); +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat(uchar16 x) +{ + return convert_int16(x); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat(uchar x) +{ + return convert_uint(x); +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat(uchar2 x) +{ + return convert_uint2(x); +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat(uchar3 x) +{ + return convert_uint3(x); +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat(uchar4 x) +{ + return convert_uint4(x); +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat(uchar8 x) +{ + return convert_uint8(x); +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat(uchar16 x) +{ + return convert_uint16(x); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat(uchar x) +{ + return convert_long(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat(uchar2 x) +{ + return convert_long2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat(uchar3 x) +{ + return convert_long3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat(uchar4 x) +{ + return convert_long4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat(uchar8 x) +{ + return convert_long8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat(uchar16 x) +{ + return convert_long16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat(uchar x) +{ + return convert_ulong(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat(uchar2 x) +{ + return convert_ulong2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat(uchar3 x) +{ + return convert_ulong3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat(uchar4 x) +{ + return convert_ulong4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat(uchar8 x) +{ + return convert_ulong8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat(uchar16 x) +{ + return convert_ulong16(x); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat(short x) +{ + x = clamp(x, (short)CHAR_MIN, (short)CHAR_MAX); + return convert_char(x); +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat(short2 x) +{ + x = clamp(x, (short)CHAR_MIN, (short)CHAR_MAX); + return convert_char2(x); +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat(short3 x) +{ + x = clamp(x, (short)CHAR_MIN, (short)CHAR_MAX); + return convert_char3(x); +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat(short4 x) +{ + x = clamp(x, (short)CHAR_MIN, (short)CHAR_MAX); + return convert_char4(x); +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat(short8 x) +{ + x = clamp(x, (short)CHAR_MIN, (short)CHAR_MAX); + return convert_char8(x); +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat(short16 x) +{ + x = clamp(x, (short)CHAR_MIN, (short)CHAR_MAX); + return convert_char16(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat(short x) +{ + x = clamp(x, (short)0, (short)UCHAR_MAX); + return convert_uchar(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat(short2 x) +{ + x = clamp(x, (short)0, (short)UCHAR_MAX); + return convert_uchar2(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat(short3 x) +{ + x = clamp(x, (short)0, (short)UCHAR_MAX); + return convert_uchar3(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat(short4 x) +{ + x = clamp(x, (short)0, (short)UCHAR_MAX); + return convert_uchar4(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat(short8 x) +{ + x = clamp(x, (short)0, (short)UCHAR_MAX); + return convert_uchar8(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat(short16 x) +{ + x = clamp(x, (short)0, (short)UCHAR_MAX); + return convert_uchar16(x); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat(short x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat(short2 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat(short3 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat(short4 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat(short8 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat(short16 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat(short x) +{ + x = max(x, (short)0); + return convert_ushort(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat(short2 x) +{ + x = max(x, (short)0); + return convert_ushort2(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat(short3 x) +{ + x = max(x, (short)0); + return convert_ushort3(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat(short4 x) +{ + x = max(x, (short)0); + return convert_ushort4(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat(short8 x) +{ + x = max(x, (short)0); + return convert_ushort8(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat(short16 x) +{ + x = max(x, (short)0); + return convert_ushort16(x); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat(short x) +{ + return convert_int(x); +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat(short2 x) +{ + return convert_int2(x); +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat(short3 x) +{ + return convert_int3(x); +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat(short4 x) +{ + return convert_int4(x); +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat(short8 x) +{ + return convert_int8(x); +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat(short16 x) +{ + return convert_int16(x); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat(short x) +{ + x = max(x, (short)0); + return convert_uint(x); +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat(short2 x) +{ + x = max(x, (short)0); + return convert_uint2(x); +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat(short3 x) +{ + x = max(x, (short)0); + return convert_uint3(x); +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat(short4 x) +{ + x = max(x, (short)0); + return convert_uint4(x); +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat(short8 x) +{ + x = max(x, (short)0); + return convert_uint8(x); +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat(short16 x) +{ + x = max(x, (short)0); + return convert_uint16(x); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat(short x) +{ + return convert_long(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat(short2 x) +{ + return convert_long2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat(short3 x) +{ + return convert_long3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat(short4 x) +{ + return convert_long4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat(short8 x) +{ + return convert_long8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat(short16 x) +{ + return convert_long16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat(short x) +{ + x = max(x, (short)0); + return convert_ulong(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat(short2 x) +{ + x = max(x, (short)0); + return convert_ulong2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat(short3 x) +{ + x = max(x, (short)0); + return convert_ulong3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat(short4 x) +{ + x = max(x, (short)0); + return convert_ulong4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat(short8 x) +{ + x = max(x, (short)0); + return convert_ulong8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat(short16 x) +{ + x = max(x, (short)0); + return convert_ulong16(x); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat(ushort x) +{ + x = min(x, (ushort)CHAR_MAX); + return convert_char(x); +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat(ushort2 x) +{ + x = min(x, (ushort)CHAR_MAX); + return convert_char2(x); +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat(ushort3 x) +{ + x = min(x, (ushort)CHAR_MAX); + return convert_char3(x); +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat(ushort4 x) +{ + x = min(x, (ushort)CHAR_MAX); + return convert_char4(x); +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat(ushort8 x) +{ + x = min(x, (ushort)CHAR_MAX); + return convert_char8(x); +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat(ushort16 x) +{ + x = min(x, (ushort)CHAR_MAX); + return convert_char16(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat(ushort x) +{ + x = min(x, (ushort)UCHAR_MAX); + return convert_uchar(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat(ushort2 x) +{ + x = min(x, (ushort)UCHAR_MAX); + return convert_uchar2(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat(ushort3 x) +{ + x = min(x, (ushort)UCHAR_MAX); + return convert_uchar3(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat(ushort4 x) +{ + x = min(x, (ushort)UCHAR_MAX); + return convert_uchar4(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat(ushort8 x) +{ + x = min(x, (ushort)UCHAR_MAX); + return convert_uchar8(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat(ushort16 x) +{ + x = min(x, (ushort)UCHAR_MAX); + return convert_uchar16(x); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat(ushort x) +{ + x = min(x, (ushort)SHRT_MAX); + return convert_short(x); +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat(ushort2 x) +{ + x = min(x, (ushort)SHRT_MAX); + return convert_short2(x); +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat(ushort3 x) +{ + x = min(x, (ushort)SHRT_MAX); + return convert_short3(x); +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat(ushort4 x) +{ + x = min(x, (ushort)SHRT_MAX); + return convert_short4(x); +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat(ushort8 x) +{ + x = min(x, (ushort)SHRT_MAX); + return convert_short8(x); +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat(ushort16 x) +{ + x = min(x, (ushort)SHRT_MAX); + return convert_short16(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat(ushort x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat(ushort2 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat(ushort3 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat(ushort4 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat(ushort8 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat(ushort16 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat(ushort x) +{ + return convert_int(x); +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat(ushort2 x) +{ + return convert_int2(x); +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat(ushort3 x) +{ + return convert_int3(x); +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat(ushort4 x) +{ + return convert_int4(x); +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat(ushort8 x) +{ + return convert_int8(x); +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat(ushort16 x) +{ + return convert_int16(x); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat(ushort x) +{ + return convert_uint(x); +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat(ushort2 x) +{ + return convert_uint2(x); +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat(ushort3 x) +{ + return convert_uint3(x); +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat(ushort4 x) +{ + return convert_uint4(x); +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat(ushort8 x) +{ + return convert_uint8(x); +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat(ushort16 x) +{ + return convert_uint16(x); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat(ushort x) +{ + return convert_long(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat(ushort2 x) +{ + return convert_long2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat(ushort3 x) +{ + return convert_long3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat(ushort4 x) +{ + return convert_long4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat(ushort8 x) +{ + return convert_long8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat(ushort16 x) +{ + return convert_long16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat(ushort x) +{ + return convert_ulong(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat(ushort2 x) +{ + return convert_ulong2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat(ushort3 x) +{ + return convert_ulong3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat(ushort4 x) +{ + return convert_ulong4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat(ushort8 x) +{ + return convert_ulong8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat(ushort16 x) +{ + return convert_ulong16(x); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat(int x) +{ + x = clamp(x, (int)CHAR_MIN, (int)CHAR_MAX); + return convert_char(x); +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat(int2 x) +{ + x = clamp(x, (int)CHAR_MIN, (int)CHAR_MAX); + return convert_char2(x); +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat(int3 x) +{ + x = clamp(x, (int)CHAR_MIN, (int)CHAR_MAX); + return convert_char3(x); +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat(int4 x) +{ + x = clamp(x, (int)CHAR_MIN, (int)CHAR_MAX); + return convert_char4(x); +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat(int8 x) +{ + x = clamp(x, (int)CHAR_MIN, (int)CHAR_MAX); + return convert_char8(x); +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat(int16 x) +{ + x = clamp(x, (int)CHAR_MIN, (int)CHAR_MAX); + return convert_char16(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat(int x) +{ + x = clamp(x, (int)0, (int)UCHAR_MAX); + return convert_uchar(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat(int2 x) +{ + x = clamp(x, (int)0, (int)UCHAR_MAX); + return convert_uchar2(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat(int3 x) +{ + x = clamp(x, (int)0, (int)UCHAR_MAX); + return convert_uchar3(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat(int4 x) +{ + x = clamp(x, (int)0, (int)UCHAR_MAX); + return convert_uchar4(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat(int8 x) +{ + x = clamp(x, (int)0, (int)UCHAR_MAX); + return convert_uchar8(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat(int16 x) +{ + x = clamp(x, (int)0, (int)UCHAR_MAX); + return convert_uchar16(x); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat(int x) +{ + x = clamp(x, (int)SHRT_MIN, (int)SHRT_MAX); + return convert_short(x); +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat(int2 x) +{ + x = clamp(x, (int)SHRT_MIN, (int)SHRT_MAX); + return convert_short2(x); +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat(int3 x) +{ + x = clamp(x, (int)SHRT_MIN, (int)SHRT_MAX); + return convert_short3(x); +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat(int4 x) +{ + x = clamp(x, (int)SHRT_MIN, (int)SHRT_MAX); + return convert_short4(x); +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat(int8 x) +{ + x = clamp(x, (int)SHRT_MIN, (int)SHRT_MAX); + return convert_short8(x); +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat(int16 x) +{ + x = clamp(x, (int)SHRT_MIN, (int)SHRT_MAX); + return convert_short16(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat(int x) +{ + x = clamp(x, (int)0, (int)USHRT_MAX); + return convert_ushort(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat(int2 x) +{ + x = clamp(x, (int)0, (int)USHRT_MAX); + return convert_ushort2(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat(int3 x) +{ + x = clamp(x, (int)0, (int)USHRT_MAX); + return convert_ushort3(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat(int4 x) +{ + x = clamp(x, (int)0, (int)USHRT_MAX); + return convert_ushort4(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat(int8 x) +{ + x = clamp(x, (int)0, (int)USHRT_MAX); + return convert_ushort8(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat(int16 x) +{ + x = clamp(x, (int)0, (int)USHRT_MAX); + return convert_ushort16(x); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat(int x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat(int2 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat(int3 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat(int4 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat(int8 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat(int16 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat(int x) +{ + x = max(x, (int)0); + return convert_uint(x); +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat(int2 x) +{ + x = max(x, (int)0); + return convert_uint2(x); +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat(int3 x) +{ + x = max(x, (int)0); + return convert_uint3(x); +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat(int4 x) +{ + x = max(x, (int)0); + return convert_uint4(x); +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat(int8 x) +{ + x = max(x, (int)0); + return convert_uint8(x); +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat(int16 x) +{ + x = max(x, (int)0); + return convert_uint16(x); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat(int x) +{ + return convert_long(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat(int2 x) +{ + return convert_long2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat(int3 x) +{ + return convert_long3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat(int4 x) +{ + return convert_long4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat(int8 x) +{ + return convert_long8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat(int16 x) +{ + return convert_long16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat(int x) +{ + x = max(x, (int)0); + return convert_ulong(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat(int2 x) +{ + x = max(x, (int)0); + return convert_ulong2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat(int3 x) +{ + x = max(x, (int)0); + return convert_ulong3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat(int4 x) +{ + x = max(x, (int)0); + return convert_ulong4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat(int8 x) +{ + x = max(x, (int)0); + return convert_ulong8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat(int16 x) +{ + x = max(x, (int)0); + return convert_ulong16(x); +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat(uint x) +{ + x = min(x, (uint)CHAR_MAX); + return convert_char(x); +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat(uint2 x) +{ + x = min(x, (uint)CHAR_MAX); + return convert_char2(x); +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat(uint3 x) +{ + x = min(x, (uint)CHAR_MAX); + return convert_char3(x); +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat(uint4 x) +{ + x = min(x, (uint)CHAR_MAX); + return convert_char4(x); +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat(uint8 x) +{ + x = min(x, (uint)CHAR_MAX); + return convert_char8(x); +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat(uint16 x) +{ + x = min(x, (uint)CHAR_MAX); + return convert_char16(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat(uint x) +{ + x = min(x, (uint)UCHAR_MAX); + return convert_uchar(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat(uint2 x) +{ + x = min(x, (uint)UCHAR_MAX); + return convert_uchar2(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat(uint3 x) +{ + x = min(x, (uint)UCHAR_MAX); + return convert_uchar3(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat(uint4 x) +{ + x = min(x, (uint)UCHAR_MAX); + return convert_uchar4(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat(uint8 x) +{ + x = min(x, (uint)UCHAR_MAX); + return convert_uchar8(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat(uint16 x) +{ + x = min(x, (uint)UCHAR_MAX); + return convert_uchar16(x); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat(uint x) +{ + x = min(x, (uint)SHRT_MAX); + return convert_short(x); +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat(uint2 x) +{ + x = min(x, (uint)SHRT_MAX); + return convert_short2(x); +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat(uint3 x) +{ + x = min(x, (uint)SHRT_MAX); + return convert_short3(x); +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat(uint4 x) +{ + x = min(x, (uint)SHRT_MAX); + return convert_short4(x); +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat(uint8 x) +{ + x = min(x, (uint)SHRT_MAX); + return convert_short8(x); +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat(uint16 x) +{ + x = min(x, (uint)SHRT_MAX); + return convert_short16(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat(uint x) +{ + x = min(x, (uint)USHRT_MAX); + return convert_ushort(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat(uint2 x) +{ + x = min(x, (uint)USHRT_MAX); + return convert_ushort2(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat(uint3 x) +{ + x = min(x, (uint)USHRT_MAX); + return convert_ushort3(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat(uint4 x) +{ + x = min(x, (uint)USHRT_MAX); + return convert_ushort4(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat(uint8 x) +{ + x = min(x, (uint)USHRT_MAX); + return convert_ushort8(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat(uint16 x) +{ + x = min(x, (uint)USHRT_MAX); + return convert_ushort16(x); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat(uint x) +{ + x = min(x, (uint)INT_MAX); + return convert_int(x); +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat(uint2 x) +{ + x = min(x, (uint)INT_MAX); + return convert_int2(x); +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat(uint3 x) +{ + x = min(x, (uint)INT_MAX); + return convert_int3(x); +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat(uint4 x) +{ + x = min(x, (uint)INT_MAX); + return convert_int4(x); +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat(uint8 x) +{ + x = min(x, (uint)INT_MAX); + return convert_int8(x); +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat(uint16 x) +{ + x = min(x, (uint)INT_MAX); + return convert_int16(x); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat(uint x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat(uint2 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat(uint3 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat(uint4 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat(uint8 x) +{ + return x; +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat(uint16 x) +{ + return x; +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat(uint x) +{ + return convert_long(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat(uint2 x) +{ + return convert_long2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat(uint3 x) +{ + return convert_long3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat(uint4 x) +{ + return convert_long4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat(uint8 x) +{ + return convert_long8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat(uint16 x) +{ + return convert_long16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat(uint x) +{ + return convert_ulong(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat(uint2 x) +{ + return convert_ulong2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat(uint3 x) +{ + return convert_ulong3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat(uint4 x) +{ + return convert_ulong4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat(uint8 x) +{ + return convert_ulong8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat(uint16 x) +{ + return convert_ulong16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat(long x) +{ + x = clamp(x, (long)CHAR_MIN, (long)CHAR_MAX); + return convert_char(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat(long2 x) +{ + x = clamp(x, (long)CHAR_MIN, (long)CHAR_MAX); + return convert_char2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat(long3 x) +{ + x = clamp(x, (long)CHAR_MIN, (long)CHAR_MAX); + return convert_char3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat(long4 x) +{ + x = clamp(x, (long)CHAR_MIN, (long)CHAR_MAX); + return convert_char4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat(long8 x) +{ + x = clamp(x, (long)CHAR_MIN, (long)CHAR_MAX); + return convert_char8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat(long16 x) +{ + x = clamp(x, (long)CHAR_MIN, (long)CHAR_MAX); + return convert_char16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat(long x) +{ + x = clamp(x, (long)0, (long)UCHAR_MAX); + return convert_uchar(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat(long2 x) +{ + x = clamp(x, (long)0, (long)UCHAR_MAX); + return convert_uchar2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat(long3 x) +{ + x = clamp(x, (long)0, (long)UCHAR_MAX); + return convert_uchar3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat(long4 x) +{ + x = clamp(x, (long)0, (long)UCHAR_MAX); + return convert_uchar4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat(long8 x) +{ + x = clamp(x, (long)0, (long)UCHAR_MAX); + return convert_uchar8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat(long16 x) +{ + x = clamp(x, (long)0, (long)UCHAR_MAX); + return convert_uchar16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat(long x) +{ + x = clamp(x, (long)SHRT_MIN, (long)SHRT_MAX); + return convert_short(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat(long2 x) +{ + x = clamp(x, (long)SHRT_MIN, (long)SHRT_MAX); + return convert_short2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat(long3 x) +{ + x = clamp(x, (long)SHRT_MIN, (long)SHRT_MAX); + return convert_short3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat(long4 x) +{ + x = clamp(x, (long)SHRT_MIN, (long)SHRT_MAX); + return convert_short4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat(long8 x) +{ + x = clamp(x, (long)SHRT_MIN, (long)SHRT_MAX); + return convert_short8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat(long16 x) +{ + x = clamp(x, (long)SHRT_MIN, (long)SHRT_MAX); + return convert_short16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat(long x) +{ + x = clamp(x, (long)0, (long)USHRT_MAX); + return convert_ushort(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat(long2 x) +{ + x = clamp(x, (long)0, (long)USHRT_MAX); + return convert_ushort2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat(long3 x) +{ + x = clamp(x, (long)0, (long)USHRT_MAX); + return convert_ushort3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat(long4 x) +{ + x = clamp(x, (long)0, (long)USHRT_MAX); + return convert_ushort4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat(long8 x) +{ + x = clamp(x, (long)0, (long)USHRT_MAX); + return convert_ushort8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat(long16 x) +{ + x = clamp(x, (long)0, (long)USHRT_MAX); + return convert_ushort16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat(long x) +{ + x = clamp(x, (long)INT_MIN, (long)INT_MAX); + return convert_int(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat(long2 x) +{ + x = clamp(x, (long)INT_MIN, (long)INT_MAX); + return convert_int2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat(long3 x) +{ + x = clamp(x, (long)INT_MIN, (long)INT_MAX); + return convert_int3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat(long4 x) +{ + x = clamp(x, (long)INT_MIN, (long)INT_MAX); + return convert_int4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat(long8 x) +{ + x = clamp(x, (long)INT_MIN, (long)INT_MAX); + return convert_int8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat(long16 x) +{ + x = clamp(x, (long)INT_MIN, (long)INT_MAX); + return convert_int16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat(long x) +{ + x = clamp(x, (long)0, (long)UINT_MAX); + return convert_uint(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat(long2 x) +{ + x = clamp(x, (long)0, (long)UINT_MAX); + return convert_uint2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat(long3 x) +{ + x = clamp(x, (long)0, (long)UINT_MAX); + return convert_uint3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat(long4 x) +{ + x = clamp(x, (long)0, (long)UINT_MAX); + return convert_uint4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat(long8 x) +{ + x = clamp(x, (long)0, (long)UINT_MAX); + return convert_uint8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat(long16 x) +{ + x = clamp(x, (long)0, (long)UINT_MAX); + return convert_uint16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat(long x) +{ + return x; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat(long2 x) +{ + return x; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat(long3 x) +{ + return x; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat(long4 x) +{ + return x; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat(long8 x) +{ + return x; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat(long16 x) +{ + return x; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat(long x) +{ + x = max(x, (long)0); + return convert_ulong(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat(long2 x) +{ + x = max(x, (long)0); + return convert_ulong2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat(long3 x) +{ + x = max(x, (long)0); + return convert_ulong3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat(long4 x) +{ + x = max(x, (long)0); + return convert_ulong4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat(long8 x) +{ + x = max(x, (long)0); + return convert_ulong8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat(long16 x) +{ + x = max(x, (long)0); + return convert_ulong16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat(ulong x) +{ + x = min(x, (ulong)CHAR_MAX); + return convert_char(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat(ulong2 x) +{ + x = min(x, (ulong)CHAR_MAX); + return convert_char2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat(ulong3 x) +{ + x = min(x, (ulong)CHAR_MAX); + return convert_char3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat(ulong4 x) +{ + x = min(x, (ulong)CHAR_MAX); + return convert_char4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat(ulong8 x) +{ + x = min(x, (ulong)CHAR_MAX); + return convert_char8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat(ulong16 x) +{ + x = min(x, (ulong)CHAR_MAX); + return convert_char16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat(ulong x) +{ + x = min(x, (ulong)UCHAR_MAX); + return convert_uchar(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat(ulong2 x) +{ + x = min(x, (ulong)UCHAR_MAX); + return convert_uchar2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat(ulong3 x) +{ + x = min(x, (ulong)UCHAR_MAX); + return convert_uchar3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat(ulong4 x) +{ + x = min(x, (ulong)UCHAR_MAX); + return convert_uchar4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat(ulong8 x) +{ + x = min(x, (ulong)UCHAR_MAX); + return convert_uchar8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat(ulong16 x) +{ + x = min(x, (ulong)UCHAR_MAX); + return convert_uchar16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat(ulong x) +{ + x = min(x, (ulong)SHRT_MAX); + return convert_short(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat(ulong2 x) +{ + x = min(x, (ulong)SHRT_MAX); + return convert_short2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat(ulong3 x) +{ + x = min(x, (ulong)SHRT_MAX); + return convert_short3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat(ulong4 x) +{ + x = min(x, (ulong)SHRT_MAX); + return convert_short4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat(ulong8 x) +{ + x = min(x, (ulong)SHRT_MAX); + return convert_short8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat(ulong16 x) +{ + x = min(x, (ulong)SHRT_MAX); + return convert_short16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat(ulong x) +{ + x = min(x, (ulong)USHRT_MAX); + return convert_ushort(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat(ulong2 x) +{ + x = min(x, (ulong)USHRT_MAX); + return convert_ushort2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat(ulong3 x) +{ + x = min(x, (ulong)USHRT_MAX); + return convert_ushort3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat(ulong4 x) +{ + x = min(x, (ulong)USHRT_MAX); + return convert_ushort4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat(ulong8 x) +{ + x = min(x, (ulong)USHRT_MAX); + return convert_ushort8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat(ulong16 x) +{ + x = min(x, (ulong)USHRT_MAX); + return convert_ushort16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat(ulong x) +{ + x = min(x, (ulong)INT_MAX); + return convert_int(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat(ulong2 x) +{ + x = min(x, (ulong)INT_MAX); + return convert_int2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat(ulong3 x) +{ + x = min(x, (ulong)INT_MAX); + return convert_int3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat(ulong4 x) +{ + x = min(x, (ulong)INT_MAX); + return convert_int4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat(ulong8 x) +{ + x = min(x, (ulong)INT_MAX); + return convert_int8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat(ulong16 x) +{ + x = min(x, (ulong)INT_MAX); + return convert_int16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat(ulong x) +{ + x = min(x, (ulong)UINT_MAX); + return convert_uint(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat(ulong2 x) +{ + x = min(x, (ulong)UINT_MAX); + return convert_uint2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat(ulong3 x) +{ + x = min(x, (ulong)UINT_MAX); + return convert_uint3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat(ulong4 x) +{ + x = min(x, (ulong)UINT_MAX); + return convert_uint4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat(ulong8 x) +{ + x = min(x, (ulong)UINT_MAX); + return convert_uint8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat(ulong16 x) +{ + x = min(x, (ulong)UINT_MAX); + return convert_uint16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat(ulong x) +{ + x = min(x, (ulong)LONG_MAX); + return convert_long(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat(ulong2 x) +{ + x = min(x, (ulong)LONG_MAX); + return convert_long2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat(ulong3 x) +{ + x = min(x, (ulong)LONG_MAX); + return convert_long3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat(ulong4 x) +{ + x = min(x, (ulong)LONG_MAX); + return convert_long4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat(ulong8 x) +{ + x = min(x, (ulong)LONG_MAX); + return convert_long8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat(ulong16 x) +{ + x = min(x, (ulong)LONG_MAX); + return convert_long16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat(ulong x) +{ + return x; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat(ulong2 x) +{ + return x; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat(ulong3 x) +{ + return x; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat(ulong4 x) +{ + return x; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat(ulong8 x) +{ + return x; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat(ulong16 x) +{ + return x; +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat(float x) +{ + char y = convert_char(x); + y = select(y, (char)CHAR_MIN, convert_char(x < (float)CHAR_MIN)); + y = select(y, (char)CHAR_MAX, convert_char(x > (float)CHAR_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat(float2 x) +{ + char2 y = convert_char2(x); + y = select(y, (char2)CHAR_MIN, convert_char2(x < (float2)CHAR_MIN)); + y = select(y, (char2)CHAR_MAX, convert_char2(x > (float2)CHAR_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat(float3 x) +{ + char3 y = convert_char3(x); + y = select(y, (char3)CHAR_MIN, convert_char3(x < (float3)CHAR_MIN)); + y = select(y, (char3)CHAR_MAX, convert_char3(x > (float3)CHAR_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat(float4 x) +{ + char4 y = convert_char4(x); + y = select(y, (char4)CHAR_MIN, convert_char4(x < (float4)CHAR_MIN)); + y = select(y, (char4)CHAR_MAX, convert_char4(x > (float4)CHAR_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat(float8 x) +{ + char8 y = convert_char8(x); + y = select(y, (char8)CHAR_MIN, convert_char8(x < (float8)CHAR_MIN)); + y = select(y, (char8)CHAR_MAX, convert_char8(x > (float8)CHAR_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat(float16 x) +{ + char16 y = convert_char16(x); + y = select(y, (char16)CHAR_MIN, convert_char16(x < (float16)CHAR_MIN)); + y = select(y, (char16)CHAR_MAX, convert_char16(x > (float16)CHAR_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat(float x) +{ + uchar y = convert_uchar(x); + y = select(y, (uchar)0, as_uchar(convert_char(x < (float)0))); + y = select(y, (uchar)UCHAR_MAX, as_uchar(convert_char(x > (float)UCHAR_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat(float2 x) +{ + uchar2 y = convert_uchar2(x); + y = select(y, (uchar2)0, as_uchar2(convert_char2(x < (float2)0))); + y = select(y, (uchar2)UCHAR_MAX, as_uchar2(convert_char2(x > (float2)UCHAR_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat(float3 x) +{ + uchar3 y = convert_uchar3(x); + y = select(y, (uchar3)0, as_uchar3(convert_char3(x < (float3)0))); + y = select(y, (uchar3)UCHAR_MAX, as_uchar3(convert_char3(x > (float3)UCHAR_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat(float4 x) +{ + uchar4 y = convert_uchar4(x); + y = select(y, (uchar4)0, as_uchar4(convert_char4(x < (float4)0))); + y = select(y, (uchar4)UCHAR_MAX, as_uchar4(convert_char4(x > (float4)UCHAR_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat(float8 x) +{ + uchar8 y = convert_uchar8(x); + y = select(y, (uchar8)0, as_uchar8(convert_char8(x < (float8)0))); + y = select(y, (uchar8)UCHAR_MAX, as_uchar8(convert_char8(x > (float8)UCHAR_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat(float16 x) +{ + uchar16 y = convert_uchar16(x); + y = select(y, (uchar16)0, as_uchar16(convert_char16(x < (float16)0))); + y = select(y, (uchar16)UCHAR_MAX, as_uchar16(convert_char16(x > (float16)UCHAR_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat(float x) +{ + short y = convert_short(x); + y = select(y, (short)SHRT_MIN, convert_short(x < (float)SHRT_MIN)); + y = select(y, (short)SHRT_MAX, convert_short(x > (float)SHRT_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat(float2 x) +{ + short2 y = convert_short2(x); + y = select(y, (short2)SHRT_MIN, convert_short2(x < (float2)SHRT_MIN)); + y = select(y, (short2)SHRT_MAX, convert_short2(x > (float2)SHRT_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat(float3 x) +{ + short3 y = convert_short3(x); + y = select(y, (short3)SHRT_MIN, convert_short3(x < (float3)SHRT_MIN)); + y = select(y, (short3)SHRT_MAX, convert_short3(x > (float3)SHRT_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat(float4 x) +{ + short4 y = convert_short4(x); + y = select(y, (short4)SHRT_MIN, convert_short4(x < (float4)SHRT_MIN)); + y = select(y, (short4)SHRT_MAX, convert_short4(x > (float4)SHRT_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat(float8 x) +{ + short8 y = convert_short8(x); + y = select(y, (short8)SHRT_MIN, convert_short8(x < (float8)SHRT_MIN)); + y = select(y, (short8)SHRT_MAX, convert_short8(x > (float8)SHRT_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat(float16 x) +{ + short16 y = convert_short16(x); + y = select(y, (short16)SHRT_MIN, convert_short16(x < (float16)SHRT_MIN)); + y = select(y, (short16)SHRT_MAX, convert_short16(x > (float16)SHRT_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat(float x) +{ + ushort y = convert_ushort(x); + y = select(y, (ushort)0, as_ushort(convert_short(x < (float)0))); + y = select(y, (ushort)USHRT_MAX, as_ushort(convert_short(x > (float)USHRT_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat(float2 x) +{ + ushort2 y = convert_ushort2(x); + y = select(y, (ushort2)0, as_ushort2(convert_short2(x < (float2)0))); + y = select(y, (ushort2)USHRT_MAX, as_ushort2(convert_short2(x > (float2)USHRT_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat(float3 x) +{ + ushort3 y = convert_ushort3(x); + y = select(y, (ushort3)0, as_ushort3(convert_short3(x < (float3)0))); + y = select(y, (ushort3)USHRT_MAX, as_ushort3(convert_short3(x > (float3)USHRT_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat(float4 x) +{ + ushort4 y = convert_ushort4(x); + y = select(y, (ushort4)0, as_ushort4(convert_short4(x < (float4)0))); + y = select(y, (ushort4)USHRT_MAX, as_ushort4(convert_short4(x > (float4)USHRT_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat(float8 x) +{ + ushort8 y = convert_ushort8(x); + y = select(y, (ushort8)0, as_ushort8(convert_short8(x < (float8)0))); + y = select(y, (ushort8)USHRT_MAX, as_ushort8(convert_short8(x > (float8)USHRT_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat(float16 x) +{ + ushort16 y = convert_ushort16(x); + y = select(y, (ushort16)0, as_ushort16(convert_short16(x < (float16)0))); + y = select(y, (ushort16)USHRT_MAX, as_ushort16(convert_short16(x > (float16)USHRT_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat(float x) +{ + int y = convert_int(x); + y = select(y, (int)INT_MIN, convert_int(x < (float)INT_MIN)); + y = select(y, (int)INT_MAX, convert_int(x > (float)INT_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat(float2 x) +{ + int2 y = convert_int2(x); + y = select(y, (int2)INT_MIN, convert_int2(x < (float2)INT_MIN)); + y = select(y, (int2)INT_MAX, convert_int2(x > (float2)INT_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat(float3 x) +{ + int3 y = convert_int3(x); + y = select(y, (int3)INT_MIN, convert_int3(x < (float3)INT_MIN)); + y = select(y, (int3)INT_MAX, convert_int3(x > (float3)INT_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat(float4 x) +{ + int4 y = convert_int4(x); + y = select(y, (int4)INT_MIN, convert_int4(x < (float4)INT_MIN)); + y = select(y, (int4)INT_MAX, convert_int4(x > (float4)INT_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat(float8 x) +{ + int8 y = convert_int8(x); + y = select(y, (int8)INT_MIN, convert_int8(x < (float8)INT_MIN)); + y = select(y, (int8)INT_MAX, convert_int8(x > (float8)INT_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat(float16 x) +{ + int16 y = convert_int16(x); + y = select(y, (int16)INT_MIN, convert_int16(x < (float16)INT_MIN)); + y = select(y, (int16)INT_MAX, convert_int16(x > (float16)INT_MAX)); + return y; +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat(float x) +{ + uint y = convert_uint(x); + y = select(y, (uint)0, as_uint(convert_int(x < (float)0))); + y = select(y, (uint)UINT_MAX, as_uint(convert_int(x > (float)UINT_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat(float2 x) +{ + uint2 y = convert_uint2(x); + y = select(y, (uint2)0, as_uint2(convert_int2(x < (float2)0))); + y = select(y, (uint2)UINT_MAX, as_uint2(convert_int2(x > (float2)UINT_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat(float3 x) +{ + uint3 y = convert_uint3(x); + y = select(y, (uint3)0, as_uint3(convert_int3(x < (float3)0))); + y = select(y, (uint3)UINT_MAX, as_uint3(convert_int3(x > (float3)UINT_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat(float4 x) +{ + uint4 y = convert_uint4(x); + y = select(y, (uint4)0, as_uint4(convert_int4(x < (float4)0))); + y = select(y, (uint4)UINT_MAX, as_uint4(convert_int4(x > (float4)UINT_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat(float8 x) +{ + uint8 y = convert_uint8(x); + y = select(y, (uint8)0, as_uint8(convert_int8(x < (float8)0))); + y = select(y, (uint8)UINT_MAX, as_uint8(convert_int8(x > (float8)UINT_MAX))); + return y; +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat(float16 x) +{ + uint16 y = convert_uint16(x); + y = select(y, (uint16)0, as_uint16(convert_int16(x < (float16)0))); + y = select(y, (uint16)UINT_MAX, as_uint16(convert_int16(x > (float16)UINT_MAX))); + return y; +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat(float x) +{ + long y = convert_long(x); + y = select(y, (long)LONG_MIN, convert_long(x < (float)LONG_MIN)); + y = select(y, (long)LONG_MAX, convert_long(x > (float)LONG_MAX)); + return y; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat(float2 x) +{ + long2 y = convert_long2(x); + y = select(y, (long2)LONG_MIN, convert_long2(x < (float2)LONG_MIN)); + y = select(y, (long2)LONG_MAX, convert_long2(x > (float2)LONG_MAX)); + return y; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat(float3 x) +{ + long3 y = convert_long3(x); + y = select(y, (long3)LONG_MIN, convert_long3(x < (float3)LONG_MIN)); + y = select(y, (long3)LONG_MAX, convert_long3(x > (float3)LONG_MAX)); + return y; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat(float4 x) +{ + long4 y = convert_long4(x); + y = select(y, (long4)LONG_MIN, convert_long4(x < (float4)LONG_MIN)); + y = select(y, (long4)LONG_MAX, convert_long4(x > (float4)LONG_MAX)); + return y; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat(float8 x) +{ + long8 y = convert_long8(x); + y = select(y, (long8)LONG_MIN, convert_long8(x < (float8)LONG_MIN)); + y = select(y, (long8)LONG_MAX, convert_long8(x > (float8)LONG_MAX)); + return y; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat(float16 x) +{ + long16 y = convert_long16(x); + y = select(y, (long16)LONG_MIN, convert_long16(x < (float16)LONG_MIN)); + y = select(y, (long16)LONG_MAX, convert_long16(x > (float16)LONG_MAX)); + return y; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat(float x) +{ + ulong y = convert_ulong(x); + y = select(y, (ulong)0, as_ulong(convert_long(x < (float)0))); + y = select(y, (ulong)ULONG_MAX, as_ulong(convert_long(x > (float)ULONG_MAX))); + return y; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat(float2 x) +{ + ulong2 y = convert_ulong2(x); + y = select(y, (ulong2)0, as_ulong2(convert_long2(x < (float2)0))); + y = select(y, (ulong2)ULONG_MAX, as_ulong2(convert_long2(x > (float2)ULONG_MAX))); + return y; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat(float3 x) +{ + ulong3 y = convert_ulong3(x); + y = select(y, (ulong3)0, as_ulong3(convert_long3(x < (float3)0))); + y = select(y, (ulong3)ULONG_MAX, as_ulong3(convert_long3(x > (float3)ULONG_MAX))); + return y; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat(float4 x) +{ + ulong4 y = convert_ulong4(x); + y = select(y, (ulong4)0, as_ulong4(convert_long4(x < (float4)0))); + y = select(y, (ulong4)ULONG_MAX, as_ulong4(convert_long4(x > (float4)ULONG_MAX))); + return y; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat(float8 x) +{ + ulong8 y = convert_ulong8(x); + y = select(y, (ulong8)0, as_ulong8(convert_long8(x < (float8)0))); + y = select(y, (ulong8)ULONG_MAX, as_ulong8(convert_long8(x > (float8)ULONG_MAX))); + return y; +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat(float16 x) +{ + ulong16 y = convert_ulong16(x); + y = select(y, (ulong16)0, as_ulong16(convert_long16(x < (float16)0))); + y = select(y, (ulong16)ULONG_MAX, as_ulong16(convert_long16(x > (float16)ULONG_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat(double x) +{ + char y = convert_char(x); + y = select(y, (char)CHAR_MIN, convert_char(x < (double)CHAR_MIN)); + y = select(y, (char)CHAR_MAX, convert_char(x > (double)CHAR_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat(double2 x) +{ + char2 y = convert_char2(x); + y = select(y, (char2)CHAR_MIN, convert_char2(x < (double2)CHAR_MIN)); + y = select(y, (char2)CHAR_MAX, convert_char2(x > (double2)CHAR_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat(double3 x) +{ + char3 y = convert_char3(x); + y = select(y, (char3)CHAR_MIN, convert_char3(x < (double3)CHAR_MIN)); + y = select(y, (char3)CHAR_MAX, convert_char3(x > (double3)CHAR_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat(double4 x) +{ + char4 y = convert_char4(x); + y = select(y, (char4)CHAR_MIN, convert_char4(x < (double4)CHAR_MIN)); + y = select(y, (char4)CHAR_MAX, convert_char4(x > (double4)CHAR_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat(double8 x) +{ + char8 y = convert_char8(x); + y = select(y, (char8)CHAR_MIN, convert_char8(x < (double8)CHAR_MIN)); + y = select(y, (char8)CHAR_MAX, convert_char8(x > (double8)CHAR_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat(double16 x) +{ + char16 y = convert_char16(x); + y = select(y, (char16)CHAR_MIN, convert_char16(x < (double16)CHAR_MIN)); + y = select(y, (char16)CHAR_MAX, convert_char16(x > (double16)CHAR_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat(double x) +{ + uchar y = convert_uchar(x); + y = select(y, (uchar)0, as_uchar(convert_char(x < (double)0))); + y = select(y, (uchar)UCHAR_MAX, as_uchar(convert_char(x > (double)UCHAR_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat(double2 x) +{ + uchar2 y = convert_uchar2(x); + y = select(y, (uchar2)0, as_uchar2(convert_char2(x < (double2)0))); + y = select(y, (uchar2)UCHAR_MAX, as_uchar2(convert_char2(x > (double2)UCHAR_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat(double3 x) +{ + uchar3 y = convert_uchar3(x); + y = select(y, (uchar3)0, as_uchar3(convert_char3(x < (double3)0))); + y = select(y, (uchar3)UCHAR_MAX, as_uchar3(convert_char3(x > (double3)UCHAR_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat(double4 x) +{ + uchar4 y = convert_uchar4(x); + y = select(y, (uchar4)0, as_uchar4(convert_char4(x < (double4)0))); + y = select(y, (uchar4)UCHAR_MAX, as_uchar4(convert_char4(x > (double4)UCHAR_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat(double8 x) +{ + uchar8 y = convert_uchar8(x); + y = select(y, (uchar8)0, as_uchar8(convert_char8(x < (double8)0))); + y = select(y, (uchar8)UCHAR_MAX, as_uchar8(convert_char8(x > (double8)UCHAR_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat(double16 x) +{ + uchar16 y = convert_uchar16(x); + y = select(y, (uchar16)0, as_uchar16(convert_char16(x < (double16)0))); + y = select(y, (uchar16)UCHAR_MAX, as_uchar16(convert_char16(x > (double16)UCHAR_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat(double x) +{ + short y = convert_short(x); + y = select(y, (short)SHRT_MIN, convert_short(x < (double)SHRT_MIN)); + y = select(y, (short)SHRT_MAX, convert_short(x > (double)SHRT_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat(double2 x) +{ + short2 y = convert_short2(x); + y = select(y, (short2)SHRT_MIN, convert_short2(x < (double2)SHRT_MIN)); + y = select(y, (short2)SHRT_MAX, convert_short2(x > (double2)SHRT_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat(double3 x) +{ + short3 y = convert_short3(x); + y = select(y, (short3)SHRT_MIN, convert_short3(x < (double3)SHRT_MIN)); + y = select(y, (short3)SHRT_MAX, convert_short3(x > (double3)SHRT_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat(double4 x) +{ + short4 y = convert_short4(x); + y = select(y, (short4)SHRT_MIN, convert_short4(x < (double4)SHRT_MIN)); + y = select(y, (short4)SHRT_MAX, convert_short4(x > (double4)SHRT_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat(double8 x) +{ + short8 y = convert_short8(x); + y = select(y, (short8)SHRT_MIN, convert_short8(x < (double8)SHRT_MIN)); + y = select(y, (short8)SHRT_MAX, convert_short8(x > (double8)SHRT_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat(double16 x) +{ + short16 y = convert_short16(x); + y = select(y, (short16)SHRT_MIN, convert_short16(x < (double16)SHRT_MIN)); + y = select(y, (short16)SHRT_MAX, convert_short16(x > (double16)SHRT_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat(double x) +{ + ushort y = convert_ushort(x); + y = select(y, (ushort)0, as_ushort(convert_short(x < (double)0))); + y = select(y, (ushort)USHRT_MAX, as_ushort(convert_short(x > (double)USHRT_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat(double2 x) +{ + ushort2 y = convert_ushort2(x); + y = select(y, (ushort2)0, as_ushort2(convert_short2(x < (double2)0))); + y = select(y, (ushort2)USHRT_MAX, as_ushort2(convert_short2(x > (double2)USHRT_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat(double3 x) +{ + ushort3 y = convert_ushort3(x); + y = select(y, (ushort3)0, as_ushort3(convert_short3(x < (double3)0))); + y = select(y, (ushort3)USHRT_MAX, as_ushort3(convert_short3(x > (double3)USHRT_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat(double4 x) +{ + ushort4 y = convert_ushort4(x); + y = select(y, (ushort4)0, as_ushort4(convert_short4(x < (double4)0))); + y = select(y, (ushort4)USHRT_MAX, as_ushort4(convert_short4(x > (double4)USHRT_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat(double8 x) +{ + ushort8 y = convert_ushort8(x); + y = select(y, (ushort8)0, as_ushort8(convert_short8(x < (double8)0))); + y = select(y, (ushort8)USHRT_MAX, as_ushort8(convert_short8(x > (double8)USHRT_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat(double16 x) +{ + ushort16 y = convert_ushort16(x); + y = select(y, (ushort16)0, as_ushort16(convert_short16(x < (double16)0))); + y = select(y, (ushort16)USHRT_MAX, as_ushort16(convert_short16(x > (double16)USHRT_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat(double x) +{ + int y = convert_int(x); + y = select(y, (int)INT_MIN, convert_int(x < (double)INT_MIN)); + y = select(y, (int)INT_MAX, convert_int(x > (double)INT_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat(double2 x) +{ + int2 y = convert_int2(x); + y = select(y, (int2)INT_MIN, convert_int2(x < (double2)INT_MIN)); + y = select(y, (int2)INT_MAX, convert_int2(x > (double2)INT_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat(double3 x) +{ + int3 y = convert_int3(x); + y = select(y, (int3)INT_MIN, convert_int3(x < (double3)INT_MIN)); + y = select(y, (int3)INT_MAX, convert_int3(x > (double3)INT_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat(double4 x) +{ + int4 y = convert_int4(x); + y = select(y, (int4)INT_MIN, convert_int4(x < (double4)INT_MIN)); + y = select(y, (int4)INT_MAX, convert_int4(x > (double4)INT_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat(double8 x) +{ + int8 y = convert_int8(x); + y = select(y, (int8)INT_MIN, convert_int8(x < (double8)INT_MIN)); + y = select(y, (int8)INT_MAX, convert_int8(x > (double8)INT_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat(double16 x) +{ + int16 y = convert_int16(x); + y = select(y, (int16)INT_MIN, convert_int16(x < (double16)INT_MIN)); + y = select(y, (int16)INT_MAX, convert_int16(x > (double16)INT_MAX)); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat(double x) +{ + uint y = convert_uint(x); + y = select(y, (uint)0, as_uint(convert_int(x < (double)0))); + y = select(y, (uint)UINT_MAX, as_uint(convert_int(x > (double)UINT_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat(double2 x) +{ + uint2 y = convert_uint2(x); + y = select(y, (uint2)0, as_uint2(convert_int2(x < (double2)0))); + y = select(y, (uint2)UINT_MAX, as_uint2(convert_int2(x > (double2)UINT_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat(double3 x) +{ + uint3 y = convert_uint3(x); + y = select(y, (uint3)0, as_uint3(convert_int3(x < (double3)0))); + y = select(y, (uint3)UINT_MAX, as_uint3(convert_int3(x > (double3)UINT_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat(double4 x) +{ + uint4 y = convert_uint4(x); + y = select(y, (uint4)0, as_uint4(convert_int4(x < (double4)0))); + y = select(y, (uint4)UINT_MAX, as_uint4(convert_int4(x > (double4)UINT_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat(double8 x) +{ + uint8 y = convert_uint8(x); + y = select(y, (uint8)0, as_uint8(convert_int8(x < (double8)0))); + y = select(y, (uint8)UINT_MAX, as_uint8(convert_int8(x > (double8)UINT_MAX))); + return y; +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat(double16 x) +{ + uint16 y = convert_uint16(x); + y = select(y, (uint16)0, as_uint16(convert_int16(x < (double16)0))); + y = select(y, (uint16)UINT_MAX, as_uint16(convert_int16(x > (double16)UINT_MAX))); + return y; +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat(double x) +{ + long y = convert_long(x); + y = select(y, (long)LONG_MIN, convert_long(x < (double)LONG_MIN)); + y = select(y, (long)LONG_MAX, convert_long(x > (double)LONG_MAX)); + return y; +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat(double2 x) +{ + long2 y = convert_long2(x); + y = select(y, (long2)LONG_MIN, convert_long2(x < (double2)LONG_MIN)); + y = select(y, (long2)LONG_MAX, convert_long2(x > (double2)LONG_MAX)); + return y; +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat(double3 x) +{ + long3 y = convert_long3(x); + y = select(y, (long3)LONG_MIN, convert_long3(x < (double3)LONG_MIN)); + y = select(y, (long3)LONG_MAX, convert_long3(x > (double3)LONG_MAX)); + return y; +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat(double4 x) +{ + long4 y = convert_long4(x); + y = select(y, (long4)LONG_MIN, convert_long4(x < (double4)LONG_MIN)); + y = select(y, (long4)LONG_MAX, convert_long4(x > (double4)LONG_MAX)); + return y; +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat(double8 x) +{ + long8 y = convert_long8(x); + y = select(y, (long8)LONG_MIN, convert_long8(x < (double8)LONG_MIN)); + y = select(y, (long8)LONG_MAX, convert_long8(x > (double8)LONG_MAX)); + return y; +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat(double16 x) +{ + long16 y = convert_long16(x); + y = select(y, (long16)LONG_MIN, convert_long16(x < (double16)LONG_MIN)); + y = select(y, (long16)LONG_MAX, convert_long16(x > (double16)LONG_MAX)); + return y; +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat(double x) +{ + ulong y = convert_ulong(x); + y = select(y, (ulong)0, as_ulong(convert_long(x < (double)0))); + y = select(y, (ulong)ULONG_MAX, as_ulong(convert_long(x > (double)ULONG_MAX))); + return y; +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat(double2 x) +{ + ulong2 y = convert_ulong2(x); + y = select(y, (ulong2)0, as_ulong2(convert_long2(x < (double2)0))); + y = select(y, (ulong2)ULONG_MAX, as_ulong2(convert_long2(x > (double2)ULONG_MAX))); + return y; +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat(double3 x) +{ + ulong3 y = convert_ulong3(x); + y = select(y, (ulong3)0, as_ulong3(convert_long3(x < (double3)0))); + y = select(y, (ulong3)ULONG_MAX, as_ulong3(convert_long3(x > (double3)ULONG_MAX))); + return y; +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat(double4 x) +{ + ulong4 y = convert_ulong4(x); + y = select(y, (ulong4)0, as_ulong4(convert_long4(x < (double4)0))); + y = select(y, (ulong4)ULONG_MAX, as_ulong4(convert_long4(x > (double4)ULONG_MAX))); + return y; +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat(double8 x) +{ + ulong8 y = convert_ulong8(x); + y = select(y, (ulong8)0, as_ulong8(convert_long8(x < (double8)0))); + y = select(y, (ulong8)ULONG_MAX, as_ulong8(convert_long8(x > (double8)ULONG_MAX))); + return y; +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat(double16 x) +{ + ulong16 y = convert_ulong16(x); + y = select(y, (ulong16)0, as_ulong16(convert_long16(x < (double16)0))); + y = select(y, (ulong16)ULONG_MAX, as_ulong16(convert_long16(x > (double16)ULONG_MAX))); + return y; +} +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtz(char x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rte(char x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtp(char x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtn(char x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtz(char2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rte(char2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtp(char2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtn(char2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtz(char3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rte(char3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtp(char3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtn(char3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtz(char4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rte(char4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtp(char4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtn(char4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtz(char8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rte(char8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtp(char8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtn(char8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtz(char16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rte(char16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtp(char16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtn(char16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtz(char x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rte(char x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtp(char x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtn(char x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtz(char2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rte(char2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtp(char2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtn(char2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtz(char3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rte(char3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtp(char3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtn(char3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtz(char4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rte(char4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtp(char4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtn(char4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtz(char8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rte(char8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtp(char8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtn(char8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtz(char16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rte(char16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtp(char16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtn(char16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtz(char x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rte(char x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtp(char x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtn(char x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtz(char2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rte(char2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtp(char2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtn(char2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtz(char3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rte(char3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtp(char3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtn(char3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtz(char4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rte(char4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtp(char4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtn(char4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtz(char8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rte(char8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtp(char8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtn(char8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtz(char16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rte(char16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtp(char16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtn(char16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtz(char x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rte(char x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtp(char x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtn(char x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtz(char2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rte(char2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtp(char2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtn(char2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtz(char3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rte(char3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtp(char3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtn(char3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtz(char4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rte(char4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtp(char4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtn(char4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtz(char8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rte(char8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtp(char8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtn(char8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtz(char16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rte(char16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtp(char16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtn(char16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtz(char x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rte(char x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtp(char x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtn(char x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtz(char2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rte(char2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtp(char2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtn(char2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtz(char3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rte(char3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtp(char3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtn(char3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtz(char4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rte(char4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtp(char4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtn(char4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtz(char8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rte(char8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtp(char8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtn(char8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtz(char16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rte(char16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtp(char16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtn(char16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtz(char x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rte(char x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtp(char x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtn(char x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtz(char2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rte(char2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtp(char2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtn(char2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtz(char3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rte(char3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtp(char3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtn(char3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtz(char4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rte(char4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtp(char4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtn(char4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtz(char8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rte(char8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtp(char8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtn(char8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtz(char16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rte(char16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtp(char16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtn(char16 x) +{ + return convert_uint16_sat(x); +} + +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtz(char x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rte(char x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtp(char x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtn(char x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtz(char2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rte(char2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtp(char2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtn(char2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtz(char3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rte(char3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtp(char3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtn(char3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtz(char4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rte(char4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtp(char4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtn(char4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtz(char8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rte(char8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtp(char8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtn(char8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtz(char16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rte(char16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtp(char16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtn(char16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtz(char x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rte(char x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtp(char x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtn(char x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtz(char2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rte(char2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtp(char2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtn(char2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtz(char3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rte(char3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtp(char3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtn(char3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtz(char4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rte(char4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtp(char4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtn(char4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtz(char8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rte(char8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtp(char8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtn(char8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtz(char16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rte(char16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtp(char16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtn(char16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtz(uchar x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rte(uchar x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtp(uchar x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtn(uchar x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtz(uchar2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rte(uchar2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtp(uchar2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtn(uchar2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtz(uchar3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rte(uchar3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtp(uchar3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtn(uchar3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtz(uchar4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rte(uchar4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtp(uchar4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtn(uchar4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtz(uchar8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rte(uchar8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtp(uchar8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtn(uchar8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtz(uchar16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rte(uchar16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtp(uchar16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtn(uchar16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtz(uchar x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rte(uchar x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtp(uchar x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtn(uchar x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtz(uchar2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rte(uchar2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtp(uchar2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtn(uchar2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtz(uchar3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rte(uchar3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtp(uchar3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtn(uchar3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtz(uchar4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rte(uchar4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtp(uchar4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtn(uchar4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtz(uchar8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rte(uchar8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtp(uchar8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtn(uchar8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtz(uchar16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rte(uchar16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtp(uchar16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtn(uchar16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtz(uchar x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rte(uchar x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtp(uchar x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtn(uchar x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtz(uchar2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rte(uchar2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtp(uchar2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtn(uchar2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtz(uchar3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rte(uchar3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtp(uchar3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtn(uchar3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtz(uchar4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rte(uchar4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtp(uchar4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtn(uchar4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtz(uchar8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rte(uchar8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtp(uchar8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtn(uchar8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtz(uchar16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rte(uchar16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtp(uchar16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtn(uchar16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtz(uchar x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rte(uchar x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtp(uchar x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtn(uchar x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtz(uchar2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rte(uchar2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtp(uchar2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtn(uchar2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtz(uchar3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rte(uchar3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtp(uchar3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtn(uchar3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtz(uchar4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rte(uchar4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtp(uchar4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtn(uchar4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtz(uchar8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rte(uchar8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtp(uchar8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtn(uchar8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtz(uchar16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rte(uchar16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtp(uchar16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtn(uchar16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtz(uchar x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rte(uchar x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtp(uchar x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtn(uchar x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtz(uchar2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rte(uchar2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtp(uchar2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtn(uchar2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtz(uchar3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rte(uchar3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtp(uchar3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtn(uchar3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtz(uchar4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rte(uchar4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtp(uchar4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtn(uchar4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtz(uchar8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rte(uchar8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtp(uchar8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtn(uchar8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtz(uchar16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rte(uchar16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtp(uchar16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtn(uchar16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtz(uchar x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rte(uchar x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtp(uchar x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtn(uchar x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtz(uchar2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rte(uchar2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtp(uchar2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtn(uchar2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtz(uchar3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rte(uchar3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtp(uchar3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtn(uchar3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtz(uchar4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rte(uchar4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtp(uchar4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtn(uchar4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtz(uchar8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rte(uchar8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtp(uchar8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtn(uchar8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtz(uchar16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rte(uchar16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtp(uchar16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtn(uchar16 x) +{ + return convert_uint16_sat(x); +} + +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtz(uchar x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rte(uchar x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtp(uchar x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtn(uchar x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtz(uchar2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rte(uchar2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtp(uchar2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtn(uchar2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtz(uchar3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rte(uchar3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtp(uchar3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtn(uchar3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtz(uchar4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rte(uchar4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtp(uchar4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtn(uchar4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtz(uchar8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rte(uchar8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtp(uchar8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtn(uchar8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtz(uchar16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rte(uchar16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtp(uchar16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtn(uchar16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtz(uchar x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rte(uchar x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtp(uchar x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtn(uchar x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtz(uchar2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rte(uchar2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtp(uchar2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtn(uchar2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtz(uchar3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rte(uchar3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtp(uchar3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtn(uchar3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtz(uchar4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rte(uchar4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtp(uchar4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtn(uchar4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtz(uchar8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rte(uchar8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtp(uchar8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtn(uchar8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtz(uchar16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rte(uchar16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtp(uchar16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtn(uchar16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtz(short x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rte(short x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtp(short x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtn(short x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtz(short2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rte(short2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtp(short2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtn(short2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtz(short3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rte(short3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtp(short3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtn(short3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtz(short4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rte(short4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtp(short4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtn(short4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtz(short8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rte(short8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtp(short8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtn(short8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtz(short16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rte(short16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtp(short16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtn(short16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtz(short x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rte(short x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtp(short x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtn(short x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtz(short2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rte(short2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtp(short2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtn(short2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtz(short3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rte(short3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtp(short3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtn(short3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtz(short4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rte(short4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtp(short4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtn(short4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtz(short8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rte(short8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtp(short8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtn(short8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtz(short16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rte(short16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtp(short16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtn(short16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtz(short x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rte(short x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtp(short x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtn(short x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtz(short2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rte(short2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtp(short2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtn(short2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtz(short3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rte(short3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtp(short3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtn(short3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtz(short4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rte(short4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtp(short4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtn(short4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtz(short8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rte(short8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtp(short8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtn(short8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtz(short16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rte(short16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtp(short16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtn(short16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtz(short x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rte(short x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtp(short x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtn(short x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtz(short2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rte(short2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtp(short2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtn(short2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtz(short3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rte(short3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtp(short3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtn(short3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtz(short4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rte(short4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtp(short4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtn(short4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtz(short8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rte(short8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtp(short8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtn(short8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtz(short16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rte(short16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtp(short16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtn(short16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtz(short x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rte(short x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtp(short x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtn(short x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtz(short2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rte(short2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtp(short2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtn(short2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtz(short3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rte(short3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtp(short3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtn(short3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtz(short4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rte(short4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtp(short4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtn(short4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtz(short8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rte(short8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtp(short8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtn(short8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtz(short16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rte(short16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtp(short16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtn(short16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtz(short x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rte(short x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtp(short x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtn(short x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtz(short2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rte(short2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtp(short2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtn(short2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtz(short3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rte(short3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtp(short3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtn(short3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtz(short4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rte(short4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtp(short4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtn(short4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtz(short8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rte(short8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtp(short8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtn(short8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtz(short16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rte(short16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtp(short16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtn(short16 x) +{ + return convert_uint16_sat(x); +} + +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtz(short x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rte(short x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtp(short x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtn(short x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtz(short2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rte(short2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtp(short2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtn(short2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtz(short3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rte(short3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtp(short3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtn(short3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtz(short4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rte(short4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtp(short4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtn(short4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtz(short8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rte(short8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtp(short8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtn(short8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtz(short16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rte(short16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtp(short16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtn(short16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtz(short x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rte(short x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtp(short x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtn(short x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtz(short2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rte(short2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtp(short2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtn(short2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtz(short3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rte(short3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtp(short3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtn(short3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtz(short4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rte(short4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtp(short4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtn(short4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtz(short8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rte(short8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtp(short8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtn(short8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtz(short16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rte(short16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtp(short16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtn(short16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtz(ushort x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rte(ushort x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtp(ushort x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtn(ushort x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtz(ushort2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rte(ushort2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtp(ushort2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtn(ushort2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtz(ushort3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rte(ushort3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtp(ushort3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtn(ushort3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtz(ushort4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rte(ushort4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtp(ushort4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtn(ushort4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtz(ushort8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rte(ushort8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtp(ushort8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtn(ushort8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtz(ushort16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rte(ushort16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtp(ushort16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtn(ushort16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtz(ushort x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rte(ushort x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtp(ushort x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtn(ushort x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtz(ushort2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rte(ushort2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtp(ushort2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtn(ushort2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtz(ushort3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rte(ushort3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtp(ushort3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtn(ushort3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtz(ushort4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rte(ushort4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtp(ushort4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtn(ushort4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtz(ushort8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rte(ushort8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtp(ushort8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtn(ushort8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtz(ushort16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rte(ushort16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtp(ushort16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtn(ushort16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtz(ushort x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rte(ushort x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtp(ushort x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtn(ushort x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtz(ushort2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rte(ushort2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtp(ushort2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtn(ushort2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtz(ushort3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rte(ushort3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtp(ushort3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtn(ushort3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtz(ushort4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rte(ushort4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtp(ushort4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtn(ushort4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtz(ushort8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rte(ushort8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtp(ushort8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtn(ushort8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtz(ushort16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rte(ushort16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtp(ushort16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtn(ushort16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtz(ushort x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rte(ushort x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtp(ushort x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtn(ushort x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtz(ushort2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rte(ushort2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtp(ushort2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtn(ushort2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtz(ushort3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rte(ushort3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtp(ushort3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtn(ushort3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtz(ushort4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rte(ushort4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtp(ushort4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtn(ushort4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtz(ushort8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rte(ushort8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtp(ushort8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtn(ushort8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtz(ushort16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rte(ushort16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtp(ushort16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtn(ushort16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtz(ushort x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rte(ushort x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtp(ushort x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtn(ushort x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtz(ushort2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rte(ushort2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtp(ushort2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtn(ushort2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtz(ushort3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rte(ushort3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtp(ushort3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtn(ushort3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtz(ushort4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rte(ushort4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtp(ushort4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtn(ushort4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtz(ushort8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rte(ushort8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtp(ushort8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtn(ushort8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtz(ushort16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rte(ushort16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtp(ushort16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtn(ushort16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtz(ushort x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rte(ushort x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtp(ushort x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtn(ushort x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtz(ushort2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rte(ushort2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtp(ushort2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtn(ushort2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtz(ushort3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rte(ushort3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtp(ushort3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtn(ushort3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtz(ushort4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rte(ushort4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtp(ushort4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtn(ushort4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtz(ushort8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rte(ushort8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtp(ushort8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtn(ushort8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtz(ushort16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rte(ushort16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtp(ushort16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtn(ushort16 x) +{ + return convert_uint16_sat(x); +} + +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtz(ushort x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rte(ushort x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtp(ushort x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtn(ushort x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtz(ushort2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rte(ushort2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtp(ushort2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtn(ushort2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtz(ushort3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rte(ushort3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtp(ushort3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtn(ushort3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtz(ushort4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rte(ushort4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtp(ushort4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtn(ushort4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtz(ushort8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rte(ushort8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtp(ushort8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtn(ushort8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtz(ushort16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rte(ushort16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtp(ushort16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtn(ushort16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtz(ushort x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rte(ushort x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtp(ushort x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtn(ushort x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtz(ushort2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rte(ushort2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtp(ushort2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtn(ushort2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtz(ushort3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rte(ushort3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtp(ushort3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtn(ushort3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtz(ushort4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rte(ushort4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtp(ushort4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtn(ushort4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtz(ushort8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rte(ushort8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtp(ushort8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtn(ushort8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtz(ushort16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rte(ushort16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtp(ushort16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtn(ushort16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtz(int x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rte(int x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtp(int x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtn(int x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtz(int2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rte(int2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtp(int2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtn(int2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtz(int3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rte(int3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtp(int3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtn(int3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtz(int4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rte(int4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtp(int4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtn(int4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtz(int8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rte(int8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtp(int8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtn(int8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtz(int16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rte(int16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtp(int16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtn(int16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtz(int x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rte(int x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtp(int x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtn(int x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtz(int2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rte(int2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtp(int2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtn(int2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtz(int3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rte(int3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtp(int3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtn(int3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtz(int4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rte(int4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtp(int4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtn(int4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtz(int8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rte(int8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtp(int8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtn(int8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtz(int16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rte(int16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtp(int16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtn(int16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtz(int x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rte(int x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtp(int x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtn(int x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtz(int2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rte(int2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtp(int2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtn(int2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtz(int3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rte(int3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtp(int3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtn(int3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtz(int4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rte(int4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtp(int4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtn(int4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtz(int8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rte(int8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtp(int8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtn(int8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtz(int16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rte(int16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtp(int16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtn(int16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtz(int x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rte(int x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtp(int x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtn(int x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtz(int2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rte(int2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtp(int2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtn(int2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtz(int3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rte(int3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtp(int3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtn(int3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtz(int4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rte(int4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtp(int4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtn(int4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtz(int8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rte(int8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtp(int8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtn(int8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtz(int16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rte(int16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtp(int16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtn(int16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtz(int x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rte(int x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtp(int x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtn(int x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtz(int2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rte(int2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtp(int2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtn(int2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtz(int3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rte(int3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtp(int3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtn(int3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtz(int4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rte(int4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtp(int4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtn(int4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtz(int8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rte(int8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtp(int8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtn(int8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtz(int16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rte(int16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtp(int16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtn(int16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtz(int x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rte(int x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtp(int x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtn(int x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtz(int2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rte(int2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtp(int2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtn(int2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtz(int3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rte(int3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtp(int3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtn(int3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtz(int4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rte(int4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtp(int4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtn(int4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtz(int8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rte(int8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtp(int8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtn(int8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtz(int16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rte(int16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtp(int16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtn(int16 x) +{ + return convert_uint16_sat(x); +} + +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtz(int x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rte(int x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtp(int x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtn(int x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtz(int2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rte(int2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtp(int2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtn(int2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtz(int3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rte(int3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtp(int3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtn(int3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtz(int4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rte(int4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtp(int4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtn(int4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtz(int8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rte(int8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtp(int8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtn(int8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtz(int16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rte(int16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtp(int16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtn(int16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtz(int x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rte(int x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtp(int x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtn(int x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtz(int2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rte(int2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtp(int2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtn(int2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtz(int3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rte(int3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtp(int3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtn(int3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtz(int4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rte(int4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtp(int4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtn(int4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtz(int8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rte(int8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtp(int8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtn(int8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtz(int16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rte(int16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtp(int16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtn(int16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtz(uint x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rte(uint x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtp(uint x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtn(uint x) +{ + return convert_char_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtz(uint2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rte(uint2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtp(uint2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtn(uint2 x) +{ + return convert_char2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtz(uint3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rte(uint3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtp(uint3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtn(uint3 x) +{ + return convert_char3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtz(uint4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rte(uint4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtp(uint4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtn(uint4 x) +{ + return convert_char4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtz(uint8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rte(uint8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtp(uint8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtn(uint8 x) +{ + return convert_char8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtz(uint16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rte(uint16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtp(uint16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtn(uint16 x) +{ + return convert_char16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtz(uint x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rte(uint x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtp(uint x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtn(uint x) +{ + return convert_uchar_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtz(uint2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rte(uint2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtp(uint2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtn(uint2 x) +{ + return convert_uchar2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtz(uint3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rte(uint3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtp(uint3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtn(uint3 x) +{ + return convert_uchar3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtz(uint4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rte(uint4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtp(uint4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtn(uint4 x) +{ + return convert_uchar4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtz(uint8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rte(uint8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtp(uint8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtn(uint8 x) +{ + return convert_uchar8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtz(uint16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rte(uint16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtp(uint16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtn(uint16 x) +{ + return convert_uchar16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtz(uint x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rte(uint x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtp(uint x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtn(uint x) +{ + return convert_short_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtz(uint2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rte(uint2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtp(uint2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtn(uint2 x) +{ + return convert_short2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtz(uint3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rte(uint3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtp(uint3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtn(uint3 x) +{ + return convert_short3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtz(uint4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rte(uint4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtp(uint4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtn(uint4 x) +{ + return convert_short4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtz(uint8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rte(uint8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtp(uint8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtn(uint8 x) +{ + return convert_short8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtz(uint16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rte(uint16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtp(uint16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtn(uint16 x) +{ + return convert_short16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtz(uint x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rte(uint x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtp(uint x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtn(uint x) +{ + return convert_ushort_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtz(uint2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rte(uint2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtp(uint2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtn(uint2 x) +{ + return convert_ushort2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtz(uint3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rte(uint3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtp(uint3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtn(uint3 x) +{ + return convert_ushort3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtz(uint4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rte(uint4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtp(uint4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtn(uint4 x) +{ + return convert_ushort4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtz(uint8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rte(uint8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtp(uint8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtn(uint8 x) +{ + return convert_ushort8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtz(uint16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rte(uint16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtp(uint16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtn(uint16 x) +{ + return convert_ushort16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtz(uint x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rte(uint x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtp(uint x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtn(uint x) +{ + return convert_int_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtz(uint2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rte(uint2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtp(uint2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtn(uint2 x) +{ + return convert_int2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtz(uint3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rte(uint3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtp(uint3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtn(uint3 x) +{ + return convert_int3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtz(uint4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rte(uint4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtp(uint4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtn(uint4 x) +{ + return convert_int4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtz(uint8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rte(uint8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtp(uint8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtn(uint8 x) +{ + return convert_int8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtz(uint16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rte(uint16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtp(uint16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtn(uint16 x) +{ + return convert_int16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtz(uint x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rte(uint x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtp(uint x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtn(uint x) +{ + return convert_uint_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtz(uint2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rte(uint2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtp(uint2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtn(uint2 x) +{ + return convert_uint2_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtz(uint3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rte(uint3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtp(uint3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtn(uint3 x) +{ + return convert_uint3_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtz(uint4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rte(uint4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtp(uint4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtn(uint4 x) +{ + return convert_uint4_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtz(uint8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rte(uint8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtp(uint8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtn(uint8 x) +{ + return convert_uint8_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtz(uint16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rte(uint16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtp(uint16 x) +{ + return convert_uint16_sat(x); +} + +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtn(uint16 x) +{ + return convert_uint16_sat(x); +} + +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtz(uint x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rte(uint x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtp(uint x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtn(uint x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtz(uint2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rte(uint2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtp(uint2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtn(uint2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtz(uint3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rte(uint3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtp(uint3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtn(uint3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtz(uint4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rte(uint4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtp(uint4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtn(uint4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtz(uint8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rte(uint8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtp(uint8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtn(uint8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtz(uint16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rte(uint16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtp(uint16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtn(uint16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtz(uint x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rte(uint x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtp(uint x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtn(uint x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtz(uint2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rte(uint2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtp(uint2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtn(uint2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtz(uint3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rte(uint3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtp(uint3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtn(uint3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtz(uint4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rte(uint4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtp(uint4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtn(uint4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtz(uint8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rte(uint8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtp(uint8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtn(uint8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtz(uint16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rte(uint16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtp(uint16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtn(uint16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtz(long x) +{ + return convert_char_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rte(long x) +{ + return convert_char_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtp(long x) +{ + return convert_char_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtn(long x) +{ + return convert_char_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtz(long2 x) +{ + return convert_char2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rte(long2 x) +{ + return convert_char2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtp(long2 x) +{ + return convert_char2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtn(long2 x) +{ + return convert_char2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtz(long3 x) +{ + return convert_char3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rte(long3 x) +{ + return convert_char3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtp(long3 x) +{ + return convert_char3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtn(long3 x) +{ + return convert_char3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtz(long4 x) +{ + return convert_char4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rte(long4 x) +{ + return convert_char4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtp(long4 x) +{ + return convert_char4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtn(long4 x) +{ + return convert_char4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtz(long8 x) +{ + return convert_char8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rte(long8 x) +{ + return convert_char8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtp(long8 x) +{ + return convert_char8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtn(long8 x) +{ + return convert_char8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtz(long16 x) +{ + return convert_char16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rte(long16 x) +{ + return convert_char16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtp(long16 x) +{ + return convert_char16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtn(long16 x) +{ + return convert_char16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtz(long x) +{ + return convert_uchar_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rte(long x) +{ + return convert_uchar_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtp(long x) +{ + return convert_uchar_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtn(long x) +{ + return convert_uchar_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtz(long2 x) +{ + return convert_uchar2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rte(long2 x) +{ + return convert_uchar2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtp(long2 x) +{ + return convert_uchar2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtn(long2 x) +{ + return convert_uchar2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtz(long3 x) +{ + return convert_uchar3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rte(long3 x) +{ + return convert_uchar3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtp(long3 x) +{ + return convert_uchar3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtn(long3 x) +{ + return convert_uchar3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtz(long4 x) +{ + return convert_uchar4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rte(long4 x) +{ + return convert_uchar4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtp(long4 x) +{ + return convert_uchar4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtn(long4 x) +{ + return convert_uchar4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtz(long8 x) +{ + return convert_uchar8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rte(long8 x) +{ + return convert_uchar8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtp(long8 x) +{ + return convert_uchar8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtn(long8 x) +{ + return convert_uchar8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtz(long16 x) +{ + return convert_uchar16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rte(long16 x) +{ + return convert_uchar16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtp(long16 x) +{ + return convert_uchar16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtn(long16 x) +{ + return convert_uchar16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtz(long x) +{ + return convert_short_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rte(long x) +{ + return convert_short_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtp(long x) +{ + return convert_short_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtn(long x) +{ + return convert_short_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtz(long2 x) +{ + return convert_short2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rte(long2 x) +{ + return convert_short2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtp(long2 x) +{ + return convert_short2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtn(long2 x) +{ + return convert_short2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtz(long3 x) +{ + return convert_short3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rte(long3 x) +{ + return convert_short3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtp(long3 x) +{ + return convert_short3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtn(long3 x) +{ + return convert_short3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtz(long4 x) +{ + return convert_short4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rte(long4 x) +{ + return convert_short4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtp(long4 x) +{ + return convert_short4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtn(long4 x) +{ + return convert_short4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtz(long8 x) +{ + return convert_short8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rte(long8 x) +{ + return convert_short8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtp(long8 x) +{ + return convert_short8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtn(long8 x) +{ + return convert_short8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtz(long16 x) +{ + return convert_short16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rte(long16 x) +{ + return convert_short16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtp(long16 x) +{ + return convert_short16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtn(long16 x) +{ + return convert_short16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtz(long x) +{ + return convert_ushort_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rte(long x) +{ + return convert_ushort_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtp(long x) +{ + return convert_ushort_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtn(long x) +{ + return convert_ushort_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtz(long2 x) +{ + return convert_ushort2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rte(long2 x) +{ + return convert_ushort2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtp(long2 x) +{ + return convert_ushort2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtn(long2 x) +{ + return convert_ushort2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtz(long3 x) +{ + return convert_ushort3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rte(long3 x) +{ + return convert_ushort3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtp(long3 x) +{ + return convert_ushort3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtn(long3 x) +{ + return convert_ushort3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtz(long4 x) +{ + return convert_ushort4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rte(long4 x) +{ + return convert_ushort4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtp(long4 x) +{ + return convert_ushort4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtn(long4 x) +{ + return convert_ushort4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtz(long8 x) +{ + return convert_ushort8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rte(long8 x) +{ + return convert_ushort8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtp(long8 x) +{ + return convert_ushort8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtn(long8 x) +{ + return convert_ushort8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtz(long16 x) +{ + return convert_ushort16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rte(long16 x) +{ + return convert_ushort16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtp(long16 x) +{ + return convert_ushort16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtn(long16 x) +{ + return convert_ushort16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtz(long x) +{ + return convert_int_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rte(long x) +{ + return convert_int_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtp(long x) +{ + return convert_int_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtn(long x) +{ + return convert_int_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtz(long2 x) +{ + return convert_int2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rte(long2 x) +{ + return convert_int2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtp(long2 x) +{ + return convert_int2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtn(long2 x) +{ + return convert_int2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtz(long3 x) +{ + return convert_int3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rte(long3 x) +{ + return convert_int3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtp(long3 x) +{ + return convert_int3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtn(long3 x) +{ + return convert_int3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtz(long4 x) +{ + return convert_int4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rte(long4 x) +{ + return convert_int4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtp(long4 x) +{ + return convert_int4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtn(long4 x) +{ + return convert_int4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtz(long8 x) +{ + return convert_int8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rte(long8 x) +{ + return convert_int8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtp(long8 x) +{ + return convert_int8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtn(long8 x) +{ + return convert_int8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtz(long16 x) +{ + return convert_int16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rte(long16 x) +{ + return convert_int16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtp(long16 x) +{ + return convert_int16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtn(long16 x) +{ + return convert_int16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtz(long x) +{ + return convert_uint_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rte(long x) +{ + return convert_uint_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtp(long x) +{ + return convert_uint_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtn(long x) +{ + return convert_uint_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtz(long2 x) +{ + return convert_uint2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rte(long2 x) +{ + return convert_uint2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtp(long2 x) +{ + return convert_uint2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtn(long2 x) +{ + return convert_uint2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtz(long3 x) +{ + return convert_uint3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rte(long3 x) +{ + return convert_uint3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtp(long3 x) +{ + return convert_uint3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtn(long3 x) +{ + return convert_uint3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtz(long4 x) +{ + return convert_uint4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rte(long4 x) +{ + return convert_uint4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtp(long4 x) +{ + return convert_uint4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtn(long4 x) +{ + return convert_uint4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtz(long8 x) +{ + return convert_uint8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rte(long8 x) +{ + return convert_uint8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtp(long8 x) +{ + return convert_uint8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtn(long8 x) +{ + return convert_uint8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtz(long16 x) +{ + return convert_uint16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rte(long16 x) +{ + return convert_uint16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtp(long16 x) +{ + return convert_uint16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtn(long16 x) +{ + return convert_uint16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtz(long x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rte(long x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtp(long x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtn(long x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtz(long2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rte(long2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtp(long2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtn(long2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtz(long3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rte(long3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtp(long3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtn(long3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtz(long4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rte(long4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtp(long4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtn(long4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtz(long8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rte(long8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtp(long8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtn(long8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtz(long16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rte(long16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtp(long16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtn(long16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtz(long x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rte(long x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtp(long x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtn(long x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtz(long2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rte(long2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtp(long2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtn(long2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtz(long3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rte(long3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtp(long3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtn(long3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtz(long4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rte(long4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtp(long4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtn(long4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtz(long8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rte(long8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtp(long8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtn(long8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtz(long16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rte(long16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtp(long16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtn(long16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtz(ulong x) +{ + return convert_char_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rte(ulong x) +{ + return convert_char_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtp(ulong x) +{ + return convert_char_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtn(ulong x) +{ + return convert_char_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtz(ulong2 x) +{ + return convert_char2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rte(ulong2 x) +{ + return convert_char2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtp(ulong2 x) +{ + return convert_char2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtn(ulong2 x) +{ + return convert_char2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtz(ulong3 x) +{ + return convert_char3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rte(ulong3 x) +{ + return convert_char3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtp(ulong3 x) +{ + return convert_char3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtn(ulong3 x) +{ + return convert_char3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtz(ulong4 x) +{ + return convert_char4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rte(ulong4 x) +{ + return convert_char4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtp(ulong4 x) +{ + return convert_char4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtn(ulong4 x) +{ + return convert_char4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtz(ulong8 x) +{ + return convert_char8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rte(ulong8 x) +{ + return convert_char8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtp(ulong8 x) +{ + return convert_char8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtn(ulong8 x) +{ + return convert_char8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtz(ulong16 x) +{ + return convert_char16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rte(ulong16 x) +{ + return convert_char16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtp(ulong16 x) +{ + return convert_char16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtn(ulong16 x) +{ + return convert_char16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtz(ulong x) +{ + return convert_uchar_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rte(ulong x) +{ + return convert_uchar_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtp(ulong x) +{ + return convert_uchar_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtn(ulong x) +{ + return convert_uchar_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtz(ulong2 x) +{ + return convert_uchar2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rte(ulong2 x) +{ + return convert_uchar2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtp(ulong2 x) +{ + return convert_uchar2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtn(ulong2 x) +{ + return convert_uchar2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtz(ulong3 x) +{ + return convert_uchar3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rte(ulong3 x) +{ + return convert_uchar3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtp(ulong3 x) +{ + return convert_uchar3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtn(ulong3 x) +{ + return convert_uchar3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtz(ulong4 x) +{ + return convert_uchar4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rte(ulong4 x) +{ + return convert_uchar4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtp(ulong4 x) +{ + return convert_uchar4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtn(ulong4 x) +{ + return convert_uchar4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtz(ulong8 x) +{ + return convert_uchar8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rte(ulong8 x) +{ + return convert_uchar8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtp(ulong8 x) +{ + return convert_uchar8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtn(ulong8 x) +{ + return convert_uchar8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtz(ulong16 x) +{ + return convert_uchar16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rte(ulong16 x) +{ + return convert_uchar16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtp(ulong16 x) +{ + return convert_uchar16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtn(ulong16 x) +{ + return convert_uchar16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtz(ulong x) +{ + return convert_short_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rte(ulong x) +{ + return convert_short_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtp(ulong x) +{ + return convert_short_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtn(ulong x) +{ + return convert_short_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtz(ulong2 x) +{ + return convert_short2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rte(ulong2 x) +{ + return convert_short2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtp(ulong2 x) +{ + return convert_short2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtn(ulong2 x) +{ + return convert_short2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtz(ulong3 x) +{ + return convert_short3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rte(ulong3 x) +{ + return convert_short3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtp(ulong3 x) +{ + return convert_short3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtn(ulong3 x) +{ + return convert_short3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtz(ulong4 x) +{ + return convert_short4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rte(ulong4 x) +{ + return convert_short4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtp(ulong4 x) +{ + return convert_short4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtn(ulong4 x) +{ + return convert_short4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtz(ulong8 x) +{ + return convert_short8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rte(ulong8 x) +{ + return convert_short8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtp(ulong8 x) +{ + return convert_short8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtn(ulong8 x) +{ + return convert_short8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtz(ulong16 x) +{ + return convert_short16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rte(ulong16 x) +{ + return convert_short16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtp(ulong16 x) +{ + return convert_short16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtn(ulong16 x) +{ + return convert_short16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtz(ulong x) +{ + return convert_ushort_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rte(ulong x) +{ + return convert_ushort_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtp(ulong x) +{ + return convert_ushort_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtn(ulong x) +{ + return convert_ushort_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtz(ulong2 x) +{ + return convert_ushort2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rte(ulong2 x) +{ + return convert_ushort2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtp(ulong2 x) +{ + return convert_ushort2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtn(ulong2 x) +{ + return convert_ushort2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtz(ulong3 x) +{ + return convert_ushort3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rte(ulong3 x) +{ + return convert_ushort3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtp(ulong3 x) +{ + return convert_ushort3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtn(ulong3 x) +{ + return convert_ushort3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtz(ulong4 x) +{ + return convert_ushort4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rte(ulong4 x) +{ + return convert_ushort4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtp(ulong4 x) +{ + return convert_ushort4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtn(ulong4 x) +{ + return convert_ushort4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtz(ulong8 x) +{ + return convert_ushort8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rte(ulong8 x) +{ + return convert_ushort8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtp(ulong8 x) +{ + return convert_ushort8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtn(ulong8 x) +{ + return convert_ushort8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtz(ulong16 x) +{ + return convert_ushort16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rte(ulong16 x) +{ + return convert_ushort16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtp(ulong16 x) +{ + return convert_ushort16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtn(ulong16 x) +{ + return convert_ushort16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtz(ulong x) +{ + return convert_int_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rte(ulong x) +{ + return convert_int_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtp(ulong x) +{ + return convert_int_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtn(ulong x) +{ + return convert_int_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtz(ulong2 x) +{ + return convert_int2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rte(ulong2 x) +{ + return convert_int2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtp(ulong2 x) +{ + return convert_int2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtn(ulong2 x) +{ + return convert_int2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtz(ulong3 x) +{ + return convert_int3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rte(ulong3 x) +{ + return convert_int3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtp(ulong3 x) +{ + return convert_int3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtn(ulong3 x) +{ + return convert_int3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtz(ulong4 x) +{ + return convert_int4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rte(ulong4 x) +{ + return convert_int4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtp(ulong4 x) +{ + return convert_int4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtn(ulong4 x) +{ + return convert_int4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtz(ulong8 x) +{ + return convert_int8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rte(ulong8 x) +{ + return convert_int8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtp(ulong8 x) +{ + return convert_int8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtn(ulong8 x) +{ + return convert_int8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtz(ulong16 x) +{ + return convert_int16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rte(ulong16 x) +{ + return convert_int16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtp(ulong16 x) +{ + return convert_int16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtn(ulong16 x) +{ + return convert_int16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtz(ulong x) +{ + return convert_uint_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rte(ulong x) +{ + return convert_uint_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtp(ulong x) +{ + return convert_uint_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtn(ulong x) +{ + return convert_uint_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtz(ulong2 x) +{ + return convert_uint2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rte(ulong2 x) +{ + return convert_uint2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtp(ulong2 x) +{ + return convert_uint2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtn(ulong2 x) +{ + return convert_uint2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtz(ulong3 x) +{ + return convert_uint3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rte(ulong3 x) +{ + return convert_uint3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtp(ulong3 x) +{ + return convert_uint3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtn(ulong3 x) +{ + return convert_uint3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtz(ulong4 x) +{ + return convert_uint4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rte(ulong4 x) +{ + return convert_uint4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtp(ulong4 x) +{ + return convert_uint4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtn(ulong4 x) +{ + return convert_uint4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtz(ulong8 x) +{ + return convert_uint8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rte(ulong8 x) +{ + return convert_uint8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtp(ulong8 x) +{ + return convert_uint8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtn(ulong8 x) +{ + return convert_uint8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtz(ulong16 x) +{ + return convert_uint16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rte(ulong16 x) +{ + return convert_uint16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtp(ulong16 x) +{ + return convert_uint16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtn(ulong16 x) +{ + return convert_uint16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtz(ulong x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rte(ulong x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtp(ulong x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtn(ulong x) +{ + return convert_long_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtz(ulong2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rte(ulong2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtp(ulong2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtn(ulong2 x) +{ + return convert_long2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtz(ulong3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rte(ulong3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtp(ulong3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtn(ulong3 x) +{ + return convert_long3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtz(ulong4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rte(ulong4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtp(ulong4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtn(ulong4 x) +{ + return convert_long4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtz(ulong8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rte(ulong8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtp(ulong8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtn(ulong8 x) +{ + return convert_long8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtz(ulong16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rte(ulong16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtp(ulong16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtn(ulong16 x) +{ + return convert_long16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtz(ulong x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rte(ulong x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtp(ulong x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtn(ulong x) +{ + return convert_ulong_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtz(ulong2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rte(ulong2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtp(ulong2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtn(ulong2 x) +{ + return convert_ulong2_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtz(ulong3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rte(ulong3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtp(ulong3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtn(ulong3 x) +{ + return convert_ulong3_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtz(ulong4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rte(ulong4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtp(ulong4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtn(ulong4 x) +{ + return convert_ulong4_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtz(ulong8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rte(ulong8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtp(ulong8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtn(ulong8 x) +{ + return convert_ulong8_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtz(ulong16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rte(ulong16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtp(ulong16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtn(ulong16 x) +{ + return convert_ulong16_sat(x); +} + +#endif +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtz(float x) +{ + return convert_char(x); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtz(float x) +{ + return convert_char_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rte(float x) +{ + x = rint(x); + return convert_char(x); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rte(float x) +{ + x = rint(x); + return convert_char_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtp(float x) +{ + x = ceil(x); + return convert_char(x); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtp(float x) +{ + x = ceil(x); + return convert_char_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtn(float x) +{ + x = floor(x); + return convert_char(x); +} +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtn(float x) +{ + x = floor(x); + return convert_char_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtz(float2 x) +{ + return convert_char2(x); +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtz(float2 x) +{ + return convert_char2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rte(float2 x) +{ + x = rint(x); + return convert_char2(x); +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rte(float2 x) +{ + x = rint(x); + return convert_char2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtp(float2 x) +{ + x = ceil(x); + return convert_char2(x); +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtp(float2 x) +{ + x = ceil(x); + return convert_char2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtn(float2 x) +{ + x = floor(x); + return convert_char2(x); +} +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtn(float2 x) +{ + x = floor(x); + return convert_char2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtz(float3 x) +{ + return convert_char3(x); +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtz(float3 x) +{ + return convert_char3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rte(float3 x) +{ + x = rint(x); + return convert_char3(x); +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rte(float3 x) +{ + x = rint(x); + return convert_char3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtp(float3 x) +{ + x = ceil(x); + return convert_char3(x); +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtp(float3 x) +{ + x = ceil(x); + return convert_char3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtn(float3 x) +{ + x = floor(x); + return convert_char3(x); +} +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtn(float3 x) +{ + x = floor(x); + return convert_char3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtz(float4 x) +{ + return convert_char4(x); +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtz(float4 x) +{ + return convert_char4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rte(float4 x) +{ + x = rint(x); + return convert_char4(x); +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rte(float4 x) +{ + x = rint(x); + return convert_char4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtp(float4 x) +{ + x = ceil(x); + return convert_char4(x); +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtp(float4 x) +{ + x = ceil(x); + return convert_char4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtn(float4 x) +{ + x = floor(x); + return convert_char4(x); +} +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtn(float4 x) +{ + x = floor(x); + return convert_char4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtz(float8 x) +{ + return convert_char8(x); +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtz(float8 x) +{ + return convert_char8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rte(float8 x) +{ + x = rint(x); + return convert_char8(x); +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rte(float8 x) +{ + x = rint(x); + return convert_char8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtp(float8 x) +{ + x = ceil(x); + return convert_char8(x); +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtp(float8 x) +{ + x = ceil(x); + return convert_char8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtn(float8 x) +{ + x = floor(x); + return convert_char8(x); +} +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtn(float8 x) +{ + x = floor(x); + return convert_char8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtz(float16 x) +{ + return convert_char16(x); +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtz(float16 x) +{ + return convert_char16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rte(float16 x) +{ + x = rint(x); + return convert_char16(x); +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rte(float16 x) +{ + x = rint(x); + return convert_char16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtp(float16 x) +{ + x = ceil(x); + return convert_char16(x); +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtp(float16 x) +{ + x = ceil(x); + return convert_char16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtn(float16 x) +{ + x = floor(x); + return convert_char16(x); +} +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtn(float16 x) +{ + x = floor(x); + return convert_char16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtz(float x) +{ + return convert_uchar(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtz(float x) +{ + return convert_uchar_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rte(float x) +{ + x = rint(x); + return convert_uchar(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rte(float x) +{ + x = rint(x); + return convert_uchar_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtp(float x) +{ + x = ceil(x); + return convert_uchar(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtp(float x) +{ + x = ceil(x); + return convert_uchar_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtn(float x) +{ + x = floor(x); + return convert_uchar(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtn(float x) +{ + x = floor(x); + return convert_uchar_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtz(float2 x) +{ + return convert_uchar2(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtz(float2 x) +{ + return convert_uchar2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rte(float2 x) +{ + x = rint(x); + return convert_uchar2(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rte(float2 x) +{ + x = rint(x); + return convert_uchar2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtp(float2 x) +{ + x = ceil(x); + return convert_uchar2(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtp(float2 x) +{ + x = ceil(x); + return convert_uchar2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtn(float2 x) +{ + x = floor(x); + return convert_uchar2(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtn(float2 x) +{ + x = floor(x); + return convert_uchar2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtz(float3 x) +{ + return convert_uchar3(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtz(float3 x) +{ + return convert_uchar3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rte(float3 x) +{ + x = rint(x); + return convert_uchar3(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rte(float3 x) +{ + x = rint(x); + return convert_uchar3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtp(float3 x) +{ + x = ceil(x); + return convert_uchar3(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtp(float3 x) +{ + x = ceil(x); + return convert_uchar3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtn(float3 x) +{ + x = floor(x); + return convert_uchar3(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtn(float3 x) +{ + x = floor(x); + return convert_uchar3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtz(float4 x) +{ + return convert_uchar4(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtz(float4 x) +{ + return convert_uchar4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rte(float4 x) +{ + x = rint(x); + return convert_uchar4(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rte(float4 x) +{ + x = rint(x); + return convert_uchar4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtp(float4 x) +{ + x = ceil(x); + return convert_uchar4(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtp(float4 x) +{ + x = ceil(x); + return convert_uchar4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtn(float4 x) +{ + x = floor(x); + return convert_uchar4(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtn(float4 x) +{ + x = floor(x); + return convert_uchar4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtz(float8 x) +{ + return convert_uchar8(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtz(float8 x) +{ + return convert_uchar8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rte(float8 x) +{ + x = rint(x); + return convert_uchar8(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rte(float8 x) +{ + x = rint(x); + return convert_uchar8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtp(float8 x) +{ + x = ceil(x); + return convert_uchar8(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtp(float8 x) +{ + x = ceil(x); + return convert_uchar8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtn(float8 x) +{ + x = floor(x); + return convert_uchar8(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtn(float8 x) +{ + x = floor(x); + return convert_uchar8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtz(float16 x) +{ + return convert_uchar16(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtz(float16 x) +{ + return convert_uchar16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rte(float16 x) +{ + x = rint(x); + return convert_uchar16(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rte(float16 x) +{ + x = rint(x); + return convert_uchar16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtp(float16 x) +{ + x = ceil(x); + return convert_uchar16(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtp(float16 x) +{ + x = ceil(x); + return convert_uchar16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtn(float16 x) +{ + x = floor(x); + return convert_uchar16(x); +} +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtn(float16 x) +{ + x = floor(x); + return convert_uchar16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtz(float x) +{ + return convert_short(x); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtz(float x) +{ + return convert_short_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rte(float x) +{ + x = rint(x); + return convert_short(x); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rte(float x) +{ + x = rint(x); + return convert_short_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtp(float x) +{ + x = ceil(x); + return convert_short(x); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtp(float x) +{ + x = ceil(x); + return convert_short_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtn(float x) +{ + x = floor(x); + return convert_short(x); +} +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtn(float x) +{ + x = floor(x); + return convert_short_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtz(float2 x) +{ + return convert_short2(x); +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtz(float2 x) +{ + return convert_short2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rte(float2 x) +{ + x = rint(x); + return convert_short2(x); +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rte(float2 x) +{ + x = rint(x); + return convert_short2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtp(float2 x) +{ + x = ceil(x); + return convert_short2(x); +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtp(float2 x) +{ + x = ceil(x); + return convert_short2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtn(float2 x) +{ + x = floor(x); + return convert_short2(x); +} +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtn(float2 x) +{ + x = floor(x); + return convert_short2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtz(float3 x) +{ + return convert_short3(x); +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtz(float3 x) +{ + return convert_short3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rte(float3 x) +{ + x = rint(x); + return convert_short3(x); +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rte(float3 x) +{ + x = rint(x); + return convert_short3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtp(float3 x) +{ + x = ceil(x); + return convert_short3(x); +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtp(float3 x) +{ + x = ceil(x); + return convert_short3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtn(float3 x) +{ + x = floor(x); + return convert_short3(x); +} +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtn(float3 x) +{ + x = floor(x); + return convert_short3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtz(float4 x) +{ + return convert_short4(x); +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtz(float4 x) +{ + return convert_short4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rte(float4 x) +{ + x = rint(x); + return convert_short4(x); +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rte(float4 x) +{ + x = rint(x); + return convert_short4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtp(float4 x) +{ + x = ceil(x); + return convert_short4(x); +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtp(float4 x) +{ + x = ceil(x); + return convert_short4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtn(float4 x) +{ + x = floor(x); + return convert_short4(x); +} +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtn(float4 x) +{ + x = floor(x); + return convert_short4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtz(float8 x) +{ + return convert_short8(x); +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtz(float8 x) +{ + return convert_short8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rte(float8 x) +{ + x = rint(x); + return convert_short8(x); +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rte(float8 x) +{ + x = rint(x); + return convert_short8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtp(float8 x) +{ + x = ceil(x); + return convert_short8(x); +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtp(float8 x) +{ + x = ceil(x); + return convert_short8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtn(float8 x) +{ + x = floor(x); + return convert_short8(x); +} +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtn(float8 x) +{ + x = floor(x); + return convert_short8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtz(float16 x) +{ + return convert_short16(x); +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtz(float16 x) +{ + return convert_short16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rte(float16 x) +{ + x = rint(x); + return convert_short16(x); +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rte(float16 x) +{ + x = rint(x); + return convert_short16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtp(float16 x) +{ + x = ceil(x); + return convert_short16(x); +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtp(float16 x) +{ + x = ceil(x); + return convert_short16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtn(float16 x) +{ + x = floor(x); + return convert_short16(x); +} +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtn(float16 x) +{ + x = floor(x); + return convert_short16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtz(float x) +{ + return convert_ushort(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtz(float x) +{ + return convert_ushort_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rte(float x) +{ + x = rint(x); + return convert_ushort(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rte(float x) +{ + x = rint(x); + return convert_ushort_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtp(float x) +{ + x = ceil(x); + return convert_ushort(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtp(float x) +{ + x = ceil(x); + return convert_ushort_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtn(float x) +{ + x = floor(x); + return convert_ushort(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtn(float x) +{ + x = floor(x); + return convert_ushort_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtz(float2 x) +{ + return convert_ushort2(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtz(float2 x) +{ + return convert_ushort2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rte(float2 x) +{ + x = rint(x); + return convert_ushort2(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rte(float2 x) +{ + x = rint(x); + return convert_ushort2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtp(float2 x) +{ + x = ceil(x); + return convert_ushort2(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtp(float2 x) +{ + x = ceil(x); + return convert_ushort2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtn(float2 x) +{ + x = floor(x); + return convert_ushort2(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtn(float2 x) +{ + x = floor(x); + return convert_ushort2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtz(float3 x) +{ + return convert_ushort3(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtz(float3 x) +{ + return convert_ushort3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rte(float3 x) +{ + x = rint(x); + return convert_ushort3(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rte(float3 x) +{ + x = rint(x); + return convert_ushort3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtp(float3 x) +{ + x = ceil(x); + return convert_ushort3(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtp(float3 x) +{ + x = ceil(x); + return convert_ushort3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtn(float3 x) +{ + x = floor(x); + return convert_ushort3(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtn(float3 x) +{ + x = floor(x); + return convert_ushort3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtz(float4 x) +{ + return convert_ushort4(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtz(float4 x) +{ + return convert_ushort4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rte(float4 x) +{ + x = rint(x); + return convert_ushort4(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rte(float4 x) +{ + x = rint(x); + return convert_ushort4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtp(float4 x) +{ + x = ceil(x); + return convert_ushort4(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtp(float4 x) +{ + x = ceil(x); + return convert_ushort4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtn(float4 x) +{ + x = floor(x); + return convert_ushort4(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtn(float4 x) +{ + x = floor(x); + return convert_ushort4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtz(float8 x) +{ + return convert_ushort8(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtz(float8 x) +{ + return convert_ushort8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rte(float8 x) +{ + x = rint(x); + return convert_ushort8(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rte(float8 x) +{ + x = rint(x); + return convert_ushort8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtp(float8 x) +{ + x = ceil(x); + return convert_ushort8(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtp(float8 x) +{ + x = ceil(x); + return convert_ushort8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtn(float8 x) +{ + x = floor(x); + return convert_ushort8(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtn(float8 x) +{ + x = floor(x); + return convert_ushort8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtz(float16 x) +{ + return convert_ushort16(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtz(float16 x) +{ + return convert_ushort16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rte(float16 x) +{ + x = rint(x); + return convert_ushort16(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rte(float16 x) +{ + x = rint(x); + return convert_ushort16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtp(float16 x) +{ + x = ceil(x); + return convert_ushort16(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtp(float16 x) +{ + x = ceil(x); + return convert_ushort16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtn(float16 x) +{ + x = floor(x); + return convert_ushort16(x); +} +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtn(float16 x) +{ + x = floor(x); + return convert_ushort16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtz(float x) +{ + return convert_int(x); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtz(float x) +{ + return convert_int_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rte(float x) +{ + x = rint(x); + return convert_int(x); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rte(float x) +{ + x = rint(x); + return convert_int_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtp(float x) +{ + x = ceil(x); + return convert_int(x); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtp(float x) +{ + x = ceil(x); + return convert_int_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtn(float x) +{ + x = floor(x); + return convert_int(x); +} +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtn(float x) +{ + x = floor(x); + return convert_int_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtz(float2 x) +{ + return convert_int2(x); +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtz(float2 x) +{ + return convert_int2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rte(float2 x) +{ + x = rint(x); + return convert_int2(x); +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rte(float2 x) +{ + x = rint(x); + return convert_int2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtp(float2 x) +{ + x = ceil(x); + return convert_int2(x); +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtp(float2 x) +{ + x = ceil(x); + return convert_int2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtn(float2 x) +{ + x = floor(x); + return convert_int2(x); +} +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtn(float2 x) +{ + x = floor(x); + return convert_int2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtz(float3 x) +{ + return convert_int3(x); +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtz(float3 x) +{ + return convert_int3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rte(float3 x) +{ + x = rint(x); + return convert_int3(x); +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rte(float3 x) +{ + x = rint(x); + return convert_int3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtp(float3 x) +{ + x = ceil(x); + return convert_int3(x); +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtp(float3 x) +{ + x = ceil(x); + return convert_int3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtn(float3 x) +{ + x = floor(x); + return convert_int3(x); +} +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtn(float3 x) +{ + x = floor(x); + return convert_int3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtz(float4 x) +{ + return convert_int4(x); +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtz(float4 x) +{ + return convert_int4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rte(float4 x) +{ + x = rint(x); + return convert_int4(x); +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rte(float4 x) +{ + x = rint(x); + return convert_int4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtp(float4 x) +{ + x = ceil(x); + return convert_int4(x); +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtp(float4 x) +{ + x = ceil(x); + return convert_int4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtn(float4 x) +{ + x = floor(x); + return convert_int4(x); +} +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtn(float4 x) +{ + x = floor(x); + return convert_int4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtz(float8 x) +{ + return convert_int8(x); +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtz(float8 x) +{ + return convert_int8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rte(float8 x) +{ + x = rint(x); + return convert_int8(x); +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rte(float8 x) +{ + x = rint(x); + return convert_int8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtp(float8 x) +{ + x = ceil(x); + return convert_int8(x); +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtp(float8 x) +{ + x = ceil(x); + return convert_int8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtn(float8 x) +{ + x = floor(x); + return convert_int8(x); +} +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtn(float8 x) +{ + x = floor(x); + return convert_int8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtz(float16 x) +{ + return convert_int16(x); +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtz(float16 x) +{ + return convert_int16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rte(float16 x) +{ + x = rint(x); + return convert_int16(x); +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rte(float16 x) +{ + x = rint(x); + return convert_int16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtp(float16 x) +{ + x = ceil(x); + return convert_int16(x); +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtp(float16 x) +{ + x = ceil(x); + return convert_int16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtn(float16 x) +{ + x = floor(x); + return convert_int16(x); +} +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtn(float16 x) +{ + x = floor(x); + return convert_int16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtz(float x) +{ + return convert_uint(x); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtz(float x) +{ + return convert_uint_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rte(float x) +{ + x = rint(x); + return convert_uint(x); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rte(float x) +{ + x = rint(x); + return convert_uint_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtp(float x) +{ + x = ceil(x); + return convert_uint(x); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtp(float x) +{ + x = ceil(x); + return convert_uint_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtn(float x) +{ + x = floor(x); + return convert_uint(x); +} +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtn(float x) +{ + x = floor(x); + return convert_uint_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtz(float2 x) +{ + return convert_uint2(x); +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtz(float2 x) +{ + return convert_uint2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rte(float2 x) +{ + x = rint(x); + return convert_uint2(x); +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rte(float2 x) +{ + x = rint(x); + return convert_uint2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtp(float2 x) +{ + x = ceil(x); + return convert_uint2(x); +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtp(float2 x) +{ + x = ceil(x); + return convert_uint2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtn(float2 x) +{ + x = floor(x); + return convert_uint2(x); +} +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtn(float2 x) +{ + x = floor(x); + return convert_uint2_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtz(float3 x) +{ + return convert_uint3(x); +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtz(float3 x) +{ + return convert_uint3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rte(float3 x) +{ + x = rint(x); + return convert_uint3(x); +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rte(float3 x) +{ + x = rint(x); + return convert_uint3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtp(float3 x) +{ + x = ceil(x); + return convert_uint3(x); +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtp(float3 x) +{ + x = ceil(x); + return convert_uint3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtn(float3 x) +{ + x = floor(x); + return convert_uint3(x); +} +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtn(float3 x) +{ + x = floor(x); + return convert_uint3_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtz(float4 x) +{ + return convert_uint4(x); +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtz(float4 x) +{ + return convert_uint4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rte(float4 x) +{ + x = rint(x); + return convert_uint4(x); +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rte(float4 x) +{ + x = rint(x); + return convert_uint4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtp(float4 x) +{ + x = ceil(x); + return convert_uint4(x); +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtp(float4 x) +{ + x = ceil(x); + return convert_uint4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtn(float4 x) +{ + x = floor(x); + return convert_uint4(x); +} +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtn(float4 x) +{ + x = floor(x); + return convert_uint4_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtz(float8 x) +{ + return convert_uint8(x); +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtz(float8 x) +{ + return convert_uint8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rte(float8 x) +{ + x = rint(x); + return convert_uint8(x); +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rte(float8 x) +{ + x = rint(x); + return convert_uint8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtp(float8 x) +{ + x = ceil(x); + return convert_uint8(x); +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtp(float8 x) +{ + x = ceil(x); + return convert_uint8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtn(float8 x) +{ + x = floor(x); + return convert_uint8(x); +} +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtn(float8 x) +{ + x = floor(x); + return convert_uint8_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtz(float16 x) +{ + return convert_uint16(x); +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtz(float16 x) +{ + return convert_uint16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rte(float16 x) +{ + x = rint(x); + return convert_uint16(x); +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rte(float16 x) +{ + x = rint(x); + return convert_uint16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtp(float16 x) +{ + x = ceil(x); + return convert_uint16(x); +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtp(float16 x) +{ + x = ceil(x); + return convert_uint16_sat(x); +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtn(float16 x) +{ + x = floor(x); + return convert_uint16(x); +} +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtn(float16 x) +{ + x = floor(x); + return convert_uint16_sat(x); +} +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtz(float x) +{ + return convert_long(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtz(float x) +{ + return convert_long_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rte(float x) +{ + x = rint(x); + return convert_long(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rte(float x) +{ + x = rint(x); + return convert_long_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtp(float x) +{ + x = ceil(x); + return convert_long(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtp(float x) +{ + x = ceil(x); + return convert_long_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtn(float x) +{ + x = floor(x); + return convert_long(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtn(float x) +{ + x = floor(x); + return convert_long_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtz(float2 x) +{ + return convert_long2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtz(float2 x) +{ + return convert_long2_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rte(float2 x) +{ + x = rint(x); + return convert_long2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rte(float2 x) +{ + x = rint(x); + return convert_long2_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtp(float2 x) +{ + x = ceil(x); + return convert_long2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtp(float2 x) +{ + x = ceil(x); + return convert_long2_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtn(float2 x) +{ + x = floor(x); + return convert_long2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtn(float2 x) +{ + x = floor(x); + return convert_long2_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtz(float3 x) +{ + return convert_long3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtz(float3 x) +{ + return convert_long3_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rte(float3 x) +{ + x = rint(x); + return convert_long3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rte(float3 x) +{ + x = rint(x); + return convert_long3_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtp(float3 x) +{ + x = ceil(x); + return convert_long3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtp(float3 x) +{ + x = ceil(x); + return convert_long3_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtn(float3 x) +{ + x = floor(x); + return convert_long3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtn(float3 x) +{ + x = floor(x); + return convert_long3_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtz(float4 x) +{ + return convert_long4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtz(float4 x) +{ + return convert_long4_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rte(float4 x) +{ + x = rint(x); + return convert_long4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rte(float4 x) +{ + x = rint(x); + return convert_long4_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtp(float4 x) +{ + x = ceil(x); + return convert_long4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtp(float4 x) +{ + x = ceil(x); + return convert_long4_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtn(float4 x) +{ + x = floor(x); + return convert_long4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtn(float4 x) +{ + x = floor(x); + return convert_long4_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtz(float8 x) +{ + return convert_long8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtz(float8 x) +{ + return convert_long8_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rte(float8 x) +{ + x = rint(x); + return convert_long8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rte(float8 x) +{ + x = rint(x); + return convert_long8_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtp(float8 x) +{ + x = ceil(x); + return convert_long8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtp(float8 x) +{ + x = ceil(x); + return convert_long8_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtn(float8 x) +{ + x = floor(x); + return convert_long8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtn(float8 x) +{ + x = floor(x); + return convert_long8_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtz(float16 x) +{ + return convert_long16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtz(float16 x) +{ + return convert_long16_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rte(float16 x) +{ + x = rint(x); + return convert_long16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rte(float16 x) +{ + x = rint(x); + return convert_long16_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtp(float16 x) +{ + x = ceil(x); + return convert_long16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtp(float16 x) +{ + x = ceil(x); + return convert_long16_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtn(float16 x) +{ + x = floor(x); + return convert_long16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtn(float16 x) +{ + x = floor(x); + return convert_long16_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtz(float x) +{ + return convert_ulong(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtz(float x) +{ + return convert_ulong_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rte(float x) +{ + x = rint(x); + return convert_ulong(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rte(float x) +{ + x = rint(x); + return convert_ulong_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtp(float x) +{ + x = ceil(x); + return convert_ulong(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtp(float x) +{ + x = ceil(x); + return convert_ulong_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtn(float x) +{ + x = floor(x); + return convert_ulong(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtn(float x) +{ + x = floor(x); + return convert_ulong_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtz(float2 x) +{ + return convert_ulong2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtz(float2 x) +{ + return convert_ulong2_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rte(float2 x) +{ + x = rint(x); + return convert_ulong2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rte(float2 x) +{ + x = rint(x); + return convert_ulong2_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtp(float2 x) +{ + x = ceil(x); + return convert_ulong2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtp(float2 x) +{ + x = ceil(x); + return convert_ulong2_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtn(float2 x) +{ + x = floor(x); + return convert_ulong2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtn(float2 x) +{ + x = floor(x); + return convert_ulong2_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtz(float3 x) +{ + return convert_ulong3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtz(float3 x) +{ + return convert_ulong3_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rte(float3 x) +{ + x = rint(x); + return convert_ulong3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rte(float3 x) +{ + x = rint(x); + return convert_ulong3_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtp(float3 x) +{ + x = ceil(x); + return convert_ulong3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtp(float3 x) +{ + x = ceil(x); + return convert_ulong3_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtn(float3 x) +{ + x = floor(x); + return convert_ulong3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtn(float3 x) +{ + x = floor(x); + return convert_ulong3_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtz(float4 x) +{ + return convert_ulong4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtz(float4 x) +{ + return convert_ulong4_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rte(float4 x) +{ + x = rint(x); + return convert_ulong4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rte(float4 x) +{ + x = rint(x); + return convert_ulong4_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtp(float4 x) +{ + x = ceil(x); + return convert_ulong4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtp(float4 x) +{ + x = ceil(x); + return convert_ulong4_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtn(float4 x) +{ + x = floor(x); + return convert_ulong4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtn(float4 x) +{ + x = floor(x); + return convert_ulong4_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtz(float8 x) +{ + return convert_ulong8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtz(float8 x) +{ + return convert_ulong8_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rte(float8 x) +{ + x = rint(x); + return convert_ulong8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rte(float8 x) +{ + x = rint(x); + return convert_ulong8_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtp(float8 x) +{ + x = ceil(x); + return convert_ulong8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtp(float8 x) +{ + x = ceil(x); + return convert_ulong8_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtn(float8 x) +{ + x = floor(x); + return convert_ulong8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtn(float8 x) +{ + x = floor(x); + return convert_ulong8_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtz(float16 x) +{ + return convert_ulong16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtz(float16 x) +{ + return convert_ulong16_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rte(float16 x) +{ + x = rint(x); + return convert_ulong16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rte(float16 x) +{ + x = rint(x); + return convert_ulong16_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtp(float16 x) +{ + x = ceil(x); + return convert_ulong16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtp(float16 x) +{ + x = ceil(x); + return convert_ulong16_sat(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtn(float16 x) +{ + x = floor(x); + return convert_ulong16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtn(float16 x) +{ + x = floor(x); + return convert_ulong16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtz(double x) +{ + return convert_char(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtz(double x) +{ + return convert_char_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_rte(double x) +{ + x = rint(x); + return convert_char(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rte(double x) +{ + x = rint(x); + return convert_char_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtp(double x) +{ + x = ceil(x); + return convert_char(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtp(double x) +{ + x = ceil(x); + return convert_char_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_rtn(double x) +{ + x = floor(x); + return convert_char(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char convert_char_sat_rtn(double x) +{ + x = floor(x); + return convert_char_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtz(double2 x) +{ + return convert_char2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtz(double2 x) +{ + return convert_char2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rte(double2 x) +{ + x = rint(x); + return convert_char2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rte(double2 x) +{ + x = rint(x); + return convert_char2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtp(double2 x) +{ + x = ceil(x); + return convert_char2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtp(double2 x) +{ + x = ceil(x); + return convert_char2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_rtn(double2 x) +{ + x = floor(x); + return convert_char2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char2 convert_char2_sat_rtn(double2 x) +{ + x = floor(x); + return convert_char2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtz(double3 x) +{ + return convert_char3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtz(double3 x) +{ + return convert_char3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rte(double3 x) +{ + x = rint(x); + return convert_char3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rte(double3 x) +{ + x = rint(x); + return convert_char3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtp(double3 x) +{ + x = ceil(x); + return convert_char3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtp(double3 x) +{ + x = ceil(x); + return convert_char3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_rtn(double3 x) +{ + x = floor(x); + return convert_char3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char3 convert_char3_sat_rtn(double3 x) +{ + x = floor(x); + return convert_char3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtz(double4 x) +{ + return convert_char4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtz(double4 x) +{ + return convert_char4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rte(double4 x) +{ + x = rint(x); + return convert_char4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rte(double4 x) +{ + x = rint(x); + return convert_char4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtp(double4 x) +{ + x = ceil(x); + return convert_char4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtp(double4 x) +{ + x = ceil(x); + return convert_char4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_rtn(double4 x) +{ + x = floor(x); + return convert_char4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char4 convert_char4_sat_rtn(double4 x) +{ + x = floor(x); + return convert_char4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtz(double8 x) +{ + return convert_char8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtz(double8 x) +{ + return convert_char8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rte(double8 x) +{ + x = rint(x); + return convert_char8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rte(double8 x) +{ + x = rint(x); + return convert_char8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtp(double8 x) +{ + x = ceil(x); + return convert_char8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtp(double8 x) +{ + x = ceil(x); + return convert_char8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_rtn(double8 x) +{ + x = floor(x); + return convert_char8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char8 convert_char8_sat_rtn(double8 x) +{ + x = floor(x); + return convert_char8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtz(double16 x) +{ + return convert_char16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtz(double16 x) +{ + return convert_char16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rte(double16 x) +{ + x = rint(x); + return convert_char16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rte(double16 x) +{ + x = rint(x); + return convert_char16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtp(double16 x) +{ + x = ceil(x); + return convert_char16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtp(double16 x) +{ + x = ceil(x); + return convert_char16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_rtn(double16 x) +{ + x = floor(x); + return convert_char16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +char16 convert_char16_sat_rtn(double16 x) +{ + x = floor(x); + return convert_char16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtz(double x) +{ + return convert_uchar(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtz(double x) +{ + return convert_uchar_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rte(double x) +{ + x = rint(x); + return convert_uchar(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rte(double x) +{ + x = rint(x); + return convert_uchar_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtp(double x) +{ + x = ceil(x); + return convert_uchar(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtp(double x) +{ + x = ceil(x); + return convert_uchar_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_rtn(double x) +{ + x = floor(x); + return convert_uchar(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar convert_uchar_sat_rtn(double x) +{ + x = floor(x); + return convert_uchar_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtz(double2 x) +{ + return convert_uchar2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtz(double2 x) +{ + return convert_uchar2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rte(double2 x) +{ + x = rint(x); + return convert_uchar2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rte(double2 x) +{ + x = rint(x); + return convert_uchar2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtp(double2 x) +{ + x = ceil(x); + return convert_uchar2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtp(double2 x) +{ + x = ceil(x); + return convert_uchar2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_rtn(double2 x) +{ + x = floor(x); + return convert_uchar2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar2 convert_uchar2_sat_rtn(double2 x) +{ + x = floor(x); + return convert_uchar2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtz(double3 x) +{ + return convert_uchar3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtz(double3 x) +{ + return convert_uchar3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rte(double3 x) +{ + x = rint(x); + return convert_uchar3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rte(double3 x) +{ + x = rint(x); + return convert_uchar3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtp(double3 x) +{ + x = ceil(x); + return convert_uchar3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtp(double3 x) +{ + x = ceil(x); + return convert_uchar3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_rtn(double3 x) +{ + x = floor(x); + return convert_uchar3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar3 convert_uchar3_sat_rtn(double3 x) +{ + x = floor(x); + return convert_uchar3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtz(double4 x) +{ + return convert_uchar4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtz(double4 x) +{ + return convert_uchar4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rte(double4 x) +{ + x = rint(x); + return convert_uchar4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rte(double4 x) +{ + x = rint(x); + return convert_uchar4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtp(double4 x) +{ + x = ceil(x); + return convert_uchar4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtp(double4 x) +{ + x = ceil(x); + return convert_uchar4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_rtn(double4 x) +{ + x = floor(x); + return convert_uchar4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar4 convert_uchar4_sat_rtn(double4 x) +{ + x = floor(x); + return convert_uchar4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtz(double8 x) +{ + return convert_uchar8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtz(double8 x) +{ + return convert_uchar8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rte(double8 x) +{ + x = rint(x); + return convert_uchar8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rte(double8 x) +{ + x = rint(x); + return convert_uchar8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtp(double8 x) +{ + x = ceil(x); + return convert_uchar8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtp(double8 x) +{ + x = ceil(x); + return convert_uchar8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_rtn(double8 x) +{ + x = floor(x); + return convert_uchar8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar8 convert_uchar8_sat_rtn(double8 x) +{ + x = floor(x); + return convert_uchar8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtz(double16 x) +{ + return convert_uchar16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtz(double16 x) +{ + return convert_uchar16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rte(double16 x) +{ + x = rint(x); + return convert_uchar16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rte(double16 x) +{ + x = rint(x); + return convert_uchar16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtp(double16 x) +{ + x = ceil(x); + return convert_uchar16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtp(double16 x) +{ + x = ceil(x); + return convert_uchar16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_rtn(double16 x) +{ + x = floor(x); + return convert_uchar16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uchar16 convert_uchar16_sat_rtn(double16 x) +{ + x = floor(x); + return convert_uchar16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtz(double x) +{ + return convert_short(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtz(double x) +{ + return convert_short_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_rte(double x) +{ + x = rint(x); + return convert_short(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rte(double x) +{ + x = rint(x); + return convert_short_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtp(double x) +{ + x = ceil(x); + return convert_short(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtp(double x) +{ + x = ceil(x); + return convert_short_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_rtn(double x) +{ + x = floor(x); + return convert_short(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short convert_short_sat_rtn(double x) +{ + x = floor(x); + return convert_short_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtz(double2 x) +{ + return convert_short2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtz(double2 x) +{ + return convert_short2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rte(double2 x) +{ + x = rint(x); + return convert_short2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rte(double2 x) +{ + x = rint(x); + return convert_short2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtp(double2 x) +{ + x = ceil(x); + return convert_short2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtp(double2 x) +{ + x = ceil(x); + return convert_short2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_rtn(double2 x) +{ + x = floor(x); + return convert_short2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short2 convert_short2_sat_rtn(double2 x) +{ + x = floor(x); + return convert_short2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtz(double3 x) +{ + return convert_short3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtz(double3 x) +{ + return convert_short3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rte(double3 x) +{ + x = rint(x); + return convert_short3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rte(double3 x) +{ + x = rint(x); + return convert_short3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtp(double3 x) +{ + x = ceil(x); + return convert_short3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtp(double3 x) +{ + x = ceil(x); + return convert_short3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_rtn(double3 x) +{ + x = floor(x); + return convert_short3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short3 convert_short3_sat_rtn(double3 x) +{ + x = floor(x); + return convert_short3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtz(double4 x) +{ + return convert_short4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtz(double4 x) +{ + return convert_short4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rte(double4 x) +{ + x = rint(x); + return convert_short4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rte(double4 x) +{ + x = rint(x); + return convert_short4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtp(double4 x) +{ + x = ceil(x); + return convert_short4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtp(double4 x) +{ + x = ceil(x); + return convert_short4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_rtn(double4 x) +{ + x = floor(x); + return convert_short4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short4 convert_short4_sat_rtn(double4 x) +{ + x = floor(x); + return convert_short4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtz(double8 x) +{ + return convert_short8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtz(double8 x) +{ + return convert_short8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rte(double8 x) +{ + x = rint(x); + return convert_short8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rte(double8 x) +{ + x = rint(x); + return convert_short8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtp(double8 x) +{ + x = ceil(x); + return convert_short8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtp(double8 x) +{ + x = ceil(x); + return convert_short8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_rtn(double8 x) +{ + x = floor(x); + return convert_short8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short8 convert_short8_sat_rtn(double8 x) +{ + x = floor(x); + return convert_short8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtz(double16 x) +{ + return convert_short16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtz(double16 x) +{ + return convert_short16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rte(double16 x) +{ + x = rint(x); + return convert_short16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rte(double16 x) +{ + x = rint(x); + return convert_short16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtp(double16 x) +{ + x = ceil(x); + return convert_short16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtp(double16 x) +{ + x = ceil(x); + return convert_short16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_rtn(double16 x) +{ + x = floor(x); + return convert_short16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +short16 convert_short16_sat_rtn(double16 x) +{ + x = floor(x); + return convert_short16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtz(double x) +{ + return convert_ushort(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtz(double x) +{ + return convert_ushort_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rte(double x) +{ + x = rint(x); + return convert_ushort(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rte(double x) +{ + x = rint(x); + return convert_ushort_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtp(double x) +{ + x = ceil(x); + return convert_ushort(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtp(double x) +{ + x = ceil(x); + return convert_ushort_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_rtn(double x) +{ + x = floor(x); + return convert_ushort(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort convert_ushort_sat_rtn(double x) +{ + x = floor(x); + return convert_ushort_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtz(double2 x) +{ + return convert_ushort2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtz(double2 x) +{ + return convert_ushort2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rte(double2 x) +{ + x = rint(x); + return convert_ushort2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rte(double2 x) +{ + x = rint(x); + return convert_ushort2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtp(double2 x) +{ + x = ceil(x); + return convert_ushort2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtp(double2 x) +{ + x = ceil(x); + return convert_ushort2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_rtn(double2 x) +{ + x = floor(x); + return convert_ushort2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort2 convert_ushort2_sat_rtn(double2 x) +{ + x = floor(x); + return convert_ushort2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtz(double3 x) +{ + return convert_ushort3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtz(double3 x) +{ + return convert_ushort3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rte(double3 x) +{ + x = rint(x); + return convert_ushort3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rte(double3 x) +{ + x = rint(x); + return convert_ushort3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtp(double3 x) +{ + x = ceil(x); + return convert_ushort3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtp(double3 x) +{ + x = ceil(x); + return convert_ushort3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_rtn(double3 x) +{ + x = floor(x); + return convert_ushort3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort3 convert_ushort3_sat_rtn(double3 x) +{ + x = floor(x); + return convert_ushort3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtz(double4 x) +{ + return convert_ushort4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtz(double4 x) +{ + return convert_ushort4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rte(double4 x) +{ + x = rint(x); + return convert_ushort4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rte(double4 x) +{ + x = rint(x); + return convert_ushort4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtp(double4 x) +{ + x = ceil(x); + return convert_ushort4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtp(double4 x) +{ + x = ceil(x); + return convert_ushort4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_rtn(double4 x) +{ + x = floor(x); + return convert_ushort4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort4 convert_ushort4_sat_rtn(double4 x) +{ + x = floor(x); + return convert_ushort4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtz(double8 x) +{ + return convert_ushort8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtz(double8 x) +{ + return convert_ushort8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rte(double8 x) +{ + x = rint(x); + return convert_ushort8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rte(double8 x) +{ + x = rint(x); + return convert_ushort8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtp(double8 x) +{ + x = ceil(x); + return convert_ushort8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtp(double8 x) +{ + x = ceil(x); + return convert_ushort8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_rtn(double8 x) +{ + x = floor(x); + return convert_ushort8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort8 convert_ushort8_sat_rtn(double8 x) +{ + x = floor(x); + return convert_ushort8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtz(double16 x) +{ + return convert_ushort16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtz(double16 x) +{ + return convert_ushort16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rte(double16 x) +{ + x = rint(x); + return convert_ushort16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rte(double16 x) +{ + x = rint(x); + return convert_ushort16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtp(double16 x) +{ + x = ceil(x); + return convert_ushort16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtp(double16 x) +{ + x = ceil(x); + return convert_ushort16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_rtn(double16 x) +{ + x = floor(x); + return convert_ushort16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +ushort16 convert_ushort16_sat_rtn(double16 x) +{ + x = floor(x); + return convert_ushort16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtz(double x) +{ + return convert_int(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtz(double x) +{ + return convert_int_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_rte(double x) +{ + x = rint(x); + return convert_int(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rte(double x) +{ + x = rint(x); + return convert_int_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtp(double x) +{ + x = ceil(x); + return convert_int(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtp(double x) +{ + x = ceil(x); + return convert_int_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_rtn(double x) +{ + x = floor(x); + return convert_int(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int convert_int_sat_rtn(double x) +{ + x = floor(x); + return convert_int_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtz(double2 x) +{ + return convert_int2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtz(double2 x) +{ + return convert_int2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rte(double2 x) +{ + x = rint(x); + return convert_int2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rte(double2 x) +{ + x = rint(x); + return convert_int2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtp(double2 x) +{ + x = ceil(x); + return convert_int2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtp(double2 x) +{ + x = ceil(x); + return convert_int2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_rtn(double2 x) +{ + x = floor(x); + return convert_int2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int2 convert_int2_sat_rtn(double2 x) +{ + x = floor(x); + return convert_int2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtz(double3 x) +{ + return convert_int3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtz(double3 x) +{ + return convert_int3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rte(double3 x) +{ + x = rint(x); + return convert_int3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rte(double3 x) +{ + x = rint(x); + return convert_int3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtp(double3 x) +{ + x = ceil(x); + return convert_int3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtp(double3 x) +{ + x = ceil(x); + return convert_int3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_rtn(double3 x) +{ + x = floor(x); + return convert_int3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int3 convert_int3_sat_rtn(double3 x) +{ + x = floor(x); + return convert_int3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtz(double4 x) +{ + return convert_int4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtz(double4 x) +{ + return convert_int4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rte(double4 x) +{ + x = rint(x); + return convert_int4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rte(double4 x) +{ + x = rint(x); + return convert_int4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtp(double4 x) +{ + x = ceil(x); + return convert_int4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtp(double4 x) +{ + x = ceil(x); + return convert_int4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_rtn(double4 x) +{ + x = floor(x); + return convert_int4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int4 convert_int4_sat_rtn(double4 x) +{ + x = floor(x); + return convert_int4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtz(double8 x) +{ + return convert_int8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtz(double8 x) +{ + return convert_int8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rte(double8 x) +{ + x = rint(x); + return convert_int8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rte(double8 x) +{ + x = rint(x); + return convert_int8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtp(double8 x) +{ + x = ceil(x); + return convert_int8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtp(double8 x) +{ + x = ceil(x); + return convert_int8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_rtn(double8 x) +{ + x = floor(x); + return convert_int8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int8 convert_int8_sat_rtn(double8 x) +{ + x = floor(x); + return convert_int8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtz(double16 x) +{ + return convert_int16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtz(double16 x) +{ + return convert_int16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rte(double16 x) +{ + x = rint(x); + return convert_int16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rte(double16 x) +{ + x = rint(x); + return convert_int16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtp(double16 x) +{ + x = ceil(x); + return convert_int16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtp(double16 x) +{ + x = ceil(x); + return convert_int16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_rtn(double16 x) +{ + x = floor(x); + return convert_int16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +int16 convert_int16_sat_rtn(double16 x) +{ + x = floor(x); + return convert_int16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtz(double x) +{ + return convert_uint(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtz(double x) +{ + return convert_uint_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rte(double x) +{ + x = rint(x); + return convert_uint(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rte(double x) +{ + x = rint(x); + return convert_uint_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtp(double x) +{ + x = ceil(x); + return convert_uint(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtp(double x) +{ + x = ceil(x); + return convert_uint_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_rtn(double x) +{ + x = floor(x); + return convert_uint(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint convert_uint_sat_rtn(double x) +{ + x = floor(x); + return convert_uint_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtz(double2 x) +{ + return convert_uint2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtz(double2 x) +{ + return convert_uint2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rte(double2 x) +{ + x = rint(x); + return convert_uint2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rte(double2 x) +{ + x = rint(x); + return convert_uint2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtp(double2 x) +{ + x = ceil(x); + return convert_uint2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtp(double2 x) +{ + x = ceil(x); + return convert_uint2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_rtn(double2 x) +{ + x = floor(x); + return convert_uint2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint2 convert_uint2_sat_rtn(double2 x) +{ + x = floor(x); + return convert_uint2_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtz(double3 x) +{ + return convert_uint3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtz(double3 x) +{ + return convert_uint3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rte(double3 x) +{ + x = rint(x); + return convert_uint3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rte(double3 x) +{ + x = rint(x); + return convert_uint3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtp(double3 x) +{ + x = ceil(x); + return convert_uint3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtp(double3 x) +{ + x = ceil(x); + return convert_uint3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_rtn(double3 x) +{ + x = floor(x); + return convert_uint3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint3 convert_uint3_sat_rtn(double3 x) +{ + x = floor(x); + return convert_uint3_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtz(double4 x) +{ + return convert_uint4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtz(double4 x) +{ + return convert_uint4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rte(double4 x) +{ + x = rint(x); + return convert_uint4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rte(double4 x) +{ + x = rint(x); + return convert_uint4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtp(double4 x) +{ + x = ceil(x); + return convert_uint4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtp(double4 x) +{ + x = ceil(x); + return convert_uint4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_rtn(double4 x) +{ + x = floor(x); + return convert_uint4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint4 convert_uint4_sat_rtn(double4 x) +{ + x = floor(x); + return convert_uint4_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtz(double8 x) +{ + return convert_uint8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtz(double8 x) +{ + return convert_uint8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rte(double8 x) +{ + x = rint(x); + return convert_uint8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rte(double8 x) +{ + x = rint(x); + return convert_uint8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtp(double8 x) +{ + x = ceil(x); + return convert_uint8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtp(double8 x) +{ + x = ceil(x); + return convert_uint8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_rtn(double8 x) +{ + x = floor(x); + return convert_uint8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint8 convert_uint8_sat_rtn(double8 x) +{ + x = floor(x); + return convert_uint8_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtz(double16 x) +{ + return convert_uint16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtz(double16 x) +{ + return convert_uint16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rte(double16 x) +{ + x = rint(x); + return convert_uint16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rte(double16 x) +{ + x = rint(x); + return convert_uint16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtp(double16 x) +{ + x = ceil(x); + return convert_uint16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtp(double16 x) +{ + x = ceil(x); + return convert_uint16_sat(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_rtn(double16 x) +{ + x = floor(x); + return convert_uint16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +uint16 convert_uint16_sat_rtn(double16 x) +{ + x = floor(x); + return convert_uint16_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtz(double x) +{ + return convert_long(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtz(double x) +{ + return convert_long_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long convert_long_rte(double x) +{ + x = rint(x); + return convert_long(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rte(double x) +{ + x = rint(x); + return convert_long_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtp(double x) +{ + x = ceil(x); + return convert_long(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtp(double x) +{ + x = ceil(x); + return convert_long_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long convert_long_rtn(double x) +{ + x = floor(x); + return convert_long(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long convert_long_sat_rtn(double x) +{ + x = floor(x); + return convert_long_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtz(double2 x) +{ + return convert_long2(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtz(double2 x) +{ + return convert_long2_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rte(double2 x) +{ + x = rint(x); + return convert_long2(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rte(double2 x) +{ + x = rint(x); + return convert_long2_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtp(double2 x) +{ + x = ceil(x); + return convert_long2(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtp(double2 x) +{ + x = ceil(x); + return convert_long2_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_rtn(double2 x) +{ + x = floor(x); + return convert_long2(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long2 convert_long2_sat_rtn(double2 x) +{ + x = floor(x); + return convert_long2_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtz(double3 x) +{ + return convert_long3(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtz(double3 x) +{ + return convert_long3_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rte(double3 x) +{ + x = rint(x); + return convert_long3(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rte(double3 x) +{ + x = rint(x); + return convert_long3_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtp(double3 x) +{ + x = ceil(x); + return convert_long3(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtp(double3 x) +{ + x = ceil(x); + return convert_long3_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_rtn(double3 x) +{ + x = floor(x); + return convert_long3(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long3 convert_long3_sat_rtn(double3 x) +{ + x = floor(x); + return convert_long3_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtz(double4 x) +{ + return convert_long4(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtz(double4 x) +{ + return convert_long4_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rte(double4 x) +{ + x = rint(x); + return convert_long4(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rte(double4 x) +{ + x = rint(x); + return convert_long4_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtp(double4 x) +{ + x = ceil(x); + return convert_long4(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtp(double4 x) +{ + x = ceil(x); + return convert_long4_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_rtn(double4 x) +{ + x = floor(x); + return convert_long4(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long4 convert_long4_sat_rtn(double4 x) +{ + x = floor(x); + return convert_long4_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtz(double8 x) +{ + return convert_long8(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtz(double8 x) +{ + return convert_long8_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rte(double8 x) +{ + x = rint(x); + return convert_long8(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rte(double8 x) +{ + x = rint(x); + return convert_long8_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtp(double8 x) +{ + x = ceil(x); + return convert_long8(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtp(double8 x) +{ + x = ceil(x); + return convert_long8_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_rtn(double8 x) +{ + x = floor(x); + return convert_long8(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long8 convert_long8_sat_rtn(double8 x) +{ + x = floor(x); + return convert_long8_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtz(double16 x) +{ + return convert_long16(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtz(double16 x) +{ + return convert_long16_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rte(double16 x) +{ + x = rint(x); + return convert_long16(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rte(double16 x) +{ + x = rint(x); + return convert_long16_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtp(double16 x) +{ + x = ceil(x); + return convert_long16(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtp(double16 x) +{ + x = ceil(x); + return convert_long16_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_rtn(double16 x) +{ + x = floor(x); + return convert_long16(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +long16 convert_long16_sat_rtn(double16 x) +{ + x = floor(x); + return convert_long16_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtz(double x) +{ + return convert_ulong(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtz(double x) +{ + return convert_ulong_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rte(double x) +{ + x = rint(x); + return convert_ulong(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rte(double x) +{ + x = rint(x); + return convert_ulong_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtp(double x) +{ + x = ceil(x); + return convert_ulong(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtp(double x) +{ + x = ceil(x); + return convert_ulong_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_rtn(double x) +{ + x = floor(x); + return convert_ulong(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong convert_ulong_sat_rtn(double x) +{ + x = floor(x); + return convert_ulong_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtz(double2 x) +{ + return convert_ulong2(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtz(double2 x) +{ + return convert_ulong2_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rte(double2 x) +{ + x = rint(x); + return convert_ulong2(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rte(double2 x) +{ + x = rint(x); + return convert_ulong2_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtp(double2 x) +{ + x = ceil(x); + return convert_ulong2(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtp(double2 x) +{ + x = ceil(x); + return convert_ulong2_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_rtn(double2 x) +{ + x = floor(x); + return convert_ulong2(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong2 convert_ulong2_sat_rtn(double2 x) +{ + x = floor(x); + return convert_ulong2_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtz(double3 x) +{ + return convert_ulong3(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtz(double3 x) +{ + return convert_ulong3_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rte(double3 x) +{ + x = rint(x); + return convert_ulong3(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rte(double3 x) +{ + x = rint(x); + return convert_ulong3_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtp(double3 x) +{ + x = ceil(x); + return convert_ulong3(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtp(double3 x) +{ + x = ceil(x); + return convert_ulong3_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_rtn(double3 x) +{ + x = floor(x); + return convert_ulong3(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong3 convert_ulong3_sat_rtn(double3 x) +{ + x = floor(x); + return convert_ulong3_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtz(double4 x) +{ + return convert_ulong4(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtz(double4 x) +{ + return convert_ulong4_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rte(double4 x) +{ + x = rint(x); + return convert_ulong4(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rte(double4 x) +{ + x = rint(x); + return convert_ulong4_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtp(double4 x) +{ + x = ceil(x); + return convert_ulong4(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtp(double4 x) +{ + x = ceil(x); + return convert_ulong4_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_rtn(double4 x) +{ + x = floor(x); + return convert_ulong4(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong4 convert_ulong4_sat_rtn(double4 x) +{ + x = floor(x); + return convert_ulong4_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtz(double8 x) +{ + return convert_ulong8(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtz(double8 x) +{ + return convert_ulong8_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rte(double8 x) +{ + x = rint(x); + return convert_ulong8(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rte(double8 x) +{ + x = rint(x); + return convert_ulong8_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtp(double8 x) +{ + x = ceil(x); + return convert_ulong8(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtp(double8 x) +{ + x = ceil(x); + return convert_ulong8_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_rtn(double8 x) +{ + x = floor(x); + return convert_ulong8(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong8 convert_ulong8_sat_rtn(double8 x) +{ + x = floor(x); + return convert_ulong8_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtz(double16 x) +{ + return convert_ulong16(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtz(double16 x) +{ + return convert_ulong16_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rte(double16 x) +{ + x = rint(x); + return convert_ulong16(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rte(double16 x) +{ + x = rint(x); + return convert_ulong16_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtp(double16 x) +{ + x = ceil(x); + return convert_ulong16(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtp(double16 x) +{ + x = ceil(x); + return convert_ulong16_sat(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_rtn(double16 x) +{ + x = floor(x); + return convert_ulong16(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +ulong16 convert_ulong16_sat_rtn(double16 x) +{ + x = floor(x); + return convert_ulong16_sat(x); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtz(char x) +{ + float r = convert_float(x); + char y = convert_char(y); + uchar abs_x = abs(x); + uchar abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rte(char x) +{ + return convert_float(x); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtp(char x) +{ + float r = convert_float(x); + char y = convert_char(y); + return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtn(char x) +{ + float r = convert_float(x); + char y = convert_char(y); + return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtz(char2 x) +{ + float2 r = convert_float2(x); + char2 y = convert_char2(y); + uchar2 abs_x = abs(x); + uchar2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rte(char2 x) +{ + return convert_float2(x); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtp(char2 x) +{ + float2 r = convert_float2(x); + char2 y = convert_char2(y); + return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtn(char2 x) +{ + float2 r = convert_float2(x); + char2 y = convert_char2(y); + return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtz(char3 x) +{ + float3 r = convert_float3(x); + char3 y = convert_char3(y); + uchar3 abs_x = abs(x); + uchar3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rte(char3 x) +{ + return convert_float3(x); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtp(char3 x) +{ + float3 r = convert_float3(x); + char3 y = convert_char3(y); + return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtn(char3 x) +{ + float3 r = convert_float3(x); + char3 y = convert_char3(y); + return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtz(char4 x) +{ + float4 r = convert_float4(x); + char4 y = convert_char4(y); + uchar4 abs_x = abs(x); + uchar4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rte(char4 x) +{ + return convert_float4(x); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtp(char4 x) +{ + float4 r = convert_float4(x); + char4 y = convert_char4(y); + return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtn(char4 x) +{ + float4 r = convert_float4(x); + char4 y = convert_char4(y); + return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtz(char8 x) +{ + float8 r = convert_float8(x); + char8 y = convert_char8(y); + uchar8 abs_x = abs(x); + uchar8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rte(char8 x) +{ + return convert_float8(x); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtp(char8 x) +{ + float8 r = convert_float8(x); + char8 y = convert_char8(y); + return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtn(char8 x) +{ + float8 r = convert_float8(x); + char8 y = convert_char8(y); + return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtz(char16 x) +{ + float16 r = convert_float16(x); + char16 y = convert_char16(y); + uchar16 abs_x = abs(x); + uchar16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rte(char16 x) +{ + return convert_float16(x); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtp(char16 x) +{ + float16 r = convert_float16(x); + char16 y = convert_char16(y); + return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtn(char16 x) +{ + float16 r = convert_float16(x); + char16 y = convert_char16(y); + return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtz(char x) +{ + double r = convert_double(x); + char y = convert_char(y); + uchar abs_x = abs(x); + uchar abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rte(char x) +{ + return convert_double(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtp(char x) +{ + double r = convert_double(x); + char y = convert_char(y); + return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtn(char x) +{ + double r = convert_double(x); + char y = convert_char(y); + return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtz(char2 x) +{ + double2 r = convert_double2(x); + char2 y = convert_char2(y); + uchar2 abs_x = abs(x); + uchar2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rte(char2 x) +{ + return convert_double2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtp(char2 x) +{ + double2 r = convert_double2(x); + char2 y = convert_char2(y); + return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtn(char2 x) +{ + double2 r = convert_double2(x); + char2 y = convert_char2(y); + return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtz(char3 x) +{ + double3 r = convert_double3(x); + char3 y = convert_char3(y); + uchar3 abs_x = abs(x); + uchar3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rte(char3 x) +{ + return convert_double3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtp(char3 x) +{ + double3 r = convert_double3(x); + char3 y = convert_char3(y); + return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtn(char3 x) +{ + double3 r = convert_double3(x); + char3 y = convert_char3(y); + return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtz(char4 x) +{ + double4 r = convert_double4(x); + char4 y = convert_char4(y); + uchar4 abs_x = abs(x); + uchar4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rte(char4 x) +{ + return convert_double4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtp(char4 x) +{ + double4 r = convert_double4(x); + char4 y = convert_char4(y); + return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtn(char4 x) +{ + double4 r = convert_double4(x); + char4 y = convert_char4(y); + return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtz(char8 x) +{ + double8 r = convert_double8(x); + char8 y = convert_char8(y); + uchar8 abs_x = abs(x); + uchar8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rte(char8 x) +{ + return convert_double8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtp(char8 x) +{ + double8 r = convert_double8(x); + char8 y = convert_char8(y); + return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtn(char8 x) +{ + double8 r = convert_double8(x); + char8 y = convert_char8(y); + return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtz(char16 x) +{ + double16 r = convert_double16(x); + char16 y = convert_char16(y); + uchar16 abs_x = abs(x); + uchar16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rte(char16 x) +{ + return convert_double16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtp(char16 x) +{ + double16 r = convert_double16(x); + char16 y = convert_char16(y); + return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtn(char16 x) +{ + double16 r = convert_double16(x); + char16 y = convert_char16(y); + return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtz(uchar x) +{ + float r = convert_float(x); + uchar y = convert_uchar(y); + uchar abs_x = abs(x); + uchar abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rte(uchar x) +{ + return convert_float(x); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtp(uchar x) +{ + float r = convert_float(x); + uchar y = convert_uchar(y); + return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtn(uchar x) +{ + float r = convert_float(x); + uchar y = convert_uchar(y); + return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtz(uchar2 x) +{ + float2 r = convert_float2(x); + uchar2 y = convert_uchar2(y); + uchar2 abs_x = abs(x); + uchar2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rte(uchar2 x) +{ + return convert_float2(x); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtp(uchar2 x) +{ + float2 r = convert_float2(x); + uchar2 y = convert_uchar2(y); + return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtn(uchar2 x) +{ + float2 r = convert_float2(x); + uchar2 y = convert_uchar2(y); + return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtz(uchar3 x) +{ + float3 r = convert_float3(x); + uchar3 y = convert_uchar3(y); + uchar3 abs_x = abs(x); + uchar3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rte(uchar3 x) +{ + return convert_float3(x); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtp(uchar3 x) +{ + float3 r = convert_float3(x); + uchar3 y = convert_uchar3(y); + return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtn(uchar3 x) +{ + float3 r = convert_float3(x); + uchar3 y = convert_uchar3(y); + return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtz(uchar4 x) +{ + float4 r = convert_float4(x); + uchar4 y = convert_uchar4(y); + uchar4 abs_x = abs(x); + uchar4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rte(uchar4 x) +{ + return convert_float4(x); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtp(uchar4 x) +{ + float4 r = convert_float4(x); + uchar4 y = convert_uchar4(y); + return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtn(uchar4 x) +{ + float4 r = convert_float4(x); + uchar4 y = convert_uchar4(y); + return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtz(uchar8 x) +{ + float8 r = convert_float8(x); + uchar8 y = convert_uchar8(y); + uchar8 abs_x = abs(x); + uchar8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rte(uchar8 x) +{ + return convert_float8(x); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtp(uchar8 x) +{ + float8 r = convert_float8(x); + uchar8 y = convert_uchar8(y); + return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtn(uchar8 x) +{ + float8 r = convert_float8(x); + uchar8 y = convert_uchar8(y); + return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtz(uchar16 x) +{ + float16 r = convert_float16(x); + uchar16 y = convert_uchar16(y); + uchar16 abs_x = abs(x); + uchar16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rte(uchar16 x) +{ + return convert_float16(x); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtp(uchar16 x) +{ + float16 r = convert_float16(x); + uchar16 y = convert_uchar16(y); + return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtn(uchar16 x) +{ + float16 r = convert_float16(x); + uchar16 y = convert_uchar16(y); + return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtz(uchar x) +{ + double r = convert_double(x); + uchar y = convert_uchar(y); + uchar abs_x = abs(x); + uchar abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rte(uchar x) +{ + return convert_double(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtp(uchar x) +{ + double r = convert_double(x); + uchar y = convert_uchar(y); + return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtn(uchar x) +{ + double r = convert_double(x); + uchar y = convert_uchar(y); + return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtz(uchar2 x) +{ + double2 r = convert_double2(x); + uchar2 y = convert_uchar2(y); + uchar2 abs_x = abs(x); + uchar2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rte(uchar2 x) +{ + return convert_double2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtp(uchar2 x) +{ + double2 r = convert_double2(x); + uchar2 y = convert_uchar2(y); + return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtn(uchar2 x) +{ + double2 r = convert_double2(x); + uchar2 y = convert_uchar2(y); + return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtz(uchar3 x) +{ + double3 r = convert_double3(x); + uchar3 y = convert_uchar3(y); + uchar3 abs_x = abs(x); + uchar3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rte(uchar3 x) +{ + return convert_double3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtp(uchar3 x) +{ + double3 r = convert_double3(x); + uchar3 y = convert_uchar3(y); + return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtn(uchar3 x) +{ + double3 r = convert_double3(x); + uchar3 y = convert_uchar3(y); + return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtz(uchar4 x) +{ + double4 r = convert_double4(x); + uchar4 y = convert_uchar4(y); + uchar4 abs_x = abs(x); + uchar4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rte(uchar4 x) +{ + return convert_double4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtp(uchar4 x) +{ + double4 r = convert_double4(x); + uchar4 y = convert_uchar4(y); + return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtn(uchar4 x) +{ + double4 r = convert_double4(x); + uchar4 y = convert_uchar4(y); + return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtz(uchar8 x) +{ + double8 r = convert_double8(x); + uchar8 y = convert_uchar8(y); + uchar8 abs_x = abs(x); + uchar8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rte(uchar8 x) +{ + return convert_double8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtp(uchar8 x) +{ + double8 r = convert_double8(x); + uchar8 y = convert_uchar8(y); + return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtn(uchar8 x) +{ + double8 r = convert_double8(x); + uchar8 y = convert_uchar8(y); + return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtz(uchar16 x) +{ + double16 r = convert_double16(x); + uchar16 y = convert_uchar16(y); + uchar16 abs_x = abs(x); + uchar16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rte(uchar16 x) +{ + return convert_double16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtp(uchar16 x) +{ + double16 r = convert_double16(x); + uchar16 y = convert_uchar16(y); + return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtn(uchar16 x) +{ + double16 r = convert_double16(x); + uchar16 y = convert_uchar16(y); + return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtz(short x) +{ + float r = convert_float(x); + short y = convert_short(y); + ushort abs_x = abs(x); + ushort abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rte(short x) +{ + return convert_float(x); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtp(short x) +{ + float r = convert_float(x); + short y = convert_short(y); + return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtn(short x) +{ + float r = convert_float(x); + short y = convert_short(y); + return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtz(short2 x) +{ + float2 r = convert_float2(x); + short2 y = convert_short2(y); + ushort2 abs_x = abs(x); + ushort2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rte(short2 x) +{ + return convert_float2(x); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtp(short2 x) +{ + float2 r = convert_float2(x); + short2 y = convert_short2(y); + return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtn(short2 x) +{ + float2 r = convert_float2(x); + short2 y = convert_short2(y); + return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtz(short3 x) +{ + float3 r = convert_float3(x); + short3 y = convert_short3(y); + ushort3 abs_x = abs(x); + ushort3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rte(short3 x) +{ + return convert_float3(x); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtp(short3 x) +{ + float3 r = convert_float3(x); + short3 y = convert_short3(y); + return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtn(short3 x) +{ + float3 r = convert_float3(x); + short3 y = convert_short3(y); + return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtz(short4 x) +{ + float4 r = convert_float4(x); + short4 y = convert_short4(y); + ushort4 abs_x = abs(x); + ushort4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rte(short4 x) +{ + return convert_float4(x); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtp(short4 x) +{ + float4 r = convert_float4(x); + short4 y = convert_short4(y); + return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtn(short4 x) +{ + float4 r = convert_float4(x); + short4 y = convert_short4(y); + return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtz(short8 x) +{ + float8 r = convert_float8(x); + short8 y = convert_short8(y); + ushort8 abs_x = abs(x); + ushort8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rte(short8 x) +{ + return convert_float8(x); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtp(short8 x) +{ + float8 r = convert_float8(x); + short8 y = convert_short8(y); + return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtn(short8 x) +{ + float8 r = convert_float8(x); + short8 y = convert_short8(y); + return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtz(short16 x) +{ + float16 r = convert_float16(x); + short16 y = convert_short16(y); + ushort16 abs_x = abs(x); + ushort16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rte(short16 x) +{ + return convert_float16(x); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtp(short16 x) +{ + float16 r = convert_float16(x); + short16 y = convert_short16(y); + return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtn(short16 x) +{ + float16 r = convert_float16(x); + short16 y = convert_short16(y); + return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtz(short x) +{ + double r = convert_double(x); + short y = convert_short(y); + ushort abs_x = abs(x); + ushort abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rte(short x) +{ + return convert_double(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtp(short x) +{ + double r = convert_double(x); + short y = convert_short(y); + return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtn(short x) +{ + double r = convert_double(x); + short y = convert_short(y); + return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtz(short2 x) +{ + double2 r = convert_double2(x); + short2 y = convert_short2(y); + ushort2 abs_x = abs(x); + ushort2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rte(short2 x) +{ + return convert_double2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtp(short2 x) +{ + double2 r = convert_double2(x); + short2 y = convert_short2(y); + return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtn(short2 x) +{ + double2 r = convert_double2(x); + short2 y = convert_short2(y); + return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtz(short3 x) +{ + double3 r = convert_double3(x); + short3 y = convert_short3(y); + ushort3 abs_x = abs(x); + ushort3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rte(short3 x) +{ + return convert_double3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtp(short3 x) +{ + double3 r = convert_double3(x); + short3 y = convert_short3(y); + return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtn(short3 x) +{ + double3 r = convert_double3(x); + short3 y = convert_short3(y); + return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtz(short4 x) +{ + double4 r = convert_double4(x); + short4 y = convert_short4(y); + ushort4 abs_x = abs(x); + ushort4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rte(short4 x) +{ + return convert_double4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtp(short4 x) +{ + double4 r = convert_double4(x); + short4 y = convert_short4(y); + return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtn(short4 x) +{ + double4 r = convert_double4(x); + short4 y = convert_short4(y); + return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtz(short8 x) +{ + double8 r = convert_double8(x); + short8 y = convert_short8(y); + ushort8 abs_x = abs(x); + ushort8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rte(short8 x) +{ + return convert_double8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtp(short8 x) +{ + double8 r = convert_double8(x); + short8 y = convert_short8(y); + return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtn(short8 x) +{ + double8 r = convert_double8(x); + short8 y = convert_short8(y); + return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtz(short16 x) +{ + double16 r = convert_double16(x); + short16 y = convert_short16(y); + ushort16 abs_x = abs(x); + ushort16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rte(short16 x) +{ + return convert_double16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtp(short16 x) +{ + double16 r = convert_double16(x); + short16 y = convert_short16(y); + return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtn(short16 x) +{ + double16 r = convert_double16(x); + short16 y = convert_short16(y); + return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtz(ushort x) +{ + float r = convert_float(x); + ushort y = convert_ushort(y); + ushort abs_x = abs(x); + ushort abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rte(ushort x) +{ + return convert_float(x); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtp(ushort x) +{ + float r = convert_float(x); + ushort y = convert_ushort(y); + return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtn(ushort x) +{ + float r = convert_float(x); + ushort y = convert_ushort(y); + return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtz(ushort2 x) +{ + float2 r = convert_float2(x); + ushort2 y = convert_ushort2(y); + ushort2 abs_x = abs(x); + ushort2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rte(ushort2 x) +{ + return convert_float2(x); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtp(ushort2 x) +{ + float2 r = convert_float2(x); + ushort2 y = convert_ushort2(y); + return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtn(ushort2 x) +{ + float2 r = convert_float2(x); + ushort2 y = convert_ushort2(y); + return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtz(ushort3 x) +{ + float3 r = convert_float3(x); + ushort3 y = convert_ushort3(y); + ushort3 abs_x = abs(x); + ushort3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rte(ushort3 x) +{ + return convert_float3(x); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtp(ushort3 x) +{ + float3 r = convert_float3(x); + ushort3 y = convert_ushort3(y); + return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtn(ushort3 x) +{ + float3 r = convert_float3(x); + ushort3 y = convert_ushort3(y); + return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtz(ushort4 x) +{ + float4 r = convert_float4(x); + ushort4 y = convert_ushort4(y); + ushort4 abs_x = abs(x); + ushort4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rte(ushort4 x) +{ + return convert_float4(x); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtp(ushort4 x) +{ + float4 r = convert_float4(x); + ushort4 y = convert_ushort4(y); + return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtn(ushort4 x) +{ + float4 r = convert_float4(x); + ushort4 y = convert_ushort4(y); + return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtz(ushort8 x) +{ + float8 r = convert_float8(x); + ushort8 y = convert_ushort8(y); + ushort8 abs_x = abs(x); + ushort8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rte(ushort8 x) +{ + return convert_float8(x); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtp(ushort8 x) +{ + float8 r = convert_float8(x); + ushort8 y = convert_ushort8(y); + return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtn(ushort8 x) +{ + float8 r = convert_float8(x); + ushort8 y = convert_ushort8(y); + return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtz(ushort16 x) +{ + float16 r = convert_float16(x); + ushort16 y = convert_ushort16(y); + ushort16 abs_x = abs(x); + ushort16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rte(ushort16 x) +{ + return convert_float16(x); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtp(ushort16 x) +{ + float16 r = convert_float16(x); + ushort16 y = convert_ushort16(y); + return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtn(ushort16 x) +{ + float16 r = convert_float16(x); + ushort16 y = convert_ushort16(y); + return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtz(ushort x) +{ + double r = convert_double(x); + ushort y = convert_ushort(y); + ushort abs_x = abs(x); + ushort abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rte(ushort x) +{ + return convert_double(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtp(ushort x) +{ + double r = convert_double(x); + ushort y = convert_ushort(y); + return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtn(ushort x) +{ + double r = convert_double(x); + ushort y = convert_ushort(y); + return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtz(ushort2 x) +{ + double2 r = convert_double2(x); + ushort2 y = convert_ushort2(y); + ushort2 abs_x = abs(x); + ushort2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rte(ushort2 x) +{ + return convert_double2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtp(ushort2 x) +{ + double2 r = convert_double2(x); + ushort2 y = convert_ushort2(y); + return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtn(ushort2 x) +{ + double2 r = convert_double2(x); + ushort2 y = convert_ushort2(y); + return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtz(ushort3 x) +{ + double3 r = convert_double3(x); + ushort3 y = convert_ushort3(y); + ushort3 abs_x = abs(x); + ushort3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rte(ushort3 x) +{ + return convert_double3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtp(ushort3 x) +{ + double3 r = convert_double3(x); + ushort3 y = convert_ushort3(y); + return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtn(ushort3 x) +{ + double3 r = convert_double3(x); + ushort3 y = convert_ushort3(y); + return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtz(ushort4 x) +{ + double4 r = convert_double4(x); + ushort4 y = convert_ushort4(y); + ushort4 abs_x = abs(x); + ushort4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rte(ushort4 x) +{ + return convert_double4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtp(ushort4 x) +{ + double4 r = convert_double4(x); + ushort4 y = convert_ushort4(y); + return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtn(ushort4 x) +{ + double4 r = convert_double4(x); + ushort4 y = convert_ushort4(y); + return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtz(ushort8 x) +{ + double8 r = convert_double8(x); + ushort8 y = convert_ushort8(y); + ushort8 abs_x = abs(x); + ushort8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rte(ushort8 x) +{ + return convert_double8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtp(ushort8 x) +{ + double8 r = convert_double8(x); + ushort8 y = convert_ushort8(y); + return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtn(ushort8 x) +{ + double8 r = convert_double8(x); + ushort8 y = convert_ushort8(y); + return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtz(ushort16 x) +{ + double16 r = convert_double16(x); + ushort16 y = convert_ushort16(y); + ushort16 abs_x = abs(x); + ushort16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rte(ushort16 x) +{ + return convert_double16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtp(ushort16 x) +{ + double16 r = convert_double16(x); + ushort16 y = convert_ushort16(y); + return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtn(ushort16 x) +{ + double16 r = convert_double16(x); + ushort16 y = convert_ushort16(y); + return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtz(int x) +{ + float r = convert_float(x); + int y = convert_int(y); + uint abs_x = abs(x); + uint abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rte(int x) +{ + return convert_float(x); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtp(int x) +{ + float r = convert_float(x); + int y = convert_int(y); + return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtn(int x) +{ + float r = convert_float(x); + int y = convert_int(y); + return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtz(int2 x) +{ + float2 r = convert_float2(x); + int2 y = convert_int2(y); + uint2 abs_x = abs(x); + uint2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rte(int2 x) +{ + return convert_float2(x); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtp(int2 x) +{ + float2 r = convert_float2(x); + int2 y = convert_int2(y); + return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtn(int2 x) +{ + float2 r = convert_float2(x); + int2 y = convert_int2(y); + return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtz(int3 x) +{ + float3 r = convert_float3(x); + int3 y = convert_int3(y); + uint3 abs_x = abs(x); + uint3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rte(int3 x) +{ + return convert_float3(x); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtp(int3 x) +{ + float3 r = convert_float3(x); + int3 y = convert_int3(y); + return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtn(int3 x) +{ + float3 r = convert_float3(x); + int3 y = convert_int3(y); + return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtz(int4 x) +{ + float4 r = convert_float4(x); + int4 y = convert_int4(y); + uint4 abs_x = abs(x); + uint4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rte(int4 x) +{ + return convert_float4(x); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtp(int4 x) +{ + float4 r = convert_float4(x); + int4 y = convert_int4(y); + return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtn(int4 x) +{ + float4 r = convert_float4(x); + int4 y = convert_int4(y); + return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtz(int8 x) +{ + float8 r = convert_float8(x); + int8 y = convert_int8(y); + uint8 abs_x = abs(x); + uint8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rte(int8 x) +{ + return convert_float8(x); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtp(int8 x) +{ + float8 r = convert_float8(x); + int8 y = convert_int8(y); + return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtn(int8 x) +{ + float8 r = convert_float8(x); + int8 y = convert_int8(y); + return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtz(int16 x) +{ + float16 r = convert_float16(x); + int16 y = convert_int16(y); + uint16 abs_x = abs(x); + uint16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rte(int16 x) +{ + return convert_float16(x); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtp(int16 x) +{ + float16 r = convert_float16(x); + int16 y = convert_int16(y); + return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtn(int16 x) +{ + float16 r = convert_float16(x); + int16 y = convert_int16(y); + return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtz(int x) +{ + double r = convert_double(x); + int y = convert_int(y); + uint abs_x = abs(x); + uint abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rte(int x) +{ + return convert_double(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtp(int x) +{ + double r = convert_double(x); + int y = convert_int(y); + return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtn(int x) +{ + double r = convert_double(x); + int y = convert_int(y); + return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtz(int2 x) +{ + double2 r = convert_double2(x); + int2 y = convert_int2(y); + uint2 abs_x = abs(x); + uint2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rte(int2 x) +{ + return convert_double2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtp(int2 x) +{ + double2 r = convert_double2(x); + int2 y = convert_int2(y); + return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtn(int2 x) +{ + double2 r = convert_double2(x); + int2 y = convert_int2(y); + return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtz(int3 x) +{ + double3 r = convert_double3(x); + int3 y = convert_int3(y); + uint3 abs_x = abs(x); + uint3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rte(int3 x) +{ + return convert_double3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtp(int3 x) +{ + double3 r = convert_double3(x); + int3 y = convert_int3(y); + return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtn(int3 x) +{ + double3 r = convert_double3(x); + int3 y = convert_int3(y); + return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtz(int4 x) +{ + double4 r = convert_double4(x); + int4 y = convert_int4(y); + uint4 abs_x = abs(x); + uint4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rte(int4 x) +{ + return convert_double4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtp(int4 x) +{ + double4 r = convert_double4(x); + int4 y = convert_int4(y); + return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtn(int4 x) +{ + double4 r = convert_double4(x); + int4 y = convert_int4(y); + return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtz(int8 x) +{ + double8 r = convert_double8(x); + int8 y = convert_int8(y); + uint8 abs_x = abs(x); + uint8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rte(int8 x) +{ + return convert_double8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtp(int8 x) +{ + double8 r = convert_double8(x); + int8 y = convert_int8(y); + return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtn(int8 x) +{ + double8 r = convert_double8(x); + int8 y = convert_int8(y); + return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtz(int16 x) +{ + double16 r = convert_double16(x); + int16 y = convert_int16(y); + uint16 abs_x = abs(x); + uint16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rte(int16 x) +{ + return convert_double16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtp(int16 x) +{ + double16 r = convert_double16(x); + int16 y = convert_int16(y); + return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtn(int16 x) +{ + double16 r = convert_double16(x); + int16 y = convert_int16(y); + return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtz(uint x) +{ + float r = convert_float(x); + uint y = convert_uint(y); + uint abs_x = abs(x); + uint abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rte(uint x) +{ + return convert_float(x); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtp(uint x) +{ + float r = convert_float(x); + uint y = convert_uint(y); + return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtn(uint x) +{ + float r = convert_float(x); + uint y = convert_uint(y); + return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtz(uint2 x) +{ + float2 r = convert_float2(x); + uint2 y = convert_uint2(y); + uint2 abs_x = abs(x); + uint2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rte(uint2 x) +{ + return convert_float2(x); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtp(uint2 x) +{ + float2 r = convert_float2(x); + uint2 y = convert_uint2(y); + return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtn(uint2 x) +{ + float2 r = convert_float2(x); + uint2 y = convert_uint2(y); + return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtz(uint3 x) +{ + float3 r = convert_float3(x); + uint3 y = convert_uint3(y); + uint3 abs_x = abs(x); + uint3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rte(uint3 x) +{ + return convert_float3(x); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtp(uint3 x) +{ + float3 r = convert_float3(x); + uint3 y = convert_uint3(y); + return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtn(uint3 x) +{ + float3 r = convert_float3(x); + uint3 y = convert_uint3(y); + return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtz(uint4 x) +{ + float4 r = convert_float4(x); + uint4 y = convert_uint4(y); + uint4 abs_x = abs(x); + uint4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rte(uint4 x) +{ + return convert_float4(x); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtp(uint4 x) +{ + float4 r = convert_float4(x); + uint4 y = convert_uint4(y); + return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtn(uint4 x) +{ + float4 r = convert_float4(x); + uint4 y = convert_uint4(y); + return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtz(uint8 x) +{ + float8 r = convert_float8(x); + uint8 y = convert_uint8(y); + uint8 abs_x = abs(x); + uint8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rte(uint8 x) +{ + return convert_float8(x); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtp(uint8 x) +{ + float8 r = convert_float8(x); + uint8 y = convert_uint8(y); + return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtn(uint8 x) +{ + float8 r = convert_float8(x); + uint8 y = convert_uint8(y); + return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtz(uint16 x) +{ + float16 r = convert_float16(x); + uint16 y = convert_uint16(y); + uint16 abs_x = abs(x); + uint16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rte(uint16 x) +{ + return convert_float16(x); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtp(uint16 x) +{ + float16 r = convert_float16(x); + uint16 y = convert_uint16(y); + return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtn(uint16 x) +{ + float16 r = convert_float16(x); + uint16 y = convert_uint16(y); + return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtz(uint x) +{ + double r = convert_double(x); + uint y = convert_uint(y); + uint abs_x = abs(x); + uint abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rte(uint x) +{ + return convert_double(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtp(uint x) +{ + double r = convert_double(x); + uint y = convert_uint(y); + return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtn(uint x) +{ + double r = convert_double(x); + uint y = convert_uint(y); + return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtz(uint2 x) +{ + double2 r = convert_double2(x); + uint2 y = convert_uint2(y); + uint2 abs_x = abs(x); + uint2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rte(uint2 x) +{ + return convert_double2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtp(uint2 x) +{ + double2 r = convert_double2(x); + uint2 y = convert_uint2(y); + return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtn(uint2 x) +{ + double2 r = convert_double2(x); + uint2 y = convert_uint2(y); + return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtz(uint3 x) +{ + double3 r = convert_double3(x); + uint3 y = convert_uint3(y); + uint3 abs_x = abs(x); + uint3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rte(uint3 x) +{ + return convert_double3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtp(uint3 x) +{ + double3 r = convert_double3(x); + uint3 y = convert_uint3(y); + return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtn(uint3 x) +{ + double3 r = convert_double3(x); + uint3 y = convert_uint3(y); + return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtz(uint4 x) +{ + double4 r = convert_double4(x); + uint4 y = convert_uint4(y); + uint4 abs_x = abs(x); + uint4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rte(uint4 x) +{ + return convert_double4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtp(uint4 x) +{ + double4 r = convert_double4(x); + uint4 y = convert_uint4(y); + return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtn(uint4 x) +{ + double4 r = convert_double4(x); + uint4 y = convert_uint4(y); + return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtz(uint8 x) +{ + double8 r = convert_double8(x); + uint8 y = convert_uint8(y); + uint8 abs_x = abs(x); + uint8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rte(uint8 x) +{ + return convert_double8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtp(uint8 x) +{ + double8 r = convert_double8(x); + uint8 y = convert_uint8(y); + return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtn(uint8 x) +{ + double8 r = convert_double8(x); + uint8 y = convert_uint8(y); + return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtz(uint16 x) +{ + double16 r = convert_double16(x); + uint16 y = convert_uint16(y); + uint16 abs_x = abs(x); + uint16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rte(uint16 x) +{ + return convert_double16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtp(uint16 x) +{ + double16 r = convert_double16(x); + uint16 y = convert_uint16(y); + return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtn(uint16 x) +{ + double16 r = convert_double16(x); + uint16 y = convert_uint16(y); + return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtz(long x) +{ + float r = convert_float(x); + long y = convert_long(y); + ulong abs_x = abs(x); + ulong abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float convert_float_rte(long x) +{ + return convert_float(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtp(long x) +{ + float r = convert_float(x); + long y = convert_long(y); + return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtn(long x) +{ + float r = convert_float(x); + long y = convert_long(y); + return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtz(long2 x) +{ + float2 r = convert_float2(x); + long2 y = convert_long2(y); + ulong2 abs_x = abs(x); + ulong2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rte(long2 x) +{ + return convert_float2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtp(long2 x) +{ + float2 r = convert_float2(x); + long2 y = convert_long2(y); + return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtn(long2 x) +{ + float2 r = convert_float2(x); + long2 y = convert_long2(y); + return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtz(long3 x) +{ + float3 r = convert_float3(x); + long3 y = convert_long3(y); + ulong3 abs_x = abs(x); + ulong3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rte(long3 x) +{ + return convert_float3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtp(long3 x) +{ + float3 r = convert_float3(x); + long3 y = convert_long3(y); + return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtn(long3 x) +{ + float3 r = convert_float3(x); + long3 y = convert_long3(y); + return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtz(long4 x) +{ + float4 r = convert_float4(x); + long4 y = convert_long4(y); + ulong4 abs_x = abs(x); + ulong4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rte(long4 x) +{ + return convert_float4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtp(long4 x) +{ + float4 r = convert_float4(x); + long4 y = convert_long4(y); + return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtn(long4 x) +{ + float4 r = convert_float4(x); + long4 y = convert_long4(y); + return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtz(long8 x) +{ + float8 r = convert_float8(x); + long8 y = convert_long8(y); + ulong8 abs_x = abs(x); + ulong8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rte(long8 x) +{ + return convert_float8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtp(long8 x) +{ + float8 r = convert_float8(x); + long8 y = convert_long8(y); + return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtn(long8 x) +{ + float8 r = convert_float8(x); + long8 y = convert_long8(y); + return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtz(long16 x) +{ + float16 r = convert_float16(x); + long16 y = convert_long16(y); + ulong16 abs_x = abs(x); + ulong16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rte(long16 x) +{ + return convert_float16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtp(long16 x) +{ + float16 r = convert_float16(x); + long16 y = convert_long16(y); + return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtn(long16 x) +{ + float16 r = convert_float16(x); + long16 y = convert_long16(y); + return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtz(long x) +{ + double r = convert_double(x); + long y = convert_long(y); + ulong abs_x = abs(x); + ulong abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double convert_double_rte(long x) +{ + return convert_double(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtp(long x) +{ + double r = convert_double(x); + long y = convert_long(y); + return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtn(long x) +{ + double r = convert_double(x); + long y = convert_long(y); + return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtz(long2 x) +{ + double2 r = convert_double2(x); + long2 y = convert_long2(y); + ulong2 abs_x = abs(x); + ulong2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rte(long2 x) +{ + return convert_double2(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtp(long2 x) +{ + double2 r = convert_double2(x); + long2 y = convert_long2(y); + return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtn(long2 x) +{ + double2 r = convert_double2(x); + long2 y = convert_long2(y); + return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtz(long3 x) +{ + double3 r = convert_double3(x); + long3 y = convert_long3(y); + ulong3 abs_x = abs(x); + ulong3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rte(long3 x) +{ + return convert_double3(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtp(long3 x) +{ + double3 r = convert_double3(x); + long3 y = convert_long3(y); + return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtn(long3 x) +{ + double3 r = convert_double3(x); + long3 y = convert_long3(y); + return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtz(long4 x) +{ + double4 r = convert_double4(x); + long4 y = convert_long4(y); + ulong4 abs_x = abs(x); + ulong4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rte(long4 x) +{ + return convert_double4(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtp(long4 x) +{ + double4 r = convert_double4(x); + long4 y = convert_long4(y); + return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtn(long4 x) +{ + double4 r = convert_double4(x); + long4 y = convert_long4(y); + return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtz(long8 x) +{ + double8 r = convert_double8(x); + long8 y = convert_long8(y); + ulong8 abs_x = abs(x); + ulong8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rte(long8 x) +{ + return convert_double8(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtp(long8 x) +{ + double8 r = convert_double8(x); + long8 y = convert_long8(y); + return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtn(long8 x) +{ + double8 r = convert_double8(x); + long8 y = convert_long8(y); + return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtz(long16 x) +{ + double16 r = convert_double16(x); + long16 y = convert_long16(y); + ulong16 abs_x = abs(x); + ulong16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rte(long16 x) +{ + return convert_double16(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtp(long16 x) +{ + double16 r = convert_double16(x); + long16 y = convert_long16(y); + return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtn(long16 x) +{ + double16 r = convert_double16(x); + long16 y = convert_long16(y); + return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtz(ulong x) +{ + float r = convert_float(x); + ulong y = convert_ulong(y); + ulong abs_x = abs(x); + ulong abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float convert_float_rte(ulong x) +{ + return convert_float(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtp(ulong x) +{ + float r = convert_float(x); + ulong y = convert_ulong(y); + return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtn(ulong x) +{ + float r = convert_float(x); + ulong y = convert_ulong(y); + return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtz(ulong2 x) +{ + float2 r = convert_float2(x); + ulong2 y = convert_ulong2(y); + ulong2 abs_x = abs(x); + ulong2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rte(ulong2 x) +{ + return convert_float2(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtp(ulong2 x) +{ + float2 r = convert_float2(x); + ulong2 y = convert_ulong2(y); + return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtn(ulong2 x) +{ + float2 r = convert_float2(x); + ulong2 y = convert_ulong2(y); + return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtz(ulong3 x) +{ + float3 r = convert_float3(x); + ulong3 y = convert_ulong3(y); + ulong3 abs_x = abs(x); + ulong3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rte(ulong3 x) +{ + return convert_float3(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtp(ulong3 x) +{ + float3 r = convert_float3(x); + ulong3 y = convert_ulong3(y); + return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtn(ulong3 x) +{ + float3 r = convert_float3(x); + ulong3 y = convert_ulong3(y); + return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtz(ulong4 x) +{ + float4 r = convert_float4(x); + ulong4 y = convert_ulong4(y); + ulong4 abs_x = abs(x); + ulong4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rte(ulong4 x) +{ + return convert_float4(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtp(ulong4 x) +{ + float4 r = convert_float4(x); + ulong4 y = convert_ulong4(y); + return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtn(ulong4 x) +{ + float4 r = convert_float4(x); + ulong4 y = convert_ulong4(y); + return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtz(ulong8 x) +{ + float8 r = convert_float8(x); + ulong8 y = convert_ulong8(y); + ulong8 abs_x = abs(x); + ulong8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rte(ulong8 x) +{ + return convert_float8(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtp(ulong8 x) +{ + float8 r = convert_float8(x); + ulong8 y = convert_ulong8(y); + return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtn(ulong8 x) +{ + float8 r = convert_float8(x); + ulong8 y = convert_ulong8(y); + return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtz(ulong16 x) +{ + float16 r = convert_float16(x); + ulong16 y = convert_ulong16(y); + ulong16 abs_x = abs(x); + ulong16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rte(ulong16 x) +{ + return convert_float16(x); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtp(ulong16 x) +{ + float16 r = convert_float16(x); + ulong16 y = convert_ulong16(y); + return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); +} +#endif +#ifdef cles_khr_int64 +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtn(ulong16 x) +{ + float16 r = convert_float16(x); + ulong16 y = convert_ulong16(y); + return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtz(ulong x) +{ + double r = convert_double(x); + ulong y = convert_ulong(y); + ulong abs_x = abs(x); + ulong abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double convert_double_rte(ulong x) +{ + return convert_double(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtp(ulong x) +{ + double r = convert_double(x); + ulong y = convert_ulong(y); + return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtn(ulong x) +{ + double r = convert_double(x); + ulong y = convert_ulong(y); + return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtz(ulong2 x) +{ + double2 r = convert_double2(x); + ulong2 y = convert_ulong2(y); + ulong2 abs_x = abs(x); + ulong2 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rte(ulong2 x) +{ + return convert_double2(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtp(ulong2 x) +{ + double2 r = convert_double2(x); + ulong2 y = convert_ulong2(y); + return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtn(ulong2 x) +{ + double2 r = convert_double2(x); + ulong2 y = convert_ulong2(y); + return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtz(ulong3 x) +{ + double3 r = convert_double3(x); + ulong3 y = convert_ulong3(y); + ulong3 abs_x = abs(x); + ulong3 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rte(ulong3 x) +{ + return convert_double3(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtp(ulong3 x) +{ + double3 r = convert_double3(x); + ulong3 y = convert_ulong3(y); + return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtn(ulong3 x) +{ + double3 r = convert_double3(x); + ulong3 y = convert_ulong3(y); + return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtz(ulong4 x) +{ + double4 r = convert_double4(x); + ulong4 y = convert_ulong4(y); + ulong4 abs_x = abs(x); + ulong4 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rte(ulong4 x) +{ + return convert_double4(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtp(ulong4 x) +{ + double4 r = convert_double4(x); + ulong4 y = convert_ulong4(y); + return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtn(ulong4 x) +{ + double4 r = convert_double4(x); + ulong4 y = convert_ulong4(y); + return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtz(ulong8 x) +{ + double8 r = convert_double8(x); + ulong8 y = convert_ulong8(y); + ulong8 abs_x = abs(x); + ulong8 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rte(ulong8 x) +{ + return convert_double8(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtp(ulong8 x) +{ + double8 r = convert_double8(x); + ulong8 y = convert_ulong8(y); + return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtn(ulong8 x) +{ + double8 r = convert_double8(x); + ulong8 y = convert_ulong8(y); + return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtz(ulong16 x) +{ + double16 r = convert_double16(x); + ulong16 y = convert_ulong16(y); + ulong16 abs_x = abs(x); + ulong16 abs_y = abs(y); + return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rte(ulong16 x) +{ + return convert_double16(x); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtp(ulong16 x) +{ + double16 r = convert_double16(x); + ulong16 y = convert_ulong16(y); + return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); +} +#endif +#if defined(cl_khr_fp64) && defined(cles_khr_int64) +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtn(ulong16 x) +{ + double16 r = convert_double16(x); + ulong16 y = convert_ulong16(y); + return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); +} +#endif +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtz(float x) +{ + float r = convert_float(x); + float y = convert_float(y); + float abs_x = fabs(x); + float abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rte(float x) +{ + return convert_float(x); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtp(float x) +{ + float r = convert_float(x); + float y = convert_float(y); + return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtn(float x) +{ + float r = convert_float(x); + float y = convert_float(y); + return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtz(float2 x) +{ + float2 r = convert_float2(x); + float2 y = convert_float2(y); + float2 abs_x = fabs(x); + float2 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rte(float2 x) +{ + return convert_float2(x); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtp(float2 x) +{ + float2 r = convert_float2(x); + float2 y = convert_float2(y); + return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtn(float2 x) +{ + float2 r = convert_float2(x); + float2 y = convert_float2(y); + return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtz(float3 x) +{ + float3 r = convert_float3(x); + float3 y = convert_float3(y); + float3 abs_x = fabs(x); + float3 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rte(float3 x) +{ + return convert_float3(x); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtp(float3 x) +{ + float3 r = convert_float3(x); + float3 y = convert_float3(y); + return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtn(float3 x) +{ + float3 r = convert_float3(x); + float3 y = convert_float3(y); + return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtz(float4 x) +{ + float4 r = convert_float4(x); + float4 y = convert_float4(y); + float4 abs_x = fabs(x); + float4 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rte(float4 x) +{ + return convert_float4(x); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtp(float4 x) +{ + float4 r = convert_float4(x); + float4 y = convert_float4(y); + return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtn(float4 x) +{ + float4 r = convert_float4(x); + float4 y = convert_float4(y); + return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtz(float8 x) +{ + float8 r = convert_float8(x); + float8 y = convert_float8(y); + float8 abs_x = fabs(x); + float8 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rte(float8 x) +{ + return convert_float8(x); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtp(float8 x) +{ + float8 r = convert_float8(x); + float8 y = convert_float8(y); + return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtn(float8 x) +{ + float8 r = convert_float8(x); + float8 y = convert_float8(y); + return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtz(float16 x) +{ + float16 r = convert_float16(x); + float16 y = convert_float16(y); + float16 abs_x = fabs(x); + float16 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rte(float16 x) +{ + return convert_float16(x); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtp(float16 x) +{ + float16 r = convert_float16(x); + float16 y = convert_float16(y); + return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); +} +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtn(float16 x) +{ + float16 r = convert_float16(x); + float16 y = convert_float16(y); + return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); +} +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtz(float x) +{ + double r = convert_double(x); + float y = convert_float(y); + float abs_x = fabs(x); + float abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rte(float x) +{ + return convert_double(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtp(float x) +{ + double r = convert_double(x); + float y = convert_float(y); + return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtn(float x) +{ + double r = convert_double(x); + float y = convert_float(y); + return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtz(float2 x) +{ + double2 r = convert_double2(x); + float2 y = convert_float2(y); + float2 abs_x = fabs(x); + float2 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rte(float2 x) +{ + return convert_double2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtp(float2 x) +{ + double2 r = convert_double2(x); + float2 y = convert_float2(y); + return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtn(float2 x) +{ + double2 r = convert_double2(x); + float2 y = convert_float2(y); + return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtz(float3 x) +{ + double3 r = convert_double3(x); + float3 y = convert_float3(y); + float3 abs_x = fabs(x); + float3 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rte(float3 x) +{ + return convert_double3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtp(float3 x) +{ + double3 r = convert_double3(x); + float3 y = convert_float3(y); + return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtn(float3 x) +{ + double3 r = convert_double3(x); + float3 y = convert_float3(y); + return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtz(float4 x) +{ + double4 r = convert_double4(x); + float4 y = convert_float4(y); + float4 abs_x = fabs(x); + float4 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rte(float4 x) +{ + return convert_double4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtp(float4 x) +{ + double4 r = convert_double4(x); + float4 y = convert_float4(y); + return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtn(float4 x) +{ + double4 r = convert_double4(x); + float4 y = convert_float4(y); + return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtz(float8 x) +{ + double8 r = convert_double8(x); + float8 y = convert_float8(y); + float8 abs_x = fabs(x); + float8 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rte(float8 x) +{ + return convert_double8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtp(float8 x) +{ + double8 r = convert_double8(x); + float8 y = convert_float8(y); + return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtn(float8 x) +{ + double8 r = convert_double8(x); + float8 y = convert_float8(y); + return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtz(float16 x) +{ + double16 r = convert_double16(x); + float16 y = convert_float16(y); + float16 abs_x = fabs(x); + float16 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rte(float16 x) +{ + return convert_double16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtp(float16 x) +{ + double16 r = convert_double16(x); + float16 y = convert_float16(y); + return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtn(float16 x) +{ + double16 r = convert_double16(x); + float16 y = convert_float16(y); + return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtz(double x) +{ + float r = convert_float(x); + double y = convert_double(y); + double abs_x = fabs(x); + double abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (float)-INFINITY), convert_int(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float convert_float_rte(double x) +{ + return convert_float(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtp(double x) +{ + float r = convert_float(x); + double y = convert_double(y); + return select(r, nextafter(r, (float)INFINITY), convert_int(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float convert_float_rtn(double x) +{ + float r = convert_float(x); + double y = convert_double(y); + return select(r, nextafter(r, (float)-INFINITY), convert_int(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtz(double2 x) +{ + float2 r = convert_float2(x); + double2 y = convert_double2(y); + double2 abs_x = fabs(x); + double2 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (float2)-INFINITY), convert_int2(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rte(double2 x) +{ + return convert_float2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtp(double2 x) +{ + float2 r = convert_float2(x); + double2 y = convert_double2(y); + return select(r, nextafter(r, (float2)INFINITY), convert_int2(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float2 convert_float2_rtn(double2 x) +{ + float2 r = convert_float2(x); + double2 y = convert_double2(y); + return select(r, nextafter(r, (float2)-INFINITY), convert_int2(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtz(double3 x) +{ + float3 r = convert_float3(x); + double3 y = convert_double3(y); + double3 abs_x = fabs(x); + double3 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (float3)-INFINITY), convert_int3(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rte(double3 x) +{ + return convert_float3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtp(double3 x) +{ + float3 r = convert_float3(x); + double3 y = convert_double3(y); + return select(r, nextafter(r, (float3)INFINITY), convert_int3(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float3 convert_float3_rtn(double3 x) +{ + float3 r = convert_float3(x); + double3 y = convert_double3(y); + return select(r, nextafter(r, (float3)-INFINITY), convert_int3(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtz(double4 x) +{ + float4 r = convert_float4(x); + double4 y = convert_double4(y); + double4 abs_x = fabs(x); + double4 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (float4)-INFINITY), convert_int4(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rte(double4 x) +{ + return convert_float4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtp(double4 x) +{ + float4 r = convert_float4(x); + double4 y = convert_double4(y); + return select(r, nextafter(r, (float4)INFINITY), convert_int4(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float4 convert_float4_rtn(double4 x) +{ + float4 r = convert_float4(x); + double4 y = convert_double4(y); + return select(r, nextafter(r, (float4)-INFINITY), convert_int4(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtz(double8 x) +{ + float8 r = convert_float8(x); + double8 y = convert_double8(y); + double8 abs_x = fabs(x); + double8 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (float8)-INFINITY), convert_int8(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rte(double8 x) +{ + return convert_float8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtp(double8 x) +{ + float8 r = convert_float8(x); + double8 y = convert_double8(y); + return select(r, nextafter(r, (float8)INFINITY), convert_int8(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float8 convert_float8_rtn(double8 x) +{ + float8 r = convert_float8(x); + double8 y = convert_double8(y); + return select(r, nextafter(r, (float8)-INFINITY), convert_int8(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtz(double16 x) +{ + float16 r = convert_float16(x); + double16 y = convert_double16(y); + double16 abs_x = fabs(x); + double16 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (float16)-INFINITY), convert_int16(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rte(double16 x) +{ + return convert_float16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtp(double16 x) +{ + float16 r = convert_float16(x); + double16 y = convert_double16(y); + return select(r, nextafter(r, (float16)INFINITY), convert_int16(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +float16 convert_float16_rtn(double16 x) +{ + float16 r = convert_float16(x); + double16 y = convert_double16(y); + return select(r, nextafter(r, (float16)-INFINITY), convert_int16(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtz(double x) +{ + double r = convert_double(x); + double y = convert_double(y); + double abs_x = fabs(x); + double abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (double)-INFINITY), convert_long(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rte(double x) +{ + return convert_double(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtp(double x) +{ + double r = convert_double(x); + double y = convert_double(y); + return select(r, nextafter(r, (double)INFINITY), convert_long(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double convert_double_rtn(double x) +{ + double r = convert_double(x); + double y = convert_double(y); + return select(r, nextafter(r, (double)-INFINITY), convert_long(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtz(double2 x) +{ + double2 r = convert_double2(x); + double2 y = convert_double2(y); + double2 abs_x = fabs(x); + double2 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (double2)-INFINITY), convert_long2(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rte(double2 x) +{ + return convert_double2(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtp(double2 x) +{ + double2 r = convert_double2(x); + double2 y = convert_double2(y); + return select(r, nextafter(r, (double2)INFINITY), convert_long2(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double2 convert_double2_rtn(double2 x) +{ + double2 r = convert_double2(x); + double2 y = convert_double2(y); + return select(r, nextafter(r, (double2)-INFINITY), convert_long2(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtz(double3 x) +{ + double3 r = convert_double3(x); + double3 y = convert_double3(y); + double3 abs_x = fabs(x); + double3 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (double3)-INFINITY), convert_long3(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rte(double3 x) +{ + return convert_double3(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtp(double3 x) +{ + double3 r = convert_double3(x); + double3 y = convert_double3(y); + return select(r, nextafter(r, (double3)INFINITY), convert_long3(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double3 convert_double3_rtn(double3 x) +{ + double3 r = convert_double3(x); + double3 y = convert_double3(y); + return select(r, nextafter(r, (double3)-INFINITY), convert_long3(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtz(double4 x) +{ + double4 r = convert_double4(x); + double4 y = convert_double4(y); + double4 abs_x = fabs(x); + double4 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (double4)-INFINITY), convert_long4(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rte(double4 x) +{ + return convert_double4(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtp(double4 x) +{ + double4 r = convert_double4(x); + double4 y = convert_double4(y); + return select(r, nextafter(r, (double4)INFINITY), convert_long4(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double4 convert_double4_rtn(double4 x) +{ + double4 r = convert_double4(x); + double4 y = convert_double4(y); + return select(r, nextafter(r, (double4)-INFINITY), convert_long4(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtz(double8 x) +{ + double8 r = convert_double8(x); + double8 y = convert_double8(y); + double8 abs_x = fabs(x); + double8 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (double8)-INFINITY), convert_long8(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rte(double8 x) +{ + return convert_double8(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtp(double8 x) +{ + double8 r = convert_double8(x); + double8 y = convert_double8(y); + return select(r, nextafter(r, (double8)INFINITY), convert_long8(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double8 convert_double8_rtn(double8 x) +{ + double8 r = convert_double8(x); + double8 y = convert_double8(y); + return select(r, nextafter(r, (double8)-INFINITY), convert_long8(y > x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtz(double16 x) +{ + double16 r = convert_double16(x); + double16 y = convert_double16(y); + double16 abs_x = fabs(x); + double16 abs_y = fabs(y); + return select(r, nextafter(r, sign(r) * (double16)-INFINITY), convert_long16(abs_y > abs_x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rte(double16 x) +{ + return convert_double16(x); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtp(double16 x) +{ + double16 r = convert_double16(x); + double16 y = convert_double16(y); + return select(r, nextafter(r, (double16)INFINITY), convert_long16(y < x)); +} +#endif +#ifdef cl_khr_fp64 +_CLC_DEF _CLC_OVERLOAD +double16 convert_double16_rtn(double16 x) +{ + double16 r = convert_double16(x); + double16 y = convert_double16(y); + return select(r, nextafter(r, (double16)-INFINITY), convert_long16(y > x)); +} +#endif diff --git a/libclc/generic/lib/gen_convert.py b/libclc/generic/lib/gen_convert.py new file mode 100644 index 0000000000000000000000000000000000000000..f91a89a3c3215ca1a804f483677a66d47f75898e --- /dev/null +++ b/libclc/generic/lib/gen_convert.py @@ -0,0 +1,388 @@ +#!/usr/bin/env python3 + +# OpenCL built-in library: type conversion functions +# +# Copyright (c) 2013 Victor Oliveira <victormatheus@gmail.com> +# Copyright (c) 2013 Jesse Towner <jessetowner@lavabit.com> +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +# This script generates the file convert_type.cl, which contains all of the +# OpenCL functions in the form: +# +# convert_<destTypen><_sat><_roundingMode>(<sourceTypen>) + +types = ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'long', 'ulong', 'float', 'double'] +int_types = ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'long', 'ulong'] +unsigned_types = ['uchar', 'ushort', 'uint', 'ulong'] +float_types = ['float', 'double'] +int64_types = ['long', 'ulong'] +float64_types = ['double'] +vector_sizes = ['', '2', '3', '4', '8', '16'] +half_sizes = [('2',''), ('4','2'), ('8','4'), ('16','8')] + +saturation = ['','_sat'] +rounding_modes = ['_rtz','_rte','_rtp','_rtn'] +float_prefix = {'float':'FLT_', 'double':'DBL_'} +float_suffix = {'float':'f', 'double':''} + +bool_type = {'char' : 'char', + 'uchar' : 'char', + 'short' : 'short', + 'ushort': 'short', + 'int' : 'int', + 'uint' : 'int', + 'long' : 'long', + 'ulong' : 'long', + 'float' : 'int', + 'double' : 'long'} + +unsigned_type = {'char' : 'uchar', + 'uchar' : 'uchar', + 'short' : 'ushort', + 'ushort': 'ushort', + 'int' : 'uint', + 'uint' : 'uint', + 'long' : 'ulong', + 'ulong' : 'ulong'} + +sizeof_type = {'char' : 1, 'uchar' : 1, + 'short' : 2, 'ushort' : 2, + 'int' : 4, 'uint' : 4, + 'long' : 8, 'ulong' : 8, + 'float' : 4, 'double' : 8} + +limit_max = {'char' : 'CHAR_MAX', + 'uchar' : 'UCHAR_MAX', + 'short' : 'SHRT_MAX', + 'ushort': 'USHRT_MAX', + 'int' : 'INT_MAX', + 'uint' : 'UINT_MAX', + 'long' : 'LONG_MAX', + 'ulong' : 'ULONG_MAX'} + +limit_min = {'char' : 'CHAR_MIN', + 'uchar' : '0', + 'short' : 'SHRT_MIN', + 'ushort': '0', + 'int' : 'INT_MIN', + 'uint' : '0', + 'long' : 'LONG_MIN', + 'ulong' : '0'} + +def conditional_guard(src, dst): + int64_count = 0 + float64_count = 0 + if src in int64_types: + int64_count = int64_count +1 + elif src in float64_types: + float64_count = float64_count + 1 + if dst in int64_types: + int64_count = int64_count +1 + elif dst in float64_types: + float64_count = float64_count + 1 + if float64_count > 0 and int64_count > 0: + print("#if defined(cl_khr_fp64) && defined(cles_khr_int64)") + return True + elif float64_count > 0: + print("#ifdef cl_khr_fp64") + return True + elif int64_count > 0: + print("#ifdef cles_khr_int64") + return True + return False + + +print("""/* !!!! AUTOGENERATED FILE generated by convert_type.py !!!!! + + DON'T CHANGE THIS FILE. MAKE YOUR CHANGES TO convert_type.py AND RUN: + $ ./generate-conversion-type-cl.sh + + OpenCL type conversion functions + + Copyright (c) 2013 Victor Oliveira <victormatheus@gmail.com> + Copyright (c) 2013 Jesse Towner <jessetowner@lavabit.com> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +#include <clc/clc.h> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +""") + +# +# Default Conversions +# +# All conversions are in accordance with the OpenCL specification, +# which cites the C99 conversion rules. +# +# Casting from floating point to integer results in conversions +# with truncation, so it should be suitable for the default convert +# functions. +# +# Conversions from integer to floating-point, and floating-point to +# floating-point through casting is done with the default rounding +# mode. While C99 allows dynamically changing the rounding mode +# during runtime, it is not a supported feature in OpenCL according +# to Section 7.1 - Rounding Modes in the OpenCL 1.2 specification. +# +# Therefore, we can assume for optimization purposes that the +# rounding mode is fixed to round-to-nearest-even. Platform target +# authors should ensure that the rounding-control registers remain +# in this state, and that this invariant holds. +# +# Also note, even though the OpenCL specification isn't entirely +# clear on this matter, we implement all rounding mode combinations +# even for integer-to-integer conversions. When such a conversion +# is used, the rounding mode is ignored. +# + +def generate_default_conversion(src, dst, mode): + close_conditional = conditional_guard(src, dst) + + # scalar conversions + print("""_CLC_DEF _CLC_OVERLOAD +{DST} convert_{DST}{M}({SRC} x) +{{ + return ({DST})x; +}} +""".format(SRC=src, DST=dst, M=mode)) + + # vector conversions, done through decomposition to components + for size, half_size in half_sizes: + print("""_CLC_DEF _CLC_OVERLOAD +{DST}{N} convert_{DST}{N}{M}({SRC}{N} x) +{{ + return ({DST}{N})(convert_{DST}{H}(x.lo), convert_{DST}{H}(x.hi)); +}} +""".format(SRC=src, DST=dst, N=size, H=half_size, M=mode)) + + # 3-component vector conversions + print("""_CLC_DEF _CLC_OVERLOAD +{DST}3 convert_{DST}3{M}({SRC}3 x) +{{ + return ({DST}3)(convert_{DST}2(x.s01), convert_{DST}(x.s2)); +}}""".format(SRC=src, DST=dst, M=mode)) + + if close_conditional: + print("#endif") + + +for src in types: + for dst in types: + generate_default_conversion(src, dst, '') + +for src in int_types: + for dst in int_types: + for mode in rounding_modes: + generate_default_conversion(src, dst, mode) + +# +# Saturated Conversions To Integers +# +# These functions are dependent on the unsaturated conversion functions +# generated above, and use clamp, max, min, and select to eliminate +# branching and vectorize the conversions. +# +# Again, as above, we allow all rounding modes for integer-to-integer +# conversions with saturation. +# + +def generate_saturated_conversion(src, dst, size): + # Header + close_conditional = conditional_guard(src, dst) + print("""_CLC_DEF _CLC_OVERLOAD +{DST}{N} convert_{DST}{N}_sat({SRC}{N} x) +{{""".format(DST=dst, SRC=src, N=size)) + + # FIXME: This is a work around for lack of select function with + # signed third argument when the first two arguments are unsigned types. + # We cast to the signed type for sign-extension, then do a bitcast to + # the unsigned type. + if dst in unsigned_types: + bool_prefix = "as_{DST}{N}(convert_{BOOL}{N}".format(DST=dst, BOOL=bool_type[dst], N=size); + bool_suffix = ")" + else: + bool_prefix = "convert_{BOOL}{N}".format(BOOL=bool_type[dst], N=size); + bool_suffix = "" + + # Body + if src == dst: + + # Conversion between same types + print(" return x;") + + elif src in float_types: + + # Conversion from float to int + print(""" {DST}{N} y = convert_{DST}{N}(x); + y = select(y, ({DST}{N}){DST_MIN}, {BP}(x < ({SRC}{N}){DST_MIN}){BS}); + y = select(y, ({DST}{N}){DST_MAX}, {BP}(x > ({SRC}{N}){DST_MAX}){BS}); + return y;""".format(SRC=src, DST=dst, N=size, + DST_MIN=limit_min[dst], DST_MAX=limit_max[dst], + BP=bool_prefix, BS=bool_suffix)) + + else: + + # Integer to integer convesion with sizeof(src) == sizeof(dst) + if sizeof_type[src] == sizeof_type[dst]: + if src in unsigned_types: + print(" x = min(x, ({SRC}){DST_MAX});".format(SRC=src, DST_MAX=limit_max[dst])) + else: + print(" x = max(x, ({SRC})0);".format(SRC=src)) + + # Integer to integer conversion where sizeof(src) > sizeof(dst) + elif sizeof_type[src] > sizeof_type[dst]: + if src in unsigned_types: + print(" x = min(x, ({SRC}){DST_MAX});".format(SRC=src, DST_MAX=limit_max[dst])) + else: + print(" x = clamp(x, ({SRC}){DST_MIN}, ({SRC}){DST_MAX});" + .format(SRC=src, DST_MIN=limit_min[dst], DST_MAX=limit_max[dst])) + + # Integer to integer conversion where sizeof(src) < sizeof(dst) + elif src not in unsigned_types and dst in unsigned_types: + print(" x = max(x, ({SRC})0);".format(SRC=src)) + + print(" return convert_{DST}{N}(x);".format(DST=dst, N=size)) + + # Footer + print("}") + if close_conditional: + print("#endif") + + +for src in types: + for dst in int_types: + for size in vector_sizes: + generate_saturated_conversion(src, dst, size) + + +def generate_saturated_conversion_with_rounding(src, dst, size, mode): + # Header + close_conditional = conditional_guard(src, dst) + + # Body + print("""_CLC_DEF _CLC_OVERLOAD +{DST}{N} convert_{DST}{N}_sat{M}({SRC}{N} x) +{{ + return convert_{DST}{N}_sat(x); +}} +""".format(DST=dst, SRC=src, N=size, M=mode)) + + # Footer + if close_conditional: + print("#endif") + + +for src in int_types: + for dst in int_types: + for size in vector_sizes: + for mode in rounding_modes: + generate_saturated_conversion_with_rounding(src, dst, size, mode) + +# +# Conversions To/From Floating-Point With Rounding +# +# Note that we assume as above that casts from floating-point to +# integer are done with truncation, and that the default rounding +# mode is fixed to round-to-nearest-even, as per C99 and OpenCL +# rounding rules. +# +# These functions rely on the use of abs, ceil, fabs, floor, +# nextafter, sign, rint and the above generated conversion functions. +# +# Only conversions to integers can have saturation. +# + +def generate_float_conversion(src, dst, size, mode, sat): + # Header + close_conditional = conditional_guard(src, dst) + print("""_CLC_DEF _CLC_OVERLOAD +{DST}{N} convert_{DST}{N}{S}{M}({SRC}{N} x) +{{""".format(SRC=src, DST=dst, N=size, M=mode, S=sat)) + + # Perform conversion + if dst in int_types: + if mode == '_rte': + print(" x = rint(x);"); + elif mode == '_rtp': + print(" x = ceil(x);"); + elif mode == '_rtn': + print(" x = floor(x);"); + print(" return convert_{DST}{N}{S}(x);".format(DST=dst, N=size, S=sat)) + elif mode == '_rte': + print(" return convert_{DST}{N}(x);".format(DST=dst, N=size)) + else: + print(" {DST}{N} r = convert_{DST}{N}(x);".format(DST=dst, N=size)) + print(" {SRC}{N} y = convert_{SRC}{N}(y);".format(SRC=src, N=size)) + if mode == '_rtz': + if src in int_types: + print(" {USRC}{N} abs_x = abs(x);".format(USRC=unsigned_type[src], N=size)) + print(" {USRC}{N} abs_y = abs(y);".format(USRC=unsigned_type[src], N=size)) + else: + print(" {SRC}{N} abs_x = fabs(x);".format(SRC=src, N=size)) + print(" {SRC}{N} abs_y = fabs(y);".format(SRC=src, N=size)) + print(" return select(r, nextafter(r, sign(r) * ({DST}{N})-INFINITY), convert_{BOOL}{N}(abs_y > abs_x));" + .format(DST=dst, N=size, BOOL=bool_type[dst])) + if mode == '_rtp': + print(" return select(r, nextafter(r, ({DST}{N})INFINITY), convert_{BOOL}{N}(y < x));" + .format(DST=dst, N=size, BOOL=bool_type[dst])) + if mode == '_rtn': + print(" return select(r, nextafter(r, ({DST}{N})-INFINITY), convert_{BOOL}{N}(y > x));" + .format(DST=dst, N=size, BOOL=bool_type[dst])) + + # Footer + print("}") + if close_conditional: + print("#endif") + + +for src in float_types: + for dst in int_types: + for size in vector_sizes: + for mode in rounding_modes: + for sat in saturation: + generate_float_conversion(src, dst, size, mode, sat) + + +for src in types: + for dst in float_types: + for size in vector_sizes: + for mode in rounding_modes: + generate_float_conversion(src, dst, size, mode, '') diff --git a/libclc/generic/lib/geometric/cross.cl b/libclc/generic/lib/geometric/cross.cl new file mode 100644 index 0000000000000000000000000000000000000000..3b4ca6cafae9a8fa4959da9be4ebe2a78d67c4fd --- /dev/null +++ b/libclc/generic/lib/geometric/cross.cl @@ -0,0 +1,25 @@ +#include <clc/clc.h> + +_CLC_OVERLOAD _CLC_DEF float3 cross(float3 p0, float3 p1) { + return (float3)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z, + p0.x*p1.y - p0.y*p1.x); +} + +_CLC_OVERLOAD _CLC_DEF float4 cross(float4 p0, float4 p1) { + return (float4)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z, + p0.x*p1.y - p0.y*p1.x, 0.f); +} + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +_CLC_OVERLOAD _CLC_DEF double3 cross(double3 p0, double3 p1) { + return (double3)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z, + p0.x*p1.y - p0.y*p1.x); +} + +_CLC_OVERLOAD _CLC_DEF double4 cross(double4 p0, double4 p1) { + return (double4)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z, + p0.x*p1.y - p0.y*p1.x, 0.f); +} +#endif diff --git a/libclc/generic/lib/geometric/dot.cl b/libclc/generic/lib/geometric/dot.cl new file mode 100644 index 0000000000000000000000000000000000000000..0d6fe6c9a4e8a1d29b8852eedaa11eef855d6b7f --- /dev/null +++ b/libclc/generic/lib/geometric/dot.cl @@ -0,0 +1,39 @@ +#include <clc/clc.h> + +_CLC_OVERLOAD _CLC_DEF float dot(float p0, float p1) { + return p0*p1; +} + +_CLC_OVERLOAD _CLC_DEF float dot(float2 p0, float2 p1) { + return p0.x*p1.x + p0.y*p1.y; +} + +_CLC_OVERLOAD _CLC_DEF float dot(float3 p0, float3 p1) { + return p0.x*p1.x + p0.y*p1.y + p0.z*p1.z; +} + +_CLC_OVERLOAD _CLC_DEF float dot(float4 p0, float4 p1) { + return p0.x*p1.x + p0.y*p1.y + p0.z*p1.z + p0.w*p1.w; +} + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +_CLC_OVERLOAD _CLC_DEF double dot(double p0, double p1) { + return p0*p1; +} + +_CLC_OVERLOAD _CLC_DEF double dot(double2 p0, double2 p1) { + return p0.x*p1.x + p0.y*p1.y; +} + +_CLC_OVERLOAD _CLC_DEF double dot(double3 p0, double3 p1) { + return p0.x*p1.x + p0.y*p1.y + p0.z*p1.z; +} + +_CLC_OVERLOAD _CLC_DEF double dot(double4 p0, double4 p1) { + return p0.x*p1.x + p0.y*p1.y + p0.z*p1.z + p0.w*p1.w; +} + +#endif diff --git a/libclc/generic/lib/geometric/length.cl b/libclc/generic/lib/geometric/length.cl new file mode 100644 index 0000000000000000000000000000000000000000..ef087c75f9f1c8f73d555b543ca70980d3950090 --- /dev/null +++ b/libclc/generic/lib/geometric/length.cl @@ -0,0 +1,8 @@ +#include <clc/clc.h> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define __CLC_BODY <length.inc> +#include <clc/geometric/floatn.inc> diff --git a/libclc/generic/lib/geometric/length.inc b/libclc/generic/lib/geometric/length.inc new file mode 100644 index 0000000000000000000000000000000000000000..5faaaffbd6a8b5a33f83def3ce03e54f0b7ae03a --- /dev/null +++ b/libclc/generic/lib/geometric/length.inc @@ -0,0 +1,3 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_FLOAT length(__CLC_FLOATN p) { + return native_sqrt(dot(p, p)); +} diff --git a/libclc/generic/lib/geometric/normalize.cl b/libclc/generic/lib/geometric/normalize.cl new file mode 100644 index 0000000000000000000000000000000000000000..b06b2fe3a4c49cd84d4ed97f1cded0bc7a2868bc --- /dev/null +++ b/libclc/generic/lib/geometric/normalize.cl @@ -0,0 +1,8 @@ +#include <clc/clc.h> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define __CLC_BODY <normalize.inc> +#include <clc/geometric/floatn.inc> diff --git a/libclc/generic/lib/geometric/normalize.inc b/libclc/generic/lib/geometric/normalize.inc new file mode 100644 index 0000000000000000000000000000000000000000..423ff79fc4e24ea0e5f05c78ad74a6c2fc53a10d --- /dev/null +++ b/libclc/generic/lib/geometric/normalize.inc @@ -0,0 +1,3 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_FLOATN normalize(__CLC_FLOATN p) { + return p/length(p); +} diff --git a/libclc/generic/lib/integer/abs.cl b/libclc/generic/lib/integer/abs.cl new file mode 100644 index 0000000000000000000000000000000000000000..faff8d05fefc7969bfc1e9ca98fad1df5453e44d --- /dev/null +++ b/libclc/generic/lib/integer/abs.cl @@ -0,0 +1,4 @@ +#include <clc/clc.h> + +#define __CLC_BODY <abs.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/lib/integer/abs.inc b/libclc/generic/lib/integer/abs.inc new file mode 100644 index 0000000000000000000000000000000000000000..cfe7bfecd294fc6b16c0af1f30d989ce816d7664 --- /dev/null +++ b/libclc/generic/lib/integer/abs.inc @@ -0,0 +1,3 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_U_GENTYPE abs(__CLC_GENTYPE x) { + return __builtin_astype((__CLC_GENTYPE)(x > (__CLC_GENTYPE)(0) ? x : -x), __CLC_U_GENTYPE); +} diff --git a/libclc/generic/lib/integer/abs_diff.cl b/libclc/generic/lib/integer/abs_diff.cl new file mode 100644 index 0000000000000000000000000000000000000000..3d751057819e9093acdb52b31db23f82a8ae98ad --- /dev/null +++ b/libclc/generic/lib/integer/abs_diff.cl @@ -0,0 +1,4 @@ +#include <clc/clc.h> + +#define __CLC_BODY <abs_diff.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/lib/integer/abs_diff.inc b/libclc/generic/lib/integer/abs_diff.inc new file mode 100644 index 0000000000000000000000000000000000000000..f39c3ff4d3e8ab65347258675669520b9ab76e42 --- /dev/null +++ b/libclc/generic/lib/integer/abs_diff.inc @@ -0,0 +1,3 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_U_GENTYPE abs_diff(__CLC_GENTYPE x, __CLC_GENTYPE y) { + return __builtin_astype((__CLC_GENTYPE)(x > y ? x-y : y-x), __CLC_U_GENTYPE); +} diff --git a/libclc/generic/lib/integer/add_sat.cl b/libclc/generic/lib/integer/add_sat.cl new file mode 100644 index 0000000000000000000000000000000000000000..d4df66db3ede91c1a9050d1ef7bff30c5b602c2d --- /dev/null +++ b/libclc/generic/lib/integer/add_sat.cl @@ -0,0 +1,53 @@ +#include <clc/clc.h> +#include "../clcmacro.h" + +// From add_sat.ll +_CLC_DECL char __clc_add_sat_s8(char, char); +_CLC_DECL uchar __clc_add_sat_u8(uchar, uchar); +_CLC_DECL short __clc_add_sat_s16(short, short); +_CLC_DECL ushort __clc_add_sat_u16(ushort, ushort); +_CLC_DECL int __clc_add_sat_s32(int, int); +_CLC_DECL uint __clc_add_sat_u32(uint, uint); +_CLC_DECL long __clc_add_sat_s64(long, long); +_CLC_DECL ulong __clc_add_sat_u64(ulong, ulong); + +_CLC_OVERLOAD _CLC_DEF char add_sat(char x, char y) { + return __clc_add_sat_s8(x, y); +} + +_CLC_OVERLOAD _CLC_DEF uchar add_sat(uchar x, uchar y) { + return __clc_add_sat_u8(x, y); +} + +_CLC_OVERLOAD _CLC_DEF short add_sat(short x, short y) { + return __clc_add_sat_s16(x, y); +} + +_CLC_OVERLOAD _CLC_DEF ushort add_sat(ushort x, ushort y) { + return __clc_add_sat_u16(x, y); +} + +_CLC_OVERLOAD _CLC_DEF int add_sat(int x, int y) { + return __clc_add_sat_s32(x, y); +} + +_CLC_OVERLOAD _CLC_DEF uint add_sat(uint x, uint y) { + return __clc_add_sat_u32(x, y); +} + +_CLC_OVERLOAD _CLC_DEF long add_sat(long x, long y) { + return __clc_add_sat_s64(x, y); +} + +_CLC_OVERLOAD _CLC_DEF ulong add_sat(ulong x, ulong y) { + return __clc_add_sat_u64(x, y); +} + +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, char, add_sat, char, char) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uchar, add_sat, uchar, uchar) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, short, add_sat, short, short) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ushort, add_sat, ushort, ushort) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, int, add_sat, int, int) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uint, add_sat, uint, uint) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, long, add_sat, long, long) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ulong, add_sat, ulong, ulong) diff --git a/libclc/generic/lib/integer/add_sat_if.ll b/libclc/generic/lib/integer/add_sat_if.ll new file mode 100644 index 0000000000000000000000000000000000000000..bcbe4c0dd348fa94afaea0e000c88348dbf06b73 --- /dev/null +++ b/libclc/generic/lib/integer/add_sat_if.ll @@ -0,0 +1,55 @@ +declare i8 @__clc_add_sat_impl_s8(i8 %x, i8 %y) + +define i8 @__clc_add_sat_s8(i8 %x, i8 %y) nounwind readnone alwaysinline { + %call = call i8 @__clc_add_sat_impl_s8(i8 %x, i8 %y) + ret i8 %call +} + +declare i8 @__clc_add_sat_impl_u8(i8 %x, i8 %y) + +define i8 @__clc_add_sat_u8(i8 %x, i8 %y) nounwind readnone alwaysinline { + %call = call i8 @__clc_add_sat_impl_u8(i8 %x, i8 %y) + ret i8 %call +} + +declare i16 @__clc_add_sat_impl_s16(i16 %x, i16 %y) + +define i16 @__clc_add_sat_s16(i16 %x, i16 %y) nounwind readnone alwaysinline { + %call = call i16 @__clc_add_sat_impl_s16(i16 %x, i16 %y) + ret i16 %call +} + +declare i16 @__clc_add_sat_impl_u16(i16 %x, i16 %y) + +define i16 @__clc_add_sat_u16(i16 %x, i16 %y) nounwind readnone alwaysinline { + %call = call i16 @__clc_add_sat_impl_u16(i16 %x, i16 %y) + ret i16 %call +} + +declare i32 @__clc_add_sat_impl_s32(i32 %x, i32 %y) + +define i32 @__clc_add_sat_s32(i32 %x, i32 %y) nounwind readnone alwaysinline { + %call = call i32 @__clc_add_sat_impl_s32(i32 %x, i32 %y) + ret i32 %call +} + +declare i32 @__clc_add_sat_impl_u32(i32 %x, i32 %y) + +define i32 @__clc_add_sat_u32(i32 %x, i32 %y) nounwind readnone alwaysinline { + %call = call i32 @__clc_add_sat_impl_u32(i32 %x, i32 %y) + ret i32 %call +} + +declare i64 @__clc_add_sat_impl_s64(i64 %x, i64 %y) + +define i64 @__clc_add_sat_s64(i64 %x, i64 %y) nounwind readnone alwaysinline { + %call = call i64 @__clc_add_sat_impl_s64(i64 %x, i64 %y) + ret i64 %call +} + +declare i64 @__clc_add_sat_impl_u64(i64 %x, i64 %y) + +define i64 @__clc_add_sat_u64(i64 %x, i64 %y) nounwind readnone alwaysinline { + %call = call i64 @__clc_add_sat_impl_u64(i64 %x, i64 %y) + ret i64 %call +} diff --git a/libclc/generic/lib/integer/add_sat_impl.ll b/libclc/generic/lib/integer/add_sat_impl.ll new file mode 100644 index 0000000000000000000000000000000000000000..c150ecb56b8b54289e4c69195db8685135df1bf7 --- /dev/null +++ b/libclc/generic/lib/integer/add_sat_impl.ll @@ -0,0 +1,83 @@ +declare {i8, i1} @llvm.sadd.with.overflow.i8(i8, i8) +declare {i8, i1} @llvm.uadd.with.overflow.i8(i8, i8) + +define i8 @__clc_add_sat_impl_s8(i8 %x, i8 %y) nounwind readnone alwaysinline { + %call = call {i8, i1} @llvm.sadd.with.overflow.i8(i8 %x, i8 %y) + %res = extractvalue {i8, i1} %call, 0 + %over = extractvalue {i8, i1} %call, 1 + %x.msb = ashr i8 %x, 7 + %x.limit = xor i8 %x.msb, 127 + %sat = select i1 %over, i8 %x.limit, i8 %res + ret i8 %sat +} + +define i8 @__clc_add_sat_impl_u8(i8 %x, i8 %y) nounwind readnone alwaysinline { + %call = call {i8, i1} @llvm.uadd.with.overflow.i8(i8 %x, i8 %y) + %res = extractvalue {i8, i1} %call, 0 + %over = extractvalue {i8, i1} %call, 1 + %sat = select i1 %over, i8 -1, i8 %res + ret i8 %sat +} + +declare {i16, i1} @llvm.sadd.with.overflow.i16(i16, i16) +declare {i16, i1} @llvm.uadd.with.overflow.i16(i16, i16) + +define i16 @__clc_add_sat_impl_s16(i16 %x, i16 %y) nounwind readnone alwaysinline { + %call = call {i16, i1} @llvm.sadd.with.overflow.i16(i16 %x, i16 %y) + %res = extractvalue {i16, i1} %call, 0 + %over = extractvalue {i16, i1} %call, 1 + %x.msb = ashr i16 %x, 15 + %x.limit = xor i16 %x.msb, 32767 + %sat = select i1 %over, i16 %x.limit, i16 %res + ret i16 %sat +} + +define i16 @__clc_add_sat_impl_u16(i16 %x, i16 %y) nounwind readnone alwaysinline { + %call = call {i16, i1} @llvm.uadd.with.overflow.i16(i16 %x, i16 %y) + %res = extractvalue {i16, i1} %call, 0 + %over = extractvalue {i16, i1} %call, 1 + %sat = select i1 %over, i16 -1, i16 %res + ret i16 %sat +} + +declare {i32, i1} @llvm.sadd.with.overflow.i32(i32, i32) +declare {i32, i1} @llvm.uadd.with.overflow.i32(i32, i32) + +define i32 @__clc_add_sat_impl_s32(i32 %x, i32 %y) nounwind readnone alwaysinline { + %call = call {i32, i1} @llvm.sadd.with.overflow.i32(i32 %x, i32 %y) + %res = extractvalue {i32, i1} %call, 0 + %over = extractvalue {i32, i1} %call, 1 + %x.msb = ashr i32 %x, 31 + %x.limit = xor i32 %x.msb, 2147483647 + %sat = select i1 %over, i32 %x.limit, i32 %res + ret i32 %sat +} + +define i32 @__clc_add_sat_impl_u32(i32 %x, i32 %y) nounwind readnone alwaysinline { + %call = call {i32, i1} @llvm.uadd.with.overflow.i32(i32 %x, i32 %y) + %res = extractvalue {i32, i1} %call, 0 + %over = extractvalue {i32, i1} %call, 1 + %sat = select i1 %over, i32 -1, i32 %res + ret i32 %sat +} + +declare {i64, i1} @llvm.sadd.with.overflow.i64(i64, i64) +declare {i64, i1} @llvm.uadd.with.overflow.i64(i64, i64) + +define i64 @__clc_add_sat_impl_s64(i64 %x, i64 %y) nounwind readnone alwaysinline { + %call = call {i64, i1} @llvm.sadd.with.overflow.i64(i64 %x, i64 %y) + %res = extractvalue {i64, i1} %call, 0 + %over = extractvalue {i64, i1} %call, 1 + %x.msb = ashr i64 %x, 63 + %x.limit = xor i64 %x.msb, 9223372036854775807 + %sat = select i1 %over, i64 %x.limit, i64 %res + ret i64 %sat +} + +define i64 @__clc_add_sat_impl_u64(i64 %x, i64 %y) nounwind readnone alwaysinline { + %call = call {i64, i1} @llvm.uadd.with.overflow.i64(i64 %x, i64 %y) + %res = extractvalue {i64, i1} %call, 0 + %over = extractvalue {i64, i1} %call, 1 + %sat = select i1 %over, i64 -1, i64 %res + ret i64 %sat +} diff --git a/libclc/generic/lib/integer/clz.cl b/libclc/generic/lib/integer/clz.cl new file mode 100644 index 0000000000000000000000000000000000000000..17e3fe0147418bfb6b1860151771c07179a87bff --- /dev/null +++ b/libclc/generic/lib/integer/clz.cl @@ -0,0 +1,53 @@ +#include <clc/clc.h> +#include "../clcmacro.h" + +// From clz.ll +_CLC_DECL char __clc_clz_s8(char); +_CLC_DECL uchar __clc_clz_u8(uchar); +_CLC_DECL short __clc_clz_s16(short); +_CLC_DECL ushort __clc_clz_u16(ushort); +_CLC_DECL int __clc_clz_s32(int); +_CLC_DECL uint __clc_clz_u32(uint); +_CLC_DECL long __clc_clz_s64(long); +_CLC_DECL ulong __clc_clz_u64(ulong); + +_CLC_OVERLOAD _CLC_DEF char clz(char x) { + return __clc_clz_s8(x); +} + +_CLC_OVERLOAD _CLC_DEF uchar clz(uchar x) { + return __clc_clz_u8(x); +} + +_CLC_OVERLOAD _CLC_DEF short clz(short x) { + return __clc_clz_s16(x); +} + +_CLC_OVERLOAD _CLC_DEF ushort clz(ushort x) { + return __clc_clz_u16(x); +} + +_CLC_OVERLOAD _CLC_DEF int clz(int x) { + return __clc_clz_s32(x); +} + +_CLC_OVERLOAD _CLC_DEF uint clz(uint x) { + return __clc_clz_u32(x); +} + +_CLC_OVERLOAD _CLC_DEF long clz(long x) { + return __clc_clz_s64(x); +} + +_CLC_OVERLOAD _CLC_DEF ulong clz(ulong x) { + return __clc_clz_u64(x); +} + +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, char, clz, char) +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uchar, clz, uchar) +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, short, clz, short) +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ushort, clz, ushort) +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, int, clz, int) +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uint, clz, uint) +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, long, clz, long) +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ulong, clz, ulong) diff --git a/libclc/generic/lib/integer/clz_if.ll b/libclc/generic/lib/integer/clz_if.ll new file mode 100644 index 0000000000000000000000000000000000000000..23dfc74a8a8226fcb3c7c67bb3a7319d532f21f5 --- /dev/null +++ b/libclc/generic/lib/integer/clz_if.ll @@ -0,0 +1,55 @@ +declare i8 @__clc_clz_impl_s8(i8 %x) + +define i8 @__clc_clz_s8(i8 %x) nounwind readnone alwaysinline { + %call = call i8 @__clc_clz_impl_s8(i8 %x) + ret i8 %call +} + +declare i8 @__clc_clz_impl_u8(i8 %x) + +define i8 @__clc_clz_u8(i8 %x) nounwind readnone alwaysinline { + %call = call i8 @__clc_clz_impl_u8(i8 %x) + ret i8 %call +} + +declare i16 @__clc_clz_impl_s16(i16 %x) + +define i16 @__clc_clz_s16(i16 %x) nounwind readnone alwaysinline { + %call = call i16 @__clc_clz_impl_s16(i16 %x) + ret i16 %call +} + +declare i16 @__clc_clz_impl_u16(i16 %x) + +define i16 @__clc_clz_u16(i16 %x) nounwind readnone alwaysinline { + %call = call i16 @__clc_clz_impl_u16(i16 %x) + ret i16 %call +} + +declare i32 @__clc_clz_impl_s32(i32 %x) + +define i32 @__clc_clz_s32(i32 %x) nounwind readnone alwaysinline { + %call = call i32 @__clc_clz_impl_s32(i32 %x) + ret i32 %call +} + +declare i32 @__clc_clz_impl_u32(i32 %x) + +define i32 @__clc_clz_u32(i32 %x) nounwind readnone alwaysinline { + %call = call i32 @__clc_clz_impl_u32(i32 %x) + ret i32 %call +} + +declare i64 @__clc_clz_impl_s64(i64 %x) + +define i64 @__clc_clz_s64(i64 %x) nounwind readnone alwaysinline { + %call = call i64 @__clc_clz_impl_s64(i64 %x) + ret i64 %call +} + +declare i64 @__clc_clz_impl_u64(i64 %x) + +define i64 @__clc_clz_u64(i64 %x) nounwind readnone alwaysinline { + %call = call i64 @__clc_clz_impl_u64(i64 %x) + ret i64 %call +} diff --git a/libclc/generic/lib/integer/clz_impl.ll b/libclc/generic/lib/integer/clz_impl.ll new file mode 100644 index 0000000000000000000000000000000000000000..b5c3d98ae4188f535ac62abfdf06276e8d223db8 --- /dev/null +++ b/libclc/generic/lib/integer/clz_impl.ll @@ -0,0 +1,44 @@ +declare i8 @llvm.ctlz.i8(i8, i1) +declare i16 @llvm.ctlz.i16(i16, i1) +declare i32 @llvm.ctlz.i32(i32, i1) +declare i64 @llvm.ctlz.i64(i64, i1) + +define i8 @__clc_clz_impl_s8(i8 %x) nounwind readnone alwaysinline { + %call = call i8 @llvm.ctlz.i8(i8 %x, i1 0) + ret i8 %call +} + +define i8 @__clc_clz_impl_u8(i8 %x) nounwind readnone alwaysinline { + %call = call i8 @llvm.ctlz.i8(i8 %x, i1 0) + ret i8 %call +} + +define i16 @__clc_clz_impl_s16(i16 %x) nounwind readnone alwaysinline { + %call = call i16 @llvm.ctlz.i16(i16 %x, i1 0) + ret i16 %call +} + +define i16 @__clc_clz_impl_u16(i16 %x) nounwind readnone alwaysinline { + %call = call i16 @llvm.ctlz.i16(i16 %x, i1 0) + ret i16 %call +} + +define i32 @__clc_clz_impl_s32(i32 %x) nounwind readnone alwaysinline { + %call = call i32 @llvm.ctlz.i32(i32 %x, i1 0) + ret i32 %call +} + +define i32 @__clc_clz_impl_u32(i32 %x) nounwind readnone alwaysinline { + %call = call i32 @llvm.ctlz.i32(i32 %x, i1 0) + ret i32 %call +} + +define i64 @__clc_clz_impl_s64(i64 %x) nounwind readnone alwaysinline { + %call = call i64 @llvm.ctlz.i64(i64 %x, i1 0) + ret i64 %call +} + +define i64 @__clc_clz_impl_u64(i64 %x) nounwind readnone alwaysinline { + %call = call i64 @llvm.ctlz.i64(i64 %x, i1 0) + ret i64 %call +} diff --git a/libclc/generic/lib/integer/hadd.cl b/libclc/generic/lib/integer/hadd.cl new file mode 100644 index 0000000000000000000000000000000000000000..749026e5a8ad8183fff80fd81c01c4aa167e32b7 --- /dev/null +++ b/libclc/generic/lib/integer/hadd.cl @@ -0,0 +1,4 @@ +#include <clc/clc.h> + +#define __CLC_BODY <hadd.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/lib/integer/hadd.inc b/libclc/generic/lib/integer/hadd.inc new file mode 100644 index 0000000000000000000000000000000000000000..ea59d9bd7db5f83b3d8195b1280109d0f0578e0c --- /dev/null +++ b/libclc/generic/lib/integer/hadd.inc @@ -0,0 +1,6 @@ +//hadd = (x+y)>>1 +//This can be simplified to x>>1 + y>>1 + (1 if both x and y have the 1s bit set) +//This saves us having to do any checks for overflow in the addition sum +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE hadd(__CLC_GENTYPE x, __CLC_GENTYPE y) { + return (x>>(__CLC_GENTYPE)1)+(y>>(__CLC_GENTYPE)1)+(x&y&(__CLC_GENTYPE)1); +} diff --git a/libclc/generic/lib/integer/mad24.cl b/libclc/generic/lib/integer/mad24.cl new file mode 100644 index 0000000000000000000000000000000000000000..e29e99f28b56fcc961b09909e81649765cdce105 --- /dev/null +++ b/libclc/generic/lib/integer/mad24.cl @@ -0,0 +1,4 @@ +#include <clc/clc.h> + +#define __CLC_BODY <mad24.inc> +#include <clc/integer/integer-gentype.inc> diff --git a/libclc/generic/lib/integer/mad24.inc b/libclc/generic/lib/integer/mad24.inc new file mode 100644 index 0000000000000000000000000000000000000000..902b0aafe4c8741554a0997ea36138ee45b183a5 --- /dev/null +++ b/libclc/generic/lib/integer/mad24.inc @@ -0,0 +1,3 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE mad24(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_GENTYPE z){ + return mul24(x, y) + z; +} diff --git a/libclc/generic/lib/integer/mul24.cl b/libclc/generic/lib/integer/mul24.cl new file mode 100644 index 0000000000000000000000000000000000000000..8aedca64b85905a1383608cb04c254e39c37045c --- /dev/null +++ b/libclc/generic/lib/integer/mul24.cl @@ -0,0 +1,4 @@ +#include <clc/clc.h> + +#define __CLC_BODY <mul24.inc> +#include <clc/integer/integer-gentype.inc> diff --git a/libclc/generic/lib/integer/mul24.inc b/libclc/generic/lib/integer/mul24.inc new file mode 100644 index 0000000000000000000000000000000000000000..95a2f1d6f31baba1cabf93dfe6bcd320799bee7a --- /dev/null +++ b/libclc/generic/lib/integer/mul24.inc @@ -0,0 +1,11 @@ + +// We need to use shifts here in order to mantain the sign bit for signed +// integers. The compiler should optimize this to (x & 0x00FFFFFF) for +// unsigned integers. +#define CONVERT_TO_24BIT(x) (((x) << 8) >> 8) + +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE mul24(__CLC_GENTYPE x, __CLC_GENTYPE y){ + return CONVERT_TO_24BIT(x) * CONVERT_TO_24BIT(y); +} + +#undef CONVERT_TO_24BIT diff --git a/libclc/generic/lib/integer/mul_hi.cl b/libclc/generic/lib/integer/mul_hi.cl new file mode 100644 index 0000000000000000000000000000000000000000..174d893afb14f9ad5d8ac902b5ddf8d25dc13009 --- /dev/null +++ b/libclc/generic/lib/integer/mul_hi.cl @@ -0,0 +1,109 @@ +#include <clc/clc.h> + +//For all types EXCEPT long, which is implemented separately +#define __CLC_MUL_HI_IMPL(BGENTYPE, GENTYPE, GENSIZE) \ + _CLC_OVERLOAD _CLC_DEF GENTYPE mul_hi(GENTYPE x, GENTYPE y){ \ + return (GENTYPE)(((BGENTYPE)x * (BGENTYPE)y) >> GENSIZE); \ + } \ + +//FOIL-based long mul_hi +// +// Summary: Treat mul_hi(long x, long y) as: +// (a+b) * (c+d) where a and c are the high-order parts of x and y respectively +// and b and d are the low-order parts of x and y. +// Thinking back to algebra, we use FOIL to do the work. + +_CLC_OVERLOAD _CLC_DEF long mul_hi(long x, long y){ + long f, o, i; + ulong l; + + //Move the high/low halves of x/y into the lower 32-bits of variables so + //that we can multiply them without worrying about overflow. + long x_hi = x >> 32; + long x_lo = x & UINT_MAX; + long y_hi = y >> 32; + long y_lo = y & UINT_MAX; + + //Multiply all of the components according to FOIL method + f = x_hi * y_hi; + o = x_hi * y_lo; + i = x_lo * y_hi; + l = x_lo * y_lo; + + //Now add the components back together in the following steps: + //F: doesn't need to be modified + //O/I: Need to be added together. + //L: Shift right by 32-bits, then add into the sum of O and I + //Once O/I/L are summed up, then shift the sum by 32-bits and add to F. + // + //We use hadd to give us a bit of extra precision for the intermediate sums + //but as a result, we shift by 31 bits instead of 32 + return (long)(f + (hadd(o, (i + (long)((ulong)l>>32))) >> 31)); +} + +_CLC_OVERLOAD _CLC_DEF ulong mul_hi(ulong x, ulong y){ + ulong f, o, i; + ulong l; + + //Move the high/low halves of x/y into the lower 32-bits of variables so + //that we can multiply them without worrying about overflow. + ulong x_hi = x >> 32; + ulong x_lo = x & UINT_MAX; + ulong y_hi = y >> 32; + ulong y_lo = y & UINT_MAX; + + //Multiply all of the components according to FOIL method + f = x_hi * y_hi; + o = x_hi * y_lo; + i = x_lo * y_hi; + l = x_lo * y_lo; + + //Now add the components back together, taking care to respect the fact that: + //F: doesn't need to be modified + //O/I: Need to be added together. + //L: Shift right by 32-bits, then add into the sum of O and I + //Once O/I/L are summed up, then shift the sum by 32-bits and add to F. + // + //We use hadd to give us a bit of extra precision for the intermediate sums + //but as a result, we shift by 31 bits instead of 32 + return (f + (hadd(o, (i + (l>>32))) >> 31)); +} + +#define __CLC_MUL_HI_VEC(GENTYPE) \ + _CLC_OVERLOAD _CLC_DEF GENTYPE##2 mul_hi(GENTYPE##2 x, GENTYPE##2 y){ \ + return (GENTYPE##2){mul_hi(x.s0, y.s0), mul_hi(x.s1, y.s1)}; \ + } \ + _CLC_OVERLOAD _CLC_DEF GENTYPE##3 mul_hi(GENTYPE##3 x, GENTYPE##3 y){ \ + return (GENTYPE##3){mul_hi(x.s0, y.s0), mul_hi(x.s1, y.s1), mul_hi(x.s2, y.s2)}; \ + } \ + _CLC_OVERLOAD _CLC_DEF GENTYPE##4 mul_hi(GENTYPE##4 x, GENTYPE##4 y){ \ + return (GENTYPE##4){mul_hi(x.lo, y.lo), mul_hi(x.hi, y.hi)}; \ + } \ + _CLC_OVERLOAD _CLC_DEF GENTYPE##8 mul_hi(GENTYPE##8 x, GENTYPE##8 y){ \ + return (GENTYPE##8){mul_hi(x.lo, y.lo), mul_hi(x.hi, y.hi)}; \ + } \ + _CLC_OVERLOAD _CLC_DEF GENTYPE##16 mul_hi(GENTYPE##16 x, GENTYPE##16 y){ \ + return (GENTYPE##16){mul_hi(x.lo, y.lo), mul_hi(x.hi, y.hi)}; \ + } \ + +#define __CLC_MUL_HI_DEC_IMPL(BTYPE, TYPE, BITS) \ + __CLC_MUL_HI_IMPL(BTYPE, TYPE, BITS) \ + __CLC_MUL_HI_VEC(TYPE) + +#define __CLC_MUL_HI_TYPES() \ + __CLC_MUL_HI_DEC_IMPL(short, char, 8) \ + __CLC_MUL_HI_DEC_IMPL(ushort, uchar, 8) \ + __CLC_MUL_HI_DEC_IMPL(int, short, 16) \ + __CLC_MUL_HI_DEC_IMPL(uint, ushort, 16) \ + __CLC_MUL_HI_DEC_IMPL(long, int, 32) \ + __CLC_MUL_HI_DEC_IMPL(ulong, uint, 32) \ + __CLC_MUL_HI_VEC(long) \ + __CLC_MUL_HI_VEC(ulong) + +__CLC_MUL_HI_TYPES() + +#undef __CLC_MUL_HI_TYPES +#undef __CLC_MUL_HI_DEC_IMPL +#undef __CLC_MUL_HI_IMPL +#undef __CLC_MUL_HI_VEC +#undef __CLC_B32 diff --git a/libclc/generic/lib/integer/rhadd.cl b/libclc/generic/lib/integer/rhadd.cl new file mode 100644 index 0000000000000000000000000000000000000000..c985870f7c7a24423e5d2cffc53abb813ebf0cfc --- /dev/null +++ b/libclc/generic/lib/integer/rhadd.cl @@ -0,0 +1,4 @@ +#include <clc/clc.h> + +#define __CLC_BODY <rhadd.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/lib/integer/rhadd.inc b/libclc/generic/lib/integer/rhadd.inc new file mode 100644 index 0000000000000000000000000000000000000000..3d6076874808e63ad86149df01a1cb8ec825799b --- /dev/null +++ b/libclc/generic/lib/integer/rhadd.inc @@ -0,0 +1,6 @@ +//rhadd = (x+y+1)>>1 +//This can be simplified to x>>1 + y>>1 + (1 if either x or y have the 1s bit set) +//This saves us having to do any checks for overflow in the addition sums +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE rhadd(__CLC_GENTYPE x, __CLC_GENTYPE y) { + return (x>>(__CLC_GENTYPE)1)+(y>>(__CLC_GENTYPE)1)+((x&(__CLC_GENTYPE)1)|(y&(__CLC_GENTYPE)1)); +} diff --git a/libclc/generic/lib/integer/rotate.cl b/libclc/generic/lib/integer/rotate.cl new file mode 100644 index 0000000000000000000000000000000000000000..27ce515c729331bc4edc794b64330896b10fb72a --- /dev/null +++ b/libclc/generic/lib/integer/rotate.cl @@ -0,0 +1,4 @@ +#include <clc/clc.h> + +#define __CLC_BODY <rotate.inc> +#include <clc/integer/gentype.inc> diff --git a/libclc/generic/lib/integer/rotate.inc b/libclc/generic/lib/integer/rotate.inc new file mode 100644 index 0000000000000000000000000000000000000000..33bb0a85241d20be989c3b9145dd21b60ff3b44c --- /dev/null +++ b/libclc/generic/lib/integer/rotate.inc @@ -0,0 +1,42 @@ +/** + * Not necessarily optimal... but it produces correct results (at least for int) + * If we're lucky, LLVM will recognize the pattern and produce rotate + * instructions: + * http://llvm.1065342.n5.nabble.com/rotate-td47679.html + * + * Eventually, someone should feel free to implement an llvm-specific version + */ + +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE rotate(__CLC_GENTYPE x, __CLC_GENTYPE n){ + //Try to avoid extra work if someone's spinning the value through multiple + //full rotations + n = n % (__CLC_GENTYPE)__CLC_GENSIZE; + +#ifdef __CLC_SCALAR + if (n > 0){ + return (x << n) | (((__CLC_U_GENTYPE)x) >> (__CLC_GENSIZE - n)); + } else if (n == 0){ + return x; + } else { + return ( (((__CLC_U_GENTYPE)x) >> -n) | (x << (__CLC_GENSIZE + n)) ); + } +#else + //XXX: There's a lot of __builtin_astype calls to cast everything to + // unsigned ... This should be improved so that if __CLC_GENTYPE==__CLC_U_GENTYPE, no + // casts are required. + + __CLC_U_GENTYPE x_1 = __builtin_astype(x, __CLC_U_GENTYPE); + + //XXX: Is (__CLC_U_GENTYPE >> S__CLC_GENTYPE) | (__CLC_U_GENTYPE << S__CLC_GENTYPE) legal? + // If so, then combine the amt and shifts into a single set of statements + + __CLC_U_GENTYPE amt; + amt = (n < (__CLC_GENTYPE)0 ? __builtin_astype((__CLC_GENTYPE)0-n, __CLC_U_GENTYPE) : (__CLC_U_GENTYPE)0); + x_1 = (x_1 >> amt) | (x_1 << ((__CLC_U_GENTYPE)__CLC_GENSIZE - amt)); + + amt = (n < (__CLC_GENTYPE)0 ? (__CLC_U_GENTYPE)0 : __builtin_astype(n, __CLC_U_GENTYPE)); + x_1 = (x_1 << amt) | (x_1 >> ((__CLC_U_GENTYPE)__CLC_GENSIZE - amt)); + + return __builtin_astype(x_1, __CLC_GENTYPE); +#endif +} diff --git a/libclc/generic/lib/integer/sub_sat.cl b/libclc/generic/lib/integer/sub_sat.cl new file mode 100644 index 0000000000000000000000000000000000000000..6b42cc86a74cd519dcb57313313674715e1b057f --- /dev/null +++ b/libclc/generic/lib/integer/sub_sat.cl @@ -0,0 +1,53 @@ +#include <clc/clc.h> +#include "../clcmacro.h" + +// From sub_sat.ll +_CLC_DECL char __clc_sub_sat_s8(char, char); +_CLC_DECL uchar __clc_sub_sat_u8(uchar, uchar); +_CLC_DECL short __clc_sub_sat_s16(short, short); +_CLC_DECL ushort __clc_sub_sat_u16(ushort, ushort); +_CLC_DECL int __clc_sub_sat_s32(int, int); +_CLC_DECL uint __clc_sub_sat_u32(uint, uint); +_CLC_DECL long __clc_sub_sat_s64(long, long); +_CLC_DECL ulong __clc_sub_sat_u64(ulong, ulong); + +_CLC_OVERLOAD _CLC_DEF char sub_sat(char x, char y) { + return __clc_sub_sat_s8(x, y); +} + +_CLC_OVERLOAD _CLC_DEF uchar sub_sat(uchar x, uchar y) { + return __clc_sub_sat_u8(x, y); +} + +_CLC_OVERLOAD _CLC_DEF short sub_sat(short x, short y) { + return __clc_sub_sat_s16(x, y); +} + +_CLC_OVERLOAD _CLC_DEF ushort sub_sat(ushort x, ushort y) { + return __clc_sub_sat_u16(x, y); +} + +_CLC_OVERLOAD _CLC_DEF int sub_sat(int x, int y) { + return __clc_sub_sat_s32(x, y); +} + +_CLC_OVERLOAD _CLC_DEF uint sub_sat(uint x, uint y) { + return __clc_sub_sat_u32(x, y); +} + +_CLC_OVERLOAD _CLC_DEF long sub_sat(long x, long y) { + return __clc_sub_sat_s64(x, y); +} + +_CLC_OVERLOAD _CLC_DEF ulong sub_sat(ulong x, ulong y) { + return __clc_sub_sat_u64(x, y); +} + +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, char, sub_sat, char, char) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uchar, sub_sat, uchar, uchar) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, short, sub_sat, short, short) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ushort, sub_sat, ushort, ushort) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, int, sub_sat, int, int) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uint, sub_sat, uint, uint) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, long, sub_sat, long, long) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ulong, sub_sat, ulong, ulong) diff --git a/libclc/generic/lib/integer/sub_sat_if.ll b/libclc/generic/lib/integer/sub_sat_if.ll new file mode 100644 index 0000000000000000000000000000000000000000..7252574b5b8e5638480de0e0ec89591441b48787 --- /dev/null +++ b/libclc/generic/lib/integer/sub_sat_if.ll @@ -0,0 +1,55 @@ +declare i8 @__clc_sub_sat_impl_s8(i8 %x, i8 %y) + +define i8 @__clc_sub_sat_s8(i8 %x, i8 %y) nounwind readnone alwaysinline { + %call = call i8 @__clc_sub_sat_impl_s8(i8 %x, i8 %y) + ret i8 %call +} + +declare i8 @__clc_sub_sat_impl_u8(i8 %x, i8 %y) + +define i8 @__clc_sub_sat_u8(i8 %x, i8 %y) nounwind readnone alwaysinline { + %call = call i8 @__clc_sub_sat_impl_u8(i8 %x, i8 %y) + ret i8 %call +} + +declare i16 @__clc_sub_sat_impl_s16(i16 %x, i16 %y) + +define i16 @__clc_sub_sat_s16(i16 %x, i16 %y) nounwind readnone alwaysinline { + %call = call i16 @__clc_sub_sat_impl_s16(i16 %x, i16 %y) + ret i16 %call +} + +declare i16 @__clc_sub_sat_impl_u16(i16 %x, i16 %y) + +define i16 @__clc_sub_sat_u16(i16 %x, i16 %y) nounwind readnone alwaysinline { + %call = call i16 @__clc_sub_sat_impl_u16(i16 %x, i16 %y) + ret i16 %call +} + +declare i32 @__clc_sub_sat_impl_s32(i32 %x, i32 %y) + +define i32 @__clc_sub_sat_s32(i32 %x, i32 %y) nounwind readnone alwaysinline { + %call = call i32 @__clc_sub_sat_impl_s32(i32 %x, i32 %y) + ret i32 %call +} + +declare i32 @__clc_sub_sat_impl_u32(i32 %x, i32 %y) + +define i32 @__clc_sub_sat_u32(i32 %x, i32 %y) nounwind readnone alwaysinline { + %call = call i32 @__clc_sub_sat_impl_u32(i32 %x, i32 %y) + ret i32 %call +} + +declare i64 @__clc_sub_sat_impl_s64(i64 %x, i64 %y) + +define i64 @__clc_sub_sat_s64(i64 %x, i64 %y) nounwind readnone alwaysinline { + %call = call i64 @__clc_sub_sat_impl_s64(i64 %x, i64 %y) + ret i64 %call +} + +declare i64 @__clc_sub_sat_impl_u64(i64 %x, i64 %y) + +define i64 @__clc_sub_sat_u64(i64 %x, i64 %y) nounwind readnone alwaysinline { + %call = call i64 @__clc_sub_sat_impl_u64(i64 %x, i64 %y) + ret i64 %call +} diff --git a/libclc/generic/lib/integer/sub_sat_impl.ll b/libclc/generic/lib/integer/sub_sat_impl.ll new file mode 100644 index 0000000000000000000000000000000000000000..e82b632f43b41736c1fab2fa4593db311726467a --- /dev/null +++ b/libclc/generic/lib/integer/sub_sat_impl.ll @@ -0,0 +1,83 @@ +declare {i8, i1} @llvm.ssub.with.overflow.i8(i8, i8) +declare {i8, i1} @llvm.usub.with.overflow.i8(i8, i8) + +define i8 @__clc_sub_sat_impl_s8(i8 %x, i8 %y) nounwind readnone alwaysinline { + %call = call {i8, i1} @llvm.ssub.with.overflow.i8(i8 %x, i8 %y) + %res = extractvalue {i8, i1} %call, 0 + %over = extractvalue {i8, i1} %call, 1 + %x.msb = ashr i8 %x, 7 + %x.limit = xor i8 %x.msb, 127 + %sat = select i1 %over, i8 %x.limit, i8 %res + ret i8 %sat +} + +define i8 @__clc_sub_sat_impl_u8(i8 %x, i8 %y) nounwind readnone alwaysinline { + %call = call {i8, i1} @llvm.usub.with.overflow.i8(i8 %x, i8 %y) + %res = extractvalue {i8, i1} %call, 0 + %over = extractvalue {i8, i1} %call, 1 + %sat = select i1 %over, i8 0, i8 %res + ret i8 %sat +} + +declare {i16, i1} @llvm.ssub.with.overflow.i16(i16, i16) +declare {i16, i1} @llvm.usub.with.overflow.i16(i16, i16) + +define i16 @__clc_sub_sat_impl_s16(i16 %x, i16 %y) nounwind readnone alwaysinline { + %call = call {i16, i1} @llvm.ssub.with.overflow.i16(i16 %x, i16 %y) + %res = extractvalue {i16, i1} %call, 0 + %over = extractvalue {i16, i1} %call, 1 + %x.msb = ashr i16 %x, 15 + %x.limit = xor i16 %x.msb, 32767 + %sat = select i1 %over, i16 %x.limit, i16 %res + ret i16 %sat +} + +define i16 @__clc_sub_sat_impl_u16(i16 %x, i16 %y) nounwind readnone alwaysinline { + %call = call {i16, i1} @llvm.usub.with.overflow.i16(i16 %x, i16 %y) + %res = extractvalue {i16, i1} %call, 0 + %over = extractvalue {i16, i1} %call, 1 + %sat = select i1 %over, i16 0, i16 %res + ret i16 %sat +} + +declare {i32, i1} @llvm.ssub.with.overflow.i32(i32, i32) +declare {i32, i1} @llvm.usub.with.overflow.i32(i32, i32) + +define i32 @__clc_sub_sat_impl_s32(i32 %x, i32 %y) nounwind readnone alwaysinline { + %call = call {i32, i1} @llvm.ssub.with.overflow.i32(i32 %x, i32 %y) + %res = extractvalue {i32, i1} %call, 0 + %over = extractvalue {i32, i1} %call, 1 + %x.msb = ashr i32 %x, 31 + %x.limit = xor i32 %x.msb, 2147483647 + %sat = select i1 %over, i32 %x.limit, i32 %res + ret i32 %sat +} + +define i32 @__clc_sub_sat_impl_u32(i32 %x, i32 %y) nounwind readnone alwaysinline { + %call = call {i32, i1} @llvm.usub.with.overflow.i32(i32 %x, i32 %y) + %res = extractvalue {i32, i1} %call, 0 + %over = extractvalue {i32, i1} %call, 1 + %sat = select i1 %over, i32 0, i32 %res + ret i32 %sat +} + +declare {i64, i1} @llvm.ssub.with.overflow.i64(i64, i64) +declare {i64, i1} @llvm.usub.with.overflow.i64(i64, i64) + +define i64 @__clc_sub_sat_impl_s64(i64 %x, i64 %y) nounwind readnone alwaysinline { + %call = call {i64, i1} @llvm.ssub.with.overflow.i64(i64 %x, i64 %y) + %res = extractvalue {i64, i1} %call, 0 + %over = extractvalue {i64, i1} %call, 1 + %x.msb = ashr i64 %x, 63 + %x.limit = xor i64 %x.msb, 9223372036854775807 + %sat = select i1 %over, i64 %x.limit, i64 %res + ret i64 %sat +} + +define i64 @__clc_sub_sat_impl_u64(i64 %x, i64 %y) nounwind readnone alwaysinline { + %call = call {i64, i1} @llvm.usub.with.overflow.i64(i64 %x, i64 %y) + %res = extractvalue {i64, i1} %call, 0 + %over = extractvalue {i64, i1} %call, 1 + %sat = select i1 %over, i64 0, i64 %res + ret i64 %sat +} diff --git a/libclc/generic/lib/integer/upsample.cl b/libclc/generic/lib/integer/upsample.cl new file mode 100644 index 0000000000000000000000000000000000000000..da77315f8f9344a38bf0adcbdeec00fd4dbf6f14 --- /dev/null +++ b/libclc/generic/lib/integer/upsample.cl @@ -0,0 +1,34 @@ +#include <clc/clc.h> + +#define __CLC_UPSAMPLE_IMPL(BGENTYPE, GENTYPE, UGENTYPE, GENSIZE) \ + _CLC_OVERLOAD _CLC_DEF BGENTYPE upsample(GENTYPE hi, UGENTYPE lo){ \ + return ((BGENTYPE)hi << GENSIZE) | lo; \ + } \ + _CLC_OVERLOAD _CLC_DEF BGENTYPE##2 upsample(GENTYPE##2 hi, UGENTYPE##2 lo){ \ + return (BGENTYPE##2){upsample(hi.s0, lo.s0), upsample(hi.s1, lo.s1)}; \ + } \ + _CLC_OVERLOAD _CLC_DEF BGENTYPE##3 upsample(GENTYPE##3 hi, UGENTYPE##3 lo){ \ + return (BGENTYPE##3){upsample(hi.s0, lo.s0), upsample(hi.s1, lo.s1), upsample(hi.s2, lo.s2)}; \ + } \ + _CLC_OVERLOAD _CLC_DEF BGENTYPE##4 upsample(GENTYPE##4 hi, UGENTYPE##4 lo){ \ + return (BGENTYPE##4){upsample(hi.lo, lo.lo), upsample(hi.hi, lo.hi)}; \ + } \ + _CLC_OVERLOAD _CLC_DEF BGENTYPE##8 upsample(GENTYPE##8 hi, UGENTYPE##8 lo){ \ + return (BGENTYPE##8){upsample(hi.lo, lo.lo), upsample(hi.hi, lo.hi)}; \ + } \ + _CLC_OVERLOAD _CLC_DEF BGENTYPE##16 upsample(GENTYPE##16 hi, UGENTYPE##16 lo){ \ + return (BGENTYPE##16){upsample(hi.lo, lo.lo), upsample(hi.hi, lo.hi)}; \ + } \ + +#define __CLC_UPSAMPLE_TYPES() \ + __CLC_UPSAMPLE_IMPL(short, char, uchar, 8) \ + __CLC_UPSAMPLE_IMPL(ushort, uchar, uchar, 8) \ + __CLC_UPSAMPLE_IMPL(int, short, ushort, 16) \ + __CLC_UPSAMPLE_IMPL(uint, ushort, ushort, 16) \ + __CLC_UPSAMPLE_IMPL(long, int, uint, 32) \ + __CLC_UPSAMPLE_IMPL(ulong, uint, uint, 32) \ + +__CLC_UPSAMPLE_TYPES() + +#undef __CLC_UPSAMPLE_TYPES +#undef __CLC_UPSAMPLE_IMPL diff --git a/libclc/generic/lib/math/atan.cl b/libclc/generic/lib/math/atan.cl new file mode 100644 index 0000000000000000000000000000000000000000..fa3633cef7480fb8fcb5d3c9f890da179bbf7fa4 --- /dev/null +++ b/libclc/generic/lib/math/atan.cl @@ -0,0 +1,183 @@ +/* + * Copyright (c) 2014 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "math.h" +#include "../clcmacro.h" + +#include <clc/clc.h> + +_CLC_OVERLOAD _CLC_DEF float atan(float x) +{ + const float piby2 = 1.5707963267948966f; // 0x3ff921fb54442d18 + + uint ux = as_uint(x); + uint aux = ux & EXSIGNBIT_SP32; + uint sx = ux ^ aux; + + float spiby2 = as_float(sx | as_uint(piby2)); + + float v = as_float(aux); + + // Return for NaN + float ret = x; + + // 2^26 <= |x| <= Inf => atan(x) is close to piby2 + ret = aux <= PINFBITPATT_SP32 ? spiby2 : ret; + + // Reduce arguments 2^-19 <= |x| < 2^26 + + // 39/16 <= x < 2^26 + x = -MATH_RECIP(v); + float c = 1.57079632679489655800f; // atan(infinity) + + // 19/16 <= x < 39/16 + int l = aux < 0x401c0000; + float xx = MATH_DIVIDE(v - 1.5f, mad(v, 1.5f, 1.0f)); + x = l ? xx : x; + c = l ? 9.82793723247329054082e-01f : c; // atan(1.5) + + // 11/16 <= x < 19/16 + l = aux < 0x3f980000U; + xx = MATH_DIVIDE(v - 1.0f, 1.0f + v); + x = l ? xx : x; + c = l ? 7.85398163397448278999e-01f : c; // atan(1) + + // 7/16 <= x < 11/16 + l = aux < 0x3f300000; + xx = MATH_DIVIDE(mad(v, 2.0f, -1.0f), 2.0f + v); + x = l ? xx : x; + c = l ? 4.63647609000806093515e-01f : c; // atan(0.5) + + // 2^-19 <= x < 7/16 + l = aux < 0x3ee00000; + x = l ? v : x; + c = l ? 0.0f : c; + + // Core approximation: Remez(2,2) on [-7/16,7/16] + + float s = x * x; + float a = mad(s, + mad(s, 0.470677934286149214138357545549e-2f, 0.192324546402108583211697690500f), + 0.296528598819239217902158651186f); + + float b = mad(s, + mad(s, 0.299309699959659728404442796915f, 0.111072499995399550138837673349e1f), + 0.889585796862432286486651434570f); + + float q = x * s * MATH_DIVIDE(a, b); + + float z = c - (q - x); + float zs = as_float(sx | as_uint(z)); + + ret = aux < 0x4c800000 ? zs : ret; + + // |x| < 2^-19 + ret = aux < 0x36000000 ? as_float(ux) : ret; + return ret; +} + +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, atan, float); + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + + +_CLC_OVERLOAD _CLC_DEF double atan(double x) +{ + const double piby2 = 1.5707963267948966e+00; // 0x3ff921fb54442d18 + + double v = fabs(x); + + // 2^56 > v > 39/16 + double a = -1.0; + double b = v; + // (chi + clo) = arctan(infinity) + double chi = 1.57079632679489655800e+00; + double clo = 6.12323399573676480327e-17; + + double ta = v - 1.5; + double tb = 1.0 + 1.5 * v; + int l = v <= 0x1.38p+1; // 39/16 > v > 19/16 + a = l ? ta : a; + b = l ? tb : b; + // (chi + clo) = arctan(1.5) + chi = l ? 9.82793723247329054082e-01 : chi; + clo = l ? 1.39033110312309953701e-17 : clo; + + ta = v - 1.0; + tb = 1.0 + v; + l = v <= 0x1.3p+0; // 19/16 > v > 11/16 + a = l ? ta : a; + b = l ? tb : b; + // (chi + clo) = arctan(1.) + chi = l ? 7.85398163397448278999e-01 : chi; + clo = l ? 3.06161699786838240164e-17 : clo; + + ta = 2.0 * v - 1.0; + tb = 2.0 + v; + l = v <= 0x1.6p-1; // 11/16 > v > 7/16 + a = l ? ta : a; + b = l ? tb : b; + // (chi + clo) = arctan(0.5) + chi = l ? 4.63647609000806093515e-01 : chi; + clo = l ? 2.26987774529616809294e-17 : clo; + + l = v <= 0x1.cp-2; // v < 7/16 + a = l ? v : a; + b = l ? 1.0 : b;; + chi = l ? 0.0 : chi; + clo = l ? 0.0 : clo; + + // Core approximation: Remez(4,4) on [-7/16,7/16] + double r = a / b; + double s = r * r; + double qn = fma(s, + fma(s, + fma(s, + fma(s, 0.142316903342317766e-3, + 0.304455919504853031e-1), + 0.220638780716667420e0), + 0.447677206805497472e0), + 0.268297920532545909e0); + + double qd = fma(s, + fma(s, + fma(s, + fma(s, 0.389525873944742195e-1, + 0.424602594203847109e0), + 0.141254259931958921e1), + 0.182596787737507063e1), + 0.804893761597637733e0); + + double q = r * s * qn / qd; + r = chi - ((q - clo) - r); + + double z = isnan(x) ? x : piby2; + z = v <= 0x1.0p+56 ? r : z; + z = v < 0x1.0p-26 ? v : z; + return x == v ? z : -z; +} + +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, atan, double); + +#endif // cl_khr_fp64 diff --git a/libclc/generic/lib/math/atan2.cl b/libclc/generic/lib/math/atan2.cl new file mode 100644 index 0000000000000000000000000000000000000000..9e5fb587d42235cb3fc756dd0524c978fbe2f9f6 --- /dev/null +++ b/libclc/generic/lib/math/atan2.cl @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2014 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "math.h" +#include "../clcmacro.h" + +#include <clc/clc.h> + +_CLC_OVERLOAD _CLC_DEF float atan2(float y, float x) +{ + const float pi = 0x1.921fb6p+1f; + const float piby2 = 0x1.921fb6p+0f; + const float piby4 = 0x1.921fb6p-1f; + const float threepiby4 = 0x1.2d97c8p+1f; + + float ax = fabs(x); + float ay = fabs(y); + float v = min(ax, ay); + float u = max(ax, ay); + + // Scale since u could be large, as in "regular" divide + float s = u > 0x1.0p+96f ? 0x1.0p-32f : 1.0f; + float vbyu = s * MATH_DIVIDE(v, s*u); + + float vbyu2 = vbyu * vbyu; + +#define USE_2_2_APPROXIMATION +#if defined USE_2_2_APPROXIMATION + float p = mad(vbyu2, mad(vbyu2, -0x1.7e1f78p-9f, -0x1.7d1b98p-3f), -0x1.5554d0p-2f) * vbyu2 * vbyu; + float q = mad(vbyu2, mad(vbyu2, 0x1.1a714cp-2f, 0x1.287c56p+0f), 1.0f); +#else + float p = mad(vbyu2, mad(vbyu2, -0x1.55cd22p-5f, -0x1.26cf76p-2f), -0x1.55554ep-2f) * vbyu2 * vbyu; + float q = mad(vbyu2, mad(vbyu2, mad(vbyu2, 0x1.9f1304p-5f, 0x1.2656fap-1f), 0x1.76b4b8p+0f), 1.0f); +#endif + + // Octant 0 result + float a = mad(p, MATH_RECIP(q), vbyu); + + // Fix up 3 other octants + float at = piby2 - a; + a = ay > ax ? at : a; + at = pi - a; + a = x < 0.0F ? at : a; + + // y == 0 => 0 for x >= 0, pi for x < 0 + at = as_int(x) < 0 ? pi : 0.0f; + a = y == 0.0f ? at : a; + + // if (!FINITE_ONLY()) { + // x and y are +- Inf + at = x > 0.0f ? piby4 : threepiby4; + a = ax == INFINITY & ay == INFINITY ? at : a; + + // x or y is NaN + a = isnan(x) | isnan(y) ? as_float(QNANBITPATT_SP32) : a; + // } + + // Fixup sign and return + return copysign(a, y); +} + +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, atan2, float, float); diff --git a/libclc/generic/lib/math/binary_impl.inc b/libclc/generic/lib/math/binary_impl.inc new file mode 100644 index 0000000000000000000000000000000000000000..c9bf972426723d724a4b3c32d8082b8110c42c78 --- /dev/null +++ b/libclc/generic/lib/math/binary_impl.inc @@ -0,0 +1,22 @@ + +#ifndef __CLC_SCALAR + +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x, __CLC_GENTYPE y) { + return FUNCTION_IMPL(x, y); +} + +#endif + +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x, float y) { + __CLC_GENTYPE vec_y = (__CLC_GENTYPE) (y); + return FUNCTION_IMPL(x, vec_y); +} + +#ifdef cl_khr_fp64 + +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x, double y) { + __CLC_GENTYPE vec_y = (__CLC_GENTYPE) (y); + return FUNCTION_IMPL(x, vec_y); +} + +#endif diff --git a/libclc/generic/lib/math/clc_nextafter.cl b/libclc/generic/lib/math/clc_nextafter.cl new file mode 100644 index 0000000000000000000000000000000000000000..e53837d179fb443154fe8e3cb7a3803ad892a5e6 --- /dev/null +++ b/libclc/generic/lib/math/clc_nextafter.cl @@ -0,0 +1,43 @@ +#include <clc/clc.h> +#include "../clcmacro.h" + +// This file provides OpenCL C implementations of nextafter for targets that +// don't support the clang builtin. + +#define FLT_NAN 0.0f/0.0f + +#define NEXTAFTER(FLOAT_TYPE, UINT_TYPE, NAN, ZERO, NEXTAFTER_ZERO) \ +_CLC_OVERLOAD _CLC_DEF FLOAT_TYPE __clc_nextafter(FLOAT_TYPE x, FLOAT_TYPE y) { \ + union { \ + FLOAT_TYPE f; \ + UINT_TYPE i; \ + } next; \ + if (isnan(x) || isnan(y)) { \ + return NAN; \ + } \ + if (x == y) { \ + return y; \ + } \ + next.f = x; \ + if (x < y) { \ + next.i++; \ + } else { \ + if (next.f == ZERO) { \ + next.i = NEXTAFTER_ZERO; \ + } else { \ + next.i--; \ + } \ + } \ + return next.f; \ +} + +NEXTAFTER(float, uint, FLT_NAN, 0.0f, 0x80000001) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, __clc_nextafter, float, float) + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#define DBL_NAN 0.0/0.0 + +NEXTAFTER(double, ulong, DBL_NAN, 0.0, 0x8000000000000001) +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, __clc_nextafter, double, double) +#endif diff --git a/libclc/generic/lib/math/cos.cl b/libclc/generic/lib/math/cos.cl new file mode 100644 index 0000000000000000000000000000000000000000..bbd96b42bc1249f97f5a8fb7237e43309d3ef9d5 --- /dev/null +++ b/libclc/generic/lib/math/cos.cl @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2014 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include <clc/clc.h> + +#include "math.h" +#include "sincos_helpers.h" +#include "../clcmacro.h" + +_CLC_OVERLOAD _CLC_DEF float cos(float x) +{ + int ix = as_int(x); + int ax = ix & 0x7fffffff; + float dx = as_float(ax); + + float r0, r1; + int regn = argReductionS(&r0, &r1, dx); + + float ss = -sinf_piby4(r0, r1); + float cc = cosf_piby4(r0, r1); + + float c = (regn & 1) != 0 ? ss : cc; + c = as_float(as_int(c) ^ ((regn > 1) << 31)); + + c = ax >= PINFBITPATT_SP32 ? as_float(QNANBITPATT_SP32) : c; + + return c; +} + +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, cos, float); + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +#define __CLC_FUNCTION __clc_cos_intrinsic +#define __CLC_INTRINSIC "llvm.cos" +#include <clc/math/unary_intrin.inc> +#undef __CLC_FUNCTION +#undef __CLC_INTRINSIC + +_CLC_OVERLOAD _CLC_DEF double cos(double x) { + return __clc_cos_intrinsic(x); +} + +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, cos, double); + +#endif diff --git a/libclc/generic/lib/math/exp.cl b/libclc/generic/lib/math/exp.cl new file mode 100644 index 0000000000000000000000000000000000000000..dbf4a930b01d76e94f036415d84e3c05e1904f19 --- /dev/null +++ b/libclc/generic/lib/math/exp.cl @@ -0,0 +1,8 @@ +#include <clc/clc.h> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define __CLC_BODY <exp.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/exp.inc b/libclc/generic/lib/math/exp.inc new file mode 100644 index 0000000000000000000000000000000000000000..525fb59c99674b45ecf78ae04e86223f3b1b2db7 --- /dev/null +++ b/libclc/generic/lib/math/exp.inc @@ -0,0 +1,10 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE exp(__CLC_GENTYPE val) { + // exp(x) = exp2(x * log2(e)) +#if __CLC_FPSIZE == 32 + return exp2(val * M_LOG2E_F); +#elif __CLC_FPSIZE == 64 + return exp2(val * M_LOG2E); +#else +#error unknown _CLC_FPSIZE +#endif +} diff --git a/libclc/generic/lib/math/exp10.cl b/libclc/generic/lib/math/exp10.cl new file mode 100644 index 0000000000000000000000000000000000000000..c8039cb8dedcc9813c0e9ae1a69cd975dedbfeaf --- /dev/null +++ b/libclc/generic/lib/math/exp10.cl @@ -0,0 +1,8 @@ +#include <clc/clc.h> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define __CLC_BODY <exp10.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/exp10.inc b/libclc/generic/lib/math/exp10.inc new file mode 100644 index 0000000000000000000000000000000000000000..a592c19487999a43eca2c0932781203a839a0f45 --- /dev/null +++ b/libclc/generic/lib/math/exp10.inc @@ -0,0 +1,10 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE exp10(__CLC_GENTYPE val) { + // exp10(x) = exp2(x * log2(10)) +#if __CLC_FPSIZE == 32 + return exp2(val * log2(10.0f)); +#elif __CLC_FPSIZE == 64 + return exp2(val * log2(10.0)); +#else +#error unknown _CLC_FPSIZE +#endif +} diff --git a/libclc/generic/lib/math/fmax.cl b/libclc/generic/lib/math/fmax.cl new file mode 100644 index 0000000000000000000000000000000000000000..58583d6767aab89845bf76d882c7782a8fd0da9c --- /dev/null +++ b/libclc/generic/lib/math/fmax.cl @@ -0,0 +1,11 @@ +#include <clc/clc.h> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define FUNCTION __clc_fmax +#define FUNCTION_IMPL(x, y) ((x) < (y) ? (y) : (x)) + +#define __CLC_BODY <binary_impl.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/fmin.cl b/libclc/generic/lib/math/fmin.cl new file mode 100644 index 0000000000000000000000000000000000000000..a61ad4757289b311e504a3b8e37c96685c3347ae --- /dev/null +++ b/libclc/generic/lib/math/fmin.cl @@ -0,0 +1,11 @@ +#include <clc/clc.h> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define FUNCTION __clc_fmin +#define FUNCTION_IMPL(x, y) ((y) < (x) ? (y) : (x)) + +#define __CLC_BODY <binary_impl.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/hypot.cl b/libclc/generic/lib/math/hypot.cl new file mode 100644 index 0000000000000000000000000000000000000000..eca042c9153583831903ea207e642fecf631a224 --- /dev/null +++ b/libclc/generic/lib/math/hypot.cl @@ -0,0 +1,8 @@ +#include <clc/clc.h> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define __CLC_BODY <hypot.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/hypot.inc b/libclc/generic/lib/math/hypot.inc new file mode 100644 index 0000000000000000000000000000000000000000..036cee7e1f065bc90ad8543a891bfb8184279a66 --- /dev/null +++ b/libclc/generic/lib/math/hypot.inc @@ -0,0 +1,3 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE hypot(__CLC_GENTYPE x, __CLC_GENTYPE y) { + return sqrt(x*x + y*y); +} diff --git a/libclc/generic/lib/math/mad.cl b/libclc/generic/lib/math/mad.cl new file mode 100644 index 0000000000000000000000000000000000000000..6c7b90d150d5285793f5769c85f27bbcac29c53d --- /dev/null +++ b/libclc/generic/lib/math/mad.cl @@ -0,0 +1,8 @@ +#include <clc/clc.h> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define __CLC_BODY <mad.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/mad.inc b/libclc/generic/lib/math/mad.inc new file mode 100644 index 0000000000000000000000000000000000000000..d32c7839d1b970f73d9a053ad2734077dd6d2ae7 --- /dev/null +++ b/libclc/generic/lib/math/mad.inc @@ -0,0 +1,3 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE mad(__CLC_GENTYPE a, __CLC_GENTYPE b, __CLC_GENTYPE c) { + return a * b + c; +} diff --git a/libclc/generic/lib/math/math.h b/libclc/generic/lib/math/math.h new file mode 100644 index 0000000000000000000000000000000000000000..53ed38a78a566cc49f2a118251bf848b2d40d5cf --- /dev/null +++ b/libclc/generic/lib/math/math.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#define SNAN 0x001 +#define QNAN 0x002 +#define NINF 0x004 +#define NNOR 0x008 +#define NSUB 0x010 +#define NZER 0x020 +#define PZER 0x040 +#define PSUB 0x080 +#define PNOR 0x100 +#define PINF 0x200 + +#define HAVE_HW_FMA32() (1) +#define HAVE_BITALIGN() (0) +#define HAVE_FAST_FMA32() (0) + +#define MATH_DIVIDE(X, Y) ((X) / (Y)) +#define MATH_RECIP(X) (1.0f / (X)) +#define MATH_SQRT(X) sqrt(X) + +#define SIGNBIT_SP32 0x80000000 +#define EXSIGNBIT_SP32 0x7fffffff +#define EXPBITS_SP32 0x7f800000 +#define MANTBITS_SP32 0x007fffff +#define ONEEXPBITS_SP32 0x3f800000 +#define TWOEXPBITS_SP32 0x40000000 +#define HALFEXPBITS_SP32 0x3f000000 +#define IMPBIT_SP32 0x00800000 +#define QNANBITPATT_SP32 0x7fc00000 +#define INDEFBITPATT_SP32 0xffc00000 +#define PINFBITPATT_SP32 0x7f800000 +#define NINFBITPATT_SP32 0xff800000 +#define EXPBIAS_SP32 127 +#define EXPSHIFTBITS_SP32 23 +#define BIASEDEMIN_SP32 1 +#define EMIN_SP32 -126 +#define BIASEDEMAX_SP32 254 +#define EMAX_SP32 127 +#define LAMBDA_SP32 1.0e30 +#define MANTLENGTH_SP32 24 +#define BASEDIGITS_SP32 7 + +#define ALIGNED(x) __attribute__((aligned(x))) diff --git a/libclc/generic/lib/math/mix.cl b/libclc/generic/lib/math/mix.cl new file mode 100644 index 0000000000000000000000000000000000000000..294f332e67f2d1c0526dd41f5e677f5f3cb2e429 --- /dev/null +++ b/libclc/generic/lib/math/mix.cl @@ -0,0 +1,8 @@ +#include <clc/clc.h> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define __CLC_BODY <mix.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/mix.inc b/libclc/generic/lib/math/mix.inc new file mode 100644 index 0000000000000000000000000000000000000000..1e8b936149bbfcb73bb160ca5f1a8b499e756a04 --- /dev/null +++ b/libclc/generic/lib/math/mix.inc @@ -0,0 +1,9 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE mix(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_GENTYPE a) { + return mad( y - x, a, x ); +} + +#ifndef __CLC_SCALAR +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE mix(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_SCALAR_GENTYPE a) { + return mix(x, y, (__CLC_GENTYPE)a); +} +#endif diff --git a/libclc/generic/lib/math/nextafter.cl b/libclc/generic/lib/math/nextafter.cl new file mode 100644 index 0000000000000000000000000000000000000000..cbe54cd4e2662a7457446c506828aab949952070 --- /dev/null +++ b/libclc/generic/lib/math/nextafter.cl @@ -0,0 +1,12 @@ +#include <clc/clc.h> +#include "../clcmacro.h" + +_CLC_DEFINE_BINARY_BUILTIN(float, nextafter, __builtin_nextafterf, float, float) + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +_CLC_DEFINE_BINARY_BUILTIN(double, nextafter, __builtin_nextafter, double, double) + +#endif diff --git a/libclc/generic/lib/math/pown.cl b/libclc/generic/lib/math/pown.cl new file mode 100644 index 0000000000000000000000000000000000000000..f3b27d4ccab7d6b5c6f6feeb9db1e44750c81c16 --- /dev/null +++ b/libclc/generic/lib/math/pown.cl @@ -0,0 +1,10 @@ +#include <clc/clc.h> +#include "../clcmacro.h" + +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, pown, float, int) + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, pown, double, int) +#endif diff --git a/libclc/generic/lib/math/sin.cl b/libclc/generic/lib/math/sin.cl new file mode 100644 index 0000000000000000000000000000000000000000..ffc4dd1aa037a1c5a55374484aeff176fd0826b5 --- /dev/null +++ b/libclc/generic/lib/math/sin.cl @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2014 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include <clc/clc.h> + +#include "math.h" +#include "sincos_helpers.h" +#include "../clcmacro.h" + +_CLC_OVERLOAD _CLC_DEF float sin(float x) +{ + int ix = as_int(x); + int ax = ix & 0x7fffffff; + float dx = as_float(ax); + + float r0, r1; + int regn = argReductionS(&r0, &r1, dx); + + float ss = sinf_piby4(r0, r1); + float cc = cosf_piby4(r0, r1); + + float s = (regn & 1) != 0 ? cc : ss; + s = as_float(as_int(s) ^ ((regn > 1) << 31) ^ (ix ^ ax)); + + s = ax >= PINFBITPATT_SP32 ? as_float(QNANBITPATT_SP32) : s; + + //Subnormals + s = x == 0.0f ? x : s; + + return s; +} + +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, sin, float); + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +#define __CLC_FUNCTION __clc_sin_intrinsic +#define __CLC_INTRINSIC "llvm.sin" +#include <clc/math/unary_intrin.inc> +#undef __CLC_FUNCTION +#undef __CLC_INTRINSIC + +_CLC_OVERLOAD _CLC_DEF double sin(double x) { + return __clc_sin_intrinsic(x); +} + +_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, sin, double); + +#endif diff --git a/libclc/generic/lib/math/sincos.cl b/libclc/generic/lib/math/sincos.cl new file mode 100644 index 0000000000000000000000000000000000000000..eace5adcf16f0dbf19ed42a1989f98901a50a751 --- /dev/null +++ b/libclc/generic/lib/math/sincos.cl @@ -0,0 +1,8 @@ +#include <clc/clc.h> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define __CLC_BODY <sincos.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/math/sincos.inc b/libclc/generic/lib/math/sincos.inc new file mode 100644 index 0000000000000000000000000000000000000000..e97f0f9641c1cfba6f49cc18e51e9940e5c6a0a1 --- /dev/null +++ b/libclc/generic/lib/math/sincos.inc @@ -0,0 +1,11 @@ +#define __CLC_DECLARE_SINCOS(ADDRSPACE, TYPE) \ + _CLC_OVERLOAD _CLC_DEF TYPE sincos (TYPE x, ADDRSPACE TYPE * cosval) { \ + *cosval = cos(x); \ + return sin(x); \ + } + +__CLC_DECLARE_SINCOS(global, __CLC_GENTYPE) +__CLC_DECLARE_SINCOS(local, __CLC_GENTYPE) +__CLC_DECLARE_SINCOS(private, __CLC_GENTYPE) + +#undef __CLC_DECLARE_SINCOS diff --git a/libclc/generic/lib/math/sincos_helpers.cl b/libclc/generic/lib/math/sincos_helpers.cl new file mode 100644 index 0000000000000000000000000000000000000000..1a5f10c8e651c9a44c7037d906e6986a817518bc --- /dev/null +++ b/libclc/generic/lib/math/sincos_helpers.cl @@ -0,0 +1,308 @@ +/* + * Copyright (c) 2014 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include <clc/clc.h> + +#include "math.h" +#include "sincos_helpers.h" + +uint bitalign(uint hi, uint lo, uint shift) +{ + return (hi << (32 - shift)) | (lo >> shift); +} + +float sinf_piby4(float x, float y) +{ + // Taylor series for sin(x) is x - x^3/3! + x^5/5! - x^7/7! ... + // = x * (1 - x^2/3! + x^4/5! - x^6/7! ... + // = x * f(w) + // where w = x*x and f(w) = (1 - w/3! + w^2/5! - w^3/7! ... + // We use a minimax approximation of (f(w) - 1) / w + // because this produces an expansion in even powers of x. + + const float c1 = -0.1666666666e0f; + const float c2 = 0.8333331876e-2f; + const float c3 = -0.198400874e-3f; + const float c4 = 0.272500015e-5f; + const float c5 = -2.5050759689e-08f; // 0xb2d72f34 + const float c6 = 1.5896910177e-10f; // 0x2f2ec9d3 + + float z = x * x; + float v = z * x; + float r = mad(z, mad(z, mad(z, mad(z, c6, c5), c4), c3), c2); + float ret = x - mad(v, -c1, mad(z, mad(y, 0.5f, -v*r), -y)); + + return ret; +} + +float cosf_piby4(float x, float y) +{ + // Taylor series for cos(x) is 1 - x^2/2! + x^4/4! - x^6/6! ... + // = f(w) + // where w = x*x and f(w) = (1 - w/2! + w^2/4! - w^3/6! ... + // We use a minimax approximation of (f(w) - 1 + w/2) / (w*w) + // because this produces an expansion in even powers of x. + + const float c1 = 0.416666666e-1f; + const float c2 = -0.138888876e-2f; + const float c3 = 0.248006008e-4f; + const float c4 = -0.2730101334e-6f; + const float c5 = 2.0875723372e-09f; // 0x310f74f6 + const float c6 = -1.1359647598e-11f; // 0xad47d74e + + float z = x * x; + float r = z * mad(z, mad(z, mad(z, mad(z, mad(z, c6, c5), c4), c3), c2), c1); + + // if |x| < 0.3 + float qx = 0.0f; + + int ix = as_int(x) & EXSIGNBIT_SP32; + + // 0.78125 > |x| >= 0.3 + float xby4 = as_float(ix - 0x01000000); + qx = (ix >= 0x3e99999a) & (ix <= 0x3f480000) ? xby4 : qx; + + // x > 0.78125 + qx = ix > 0x3f480000 ? 0.28125f : qx; + + float hz = mad(z, 0.5f, -qx); + float a = 1.0f - qx; + float ret = a - (hz - mad(z, r, -x*y)); + return ret; +} + +void fullMulS(float *hi, float *lo, float a, float b, float bh, float bt) +{ + if (HAVE_HW_FMA32()) { + float ph = a * b; + *hi = ph; + *lo = fma(a, b, -ph); + } else { + float ah = as_float(as_uint(a) & 0xfffff000U); + float at = a - ah; + float ph = a * b; + float pt = mad(at, bt, mad(at, bh, mad(ah, bt, mad(ah, bh, -ph)))); + *hi = ph; + *lo = pt; + } +} + +float removePi2S(float *hi, float *lo, float x) +{ + // 72 bits of pi/2 + const float fpiby2_1 = (float) 0xC90FDA / 0x1.0p+23f; + const float fpiby2_1_h = (float) 0xC90 / 0x1.0p+11f; + const float fpiby2_1_t = (float) 0xFDA / 0x1.0p+23f; + + const float fpiby2_2 = (float) 0xA22168 / 0x1.0p+47f; + const float fpiby2_2_h = (float) 0xA22 / 0x1.0p+35f; + const float fpiby2_2_t = (float) 0x168 / 0x1.0p+47f; + + const float fpiby2_3 = (float) 0xC234C4 / 0x1.0p+71f; + const float fpiby2_3_h = (float) 0xC23 / 0x1.0p+59f; + const float fpiby2_3_t = (float) 0x4C4 / 0x1.0p+71f; + + const float twobypi = 0x1.45f306p-1f; + + float fnpi2 = trunc(mad(x, twobypi, 0.5f)); + + // subtract n * pi/2 from x + float rhead, rtail; + fullMulS(&rhead, &rtail, fnpi2, fpiby2_1, fpiby2_1_h, fpiby2_1_t); + float v = x - rhead; + float rem = v + (((x - v) - rhead) - rtail); + + float rhead2, rtail2; + fullMulS(&rhead2, &rtail2, fnpi2, fpiby2_2, fpiby2_2_h, fpiby2_2_t); + v = rem - rhead2; + rem = v + (((rem - v) - rhead2) - rtail2); + + float rhead3, rtail3; + fullMulS(&rhead3, &rtail3, fnpi2, fpiby2_3, fpiby2_3_h, fpiby2_3_t); + v = rem - rhead3; + + *hi = v + ((rem - v) - rhead3); + *lo = -rtail3; + return fnpi2; +} + +int argReductionSmallS(float *r, float *rr, float x) +{ + float fnpi2 = removePi2S(r, rr, x); + return (int)fnpi2 & 0x3; +} + +#define FULL_MUL(A, B, HI, LO) \ + LO = A * B; \ + HI = mul_hi(A, B) + +#define FULL_MAD(A, B, C, HI, LO) \ + LO = ((A) * (B) + (C)); \ + HI = mul_hi(A, B); \ + HI += LO < C + +int argReductionLargeS(float *r, float *rr, float x) +{ + int xe = (int)(as_uint(x) >> 23) - 127; + uint xm = 0x00800000U | (as_uint(x) & 0x7fffffU); + + // 224 bits of 2/PI: . A2F9836E 4E441529 FC2757D1 F534DDC0 DB629599 3C439041 FE5163AB + const uint b6 = 0xA2F9836EU; + const uint b5 = 0x4E441529U; + const uint b4 = 0xFC2757D1U; + const uint b3 = 0xF534DDC0U; + const uint b2 = 0xDB629599U; + const uint b1 = 0x3C439041U; + const uint b0 = 0xFE5163ABU; + + uint p0, p1, p2, p3, p4, p5, p6, p7, c0, c1; + + FULL_MUL(xm, b0, c0, p0); + FULL_MAD(xm, b1, c0, c1, p1); + FULL_MAD(xm, b2, c1, c0, p2); + FULL_MAD(xm, b3, c0, c1, p3); + FULL_MAD(xm, b4, c1, c0, p4); + FULL_MAD(xm, b5, c0, c1, p5); + FULL_MAD(xm, b6, c1, p7, p6); + + uint fbits = 224 + 23 - xe; + + // shift amount to get 2 lsb of integer part at top 2 bits + // min: 25 (xe=18) max: 134 (xe=127) + uint shift = 256U - 2 - fbits; + + // Shift by up to 134/32 = 4 words + int c = shift > 31; + p7 = c ? p6 : p7; + p6 = c ? p5 : p6; + p5 = c ? p4 : p5; + p4 = c ? p3 : p4; + p3 = c ? p2 : p3; + p2 = c ? p1 : p2; + p1 = c ? p0 : p1; + shift -= (-c) & 32; + + c = shift > 31; + p7 = c ? p6 : p7; + p6 = c ? p5 : p6; + p5 = c ? p4 : p5; + p4 = c ? p3 : p4; + p3 = c ? p2 : p3; + p2 = c ? p1 : p2; + shift -= (-c) & 32; + + c = shift > 31; + p7 = c ? p6 : p7; + p6 = c ? p5 : p6; + p5 = c ? p4 : p5; + p4 = c ? p3 : p4; + p3 = c ? p2 : p3; + shift -= (-c) & 32; + + c = shift > 31; + p7 = c ? p6 : p7; + p6 = c ? p5 : p6; + p5 = c ? p4 : p5; + p4 = c ? p3 : p4; + shift -= (-c) & 32; + + // bitalign cannot handle a shift of 32 + c = shift > 0; + shift = 32 - shift; + uint t7 = bitalign(p7, p6, shift); + uint t6 = bitalign(p6, p5, shift); + uint t5 = bitalign(p5, p4, shift); + p7 = c ? t7 : p7; + p6 = c ? t6 : p6; + p5 = c ? t5 : p5; + + // Get 2 lsb of int part and msb of fraction + int i = p7 >> 29; + + // Scoot up 2 more bits so only fraction remains + p7 = bitalign(p7, p6, 30); + p6 = bitalign(p6, p5, 30); + p5 = bitalign(p5, p4, 30); + + // Subtract 1 if msb of fraction is 1, i.e. fraction >= 0.5 + uint flip = i & 1 ? 0xffffffffU : 0U; + uint sign = i & 1 ? 0x80000000U : 0U; + p7 = p7 ^ flip; + p6 = p6 ^ flip; + p5 = p5 ^ flip; + + // Find exponent and shift away leading zeroes and hidden bit + xe = clz(p7) + 1; + shift = 32 - xe; + p7 = bitalign(p7, p6, shift); + p6 = bitalign(p6, p5, shift); + + // Most significant part of fraction + float q1 = as_float(sign | ((127 - xe) << 23) | (p7 >> 9)); + + // Shift out bits we captured on q1 + p7 = bitalign(p7, p6, 32-23); + + // Get 24 more bits of fraction in another float, there are not long strings of zeroes here + int xxe = clz(p7) + 1; + p7 = bitalign(p7, p6, 32-xxe); + float q0 = as_float(sign | ((127 - (xe + 23 + xxe)) << 23) | (p7 >> 9)); + + // At this point, the fraction q1 + q0 is correct to at least 48 bits + // Now we need to multiply the fraction by pi/2 + // This loses us about 4 bits + // pi/2 = C90 FDA A22 168 C23 4C4 + + const float pio2h = (float)0xc90fda / 0x1.0p+23f; + const float pio2hh = (float)0xc90 / 0x1.0p+11f; + const float pio2ht = (float)0xfda / 0x1.0p+23f; + const float pio2t = (float)0xa22168 / 0x1.0p+47f; + + float rh, rt; + + if (HAVE_HW_FMA32()) { + rh = q1 * pio2h; + rt = fma(q0, pio2h, fma(q1, pio2t, fma(q1, pio2h, -rh))); + } else { + float q1h = as_float(as_uint(q1) & 0xfffff000); + float q1t = q1 - q1h; + rh = q1 * pio2h; + rt = mad(q1t, pio2ht, mad(q1t, pio2hh, mad(q1h, pio2ht, mad(q1h, pio2hh, -rh)))); + rt = mad(q0, pio2h, mad(q1, pio2t, rt)); + } + + float t = rh + rt; + rt = rt - (t - rh); + + *r = t; + *rr = rt; + return ((i >> 1) + (i & 1)) & 0x3; +} + +int argReductionS(float *r, float *rr, float x) +{ + if (x < 0x1.0p+23f) + return argReductionSmallS(r, rr, x); + else + return argReductionLargeS(r, rr, x); +} + diff --git a/libclc/generic/lib/math/sincos_helpers.h b/libclc/generic/lib/math/sincos_helpers.h new file mode 100644 index 0000000000000000000000000000000000000000..f89c19f6874cec7da15dfecedfc3ebd60909007c --- /dev/null +++ b/libclc/generic/lib/math/sincos_helpers.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2014 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +float sinf_piby4(float x, float y); +float cosf_piby4(float x, float y); +int argReductionS(float *r, float *rr, float x); diff --git a/libclc/generic/lib/relational/all.cl b/libclc/generic/lib/relational/all.cl new file mode 100644 index 0000000000000000000000000000000000000000..607d7a9c68c488ed226d6ac97803d644db6c5776 --- /dev/null +++ b/libclc/generic/lib/relational/all.cl @@ -0,0 +1,29 @@ +#include <clc/clc.h> + +#define _CLC_ALL(v) (((v) >> ((sizeof(v) * 8) - 1)) & 0x1) +#define _CLC_ALL2(v) (_CLC_ALL((v).s0) & _CLC_ALL((v).s1)) +#define _CLC_ALL3(v) (_CLC_ALL2((v)) & _CLC_ALL((v).s2)) +#define _CLC_ALL4(v) (_CLC_ALL3((v)) & _CLC_ALL((v).s3)) +#define _CLC_ALL8(v) (_CLC_ALL4((v)) & _CLC_ALL((v).s4) & _CLC_ALL((v).s5) \ + & _CLC_ALL((v).s6) & _CLC_ALL((v).s7)) +#define _CLC_ALL16(v) (_CLC_ALL8((v)) & _CLC_ALL((v).s8) & _CLC_ALL((v).s9) \ + & _CLC_ALL((v).sA) & _CLC_ALL((v).sB) \ + & _CLC_ALL((v).sC) & _CLC_ALL((v).sD) \ + & _CLC_ALL((v).sE) & _CLC_ALL((v).sf)) + + +#define ALL_ID(TYPE) \ + _CLC_OVERLOAD _CLC_DEF int all(TYPE v) + +#define ALL_VECTORIZE(TYPE) \ + ALL_ID(TYPE) { return _CLC_ALL(v); } \ + ALL_ID(TYPE##2) { return _CLC_ALL2(v); } \ + ALL_ID(TYPE##3) { return _CLC_ALL3(v); } \ + ALL_ID(TYPE##4) { return _CLC_ALL4(v); } \ + ALL_ID(TYPE##8) { return _CLC_ALL8(v); } \ + ALL_ID(TYPE##16) { return _CLC_ALL16(v); } + +ALL_VECTORIZE(char) +ALL_VECTORIZE(short) +ALL_VECTORIZE(int) +ALL_VECTORIZE(long) diff --git a/libclc/generic/lib/relational/any.cl b/libclc/generic/lib/relational/any.cl new file mode 100644 index 0000000000000000000000000000000000000000..4d372102021b96ecfd8a920a88f599e4106f8ded --- /dev/null +++ b/libclc/generic/lib/relational/any.cl @@ -0,0 +1,30 @@ +#include <clc/clc.h> + +#define _CLC_ANY(v) (((v) >> ((sizeof(v) * 8) - 1)) & 0x1) +#define _CLC_ANY2(v) (_CLC_ANY((v).s0) | _CLC_ANY((v).s1)) +#define _CLC_ANY3(v) (_CLC_ANY2((v)) | _CLC_ANY((v).s2)) +#define _CLC_ANY4(v) (_CLC_ANY3((v)) | _CLC_ANY((v).s3)) +#define _CLC_ANY8(v) (_CLC_ANY4((v)) | _CLC_ANY((v).s4) | _CLC_ANY((v).s5) \ + | _CLC_ANY((v).s6) | _CLC_ANY((v).s7)) +#define _CLC_ANY16(v) (_CLC_ANY8((v)) | _CLC_ANY((v).s8) | _CLC_ANY((v).s9) \ + | _CLC_ANY((v).sA) | _CLC_ANY((v).sB) \ + | _CLC_ANY((v).sC) | _CLC_ANY((v).sD) \ + | _CLC_ANY((v).sE) | _CLC_ANY((v).sf)) + + +#define ANY_ID(TYPE) \ + _CLC_OVERLOAD _CLC_DEF int any(TYPE v) + +#define ANY_VECTORIZE(TYPE) \ + ANY_ID(TYPE) { return _CLC_ANY(v); } \ + ANY_ID(TYPE##2) { return _CLC_ANY2(v); } \ + ANY_ID(TYPE##3) { return _CLC_ANY3(v); } \ + ANY_ID(TYPE##4) { return _CLC_ANY4(v); } \ + ANY_ID(TYPE##8) { return _CLC_ANY8(v); } \ + ANY_ID(TYPE##16) { return _CLC_ANY16(v); } + +ANY_VECTORIZE(char) +ANY_VECTORIZE(short) +ANY_VECTORIZE(int) +ANY_VECTORIZE(long) + diff --git a/libclc/generic/lib/relational/isequal.cl b/libclc/generic/lib/relational/isequal.cl new file mode 100644 index 0000000000000000000000000000000000000000..9d79ba6b3dbee55d2c3cbbe4e41434ded40fa163 --- /dev/null +++ b/libclc/generic/lib/relational/isequal.cl @@ -0,0 +1,30 @@ +#include <clc/clc.h> + +#define _CLC_DEFINE_ISEQUAL(RET_TYPE, FUNCTION, ARG1_TYPE, ARG2_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y) { \ + return (x == y); \ +} \ + +_CLC_DEFINE_ISEQUAL(int, isequal, float, float) +_CLC_DEFINE_ISEQUAL(int2, isequal, float2, float2) +_CLC_DEFINE_ISEQUAL(int3, isequal, float3, float3) +_CLC_DEFINE_ISEQUAL(int4, isequal, float4, float4) +_CLC_DEFINE_ISEQUAL(int8, isequal, float8, float8) +_CLC_DEFINE_ISEQUAL(int16, isequal, float16, float16) + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +// The scalar version of isequal(double) returns an int, but the vector versions +// return long. +_CLC_DEFINE_ISEQUAL(int, isequal, double, double) +_CLC_DEFINE_ISEQUAL(long2, isequal, double2, double2) +_CLC_DEFINE_ISEQUAL(long3, isequal, double3, double3) +_CLC_DEFINE_ISEQUAL(long4, isequal, double4, double4) +_CLC_DEFINE_ISEQUAL(long8, isequal, double8, double8) +_CLC_DEFINE_ISEQUAL(long16, isequal, double16, double16) + +#endif + +#undef _CLC_DEFINE_ISEQUAL \ No newline at end of file diff --git a/libclc/generic/lib/relational/isgreater.cl b/libclc/generic/lib/relational/isgreater.cl new file mode 100644 index 0000000000000000000000000000000000000000..79456e56d517f9e020e34fcadedc1d9294edf2a4 --- /dev/null +++ b/libclc/generic/lib/relational/isgreater.cl @@ -0,0 +1,22 @@ +#include <clc/clc.h> +#include "relational.h" + +//Note: It would be nice to use __builtin_isgreater with vector inputs, but it seems to only take scalar values as +// input, which will produce incorrect output for vector input types. + +_CLC_DEFINE_RELATIONAL_BINARY(int, isgreater, __builtin_isgreater, float, float) + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +// The scalar version of isgreater(double, double) returns an int, but the vector versions +// return long. + +_CLC_DEF _CLC_OVERLOAD int isgreater(double x, double y){ + return __builtin_isgreater(x, y); +} + +_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(long, isgreater, double, double) + +#endif diff --git a/libclc/generic/lib/relational/isgreaterequal.cl b/libclc/generic/lib/relational/isgreaterequal.cl new file mode 100644 index 0000000000000000000000000000000000000000..2d5ebe5770c7ce52a8b897fc8a3abe22affcd450 --- /dev/null +++ b/libclc/generic/lib/relational/isgreaterequal.cl @@ -0,0 +1,22 @@ +#include <clc/clc.h> +#include "relational.h" + +//Note: It would be nice to use __builtin_isgreaterequal with vector inputs, but it seems to only take scalar values as +// input, which will produce incorrect output for vector input types. + +_CLC_DEFINE_RELATIONAL_BINARY(int, isgreaterequal, __builtin_isgreaterequal, float, float) + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +// The scalar version of isgreaterequal(double, double) returns an int, but the vector versions +// return long. + +_CLC_DEF _CLC_OVERLOAD int isgreaterequal(double x, double y){ + return __builtin_isgreaterequal(x, y); +} + +_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(long, isgreaterequal, double, double) + +#endif diff --git a/libclc/generic/lib/relational/isless.cl b/libclc/generic/lib/relational/isless.cl new file mode 100644 index 0000000000000000000000000000000000000000..56a3e1329b48feb059df72525070d5c1f11d1cb8 --- /dev/null +++ b/libclc/generic/lib/relational/isless.cl @@ -0,0 +1,22 @@ +#include <clc/clc.h> +#include "relational.h" + +//Note: It would be nice to use __builtin_isless with vector inputs, but it seems to only take scalar values as +// input, which will produce incorrect output for vector input types. + +_CLC_DEFINE_RELATIONAL_BINARY(int, isless, __builtin_isless, float, float) + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +// The scalar version of isless(double, double) returns an int, but the vector versions +// return long. + +_CLC_DEF _CLC_OVERLOAD int isless(double x, double y){ + return __builtin_isless(x, y); +} + +_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(long, isless, double, double) + +#endif diff --git a/libclc/generic/lib/relational/islessequal.cl b/libclc/generic/lib/relational/islessequal.cl new file mode 100644 index 0000000000000000000000000000000000000000..259c307da4532ad7aa179e71b8ce590b01a9d388 --- /dev/null +++ b/libclc/generic/lib/relational/islessequal.cl @@ -0,0 +1,22 @@ +#include <clc/clc.h> +#include "relational.h" + +//Note: It would be nice to use __builtin_islessequal with vector inputs, but it seems to only take scalar values as +// input, which will produce incorrect output for vector input types. + +_CLC_DEFINE_RELATIONAL_BINARY(int, islessequal, __builtin_islessequal, float, float) + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +// The scalar version of islessequal(double, double) returns an int, but the vector versions +// return long. + +_CLC_DEF _CLC_OVERLOAD int islessequal(double x, double y){ + return __builtin_islessequal(x, y); +} + +_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(long, islessequal, double, double) + +#endif diff --git a/libclc/generic/lib/relational/isnan.cl b/libclc/generic/lib/relational/isnan.cl new file mode 100644 index 0000000000000000000000000000000000000000..f82dc5d59da5272232de5f410c2d6a05c5b927aa --- /dev/null +++ b/libclc/generic/lib/relational/isnan.cl @@ -0,0 +1,18 @@ +#include <clc/clc.h> +#include "relational.h" + +_CLC_DEFINE_RELATIONAL_UNARY(int, isnan, __builtin_isnan, float) + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +// The scalar version of isnan(double) returns an int, but the vector versions +// return long. +_CLC_DEF _CLC_OVERLOAD int isnan(double x) { + return __builtin_isnan(x); +} + +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(long, isnan, double) + +#endif diff --git a/libclc/generic/lib/relational/isnotequal.cl b/libclc/generic/lib/relational/isnotequal.cl new file mode 100644 index 0000000000000000000000000000000000000000..787fd8d53c20611690669e8df2371be8aa4f34b8 --- /dev/null +++ b/libclc/generic/lib/relational/isnotequal.cl @@ -0,0 +1,23 @@ +#include <clc/clc.h> +#include "relational.h" + +#define _CLC_DEFINE_ISNOTEQUAL(RET_TYPE, FUNCTION, ARG1_TYPE, ARG2_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y) { \ + return (x != y); \ +} \ + +_CLC_DEFINE_ISNOTEQUAL(int, isnotequal, float, float) +_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(int, isnotequal, float, float) + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +// The scalar version of isnotequal(double, double) returns an int, but the vector versions +// return long. + +_CLC_DEFINE_ISNOTEQUAL(int, isnotequal, double, double) +_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(long, isnotequal, double, double) + +#endif + +#undef _CLC_DEFINE_ISNOTEQUAL diff --git a/libclc/generic/lib/relational/relational.h b/libclc/generic/lib/relational/relational.h new file mode 100644 index 0000000000000000000000000000000000000000..e492750dacb3291c6d0125847e51955b68d656ca --- /dev/null +++ b/libclc/generic/lib/relational/relational.h @@ -0,0 +1,117 @@ +/* + * Contains relational macros that have to return 1 for scalar and -1 for vector + * when the result is true. + */ + +#define _CLC_DEFINE_RELATIONAL_UNARY_SCALAR(RET_TYPE, FUNCTION, BUILTIN_NAME, ARG_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x){ \ + return BUILTIN_NAME(x); \ +} + +#define _CLC_DEFINE_RELATIONAL_UNARY_VEC2(RET_TYPE, FUNCTION, ARG_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \ + return (RET_TYPE)( (RET_TYPE){FUNCTION(x.lo), FUNCTION(x.hi)} != (RET_TYPE)0); \ +} + +#define _CLC_DEFINE_RELATIONAL_UNARY_VEC3(RET_TYPE, FUNCTION, ARG_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \ + return (RET_TYPE)( (RET_TYPE){FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2)} != (RET_TYPE)0); \ +} + +#define _CLC_DEFINE_RELATIONAL_UNARY_VEC4(RET_TYPE, FUNCTION, ARG_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \ + return (RET_TYPE)( \ + (RET_TYPE){ \ + FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), FUNCTION(x.s3) \ + } != (RET_TYPE)0); \ +} + +#define _CLC_DEFINE_RELATIONAL_UNARY_VEC8(RET_TYPE, FUNCTION, ARG_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \ + return (RET_TYPE)( \ + (RET_TYPE){ \ + FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), FUNCTION(x.s3), \ + FUNCTION(x.s4), FUNCTION(x.s5), FUNCTION(x.s6), FUNCTION(x.s7) \ + } != (RET_TYPE)0); \ +} + +#define _CLC_DEFINE_RELATIONAL_UNARY_VEC16(RET_TYPE, FUNCTION, ARG_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG_TYPE x) { \ + return (RET_TYPE)( \ + (RET_TYPE){ \ + FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), FUNCTION(x.s3), \ + FUNCTION(x.s4), FUNCTION(x.s5), FUNCTION(x.s6), FUNCTION(x.s7), \ + FUNCTION(x.s8), FUNCTION(x.s9), FUNCTION(x.sa), FUNCTION(x.sb), \ + FUNCTION(x.sc), FUNCTION(x.sd), FUNCTION(x.se), FUNCTION(x.sf) \ + } != (RET_TYPE)0); \ +} + +#define _CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(RET_TYPE, FUNCTION, ARG_TYPE) \ +_CLC_DEFINE_RELATIONAL_UNARY_VEC2(RET_TYPE##2, FUNCTION, ARG_TYPE##2) \ +_CLC_DEFINE_RELATIONAL_UNARY_VEC3(RET_TYPE##3, FUNCTION, ARG_TYPE##3) \ +_CLC_DEFINE_RELATIONAL_UNARY_VEC4(RET_TYPE##4, FUNCTION, ARG_TYPE##4) \ +_CLC_DEFINE_RELATIONAL_UNARY_VEC8(RET_TYPE##8, FUNCTION, ARG_TYPE##8) \ +_CLC_DEFINE_RELATIONAL_UNARY_VEC16(RET_TYPE##16, FUNCTION, ARG_TYPE##16) + +#define _CLC_DEFINE_RELATIONAL_UNARY(RET_TYPE, FUNCTION, BUILTIN_FUNCTION, ARG_TYPE) \ +_CLC_DEFINE_RELATIONAL_UNARY_SCALAR(RET_TYPE, FUNCTION, BUILTIN_FUNCTION, ARG_TYPE) \ +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(RET_TYPE, FUNCTION, ARG_TYPE) \ + +#define _CLC_DEFINE_RELATIONAL_BINARY_SCALAR(RET_TYPE, FUNCTION, BUILTIN_NAME, ARG0_TYPE, ARG1_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y){ \ + return BUILTIN_NAME(x, y); \ +} + +#define _CLC_DEFINE_RELATIONAL_BINARY_VEC(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ + return (RET_TYPE)( (RET_TYPE){FUNCTION(x.lo, y.lo), FUNCTION(x.hi, y.hi)} != (RET_TYPE)0); \ +} + +#define _CLC_DEFINE_RELATIONAL_BINARY_VEC2(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ + return (RET_TYPE)( (RET_TYPE){FUNCTION(x.lo, y.lo), FUNCTION(x.hi, y.hi)} != (RET_TYPE)0); \ +} + +#define _CLC_DEFINE_RELATIONAL_BINARY_VEC3(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ + return (RET_TYPE)( (RET_TYPE){FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), FUNCTION(x.s2, y.s2)} != (RET_TYPE)0); \ +} + +#define _CLC_DEFINE_RELATIONAL_BINARY_VEC4(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ + return (RET_TYPE)( \ + (RET_TYPE){ \ + FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), FUNCTION(x.s2, y.s2), FUNCTION(x.s3, y.s3) \ + } != (RET_TYPE)0); \ +} + +#define _CLC_DEFINE_RELATIONAL_BINARY_VEC8(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ + return (RET_TYPE)( \ + (RET_TYPE){ \ + FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), FUNCTION(x.s2, y.s2), FUNCTION(x.s3, y.s3), \ + FUNCTION(x.s4, y.s4), FUNCTION(x.s5, y.s5), FUNCTION(x.s6, y.s6), FUNCTION(x.s7, y.s7) \ + } != (RET_TYPE)0); \ +} + +#define _CLC_DEFINE_RELATIONAL_BINARY_VEC16(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ +_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG0_TYPE x, ARG1_TYPE y) { \ + return (RET_TYPE)( \ + (RET_TYPE){ \ + FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), FUNCTION(x.s2, y.s2), FUNCTION(x.s3, y.s3), \ + FUNCTION(x.s4, y.s4), FUNCTION(x.s5, y.s5), FUNCTION(x.s6, y.s6), FUNCTION(x.s7, y.s7), \ + FUNCTION(x.s8, y.s8), FUNCTION(x.s9, y.s9), FUNCTION(x.sa, y.sa), FUNCTION(x.sb, y.sb), \ + FUNCTION(x.sc, y.sc), FUNCTION(x.sd, y.sd), FUNCTION(x.se, y.se), FUNCTION(x.sf, y.sf) \ + } != (RET_TYPE)0); \ +} + +#define _CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) \ +_CLC_DEFINE_RELATIONAL_BINARY_VEC2(RET_TYPE##2, FUNCTION, ARG0_TYPE##2, ARG1_TYPE##2) \ +_CLC_DEFINE_RELATIONAL_BINARY_VEC3(RET_TYPE##3, FUNCTION, ARG0_TYPE##3, ARG1_TYPE##3) \ +_CLC_DEFINE_RELATIONAL_BINARY_VEC4(RET_TYPE##4, FUNCTION, ARG0_TYPE##4, ARG1_TYPE##4) \ +_CLC_DEFINE_RELATIONAL_BINARY_VEC8(RET_TYPE##8, FUNCTION, ARG0_TYPE##8, ARG1_TYPE##8) \ +_CLC_DEFINE_RELATIONAL_BINARY_VEC16(RET_TYPE##16, FUNCTION, ARG0_TYPE##16, ARG1_TYPE##16) + +#define _CLC_DEFINE_RELATIONAL_BINARY(RET_TYPE, FUNCTION, BUILTIN_FUNCTION, ARG0_TYPE, ARG1_TYPE) \ +_CLC_DEFINE_RELATIONAL_BINARY_SCALAR(RET_TYPE, FUNCTION, BUILTIN_FUNCTION, ARG0_TYPE, ARG1_TYPE) \ +_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(RET_TYPE, FUNCTION, ARG0_TYPE, ARG1_TYPE) diff --git a/libclc/generic/lib/relational/signbit.cl b/libclc/generic/lib/relational/signbit.cl new file mode 100644 index 0000000000000000000000000000000000000000..ab37d2f1288c01052aa6cbd8909ebfb8b5fe49e5 --- /dev/null +++ b/libclc/generic/lib/relational/signbit.cl @@ -0,0 +1,19 @@ +#include <clc/clc.h> +#include "relational.h" + +_CLC_DEFINE_RELATIONAL_UNARY(int, signbit, __builtin_signbitf, float) + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +// The scalar version of signbit(double) returns an int, but the vector versions +// return long. + +_CLC_DEF _CLC_OVERLOAD int signbit(double x){ + return __builtin_signbit(x); +} + +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(long, signbit, double) + +#endif diff --git a/libclc/generic/lib/shared/clamp.cl b/libclc/generic/lib/shared/clamp.cl new file mode 100644 index 0000000000000000000000000000000000000000..c79a358e00e073da562d0d94a421bcc572d4f54d --- /dev/null +++ b/libclc/generic/lib/shared/clamp.cl @@ -0,0 +1,11 @@ +#include <clc/clc.h> + +#define __CLC_BODY <clamp.inc> +#include <clc/integer/gentype.inc> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define __CLC_BODY <clamp.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/shared/clamp.inc b/libclc/generic/lib/shared/clamp.inc new file mode 100644 index 0000000000000000000000000000000000000000..c918f9c499e70f6a948ed0e8e0331ecd5c54afb3 --- /dev/null +++ b/libclc/generic/lib/shared/clamp.inc @@ -0,0 +1,9 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE clamp(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_GENTYPE z) { + return (x > z ? z : (x < y ? y : x)); +} + +#ifndef __CLC_SCALAR +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE clamp(__CLC_GENTYPE x, __CLC_SCALAR_GENTYPE y, __CLC_SCALAR_GENTYPE z) { + return (x > (__CLC_GENTYPE)z ? (__CLC_GENTYPE)z : (x < (__CLC_GENTYPE)y ? (__CLC_GENTYPE)y : x)); +} +#endif diff --git a/libclc/generic/lib/shared/max.cl b/libclc/generic/lib/shared/max.cl new file mode 100644 index 0000000000000000000000000000000000000000..1c4457c82144bf4e06f71a614cfe71f5e180385b --- /dev/null +++ b/libclc/generic/lib/shared/max.cl @@ -0,0 +1,11 @@ +#include <clc/clc.h> + +#define __CLC_BODY <max.inc> +#include <clc/integer/gentype.inc> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define __CLC_BODY <max.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/shared/max.inc b/libclc/generic/lib/shared/max.inc new file mode 100644 index 0000000000000000000000000000000000000000..75a24c077d1ab563428fd67d805164acdf6570c9 --- /dev/null +++ b/libclc/generic/lib/shared/max.inc @@ -0,0 +1,9 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE max(__CLC_GENTYPE a, __CLC_GENTYPE b) { + return (a > b ? a : b); +} + +#ifndef __CLC_SCALAR +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE max(__CLC_GENTYPE a, __CLC_SCALAR_GENTYPE b) { + return (a > (__CLC_GENTYPE)b ? a : (__CLC_GENTYPE)b); +} +#endif diff --git a/libclc/generic/lib/shared/min.cl b/libclc/generic/lib/shared/min.cl new file mode 100644 index 0000000000000000000000000000000000000000..433087a1069d0747a371ce3c3aded92ac3823334 --- /dev/null +++ b/libclc/generic/lib/shared/min.cl @@ -0,0 +1,11 @@ +#include <clc/clc.h> + +#define __CLC_BODY <min.inc> +#include <clc/integer/gentype.inc> + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define __CLC_BODY <min.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/generic/lib/shared/min.inc b/libclc/generic/lib/shared/min.inc new file mode 100644 index 0000000000000000000000000000000000000000..fe42864df25766fc345a51b9fbaf6a982570dfea --- /dev/null +++ b/libclc/generic/lib/shared/min.inc @@ -0,0 +1,9 @@ +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE min(__CLC_GENTYPE a, __CLC_GENTYPE b) { + return (a < b ? a : b); +} + +#ifndef __CLC_SCALAR +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE min(__CLC_GENTYPE a, __CLC_SCALAR_GENTYPE b) { + return (a < (__CLC_GENTYPE)b ? a : (__CLC_GENTYPE)b); +} +#endif diff --git a/libclc/generic/lib/shared/vload.cl b/libclc/generic/lib/shared/vload.cl new file mode 100644 index 0000000000000000000000000000000000000000..6793072cc6ef007dd7fa65f6f9f9516cd860be9e --- /dev/null +++ b/libclc/generic/lib/shared/vload.cl @@ -0,0 +1,46 @@ +#include <clc/clc.h> + +#define VLOAD_VECTORIZE(PRIM_TYPE, ADDR_SPACE) \ + _CLC_OVERLOAD _CLC_DEF PRIM_TYPE##2 vload2(size_t offset, const ADDR_SPACE PRIM_TYPE *x) { \ + return (PRIM_TYPE##2)(x[2*offset] , x[2*offset+1]); \ + } \ +\ + _CLC_OVERLOAD _CLC_DEF PRIM_TYPE##3 vload3(size_t offset, const ADDR_SPACE PRIM_TYPE *x) { \ + return (PRIM_TYPE##3)(x[3*offset] , x[3*offset+1], x[3*offset+2]); \ + } \ +\ + _CLC_OVERLOAD _CLC_DEF PRIM_TYPE##4 vload4(size_t offset, const ADDR_SPACE PRIM_TYPE *x) { \ + return (PRIM_TYPE##4)(x[4*offset], x[4*offset+1], x[4*offset+2], x[4*offset+3]); \ + } \ +\ + _CLC_OVERLOAD _CLC_DEF PRIM_TYPE##8 vload8(size_t offset, const ADDR_SPACE PRIM_TYPE *x) { \ + return (PRIM_TYPE##8)(vload4(0, &x[8*offset]), vload4(1, &x[8*offset])); \ + } \ +\ + _CLC_OVERLOAD _CLC_DEF PRIM_TYPE##16 vload16(size_t offset, const ADDR_SPACE PRIM_TYPE *x) { \ + return (PRIM_TYPE##16)(vload8(0, &x[16*offset]), vload8(1, &x[16*offset])); \ + } \ + +#define VLOAD_ADDR_SPACES(__CLC_SCALAR_GENTYPE) \ + VLOAD_VECTORIZE(__CLC_SCALAR_GENTYPE, __private) \ + VLOAD_VECTORIZE(__CLC_SCALAR_GENTYPE, __local) \ + VLOAD_VECTORIZE(__CLC_SCALAR_GENTYPE, __constant) \ + VLOAD_VECTORIZE(__CLC_SCALAR_GENTYPE, __global) \ + +#define VLOAD_TYPES() \ + VLOAD_ADDR_SPACES(char) \ + VLOAD_ADDR_SPACES(uchar) \ + VLOAD_ADDR_SPACES(short) \ + VLOAD_ADDR_SPACES(ushort) \ + VLOAD_ADDR_SPACES(int) \ + VLOAD_ADDR_SPACES(uint) \ + VLOAD_ADDR_SPACES(long) \ + VLOAD_ADDR_SPACES(ulong) \ + VLOAD_ADDR_SPACES(float) \ + +VLOAD_TYPES() + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + VLOAD_ADDR_SPACES(double) +#endif diff --git a/libclc/generic/lib/shared/vload_impl.ll b/libclc/generic/lib/shared/vload_impl.ll new file mode 100644 index 0000000000000000000000000000000000000000..33ba996b25c348edcd972a23bbdb7e4958a3139c --- /dev/null +++ b/libclc/generic/lib/shared/vload_impl.ll @@ -0,0 +1,130 @@ +; This provides optimized implementations of vload2/3/4/8/16 for 32-bit int/uint +; The address spaces get mapped to data types in target-specific usages + +define <2 x i32> @__clc_vload2_i32__addr1(i32 addrspace(1)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(1)* %addr to <2 x i32> addrspace(1)* + %2 = load <2 x i32> addrspace(1)* %1, align 4, !tbaa !3 + ret <2 x i32> %2 +} + +define <3 x i32> @__clc_vload3_i32__addr1(i32 addrspace(1)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(1)* %addr to <3 x i32> addrspace(1)* + %2 = load <3 x i32> addrspace(1)* %1, align 4, !tbaa !3 + ret <3 x i32> %2 +} + +define <4 x i32> @__clc_vload4_i32__addr1(i32 addrspace(1)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(1)* %addr to <4 x i32> addrspace(1)* + %2 = load <4 x i32> addrspace(1)* %1, align 4, !tbaa !3 + ret <4 x i32> %2 +} + +define <8 x i32> @__clc_vload8_i32__addr1(i32 addrspace(1)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(1)* %addr to <8 x i32> addrspace(1)* + %2 = load <8 x i32> addrspace(1)* %1, align 4, !tbaa !3 + ret <8 x i32> %2 +} + +define <16 x i32> @__clc_vload16_i32__addr1(i32 addrspace(1)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(1)* %addr to <16 x i32> addrspace(1)* + %2 = load <16 x i32> addrspace(1)* %1, align 4, !tbaa !3 + ret <16 x i32> %2 +} + +define <2 x i32> @__clc_vload2_i32__addr2(i32 addrspace(2)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(2)* %addr to <2 x i32> addrspace(2)* + %2 = load <2 x i32> addrspace(2)* %1, align 4, !tbaa !3 + ret <2 x i32> %2 +} + +define <3 x i32> @__clc_vload3_i32__addr2(i32 addrspace(2)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(2)* %addr to <3 x i32> addrspace(2)* + %2 = load <3 x i32> addrspace(2)* %1, align 4, !tbaa !3 + ret <3 x i32> %2 +} + +define <4 x i32> @__clc_vload4_i32__addr2(i32 addrspace(2)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(2)* %addr to <4 x i32> addrspace(2)* + %2 = load <4 x i32> addrspace(2)* %1, align 4, !tbaa !3 + ret <4 x i32> %2 +} + +define <8 x i32> @__clc_vload8_i32__addr2(i32 addrspace(2)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(2)* %addr to <8 x i32> addrspace(2)* + %2 = load <8 x i32> addrspace(2)* %1, align 4, !tbaa !3 + ret <8 x i32> %2 +} + +define <16 x i32> @__clc_vload16_i32__addr2(i32 addrspace(2)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(2)* %addr to <16 x i32> addrspace(2)* + %2 = load <16 x i32> addrspace(2)* %1, align 4, !tbaa !3 + ret <16 x i32> %2 +} + +define <2 x i32> @__clc_vload2_i32__addr3(i32 addrspace(3)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(3)* %addr to <2 x i32> addrspace(3)* + %2 = load <2 x i32> addrspace(3)* %1, align 4, !tbaa !3 + ret <2 x i32> %2 +} + +define <3 x i32> @__clc_vload3_i32__addr3(i32 addrspace(3)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(3)* %addr to <3 x i32> addrspace(3)* + %2 = load <3 x i32> addrspace(3)* %1, align 4, !tbaa !3 + ret <3 x i32> %2 +} + +define <4 x i32> @__clc_vload4_i32__addr3(i32 addrspace(3)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(3)* %addr to <4 x i32> addrspace(3)* + %2 = load <4 x i32> addrspace(3)* %1, align 4, !tbaa !3 + ret <4 x i32> %2 +} + +define <8 x i32> @__clc_vload8_i32__addr3(i32 addrspace(3)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(3)* %addr to <8 x i32> addrspace(3)* + %2 = load <8 x i32> addrspace(3)* %1, align 4, !tbaa !3 + ret <8 x i32> %2 +} + +define <16 x i32> @__clc_vload16_i32__addr3(i32 addrspace(3)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(3)* %addr to <16 x i32> addrspace(3)* + %2 = load <16 x i32> addrspace(3)* %1, align 4, !tbaa !3 + ret <16 x i32> %2 +} + +define <2 x i32> @__clc_vload2_i32__addr4(i32 addrspace(4)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(4)* %addr to <2 x i32> addrspace(4)* + %2 = load <2 x i32> addrspace(4)* %1, align 4, !tbaa !3 + ret <2 x i32> %2 +} + +define <3 x i32> @__clc_vload3_i32__addr4(i32 addrspace(4)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(4)* %addr to <3 x i32> addrspace(4)* + %2 = load <3 x i32> addrspace(4)* %1, align 4, !tbaa !3 + ret <3 x i32> %2 +} + +define <4 x i32> @__clc_vload4_i32__addr4(i32 addrspace(4)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(4)* %addr to <4 x i32> addrspace(4)* + %2 = load <4 x i32> addrspace(4)* %1, align 4, !tbaa !3 + ret <4 x i32> %2 +} + +define <8 x i32> @__clc_vload8_i32__addr4(i32 addrspace(4)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(4)* %addr to <8 x i32> addrspace(4)* + %2 = load <8 x i32> addrspace(4)* %1, align 4, !tbaa !3 + ret <8 x i32> %2 +} + +define <16 x i32> @__clc_vload16_i32__addr4(i32 addrspace(4)* nocapture %addr) nounwind readonly alwaysinline { + %1 = bitcast i32 addrspace(4)* %addr to <16 x i32> addrspace(4)* + %2 = load <16 x i32> addrspace(4)* %1, align 4, !tbaa !3 + ret <16 x i32> %2 +} + +!1 = metadata !{metadata !"char", metadata !5} +!2 = metadata !{metadata !"short", metadata !5} +!3 = metadata !{metadata !"int", metadata !5} +!4 = metadata !{metadata !"long", metadata !5} +!5 = metadata !{metadata !"omnipotent char", metadata !6} +!6 = metadata !{metadata !"Simple C/C++ TBAA"} + diff --git a/libclc/generic/lib/shared/vstore.cl b/libclc/generic/lib/shared/vstore.cl new file mode 100644 index 0000000000000000000000000000000000000000..f6d360e0d1d7ec35efb25c453114266a47b17c77 --- /dev/null +++ b/libclc/generic/lib/shared/vstore.cl @@ -0,0 +1,53 @@ +#include <clc/clc.h> + +#pragma OPENCL EXTENSION cl_khr_byte_addressable_store : enable + +#define VSTORE_VECTORIZE(PRIM_TYPE, ADDR_SPACE) \ + _CLC_OVERLOAD _CLC_DEF void vstore2(PRIM_TYPE##2 vec, size_t offset, ADDR_SPACE PRIM_TYPE *mem) { \ + mem[2*offset] = vec.s0; \ + mem[2*offset+1] = vec.s1; \ + } \ +\ + _CLC_OVERLOAD _CLC_DEF void vstore3(PRIM_TYPE##3 vec, size_t offset, ADDR_SPACE PRIM_TYPE *mem) { \ + mem[3*offset] = vec.s0; \ + mem[3*offset+1] = vec.s1; \ + mem[3*offset+2] = vec.s2; \ + } \ +\ + _CLC_OVERLOAD _CLC_DEF void vstore4(PRIM_TYPE##4 vec, size_t offset, ADDR_SPACE PRIM_TYPE *mem) { \ + vstore2(vec.lo, 0, &mem[offset*4]); \ + vstore2(vec.hi, 1, &mem[offset*4]); \ + } \ +\ + _CLC_OVERLOAD _CLC_DEF void vstore8(PRIM_TYPE##8 vec, size_t offset, ADDR_SPACE PRIM_TYPE *mem) { \ + vstore4(vec.lo, 0, &mem[offset*8]); \ + vstore4(vec.hi, 1, &mem[offset*8]); \ + } \ +\ + _CLC_OVERLOAD _CLC_DEF void vstore16(PRIM_TYPE##16 vec, size_t offset, ADDR_SPACE PRIM_TYPE *mem) { \ + vstore8(vec.lo, 0, &mem[offset*16]); \ + vstore8(vec.hi, 1, &mem[offset*16]); \ + } \ + +#define VSTORE_ADDR_SPACES(__CLC_SCALAR___CLC_GENTYPE) \ + VSTORE_VECTORIZE(__CLC_SCALAR___CLC_GENTYPE, __private) \ + VSTORE_VECTORIZE(__CLC_SCALAR___CLC_GENTYPE, __local) \ + VSTORE_VECTORIZE(__CLC_SCALAR___CLC_GENTYPE, __global) \ + +#define VSTORE_TYPES() \ + VSTORE_ADDR_SPACES(char) \ + VSTORE_ADDR_SPACES(uchar) \ + VSTORE_ADDR_SPACES(short) \ + VSTORE_ADDR_SPACES(ushort) \ + VSTORE_ADDR_SPACES(int) \ + VSTORE_ADDR_SPACES(uint) \ + VSTORE_ADDR_SPACES(long) \ + VSTORE_ADDR_SPACES(ulong) \ + VSTORE_ADDR_SPACES(float) \ + +VSTORE_TYPES() + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + VSTORE_ADDR_SPACES(double) +#endif diff --git a/libclc/generic/lib/shared/vstore_impl.ll b/libclc/generic/lib/shared/vstore_impl.ll new file mode 100644 index 0000000000000000000000000000000000000000..9e2a37b29702c3e414b442b4fb4c561d94c7128c --- /dev/null +++ b/libclc/generic/lib/shared/vstore_impl.ll @@ -0,0 +1,40 @@ +; This provides optimized implementations of vstore2/3/4/8/16 for 32-bit int/uint +; The address spaces get mapped to data types in target-specific usages + +define void @__clc_vstore2_i32__addr1(<2 x i32> %vec, i32 addrspace(1)* nocapture %addr) nounwind alwaysinline { + %1 = bitcast i32 addrspace(1)* %addr to <2 x i32> addrspace(1)* + store <2 x i32> %vec, <2 x i32> addrspace(1)* %1, align 4, !tbaa !3 + ret void +} + +define void @__clc_vstore3_i32__addr1(<3 x i32> %vec, i32 addrspace(1)* nocapture %addr) nounwind alwaysinline { + %1 = bitcast i32 addrspace(1)* %addr to <3 x i32> addrspace(1)* + store <3 x i32> %vec, <3 x i32> addrspace(1)* %1, align 4, !tbaa !3 + ret void +} + +define void @__clc_vstore4_i32__addr1(<4 x i32> %vec, i32 addrspace(1)* nocapture %addr) nounwind alwaysinline { + %1 = bitcast i32 addrspace(1)* %addr to <4 x i32> addrspace(1)* + store <4 x i32> %vec, <4 x i32> addrspace(1)* %1, align 4, !tbaa !3 + ret void +} + +define void @__clc_vstore8_i32__addr1(<8 x i32> %vec, i32 addrspace(1)* nocapture %addr) nounwind alwaysinline { + %1 = bitcast i32 addrspace(1)* %addr to <8 x i32> addrspace(1)* + store <8 x i32> %vec, <8 x i32> addrspace(1)* %1, align 4, !tbaa !3 + ret void +} + +define void @__clc_vstore16_i32__addr1(<16 x i32> %vec, i32 addrspace(1)* nocapture %addr) nounwind alwaysinline { + %1 = bitcast i32 addrspace(1)* %addr to <16 x i32> addrspace(1)* + store <16 x i32> %vec, <16 x i32> addrspace(1)* %1, align 4, !tbaa !3 + ret void +} + +!1 = metadata !{metadata !"char", metadata !5} +!2 = metadata !{metadata !"short", metadata !5} +!3 = metadata !{metadata !"int", metadata !5} +!4 = metadata !{metadata !"long", metadata !5} +!5 = metadata !{metadata !"omnipotent char", metadata !6} +!6 = metadata !{metadata !"Simple C/C++ TBAA"} + diff --git a/libclc/generic/lib/workitem/get_global_id.cl b/libclc/generic/lib/workitem/get_global_id.cl new file mode 100644 index 0000000000000000000000000000000000000000..fdd83d2953d45b31c5db2a6bfa650673fa6e0877 --- /dev/null +++ b/libclc/generic/lib/workitem/get_global_id.cl @@ -0,0 +1,5 @@ +#include <clc/clc.h> + +_CLC_DEF size_t get_global_id(uint dim) { + return get_group_id(dim)*get_local_size(dim) + get_local_id(dim); +} diff --git a/libclc/generic/lib/workitem/get_global_size.cl b/libclc/generic/lib/workitem/get_global_size.cl new file mode 100644 index 0000000000000000000000000000000000000000..5ae649e10d5108e5b8e27561eb292caad62f8843 --- /dev/null +++ b/libclc/generic/lib/workitem/get_global_size.cl @@ -0,0 +1,5 @@ +#include <clc/clc.h> + +_CLC_DEF size_t get_global_size(uint dim) { + return get_num_groups(dim)*get_local_size(dim); +}