From ce94cbf297599296d440d1204053eaa3550a1558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henry=20Linjam=C3=A4ki?= Date: Thu, 30 Nov 2023 14:42:23 +0200 Subject: [PATCH] Disable SPIR-V extensions except ones needed by chipStar --- clang/lib/Driver/ToolChains/HIPSPV.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/HIPSPV.cpp b/clang/lib/Driver/ToolChains/HIPSPV.cpp index 7354d7280c12da..ff07d278430c32 100644 --- a/clang/lib/Driver/ToolChains/HIPSPV.cpp +++ b/clang/lib/Driver/ToolChains/HIPSPV.cpp @@ -99,8 +99,18 @@ void HIPSPV::Linker::constructLinkAndEmitSpirvCommand( // We need 1.2 when using warp-level primitivies via sub group extensions. // Strictly put we'd need 1.3 for the standard non-extension shuffle // operations, but it's not supported by any target yet. - llvm::opt::ArgStringList TrArgs{"--spirv-max-version=1.2", - "--spirv-ext=+all"}; + llvm::opt::ArgStringList TrArgs{ + "--spirv-max-version=1.2", + "--spirv-ext=-all" + + // TODO: Consider upstreaming -Xspirv-translator found in intel-llvm + // repository and make it work for SPIR-V toolchains so chipStar may + // control extensions it needs (if/when necessary). + + // Needed for experimental indirect call support. + ",+SPV_INTEL_function_pointers" + // Needed for shuffles below SPIR-V 1.3 + ",+SPV_INTEL_subgroups"}; InputInfo TrInput = InputInfo(types::TY_LLVM_BC, TempFile, ""); SPIRV::constructTranslateCommand(C, *this, JA, Output, TrInput, TrArgs); }