[Beignet] [0.9.x Branch] GBE: fix bugs when handling -cl-std option.

Yang, Rong R rong.r.yang at intel.com
Wed Sep 10 23:19:59 PDT 2014


LGTM, thanks.

> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Zhigang Gong
> Sent: Thursday, September 11, 2014 8:56 AM
> To: beignet at lists.freedesktop.org
> Cc: Gong, Zhigang
> Subject: [Beignet] [0.9.x Branch] GBE: fix bugs when handling -cl-std option.
> 
> Actually, CLANG does take this option and we should not filter it out. We also
> change the default option to create PCH file to -cl-std=CL1.2. And if the user
> pass in a CL1.1 we will have to disable PCH.
> 
> Another change is that if we are CL1.2, then we should enable the cl_khr_fp64
> by default. As from CL1.2, this extension should be enabled by default.
> 
> Signed-off-by: Zhigang Gong <zhigang.gong at intel.com>
> ---
>  backend/src/CMakeLists.txt      |  2 +-
>  backend/src/backend/program.cpp | 10 ++++++++--
>  2 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/backend/src/CMakeLists.txt b/backend/src/CMakeLists.txt index
> 23ccc27..a3818ab 100644
> --- a/backend/src/CMakeLists.txt
> +++ b/backend/src/CMakeLists.txt
> @@ -50,7 +50,7 @@ else (LLVM_VERSION_NODOT VERSION_GREATER 32)
>          set (clang_cmd -cc1 -x cl -triple ptx32)
>      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)
> +set (clang_cmd ${clang_cmd} -cl-std=CL1.2 -fno-builtin
> +-DGEN7_SAMPLER_CLAMP_BORDER_WORKAROUND)
> 
>  add_custom_command(
>       OUTPUT ${pch_object}
> diff --git a/backend/src/backend/program.cpp
> b/backend/src/backend/program.cpp index 40adc1d..22c6b0d 100644
> --- a/backend/src/backend/program.cpp
> +++ b/backend/src/backend/program.cpp
> @@ -576,13 +576,14 @@ namespace gbe {
>              *errSize = snprintf(err, stringSize, "Invalid build option: %s\n",
> str.c_str());
>            return false;
>          }
> -        continue;
>        }
>        useless.push_back(str);
>        args.push_back(str.c_str());
>      }
> -    if (useDefaultCLCVersion)
> +    if (useDefaultCLCVersion) {
>        args.push_back("-D__OPENCL_C_VERSION__=120");
> +      args.push_back("-cl-std=CL1.2");
> +    }
>      args.push_back("-mllvm");
>      args.push_back("-inline-threshold=200000");
>  #ifdef GEN7_SAMPLER_CLAMP_BORDER_WORKAROUND
> @@ -775,6 +776,7 @@ namespace gbe {
>            "-cl-single-precision-constant",
>  //        "-cl-denorms-are-zero",
>            "-cl-fast-relaxed-math",
> +          "-cl-std=CL1.1"
>        };
>        const char * incompatible_defs[] = {
>            "GET_FLOAT_WORD",
> @@ -804,6 +806,10 @@ namespace gbe {
>        if (p)
>          optLevel = 0;
> 
> +      #define ENABLE_CL_KHR_FP64_STR "#pragma OPENCL EXTENSION
> cl_khr_fp64 : enable\n"
> +      if (!strstr(const_cast<char *>(options), "-cl-std=CL1.1"))
> +        fwrite(ENABLE_CL_KHR_FP64_STR,
> strlen(ENABLE_CL_KHR_FP64_STR),
> + 1, clFile);
> +
>        clOpt += options;
>      }
> 
> --
> 1.8.3.2
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list