P2929R2 — simd_invoke
Daniel Towner, Ruslan Arutyunyan
LEWG
Revisions R4May 2026R3Apr 2026R2Feb 2026
ISO/IEC 19570:2018 introduced data-parallel types to the C++ Extensions for Parallelism TS [P1928R15]. That paper, and several ancillary papers, do an excellent job of setting out the main features of an extension to C++ which allows generic data parallel programming on arbitrary targets. However, it is inevitable that the programmer will want to make some use of target-specific intrinsics in order to unlock some of the more unusual features of those specific platforms. This requires that the programmer is able to allow a `basic_vec` value to be used in a call to a target intrinsic, and that the result of the intrinsic call can be used to generate a new `basic_vec` value. This is already permitted for `basic_vec` values which fit into a native register, but it is harder to achieve when the `basic_vec` value spans multiple registers.