[Beignet] [PATCH OCL20 v2] Backend: Refine typedef of ptrint_t

Song, Ruiling ruiling.song at intel.com
Tue Apr 5 08:17:07 UTC 2016


It's OK for me.

Thanks!
Ruiling

> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Xiuli Pan
> Sent: Friday, March 25, 2016 3:58 PM
> To: beignet at lists.freedesktop.org
> Cc: Pan, Xiuli <xiuli.pan at intel.com>
> Subject: [Beignet] [PATCH OCL20 v2] Backend: Refine typedef of ptrint_t
> 
> From: Pan Xiuli <xiuli.pan at intel.com>
> 
> V2: refined with clang macro __INTPTR_WIDTH__ and
> clang built-in types __INTXX_TYPE__
> 
> Signed-off-by: Pan Xiuli <xiuli.pan at intel.com>
> ---
>  backend/src/backend/program.cpp        |  4 ++++
>  backend/src/libocl/CMakeLists.txt      | 16 +++++++++++-----
>  backend/src/libocl/include/ocl_types.h |  9 +++++++--
>  src/cl_gt_device.h                     |  2 +-
>  4 files changed, 23 insertions(+), 8 deletions(-)
> 
> diff --git a/backend/src/backend/program.cpp
> b/backend/src/backend/program.cpp
> index 6c5761c..08b604f 100644
> --- a/backend/src/backend/program.cpp
> +++ b/backend/src/backend/program.cpp
> @@ -561,7 +561,11 @@ namespace gbe {
>      args.push_back("-x");
>      args.push_back("cl");
>      args.push_back("-triple");
> +if(sizeof(int*) == 8) {
>      args.push_back("spir64");
> +} else {
> +    args.push_back("spir");
> +}
>  #endif /* LLVM_VERSION_MINOR <= 2 */
>      args.push_back("stringInput.cl");
>      args.push_back("-ffp-contract=off");
> diff --git a/backend/src/libocl/CMakeLists.txt
> b/backend/src/libocl/CMakeLists.txt
> index d7ed841..bda7793 100644
> --- a/backend/src/libocl/CMakeLists.txt
> +++ b/backend/src/libocl/CMakeLists.txt
> @@ -130,14 +130,20 @@ FOREACH(M ${OCL_BASH_GENERATED_MODULES})
>  ENDFOREACH(M)
> 
> 
> -SET (CLANG_OCL_FLAGS -fno-builtin -ffp-contract=off -cl-kernel-arg-info -
> DGEN7_SAMPLER_CLAMP_BORDER_WORKAROUND "-cl-std=CL2.0")
> +if(NOT SPIRTARGET)
> +  set(SPIRTARGET spir)
> +  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
> +    set(SPIRTARGET spir64)
> +  endif()
> +endif()
> +SET (CLANG_OCL_FLAGS -fno-builtin -ffp-contract=off -cl-kernel-arg-info -
> triple ${SPIRTARGET} -DGEN7_SAMPLER_CLAMP_BORDER_WORKAROUND -cl-
> std=CL2.0)
>  MACRO(ADD_CL_TO_BC_TARGET _file)
>      # CMake seems can not add pattern rule, use MACRO to replace.
>      STRING(REGEX REPLACE "${LIBOCL_BINARY_DIR}/src/\(o.*\)\\.cl"
> "${OCL_OBJECT_DIR}/\\1.bc" output_name ${_file})
>      ADD_CUSTOM_COMMAND(OUTPUT ${output_name}
>  	COMMAND mkdir -p ${OCL_OBJECT_DIR}/
> -	#COMMAND echo ${LLVM_INSTALL_DIR}clang -cc1
> ${CLANG_OCL_FLAGS} -I ${LIBOCL_BINARY_DIR}/include/ -emit-llvm-bc -triple
> spir64 -o ${output_name} -x cl ${_file}
> -	COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -I
> ${OCL_OBJECT_DIR}/include/ -emit-llvm-bc -triple spir64 -o ${output_name} -x
> cl ${_file}
> +  #COMMAND echo ${LLVM_INSTALL_DIR}clang -cc1 ${CLANG_OCL_FLAGS} -I
> ${LIBOCL_BINARY_DIR}/include/ -emit-llvm-bc -o ${output_name} -x cl ${_file}
> +	COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -I
> ${OCL_OBJECT_DIR}/include/ -emit-llvm-bc -o ${output_name} -x cl ${_file}
>  	DEPENDS ${_file} ${OCL_HEADER_FILES}
>  	COMMENT "Compiling ${_file}"
>  	)
> @@ -201,14 +207,14 @@ ADD_CUSTOM_COMMAND(OUTPUT
> ${OCL_OBJECT_DIR}/beignet.bc
> 
>  ADD_CUSTOM_COMMAND(OUTPUT ${OCL_OBJECT_DIR}/beignet.local.pch
>      COMMAND mkdir -p ${OCL_OBJECT_DIR}
> -    COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -triple spir64
> -I ${OCL_OBJECT_DIR}/include/ -emit-pch -x cl
> ${OCL_OBJECT_DIR}/include/ocl.h -o ${OCL_OBJECT_DIR}/beignet.local.pch
> +    COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -I
> ${OCL_OBJECT_DIR}/include/ -emit-pch -x cl ${OCL_OBJECT_DIR}/include/ocl.h
> -o ${OCL_OBJECT_DIR}/beignet.local.pch
>      DEPENDS ${OCL_HEADER_FILES}
>      COMMENT "Generate the pch file: ${OCL_OBJECT_DIR}/beignet.local.pch"
>      )
> 
>  ADD_CUSTOM_COMMAND(OUTPUT ${OCL_OBJECT_DIR}/beignet.pch
>      COMMAND mkdir -p ${OCL_OBJECT_DIR}
> -    COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -triple spir64
> -I ${OCL_OBJECT_DIR}/include/ --relocatable-pch -emit-pch -isysroot
> ${LIBOCL_BINARY_DIR} -x cl ${OCL_OBJECT_DIR}/include/ocl.h -o
> ${OCL_OBJECT_DIR}/beignet.pch
> +    COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -I
> ${OCL_OBJECT_DIR}/include/ --relocatable-pch -emit-pch -isysroot
> ${LIBOCL_BINARY_DIR} -x cl ${OCL_OBJECT_DIR}/include/ocl.h -o
> ${OCL_OBJECT_DIR}/beignet.pch
>      DEPENDS ${OCL_HEADER_FILES}
>      COMMENT "Generate the pch file: ${OCL_OBJECT_DIR}/beignet.pch"
>      )
> diff --git a/backend/src/libocl/include/ocl_types.h
> b/backend/src/libocl/include/ocl_types.h
> index 824262d..1031178 100644
> --- a/backend/src/libocl/include/ocl_types.h
> +++ b/backend/src/libocl/include/ocl_types.h
> @@ -47,8 +47,13 @@ typedef unsigned int uint;
>  typedef unsigned long ulong;
>  typedef __typeof__(sizeof(int)) size_t;
>  typedef __typeof__((int *)0-(int *)0) ptrdiff_t;
> -typedef signed int intptr_t;
> -typedef unsigned int uintptr_t;
> +#define __int_t_type(a,b,c) a##b##c
> +#define __int_type(type,n) __int_t_type(type,n,_TYPE__)
> +typedef __int_type(__INT,__INTPTR_WIDTH__) intptr_t;
> +typedef __int_type(__UINT,__INTPTR_WIDTH__) uintptr_t;
> +#undef __int_type
> +#undef __int_t_type
> +
> 
>  /////////////////////////////////////////////////////////////////////////////
>  // OpenCL address space
> diff --git a/src/cl_gt_device.h b/src/cl_gt_device.h
> index 041ddaa..35a6ff5 100644
> --- a/src/cl_gt_device.h
> +++ b/src/cl_gt_device.h
> @@ -40,7 +40,7 @@
>  .native_vector_width_double = 2,
>  .native_vector_width_half = 8,
>  .preferred_wg_sz_mul = 16,
> -.address_bits = 64,
> +.address_bits = sizeof(size_t)*8,
>  .svm_capabilities = CL_DEVICE_SVM_COARSE_GRAIN_BUFFER,
>  .preferred_platform_atomic_alignment = 0,
>  .preferred_global_atomic_alignment = 0,
> --
> 2.5.0
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list