diff options
| author | Yong He <yonghe@outlook.com> | 2024-10-27 09:40:17 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-27 09:40:17 -0700 |
| commit | 14f4b45d4b977805c5dbe472e327bdd3e856fb94 (patch) | |
| tree | 8c913b1465fd1cedb3e3a1ddca8bdccd3f0ba364 /source/slang/hlsl.meta.slang | |
| parent | a508b264eda4bc3c99ba1f44eab1dec6e5ce06c0 (diff) | |
Add `InterlockedAddF64` intrinsic. (#5412)
Diffstat (limited to 'source/slang/hlsl.meta.slang')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 7c18f4717..39957f7ce 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -4425,6 +4425,21 @@ ${{{{ } } + [require(cuda, cuda_sm_6_0)] + [require(spirv, spvAtomicFloat64AddEXT)] + void InterlockedAddF64(uint byteAddress, double valueToAdd, out double originalValue) + { + __target_switch + { + case cuda: __intrinsic_asm "(*$3 = atomicAdd($0._getPtrAt<double>($1), $2))"; + default: + { + let buf = __getEquivalentStructuredBuffer<double>(this); + originalValue = __atomic_add(buf[byteAddress / 8], valueToAdd); + return; + } + } + } // FP16x2 /// @internal |
