@@ -10446,16 +10446,37 @@ 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+ // All the extensions disabled by default. We do this because there are some
10450+ // extensions supported by the SPIR-V Backend that are not supported by our
10451+ // driver.
10452+ std::string ExtArg (" -spirv-ext=" );
10453+ // Enable only those we require.
10454+ std::string DefaultExtArg =
10455+ " ,+SPV_EXT_shader_atomic_float_add,+SPV_EXT_shader_atomic_float_min_max"
10456+ " ,+SPV_KHR_no_integer_wrap_decoration,+SPV_KHR_float_controls"
10457+ " ,+SPV_KHR_expect_assume,+SPV_KHR_linkonce_odr" ;
10458+ std::string INTELExtArg = " ,+SPV_INTEL_subgroups,+SPV_INTEL_media_block_io"
10459+ " ,+SPV_INTEL_function_pointers"
10460+ " ,+SPV_INTEL_inline_assembly"
10461+ " ,+SPV_INTEL_arbitrary_precision_integers"
10462+ " ,+SPV_INTEL_float_controls2"
10463+ " ,+SPV_INTEL_variable_length_array"
10464+ " ,+SPV_INTEL_long_composites"
10465+ " ,+SPV_INTEL_cache_controls"
10466+ " ,+SPV_KHR_shader_clock"
10467+ " ,+SPV_INTEL_bindless_images" ;
10468+ ExtArg = ExtArg + DefaultExtArg + INTELExtArg;
10469+ ExtArg += " ,+SPV_INTEL_bfloat16_conversion"
10470+ " ,+SPV_INTEL_joint_matrix"
10471+ " ,+SPV_KHR_uniform_group_instructions"
10472+ " ,+SPV_INTEL_tensor_float32_conversion"
10473+ " ,+SPV_INTEL_optnone"
10474+ " ,+SPV_KHR_non_semantic_info"
10475+ " ,+SPV_KHR_cooperative_matrix"
10476+ " ,+SPV_EXT_shader_atomic_float16_add"
10477+ " ,+SPV_INTEL_fp_max_error" ;
10478+
10479+ BackendArgs.push_back (TCArgs.MakeArgString (ExtArg));
1045910480}
1046010481
1046110482// Utility function to gather all llvm-spirv options.
0 commit comments