diff options
Diffstat (limited to 'cli/tests/testdata/webgpu/computepass_shader.wgsl')
-rw-r--r-- | cli/tests/testdata/webgpu/computepass_shader.wgsl | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/cli/tests/testdata/webgpu/computepass_shader.wgsl b/cli/tests/testdata/webgpu/computepass_shader.wgsl deleted file mode 100644 index 41af4363a..000000000 --- a/cli/tests/testdata/webgpu/computepass_shader.wgsl +++ /dev/null @@ -1,38 +0,0 @@ -@group(0) -@binding(0) -var<storage, read_write> v_indices: array<u32>; // this is used as both input and output for convenience - -// The Collatz Conjecture states that for any integer n: -// If n is even, n = n/2 -// If n is odd, n = 3n+1 -// And repeat this process for each new n, you will always eventually reach 1. -// Though the conjecture has not been proven, no counterexample has ever been found. -// This function returns how many times this recurrence needs to be applied to reach 1. -fn collatz_iterations(n_base: u32) -> u32{ - var n: u32 = n_base; - var i: u32 = 0u; - loop { - if (n <= 1u) { - break; - } - if (n % 2u == 0u) { - n = n / 2u; - } - else { - // Overflow? (i.e. 3*n + 1 > 0xffffffffu?) - if (n >= 1431655765u) { // 0x55555555u - return 4294967295u; // 0xffffffffu - } - - n = 3u * n + 1u; - } - i = i + 1u; - } - return i; -} - -@compute -@workgroup_size(1) -fn main(@builtin(global_invocation_id) global_id: vec3<u32>) { - v_indices[global_id.x] = collatz_iterations(v_indices[global_id.x]); -} |