alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
EmuSimd.hpp File Reference
#include "alpaka/api/api.hpp"
#include "alpaka/simd/concepts.hpp"
#include "alpaka/simd/internal/SmartMaskValueRef.hpp"
#include "alpaka/simd/internal/alignment.hpp"
#include "alpaka/simd/internal/utility.hpp"
#include "alpaka/simd/trait.hpp"
#include <concepts>
#include <type_traits>

Go to the source code of this file.

Classes

struct  alpaka::internal::EmuSimd< T_Type, T_width >
 Simd array storge for vector data. More...
struct  alpaka::trait::GetSimdStorageType< T_Api, T_Type, T_width >
 Get the storage type for a SIMD pack. More...

Namespaces

namespace  alpaka
 main alpaka namespace.
namespace  alpaka::internal
 alpaka internal implementations.
namespace  alpaka::trait

Macros

#define ALPAKA_VECTOR_ASSIGN_OP(op)
 assign operator
#define ALPAKA_VECTOR_BINARY_OP(typenameOrConcept, op)

Functions

template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator% (const EmuSimd< T_Type, T_width > &lhs, const EmuSimd< T_Type, T_width > &rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator% (const EmuSimd< T_Type, T_width > &lhs, T_Type rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator% (T_Type lhs, const EmuSimd< T_Type, T_width > &rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator& (const EmuSimd< T_Type, T_width > &lhs, const EmuSimd< T_Type, T_width > &rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator& (const EmuSimd< T_Type, T_width > &lhs, T_Type rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator& (T_Type lhs, const EmuSimd< T_Type, T_width > &rhs)
template<typename T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator* (const EmuSimd< T_Type, T_width > &lhs, const EmuSimd< T_Type, T_width > &rhs)
template<typename T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator* (const EmuSimd< T_Type, T_width > &lhs, T_Type rhs)
template<typename T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator* (T_Type lhs, const EmuSimd< T_Type, T_width > &rhs)
template<typename T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator+ (const EmuSimd< T_Type, T_width > &lhs, const EmuSimd< T_Type, T_width > &rhs)
template<typename T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator+ (const EmuSimd< T_Type, T_width > &lhs, T_Type rhs)
template<typename T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator+ (T_Type lhs, const EmuSimd< T_Type, T_width > &rhs)
template<typename T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator- (const EmuSimd< T_Type, T_width > &lhs, const EmuSimd< T_Type, T_width > &rhs)
template<typename T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator- (const EmuSimd< T_Type, T_width > &lhs, T_Type rhs)
template<typename T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator- (T_Type lhs, const EmuSimd< T_Type, T_width > &rhs)
template<typename T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator/ (const EmuSimd< T_Type, T_width > &lhs, const EmuSimd< T_Type, T_width > &rhs)
template<typename T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator/ (const EmuSimd< T_Type, T_width > &lhs, T_Type rhs)
template<typename T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator/ (T_Type lhs, const EmuSimd< T_Type, T_width > &rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator<< (const EmuSimd< T_Type, T_width > &lhs, const EmuSimd< T_Type, T_width > &rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator<< (const EmuSimd< T_Type, T_width > &lhs, T_Type rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator<< (T_Type lhs, const EmuSimd< T_Type, T_width > &rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator>> (const EmuSimd< T_Type, T_width > &lhs, const EmuSimd< T_Type, T_width > &rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator>> (const EmuSimd< T_Type, T_width > &lhs, T_Type rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator>> (T_Type lhs, const EmuSimd< T_Type, T_width > &rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator^ (const EmuSimd< T_Type, T_width > &lhs, const EmuSimd< T_Type, T_width > &rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator^ (const EmuSimd< T_Type, T_width > &lhs, T_Type rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator^ (T_Type lhs, const EmuSimd< T_Type, T_width > &rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator| (const EmuSimd< T_Type, T_width > &lhs, const EmuSimd< T_Type, T_width > &rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator| (const EmuSimd< T_Type, T_width > &lhs, T_Type rhs)
template<std::integral T_Type, uint32_t T_width>
constexpr auto alpaka::internal::operator| (T_Type lhs, const EmuSimd< T_Type, T_width > &rhs)

Macro Definition Documentation

◆ ALPAKA_VECTOR_ASSIGN_OP

#define ALPAKA_VECTOR_ASSIGN_OP ( op)
Value:
constexpr EmuSimd& operator op(EmuSimd const& rhs) \
{ \
for(uint32_t i = 0u; i < T_width; i++) \
{ \
asNativeType()[i] op rhs[i]; \
} \
return *this; \
} \
constexpr EmuSimd& operator op(T_Type const value) \
{ \
for(uint32_t i = 0u; i < T_width; i++) \
{ \
asNativeType()[i] op value; \
} \
return *this; \
}

assign operator

Definition at line 172 of file EmuSimd.hpp.

◆ ALPAKA_VECTOR_BINARY_OP

#define ALPAKA_VECTOR_BINARY_OP ( typenameOrConcept,
op )
Value:
template<typenameOrConcept T_Type, uint32_t T_width> \
constexpr auto operator op(const EmuSimd<T_Type, T_width>& lhs, const EmuSimd<T_Type, T_width>& rhs) \
{ \
EmuSimd<T_Type, T_width> ret{}; \
for(uint32_t i = 0u; i < T_width; i++) \
ret[i] = lhs[i] op rhs[i]; \
return ret; \
} \
template<typenameOrConcept T_Type, uint32_t T_width> \
constexpr auto operator op(const EmuSimd<T_Type, T_width>& lhs, T_Type rhs) \
{ \
EmuSimd<T_Type, T_width> ret{}; \
for(uint32_t i = 0u; i < T_width; i++) \
ret[i] = lhs[i] op rhs; \
return ret; \
} \
template<typenameOrConcept T_Type, uint32_t T_width> \
constexpr auto operator op(T_Type lhs, const EmuSimd<T_Type, T_width>& rhs) \
{ \
EmuSimd<T_Type, T_width> ret{}; \
for(uint32_t i = 0u; i < T_width; i++) \
ret[i] = lhs op rhs[i]; \
return ret; \
}

Definition at line 205 of file EmuSimd.hpp.