E.V.E
v2023.02.15
 
Loading...
Searching...
No Matches

◆ firstbitunset

auto eve::firstbitunset = functor<firstbitunset_t>
inlineconstexpr

Header file

#include <eve/module/core.hpp>

Callable Signatures

namespace eve
{
// Regular overload
constexpr auto firstbitunset(integral_value auto x) noexcept; // 1
// Lanes masking
constexpr auto firstbitunset[conditional_expr auto c](integral_value auto x) noexcept; // 2
constexpr auto firstbitunset[logical_value auto m](integral_value auto x) noexcept; // 2
}
Specifies that a type is a Conditional Expression.
Definition conditional.hpp:28
The concept integral_value<T> is satisfied if and only if T satisfies eve::value and the element type...
Definition value.hpp:51
The concept logical_value<T> is satisfied if and only if T satisfies eve::value and the element type ...
Definition value.hpp:132
constexpr auto firstbitunset
Computes elementwise the bit pattern in which the only bit set (if it exists) is the first bit unset ...
Definition firstbitunset.hpp:68
EVE Main Namespace.
Definition abi.hpp:18

Parameters

Return value

  1. Computes elementwise the bit pattern in which the only bit set (if it exists) is the first bit unset (beginning with the least significant bit) in the input.
  2. The operation is performed conditionnaly.

Example

// revision 0
#include <eve/module/core.hpp>
#include <iostream>
int main()
{
eve::wide wi0{0, 1, 2, 3, -1, -2, -3, -4};
std::cout << "<- wi0 = " << wi0 << "\n";
std::cout << "-> firstbitunset(wi0) = " << eve::firstbitunset(wi0) << "\n";
std::cout << "-> firstbitunset[ignore_last(2)](wi0) = " << eve::firstbitunset[eve::ignore_last(2)](wi0) << "\n";
std::cout << "-> firstbitunset[wi0 != 0](wi0) = " << eve::firstbitunset[wi0 != 0](wi0) << "\n";
}
Conditional expression ignoring the k last lanes from a eve::simd_value.
Definition conditional.hpp:332
Wrapper for SIMD registers.
Definition wide.hpp:86