Skip to content

Commit 86440cb

Browse files
[SPIR-V] Prefer SPV_INTEL_optnone over SPV_EXT_optnone when both extensions 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.
1 parent cdd652e commit 86440cb

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1807,12 +1807,12 @@ static void collectReqs(const Module &M, SPIRV::ModuleAnalysisInfo &MAI,
18071807
SPIRV::ExecutionMode::VecTypeHint, ST);
18081808

18091809
if (F.hasOptNone()) {
1810-
if (ST.canUseExtension(SPIRV::Extension::SPV_EXT_optnone)) {
1811-
MAI.Reqs.addExtension(SPIRV::Extension::SPV_EXT_optnone);
1812-
MAI.Reqs.addCapability(SPIRV::Capability::OptNoneEXT);
1813-
} else if (ST.canUseExtension(SPIRV::Extension::SPV_INTEL_optnone)) {
1810+
if (ST.canUseExtension(SPIRV::Extension::SPV_INTEL_optnone)) {
18141811
MAI.Reqs.addExtension(SPIRV::Extension::SPV_INTEL_optnone);
18151812
MAI.Reqs.addCapability(SPIRV::Capability::OptNoneINTEL);
1813+
} else if (ST.canUseExtension(SPIRV::Extension::SPV_EXT_optnone)) {
1814+
MAI.Reqs.addExtension(SPIRV::Extension::SPV_EXT_optnone);
1815+
MAI.Reqs.addCapability(SPIRV::Capability::OptNoneEXT);
18161816
}
18171817
}
18181818
}

llvm/test/CodeGen/SPIRV/extensions/SPV_EXT_optnone.ll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,19 @@
44
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown --spirv-ext=+SPV_EXT_optnone %s -o - -filetype=obj | spirv-val %}
55
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}
66

7+
; 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
8+
; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown --spirv-ext=all %s -o - | FileCheck %s --check-prefixes=CHECK-ALL-EXTENSIONS
9+
710
; CHECK-EXTENSION: OpCapability OptNoneEXT
811
; CHECK-EXTENSION: OpExtension "SPV_EXT_optnone"
912
; CHECK-NO-EXTENSION-NOT: OpCapability OptNoneINTEL
1013
; CHECK-NO-EXTENSION-NOT: OpCapability OptNoneEXT
1114
; CHECK-NO-EXTENSION-NOT: OpExtension "SPV_INTEL_optnone"
1215
; CHECK-NO-EXTENSION-NOT: OpExtension "SPV_EXT_optnone"
1316

17+
; CHECK-TWO-EXTENSIONS: OpExtension "SPV_INTEL_optnone"
18+
; CHECK-ALL-EXTENSIONS: OpExtension "SPV_INTEL_optnone"
19+
1420
define spir_func void @foo() #0 {
1521
; CHECK-EXTENSION: %[[#]] = OpFunction %[[#]] DontInline|OptNoneEXT %[[#]]
1622
entry:

0 commit comments

Comments
 (0)