diff --git a/src/compiler/clc/clc.h b/src/compiler/clc/clc.h index 95ef4dd759b..73588a31ad5 100644 --- a/src/compiler/clc/clc.h +++ b/src/compiler/clc/clc.h @@ -72,9 +72,15 @@ struct clc_optional_features { * progress */ bool subgroups_ifp; + bool subgroups_ballot; + bool subgroups_clustered; + bool subgroups_extended_types; + bool subgroups_named_barrier; + bool subgroups_non_uniform_arithmetic; + bool subgroups_non_uniform_vote; + bool subgroups_rotate; bool subgroups_shuffle; bool subgroups_shuffle_relative; - bool subgroups_ballot; }; struct clc_compile_args { diff --git a/src/compiler/clc/clc_helpers.cpp b/src/compiler/clc/clc_helpers.cpp index 8e69ef845a1..9912f9b0256 100644 --- a/src/compiler/clc/clc_helpers.cpp +++ b/src/compiler/clc/clc_helpers.cpp @@ -1024,15 +1024,33 @@ clc_compile_to_llvm_module(LLVMContext &llvm_ctx, } if (args->features.subgroups) { c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+__opencl_c_subgroups"); + if (args->features.subgroups_ballot) { + c->getPreprocessorOpts().addMacroDef("cl_khr_subgroup_ballot=1"); + } + if (args->features.subgroups_clustered) { + c->getPreprocessorOpts().addMacroDef("cl_khr_subgroup_clustered_reduce=1"); + } + if (args->features.subgroups_extended_types) { + c->getPreprocessorOpts().addMacroDef("cl_khr_subgroup_extended_types=1"); + } + if (args->features.subgroups_named_barrier) { + c->getPreprocessorOpts().addMacroDef("cl_khr_subgroup_named_barrier=1"); + } + if (args->features.subgroups_non_uniform_arithmetic) { + c->getPreprocessorOpts().addMacroDef("cl_khr_subgroup_non_uniform_arithmetic=1"); + } + if (args->features.subgroups_non_uniform_vote) { + c->getPreprocessorOpts().addMacroDef("cl_khr_subgroup_non_uniform_vote=1"); + } + if (args->features.subgroups_rotate) { + c->getPreprocessorOpts().addMacroDef("cl_khr_subgroup_rotate=1"); + } if (args->features.subgroups_shuffle) { c->getPreprocessorOpts().addMacroDef("cl_khr_subgroup_shuffle=1"); } if (args->features.subgroups_shuffle_relative) { c->getPreprocessorOpts().addMacroDef("cl_khr_subgroup_shuffle_relative=1"); } - if (args->features.subgroups_ballot) { - c->getPreprocessorOpts().addMacroDef("cl_khr_subgroup_ballot=1"); - } } if (args->features.subgroups_ifp) { assert(args->features.subgroups);