summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/spirv-cross/reference/opt/shaders-msl/comp/composite-construct.comp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/spirv-cross/reference/opt/shaders-msl/comp/composite-construct.comp')
-rw-r--r--3rdparty/bgfx/3rdparty/spirv-cross/reference/opt/shaders-msl/comp/composite-construct.comp95
1 files changed, 40 insertions, 55 deletions
diff --git a/3rdparty/bgfx/3rdparty/spirv-cross/reference/opt/shaders-msl/comp/composite-construct.comp b/3rdparty/bgfx/3rdparty/spirv-cross/reference/opt/shaders-msl/comp/composite-construct.comp
index 17dbb8fd8ba..09e6fc7d959 100644
--- a/3rdparty/bgfx/3rdparty/spirv-cross/reference/opt/shaders-msl/comp/composite-construct.comp
+++ b/3rdparty/bgfx/3rdparty/spirv-cross/reference/opt/shaders-msl/comp/composite-construct.comp
@@ -1,81 +1,66 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
+#pragma clang diagnostic ignored "-Wmissing-braces"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
-struct SSBO0
-{
- float4 as[1];
-};
-
-struct SSBO1
-{
- float4 bs[1];
-};
-
-constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u);
-
-template<typename T, uint A>
-inline void spvArrayCopyFromConstantToStack1(thread T (&dst)[A], constant T (&src)[A])
+template<typename T, size_t Num>
+struct spvUnsafeArray
{
- for (uint i = 0; i < A; i++)
+ T elements[Num ? Num : 1];
+
+ thread T& operator [] (size_t pos) thread
{
- dst[i] = src[i];
+ return elements[pos];
}
-}
-
-template<typename T, uint A>
-inline void spvArrayCopyFromConstantToThreadGroup1(threadgroup T (&dst)[A], constant T (&src)[A])
-{
- for (uint i = 0; i < A; i++)
+ constexpr const thread T& operator [] (size_t pos) const thread
{
- dst[i] = src[i];
+ return elements[pos];
}
-}
-
-template<typename T, uint A>
-inline void spvArrayCopyFromStackToStack1(thread T (&dst)[A], thread const T (&src)[A])
-{
- for (uint i = 0; i < A; i++)
+
+ device T& operator [] (size_t pos) device
{
- dst[i] = src[i];
+ return elements[pos];
}
-}
-
-template<typename T, uint A>
-inline void spvArrayCopyFromStackToThreadGroup1(threadgroup T (&dst)[A], thread const T (&src)[A])
-{
- for (uint i = 0; i < A; i++)
+ constexpr const device T& operator [] (size_t pos) const device
{
- dst[i] = src[i];
+ return elements[pos];
}
-}
-
-template<typename T, uint A>
-inline void spvArrayCopyFromThreadGroupToStack1(thread T (&dst)[A], threadgroup const T (&src)[A])
-{
- for (uint i = 0; i < A; i++)
+
+ constexpr const constant T& operator [] (size_t pos) const constant
{
- dst[i] = src[i];
+ return elements[pos];
}
-}
-
-template<typename T, uint A>
-inline void spvArrayCopyFromThreadGroupToThreadGroup1(threadgroup T (&dst)[A], threadgroup const T (&src)[A])
-{
- for (uint i = 0; i < A; i++)
+
+ threadgroup T& operator [] (size_t pos) threadgroup
{
- dst[i] = src[i];
+ return elements[pos];
}
-}
+ constexpr const threadgroup T& operator [] (size_t pos) const threadgroup
+ {
+ return elements[pos];
+ }
+};
+
+struct SSBO0
+{
+ float4 as[1];
+};
+
+struct SSBO1
+{
+ float4 bs[1];
+};
+
+constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u);
kernel void main0(device SSBO0& _16 [[buffer(0)]], device SSBO1& _32 [[buffer(1)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]], uint gl_LocalInvocationIndex [[thread_index_in_threadgroup]])
{
- float4 _37[2] = { _16.as[gl_GlobalInvocationID.x], _32.bs[gl_GlobalInvocationID.x] };
- float4 values[2];
- spvArrayCopyFromStackToStack1(values, _37);
+ spvUnsafeArray<float4, 2> _37 = spvUnsafeArray<float4, 2>({ _16.as[gl_GlobalInvocationID.x], _32.bs[gl_GlobalInvocationID.x] });
+ spvUnsafeArray<float4, 2> values;
+ values = _37;
_16.as[0] = values[gl_LocalInvocationIndex];
_32.bs[1] = float4(40.0);
}