Revert faulty pushed patchset
authorZhigang Gong <zhigang.gong@intel.com>
Tue, 14 Jan 2014 01:33:00 +0000 (09:33 +0800)
committerZhigang Gong <zhigang.gong@intel.com>
Tue, 14 Jan 2014 01:36:38 +0000 (09:36 +0800)
This reverts:
Revert "GBE: fixed a long related bug."
Revert "Refine the method to find pch and pcm files."
Revert "GBE: enable relocatable pch files."
Revert "CL: prepare to support ICD if the system has ocl-icd.."
Revert "CL: back port ICD support to 1.1 branch."

The above patches are merged by accident without review comments and
are broken. Now revert them.

13 files changed:
CMake/FindGBE.cmake [new file with mode: 0644]
CMakeLists.txt
backend/CMakeLists.txt
backend/src/CMakeLists.txt
backend/src/GBEConfig.h.in
backend/src/backend/gen_register.hpp
backend/src/backend/program.cpp
backend/src/ocl_stdlib.tmpl.h
docs/Beignet.mdwn
src/CMakeLists.txt
src/cl_khr_icd.c
utests/CMakeLists.txt
utests/utest.cpp

diff --git a/CMake/FindGBE.cmake b/CMake/FindGBE.cmake
new file mode 100644 (file)
index 0000000..db938c7
--- /dev/null
@@ -0,0 +1,37 @@
+#
+# Try to find X library and include path.
+# Once done this will define
+#
+# GBE_FOUND
+# GBE_INCLUDE_PATH
+# GBE_LIBRARY
+# 
+
+FIND_PATH(GBE_INCLUDE_PATH gen/program.h
+  ~/include/
+  /usr/include/
+  /usr/local/include/
+  /sw/include/
+  /opt/local/include/
+  DOC "The directory where gen/program.h resides")
+FIND_LIBRARY(GBE_LIBRARY
+  NAMES GBE gbe
+  PATHS
+  ~/lib/
+  /usr/lib64
+  /usr/lib
+  /usr/local/lib64
+  /usr/local/lib
+  /sw/lib
+  /opt/local/lib
+  DOC "The GBE library")
+
+IF(GBE_INCLUDE_PATH)
+  INCLUDE_DIRECTORIES(${GBE_INCLUDE_PATH})
+  SET(GBE_FOUND 1 CACHE STRING "Set to 1 if GBE is found, 0 otherwise")
+ELSE(GBE_INCLUDE_PATH)
+  SET(GBE_FOUND 0 CACHE STRING "Set to 1 if GBE is found, 0 otherwise")
+ENDIF(GBE_INCLUDE_PATH)
+
+MARK_AS_ADVANCED(GBE_FOUND)
+
index e588829..b44e7a6 100644 (file)
@@ -18,12 +18,6 @@ configure_file (
   "src/OCLConfig.h"
 )
 
-configure_file (
-  "intel-beignet.icd.in"
-  "intel-beignet.icd"
-)
-
-
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
 
 SET(CMAKE_VERBOSE_MAKEFILE "false")
@@ -117,6 +111,14 @@ ELSE(XFIXES_FOUND)
   MESSAGE(STATUS "Looking for Xfixes - not found")
 ENDIF(XFIXES_FOUND)
 
+# Gen-backend (compiler)
+Find_Package(GBE)
+IF(GBE_FOUND)
+  MESSAGE(STATUS "Looking for Gen-Backend - found")
+ELSE(GBE_FOUND)
+  MESSAGE(STATUS "Looking for Gen-Backend - not found")
+ENDIF(GBE_FOUND)
+
 Find_Package(EGL)
 IF(EGL_FOUND)
   MESSAGE(STATUS "Looking for EGL - found")
@@ -133,7 +135,6 @@ ENDIF(MESA_SOURCE_FOUND)
 Find_Package(OCLIcd)
 IF(OCLIcd_FOUND)
   MESSAGE(STATUS "Looking for OCL ICD header file - found")
-  install (FILES ${CMAKE_CURRENT_BINARY_DIR}/intel-beignet.icd DESTINATION /etc/OpenCL/vendors)
 ELSE(OCLIcd_FOUND)
   MESSAGE(STATUS "Looking for OCL ICD header file - not found")
 ENDIF(OCLIcd_FOUND)
@@ -144,3 +145,4 @@ ADD_SUBDIRECTORY(include)
 ADD_SUBDIRECTORY(backend)
 ADD_SUBDIRECTORY(src)
 ADD_SUBDIRECTORY(utests)
+
index dd55a4a..476c6f2 100644 (file)
@@ -91,15 +91,9 @@ elseif (COMPILER STREQUAL "ICC")
   set (CCMAKE_CXX_FLAGS_MINSIZEREL "-Os -DGBE_DEBUG=0")
   set (CMAKE_EXE_LINKER_FLAGS "")
 endif ()
-
 include_directories (${CMAKE_CURRENT_BINARY_DIR})
 ##############################################################
 # Project source code
 ##############################################################
 add_subdirectory (src)
-set(LOCAL_PCH_OBJECT_DIR ${LOCAL_PCH_OBJECT_DIR} PARENT_SCOPE)
-set(LOCAL_PCM_OBJECT_DIR ${LOCAL_PCM_OBJECT_DIR} PARENT_SCOPE)
-set (GBE_BIN_GENERATER
-     OCL_PCM_PATH=${LOCAL_PCM_OBJECT_DIR} OCL_PCH_PATH=${LOCAL_PCH_OBJECT_DIR} ${CMAKE_CURRENT_BINARY_DIR}/src/gbe_bin_generater
-     PARENT_SCOPE)
 
index d15e7b7..fa69321 100644 (file)
@@ -1,13 +1,10 @@
-set (beignet_install_path ${CMAKE_INSTALL_PREFIX}/lib/beignet/)
-
-
 set (ocl_vector_spec_file ${GBE_SOURCE_DIR}/src/builtin_vector_proto.def)
 set (ocl_vector_file ${GBE_SOURCE_DIR}/src/ocl_vector.h)
 set (ocl_as_file ${GBE_SOURCE_DIR}/src/ocl_as.h)
 set (ocl_convert_file ${GBE_SOURCE_DIR}/src/ocl_convert.h)
 set (ocl_stdlib_tmpl_file ${GBE_SOURCE_DIR}/src/ocl_stdlib.tmpl.h)
 set (ocl_common_header_file ${GBE_SOURCE_DIR}/src/ocl_common_defines.h)
-set (ocl_blob_file ${CMAKE_CURRENT_BINARY_DIR}/${beignet_install_path}/ocl_stdlib.h)
+set (ocl_blob_file ${CMAKE_CURRENT_BINARY_DIR}/ocl_stdlib.h)
 set (ocl_blob_cpp_file ${GBE_SOURCE_DIR}/src/ocl_stdlib_str.cpp)
 set (ocl_gen_blob_cmd ${GBE_SOURCE_DIR}/src/update_blob_ocl_header.py)
 set (ocl_gen_vector_cmd ${GBE_SOURCE_DIR}/src/gen_builtin_vector.py)
@@ -26,31 +23,28 @@ add_custom_command(
     COMMAND echo "" >> ${ocl_blob_cpp_file}
     DEPENDS ${ocl_blob_file})
 
-set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "ocl_vector.h;${ocl_blob_file}")
+set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "ocl_vector.h;ocl_stdlib.h")
 
 add_custom_command(
   OUTPUT ${ocl_vector_file}
   COMMAND ${PYTHON_EXECUTABLE} ${ocl_gen_vector_cmd} ${ocl_vector_spec_file} ${ocl_vector_file}
-  DEPENDS ${ocl_gen_vector_cmd} ${ocl_vector_spec_file}
-  )
+  DEPENDS ${ocl_gen_vector_cmd} ${ocl_vector_spec_file})
 
 add_custom_command(
   OUTPUT ${ocl_blob_file}
-  COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${beignet_install_path}
   COMMAND ${PYTHON_EXECUTABLE} ${ocl_gen_blob_cmd} ${ocl_stdlib_tmpl_file} ${ocl_blob_file}
-  DEPENDS ${ocl_gen_blob_cmd} ${ocl_stdlib_tmpl_file} ${ocl_common_header_file} ${ocl_vector_file} ${ocl_as_file} ${ocl_convert_file}
-  )
+  DEPENDS ${ocl_gen_blob_cmd} ${ocl_stdlib_tmpl_file} ${ocl_common_header_file} ${ocl_vector_file} ${ocl_as_file} ${ocl_convert_file})
+
 
 set (pch_object ${ocl_blob_file}.pch)
-set (local_pch_object ${ocl_blob_file}.local.pch)
 # generate pch object
 if (LLVM_VERSION_NODOT VERSION_GREATER 32)
-    set (clang_cmd -cc1 -x cl -triple spir -ffp-contract=off)
+    set (clang_cmd -cc1 -x cl -triple spir -ffp-contract=off -emit-pch)
 else (LLVM_VERSION_NODOT VERSION_GREATER 32)
     if (LLVM_VERSION_NODOT VERSION_GREATER 31)
-        set (clang_cmd -cc1 -x cl -triple nvptx -ffp-contract=off)
+        set (clang_cmd -cc1 -x cl -triple nvptx -ffp-contract=off -emit-pch)
     else (LLVM_VERSION_NODOT VERSION_GREATER 31)
-        set (clang_cmd -cc1 -x cl -triple ptx32)
+        set (clang_cmd -cc1 -x cl -triple ptx32 -emit-pch)
     endif (LLVM_VERSION_NODOT VERSION_GREATER 31)
 endif (LLVM_VERSION_NODOT VERSION_GREATER 32)
 set (clang_cmd ${clang_cmd} -fno-builtin -DGEN7_SAMPLER_CLAMP_BORDER_WORKAROUND)
@@ -58,8 +52,7 @@ set (clang_cmd ${clang_cmd} -fno-builtin -DGEN7_SAMPLER_CLAMP_BORDER_WORKAROUND)
 add_custom_command(
      OUTPUT ${pch_object}
      COMMAND rm -f ${pch_object}
-     COMMAND clang ${clang_cmd} --relocatable-pch -emit-pch -isysroot ${CMAKE_CURRENT_BINARY_DIR} ${ocl_blob_file} -o ${pch_object}
-     COMMAND clang ${clang_cmd} -emit-pch ${ocl_blob_file} -o ${local_pch_object}
+     COMMAND clang ${clang_cmd} ${ocl_blob_file} -o ${pch_object}
      DEPENDS ${ocl_blob_file}
      )
 
@@ -83,6 +76,7 @@ macro(ll_add_library ll_lib ll_sources)
        )
   add_custom_target(${ll_lib}
                     DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${ll_lib})
+  message(${ll_lib}, ${ll_objects})
 endmacro(ll_add_library)
 
 if (GBE_USE_BLOB)
@@ -91,7 +85,7 @@ if (GBE_USE_BLOB)
        backend/gen/gen_mesa_disasm.c)
 else (GBE_USE_BLOB)
   set (GBE_SRC
-    ${ocl_blob_file}
+    ocl_stdlib.h
     ocl_stdlib_str.cpp  # this file is auto-generated.
     sys/vector.hpp
     sys/hash_map.hpp
@@ -168,7 +162,7 @@ endif (GBE_USE_BLOB)
 include_directories (.)
 link_directories (${LLVM_LIBRARY_DIRS})
 include_directories(${LLVM_INCLUDE_DIRS})
-add_library (gbe STATIC ${GBE_SRC})
+add_library (gbe SHARED ${GBE_SRC})
 
 # for pre compiled module library.
 set (pcm_lib "beignet.bc")
@@ -190,18 +184,13 @@ link_directories (${LLVM_LIBRARY_DIR})
 ADD_EXECUTABLE(gbe_bin_generater gbe_bin_generater.cpp)
 TARGET_LINK_LIBRARIES(gbe_bin_generater gbe)
 
-#install (TARGETS gbe LIBRARY DESTINATION lib)
-#install (FILES backend/program.h DESTINATION include/gen)
-install (FILES ${ocl_blob_file} DESTINATION lib/beignet)
-install (FILES ${pch_object} DESTINATION lib/beignet)
-install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${pcm_lib} DESTINATION lib/beignet)
-# When build beignet itself, we need to export the local precompiled header file and precompiled module
-# file to libcl and utests.
-set (LOCAL_PCH_OBJECT_DIR "${local_pch_object}:${beignet_install_path}/ocl_stdlib.h.pch" PARENT_SCOPE)
-set (LOCAL_PCM_OBJECT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${pcm_lib}:${beignet_install_path}/${pcm_lib}" PARENT_SCOPE)
-
-set (PCH_OBJECT_DIR "${beignet_install_path}/ocl_stdlib.h.pch")
-set (PCM_OBJECT_DIR "${beignet_install_path}/${pcm_lib}")
+install (TARGETS gbe LIBRARY DESTINATION lib)
+install (FILES ${pch_object} DESTINATION lib)
+install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${pcm_lib} DESTINATION lib)
+install (FILES backend/program.h DESTINATION include/gen)
+
+set (PCH_OBJECT_DIR "${pch_object};${CMAKE_INSTALL_PREFIX}/lib/ocl_stdlib.h.pch")
+set (PCM_LIB_DIR "${CMAKE_CURRENT_BINARY_DIR}/${pcm_lib};${CMAKE_INSTALL_PREFIX}/lib/${pcm_lib}")
 configure_file (
   "GBEConfig.h.in"
   "GBEConfig.h"
index 5bc09b8..9920d25 100644 (file)
@@ -2,4 +2,4 @@
 #define LIBGBE_VERSION_MAJOR @LIBGBE_VERSION_MAJOR@
 #define LIBGBE_VERSION_MINOR @LIBGBE_VERSION_MINOR@
 #define PCH_OBJECT_DIR "@PCH_OBJECT_DIR@"
-#define PCM_OBJECT_DIR "@PCM_OBJECT_DIR@"
+#define PCM_LIB_DIR "@PCM_LIB_DIR@"
index 57c78d9..73d8ffa 100644 (file)
@@ -270,8 +270,6 @@ namespace gbe
     INLINE GenRegister top_half(void) const {
       GenRegister r = bottom_half();
       r.subnr += 4;
-      r.nr += r.subnr / 32;
-      r.subnr %= 32;
       return r;
     }
 
index 284a755..3ab1bc2 100644 (file)
@@ -465,9 +465,6 @@ namespace gbe {
   }
 
   BVAR(OCL_OUTPUT_BUILD_LOG, false);
-  SVAR(OCL_PCH_PATH, PCH_OBJECT_DIR);
-  SVAR(OCL_PCM_PATH, PCM_OBJECT_DIR);
-
   static bool buildModuleFromSource(const char* input, const char* output, std::string options,
                                     size_t stringSize, char *err, size_t *errSize) {
     // Arguments to pass to the clang frontend
@@ -585,13 +582,12 @@ namespace gbe {
     // Create an action and make the compiler instance carry it out
     llvm::OwningPtr<clang::CodeGenAction> Act(new clang::EmitLLVMOnlyAction());
 
-    std::string dirs = OCL_PCM_PATH;
-    std::string pcmFileName;
+    std::string dirs = PCM_LIB_DIR, pcmLib;
     std::istringstream idirs(dirs);
     bool findPcm = false;
 
-    while (getline(idirs, pcmFileName, ':')) {
-      if(access(pcmFileName.c_str(), R_OK) == 0) {
+    while (getline(idirs, pcmLib, ';')) {
+      if(access(pcmLib.c_str(), R_OK) == 0) {
         findPcm = true;
         break;
       }
@@ -599,7 +595,7 @@ namespace gbe {
 
     GBE_ASSERT(findPcm && "Could not find pre compiled module library.\n");
 
-    Clang.getCodeGenOpts().LinkBitcodeFile = pcmFileName;
+    Clang.getCodeGenOpts().LinkBitcodeFile = pcmLib;
     auto retVal = Clang.ExecuteAction(*Act);
 
     if (err != NULL) {
@@ -655,6 +651,7 @@ namespace gbe {
     char clStr[L_tmpnam+1], llStr[L_tmpnam+1];
     const std::string clName = std::string(tmpnam_r(clStr)) + ".cl"; /* unsafe! */
     const std::string llName = std::string(tmpnam_r(llStr)) + ".ll"; /* unsafe! */
+    std::string pchHeaderName;
     std::string clOpt;
     int optLevel = 1;
 
@@ -733,12 +730,11 @@ namespace gbe {
       clOpt += options;
     }
 
-    std::string dirs = OCL_PCH_PATH;
+    std::string dirs = PCH_OBJECT_DIR;
     std::istringstream idirs(dirs);
-    std::string pchFileName;
 
-    while (getline(idirs, pchFileName, ':')) {
-      if(access(pchFileName.c_str(), R_OK) == 0) {
+    while (getline(idirs, pchHeaderName, ';')) {
+      if(access(pchHeaderName.c_str(), R_OK) == 0) {
         findPCH = true;
         break;
       }
@@ -746,7 +742,7 @@ namespace gbe {
 
     if (usePCH && findPCH) {
       clOpt += " -include-pch ";
-      clOpt += pchFileName;
+      clOpt += pchHeaderName;
       clOpt += " ";
     } else
       fwrite(ocl_stdlib_str.c_str(), strlen(ocl_stdlib_str.c_str()), 1, clFile);
index 9b70514..07a4fd9 100755 (executable)
@@ -1717,7 +1717,7 @@ INLINE float __gen_ocl_asin_util(float x) {
   float w = p / q;
   return x + x*w;
 }
-INLINE float __gen_ocl_scalbnf (float x, int n){
+float __gen_ocl_scalbnf (float x, int n){
   float two25 = 3.355443200e+07,       /* 0x4c000000 */
   twom25 = 2.9802322388e-08,           /* 0x33000000 */
   huge = 1.0e+30,
index e3b4b1b..d05950f 100644 (file)
@@ -70,10 +70,8 @@ this code also produces various tests to ensure the compiler and the run-time
 consistency. This small test framework uses a simple c++ registration system to
 register all the unit tests.
 
-You need to call setenv.sh in the utests/ directory to set some environment variables
-firstly as below:
-
-`> . setenv.sh`
+You need to set the variable `OCL_KERNEL_PATH` to locate the OCL kernels. They
+are with the run-time in `./kernels`.
 
 Then in `utests/`:
 
@@ -85,20 +83,6 @@ will run all the unit tests one after the others
 
 will only run `some_unit_test0` and `some_unit_test1` tests
 
-How to install
---------------
-
-Simply invoke:
-`> make install`
-
-It installs libcl.so and the precompiled header/module files and the ocl_stdlib.h file
-into install_prefix/beignet/ direcotry. If the system support ICD, it also installs the
-intel-beignet.icd to /etc/OpenCL/vendors/.
-
-To make beignet support ICD, you need to have the following two packages installed:
-ocl-icd-dev, ocl-icd-libopencl1 (package name for the ubuntu.)
-before your build beignet.
-
 Supported Hardware
 ------------------
 
index 7d4d93d..b997f94 100644 (file)
@@ -4,6 +4,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}
                     ${CMAKE_CURRENT_SOURCE_DIR}/../backend/src/backend/
                     ${CMAKE_CURRENT_SOURCE_DIR}/../include
                     ${MESA_SOURCE_INCLUDES})
+
 macro (MakeKernelBinStr KERNEL_PATH KERNEL_FILES)
 foreach (KF ${KERNEL_FILES})
   set (input_file ${KERNEL_PATH}/${KF}.cl)
@@ -12,7 +13,7 @@ foreach (KF ${KERNEL_FILES})
   add_custom_command(
     OUTPUT ${output_file}
     COMMAND rm -rf ${output_file}
-    COMMAND ${GBE_BIN_GENERATER} -s ${input_file} -o${output_file}
+    COMMAND ${CMAKE_CURRENT_BINARY_DIR}/../backend/src/gbe_bin_generater -s ${input_file} -o${output_file}
     DEPENDS ${input_file} ${CMAKE_CURRENT_BINARY_DIR}/../backend/src/gbe_bin_generater)
 endforeach (KF)
 endmacro (MakeKernelBinStr)
@@ -78,4 +79,4 @@ target_link_libraries(
                       ${DRM_LIBRARY}
                       ${OPENGL_LIBRARIES}
                       ${OPTIONAL_EGL_LIBRARY})
-install (TARGETS cl LIBRARY DESTINATION lib/beignet)
+install (TARGETS cl LIBRARY DESTINATION lib)
index cb5f5cd..d601134 100644 (file)
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
-#include <CL/cl.h>
-#ifndef CL_VERSION_1_2
-#include <cl_mem.h>
-typedef cl_uint             cl_kernel_arg_info;
-typedef cl_bitfield         cl_mem_migration_flags;
-#define cl_device_partition_property cl_device_partition_property_ext
-#define CL_API_SUFFIX__VERSION_1_2
-#endif
+
 #include <ocl_icd.h>
 
 #include "cl_platform_id.h"
index 8c64844..b1f0b52 100644 (file)
@@ -12,11 +12,6 @@ string(REGEX REPLACE "generated/([^\ ]*)\\.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/../
 string(REGEX REPLACE " " ";" KERNEL_MATH_LIST ${KERNEL_MATH_LIST})
 set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "generated;${KERNEL_MATH_LIST}")
 
-configure_file (
-  "setenv.sh.in"
-  "setenv.sh"
-  )
-
 link_directories (${LLVM_LIBRARY_DIR})
 set (utests_sources
   utest_error.c
@@ -175,7 +170,7 @@ set (utests_sources
 SET (kernel_bin ${CMAKE_CURRENT_SOURCE_DIR}/../kernels/compiler_ceil)
 ADD_CUSTOM_COMMAND(
     OUTPUT ${kernel_bin}.bin
-    COMMAND ${GBE_BIN_GENERATER} ${kernel_bin}.cl -o${kernel_bin}.bin
+    COMMAND ${CMAKE_CURRENT_BINARY_DIR}/../backend/src/gbe_bin_generater ${kernel_bin}.cl -o${kernel_bin}.bin
     DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/../backend/src/gbe_bin_generater ${kernel_bin}.cl
     )
 
@@ -194,8 +189,8 @@ add_custom_target(utest_generator
 
 if (EGL_FOUND AND MESA_SOURCE_FOUND)
 SET(utests_sources ${utests_sources} compiler_fill_gl_image.cpp)
-SET(CMAKE_CXX_FLAGS "-DHAS_EGL ${CMAKE_CXX_FLAGS} ${DEF_OCL_PCH_PCM_PATH}")
-SET(CMAKE_C_FLAGS "-DHAS_EGL ${CMAKE_C_FLAGS} ${DEF_OCL_PCH_PCM_PATH}")
+SET(CMAKE_CXX_FLAGS "-DHAS_EGL ${CMAKE_CXX_FLAGS}")
+SET(CMAKE_C_FLAGS "-DHAS_EGL ${CMAKE_C_FLAGS}")
 endif (EGL_FOUND AND MESA_SOURCE_FOUND)
 
 ADD_LIBRARY(utests SHARED ${ADDMATHFUNC} ${utests_sources})
index 718916f..6d51598 100644 (file)
@@ -41,6 +41,8 @@ UTest::UTest(Function fn, const char *name, bool haveIssue, bool needDestroyProg
   utestList->push_back(*this);
 }
 
+UTest::UTest(void) : fn(NULL), name(NULL), haveIssue(false) {}
+
 static bool strequal(const char *s1, const char *s2) {
   if (strcmp(s1, s2) == 0) return true;
   return false;