E.V.E
v2022.03.00

◆ lo

eve::lo = {}
inlineconstexpr

Computes the least significant half of each lane.

Defined in Header

#include <eve/module/core.hpp>

Callable Signatures

namespace eve
{
template< eve::value T >
auto lo(T x) noexcept;
}
constexpr callable_lo_ lo
Computes the least significant half of each lane.
Definition: lo.hpp:54
Definition: all_of.hpp:22

Parameters

Return value

  • Computes the elementwise lower significant half of the value bits, returning each element as an unsigned integer of half the size of the input element.
Note
If you also need the lower part hilo is more efficient.

Example

#include <eve/module/core.hpp>
#include <eve/wide.hpp>
#include <iostream>
int main()
{
wide_uit i32 = {0, 1, 2, 3, 65536+1, 65536+8, 65536+16, 65536+32};
wide_ui8t i8 = {0, 1, 2, 3, 16+0, 16+2, 16+4, 16+8};
auto m = eve::lo(i32);
auto m8 = eve::lo(i8);
std::cout << "---- simd (hexadecimal output)" << '\n'
<< std::hex
<< "<- i32 = " << i32 << '\n'
<< "-> lo(i32) = " << m << '\n'
<< std::hex << "<- i8 = " << i8 << '\n'
<< "-> lo(i8 ) = " << m8 << '\n';
std::int32_t x = 100000;
std::int8_t y = 100;
std::cout << "---- scalar (hexadecimal output)" << '\n'
<< std::hex << "<- x = " << x << '\n'
<< "-> lo(x) = " << eve::lo(x) << '\n'
<< "<- y = " << y << '\n'
<< "-> lo(y) = " << int(eve::lo(y)) << '\n' ;
return 0;
}
Wrapper for SIMD registers.
Definition: wide.hpp:65