Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 10 additions & 29 deletions clang/lib/Driver/ToolChains/Clang.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10490,35 +10490,16 @@ static void getSPIRVBackendOpts(const llvm::opt::ArgList &TCArgs,
TCArgs.MakeArgString("--avoid-spirv-capabilities=Shader"));
BackendArgs.push_back(
TCArgs.MakeArgString("--translator-compatibility-mode"));

// Disable all the extensions by default
std::string ExtArg("-spirv-ext=-all");
std::string DefaultExtArg =
",+SPV_EXT_shader_atomic_float_add,+SPV_EXT_shader_atomic_float_min_max"
",+SPV_KHR_no_integer_wrap_decoration,+SPV_KHR_float_controls"
",+SPV_KHR_expect_assume,+SPV_KHR_linkonce_odr";
std::string INTELExtArg = ",+SPV_INTEL_subgroups,+SPV_INTEL_media_block_io"
",+SPV_INTEL_function_pointers"
",+SPV_INTEL_inline_assembly"
",+SPV_INTEL_arbitrary_precision_integers"
",+SPV_INTEL_float_controls2"
",+SPV_INTEL_variable_length_array"
",+SPV_INTEL_long_composites"
",+SPV_INTEL_cache_controls"
",+SPV_KHR_shader_clock"
",+SPV_INTEL_bindless_images";
ExtArg = ExtArg + DefaultExtArg + INTELExtArg;
ExtArg += ",+SPV_INTEL_bfloat16_conversion"
",+SPV_INTEL_joint_matrix"
",+SPV_KHR_uniform_group_instructions"
",+SPV_INTEL_tensor_float32_conversion"
",+SPV_INTEL_optnone"
",+SPV_KHR_non_semantic_info"
",+SPV_KHR_cooperative_matrix"
",+SPV_EXT_shader_atomic_float16_add"
",+SPV_INTEL_fp_max_error";

BackendArgs.push_back(TCArgs.MakeArgString(ExtArg));
// TODO: A list of SPIR-V extensions that are supported by the SPIR-V backend
// is growing. Let's postpone the decision on which extensions to enable until
// - the list is stable, and
// - we decide on a mapping of user requested extensions into backend's ones.
// Meanwhile we enable all the SPIR-V backend extensions.
BackendArgs.push_back(TCArgs.MakeArgString("--spirv-ext=all"));
// TODO:
// - handle -Xspirv-translator option to avoid "argument unused during
// compilation" error
// - handle --spirv-ext=+<extension> and --spirv-ext=-<extension> options
}

// Utility function to gather all llvm-spirv options.
Expand Down
2 changes: 1 addition & 1 deletion clang/test/Driver/sycl-spirv-backend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
///
// RUN: %clangxx -fsycl -fsycl-use-spirv-backend-for-spirv-gen -### %s 2>&1 | FileCheck %s

// CHECK: llc{{.*}} "-filetype=obj" "-mtriple=spirv64{{[^-]*}}-unknown-unknown" "--avoid-spirv-capabilities=Shader" "--translator-compatibility-mode" "-spirv-ext=-all,+SPV_EXT_shader_atomic_float_add,+SPV_EXT_shader_atomic_float_min_max,+SPV_KHR_no_integer_wrap_decoration,+SPV_KHR_float_controls,+SPV_KHR_expect_assume,+SPV_KHR_linkonce_odr,+SPV_INTEL_subgroups,+SPV_INTEL_media_block_io,+SPV_INTEL_function_pointers,+SPV_INTEL_inline_assembly,+SPV_INTEL_arbitrary_precision_integers,+SPV_INTEL_float_controls2,+SPV_INTEL_variable_length_array,+SPV_INTEL_long_composites,+SPV_INTEL_cache_controls,+SPV_KHR_shader_clock,+SPV_INTEL_bindless_images,+SPV_INTEL_bfloat16_conversion,+SPV_INTEL_joint_matrix,+SPV_KHR_uniform_group_instructions,+SPV_INTEL_tensor_float32_conversion,+SPV_INTEL_optnone,+SPV_KHR_non_semantic_info,+SPV_KHR_cooperative_matrix,+SPV_EXT_shader_atomic_float16_add,+SPV_INTEL_fp_max_error"
// CHECK: llc{{.*}} "-filetype=obj" "-mtriple=spirv64{{[^-]*}}-unknown-unknown" "--avoid-spirv-capabilities=Shader" "--translator-compatibility-mode" "--spirv-ext=
Loading