ByteAddressBuffer firstMatrix : register(t0, space0);
ByteAddressBuffer secondMatrix : register(t1, space0);
RWByteAddressBuffer resultMatrix : register(u2, space0);
cbuffer cbuffer_uniforms : register(b3, space0) {
  uint4 uniforms[2];
};

struct tint_symbol_1 {
  uint3 global_id : SV_DispatchThreadID;
};

[numthreads(2, 2, 1)]
void main(tint_symbol_1 tint_symbol) {
  const uint3 global_id = tint_symbol.global_id;
  const uint2 resultCell = uint2(global_id.y, global_id.x);
  const uint scalar_offset = (4u) / 4;
  const uint dimInner = uniforms[scalar_offset / 4][scalar_offset % 4];
  const uint scalar_offset_1 = (20u) / 4;
  const uint dimOutter = uniforms[scalar_offset_1 / 4][scalar_offset_1 % 4];
  uint result = 0u;
  {
    for(uint i = 0u; (i < dimInner); i = (i + 1u)) {
      const uint a = (i + (resultCell.x * dimInner));
      const uint b = (resultCell.y + (i * dimOutter));
      result = (result + (firstMatrix.Load((4u * a)) * secondMatrix.Load((4u * b))));
    }
  }
  const uint index = (resultCell.y + (resultCell.x * dimOutter));
  resultMatrix.Store((4u * index), asuint(result));
  return;
}
