blob: 5cba260f6a1a4d73e9037ed1b71d66d17cae2875 [file]
#include <dx/linalg.h>
using namespace dx::linalg;
using Matrix_left_f32_8x8 = Matrix<ComponentType::F32, 8, 8, MatrixUse::A, MatrixScope::Wave>;
using Matrix_right_f32_8x8 = Matrix<ComponentType::F32, 8, 8, MatrixUse::B, MatrixScope::Wave>;
struct S {
Matrix_left_f32_8x8 l;
Matrix_right_f32_8x8 r;
};
struct S_Nested {
S s;
};
RWByteAddressBuffer buffer : register(u0);
void foo(inout Matrix_left_f32_8x8 m, inout Matrix_left_f32_8x8 m_array[4], inout Matrix_left_f32_8x8 m_nested_array[4][4], inout S m_struct, inout S_Nested m_nested_struct) {
uint v = 0u;
buffer.GetDimensions(v);
uint v_1 = asuint(int(0));
uint v_2 = asuint(int(64));
uint v_3 = (v_1 + select((((v_2 != 0u) & (7u != 0u)) & (7u > (4294967295u / v_2))), 4294967295u, (v_2 * 7u)));
uint v_4 = select((v_3 < v_1), 4294967295u, v_3);
uint v_5 = (v_4 + 8u);
bool v_6 = (select((v_5 < v_4), 4294967295u, v_5) <= (v / 4u));
m.Store(buffer, (0u + (select(v_6, v_1, 0u) * 4u)), (select(v_6, v_2, 8u) * 4u), MatrixLayout::RowMajor);
uint v_7 = 0u;
buffer.GetDimensions(v_7);
uint v_8 = asuint(int(0));
uint v_9 = asuint(int(64));
uint v_10 = (v_8 + select((((v_9 != 0u) & (7u != 0u)) & (7u > (4294967295u / v_9))), 4294967295u, (v_9 * 7u)));
uint v_11 = select((v_10 < v_8), 4294967295u, v_10);
uint v_12 = (v_11 + 8u);
bool v_13 = (select((v_12 < v_11), 4294967295u, v_12) <= (v_7 / 4u));
m_array[0u].Store(buffer, (0u + (select(v_13, v_8, 0u) * 4u)), (select(v_13, v_9, 8u) * 4u), MatrixLayout::RowMajor);
uint v_14 = 0u;
buffer.GetDimensions(v_14);
uint v_15 = asuint(int(0));
uint v_16 = asuint(int(64));
uint v_17 = (v_15 + select((((v_16 != 0u) & (7u != 0u)) & (7u > (4294967295u / v_16))), 4294967295u, (v_16 * 7u)));
uint v_18 = select((v_17 < v_15), 4294967295u, v_17);
uint v_19 = (v_18 + 8u);
bool v_20 = (select((v_19 < v_18), 4294967295u, v_19) <= (v_14 / 4u));
m_nested_array[1u][2u].Store(buffer, (0u + (select(v_20, v_15, 0u) * 4u)), (select(v_20, v_16, 8u) * 4u), MatrixLayout::RowMajor);
uint v_21 = 0u;
buffer.GetDimensions(v_21);
uint v_22 = asuint(int(0));
uint v_23 = asuint(int(64));
uint v_24 = (v_22 + select((((v_23 != 0u) & (7u != 0u)) & (7u > (4294967295u / v_23))), 4294967295u, (v_23 * 7u)));
uint v_25 = select((v_24 < v_22), 4294967295u, v_24);
uint v_26 = (v_25 + 8u);
bool v_27 = (select((v_26 < v_25), 4294967295u, v_26) <= (v_21 / 4u));
m_struct.l.Store(buffer, (0u + (select(v_27, v_22, 0u) * 4u)), (select(v_27, v_23, 8u) * 4u), MatrixLayout::RowMajor);
uint v_28 = 0u;
buffer.GetDimensions(v_28);
uint v_29 = asuint(int(0));
uint v_30 = asuint(int(64));
uint v_31 = (v_29 + select((((v_30 != 0u) & (7u != 0u)) & (7u > (4294967295u / v_30))), 4294967295u, (v_30 * 7u)));
uint v_32 = select((v_31 < v_29), 4294967295u, v_31);
uint v_33 = (v_32 + 8u);
bool v_34 = (select((v_33 < v_32), 4294967295u, v_33) <= (v_28 / 4u));
m_nested_struct.s.r.Store(buffer, (0u + (select(v_34, v_29, 0u) * 4u)), (select(v_34, v_30, 8u) * 4u), MatrixLayout::RowMajor);
}
[numthreads(64, 1, 1)]
void main() {
Matrix_left_f32_8x8 m = Matrix_left_f32_8x8::Splat(0.0f);
Matrix_left_f32_8x8 v_35 = Matrix_left_f32_8x8::Splat(0.0f);
Matrix_left_f32_8x8 m_array[4] = {v_35, v_35, v_35, v_35};
Matrix_left_f32_8x8 v_36 = Matrix_left_f32_8x8::Splat(0.0f);
Matrix_left_f32_8x8 v_37[4] = {v_36, v_36, v_36, v_36};
Matrix_left_f32_8x8 m_nested_array[4][4] = {v_37, v_37, v_37, v_37};
S m_struct = {Matrix_left_f32_8x8::Splat(0.0f), Matrix_right_f32_8x8::Splat(0.0f)};
S v_38 = {Matrix_left_f32_8x8::Splat(0.0f), Matrix_right_f32_8x8::Splat(0.0f)};
S_Nested m_nested_struct = {v_38};
foo(m, m_array, m_nested_array, m_struct, m_nested_struct);
}