The warp shuffle approach failed because __shfl_down_sync with 16 threads has undefined behavior for the odd nibble. Use the same pattern as the working deinterleave_quantize.cu: 1 CTA per 16-element block, 16 threads per CTA, each thread reads all 16 elements sequentially and computes amax + quantize + pack.