20#ifndef HPCOMBI_VECT16_HPP_
21#define HPCOMBI_VECT16_HPP_
25#include <initializer_list>
35 static constexpr size_t size() {
return 16; }
41 Vect16(std::initializer_list<uint8_t> il, uint8_t def = 0)
43 constexpr operator epu8()
const {
return v; }
105static_assert(std::is_trivial<Vect16>(),
"Vect16 is not a trivial class !");
118 return std::hash<HPCombi::epu8>{}(ar.
v);
uint64_t first_non_zero(epu8 v, int bnd) noexcept
return the index of the first non zero entry or 16 if there are none Only index smaller than bound ar...
Definition epu8_impl.hpp:126
epu8 permuted(epu8 a, epu8 b) noexcept
Permuting a HPCombi::epu8.
Definition epu8.hpp:72
epu8 partial_sums(epu8 v) noexcept
Horizontal partial sum of a HPCombi::epu8.
Definition epu8.hpp:246
bool is_permutation(epu8 v, const size_t k=16) noexcept
Definition epu8_impl.hpp:530
int8_t less_partial(epu8 a, epu8 b, int k) noexcept
Partial lexicographic comparison between two HPCombi::epu8.
Definition epu8_impl.hpp:113
uint64_t last_zero(epu8 v, int bnd) noexcept
return the index of the last zero entry or 16 if there are none Only index smaller than bound are tak...
Definition epu8_impl.hpp:123
bool equal(epu8 a, epu8 b) noexcept
Equality of HPCombi::epu8.
Definition epu8.hpp:63
epu8 eval16(epu8 v) noexcept
Evaluation of a HPCombi::epu8.
Definition epu8.hpp:408
uint8_t horiz_sum(epu8 v) noexcept
Horizontal sum of a HPCombi::epu8.
Definition epu8.hpp:217
bool less(epu8 a, epu8 b) noexcept
Lexicographic comparison between two HPCombi::epu8.
Definition epu8_impl.hpp:109
constexpr TPUBuild< epu8 > Epu8
Factory object acting as a class constructor for type HPCombi::epu8.
Definition epu8.hpp:53
uint64_t first_zero(epu8 v, int bnd) noexcept
return the index of the first zero entry or 16 if there are none Only index smaller than bound are ta...
Definition epu8_impl.hpp:120
uint8_t __attribute__((vector_size(16))) epu8
SIMD vector of 16 unsigned bytes.
Definition epu8.hpp:45
uint64_t last_non_zero(epu8 v, int bnd) noexcept
return the index of the last non zero entry or 16 if there are none Only index smaller than bound are...
Definition epu8_impl.hpp:129
uint64_t last_diff(epu8 a, epu8 b, size_t bound=16) noexcept
The last difference between two HPCombi::epu8.
Definition epu8.hpp:486
uint64_t first_diff(epu8 a, epu8 b, size_t bound=16) noexcept
The first difference between two HPCombi::epu8.
Definition epu8.hpp:446
TPUBuild< TPU >::array & as_array(TPU &v) noexcept
Cast a TPU to a c++ std::array.
Definition builder.hpp:139
bool not_equal(epu8 a, epu8 b) noexcept
Non equality of HPCombi::epu8.
Definition epu8.hpp:67
std::ostream & operator<<(std::ostream &os, HPCombi::BMat8 const &bm)
Definition bmat8_impl.hpp:508
bool operator==(const Vect16 &b) const
Definition vect16.hpp:84
const_iterator begin() const
Definition vect16.hpp:81
iterator end()
Definition vect16.hpp:79
Vect16(std::initializer_list< uint8_t > il, uint8_t def=0)
Definition vect16.hpp:41
size_t last_diff(const Vect16 &u, size_t bound=size()) const
Definition vect16.hpp:54
size_t first_zero(size_t bound=size()) const
Definition vect16.hpp:58
typename array::const_iterator const_iterator
Definition vect16.hpp:73
const_iterator end() const
Definition vect16.hpp:82
int8_t less_partial(const Vect16 &b, int k) const
Definition vect16.hpp:91
size_t last_zero(size_t bound=size()) const
Definition vect16.hpp:61
uint8_t & operator[](uint64_t i)
Definition vect16.hpp:49
bool is_permutation() const
Definition vect16.hpp:99
bool operator<(const Vect16 &b) const
Definition vect16.hpp:90
const_iterator cbegin() const
Definition vect16.hpp:75
static constexpr size_t size()
Definition vect16.hpp:35
size_t first_non_zero(size_t bound=size()) const
Definition vect16.hpp:64
typename decltype(Epu8)::array array
Definition vect16.hpp:36
array & as_array()
Definition vect16.hpp:45
size_t first_diff(const Vect16 &u, size_t bound=size()) const
Definition vect16.hpp:51
iterator begin()
Definition vect16.hpp:78
bool is_permutation(size_t k) const
Definition vect16.hpp:100
epu8 v
Definition vect16.hpp:37
uint8_t value_type
Definition vect16.hpp:71
const uint8_t & operator[](uint64_t i) const
Definition vect16.hpp:48
const array & as_array() const
Definition vect16.hpp:46
bool operator!=(const Vect16 &b) const
Definition vect16.hpp:86
uint8_t sum() const
Definition vect16.hpp:95
size_t last_non_zero(size_t bound=size()) const
Definition vect16.hpp:67
Vect16 permuted(const Vect16 &b) const
Definition vect16.hpp:94
constexpr Vect16(epu8 x)
Definition vect16.hpp:40
Vect16 eval16() const
Definition vect16.hpp:97
Vect16 partial_sums() const
Definition vect16.hpp:96
const_iterator cend() const
Definition vect16.hpp:76
typename array::iterator iterator
Definition vect16.hpp:72
size_t operator()(const HPCombi::Vect16 &ar) const
Definition vect16.hpp:117