diff --git a/libclc/clc/include/clc/relational/floatn.inc b/libclc/clc/include/clc/relational/floatn.inc deleted file mode 100644 index 263937f6eef6f..0000000000000 --- a/libclc/clc/include/clc/relational/floatn.inc +++ /dev/null @@ -1,132 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include -#include - -#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 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -#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 -#ifdef cl_khr_fp16 -#pragma OPENCL EXTENSION cl_khr_fp16 : enable - -#define __CLC_FLOATN half -#define __CLC_INTN int -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN half2 -#define __CLC_INTN short2 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN half3 -#define __CLC_INTN short3 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN half4 -#define __CLC_INTN short4 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN half8 -#define __CLC_INTN short8 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#define __CLC_FLOATN half16 -#define __CLC_INTN short16 -#include __CLC_BODY -#undef __CLC_INTN -#undef __CLC_FLOATN - -#endif - -#undef __CLC_BODY diff --git a/libclc/libspirv/include/libspirv/generic/math/floatn.inc b/libclc/libspirv/include/libspirv/generic/math/floatn.inc deleted file mode 100644 index dc4fe069a7f59..0000000000000 --- a/libclc/libspirv/include/libspirv/generic/math/floatn.inc +++ /dev/null @@ -1,97 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#include -#include - -#define __CLC_FLOAT float -#define __CLC_FPSIZE 32 - -#define __CLC_FLOATN float -#define __CLC_SCALAR -#include __CLC_BODY -#undef __CLC_FLOATN -#undef __CLC_SCALAR - -#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 -#undef __CLC_FPSIZE - -#ifndef __FLOAT_ONLY -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -#define __CLC_FLOAT double -#define __CLC_FPSIZE 64 - -#define __CLC_FLOATN double -#define __CLC_SCALAR -#include __CLC_BODY -#undef __CLC_FLOATN -#undef __CLC_SCALAR - -#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 -#undef __CLC_FPSIZE - -#endif -#endif - -#ifndef __FLOAT_ONLY -#ifdef cl_khr_fp16 -#pragma OPENCL EXTENSION cl_khr_fp16 : enable - -#define __CLC_FLOAT half -#define __CLC_FPSIZE 16 - -#define __CLC_FLOATN half -#define __CLC_SCALAR -#include __CLC_BODY -#undef __CLC_FLOATN -#undef __CLC_SCALAR - -#define __CLC_FLOATN half2 -#include __CLC_BODY -#undef __CLC_FLOATN - -#define __CLC_FLOATN half3 -#include __CLC_BODY -#undef __CLC_FLOATN - -#define __CLC_FLOATN half4 -#include __CLC_BODY -#undef __CLC_FLOATN - -#undef __CLC_FLOAT -#undef __CLC_FPSIZE - -#endif -#endif - -#undef __CLC_BODY diff --git a/libclc/libspirv/include/libspirv/generic/math/minmag.inc b/libclc/libspirv/include/libspirv/generic/math/minmag.inc deleted file mode 100644 index 9adfe2dbe5d8f..0000000000000 --- a/libclc/libspirv/include/libspirv/generic/math/minmag.inc +++ /dev/null @@ -1,26 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifdef __CLC_SCALAR -#define __CLC_VECSIZE -#endif - -#if __CLC_FPSIZE == 64 -#define __CLC_CONVERT_NATN __CLC_XCONCAT(convert_long, __CLC_VECSIZE) -#elif __CLC_FPSIZE == 32 -#define __CLC_CONVERT_NATN __CLC_XCONCAT(convert_int, __CLC_VECSIZE) -#elif __CLC_FPSIZE == 16 -#define __CLC_CONVERT_NATN __CLC_XCONCAT(convert_short, __CLC_VECSIZE) -#endif - -_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE minmag(__CLC_GENTYPE x, __CLC_GENTYPE y) { - const __CLC_GENTYPE res = select(y, x, __CLC_CONVERT_NATN(isless(fabs(x), fabs(y)))); - return select(res, fmin(x, y), __CLC_CONVERT_NATN(isnan(x) | isnan(y) | isequal(fabs(x), fabs(y)))); -} - -#undef __CLC_CONVERT_NATN diff --git a/libclc/libspirv/lib/generic/geometric/fast_normalize.cl b/libclc/libspirv/lib/generic/geometric/fast_normalize.cl index bd9e7fce7a79d..3ac12f1c81517 100644 --- a/libclc/libspirv/lib/generic/geometric/fast_normalize.cl +++ b/libclc/libspirv/lib/generic/geometric/fast_normalize.cl @@ -6,13 +6,12 @@ // //===----------------------------------------------------------------------===// +#include #include -_CLC_OVERLOAD _CLC_DEF float __spirv_ocl_fast_normalize(float p) { - return __spirv_ocl_normalize(p); -} - -#define __CLC_BODY +#define FUNCTION __spirv_ocl_fast_normalize +#define __IMPL_FUNCTION(x) __clc_fast_normalize +#define __CLC_GEOMETRIC_RET_GENTYPE +#define __CLC_BODY #define __FLOAT_ONLY -#include -#undef __FLOAT_ONLY +#include diff --git a/libclc/libspirv/lib/generic/geometric/fast_normalize.inc b/libclc/libspirv/lib/generic/geometric/fast_normalize.inc deleted file mode 100644 index 9ee1c064ac212..0000000000000 --- a/libclc/libspirv/lib/generic/geometric/fast_normalize.inc +++ /dev/null @@ -1,17 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef __CLC_SCALAR - -// Only handle vector implementations -_CLC_OVERLOAD _CLC_DEF __CLC_FLOATN __spirv_ocl_fast_normalize(__CLC_FLOATN p) { - __CLC_FLOAT l2 = __spirv_Dot(p, p); - return l2 == 0.0f ? p : p * __spirv_ocl_half_rsqrt(l2); -} - -#endif diff --git a/libclc/libspirv/lib/generic/geometric/normalize.cl b/libclc/libspirv/lib/generic/geometric/normalize.cl index bf706bd6d3398..6f9ac771793be 100644 --- a/libclc/libspirv/lib/generic/geometric/normalize.cl +++ b/libclc/libspirv/lib/generic/geometric/normalize.cl @@ -6,86 +6,12 @@ // //===----------------------------------------------------------------------===// -#include -#include +#include #include -#define HALF_MAX_SQRT 0x1.0p+8h -#define HALF_MIN_SQRT 0x1.0p-8h +#define FUNCTION __spirv_ocl_normalize +#define __IMPL_FUNCTION(x) __clc_normalize +#define __CLC_GEOMETRIC_RET_GENTYPE +#define __CLC_BODY -#define _CLC_SPIRV_NORMALIZE_IMPL(FP_TYPE, FLOAT_MARK, INT_TYPE, VLEN, \ - MAX_SQRT, MIN_SQRT) \ - _CLC_OVERLOAD _CLC_DEF FP_TYPE##VLEN __spirv_ocl_normalize( \ - FP_TYPE##VLEN p) { \ - if (__clc_all(p == (FP_TYPE##VLEN)0.0##FLOAT_MARK)) \ - return p; \ - FP_TYPE l2 = __spirv_Dot(p, p); \ - if (l2 < FLT_MIN) { \ - p *= MAX_SQRT; \ - l2 = __spirv_Dot(p, p); \ - } else if (l2 == INFINITY) { \ - p *= MIN_SQRT; \ - l2 = __spirv_Dot(p, p); \ - if (l2 == INFINITY) { \ - p = __spirv_ocl_copysign( \ - __spirv_ocl_select( \ - (FP_TYPE##VLEN)0.0##FLOAT_MARK, \ - (FP_TYPE##VLEN)1.0##FLOAT_MARK, \ - __clc_convert_##INT_TYPE##VLEN(__spirv_IsInf(p))), \ - p); \ - l2 = __spirv_Dot(p, p); \ - } \ - } \ - return p * __spirv_ocl_rsqrt(l2); \ - } - -#define _CLC_SPIRV_NORMALIZE(VLEN) \ - _CLC_SPIRV_NORMALIZE_IMPL(float, f, int, VLEN, 0x1.0p+86F, 0x1.0p-65f) - -_CLC_OVERLOAD _CLC_DEF float __spirv_ocl_normalize(float p) { - return __spirv_ocl_sign(p); -} - -_CLC_SPIRV_NORMALIZE(2) -_CLC_SPIRV_NORMALIZE(3) -_CLC_SPIRV_NORMALIZE(4) - -#undef _CLC_SPIRV_NORMALIZE - -#ifdef cl_khr_fp64 - -#pragma OPENCL EXTENSION cl_khr_fp64 : enable - -#define _CLC_SPIRV_NORMALIZE(VLEN) \ - _CLC_SPIRV_NORMALIZE_IMPL(double, , long, VLEN, 0x1.0p+563, 0x1.0p-513) - -_CLC_OVERLOAD _CLC_DEF double __spirv_ocl_normalize(double p) { - return __spirv_ocl_sign(p); -} - -_CLC_SPIRV_NORMALIZE(2) -_CLC_SPIRV_NORMALIZE(3) -_CLC_SPIRV_NORMALIZE(4) - -#undef _CLC_SPIRV_NORMALIZE - -#endif - -#ifdef cl_khr_fp16 - -#pragma OPENCL EXTENSION cl_khr_fp16 : enable - -#define _CLC_SPIRV_NORMALIZE(VLEN) \ - _CLC_SPIRV_NORMALIZE_IMPL(half, h, short, VLEN, HALF_MAX_SQRT, HALF_MIN_SQRT) - -_CLC_OVERLOAD _CLC_DEF half __spirv_ocl_normalize(half p) { - return __spirv_ocl_sign(p); -} - -_CLC_SPIRV_NORMALIZE(2) -_CLC_SPIRV_NORMALIZE(3) -_CLC_SPIRV_NORMALIZE(4) - -#undef _CLC_SPIRV_NORMALIZE - -#endif +#include