From c60ad5456b5329b5328a2a9cfc4c0e569ede8a2c Mon Sep 17 00:00:00 2001 From: "Maksimova, Viktoria" Date: Wed, 29 Apr 2026 05:28:51 -0700 Subject: [PATCH 1/2] Revert "Revert "add support for SPV_EXT_optnone (#2951)"" Re-add SPV_EXT_optnone support and migrate from the deprecated SPV_INTEL_optnone extension. The INTEL variant remains registered for backward compatibility in the reader, but the writer now exclusively uses SPV_EXT_optnone. This reverts commit 2bae4010f11c4d0f423f2021ef10d44b6ba33560. --- llvm-spirv/include/LLVMSPIRVExtensions.inc | 1 + llvm-spirv/lib/SPIRV/SPIRVInternal.h | 2 +- llvm-spirv/lib/SPIRV/SPIRVWriter.cpp | 9 +++++---- llvm-spirv/lib/SPIRV/libSPIRV/SPIRVIsValidEnum.h | 2 +- llvm-spirv/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h | 3 +-- llvm-spirv/lib/SPIRV/libSPIRV/spirv_internal.hpp | 7 ------- llvm-spirv/test/optnone.ll | 11 +++++------ 7 files changed, 14 insertions(+), 21 deletions(-) diff --git a/llvm-spirv/include/LLVMSPIRVExtensions.inc b/llvm-spirv/include/LLVMSPIRVExtensions.inc index 3ae4128d14565..afca50b32b409 100644 --- a/llvm-spirv/include/LLVMSPIRVExtensions.inc +++ b/llvm-spirv/include/LLVMSPIRVExtensions.inc @@ -46,6 +46,7 @@ EXT(SPV_INTEL_fp_fast_math_mode) EXT(SPV_INTEL_fpga_cluster_attributes) EXT(SPV_INTEL_loop_fuse) EXT(SPV_INTEL_long_composites) +EXT(SPV_EXT_optnone) EXT(SPV_INTEL_optnone) EXT(SPV_INTEL_fpga_dsp_control) EXT(SPV_INTEL_memory_access_aliasing) diff --git a/llvm-spirv/lib/SPIRV/SPIRVInternal.h b/llvm-spirv/lib/SPIRV/SPIRVInternal.h index 88b1ac26d732b..68f8cbd7d36d0 100644 --- a/llvm-spirv/lib/SPIRV/SPIRVInternal.h +++ b/llvm-spirv/lib/SPIRV/SPIRVInternal.h @@ -250,7 +250,7 @@ inline void SPIRVMap::init() { add(Attribute::AlwaysInline, FunctionControlInlineMask); add(Attribute::NoInline, FunctionControlDontInlineMask); - add(Attribute::OptimizeNone, internal::FunctionControlOptNoneINTELMask); + add(Attribute::OptimizeNone, FunctionControlOptNoneEXTMask); } typedef SPIRVMap SPIRSPIRVFuncCtlMaskMap; diff --git a/llvm-spirv/lib/SPIRV/SPIRVWriter.cpp b/llvm-spirv/lib/SPIRV/SPIRVWriter.cpp index ddec87c9c0f4f..ce7534330e8f4 100644 --- a/llvm-spirv/lib/SPIRV/SPIRVWriter.cpp +++ b/llvm-spirv/lib/SPIRV/SPIRVWriter.cpp @@ -5989,10 +5989,11 @@ SPIRVWord LLVMToSPIRVBase::transFunctionControlMask(Function *F) { [&](Attribute::AttrKind Attr, SPIRVFunctionControlMaskKind Mask) { if (F->hasFnAttribute(Attr)) { if (Attr == Attribute::OptimizeNone) { - if (!BM->isAllowedToUseExtension(ExtensionID::SPV_INTEL_optnone)) + if (BM->isAllowedToUseExtension(ExtensionID::SPV_EXT_optnone)) { + BM->addExtension(ExtensionID::SPV_EXT_optnone); + BM->addCapability(CapabilityOptNoneEXT); + } else return; - BM->addExtension(ExtensionID::SPV_INTEL_optnone); - BM->addCapability(internal::CapabilityOptNoneINTEL); } FCM |= Mask; } @@ -7589,7 +7590,7 @@ bool runSpirvBackend(Module *M, std::string &Result, std::string &ErrMsg, SPIRV::ExtensionID::SPV_INTEL_float_controls2, SPIRV::ExtensionID::SPV_INTEL_global_variable_fpga_decorations, SPIRV::ExtensionID::SPV_INTEL_global_variable_host_access, - SPIRV::ExtensionID::SPV_INTEL_optnone, + SPIRV::ExtensionID::SPV_EXT_optnone, SPIRV::ExtensionID::SPV_INTEL_usm_storage_classes, SPIRV::ExtensionID::SPV_INTEL_split_barrier, SPIRV::ExtensionID::SPV_INTEL_subgroups, diff --git a/llvm-spirv/lib/SPIRV/libSPIRV/SPIRVIsValidEnum.h b/llvm-spirv/lib/SPIRV/libSPIRV/SPIRVIsValidEnum.h index a6b8866e0aa63..7b8faf7f37df6 100644 --- a/llvm-spirv/lib/SPIRV/libSPIRV/SPIRVIsValidEnum.h +++ b/llvm-spirv/lib/SPIRV/libSPIRV/SPIRVIsValidEnum.h @@ -295,7 +295,7 @@ inline bool isValidFunctionControlMask(SPIRVWord Mask) { ValidMask |= FunctionControlDontInlineMask; ValidMask |= FunctionControlPureMask; ValidMask |= FunctionControlConstMask; - ValidMask |= internal::FunctionControlOptNoneINTELMask; + ValidMask |= FunctionControlOptNoneEXTMask; return (Mask & ~ValidMask) == 0; } diff --git a/llvm-spirv/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h b/llvm-spirv/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h index d6453aa631c35..e4405385958e7 100644 --- a/llvm-spirv/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h +++ b/llvm-spirv/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h @@ -638,7 +638,7 @@ template <> inline void SPIRVMap::init() { add(CapabilityAtomicFloat32AddEXT, "AtomicFloat32AddEXT"); add(CapabilityAtomicFloat64AddEXT, "AtomicFloat64AddEXT"); add(CapabilityLongCompositesINTEL, "LongCompositesINTEL"); - add(CapabilityOptNoneINTEL, "OptNoneINTEL"); + add(CapabilityOptNoneEXT, "OptNoneEXT"); add(CapabilityAtomicFloat16AddEXT, "AtomicFloat16AddEXT"); add(internal::CapabilityAtomicBFloat16AddINTEL, "AtomicBFloat16AddINTEL"); add(internal::CapabilityAtomicBFloat16MinMaxINTEL, @@ -673,7 +673,6 @@ template <> inline void SPIRVMap::init() { add(CapabilityTernaryBitwiseFunctionINTEL, "TernaryBitwiseFunctionINTEL"); add(CapabilityFMAKHR, "FMAKHR"); // From spirv_internal.hpp - add(internal::CapabilityOptNoneINTEL, "OptNoneINTEL"); add(internal::CapabilityTokenTypeINTEL, "TokenTypeINTEL"); add(internal::CapabilityHWThreadQueryINTEL, "HWThreadQueryINTEL"); add(internal::CapabilityGlobalVariableDecorationsINTEL, diff --git a/llvm-spirv/lib/SPIRV/libSPIRV/spirv_internal.hpp b/llvm-spirv/lib/SPIRV/libSPIRV/spirv_internal.hpp index 224b0197af02e..39de23516f365 100644 --- a/llvm-spirv/lib/SPIRV/libSPIRV/spirv_internal.hpp +++ b/llvm-spirv/lib/SPIRV/libSPIRV/spirv_internal.hpp @@ -98,7 +98,6 @@ enum InternalDecoration { }; enum InternalCapability { - ICapOptNoneINTEL = 6094, ICapTokenTypeINTEL = 6112, ICapabilityHWThreadQueryINTEL = 6134, ICapGlobalVariableDecorationsINTEL = 6146, @@ -127,8 +126,6 @@ enum InternalCapability { ICapabilityBindlessImagesINTEL = 6528 }; -enum InternalFunctionControlMask { IFunctionControlOptNoneINTELMask = 0x10000 }; - enum InternalExecutionMode { IExecModeNamedSubgroupSizeINTEL = 6446, }; @@ -286,8 +283,6 @@ constexpr Decoration DecorationImplementInCSRINTEL = constexpr Decoration DecorationArgumentAttributeINTEL = static_cast(IDecArgumentAttributeINTEL); -constexpr Capability CapabilityOptNoneINTEL = - static_cast(ICapOptNoneINTEL); constexpr Capability CapabilityTokenTypeINTEL = static_cast(ICapTokenTypeINTEL); constexpr Capability CapabilityGlobalVariableDecorationsINTEL = @@ -295,8 +290,6 @@ constexpr Capability CapabilityGlobalVariableDecorationsINTEL = constexpr Capability CapabilityBFloat16ArithmeticINTEL = static_cast(ICapabilityBFloat16ArithmeticINTEL); -constexpr FunctionControlMask FunctionControlOptNoneINTELMask = - static_cast(IFunctionControlOptNoneINTELMask); constexpr ExecutionMode ExecutionModeNamedSubgroupSizeINTEL = static_cast(IExecModeNamedSubgroupSizeINTEL); diff --git a/llvm-spirv/test/optnone.ll b/llvm-spirv/test/optnone.ll index 2cea007fd5f7c..31ab3116befcf 100644 --- a/llvm-spirv/test/optnone.ll +++ b/llvm-spirv/test/optnone.ll @@ -1,7 +1,7 @@ ; RUN: llvm-as %s -o %t.bc -; RUN: llvm-spirv %t.bc --spirv-ext=+SPV_INTEL_optnone -spirv-text -o - | FileCheck %s --check-prefix=CHECK-SPIRV +; RUN: llvm-spirv %t.bc --spirv-ext=+SPV_EXT_optnone -spirv-text -o - | FileCheck %s --check-prefix=CHECK-SPIRV -; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_optnone %t.bc -o %t.spv +; RUN: llvm-spirv --spirv-ext=+SPV_EXT_optnone %t.bc -o %t.spv ; RUN: llvm-spirv -r %t.spv -o %t.rev.bc ; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM @@ -12,13 +12,12 @@ ; RUN: llvm-spirv -r %t.spv -o %t.rev.bc ; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM-NO-EXT -; CHECK-SPIRV: Capability OptNoneINTEL -; CHECK-SPIRV: Extension "SPV_INTEL_optnone" +; CHECK-SPIRV: Capability OptNoneEXT +; CHECK-SPIRV: Extension "SPV_EXT_optnone" ; Per SPIR-V spec: ; FunctionControlDontInlineMask = 0x2 (2) -; Per SPIR-V spec extension SPV_INTEL_optnone: -; FunctionControlOptNoneINTELMask = 0x10000 (65536) +; FunctionControlOptNoneMask = 0x10000 (65536) ; CHECK-SPIRV: Function {{[0-9]+}} {{[0-9]+}} 65538 ; CHECK-SPIRV-NO-EXT: Function {{[0-9]+}} {{[0-9]+}} 2 From a634c060086498c74a967a21af82ec4614e89ecc Mon Sep 17 00:00:00 2001 From: Viktoria Maximova Date: Wed, 29 Apr 2026 18:57:50 +0200 Subject: [PATCH 2/2] Update spirv_internal.hpp --- llvm-spirv/lib/SPIRV/libSPIRV/spirv_internal.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/llvm-spirv/lib/SPIRV/libSPIRV/spirv_internal.hpp b/llvm-spirv/lib/SPIRV/libSPIRV/spirv_internal.hpp index 39de23516f365..87cb12043eaca 100644 --- a/llvm-spirv/lib/SPIRV/libSPIRV/spirv_internal.hpp +++ b/llvm-spirv/lib/SPIRV/libSPIRV/spirv_internal.hpp @@ -290,7 +290,6 @@ constexpr Capability CapabilityGlobalVariableDecorationsINTEL = constexpr Capability CapabilityBFloat16ArithmeticINTEL = static_cast(ICapabilityBFloat16ArithmeticINTEL); - constexpr ExecutionMode ExecutionModeNamedSubgroupSizeINTEL = static_cast(IExecModeNamedSubgroupSizeINTEL);