E.V.E
v2023.02.15

◆ upgrade_

eve::upgrade_ = {}
inlineconstexpr

convert a eve::value to the upgraded base type.

Defined in Header

#include <eve/module/core.hpp>

Callable Signatures

namespace eve
{
template< eve::value T >
as_wide_as<T, eve::upgrade_t<T>> upgrade_(T x) noexcept; //1
template< eve::callable C >
as_wide_as<T, , eve::upgrade_t<T>> upgrade_(C x) noexcept; //2
}
constexpr upgrade_converter const upgrade_
convert a eve::value to the upgraded base type.
Definition: converter.hpp:740
Definition: abi.hpp:18

Parameters

  • x : argument.

Return value

  • if x is an eve::simd_value, returns a value of typewide <u_t, cardinal_t<T>>,
  • if x is an eve::scalar_value, returns a value of type u_t
  • if x is a supported callable a call to upgrade_(x)(...) is semantically equivalent to upgrade__(x(...))

where u_t is eve::upgrade_t<eve::element_type_t<T>>

Example

#include <eve/module/core.hpp>
#include <eve/wide.hpp>
#include <iostream>
int main()
{
wide_32t p32 = {1, 2, 100, eve::valmax(eve::as<std::int32_t>())};
std::cout << "---- simd" << '\n'
<< "<- p32 = " << p32 << '\n'
<< "-> upgrade_(p32) = " << eve::upgrade_(p32) << '\n';
return 0;
}
constexpr callable_valmax_ valmax
Computes the the greatest representable value.
Definition: valmax.hpp:55
Lightweight type-wrapper.
Definition: as.hpp:29
Wrapper for SIMD registers.
Definition: wide.hpp:65