E.V.E
v2022.09.01

◆ hi

eve::hi = {}
inlineconstexpr

Computes the most significant half of each lane.

Defined in Header

#include <eve/module/core.hpp>

Callable Signatures

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

Parameters

Return value

  • Computes the elementwise higher 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 lohi 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};
std::cout << "---- simd (hexadecimal output)" << '\n'
<< std::hex
<< "<- i32 = " << i32 << '\n'
<< "-> hi(i32) = " << eve::hi(i32) << '\n'
<< std::hex << "<- i8 = " << i8 << '\n'
<< "-> hi(i8 ) = " << eve::hi(i8) << '\n';
std::int32_t x = 100000;
std::int8_t y = 100;
std::cout << "---- scalar (hexadecimal output)" << '\n'
<< std::hex << "<- x = " << x << '\n'
<< "-> hi(x) = " << eve::hi(x) << '\n'
<< "<- y = " << y << '\n'
<< "-> hi(y) = " << int(eve::hi(y)) << '\n';
return 0;
}
Wrapper for SIMD registers.
Definition: wide.hpp:65