From 019531349964b7d61a2b658eb81a6b168cde3f29 Mon Sep 17 00:00:00 2001
From: Michal Babej <michal.babej@tut.fi>
Date: Wed, 3 Jan 2018 10:46:47 +0100
Subject: [PATCH 03/14] Remove CL_DISABLE_LONG
This was a workaround for an OpenCL bug in LLVM 3.3
---
CMakeLists.txt | 37 +++++++++++++++++--------------------
config.h.in.cmake | 3 ---
lib/CL/devices/basic/basic.c | 5 -----
lib/CL/devices/pthread/pthread.c | 5 -----
4 files changed, 17 insertions(+), 33 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a836da90..60d570b8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -744,9 +744,13 @@ endif()
set(DEFAULT_HOST_CLANG_FLAGS "${CLANG_TARGET_OPTION}${LLC_TRIPLE}")
set(DEFAULT_HOST_LLC_FLAGS "-relocation-model=pic -mtriple=${LLC_TRIPLE}")
-if(ARM AND (NOT LLVM_OLDER_THAN_4_0))
- #ARMs need to enable FP64 manually with 4.0
- option(ENABLE_FP64 "Enable FP64" ON)
+if(ARM)
+ #ARMs need to enable FP64 manually with LLVM < 4.0
+ if(LLVM_OLDER_THAN_4_0)
+ option(ENABLE_FP64 "Enable FP64 on ARM32 - disabled by default for LLVM < 4" OFF)
+ else()
+ option(ENABLE_FP64 "Enable FP64 on ARM32 - if you have at least VFP support for doubles, you can leave it ON" ON )
+ endif()
endif()
if(ARM32 OR (LLC_TRIPLE MATCHES "^arm"))
@@ -764,9 +768,6 @@ if(ARM32 OR (LLC_TRIPLE MATCHES "^arm"))
endif()
endif()
-if(CL_DISABLE_LONG)
- set(DEFAULT_HOST_CLANG_FLAGS "${DEFAULT_HOST_CLANG_FLAGS} -D_CL_DISABLE_LONG")
-endif()
if(CL_DISABLE_HALF)
set(DEFAULT_HOST_CLANG_FLAGS "${DEFAULT_HOST_CLANG_FLAGS} -D_CL_DISABLE_HALF")
endif()
@@ -790,19 +791,17 @@ if(NOT CL_DISABLE_HALF)
set(HOST_DEVICE_EXTENSIONS "${HOST_DEVICE_EXTENSIONS} cl_khr_fp16")
endif()
-if(NOT CL_DISABLE_LONG)
- # must not be defined in HOST_DEVICE_EXTENSIONS list, because
- # this extension doesn't exist in official extension list
- set(HOST_DEVICE_EXTENSION_DEFINES "-Dcl_khr_int64")
+# must not be defined in HOST_DEVICE_EXTENSIONS list, because
+# this extension doesn't exist in official extension list
+# there is "cles_khr_int64" which indicates int64 support for embedded profiles
+set(HOST_DEVICE_EXTENSION_DEFINES "-Dcl_khr_int64")
- # fp64 requires int64
- if(X86)
- set(HOST_DEVICE_EXTENSIONS "${HOST_DEVICE_EXTENSIONS} cl_khr_fp64 cl_khr_int64_base_atomics cl_khr_int64_extended_atomics")
- endif()
- if(ENABLE_FP64 AND (NOT LLVM_OLDER_THAN_4_0))
- # 32bit arm doesnt always uspport doubles
- set(HOST_DEVICE_EXTENSIONS "${HOST_DEVICE_EXTENSIONS} cl_khr_fp64")
- endif()
+if(X86)
+ set(HOST_DEVICE_EXTENSIONS "${HOST_DEVICE_EXTENSIONS} cl_khr_fp64 cl_khr_int64_base_atomics cl_khr_int64_extended_atomics")
+endif()
+# 32bit arm doesnt always support doubles
+if(ENABLE_FP64 AND (NOT LLVM_OLDER_THAN_4_0))
+ set(HOST_DEVICE_EXTENSIONS "${HOST_DEVICE_EXTENSIONS} cl_khr_fp64")
endif()
set(TEMP_EXT "${HOST_DEVICE_EXTENSIONS}")
@@ -1145,7 +1144,6 @@ set(BUILD_ICD ${ENABLE_ICD})
set(BUILD_HSA ${ENABLE_HSA})
set(TCE_AVAILABLE ${ENABLE_TCE})
set(TCEMC_AVAILABLE ${ENABLE_TCEMC})
-set(_CL_DISABLE_LONG ${CL_DISABLE_LONG})
set(_CL_DISABLE_HALF ${CL_DISABLE_HALF})
set(PACKAGE_VERSION "${POCL_VERSION}")
@@ -1277,7 +1275,6 @@ MESSAGE(STATUS " ")
MESSAGE(STATUS "CLANG_MARCH_FLAG: ${CLANG_MARCH_FLAG}")
MESSAGE(STATUS "CLANG_TARGET_OPTION: ${CLANG_TARGET_OPTION}")
MESSAGE(STATUS "CL_DISABLE_HALF: ${CL_DISABLE_HALF}")
-MESSAGE(STATUS "CL_DISABLE_LONG: ${CL_DISABLE_LONG}")
MESSAGE(STATUS "HAVE_CLOCK_GETTIME: ${HAVE_CLOCK_GETTIME}")
MESSAGE(STATUS "HAVE_GLEW: ${HAVE_GLEW}")
MESSAGE(STATUS "HAVE_LTTNG_UST: ${HAVE_LTTNG_UST}")
diff --git a/config.h.in.cmake b/config.h.in.cmake
index cd75d7ce..7b7e87e6 100644
--- a/config.h.in.cmake
+++ b/config.h.in.cmake
@@ -149,9 +149,6 @@
/* Defined on big endian systems */
#define WORDS_BIGENDIAN @WORDS_BIGENDIAN@
-/* Disable 64bit ints when a clang bug is present */
-#cmakedefine _CL_DISABLE_LONG
-
/* Disable cl_khr_fp16 because fp16 is not supported */
#cmakedefine _CL_DISABLE_HALF
diff --git a/lib/CL/devices/basic/basic.c b/lib/CL/devices/basic/basic.c
index 8d1d8910..1dc7d303 100644
--- a/lib/CL/devices/basic/basic.c
+++ b/lib/CL/devices/basic/basic.c
@@ -381,11 +381,6 @@ pocl_basic_init (unsigned j, cl_device_id device, const char* parameters)
if(device->llvm_cpu && (!strcmp(device->llvm_cpu, "(unknown)")))
device->llvm_cpu = NULL;
- // work-around LLVM bug where sizeof(long)=4
- #ifdef _CL_DISABLE_LONG
- device->has_64bit_long=0;
- #endif
-
return ret;
}
diff --git a/lib/CL/devices/pthread/pthread.c b/lib/CL/devices/pthread/pthread.c
index 0b88a74c..494ae8b2 100644
--- a/lib/CL/devices/pthread/pthread.c
+++ b/lib/CL/devices/pthread/pthread.c
@@ -263,11 +263,6 @@ pocl_pthread_init (unsigned j, cl_device_id device, const char* parameters)
if(device->llvm_cpu && (!strcmp(device->llvm_cpu, "(unknown)")))
device->llvm_cpu = NULL;
- // work-around LLVM bug where sizeof(long)=4
- #ifdef _CL_DISABLE_LONG
- device->has_64bit_long=0;
- #endif
-
if (!scheduler_initialized)
{
scheduler_initialized = 1;
--
2.15.1