blob: 50982f927269994deac8fca2426145ea22ecf5ba [file] [log] [blame]
struct strided_arr {
float2 el;
};
RWByteAddressBuffer ssbo : register(u0);
typedef strided_arr ary_ret[2];
ary_ret mat2x2_stride_16_to_arr(float2x2 m) {
strided_arr v = {m[0u]};
strided_arr v_1 = v;
strided_arr v_2 = {m[1u]};
strided_arr v_3[2] = {v_1, v_2};
return v_3;
}
float2x2 arr_to_mat2x2_stride_16(strided_arr arr[2]) {
return float2x2(arr[0u].el, arr[1u].el);
}
void v_4(uint offset, strided_arr obj) {
ssbo.Store2((offset + 0u), asuint(obj.el));
}
void v_5(uint offset, strided_arr obj[2]) {
{
uint v_6 = 0u;
v_6 = 0u;
while(true) {
uint v_7 = v_6;
if ((v_7 >= 2u)) {
break;
}
strided_arr v_8 = obj[v_7];
v_4((offset + (v_7 * 16u)), v_8);
{
v_6 = (v_7 + 1u);
}
continue;
}
}
}
strided_arr v_9(uint offset) {
strided_arr v_10 = {asfloat(ssbo.Load2((offset + 0u)))};
return v_10;
}
typedef strided_arr ary_ret_1[2];
ary_ret_1 v_11(uint offset) {
strided_arr a[2] = (strided_arr[2])0;
{
uint v_12 = 0u;
v_12 = 0u;
while(true) {
uint v_13 = v_12;
if ((v_13 >= 2u)) {
break;
}
strided_arr v_14 = v_9((offset + (v_13 * 16u)));
a[v_13] = v_14;
{
v_12 = (v_13 + 1u);
}
continue;
}
}
strided_arr v_15[2] = a;
return v_15;
}
void f_1() {
strided_arr v_16[2] = v_11(0u);
strided_arr v_17[2] = mat2x2_stride_16_to_arr(arr_to_mat2x2_stride_16(v_16));
v_5(0u, v_17);
}
[numthreads(1, 1, 1)]
void f() {
f_1();
}