Skip to content

Commit

Permalink
[SPIR-V] Prefer SPV_INTEL_optnone over SPV_EXT_optnone when both exte…
Browse files Browse the repository at this point in the history
…nsions are available (#122082)

This PR fixes #122075. We
prefer SPV_INTEL_optnone over SPV_EXT_optnone when both extensions are
available, otherwise, when a target specifies a required extension
explicitly rather than allowing any of those (e.g., by providing
--spirv-ext=all command line argument), the Backend's behavior remains
unchanged. An existing test case is updated to check the case of 2
alternative extensions available at the same time.
  • Loading branch information
VyacheslavLevytskyy authored Jan 9, 2025
1 parent cdd652e commit 86440cb
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
8 changes: 4 additions & 4 deletions llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1807,12 +1807,12 @@ static void collectReqs(const Module &M, SPIRV::ModuleAnalysisInfo &MAI,
SPIRV::ExecutionMode::VecTypeHint, ST);

if (F.hasOptNone()) {
if (ST.canUseExtension(SPIRV::Extension::SPV_EXT_optnone)) {
MAI.Reqs.addExtension(SPIRV::Extension::SPV_EXT_optnone);
MAI.Reqs.addCapability(SPIRV::Capability::OptNoneEXT);
} else if (ST.canUseExtension(SPIRV::Extension::SPV_INTEL_optnone)) {
if (ST.canUseExtension(SPIRV::Extension::SPV_INTEL_optnone)) {
MAI.Reqs.addExtension(SPIRV::Extension::SPV_INTEL_optnone);
MAI.Reqs.addCapability(SPIRV::Capability::OptNoneINTEL);
} else if (ST.canUseExtension(SPIRV::Extension::SPV_EXT_optnone)) {
MAI.Reqs.addExtension(SPIRV::Extension::SPV_EXT_optnone);
MAI.Reqs.addCapability(SPIRV::Capability::OptNoneEXT);
}
}
}
Expand Down
6 changes: 6 additions & 0 deletions llvm/test/CodeGen/SPIRV/extensions/SPV_EXT_optnone.ll
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,19 @@
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown --spirv-ext=+SPV_EXT_optnone %s -o - -filetype=obj | spirv-val %}
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}

; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown --spirv-ext=+SPV_EXT_optnone,+SPV_INTEL_optnone %s -o - | FileCheck %s --check-prefixes=CHECK-TWO-EXTENSIONS
; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown --spirv-ext=all %s -o - | FileCheck %s --check-prefixes=CHECK-ALL-EXTENSIONS

; CHECK-EXTENSION: OpCapability OptNoneEXT
; CHECK-EXTENSION: OpExtension "SPV_EXT_optnone"
; CHECK-NO-EXTENSION-NOT: OpCapability OptNoneINTEL
; CHECK-NO-EXTENSION-NOT: OpCapability OptNoneEXT
; CHECK-NO-EXTENSION-NOT: OpExtension "SPV_INTEL_optnone"
; CHECK-NO-EXTENSION-NOT: OpExtension "SPV_EXT_optnone"

; CHECK-TWO-EXTENSIONS: OpExtension "SPV_INTEL_optnone"
; CHECK-ALL-EXTENSIONS: OpExtension "SPV_INTEL_optnone"

define spir_func void @foo() #0 {
; CHECK-EXTENSION: %[[#]] = OpFunction %[[#]] DontInline|OptNoneEXT %[[#]]
entry:
Expand Down

0 comments on commit 86440cb

Please sign in to comment.