[numthreads(1, 1, 1)] void unused_entry_point() { return; } RWByteAddressBuffer v : register(u0, space0); void tint_symbol(RWByteAddressBuffer buffer, uint offset, float4x4 value) { buffer.Store4((offset + 0u), asuint(value[0u])); buffer.Store4((offset + 16u), asuint(value[1u])); buffer.Store4((offset + 32u), asuint(value[2u])); buffer.Store4((offset + 48u), asuint(value[3u])); } float4x4 tint_symbol_2(RWByteAddressBuffer buffer, uint offset) { return float4x4(asfloat(buffer.Load4((offset + 0u))), asfloat(buffer.Load4((offset + 16u))), asfloat(buffer.Load4((offset + 32u))), asfloat(buffer.Load4((offset + 48u)))); } void foo() { tint_symbol(v, 0u, (tint_symbol_2(v, 0u) * 2.0f)); }