Updated spirv-cross.

This commit is contained in:
Бранимир Караџић
2019-07-24 20:25:58 -07:00
parent eabaa485af
commit e826eb5af3
145 changed files with 7203 additions and 1109 deletions

View File

@@ -28,6 +28,7 @@ void frag_main()
float4 _47 = ddy_fine(vInput);
float4 _50 = fwidth(vInput);
float _56_tmp = uSampler.CalculateLevelOfDetail(_uSampler_sampler, vInput.zw);
float2 _56 = _56_tmp.xx;
if (vInput.y > 10.0f)
{
FragColor += _23;
@@ -40,7 +41,7 @@ void frag_main()
FragColor += _44;
FragColor += _47;
FragColor += _50;
FragColor += float2(_56_tmp, _56_tmp).xyxy;
FragColor += _56.xyxy;
}
}

View File

@@ -17,7 +17,8 @@ struct SPIRV_Cross_Output
void frag_main()
{
float _19_tmp = uSampler.CalculateLevelOfDetail(_uSampler_sampler, vTexCoord);
FragColor = float2(_19_tmp, _19_tmp).xyxy;
float2 _19 = _19_tmp.xx;
FragColor = _19.xyxy;
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)

View File

@@ -18,11 +18,12 @@ struct A_2
{
int a;
int b;
char _m0_final_padding[8];
};
struct A_3
{
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ A_2 Data[1024];
A_2 Data[1024];
};
struct B
@@ -32,7 +33,7 @@ struct B
struct B_1
{
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ A_2 Data[1024];
A_2 Data[1024];
};
kernel void main0(device A_1& C1 [[buffer(0)]], constant A_3& C2 [[buffer(1)]], device B& C3 [[buffer(2)]], constant B_1& C4 [[buffer(3)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]])

View File

@@ -23,14 +23,29 @@ kernel void main0(device foo& buf [[buffer(0)]], constant bar& cb [[buffer(1)]],
device foo* _45 = _71;
thread uint3* _77 = _70 ? &gl_GlobalInvocationID : &gl_LocalInvocationID;
thread uint3* _73 = _77;
for (device int* _52 = &_71->a[0u], * _55 = &buf.a[0u]; (*_52) != (*_55); )
device int* _52;
device int* _55;
_52 = &_71->a[0u];
_55 = &buf.a[0u];
int _57;
int _58;
for (;;)
{
int _66 = ((*_52) + (*_55)) + int((*_77).x);
*_52 = _66;
*_55 = _66;
_52 = &_52[1u];
_55 = &_55[1u];
continue;
_57 = *_52;
_58 = *_55;
if (_57 != _58)
{
int _66 = (_57 + _58) + int((*_77).x);
*_52 = _66;
*_55 = _66;
_52 = &_52[1u];
_55 = &_55[1u];
continue;
}
else
{
break;
}
}
}

View File

@@ -115,7 +115,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_129 = _109;
}
float3 _130 = _129 * 0.5;
float2 _144 = fast::clamp(_82 + (float2(-1.0) * _7._m0.xy), _95, _96);
float3 _156 = float3(_11._m5) * fast::clamp(_8.sample(_9, _144, level(0.0)).w * _7._m1, 0.0, 1.0);
float4 _160 = _12.sample(_13, _144, level(0.0));
@@ -129,7 +128,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_176 = _156;
}
float3 _177 = _176 * 0.5;
float2 _191 = fast::clamp(_82 + (float2(0.0, -1.0) * _7._m0.xy), _95, _96);
float3 _203 = float3(_11._m5) * fast::clamp(_8.sample(_9, _191, level(0.0)).w * _7._m1, 0.0, 1.0);
float4 _207 = _12.sample(_13, _191, level(0.0));
@@ -143,7 +141,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_223 = _203;
}
float3 _224 = _223 * 0.75;
float2 _238 = fast::clamp(_82 + (float2(1.0, -1.0) * _7._m0.xy), _95, _96);
float3 _250 = float3(_11._m5) * fast::clamp(_8.sample(_9, _238, level(0.0)).w * _7._m1, 0.0, 1.0);
float4 _254 = _12.sample(_13, _238, level(0.0));
@@ -157,7 +154,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_270 = _250;
}
float3 _271 = _270 * 0.5;
float2 _285 = fast::clamp(_82 + (float2(-2.0, 0.0) * _7._m0.xy), _95, _96);
float3 _297 = float3(_11._m5) * fast::clamp(_8.sample(_9, _285, level(0.0)).w * _7._m1, 0.0, 1.0);
float4 _301 = _12.sample(_13, _285, level(0.0));
@@ -171,7 +167,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_317 = _297;
}
float3 _318 = _317 * 0.5;
float2 _332 = fast::clamp(_82 + (float2(-1.0, 0.0) * _7._m0.xy), _95, _96);
float3 _344 = float3(_11._m5) * fast::clamp(_8.sample(_9, _332, level(0.0)).w * _7._m1, 0.0, 1.0);
float4 _348 = _12.sample(_13, _332, level(0.0));
@@ -185,7 +180,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_364 = _344;
}
float3 _365 = _364 * 0.75;
float2 _379 = fast::clamp(_82, _95, _96);
float3 _391 = float3(_11._m5) * fast::clamp(_8.sample(_9, _379, level(0.0)).w * _7._m1, 0.0, 1.0);
float4 _395 = _12.sample(_13, _379, level(0.0));
@@ -199,7 +193,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_411 = _391;
}
float3 _412 = _411 * 1.0;
float2 _426 = fast::clamp(_82 + (float2(1.0, 0.0) * _7._m0.xy), _95, _96);
float3 _438 = float3(_11._m5) * fast::clamp(_8.sample(_9, _426, level(0.0)).w * _7._m1, 0.0, 1.0);
float4 _442 = _12.sample(_13, _426, level(0.0));
@@ -213,7 +206,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_458 = _438;
}
float3 _459 = _458 * 0.75;
float2 _473 = fast::clamp(_82 + (float2(2.0, 0.0) * _7._m0.xy), _95, _96);
float3 _485 = float3(_11._m5) * fast::clamp(_8.sample(_9, _473, level(0.0)).w * _7._m1, 0.0, 1.0);
float4 _489 = _12.sample(_13, _473, level(0.0));
@@ -227,7 +219,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_505 = _485;
}
float3 _506 = _505 * 0.5;
float2 _520 = fast::clamp(_82 + (float2(-1.0, 1.0) * _7._m0.xy), _95, _96);
float3 _532 = float3(_11._m5) * fast::clamp(_8.sample(_9, _520, level(0.0)).w * _7._m1, 0.0, 1.0);
float4 _536 = _12.sample(_13, _520, level(0.0));
@@ -241,7 +232,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_552 = _532;
}
float3 _553 = _552 * 0.5;
float2 _567 = fast::clamp(_82 + (float2(0.0, 1.0) * _7._m0.xy), _95, _96);
float3 _579 = float3(_11._m5) * fast::clamp(_8.sample(_9, _567, level(0.0)).w * _7._m1, 0.0, 1.0);
float4 _583 = _12.sample(_13, _567, level(0.0));
@@ -255,7 +245,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_599 = _579;
}
float3 _600 = _599 * 0.75;
float2 _614 = fast::clamp(_82 + _7._m0.xy, _95, _96);
float3 _626 = float3(_11._m5) * fast::clamp(_8.sample(_9, _614, level(0.0)).w * _7._m1, 0.0, 1.0);
float4 _630 = _12.sample(_13, _614, level(0.0));
@@ -269,7 +258,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_646 = _626;
}
float3 _647 = _646 * 0.5;
float2 _661 = fast::clamp(_82 + (float2(0.0, 2.0) * _7._m0.xy), _95, _96);
float3 _673 = float3(_11._m5) * fast::clamp(_8.sample(_9, _661, level(0.0)).w * _7._m1, 0.0, 1.0);
float4 _677 = _12.sample(_13, _661, level(0.0));
@@ -283,7 +271,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_693 = _673;
}
float3 _702 = ((((((((((((_130.xyz + _177).xyz + _224).xyz + _271).xyz + _318).xyz + _365).xyz + _412).xyz + _459).xyz + _506).xyz + _553).xyz + _600).xyz + _647).xyz + (_693 * 0.5)).xyz * float3(0.125);
float3 _702 = (((((((((((((_129 * 0.5).xyz + (_176 * 0.5)).xyz + (_223 * 0.75)).xyz + (_270 * 0.5)).xyz + (_317 * 0.5)).xyz + (_364 * 0.75)).xyz + (_411 * 1.0)).xyz + (_458 * 0.75)).xyz + (_505 * 0.5)).xyz + (_552 * 0.5)).xyz + (_599 * 0.75)).xyz + (_646 * 0.5)).xyz + (_693 * 0.5)).xyz * float3(0.125);
_28 _704 = _74;
_704._m0 = float4(_702.x, _702.y, _702.z, float4(0.0).w);
_28 _705 = _704;

View File

@@ -3,12 +3,11 @@
using namespace metal;
typedef packed_float2 packed_rm_float2x3[3];
struct S0
{
float2 a[1];
float b;
char _m0_final_padding[4];
};
struct S1
@@ -21,6 +20,7 @@ struct S2
{
float3 a[1];
float b;
char _m0_final_padding[12];
};
struct S3
@@ -45,6 +45,7 @@ struct Content
S3 m3;
float m4;
S4 m3s[8];
char _m0_final_padding[8];
};
struct SSBO1
@@ -58,10 +59,8 @@ struct SSBO1
float3x2 m3;
float2x2 m4;
float2x2 m5[9];
packed_rm_float2x3 m6[4][2];
char _m10_pad[8];
float3x2 m7;
char _m11_pad[8];
float3x2 m6[4][2];
float2x3 m7;
float array[1];
};
@@ -69,6 +68,7 @@ struct S0_1
{
float4 a[1];
float b;
char _m0_final_padding[12];
};
struct S1_1
@@ -81,6 +81,7 @@ struct S2_1
{
float3 a[1];
float b;
char _m0_final_padding[12];
};
struct S3_1
@@ -92,6 +93,7 @@ struct S3_1
struct S4_1
{
float2 c;
char _m0_final_padding[8];
};
struct Content_1
@@ -104,8 +106,8 @@ struct Content_1
S2_1 m2;
S3_1 m3;
float m4;
char _m8_pad[12];
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ S4_1 m3s[8];
char _m8_pad[8];
S4_1 m3s[8];
};
struct SSBO0
@@ -142,6 +144,6 @@ kernel void main0(device SSBO1& ssbo_430 [[buffer(0)]], device SSBO0& ssbo_140 [
ssbo_430.content.m3s[5].c = _60.m3s[5].c;
ssbo_430.content.m3s[6].c = _60.m3s[6].c;
ssbo_430.content.m3s[7].c = _60.m3s[7].c;
ssbo_430.content.m1.a = ssbo_430.content.m3.a * float3x2(float2(ssbo_430.m6[1][1][0]), float2(ssbo_430.m6[1][1][1]), float2(ssbo_430.m6[1][1][2]));
ssbo_430.content.m1.a = ssbo_430.content.m3.a * ssbo_430.m6[1][1];
}

View File

@@ -7,7 +7,7 @@ struct UBO
{
float4x4 uMVPR;
float4x4 uMVPC;
float2x4 uMVP;
float4x4 uMVP;
};
struct main0_out

View File

@@ -31,7 +31,7 @@ struct main0_out
fragment main0_out main0(constant UBO1& ubo1 [[buffer(0)]], constant UBO2& ubo0 [[buffer(1)]])
{
main0_out out = {};
out.FragColor = transpose(ubo1.foo.foo)[0] + ubo0.foo.foo[0];
out.FragColor = float4(ubo1.foo.foo[0][0], ubo1.foo.foo[1][0], ubo1.foo.foo[2][0], ubo1.foo.foo[3][0]) + ubo0.foo.foo[0];
return out;
}

View File

@@ -3,12 +3,10 @@
using namespace metal;
typedef packed_float4 packed_rm_float4x3[3];
struct _15
{
packed_rm_float4x3 _m0;
packed_rm_float4x3 _m1;
float3x4 _m0;
float3x4 _m1;
};
struct _42
@@ -41,7 +39,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant _15& _17 [[buffer(0)]]
{
main0_out out = {};
float4 _70 = _44._m0 * float4(float3(_44._m3) + (in.m_25.xyz * (_44._m6 + _44._m7)), 1.0);
out.m_72 = normalize(float4(in.m_25.xyz, 0.0) * float3x4(float4(_17._m1[0]), float4(_17._m1[1]), float4(_17._m1[2])));
out.m_72 = normalize(float4(in.m_25.xyz, 0.0) * _17._m1);
float4 _94 = _70;
_94.y = -_70.y;
out.gl_Position = _94;

View File

@@ -1,5 +1,3 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
@@ -7,7 +5,7 @@ using namespace metal;
struct Block
{
float2x3 var[3][4];
float3x4 var[3][4];
};
struct main0_out
@@ -21,17 +19,11 @@ struct main0_in
float4 a_position [[attribute(0)]];
};
// Implementation of a conversion of matrix content from RowMajor to ColumnMajor organization.
float2x3 spvConvertFromRowMajor2x3(float2x3 m)
{
return float2x3(float3(m[0][0], m[0][2], m[1][1]), float3(m[0][1], m[1][0], m[1][2]));
}
vertex main0_out main0(main0_in in [[stage_in]], constant Block& _104 [[buffer(0)]])
{
main0_out out = {};
out.gl_Position = in.a_position;
out.v_vtxResult = ((float(abs(spvConvertFromRowMajor2x3(_104.var[0][0])[0].x - 2.0) < 0.0500000007450580596923828125) * float(abs(spvConvertFromRowMajor2x3(_104.var[0][0])[0].y - 6.0) < 0.0500000007450580596923828125)) * float(abs(spvConvertFromRowMajor2x3(_104.var[0][0])[0].z - (-6.0)) < 0.0500000007450580596923828125)) * ((float(abs(spvConvertFromRowMajor2x3(_104.var[0][0])[1].x) < 0.0500000007450580596923828125) * float(abs(spvConvertFromRowMajor2x3(_104.var[0][0])[1].y - 5.0) < 0.0500000007450580596923828125)) * float(abs(spvConvertFromRowMajor2x3(_104.var[0][0])[1].z - 5.0) < 0.0500000007450580596923828125));
out.v_vtxResult = ((float(abs(float3(_104.var[0][0][0][0], _104.var[0][0][1][0], _104.var[0][0][2][0])[0] - 2.0) < 0.0500000007450580596923828125) * float(abs(float3(_104.var[0][0][0][0], _104.var[0][0][1][0], _104.var[0][0][2][0])[1] - 6.0) < 0.0500000007450580596923828125)) * float(abs(float3(_104.var[0][0][0][0], _104.var[0][0][1][0], _104.var[0][0][2][0])[2] - (-6.0)) < 0.0500000007450580596923828125)) * ((float(abs(float3(_104.var[0][0][0][1], _104.var[0][0][1][1], _104.var[0][0][2][1])[0]) < 0.0500000007450580596923828125) * float(abs(float3(_104.var[0][0][0][1], _104.var[0][0][1][1], _104.var[0][0][2][1])[1] - 5.0) < 0.0500000007450580596923828125)) * float(abs(float3(_104.var[0][0][0][1], _104.var[0][0][1][1], _104.var[0][0][2][1])[2] - 5.0) < 0.0500000007450580596923828125));
return out;
}

View File

@@ -4,7 +4,6 @@
using namespace metal;
typedef packed_float2 packed_float2x2[2];
typedef packed_float2 packed_rm_float2x3[3];
typedef packed_float3 packed_float2x3[2];
typedef packed_float3 packed_rm_float3x2[2];
@@ -32,11 +31,6 @@ struct S3
float b;
};
struct S4
{
float2 c;
};
struct Content
{
S0 m0s[1];
@@ -47,7 +41,6 @@ struct Content
S2 m2;
S3 m3;
float m4;
S4 m3s[8];
};
struct SSBO1
@@ -61,8 +54,8 @@ struct SSBO1
float3x2 m3;
float2x2 m4;
float2x2 m5[9];
packed_rm_float2x3 m6[4][2];
float3x2 m7;
float3x2 m6[4][2];
packed_rm_float3x2 m7;
float array[1];
};
@@ -70,6 +63,7 @@ struct S0_1
{
float4 a[1];
float b;
char _m0_final_padding[12];
};
struct S1_1
@@ -82,6 +76,7 @@ struct S2_1
{
float3 a[1];
float b;
char _m0_final_padding[12];
};
struct S3_1
@@ -90,11 +85,6 @@ struct S3_1
float b;
};
struct S4_1
{
float2 c;
};
struct Content_1
{
S0_1 m0s[1];
@@ -105,8 +95,7 @@ struct Content_1
S2_1 m2;
S3_1 m3;
float m4;
char _m8_pad[12];
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ S4_1 m3s[8];
char _m0_final_padding[12];
};
struct SSBO0
@@ -114,18 +103,14 @@ struct SSBO0
Content_1 content;
Content_1 content1[2];
Content_1 content2;
float2x2 m0;
char _m4_pad[16];
float2x2 m1;
char _m5_pad[16];
float2x4 m0;
float2x4 m1;
float2x3 m2[4];
float3x2 m3;
char _m7_pad[24];
float2x2 m4;
char _m8_pad[16];
float2x2 m5[9];
float2x3 m6[4][2];
float3x2 m7;
float3x4 m3;
float2x4 m4;
float2x4 m5[9];
float3x4 m6[4][2];
float2x3 m7;
float4 array[1];
};
@@ -153,19 +138,11 @@ kernel void main0(device SSBO1& ssbo_scalar [[buffer(0)]], device SSBO0& ssbo_14
ssbo_scalar.content.m3.a = ssbo_140.content.m3.a;
ssbo_scalar.content.m3.b = ssbo_140.content.m3.b;
ssbo_scalar.content.m4 = ssbo_140.content.m4;
ssbo_scalar.content.m3s[0].c = ssbo_140.content.m3s[0].c;
ssbo_scalar.content.m3s[1].c = ssbo_140.content.m3s[1].c;
ssbo_scalar.content.m3s[2].c = ssbo_140.content.m3s[2].c;
ssbo_scalar.content.m3s[3].c = ssbo_140.content.m3s[3].c;
ssbo_scalar.content.m3s[4].c = ssbo_140.content.m3s[4].c;
ssbo_scalar.content.m3s[5].c = ssbo_140.content.m3s[5].c;
ssbo_scalar.content.m3s[6].c = ssbo_140.content.m3s[6].c;
ssbo_scalar.content.m3s[7].c = ssbo_140.content.m3s[7].c;
ssbo_scalar.content.m1.a = float2x3(float3(ssbo_scalar.m2[1][0]), float3(ssbo_scalar.m2[1][1])) * float2(ssbo_scalar.content.m0.a[0]);
ssbo_scalar.m0 = float2x2(float2(ssbo_scalar2.m1[0]), float2(ssbo_scalar2.m1[1]));
ssbo_scalar2.m1[0] = transpose(ssbo_scalar.m4)[0];
ssbo_scalar2.m1[1] = transpose(ssbo_scalar.m4)[1];
ssbo_scalar2.m2[0] = spvConvertFromRowMajor3x2(ssbo_scalar.m3)[0];
ssbo_scalar2.m2[1] = spvConvertFromRowMajor3x2(ssbo_scalar.m3)[1];
ssbo_scalar2.m1[0] = float2(ssbo_scalar.m4[0][0], ssbo_scalar.m4[1][0]);
ssbo_scalar2.m1[1] = float2(ssbo_scalar.m4[0][1], ssbo_scalar.m4[1][1]);
ssbo_scalar2.m2[0] = float3(ssbo_scalar.m3[0][0], ssbo_scalar.m3[1][0], ssbo_scalar.m3[2][0]);
ssbo_scalar2.m2[1] = float3(ssbo_scalar.m3[0][1], ssbo_scalar.m3[1][1], ssbo_scalar.m3[2][1]);
}

View File

@@ -16,13 +16,12 @@ layout(binding = 1, std430) buffer outputData
void main()
{
float _25 = _12.inputDataArray[gl_LocalInvocationID.x];
bool _31 = _25 > 0.0;
bool _31 = _12.inputDataArray[gl_LocalInvocationID.x] > 0.0;
uvec4 _37 = uvec4(unpackUint2x32(ballotARB(_31)), 0u, 0u);
uint _44 = mbcntAMD(packUint2x32(uvec2(_37.xy)));
if (_31)
{
_74.outputDataArray[_44] = _25;
_74.outputDataArray[_44] = _12.inputDataArray[gl_LocalInvocationID.x];
}
}

View File

@@ -48,10 +48,12 @@ void main()
}
else
{
_227++;
uint _204 = _227 + uint(1);
_227 = _204;
continue;
}
_227++;
uint _204 = _227 + uint(1);
_227 = _204;
continue;
}
else

View File

@@ -111,7 +111,6 @@ void main()
{
_129 = _109;
}
vec3 _130 = _129 * 0.5;
vec2 _144 = clamp(_82 + (vec2(-1.0) * _7._m0.xy), _95, _96);
vec3 _156 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _144, 0.0).w * _7._m1, 0.0, 1.0);
vec4 _160 = textureLod(SPIRV_Cross_Combined_1, _144, 0.0);
@@ -125,7 +124,6 @@ void main()
{
_176 = _156;
}
vec3 _177 = _176 * 0.5;
vec2 _191 = clamp(_82 + (vec2(0.0, -1.0) * _7._m0.xy), _95, _96);
vec3 _203 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _191, 0.0).w * _7._m1, 0.0, 1.0);
vec4 _207 = textureLod(SPIRV_Cross_Combined_1, _191, 0.0);
@@ -139,7 +137,6 @@ void main()
{
_223 = _203;
}
vec3 _224 = _223 * 0.75;
vec2 _238 = clamp(_82 + (vec2(1.0, -1.0) * _7._m0.xy), _95, _96);
vec3 _250 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _238, 0.0).w * _7._m1, 0.0, 1.0);
vec4 _254 = textureLod(SPIRV_Cross_Combined_1, _238, 0.0);
@@ -153,7 +150,6 @@ void main()
{
_270 = _250;
}
vec3 _271 = _270 * 0.5;
vec2 _285 = clamp(_82 + (vec2(-2.0, 0.0) * _7._m0.xy), _95, _96);
vec3 _297 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _285, 0.0).w * _7._m1, 0.0, 1.0);
vec4 _301 = textureLod(SPIRV_Cross_Combined_1, _285, 0.0);
@@ -167,7 +163,6 @@ void main()
{
_317 = _297;
}
vec3 _318 = _317 * 0.5;
vec2 _332 = clamp(_82 + (vec2(-1.0, 0.0) * _7._m0.xy), _95, _96);
vec3 _344 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _332, 0.0).w * _7._m1, 0.0, 1.0);
vec4 _348 = textureLod(SPIRV_Cross_Combined_1, _332, 0.0);
@@ -181,7 +176,6 @@ void main()
{
_364 = _344;
}
vec3 _365 = _364 * 0.75;
vec2 _379 = clamp(_82, _95, _96);
vec3 _391 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _379, 0.0).w * _7._m1, 0.0, 1.0);
vec4 _395 = textureLod(SPIRV_Cross_Combined_1, _379, 0.0);
@@ -195,7 +189,6 @@ void main()
{
_411 = _391;
}
vec3 _412 = _411 * 1.0;
vec2 _426 = clamp(_82 + (vec2(1.0, 0.0) * _7._m0.xy), _95, _96);
vec3 _438 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _426, 0.0).w * _7._m1, 0.0, 1.0);
vec4 _442 = textureLod(SPIRV_Cross_Combined_1, _426, 0.0);
@@ -209,7 +202,6 @@ void main()
{
_458 = _438;
}
vec3 _459 = _458 * 0.75;
vec2 _473 = clamp(_82 + (vec2(2.0, 0.0) * _7._m0.xy), _95, _96);
vec3 _485 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _473, 0.0).w * _7._m1, 0.0, 1.0);
vec4 _489 = textureLod(SPIRV_Cross_Combined_1, _473, 0.0);
@@ -223,7 +215,6 @@ void main()
{
_505 = _485;
}
vec3 _506 = _505 * 0.5;
vec2 _520 = clamp(_82 + (vec2(-1.0, 1.0) * _7._m0.xy), _95, _96);
vec3 _532 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _520, 0.0).w * _7._m1, 0.0, 1.0);
vec4 _536 = textureLod(SPIRV_Cross_Combined_1, _520, 0.0);
@@ -237,7 +228,6 @@ void main()
{
_552 = _532;
}
vec3 _553 = _552 * 0.5;
vec2 _567 = clamp(_82 + (vec2(0.0, 1.0) * _7._m0.xy), _95, _96);
vec3 _579 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _567, 0.0).w * _7._m1, 0.0, 1.0);
vec4 _583 = textureLod(SPIRV_Cross_Combined_1, _567, 0.0);
@@ -251,7 +241,6 @@ void main()
{
_599 = _579;
}
vec3 _600 = _599 * 0.75;
vec2 _614 = clamp(_82 + _7._m0.xy, _95, _96);
vec3 _626 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _614, 0.0).w * _7._m1, 0.0, 1.0);
vec4 _630 = textureLod(SPIRV_Cross_Combined_1, _614, 0.0);
@@ -265,7 +254,6 @@ void main()
{
_646 = _626;
}
vec3 _647 = _646 * 0.5;
vec2 _661 = clamp(_82 + (vec2(0.0, 2.0) * _7._m0.xy), _95, _96);
vec3 _673 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _661, 0.0).w * _7._m1, 0.0, 1.0);
vec4 _677 = textureLod(SPIRV_Cross_Combined_1, _661, 0.0);
@@ -279,7 +267,7 @@ void main()
{
_693 = _673;
}
vec3 _702 = ((((((((((((_130.xyz + _177).xyz + _224).xyz + _271).xyz + _318).xyz + _365).xyz + _412).xyz + _459).xyz + _506).xyz + _553).xyz + _600).xyz + _647).xyz + (_693 * 0.5)).xyz * vec3(0.125);
vec3 _702 = (((((((((((((_129 * 0.5).xyz + (_176 * 0.5)).xyz + (_223 * 0.75)).xyz + (_270 * 0.5)).xyz + (_317 * 0.5)).xyz + (_364 * 0.75)).xyz + (_411 * 1.0)).xyz + (_458 * 0.75)).xyz + (_505 * 0.5)).xyz + (_552 * 0.5)).xyz + (_599 * 0.75)).xyz + (_646 * 0.5)).xyz + (_693 * 0.5)).xyz * vec3(0.125);
_28 _704 = _74;
_704._m0 = vec4(_702.x, _702.y, _702.z, vec4(0.0).w);
_28 _705 = _704;

View File

@@ -33,26 +33,15 @@ void main()
}
default:
{
mediump int _84;
vec4 _88;
_88 = _82;
_84 = 0;
mediump int _50;
for (;;)
for (mediump int _84 = 0; _84 < _18; )
{
_50 = _84 + 1;
if (_84 < _18)
{
vec4 _72 = _88;
_72.y = _88.y + 0.5;
_88 = _72;
_84 = _50;
continue;
}
else
{
break;
}
vec4 _72 = _88;
_72.y = _88.y + 0.5;
_88 = _72;
_84++;
continue;
}
_89 = _88;
continue;

View File

@@ -21,8 +21,9 @@ void main()
vout_a = vout.a;
vout_b = vout.b;
}
vout_a = Output(vout_a, vout_b).a;
vout_b = Output(vout_a, vout_b).b;
Output _22 = Output(vout_a, vout_b);
vout_a = _22.a;
vout_b = _22.b;
vout_a.x = 1.0;
vout_b.y = 1.0;
}

View File

@@ -28,7 +28,8 @@ void frag_main()
float4 d7 = ddy_fine(vInput);
float4 d8 = fwidth(vInput);
float _56_tmp = uSampler.CalculateLevelOfDetail(_uSampler_sampler, vInput.zw);
float2 lod = float2(_56_tmp, _56_tmp);
float2 _56 = _56_tmp.xx;
float2 lod = _56;
if (vInput.y > 10.0f)
{
FragColor += t;

View File

@@ -17,7 +17,8 @@ struct SPIRV_Cross_Output
void frag_main()
{
float _19_tmp = uSampler.CalculateLevelOfDetail(_uSampler_sampler, vTexCoord);
FragColor = float2(_19_tmp, _19_tmp).xyxy;
float2 _19 = _19_tmp.xx;
FragColor = _19.xyxy;
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)

View File

@@ -154,7 +154,6 @@ fragment main0_out main0(main0_in in [[stage_in]], constant CB0& _19 [[buffer(0)
_193 = _192;
break;
} while (false);
float4 _194 = _193 * 1.0;
float4 _220;
do
{
@@ -180,7 +179,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant CB0& _19 [[buffer(0)
float3 _253 = float3(_252.x, _252.y, _232.z);
float2 _255 = _253.xy * _165;
float3 _256 = float3(_255.x, _255.y, _253.z);
float3 _271 = ((in.IN_Color.xyz * _194.xyz) * (1.0 + (_256.x * 0.300000011920928955078125))) * (StudsMapTexture.sample(StudsMapSampler, _156.UvStuds).x * 2.0);
float3 _271 = ((in.IN_Color.xyz * (_193 * 1.0).xyz) * (1.0 + (_256.x * 0.300000011920928955078125))) * (StudsMapTexture.sample(StudsMapSampler, _156.UvStuds).x * 2.0);
float4 _298;
do
{

View File

@@ -0,0 +1,16 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBORow
{
float v;
float4x4 row_major0;
};
kernel void main0(device SSBORow& _4 [[buffer(0)]])
{
_4.v = float4(_4.row_major0[0][1], _4.row_major0[1][1], _4.row_major0[2][1], _4.row_major0[3][1])[2];
}

View File

@@ -0,0 +1,19 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOScalar
{
float3 a;
float3x3 b;
float3x3 c;
};
kernel void main0(device SSBOScalar& _4 [[buffer(0)]])
{
float3x3 _20 = transpose(_4.b);
_4.b = _4.c;
_4.a = _20 * _4.a;
}

View File

@@ -0,0 +1,20 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOScalar
{
packed_float3 a;
packed_float3 b;
packed_float3 c;
};
kernel void main0(device SSBOScalar& _4 [[buffer(0)]])
{
float3 _17 = float3(_4.b);
float3 _19 = float3(_4.c);
_4.c = _17;
_4.a = _17 * _19;
}

View File

@@ -0,0 +1,20 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOScalar
{
float4 a[16];
float4 b[16];
float4 c[16];
};
kernel void main0(device SSBOScalar& _4 [[buffer(0)]])
{
float2 _27 = _4.b[10].xy;
float _29 = _4.c[10].x;
_4.b[10].xy = float2(10.0, 11.0);
_4.a[10].xy = _27 * _29;
}

View File

@@ -0,0 +1,20 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOScalar
{
float2 a;
packed_float3 b;
packed_float3 c;
};
kernel void main0(device SSBOScalar& _4 [[buffer(0)]])
{
float3 _21 = float3(_4.b);
float3 _24 = float3(_4.c);
_4.b = float3(1.0);
_4.a = _21.xy * _24.yz;
}

View File

@@ -0,0 +1,23 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
typedef packed_float3 packed_rm_float3x3[3];
struct SSBOScalar
{
packed_float3 a;
packed_rm_float3x3 b;
packed_rm_float3x3 c;
};
kernel void main0(device SSBOScalar& _4 [[buffer(0)]])
{
float3x3 _20 = transpose(float3x3(float3(_4.b[0]), float3(_4.b[1]), float3(_4.b[2])));
_4.b[0] = float3x3(float3(_4.c[0]), float3(_4.c[1]), float3(_4.c[2]))[0];
_4.b[1] = float3x3(float3(_4.c[0]), float3(_4.c[1]), float3(_4.c[2]))[1];
_4.b[2] = float3x3(float3(_4.c[0]), float3(_4.c[1]), float3(_4.c[2]))[2];
_4.a = _20 * float3(_4.a);
}

View File

@@ -0,0 +1,21 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOScalar
{
float2 a;
packed_float3 b;
packed_float3 c;
float3 d;
};
kernel void main0(device SSBOScalar& _4 [[buffer(0)]])
{
float3 _24 = _4.b;
_24.z = 2.0;
_4.a = float2(_4.b[0], _4.b[1]) * _4.b[2];
_4.b = _24;
}

View File

@@ -0,0 +1,16 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBORow
{
float v;
float4x4 row_major0;
};
kernel void main0(device SSBORow& _4 [[buffer(0)]])
{
_4.v = _4.row_major0[2u][1];
}

View File

@@ -1,5 +1,3 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
@@ -12,19 +10,6 @@ struct main0_out
float4 gl_Position [[position]];
};
// Implementation of an array copy function to cover GLSL's ability to copy an array via assignment.
template<typename T, uint N>
void spvArrayCopyFromStack1(thread T (&dst)[N], thread const T (&src)[N])
{
for (uint i = 0; i < N; dst[i] = src[i], i++);
}
template<typename T, uint N>
void spvArrayCopyFromConstant1(thread T (&dst)[N], constant T (&src)[N])
{
for (uint i = 0; i < N; dst[i] = src[i], i++);
}
vertex main0_out main0()
{
main0_out out = {};
@@ -35,12 +20,10 @@ vertex main0_out main0()
_25++;
continue;
}
float _31[2];
spvArrayCopyFromStack1(_31, _23);
float _37;
if (as_type<uint>(3.0) != 0u)
{
_37 = _31[0];
_37 = _23[0];
}
else
{

View File

@@ -95,11 +95,13 @@ kernel void main0(const device SSBO& _24 [[buffer(0)]], device SSBO2& _177 [[buf
{
if (l == 5)
{
l++;
int _172 = l;
l = _172 + 1;
continue;
}
idat += float4(1.0);
l++;
int _172 = l;
l = _172 + 1;
continue;
}
_177.out_data[ident] = idat;

View File

@@ -0,0 +1,76 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float2x2 col_major0;
float2x2 col_major1;
};
struct SSBORow
{
float2x2 row_major0;
float2x2 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float2x2 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float2x2 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = 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;
}
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);
}

View File

@@ -0,0 +1,82 @@
#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;
};
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];
}
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]);
}
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];
}
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]);
}
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]);
}
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];
}
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;
}
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);
}

View File

@@ -0,0 +1,76 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float2x2 col_major0;
float2x2 col_major1;
};
struct SSBORow
{
float2x2 row_major0;
float2x2 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float2x2 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float2x2 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = 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;
}
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);
}

View File

@@ -0,0 +1,82 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
typedef packed_float3 packed_float2x3[2];
struct SSBOCol
{
packed_float2x3 col_major0;
packed_float2x3 col_major1;
};
struct SSBORow
{
float3x2 row_major0;
float3x2 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float2x3 loaded = float2x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]));
v_29.col_major1[0] = loaded[0];
v_29.col_major1[1] = loaded[1];
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float2x3 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0[0] = float2x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]))[0];
v_29.col_major0[1] = float2x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]))[1];
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(float2x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1])));
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[0] = float3(v_41.row_major0[0][0], v_41.row_major0[1][0], v_41.row_major0[2][0]);
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
v_41.row_major0[0][1] = v_29.col_major0[1][0];
v_41.row_major0[1][1] = v_29.col_major0[1][1];
v_41.row_major0[2][1] = v_29.col_major0[1][2];
}
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[0][1u] = v_41.row_major0[1u][0];
v_41.row_major0[1u][0] = v_29.col_major0[0][1u];
}
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);
}

View File

@@ -0,0 +1,83 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float2x3 col_major0;
float2x3 col_major1;
};
struct SSBORow
{
float3x4 row_major0;
float3x4 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float2x3 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float2x3 loaded = transpose(float3x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy, v_41.row_major0[2].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]);
v_41.row_major0[2].xy = float2(loaded[0][2], loaded[1][2]);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0[0].xy = float2(v_29.col_major0[0][0], v_29.col_major0[1][0]);
v_41.row_major0[1].xy = float2(v_29.col_major0[0][1], v_29.col_major0[1][1]);
v_41.row_major0[2].xy = float2(v_29.col_major0[0][2], v_29.col_major0[1][2]);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(float3x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy, v_41.row_major0[2].xy));
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0[0].xy = float3x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy)[0];
v_41.row_major0[1].xy = float3x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy)[1];
v_41.row_major0[2].xy = float3x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy)[2];
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
}
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);
}

View File

@@ -0,0 +1,77 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float2x3 col_major0;
float2x3 col_major1;
};
struct SSBORow
{
float3x2 row_major0;
float3x2 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float2x3 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float2x3 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
}
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);
}

View File

@@ -0,0 +1,78 @@
#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
{
float4x2 row_major0;
float4x2 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float2x4 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float2x4 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
v_41.row_major0[3][1] = v_29.col_major0[1].w;
}
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);
}

View File

@@ -0,0 +1,87 @@
#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
{
float4x4 row_major0;
float4x4 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float2x4 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float2x4 loaded = transpose(float4x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy, v_41.row_major0[2].xy, v_41.row_major0[3].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]);
v_41.row_major0[2].xy = float2(loaded[0][2], loaded[1][2]);
v_41.row_major0[3].xy = float2(loaded[0][3], loaded[1][3]);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0[0].xy = float2(v_29.col_major0[0][0], v_29.col_major0[1][0]);
v_41.row_major0[1].xy = float2(v_29.col_major0[0][1], v_29.col_major0[1][1]);
v_41.row_major0[2].xy = float2(v_29.col_major0[0][2], v_29.col_major0[1][2]);
v_41.row_major0[3].xy = float2(v_29.col_major0[0][3], v_29.col_major0[1][3]);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(float4x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy, v_41.row_major0[2].xy, v_41.row_major0[3].xy));
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0[0].xy = float4x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy, v_41.row_major1[3].xy)[0];
v_41.row_major0[1].xy = float4x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy, v_41.row_major1[3].xy)[1];
v_41.row_major0[2].xy = float4x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy, v_41.row_major1[3].xy)[2];
v_41.row_major0[3].xy = float4x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy, v_41.row_major1[3].xy)[3];
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
v_41.row_major0[3][1] = v_29.col_major0[1].w;
}
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);
}

View File

@@ -0,0 +1,78 @@
#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
{
float4x2 row_major0;
float4x2 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float2x4 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float2x4 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
v_41.row_major0[3][1] = v_29.col_major0[1].w;
}
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);
}

View File

@@ -0,0 +1,81 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
typedef packed_float3 packed_rm_float3x2[2];
struct SSBOCol
{
float3x2 col_major0;
float3x2 col_major1;
};
struct SSBORow
{
packed_rm_float3x2 row_major0;
packed_rm_float3x2 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float3x2 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float3x2 loaded = transpose(float2x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1])));
v_41.row_major0[0] = float3(loaded[0][0], loaded[1][0], loaded[2][0]);
v_41.row_major0[1] = float3(loaded[0][1], loaded[1][1], loaded[2][1]);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0[0] = float3(v_29.col_major0[0][0], v_29.col_major0[1][0], v_29.col_major0[2][0]);
v_41.row_major0[1] = float3(v_29.col_major0[0][1], v_29.col_major0[1][1], v_29.col_major0[2][1]);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(float2x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1])));
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0[0] = float2x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]))[0];
v_41.row_major0[1] = float2x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]))[1];
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = 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;
}
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);
}

View File

@@ -0,0 +1,82 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float3x4 col_major0;
float3x4 col_major1;
};
struct SSBORow
{
float2x3 row_major0;
float2x3 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float3x2 loaded = float3x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy, v_29.col_major0[2].xy);
v_29.col_major1[0].xy = loaded[0];
v_29.col_major1[1].xy = loaded[1];
v_29.col_major1[2].xy = loaded[2];
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float3x2 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0[0].xy = float3x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy)[0];
v_29.col_major0[1].xy = float3x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy)[1];
v_29.col_major0[2].xy = float3x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy)[2];
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(float3x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy, v_29.col_major0[2].xy));
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[0].xy = float2(v_41.row_major0[0][0], v_41.row_major0[1][0]);
v_29.col_major0[1].xy = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
v_29.col_major0[2].xy = float2(v_41.row_major0[0][2], v_41.row_major0[1][2]);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
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;
}
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);
}

View File

@@ -0,0 +1,76 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float3x2 col_major0;
float3x2 col_major1;
};
struct SSBORow
{
float2x3 row_major0;
float2x3 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float3x2 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float3x2 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = 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;
}
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);
}

View File

@@ -0,0 +1,92 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
typedef packed_float3 packed_float3x3[3];
typedef packed_float3 packed_rm_float3x3[3];
struct SSBOCol
{
packed_float3x3 col_major0;
packed_float3x3 col_major1;
};
struct SSBORow
{
packed_rm_float3x3 row_major0;
packed_rm_float3x3 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float3x3 loaded = float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]));
v_29.col_major1[0] = loaded[0];
v_29.col_major1[1] = loaded[1];
v_29.col_major1[2] = loaded[2];
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float3x3 loaded = transpose(float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2])));
v_41.row_major0[0] = float3(loaded[0][0], loaded[1][0], loaded[2][0]);
v_41.row_major0[1] = float3(loaded[0][1], loaded[1][1], loaded[2][1]);
v_41.row_major0[2] = float3(loaded[0][2], loaded[1][2], loaded[2][2]);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0[0] = float3x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]))[0];
v_29.col_major0[1] = float3x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]))[1];
v_29.col_major0[2] = float3x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]))[2];
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0[0] = float3(float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[0][0], float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[1][0], float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[2][0]);
v_41.row_major0[1] = float3(float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[0][1], float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[1][1], float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[2][1]);
v_41.row_major0[2] = float3(float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[0][2], float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[1][2], float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[2][2]);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[0] = float3(float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[0][0], float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[1][0], float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[2][0]);
v_29.col_major0[1] = float3(float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[0][1], float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[1][1], float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[2][1]);
v_29.col_major0[2] = float3(float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[0][2], float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[1][2], float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[2][2]);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0[0] = float3x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]))[0];
v_41.row_major0[1] = float3x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]))[1];
v_41.row_major0[2] = float3x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]))[2];
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
v_41.row_major0[0][1] = v_29.col_major0[1][0];
v_41.row_major0[1][1] = v_29.col_major0[1][1];
v_41.row_major0[2][1] = v_29.col_major0[1][2];
}
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[0][1u] = v_41.row_major0[1u][0];
v_41.row_major0[1u][0] = v_29.col_major0[0][1u];
}
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);
}

View File

@@ -0,0 +1,77 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float3x3 col_major0;
float3x3 col_major1;
};
struct SSBORow
{
float3x3 row_major0;
float3x3 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float3x3 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float3x3 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
}
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);
}

View File

@@ -0,0 +1,77 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float3x3 col_major0;
float3x3 col_major1;
};
struct SSBORow
{
float3x3 row_major0;
float3x3 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float3x3 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float3x3 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
}
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);
}

View File

@@ -0,0 +1,89 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
typedef packed_float3 packed_rm_float3x4[4];
struct SSBOCol
{
float3x4 col_major0;
float3x4 col_major1;
};
struct SSBORow
{
packed_rm_float3x4 row_major0;
packed_rm_float3x4 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float3x4 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float3x4 loaded = transpose(float4x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]), float3(v_41.row_major0[3])));
v_41.row_major0[0] = float3(loaded[0][0], loaded[1][0], loaded[2][0]);
v_41.row_major0[1] = float3(loaded[0][1], loaded[1][1], loaded[2][1]);
v_41.row_major0[2] = float3(loaded[0][2], loaded[1][2], loaded[2][2]);
v_41.row_major0[3] = float3(loaded[0][3], loaded[1][3], loaded[2][3]);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0[0] = float3(v_29.col_major0[0][0], v_29.col_major0[1][0], v_29.col_major0[2][0]);
v_41.row_major0[1] = float3(v_29.col_major0[0][1], v_29.col_major0[1][1], v_29.col_major0[2][1]);
v_41.row_major0[2] = float3(v_29.col_major0[0][2], v_29.col_major0[1][2], v_29.col_major0[2][2]);
v_41.row_major0[3] = float3(v_29.col_major0[0][3], v_29.col_major0[1][3], v_29.col_major0[2][3]);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(float4x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]), float3(v_41.row_major0[3])));
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0[0] = float4x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]), float3(v_41.row_major1[3]))[0];
v_41.row_major0[1] = float4x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]), float3(v_41.row_major1[3]))[1];
v_41.row_major0[2] = float4x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]), float3(v_41.row_major1[3]))[2];
v_41.row_major0[3] = float4x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]), float3(v_41.row_major1[3]))[3];
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
v_41.row_major0[3][1] = v_29.col_major0[1].w;
}
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);
}

View File

@@ -0,0 +1,78 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float3x4 col_major0;
float3x4 col_major1;
};
struct SSBORow
{
float4x3 row_major0;
float4x3 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float3x4 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float3x4 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
v_41.row_major0[3][1] = v_29.col_major0[1].w;
}
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);
}

View File

@@ -0,0 +1,78 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float3x4 col_major0;
float3x4 col_major1;
};
struct SSBORow
{
float4x3 row_major0;
float4x3 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float3x4 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float3x4 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
v_41.row_major0[3][1] = v_29.col_major0[1].w;
}
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);
}

View File

@@ -0,0 +1,76 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float4x2 col_major0;
float4x2 col_major1;
};
struct SSBORow
{
float2x4 row_major0;
float2x4 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float4x2 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float4x2 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = 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;
}
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);
}

View File

@@ -0,0 +1,85 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float4x4 col_major0;
float4x4 col_major1;
};
struct SSBORow
{
float2x4 row_major0;
float2x4 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float4x2 loaded = float4x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy, v_29.col_major0[2].xy, v_29.col_major0[3].xy);
v_29.col_major1[0].xy = loaded[0];
v_29.col_major1[1].xy = loaded[1];
v_29.col_major1[2].xy = loaded[2];
v_29.col_major1[3].xy = loaded[3];
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float4x2 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0[0].xy = float4x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy, v_29.col_major1[3].xy)[0];
v_29.col_major0[1].xy = float4x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy, v_29.col_major1[3].xy)[1];
v_29.col_major0[2].xy = float4x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy, v_29.col_major1[3].xy)[2];
v_29.col_major0[3].xy = float4x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy, v_29.col_major1[3].xy)[3];
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(float4x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy, v_29.col_major0[2].xy, v_29.col_major0[3].xy));
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[0].xy = float2(v_41.row_major0[0][0], v_41.row_major0[1][0]);
v_29.col_major0[1].xy = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
v_29.col_major0[2].xy = float2(v_41.row_major0[0][2], v_41.row_major0[1][2]);
v_29.col_major0[3].xy = float2(v_41.row_major0[0][3], v_41.row_major0[1][3]);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
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;
}
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);
}

View File

@@ -0,0 +1,76 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float4x2 col_major0;
float4x2 col_major1;
};
struct SSBORow
{
float2x4 row_major0;
float2x4 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float4x2 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float4x2 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = 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;
}
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);
}

View File

@@ -0,0 +1,88 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
typedef packed_float3 packed_float4x3[4];
struct SSBOCol
{
packed_float4x3 col_major0;
packed_float4x3 col_major1;
};
struct SSBORow
{
float3x4 row_major0;
float3x4 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float4x3 loaded = float4x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]), float3(v_29.col_major0[3]));
v_29.col_major1[0] = loaded[0];
v_29.col_major1[1] = loaded[1];
v_29.col_major1[2] = loaded[2];
v_29.col_major1[3] = loaded[3];
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float4x3 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0[0] = float4x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]), float3(v_29.col_major1[3]))[0];
v_29.col_major0[1] = float4x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]), float3(v_29.col_major1[3]))[1];
v_29.col_major0[2] = float4x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]), float3(v_29.col_major1[3]))[2];
v_29.col_major0[3] = float4x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]), float3(v_29.col_major1[3]))[3];
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(float4x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]), float3(v_29.col_major0[3])));
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[0] = float3(v_41.row_major0[0][0], v_41.row_major0[1][0], v_41.row_major0[2][0]);
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
v_29.col_major0[2] = float3(v_41.row_major0[0][2], v_41.row_major0[1][2], v_41.row_major0[2][2]);
v_29.col_major0[3] = float3(v_41.row_major0[0][3], v_41.row_major0[1][3], v_41.row_major0[2][3]);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
v_41.row_major0[0][1] = v_29.col_major0[1][0];
v_41.row_major0[1][1] = v_29.col_major0[1][1];
v_41.row_major0[2][1] = v_29.col_major0[1][2];
}
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[0][1u] = v_41.row_major0[1u][0];
v_41.row_major0[1u][0] = v_29.col_major0[0][1u];
}
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);
}

View File

@@ -0,0 +1,77 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float4x3 col_major0;
float4x3 col_major1;
};
struct SSBORow
{
float3x4 row_major0;
float3x4 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float4x3 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float4x3 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
}
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);
}

View File

@@ -0,0 +1,77 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float4x3 col_major0;
float4x3 col_major1;
};
struct SSBORow
{
float3x4 row_major0;
float3x4 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float4x3 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float4x3 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
}
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);
}

View File

@@ -0,0 +1,78 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float4x4 col_major0;
float4x4 col_major1;
};
struct SSBORow
{
float4x4 row_major0;
float4x4 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float4x4 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float4x4 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
v_41.row_major0[3][1] = v_29.col_major0[1].w;
}
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);
}

View File

@@ -0,0 +1,78 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float4x4 col_major0;
float4x4 col_major1;
};
struct SSBORow
{
float4x4 row_major0;
float4x4 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float4x4 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float4x4 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
v_41.row_major0[3][1] = v_29.col_major0[1].w;
}
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);
}

View File

@@ -0,0 +1,78 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBOCol
{
float4x4 col_major0;
float4x4 col_major1;
};
struct SSBORow
{
float4x4 row_major0;
float4x4 row_major1;
};
void load_store_to_variable_col_major(device SSBOCol& v_29)
{
float4x4 loaded = v_29.col_major0;
v_29.col_major1 = loaded;
}
void load_store_to_variable_row_major(device SSBORow& v_41)
{
float4x4 loaded = transpose(v_41.row_major0);
v_41.row_major0 = transpose(loaded);
}
void copy_col_major_to_col_major(device SSBOCol& v_29)
{
v_29.col_major0 = v_29.col_major1;
}
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_41.row_major0 = transpose(v_29.col_major0);
}
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0 = transpose(v_41.row_major0);
}
void copy_row_major_to_row_major(device SSBORow& v_41)
{
v_41.row_major0 = v_41.row_major1;
}
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
{
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][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;
v_41.row_major0[2][1] = v_29.col_major0[1].z;
v_41.row_major0[3][1] = v_29.col_major0[1].w;
}
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);
}

View File

@@ -0,0 +1,19 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBO
{
float3x3 m0;
float3x3 m1;
float3 v0;
float3 v1;
};
kernel void main0(device SSBO& _11 [[buffer(0)]])
{
_11.v0 = _11.v1 * (_11.m1 * _11.m0);
_11.v0 = (_11.v1 * _11.m1) * _11.m0;
}

View File

@@ -0,0 +1,23 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
typedef packed_float3 packed_float3x3[3];
struct SSBO
{
packed_float3x3 m0;
packed_float3x3 m1;
packed_float3 v0;
packed_float3 v1;
};
kernel void main0(device SSBO& _11 [[buffer(0)]])
{
_11.v0 = (float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2])) * float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2]))) * float3(_11.v1);
_11.v0 = float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2])) * (float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2])) * float3(_11.v1));
_11.v0 = (float3(_11.v1) * float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2]))) * float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2]));
_11.v0 = float3(_11.v1) * (float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2])) * float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2])));
}

View File

@@ -0,0 +1,21 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBO
{
float2x4 m0;
float2x4 m1;
float2 v0;
float2 v1;
};
kernel void main0(device SSBO& _11 [[buffer(0)]])
{
_11.v0 = (float2x2(_11.m0[0].xy, _11.m0[1].xy) * float2x2(_11.m1[0].xy, _11.m1[1].xy)) * _11.v1;
_11.v0 = float2x2(_11.m0[0].xy, _11.m0[1].xy) * (float2x2(_11.m1[0].xy, _11.m1[1].xy) * _11.v1);
_11.v0 = (_11.v1 * float2x2(_11.m0[0].xy, _11.m0[1].xy)) * float2x2(_11.m1[0].xy, _11.m1[1].xy);
_11.v0 = _11.v1 * (float2x2(_11.m0[0].xy, _11.m0[1].xy) * float2x2(_11.m1[0].xy, _11.m1[1].xy));
}

View File

@@ -0,0 +1,23 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
typedef packed_float3 packed_rm_float3x3[3];
struct SSBO
{
packed_rm_float3x3 m0;
packed_rm_float3x3 m1;
packed_float3 v0;
packed_float3 v1;
};
kernel void main0(device SSBO& _11 [[buffer(0)]])
{
_11.v0 = float3(_11.v1) * (float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2])) * float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2])));
_11.v0 = (float3(_11.v1) * float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2]))) * float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2]));
_11.v0 = float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2])) * (float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2])) * float3(_11.v1));
_11.v0 = (float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2])) * float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2]))) * float3(_11.v1);
}

View File

@@ -0,0 +1,21 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBO
{
float2x4 m0;
float2x4 m1;
float2 v0;
float2 v1;
};
kernel void main0(device SSBO& _11 [[buffer(0)]])
{
_11.v0 = _11.v1 * (float2x2(_11.m1[0].xy, _11.m1[1].xy) * float2x2(_11.m0[0].xy, _11.m0[1].xy));
_11.v0 = (_11.v1 * float2x2(_11.m1[0].xy, _11.m1[1].xy)) * float2x2(_11.m0[0].xy, _11.m0[1].xy);
_11.v0 = float2x2(_11.m1[0].xy, _11.m1[1].xy) * (float2x2(_11.m0[0].xy, _11.m0[1].xy) * _11.v1);
_11.v0 = (float2x2(_11.m1[0].xy, _11.m1[1].xy) * float2x2(_11.m0[0].xy, _11.m0[1].xy)) * _11.v1;
}

View File

@@ -0,0 +1,19 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBO
{
char _m0_pad[16];
float a;
char _m1_pad[20];
float b;
};
kernel void main0(device SSBO& _9 [[buffer(0)]])
{
_9.a = 10.0;
_9.b = 20.0;
}

View File

@@ -0,0 +1,40 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct SSBO
{
float4 v1[4];
float4 v2[4];
float3 v3[4];
float4 v4[4];
float4 v1_array_of_array[4][4];
float4 v2_array_of_array[4][4];
float3 v3_array_of_array[4][4];
float4 v4_array_of_array[4][4];
float4 v_unsized[1];
};
kernel void main0(device SSBO& _29 [[buffer(0)]])
{
float loaded1 = _29.v1[1].x;
_29.v1[2].x = loaded1;
float2 loaded2 = _29.v2[1].xy;
_29.v2[2].xy = loaded2;
float3 loaded3 = _29.v3[1];
_29.v3[2] = loaded3;
float4 loaded4 = _29.v4[1];
_29.v4[2] = loaded4;
loaded1 = _29.v1_array_of_array[1][2].x;
_29.v1_array_of_array[2][3].x = loaded1;
loaded2 = _29.v2_array_of_array[1][2].xy;
_29.v2_array_of_array[2][3].xy = loaded2;
loaded3 = _29.v3_array_of_array[1][2];
_29.v3_array_of_array[2][3] = loaded3;
loaded4 = _29.v4_array_of_array[1][2];
_29.v4_array_of_array[2][3] = loaded4;
loaded1 = _29.v_unsized[1].x;
_29.v_unsized[2].x = loaded1;
}

View File

@@ -0,0 +1,25 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct Foo
{
packed_float3 a;
float b;
};
struct SSBO
{
float2 a;
float b;
char _m2_pad[4];
Foo foo;
};
kernel void main0(device SSBO& _12 [[buffer(0)]])
{
_12.a.x = 10.0;
_12.b = 20.0;
}

View File

@@ -0,0 +1,20 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct Foo
{
packed_float3 a;
};
struct SSBOScalar
{
Foo v[1];
};
kernel void main0(device SSBOScalar& buffer_scalar [[buffer(0)]])
{
buffer_scalar.v[1].a[1u] = 1.0;
}

View File

@@ -0,0 +1,31 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct Foo
{
packed_float4 a;
};
struct Bar
{
Foo a;
};
struct Baz
{
Bar a;
};
struct SSBOScalar
{
float v;
Baz baz;
};
kernel void main0(device SSBOScalar& buffer_scalar [[buffer(0)]])
{
buffer_scalar.baz.a.a.a[3u] = 10.0;
}

View File

@@ -0,0 +1,27 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct Foo
{
packed_float3 a;
};
struct Bar
{
packed_float3 a;
};
struct SSBOScalar
{
Foo foo;
Bar bar;
};
kernel void main0(device SSBOScalar& buffer_scalar [[buffer(0)]])
{
buffer_scalar.foo.a[0u] = 10.0;
buffer_scalar.bar.a[0u] = 20.0;
}

View File

@@ -0,0 +1,52 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct A
{
float v;
char _m0_final_padding[12];
};
struct B
{
float2 v;
char _m0_final_padding[8];
};
struct C
{
float3 v;
};
struct D
{
float4 v;
};
struct E
{
float4 a;
float2 b;
char _m0_final_padding[8];
};
struct SSBO
{
A a[2][4];
B b[2][4];
C c[2][4];
D d[2][4];
float2x4 e[2][4];
E f[1];
};
kernel void main0(device SSBO& _32 [[buffer(0)]])
{
_32.f[0].a = float4(2.0);
float2x2 tmp = float2x2(_32.e[0][1][0].xy, _32.e[0][1][1].xy);
_32.e[1][2][0].xy = tmp[0];
_32.e[1][2][1].xy = tmp[1];
}

View File

@@ -0,0 +1,52 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct A
{
float v;
char _m0_final_padding[12];
};
struct B
{
float2 v;
char _m0_final_padding[8];
};
struct C
{
float3 v;
};
struct D
{
float4 v;
};
struct E
{
float4 a;
float2 b;
char _m0_final_padding[8];
};
struct SSBO
{
A a[4];
B b[4];
C c[4];
D d[4];
float2x4 e[4];
E f[1];
};
kernel void main0(device SSBO& _26 [[buffer(0)]])
{
_26.f[0].a = float4(2.0);
float2x2 tmp = float2x2(_26.e[1][0].xy, _26.e[1][1].xy);
_26.e[2][0].xy = tmp[0];
_26.e[2][1].xy = tmp[1];
}

View File

@@ -18,11 +18,12 @@ struct A_2
{
int a;
int b;
char _m0_final_padding[8];
};
struct A_3
{
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ A_2 Data[1024];
A_2 Data[1024];
};
struct B
@@ -32,7 +33,7 @@ struct B
struct B_1
{
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ A_2 Data[1024];
A_2 Data[1024];
};
kernel void main0(device A_1& C1 [[buffer(0)]], constant A_3& C2 [[buffer(1)]], device B& C3 [[buffer(2)]], constant B_1& C4 [[buffer(3)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]])

View File

@@ -31,12 +31,30 @@ kernel void main0(device foo& buf [[buffer(0)]], constant bar& cb [[buffer(1)]],
{
device foo* _46 = select_buffer(buf, cb);
device foo* _45 = _46;
for (device int* _52 = &_45->a[0u], * _55 = &buf.a[0u]; (*_52) != (*_55); _52 = &_52[1u], _55 = &_55[1u])
device foo* _48 = _45;
device int* _52;
device int* _55;
_52 = &_48->a[0u];
_55 = &buf.a[0u];
int _57;
int _58;
for (;;)
{
int _66 = ((*_52) + (*_55)) + int((*select_input(gl_GlobalInvocationID, gl_LocalInvocationID, cb)).x);
*_52 = _66;
*_55 = _66;
continue;
_57 = *_52;
_58 = *_55;
if (_57 != _58)
{
int _66 = (_57 + _58) + int((*select_input(gl_GlobalInvocationID, gl_LocalInvocationID, cb)).x);
*_52 = _66;
*_55 = _66;
_52 = &_52[1u];
_55 = &_55[1u];
continue;
}
else
{
break;
}
}
}

View File

@@ -144,8 +144,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_129 = _109;
}
float3 _130 = _129 * 0.5;
float3 _133 = float4(0.0).xyz + _130;
float3 _133 = float4(0.0).xyz + (_129 * 0.5);
float4 _134 = float4(_133.x, _133.y, _133.z, float4(0.0).w);
_28 _135 = _77;
_135._m0 = _134;
@@ -161,8 +160,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_176 = _156;
}
float3 _177 = _176 * 0.5;
float3 _180 = _134.xyz + _177;
float3 _180 = _134.xyz + (_176 * 0.5);
float4 _181 = float4(_180.x, _180.y, _180.z, _134.w);
_28 _182 = _135;
_182._m0 = _181;
@@ -178,8 +176,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_223 = _203;
}
float3 _224 = _223 * 0.75;
float3 _227 = _181.xyz + _224;
float3 _227 = _181.xyz + (_223 * 0.75);
float4 _228 = float4(_227.x, _227.y, _227.z, _181.w);
_28 _229 = _182;
_229._m0 = _228;
@@ -195,8 +192,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_270 = _250;
}
float3 _271 = _270 * 0.5;
float3 _274 = _228.xyz + _271;
float3 _274 = _228.xyz + (_270 * 0.5);
float4 _275 = float4(_274.x, _274.y, _274.z, _228.w);
_28 _276 = _229;
_276._m0 = _275;
@@ -212,8 +208,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_317 = _297;
}
float3 _318 = _317 * 0.5;
float3 _321 = _275.xyz + _318;
float3 _321 = _275.xyz + (_317 * 0.5);
float4 _322 = float4(_321.x, _321.y, _321.z, _275.w);
_28 _323 = _276;
_323._m0 = _322;
@@ -229,8 +224,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_364 = _344;
}
float3 _365 = _364 * 0.75;
float3 _368 = _322.xyz + _365;
float3 _368 = _322.xyz + (_364 * 0.75);
float4 _369 = float4(_368.x, _368.y, _368.z, _322.w);
_28 _370 = _323;
_370._m0 = _369;
@@ -246,8 +240,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_411 = _391;
}
float3 _412 = _411 * 1.0;
float3 _415 = _369.xyz + _412;
float3 _415 = _369.xyz + (_411 * 1.0);
float4 _416 = float4(_415.x, _415.y, _415.z, _369.w);
_28 _417 = _370;
_417._m0 = _416;
@@ -263,8 +256,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_458 = _438;
}
float3 _459 = _458 * 0.75;
float3 _462 = _416.xyz + _459;
float3 _462 = _416.xyz + (_458 * 0.75);
float4 _463 = float4(_462.x, _462.y, _462.z, _416.w);
_28 _464 = _417;
_464._m0 = _463;
@@ -280,8 +272,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_505 = _485;
}
float3 _506 = _505 * 0.5;
float3 _509 = _463.xyz + _506;
float3 _509 = _463.xyz + (_505 * 0.5);
float4 _510 = float4(_509.x, _509.y, _509.z, _463.w);
_28 _511 = _464;
_511._m0 = _510;
@@ -297,8 +288,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_552 = _532;
}
float3 _553 = _552 * 0.5;
float3 _556 = _510.xyz + _553;
float3 _556 = _510.xyz + (_552 * 0.5);
float4 _557 = float4(_556.x, _556.y, _556.z, _510.w);
_28 _558 = _511;
_558._m0 = _557;
@@ -314,8 +304,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_599 = _579;
}
float3 _600 = _599 * 0.75;
float3 _603 = _557.xyz + _600;
float3 _603 = _557.xyz + (_599 * 0.75);
float4 _604 = float4(_603.x, _603.y, _603.z, _557.w);
_28 _605 = _558;
_605._m0 = _604;
@@ -331,8 +320,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
{
_646 = _626;
}
float3 _647 = _646 * 0.5;
float3 _650 = _604.xyz + _647;
float3 _650 = _604.xyz + (_646 * 0.5);
float4 _651 = float4(_650.x, _650.y, _650.z, _604.w);
_28 _652 = _605;
_652._m0 = _651;

View File

@@ -3,12 +3,11 @@
using namespace metal;
typedef packed_float2 packed_rm_float2x3[3];
struct S0
{
float2 a[1];
float b;
char _m0_final_padding[4];
};
struct S1
@@ -21,6 +20,7 @@ struct S2
{
float3 a[1];
float b;
char _m0_final_padding[12];
};
struct S3
@@ -45,6 +45,7 @@ struct Content
S3 m3;
float m4;
S4 m3s[8];
char _m0_final_padding[8];
};
struct SSBO1
@@ -58,10 +59,8 @@ struct SSBO1
float3x2 m3;
float2x2 m4;
float2x2 m5[9];
packed_rm_float2x3 m6[4][2];
char _m10_pad[8];
float3x2 m7;
char _m11_pad[8];
float3x2 m6[4][2];
float2x3 m7;
float array[1];
};
@@ -69,6 +68,7 @@ struct S0_1
{
float4 a[1];
float b;
char _m0_final_padding[12];
};
struct S1_1
@@ -81,6 +81,7 @@ struct S2_1
{
float3 a[1];
float b;
char _m0_final_padding[12];
};
struct S3_1
@@ -92,6 +93,7 @@ struct S3_1
struct S4_1
{
float2 c;
char _m0_final_padding[8];
};
struct Content_1
@@ -104,8 +106,8 @@ struct Content_1
S2_1 m2;
S3_1 m3;
float m4;
char _m8_pad[12];
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ S4_1 m3s[8];
char _m8_pad[8];
S4_1 m3s[8];
};
struct SSBO0
@@ -142,6 +144,6 @@ kernel void main0(device SSBO1& ssbo_430 [[buffer(0)]], device SSBO0& ssbo_140 [
ssbo_430.content.m3s[5].c = _60.m3s[5].c;
ssbo_430.content.m3s[6].c = _60.m3s[6].c;
ssbo_430.content.m3s[7].c = _60.m3s[7].c;
ssbo_430.content.m1.a = ssbo_430.content.m3.a * float3x2(float2(ssbo_430.m6[1][1][0]), float2(ssbo_430.m6[1][1][1]), float2(ssbo_430.m6[1][1][2]));
ssbo_430.content.m1.a = ssbo_430.content.m3.a * ssbo_430.m6[1][1];
}

View File

@@ -1,5 +1,3 @@
#pragma clang diagnostic ignored "-Wmissing-prototypes"
#include <metal_stdlib>
#include <simd/simd.h>
@@ -9,7 +7,7 @@ struct UBO
{
float4x4 uMVPR;
float4x4 uMVPC;
float2x4 uMVP;
float4x4 uMVP;
};
struct main0_out
@@ -22,16 +20,10 @@ struct main0_in
float4 aVertex [[attribute(0)]];
};
// Implementation of a conversion of matrix content from RowMajor to ColumnMajor organization.
float2x4 spvConvertFromRowMajor2x4(float2x4 m)
{
return float2x4(float4(m[0][0], m[0][2], m[1][0], m[1][2]), float4(m[0][1], m[0][3], m[1][1], m[1][3]));
}
vertex main0_out main0(main0_in in [[stage_in]], constant UBO& _18 [[buffer(0)]])
{
main0_out out = {};
float2 v = in.aVertex * spvConvertFromRowMajor2x4(_18.uMVP);
float2 v = float4x2(_18.uMVP[0].xy, _18.uMVP[1].xy, _18.uMVP[2].xy, _18.uMVP[3].xy) * in.aVertex;
out.gl_Position = (_18.uMVPR * in.aVertex) + (in.aVertex * _18.uMVPC);
return out;
}

View File

@@ -31,7 +31,7 @@ struct main0_out
fragment main0_out main0(constant UBO1& ubo1 [[buffer(0)]], constant UBO2& ubo0 [[buffer(1)]])
{
main0_out out = {};
out.FragColor = transpose(ubo1.foo.foo)[0] + ubo0.foo.foo[0];
out.FragColor = float4(ubo1.foo.foo[0][0], ubo1.foo.foo[1][0], ubo1.foo.foo[2][0], ubo1.foo.foo[3][0]) + ubo0.foo.foo[0];
return out;
}

View File

@@ -36,9 +36,7 @@ bool frustum_cull(thread const float2& p0, constant UBO& v_41)
float radius = 0.5 * length(bb_max - bb_min);
float3 f0 = float3(dot(v_41.uFrustum[0], float4(center, 1.0)), dot(v_41.uFrustum[1], float4(center, 1.0)), dot(v_41.uFrustum[2], float4(center, 1.0)));
float3 f1 = float3(dot(v_41.uFrustum[3], float4(center, 1.0)), dot(v_41.uFrustum[4], float4(center, 1.0)), dot(v_41.uFrustum[5], float4(center, 1.0)));
float3 _199 = f0;
float _200 = radius;
bool _205 = any(_199 <= float3(-_200));
bool _205 = any(f0 <= float3(-radius));
bool _215;
if (!_205)
{

View File

@@ -3,12 +3,10 @@
using namespace metal;
typedef packed_float4 packed_rm_float4x3[3];
struct _15
{
packed_rm_float4x3 _m0;
packed_rm_float4x3 _m1;
float3x4 _m0;
float3x4 _m1;
};
struct _42
@@ -44,7 +42,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant _15& _17 [[buffer(0)]]
float3 _13;
do
{
_13 = normalize(float4(in.m_25.xyz, 0.0) * float3x4(float4(_17._m1[0]), float4(_17._m1[1]), float4(_17._m1[2])));
_13 = normalize(float4(in.m_25.xyz, 0.0) * _17._m1);
break;
} while (false);
float4 _39 = _44._m0 * float4(float3(_44._m3) + (in.m_25.xyz * (_44._m6 + _44._m7)), 1.0);

View File

@@ -7,7 +7,7 @@ using namespace metal;
struct Block
{
float2x3 var[3][4];
float3x4 var[3][4];
};
struct main0_out
@@ -21,12 +21,6 @@ struct main0_in
float4 a_position [[attribute(0)]];
};
// Implementation of a conversion of matrix content from RowMajor to ColumnMajor organization.
float2x3 spvConvertFromRowMajor2x3(float2x3 m)
{
return float2x3(float3(m[0][0], m[0][2], m[1][1]), float3(m[0][1], m[1][0], m[1][2]));
}
float compare_float(thread const float& a, thread const float& b)
{
return float(abs(a - b) < 0.0500000007450580596923828125);
@@ -57,7 +51,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant Block& _104 [[buffer(0
main0_out out = {};
out.gl_Position = in.a_position;
float result = 1.0;
float2x3 param = spvConvertFromRowMajor2x3(_104.var[0][0]);
float2x3 param = transpose(float3x2(_104.var[0][0][0].xy, _104.var[0][0][1].xy, _104.var[0][0][2].xy));
float2x3 param_1 = float2x3(float3(2.0, 6.0, -6.0), float3(0.0, 5.0, 5.0));
result *= compare_mat2x3(param, param_1);
out.v_vtxResult = result;

View File

@@ -4,7 +4,6 @@
using namespace metal;
typedef packed_float2 packed_float2x2[2];
typedef packed_float2 packed_rm_float2x3[3];
typedef packed_float3 packed_float2x3[2];
typedef packed_float3 packed_rm_float3x2[2];
@@ -32,11 +31,6 @@ struct S3
float b;
};
struct S4
{
float2 c;
};
struct Content
{
S0 m0s[1];
@@ -47,7 +41,6 @@ struct Content
S2 m2;
S3 m3;
float m4;
S4 m3s[8];
};
struct SSBO1
@@ -61,8 +54,8 @@ struct SSBO1
float3x2 m3;
float2x2 m4;
float2x2 m5[9];
packed_rm_float2x3 m6[4][2];
float3x2 m7;
float3x2 m6[4][2];
packed_rm_float3x2 m7;
float array[1];
};
@@ -70,6 +63,7 @@ struct S0_1
{
float4 a[1];
float b;
char _m0_final_padding[12];
};
struct S1_1
@@ -82,6 +76,7 @@ struct S2_1
{
float3 a[1];
float b;
char _m0_final_padding[12];
};
struct S3_1
@@ -90,11 +85,6 @@ struct S3_1
float b;
};
struct S4_1
{
float2 c;
};
struct Content_1
{
S0_1 m0s[1];
@@ -105,8 +95,7 @@ struct Content_1
S2_1 m2;
S3_1 m3;
float m4;
char _m8_pad[12];
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ S4_1 m3s[8];
char _m0_final_padding[12];
};
struct SSBO0
@@ -114,18 +103,14 @@ struct SSBO0
Content_1 content;
Content_1 content1[2];
Content_1 content2;
float2x2 m0;
char _m4_pad[16];
float2x2 m1;
char _m5_pad[16];
float2x4 m0;
float2x4 m1;
float2x3 m2[4];
float3x2 m3;
char _m7_pad[24];
float2x2 m4;
char _m8_pad[16];
float2x2 m5[9];
float2x3 m6[4][2];
float3x2 m7;
float3x4 m3;
float2x4 m4;
float2x4 m5[9];
float3x4 m6[4][2];
float2x3 m7;
float4 array[1];
};
@@ -153,19 +138,11 @@ kernel void main0(device SSBO1& ssbo_scalar [[buffer(0)]], device SSBO0& ssbo_14
ssbo_scalar.content.m3.a = ssbo_140.content.m3.a;
ssbo_scalar.content.m3.b = ssbo_140.content.m3.b;
ssbo_scalar.content.m4 = ssbo_140.content.m4;
ssbo_scalar.content.m3s[0].c = ssbo_140.content.m3s[0].c;
ssbo_scalar.content.m3s[1].c = ssbo_140.content.m3s[1].c;
ssbo_scalar.content.m3s[2].c = ssbo_140.content.m3s[2].c;
ssbo_scalar.content.m3s[3].c = ssbo_140.content.m3s[3].c;
ssbo_scalar.content.m3s[4].c = ssbo_140.content.m3s[4].c;
ssbo_scalar.content.m3s[5].c = ssbo_140.content.m3s[5].c;
ssbo_scalar.content.m3s[6].c = ssbo_140.content.m3s[6].c;
ssbo_scalar.content.m3s[7].c = ssbo_140.content.m3s[7].c;
ssbo_scalar.content.m1.a = float2x3(float3(ssbo_scalar.m2[1][0]), float3(ssbo_scalar.m2[1][1])) * float2(ssbo_scalar.content.m0.a[0]);
ssbo_scalar.m0 = float2x2(float2(ssbo_scalar2.m1[0]), float2(ssbo_scalar2.m1[1]));
ssbo_scalar2.m1[0] = transpose(ssbo_scalar.m4)[0];
ssbo_scalar2.m1[1] = transpose(ssbo_scalar.m4)[1];
ssbo_scalar2.m2[0] = spvConvertFromRowMajor3x2(ssbo_scalar.m3)[0];
ssbo_scalar2.m2[1] = spvConvertFromRowMajor3x2(ssbo_scalar.m3)[1];
ssbo_scalar2.m1[0] = float2(ssbo_scalar.m4[0][0], ssbo_scalar.m4[1][0]);
ssbo_scalar2.m1[1] = float2(ssbo_scalar.m4[0][1], ssbo_scalar.m4[1][1]);
ssbo_scalar2.m2[0] = float3(ssbo_scalar.m3[0][0], ssbo_scalar.m3[1][0], ssbo_scalar.m3[2][0]);
ssbo_scalar2.m2[1] = float3(ssbo_scalar.m3[0][1], ssbo_scalar.m3[1][1], ssbo_scalar.m3[2][1]);
}

View File

@@ -147,7 +147,6 @@ void main()
_193 = _192;
break;
} while (false);
vec4 _194 = _193 * 1.0;
vec4 _220;
do
{
@@ -173,7 +172,7 @@ void main()
vec3 _253 = vec3(_252.x, _252.y, _232.z);
vec2 _255 = _253.xy * _165;
vec3 _256 = vec3(_255.x, _255.y, _253.z);
vec3 _271 = ((IN_Color.xyz * _194.xyz) * (1.0 + (_256.x * 0.300000011920928955078125))) * (texture(SPIRV_Cross_CombinedStudsMapTextureStudsMapSampler, _156.UvStuds).x * 2.0);
vec3 _271 = ((IN_Color.xyz * (_193 * 1.0).xyz) * (1.0 + (_256.x * 0.300000011920928955078125))) * (texture(SPIRV_Cross_CombinedStudsMapTextureStudsMapSampler, _156.UvStuds).x * 2.0);
vec4 _298;
do
{

View File

@@ -93,11 +93,13 @@ void main()
{
if (l == 5)
{
l++;
int _172 = l;
l = _172 + 1;
continue;
}
idat += vec4(1.0);
l++;
int _172 = l;
l = _172 + 1;
continue;
}
_177.out_data[ident] = idat;

View File

@@ -110,8 +110,7 @@ void main()
{
_129 = _109;
}
vec3 _130 = _129 * 0.5;
vec3 _133 = vec4(0.0).xyz + _130;
vec3 _133 = vec4(0.0).xyz + (_129 * 0.5);
vec4 _134 = vec4(_133.x, _133.y, _133.z, vec4(0.0).w);
_28 _135 = _77;
_135._m0 = _134;
@@ -127,8 +126,7 @@ void main()
{
_176 = _156;
}
vec3 _177 = _176 * 0.5;
vec3 _180 = _134.xyz + _177;
vec3 _180 = _134.xyz + (_176 * 0.5);
vec4 _181 = vec4(_180.x, _180.y, _180.z, _134.w);
_28 _182 = _135;
_182._m0 = _181;
@@ -144,8 +142,7 @@ void main()
{
_223 = _203;
}
vec3 _224 = _223 * 0.75;
vec3 _227 = _181.xyz + _224;
vec3 _227 = _181.xyz + (_223 * 0.75);
vec4 _228 = vec4(_227.x, _227.y, _227.z, _181.w);
_28 _229 = _182;
_229._m0 = _228;
@@ -161,8 +158,7 @@ void main()
{
_270 = _250;
}
vec3 _271 = _270 * 0.5;
vec3 _274 = _228.xyz + _271;
vec3 _274 = _228.xyz + (_270 * 0.5);
vec4 _275 = vec4(_274.x, _274.y, _274.z, _228.w);
_28 _276 = _229;
_276._m0 = _275;
@@ -178,8 +174,7 @@ void main()
{
_317 = _297;
}
vec3 _318 = _317 * 0.5;
vec3 _321 = _275.xyz + _318;
vec3 _321 = _275.xyz + (_317 * 0.5);
vec4 _322 = vec4(_321.x, _321.y, _321.z, _275.w);
_28 _323 = _276;
_323._m0 = _322;
@@ -195,8 +190,7 @@ void main()
{
_364 = _344;
}
vec3 _365 = _364 * 0.75;
vec3 _368 = _322.xyz + _365;
vec3 _368 = _322.xyz + (_364 * 0.75);
vec4 _369 = vec4(_368.x, _368.y, _368.z, _322.w);
_28 _370 = _323;
_370._m0 = _369;
@@ -212,8 +206,7 @@ void main()
{
_411 = _391;
}
vec3 _412 = _411 * 1.0;
vec3 _415 = _369.xyz + _412;
vec3 _415 = _369.xyz + (_411 * 1.0);
vec4 _416 = vec4(_415.x, _415.y, _415.z, _369.w);
_28 _417 = _370;
_417._m0 = _416;
@@ -229,8 +222,7 @@ void main()
{
_458 = _438;
}
vec3 _459 = _458 * 0.75;
vec3 _462 = _416.xyz + _459;
vec3 _462 = _416.xyz + (_458 * 0.75);
vec4 _463 = vec4(_462.x, _462.y, _462.z, _416.w);
_28 _464 = _417;
_464._m0 = _463;
@@ -246,8 +238,7 @@ void main()
{
_505 = _485;
}
vec3 _506 = _505 * 0.5;
vec3 _509 = _463.xyz + _506;
vec3 _509 = _463.xyz + (_505 * 0.5);
vec4 _510 = vec4(_509.x, _509.y, _509.z, _463.w);
_28 _511 = _464;
_511._m0 = _510;
@@ -263,8 +254,7 @@ void main()
{
_552 = _532;
}
vec3 _553 = _552 * 0.5;
vec3 _556 = _510.xyz + _553;
vec3 _556 = _510.xyz + (_552 * 0.5);
vec4 _557 = vec4(_556.x, _556.y, _556.z, _510.w);
_28 _558 = _511;
_558._m0 = _557;
@@ -280,8 +270,7 @@ void main()
{
_599 = _579;
}
vec3 _600 = _599 * 0.75;
vec3 _603 = _557.xyz + _600;
vec3 _603 = _557.xyz + (_599 * 0.75);
vec4 _604 = vec4(_603.x, _603.y, _603.z, _557.w);
_28 _605 = _558;
_605._m0 = _604;
@@ -297,8 +286,7 @@ void main()
{
_646 = _626;
}
vec3 _647 = _646 * 0.5;
vec3 _650 = _604.xyz + _647;
vec3 _650 = _604.xyz + (_646 * 0.5);
vec4 _651 = vec4(_650.x, _650.y, _650.z, _604.w);
_28 _652 = _605;
_652._m0 = _651;

View File

@@ -27,7 +27,6 @@ uvec2 workaround_mix(uvec2 a, uvec2 b, bvec2 sel)
{
_86 = a.x;
}
uint _94 = _86;
uint _97;
if (sel.y)
{
@@ -37,7 +36,7 @@ uvec2 workaround_mix(uvec2 a, uvec2 b, bvec2 sel)
{
_97 = a.y;
}
return uvec2(_94, _97);
return uvec2(_86, _97);
}
vec2 alias(vec2 i, vec2 N)

View File

@@ -26,9 +26,7 @@ bool frustum_cull(vec2 p0)
float radius = 0.5 * length(bb_max - bb_min);
vec3 f0 = vec3(dot(_41.uFrustum[0], vec4(center, 1.0)), dot(_41.uFrustum[1], vec4(center, 1.0)), dot(_41.uFrustum[2], vec4(center, 1.0)));
vec3 f1 = vec3(dot(_41.uFrustum[3], vec4(center, 1.0)), dot(_41.uFrustum[4], vec4(center, 1.0)), dot(_41.uFrustum[5], vec4(center, 1.0)));
vec3 _199 = f0;
float _200 = radius;
bool _205 = any(lessThanEqual(_199, vec3(-_200)));
bool _205 = any(lessThanEqual(f0, vec3(-radius)));
bool _215;
if (!_205)
{

View File

@@ -67,7 +67,6 @@ vec2 warp_position()
{
_110 = 0u;
}
uint _116 = _110;
uint _120;
if (uPosition.y < 32u)
{
@@ -77,7 +76,7 @@ vec2 warp_position()
{
_120 = 0u;
}
uvec2 rounding = uvec2(_116, _120);
uvec2 rounding = uvec2(_110, _120);
vec4 lower_upper_snapped = vec4((uPosition + rounding).xyxy & (~mask).xxyy);
return mix(lower_upper_snapped.xy, lower_upper_snapped.zw, vec2(fract_lod));
}

View File

@@ -0,0 +1,48 @@
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 7
; Bound: 21
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpSource GLSL 450
OpName %main "main"
OpName %SSBORow "SSBORow"
OpMemberName %SSBORow 0 "v"
OpMemberName %SSBORow 1 "row_major0"
OpName %_ ""
OpMemberDecorate %SSBORow 0 Offset 0
OpMemberDecorate %SSBORow 1 RowMajor
OpMemberDecorate %SSBORow 1 Offset 16
OpMemberDecorate %SSBORow 1 MatrixStride 16
OpDecorate %SSBORow BufferBlock
OpDecorate %_ DescriptorSet 0
OpDecorate %_ Binding 0
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%mat4v4float = OpTypeMatrix %v4float 4
%SSBORow = OpTypeStruct %float %mat4v4float
%_ptr_Uniform_SSBORow = OpTypePointer Uniform %SSBORow
%_ = OpVariable %_ptr_Uniform_SSBORow Uniform
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%uint = OpTypeInt 32 0
%uint_2 = OpConstant %uint 2
%_ptr_Uniform_float = OpTypePointer Uniform %float
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%main = OpFunction %void None %3
%5 = OpLabel
%row_ptr = OpAccessChain %_ptr_Uniform_v4float %_ %int_1 %int_1
%vec = OpLoad %v4float %row_ptr
%float_val = OpCompositeExtract %float %vec 2
%20 = OpAccessChain %_ptr_Uniform_float %_ %int_0
OpStore %20 %float_val
OpReturn
OpFunctionEnd

View File

@@ -0,0 +1,56 @@
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 7
; Bound: 23
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpSource GLSL 450
OpSourceExtension "GL_EXT_scalar_block_layout"
OpName %main "main"
OpName %SSBOScalar "SSBOScalar"
OpMemberName %SSBOScalar 0 "a"
OpMemberName %SSBOScalar 1 "b"
OpMemberName %SSBOScalar 2 "c"
OpName %_ ""
OpMemberDecorate %SSBOScalar 0 Offset 0
OpMemberDecorate %SSBOScalar 1 RowMajor
OpMemberDecorate %SSBOScalar 1 Offset 16
OpMemberDecorate %SSBOScalar 1 MatrixStride 16
OpMemberDecorate %SSBOScalar 2 RowMajor
OpMemberDecorate %SSBOScalar 2 Offset 64
OpMemberDecorate %SSBOScalar 2 MatrixStride 16
OpDecorate %SSBOScalar BufferBlock
OpDecorate %_ DescriptorSet 0
OpDecorate %_ Binding 0
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
%SSBOScalar = OpTypeStruct %v3float %mat3v3float %mat3v3float
%_ptr_Uniform_SSBOScalar = OpTypePointer Uniform %SSBOScalar
%_ = OpVariable %_ptr_Uniform_SSBOScalar Uniform
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2
%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%main = OpFunction %void None %3
%5 = OpLabel
%b_ptr = OpAccessChain %_ptr_Uniform_mat3v3float %_ %int_1
%c_ptr = OpAccessChain %_ptr_Uniform_mat3v3float %_ %int_2
%b = OpLoad %mat3v3float %b_ptr
%c = OpLoad %mat3v3float %c_ptr
OpStore %b_ptr %c
%19 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0
%20 = OpLoad %v3float %19
%21 = OpMatrixTimesVector %v3float %b %20
%22 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0
OpStore %22 %21
OpReturn
OpFunctionEnd

View File

@@ -0,0 +1,48 @@
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 7
; Bound: 22
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpSource GLSL 450
OpSourceExtension "GL_EXT_scalar_block_layout"
OpName %main "main"
OpName %SSBOScalar "SSBOScalar"
OpMemberName %SSBOScalar 0 "a"
OpMemberName %SSBOScalar 1 "b"
OpMemberName %SSBOScalar 2 "c"
OpName %_ ""
OpMemberDecorate %SSBOScalar 0 Offset 0
OpMemberDecorate %SSBOScalar 1 Offset 12
OpMemberDecorate %SSBOScalar 2 Offset 24
OpDecorate %SSBOScalar BufferBlock
OpDecorate %_ DescriptorSet 0
OpDecorate %_ Binding 0
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
%SSBOScalar = OpTypeStruct %v3float %v3float %v3float
%_ptr_Uniform_SSBOScalar = OpTypePointer Uniform %SSBOScalar
%_ = OpVariable %_ptr_Uniform_SSBOScalar Uniform
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%int_2 = OpConstant %int 2
%main = OpFunction %void None %3
%5 = OpLabel
%15 = OpAccessChain %_ptr_Uniform_v3float %_ %int_1
%16 = OpLoad %v3float %15
%18 = OpAccessChain %_ptr_Uniform_v3float %_ %int_2
%19 = OpLoad %v3float %18
OpStore %18 %16
%20 = OpFMul %v3float %16 %19
%21 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0
OpStore %21 %20
OpReturn
OpFunctionEnd

View File

@@ -0,0 +1,61 @@
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 7
; Bound: 29
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpSource GLSL 450
OpSourceExtension "GL_EXT_scalar_block_layout"
OpName %main "main"
OpName %SSBOScalar "SSBOScalar"
OpMemberName %SSBOScalar 0 "a"
OpMemberName %SSBOScalar 1 "b"
OpMemberName %SSBOScalar 2 "c"
OpName %_ ""
OpDecorate %_arr_v2float_uint_16 ArrayStride 16
OpDecorate %_arr_v2float_uint_16_0 ArrayStride 16
OpDecorate %_arr_float_uint_16 ArrayStride 16
OpMemberDecorate %SSBOScalar 0 Offset 0
OpMemberDecorate %SSBOScalar 1 Offset 256
OpMemberDecorate %SSBOScalar 2 Offset 512
OpDecorate %SSBOScalar BufferBlock
OpDecorate %_ DescriptorSet 0
OpDecorate %_ Binding 0
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%v2float = OpTypeVector %float 2
%uint = OpTypeInt 32 0
%uint_16 = OpConstant %uint 16
%_arr_v2float_uint_16 = OpTypeArray %v2float %uint_16
%_arr_v2float_uint_16_0 = OpTypeArray %v2float %uint_16
%_arr_float_uint_16 = OpTypeArray %float %uint_16
%SSBOScalar = OpTypeStruct %_arr_v2float_uint_16 %_arr_v2float_uint_16_0 %_arr_float_uint_16
%_ptr_Uniform_SSBOScalar = OpTypePointer Uniform %SSBOScalar
%_ = OpVariable %_ptr_Uniform_SSBOScalar Uniform
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_10 = OpConstant %int 10
%int_1 = OpConstant %int 1
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
%int_2 = OpConstant %int 2
%float_10 = OpConstant %float 10.0
%float_11 = OpConstant %float 11.0
%float_const = OpConstantComposite %v2float %float_10 %float_11
%_ptr_Uniform_float = OpTypePointer Uniform %float
%main = OpFunction %void None %3
%5 = OpLabel
%21 = OpAccessChain %_ptr_Uniform_v2float %_ %int_1 %int_10
%22 = OpLoad %v2float %21
%25 = OpAccessChain %_ptr_Uniform_float %_ %int_2 %int_10
%26 = OpLoad %float %25
OpStore %21 %float_const
%27 = OpVectorTimesScalar %v2float %22 %26
%28 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0 %int_10
OpStore %28 %27
OpReturn
OpFunctionEnd

View File

@@ -0,0 +1,54 @@
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 7
; Bound: 29
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpSource GLSL 450
OpSourceExtension "GL_EXT_scalar_block_layout"
OpName %main "main"
OpName %SSBOScalar "SSBOScalar"
OpMemberName %SSBOScalar 0 "a"
OpMemberName %SSBOScalar 1 "b"
OpMemberName %SSBOScalar 2 "c"
OpName %_ ""
OpMemberDecorate %SSBOScalar 0 Offset 0
OpMemberDecorate %SSBOScalar 1 Offset 8
OpMemberDecorate %SSBOScalar 2 Offset 20
OpDecorate %SSBOScalar BufferBlock
OpDecorate %_ DescriptorSet 0
OpDecorate %_ Binding 0
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%v2float = OpTypeVector %float 2
%v3float = OpTypeVector %float 3
%SSBOScalar = OpTypeStruct %v2float %v3float %v3float
%_ptr_Uniform_SSBOScalar = OpTypePointer Uniform %SSBOScalar
%_ = OpVariable %_ptr_Uniform_SSBOScalar Uniform
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%int_2 = OpConstant %int 2
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
%float_1 = OpConstant %float 1
%27 = OpConstantComposite %v3float %float_1 %float_1 %float_1
%main = OpFunction %void None %3
%5 = OpLabel
%16 = OpAccessChain %_ptr_Uniform_v3float %_ %int_1
%17 = OpLoad %v3float %16
%18 = OpVectorShuffle %v2float %17 %17 0 1
%20 = OpAccessChain %_ptr_Uniform_v3float %_ %int_2
%21 = OpLoad %v3float %20
%22 = OpVectorShuffle %v2float %21 %21 1 2
OpStore %16 %27
%23 = OpFMul %v2float %18 %22
%25 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
OpStore %25 %23
OpReturn
OpFunctionEnd

View File

@@ -0,0 +1,56 @@
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 7
; Bound: 23
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpSource GLSL 450
OpSourceExtension "GL_EXT_scalar_block_layout"
OpName %main "main"
OpName %SSBOScalar "SSBOScalar"
OpMemberName %SSBOScalar 0 "a"
OpMemberName %SSBOScalar 1 "b"
OpMemberName %SSBOScalar 2 "c"
OpName %_ ""
OpMemberDecorate %SSBOScalar 0 Offset 0
OpMemberDecorate %SSBOScalar 1 RowMajor
OpMemberDecorate %SSBOScalar 1 Offset 12
OpMemberDecorate %SSBOScalar 1 MatrixStride 12
OpMemberDecorate %SSBOScalar 2 RowMajor
OpMemberDecorate %SSBOScalar 2 Offset 48
OpMemberDecorate %SSBOScalar 2 MatrixStride 12
OpDecorate %SSBOScalar BufferBlock
OpDecorate %_ DescriptorSet 0
OpDecorate %_ Binding 0
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
%SSBOScalar = OpTypeStruct %v3float %mat3v3float %mat3v3float
%_ptr_Uniform_SSBOScalar = OpTypePointer Uniform %SSBOScalar
%_ = OpVariable %_ptr_Uniform_SSBOScalar Uniform
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2
%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%main = OpFunction %void None %3
%5 = OpLabel
%b_ptr = OpAccessChain %_ptr_Uniform_mat3v3float %_ %int_1
%c_ptr = OpAccessChain %_ptr_Uniform_mat3v3float %_ %int_2
%b = OpLoad %mat3v3float %b_ptr
%c = OpLoad %mat3v3float %c_ptr
OpStore %b_ptr %c
%19 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0
%20 = OpLoad %v3float %19
%21 = OpMatrixTimesVector %v3float %b %20
%22 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0
OpStore %22 %21
OpReturn
OpFunctionEnd

View File

@@ -0,0 +1,57 @@
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 7
; Bound: 28
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpSource GLSL 450
OpSourceExtension "GL_EXT_scalar_block_layout"
OpName %main "main"
OpName %SSBOScalar "SSBOScalar"
OpMemberName %SSBOScalar 0 "a"
OpMemberName %SSBOScalar 1 "b"
OpMemberName %SSBOScalar 2 "c"
OpMemberName %SSBOScalar 3 "d"
OpName %_ ""
OpMemberDecorate %SSBOScalar 0 Offset 0
OpMemberDecorate %SSBOScalar 1 Offset 8
OpMemberDecorate %SSBOScalar 2 Offset 20
OpMemberDecorate %SSBOScalar 3 Offset 32
OpDecorate %SSBOScalar BufferBlock
OpDecorate %_ DescriptorSet 0
OpDecorate %_ Binding 0
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%v2float = OpTypeVector %float 2
%v3float = OpTypeVector %float 3
%SSBOScalar = OpTypeStruct %v2float %v3float %v3float %v3float
%_ptr_Uniform_SSBOScalar = OpTypePointer Uniform %SSBOScalar
%_ = OpVariable %_ptr_Uniform_SSBOScalar Uniform
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%int_2 = OpConstant %int 2
%uint = OpTypeInt 32 0
%uint_0 = OpConstant %uint 0
%float_2 = OpConstant %float 2.0
%_ptr_Uniform_float = OpTypePointer Uniform %float
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
%main = OpFunction %void None %3
%5 = OpLabel
%v3_ptr = OpAccessChain %_ptr_Uniform_v3float %_ %int_1
%v3 = OpLoad %v3float %v3_ptr
%v3_mod = OpCompositeInsert %v3float %float_2 %v3 2
%v2 = OpVectorShuffle %v2float %v3 %v3 0 1
%v1 = OpCompositeExtract %float %v3 2
%v2_mul = OpVectorTimesScalar %v2float %v2 %v1
%v2_ptr = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
OpStore %v2_ptr %v2_mul
OpStore %v3_ptr %v3_mod
OpReturn
OpFunctionEnd

View File

@@ -0,0 +1,48 @@
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 7
; Bound: 21
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpSource GLSL 450
OpName %main "main"
OpName %SSBORow "SSBORow"
OpMemberName %SSBORow 0 "v"
OpMemberName %SSBORow 1 "row_major0"
OpName %_ ""
OpMemberDecorate %SSBORow 0 Offset 0
OpMemberDecorate %SSBORow 1 RowMajor
OpMemberDecorate %SSBORow 1 Offset 16
OpMemberDecorate %SSBORow 1 MatrixStride 16
OpDecorate %SSBORow BufferBlock
OpDecorate %_ DescriptorSet 0
OpDecorate %_ Binding 0
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%mat4v4float = OpTypeMatrix %v4float 4
%SSBORow = OpTypeStruct %float %mat4v4float
%_ptr_Uniform_SSBORow = OpTypePointer Uniform %SSBORow
%_ = OpVariable %_ptr_Uniform_SSBORow Uniform
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%uint = OpTypeInt 32 0
%uint_2 = OpConstant %uint 2
%_ptr_Uniform_float = OpTypePointer Uniform %float
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%main = OpFunction %void None %3
%5 = OpLabel
%row_ptr = OpAccessChain %_ptr_Uniform_v4float %_ %int_1 %int_1
%float_ptr = OpAccessChain %_ptr_Uniform_float %row_ptr %uint_2
%19 = OpLoad %float %float_ptr
%20 = OpAccessChain %_ptr_Uniform_float %_ %int_0
OpStore %20 %19
OpReturn
OpFunctionEnd

View File

@@ -0,0 +1,86 @@
#version 450
#extension GL_EXT_scalar_block_layout : require
layout(local_size_x = 1) in;
#define T mat2
#define PACKING scalar
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
{
layout(column_major) T col_major0;
layout(column_major) T col_major1;
};
layout(set = 0, binding = 1, PACKING) buffer SSBORow
{
layout(row_major) T row_major0;
layout(row_major) T row_major1;
};
void load_store_to_variable_col_major()
{
// Load to variable.
T loaded = col_major0;
// Store from variable.
col_major1 = loaded;
}
void load_store_to_variable_row_major()
{
// Load to variable.
T loaded = row_major0;
// Store to variable.
row_major0 = loaded;
}
void copy_col_major_to_col_major()
{
// Copy col -> col
col_major0 = col_major1;
}
void copy_row_major_to_col_major()
{
// Copy row -> col
col_major0 = row_major0;
}
void copy_col_major_to_row_major()
{
// Copy col -> row
row_major0 = col_major0;
}
void copy_row_major_to_row_major()
{
// Copy row -> row
row_major0 = row_major1;
}
void copy_columns()
{
// Copy columns/rows.
col_major0[1] = row_major0[1];
row_major0[1] = col_major0[1];
}
void copy_elements()
{
// Copy individual elements.
col_major0[0][1] = row_major0[0][1];
row_major0[0][1] = col_major0[0][1];
}
void main()
{
load_store_to_variable_col_major();
load_store_to_variable_row_major();
copy_col_major_to_col_major();
copy_col_major_to_row_major();
copy_row_major_to_col_major();
copy_row_major_to_row_major();
copy_columns();
copy_elements();
}

View File

@@ -0,0 +1,85 @@
#version 450
layout(local_size_x = 1) in;
#define T mat2
#define PACKING std140
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
{
layout(column_major) T col_major0;
layout(column_major) T col_major1;
};
layout(set = 0, binding = 1, PACKING) buffer SSBORow
{
layout(row_major) T row_major0;
layout(row_major) T row_major1;
};
void load_store_to_variable_col_major()
{
// Load to variable.
T loaded = col_major0;
// Store from variable.
col_major1 = loaded;
}
void load_store_to_variable_row_major()
{
// Load to variable.
T loaded = row_major0;
// Store to variable.
row_major0 = loaded;
}
void copy_col_major_to_col_major()
{
// Copy col -> col
col_major0 = col_major1;
}
void copy_row_major_to_col_major()
{
// Copy row -> col
col_major0 = row_major0;
}
void copy_col_major_to_row_major()
{
// Copy col -> row
row_major0 = col_major0;
}
void copy_row_major_to_row_major()
{
// Copy row -> row
row_major0 = row_major1;
}
void copy_columns()
{
// Copy columns/rows.
col_major0[1] = row_major0[1];
row_major0[1] = col_major0[1];
}
void copy_elements()
{
// Copy individual elements.
col_major0[0][1] = row_major0[0][1];
row_major0[0][1] = col_major0[0][1];
}
void main()
{
load_store_to_variable_col_major();
load_store_to_variable_row_major();
copy_col_major_to_col_major();
copy_col_major_to_row_major();
copy_row_major_to_col_major();
copy_row_major_to_row_major();
copy_columns();
copy_elements();
}

View File

@@ -0,0 +1,85 @@
#version 450
layout(local_size_x = 1) in;
#define T mat2
#define PACKING std430
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
{
layout(column_major) T col_major0;
layout(column_major) T col_major1;
};
layout(set = 0, binding = 1, PACKING) buffer SSBORow
{
layout(row_major) T row_major0;
layout(row_major) T row_major1;
};
void load_store_to_variable_col_major()
{
// Load to variable.
T loaded = col_major0;
// Store from variable.
col_major1 = loaded;
}
void load_store_to_variable_row_major()
{
// Load to variable.
T loaded = row_major0;
// Store to variable.
row_major0 = loaded;
}
void copy_col_major_to_col_major()
{
// Copy col -> col
col_major0 = col_major1;
}
void copy_row_major_to_col_major()
{
// Copy row -> col
col_major0 = row_major0;
}
void copy_col_major_to_row_major()
{
// Copy col -> row
row_major0 = col_major0;
}
void copy_row_major_to_row_major()
{
// Copy row -> row
row_major0 = row_major1;
}
void copy_columns()
{
// Copy columns/rows.
col_major0[1] = row_major0[1];
row_major0[1] = col_major0[1];
}
void copy_elements()
{
// Copy individual elements.
col_major0[0][1] = row_major0[0][1];
row_major0[0][1] = col_major0[0][1];
}
void main()
{
load_store_to_variable_col_major();
load_store_to_variable_row_major();
copy_col_major_to_col_major();
copy_col_major_to_row_major();
copy_row_major_to_col_major();
copy_row_major_to_row_major();
copy_columns();
copy_elements();
}

View File

@@ -0,0 +1,86 @@
#version 450
#extension GL_EXT_scalar_block_layout : require
layout(local_size_x = 1) in;
#define T mat2x3
#define PACKING scalar
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
{
layout(column_major) T col_major0;
layout(column_major) T col_major1;
};
layout(set = 0, binding = 1, PACKING) buffer SSBORow
{
layout(row_major) T row_major0;
layout(row_major) T row_major1;
};
void load_store_to_variable_col_major()
{
// Load to variable.
T loaded = col_major0;
// Store from variable.
col_major1 = loaded;
}
void load_store_to_variable_row_major()
{
// Load to variable.
T loaded = row_major0;
// Store to variable.
row_major0 = loaded;
}
void copy_col_major_to_col_major()
{
// Copy col -> col
col_major0 = col_major1;
}
void copy_row_major_to_col_major()
{
// Copy row -> col
col_major0 = row_major0;
}
void copy_col_major_to_row_major()
{
// Copy col -> row
row_major0 = col_major0;
}
void copy_row_major_to_row_major()
{
// Copy row -> row
row_major0 = row_major1;
}
void copy_columns()
{
// Copy columns/rows.
col_major0[1] = row_major0[1];
row_major0[1] = col_major0[1];
}
void copy_elements()
{
// Copy individual elements.
col_major0[0][1] = row_major0[0][1];
row_major0[0][1] = col_major0[0][1];
}
void main()
{
load_store_to_variable_col_major();
load_store_to_variable_row_major();
copy_col_major_to_col_major();
copy_col_major_to_row_major();
copy_row_major_to_col_major();
copy_row_major_to_row_major();
copy_columns();
copy_elements();
}

View File

@@ -0,0 +1,85 @@
#version 450
layout(local_size_x = 1) in;
#define T mat2x3
#define PACKING std140
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
{
layout(column_major) T col_major0;
layout(column_major) T col_major1;
};
layout(set = 0, binding = 1, PACKING) buffer SSBORow
{
layout(row_major) T row_major0;
layout(row_major) T row_major1;
};
void load_store_to_variable_col_major()
{
// Load to variable.
T loaded = col_major0;
// Store from variable.
col_major1 = loaded;
}
void load_store_to_variable_row_major()
{
// Load to variable.
T loaded = row_major0;
// Store to variable.
row_major0 = loaded;
}
void copy_col_major_to_col_major()
{
// Copy col -> col
col_major0 = col_major1;
}
void copy_row_major_to_col_major()
{
// Copy row -> col
col_major0 = row_major0;
}
void copy_col_major_to_row_major()
{
// Copy col -> row
row_major0 = col_major0;
}
void copy_row_major_to_row_major()
{
// Copy row -> row
row_major0 = row_major1;
}
void copy_columns()
{
// Copy columns/rows.
col_major0[1] = row_major0[1];
row_major0[1] = col_major0[1];
}
void copy_elements()
{
// Copy individual elements.
col_major0[0][1] = row_major0[0][1];
row_major0[0][1] = col_major0[0][1];
}
void main()
{
load_store_to_variable_col_major();
load_store_to_variable_row_major();
copy_col_major_to_col_major();
copy_col_major_to_row_major();
copy_row_major_to_col_major();
copy_row_major_to_row_major();
copy_columns();
copy_elements();
}

View File

@@ -0,0 +1,85 @@
#version 450
layout(local_size_x = 1) in;
#define T mat2x3
#define PACKING std430
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
{
layout(column_major) T col_major0;
layout(column_major) T col_major1;
};
layout(set = 0, binding = 1, PACKING) buffer SSBORow
{
layout(row_major) T row_major0;
layout(row_major) T row_major1;
};
void load_store_to_variable_col_major()
{
// Load to variable.
T loaded = col_major0;
// Store from variable.
col_major1 = loaded;
}
void load_store_to_variable_row_major()
{
// Load to variable.
T loaded = row_major0;
// Store to variable.
row_major0 = loaded;
}
void copy_col_major_to_col_major()
{
// Copy col -> col
col_major0 = col_major1;
}
void copy_row_major_to_col_major()
{
// Copy row -> col
col_major0 = row_major0;
}
void copy_col_major_to_row_major()
{
// Copy col -> row
row_major0 = col_major0;
}
void copy_row_major_to_row_major()
{
// Copy row -> row
row_major0 = row_major1;
}
void copy_columns()
{
// Copy columns/rows.
col_major0[1] = row_major0[1];
row_major0[1] = col_major0[1];
}
void copy_elements()
{
// Copy individual elements.
col_major0[0][1] = row_major0[0][1];
row_major0[0][1] = col_major0[0][1];
}
void main()
{
load_store_to_variable_col_major();
load_store_to_variable_row_major();
copy_col_major_to_col_major();
copy_col_major_to_row_major();
copy_row_major_to_col_major();
copy_row_major_to_row_major();
copy_columns();
copy_elements();
}

View File

@@ -0,0 +1,86 @@
#version 450
#extension GL_EXT_scalar_block_layout : require
layout(local_size_x = 1) in;
#define T mat2x4
#define PACKING scalar
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
{
layout(column_major) T col_major0;
layout(column_major) T col_major1;
};
layout(set = 0, binding = 1, PACKING) buffer SSBORow
{
layout(row_major) T row_major0;
layout(row_major) T row_major1;
};
void load_store_to_variable_col_major()
{
// Load to variable.
T loaded = col_major0;
// Store from variable.
col_major1 = loaded;
}
void load_store_to_variable_row_major()
{
// Load to variable.
T loaded = row_major0;
// Store to variable.
row_major0 = loaded;
}
void copy_col_major_to_col_major()
{
// Copy col -> col
col_major0 = col_major1;
}
void copy_row_major_to_col_major()
{
// Copy row -> col
col_major0 = row_major0;
}
void copy_col_major_to_row_major()
{
// Copy col -> row
row_major0 = col_major0;
}
void copy_row_major_to_row_major()
{
// Copy row -> row
row_major0 = row_major1;
}
void copy_columns()
{
// Copy columns/rows.
col_major0[1] = row_major0[1];
row_major0[1] = col_major0[1];
}
void copy_elements()
{
// Copy individual elements.
col_major0[0][1] = row_major0[0][1];
row_major0[0][1] = col_major0[0][1];
}
void main()
{
load_store_to_variable_col_major();
load_store_to_variable_row_major();
copy_col_major_to_col_major();
copy_col_major_to_row_major();
copy_row_major_to_col_major();
copy_row_major_to_row_major();
copy_columns();
copy_elements();
}

Some files were not shown because too many files have changed in this diff Show More