23#ifndef HPCOMBI_VECT16_HPP_
24#define HPCOMBI_VECT16_HPP_
28#include <initializer_list>
40 static constexpr size_t size() {
return 16; }
46 Vect16(std::initializer_list<uint8_t> il, uint8_t def = 0)
46 Vect16(std::initializer_list<uint8_t> il, uint8_t def = 0) {
…}
48 constexpr operator epu8()
const {
return v; }
110static_assert(std::is_trivial<Vect16>(),
"Vect16 is not a trivial class !");
125 return std::hash<HPCombi::epu8>{}(ar.
v);
declaration of HPCombi::epu8.
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:127
epu8 permuted(epu8 a, epu8 b) noexcept
Same as permuted_ref but with an optimized implementation using intrinsics.
Definition epu8.hpp:103
epu8 partial_sums(epu8 v) noexcept
Horizontal partial sum of a HPCombi::epu8.
Definition epu8.hpp:294
bool is_permutation(epu8 v, const size_t k=16) noexcept
Definition epu8_impl.hpp:531
int8_t less_partial(epu8 a, epu8 b, int k) noexcept
Partial lexicographic comparison between two HPCombi::epu8.
Definition epu8_impl.hpp:114
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:124
bool equal(epu8 a, epu8 b) noexcept
Equality of HPCombi::epu8.
Definition epu8.hpp:91
epu8 eval16(epu8 v) noexcept
Evaluation of a HPCombi::epu8: count how many times each int of 0..15 appears in the input.
Definition epu8.hpp:488
uint8_t horiz_sum(epu8 v) noexcept
Horizontal sum of a HPCombi::epu8.
Definition epu8.hpp:260
bool less(epu8 a, epu8 b) noexcept
Lexicographic comparison between two HPCombi::epu8.
Definition epu8_impl.hpp:110
constexpr TPUBuild< epu8 > Epu8
Factory object acting as a class constructor for type HPCombi::epu8.
Definition epu8.hpp:81
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:121
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:130
uint64_t last_diff(epu8 a, epu8 b, size_t bound=16) noexcept
The last difference between two HPCombi::epu8.
Definition epu8.hpp:576
uint8_t __attribute__((vector_size(16))) epu8
epu8 stands for Extended Packed Unsigned, grouped by 8 bits; this is the low level type chosen by Int...
Definition epu8.hpp:73
uint64_t first_diff(epu8 a, epu8 b, size_t bound=16) noexcept
The first difference between two HPCombi::epu8.
Definition epu8.hpp:531
TPUBuild< TPU >::array & as_array(TPU &v) noexcept
Cast a TPU to a c++ std::array.
Definition builder.hpp:145
bool not_equal(epu8 a, epu8 b) noexcept
Non equality of HPCombi::epu8.
Definition epu8.hpp:95
Definition bmat16_impl.hpp:362
std::ostream & operator<<(std::ostream &os, HPCombi::BMat16 const &bm)
Definition bmat16_impl.hpp:365
Vector of 16 bytes, with some optimized methods, superclass of HPCombi::Transf16.
Definition vect16.hpp:39
bool operator==(const Vect16 &b) const
Definition vect16.hpp:89
const_iterator begin() const
Definition vect16.hpp:86
iterator end()
Definition vect16.hpp:84
Vect16(std::initializer_list< uint8_t > il, uint8_t def=0)
Definition vect16.hpp:46
size_t last_diff(const Vect16 &u, size_t bound=size()) const
Definition vect16.hpp:59
size_t first_zero(size_t bound=size()) const
Definition vect16.hpp:63
typename array::const_iterator const_iterator
Definition vect16.hpp:78
const_iterator end() const
Definition vect16.hpp:87
int8_t less_partial(const Vect16 &b, int k) const
Definition vect16.hpp:96
size_t last_zero(size_t bound=size()) const
Definition vect16.hpp:66
uint8_t & operator[](uint64_t i)
Definition vect16.hpp:54
bool is_permutation() const
Definition vect16.hpp:104
bool operator<(const Vect16 &b) const
Definition vect16.hpp:95
const_iterator cbegin() const
Definition vect16.hpp:80
static constexpr size_t size()
Definition vect16.hpp:40
size_t first_non_zero(size_t bound=size()) const
Definition vect16.hpp:69
typename decltype(Epu8)::array array
Definition vect16.hpp:41
array & as_array()
Definition vect16.hpp:50
size_t first_diff(const Vect16 &u, size_t bound=size()) const
Definition vect16.hpp:56
iterator begin()
Definition vect16.hpp:83
bool is_permutation(size_t k) const
Definition vect16.hpp:105
epu8 v
Definition vect16.hpp:42
uint8_t value_type
Definition vect16.hpp:76
const uint8_t & operator[](uint64_t i) const
Definition vect16.hpp:53
const array & as_array() const
Definition vect16.hpp:51
bool operator!=(const Vect16 &b) const
Definition vect16.hpp:91
uint8_t sum() const
Definition vect16.hpp:100
size_t last_non_zero(size_t bound=size()) const
Definition vect16.hpp:72
Vect16 permuted(const Vect16 &b) const
Definition vect16.hpp:99
constexpr Vect16(epu8 x)
Definition vect16.hpp:45
Vect16 eval16() const
Definition vect16.hpp:102
Vect16 partial_sums() const
Definition vect16.hpp:101
const_iterator cend() const
Definition vect16.hpp:81
typename array::iterator iterator
Definition vect16.hpp:77
size_t operator()(const HPCombi::Vect16 &ar) const
Definition vect16.hpp:124