diff options
| -rw-r--r-- | source/slang/hlsl.meta.slang | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index e677b9020..a4f551644 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -61,6 +61,7 @@ float __atomicAdd(__ref float value, float amount); // Helper for hlsl, using NVAPI __target_intrinsic(hlsl, "NvInterlockedAddUint64($0, $1, $2)") +[__requiresNVAPI] uint2 __atomicAdd(RWByteAddressBuffer buf, uint offset, uint2); @@ -85,6 +86,7 @@ int64_t __atomicAdd(__ref int64_t value, int64_t amount); // Helper for HLSL, using NVAPI __target_intrinsic(hlsl, "NvInterlockedCompareExchangeUint64($0, $1, $2, $3)") +[__requiresNVAPI] uint2 __cas(RWByteAddressBuffer buf, uint offset, uint2 compareValue, uint2 value); __target_intrinsic(glsl, "atomicCompSwap($0, $1, $2)") @@ -95,6 +97,7 @@ uint64_t __cas(__ref uint64_t ioValue, uint64_t compareValue, uint64_t newValue) // Max __target_intrinsic(hlsl, "NvInterlockedMaxUint64($0, $1, $2)") +[__requiresNVAPI] uint2 __atomicMax(RWByteAddressBuffer buf, uint offset, uint2 value); __target_intrinsic(glsl, "atomicMax($0, $1)") @@ -105,6 +108,7 @@ uint64_t __atomicMax(__ref uint64_t ioValue, uint64_t value); // Min __target_intrinsic(hlsl, "NvInterlockedMinUint64($0, $1, $2)") +[__requiresNVAPI] uint2 __atomicMin(RWByteAddressBuffer buf, uint offset, uint2 value); __target_intrinsic(glsl, "atomicMin($0, $1)") @@ -115,6 +119,7 @@ uint64_t __atomicMin(__ref uint64_t ioValue, uint64_t value); // And __target_intrinsic(hlsl, "NvInterlockedAndUint64($0, $1, $2)") +[__requiresNVAPI] uint2 __atomicAnd(RWByteAddressBuffer buf, uint offset, uint2 value); __target_intrinsic(glsl, "atomicAnd($0, $1)") @@ -125,6 +130,7 @@ uint64_t __atomicAnd(__ref uint64_t ioValue, uint64_t value); // Or __target_intrinsic(hlsl, "NvInterlockedOrUint64($0, $1, $2)") +[__requiresNVAPI] uint2 __atomicOr(RWByteAddressBuffer buf, uint offset, uint2 value); __target_intrinsic(glsl, "atomicOr($0, $1)") @@ -135,6 +141,7 @@ uint64_t __atomicOr(__ref uint64_t ioValue, uint64_t value); // Xor __target_intrinsic(hlsl, "NvInterlockedXorUint64($0, $1, $2)") +[__requiresNVAPI] uint2 __atomicXor(RWByteAddressBuffer buf, uint offset, uint2 value); __target_intrinsic(glsl, "atomicXor($0, $1)") @@ -298,6 +305,7 @@ ${{{{ // Without returning original value __target_intrinsic(hlsl, "(NvInterlockedAddFp32($0, $1, $2))") + [__requiresNVAPI] __cuda_sm_version(2.0) __target_intrinsic(cuda, "atomicAdd((float*)$0._getPtrAt($1), $2)") void InterlockedAddF32(uint byteAddress, float valueToAdd); |
