HPCombi
High Performance Combinatorics in C++ using vector instructions v1.0.0
Loading...
Searching...
No Matches
Namespaces | Typedefs | Functions | Variables
epu8.hpp File Reference
#include <array>
#include <cstddef>
#include <cstdint>
#include <ostream>
#include <string>
#include "builder.hpp"
#include "debug.hpp"
#include "vect_generic.hpp"
#include "simde/x86/sse4.1.h"
#include "simde/x86/sse4.2.h"
#include "epu8_impl.hpp"

Go to the source code of this file.

Namespaces

namespace  HPCombi
 
namespace  std
 

Typedefs

using HPCombi::epu8 = uint8_t __attribute__((vector_size(16)))
 SIMD vector of 16 unsigned bytes.
 

Functions

constexpr uint8_t HPCombi::operator""_u8 (unsigned long long arg) noexcept
 Unsigned 8 bits int constant.
 
bool HPCombi::is_all_zero (epu8 a) noexcept
 Test whether all the entries of a HPCombi::epu8 are zero.
 
bool HPCombi::is_all_one (epu8 a) noexcept
 Test whether all the entries of a HPCombi::epu8 are one.
 
bool HPCombi::equal (epu8 a, epu8 b) noexcept
 Equality of HPCombi::epu8.
 
bool HPCombi::not_equal (epu8 a, epu8 b) noexcept
 Non equality of HPCombi::epu8.
 
epu8 HPCombi::permuted_ref (epu8 a, epu8 b) noexcept
 Permuting a HPCombi::epu8.
 
epu8 HPCombi::permuted (epu8 a, epu8 b) noexcept
 Permuting a HPCombi::epu8.
 
epu8 HPCombi::shifted_right (epu8 a) noexcept
 Left shifted of a HPCombi::epu8 inserting a 0.
 
epu8 HPCombi::shifted_left (epu8 a) noexcept
 Right shifted of a HPCombi::epu8 inserting a 0.
 
epu8 HPCombi::reverted (epu8 a) noexcept
 Reverting a HPCombi::epu8.
 
epu8 HPCombi::min (epu8 a, epu8 b) noexcept
 Vector min between two HPCombi::epu8 0.
 
epu8 HPCombi::max (epu8 a, epu8 b) noexcept
 Vector max between two HPCombi::epu8 0.
 
bool HPCombi::is_sorted (epu8 a) noexcept
 Testing if a HPCombi::epu8 is sorted.
 
epu8 HPCombi::sorted (epu8 a) noexcept
 Return a sorted HPCombi::epu8.
 
epu8 HPCombi::sorted8 (epu8 a) noexcept
 Return a HPCombi::epu8 with the two half sorted.
 
epu8 HPCombi::revsorted (epu8 a) noexcept
 Return a reverse sorted HPCombi::epu8.
 
epu8 HPCombi::revsorted8 (epu8 a) noexcept
 Return a HPCombi::epu8 with the two half reverse sorted.
 
epu8 HPCombi::sort_perm (epu8 &a) noexcept
 Sort this and return the sorting permutation.
 
epu8 HPCombi::sort8_perm (epu8 &a) noexcept
 Sort this and return the sorting permutation.
 
void HPCombi::merge (epu8 &a, epu8 &b) noexcept
 Merge two sorted epu8.
 
epu8 HPCombi::permutation_of_ref (epu8 a, epu8 b) noexcept
 Find if a vector is a permutation of one other.
 
epu8 HPCombi::permutation_of (epu8 a, epu8 b) noexcept
 Find if a vector is a permutation of one other.
 
epu8 HPCombi::random_epu8 (uint16_t bnd)
 A random HPCombi::epu8.
 
epu8 HPCombi::remove_dups (epu8 a, uint8_t repl=0) noexcept
 Remove duplicates in a sorted HPCombi::epu8.
 
uint8_t HPCombi::horiz_sum_ref (epu8) noexcept
 Horizontal sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_sum_gen (epu8) noexcept
 Horizontal sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_sum4 (epu8) noexcept
 Horizontal sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_sum3 (epu8) noexcept
 Horizontal sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_sum (epu8 v) noexcept
 Horizontal sum of a HPCombi::epu8.
 
epu8 HPCombi::partial_sums_ref (epu8) noexcept
 Horizontal partial sum of a HPCombi::epu8.
 
epu8 HPCombi::partial_sums_gen (epu8) noexcept
 Horizontal partial sum of a HPCombi::epu8.
 
epu8 HPCombi::partial_sums_round (epu8) noexcept
 Horizontal partial sum of a HPCombi::epu8.
 
epu8 HPCombi::partial_sums (epu8 v) noexcept
 Horizontal partial sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_max_ref (epu8) noexcept
 Horizontal sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_max_gen (epu8) noexcept
 Horizontal sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_max4 (epu8) noexcept
 Horizontal sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_max3 (epu8) noexcept
 Horizontal sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_max (epu8 v) noexcept
 Horizontal sum of a HPCombi::epu8.
 
epu8 HPCombi::partial_max_ref (epu8) noexcept
 Horizontal partial sum of a HPCombi::epu8.
 
epu8 HPCombi::partial_max_gen (epu8) noexcept
 Horizontal partial sum of a HPCombi::epu8.
 
epu8 HPCombi::partial_max_round (epu8) noexcept
 Horizontal partial sum of a HPCombi::epu8.
 
epu8 HPCombi::partial_max (epu8 v) noexcept
 Horizontal partial sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_min_ref (epu8) noexcept
 Horizontal sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_min_gen (epu8) noexcept
 Horizontal sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_min4 (epu8) noexcept
 Horizontal sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_min3 (epu8) noexcept
 Horizontal sum of a HPCombi::epu8.
 
uint8_t HPCombi::horiz_min (epu8 v) noexcept
 Horizontal sum of a HPCombi::epu8.
 
epu8 HPCombi::partial_min_ref (epu8) noexcept
 Horizontal partial sum of a HPCombi::epu8.
 
epu8 HPCombi::partial_min_gen (epu8) noexcept
 Horizontal partial sum of a HPCombi::epu8.
 
epu8 HPCombi::partial_min_round (epu8) noexcept
 Horizontal partial sum of a HPCombi::epu8.
 
epu8 HPCombi::partial_min (epu8 v) noexcept
 Horizontal partial sum of a HPCombi::epu8.
 
epu8 HPCombi::eval16_ref (epu8 v) noexcept
 Evaluation of a HPCombi::epu8.
 
epu8 HPCombi::eval16_arr (epu8 v) noexcept
 Evaluation of a HPCombi::epu8.
 
epu8 HPCombi::eval16_cycle (epu8 v) noexcept
 Evaluation of a HPCombi::epu8.
 
epu8 HPCombi::eval16_popcount (epu8 v) noexcept
 Evaluation of a HPCombi::epu8.
 
epu8 HPCombi::eval16 (epu8 v) noexcept
 Evaluation of a HPCombi::epu8.
 
uint64_t HPCombi::first_diff_ref (epu8 a, epu8 b, size_t bound=16) noexcept
 The first difference between two HPCombi::epu8.
 
uint64_t HPCombi::first_diff_mask (epu8 a, epu8 b, size_t bound=16) noexcept
 The first difference between two HPCombi::epu8.
 
uint64_t HPCombi::first_diff (epu8 a, epu8 b, size_t bound=16) noexcept
 The first difference between two HPCombi::epu8.
 
uint64_t HPCombi::last_diff_ref (epu8 a, epu8 b, size_t bound=16) noexcept
 The last difference between two HPCombi::epu8.
 
uint64_t HPCombi::last_diff_mask (epu8 a, epu8 b, size_t bound=16) noexcept
 The last difference between two HPCombi::epu8.
 
uint64_t HPCombi::last_diff (epu8 a, epu8 b, size_t bound=16) noexcept
 The last difference between two HPCombi::epu8.
 
bool HPCombi::less (epu8 a, epu8 b) noexcept
 Lexicographic comparison between two HPCombi::epu8.
 
int8_t HPCombi::less_partial (epu8 a, epu8 b, int k) noexcept
 Partial lexicographic comparison between two HPCombi::epu8.
 
uint64_t HPCombi::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 taken into account.
 
uint64_t HPCombi::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 taken into account.
 
uint64_t HPCombi::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 are taken into account.
 
uint64_t HPCombi::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 taken into account.
 
epu8 HPCombi::popcount16 (epu8 v) noexcept
 a vector popcount function
 
bool HPCombi::is_partial_transformation (epu8 v, const size_t k=16) noexcept
 Test for partial transformation.
 
bool HPCombi::is_transformation (epu8 v, const size_t k=16) noexcept
 Test for transformation.
 
bool HPCombi::is_partial_permutation (epu8 v, const size_t k=16) noexcept
 Test for partial permutations.
 
bool HPCombi::is_permutation_sort (epu8 v, const size_t k=16) noexcept
 
bool HPCombi::is_permutation_eval (epu8 v, const size_t k=16) noexcept
 
bool HPCombi::is_permutation (epu8 v, const size_t k=16) noexcept
 
std::ostream & std::operator<< (std::ostream &stream, HPCombi::epu8 const &a)
 
std::string std::to_string (HPCombi::epu8 const &a)
 

Variables

constexpr TPUBuild< epu8HPCombi::Epu8 {}
 Factory object acting as a class constructor for type HPCombi::epu8.
 
constexpr uint64_t HPCombi::prime = 0x9e3779b97f4a7bb9
 A prime number good for hashing.