| static const uint3 gl_WorkGroupSize = uint3(1u, 1u, 1u); |
| |
| RWByteAddressBuffer _53 : register(u1); |
| ByteAddressBuffer _59 : register(t0); |
| |
| static uint3 gl_GlobalInvocationID; |
| struct SPIRV_Cross_Input |
| { |
| uint3 gl_GlobalInvocationID : SV_DispatchThreadID; |
| }; |
| |
| uint collatz_iterations(inout uint n) |
| { |
| uint i = 0u; |
| while (n != 1u) |
| { |
| if ((n % 2u) == 0u) |
| { |
| n /= 2u; |
| } |
| else |
| { |
| n = (3u * n) + 1u; |
| } |
| i++; |
| } |
| return i; |
| } |
| |
| void comp_main() |
| { |
| uint index = gl_GlobalInvocationID.x; |
| uint param = _59.Load(index * 4 + 0); |
| uint _65 = collatz_iterations(param); |
| _53.Store(index * 4 + 0, _65); |
| } |
| |
| [numthreads(1, 1, 1)] |
| void main(SPIRV_Cross_Input stage_input) |
| { |
| gl_GlobalInvocationID = stage_input.gl_GlobalInvocationID; |
| comp_main(); |
| } |