[PATCH] D156297: [SPIRV] Add support for SPV_INTEL_optnone
Paulo Matos via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 1 03:54:24 PDT 2023
This revision was automatically updated to reflect the committed changes.
Closed by commit rG8f3b87fc14bd: [SPIRV] Add support for SPV_INTEL_optnone (authored by pmatos).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D156297/new/
https://reviews.llvm.org/D156297
Files:
llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
llvm/lib/Target/SPIRV/SPIRVSubtarget.cpp
llvm/lib/Target/SPIRV/SPIRVSymbolicOperands.td
llvm/test/CodeGen/SPIRV/optnone.ll
Index: llvm/test/CodeGen/SPIRV/optnone.ll
===================================================================
--- llvm/test/CodeGen/SPIRV/optnone.ll
+++ llvm/test/CodeGen/SPIRV/optnone.ll
@@ -1,6 +1,9 @@
;; Check that optnone is correctly ignored when extension is not enabled
; RUN: llc -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV
+; CHECK-SPIRV: OpCapability OptNoneINTEL
+; CHECK-SPIRV: OpExtension "SPV_INTEL_optnone"
+
;; Per SPIR-V spec:
;; FunctionControlDontInlineMask = 0x2 (2)
; CHECK-SPIRV: %[[#]] = OpFunction %[[#]] DontInline
Index: llvm/lib/Target/SPIRV/SPIRVSymbolicOperands.td
===================================================================
--- llvm/lib/Target/SPIRV/SPIRVSymbolicOperands.td
+++ llvm/lib/Target/SPIRV/SPIRVSymbolicOperands.td
@@ -243,6 +243,7 @@
defm SPV_INTEL_unstructured_loop_controls : ExtensionOperand<55>;
defm SPV_EXT_demote_to_helper_invocation : ExtensionOperand<56>;
defm SPV_INTEL_fpga_reg : ExtensionOperand<57>;
+defm SPV_INTEL_optnone : ExtensionOperand<58>;
//===----------------------------------------------------------------------===//
// Multiclass used to define Capabilities enum values and at the same time
@@ -396,6 +397,7 @@
defm FragmentDensityEXT : CapabilityOperand<5291, 0, 0, [], [Shader]>;
defm PhysicalStorageBufferAddressesEXT : CapabilityOperand<5347, 0, 0, [], [Shader]>;
defm CooperativeMatrixNV : CapabilityOperand<5357, 0, 0, [], [Shader]>;
+defm OptNoneINTEL : CapabilityOperand<6094, 0, 0, [SPV_INTEL_optnone], []>;
//===----------------------------------------------------------------------===//
// Multiclass used to define SourceLanguage enum values and at the same time
Index: llvm/lib/Target/SPIRV/SPIRVSubtarget.cpp
===================================================================
--- llvm/lib/Target/SPIRV/SPIRVSubtarget.cpp
+++ llvm/lib/Target/SPIRV/SPIRVSubtarget.cpp
@@ -96,8 +96,11 @@
if (!isOpenCLEnv())
return;
// A default extension for testing.
+ // FIXME: This should be changed when we can select extensions through a
+ // command line flag.
AvailableExtensions.insert(
SPIRV::Extension::SPV_KHR_no_integer_wrap_decoration);
+ AvailableExtensions.insert(SPIRV::Extension::SPV_INTEL_optnone);
}
// TODO: use command line args for this rather than just defaults.
Index: llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
===================================================================
--- llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
+++ llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
@@ -552,6 +552,10 @@
// TODO: verify if this needs some checks.
addAvailableCaps({Capability::Float16, Capability::Float64});
+ // Add cap for SPV_INTEL_optnone.
+ // FIXME: this should be added only if the target has the extension.
+ addAvailableCaps({Capability::OptNoneINTEL});
+
// TODO: add OpenCL extensions.
}
} // namespace SPIRV
@@ -898,6 +902,13 @@
MAI.Reqs.getAndAddRequirements(
SPIRV::OperandCategory::ExecutionModeOperand,
SPIRV::ExecutionMode::VecTypeHint, ST);
+
+ if (F.hasOptNone() &&
+ ST.canUseExtension(SPIRV::Extension::SPV_INTEL_optnone)) {
+ // Output OpCapability OptNoneINTEL.
+ MAI.Reqs.addExtension(SPIRV::Extension::SPV_INTEL_optnone);
+ MAI.Reqs.addCapability(SPIRV::Capability::OptNoneINTEL);
+ }
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D156297.545996.patch
Type: text/x-patch
Size: 3382 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230801/92911881/attachment.bin>
More information about the llvm-commits
mailing list