summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x2-std140.comp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x2-std140.comp')
-rw-r--r--3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x2-std140.comp84
1 files changed, 84 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x2-std140.comp b/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x2-std140.comp
new file mode 100644
index 00000000000..e378317ebcf
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x2-std140.comp
@@ -0,0 +1,84 @@
+#pragma clang diagnostic ignored "-Wmissing-prototypes"
+
+#include <metal_stdlib>
+#include <simd/simd.h>
+
+using namespace metal;
+
+struct SSBOCol
+{
+ float2x4 col_major0;
+ float2x4 col_major1;
+};
+
+struct SSBORow
+{
+ float2x4 row_major0;
+ float2x4 row_major1;
+};
+
+constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u);
+
+inline void load_store_to_variable_col_major(device SSBOCol& v_29)
+{
+ float2x2 loaded = float2x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy);
+ v_29.col_major1[0].xy = loaded[0];
+ v_29.col_major1[1].xy = loaded[1];
+}
+
+inline void load_store_to_variable_row_major(device SSBORow& v_41)
+{
+ float2x2 loaded = transpose(float2x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy));
+ v_41.row_major0[0].xy = float2(loaded[0][0], loaded[1][0]);
+ v_41.row_major0[1].xy = float2(loaded[0][1], loaded[1][1]);
+}
+
+inline void copy_col_major_to_col_major(device SSBOCol& v_29)
+{
+ v_29.col_major0[0].xy = float2x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy)[0];
+ v_29.col_major0[1].xy = float2x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy)[1];
+}
+
+inline void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
+{
+ v_41.row_major0[0].xy = float2(float2x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy)[0][0], float2x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy)[1][0]);
+ v_41.row_major0[1].xy = float2(float2x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy)[0][1], float2x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy)[1][1]);
+}
+
+inline void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
+{
+ v_29.col_major0[0].xy = float2(float2x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy)[0][0], float2x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy)[1][0]);
+ v_29.col_major0[1].xy = float2(float2x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy)[0][1], float2x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy)[1][1]);
+}
+
+inline void copy_row_major_to_row_major(device SSBORow& v_41)
+{
+ v_41.row_major0[0].xy = float2x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy)[0];
+ v_41.row_major0[1].xy = float2x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy)[1];
+}
+
+inline void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
+{
+ v_29.col_major0[1].xy = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
+ v_41.row_major0[0][1] = v_29.col_major0[1].x;
+ v_41.row_major0[1][1] = v_29.col_major0[1].y;
+}
+
+inline void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
+{
+ v_29.col_major0[0].y = v_41.row_major0[1u][0];
+ v_41.row_major0[1u][0] = v_29.col_major0[0].y;
+}
+
+kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
+{
+ load_store_to_variable_col_major(v_29);
+ load_store_to_variable_row_major(v_41);
+ copy_col_major_to_col_major(v_29);
+ copy_col_major_to_row_major(v_29, v_41);
+ copy_row_major_to_col_major(v_29, v_41);
+ copy_row_major_to_row_major(v_41);
+ copy_columns(v_29, v_41);
+ copy_elements(v_29, v_41);
+}
+