Warp Vote Warp/Wavefront-Level
Ask whether a predicate holds for all, or for any, active lanes.
Vendor-Neutral Definition
A reduction of a per-lane boolean to a single value visible to the whole warp or wavefront, used to take a uniform branch when every lane agrees.
⚠️ Cross-vendor mappings describe semantic relationships and are not guaranteed one-to-one compiler
translations.
equivalent sequence
PTX has a dedicated vote instruction. AMDGPU builds the same answer from a lane mask and a scalar comparison, which is more instructions but exposes the mask itself.
| Property | NVIDIA PTX | AMDGPU |
|---|---|---|
| Instruction | vote | v_cmp_eq_u32, s_cmp_eq_u32 |
| ISA Layer | Virtual | Native |
| Data Types | - | u32 |
| Version / Target Introduced | PTX ISA 6.0 | gfx1100, gfx1100 |
Important Differences
- AMDGPU has no vote opcode. A v_cmp writes a 64-bit per-lane mask into an SGPR pair, and the vote is then a scalar test of that mask: all is mask == EXEC, any is mask != 0.
- That intermediate mask is a value the program can keep and reuse, which PTX's vote.all and vote.any discard. vote.ballot is the PTX instruction that exposes it.
- Since Volta and independent thread scheduling, PTX requires the .sync forms with an explicit member mask; the non-sync forms are deprecated and unsafe under divergence.
Source Evidence
- Parallel Thread Execution ISA ↗ - NVIDIA Corporation
- User Guide for AMDGPU Backend ↗ - LLVM Project
Verification method: documentation