clc: add new feature options for intel_clc
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Mon, 27 Jun 2022 10:12:46 +0000 (13:12 +0300)
committerMarge Bot <emma+marge@anholt.net>
Mon, 27 Jun 2022 15:31:49 +0000 (15:31 +0000)
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17253>

src/compiler/clc/clc.h
src/compiler/clc/clc_helpers.cpp

index c5c3a2b..d544730 100644 (file)
@@ -50,11 +50,14 @@ enum clc_spirv_version {
 };
 
 struct clc_optional_features {
+   bool fp16;
    bool fp64;
    bool int64;
    bool images;
    bool images_read_write;
    bool images_write_3d;
+   bool intel_subgroups;
+   bool subgroups;
 };
 
 struct clc_compile_args {
index caee1fd..4451c37 100644 (file)
@@ -871,6 +871,9 @@ clc_compile_to_llvm_module(LLVMContext &llvm_ctx,
    c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+cl_khr_global_int32_extended_atomics");
    c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+cl_khr_local_int32_base_atomics");
    c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+cl_khr_local_int32_extended_atomics");
+   if (args->features.fp16) {
+      c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+cl_khr_fp16");
+   }
    if (args->features.fp64) {
       c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+cl_khr_fp64");
       c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+__opencl_c_fp64");
@@ -889,6 +892,12 @@ clc_compile_to_llvm_module(LLVMContext &llvm_ctx,
       c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+cl_khr_3d_image_writes");
       c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+__opencl_c_3d_image_writes");
    }
+   if (args->features.intel_subgroups) {
+      c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+cl_intel_subgroups");
+   }
+   if (args->features.subgroups) {
+      c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+cl_khr_subgroups");
+   }
 #endif
 
    if (args->num_headers) {