Adds the `GroupMemoryBarrier()` HLSL function to SPIRV and DirectX with additional tests for the different backends. When this moves in, will create another PR with this as a template for the other Barriers: - `AllMemoryBarrier()` #99076 - `AllMemoryBarrierWithGroupSync()` #99090 - `DeviceMemoryBarrier()` #99105 - `DeviceMemoryBarrierWithGroupSync()` #99106 `Barrier()` does not have support for SPIRV, so I will exclude that from the next PR. - [x] Implement GroupMemoryBarrier clang builtin, - [x] Link GroupMemoryBarrier clang builtin with hlsl_intrinsics.h - [x] Add sema checks for GroupMemoryBarrier to CheckHLSLBuiltinFunctionCall in SemaChecking.cpp - [x] Add codegen for GroupMemoryBarrier to EmitHLSLBuiltinExpr in CGBuiltin.cpp - [x] Add codegen tests to clang/test/CodeGenHLSL/builtins/GroupMemoryBarrier.hlsl - [x] Add sema tests to clang/test/SemaHLSL/BuiltIns/GroupMemoryBarrier-errors.hlsl - [x] Create the int_dx_GroupMemoryBarrier intrinsic in IntrinsicsDirectX.td - [x] Create the DXILOpMapping of int_dx_GroupMemoryBarrier to 80 in DXIL.td - [x] Create the GroupMemoryBarrier.ll and GroupMemoryBarrier_errors.ll tests in llvm/test/CodeGen/DirectX/ - [x] Create the int_spv_GroupMemoryBarrier intrinsic in IntrinsicsSPIRV.td - [x] In SPIRVInstructionSelector.cpp create the GroupMemoryBarrier lowering and map it to int_spv_GroupMemoryBarrier in SPIRVInstructionSelector::selectIntrinsic. - [x] Create SPIR-V backend test case in llvm/test/CodeGen/SPIRV/hlsl-intrinsics/GroupMemoryBarrier.ll <!-- branch-stack-start --> <!-- branch-stack-end -->
The LLVM Compiler Infrastructure ================================ This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments. LLVM is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt. Please see the documentation provided in docs/ for further assistance with LLVM, and in particular docs/GettingStarted.rst for getting started with LLVM and docs/README.txt for an overview of LLVM's documentation setup. If you are writing a package for LLVM, see docs/Packaging.rst for our suggestions.