Sietze Riemersma
593f82ab9d
[HLSL][DXIL][SPRIV] Added GroupMemoryBarrier() ( #185383 )
...
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 -->
2026-03-26 13:24:27 -04:00
..
2026-03-16 13:36:53 -07:00
2026-03-25 20:57:08 +00:00
2025-11-27 13:58:47 -08:00
2026-03-16 13:36:53 -07:00
2025-10-16 12:31:54 -06:00
2025-08-28 09:12:36 -07:00
2026-03-23 15:51:22 +00:00
2026-03-16 13:36:53 -07:00
2026-03-11 08:54:53 -07:00
2026-03-25 11:32:35 -07:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-05-23 08:22:36 -07:00
2025-01-21 17:33:45 -08:00
2025-09-04 14:19:23 -07:00
2025-09-04 14:19:23 -07:00
2025-01-21 17:33:45 -08:00
2025-10-15 17:54:15 -07:00
2025-12-23 13:32:50 -07:00
2025-08-28 09:12:36 -07:00
2025-08-28 09:12:36 -07:00
2025-08-28 09:12:36 -07:00
2025-08-28 09:12:36 -07:00
2025-12-23 13:32:50 -07:00
2025-08-28 09:12:36 -07:00
2025-08-28 09:12:36 -07:00
2025-08-28 09:12:36 -07:00
2025-08-28 09:12:36 -07:00
2025-11-24 10:56:20 -08:00
2025-10-16 12:31:54 -06:00
2025-10-16 12:31:54 -06:00
2025-01-21 17:33:45 -08:00
2025-02-25 16:09:41 -05:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-09-22 21:37:56 -07:00
2026-03-16 13:36:53 -07:00
2025-09-22 21:37:56 -07:00
2026-03-16 13:36:53 -07:00
2025-09-04 14:19:23 -07:00
2025-11-20 07:38:32 -05:00
2025-11-18 16:41:07 +01:00
2025-12-12 09:34:41 -08:00
2025-12-12 09:34:41 -08:00
2025-11-20 07:38:32 -05:00
2025-11-18 16:41:07 +01:00
2025-12-12 09:34:41 -08:00
2025-12-12 09:34:41 -08:00
2025-02-25 16:09:41 -05:00
2025-04-14 10:34:15 -07:00
2025-09-04 14:19:23 -07:00
2025-09-04 14:19:23 -07:00
2025-04-14 10:34:15 -07:00
2025-04-14 10:34:15 -07:00
2025-05-17 10:38:24 -07:00
2025-05-17 10:38:24 -07:00
2025-05-17 10:38:24 -07:00
2025-05-17 10:38:24 -07:00
2026-03-17 12:06:07 -07:00
2025-01-21 17:33:45 -08:00
2025-11-04 17:04:39 +00:00
2026-01-26 15:06:48 +00:00
2025-04-14 10:34:15 -07:00
2025-08-15 10:45:34 -07:00
2025-06-16 16:44:55 -04:00
2025-06-16 16:44:55 -04:00
2025-06-24 12:00:21 -06:00
2025-01-15 15:36:50 -07:00
2025-06-24 12:00:21 -06:00
2025-07-17 14:51:53 -07:00
2025-07-14 16:39:01 -07:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2026-03-23 15:51:22 +00:00
2025-01-21 17:33:45 -08:00
2025-12-15 10:03:42 -08:00
2025-12-15 10:03:42 -08:00
2026-03-26 13:24:27 -04:00
2026-03-26 13:24:27 -04:00
2025-03-24 16:17:19 -07:00
2025-01-21 17:33:45 -08:00
2025-08-07 09:34:42 -07:00
2025-09-08 13:47:50 -04:00
2025-09-05 14:02:48 -04:00
2025-09-25 12:34:47 -04:00
2025-07-24 13:36:36 -07:00
2025-09-04 14:19:23 -07:00
2025-04-17 09:02:05 -07:00
2025-04-29 16:07:44 -04:00
2025-07-15 10:40:52 -07:00
2025-03-17 20:33:02 -04:00
2025-06-04 21:28:43 -04:00
2025-08-08 14:32:27 -07:00
2025-08-08 14:32:27 -07:00
2025-09-04 14:19:23 -07:00
2025-10-24 13:55:03 -07:00
2025-10-24 13:55:03 -07:00
2026-03-25 21:51:06 -07:00
2025-07-17 14:46:45 -07:00
2025-11-06 14:05:30 -05:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2026-03-10 15:11:10 -07:00
2026-03-13 15:00:27 -07:00
2025-10-29 11:54:18 -07:00
2025-06-23 14:53:57 -07:00
2025-09-04 14:19:23 -07:00
2025-09-04 14:19:23 -07:00
2025-09-04 14:19:23 -07:00
2025-04-10 16:40:05 -04:00
2026-03-18 11:49:34 -07:00
2026-03-25 11:32:35 -07:00
2025-12-23 13:32:50 -07:00
2025-12-23 13:32:50 -07:00
2025-08-28 09:12:36 -07:00
2025-08-28 09:12:36 -07:00
2025-12-23 13:32:50 -07:00
2025-08-28 09:12:36 -07:00
2025-08-28 09:12:36 -07:00
2025-03-29 00:45:11 -04:00
2025-08-28 09:12:36 -07:00
2025-08-28 09:12:36 -07:00
2025-01-21 17:33:45 -08:00
2025-09-10 19:49:34 -04:00
2025-09-10 19:49:34 -04:00
2025-09-26 11:58:54 -04:00
2025-08-28 17:10:10 -04:00
2025-08-28 17:10:10 -04:00
2025-09-26 13:43:58 -04:00
2025-09-26 11:58:54 -04:00
2025-09-26 11:58:54 -04:00
2025-08-14 18:40:11 -04:00
2025-08-28 17:10:10 -04:00
2025-08-28 17:10:10 -04:00
2025-09-26 13:43:58 -04:00
2025-09-26 13:43:58 -04:00
2025-09-26 13:43:58 -04:00
2025-08-14 18:40:11 -04:00
2025-09-26 11:58:54 -04:00
2025-09-26 11:58:54 -04:00
2025-08-14 18:40:11 -04:00
2025-08-28 17:10:10 -04:00
2025-09-26 11:58:54 -04:00
2025-10-01 16:42:38 -04:00
2025-08-28 17:10:10 -04:00
2025-10-01 16:42:38 -04:00
2025-08-28 17:10:10 -04:00
2025-09-26 13:43:58 -04:00
2025-09-10 19:49:34 -04:00
2025-09-10 19:49:34 -04:00
2025-08-14 18:40:11 -04:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-04-08 08:54:10 +09:00
2025-08-15 10:45:34 -07:00
2024-12-18 16:33:49 -05:00
2025-07-17 14:46:45 -07:00
2025-11-24 10:56:20 -08:00
2025-06-20 11:20:30 -07:00
2025-11-24 10:56:20 -08:00
2026-02-05 13:18:38 +00:00
2025-03-17 20:33:02 -04:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-09-04 14:19:23 -07:00
2025-10-24 13:55:03 -07:00
2025-10-29 13:42:08 -07:00
2025-10-24 13:55:03 -07:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-03-05 17:04:10 -08:00
2025-07-21 17:12:15 -07:00
2025-08-07 09:34:42 -07:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-04-21 10:26:27 -04:00
2025-04-11 14:32:44 -04:00
2025-01-21 17:33:45 -08:00
2026-03-04 10:37:22 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2026-03-11 15:49:48 -07:00
2026-03-23 10:19:18 -07:00
2026-03-10 18:30:37 -04:00
2026-03-12 14:42:17 -07:00
2025-01-21 17:33:45 -08:00
2025-01-27 23:26:56 -08:00
2025-10-28 11:01:13 -07:00
2026-03-10 00:48:40 -04:00
2025-01-16 10:35:23 -08:00
2025-01-21 17:33:45 -08:00
2026-01-29 12:09:27 -08:00
2026-02-17 17:32:40 -05:00
2026-02-03 03:00:45 -05:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-11-05 09:18:49 -08:00
2025-11-05 09:18:49 -08:00