Initial import of libdpf.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ryan Henry 2026-09-24 14:08:32 -06:00
commit e4e666f459
4563 changed files with 1690372 additions and 0 deletions

View file

@ -0,0 +1,160 @@
#include <cstdint>
class custom_input_type
{
public:
constexpr custom_input_type()
: val_{0}
{ }
constexpr custom_input_type(uint16_t val)
: val_{val}
{ }
custom_input_type operator<<(std::size_t shift) const
{
return custom_input_type{static_cast<uint16_t>(val_ << shift)};
}
custom_input_type & operator<<=(std::size_t shift)
{
this->val_ <<= shift;
return *this;
}
custom_input_type operator>>(std::size_t shift) const
{
return custom_input_type{static_cast<uint16_t>(val_ >> shift)};
}
custom_input_type & operator>>=(std::size_t shift)
{
this->val_ >>= shift;
return *this;
}
custom_input_type operator&(const custom_input_type & rhs) const
{
return custom_input_type{static_cast<uint16_t>(this->val_ & rhs.val_)};
}
custom_input_type operator^(const custom_input_type & rhs) const
{
return custom_input_type{static_cast<uint16_t>(this->val_ ^ rhs.val_)};
}
custom_input_type operator~() const
{
return custom_input_type{static_cast<uint16_t>(~this->val_)};
}
custom_input_type & operator++()
{
++this->val_;
return *this;
}
custom_input_type operator++(int)
{
custom_input_type tmp = *this;
this->operator++();
return tmp;
}
custom_input_type & operator--()
{
--this->val_;
return *this;
}
custom_input_type operator--(int)
{
custom_input_type tmp = *this;
this->operator--();
return tmp;
}
bool operator==(const custom_input_type & rhs) const
{
return this->val_ == rhs.val_;
}
bool operator>(const custom_input_type & rhs) const
{
return this->val_ > rhs.val_;
}
bool operator>=(const custom_input_type & rhs) const
{
return this->val_ >= rhs.val_;
}
bool operator<(const custom_input_type & rhs) const
{
return this->val_ < rhs.val_;
}
bool operator<=(const custom_input_type & rhs) const
{
return this->val_ <= rhs.val_;
}
operator bool() const
{
return static_cast<bool>(this->val_);
}
operator uint16_t() const
{
return val_;
}
operator uint64_t() const
{
return static_cast<uint64_t>(val_);
}
private:
uint16_t val_;
};
namespace dpf::utils
{
template <>
struct msb_of<custom_input_type>
{
static constexpr custom_input_type value{0x8000};
};
template <>
struct mod_pow_2<custom_input_type>
{
std::size_t operator()(custom_input_type val, std::size_t n) const noexcept
{
return static_cast<std::size_t>(static_cast<uint16_t>(val) % (1ul << n));
}
};
}
namespace std
{
template<>
class numeric_limits<custom_input_type>
: public numeric_limits<uint16_t> {};
template<>
class numeric_limits<custom_input_type const>
: public numeric_limits<custom_input_type> {};
template<>
class numeric_limits<custom_input_type volatile>
: public numeric_limits<custom_input_type> {};
template<>
class numeric_limits<custom_input_type const volatile>
: public numeric_limits<custom_input_type> {};
}

View file

@ -0,0 +1,54 @@
#include <cstdint>
class custom_output_type_large_plus_minus
{
public:
constexpr custom_output_type_large_plus_minus()
: a_{0}, b_{0}, c_{0}, d_{0}
{ }
constexpr custom_output_type_large_plus_minus(uint64_t val)
: a_{val}, b_{val}, c_{val}, d_{val}
{ }
constexpr custom_output_type_large_plus_minus(uint64_t a, uint64_t b, uint64_t c, uint64_t d)
: a_{a}, b_{b}, c_{c}, d_{d}
{ }
custom_output_type_large_plus_minus operator+(const custom_output_type_large_plus_minus & rhs) const
{
return custom_output_type_large_plus_minus{this->a_ + rhs.a_, this->b_ + rhs.b_, this->c_ + rhs.c_, this->d_ + rhs.d_};
}
custom_output_type_large_plus_minus operator-(const custom_output_type_large_plus_minus & rhs) const
{
return custom_output_type_large_plus_minus{this->a_ - rhs.a_, this->b_ - rhs.b_, this->c_ - rhs.c_, this->d_ - rhs.d_};
}
custom_output_type_large_plus_minus operator^(const custom_output_type_large_plus_minus & rhs) const
{
return custom_output_type_large_plus_minus{this->a_ ^ rhs.a_, this->b_ ^ rhs.b_, this->c_ ^ rhs.c_, this->d_ ^ rhs.d_};
}
bool operator==(const custom_output_type_large_plus_minus & rhs) const
{
return this->a_ == rhs.a_ && this->b_ == rhs.b_ && this->c_ == rhs.c_ && this->d_ == rhs.d_;
}
private:
uint64_t a_, b_, c_, d_;
};
namespace dpf::utils
{
template <>
struct make_from_integral_value<custom_output_type_large_plus_minus>
{
constexpr custom_output_type_large_plus_minus operator()(uint64_t val) const noexcept
{
return custom_output_type_large_plus_minus{val, val, val, val};
}
};
}

View file

@ -0,0 +1,49 @@
#include <cstdint>
class custom_output_type_large_xor
{
public:
constexpr custom_output_type_large_xor()
: a_{0}, b_{0}, c_{0}, d_{0}
{ }
constexpr custom_output_type_large_xor(uint64_t val)
: a_{val}, b_{val}, c_{val}, d_{val}
{ }
constexpr custom_output_type_large_xor(uint64_t a, uint64_t b, uint64_t c, uint64_t d)
: a_{a}, b_{b}, c_{c}, d_{d}
{ }
custom_output_type_large_xor operator-(const custom_output_type_large_xor & rhs) const
{
return this->operator^(rhs);
}
custom_output_type_large_xor operator^(const custom_output_type_large_xor & rhs) const
{
return custom_output_type_large_xor{this->a_ ^ rhs.a_, this->b_ ^ rhs.b_, this->c_ ^ rhs.c_, this->d_ ^ rhs.d_};
}
bool operator==(const custom_output_type_large_xor & rhs) const
{
return this->a_ == rhs.a_ && this->b_ == rhs.b_ && this->c_ == rhs.c_ && this->d_ == rhs.d_;
}
private:
uint64_t a_, b_, c_, d_;
};
namespace dpf::utils
{
template <>
struct make_from_integral_value<custom_output_type_large_xor>
{
constexpr custom_output_type_large_xor operator()(uint64_t val) const noexcept
{
return custom_output_type_large_xor{val, val, val, val};
}
};
}

View file

@ -0,0 +1,48 @@
#include <cstdint>
class custom_output_type_small
{
public:
constexpr custom_output_type_small()
: val_{0}
{ }
constexpr custom_output_type_small(uint64_t val)
: val_{val}
{ }
custom_output_type_small operator+(const custom_output_type_small & rhs) const
{
return custom_output_type_small{this->val_ + rhs.val_};
}
custom_output_type_small operator-(const custom_output_type_small & rhs) const
{
return custom_output_type_small{this->val_ - rhs.val_};
}
custom_output_type_small operator^(const custom_output_type_small & rhs) const
{
return custom_output_type_small{this->val_ ^ rhs.val_};
}
bool operator==(const custom_output_type_small & rhs) const
{
return this->val_ == rhs.val_;
}
private:
uint64_t val_;
};
namespace dpf::leaf_arithmetic
{
HEDLEY_PRAGMA(GCC diagnostic push)
HEDLEY_PRAGMA(GCC diagnostic ignored "-Wignored-attributes")
template <> struct add_t<custom_output_type_small, simde__m128i> final : public detail::add2x64_t {};
template <> struct subtract_t<custom_output_type_small, simde__m128i> final : public detail::sub2x64_t {};
template <> struct multiply_t<custom_output_type_small, simde__m128i> final : public detail::mul2x64_t {};
HEDLEY_PRAGMA(GCC diagnostic pop)
}

View file

@ -0,0 +1,24 @@
#ifndef LIBDPF_TEST_TESTS_HELPERS_DOMAIN_WALK_HPP__
#define LIBDPF_TEST_TESTS_HELPERS_DOMAIN_WALK_HPP__
// eval_interval / eval_full emit points in integer order of the input bits
// (the same order as operator++ for ordinary integers). xor_wrapper::operator++
// is characteristic-2 addition, XOR 1, so it does not walk that domain.
template <typename InputT>
InputT next_domain_point(InputT cur)
{
if constexpr (dpf::utils::has_characteristic_two_v<InputT>)
{
using narrow = dpf::utils::integral_type_from_bitlength_t<dpf::utils::bitlength_of_v<InputT>>;
auto bits = static_cast<narrow>(dpf::utils::to_integral_type<InputT>{}(cur));
bits = static_cast<narrow>(bits + narrow{1});
return dpf::utils::make_from_integral_value<InputT>{}(bits);
}
else
{
++cur;
return cur;
}
}
#endif // LIBDPF_TEST_TESTS_HELPERS_DOMAIN_WALK_HPP__

View file

@ -0,0 +1,664 @@
#ifndef LIBDPF_TEST_TESTS_HELPERS_EVAL_COMMON_DATA_HPP__
#define LIBDPF_TEST_TESTS_HELPERS_EVAL_COMMON_DATA_HPP__
#include "custom_input_type.hpp"
#include "custom_output_type_small.hpp"
#include "custom_output_type_large_plus_minus.hpp"
#include "custom_output_type_large_xor.hpp"
#include "domain_walk.hpp"
template <typename InputT,
typename OutputT>
using test_type = std::tuple<InputT, OutputT>;
template <typename InputT,
typename OutputT>
using param_type = std::vector<test_type<InputT, OutputT>>;
using dpf::literals::operator""_bitstring;
using dpf::literals::operator""_bitstring_8;
static std::tuple
<
// base test
param_type<uint16_t, uint64_t>,
// test input types
param_type<int16_t, uint64_t>,
param_type<uint8_t, uint64_t>,
param_type<uint64_t, uint64_t>,
param_type<simde_int128, uint64_t>,
param_type<simde_uint128, uint64_t>,
param_type<dpf::bitstring<10>, uint64_t>,
param_type<dpf::keyword<3, dpf::alphabets::hex>, uint64_t>,
param_type<dpf::modint<10>, uint64_t>,
param_type<dpf::xor_wrapper<int16_t>, uint64_t>,
param_type<dpf::xor_wrapper<uint16_t>, uint64_t>,
// test output types
param_type<uint16_t, int64_t>,
param_type<uint16_t, uint8_t>,
param_type<uint16_t, simde_int128>,
param_type<uint16_t, simde_uint128>,
param_type<uint16_t, dpf::bit>,
param_type<uint16_t, dpf::bitstring<20, uint8_t>>,
param_type<uint16_t, dpf::bitstring<150>>,
param_type<uint16_t, dpf::xor_wrapper<int64_t>>,
param_type<uint16_t, dpf::xor_wrapper<uint64_t>>,
// custom types
param_type<custom_input_type, uint64_t>,
param_type<uint16_t, custom_output_type_small>,
param_type<uint16_t, custom_output_type_large_plus_minus>,
param_type<uint16_t, custom_output_type_large_xor>
> allParams
{
{
std::make_tuple(uint16_t(0x0000), uint64_t(0x0000000000000001)),
std::make_tuple(uint16_t(0x0000), uint64_t(0x5555555555555555)),
std::make_tuple(uint16_t(0x0000), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x0000), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x5555), uint64_t(0x0000000000000001)),
std::make_tuple(uint16_t(0x5555), uint64_t(0x5555555555555555)),
std::make_tuple(uint16_t(0x5555), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x5555), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x7FFF), uint64_t(0x0000000000000001)),
std::make_tuple(uint16_t(0x7FFF), uint64_t(0x5555555555555555)),
std::make_tuple(uint16_t(0x7FFF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x7FFF), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x8000), uint64_t(0x0000000000000001)),
std::make_tuple(uint16_t(0x8000), uint64_t(0x5555555555555555)),
std::make_tuple(uint16_t(0x8000), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x8000), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xAAAA), uint64_t(0x0000000000000001)),
std::make_tuple(uint16_t(0xAAAA), uint64_t(0x5555555555555555)),
std::make_tuple(uint16_t(0xAAAA), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0xAAAA), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xFFFF), uint64_t(0x0000000000000001)),
std::make_tuple(uint16_t(0xFFFF), uint64_t(0x5555555555555555)),
std::make_tuple(uint16_t(0xFFFF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0xFFFF), uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(int16_t(0x0000), uint64_t(0x0000000000000001)),
std::make_tuple(int16_t(0x0000), uint64_t(0x5555555555555555)),
std::make_tuple(int16_t(0x0000), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(int16_t(0x0000), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(int16_t(0x5555), uint64_t(0x0000000000000001)),
std::make_tuple(int16_t(0x5555), uint64_t(0x5555555555555555)),
std::make_tuple(int16_t(0x5555), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(int16_t(0x5555), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(int16_t(0x7FFF), uint64_t(0x0000000000000001)),
std::make_tuple(int16_t(0x7FFF), uint64_t(0x5555555555555555)),
std::make_tuple(int16_t(0x7FFF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(int16_t(0x7FFF), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(int16_t(0x8000), uint64_t(0x0000000000000001)),
std::make_tuple(int16_t(0x8000), uint64_t(0x5555555555555555)),
std::make_tuple(int16_t(0x8000), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(int16_t(0x8000), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(int16_t(0xAAAA), uint64_t(0x0000000000000001)),
std::make_tuple(int16_t(0xAAAA), uint64_t(0x5555555555555555)),
std::make_tuple(int16_t(0xAAAA), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(int16_t(0xAAAA), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(int16_t(0xFFFF), uint64_t(0x0000000000000001)),
std::make_tuple(int16_t(0xFFFF), uint64_t(0x5555555555555555)),
std::make_tuple(int16_t(0xFFFF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(int16_t(0xFFFF), uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint8_t(0x00), uint64_t(0x0000000000000001)),
std::make_tuple(uint8_t(0x00), uint64_t(0x5555555555555555)),
std::make_tuple(uint8_t(0x00), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint8_t(0x00), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint8_t(0x55), uint64_t(0x0000000000000001)),
std::make_tuple(uint8_t(0x55), uint64_t(0x5555555555555555)),
std::make_tuple(uint8_t(0x55), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint8_t(0x55), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint8_t(0x7F), uint64_t(0x0000000000000001)),
std::make_tuple(uint8_t(0x7F), uint64_t(0x5555555555555555)),
std::make_tuple(uint8_t(0x7F), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint8_t(0x7F), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint8_t(0x80), uint64_t(0x0000000000000001)),
std::make_tuple(uint8_t(0x80), uint64_t(0x5555555555555555)),
std::make_tuple(uint8_t(0x80), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint8_t(0x80), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint8_t(0xAA), uint64_t(0x0000000000000001)),
std::make_tuple(uint8_t(0xAA), uint64_t(0x5555555555555555)),
std::make_tuple(uint8_t(0xAA), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint8_t(0xAA), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint8_t(0xFF), uint64_t(0x0000000000000001)),
std::make_tuple(uint8_t(0xFF), uint64_t(0x5555555555555555)),
std::make_tuple(uint8_t(0xFF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint8_t(0xFF), uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint64_t(0x0000000000000000), uint64_t(0x0000000000000001)),
std::make_tuple(uint64_t(0x0000000000000000), uint64_t(0x5555555555555555)),
std::make_tuple(uint64_t(0x0000000000000000), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint64_t(0x0000000000000000), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint64_t(0x5555555555555555), uint64_t(0x0000000000000001)),
std::make_tuple(uint64_t(0x5555555555555555), uint64_t(0x5555555555555555)),
std::make_tuple(uint64_t(0x5555555555555555), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint64_t(0x5555555555555555), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint64_t(0x7FFFFFFFFFFFFFFF), uint64_t(0x0000000000000001)),
std::make_tuple(uint64_t(0x7FFFFFFFFFFFFFFF), uint64_t(0x5555555555555555)),
std::make_tuple(uint64_t(0x7FFFFFFFFFFFFFFF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint64_t(0x7FFFFFFFFFFFFFFF), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint64_t(0X8000000000000000), uint64_t(0x0000000000000001)),
std::make_tuple(uint64_t(0X8000000000000000), uint64_t(0x5555555555555555)),
std::make_tuple(uint64_t(0X8000000000000000), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint64_t(0X8000000000000000), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint64_t(0xAAAAAAAAAAAAAAAA), uint64_t(0x0000000000000001)),
std::make_tuple(uint64_t(0xAAAAAAAAAAAAAAAA), uint64_t(0x5555555555555555)),
std::make_tuple(uint64_t(0xAAAAAAAAAAAAAAAA), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint64_t(0xAAAAAAAAAAAAAAAA), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint64_t(0xFFFFFFFFFFFFFFFF), uint64_t(0x0000000000000001)),
std::make_tuple(uint64_t(0xFFFFFFFFFFFFFFFF), uint64_t(0x5555555555555555)),
std::make_tuple(uint64_t(0xFFFFFFFFFFFFFFFF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint64_t(0xFFFFFFFFFFFFFFFF), uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000000), uint64_t(0x0000000000000001)),
std::make_tuple(simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000000), uint64_t(0x5555555555555555)),
std::make_tuple(simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000000), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000000), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555), uint64_t(0x0000000000000001)),
std::make_tuple(simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555), uint64_t(0x5555555555555555)),
std::make_tuple(simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_int128(0x7FFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF), uint64_t(0x0000000000000001)),
std::make_tuple(simde_int128(0x7FFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF), uint64_t(0x5555555555555555)),
std::make_tuple(simde_int128(0x7FFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(simde_int128(0x7FFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_int128(0x8000000000000000) << 64 | simde_int128(0x0000000000000000), uint64_t(0x0000000000000001)),
std::make_tuple(simde_int128(0x8000000000000000) << 64 | simde_int128(0x0000000000000000), uint64_t(0x5555555555555555)),
std::make_tuple(simde_int128(0x8000000000000000) << 64 | simde_int128(0x0000000000000000), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(simde_int128(0x8000000000000000) << 64 | simde_int128(0x0000000000000000), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA), uint64_t(0x0000000000000001)),
std::make_tuple(simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA), uint64_t(0x5555555555555555)),
std::make_tuple(simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF), uint64_t(0x0000000000000001)),
std::make_tuple(simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF), uint64_t(0x5555555555555555)),
std::make_tuple(simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF), uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000000), uint64_t(0x0000000000000001)),
std::make_tuple(simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000000), uint64_t(0x5555555555555555)),
std::make_tuple(simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000000), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000000), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555), uint64_t(0x0000000000000001)),
std::make_tuple(simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555), uint64_t(0x5555555555555555)),
std::make_tuple(simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_uint128(0x7FFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF), uint64_t(0x0000000000000001)),
std::make_tuple(simde_uint128(0x7FFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF), uint64_t(0x5555555555555555)),
std::make_tuple(simde_uint128(0x7FFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(simde_uint128(0x7FFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_uint128(0x8000000000000000) << 64 | simde_uint128(0x0000000000000000), uint64_t(0x0000000000000001)),
std::make_tuple(simde_uint128(0x8000000000000000) << 64 | simde_uint128(0x0000000000000000), uint64_t(0x5555555555555555)),
std::make_tuple(simde_uint128(0x8000000000000000) << 64 | simde_uint128(0x0000000000000000), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(simde_uint128(0x8000000000000000) << 64 | simde_uint128(0x0000000000000000), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA), uint64_t(0x0000000000000001)),
std::make_tuple(simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA), uint64_t(0x5555555555555555)),
std::make_tuple(simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF), uint64_t(0x0000000000000001)),
std::make_tuple(simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF), uint64_t(0x5555555555555555)),
std::make_tuple(simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF), uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(0000000000_bitstring, uint64_t(0x0000000000000001)),
std::make_tuple(0000000000_bitstring, uint64_t(0x5555555555555555)),
std::make_tuple(0000000000_bitstring, uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(0000000000_bitstring, uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(0101010101_bitstring, uint64_t(0x0000000000000001)),
std::make_tuple(0101010101_bitstring, uint64_t(0x5555555555555555)),
std::make_tuple(0101010101_bitstring, uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(0101010101_bitstring, uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(0111111111_bitstring, uint64_t(0x0000000000000001)),
std::make_tuple(0111111111_bitstring, uint64_t(0x5555555555555555)),
std::make_tuple(0111111111_bitstring, uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(0111111111_bitstring, uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(1000000000_bitstring, uint64_t(0x0000000000000001)),
std::make_tuple(1000000000_bitstring, uint64_t(0x5555555555555555)),
std::make_tuple(1000000000_bitstring, uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(1000000000_bitstring, uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(1010101010_bitstring, uint64_t(0x0000000000000001)),
std::make_tuple(1010101010_bitstring, uint64_t(0x5555555555555555)),
std::make_tuple(1010101010_bitstring, uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(1010101010_bitstring, uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(1111111111_bitstring, uint64_t(0x0000000000000001)),
std::make_tuple(1111111111_bitstring, uint64_t(0x5555555555555555)),
std::make_tuple(1111111111_bitstring, uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(1111111111_bitstring, uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("000"), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("000"), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("000"), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("000"), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("555"), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("555"), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("555"), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("555"), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("7ff"), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("7ff"), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("7ff"), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("7ff"), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("800"), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("800"), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("800"), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("800"), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("aaa"), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("aaa"), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("aaa"), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("aaa"), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("fff"), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("fff"), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("fff"), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("fff"), uint64_t(0xFFFFFFFFFFFFFFFF)),
},
{
std::make_tuple(dpf::modint<10>(0x000), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::modint<10>(0x000), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::modint<10>(0x000), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::modint<10>(0x000), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::modint<10>(0x155), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::modint<10>(0x155), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::modint<10>(0x155), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::modint<10>(0x155), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::modint<10>(0x1FF), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::modint<10>(0x1FF), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::modint<10>(0x1FF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::modint<10>(0x1FF), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::modint<10>(0x200), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::modint<10>(0x200), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::modint<10>(0x200), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::modint<10>(0x200), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::modint<10>(0x2AA), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::modint<10>(0x2AA), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::modint<10>(0x2AA), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::modint<10>(0x2AA), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::modint<10>(0x3FF), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::modint<10>(0x3FF), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::modint<10>(0x3FF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::modint<10>(0x3FF), uint64_t(0xFFFFFFFFFFFFFFFF)),
},
{
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x0000)), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x0000)), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x0000)), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x0000)), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x5555)), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x5555)), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x5555)), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x5555)), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x7FFF)), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x7FFF)), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x7FFF)), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x7FFF)), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x8000)), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x8000)), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x8000)), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x8000)), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0xAAAA)), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0xAAAA)), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0xAAAA)), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0xAAAA)), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0xFFFF)), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0xFFFF)), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0xFFFF)), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0xFFFF)), uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x0000)), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x0000)), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x0000)), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x0000)), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x5555)), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x5555)), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x5555)), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x5555)), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x7FFF)), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x7FFF)), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x7FFF)), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x7FFF)), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x8000)), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x8000)), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x8000)), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x8000)), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0xAAAA)), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0xAAAA)), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0xAAAA)), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0xAAAA)), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0xFFFF)), uint64_t(0x0000000000000001)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0xFFFF)), uint64_t(0x5555555555555555)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0xFFFF)), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0xFFFF)), uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint16_t(0x0000), int64_t(0x0000000000000001)),
std::make_tuple(uint16_t(0x0000), int64_t(0x5555555555555555)),
std::make_tuple(uint16_t(0x0000), int64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x0000), int64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x5555), int64_t(0x0000000000000001)),
std::make_tuple(uint16_t(0x5555), int64_t(0x5555555555555555)),
std::make_tuple(uint16_t(0x5555), int64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x5555), int64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x7FFF), int64_t(0x0000000000000001)),
std::make_tuple(uint16_t(0x7FFF), int64_t(0x5555555555555555)),
std::make_tuple(uint16_t(0x7FFF), int64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x7FFF), int64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x8000), int64_t(0x0000000000000001)),
std::make_tuple(uint16_t(0x8000), int64_t(0x5555555555555555)),
std::make_tuple(uint16_t(0x8000), int64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x8000), int64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xAAAA), int64_t(0x0000000000000001)),
std::make_tuple(uint16_t(0xAAAA), int64_t(0x5555555555555555)),
std::make_tuple(uint16_t(0xAAAA), int64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0xAAAA), int64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xFFFF), int64_t(0x0000000000000001)),
std::make_tuple(uint16_t(0xFFFF), int64_t(0x5555555555555555)),
std::make_tuple(uint16_t(0xFFFF), int64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0xFFFF), int64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint16_t(0x0000), uint8_t(0x01)),
std::make_tuple(uint16_t(0x0000), uint8_t(0x55)),
std::make_tuple(uint16_t(0x0000), uint8_t(0xAA)),
std::make_tuple(uint16_t(0x0000), uint8_t(0xFF)),
std::make_tuple(uint16_t(0x5555), uint8_t(0x01)),
std::make_tuple(uint16_t(0x5555), uint8_t(0x55)),
std::make_tuple(uint16_t(0x5555), uint8_t(0xAA)),
std::make_tuple(uint16_t(0x5555), uint8_t(0xFF)),
std::make_tuple(uint16_t(0x7FFF), uint8_t(0x01)),
std::make_tuple(uint16_t(0x7FFF), uint8_t(0x55)),
std::make_tuple(uint16_t(0x7FFF), uint8_t(0xAA)),
std::make_tuple(uint16_t(0x7FFF), uint8_t(0xFF)),
std::make_tuple(uint16_t(0x8000), uint8_t(0x01)),
std::make_tuple(uint16_t(0x8000), uint8_t(0x55)),
std::make_tuple(uint16_t(0x8000), uint8_t(0xAA)),
std::make_tuple(uint16_t(0x8000), uint8_t(0xFF)),
std::make_tuple(uint16_t(0xAAAA), uint8_t(0x01)),
std::make_tuple(uint16_t(0xAAAA), uint8_t(0x55)),
std::make_tuple(uint16_t(0xAAAA), uint8_t(0xAA)),
std::make_tuple(uint16_t(0xAAAA), uint8_t(0xFF)),
std::make_tuple(uint16_t(0xFFFF), uint8_t(0x01)),
std::make_tuple(uint16_t(0xFFFF), uint8_t(0x55)),
std::make_tuple(uint16_t(0xFFFF), uint8_t(0xAA)),
std::make_tuple(uint16_t(0xFFFF), uint8_t(0xFF))
},
{
std::make_tuple(uint16_t(0x0000), simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000001)),
std::make_tuple(uint16_t(0x0000), simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555)),
std::make_tuple(uint16_t(0x0000), simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x0000), simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x5555), simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000001)),
std::make_tuple(uint16_t(0x5555), simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555)),
std::make_tuple(uint16_t(0x5555), simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x5555), simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x7FFF), simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000001)),
std::make_tuple(uint16_t(0x7FFF), simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555)),
std::make_tuple(uint16_t(0x7FFF), simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x7FFF), simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x8000), simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000001)),
std::make_tuple(uint16_t(0x8000), simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555)),
std::make_tuple(uint16_t(0x8000), simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x8000), simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xAAAA), simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000001)),
std::make_tuple(uint16_t(0xAAAA), simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555)),
std::make_tuple(uint16_t(0xAAAA), simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0xAAAA), simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xFFFF), simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000001)),
std::make_tuple(uint16_t(0xFFFF), simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555)),
std::make_tuple(uint16_t(0xFFFF), simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0xFFFF), simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint16_t(0x0000), simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000001)),
std::make_tuple(uint16_t(0x0000), simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555)),
std::make_tuple(uint16_t(0x0000), simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x0000), simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x5555), simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000001)),
std::make_tuple(uint16_t(0x5555), simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555)),
std::make_tuple(uint16_t(0x5555), simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x5555), simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x7FFF), simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000001)),
std::make_tuple(uint16_t(0x7FFF), simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555)),
std::make_tuple(uint16_t(0x7FFF), simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x7FFF), simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x8000), simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000001)),
std::make_tuple(uint16_t(0x8000), simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555)),
std::make_tuple(uint16_t(0x8000), simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0x8000), simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xAAAA), simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000001)),
std::make_tuple(uint16_t(0xAAAA), simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555)),
std::make_tuple(uint16_t(0xAAAA), simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0xAAAA), simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xFFFF), simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000001)),
std::make_tuple(uint16_t(0xFFFF), simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555)),
std::make_tuple(uint16_t(0xFFFF), simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(uint16_t(0xFFFF), simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint16_t(0x0000), dpf::bit::one),
std::make_tuple(uint16_t(0x5555), dpf::bit::one),
std::make_tuple(uint16_t(0x7FFF), dpf::bit::one),
std::make_tuple(uint16_t(0x8000), dpf::bit::one),
std::make_tuple(uint16_t(0xAAAA), dpf::bit::one),
std::make_tuple(uint16_t(0xFFFF), dpf::bit::one)
},
{
std::make_tuple(uint16_t(0x0000), 00000000000000000001_bitstring_8),
std::make_tuple(uint16_t(0x0000), 01010101010101010101_bitstring_8),
std::make_tuple(uint16_t(0x0000), 10101010101010101010_bitstring_8),
std::make_tuple(uint16_t(0x0000), 11111111111111111111_bitstring_8),
std::make_tuple(uint16_t(0x5555), 00000000000000000001_bitstring_8),
std::make_tuple(uint16_t(0x5555), 01010101010101010101_bitstring_8),
std::make_tuple(uint16_t(0x5555), 10101010101010101010_bitstring_8),
std::make_tuple(uint16_t(0x5555), 11111111111111111111_bitstring_8),
std::make_tuple(uint16_t(0x7FFF), 00000000000000000001_bitstring_8),
std::make_tuple(uint16_t(0x7FFF), 01010101010101010101_bitstring_8),
std::make_tuple(uint16_t(0x7FFF), 10101010101010101010_bitstring_8),
std::make_tuple(uint16_t(0x7FFF), 11111111111111111111_bitstring_8),
std::make_tuple(uint16_t(0x8000), 00000000000000000001_bitstring_8),
std::make_tuple(uint16_t(0x8000), 01010101010101010101_bitstring_8),
std::make_tuple(uint16_t(0x8000), 10101010101010101010_bitstring_8),
std::make_tuple(uint16_t(0x8000), 11111111111111111111_bitstring_8),
std::make_tuple(uint16_t(0xAAAA), 00000000000000000001_bitstring_8),
std::make_tuple(uint16_t(0xAAAA), 01010101010101010101_bitstring_8),
std::make_tuple(uint16_t(0xAAAA), 10101010101010101010_bitstring_8),
std::make_tuple(uint16_t(0xAAAA), 11111111111111111111_bitstring_8),
std::make_tuple(uint16_t(0xFFFF), 00000000000000000001_bitstring_8),
std::make_tuple(uint16_t(0xFFFF), 01010101010101010101_bitstring_8),
std::make_tuple(uint16_t(0xFFFF), 10101010101010101010_bitstring_8),
std::make_tuple(uint16_t(0xFFFF), 11111111111111111111_bitstring_8)
},
{
std::make_tuple(uint16_t(0x0000), 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001_bitstring),
std::make_tuple(uint16_t(0x0000), 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101_bitstring),
std::make_tuple(uint16_t(0x0000), 101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010_bitstring),
std::make_tuple(uint16_t(0x0000), 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0x5555), 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001_bitstring),
std::make_tuple(uint16_t(0x5555), 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101_bitstring),
std::make_tuple(uint16_t(0x5555), 101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010_bitstring),
std::make_tuple(uint16_t(0x5555), 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0x7FFF), 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001_bitstring),
std::make_tuple(uint16_t(0x7FFF), 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101_bitstring),
std::make_tuple(uint16_t(0x7FFF), 101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010_bitstring),
std::make_tuple(uint16_t(0x7FFF), 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0x8000), 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001_bitstring),
std::make_tuple(uint16_t(0x8000), 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101_bitstring),
std::make_tuple(uint16_t(0x8000), 101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010_bitstring),
std::make_tuple(uint16_t(0x8000), 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0xAAAA), 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001_bitstring),
std::make_tuple(uint16_t(0xAAAA), 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101_bitstring),
std::make_tuple(uint16_t(0xAAAA), 101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010_bitstring),
std::make_tuple(uint16_t(0xAAAA), 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0xFFFF), 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001_bitstring),
std::make_tuple(uint16_t(0xFFFF), 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101_bitstring),
std::make_tuple(uint16_t(0xFFFF), 101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010_bitstring),
std::make_tuple(uint16_t(0xFFFF), 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_bitstring)
},
{
std::make_tuple(uint16_t(0x0000), dpf::xor_wrapper<int64_t>(int64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x0000), dpf::xor_wrapper<int64_t>(int64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x0000), dpf::xor_wrapper<int64_t>(int64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x0000), dpf::xor_wrapper<int64_t>(int64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x5555), dpf::xor_wrapper<int64_t>(int64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x5555), dpf::xor_wrapper<int64_t>(int64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x5555), dpf::xor_wrapper<int64_t>(int64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x5555), dpf::xor_wrapper<int64_t>(int64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x7FFF), dpf::xor_wrapper<int64_t>(int64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x7FFF), dpf::xor_wrapper<int64_t>(int64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x7FFF), dpf::xor_wrapper<int64_t>(int64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x7FFF), dpf::xor_wrapper<int64_t>(int64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x8000), dpf::xor_wrapper<int64_t>(int64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x8000), dpf::xor_wrapper<int64_t>(int64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x8000), dpf::xor_wrapper<int64_t>(int64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x8000), dpf::xor_wrapper<int64_t>(int64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xAAAA), dpf::xor_wrapper<int64_t>(int64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0xAAAA), dpf::xor_wrapper<int64_t>(int64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0xAAAA), dpf::xor_wrapper<int64_t>(int64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0xAAAA), dpf::xor_wrapper<int64_t>(int64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xFFFF), dpf::xor_wrapper<int64_t>(int64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0xFFFF), dpf::xor_wrapper<int64_t>(int64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0xFFFF), dpf::xor_wrapper<int64_t>(int64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0xFFFF), dpf::xor_wrapper<int64_t>(int64_t(0xFFFFFFFFFFFFFFFF)))
},
{
std::make_tuple(uint16_t(0x0000), dpf::xor_wrapper<uint64_t>(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x0000), dpf::xor_wrapper<uint64_t>(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x0000), dpf::xor_wrapper<uint64_t>(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x0000), dpf::xor_wrapper<uint64_t>(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x5555), dpf::xor_wrapper<uint64_t>(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x5555), dpf::xor_wrapper<uint64_t>(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x5555), dpf::xor_wrapper<uint64_t>(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x5555), dpf::xor_wrapper<uint64_t>(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x7FFF), dpf::xor_wrapper<uint64_t>(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x7FFF), dpf::xor_wrapper<uint64_t>(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x7FFF), dpf::xor_wrapper<uint64_t>(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x7FFF), dpf::xor_wrapper<uint64_t>(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x8000), dpf::xor_wrapper<uint64_t>(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x8000), dpf::xor_wrapper<uint64_t>(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x8000), dpf::xor_wrapper<uint64_t>(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x8000), dpf::xor_wrapper<uint64_t>(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xAAAA), dpf::xor_wrapper<uint64_t>(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0xAAAA), dpf::xor_wrapper<uint64_t>(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0xAAAA), dpf::xor_wrapper<uint64_t>(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0xAAAA), dpf::xor_wrapper<uint64_t>(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xFFFF), dpf::xor_wrapper<uint64_t>(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0xFFFF), dpf::xor_wrapper<uint64_t>(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0xFFFF), dpf::xor_wrapper<uint64_t>(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0xFFFF), dpf::xor_wrapper<uint64_t>(uint64_t(0xFFFFFFFFFFFFFFFF)))
},
{
std::make_tuple(custom_input_type(0x0000), uint64_t(0x0000000000000001)),
std::make_tuple(custom_input_type(0x0000), uint64_t(0x5555555555555555)),
std::make_tuple(custom_input_type(0x0000), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(custom_input_type(0x0000), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(custom_input_type(0x5555), uint64_t(0x0000000000000001)),
std::make_tuple(custom_input_type(0x5555), uint64_t(0x5555555555555555)),
std::make_tuple(custom_input_type(0x5555), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(custom_input_type(0x5555), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(custom_input_type(0x7FFF), uint64_t(0x0000000000000001)),
std::make_tuple(custom_input_type(0x7FFF), uint64_t(0x5555555555555555)),
std::make_tuple(custom_input_type(0x7FFF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(custom_input_type(0x7FFF), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(custom_input_type(0x8000), uint64_t(0x0000000000000001)),
std::make_tuple(custom_input_type(0x8000), uint64_t(0x5555555555555555)),
std::make_tuple(custom_input_type(0x8000), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(custom_input_type(0x8000), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(custom_input_type(0xAAAA), uint64_t(0x0000000000000001)),
std::make_tuple(custom_input_type(0xAAAA), uint64_t(0x5555555555555555)),
std::make_tuple(custom_input_type(0xAAAA), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(custom_input_type(0xAAAA), uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(custom_input_type(0xFFFF), uint64_t(0x0000000000000001)),
std::make_tuple(custom_input_type(0xFFFF), uint64_t(0x5555555555555555)),
std::make_tuple(custom_input_type(0xFFFF), uint64_t(0xAAAAAAAAAAAAAAAA)),
std::make_tuple(custom_input_type(0xFFFF), uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint16_t(0x0000), custom_output_type_small(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x0000), custom_output_type_small(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x0000), custom_output_type_small(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x0000), custom_output_type_small(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x5555), custom_output_type_small(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x5555), custom_output_type_small(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x5555), custom_output_type_small(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x5555), custom_output_type_small(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_small(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_small(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_small(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_small(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x8000), custom_output_type_small(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x8000), custom_output_type_small(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x8000), custom_output_type_small(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x8000), custom_output_type_small(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_small(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_small(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_small(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_small(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_small(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_small(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_small(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_small(uint64_t(0xFFFFFFFFFFFFFFFF)))
},
{
std::make_tuple(uint16_t(0x0000), custom_output_type_large_plus_minus(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x0000), custom_output_type_large_plus_minus(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x0000), custom_output_type_large_plus_minus(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x0000), custom_output_type_large_plus_minus(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x5555), custom_output_type_large_plus_minus(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x5555), custom_output_type_large_plus_minus(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x5555), custom_output_type_large_plus_minus(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x5555), custom_output_type_large_plus_minus(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_large_plus_minus(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_large_plus_minus(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_large_plus_minus(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_large_plus_minus(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x8000), custom_output_type_large_plus_minus(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x8000), custom_output_type_large_plus_minus(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x8000), custom_output_type_large_plus_minus(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x8000), custom_output_type_large_plus_minus(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_large_plus_minus(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_large_plus_minus(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_large_plus_minus(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_large_plus_minus(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_large_plus_minus(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_large_plus_minus(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_large_plus_minus(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_large_plus_minus(uint64_t(0xFFFFFFFFFFFFFFFF)))
},
{
std::make_tuple(uint16_t(0x0000), custom_output_type_large_xor(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x0000), custom_output_type_large_xor(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x0000), custom_output_type_large_xor(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x0000), custom_output_type_large_xor(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x5555), custom_output_type_large_xor(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x5555), custom_output_type_large_xor(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x5555), custom_output_type_large_xor(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x5555), custom_output_type_large_xor(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_large_xor(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_large_xor(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_large_xor(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_large_xor(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x8000), custom_output_type_large_xor(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0x8000), custom_output_type_large_xor(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0x8000), custom_output_type_large_xor(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0x8000), custom_output_type_large_xor(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_large_xor(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_large_xor(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_large_xor(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_large_xor(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_large_xor(uint64_t(0x0000000000000001))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_large_xor(uint64_t(0x5555555555555555))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_large_xor(uint64_t(0xAAAAAAAAAAAAAAAA))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_large_xor(uint64_t(0xFFFFFFFFFFFFFFFF)))
}
};
#endif // LIBDPF_TEST_TESTS_HELPERS_EVAL_COMMON_DATA_HPP__

View file

@ -0,0 +1,798 @@
#ifndef LIBDPF_TEST_TESTS_HELPERS_EVAL_COMMON_MULTI_DATA_HPP__
#define LIBDPF_TEST_TESTS_HELPERS_EVAL_COMMON_MULTI_DATA_HPP__
#include "custom_input_type.hpp"
#include "custom_output_type_small.hpp"
#include "custom_output_type_large_plus_minus.hpp"
#include "custom_output_type_large_xor.hpp"
#include "domain_walk.hpp"
template <typename InputT,
typename OutputT>
using test_type = std::tuple<InputT, OutputT, OutputT, OutputT, OutputT>;
template <typename InputT,
typename OutputT>
using param_type = std::vector<test_type<InputT, OutputT>>;
template <typename InputT,
typename OutputT0,
typename OutputT1,
typename OutputT2,
typename OutputT3>
using multi_test_type = std::tuple<InputT, OutputT0, OutputT1, OutputT2, OutputT3>;
template <typename InputT,
typename OutputT0,
typename OutputT1,
typename OutputT2,
typename OutputT3>
using multi_param_type = std::vector<multi_test_type<InputT, OutputT0, OutputT1, OutputT2, OutputT3>>;
using dpf::literals::operator""_bitstring;
using dpf::literals::operator""_bitstring_8;
static std::tuple
<
// base test
param_type<uint16_t, uint64_t>,
// test input types
param_type<int16_t, uint64_t>,
param_type<uint8_t, uint64_t>,
param_type<uint64_t, uint64_t>,
param_type<simde_int128, uint64_t>,
param_type<simde_uint128, uint64_t>,
param_type<dpf::bitstring<10>, uint64_t>,
param_type<dpf::keyword<3, dpf::alphabets::hex>, uint64_t>,
param_type<dpf::modint<10>, uint64_t>,
param_type<dpf::xor_wrapper<int16_t>, uint64_t>,
param_type<dpf::xor_wrapper<uint16_t>, uint64_t>,
// test output types
param_type<uint16_t, int64_t>,
param_type<uint16_t, uint8_t>,
param_type<uint16_t, simde_int128>,
param_type<uint16_t, simde_uint128>,
param_type<uint16_t, dpf::bit>,
param_type<uint16_t, dpf::bitstring<20, uint8_t>>,
param_type<uint16_t, dpf::bitstring<150>>,
param_type<uint16_t, dpf::xor_wrapper<int64_t>>,
param_type<uint16_t, dpf::xor_wrapper<uint64_t>>,
// custom types
param_type<custom_input_type, uint64_t>,
param_type<uint16_t, custom_output_type_small>,
param_type<uint16_t, custom_output_type_large_plus_minus>,
param_type<uint16_t, custom_output_type_large_xor>,
// distinct output types
multi_param_type<uint16_t, uint32_t, dpf::xor_wrapper<uint32_t>, dpf::bitstring<20, uint8_t>, dpf::bitstring<32>>
> allParams
{
{
std::make_tuple(uint16_t(0x0000), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x5555), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x7FFF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0X8000), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xAAAA), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xFFFF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(int16_t(0x0000), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(int16_t(0x5555), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(int16_t(0x7FFF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(int16_t(0X8000), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(int16_t(0xAAAA), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(int16_t(0xFFFF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint8_t(0x00), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint8_t(0x55), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint8_t(0x7F), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint8_t(0x80), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint8_t(0xAA), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint8_t(0xFF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint64_t(0x0000000000000000), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint64_t(0x5555555555555555), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint64_t(0x7FFFFFFFFFFFFFFF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint64_t(0X8000000000000000), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint64_t(0xAAAAAAAAAAAAAAAA), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint64_t(0xFFFFFFFFFFFFFFFF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000000), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_int128(0x7FFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_int128(0x8000000000000000) << 64 | simde_int128(0x0000000000000000), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000000), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_uint128(0x7FFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_uint128(0x8000000000000000) << 64 | simde_uint128(0x0000000000000000), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(0000000000_bitstring, uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(0101010101_bitstring, uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(0111111111_bitstring, uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(1000000000_bitstring, uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(1010101010_bitstring, uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(1111111111_bitstring, uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("000"), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("555"), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("7ff"), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("800"), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("aaa"), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::keyword<3, dpf::alphabets::hex>("fff"), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(dpf::modint<10>(0x000), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::modint<10>(0x155), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::modint<10>(0x1FF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::modint<10>(0x200), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::modint<10>(0x2AA), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::modint<10>(0x3FF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x0000)), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x5555)), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x7FFF)), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0x8000)), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0xAAAA)), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<int16_t>(int16_t(0xFFFF)), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x0000)), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x5555)), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x7FFF)), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0x8000)), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0xAAAA)), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(dpf::xor_wrapper<uint16_t>(uint16_t(0xFFFF)), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint16_t(0x0000), int64_t(0x0000000000000001),
int64_t(0x5555555555555555),
int64_t(0xAAAAAAAAAAAAAAAA),
int64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x5555), int64_t(0x0000000000000001),
int64_t(0x5555555555555555),
int64_t(0xAAAAAAAAAAAAAAAA),
int64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x7FFF), int64_t(0x0000000000000001),
int64_t(0x5555555555555555),
int64_t(0xAAAAAAAAAAAAAAAA),
int64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0X8000), int64_t(0x0000000000000001),
int64_t(0x5555555555555555),
int64_t(0xAAAAAAAAAAAAAAAA),
int64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xAAAA), int64_t(0x0000000000000001),
int64_t(0x5555555555555555),
int64_t(0xAAAAAAAAAAAAAAAA),
int64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xFFFF), int64_t(0x0000000000000001),
int64_t(0x5555555555555555),
int64_t(0xAAAAAAAAAAAAAAAA),
int64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint16_t(0x0000), uint8_t(0x01),
uint8_t(0x55),
uint8_t(0xAA),
uint8_t(0xFF)),
std::make_tuple(uint16_t(0x5555), uint8_t(0x01),
uint8_t(0x55),
uint8_t(0xAA),
uint8_t(0xFF)),
std::make_tuple(uint16_t(0x7FFF), uint8_t(0x01),
uint8_t(0x55),
uint8_t(0xAA),
uint8_t(0xFF)),
std::make_tuple(uint16_t(0x8000), uint8_t(0x01),
uint8_t(0x55),
uint8_t(0xAA),
uint8_t(0xFF)),
std::make_tuple(uint16_t(0xAAAA), uint8_t(0x01),
uint8_t(0x55),
uint8_t(0xAA),
uint8_t(0xFF)),
std::make_tuple(uint16_t(0xFFFF), uint8_t(0x01),
uint8_t(0x55),
uint8_t(0xAA),
uint8_t(0xFF))
},
{
std::make_tuple(uint16_t(0x0000), simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000001),
simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555),
simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA),
simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x5555), simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000001),
simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555),
simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA),
simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x7FFF), simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000001),
simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555),
simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA),
simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x8000), simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000001),
simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555),
simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA),
simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xAAAA), simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000001),
simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555),
simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA),
simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xFFFF), simde_int128(0x0000000000000000) << 64 | simde_int128(0x0000000000000001),
simde_int128(0x5555555555555555) << 64 | simde_int128(0x5555555555555555),
simde_int128(0xAAAAAAAAAAAAAAAA) << 64 | simde_int128(0xAAAAAAAAAAAAAAAA),
simde_int128(0xFFFFFFFFFFFFFFFF) << 64 | simde_int128(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint16_t(0x0000), simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000001),
simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555),
simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA),
simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x5555), simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000001),
simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555),
simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA),
simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x7FFF), simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000001),
simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555),
simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA),
simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0x8000), simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000001),
simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555),
simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA),
simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xAAAA), simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000001),
simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555),
simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA),
simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(uint16_t(0xFFFF), simde_uint128(0x0000000000000000) << 64 | simde_uint128(0x0000000000000001),
simde_uint128(0x5555555555555555) << 64 | simde_uint128(0x5555555555555555),
simde_uint128(0xAAAAAAAAAAAAAAAA) << 64 | simde_uint128(0xAAAAAAAAAAAAAAAA),
simde_uint128(0xFFFFFFFFFFFFFFFF) << 64 | simde_uint128(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint16_t(0x0000), dpf::bit::one,
dpf::bit::one,
dpf::bit::one,
dpf::bit::one),
std::make_tuple(uint16_t(0x5555), dpf::bit::one,
dpf::bit::one,
dpf::bit::one,
dpf::bit::one),
std::make_tuple(uint16_t(0x7FFF), dpf::bit::one,
dpf::bit::one,
dpf::bit::one,
dpf::bit::one),
std::make_tuple(uint16_t(0x8000), dpf::bit::one,
dpf::bit::one,
dpf::bit::one,
dpf::bit::one),
std::make_tuple(uint16_t(0xAAAA), dpf::bit::one,
dpf::bit::one,
dpf::bit::one,
dpf::bit::one),
std::make_tuple(uint16_t(0xFFFF), dpf::bit::one,
dpf::bit::one,
dpf::bit::one,
dpf::bit::one)
},
{
std::make_tuple(uint16_t(0x0000), 00000000000000000001_bitstring_8,
01010101010101010101_bitstring_8,
10101010101010101010_bitstring_8,
11111111111111111111_bitstring_8),
std::make_tuple(uint16_t(0x5555), 00000000000000000001_bitstring_8,
01010101010101010101_bitstring_8,
10101010101010101010_bitstring_8,
11111111111111111111_bitstring_8),
std::make_tuple(uint16_t(0x7FFF), 00000000000000000001_bitstring_8,
01010101010101010101_bitstring_8,
10101010101010101010_bitstring_8,
11111111111111111111_bitstring_8),
std::make_tuple(uint16_t(0x8000), 00000000000000000001_bitstring_8,
01010101010101010101_bitstring_8,
10101010101010101010_bitstring_8,
11111111111111111111_bitstring_8),
std::make_tuple(uint16_t(0xAAAA), 00000000000000000001_bitstring_8,
01010101010101010101_bitstring_8,
10101010101010101010_bitstring_8,
11111111111111111111_bitstring_8),
std::make_tuple(uint16_t(0xFFFF), 00000000000000000001_bitstring_8,
01010101010101010101_bitstring_8,
10101010101010101010_bitstring_8,
11111111111111111111_bitstring_8)
},
{
std::make_tuple(uint16_t(0x0000), 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001_bitstring,
010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101_bitstring,
101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010_bitstring,
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0x5555), 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001_bitstring,
010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101_bitstring,
101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010_bitstring,
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0x7FFF), 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001_bitstring,
010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101_bitstring,
101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010_bitstring,
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0x8000), 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001_bitstring,
010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101_bitstring,
101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010_bitstring,
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0xAAAA), 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001_bitstring,
010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101_bitstring,
101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010_bitstring,
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0xFFFF), 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001_bitstring,
010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101_bitstring,
101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010_bitstring,
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_bitstring)
},
{
std::make_tuple(uint16_t(0x0000), dpf::xor_wrapper<int64_t>(int64_t(0x0000000000000001)),
dpf::xor_wrapper<int64_t>(int64_t(0x5555555555555555)),
dpf::xor_wrapper<int64_t>(int64_t(0xAAAAAAAAAAAAAAAA)),
dpf::xor_wrapper<int64_t>(int64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x5555), dpf::xor_wrapper<int64_t>(int64_t(0x0000000000000001)),
dpf::xor_wrapper<int64_t>(int64_t(0x5555555555555555)),
dpf::xor_wrapper<int64_t>(int64_t(0xAAAAAAAAAAAAAAAA)),
dpf::xor_wrapper<int64_t>(int64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x7FFF), dpf::xor_wrapper<int64_t>(int64_t(0x0000000000000001)),
dpf::xor_wrapper<int64_t>(int64_t(0x5555555555555555)),
dpf::xor_wrapper<int64_t>(int64_t(0xAAAAAAAAAAAAAAAA)),
dpf::xor_wrapper<int64_t>(int64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x8000), dpf::xor_wrapper<int64_t>(int64_t(0x0000000000000001)),
dpf::xor_wrapper<int64_t>(int64_t(0x5555555555555555)),
dpf::xor_wrapper<int64_t>(int64_t(0xAAAAAAAAAAAAAAAA)),
dpf::xor_wrapper<int64_t>(int64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xAAAA), dpf::xor_wrapper<int64_t>(int64_t(0x0000000000000001)),
dpf::xor_wrapper<int64_t>(int64_t(0x5555555555555555)),
dpf::xor_wrapper<int64_t>(int64_t(0xAAAAAAAAAAAAAAAA)),
dpf::xor_wrapper<int64_t>(int64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xFFFF), dpf::xor_wrapper<int64_t>(int64_t(0x0000000000000001)),
dpf::xor_wrapper<int64_t>(int64_t(0x5555555555555555)),
dpf::xor_wrapper<int64_t>(int64_t(0xAAAAAAAAAAAAAAAA)),
dpf::xor_wrapper<int64_t>(int64_t(0xFFFFFFFFFFFFFFFF)))
},
{
std::make_tuple(uint16_t(0x0000), dpf::xor_wrapper<uint64_t>(uint64_t(0x0000000000000001)),
dpf::xor_wrapper<uint64_t>(uint64_t(0x5555555555555555)),
dpf::xor_wrapper<uint64_t>(uint64_t(0xAAAAAAAAAAAAAAAA)),
dpf::xor_wrapper<uint64_t>(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x5555), dpf::xor_wrapper<uint64_t>(uint64_t(0x0000000000000001)),
dpf::xor_wrapper<uint64_t>(uint64_t(0x5555555555555555)),
dpf::xor_wrapper<uint64_t>(uint64_t(0xAAAAAAAAAAAAAAAA)),
dpf::xor_wrapper<uint64_t>(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x7FFF), dpf::xor_wrapper<uint64_t>(uint64_t(0x0000000000000001)),
dpf::xor_wrapper<uint64_t>(uint64_t(0x5555555555555555)),
dpf::xor_wrapper<uint64_t>(uint64_t(0xAAAAAAAAAAAAAAAA)),
dpf::xor_wrapper<uint64_t>(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x8000), dpf::xor_wrapper<uint64_t>(uint64_t(0x0000000000000001)),
dpf::xor_wrapper<uint64_t>(uint64_t(0x5555555555555555)),
dpf::xor_wrapper<uint64_t>(uint64_t(0xAAAAAAAAAAAAAAAA)),
dpf::xor_wrapper<uint64_t>(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xAAAA), dpf::xor_wrapper<uint64_t>(uint64_t(0x0000000000000001)),
dpf::xor_wrapper<uint64_t>(uint64_t(0x5555555555555555)),
dpf::xor_wrapper<uint64_t>(uint64_t(0xAAAAAAAAAAAAAAAA)),
dpf::xor_wrapper<uint64_t>(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xFFFF), dpf::xor_wrapper<uint64_t>(uint64_t(0x0000000000000001)),
dpf::xor_wrapper<uint64_t>(uint64_t(0x5555555555555555)),
dpf::xor_wrapper<uint64_t>(uint64_t(0xAAAAAAAAAAAAAAAA)),
dpf::xor_wrapper<uint64_t>(uint64_t(0xFFFFFFFFFFFFFFFF)))
},
{
std::make_tuple(custom_input_type(0x0000), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(custom_input_type(0x5555), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(custom_input_type(0x7FFF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(custom_input_type(0x8000), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(custom_input_type(0xAAAA), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF)),
std::make_tuple(custom_input_type(0xFFFF), uint64_t(0x0000000000000001),
uint64_t(0x5555555555555555),
uint64_t(0xAAAAAAAAAAAAAAAA),
uint64_t(0xFFFFFFFFFFFFFFFF))
},
{
std::make_tuple(uint16_t(0x0000), custom_output_type_small(uint64_t(0x0000000000000001)),
custom_output_type_small(uint64_t(0x5555555555555555)),
custom_output_type_small(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_small(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x5555), custom_output_type_small(uint64_t(0x0000000000000001)),
custom_output_type_small(uint64_t(0x5555555555555555)),
custom_output_type_small(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_small(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_small(uint64_t(0x0000000000000001)),
custom_output_type_small(uint64_t(0x5555555555555555)),
custom_output_type_small(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_small(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x8000), custom_output_type_small(uint64_t(0x0000000000000001)),
custom_output_type_small(uint64_t(0x5555555555555555)),
custom_output_type_small(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_small(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_small(uint64_t(0x0000000000000001)),
custom_output_type_small(uint64_t(0x5555555555555555)),
custom_output_type_small(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_small(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_small(uint64_t(0x0000000000000001)),
custom_output_type_small(uint64_t(0x5555555555555555)),
custom_output_type_small(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_small(uint64_t(0xFFFFFFFFFFFFFFFF)))
},
{
std::make_tuple(uint16_t(0x0000), custom_output_type_large_plus_minus(uint64_t(0x0000000000000001)),
custom_output_type_large_plus_minus(uint64_t(0x5555555555555555)),
custom_output_type_large_plus_minus(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_large_plus_minus(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x5555), custom_output_type_large_plus_minus(uint64_t(0x0000000000000001)),
custom_output_type_large_plus_minus(uint64_t(0x5555555555555555)),
custom_output_type_large_plus_minus(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_large_plus_minus(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_large_plus_minus(uint64_t(0x0000000000000001)),
custom_output_type_large_plus_minus(uint64_t(0x5555555555555555)),
custom_output_type_large_plus_minus(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_large_plus_minus(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x8000), custom_output_type_large_plus_minus(uint64_t(0x0000000000000001)),
custom_output_type_large_plus_minus(uint64_t(0x5555555555555555)),
custom_output_type_large_plus_minus(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_large_plus_minus(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_large_plus_minus(uint64_t(0x0000000000000001)),
custom_output_type_large_plus_minus(uint64_t(0x5555555555555555)),
custom_output_type_large_plus_minus(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_large_plus_minus(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_large_plus_minus(uint64_t(0x0000000000000001)),
custom_output_type_large_plus_minus(uint64_t(0x5555555555555555)),
custom_output_type_large_plus_minus(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_large_plus_minus(uint64_t(0xFFFFFFFFFFFFFFFF)))
},
{
std::make_tuple(uint16_t(0x0000), custom_output_type_large_xor(uint64_t(0x0000000000000001)),
custom_output_type_large_xor(uint64_t(0x5555555555555555)),
custom_output_type_large_xor(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_large_xor(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x5555), custom_output_type_large_xor(uint64_t(0x0000000000000001)),
custom_output_type_large_xor(uint64_t(0x5555555555555555)),
custom_output_type_large_xor(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_large_xor(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x7FFF), custom_output_type_large_xor(uint64_t(0x0000000000000001)),
custom_output_type_large_xor(uint64_t(0x5555555555555555)),
custom_output_type_large_xor(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_large_xor(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0x8000), custom_output_type_large_xor(uint64_t(0x0000000000000001)),
custom_output_type_large_xor(uint64_t(0x5555555555555555)),
custom_output_type_large_xor(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_large_xor(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xAAAA), custom_output_type_large_xor(uint64_t(0x0000000000000001)),
custom_output_type_large_xor(uint64_t(0x5555555555555555)),
custom_output_type_large_xor(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_large_xor(uint64_t(0xFFFFFFFFFFFFFFFF))),
std::make_tuple(uint16_t(0xFFFF), custom_output_type_large_xor(uint64_t(0x0000000000000001)),
custom_output_type_large_xor(uint64_t(0x5555555555555555)),
custom_output_type_large_xor(uint64_t(0xAAAAAAAAAAAAAAAA)),
custom_output_type_large_xor(uint64_t(0xFFFFFFFFFFFFFFFF)))
},
{
std::make_tuple(uint16_t(0x0000), uint32_t(0x00000001),
dpf::xor_wrapper<uint32_t>(uint32_t(0x00000001)),
00000000000000000001_bitstring_8,
00000000000000000000000000000001_bitstring),
std::make_tuple(uint16_t(0x0000), uint32_t(0x55555555),
dpf::xor_wrapper<uint32_t>(uint32_t(0x55555555)),
01010101010101010101_bitstring_8,
01010101010101010101010101010101_bitstring),
std::make_tuple(uint16_t(0x0000), uint32_t(0xAAAAAAAA),
dpf::xor_wrapper<uint32_t>(uint32_t(0xAAAAAAAA)),
10101010101010101010_bitstring_8,
10101010101010101010101010101010_bitstring),
std::make_tuple(uint16_t(0x0000), uint32_t(0xFFFFFFFF),
dpf::xor_wrapper<uint32_t>(uint32_t(0xFFFFFFFF)),
11111111111111111111_bitstring_8,
11111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0x5555), uint32_t(0x00000001),
dpf::xor_wrapper<uint32_t>(uint32_t(0x00000001)),
00000000000000000001_bitstring_8,
00000000000000000000000000000001_bitstring),
std::make_tuple(uint16_t(0x5555), uint32_t(0x55555555),
dpf::xor_wrapper<uint32_t>(uint32_t(0x55555555)),
01010101010101010101_bitstring_8,
01010101010101010101010101010101_bitstring),
std::make_tuple(uint16_t(0x5555), uint32_t(0xAAAAAAAA),
dpf::xor_wrapper<uint32_t>(uint32_t(0xAAAAAAAA)),
10101010101010101010_bitstring_8,
10101010101010101010101010101010_bitstring),
std::make_tuple(uint16_t(0x5555), uint32_t(0xFFFFFFFF),
dpf::xor_wrapper<uint32_t>(uint32_t(0xFFFFFFFF)),
11111111111111111111_bitstring_8,
11111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0x7FFF), uint32_t(0x00000001),
dpf::xor_wrapper<uint32_t>(uint32_t(0x00000001)),
00000000000000000001_bitstring_8,
00000000000000000000000000000001_bitstring),
std::make_tuple(uint16_t(0x7FFF), uint32_t(0x55555555),
dpf::xor_wrapper<uint32_t>(uint32_t(0x55555555)),
01010101010101010101_bitstring_8,
01010101010101010101010101010101_bitstring),
std::make_tuple(uint16_t(0x7FFF), uint32_t(0xAAAAAAAA),
dpf::xor_wrapper<uint32_t>(uint32_t(0xAAAAAAAA)),
10101010101010101010_bitstring_8,
10101010101010101010101010101010_bitstring),
std::make_tuple(uint16_t(0x7FFF), uint32_t(0xFFFFFFFF),
dpf::xor_wrapper<uint32_t>(uint32_t(0xFFFFFFFF)),
11111111111111111111_bitstring_8,
11111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0x8000), uint32_t(0x00000001),
dpf::xor_wrapper<uint32_t>(uint32_t(0x00000001)),
00000000000000000001_bitstring_8,
00000000000000000000000000000001_bitstring),
std::make_tuple(uint16_t(0x8000), uint32_t(0x55555555),
dpf::xor_wrapper<uint32_t>(uint32_t(0x55555555)),
01010101010101010101_bitstring_8,
01010101010101010101010101010101_bitstring),
std::make_tuple(uint16_t(0x8000), uint32_t(0xAAAAAAAA),
dpf::xor_wrapper<uint32_t>(uint32_t(0xAAAAAAAA)),
10101010101010101010_bitstring_8,
10101010101010101010101010101010_bitstring),
std::make_tuple(uint16_t(0x8000), uint32_t(0xFFFFFFFF),
dpf::xor_wrapper<uint32_t>(uint32_t(0xFFFFFFFF)),
11111111111111111111_bitstring_8,
11111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0xAAAA), uint32_t(0x00000001),
dpf::xor_wrapper<uint32_t>(uint32_t(0x00000001)),
00000000000000000001_bitstring_8,
00000000000000000000000000000001_bitstring),
std::make_tuple(uint16_t(0xAAAA), uint32_t(0x55555555),
dpf::xor_wrapper<uint32_t>(uint32_t(0x55555555)),
01010101010101010101_bitstring_8,
01010101010101010101010101010101_bitstring),
std::make_tuple(uint16_t(0xAAAA), uint32_t(0xAAAAAAAA),
dpf::xor_wrapper<uint32_t>(uint32_t(0xAAAAAAAA)),
10101010101010101010_bitstring_8,
10101010101010101010101010101010_bitstring),
std::make_tuple(uint16_t(0xAAAA), uint32_t(0xFFFFFFFF),
dpf::xor_wrapper<uint32_t>(uint32_t(0xFFFFFFFF)),
11111111111111111111_bitstring_8,
11111111111111111111111111111111_bitstring),
std::make_tuple(uint16_t(0xFFFF), uint32_t(0x00000001),
dpf::xor_wrapper<uint32_t>(uint32_t(0x00000001)),
00000000000000000001_bitstring_8,
00000000000000000000000000000001_bitstring),
std::make_tuple(uint16_t(0xFFFF), uint32_t(0x55555555),
dpf::xor_wrapper<uint32_t>(uint32_t(0x55555555)),
01010101010101010101_bitstring_8,
01010101010101010101010101010101_bitstring),
std::make_tuple(uint16_t(0xFFFF), uint32_t(0xAAAAAAAA),
dpf::xor_wrapper<uint32_t>(uint32_t(0xAAAAAAAA)),
10101010101010101010_bitstring_8,
10101010101010101010101010101010_bitstring),
std::make_tuple(uint16_t(0xFFFF), uint32_t(0xFFFFFFFF),
dpf::xor_wrapper<uint32_t>(uint32_t(0xFFFFFFFF)),
11111111111111111111_bitstring_8,
11111111111111111111111111111111_bitstring)
},
};
#endif // LIBDPF_TEST_TESTS_HELPERS_EVAL_COMMON_MULTI_DATA_HPP__