| 
    HPCombi
    
   High Performance Combinatorics in C++ using vector instructions v1.0.3 
   | 
 
declaration of HPCombi::epu8. More...
#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))) | 
| epu8 stands for Extended Packed Unsigned, grouped by 8 bits; this is the low level type chosen by Intel for their API to intrinsics, ie a SIMD vector of 16 unsigned bytes (16×8 = 128bits).   | |
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 | 
Apply a permutation b on the vector a: for i=0..16 {result[i] = a[b[i]}.   | |
| epu8 | HPCombi::permuted (epu8 a, epu8 b) noexcept | 
| Same as permuted_ref but with an optimized implementation using intrinsics.   | |
| 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 both halves sorted.   | |
| epu8 | HPCombi::revsorted (epu8 a) noexcept | 
| Return a reverse sorted HPCombi::epu8.   | |
| epu8 | HPCombi::revsorted8 (epu8 a) noexcept | 
| Return a HPCombi::epu8 with both halves 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 | 
| Same interface as permutation_of but with a different implementation.   | |
| epu8 | HPCombi::permutation_of (epu8 a, epu8 b) noexcept | 
| Find if a vector is a permutation of another one.   | |
| 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 | 
| Same interface as horiz_sum but with a different implementation.   | |
| uint8_t | HPCombi::horiz_sum_gen (epu8) noexcept | 
| Same interface as horiz_sum but with a different implementation.   | |
| uint8_t | HPCombi::horiz_sum4 (epu8) noexcept | 
| Same interface as horiz_sum but with a different implementation.   | |
| uint8_t | HPCombi::horiz_sum3 (epu8) noexcept | 
| Same interface as horiz_sum but with a different implementation.   | |
| uint8_t | HPCombi::horiz_sum (epu8 v) noexcept | 
| Horizontal sum of a HPCombi::epu8.   | |
| epu8 | HPCombi::partial_sums_ref (epu8) noexcept | 
| Same interface as partial_sums but with a different implementation.   | |
| epu8 | HPCombi::partial_sums_gen (epu8) noexcept | 
| Same interface as partial_sums but with a different implementation.   | |
| epu8 | HPCombi::partial_sums_round (epu8) noexcept | 
| Same interface as partial_sums but with a different implementation.   | |
| epu8 | HPCombi::partial_sums (epu8 v) noexcept | 
| Horizontal partial sum of a HPCombi::epu8.   | |
| uint8_t | HPCombi::horiz_max_ref (epu8) noexcept | 
| Same interface as horiz_max but with a different implementation.   | |
| uint8_t | HPCombi::horiz_max_gen (epu8) noexcept | 
| Same interface as horiz_max but with a different implementation.   | |
| uint8_t | HPCombi::horiz_max4 (epu8) noexcept | 
| Same interface as horiz_max but with a different implementation.   | |
| uint8_t | HPCombi::horiz_max3 (epu8) noexcept | 
| Same interface as horiz_max but with a different implementation.   | |
| uint8_t | HPCombi::horiz_max (epu8 v) noexcept | 
| Horizontal sum of a HPCombi::epu8.   | |
| epu8 | HPCombi::partial_max_ref (epu8) noexcept | 
| Same interface as partial_max but with a different implementation.   | |
| epu8 | HPCombi::partial_max_gen (epu8) noexcept | 
| Same interface as partial_max but with a different implementation.   | |
| epu8 | HPCombi::partial_max_round (epu8) noexcept | 
| Same interface as partial_max but with a different implementation.   | |
| epu8 | HPCombi::partial_max (epu8 v) noexcept | 
| Horizontal partial sum of a HPCombi::epu8.   | |
| uint8_t | HPCombi::horiz_min_ref (epu8) noexcept | 
| Same interface as horiz_min but with a different implementation.   | |
| uint8_t | HPCombi::horiz_min_gen (epu8) noexcept | 
| Same interface as horiz_min but with a different implementation.   | |
| uint8_t | HPCombi::horiz_min4 (epu8) noexcept | 
| Same interface as horiz_min but with a different implementation.   | |
| uint8_t | HPCombi::horiz_min3 (epu8) noexcept | 
| Same interface as horiz_min but with a different implementation.   | |
| uint8_t | HPCombi::horiz_min (epu8 v) noexcept | 
| Horizontal sum of a HPCombi::epu8.   | |
| epu8 | HPCombi::partial_min_ref (epu8) noexcept | 
| Same interface as partial_min but with a different implementation.   | |
| epu8 | HPCombi::partial_min_gen (epu8) noexcept | 
| Same interface as partial_min but with a different implementation.   | |
| epu8 | HPCombi::partial_min_round (epu8) noexcept | 
| Same interface as partial_min but with a different implementation.   | |
| epu8 | HPCombi::partial_min (epu8 v) noexcept | 
| Horizontal partial sum of a HPCombi::epu8.   | |
| epu8 | HPCombi::eval16_ref (epu8 v) noexcept | 
| Same interface as eval16 but with a different implementation.   | |
| epu8 | HPCombi::eval16_arr (epu8 v) noexcept | 
| Same interface as eval16 but with a different implementation.   | |
| epu8 | HPCombi::eval16_cycle (epu8 v) noexcept | 
| Same interface as eval16 but with a different implementation.   | |
| epu8 | HPCombi::eval16_popcount (epu8 v) noexcept | 
| Same interface as eval16 but with a different implementation.   | |
| epu8 | HPCombi::eval16 (epu8 v) noexcept | 
| Evaluation of a HPCombi::epu8: count how many times each int of 0..15 appears in the input.   | |
| uint64_t | HPCombi::first_diff_ref (epu8 a, epu8 b, size_t bound=16) noexcept | 
| Same interface as first_diff but with a different implementation.   | |
| uint64_t | HPCombi::first_diff_mask (epu8 a, epu8 b, size_t bound=16) noexcept | 
| Same interface as first_diff but with a different implementation.   | |
| 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 | 
| Same interface as last_diff but with a different implementation.   | |
| uint64_t | HPCombi::last_diff_mask (epu8 a, epu8 b, size_t bound=16) noexcept | 
| Same interface as last_diff but with a different implementation.   | |
| 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 | 
| Same interface as is_permutation but with a different implementation.   | |
| bool | HPCombi::is_permutation_eval (epu8 v, const size_t k=16) noexcept | 
| Same interface as is_permutation but with a different implementation.   | |
| 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< epu8 > | HPCombi::Epu8 {} | 
| Factory object acting as a class constructor for type HPCombi::epu8.   | |
| constexpr uint64_t | HPCombi::prime = 0x9e3779b97f4a7bb9 | 
| A prime number good for hashing.   | |
declaration of HPCombi::epu8.
Contains renaming of some low level functions, eg simde_mm_testz_si128(a,a) → is_all_zero(a)