summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl-no-opt/vert/pass-array-by-value.vert
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl-no-opt/vert/pass-array-by-value.vert')
-rw-r--r--3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl-no-opt/vert/pass-array-by-value.vert110
1 files changed, 48 insertions, 62 deletions
diff --git a/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl-no-opt/vert/pass-array-by-value.vert b/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl-no-opt/vert/pass-array-by-value.vert
index 5fc73a3a3db..f6e3efbecf7 100644
--- a/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl-no-opt/vert/pass-array-by-value.vert
+++ b/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl-no-opt/vert/pass-array-by-value.vert
@@ -1,101 +1,87 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
+#pragma clang diagnostic ignored "-Wmissing-braces"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
-constant float4 _68[4] = { float4(0.0), float4(1.0), float4(2.0), float4(3.0) };
-
-struct main0_out
-{
- float4 gl_Position [[position]];
-};
-
-struct main0_in
-{
- int Index1 [[attribute(0)]];
- int Index2 [[attribute(1)]];
-};
-
-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];
+ }
+};
+
+constant spvUnsafeArray<float4, 4> _68 = spvUnsafeArray<float4, 4>({ float4(0.0), float4(1.0), float4(2.0), float4(3.0) });
+
+struct main0_out
+{
+ float4 gl_Position [[position]];
+};
+
+struct main0_in
+{
+ int Index1 [[attribute(0)]];
+ int Index2 [[attribute(1)]];
+};
-inline float4 consume_constant_arrays2(thread const float4 (&positions)[4], thread const float4 (&positions2)[4], thread int& Index1, thread int& Index2)
+static inline __attribute__((always_inline))
+float4 consume_constant_arrays2(spvUnsafeArray<float4, 4> positions, spvUnsafeArray<float4, 4> positions2, thread int& Index1, thread int& Index2)
{
- float4 indexable[4];
- spvArrayCopyFromStackToStack1(indexable, positions);
- float4 indexable_1[4];
- spvArrayCopyFromStackToStack1(indexable_1, positions2);
+ spvUnsafeArray<float4, 4> indexable;
+ indexable = positions;
+ spvUnsafeArray<float4, 4> indexable_1;
+ indexable_1 = positions2;
return indexable[Index1] + indexable_1[Index2];
}
-inline float4 consume_constant_arrays(thread const float4 (&positions)[4], thread const float4 (&positions2)[4], thread int& Index1, thread int& Index2)
+static inline __attribute__((always_inline))
+float4 consume_constant_arrays(spvUnsafeArray<float4, 4> positions, spvUnsafeArray<float4, 4> positions2, thread int& Index1, thread int& Index2)
{
return consume_constant_arrays2(positions, positions2, Index1, Index2);
}
vertex main0_out main0(main0_in in [[stage_in]])
{
- float4 _68_array_copy[4] = { float4(0.0), float4(1.0), float4(2.0), float4(3.0) };
main0_out out = {};
- float4 LUT2[4];
+ spvUnsafeArray<float4, 4> LUT2;
LUT2[0] = float4(10.0);
LUT2[1] = float4(11.0);
LUT2[2] = float4(12.0);
LUT2[3] = float4(13.0);
- out.gl_Position = consume_constant_arrays(_68_array_copy, LUT2, in.Index1, in.Index2);
+ out.gl_Position = consume_constant_arrays(_68, LUT2, in.Index1, in.Index2);
return out;
}