Author: jvesely Date: Fri Sep 8 16:58:57 2017 New Revision: 312838 URL: http://llvm.org/viewvc/llvm-project?rev=312838&view=rev Log: vstore: Cleanup and add vstore(half)
Add missing undefs Make helpers amdgpu specific (NVPTX uses different numbering for private AS) Use clang builtins on clang >= 6 Signed-off-by: Jan Vesely <jan.ves...@rutgers.edu> Reviewed-by: Tom Stellard <tstel...@redhat.com> Added: libclc/trunk/amdgpu/lib/SOURCES_4.0 libclc/trunk/amdgpu/lib/SOURCES_5.0 libclc/trunk/amdgpu/lib/shared/ libclc/trunk/amdgpu/lib/shared/vstore_half_helpers.ll - copied, changed from r312837, libclc/trunk/generic/lib/shared/vstore_half_helpers.ll Removed: libclc/trunk/generic/lib/shared/vstore_half_helpers.ll Modified: libclc/trunk/generic/include/clc/shared/vstore.h libclc/trunk/generic/lib/SOURCES libclc/trunk/generic/lib/shared/vstore.cl Added: libclc/trunk/amdgpu/lib/SOURCES_4.0 URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/amdgpu/lib/SOURCES_4.0?rev=312838&view=auto ============================================================================== --- libclc/trunk/amdgpu/lib/SOURCES_4.0 (added) +++ libclc/trunk/amdgpu/lib/SOURCES_4.0 Fri Sep 8 16:58:57 2017 @@ -0,0 +1 @@ +shared/vstore_half_helpers.ll Added: libclc/trunk/amdgpu/lib/SOURCES_5.0 URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/amdgpu/lib/SOURCES_5.0?rev=312838&view=auto ============================================================================== --- libclc/trunk/amdgpu/lib/SOURCES_5.0 (added) +++ libclc/trunk/amdgpu/lib/SOURCES_5.0 Fri Sep 8 16:58:57 2017 @@ -0,0 +1 @@ +shared/vstore_half_helpers.ll Copied: libclc/trunk/amdgpu/lib/shared/vstore_half_helpers.ll (from r312837, libclc/trunk/generic/lib/shared/vstore_half_helpers.ll) URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/amdgpu/lib/shared/vstore_half_helpers.ll?p2=libclc/trunk/amdgpu/lib/shared/vstore_half_helpers.ll&p1=libclc/trunk/generic/lib/shared/vstore_half_helpers.ll&r1=312837&r2=312838&rev=312838&view=diff ============================================================================== (empty) Modified: libclc/trunk/generic/include/clc/shared/vstore.h URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/generic/include/clc/shared/vstore.h?rev=312838&r1=312837&r2=312838&view=diff ============================================================================== --- libclc/trunk/generic/include/clc/shared/vstore.h (original) +++ libclc/trunk/generic/include/clc/shared/vstore.h Fri Sep 8 16:58:57 2017 @@ -29,7 +29,6 @@ _CLC_VECTOR_VSTORE_PRIM3(_half, half, float) #ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64: enable _CLC_VECTOR_VSTORE_PRIM1(double) _CLC_VECTOR_VSTORE_PRIM3(_half, half, double) _CLC_VSTORE_DECL(_half, half, double, , __private) @@ -37,7 +36,17 @@ _CLC_VSTORE_DECL(_half, half, double, , __global) #endif +#ifdef cl_khr_fp16 + _CLC_VECTOR_VSTORE_PRIM1(half) +#endif + _CLC_VECTOR_VSTORE_PRIM() _CLC_VSTORE_DECL(_half, half, float, , __private) _CLC_VSTORE_DECL(_half, half, float, , __local) _CLC_VSTORE_DECL(_half, half, float, , __global) + +#undef _CLC_VSTORE_DECL +#undef _CLC_VECTOR_VSTORE_DECL +#undef _CLC_VECTOR_VSTORE_PRIM3 +#undef _CLC_VECTOR_VSTORE_PRIM1 +#undef _CLC_VECTOR_VSTORE_PRIM Modified: libclc/trunk/generic/lib/SOURCES URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/generic/lib/SOURCES?rev=312838&r1=312837&r2=312838&view=diff ============================================================================== --- libclc/trunk/generic/lib/SOURCES (original) +++ libclc/trunk/generic/lib/SOURCES Fri Sep 8 16:58:57 2017 @@ -147,7 +147,6 @@ shared/max.cl shared/min.cl shared/vload.cl shared/vstore.cl -shared/vstore_half_helpers.ll workitem/get_global_id.cl workitem/get_global_size.cl image/get_image_dim.cl Modified: libclc/trunk/generic/lib/shared/vstore.cl URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/generic/lib/shared/vstore.cl?rev=312838&r1=312837&r2=312838&view=diff ============================================================================== --- libclc/trunk/generic/lib/shared/vstore.cl (original) +++ libclc/trunk/generic/lib/shared/vstore.cl Fri Sep 8 16:58:57 2017 @@ -50,23 +50,34 @@ VSTORE_TYPES() #pragma OPENCL EXTENSION cl_khr_fp64 : enable VSTORE_ADDR_SPACES(double) #endif +#ifdef cl_khr_fp16 +#pragma OPENCL EXTENSION cl_khr_fp16 : enable + VSTORE_ADDR_SPACES(half) +#endif /* vstore_half are legal even without cl_khr_fp16 */ -#define DECLARE_HELPER(STYPE, AS) void __clc_vstore_half_##STYPE##_helper##AS(STYPE, AS half *); +#if __clang_major__ < 6 +#define DECLARE_HELPER(STYPE, AS, builtin) void __clc_vstore_half_##STYPE##_helper##AS(STYPE, AS half *); +#else +#define DECLARE_HELPER(STYPE, AS, __builtin) \ +inline void __clc_vstore_half_##STYPE##_helper##AS(STYPE s, AS half *d) \ +{ \ + __builtin(s, d); \ +} +#endif -DECLARE_HELPER(float, __private); -DECLARE_HELPER(float, __global); -DECLARE_HELPER(float, __local); +DECLARE_HELPER(float, __private, __builtin_store_halff); +DECLARE_HELPER(float, __global, __builtin_store_halff); +DECLARE_HELPER(float, __local, __builtin_store_halff); #ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64 : enable -DECLARE_HELPER(double, __private); -DECLARE_HELPER(double, __global); -DECLARE_HELPER(double, __local); +DECLARE_HELPER(double, __private, __builtin_store_half); +DECLARE_HELPER(double, __global, __builtin_store_half); +DECLARE_HELPER(double, __local, __builtin_store_half); #endif - #define VEC_STORE1(STYPE, AS, val) __clc_vstore_half_##STYPE##_helper##AS (val, &mem[offset++]); + #define VEC_STORE2(STYPE, AS, val) \ VEC_STORE1(STYPE, AS, val.lo) \ VEC_STORE1(STYPE, AS, val.hi) @@ -94,4 +105,16 @@ DECLARE_HELPER(double, __local); #define __CLC_BODY "vstore_half.inc" #include <clc/math/gentype.inc> - +#undef __CLC_BODY +#undef FUNC +#undef __FUNC +#undef VEC_LOAD16 +#undef VEC_LOAD8 +#undef VEC_LOAD4 +#undef VEC_LOAD3 +#undef VEC_LOAD2 +#undef VEC_LOAD1 +#undef DECLARE_HELPER +#undef VSTORE_TYPES +#undef VSTORE_ADDR_SPACES +#undef VSTORE_VECTORIZE Removed: libclc/trunk/generic/lib/shared/vstore_half_helpers.ll URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/generic/lib/shared/vstore_half_helpers.ll?rev=312837&view=auto ============================================================================== --- libclc/trunk/generic/lib/shared/vstore_half_helpers.ll (original) +++ libclc/trunk/generic/lib/shared/vstore_half_helpers.ll (removed) @@ -1,35 +0,0 @@ -define void @__clc_vstore_half_float_helper__private(float %data, half addrspace(0)* nocapture %ptr) nounwind alwaysinline { - %res = fptrunc float %data to half - store half %res, half addrspace(0)* %ptr - ret void -} - -define void @__clc_vstore_half_float_helper__global(float %data, half addrspace(1)* nocapture %ptr) nounwind alwaysinline { - %res = fptrunc float %data to half - store half %res, half addrspace(1)* %ptr - ret void -} - -define void @__clc_vstore_half_float_helper__local(float %data, half addrspace(3)* nocapture %ptr) nounwind alwaysinline { - %res = fptrunc float %data to half - store half %res, half addrspace(3)* %ptr - ret void -} - -define void @__clc_vstore_half_double_helper__private(double %data, half addrspace(0)* nocapture %ptr) nounwind alwaysinline { - %res = fptrunc double %data to half - store half %res, half addrspace(0)* %ptr - ret void -} - -define void @__clc_vstore_half_double_helper__global(double %data, half addrspace(1)* nocapture %ptr) nounwind alwaysinline { - %res = fptrunc double %data to half - store half %res, half addrspace(1)* %ptr - ret void -} - -define void @__clc_vstore_half_double_helper__local(double %data, half addrspace(3)* nocapture %ptr) nounwind alwaysinline { - %res = fptrunc double %data to half - store half %res, half addrspace(3)* %ptr - ret void -} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits