flowchart TD W["64-bit wave or quad op
(e.g. WaveActiveSum on a uint64_t)"] --> Q{"what the op does"} Q -->|"moves a value between lanes:
read lane, read first, shuffles,
quad reads, all-equal"| H["split into two 32-bit halves
as_type<uint2>(v)
one Metal shuffle of a uint2"] Q -->|"bitwise and / or / xor"| B["halves combine on their own
simd_or(uint2), patch 0017's scans"] Q -->|"sum, product, min, max
(reduce or prefix)"| L["spvSubgroupScan64: walk the active lanes,
shuffle each lane's halves,
add / multiply / compare as 64-bit"] H --> R["as_type<ulong>(result)"] B --> R L --> R