aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
diff options
context:
space:
mode:
authorVyacheslav Levytskyy <vyacheslav.levytskyy@intel.com>2024-10-15 18:43:09 +0200
committerGitHub <noreply@github.com>2024-10-15 18:43:09 +0200
commitbfe84f7085d82d06d61c632a7bad1e692fd159e4 (patch)
treefd5d5547de5a64e0ccf8e61681fb43826443701a /llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
parent8d8996dd1e5ded4da4c87ccbb103576a3c52cd15 (diff)
downloadllvm-bfe84f7085d82d06d61c632a7bad1e692fd159e4.zip
llvm-bfe84f7085d82d06d61c632a7bad1e692fd159e4.tar.gz
llvm-bfe84f7085d82d06d61c632a7bad1e692fd159e4.tar.bz2
[SPIR-V] Implement support of the SPV_INTEL_split_barrier SPIRV extension (#112359)
This PR implements support of the SPV_EXT_arithmetic_fence SPIRV extension (https://github.com/KhronosGroup/SPIRV-Registry/blob/main/extensions/INTEL/SPV_INTEL_split_barrier.asciidoc) and adds builtins from https://registry.khronos.org/OpenCL/extensions/intel/cl_intel_split_work_group_barrier.html
Diffstat (limited to 'llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp')
-rw-r--r--llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp b/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
index 70cdd73..db5463f 100644
--- a/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
@@ -1211,6 +1211,13 @@ void addInstrRequirements(const MachineInstr &MI,
Reqs.addExtension(SPIRV::Extension::SPV_EXT_arithmetic_fence);
Reqs.addCapability(SPIRV::Capability::ArithmeticFenceEXT);
break;
+ case SPIRV::OpControlBarrierArriveINTEL:
+ case SPIRV::OpControlBarrierWaitINTEL:
+ if (ST.canUseExtension(SPIRV::Extension::SPV_INTEL_split_barrier)) {
+ Reqs.addExtension(SPIRV::Extension::SPV_INTEL_split_barrier);
+ Reqs.addCapability(SPIRV::Capability::SplitBarrierINTEL);
+ }
+ break;
default:
break;
}