Macro core::core_simd::ops::wrap_bitshift
source · macro_rules! wrap_bitshift { ($lhs:ident, $rhs:ident, {$simd_call:ident}, $int:ident) => { ... }; }
🔬This is a nightly-only experimental API. (
portable_simd
#86656)Expand description
SAFETY: This macro should not be used for anything except Shl or Shr, and passed the appropriate shift intrinsic.
It handles performing a bitand in addition to calling the shift operator, so that the result
is well-defined: LLVM can return a poison value if you shl, lshr, or ashr if rhs >= <Int>::BITS
At worst, this will maybe add another instruction and cycle,
at best, it may open up more optimization opportunities,
or simply be elided entirely, especially for SIMD ISAs which default to this.