aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
diff options
context:
space:
mode:
authorjoaosaffran <126493771+joaosaffran@users.noreply.github.com>2024-11-14 23:34:07 -0800
committerGitHub <noreply@github.com>2024-11-14 23:34:07 -0800
commitbc6c0681271788ca7078fb679ac67b56944de1a6 (patch)
treeee597a685f743ee102db91c0bc96f56483bd11cf /llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
parent942928f3df16c01ea2b905f441d72cca138032e9 (diff)
downloadllvm-bc6c0681271788ca7078fb679ac67b56944de1a6.zip
llvm-bc6c0681271788ca7078fb679ac67b56944de1a6.tar.gz
llvm-bc6c0681271788ca7078fb679ac67b56944de1a6.tar.bz2
[HLSL] Adding HLSL `clip` function. (#114588)
Adding HLSL `clip` function. - adding llvm intrinsic - adding sema checks - adding dxil lowering - ading spirv lowering - adding sema tests - adding codegen tests - adding lowering tests Closes #99093 --------- Co-authored-by: Joao Saffran <jderezende@microsoft.com>
Diffstat (limited to 'llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp')
-rw-r--r--llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp b/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
index 0308c56..551c36d 100644
--- a/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
@@ -633,7 +633,8 @@ void RequirementHandler::initAvailableCapabilities(const SPIRVSubtarget &ST) {
if (ST.isAtLeastSPIRVVer(VersionTuple(1, 6)))
addAvailableCaps({Capability::DotProduct, Capability::DotProductInputAll,
Capability::DotProductInput4x8Bit,
- Capability::DotProductInput4x8BitPacked});
+ Capability::DotProductInput4x8BitPacked,
+ Capability::DemoteToHelperInvocation});
// Add capabilities enabled by extensions.
for (auto Extension : ST.getAllAvailableExtensions()) {
@@ -1419,6 +1420,19 @@ void addInstrRequirements(const MachineInstr &MI,
Reqs.addCapability(SPIRV::Capability::SplitBarrierINTEL);
}
break;
+ case SPIRV::OpKill: {
+ Reqs.addCapability(SPIRV::Capability::Shader);
+ } break;
+ case SPIRV::OpDemoteToHelperInvocation:
+ Reqs.addCapability(SPIRV::Capability::DemoteToHelperInvocation);
+
+ if (ST.canUseExtension(
+ SPIRV::Extension::SPV_EXT_demote_to_helper_invocation)) {
+ if (!ST.isAtLeastSPIRVVer(llvm::VersionTuple(1, 6)))
+ Reqs.addExtension(
+ SPIRV::Extension::SPV_EXT_demote_to_helper_invocation);
+ }
+ break;
case SPIRV::OpSDot:
case SPIRV::OpUDot:
AddDotProductRequirements(MI, Reqs, ST);