diff options
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 58 | ||||
| -rw-r--r-- | source/slang/hlsl.meta.slang.h | 58 |
2 files changed, 58 insertions, 58 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 98b50e574..541d12112 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -18,26 +18,26 @@ __magic_type(HLSLByteAddressBufferType) __intrinsic_type($(kIROp_HLSLByteAddressBufferType))
struct ByteAddressBuffer
{
- __target_intrinsic(glsl, "$1 = $0._data.length()")
+ __target_intrinsic(glsl, "$1 = $0._data.length() * 4")
void GetDimensions(
out uint dim);
- __target_intrinsic(glsl, "$0._data[$1]")
+ __target_intrinsic(glsl, "$0._data[$1/4]")
uint Load(int location);
uint Load(int location, out uint status);
- __target_intrinsic(glsl, "uvec2($0._data[$1], $0._data[$1+1])")
+ __target_intrinsic(glsl, "uvec2($0._data[$1/4], $0._data[$1/4+1])")
uint2 Load2(int location);
uint2 Load2(int location, out uint status);
- __target_intrinsic(glsl, "uvec3($0._data[$1], $0._data[$1+1], $0._data[$1+2])")
+ __target_intrinsic(glsl, "uvec3($0._data[$1/4], $0._data[$1/4+1], $0._data[$1/4+2])")
uint3 Load3(int location);
uint3 Load3(int location, out uint status);
- __target_intrinsic(glsl, "uvec4($0._data[$1], $0._data[$1+1], $0._data[$1+2], $0._data[$1+3])")
+ __target_intrinsic(glsl, "uvec4($0._data[$1/4], $0._data[$1/4+1], $0._data[$1/4+2], $0._data[$1/4+3])")
uint4 Load4(int location);
uint4 Load4(int location, out uint status);
@@ -109,133 +109,133 @@ struct $(item.name) // Note(tfoley): supports all operations from `ByteAddressBuffer`
// TODO(tfoley): can this be made a sub-type?
- __target_intrinsic(glsl, "$1 = $0._data.length()")
+ __target_intrinsic(glsl, "$1 = $0._data.length() * 4")
void GetDimensions(
out uint dim);
- __target_intrinsic(glsl, "$0._data[$1]")
+ __target_intrinsic(glsl, "$0._data[$1/4]")
uint Load(int location);
uint Load(int location, out uint status);
- __target_intrinsic(glsl, "uvec2($0._data[$1], $0._data[$1+4])")
+ __target_intrinsic(glsl, "uvec2($0._data[$1/4], $0._data[$1/4+1])")
uint2 Load2(int location);
uint2 Load2(int location, out uint status);
- __target_intrinsic(glsl, "uvec3($0._data[$1], $0._data[$1+4], $0._data[$1+8])")
+ __target_intrinsic(glsl, "uvec3($0._data[$1/4], $0._data[$1/4+1], $0._data[$1/4+2])")
uint3 Load3(int location);
uint3 Load3(int location, out uint status);
- __target_intrinsic(glsl, "uvec4($0._data[$1], $0._data[$1+4], $0._data[$1+8], $0._data[$1+12])")
+ __target_intrinsic(glsl, "uvec4($0._data[$1/4], $0._data[$1/4+1], $0._data[$1/4+2], $0._data[$1/4+3])")
uint4 Load4(int location);
uint4 Load4(int location, out uint status);
// Added operations:
- __target_intrinsic(glsl, "($3 = atomicAdd($0._data[$1], $2))")
+ __target_intrinsic(glsl, "($3 = atomicAdd($0._data[$1/4], $2))")
void InterlockedAdd(
UINT dest,
UINT value,
out UINT original_value);
- __target_intrinsic(glsl, "atomicAdd($0._data[$1], $2)")
+ __target_intrinsic(glsl, "atomicAdd($0._data[$1/4], $2)")
void InterlockedAdd(
UINT dest,
UINT value);
- __target_intrinsic(glsl, "($3 = atomicAnd($0._data[$1], $2))")
+ __target_intrinsic(glsl, "($3 = atomicAnd($0._data[$1/4], $2))")
void InterlockedAnd(
UINT dest,
UINT value,
out UINT original_value);
- __target_intrinsic(glsl, "atomicAnd($0._data[$1], $2)")
+ __target_intrinsic(glsl, "atomicAnd($0._data[$1/4], $2)")
void InterlockedAnd(
UINT dest,
UINT value);
- __target_intrinsic(glsl, "($4 = atomicCompSwap($0._data[$1], $2, $3))")
+ __target_intrinsic(glsl, "($4 = atomicCompSwap($0._data[$1/4], $2, $3))")
void InterlockedCompareExchange(
UINT dest,
UINT compare_value,
UINT value,
out UINT original_value);
- __target_intrinsic(glsl, "atomicCompSwap($0._data[$1], $2, $3)")
+ __target_intrinsic(glsl, "atomicCompSwap($0._data[$1/4], $2, $3)")
void InterlockedCompareStore(
UINT dest,
UINT compare_value,
UINT value);
- __target_intrinsic(glsl, "($3 = atomicExchange($0._data[$1], $2))")
+ __target_intrinsic(glsl, "($3 = atomicExchange($0._data[$1/4], $2))")
void InterlockedExchange(
UINT dest,
UINT value,
out UINT original_value);
- __target_intrinsic(glsl, "($3 = atomicMax($0._data[$1], $2))")
+ __target_intrinsic(glsl, "($3 = atomicMax($0._data[$1/4], $2))")
void InterlockedMax(
UINT dest,
UINT value,
out UINT original_value);
- __target_intrinsic(glsl, "atomicMax($0._data[$1], $2)")
+ __target_intrinsic(glsl, "atomicMax($0._data[$1/4], $2)")
void InterlockedMax(
UINT dest,
UINT value);
- __target_intrinsic(glsl, "($3 = atomicMin($0._data[$1], $2))")
+ __target_intrinsic(glsl, "($3 = atomicMin($0._data[$1/4], $2))")
void InterlockedMin(
UINT dest,
UINT value,
out UINT original_value);
- __target_intrinsic(glsl, "atomicMin($0._data[$1], $2)")
+ __target_intrinsic(glsl, "atomicMin($0._data[$1/4], $2)")
void InterlockedMin(
UINT dest,
UINT value);
- __target_intrinsic(glsl, "($3 = atomicOr($0._data[$1], $2))")
+ __target_intrinsic(glsl, "($3 = atomicOr($0._data[$1/4], $2))")
void InterlockedOr(
UINT dest,
UINT value,
out UINT original_value);
- __target_intrinsic(glsl, "atomicOr($0._data[$1], $2)")
+ __target_intrinsic(glsl, "atomicOr($0._data[$1/4], $2)")
void InterlockedOr(
UINT dest,
UINT value);
- __target_intrinsic(glsl, "($3 = atomicXor($0._data[$1], $2))")
+ __target_intrinsic(glsl, "($3 = atomicXor($0._data[$1/4], $2))")
void InterlockedXor(
UINT dest,
UINT value,
out UINT original_value);
- __target_intrinsic(glsl, "atomicXor($0._data[$1], $2)")
+ __target_intrinsic(glsl, "atomicXor($0._data[$1/4], $2)")
void InterlockedXor(
UINT dest,
UINT value);
- __target_intrinsic(glsl, "$0._data[$1] = $2")
+ __target_intrinsic(glsl, "$0._data[$1/4] = $2")
void Store(
uint address,
uint value);
- __target_intrinsic(glsl, "$0._data[$1] = $2.x, $0._data[$1+4] = $2.y")
+ __target_intrinsic(glsl, "$0._data[$1/4] = $2.x, $0._data[$1/4+1] = $2.y")
void Store2(
uint address,
uint2 value);
- __target_intrinsic(glsl, "$0._data[$1] = $2.x, $0._data[$1+4] = $2.y, $0._data[$1+8] = $2.z")
+ __target_intrinsic(glsl, "$0._data[$1/4] = $2.x, $0._data[$1/4+1] = $2.y, $0._data[$1/4+2] = $2.z")
void Store3(
uint address,
uint3 value);
- __target_intrinsic(glsl, "$0._data[$1] = $2.x, $0._data[$1+4] = $2.y, $0._data[$1+8] = $2.z, $0._data[$1+12] = $2.w")
+ __target_intrinsic(glsl, "$0._data[$1/4] = $2.x, $0._data[$1/4+1] = $2.y, $0._data[$1/4+2] = $2.z, $0._data[$1/4+3] = $2.w")
void Store4(
uint address,
uint4 value);
diff --git a/source/slang/hlsl.meta.slang.h b/source/slang/hlsl.meta.slang.h index ea21a0fde..9fb06b4b0 100644 --- a/source/slang/hlsl.meta.slang.h +++ b/source/slang/hlsl.meta.slang.h @@ -24,26 +24,26 @@ SLANG_SPLICE(kIROp_HLSLByteAddressBufferType SLANG_RAW(")\n") SLANG_RAW("struct ByteAddressBuffer\n") SLANG_RAW("{\n") -SLANG_RAW(" __target_intrinsic(glsl, \"$1 = $0._data.length()\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"$1 = $0._data.length() * 4\")\n") SLANG_RAW(" void GetDimensions(\n") SLANG_RAW(" out uint dim);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"$0._data[$1]\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"$0._data[$1/4]\")\n") SLANG_RAW(" uint Load(int location);\n") SLANG_RAW("\n") SLANG_RAW(" uint Load(int location, out uint status);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"uvec2($0._data[$1], $0._data[$1+1])\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"uvec2($0._data[$1/4], $0._data[$1/4+1])\")\n") SLANG_RAW(" uint2 Load2(int location);\n") SLANG_RAW("\n") SLANG_RAW(" uint2 Load2(int location, out uint status);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"uvec3($0._data[$1], $0._data[$1+1], $0._data[$1+2])\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"uvec3($0._data[$1/4], $0._data[$1/4+1], $0._data[$1/4+2])\")\n") SLANG_RAW(" uint3 Load3(int location);\n") SLANG_RAW("\n") SLANG_RAW(" uint3 Load3(int location, out uint status);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"uvec4($0._data[$1], $0._data[$1+1], $0._data[$1+2], $0._data[$1+3])\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"uvec4($0._data[$1/4], $0._data[$1/4+1], $0._data[$1/4+2], $0._data[$1/4+3])\")\n") SLANG_RAW(" uint4 Load4(int location);\n") SLANG_RAW("\n") SLANG_RAW(" uint4 Load4(int location, out uint status);\n") @@ -136,133 +136,133 @@ SLANG_RAW("{\n") SLANG_RAW(" // Note(tfoley): supports all operations from `ByteAddressBuffer`\n") SLANG_RAW(" // TODO(tfoley): can this be made a sub-type?\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"$1 = $0._data.length()\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"$1 = $0._data.length() * 4\")\n") SLANG_RAW(" void GetDimensions(\n") SLANG_RAW(" out uint dim);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"$0._data[$1]\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"$0._data[$1/4]\")\n") SLANG_RAW(" uint Load(int location);\n") SLANG_RAW("\n") SLANG_RAW(" uint Load(int location, out uint status);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"uvec2($0._data[$1], $0._data[$1+4])\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"uvec2($0._data[$1/4], $0._data[$1/4+1])\")\n") SLANG_RAW(" uint2 Load2(int location);\n") SLANG_RAW("\n") SLANG_RAW(" uint2 Load2(int location, out uint status);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"uvec3($0._data[$1], $0._data[$1+4], $0._data[$1+8])\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"uvec3($0._data[$1/4], $0._data[$1/4+1], $0._data[$1/4+2])\")\n") SLANG_RAW(" uint3 Load3(int location);\n") SLANG_RAW("\n") SLANG_RAW(" uint3 Load3(int location, out uint status);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"uvec4($0._data[$1], $0._data[$1+4], $0._data[$1+8], $0._data[$1+12])\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"uvec4($0._data[$1/4], $0._data[$1/4+1], $0._data[$1/4+2], $0._data[$1/4+3])\")\n") SLANG_RAW(" uint4 Load4(int location);\n") SLANG_RAW("\n") SLANG_RAW(" uint4 Load4(int location, out uint status);\n") SLANG_RAW("\n") SLANG_RAW(" // Added operations:\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicAdd($0._data[$1], $2))\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicAdd($0._data[$1/4], $2))\")\n") SLANG_RAW(" void InterlockedAdd(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT value,\n") SLANG_RAW(" out UINT original_value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"atomicAdd($0._data[$1], $2)\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"atomicAdd($0._data[$1/4], $2)\")\n") SLANG_RAW(" void InterlockedAdd(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicAnd($0._data[$1], $2))\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicAnd($0._data[$1/4], $2))\")\n") SLANG_RAW(" void InterlockedAnd(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT value,\n") SLANG_RAW(" out UINT original_value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"atomicAnd($0._data[$1], $2)\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"atomicAnd($0._data[$1/4], $2)\")\n") SLANG_RAW(" void InterlockedAnd(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"($4 = atomicCompSwap($0._data[$1], $2, $3))\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"($4 = atomicCompSwap($0._data[$1/4], $2, $3))\")\n") SLANG_RAW(" void InterlockedCompareExchange(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT compare_value,\n") SLANG_RAW(" UINT value,\n") SLANG_RAW(" out UINT original_value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"atomicCompSwap($0._data[$1], $2, $3)\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"atomicCompSwap($0._data[$1/4], $2, $3)\")\n") SLANG_RAW(" void InterlockedCompareStore(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT compare_value,\n") SLANG_RAW(" UINT value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicExchange($0._data[$1], $2))\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicExchange($0._data[$1/4], $2))\")\n") SLANG_RAW(" void InterlockedExchange(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT value,\n") SLANG_RAW(" out UINT original_value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicMax($0._data[$1], $2))\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicMax($0._data[$1/4], $2))\")\n") SLANG_RAW(" void InterlockedMax(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT value,\n") SLANG_RAW(" out UINT original_value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"atomicMax($0._data[$1], $2)\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"atomicMax($0._data[$1/4], $2)\")\n") SLANG_RAW(" void InterlockedMax(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicMin($0._data[$1], $2))\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicMin($0._data[$1/4], $2))\")\n") SLANG_RAW(" void InterlockedMin(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT value,\n") SLANG_RAW(" out UINT original_value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"atomicMin($0._data[$1], $2)\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"atomicMin($0._data[$1/4], $2)\")\n") SLANG_RAW(" void InterlockedMin(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicOr($0._data[$1], $2))\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicOr($0._data[$1/4], $2))\")\n") SLANG_RAW(" void InterlockedOr(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT value,\n") SLANG_RAW(" out UINT original_value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"atomicOr($0._data[$1], $2)\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"atomicOr($0._data[$1/4], $2)\")\n") SLANG_RAW(" void InterlockedOr(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicXor($0._data[$1], $2))\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"($3 = atomicXor($0._data[$1/4], $2))\")\n") SLANG_RAW(" void InterlockedXor(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT value,\n") SLANG_RAW(" out UINT original_value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"atomicXor($0._data[$1], $2)\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"atomicXor($0._data[$1/4], $2)\")\n") SLANG_RAW(" void InterlockedXor(\n") SLANG_RAW(" UINT dest,\n") SLANG_RAW(" UINT value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"$0._data[$1] = $2\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"$0._data[$1/4] = $2\")\n") SLANG_RAW(" void Store(\n") SLANG_RAW(" uint address,\n") SLANG_RAW(" uint value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"$0._data[$1] = $2.x, $0._data[$1+4] = $2.y\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"$0._data[$1/4] = $2.x, $0._data[$1/4+1] = $2.y\")\n") SLANG_RAW(" void Store2(\n") SLANG_RAW(" uint address,\n") SLANG_RAW(" uint2 value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"$0._data[$1] = $2.x, $0._data[$1+4] = $2.y, $0._data[$1+8] = $2.z\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"$0._data[$1/4] = $2.x, $0._data[$1/4+1] = $2.y, $0._data[$1/4+2] = $2.z\")\n") SLANG_RAW(" void Store3(\n") SLANG_RAW(" uint address,\n") SLANG_RAW(" uint3 value);\n") SLANG_RAW("\n") -SLANG_RAW(" __target_intrinsic(glsl, \"$0._data[$1] = $2.x, $0._data[$1+4] = $2.y, $0._data[$1+8] = $2.z, $0._data[$1+12] = $2.w\")\n") +SLANG_RAW(" __target_intrinsic(glsl, \"$0._data[$1/4] = $2.x, $0._data[$1/4+1] = $2.y, $0._data[$1/4+2] = $2.z, $0._data[$1/4+3] = $2.w\")\n") SLANG_RAW(" void Store4(\n") SLANG_RAW(" uint address,\n") SLANG_RAW(" uint4 value);\n") |
