|
native 0.0.1
Vectors, masks and wide register packs for C++26
|
Declares SIMD element types and pointer access policies. More...
#include "native/attributes.h"#include "native/isa.h"#include "native/mask_traits.h"#include "native/value_traits.h"#include <array>#include <span>#include <concepts>#include <utility>#include <cstddef>#include <cstdint>#include <type_traits>#include <limits>Go to the source code of this file.
Classes | |
| struct | native::compaction_result< V > |
| struct | native::imm_t< K > |
| struct | native::mask_lane< U > |
| struct | native::mask_traits< simd< T, N, Arch > > |
| struct | native::mask_traits< predicate< N, Arch > > |
| struct | native::mask_traits< mask_lane< U > > |
| struct | native::simd_memory< Alignment, Access > |
Namespaces | |
| namespace | native |
| Architecture-tagged vectors, register packs and supporting value types. Native arithmetic follows its architecture tag and instruction-set preconditions. Common utilities do not select or admit a runtime CPU profile. | |
Enumerations | |
| enum class | native::simd_access |
Functions | |
|
template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator+ (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator- (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator* (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator/ (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator% (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
|
template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator& (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator| (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator^ (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
|
template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator<< (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator>> (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator== (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator!= (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
|
template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator< (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
|
template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator<= (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
|
template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator> (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
|
template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator>= (simd< T, N, A >, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator+= (simd< T, N, A > &, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator-= (simd< T, N, A > &, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator*= (simd< T, N, A > &, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator/= (simd< T, N, A > &, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator%= (simd< T, N, A > &, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator&= (simd< T, N, A > &, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator|= (simd< T, N, A > &, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator^= (simd< T, N, A > &, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
|
template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator<<= (simd< T, N, A > &, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
| template<class T, class U, std::size_t N, std::size_t M, isa<> A, isa<> B> requires (A!=B || (N!=M && (N==2 || N==3 || M==2 || M==3))) | |
| void | native::operator>>= (simd< T, N, A > &, simd< U, M, B >)=delete |
| Reject mixed architectures and mismatched short-vector widths before native conversions can participate. | |
Variables | |
| template<std::size_t K> | |
| constexpr imm_t< K > | native::imm {} |
Declares SIMD element types and pointer access policies.
Definition in file common.h.