Skip to content

Commit 3794edd

Browse files
maarquitos14jsji
authored andcommitted
[SYCL][SPIRV BE] Disable SPV_KHR_float_controls2 extension. (#20519)
SPV_KHR_float_controls2 is not supported yet by our driver, so we need to explicitly disable it for now.
1 parent ae7efe1 commit 3794edd

File tree

2 files changed

+79
-11
lines changed

2 files changed

+79
-11
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 78 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10446,16 +10446,84 @@ static void getSPIRVBackendOpts(const llvm::opt::ArgList &TCArgs,
1044610446
TCArgs.MakeArgString("--avoid-spirv-capabilities=Shader"));
1044710447
BackendArgs.push_back(
1044810448
TCArgs.MakeArgString("--translator-compatibility-mode"));
10449-
// TODO: A list of SPIR-V extensions that are supported by the SPIR-V backend
10450-
// is growing. Let's postpone the decision on which extensions to enable until
10451-
// - the list is stable, and
10452-
// - we decide on a mapping of user requested extensions into backend's ones.
10453-
// Meanwhile we enable all the SPIR-V backend extensions.
10454-
BackendArgs.push_back(TCArgs.MakeArgString("--spirv-ext=all"));
10455-
// TODO:
10456-
// - handle -Xspirv-translator option to avoid "argument unused during
10457-
// compilation" error
10458-
// - handle --spirv-ext=+<extension> and --spirv-ext=-<extension> options
10449+
10450+
// SPIR-V backend recently started to support extensions not supported by
10451+
// drivers (e.g. SPV_KHR_float_controls2). At the same time, SPIR-V backend
10452+
// doesn't support the syntax for disabling specific extensions (i.e.
10453+
// --spirv-ext=-<extension>). We need to come up with a list of SPIR-V
10454+
// extensions that are supported by the backend, but also by the driver. While
10455+
// we work on that, let's manually do the equivalent of
10456+
// "--spirv-ext=+all,-SPV_KHR_float_controls2", which is the only unsupported
10457+
// extension by the driver so far.
10458+
std::string ExtArg("-spirv-ext=");
10459+
std::string DefaultExtArg = "+SPV_EXT_arithmetic_fence"
10460+
",+SPV_EXT_demote_to_helper_invocation"
10461+
",+SPV_EXT_descriptor_indexing"
10462+
",+SPV_EXT_fragment_fully_covered"
10463+
",+SPV_EXT_fragment_invocation_density"
10464+
",+SPV_EXT_fragment_shader_interlock"
10465+
",+SPV_EXT_mesh_shader"
10466+
",+SPV_EXT_optnone"
10467+
",+SPV_EXT_relaxed_printf_string_address_space"
10468+
",+SPV_EXT_shader_atomic_float16_add"
10469+
",+SPV_EXT_shader_atomic_float_add"
10470+
",+SPV_EXT_shader_atomic_float_min_max"
10471+
",+SPV_EXT_shader_image_int64"
10472+
",+SPV_EXT_shader_stencil_export"
10473+
",+SPV_EXT_shader_viewport_index_layer";
10474+
std::string GoogleExtArg = ",+SPV_GOOGLE_hlsl_functionality1"
10475+
",+SPV_GOOGLE_user_type";
10476+
std::string IntelExtArg = ",+SPV_INTEL_2d_block_io"
10477+
",+SPV_INTEL_arbitrary_precision_integers"
10478+
",+SPV_INTEL_bfloat16_conversion"
10479+
",+SPV_INTEL_bindless_images"
10480+
",+SPV_INTEL_cache_controls"
10481+
",+SPV_INTEL_float_controls2"
10482+
",+SPV_INTEL_fp_max_error"
10483+
",+SPV_INTEL_function_pointers"
10484+
",+SPV_INTEL_global_variable_fpga_decorations"
10485+
",+SPV_INTEL_global_variable_host_access"
10486+
",+SPV_INTEL_inline_assembly"
10487+
",+SPV_INTEL_int4"
10488+
",+SPV_INTEL_joint_matrix"
10489+
",+SPV_INTEL_long_composites"
10490+
",+SPV_INTEL_media_block_io"
10491+
",+SPV_INTEL_memory_access_aliasing"
10492+
",+SPV_INTEL_optnone"
10493+
",+SPV_INTEL_split_barrier"
10494+
",+SPV_INTEL_subgroup_matrix_multiply_accumulate"
10495+
",+SPV_INTEL_subgroups"
10496+
",+SPV_INTEL_tensor_float32_conversion"
10497+
",+SPV_INTEL_ternary_bitwise_function"
10498+
",+SPV_INTEL_usm_storage_classes"
10499+
",+SPV_INTEL_variable_length_array";
10500+
std::string KHRExtArg = ",+SPV_KHR_16bit_storage"
10501+
",+SPV_KHR_bfloat16"
10502+
",+SPV_KHR_bit_instructions"
10503+
",+SPV_KHR_cooperative_matrix"
10504+
",+SPV_KHR_device_group"
10505+
",+SPV_KHR_expect_assume"
10506+
",+SPV_KHR_float_controls"
10507+
",+SPV_KHR_fragment_shader_barycentric"
10508+
",+SPV_KHR_fragment_shading_rate"
10509+
",+SPV_KHR_integer_dot_product"
10510+
",+SPV_KHR_linkonce_odr"
10511+
",+SPV_KHR_multiview"
10512+
",+SPV_KHR_no_integer_wrap_decoration"
10513+
",+SPV_KHR_non_semantic_info"
10514+
",+SPV_KHR_physical_storage_buffer"
10515+
",+SPV_KHR_post_depth_coverage"
10516+
",+SPV_KHR_ray_query"
10517+
",+SPV_KHR_ray_tracing"
10518+
",+SPV_KHR_shader_clock"
10519+
",+SPV_KHR_shader_draw_parameters"
10520+
",+SPV_KHR_subgroup_rotate"
10521+
",+SPV_KHR_uniform_group_instructions"
10522+
",+SPV_KHR_vulkan_memory_model";
10523+
std::string NVExtArg = ",+SPV_NV_shader_subgroup_partitioned";
10524+
ExtArg = ExtArg + DefaultExtArg + GoogleExtArg + IntelExtArg + KHRExtArg +
10525+
NVExtArg;
10526+
BackendArgs.push_back(TCArgs.MakeArgString(ExtArg));
1045910527
}
1046010528

1046110529
// Utility function to gather all llvm-spirv options.

clang/test/Driver/sycl-spirv-backend.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
///
44
// RUN: %clangxx -fsycl -fsycl-use-spirv-backend-for-spirv-gen -### %s 2>&1 | FileCheck %s
55

6-
// CHECK: llc{{.*}} "-filetype=obj" "-mtriple=spirv64{{[^-]*}}-unknown-unknown" "--avoid-spirv-capabilities=Shader" "--translator-compatibility-mode" "--spirv-ext=
6+
// CHECK: llc{{.*}} "-filetype=obj" "-mtriple=spirv64{{[^-]*}}-unknown-unknown" "--avoid-spirv-capabilities=Shader" "--translator-compatibility-mode" "-spirv-ext=+SPV_EXT_arithmetic_fence,+SPV_EXT_demote_to_helper_invocation,+SPV_EXT_descriptor_indexing,+SPV_EXT_fragment_fully_covered,+SPV_EXT_fragment_invocation_density,+SPV_EXT_fragment_shader_interlock,+SPV_EXT_mesh_shader,+SPV_EXT_optnone,+SPV_EXT_relaxed_printf_string_address_space,+SPV_EXT_shader_atomic_float16_add,+SPV_EXT_shader_atomic_float_add,+SPV_EXT_shader_atomic_float_min_max,+SPV_EXT_shader_image_int64,+SPV_EXT_shader_stencil_export,+SPV_EXT_shader_viewport_index_layer,+SPV_GOOGLE_hlsl_functionality1,+SPV_GOOGLE_user_type,+SPV_INTEL_2d_block_io,+SPV_INTEL_arbitrary_precision_integers,+SPV_INTEL_bfloat16_conversion,+SPV_INTEL_bindless_images,+SPV_INTEL_cache_controls,+SPV_INTEL_float_controls2,+SPV_INTEL_fp_max_error,+SPV_INTEL_function_pointers,+SPV_INTEL_global_variable_fpga_decorations,+SPV_INTEL_global_variable_host_access,+SPV_INTEL_inline_assembly,+SPV_INTEL_int4,+SPV_INTEL_joint_matrix,+SPV_INTEL_long_composites,+SPV_INTEL_media_block_io,+SPV_INTEL_memory_access_aliasing,+SPV_INTEL_optnone,+SPV_INTEL_split_barrier,+SPV_INTEL_subgroup_matrix_multiply_accumulate,+SPV_INTEL_subgroups,+SPV_INTEL_tensor_float32_conversion,+SPV_INTEL_ternary_bitwise_function,+SPV_INTEL_usm_storage_classes,+SPV_INTEL_variable_length_array,+SPV_KHR_16bit_storage,+SPV_KHR_bfloat16,+SPV_KHR_bit_instructions,+SPV_KHR_cooperative_matrix,+SPV_KHR_device_group,+SPV_KHR_expect_assume,+SPV_KHR_float_controls,+SPV_KHR_float_controls2,+SPV_KHR_fragment_shader_barycentric,+SPV_KHR_fragment_shading_rate,+SPV_KHR_integer_dot_product,+SPV_KHR_linkonce_odr,+SPV_KHR_multiview,+SPV_KHR_no_integer_wrap_decoration,+SPV_KHR_non_semantic_info,+SPV_KHR_physical_storage_buffer,+SPV_KHR_post_depth_coverage,+SPV_KHR_ray_query,+SPV_KHR_ray_tracing,+SPV_KHR_shader_clock,+SPV_KHR_shader_draw_parameters,+SPV_KHR_subgroup_rotate,+SPV_KHR_uniform_group_instructions,+SPV_KHR_vulkan_memory_model,+SPV_NV_shader_subgroup_partitioned"

0 commit comments

Comments
 (0)