@@ -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