// Licensed under the MIT License. // Copyright David LeBlanc - dcl@dleblanc.net #if defined _MSC_VER // Inline expansion warnings #pragma warning(disable:4710 4711) #endif #include "TestMain.h" #include "TestCase.h" // For the most part, unsigned-unsigned combinations are not going to give us any problems static const TestCase< std::uint64_t, std::uint64_t, OpType::Sub > uint64_uint64[] = { { 0x0000000000000000, 0x0000000000000000, true}, { 0x0000000000000001, 0x0000000000000000, true}, { 0x0000000000000002, 0x0000000000000000, true}, { 0x000000007ffffffe, 0x0000000000000000, true}, { 0x000000007fffffff, 0x0000000000000000, true}, { 0x0000000080000000, 0x0000000000000000, true}, { 0x0000000080000001, 0x0000000000000000, true}, { 0x00000000fffffffe, 0x0000000000000000, true}, { 0x00000000ffffffff, 0x0000000000000000, true}, { 0x0000000100000000, 0x0000000000000000, true}, { 0x0000000200000000, 0x0000000000000000, true}, { 0x7ffffffffffffffe, 0x0000000000000000, true}, { 0x7fffffffffffffff, 0x0000000000000000, true}, { 0x8000000000000000, 0x0000000000000000, true}, { 0x8000000000000001, 0x0000000000000000, true}, { 0xfffffffffffffffe, 0x0000000000000000, true}, { 0xffffffffffffffff, 0x0000000000000000, true}, { 0x0000000000000000, 0x0000000000000001, false}, { 0x0000000000000001, 0x0000000000000001, true}, { 0x0000000000000002, 0x0000000000000001, true}, { 0x000000007ffffffe, 0x0000000000000001, true}, { 0x000000007fffffff, 0x0000000000000001, true}, { 0x0000000080000000, 0x0000000000000001, true}, { 0x0000000080000001, 0x0000000000000001, true}, { 0x00000000fffffffe, 0x0000000000000001, true}, { 0x00000000ffffffff, 0x0000000000000001, true}, { 0x0000000100000000, 0x0000000000000001, true}, { 0x0000000200000000, 0x0000000000000001, true}, { 0x7ffffffffffffffe, 0x0000000000000001, true}, { 0x7fffffffffffffff, 0x0000000000000001, true}, { 0x8000000000000000, 0x0000000000000001, true}, { 0x8000000000000001, 0x0000000000000001, true}, { 0xfffffffffffffffe, 0x0000000000000001, true}, { 0xffffffffffffffff, 0x0000000000000001, true}, { 0x0000000000000000, 0x0000000000000002, false}, { 0x0000000000000001, 0x0000000000000002, false}, { 0x0000000000000002, 0x0000000000000002, true}, { 0x000000007ffffffe, 0x0000000000000002, true}, { 0x000000007fffffff, 0x0000000000000002, true}, { 0x0000000080000000, 0x0000000000000002, true}, { 0x0000000080000001, 0x0000000000000002, true}, { 0x00000000fffffffe, 0x0000000000000002, true}, { 0x00000000ffffffff, 0x0000000000000002, true}, { 0x0000000100000000, 0x0000000000000002, true}, { 0x0000000200000000, 0x0000000000000002, true}, { 0x7ffffffffffffffe, 0x0000000000000002, true}, { 0x7fffffffffffffff, 0x0000000000000002, true}, { 0x8000000000000000, 0x0000000000000002, true}, { 0x8000000000000001, 0x0000000000000002, true}, { 0xfffffffffffffffe, 0x0000000000000002, true}, { 0xffffffffffffffff, 0x0000000000000002, true}, { 0x0000000000000000, 0x000000007ffffffe, false}, { 0x0000000000000001, 0x000000007ffffffe, false}, { 0x0000000000000002, 0x000000007ffffffe, false}, { 0x000000007ffffffe, 0x000000007ffffffe, true}, { 0x000000007fffffff, 0x000000007ffffffe, true}, { 0x0000000080000000, 0x000000007ffffffe, true}, { 0x0000000080000001, 0x000000007ffffffe, true}, { 0x00000000fffffffe, 0x000000007ffffffe, true}, { 0x00000000ffffffff, 0x000000007ffffffe, true}, { 0x0000000100000000, 0x000000007ffffffe, true}, { 0x0000000200000000, 0x000000007ffffffe, true}, { 0x7ffffffffffffffe, 0x000000007ffffffe, true}, { 0x7fffffffffffffff, 0x000000007ffffffe, true}, { 0x8000000000000000, 0x000000007ffffffe, true}, { 0x8000000000000001, 0x000000007ffffffe, true}, { 0xfffffffffffffffe, 0x000000007ffffffe, true}, { 0xffffffffffffffff, 0x000000007ffffffe, true}, { 0x0000000000000000, 0x000000007fffffff, false}, { 0x0000000000000001, 0x000000007fffffff, false}, { 0x0000000000000002, 0x000000007fffffff, false}, { 0x000000007ffffffe, 0x000000007fffffff, false}, { 0x000000007fffffff, 0x000000007fffffff, true}, { 0x0000000080000000, 0x000000007fffffff, true}, { 0x0000000080000001, 0x000000007fffffff, true}, { 0x00000000fffffffe, 0x000000007fffffff, true}, { 0x00000000ffffffff, 0x000000007fffffff, true}, { 0x0000000100000000, 0x000000007fffffff, true}, { 0x0000000200000000, 0x000000007fffffff, true}, { 0x7ffffffffffffffe, 0x000000007fffffff, true}, { 0x7fffffffffffffff, 0x000000007fffffff, true}, { 0x8000000000000000, 0x000000007fffffff, true}, { 0x8000000000000001, 0x000000007fffffff, true}, { 0xfffffffffffffffe, 0x000000007fffffff, true}, { 0xffffffffffffffff, 0x000000007fffffff, true}, { 0x0000000000000000, 0x0000000080000000, false}, { 0x0000000000000001, 0x0000000080000000, false}, { 0x0000000000000002, 0x0000000080000000, false}, { 0x000000007ffffffe, 0x0000000080000000, false}, { 0x000000007fffffff, 0x0000000080000000, false}, { 0x0000000080000000, 0x0000000080000000, true}, { 0x0000000080000001, 0x0000000080000000, true}, { 0x00000000fffffffe, 0x0000000080000000, true}, { 0x00000000ffffffff, 0x0000000080000000, true}, { 0x0000000100000000, 0x0000000080000000, true}, { 0x0000000200000000, 0x0000000080000000, true}, { 0x7ffffffffffffffe, 0x0000000080000000, true}, { 0x7fffffffffffffff, 0x0000000080000000, true}, { 0x8000000000000000, 0x0000000080000000, true}, { 0x8000000000000001, 0x0000000080000000, true}, { 0xfffffffffffffffe, 0x0000000080000000, true}, { 0xffffffffffffffff, 0x0000000080000000, true}, { 0x0000000000000000, 0x0000000080000001, false}, { 0x0000000000000001, 0x0000000080000001, false}, { 0x0000000000000002, 0x0000000080000001, false}, { 0x000000007ffffffe, 0x0000000080000001, false}, { 0x000000007fffffff, 0x0000000080000001, false}, { 0x0000000080000000, 0x0000000080000001, false}, { 0x0000000080000001, 0x0000000080000001, true}, { 0x00000000fffffffe, 0x0000000080000001, true}, { 0x00000000ffffffff, 0x0000000080000001, true}, { 0x0000000100000000, 0x0000000080000001, true}, { 0x0000000200000000, 0x0000000080000001, true}, { 0x7ffffffffffffffe, 0x0000000080000001, true}, { 0x7fffffffffffffff, 0x0000000080000001, true}, { 0x8000000000000000, 0x0000000080000001, true}, { 0x8000000000000001, 0x0000000080000001, true}, { 0xfffffffffffffffe, 0x0000000080000001, true}, { 0xffffffffffffffff, 0x0000000080000001, true}, { 0x0000000000000000, 0x00000000fffffffe, false}, { 0x0000000000000001, 0x00000000fffffffe, false}, { 0x0000000000000002, 0x00000000fffffffe, false}, { 0x000000007ffffffe, 0x00000000fffffffe, false}, { 0x000000007fffffff, 0x00000000fffffffe, false}, { 0x0000000080000000, 0x00000000fffffffe, false}, { 0x0000000080000001, 0x00000000fffffffe, false}, { 0x00000000fffffffe, 0x00000000fffffffe, true}, { 0x00000000ffffffff, 0x00000000fffffffe, true}, { 0x0000000100000000, 0x00000000fffffffe, true}, { 0x0000000200000000, 0x00000000fffffffe, true}, { 0x7ffffffffffffffe, 0x00000000fffffffe, true}, { 0x7fffffffffffffff, 0x00000000fffffffe, true}, { 0x8000000000000000, 0x00000000fffffffe, true}, { 0x8000000000000001, 0x00000000fffffffe, true}, { 0xfffffffffffffffe, 0x00000000fffffffe, true}, { 0xffffffffffffffff, 0x00000000fffffffe, true}, { 0x0000000000000000, 0x00000000ffffffff, false}, { 0x0000000000000001, 0x00000000ffffffff, false}, { 0x0000000000000002, 0x00000000ffffffff, false}, { 0x000000007ffffffe, 0x00000000ffffffff, false}, { 0x000000007fffffff, 0x00000000ffffffff, false}, { 0x0000000080000000, 0x00000000ffffffff, false}, { 0x0000000080000001, 0x00000000ffffffff, false}, { 0x00000000fffffffe, 0x00000000ffffffff, false}, { 0x00000000ffffffff, 0x00000000ffffffff, true}, { 0x0000000100000000, 0x00000000ffffffff, true}, { 0x0000000200000000, 0x00000000ffffffff, true}, { 0x7ffffffffffffffe, 0x00000000ffffffff, true}, { 0x7fffffffffffffff, 0x00000000ffffffff, true}, { 0x8000000000000000, 0x00000000ffffffff, true}, { 0x8000000000000001, 0x00000000ffffffff, true}, { 0xfffffffffffffffe, 0x00000000ffffffff, true}, { 0xffffffffffffffff, 0x00000000ffffffff, true}, { 0x0000000000000000, 0x0000000100000000, false}, { 0x0000000000000001, 0x0000000100000000, false}, { 0x0000000000000002, 0x0000000100000000, false}, { 0x000000007ffffffe, 0x0000000100000000, false}, { 0x000000007fffffff, 0x0000000100000000, false}, { 0x0000000080000000, 0x0000000100000000, false}, { 0x0000000080000001, 0x0000000100000000, false}, { 0x00000000fffffffe, 0x0000000100000000, false}, { 0x00000000ffffffff, 0x0000000100000000, false}, { 0x0000000100000000, 0x0000000100000000, true}, { 0x0000000200000000, 0x0000000100000000, true}, { 0x7ffffffffffffffe, 0x0000000100000000, true}, { 0x7fffffffffffffff, 0x0000000100000000, true}, { 0x8000000000000000, 0x0000000100000000, true}, { 0x8000000000000001, 0x0000000100000000, true}, { 0xfffffffffffffffe, 0x0000000100000000, true}, { 0xffffffffffffffff, 0x0000000100000000, true}, { 0x0000000000000000, 0x0000000200000000, false}, { 0x0000000000000001, 0x0000000200000000, false}, { 0x0000000000000002, 0x0000000200000000, false}, { 0x000000007ffffffe, 0x0000000200000000, false}, { 0x000000007fffffff, 0x0000000200000000, false}, { 0x0000000080000000, 0x0000000200000000, false}, { 0x0000000080000001, 0x0000000200000000, false}, { 0x00000000fffffffe, 0x0000000200000000, false}, { 0x00000000ffffffff, 0x0000000200000000, false}, { 0x0000000100000000, 0x0000000200000000, false}, { 0x0000000200000000, 0x0000000200000000, true}, { 0x7ffffffffffffffe, 0x0000000200000000, true}, { 0x7fffffffffffffff, 0x0000000200000000, true}, { 0x8000000000000000, 0x0000000200000000, true}, { 0x8000000000000001, 0x0000000200000000, true}, { 0xfffffffffffffffe, 0x0000000200000000, true}, { 0xffffffffffffffff, 0x0000000200000000, true}, { 0x0000000000000000, 0x7ffffffffffffffe, false}, { 0x0000000000000001, 0x7ffffffffffffffe, false}, { 0x0000000000000002, 0x7ffffffffffffffe, false}, { 0x000000007ffffffe, 0x7ffffffffffffffe, false}, { 0x000000007fffffff, 0x7ffffffffffffffe, false}, { 0x0000000080000000, 0x7ffffffffffffffe, false}, { 0x0000000080000001, 0x7ffffffffffffffe, false}, { 0x00000000fffffffe, 0x7ffffffffffffffe, false}, { 0x00000000ffffffff, 0x7ffffffffffffffe, false}, { 0x0000000100000000, 0x7ffffffffffffffe, false}, { 0x0000000200000000, 0x7ffffffffffffffe, false}, { 0x7ffffffffffffffe, 0x7ffffffffffffffe, true}, { 0x7fffffffffffffff, 0x7ffffffffffffffe, true}, { 0x8000000000000000, 0x7ffffffffffffffe, true}, { 0x8000000000000001, 0x7ffffffffffffffe, true}, { 0xfffffffffffffffe, 0x7ffffffffffffffe, true}, { 0xffffffffffffffff, 0x7ffffffffffffffe, true}, { 0x0000000000000000, 0x7fffffffffffffff, false}, { 0x0000000000000001, 0x7fffffffffffffff, false}, { 0x0000000000000002, 0x7fffffffffffffff, false}, { 0x000000007ffffffe, 0x7fffffffffffffff, false}, { 0x000000007fffffff, 0x7fffffffffffffff, false}, { 0x0000000080000000, 0x7fffffffffffffff, false}, { 0x0000000080000001, 0x7fffffffffffffff, false}, { 0x00000000fffffffe, 0x7fffffffffffffff, false}, { 0x00000000ffffffff, 0x7fffffffffffffff, false}, { 0x0000000100000000, 0x7fffffffffffffff, false}, { 0x0000000200000000, 0x7fffffffffffffff, false}, { 0x7ffffffffffffffe, 0x7fffffffffffffff, false}, { 0x7fffffffffffffff, 0x7fffffffffffffff, true}, { 0x8000000000000000, 0x7fffffffffffffff, true}, { 0x8000000000000001, 0x7fffffffffffffff, true}, { 0xfffffffffffffffe, 0x7fffffffffffffff, true}, { 0xffffffffffffffff, 0x7fffffffffffffff, true}, { 0x0000000000000000, 0x8000000000000000, false}, { 0x0000000000000001, 0x8000000000000000, false}, { 0x0000000000000002, 0x8000000000000000, false}, { 0x000000007ffffffe, 0x8000000000000000, false}, { 0x000000007fffffff, 0x8000000000000000, false}, { 0x0000000080000000, 0x8000000000000000, false}, { 0x0000000080000001, 0x8000000000000000, false}, { 0x00000000fffffffe, 0x8000000000000000, false}, { 0x00000000ffffffff, 0x8000000000000000, false}, { 0x0000000100000000, 0x8000000000000000, false}, { 0x0000000200000000, 0x8000000000000000, false}, { 0x7ffffffffffffffe, 0x8000000000000000, false}, { 0x7fffffffffffffff, 0x8000000000000000, false}, { 0x8000000000000000, 0x8000000000000000, true}, { 0x8000000000000001, 0x8000000000000000, true}, { 0xfffffffffffffffe, 0x8000000000000000, true}, { 0xffffffffffffffff, 0x8000000000000000, true}, { 0x0000000000000000, 0x8000000000000001, false}, { 0x0000000000000001, 0x8000000000000001, false}, { 0x0000000000000002, 0x8000000000000001, false}, { 0x000000007ffffffe, 0x8000000000000001, false}, { 0x000000007fffffff, 0x8000000000000001, false}, { 0x0000000080000000, 0x8000000000000001, false}, { 0x0000000080000001, 0x8000000000000001, false}, { 0x00000000fffffffe, 0x8000000000000001, false}, { 0x00000000ffffffff, 0x8000000000000001, false}, { 0x0000000100000000, 0x8000000000000001, false}, { 0x0000000200000000, 0x8000000000000001, false}, { 0x7ffffffffffffffe, 0x8000000000000001, false}, { 0x7fffffffffffffff, 0x8000000000000001, false}, { 0x8000000000000000, 0x8000000000000001, false}, { 0x8000000000000001, 0x8000000000000001, true}, { 0xfffffffffffffffe, 0x8000000000000001, true}, { 0xffffffffffffffff, 0x8000000000000001, true}, { 0x0000000000000000, 0xfffffffffffffffe, false}, { 0x0000000000000001, 0xfffffffffffffffe, false}, { 0x0000000000000002, 0xfffffffffffffffe, false}, { 0x000000007ffffffe, 0xfffffffffffffffe, false}, { 0x000000007fffffff, 0xfffffffffffffffe, false}, { 0x0000000080000000, 0xfffffffffffffffe, false}, { 0x0000000080000001, 0xfffffffffffffffe, false}, { 0x00000000fffffffe, 0xfffffffffffffffe, false}, { 0x00000000ffffffff, 0xfffffffffffffffe, false}, { 0x0000000100000000, 0xfffffffffffffffe, false}, { 0x0000000200000000, 0xfffffffffffffffe, false}, { 0x7ffffffffffffffe, 0xfffffffffffffffe, false}, { 0x7fffffffffffffff, 0xfffffffffffffffe, false}, { 0x8000000000000000, 0xfffffffffffffffe, false}, { 0x8000000000000001, 0xfffffffffffffffe, false}, { 0xfffffffffffffffe, 0xfffffffffffffffe, true}, { 0xffffffffffffffff, 0xfffffffffffffffe, true}, { 0x0000000000000000, 0xffffffffffffffff, false}, { 0x0000000000000001, 0xffffffffffffffff, false}, { 0x0000000000000002, 0xffffffffffffffff, false}, { 0x000000007ffffffe, 0xffffffffffffffff, false}, { 0x000000007fffffff, 0xffffffffffffffff, false}, { 0x0000000080000000, 0xffffffffffffffff, false}, { 0x0000000080000001, 0xffffffffffffffff, false}, { 0x00000000fffffffe, 0xffffffffffffffff, false}, { 0x00000000ffffffff, 0xffffffffffffffff, false}, { 0x0000000100000000, 0xffffffffffffffff, false}, { 0x0000000200000000, 0xffffffffffffffff, false}, { 0x7ffffffffffffffe, 0xffffffffffffffff, false}, { 0x7fffffffffffffff, 0xffffffffffffffff, false}, { 0x8000000000000000, 0xffffffffffffffff, false}, { 0x8000000000000001, 0xffffffffffffffff, false}, { 0xfffffffffffffffe, 0xffffffffffffffff, false}, { 0xffffffffffffffff, 0xffffffffffffffff, true}, }; template<> TestVector< std::uint64_t, std::uint64_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint64_uint64; this->count = COUNTOF(uint64_uint64); } static const TestCase< std::uint32_t, std::uint64_t, OpType::Sub > uint32_uint64[] = { { 0x00000000, 0x0000000000000000, true}, { 0x00000001, 0x0000000000000000, true}, { 0x00000002, 0x0000000000000000, true}, { 0x7ffffffe, 0x0000000000000000, true}, { 0x7fffffff, 0x0000000000000000, true}, { 0x80000000, 0x0000000000000000, true}, { 0x80000001, 0x0000000000000000, true}, { 0xfffffffe, 0x0000000000000000, true}, { 0xffffffff, 0x0000000000000000, true}, { 0x00000000, 0x0000000000000001, false}, { 0x00000001, 0x0000000000000001, true}, { 0x00000002, 0x0000000000000001, true}, { 0x7ffffffe, 0x0000000000000001, true}, { 0x7fffffff, 0x0000000000000001, true}, { 0x80000000, 0x0000000000000001, true}, { 0x80000001, 0x0000000000000001, true}, { 0xfffffffe, 0x0000000000000001, true}, { 0xffffffff, 0x0000000000000001, true}, { 0x00000000, 0x0000000000000002, false}, { 0x00000001, 0x0000000000000002, false}, { 0x00000002, 0x0000000000000002, true}, { 0x7ffffffe, 0x0000000000000002, true}, { 0x7fffffff, 0x0000000000000002, true}, { 0x80000000, 0x0000000000000002, true}, { 0x80000001, 0x0000000000000002, true}, { 0xfffffffe, 0x0000000000000002, true}, { 0xffffffff, 0x0000000000000002, true}, { 0x00000000, 0x000000007ffffffe, false}, { 0x00000001, 0x000000007ffffffe, false}, { 0x00000002, 0x000000007ffffffe, false}, { 0x7ffffffe, 0x000000007ffffffe, true}, { 0x7fffffff, 0x000000007ffffffe, true}, { 0x80000000, 0x000000007ffffffe, true}, { 0x80000001, 0x000000007ffffffe, true}, { 0xfffffffe, 0x000000007ffffffe, true}, { 0xffffffff, 0x000000007ffffffe, true}, { 0x00000000, 0x000000007fffffff, false}, { 0x00000001, 0x000000007fffffff, false}, { 0x00000002, 0x000000007fffffff, false}, { 0x7ffffffe, 0x000000007fffffff, false}, { 0x7fffffff, 0x000000007fffffff, true}, { 0x80000000, 0x000000007fffffff, true}, { 0x80000001, 0x000000007fffffff, true}, { 0xfffffffe, 0x000000007fffffff, true}, { 0xffffffff, 0x000000007fffffff, true}, { 0x00000000, 0x0000000080000000, false}, { 0x00000001, 0x0000000080000000, false}, { 0x00000002, 0x0000000080000000, false}, { 0x7ffffffe, 0x0000000080000000, false}, { 0x7fffffff, 0x0000000080000000, false}, { 0x80000000, 0x0000000080000000, true}, { 0x80000001, 0x0000000080000000, true}, { 0xfffffffe, 0x0000000080000000, true}, { 0xffffffff, 0x0000000080000000, true}, { 0x00000000, 0x0000000080000001, false}, { 0x00000001, 0x0000000080000001, false}, { 0x00000002, 0x0000000080000001, false}, { 0x7ffffffe, 0x0000000080000001, false}, { 0x7fffffff, 0x0000000080000001, false}, { 0x80000000, 0x0000000080000001, false}, { 0x80000001, 0x0000000080000001, true}, { 0xfffffffe, 0x0000000080000001, true}, { 0xffffffff, 0x0000000080000001, true}, { 0x00000000, 0x00000000fffffffe, false}, { 0x00000001, 0x00000000fffffffe, false}, { 0x00000002, 0x00000000fffffffe, false}, { 0x7ffffffe, 0x00000000fffffffe, false}, { 0x7fffffff, 0x00000000fffffffe, false}, { 0x80000000, 0x00000000fffffffe, false}, { 0x80000001, 0x00000000fffffffe, false}, { 0xfffffffe, 0x00000000fffffffe, true}, { 0xffffffff, 0x00000000fffffffe, true}, { 0x00000000, 0x00000000ffffffff, false}, { 0x00000001, 0x00000000ffffffff, false}, { 0x00000002, 0x00000000ffffffff, false}, { 0x7ffffffe, 0x00000000ffffffff, false}, { 0x7fffffff, 0x00000000ffffffff, false}, { 0x80000000, 0x00000000ffffffff, false}, { 0x80000001, 0x00000000ffffffff, false}, { 0xfffffffe, 0x00000000ffffffff, false}, { 0xffffffff, 0x00000000ffffffff, true}, { 0x00000000, 0x0000000100000000, false}, { 0x00000001, 0x0000000100000000, false}, { 0x00000002, 0x0000000100000000, false}, { 0x7ffffffe, 0x0000000100000000, false}, { 0x7fffffff, 0x0000000100000000, false}, { 0x80000000, 0x0000000100000000, false}, { 0x80000001, 0x0000000100000000, false}, { 0xfffffffe, 0x0000000100000000, false}, { 0xffffffff, 0x0000000100000000, false}, { 0x00000000, 0x0000000200000000, false}, { 0x00000001, 0x0000000200000000, false}, { 0x00000002, 0x0000000200000000, false}, { 0x7ffffffe, 0x0000000200000000, false}, { 0x7fffffff, 0x0000000200000000, false}, { 0x80000000, 0x0000000200000000, false}, { 0x80000001, 0x0000000200000000, false}, { 0xfffffffe, 0x0000000200000000, false}, { 0xffffffff, 0x0000000200000000, false}, { 0x00000000, 0x7ffffffffffffffe, false}, { 0x00000001, 0x7ffffffffffffffe, false}, { 0x00000002, 0x7ffffffffffffffe, false}, { 0x7ffffffe, 0x7ffffffffffffffe, false}, { 0x7fffffff, 0x7ffffffffffffffe, false}, { 0x80000000, 0x7ffffffffffffffe, false}, { 0x80000001, 0x7ffffffffffffffe, false}, { 0xfffffffe, 0x7ffffffffffffffe, false}, { 0xffffffff, 0x7ffffffffffffffe, false}, { 0x00000000, 0x7fffffffffffffff, false}, { 0x00000001, 0x7fffffffffffffff, false}, { 0x00000002, 0x7fffffffffffffff, false}, { 0x7ffffffe, 0x7fffffffffffffff, false}, { 0x7fffffff, 0x7fffffffffffffff, false}, { 0x80000000, 0x7fffffffffffffff, false}, { 0x80000001, 0x7fffffffffffffff, false}, { 0xfffffffe, 0x7fffffffffffffff, false}, { 0xffffffff, 0x7fffffffffffffff, false}, { 0x00000000, 0x8000000000000000, false}, { 0x00000001, 0x8000000000000000, false}, { 0x00000002, 0x8000000000000000, false}, { 0x7ffffffe, 0x8000000000000000, false}, { 0x7fffffff, 0x8000000000000000, false}, { 0x80000000, 0x8000000000000000, false}, { 0x80000001, 0x8000000000000000, false}, { 0xfffffffe, 0x8000000000000000, false}, { 0xffffffff, 0x8000000000000000, false}, { 0x00000000, 0x8000000000000001, false}, { 0x00000001, 0x8000000000000001, false}, { 0x00000002, 0x8000000000000001, false}, { 0x7ffffffe, 0x8000000000000001, false}, { 0x7fffffff, 0x8000000000000001, false}, { 0x80000000, 0x8000000000000001, false}, { 0x80000001, 0x8000000000000001, false}, { 0xfffffffe, 0x8000000000000001, false}, { 0xffffffff, 0x8000000000000001, false}, { 0x00000000, 0xfffffffffffffffe, false}, { 0x00000001, 0xfffffffffffffffe, false}, { 0x00000002, 0xfffffffffffffffe, false}, { 0x7ffffffe, 0xfffffffffffffffe, false}, { 0x7fffffff, 0xfffffffffffffffe, false}, { 0x80000000, 0xfffffffffffffffe, false}, { 0x80000001, 0xfffffffffffffffe, false}, { 0xfffffffe, 0xfffffffffffffffe, false}, { 0xffffffff, 0xfffffffffffffffe, false}, { 0x00000000, 0xffffffffffffffff, false}, { 0x00000001, 0xffffffffffffffff, false}, { 0x00000002, 0xffffffffffffffff, false}, { 0x7ffffffe, 0xffffffffffffffff, false}, { 0x7fffffff, 0xffffffffffffffff, false}, { 0x80000000, 0xffffffffffffffff, false}, { 0x80000001, 0xffffffffffffffff, false}, { 0xfffffffe, 0xffffffffffffffff, false}, { 0xffffffff, 0xffffffffffffffff, false}, }; template<> TestVector< std::uint32_t, std::uint64_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint32_uint64; this->count = COUNTOF(uint32_uint64); } static const TestCase< std::uint32_t, std::uint32_t, OpType::Sub > uint32_uint32[] = { { 0x00000000, 0x00000000, true}, { 0x00000001, 0x00000000, true}, { 0x00000002, 0x00000000, true}, { 0x7ffffffe, 0x00000000, true}, { 0x7fffffff, 0x00000000, true}, { 0x80000000, 0x00000000, true}, { 0x80000001, 0x00000000, true}, { 0xfffffffe, 0x00000000, true}, { 0xffffffff, 0x00000000, true}, { 0x00000000, 0x00000001, false}, { 0x00000001, 0x00000001, true}, { 0x00000002, 0x00000001, true}, { 0x7ffffffe, 0x00000001, true}, { 0x7fffffff, 0x00000001, true}, { 0x80000000, 0x00000001, true}, { 0x80000001, 0x00000001, true}, { 0xfffffffe, 0x00000001, true}, { 0xffffffff, 0x00000001, true}, { 0x00000000, 0x00000002, false}, { 0x00000001, 0x00000002, false}, { 0x00000002, 0x00000002, true}, { 0x7ffffffe, 0x00000002, true}, { 0x7fffffff, 0x00000002, true}, { 0x80000000, 0x00000002, true}, { 0x80000001, 0x00000002, true}, { 0xfffffffe, 0x00000002, true}, { 0xffffffff, 0x00000002, true}, { 0x00000000, 0x7ffffffe, false}, { 0x00000001, 0x7ffffffe, false}, { 0x00000002, 0x7ffffffe, false}, { 0x7ffffffe, 0x7ffffffe, true}, { 0x7fffffff, 0x7ffffffe, true}, { 0x80000000, 0x7ffffffe, true}, { 0x80000001, 0x7ffffffe, true}, { 0xfffffffe, 0x7ffffffe, true}, { 0xffffffff, 0x7ffffffe, true}, { 0x00000000, 0x7fffffff, false}, { 0x00000001, 0x7fffffff, false}, { 0x00000002, 0x7fffffff, false}, { 0x7ffffffe, 0x7fffffff, false}, { 0x7fffffff, 0x7fffffff, true}, { 0x80000000, 0x7fffffff, true}, { 0x80000001, 0x7fffffff, true}, { 0xfffffffe, 0x7fffffff, true}, { 0xffffffff, 0x7fffffff, true}, { 0x00000000, 0x80000000, false}, { 0x00000001, 0x80000000, false}, { 0x00000002, 0x80000000, false}, { 0x7ffffffe, 0x80000000, false}, { 0x7fffffff, 0x80000000, false}, { 0x80000000, 0x80000000, true}, { 0x80000001, 0x80000000, true}, { 0xfffffffe, 0x80000000, true}, { 0xffffffff, 0x80000000, true}, { 0x00000000, 0x80000001, false}, { 0x00000001, 0x80000001, false}, { 0x00000002, 0x80000001, false}, { 0x7ffffffe, 0x80000001, false}, { 0x7fffffff, 0x80000001, false}, { 0x80000000, 0x80000001, false}, { 0x80000001, 0x80000001, true}, { 0xfffffffe, 0x80000001, true}, { 0xffffffff, 0x80000001, true}, { 0x00000000, 0xfffffffe, false}, { 0x00000001, 0xfffffffe, false}, { 0x00000002, 0xfffffffe, false}, { 0x7ffffffe, 0xfffffffe, false}, { 0x7fffffff, 0xfffffffe, false}, { 0x80000000, 0xfffffffe, false}, { 0x80000001, 0xfffffffe, false}, { 0xfffffffe, 0xfffffffe, true}, { 0xffffffff, 0xfffffffe, true}, { 0x00000000, 0xffffffff, false}, { 0x00000001, 0xffffffff, false}, { 0x00000002, 0xffffffff, false}, { 0x7ffffffe, 0xffffffff, false}, { 0x7fffffff, 0xffffffff, false}, { 0x80000000, 0xffffffff, false}, { 0x80000001, 0xffffffff, false}, { 0xfffffffe, 0xffffffff, false}, { 0xffffffff, 0xffffffff, true}, }; template<> TestVector< std::uint32_t, std::uint32_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint32_uint32; this->count = COUNTOF(uint32_uint32); } static const TestCase< std::uint64_t, std::uint32_t, OpType::Sub > uint64_uint32[] = { { 0x0000000000000000, 0x00000000, true}, { 0x0000000000000001, 0x00000000, true}, { 0x0000000000000002, 0x00000000, true}, { 0x000000007ffffffe, 0x00000000, true}, { 0x000000007fffffff, 0x00000000, true}, { 0x0000000080000000, 0x00000000, true}, { 0x0000000080000001, 0x00000000, true}, { 0x00000000fffffffe, 0x00000000, true}, { 0x00000000ffffffff, 0x00000000, true}, { 0x0000000100000000, 0x00000000, true}, { 0x0000000200000000, 0x00000000, true}, { 0x7ffffffffffffffe, 0x00000000, true}, { 0x7fffffffffffffff, 0x00000000, true}, { 0x8000000000000000, 0x00000000, true}, { 0x8000000000000001, 0x00000000, true}, { 0xfffffffffffffffe, 0x00000000, true}, { 0xffffffffffffffff, 0x00000000, true}, { 0x0000000000000000, 0x00000001, false}, { 0x0000000000000001, 0x00000001, true}, { 0x0000000000000002, 0x00000001, true}, { 0x000000007ffffffe, 0x00000001, true}, { 0x000000007fffffff, 0x00000001, true}, { 0x0000000080000000, 0x00000001, true}, { 0x0000000080000001, 0x00000001, true}, { 0x00000000fffffffe, 0x00000001, true}, { 0x00000000ffffffff, 0x00000001, true}, { 0x0000000100000000, 0x00000001, true}, { 0x0000000200000000, 0x00000001, true}, { 0x7ffffffffffffffe, 0x00000001, true}, { 0x7fffffffffffffff, 0x00000001, true}, { 0x8000000000000000, 0x00000001, true}, { 0x8000000000000001, 0x00000001, true}, { 0xfffffffffffffffe, 0x00000001, true}, { 0xffffffffffffffff, 0x00000001, true}, { 0x0000000000000000, 0x00000002, false}, { 0x0000000000000001, 0x00000002, false}, { 0x0000000000000002, 0x00000002, true}, { 0x000000007ffffffe, 0x00000002, true}, { 0x000000007fffffff, 0x00000002, true}, { 0x0000000080000000, 0x00000002, true}, { 0x0000000080000001, 0x00000002, true}, { 0x00000000fffffffe, 0x00000002, true}, { 0x00000000ffffffff, 0x00000002, true}, { 0x0000000100000000, 0x00000002, true}, { 0x0000000200000000, 0x00000002, true}, { 0x7ffffffffffffffe, 0x00000002, true}, { 0x7fffffffffffffff, 0x00000002, true}, { 0x8000000000000000, 0x00000002, true}, { 0x8000000000000001, 0x00000002, true}, { 0xfffffffffffffffe, 0x00000002, true}, { 0xffffffffffffffff, 0x00000002, true}, { 0x0000000000000000, 0x7ffffffe, false}, { 0x0000000000000001, 0x7ffffffe, false}, { 0x0000000000000002, 0x7ffffffe, false}, { 0x000000007ffffffe, 0x7ffffffe, true}, { 0x000000007fffffff, 0x7ffffffe, true}, { 0x0000000080000000, 0x7ffffffe, true}, { 0x0000000080000001, 0x7ffffffe, true}, { 0x00000000fffffffe, 0x7ffffffe, true}, { 0x00000000ffffffff, 0x7ffffffe, true}, { 0x0000000100000000, 0x7ffffffe, true}, { 0x0000000200000000, 0x7ffffffe, true}, { 0x7ffffffffffffffe, 0x7ffffffe, true}, { 0x7fffffffffffffff, 0x7ffffffe, true}, { 0x8000000000000000, 0x7ffffffe, true}, { 0x8000000000000001, 0x7ffffffe, true}, { 0xfffffffffffffffe, 0x7ffffffe, true}, { 0xffffffffffffffff, 0x7ffffffe, true}, { 0x0000000000000000, 0x7fffffff, false}, { 0x0000000000000001, 0x7fffffff, false}, { 0x0000000000000002, 0x7fffffff, false}, { 0x000000007ffffffe, 0x7fffffff, false}, { 0x000000007fffffff, 0x7fffffff, true}, { 0x0000000080000000, 0x7fffffff, true}, { 0x0000000080000001, 0x7fffffff, true}, { 0x00000000fffffffe, 0x7fffffff, true}, { 0x00000000ffffffff, 0x7fffffff, true}, { 0x0000000100000000, 0x7fffffff, true}, { 0x0000000200000000, 0x7fffffff, true}, { 0x7ffffffffffffffe, 0x7fffffff, true}, { 0x7fffffffffffffff, 0x7fffffff, true}, { 0x8000000000000000, 0x7fffffff, true}, { 0x8000000000000001, 0x7fffffff, true}, { 0xfffffffffffffffe, 0x7fffffff, true}, { 0xffffffffffffffff, 0x7fffffff, true}, { 0x0000000000000000, 0x80000000, false}, { 0x0000000000000001, 0x80000000, false}, { 0x0000000000000002, 0x80000000, false}, { 0x000000007ffffffe, 0x80000000, false}, { 0x000000007fffffff, 0x80000000, false}, { 0x0000000080000000, 0x80000000, true}, { 0x0000000080000001, 0x80000000, true}, { 0x00000000fffffffe, 0x80000000, true}, { 0x00000000ffffffff, 0x80000000, true}, { 0x0000000100000000, 0x80000000, true}, { 0x0000000200000000, 0x80000000, true}, { 0x7ffffffffffffffe, 0x80000000, true}, { 0x7fffffffffffffff, 0x80000000, true}, { 0x8000000000000000, 0x80000000, true}, { 0x8000000000000001, 0x80000000, true}, { 0xfffffffffffffffe, 0x80000000, true}, { 0xffffffffffffffff, 0x80000000, true}, { 0x0000000000000000, 0x80000001, false}, { 0x0000000000000001, 0x80000001, false}, { 0x0000000000000002, 0x80000001, false}, { 0x000000007ffffffe, 0x80000001, false}, { 0x000000007fffffff, 0x80000001, false}, { 0x0000000080000000, 0x80000001, false}, { 0x0000000080000001, 0x80000001, true}, { 0x00000000fffffffe, 0x80000001, true}, { 0x00000000ffffffff, 0x80000001, true}, { 0x0000000100000000, 0x80000001, true}, { 0x0000000200000000, 0x80000001, true}, { 0x7ffffffffffffffe, 0x80000001, true}, { 0x7fffffffffffffff, 0x80000001, true}, { 0x8000000000000000, 0x80000001, true}, { 0x8000000000000001, 0x80000001, true}, { 0xfffffffffffffffe, 0x80000001, true}, { 0xffffffffffffffff, 0x80000001, true}, { 0x0000000000000000, 0xfffffffe, false}, { 0x0000000000000001, 0xfffffffe, false}, { 0x0000000000000002, 0xfffffffe, false}, { 0x000000007ffffffe, 0xfffffffe, false}, { 0x000000007fffffff, 0xfffffffe, false}, { 0x0000000080000000, 0xfffffffe, false}, { 0x0000000080000001, 0xfffffffe, false}, { 0x00000000fffffffe, 0xfffffffe, true}, { 0x00000000ffffffff, 0xfffffffe, true}, { 0x0000000100000000, 0xfffffffe, true}, { 0x0000000200000000, 0xfffffffe, true}, { 0x7ffffffffffffffe, 0xfffffffe, true}, { 0x7fffffffffffffff, 0xfffffffe, true}, { 0x8000000000000000, 0xfffffffe, true}, { 0x8000000000000001, 0xfffffffe, true}, { 0xfffffffffffffffe, 0xfffffffe, true}, { 0xffffffffffffffff, 0xfffffffe, true}, { 0x0000000000000000, 0xffffffff, false}, { 0x0000000000000001, 0xffffffff, false}, { 0x0000000000000002, 0xffffffff, false}, { 0x000000007ffffffe, 0xffffffff, false}, { 0x000000007fffffff, 0xffffffff, false}, { 0x0000000080000000, 0xffffffff, false}, { 0x0000000080000001, 0xffffffff, false}, { 0x00000000fffffffe, 0xffffffff, false}, { 0x00000000ffffffff, 0xffffffff, true}, { 0x0000000100000000, 0xffffffff, true}, { 0x0000000200000000, 0xffffffff, true}, { 0x7ffffffffffffffe, 0xffffffff, true}, { 0x7fffffffffffffff, 0xffffffff, true}, { 0x8000000000000000, 0xffffffff, true}, { 0x8000000000000001, 0xffffffff, true}, { 0xfffffffffffffffe, 0xffffffff, true}, { 0xffffffffffffffff, 0xffffffff, true}, }; template<> TestVector< std::uint64_t, std::uint32_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint64_uint32; this->count = COUNTOF(uint64_uint32); } static const TestCase< std::uint64_t, std::uint16_t, OpType::Sub > uint64_uint16[] = { { 0x0000000000000000, 0x0000, true}, { 0x0000000000000001, 0x0000, true}, { 0x0000000000000002, 0x0000, true}, { 0x000000007ffffffe, 0x0000, true}, { 0x000000007fffffff, 0x0000, true}, { 0x0000000080000000, 0x0000, true}, { 0x0000000080000001, 0x0000, true}, { 0x00000000fffffffe, 0x0000, true}, { 0x00000000ffffffff, 0x0000, true}, { 0x0000000100000000, 0x0000, true}, { 0x0000000200000000, 0x0000, true}, { 0x7ffffffffffffffe, 0x0000, true}, { 0x7fffffffffffffff, 0x0000, true}, { 0x8000000000000000, 0x0000, true}, { 0x8000000000000001, 0x0000, true}, { 0xfffffffffffffffe, 0x0000, true}, { 0xffffffffffffffff, 0x0000, true}, { 0x0000000000000000, 0x0001, false}, { 0x0000000000000001, 0x0001, true}, { 0x0000000000000002, 0x0001, true}, { 0x000000007ffffffe, 0x0001, true}, { 0x000000007fffffff, 0x0001, true}, { 0x0000000080000000, 0x0001, true}, { 0x0000000080000001, 0x0001, true}, { 0x00000000fffffffe, 0x0001, true}, { 0x00000000ffffffff, 0x0001, true}, { 0x0000000100000000, 0x0001, true}, { 0x0000000200000000, 0x0001, true}, { 0x7ffffffffffffffe, 0x0001, true}, { 0x7fffffffffffffff, 0x0001, true}, { 0x8000000000000000, 0x0001, true}, { 0x8000000000000001, 0x0001, true}, { 0xfffffffffffffffe, 0x0001, true}, { 0xffffffffffffffff, 0x0001, true}, { 0x0000000000000000, 0x0002, false}, { 0x0000000000000001, 0x0002, false}, { 0x0000000000000002, 0x0002, true}, { 0x000000007ffffffe, 0x0002, true}, { 0x000000007fffffff, 0x0002, true}, { 0x0000000080000000, 0x0002, true}, { 0x0000000080000001, 0x0002, true}, { 0x00000000fffffffe, 0x0002, true}, { 0x00000000ffffffff, 0x0002, true}, { 0x0000000100000000, 0x0002, true}, { 0x0000000200000000, 0x0002, true}, { 0x7ffffffffffffffe, 0x0002, true}, { 0x7fffffffffffffff, 0x0002, true}, { 0x8000000000000000, 0x0002, true}, { 0x8000000000000001, 0x0002, true}, { 0xfffffffffffffffe, 0x0002, true}, { 0xffffffffffffffff, 0x0002, true}, { 0x0000000000000000, 0x7ffe, false}, { 0x0000000000000001, 0x7ffe, false}, { 0x0000000000000002, 0x7ffe, false}, { 0x000000007ffffffe, 0x7ffe, true}, { 0x000000007fffffff, 0x7ffe, true}, { 0x0000000080000000, 0x7ffe, true}, { 0x0000000080000001, 0x7ffe, true}, { 0x00000000fffffffe, 0x7ffe, true}, { 0x00000000ffffffff, 0x7ffe, true}, { 0x0000000100000000, 0x7ffe, true}, { 0x0000000200000000, 0x7ffe, true}, { 0x7ffffffffffffffe, 0x7ffe, true}, { 0x7fffffffffffffff, 0x7ffe, true}, { 0x8000000000000000, 0x7ffe, true}, { 0x8000000000000001, 0x7ffe, true}, { 0xfffffffffffffffe, 0x7ffe, true}, { 0xffffffffffffffff, 0x7ffe, true}, { 0x0000000000000000, 0x7fff, false}, { 0x0000000000000001, 0x7fff, false}, { 0x0000000000000002, 0x7fff, false}, { 0x000000007ffffffe, 0x7fff, true}, { 0x000000007fffffff, 0x7fff, true}, { 0x0000000080000000, 0x7fff, true}, { 0x0000000080000001, 0x7fff, true}, { 0x00000000fffffffe, 0x7fff, true}, { 0x00000000ffffffff, 0x7fff, true}, { 0x0000000100000000, 0x7fff, true}, { 0x0000000200000000, 0x7fff, true}, { 0x7ffffffffffffffe, 0x7fff, true}, { 0x7fffffffffffffff, 0x7fff, true}, { 0x8000000000000000, 0x7fff, true}, { 0x8000000000000001, 0x7fff, true}, { 0xfffffffffffffffe, 0x7fff, true}, { 0xffffffffffffffff, 0x7fff, true}, { 0x0000000000000000, 0x8000, false}, { 0x0000000000000001, 0x8000, false}, { 0x0000000000000002, 0x8000, false}, { 0x000000007ffffffe, 0x8000, true}, { 0x000000007fffffff, 0x8000, true}, { 0x0000000080000000, 0x8000, true}, { 0x0000000080000001, 0x8000, true}, { 0x00000000fffffffe, 0x8000, true}, { 0x00000000ffffffff, 0x8000, true}, { 0x0000000100000000, 0x8000, true}, { 0x0000000200000000, 0x8000, true}, { 0x7ffffffffffffffe, 0x8000, true}, { 0x7fffffffffffffff, 0x8000, true}, { 0x8000000000000000, 0x8000, true}, { 0x8000000000000001, 0x8000, true}, { 0xfffffffffffffffe, 0x8000, true}, { 0xffffffffffffffff, 0x8000, true}, { 0x0000000000000000, 0x8001, false}, { 0x0000000000000001, 0x8001, false}, { 0x0000000000000002, 0x8001, false}, { 0x000000007ffffffe, 0x8001, true}, { 0x000000007fffffff, 0x8001, true}, { 0x0000000080000000, 0x8001, true}, { 0x0000000080000001, 0x8001, true}, { 0x00000000fffffffe, 0x8001, true}, { 0x00000000ffffffff, 0x8001, true}, { 0x0000000100000000, 0x8001, true}, { 0x0000000200000000, 0x8001, true}, { 0x7ffffffffffffffe, 0x8001, true}, { 0x7fffffffffffffff, 0x8001, true}, { 0x8000000000000000, 0x8001, true}, { 0x8000000000000001, 0x8001, true}, { 0xfffffffffffffffe, 0x8001, true}, { 0xffffffffffffffff, 0x8001, true}, { 0x0000000000000000, 0xfffe, false}, { 0x0000000000000001, 0xfffe, false}, { 0x0000000000000002, 0xfffe, false}, { 0x000000007ffffffe, 0xfffe, true}, { 0x000000007fffffff, 0xfffe, true}, { 0x0000000080000000, 0xfffe, true}, { 0x0000000080000001, 0xfffe, true}, { 0x00000000fffffffe, 0xfffe, true}, { 0x00000000ffffffff, 0xfffe, true}, { 0x0000000100000000, 0xfffe, true}, { 0x0000000200000000, 0xfffe, true}, { 0x7ffffffffffffffe, 0xfffe, true}, { 0x7fffffffffffffff, 0xfffe, true}, { 0x8000000000000000, 0xfffe, true}, { 0x8000000000000001, 0xfffe, true}, { 0xfffffffffffffffe, 0xfffe, true}, { 0xffffffffffffffff, 0xfffe, true}, { 0x0000000000000000, 0xffff, false}, { 0x0000000000000001, 0xffff, false}, { 0x0000000000000002, 0xffff, false}, { 0x000000007ffffffe, 0xffff, true}, { 0x000000007fffffff, 0xffff, true}, { 0x0000000080000000, 0xffff, true}, { 0x0000000080000001, 0xffff, true}, { 0x00000000fffffffe, 0xffff, true}, { 0x00000000ffffffff, 0xffff, true}, { 0x0000000100000000, 0xffff, true}, { 0x0000000200000000, 0xffff, true}, { 0x7ffffffffffffffe, 0xffff, true}, { 0x7fffffffffffffff, 0xffff, true}, { 0x8000000000000000, 0xffff, true}, { 0x8000000000000001, 0xffff, true}, { 0xfffffffffffffffe, 0xffff, true}, { 0xffffffffffffffff, 0xffff, true}, }; template<> TestVector< std::uint64_t, std::uint16_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint64_uint16; this->count = COUNTOF(uint64_uint16); } static const TestCase< std::uint64_t, std::uint8_t, OpType::Sub > uint64_uint8[] = { { 0x0000000000000000, 0x00, true}, { 0x0000000000000001, 0x00, true}, { 0x0000000000000002, 0x00, true}, { 0x000000007ffffffe, 0x00, true}, { 0x000000007fffffff, 0x00, true}, { 0x0000000080000000, 0x00, true}, { 0x0000000080000001, 0x00, true}, { 0x00000000fffffffe, 0x00, true}, { 0x00000000ffffffff, 0x00, true}, { 0x0000000100000000, 0x00, true}, { 0x0000000200000000, 0x00, true}, { 0x7ffffffffffffffe, 0x00, true}, { 0x7fffffffffffffff, 0x00, true}, { 0x8000000000000000, 0x00, true}, { 0x8000000000000001, 0x00, true}, { 0xfffffffffffffffe, 0x00, true}, { 0xffffffffffffffff, 0x00, true}, { 0x0000000000000000, 0x01, false}, { 0x0000000000000001, 0x01, true}, { 0x0000000000000002, 0x01, true}, { 0x000000007ffffffe, 0x01, true}, { 0x000000007fffffff, 0x01, true}, { 0x0000000080000000, 0x01, true}, { 0x0000000080000001, 0x01, true}, { 0x00000000fffffffe, 0x01, true}, { 0x00000000ffffffff, 0x01, true}, { 0x0000000100000000, 0x01, true}, { 0x0000000200000000, 0x01, true}, { 0x7ffffffffffffffe, 0x01, true}, { 0x7fffffffffffffff, 0x01, true}, { 0x8000000000000000, 0x01, true}, { 0x8000000000000001, 0x01, true}, { 0xfffffffffffffffe, 0x01, true}, { 0xffffffffffffffff, 0x01, true}, { 0x0000000000000000, 0x02, false}, { 0x0000000000000001, 0x02, false}, { 0x0000000000000002, 0x02, true}, { 0x000000007ffffffe, 0x02, true}, { 0x000000007fffffff, 0x02, true}, { 0x0000000080000000, 0x02, true}, { 0x0000000080000001, 0x02, true}, { 0x00000000fffffffe, 0x02, true}, { 0x00000000ffffffff, 0x02, true}, { 0x0000000100000000, 0x02, true}, { 0x0000000200000000, 0x02, true}, { 0x7ffffffffffffffe, 0x02, true}, { 0x7fffffffffffffff, 0x02, true}, { 0x8000000000000000, 0x02, true}, { 0x8000000000000001, 0x02, true}, { 0xfffffffffffffffe, 0x02, true}, { 0xffffffffffffffff, 0x02, true}, { 0x0000000000000000, 0x7e, false}, { 0x0000000000000001, 0x7e, false}, { 0x0000000000000002, 0x7e, false}, { 0x000000007ffffffe, 0x7e, true}, { 0x000000007fffffff, 0x7e, true}, { 0x0000000080000000, 0x7e, true}, { 0x0000000080000001, 0x7e, true}, { 0x00000000fffffffe, 0x7e, true}, { 0x00000000ffffffff, 0x7e, true}, { 0x0000000100000000, 0x7e, true}, { 0x0000000200000000, 0x7e, true}, { 0x7ffffffffffffffe, 0x7e, true}, { 0x7fffffffffffffff, 0x7e, true}, { 0x8000000000000000, 0x7e, true}, { 0x8000000000000001, 0x7e, true}, { 0xfffffffffffffffe, 0x7e, true}, { 0xffffffffffffffff, 0x7e, true}, { 0x0000000000000000, 0x7f, false}, { 0x0000000000000001, 0x7f, false}, { 0x0000000000000002, 0x7f, false}, { 0x000000007ffffffe, 0x7f, true}, { 0x000000007fffffff, 0x7f, true}, { 0x0000000080000000, 0x7f, true}, { 0x0000000080000001, 0x7f, true}, { 0x00000000fffffffe, 0x7f, true}, { 0x00000000ffffffff, 0x7f, true}, { 0x0000000100000000, 0x7f, true}, { 0x0000000200000000, 0x7f, true}, { 0x7ffffffffffffffe, 0x7f, true}, { 0x7fffffffffffffff, 0x7f, true}, { 0x8000000000000000, 0x7f, true}, { 0x8000000000000001, 0x7f, true}, { 0xfffffffffffffffe, 0x7f, true}, { 0xffffffffffffffff, 0x7f, true}, { 0x0000000000000000, 0x80, false}, { 0x0000000000000001, 0x80, false}, { 0x0000000000000002, 0x80, false}, { 0x000000007ffffffe, 0x80, true}, { 0x000000007fffffff, 0x80, true}, { 0x0000000080000000, 0x80, true}, { 0x0000000080000001, 0x80, true}, { 0x00000000fffffffe, 0x80, true}, { 0x00000000ffffffff, 0x80, true}, { 0x0000000100000000, 0x80, true}, { 0x0000000200000000, 0x80, true}, { 0x7ffffffffffffffe, 0x80, true}, { 0x7fffffffffffffff, 0x80, true}, { 0x8000000000000000, 0x80, true}, { 0x8000000000000001, 0x80, true}, { 0xfffffffffffffffe, 0x80, true}, { 0xffffffffffffffff, 0x80, true}, { 0x0000000000000000, 0x81, false}, { 0x0000000000000001, 0x81, false}, { 0x0000000000000002, 0x81, false}, { 0x000000007ffffffe, 0x81, true}, { 0x000000007fffffff, 0x81, true}, { 0x0000000080000000, 0x81, true}, { 0x0000000080000001, 0x81, true}, { 0x00000000fffffffe, 0x81, true}, { 0x00000000ffffffff, 0x81, true}, { 0x0000000100000000, 0x81, true}, { 0x0000000200000000, 0x81, true}, { 0x7ffffffffffffffe, 0x81, true}, { 0x7fffffffffffffff, 0x81, true}, { 0x8000000000000000, 0x81, true}, { 0x8000000000000001, 0x81, true}, { 0xfffffffffffffffe, 0x81, true}, { 0xffffffffffffffff, 0x81, true}, { 0x0000000000000000, 0xfe, false}, { 0x0000000000000001, 0xfe, false}, { 0x0000000000000002, 0xfe, false}, { 0x000000007ffffffe, 0xfe, true}, { 0x000000007fffffff, 0xfe, true}, { 0x0000000080000000, 0xfe, true}, { 0x0000000080000001, 0xfe, true}, { 0x00000000fffffffe, 0xfe, true}, { 0x00000000ffffffff, 0xfe, true}, { 0x0000000100000000, 0xfe, true}, { 0x0000000200000000, 0xfe, true}, { 0x7ffffffffffffffe, 0xfe, true}, { 0x7fffffffffffffff, 0xfe, true}, { 0x8000000000000000, 0xfe, true}, { 0x8000000000000001, 0xfe, true}, { 0xfffffffffffffffe, 0xfe, true}, { 0xffffffffffffffff, 0xfe, true}, { 0x0000000000000000, 0xff, false}, { 0x0000000000000001, 0xff, false}, { 0x0000000000000002, 0xff, false}, { 0x000000007ffffffe, 0xff, true}, { 0x000000007fffffff, 0xff, true}, { 0x0000000080000000, 0xff, true}, { 0x0000000080000001, 0xff, true}, { 0x00000000fffffffe, 0xff, true}, { 0x00000000ffffffff, 0xff, true}, { 0x0000000100000000, 0xff, true}, { 0x0000000200000000, 0xff, true}, { 0x7ffffffffffffffe, 0xff, true}, { 0x7fffffffffffffff, 0xff, true}, { 0x8000000000000000, 0xff, true}, { 0x8000000000000001, 0xff, true}, { 0xfffffffffffffffe, 0xff, true}, { 0xffffffffffffffff, 0xff, true}, }; template<> TestVector< std::uint64_t, std::uint8_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint64_uint8; this->count = COUNTOF(uint64_uint8); } static const TestCase< std::uint8_t, std::uint64_t, OpType::Sub > uint8_uint64[] = { { 0x00, 0x0000000000000000, true}, { 0x01, 0x0000000000000000, true}, { 0x02, 0x0000000000000000, true}, { 0x7e, 0x0000000000000000, true}, { 0x7f, 0x0000000000000000, true}, { 0x80, 0x0000000000000000, true}, { 0x81, 0x0000000000000000, true}, { 0xfe, 0x0000000000000000, true}, { 0xff, 0x0000000000000000, true}, { 0x00, 0x0000000000000001, false}, { 0x01, 0x0000000000000001, true}, { 0x02, 0x0000000000000001, true}, { 0x7e, 0x0000000000000001, true}, { 0x7f, 0x0000000000000001, true}, { 0x80, 0x0000000000000001, true}, { 0x81, 0x0000000000000001, true}, { 0xfe, 0x0000000000000001, true}, { 0xff, 0x0000000000000001, true}, { 0x00, 0x0000000000000002, false}, { 0x01, 0x0000000000000002, false}, { 0x02, 0x0000000000000002, true}, { 0x7e, 0x0000000000000002, true}, { 0x7f, 0x0000000000000002, true}, { 0x80, 0x0000000000000002, true}, { 0x81, 0x0000000000000002, true}, { 0xfe, 0x0000000000000002, true}, { 0xff, 0x0000000000000002, true}, { 0x00, 0x000000007ffffffe, false}, { 0x01, 0x000000007ffffffe, false}, { 0x02, 0x000000007ffffffe, false}, { 0x7e, 0x000000007ffffffe, false}, { 0x7f, 0x000000007ffffffe, false}, { 0x80, 0x000000007ffffffe, false}, { 0x81, 0x000000007ffffffe, false}, { 0xfe, 0x000000007ffffffe, false}, { 0xff, 0x000000007ffffffe, false}, { 0x00, 0x000000007fffffff, false}, { 0x01, 0x000000007fffffff, false}, { 0x02, 0x000000007fffffff, false}, { 0x7e, 0x000000007fffffff, false}, { 0x7f, 0x000000007fffffff, false}, { 0x80, 0x000000007fffffff, false}, { 0x81, 0x000000007fffffff, false}, { 0xfe, 0x000000007fffffff, false}, { 0xff, 0x000000007fffffff, false}, { 0x00, 0x0000000080000000, false}, { 0x01, 0x0000000080000000, false}, { 0x02, 0x0000000080000000, false}, { 0x7e, 0x0000000080000000, false}, { 0x7f, 0x0000000080000000, false}, { 0x80, 0x0000000080000000, false}, { 0x81, 0x0000000080000000, false}, { 0xfe, 0x0000000080000000, false}, { 0xff, 0x0000000080000000, false}, { 0x00, 0x0000000080000001, false}, { 0x01, 0x0000000080000001, false}, { 0x02, 0x0000000080000001, false}, { 0x7e, 0x0000000080000001, false}, { 0x7f, 0x0000000080000001, false}, { 0x80, 0x0000000080000001, false}, { 0x81, 0x0000000080000001, false}, { 0xfe, 0x0000000080000001, false}, { 0xff, 0x0000000080000001, false}, { 0x00, 0x00000000fffffffe, false}, { 0x01, 0x00000000fffffffe, false}, { 0x02, 0x00000000fffffffe, false}, { 0x7e, 0x00000000fffffffe, false}, { 0x7f, 0x00000000fffffffe, false}, { 0x80, 0x00000000fffffffe, false}, { 0x81, 0x00000000fffffffe, false}, { 0xfe, 0x00000000fffffffe, false}, { 0xff, 0x00000000fffffffe, false}, { 0x00, 0x00000000ffffffff, false}, { 0x01, 0x00000000ffffffff, false}, { 0x02, 0x00000000ffffffff, false}, { 0x7e, 0x00000000ffffffff, false}, { 0x7f, 0x00000000ffffffff, false}, { 0x80, 0x00000000ffffffff, false}, { 0x81, 0x00000000ffffffff, false}, { 0xfe, 0x00000000ffffffff, false}, { 0xff, 0x00000000ffffffff, false}, { 0x00, 0x0000000100000000, false}, { 0x01, 0x0000000100000000, false}, { 0x02, 0x0000000100000000, false}, { 0x7e, 0x0000000100000000, false}, { 0x7f, 0x0000000100000000, false}, { 0x80, 0x0000000100000000, false}, { 0x81, 0x0000000100000000, false}, { 0xfe, 0x0000000100000000, false}, { 0xff, 0x0000000100000000, false}, { 0x00, 0x0000000200000000, false}, { 0x01, 0x0000000200000000, false}, { 0x02, 0x0000000200000000, false}, { 0x7e, 0x0000000200000000, false}, { 0x7f, 0x0000000200000000, false}, { 0x80, 0x0000000200000000, false}, { 0x81, 0x0000000200000000, false}, { 0xfe, 0x0000000200000000, false}, { 0xff, 0x0000000200000000, false}, { 0x00, 0x7ffffffffffffffe, false}, { 0x01, 0x7ffffffffffffffe, false}, { 0x02, 0x7ffffffffffffffe, false}, { 0x7e, 0x7ffffffffffffffe, false}, { 0x7f, 0x7ffffffffffffffe, false}, { 0x80, 0x7ffffffffffffffe, false}, { 0x81, 0x7ffffffffffffffe, false}, { 0xfe, 0x7ffffffffffffffe, false}, { 0xff, 0x7ffffffffffffffe, false}, { 0x00, 0x7fffffffffffffff, false}, { 0x01, 0x7fffffffffffffff, false}, { 0x02, 0x7fffffffffffffff, false}, { 0x7e, 0x7fffffffffffffff, false}, { 0x7f, 0x7fffffffffffffff, false}, { 0x80, 0x7fffffffffffffff, false}, { 0x81, 0x7fffffffffffffff, false}, { 0xfe, 0x7fffffffffffffff, false}, { 0xff, 0x7fffffffffffffff, false}, { 0x00, 0x8000000000000000, false}, { 0x01, 0x8000000000000000, false}, { 0x02, 0x8000000000000000, false}, { 0x7e, 0x8000000000000000, false}, { 0x7f, 0x8000000000000000, false}, { 0x80, 0x8000000000000000, false}, { 0x81, 0x8000000000000000, false}, { 0xfe, 0x8000000000000000, false}, { 0xff, 0x8000000000000000, false}, { 0x00, 0x8000000000000001, false}, { 0x01, 0x8000000000000001, false}, { 0x02, 0x8000000000000001, false}, { 0x7e, 0x8000000000000001, false}, { 0x7f, 0x8000000000000001, false}, { 0x80, 0x8000000000000001, false}, { 0x81, 0x8000000000000001, false}, { 0xfe, 0x8000000000000001, false}, { 0xff, 0x8000000000000001, false}, { 0x00, 0xfffffffffffffffe, false}, { 0x01, 0xfffffffffffffffe, false}, { 0x02, 0xfffffffffffffffe, false}, { 0x7e, 0xfffffffffffffffe, false}, { 0x7f, 0xfffffffffffffffe, false}, { 0x80, 0xfffffffffffffffe, false}, { 0x81, 0xfffffffffffffffe, false}, { 0xfe, 0xfffffffffffffffe, false}, { 0xff, 0xfffffffffffffffe, false}, { 0x00, 0xffffffffffffffff, false}, { 0x01, 0xffffffffffffffff, false}, { 0x02, 0xffffffffffffffff, false}, { 0x7e, 0xffffffffffffffff, false}, { 0x7f, 0xffffffffffffffff, false}, { 0x80, 0xffffffffffffffff, false}, { 0x81, 0xffffffffffffffff, false}, { 0xfe, 0xffffffffffffffff, false}, { 0xff, 0xffffffffffffffff, false}, }; template<> TestVector< std::uint8_t, std::uint64_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint8_uint64; this->count = COUNTOF(uint8_uint64); } static const TestCase< std::uint8_t, std::uint32_t, OpType::Sub > uint8_uint32[] = { { 0x00, 0x00000000, true}, { 0x01, 0x00000000, true}, { 0x02, 0x00000000, true}, { 0x7e, 0x00000000, true}, { 0x7f, 0x00000000, true}, { 0x80, 0x00000000, true}, { 0x81, 0x00000000, true}, { 0xfe, 0x00000000, true}, { 0xff, 0x00000000, true}, { 0x00, 0x00000001, false}, { 0x01, 0x00000001, true}, { 0x02, 0x00000001, true}, { 0x7e, 0x00000001, true}, { 0x7f, 0x00000001, true}, { 0x80, 0x00000001, true}, { 0x81, 0x00000001, true}, { 0xfe, 0x00000001, true}, { 0xff, 0x00000001, true}, { 0x00, 0x00000002, false}, { 0x01, 0x00000002, false}, { 0x02, 0x00000002, true}, { 0x7e, 0x00000002, true}, { 0x7f, 0x00000002, true}, { 0x80, 0x00000002, true}, { 0x81, 0x00000002, true}, { 0xfe, 0x00000002, true}, { 0xff, 0x00000002, true}, { 0x00, 0x7ffffffe, false}, { 0x01, 0x7ffffffe, false}, { 0x02, 0x7ffffffe, false}, { 0x7e, 0x7ffffffe, false}, { 0x7f, 0x7ffffffe, false}, { 0x80, 0x7ffffffe, false}, { 0x81, 0x7ffffffe, false}, { 0xfe, 0x7ffffffe, false}, { 0xff, 0x7ffffffe, false}, { 0x00, 0x7fffffff, false}, { 0x01, 0x7fffffff, false}, { 0x02, 0x7fffffff, false}, { 0x7e, 0x7fffffff, false}, { 0x7f, 0x7fffffff, false}, { 0x80, 0x7fffffff, false}, { 0x81, 0x7fffffff, false}, { 0xfe, 0x7fffffff, false}, { 0xff, 0x7fffffff, false}, { 0x00, 0x80000000, false}, { 0x01, 0x80000000, false}, { 0x02, 0x80000000, false}, { 0x7e, 0x80000000, false}, { 0x7f, 0x80000000, false}, { 0x80, 0x80000000, false}, { 0x81, 0x80000000, false}, { 0xfe, 0x80000000, false}, { 0xff, 0x80000000, false}, { 0x00, 0x80000001, false}, { 0x01, 0x80000001, false}, { 0x02, 0x80000001, false}, { 0x7e, 0x80000001, false}, { 0x7f, 0x80000001, false}, { 0x80, 0x80000001, false}, { 0x81, 0x80000001, false}, { 0xfe, 0x80000001, false}, { 0xff, 0x80000001, false}, { 0x00, 0xfffffffe, false}, { 0x01, 0xfffffffe, false}, { 0x02, 0xfffffffe, false}, { 0x7e, 0xfffffffe, false}, { 0x7f, 0xfffffffe, false}, { 0x80, 0xfffffffe, false}, { 0x81, 0xfffffffe, false}, { 0xfe, 0xfffffffe, false}, { 0xff, 0xfffffffe, false}, { 0x00, 0xffffffff, false}, { 0x01, 0xffffffff, false}, { 0x02, 0xffffffff, false}, { 0x7e, 0xffffffff, false}, { 0x7f, 0xffffffff, false}, { 0x80, 0xffffffff, false}, { 0x81, 0xffffffff, false}, { 0xfe, 0xffffffff, false}, { 0xff, 0xffffffff, false}, }; template<> TestVector< std::uint8_t, std::uint32_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint8_uint32; this->count = COUNTOF(uint8_uint32); } static const TestCase< std::uint8_t, std::uint16_t, OpType::Sub > uint8_uint16[] = { { 0x00, 0x0000, true}, { 0x01, 0x0000, true}, { 0x02, 0x0000, true}, { 0x7e, 0x0000, true}, { 0x7f, 0x0000, true}, { 0x80, 0x0000, true}, { 0x81, 0x0000, true}, { 0xfe, 0x0000, true}, { 0xff, 0x0000, true}, { 0x00, 0x0001, false}, { 0x01, 0x0001, true}, { 0x02, 0x0001, true}, { 0x7e, 0x0001, true}, { 0x7f, 0x0001, true}, { 0x80, 0x0001, true}, { 0x81, 0x0001, true}, { 0xfe, 0x0001, true}, { 0xff, 0x0001, true}, { 0x00, 0x0002, false}, { 0x01, 0x0002, false}, { 0x02, 0x0002, true}, { 0x7e, 0x0002, true}, { 0x7f, 0x0002, true}, { 0x80, 0x0002, true}, { 0x81, 0x0002, true}, { 0xfe, 0x0002, true}, { 0xff, 0x0002, true}, { 0x00, 0x7ffe, false}, { 0x01, 0x7ffe, false}, { 0x02, 0x7ffe, false}, { 0x7e, 0x7ffe, false}, { 0x7f, 0x7ffe, false}, { 0x80, 0x7ffe, false}, { 0x81, 0x7ffe, false}, { 0xfe, 0x7ffe, false}, { 0xff, 0x7ffe, false}, { 0x00, 0x7fff, false}, { 0x01, 0x7fff, false}, { 0x02, 0x7fff, false}, { 0x7e, 0x7fff, false}, { 0x7f, 0x7fff, false}, { 0x80, 0x7fff, false}, { 0x81, 0x7fff, false}, { 0xfe, 0x7fff, false}, { 0xff, 0x7fff, false}, { 0x00, 0x8000, false}, { 0x01, 0x8000, false}, { 0x02, 0x8000, false}, { 0x7e, 0x8000, false}, { 0x7f, 0x8000, false}, { 0x80, 0x8000, false}, { 0x81, 0x8000, false}, { 0xfe, 0x8000, false}, { 0xff, 0x8000, false}, { 0x00, 0x8001, false}, { 0x01, 0x8001, false}, { 0x02, 0x8001, false}, { 0x7e, 0x8001, false}, { 0x7f, 0x8001, false}, { 0x80, 0x8001, false}, { 0x81, 0x8001, false}, { 0xfe, 0x8001, false}, { 0xff, 0x8001, false}, { 0x00, 0xfffe, false}, { 0x01, 0xfffe, false}, { 0x02, 0xfffe, false}, { 0x7e, 0xfffe, false}, { 0x7f, 0xfffe, false}, { 0x80, 0xfffe, false}, { 0x81, 0xfffe, false}, { 0xfe, 0xfffe, false}, { 0xff, 0xfffe, false}, { 0x00, 0xffff, false}, { 0x01, 0xffff, false}, { 0x02, 0xffff, false}, { 0x7e, 0xffff, false}, { 0x7f, 0xffff, false}, { 0x80, 0xffff, false}, { 0x81, 0xffff, false}, { 0xfe, 0xffff, false}, { 0xff, 0xffff, false}, }; template<> TestVector< std::uint8_t, std::uint16_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint8_uint16; this->count = COUNTOF(uint8_uint16); } static const TestCase< std::uint8_t, std::uint8_t, OpType::Sub > uint8_uint8[] = { { 0x00, 0x00, true}, { 0x01, 0x00, true}, { 0x02, 0x00, true}, { 0x7e, 0x00, true}, { 0x7f, 0x00, true}, { 0x80, 0x00, true}, { 0x81, 0x00, true}, { 0xfe, 0x00, true}, { 0xff, 0x00, true}, { 0x00, 0x01, false}, { 0x01, 0x01, true}, { 0x02, 0x01, true}, { 0x7e, 0x01, true}, { 0x7f, 0x01, true}, { 0x80, 0x01, true}, { 0x81, 0x01, true}, { 0xfe, 0x01, true}, { 0xff, 0x01, true}, { 0x00, 0x02, false}, { 0x01, 0x02, false}, { 0x02, 0x02, true}, { 0x7e, 0x02, true}, { 0x7f, 0x02, true}, { 0x80, 0x02, true}, { 0x81, 0x02, true}, { 0xfe, 0x02, true}, { 0xff, 0x02, true}, { 0x00, 0x7e, false}, { 0x01, 0x7e, false}, { 0x02, 0x7e, false}, { 0x7e, 0x7e, true}, { 0x7f, 0x7e, true}, { 0x80, 0x7e, true}, { 0x81, 0x7e, true}, { 0xfe, 0x7e, true}, { 0xff, 0x7e, true}, { 0x00, 0x7f, false}, { 0x01, 0x7f, false}, { 0x02, 0x7f, false}, { 0x7e, 0x7f, false}, { 0x7f, 0x7f, true}, { 0x80, 0x7f, true}, { 0x81, 0x7f, true}, { 0xfe, 0x7f, true}, { 0xff, 0x7f, true}, { 0x00, 0x80, false}, { 0x01, 0x80, false}, { 0x02, 0x80, false}, { 0x7e, 0x80, false}, { 0x7f, 0x80, false}, { 0x80, 0x80, true}, { 0x81, 0x80, true}, { 0xfe, 0x80, true}, { 0xff, 0x80, true}, { 0x00, 0x81, false}, { 0x01, 0x81, false}, { 0x02, 0x81, false}, { 0x7e, 0x81, false}, { 0x7f, 0x81, false}, { 0x80, 0x81, false}, { 0x81, 0x81, true}, { 0xfe, 0x81, true}, { 0xff, 0x81, true}, { 0x00, 0xfe, false}, { 0x01, 0xfe, false}, { 0x02, 0xfe, false}, { 0x7e, 0xfe, false}, { 0x7f, 0xfe, false}, { 0x80, 0xfe, false}, { 0x81, 0xfe, false}, { 0xfe, 0xfe, true}, { 0xff, 0xfe, true}, { 0x00, 0xff, false}, { 0x01, 0xff, false}, { 0x02, 0xff, false}, { 0x7e, 0xff, false}, { 0x7f, 0xff, false}, { 0x80, 0xff, false}, { 0x81, 0xff, false}, { 0xfe, 0xff, false}, { 0xff, 0xff, true}, }; template<> TestVector< std::uint8_t, std::uint8_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint8_uint8; this->count = COUNTOF(uint8_uint8); } static const TestCase< std::int64_t, std::int64_t, OpType::Sub > int64_int64[] = { { (std::int64_t)0x0000000000000000, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x0000000000000000, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x0000000000000001, false}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x0000000000000001, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x0000000000000002, false}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x0000000000000002, false}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x0000000000000002, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x000000007ffffffe, false}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x000000007ffffffe, false}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x000000007ffffffe, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x000000007fffffff, false}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x000000007fffffff, false}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x000000007fffffff, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x0000000080000000, false}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x0000000080000000, false}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x0000000080000000, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x0000000080000001, false}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x0000000080000001, false}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x0000000080000001, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x00000000fffffffe, false}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x00000000fffffffe, false}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x00000000fffffffe, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x00000000ffffffff, false}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x00000000ffffffff, false}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x00000000ffffffff, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x0000000100000000, false}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x0000000100000000, false}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x0000000100000000, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x0000000200000000, false}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x0000000200000000, false}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x0000000200000000, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x7ffffffffffffffe, false}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x7ffffffffffffffe, false}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x7fffffffffffffff, false}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x7fffffffffffffff, false}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x7fffffffffffffff, false}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x7fffffffffffffff, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x8000000000000000, false}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x8000000000000000, false}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x8000000000000000, false}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x8000000000000000, false}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x8000000000000000, false}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x8000000000000000, false}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x8000000000000000, false}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x8000000000000000, false}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x8000000000000000, false}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x8000000000000000, false}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x8000000000000000, false}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x8000000000000000, false}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x8000000000000000, false}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x8000000000000000, true}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x8000000000000000, true}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x8000000000000000, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x8000000000000000, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0x8000000000000001, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0x8000000000000001, false}, { (std::int64_t)0x0000000000000002, (std::int64_t)0x8000000000000001, false}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0x8000000000000001, false}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0x8000000000000001, false}, { (std::int64_t)0x0000000080000000, (std::int64_t)0x8000000000000001, false}, { (std::int64_t)0x0000000080000001, (std::int64_t)0x8000000000000001, false}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0x8000000000000001, false}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0x8000000000000001, false}, { (std::int64_t)0x0000000100000000, (std::int64_t)0x8000000000000001, false}, { (std::int64_t)0x0000000200000000, (std::int64_t)0x8000000000000001, false}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0x8000000000000001, false}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0x8000000000000001, false}, { (std::int64_t)0x8000000000000000, (std::int64_t)0x8000000000000001, true}, { (std::int64_t)0x8000000000000001, (std::int64_t)0x8000000000000001, true}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0x8000000000000001, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0x8000000000000001, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0xfffffffffffffffe, false}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0xfffffffffffffffe, false}, { (std::int64_t)0x8000000000000000, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0x8000000000000001, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0xfffffffffffffffe, true}, { (std::int64_t)0x0000000000000000, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0x0000000000000001, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0x0000000000000002, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0x000000007ffffffe, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0x000000007fffffff, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0x0000000080000000, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0x0000000080000001, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0x00000000fffffffe, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0x00000000ffffffff, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0x0000000100000000, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0x0000000200000000, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0x7fffffffffffffff, (std::int64_t)0xffffffffffffffff, false}, { (std::int64_t)0x8000000000000000, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0x8000000000000001, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0xfffffffffffffffe, (std::int64_t)0xffffffffffffffff, true}, { (std::int64_t)0xffffffffffffffff, (std::int64_t)0xffffffffffffffff, true}, }; template<> TestVector< std::int64_t, std::int64_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int64_int64; this->count = COUNTOF(int64_int64); } static const TestCase< std::int32_t, std::int64_t, OpType::Sub > int32_int64[] = { { (std::int32_t)0x00000000, (std::int64_t)0x0000000000000000, true}, { (std::int32_t)0x00000001, (std::int64_t)0x0000000000000000, true}, { (std::int32_t)0x00000002, (std::int64_t)0x0000000000000000, true}, { (std::int32_t)0x7ffffffe, (std::int64_t)0x0000000000000000, true}, { (std::int32_t)0x7fffffff, (std::int64_t)0x0000000000000000, true}, { (std::int32_t)0x80000000, (std::int64_t)0x0000000000000000, true}, { (std::int32_t)0x80000001, (std::int64_t)0x0000000000000000, true}, { (std::int32_t)0xfffffffe, (std::int64_t)0x0000000000000000, true}, { (std::int32_t)0xffffffff, (std::int64_t)0x0000000000000000, true}, { (std::int32_t)0x00000000, (std::int64_t)0x0000000000000001, true}, { (std::int32_t)0x00000001, (std::int64_t)0x0000000000000001, true}, { (std::int32_t)0x00000002, (std::int64_t)0x0000000000000001, true}, { (std::int32_t)0x7ffffffe, (std::int64_t)0x0000000000000001, true}, { (std::int32_t)0x7fffffff, (std::int64_t)0x0000000000000001, true}, { (std::int32_t)0x80000000, (std::int64_t)0x0000000000000001, false}, { (std::int32_t)0x80000001, (std::int64_t)0x0000000000000001, true}, { (std::int32_t)0xfffffffe, (std::int64_t)0x0000000000000001, true}, { (std::int32_t)0xffffffff, (std::int64_t)0x0000000000000001, true}, { (std::int32_t)0x00000000, (std::int64_t)0x0000000000000002, true}, { (std::int32_t)0x00000001, (std::int64_t)0x0000000000000002, true}, { (std::int32_t)0x00000002, (std::int64_t)0x0000000000000002, true}, { (std::int32_t)0x7ffffffe, (std::int64_t)0x0000000000000002, true}, { (std::int32_t)0x7fffffff, (std::int64_t)0x0000000000000002, true}, { (std::int32_t)0x80000000, (std::int64_t)0x0000000000000002, false}, { (std::int32_t)0x80000001, (std::int64_t)0x0000000000000002, false}, { (std::int32_t)0xfffffffe, (std::int64_t)0x0000000000000002, true}, { (std::int32_t)0xffffffff, (std::int64_t)0x0000000000000002, true}, { (std::int32_t)0x00000000, (std::int64_t)0x000000007ffffffe, true}, { (std::int32_t)0x00000001, (std::int64_t)0x000000007ffffffe, true}, { (std::int32_t)0x00000002, (std::int64_t)0x000000007ffffffe, true}, { (std::int32_t)0x7ffffffe, (std::int64_t)0x000000007ffffffe, true}, { (std::int32_t)0x7fffffff, (std::int64_t)0x000000007ffffffe, true}, { (std::int32_t)0x80000000, (std::int64_t)0x000000007ffffffe, false}, { (std::int32_t)0x80000001, (std::int64_t)0x000000007ffffffe, false}, { (std::int32_t)0xfffffffe, (std::int64_t)0x000000007ffffffe, true}, { (std::int32_t)0xffffffff, (std::int64_t)0x000000007ffffffe, true}, { (std::int32_t)0x00000000, (std::int64_t)0x000000007fffffff, true}, { (std::int32_t)0x00000001, (std::int64_t)0x000000007fffffff, true}, { (std::int32_t)0x00000002, (std::int64_t)0x000000007fffffff, true}, { (std::int32_t)0x7ffffffe, (std::int64_t)0x000000007fffffff, true}, { (std::int32_t)0x7fffffff, (std::int64_t)0x000000007fffffff, true}, { (std::int32_t)0x80000000, (std::int64_t)0x000000007fffffff, false}, { (std::int32_t)0x80000001, (std::int64_t)0x000000007fffffff, false}, { (std::int32_t)0xfffffffe, (std::int64_t)0x000000007fffffff, false}, { (std::int32_t)0xffffffff, (std::int64_t)0x000000007fffffff, true}, { (std::int32_t)0x00000000, (std::int64_t)0x0000000080000000, true}, { (std::int32_t)0x00000001, (std::int64_t)0x0000000080000000, true}, { (std::int32_t)0x00000002, (std::int64_t)0x0000000080000000, true}, { (std::int32_t)0x7ffffffe, (std::int64_t)0x0000000080000000, true}, { (std::int32_t)0x7fffffff, (std::int64_t)0x0000000080000000, true}, { (std::int32_t)0x80000000, (std::int64_t)0x0000000080000000, false}, { (std::int32_t)0x80000001, (std::int64_t)0x0000000080000000, false}, { (std::int32_t)0xfffffffe, (std::int64_t)0x0000000080000000, false}, { (std::int32_t)0xffffffff, (std::int64_t)0x0000000080000000, false}, { (std::int32_t)0x00000000, (std::int64_t)0x0000000080000001, false}, { (std::int32_t)0x00000001, (std::int64_t)0x0000000080000001, true}, { (std::int32_t)0x00000002, (std::int64_t)0x0000000080000001, true}, { (std::int32_t)0x7ffffffe, (std::int64_t)0x0000000080000001, true}, { (std::int32_t)0x7fffffff, (std::int64_t)0x0000000080000001, true}, { (std::int32_t)0x80000000, (std::int64_t)0x0000000080000001, false}, { (std::int32_t)0x80000001, (std::int64_t)0x0000000080000001, false}, { (std::int32_t)0xfffffffe, (std::int64_t)0x0000000080000001, false}, { (std::int32_t)0xffffffff, (std::int64_t)0x0000000080000001, false}, { (std::int32_t)0x00000000, (std::int64_t)0x00000000fffffffe, false}, { (std::int32_t)0x00000001, (std::int64_t)0x00000000fffffffe, false}, { (std::int32_t)0x00000002, (std::int64_t)0x00000000fffffffe, false}, { (std::int32_t)0x7ffffffe, (std::int64_t)0x00000000fffffffe, true}, { (std::int32_t)0x7fffffff, (std::int64_t)0x00000000fffffffe, true}, { (std::int32_t)0x80000000, (std::int64_t)0x00000000fffffffe, false}, { (std::int32_t)0x80000001, (std::int64_t)0x00000000fffffffe, false}, { (std::int32_t)0xfffffffe, (std::int64_t)0x00000000fffffffe, false}, { (std::int32_t)0xffffffff, (std::int64_t)0x00000000fffffffe, false}, { (std::int32_t)0x00000000, (std::int64_t)0x00000000ffffffff, false}, { (std::int32_t)0x00000001, (std::int64_t)0x00000000ffffffff, false}, { (std::int32_t)0x00000002, (std::int64_t)0x00000000ffffffff, false}, { (std::int32_t)0x7ffffffe, (std::int64_t)0x00000000ffffffff, false}, { (std::int32_t)0x7fffffff, (std::int64_t)0x00000000ffffffff, true}, { (std::int32_t)0x80000000, (std::int64_t)0x00000000ffffffff, false}, { (std::int32_t)0x80000001, (std::int64_t)0x00000000ffffffff, false}, { (std::int32_t)0xfffffffe, (std::int64_t)0x00000000ffffffff, false}, { (std::int32_t)0xffffffff, (std::int64_t)0x00000000ffffffff, false}, { (std::int32_t)0x00000000, (std::int64_t)0x0000000100000000, false}, { (std::int32_t)0x00000001, (std::int64_t)0x0000000100000000, false}, { (std::int32_t)0x00000002, (std::int64_t)0x0000000100000000, false}, { (std::int32_t)0x7ffffffe, (std::int64_t)0x0000000100000000, false}, { (std::int32_t)0x7fffffff, (std::int64_t)0x0000000100000000, false}, { (std::int32_t)0x80000000, (std::int64_t)0x0000000100000000, false}, { (std::int32_t)0x80000001, (std::int64_t)0x0000000100000000, false}, { (std::int32_t)0xfffffffe, (std::int64_t)0x0000000100000000, false}, { (std::int32_t)0xffffffff, (std::int64_t)0x0000000100000000, false}, { (std::int32_t)0x00000000, (std::int64_t)0x0000000200000000, false }, { (std::int32_t)0x00000001, (std::int64_t)0x0000000200000000, false }, { (std::int32_t)0x00000002, (std::int64_t)0x0000000200000000, false }, { (std::int32_t)0x7ffffffe, (std::int64_t)0x0000000200000000, false }, { (std::int32_t)0x7fffffff, (std::int64_t)0x0000000200000000, false }, { (std::int32_t)0x80000000, (std::int64_t)0x0000000200000000, false }, { (std::int32_t)0x80000001, (std::int64_t)0x0000000200000000, false }, { (std::int32_t)0xfffffffe, (std::int64_t)0x0000000200000000, false }, { (std::int32_t)0xffffffff, (std::int64_t)0x0000000200000000, false }, { (std::int32_t)0x00000000, (std::int64_t)0x7ffffffffffffffe, false }, { (std::int32_t)0x00000001, (std::int64_t)0x7ffffffffffffffe, false }, { (std::int32_t)0x00000002, (std::int64_t)0x7ffffffffffffffe, false }, { (std::int32_t)0x7ffffffe, (std::int64_t)0x7ffffffffffffffe, false }, { (std::int32_t)0x7fffffff, (std::int64_t)0x7ffffffffffffffe, false }, { (std::int32_t)0x80000000, (std::int64_t)0x7ffffffffffffffe, false }, { (std::int32_t)0x80000001, (std::int64_t)0x7ffffffffffffffe, false }, { (std::int32_t)0xfffffffe, (std::int64_t)0x7ffffffffffffffe, false }, { (std::int32_t)0xffffffff, (std::int64_t)0x7ffffffffffffffe, false }, { (std::int32_t)0x00000000, (std::int64_t)0x7fffffffffffffff, false }, { (std::int32_t)0x00000001, (std::int64_t)0x7fffffffffffffff, false }, { (std::int32_t)0x00000002, (std::int64_t)0x7fffffffffffffff, false }, { (std::int32_t)0x7ffffffe, (std::int64_t)0x7fffffffffffffff, false }, { (std::int32_t)0x7fffffff, (std::int64_t)0x7fffffffffffffff, false }, { (std::int32_t)0x80000000, (std::int64_t)0x7fffffffffffffff, false }, { (std::int32_t)0x80000001, (std::int64_t)0x7fffffffffffffff, false }, { (std::int32_t)0xfffffffe, (std::int64_t)0x7fffffffffffffff, false }, { (std::int32_t)0xffffffff, (std::int64_t)0x7fffffffffffffff, false }, { (std::int32_t)0x00000000, (std::int64_t)0x8000000000000000, false}, { (std::int32_t)0x00000001, (std::int64_t)0x8000000000000000, false}, { (std::int32_t)0x00000002, (std::int64_t)0x8000000000000000, false}, { (std::int32_t)0x7ffffffe, (std::int64_t)0x8000000000000000, false}, { (std::int32_t)0x7fffffff, (std::int64_t)0x8000000000000000, false}, { (std::int32_t)0x80000000, (std::int64_t)0x8000000000000000, false}, { (std::int32_t)0x80000001, (std::int64_t)0x8000000000000000, false}, { (std::int32_t)0xfffffffe, (std::int64_t)0x8000000000000000, false}, { (std::int32_t)0xffffffff, (std::int64_t)0x8000000000000000, false}, { (std::int32_t)0x00000000, (std::int64_t)0x8000000000000001, false}, { (std::int32_t)0x00000001, (std::int64_t)0x8000000000000001, false}, { (std::int32_t)0x00000002, (std::int64_t)0x8000000000000001, false}, { (std::int32_t)0x7ffffffe, (std::int64_t)0x8000000000000001, false}, { (std::int32_t)0x7fffffff, (std::int64_t)0x8000000000000001, false}, { (std::int32_t)0x80000000, (std::int64_t)0x8000000000000001, false}, { (std::int32_t)0x80000001, (std::int64_t)0x8000000000000001, false}, { (std::int32_t)0xfffffffe, (std::int64_t)0x8000000000000001, false}, { (std::int32_t)0xffffffff, (std::int64_t)0x8000000000000001, false}, { (std::int32_t)0x00000000, (std::int64_t)0xfffffffffffffffe, true}, { (std::int32_t)0x00000001, (std::int64_t)0xfffffffffffffffe, true}, { (std::int32_t)0x00000002, (std::int64_t)0xfffffffffffffffe, true}, { (std::int32_t)0x7ffffffe, (std::int64_t)0xfffffffffffffffe, false}, { (std::int32_t)0x7fffffff, (std::int64_t)0xfffffffffffffffe, false}, { (std::int32_t)0x80000000, (std::int64_t)0xfffffffffffffffe, true}, { (std::int32_t)0x80000001, (std::int64_t)0xfffffffffffffffe, true}, { (std::int32_t)0xfffffffe, (std::int64_t)0xfffffffffffffffe, true}, { (std::int32_t)0xffffffff, (std::int64_t)0xfffffffffffffffe, true}, { (std::int32_t)0x00000000, (std::int64_t)0xffffffffffffffff, true}, { (std::int32_t)0x00000001, (std::int64_t)0xffffffffffffffff, true}, { (std::int32_t)0x00000002, (std::int64_t)0xffffffffffffffff, true}, { (std::int32_t)0x7ffffffe, (std::int64_t)0xffffffffffffffff, true}, { (std::int32_t)0x7fffffff, (std::int64_t)0xffffffffffffffff, false}, { (std::int32_t)0x80000000, (std::int64_t)0xffffffffffffffff, true}, { (std::int32_t)0x80000001, (std::int64_t)0xffffffffffffffff, true}, { (std::int32_t)0xfffffffe, (std::int64_t)0xffffffffffffffff, true}, { (std::int32_t)0xffffffff, (std::int64_t)0xffffffffffffffff, true}, }; template<> TestVector< std::int32_t, std::int64_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int32_int64; this->count = COUNTOF(int32_int64); } static const TestCase< std::int32_t, std::int32_t, OpType::Sub > int32_int32[] = { { (std::int32_t)0x00000000, (std::int32_t)0x00000000, true}, { (std::int32_t)0x00000001, (std::int32_t)0x00000000, true}, { (std::int32_t)0x00000002, (std::int32_t)0x00000000, true}, { (std::int32_t)0x7ffffffe, (std::int32_t)0x00000000, true}, { (std::int32_t)0x7fffffff, (std::int32_t)0x00000000, true}, { (std::int32_t)0x80000000, (std::int32_t)0x00000000, true}, { (std::int32_t)0x80000001, (std::int32_t)0x00000000, true}, { (std::int32_t)0xfffffffe, (std::int32_t)0x00000000, true}, { (std::int32_t)0xffffffff, (std::int32_t)0x00000000, true}, { (std::int32_t)0x00000000, (std::int32_t)0x00000001, true}, { (std::int32_t)0x00000001, (std::int32_t)0x00000001, true}, { (std::int32_t)0x00000002, (std::int32_t)0x00000001, true}, { (std::int32_t)0x7ffffffe, (std::int32_t)0x00000001, true}, { (std::int32_t)0x7fffffff, (std::int32_t)0x00000001, true}, { (std::int32_t)0x80000000, (std::int32_t)0x00000001, false}, { (std::int32_t)0x80000001, (std::int32_t)0x00000001, true}, { (std::int32_t)0xfffffffe, (std::int32_t)0x00000001, true}, { (std::int32_t)0xffffffff, (std::int32_t)0x00000001, true}, { (std::int32_t)0x00000000, (std::int32_t)0x00000002, true}, { (std::int32_t)0x00000001, (std::int32_t)0x00000002, true}, { (std::int32_t)0x00000002, (std::int32_t)0x00000002, true}, { (std::int32_t)0x7ffffffe, (std::int32_t)0x00000002, true}, { (std::int32_t)0x7fffffff, (std::int32_t)0x00000002, true}, { (std::int32_t)0x80000000, (std::int32_t)0x00000002, false}, { (std::int32_t)0x80000001, (std::int32_t)0x00000002, false}, { (std::int32_t)0xfffffffe, (std::int32_t)0x00000002, true}, { (std::int32_t)0xffffffff, (std::int32_t)0x00000002, true}, { (std::int32_t)0x00000000, (std::int32_t)0x7ffffffe, true}, { (std::int32_t)0x00000001, (std::int32_t)0x7ffffffe, true}, { (std::int32_t)0x00000002, (std::int32_t)0x7ffffffe, true}, { (std::int32_t)0x7ffffffe, (std::int32_t)0x7ffffffe, true}, { (std::int32_t)0x7fffffff, (std::int32_t)0x7ffffffe, true}, { (std::int32_t)0x80000000, (std::int32_t)0x7ffffffe, false}, { (std::int32_t)0x80000001, (std::int32_t)0x7ffffffe, false}, { (std::int32_t)0xfffffffe, (std::int32_t)0x7ffffffe, true}, { (std::int32_t)0xffffffff, (std::int32_t)0x7ffffffe, true}, { (std::int32_t)0x00000000, (std::int32_t)0x7fffffff, true}, { (std::int32_t)0x00000001, (std::int32_t)0x7fffffff, true}, { (std::int32_t)0x00000002, (std::int32_t)0x7fffffff, true}, { (std::int32_t)0x7ffffffe, (std::int32_t)0x7fffffff, true}, { (std::int32_t)0x7fffffff, (std::int32_t)0x7fffffff, true}, { (std::int32_t)0x80000000, (std::int32_t)0x7fffffff, false}, { (std::int32_t)0x80000001, (std::int32_t)0x7fffffff, false}, { (std::int32_t)0xfffffffe, (std::int32_t)0x7fffffff, false}, { (std::int32_t)0xffffffff, (std::int32_t)0x7fffffff, true}, { (std::int32_t)0x00000000, (std::int32_t)0x80000000, false}, { (std::int32_t)0x00000001, (std::int32_t)0x80000000, false}, { (std::int32_t)0x00000002, (std::int32_t)0x80000000, false}, { (std::int32_t)0x7ffffffe, (std::int32_t)0x80000000, false}, { (std::int32_t)0x7fffffff, (std::int32_t)0x80000000, false}, { (std::int32_t)0x80000000, (std::int32_t)0x80000000, true}, { (std::int32_t)0x80000001, (std::int32_t)0x80000000, true}, { (std::int32_t)0xfffffffe, (std::int32_t)0x80000000, true}, { (std::int32_t)0xffffffff, (std::int32_t)0x80000000, true}, { (std::int32_t)0x00000000, (std::int32_t)0x80000001, true}, { (std::int32_t)0x00000001, (std::int32_t)0x80000001, false}, { (std::int32_t)0x00000002, (std::int32_t)0x80000001, false}, { (std::int32_t)0x7ffffffe, (std::int32_t)0x80000001, false}, { (std::int32_t)0x7fffffff, (std::int32_t)0x80000001, false}, { (std::int32_t)0x80000000, (std::int32_t)0x80000001, true}, { (std::int32_t)0x80000001, (std::int32_t)0x80000001, true}, { (std::int32_t)0xfffffffe, (std::int32_t)0x80000001, true}, { (std::int32_t)0xffffffff, (std::int32_t)0x80000001, true}, { (std::int32_t)0x00000000, (std::int32_t)0xfffffffe, true}, { (std::int32_t)0x00000001, (std::int32_t)0xfffffffe, true}, { (std::int32_t)0x00000002, (std::int32_t)0xfffffffe, true}, { (std::int32_t)0x7ffffffe, (std::int32_t)0xfffffffe, false}, { (std::int32_t)0x7fffffff, (std::int32_t)0xfffffffe, false}, { (std::int32_t)0x80000000, (std::int32_t)0xfffffffe, true}, { (std::int32_t)0x80000001, (std::int32_t)0xfffffffe, true}, { (std::int32_t)0xfffffffe, (std::int32_t)0xfffffffe, true}, { (std::int32_t)0xffffffff, (std::int32_t)0xfffffffe, true}, { (std::int32_t)0x00000000, (std::int32_t)0xffffffff, true}, { (std::int32_t)0x00000001, (std::int32_t)0xffffffff, true}, { (std::int32_t)0x00000002, (std::int32_t)0xffffffff, true}, { (std::int32_t)0x7ffffffe, (std::int32_t)0xffffffff, true}, { (std::int32_t)0x7fffffff, (std::int32_t)0xffffffff, false}, { (std::int32_t)0x80000000, (std::int32_t)0xffffffff, true}, { (std::int32_t)0x80000001, (std::int32_t)0xffffffff, true}, { (std::int32_t)0xfffffffe, (std::int32_t)0xffffffff, true}, { (std::int32_t)0xffffffff, (std::int32_t)0xffffffff, true}, }; template<> TestVector< std::int32_t, std::int32_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int32_int32; this->count = COUNTOF(int32_int32); } static const TestCase< std::int64_t, std::int32_t, OpType::Sub > int64_int32[] = { { (std::int64_t)0x0000000000000000, (std::int32_t)0x00000000, true}, { (std::int64_t)0x0000000000000001, (std::int32_t)0x00000000, true}, { (std::int64_t)0x0000000000000002, (std::int32_t)0x00000000, true}, { (std::int64_t)0x000000007ffffffe, (std::int32_t)0x00000000, true}, { (std::int64_t)0x000000007fffffff, (std::int32_t)0x00000000, true}, { (std::int64_t)0x0000000080000000, (std::int32_t)0x00000000, true}, { (std::int64_t)0x0000000080000001, (std::int32_t)0x00000000, true}, { (std::int64_t)0x00000000fffffffe, (std::int32_t)0x00000000, true}, { (std::int64_t)0x00000000ffffffff, (std::int32_t)0x00000000, true}, { (std::int64_t)0x0000000100000000, (std::int32_t)0x00000000, true}, { (std::int64_t)0x0000000200000000, (std::int32_t)0x00000000, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int32_t)0x00000000, true}, { (std::int64_t)0x7fffffffffffffff, (std::int32_t)0x00000000, true}, { (std::int64_t)0x8000000000000000, (std::int32_t)0x00000000, true}, { (std::int64_t)0x8000000000000001, (std::int32_t)0x00000000, true}, { (std::int64_t)0xfffffffffffffffe, (std::int32_t)0x00000000, true}, { (std::int64_t)0xffffffffffffffff, (std::int32_t)0x00000000, true}, { (std::int64_t)0x0000000000000000, (std::int32_t)0x00000001, true}, { (std::int64_t)0x0000000000000001, (std::int32_t)0x00000001, true}, { (std::int64_t)0x0000000000000002, (std::int32_t)0x00000001, true}, { (std::int64_t)0x000000007ffffffe, (std::int32_t)0x00000001, true}, { (std::int64_t)0x000000007fffffff, (std::int32_t)0x00000001, true}, { (std::int64_t)0x0000000080000000, (std::int32_t)0x00000001, true}, { (std::int64_t)0x0000000080000001, (std::int32_t)0x00000001, true}, { (std::int64_t)0x00000000fffffffe, (std::int32_t)0x00000001, true}, { (std::int64_t)0x00000000ffffffff, (std::int32_t)0x00000001, true}, { (std::int64_t)0x0000000100000000, (std::int32_t)0x00000001, true}, { (std::int64_t)0x0000000200000000, (std::int32_t)0x00000001, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int32_t)0x00000001, true}, { (std::int64_t)0x7fffffffffffffff, (std::int32_t)0x00000001, true}, { (std::int64_t)0x8000000000000000, (std::int32_t)0x00000001, false}, { (std::int64_t)0x8000000000000001, (std::int32_t)0x00000001, true}, { (std::int64_t)0xfffffffffffffffe, (std::int32_t)0x00000001, true}, { (std::int64_t)0xffffffffffffffff, (std::int32_t)0x00000001, true}, { (std::int64_t)0x0000000000000000, (std::int32_t)0x00000002, true}, { (std::int64_t)0x0000000000000001, (std::int32_t)0x00000002, true}, { (std::int64_t)0x0000000000000002, (std::int32_t)0x00000002, true}, { (std::int64_t)0x000000007ffffffe, (std::int32_t)0x00000002, true}, { (std::int64_t)0x000000007fffffff, (std::int32_t)0x00000002, true}, { (std::int64_t)0x0000000080000000, (std::int32_t)0x00000002, true}, { (std::int64_t)0x0000000080000001, (std::int32_t)0x00000002, true}, { (std::int64_t)0x00000000fffffffe, (std::int32_t)0x00000002, true}, { (std::int64_t)0x00000000ffffffff, (std::int32_t)0x00000002, true}, { (std::int64_t)0x0000000100000000, (std::int32_t)0x00000002, true}, { (std::int64_t)0x0000000200000000, (std::int32_t)0x00000002, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int32_t)0x00000002, true}, { (std::int64_t)0x7fffffffffffffff, (std::int32_t)0x00000002, true}, { (std::int64_t)0x8000000000000000, (std::int32_t)0x00000002, false}, { (std::int64_t)0x8000000000000001, (std::int32_t)0x00000002, false}, { (std::int64_t)0xfffffffffffffffe, (std::int32_t)0x00000002, true}, { (std::int64_t)0xffffffffffffffff, (std::int32_t)0x00000002, true}, { (std::int64_t)0x0000000000000000, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x0000000000000001, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x0000000000000002, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x000000007ffffffe, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x000000007fffffff, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x0000000080000000, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x0000000080000001, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x00000000fffffffe, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x00000000ffffffff, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x0000000100000000, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x0000000200000000, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x7fffffffffffffff, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x8000000000000000, (std::int32_t)0x7ffffffe, false}, { (std::int64_t)0x8000000000000001, (std::int32_t)0x7ffffffe, false}, { (std::int64_t)0xfffffffffffffffe, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0xffffffffffffffff, (std::int32_t)0x7ffffffe, true}, { (std::int64_t)0x0000000000000000, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x0000000000000001, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x0000000000000002, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x000000007ffffffe, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x000000007fffffff, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x0000000080000000, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x0000000080000001, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x00000000fffffffe, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x00000000ffffffff, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x0000000100000000, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x0000000200000000, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x7fffffffffffffff, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x8000000000000000, (std::int32_t)0x7fffffff, false}, { (std::int64_t)0x8000000000000001, (std::int32_t)0x7fffffff, false}, { (std::int64_t)0xfffffffffffffffe, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0xffffffffffffffff, (std::int32_t)0x7fffffff, true}, { (std::int64_t)0x0000000000000000, (std::int32_t)0x80000000, true}, { (std::int64_t)0x0000000000000001, (std::int32_t)0x80000000, true}, { (std::int64_t)0x0000000000000002, (std::int32_t)0x80000000, true}, { (std::int64_t)0x000000007ffffffe, (std::int32_t)0x80000000, true}, { (std::int64_t)0x000000007fffffff, (std::int32_t)0x80000000, true}, { (std::int64_t)0x0000000080000000, (std::int32_t)0x80000000, true}, { (std::int64_t)0x0000000080000001, (std::int32_t)0x80000000, true}, { (std::int64_t)0x00000000fffffffe, (std::int32_t)0x80000000, true}, { (std::int64_t)0x00000000ffffffff, (std::int32_t)0x80000000, true}, { (std::int64_t)0x0000000100000000, (std::int32_t)0x80000000, true}, { (std::int64_t)0x0000000200000000, (std::int32_t)0x80000000, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int32_t)0x80000000, false}, { (std::int64_t)0x7fffffffffffffff, (std::int32_t)0x80000000, false}, { (std::int64_t)0x8000000000000000, (std::int32_t)0x80000000, true}, { (std::int64_t)0x8000000000000001, (std::int32_t)0x80000000, true}, { (std::int64_t)0xfffffffffffffffe, (std::int32_t)0x80000000, true}, { (std::int64_t)0xffffffffffffffff, (std::int32_t)0x80000000, true}, { (std::int64_t)0x0000000000000000, (std::int32_t)0x80000001, true}, { (std::int64_t)0x0000000000000001, (std::int32_t)0x80000001, true}, { (std::int64_t)0x0000000000000002, (std::int32_t)0x80000001, true}, { (std::int64_t)0x000000007ffffffe, (std::int32_t)0x80000001, true}, { (std::int64_t)0x000000007fffffff, (std::int32_t)0x80000001, true}, { (std::int64_t)0x0000000080000000, (std::int32_t)0x80000001, true}, { (std::int64_t)0x0000000080000001, (std::int32_t)0x80000001, true}, { (std::int64_t)0x00000000fffffffe, (std::int32_t)0x80000001, true}, { (std::int64_t)0x00000000ffffffff, (std::int32_t)0x80000001, true}, { (std::int64_t)0x0000000100000000, (std::int32_t)0x80000001, true}, { (std::int64_t)0x0000000200000000, (std::int32_t)0x80000001, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int32_t)0x80000001, false}, { (std::int64_t)0x7fffffffffffffff, (std::int32_t)0x80000001, false}, { (std::int64_t)0x8000000000000000, (std::int32_t)0x80000001, true}, { (std::int64_t)0x8000000000000001, (std::int32_t)0x80000001, true}, { (std::int64_t)0xfffffffffffffffe, (std::int32_t)0x80000001, true}, { (std::int64_t)0xffffffffffffffff, (std::int32_t)0x80000001, true}, { (std::int64_t)0x0000000000000000, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0x0000000000000001, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0x0000000000000002, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0x000000007ffffffe, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0x000000007fffffff, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0x0000000080000000, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0x0000000080000001, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0x00000000fffffffe, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0x00000000ffffffff, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0x0000000100000000, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0x0000000200000000, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int32_t)0xfffffffe, false}, { (std::int64_t)0x7fffffffffffffff, (std::int32_t)0xfffffffe, false}, { (std::int64_t)0x8000000000000000, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0x8000000000000001, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0xfffffffffffffffe, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0xffffffffffffffff, (std::int32_t)0xfffffffe, true}, { (std::int64_t)0x0000000000000000, (std::int32_t)0xffffffff, true}, { (std::int64_t)0x0000000000000001, (std::int32_t)0xffffffff, true}, { (std::int64_t)0x0000000000000002, (std::int32_t)0xffffffff, true}, { (std::int64_t)0x000000007ffffffe, (std::int32_t)0xffffffff, true}, { (std::int64_t)0x000000007fffffff, (std::int32_t)0xffffffff, true}, { (std::int64_t)0x0000000080000000, (std::int32_t)0xffffffff, true}, { (std::int64_t)0x0000000080000001, (std::int32_t)0xffffffff, true}, { (std::int64_t)0x00000000fffffffe, (std::int32_t)0xffffffff, true}, { (std::int64_t)0x00000000ffffffff, (std::int32_t)0xffffffff, true}, { (std::int64_t)0x0000000100000000, (std::int32_t)0xffffffff, true}, { (std::int64_t)0x0000000200000000, (std::int32_t)0xffffffff, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int32_t)0xffffffff, true}, { (std::int64_t)0x7fffffffffffffff, (std::int32_t)0xffffffff, false}, { (std::int64_t)0x8000000000000000, (std::int32_t)0xffffffff, true}, { (std::int64_t)0x8000000000000001, (std::int32_t)0xffffffff, true}, { (std::int64_t)0xfffffffffffffffe, (std::int32_t)0xffffffff, true}, { (std::int64_t)0xffffffffffffffff, (std::int32_t)0xffffffff, true}, }; template<> TestVector< std::int64_t, std::int32_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int64_int32; this->count = COUNTOF(int64_int32); } static const TestCase< std::int64_t, std::int16_t, OpType::Sub > int64_int16[] = { { (std::int64_t)0x0000000000000000, (std::int16_t)0x0000, true}, { (std::int64_t)0x0000000000000001, (std::int16_t)0x0000, true}, { (std::int64_t)0x0000000000000002, (std::int16_t)0x0000, true}, { (std::int64_t)0x000000007ffffffe, (std::int16_t)0x0000, true}, { (std::int64_t)0x000000007fffffff, (std::int16_t)0x0000, true}, { (std::int64_t)0x0000000080000000, (std::int16_t)0x0000, true}, { (std::int64_t)0x0000000080000001, (std::int16_t)0x0000, true}, { (std::int64_t)0x00000000fffffffe, (std::int16_t)0x0000, true}, { (std::int64_t)0x00000000ffffffff, (std::int16_t)0x0000, true}, { (std::int64_t)0x0000000100000000, (std::int16_t)0x0000, true}, { (std::int64_t)0x0000000200000000, (std::int16_t)0x0000, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int16_t)0x0000, true}, { (std::int64_t)0x7fffffffffffffff, (std::int16_t)0x0000, true}, { (std::int64_t)0x8000000000000000, (std::int16_t)0x0000, true}, { (std::int64_t)0x8000000000000001, (std::int16_t)0x0000, true}, { (std::int64_t)0xfffffffffffffffe, (std::int16_t)0x0000, true}, { (std::int64_t)0xffffffffffffffff, (std::int16_t)0x0000, true}, { (std::int64_t)0x0000000000000000, (std::int16_t)0x0001, true}, { (std::int64_t)0x0000000000000001, (std::int16_t)0x0001, true}, { (std::int64_t)0x0000000000000002, (std::int16_t)0x0001, true}, { (std::int64_t)0x000000007ffffffe, (std::int16_t)0x0001, true}, { (std::int64_t)0x000000007fffffff, (std::int16_t)0x0001, true}, { (std::int64_t)0x0000000080000000, (std::int16_t)0x0001, true}, { (std::int64_t)0x0000000080000001, (std::int16_t)0x0001, true}, { (std::int64_t)0x00000000fffffffe, (std::int16_t)0x0001, true}, { (std::int64_t)0x00000000ffffffff, (std::int16_t)0x0001, true}, { (std::int64_t)0x0000000100000000, (std::int16_t)0x0001, true}, { (std::int64_t)0x0000000200000000, (std::int16_t)0x0001, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int16_t)0x0001, true}, { (std::int64_t)0x7fffffffffffffff, (std::int16_t)0x0001, true}, { (std::int64_t)0x8000000000000000, (std::int16_t)0x0001, false}, { (std::int64_t)0x8000000000000001, (std::int16_t)0x0001, true}, { (std::int64_t)0xfffffffffffffffe, (std::int16_t)0x0001, true}, { (std::int64_t)0xffffffffffffffff, (std::int16_t)0x0001, true}, { (std::int64_t)0x0000000000000000, (std::int16_t)0x0002, true}, { (std::int64_t)0x0000000000000001, (std::int16_t)0x0002, true}, { (std::int64_t)0x0000000000000002, (std::int16_t)0x0002, true}, { (std::int64_t)0x000000007ffffffe, (std::int16_t)0x0002, true}, { (std::int64_t)0x000000007fffffff, (std::int16_t)0x0002, true}, { (std::int64_t)0x0000000080000000, (std::int16_t)0x0002, true}, { (std::int64_t)0x0000000080000001, (std::int16_t)0x0002, true}, { (std::int64_t)0x00000000fffffffe, (std::int16_t)0x0002, true}, { (std::int64_t)0x00000000ffffffff, (std::int16_t)0x0002, true}, { (std::int64_t)0x0000000100000000, (std::int16_t)0x0002, true}, { (std::int64_t)0x0000000200000000, (std::int16_t)0x0002, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int16_t)0x0002, true}, { (std::int64_t)0x7fffffffffffffff, (std::int16_t)0x0002, true}, { (std::int64_t)0x8000000000000000, (std::int16_t)0x0002, false}, { (std::int64_t)0x8000000000000001, (std::int16_t)0x0002, false}, { (std::int64_t)0xfffffffffffffffe, (std::int16_t)0x0002, true}, { (std::int64_t)0xffffffffffffffff, (std::int16_t)0x0002, true}, { (std::int64_t)0x0000000000000000, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x0000000000000001, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x0000000000000002, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x000000007ffffffe, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x000000007fffffff, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x0000000080000000, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x0000000080000001, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x00000000fffffffe, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x00000000ffffffff, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x0000000100000000, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x0000000200000000, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x7fffffffffffffff, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x8000000000000000, (std::int16_t)0x7ffe, false}, { (std::int64_t)0x8000000000000001, (std::int16_t)0x7ffe, false}, { (std::int64_t)0xfffffffffffffffe, (std::int16_t)0x7ffe, true}, { (std::int64_t)0xffffffffffffffff, (std::int16_t)0x7ffe, true}, { (std::int64_t)0x0000000000000000, (std::int16_t)0x7fff, true}, { (std::int64_t)0x0000000000000001, (std::int16_t)0x7fff, true}, { (std::int64_t)0x0000000000000002, (std::int16_t)0x7fff, true}, { (std::int64_t)0x000000007ffffffe, (std::int16_t)0x7fff, true}, { (std::int64_t)0x000000007fffffff, (std::int16_t)0x7fff, true}, { (std::int64_t)0x0000000080000000, (std::int16_t)0x7fff, true}, { (std::int64_t)0x0000000080000001, (std::int16_t)0x7fff, true}, { (std::int64_t)0x00000000fffffffe, (std::int16_t)0x7fff, true}, { (std::int64_t)0x00000000ffffffff, (std::int16_t)0x7fff, true}, { (std::int64_t)0x0000000100000000, (std::int16_t)0x7fff, true}, { (std::int64_t)0x0000000200000000, (std::int16_t)0x7fff, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int16_t)0x7fff, true}, { (std::int64_t)0x7fffffffffffffff, (std::int16_t)0x7fff, true}, { (std::int64_t)0x8000000000000000, (std::int16_t)0x7fff, false}, { (std::int64_t)0x8000000000000001, (std::int16_t)0x7fff, false}, { (std::int64_t)0xfffffffffffffffe, (std::int16_t)0x7fff, true}, { (std::int64_t)0xffffffffffffffff, (std::int16_t)0x7fff, true}, { (std::int64_t)0x0000000000000000, (std::int16_t)0x8000, true}, { (std::int64_t)0x0000000000000001, (std::int16_t)0x8000, true}, { (std::int64_t)0x0000000000000002, (std::int16_t)0x8000, true}, { (std::int64_t)0x000000007ffffffe, (std::int16_t)0x8000, true}, { (std::int64_t)0x000000007fffffff, (std::int16_t)0x8000, true}, { (std::int64_t)0x0000000080000000, (std::int16_t)0x8000, true}, { (std::int64_t)0x0000000080000001, (std::int16_t)0x8000, true}, { (std::int64_t)0x00000000fffffffe, (std::int16_t)0x8000, true}, { (std::int64_t)0x00000000ffffffff, (std::int16_t)0x8000, true}, { (std::int64_t)0x0000000100000000, (std::int16_t)0x8000, true}, { (std::int64_t)0x0000000200000000, (std::int16_t)0x8000, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int16_t)0x8000, false}, { (std::int64_t)0x7fffffffffffffff, (std::int16_t)0x8000, false}, { (std::int64_t)0x8000000000000000, (std::int16_t)0x8000, true}, { (std::int64_t)0x8000000000000001, (std::int16_t)0x8000, true}, { (std::int64_t)0xfffffffffffffffe, (std::int16_t)0x8000, true}, { (std::int64_t)0xffffffffffffffff, (std::int16_t)0x8000, true}, { (std::int64_t)0x0000000000000000, (std::int16_t)0x8001, true}, { (std::int64_t)0x0000000000000001, (std::int16_t)0x8001, true}, { (std::int64_t)0x0000000000000002, (std::int16_t)0x8001, true}, { (std::int64_t)0x000000007ffffffe, (std::int16_t)0x8001, true}, { (std::int64_t)0x000000007fffffff, (std::int16_t)0x8001, true}, { (std::int64_t)0x0000000080000000, (std::int16_t)0x8001, true}, { (std::int64_t)0x0000000080000001, (std::int16_t)0x8001, true}, { (std::int64_t)0x00000000fffffffe, (std::int16_t)0x8001, true}, { (std::int64_t)0x00000000ffffffff, (std::int16_t)0x8001, true}, { (std::int64_t)0x0000000100000000, (std::int16_t)0x8001, true}, { (std::int64_t)0x0000000200000000, (std::int16_t)0x8001, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int16_t)0x8001, false}, { (std::int64_t)0x7fffffffffffffff, (std::int16_t)0x8001, false}, { (std::int64_t)0x8000000000000000, (std::int16_t)0x8001, true}, { (std::int64_t)0x8000000000000001, (std::int16_t)0x8001, true}, { (std::int64_t)0xfffffffffffffffe, (std::int16_t)0x8001, true}, { (std::int64_t)0xffffffffffffffff, (std::int16_t)0x8001, true}, { (std::int64_t)0x0000000000000000, (std::int16_t)0xfffe, true}, { (std::int64_t)0x0000000000000001, (std::int16_t)0xfffe, true}, { (std::int64_t)0x0000000000000002, (std::int16_t)0xfffe, true}, { (std::int64_t)0x000000007ffffffe, (std::int16_t)0xfffe, true}, { (std::int64_t)0x000000007fffffff, (std::int16_t)0xfffe, true}, { (std::int64_t)0x0000000080000000, (std::int16_t)0xfffe, true}, { (std::int64_t)0x0000000080000001, (std::int16_t)0xfffe, true}, { (std::int64_t)0x00000000fffffffe, (std::int16_t)0xfffe, true}, { (std::int64_t)0x00000000ffffffff, (std::int16_t)0xfffe, true}, { (std::int64_t)0x0000000100000000, (std::int16_t)0xfffe, true}, { (std::int64_t)0x0000000200000000, (std::int16_t)0xfffe, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int16_t)0xfffe, false}, { (std::int64_t)0x7fffffffffffffff, (std::int16_t)0xfffe, false}, { (std::int64_t)0x8000000000000000, (std::int16_t)0xfffe, true}, { (std::int64_t)0x8000000000000001, (std::int16_t)0xfffe, true}, { (std::int64_t)0xfffffffffffffffe, (std::int16_t)0xfffe, true}, { (std::int64_t)0xffffffffffffffff, (std::int16_t)0xfffe, true}, { (std::int64_t)0x0000000000000000, (std::int16_t)0xffff, true}, { (std::int64_t)0x0000000000000001, (std::int16_t)0xffff, true}, { (std::int64_t)0x0000000000000002, (std::int16_t)0xffff, true}, { (std::int64_t)0x000000007ffffffe, (std::int16_t)0xffff, true}, { (std::int64_t)0x000000007fffffff, (std::int16_t)0xffff, true}, { (std::int64_t)0x0000000080000000, (std::int16_t)0xffff, true}, { (std::int64_t)0x0000000080000001, (std::int16_t)0xffff, true}, { (std::int64_t)0x00000000fffffffe, (std::int16_t)0xffff, true}, { (std::int64_t)0x00000000ffffffff, (std::int16_t)0xffff, true}, { (std::int64_t)0x0000000100000000, (std::int16_t)0xffff, true}, { (std::int64_t)0x0000000200000000, (std::int16_t)0xffff, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int16_t)0xffff, true}, { (std::int64_t)0x7fffffffffffffff, (std::int16_t)0xffff, false}, { (std::int64_t)0x8000000000000000, (std::int16_t)0xffff, true}, { (std::int64_t)0x8000000000000001, (std::int16_t)0xffff, true}, { (std::int64_t)0xfffffffffffffffe, (std::int16_t)0xffff, true}, { (std::int64_t)0xffffffffffffffff, (std::int16_t)0xffff, true}, }; template<> TestVector< std::int64_t, std::int16_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int64_int16; this->count = COUNTOF(int64_int16); } static const TestCase< std::int64_t, std::int8_t, OpType::Sub > int64_int8[] = { { (std::int64_t)0x0000000000000000, (std::int8_t)0x00, true}, { (std::int64_t)0x0000000000000001, (std::int8_t)0x00, true}, { (std::int64_t)0x0000000000000002, (std::int8_t)0x00, true}, { (std::int64_t)0x000000007ffffffe, (std::int8_t)0x00, true}, { (std::int64_t)0x000000007fffffff, (std::int8_t)0x00, true}, { (std::int64_t)0x0000000080000000, (std::int8_t)0x00, true}, { (std::int64_t)0x0000000080000001, (std::int8_t)0x00, true}, { (std::int64_t)0x00000000fffffffe, (std::int8_t)0x00, true}, { (std::int64_t)0x00000000ffffffff, (std::int8_t)0x00, true}, { (std::int64_t)0x0000000100000000, (std::int8_t)0x00, true}, { (std::int64_t)0x0000000200000000, (std::int8_t)0x00, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int8_t)0x00, true}, { (std::int64_t)0x7fffffffffffffff, (std::int8_t)0x00, true}, { (std::int64_t)0x8000000000000000, (std::int8_t)0x00, true}, { (std::int64_t)0x8000000000000001, (std::int8_t)0x00, true}, { (std::int64_t)0xfffffffffffffffe, (std::int8_t)0x00, true}, { (std::int64_t)0xffffffffffffffff, (std::int8_t)0x00, true}, { (std::int64_t)0x0000000000000000, (std::int8_t)0x01, true}, { (std::int64_t)0x0000000000000001, (std::int8_t)0x01, true}, { (std::int64_t)0x0000000000000002, (std::int8_t)0x01, true}, { (std::int64_t)0x000000007ffffffe, (std::int8_t)0x01, true}, { (std::int64_t)0x000000007fffffff, (std::int8_t)0x01, true}, { (std::int64_t)0x0000000080000000, (std::int8_t)0x01, true}, { (std::int64_t)0x0000000080000001, (std::int8_t)0x01, true}, { (std::int64_t)0x00000000fffffffe, (std::int8_t)0x01, true}, { (std::int64_t)0x00000000ffffffff, (std::int8_t)0x01, true}, { (std::int64_t)0x0000000100000000, (std::int8_t)0x01, true}, { (std::int64_t)0x0000000200000000, (std::int8_t)0x01, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int8_t)0x01, true}, { (std::int64_t)0x7fffffffffffffff, (std::int8_t)0x01, true}, { (std::int64_t)0x8000000000000000, (std::int8_t)0x01, false}, { (std::int64_t)0x8000000000000001, (std::int8_t)0x01, true}, { (std::int64_t)0xfffffffffffffffe, (std::int8_t)0x01, true}, { (std::int64_t)0xffffffffffffffff, (std::int8_t)0x01, true}, { (std::int64_t)0x0000000000000000, (std::int8_t)0x02, true}, { (std::int64_t)0x0000000000000001, (std::int8_t)0x02, true}, { (std::int64_t)0x0000000000000002, (std::int8_t)0x02, true}, { (std::int64_t)0x000000007ffffffe, (std::int8_t)0x02, true}, { (std::int64_t)0x000000007fffffff, (std::int8_t)0x02, true}, { (std::int64_t)0x0000000080000000, (std::int8_t)0x02, true}, { (std::int64_t)0x0000000080000001, (std::int8_t)0x02, true}, { (std::int64_t)0x00000000fffffffe, (std::int8_t)0x02, true}, { (std::int64_t)0x00000000ffffffff, (std::int8_t)0x02, true}, { (std::int64_t)0x0000000100000000, (std::int8_t)0x02, true}, { (std::int64_t)0x0000000200000000, (std::int8_t)0x02, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int8_t)0x02, true}, { (std::int64_t)0x7fffffffffffffff, (std::int8_t)0x02, true}, { (std::int64_t)0x8000000000000000, (std::int8_t)0x02, false}, { (std::int64_t)0x8000000000000001, (std::int8_t)0x02, false}, { (std::int64_t)0xfffffffffffffffe, (std::int8_t)0x02, true}, { (std::int64_t)0xffffffffffffffff, (std::int8_t)0x02, true}, { (std::int64_t)0x0000000000000000, (std::int8_t)0x7e, true}, { (std::int64_t)0x0000000000000001, (std::int8_t)0x7e, true}, { (std::int64_t)0x0000000000000002, (std::int8_t)0x7e, true}, { (std::int64_t)0x000000007ffffffe, (std::int8_t)0x7e, true}, { (std::int64_t)0x000000007fffffff, (std::int8_t)0x7e, true}, { (std::int64_t)0x0000000080000000, (std::int8_t)0x7e, true}, { (std::int64_t)0x0000000080000001, (std::int8_t)0x7e, true}, { (std::int64_t)0x00000000fffffffe, (std::int8_t)0x7e, true}, { (std::int64_t)0x00000000ffffffff, (std::int8_t)0x7e, true}, { (std::int64_t)0x0000000100000000, (std::int8_t)0x7e, true}, { (std::int64_t)0x0000000200000000, (std::int8_t)0x7e, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int8_t)0x7e, true}, { (std::int64_t)0x7fffffffffffffff, (std::int8_t)0x7e, true}, { (std::int64_t)0x8000000000000000, (std::int8_t)0x7e, false}, { (std::int64_t)0x8000000000000001, (std::int8_t)0x7e, false}, { (std::int64_t)0xfffffffffffffffe, (std::int8_t)0x7e, true}, { (std::int64_t)0xffffffffffffffff, (std::int8_t)0x7e, true}, { (std::int64_t)0x0000000000000000, (std::int8_t)0x7f, true}, { (std::int64_t)0x0000000000000001, (std::int8_t)0x7f, true}, { (std::int64_t)0x0000000000000002, (std::int8_t)0x7f, true}, { (std::int64_t)0x000000007ffffffe, (std::int8_t)0x7f, true}, { (std::int64_t)0x000000007fffffff, (std::int8_t)0x7f, true}, { (std::int64_t)0x0000000080000000, (std::int8_t)0x7f, true}, { (std::int64_t)0x0000000080000001, (std::int8_t)0x7f, true}, { (std::int64_t)0x00000000fffffffe, (std::int8_t)0x7f, true}, { (std::int64_t)0x00000000ffffffff, (std::int8_t)0x7f, true}, { (std::int64_t)0x0000000100000000, (std::int8_t)0x7f, true}, { (std::int64_t)0x0000000200000000, (std::int8_t)0x7f, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int8_t)0x7f, true}, { (std::int64_t)0x7fffffffffffffff, (std::int8_t)0x7f, true}, { (std::int64_t)0x8000000000000000, (std::int8_t)0x7f, false}, { (std::int64_t)0x8000000000000001, (std::int8_t)0x7f, false}, { (std::int64_t)0xfffffffffffffffe, (std::int8_t)0x7f, true}, { (std::int64_t)0xffffffffffffffff, (std::int8_t)0x7f, true}, { (std::int64_t)0x0000000000000000, (std::int8_t)0x80, true}, { (std::int64_t)0x0000000000000001, (std::int8_t)0x80, true}, { (std::int64_t)0x0000000000000002, (std::int8_t)0x80, true}, { (std::int64_t)0x000000007ffffffe, (std::int8_t)0x80, true}, { (std::int64_t)0x000000007fffffff, (std::int8_t)0x80, true}, { (std::int64_t)0x0000000080000000, (std::int8_t)0x80, true}, { (std::int64_t)0x0000000080000001, (std::int8_t)0x80, true}, { (std::int64_t)0x00000000fffffffe, (std::int8_t)0x80, true}, { (std::int64_t)0x00000000ffffffff, (std::int8_t)0x80, true}, { (std::int64_t)0x0000000100000000, (std::int8_t)0x80, true}, { (std::int64_t)0x0000000200000000, (std::int8_t)0x80, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int8_t)0x80, false}, { (std::int64_t)0x7fffffffffffffff, (std::int8_t)0x80, false}, { (std::int64_t)0x8000000000000000, (std::int8_t)0x80, true}, { (std::int64_t)0x8000000000000001, (std::int8_t)0x80, true}, { (std::int64_t)0xfffffffffffffffe, (std::int8_t)0x80, true}, { (std::int64_t)0xffffffffffffffff, (std::int8_t)0x80, true}, { (std::int64_t)0x0000000000000000, (std::int8_t)0x81, true}, { (std::int64_t)0x0000000000000001, (std::int8_t)0x81, true}, { (std::int64_t)0x0000000000000002, (std::int8_t)0x81, true}, { (std::int64_t)0x000000007ffffffe, (std::int8_t)0x81, true}, { (std::int64_t)0x000000007fffffff, (std::int8_t)0x81, true}, { (std::int64_t)0x0000000080000000, (std::int8_t)0x81, true}, { (std::int64_t)0x0000000080000001, (std::int8_t)0x81, true}, { (std::int64_t)0x00000000fffffffe, (std::int8_t)0x81, true}, { (std::int64_t)0x00000000ffffffff, (std::int8_t)0x81, true}, { (std::int64_t)0x0000000100000000, (std::int8_t)0x81, true}, { (std::int64_t)0x0000000200000000, (std::int8_t)0x81, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int8_t)0x81, false}, { (std::int64_t)0x7fffffffffffffff, (std::int8_t)0x81, false}, { (std::int64_t)0x8000000000000000, (std::int8_t)0x81, true}, { (std::int64_t)0x8000000000000001, (std::int8_t)0x81, true}, { (std::int64_t)0xfffffffffffffffe, (std::int8_t)0x81, true}, { (std::int64_t)0xffffffffffffffff, (std::int8_t)0x81, true}, { (std::int64_t)0x0000000000000000, (std::int8_t)0xfe, true}, { (std::int64_t)0x0000000000000001, (std::int8_t)0xfe, true}, { (std::int64_t)0x0000000000000002, (std::int8_t)0xfe, true}, { (std::int64_t)0x000000007ffffffe, (std::int8_t)0xfe, true}, { (std::int64_t)0x000000007fffffff, (std::int8_t)0xfe, true}, { (std::int64_t)0x0000000080000000, (std::int8_t)0xfe, true}, { (std::int64_t)0x0000000080000001, (std::int8_t)0xfe, true}, { (std::int64_t)0x00000000fffffffe, (std::int8_t)0xfe, true}, { (std::int64_t)0x00000000ffffffff, (std::int8_t)0xfe, true}, { (std::int64_t)0x0000000100000000, (std::int8_t)0xfe, true}, { (std::int64_t)0x0000000200000000, (std::int8_t)0xfe, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int8_t)0xfe, false}, { (std::int64_t)0x7fffffffffffffff, (std::int8_t)0xfe, false}, { (std::int64_t)0x8000000000000000, (std::int8_t)0xfe, true}, { (std::int64_t)0x8000000000000001, (std::int8_t)0xfe, true}, { (std::int64_t)0xfffffffffffffffe, (std::int8_t)0xfe, true}, { (std::int64_t)0xffffffffffffffff, (std::int8_t)0xfe, true}, { (std::int64_t)0x0000000000000000, (std::int8_t)0xff, true}, { (std::int64_t)0x0000000000000001, (std::int8_t)0xff, true}, { (std::int64_t)0x0000000000000002, (std::int8_t)0xff, true}, { (std::int64_t)0x000000007ffffffe, (std::int8_t)0xff, true}, { (std::int64_t)0x000000007fffffff, (std::int8_t)0xff, true}, { (std::int64_t)0x0000000080000000, (std::int8_t)0xff, true}, { (std::int64_t)0x0000000080000001, (std::int8_t)0xff, true}, { (std::int64_t)0x00000000fffffffe, (std::int8_t)0xff, true}, { (std::int64_t)0x00000000ffffffff, (std::int8_t)0xff, true}, { (std::int64_t)0x0000000100000000, (std::int8_t)0xff, true}, { (std::int64_t)0x0000000200000000, (std::int8_t)0xff, true}, { (std::int64_t)0x7ffffffffffffffe, (std::int8_t)0xff, true}, { (std::int64_t)0x7fffffffffffffff, (std::int8_t)0xff, false}, { (std::int64_t)0x8000000000000000, (std::int8_t)0xff, true}, { (std::int64_t)0x8000000000000001, (std::int8_t)0xff, true}, { (std::int64_t)0xfffffffffffffffe, (std::int8_t)0xff, true}, { (std::int64_t)0xffffffffffffffff, (std::int8_t)0xff, true}, }; template<> TestVector< std::int64_t, std::int8_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int64_int8; this->count = COUNTOF(int64_int8); } static const TestCase< std::int8_t, std::int64_t, OpType::Sub > int8_int64[] = { { (std::int8_t)0x00, (std::int64_t)0x0000000000000000, true}, { (std::int8_t)0x01, (std::int64_t)0x0000000000000000, true}, { (std::int8_t)0x02, (std::int64_t)0x0000000000000000, true}, { (std::int8_t)0x7e, (std::int64_t)0x0000000000000000, true}, { (std::int8_t)0x7f, (std::int64_t)0x0000000000000000, true}, { (std::int8_t)0x80, (std::int64_t)0x0000000000000000, true}, { (std::int8_t)0x81, (std::int64_t)0x0000000000000000, true}, { (std::int8_t)0xfe, (std::int64_t)0x0000000000000000, true}, { (std::int8_t)0xff, (std::int64_t)0x0000000000000000, true}, { (std::int8_t)0x00, (std::int64_t)0x0000000000000001, true}, { (std::int8_t)0x01, (std::int64_t)0x0000000000000001, true}, { (std::int8_t)0x02, (std::int64_t)0x0000000000000001, true}, { (std::int8_t)0x7e, (std::int64_t)0x0000000000000001, true}, { (std::int8_t)0x7f, (std::int64_t)0x0000000000000001, true}, { (std::int8_t)0x80, (std::int64_t)0x0000000000000001, false}, { (std::int8_t)0x81, (std::int64_t)0x0000000000000001, true}, { (std::int8_t)0xfe, (std::int64_t)0x0000000000000001, true}, { (std::int8_t)0xff, (std::int64_t)0x0000000000000001, true}, { (std::int8_t)0x00, (std::int64_t)0x0000000000000002, true}, { (std::int8_t)0x01, (std::int64_t)0x0000000000000002, true}, { (std::int8_t)0x02, (std::int64_t)0x0000000000000002, true}, { (std::int8_t)0x7e, (std::int64_t)0x0000000000000002, true}, { (std::int8_t)0x7f, (std::int64_t)0x0000000000000002, true}, { (std::int8_t)0x80, (std::int64_t)0x0000000000000002, false}, { (std::int8_t)0x81, (std::int64_t)0x0000000000000002, false}, { (std::int8_t)0xfe, (std::int64_t)0x0000000000000002, true}, { (std::int8_t)0xff, (std::int64_t)0x0000000000000002, true}, { (std::int8_t)0x00, (std::int64_t)0x000000007ffffffe, false}, { (std::int8_t)0x01, (std::int64_t)0x000000007ffffffe, false}, { (std::int8_t)0x02, (std::int64_t)0x000000007ffffffe, false}, { (std::int8_t)0x7e, (std::int64_t)0x000000007ffffffe, false}, { (std::int8_t)0x7f, (std::int64_t)0x000000007ffffffe, false}, { (std::int8_t)0x80, (std::int64_t)0x000000007ffffffe, false}, { (std::int8_t)0x81, (std::int64_t)0x000000007ffffffe, false}, { (std::int8_t)0xfe, (std::int64_t)0x000000007ffffffe, false}, { (std::int8_t)0xff, (std::int64_t)0x000000007ffffffe, false}, { (std::int8_t)0x00, (std::int64_t)0x000000007fffffff, false}, { (std::int8_t)0x01, (std::int64_t)0x000000007fffffff, false}, { (std::int8_t)0x02, (std::int64_t)0x000000007fffffff, false}, { (std::int8_t)0x7e, (std::int64_t)0x000000007fffffff, false}, { (std::int8_t)0x7f, (std::int64_t)0x000000007fffffff, false}, { (std::int8_t)0x80, (std::int64_t)0x000000007fffffff, false}, { (std::int8_t)0x81, (std::int64_t)0x000000007fffffff, false}, { (std::int8_t)0xfe, (std::int64_t)0x000000007fffffff, false}, { (std::int8_t)0xff, (std::int64_t)0x000000007fffffff, false}, { (std::int8_t)0x00, (std::int64_t)0x0000000080000000, false}, { (std::int8_t)0x01, (std::int64_t)0x0000000080000000, false}, { (std::int8_t)0x02, (std::int64_t)0x0000000080000000, false}, { (std::int8_t)0x7e, (std::int64_t)0x0000000080000000, false}, { (std::int8_t)0x7f, (std::int64_t)0x0000000080000000, false}, { (std::int8_t)0x80, (std::int64_t)0x0000000080000000, false}, { (std::int8_t)0x81, (std::int64_t)0x0000000080000000, false}, { (std::int8_t)0xfe, (std::int64_t)0x0000000080000000, false}, { (std::int8_t)0xff, (std::int64_t)0x0000000080000000, false}, { (std::int8_t)0x00, (std::int64_t)0x0000000080000001, false}, { (std::int8_t)0x01, (std::int64_t)0x0000000080000001, false}, { (std::int8_t)0x02, (std::int64_t)0x0000000080000001, false}, { (std::int8_t)0x7e, (std::int64_t)0x0000000080000001, false}, { (std::int8_t)0x7f, (std::int64_t)0x0000000080000001, false}, { (std::int8_t)0x80, (std::int64_t)0x0000000080000001, false}, { (std::int8_t)0x81, (std::int64_t)0x0000000080000001, false}, { (std::int8_t)0xfe, (std::int64_t)0x0000000080000001, false}, { (std::int8_t)0xff, (std::int64_t)0x0000000080000001, false}, { (std::int8_t)0x00, (std::int64_t)0x00000000fffffffe, false}, { (std::int8_t)0x01, (std::int64_t)0x00000000fffffffe, false}, { (std::int8_t)0x02, (std::int64_t)0x00000000fffffffe, false}, { (std::int8_t)0x7e, (std::int64_t)0x00000000fffffffe, false}, { (std::int8_t)0x7f, (std::int64_t)0x00000000fffffffe, false}, { (std::int8_t)0x80, (std::int64_t)0x00000000fffffffe, false}, { (std::int8_t)0x81, (std::int64_t)0x00000000fffffffe, false}, { (std::int8_t)0xfe, (std::int64_t)0x00000000fffffffe, false}, { (std::int8_t)0xff, (std::int64_t)0x00000000fffffffe, false}, { (std::int8_t)0x00, (std::int64_t)0x00000000ffffffff, false}, { (std::int8_t)0x01, (std::int64_t)0x00000000ffffffff, false}, { (std::int8_t)0x02, (std::int64_t)0x00000000ffffffff, false}, { (std::int8_t)0x7e, (std::int64_t)0x00000000ffffffff, false}, { (std::int8_t)0x7f, (std::int64_t)0x00000000ffffffff, false}, { (std::int8_t)0x80, (std::int64_t)0x00000000ffffffff, false}, { (std::int8_t)0x81, (std::int64_t)0x00000000ffffffff, false}, { (std::int8_t)0xfe, (std::int64_t)0x00000000ffffffff, false}, { (std::int8_t)0xff, (std::int64_t)0x00000000ffffffff, false}, { (std::int8_t)0x00, (std::int64_t)0x0000000100000000, false}, { (std::int8_t)0x01, (std::int64_t)0x0000000100000000, false}, { (std::int8_t)0x02, (std::int64_t)0x0000000100000000, false}, { (std::int8_t)0x7e, (std::int64_t)0x0000000100000000, false}, { (std::int8_t)0x7f, (std::int64_t)0x0000000100000000, false}, { (std::int8_t)0x80, (std::int64_t)0x0000000100000000, false}, { (std::int8_t)0x81, (std::int64_t)0x0000000100000000, false}, { (std::int8_t)0xfe, (std::int64_t)0x0000000100000000, false}, { (std::int8_t)0xff, (std::int64_t)0x0000000100000000, false}, { (std::int8_t)0x00, (std::int64_t)0x0000000200000000, false}, { (std::int8_t)0x01, (std::int64_t)0x0000000200000000, false}, { (std::int8_t)0x02, (std::int64_t)0x0000000200000000, false}, { (std::int8_t)0x7e, (std::int64_t)0x0000000200000000, false}, { (std::int8_t)0x7f, (std::int64_t)0x0000000200000000, false}, { (std::int8_t)0x80, (std::int64_t)0x0000000200000000, false}, { (std::int8_t)0x81, (std::int64_t)0x0000000200000000, false}, { (std::int8_t)0xfe, (std::int64_t)0x0000000200000000, false}, { (std::int8_t)0xff, (std::int64_t)0x0000000200000000, false}, { (std::int8_t)0x00, (std::int64_t)0x7ffffffffffffffe, false}, { (std::int8_t)0x01, (std::int64_t)0x7ffffffffffffffe, false}, { (std::int8_t)0x02, (std::int64_t)0x7ffffffffffffffe, false}, { (std::int8_t)0x7e, (std::int64_t)0x7ffffffffffffffe, false}, { (std::int8_t)0x7f, (std::int64_t)0x7ffffffffffffffe, false}, { (std::int8_t)0x80, (std::int64_t)0x7ffffffffffffffe, false}, { (std::int8_t)0x81, (std::int64_t)0x7ffffffffffffffe, false}, { (std::int8_t)0xfe, (std::int64_t)0x7ffffffffffffffe, false}, { (std::int8_t)0xff, (std::int64_t)0x7ffffffffffffffe, false}, { (std::int8_t)0x00, (std::int64_t)0x7fffffffffffffff, false}, { (std::int8_t)0x01, (std::int64_t)0x7fffffffffffffff, false}, { (std::int8_t)0x02, (std::int64_t)0x7fffffffffffffff, false}, { (std::int8_t)0x7e, (std::int64_t)0x7fffffffffffffff, false}, { (std::int8_t)0x7f, (std::int64_t)0x7fffffffffffffff, false}, { (std::int8_t)0x80, (std::int64_t)0x7fffffffffffffff, false}, { (std::int8_t)0x81, (std::int64_t)0x7fffffffffffffff, false}, { (std::int8_t)0xfe, (std::int64_t)0x7fffffffffffffff, false}, { (std::int8_t)0xff, (std::int64_t)0x7fffffffffffffff, false}, { (std::int8_t)0x00, (std::int64_t)0x8000000000000000, false}, { (std::int8_t)0x01, (std::int64_t)0x8000000000000000, false}, { (std::int8_t)0x02, (std::int64_t)0x8000000000000000, false}, { (std::int8_t)0x7e, (std::int64_t)0x8000000000000000, false}, { (std::int8_t)0x7f, (std::int64_t)0x8000000000000000, false}, { (std::int8_t)0x80, (std::int64_t)0x8000000000000000, false}, { (std::int8_t)0x81, (std::int64_t)0x8000000000000000, false}, { (std::int8_t)0xfe, (std::int64_t)0x8000000000000000, false}, { (std::int8_t)0xff, (std::int64_t)0x8000000000000000, false}, { (std::int8_t)0x00, (std::int64_t)0x8000000000000001, false}, { (std::int8_t)0x01, (std::int64_t)0x8000000000000001, false}, { (std::int8_t)0x02, (std::int64_t)0x8000000000000001, false}, { (std::int8_t)0x7e, (std::int64_t)0x8000000000000001, false}, { (std::int8_t)0x7f, (std::int64_t)0x8000000000000001, false}, { (std::int8_t)0x80, (std::int64_t)0x8000000000000001, false}, { (std::int8_t)0x81, (std::int64_t)0x8000000000000001, false}, { (std::int8_t)0xfe, (std::int64_t)0x8000000000000001, false}, { (std::int8_t)0xff, (std::int64_t)0x8000000000000001, false}, { (std::int8_t)0x00, (std::int64_t)0xfffffffffffffffe, true}, { (std::int8_t)0x01, (std::int64_t)0xfffffffffffffffe, true}, { (std::int8_t)0x02, (std::int64_t)0xfffffffffffffffe, true}, { (std::int8_t)0x7e, (std::int64_t)0xfffffffffffffffe, false}, { (std::int8_t)0x7f, (std::int64_t)0xfffffffffffffffe, false}, { (std::int8_t)0x80, (std::int64_t)0xfffffffffffffffe, true}, { (std::int8_t)0x81, (std::int64_t)0xfffffffffffffffe, true}, { (std::int8_t)0xfe, (std::int64_t)0xfffffffffffffffe, true}, { (std::int8_t)0xff, (std::int64_t)0xfffffffffffffffe, true}, { (std::int8_t)0x00, (std::int64_t)0xffffffffffffffff, true}, { (std::int8_t)0x01, (std::int64_t)0xffffffffffffffff, true}, { (std::int8_t)0x02, (std::int64_t)0xffffffffffffffff, true}, { (std::int8_t)0x7e, (std::int64_t)0xffffffffffffffff, true}, { (std::int8_t)0x7f, (std::int64_t)0xffffffffffffffff, false}, { (std::int8_t)0x80, (std::int64_t)0xffffffffffffffff, true}, { (std::int8_t)0x81, (std::int64_t)0xffffffffffffffff, true}, { (std::int8_t)0xfe, (std::int64_t)0xffffffffffffffff, true}, { (std::int8_t)0xff, (std::int64_t)0xffffffffffffffff, true}, }; template<> TestVector< std::int8_t, std::int64_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int8_int64; this->count = COUNTOF(int8_int64); } static const TestCase< std::int8_t, std::int32_t, OpType::Sub > int8_int32[] = { { (std::int8_t)0x00, (std::int32_t)0x00000000, true}, { (std::int8_t)0x01, (std::int32_t)0x00000000, true}, { (std::int8_t)0x02, (std::int32_t)0x00000000, true}, { (std::int8_t)0x7e, (std::int32_t)0x00000000, true}, { (std::int8_t)0x7f, (std::int32_t)0x00000000, true}, { (std::int8_t)0x80, (std::int32_t)0x00000000, true}, { (std::int8_t)0x81, (std::int32_t)0x00000000, true}, { (std::int8_t)0xfe, (std::int32_t)0x00000000, true}, { (std::int8_t)0xff, (std::int32_t)0x00000000, true}, { (std::int8_t)0x00, (std::int32_t)0x00000001, true}, { (std::int8_t)0x01, (std::int32_t)0x00000001, true}, { (std::int8_t)0x02, (std::int32_t)0x00000001, true}, { (std::int8_t)0x7e, (std::int32_t)0x00000001, true}, { (std::int8_t)0x7f, (std::int32_t)0x00000001, true}, { (std::int8_t)0x80, (std::int32_t)0x00000001, false}, { (std::int8_t)0x81, (std::int32_t)0x00000001, true}, { (std::int8_t)0xfe, (std::int32_t)0x00000001, true}, { (std::int8_t)0xff, (std::int32_t)0x00000001, true}, { (std::int8_t)0x00, (std::int32_t)0x00000002, true}, { (std::int8_t)0x01, (std::int32_t)0x00000002, true}, { (std::int8_t)0x02, (std::int32_t)0x00000002, true}, { (std::int8_t)0x7e, (std::int32_t)0x00000002, true}, { (std::int8_t)0x7f, (std::int32_t)0x00000002, true}, { (std::int8_t)0x80, (std::int32_t)0x00000002, false}, { (std::int8_t)0x81, (std::int32_t)0x00000002, false}, { (std::int8_t)0xfe, (std::int32_t)0x00000002, true}, { (std::int8_t)0xff, (std::int32_t)0x00000002, true}, { (std::int8_t)0x00, (std::int32_t)0x7ffffffe, false}, { (std::int8_t)0x01, (std::int32_t)0x7ffffffe, false}, { (std::int8_t)0x02, (std::int32_t)0x7ffffffe, false}, { (std::int8_t)0x7e, (std::int32_t)0x7ffffffe, false}, { (std::int8_t)0x7f, (std::int32_t)0x7ffffffe, false}, { (std::int8_t)0x80, (std::int32_t)0x7ffffffe, false}, { (std::int8_t)0x81, (std::int32_t)0x7ffffffe, false}, { (std::int8_t)0xfe, (std::int32_t)0x7ffffffe, false}, { (std::int8_t)0xff, (std::int32_t)0x7ffffffe, false}, { (std::int8_t)0x00, (std::int32_t)0x7fffffff, false}, { (std::int8_t)0x01, (std::int32_t)0x7fffffff, false}, { (std::int8_t)0x02, (std::int32_t)0x7fffffff, false}, { (std::int8_t)0x7e, (std::int32_t)0x7fffffff, false}, { (std::int8_t)0x7f, (std::int32_t)0x7fffffff, false}, { (std::int8_t)0x80, (std::int32_t)0x7fffffff, false}, { (std::int8_t)0x81, (std::int32_t)0x7fffffff, false}, { (std::int8_t)0xfe, (std::int32_t)0x7fffffff, false}, { (std::int8_t)0xff, (std::int32_t)0x7fffffff, false}, { (std::int8_t)0x00, (std::int32_t)0x80000000, false}, { (std::int8_t)0x01, (std::int32_t)0x80000000, false}, { (std::int8_t)0x02, (std::int32_t)0x80000000, false}, { (std::int8_t)0x7e, (std::int32_t)0x80000000, false}, { (std::int8_t)0x7f, (std::int32_t)0x80000000, false}, { (std::int8_t)0x80, (std::int32_t)0x80000000, false}, { (std::int8_t)0x81, (std::int32_t)0x80000000, false}, { (std::int8_t)0xfe, (std::int32_t)0x80000000, false}, { (std::int8_t)0xff, (std::int32_t)0x80000000, false}, { (std::int8_t)0x00, (std::int32_t)0x80000001, false}, { (std::int8_t)0x01, (std::int32_t)0x80000001, false}, { (std::int8_t)0x02, (std::int32_t)0x80000001, false}, { (std::int8_t)0x7e, (std::int32_t)0x80000001, false}, { (std::int8_t)0x7f, (std::int32_t)0x80000001, false}, { (std::int8_t)0x80, (std::int32_t)0x80000001, false}, { (std::int8_t)0x81, (std::int32_t)0x80000001, false}, { (std::int8_t)0xfe, (std::int32_t)0x80000001, false}, { (std::int8_t)0xff, (std::int32_t)0x80000001, false}, { (std::int8_t)0x00, (std::int32_t)0xfffffffe, true}, { (std::int8_t)0x01, (std::int32_t)0xfffffffe, true}, { (std::int8_t)0x02, (std::int32_t)0xfffffffe, true}, { (std::int8_t)0x7e, (std::int32_t)0xfffffffe, false}, { (std::int8_t)0x7f, (std::int32_t)0xfffffffe, false}, { (std::int8_t)0x80, (std::int32_t)0xfffffffe, true}, { (std::int8_t)0x81, (std::int32_t)0xfffffffe, true}, { (std::int8_t)0xfe, (std::int32_t)0xfffffffe, true}, { (std::int8_t)0xff, (std::int32_t)0xfffffffe, true}, { (std::int8_t)0x00, (std::int32_t)0xffffffff, true}, { (std::int8_t)0x01, (std::int32_t)0xffffffff, true}, { (std::int8_t)0x02, (std::int32_t)0xffffffff, true}, { (std::int8_t)0x7e, (std::int32_t)0xffffffff, true}, { (std::int8_t)0x7f, (std::int32_t)0xffffffff, false}, { (std::int8_t)0x80, (std::int32_t)0xffffffff, true}, { (std::int8_t)0x81, (std::int32_t)0xffffffff, true}, { (std::int8_t)0xfe, (std::int32_t)0xffffffff, true}, { (std::int8_t)0xff, (std::int32_t)0xffffffff, true}, }; template<> TestVector< std::int8_t, std::int32_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int8_int32; this->count = COUNTOF(int8_int32); } static const TestCase< std::int8_t, std::int16_t, OpType::Sub > int8_int16[] = { { (std::int8_t)0x00, (std::int16_t)0x0000, true}, { (std::int8_t)0x01, (std::int16_t)0x0000, true}, { (std::int8_t)0x02, (std::int16_t)0x0000, true}, { (std::int8_t)0x7e, (std::int16_t)0x0000, true}, { (std::int8_t)0x7f, (std::int16_t)0x0000, true}, { (std::int8_t)0x80, (std::int16_t)0x0000, true}, { (std::int8_t)0x81, (std::int16_t)0x0000, true}, { (std::int8_t)0xfe, (std::int16_t)0x0000, true}, { (std::int8_t)0xff, (std::int16_t)0x0000, true}, { (std::int8_t)0x00, (std::int16_t)0x0001, true}, { (std::int8_t)0x01, (std::int16_t)0x0001, true}, { (std::int8_t)0x02, (std::int16_t)0x0001, true}, { (std::int8_t)0x7e, (std::int16_t)0x0001, true}, { (std::int8_t)0x7f, (std::int16_t)0x0001, true}, { (std::int8_t)0x80, (std::int16_t)0x0001, false}, { (std::int8_t)0x81, (std::int16_t)0x0001, true}, { (std::int8_t)0xfe, (std::int16_t)0x0001, true}, { (std::int8_t)0xff, (std::int16_t)0x0001, true}, { (std::int8_t)0x00, (std::int16_t)0x0002, true}, { (std::int8_t)0x01, (std::int16_t)0x0002, true}, { (std::int8_t)0x02, (std::int16_t)0x0002, true}, { (std::int8_t)0x7e, (std::int16_t)0x0002, true}, { (std::int8_t)0x7f, (std::int16_t)0x0002, true}, { (std::int8_t)0x80, (std::int16_t)0x0002, false}, { (std::int8_t)0x81, (std::int16_t)0x0002, false}, { (std::int8_t)0xfe, (std::int16_t)0x0002, true}, { (std::int8_t)0xff, (std::int16_t)0x0002, true}, { (std::int8_t)0x00, (std::int16_t)0x7ffe, false}, { (std::int8_t)0x01, (std::int16_t)0x7ffe, false}, { (std::int8_t)0x02, (std::int16_t)0x7ffe, false}, { (std::int8_t)0x7e, (std::int16_t)0x7ffe, false}, { (std::int8_t)0x7f, (std::int16_t)0x7ffe, false}, { (std::int8_t)0x80, (std::int16_t)0x7ffe, false}, { (std::int8_t)0x81, (std::int16_t)0x7ffe, false}, { (std::int8_t)0xfe, (std::int16_t)0x7ffe, false}, { (std::int8_t)0xff, (std::int16_t)0x7ffe, false}, { (std::int8_t)0x00, (std::int16_t)0x7fff, false}, { (std::int8_t)0x01, (std::int16_t)0x7fff, false}, { (std::int8_t)0x02, (std::int16_t)0x7fff, false}, { (std::int8_t)0x7e, (std::int16_t)0x7fff, false}, { (std::int8_t)0x7f, (std::int16_t)0x7fff, false}, { (std::int8_t)0x80, (std::int16_t)0x7fff, false}, { (std::int8_t)0x81, (std::int16_t)0x7fff, false}, { (std::int8_t)0xfe, (std::int16_t)0x7fff, false}, { (std::int8_t)0xff, (std::int16_t)0x7fff, false}, { (std::int8_t)0x00, (std::int16_t)0x8000, false}, { (std::int8_t)0x01, (std::int16_t)0x8000, false}, { (std::int8_t)0x02, (std::int16_t)0x8000, false}, { (std::int8_t)0x7e, (std::int16_t)0x8000, false}, { (std::int8_t)0x7f, (std::int16_t)0x8000, false}, { (std::int8_t)0x80, (std::int16_t)0x8000, false}, { (std::int8_t)0x81, (std::int16_t)0x8000, false}, { (std::int8_t)0xfe, (std::int16_t)0x8000, false}, { (std::int8_t)0xff, (std::int16_t)0x8000, false}, { (std::int8_t)0x00, (std::int16_t)0x8001, false}, { (std::int8_t)0x01, (std::int16_t)0x8001, false}, { (std::int8_t)0x02, (std::int16_t)0x8001, false}, { (std::int8_t)0x7e, (std::int16_t)0x8001, false}, { (std::int8_t)0x7f, (std::int16_t)0x8001, false}, { (std::int8_t)0x80, (std::int16_t)0x8001, false}, { (std::int8_t)0x81, (std::int16_t)0x8001, false}, { (std::int8_t)0xfe, (std::int16_t)0x8001, false}, { (std::int8_t)0xff, (std::int16_t)0x8001, false}, { (std::int8_t)0x00, (std::int16_t)0xfffe, true}, { (std::int8_t)0x01, (std::int16_t)0xfffe, true}, { (std::int8_t)0x02, (std::int16_t)0xfffe, true}, { (std::int8_t)0x7e, (std::int16_t)0xfffe, false}, { (std::int8_t)0x7f, (std::int16_t)0xfffe, false}, { (std::int8_t)0x80, (std::int16_t)0xfffe, true}, { (std::int8_t)0x81, (std::int16_t)0xfffe, true}, { (std::int8_t)0xfe, (std::int16_t)0xfffe, true}, { (std::int8_t)0xff, (std::int16_t)0xfffe, true}, { (std::int8_t)0x00, (std::int16_t)0xffff, true}, { (std::int8_t)0x01, (std::int16_t)0xffff, true}, { (std::int8_t)0x02, (std::int16_t)0xffff, true}, { (std::int8_t)0x7e, (std::int16_t)0xffff, true}, { (std::int8_t)0x7f, (std::int16_t)0xffff, false}, { (std::int8_t)0x80, (std::int16_t)0xffff, true}, { (std::int8_t)0x81, (std::int16_t)0xffff, true}, { (std::int8_t)0xfe, (std::int16_t)0xffff, true}, { (std::int8_t)0xff, (std::int16_t)0xffff, true}, }; template<> TestVector< std::int8_t, std::int16_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int8_int16; this->count = COUNTOF(int8_int16); } static const TestCase< std::int8_t, std::int8_t, OpType::Sub > int8_int8[] = { { (std::int8_t)0x00, (std::int8_t)0x00, true}, { (std::int8_t)0x01, (std::int8_t)0x00, true}, { (std::int8_t)0x02, (std::int8_t)0x00, true}, { (std::int8_t)0x7e, (std::int8_t)0x00, true}, { (std::int8_t)0x7f, (std::int8_t)0x00, true}, { (std::int8_t)0x80, (std::int8_t)0x00, true}, { (std::int8_t)0x81, (std::int8_t)0x00, true}, { (std::int8_t)0xfe, (std::int8_t)0x00, true}, { (std::int8_t)0xff, (std::int8_t)0x00, true}, { (std::int8_t)0x00, (std::int8_t)0x01, true}, { (std::int8_t)0x01, (std::int8_t)0x01, true}, { (std::int8_t)0x02, (std::int8_t)0x01, true}, { (std::int8_t)0x7e, (std::int8_t)0x01, true}, { (std::int8_t)0x7f, (std::int8_t)0x01, true}, { (std::int8_t)0x80, (std::int8_t)0x01, false}, { (std::int8_t)0x81, (std::int8_t)0x01, true}, { (std::int8_t)0xfe, (std::int8_t)0x01, true}, { (std::int8_t)0xff, (std::int8_t)0x01, true}, { (std::int8_t)0x00, (std::int8_t)0x02, true}, { (std::int8_t)0x01, (std::int8_t)0x02, true}, { (std::int8_t)0x02, (std::int8_t)0x02, true}, { (std::int8_t)0x7e, (std::int8_t)0x02, true}, { (std::int8_t)0x7f, (std::int8_t)0x02, true}, { (std::int8_t)0x80, (std::int8_t)0x02, false}, { (std::int8_t)0x81, (std::int8_t)0x02, false}, { (std::int8_t)0xfe, (std::int8_t)0x02, true}, { (std::int8_t)0xff, (std::int8_t)0x02, true}, { (std::int8_t)0x00, (std::int8_t)0x7e, true}, { (std::int8_t)0x01, (std::int8_t)0x7e, true}, { (std::int8_t)0x02, (std::int8_t)0x7e, true}, { (std::int8_t)0x7e, (std::int8_t)0x7e, true}, { (std::int8_t)0x7f, (std::int8_t)0x7e, true}, { (std::int8_t)0x80, (std::int8_t)0x7e, false}, { (std::int8_t)0x81, (std::int8_t)0x7e, false}, { (std::int8_t)0xfe, (std::int8_t)0x7e, true}, { (std::int8_t)0xff, (std::int8_t)0x7e, true}, { (std::int8_t)0x00, (std::int8_t)0x7f, true}, { (std::int8_t)0x01, (std::int8_t)0x7f, true}, { (std::int8_t)0x02, (std::int8_t)0x7f, true}, { (std::int8_t)0x7e, (std::int8_t)0x7f, true}, { (std::int8_t)0x7f, (std::int8_t)0x7f, true}, { (std::int8_t)0x80, (std::int8_t)0x7f, false}, { (std::int8_t)0x81, (std::int8_t)0x7f, false}, { (std::int8_t)0xfe, (std::int8_t)0x7f, false}, { (std::int8_t)0xff, (std::int8_t)0x7f, true}, { (std::int8_t)0x00, (std::int8_t)0x80, false}, { (std::int8_t)0x01, (std::int8_t)0x80, false}, { (std::int8_t)0x02, (std::int8_t)0x80, false}, { (std::int8_t)0x7e, (std::int8_t)0x80, false}, { (std::int8_t)0x7f, (std::int8_t)0x80, false}, { (std::int8_t)0x80, (std::int8_t)0x80, true}, { (std::int8_t)0x81, (std::int8_t)0x80, true}, { (std::int8_t)0xfe, (std::int8_t)0x80, true}, { (std::int8_t)0xff, (std::int8_t)0x80, true}, { (std::int8_t)0x00, (std::int8_t)0x81, true}, { (std::int8_t)0x01, (std::int8_t)0x81, false}, { (std::int8_t)0x02, (std::int8_t)0x81, false}, { (std::int8_t)0x7e, (std::int8_t)0x81, false}, { (std::int8_t)0x7f, (std::int8_t)0x81, false}, { (std::int8_t)0x80, (std::int8_t)0x81, true}, { (std::int8_t)0x81, (std::int8_t)0x81, true}, { (std::int8_t)0xfe, (std::int8_t)0x81, true}, { (std::int8_t)0xff, (std::int8_t)0x81, true}, { (std::int8_t)0x00, (std::int8_t)0xfe, true}, { (std::int8_t)0x01, (std::int8_t)0xfe, true}, { (std::int8_t)0x02, (std::int8_t)0xfe, true}, { (std::int8_t)0x7e, (std::int8_t)0xfe, false}, { (std::int8_t)0x7f, (std::int8_t)0xfe, false}, { (std::int8_t)0x80, (std::int8_t)0xfe, true}, { (std::int8_t)0x81, (std::int8_t)0xfe, true}, { (std::int8_t)0xfe, (std::int8_t)0xfe, true}, { (std::int8_t)0xff, (std::int8_t)0xfe, true}, { (std::int8_t)0x00, (std::int8_t)0xff, true}, { (std::int8_t)0x01, (std::int8_t)0xff, true}, { (std::int8_t)0x02, (std::int8_t)0xff, true}, { (std::int8_t)0x7e, (std::int8_t)0xff, true}, { (std::int8_t)0x7f, (std::int8_t)0xff, false}, { (std::int8_t)0x80, (std::int8_t)0xff, true}, { (std::int8_t)0x81, (std::int8_t)0xff, true}, { (std::int8_t)0xfe, (std::int8_t)0xff, true}, { (std::int8_t)0xff, (std::int8_t)0xff, true}, }; template<> TestVector< std::int8_t, std::int8_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int8_int8; this->count = COUNTOF(int8_int8); } static const TestCase< std::uint64_t, std::int64_t, OpType::Sub > uint64_int64[] = { { 0x0000000000000000, (std::int64_t)0x0000000000000000, true}, { 0x0000000000000001, (std::int64_t)0x0000000000000000, true}, { 0x0000000000000002, (std::int64_t)0x0000000000000000, true}, { 0x000000007ffffffe, (std::int64_t)0x0000000000000000, true}, { 0x000000007fffffff, (std::int64_t)0x0000000000000000, true}, { 0x0000000080000000, (std::int64_t)0x0000000000000000, true}, { 0x0000000080000001, (std::int64_t)0x0000000000000000, true}, { 0x00000000fffffffe, (std::int64_t)0x0000000000000000, true}, { 0x00000000ffffffff, (std::int64_t)0x0000000000000000, true}, { 0x0000000100000000, (std::int64_t)0x0000000000000000, true}, { 0x0000000200000000, (std::int64_t)0x0000000000000000, true}, { 0x7ffffffffffffffe, (std::int64_t)0x0000000000000000, true}, { 0x7fffffffffffffff, (std::int64_t)0x0000000000000000, true}, { 0x8000000000000000, (std::int64_t)0x0000000000000000, true}, { 0x8000000000000001, (std::int64_t)0x0000000000000000, true}, { 0xfffffffffffffffe, (std::int64_t)0x0000000000000000, true}, { 0xffffffffffffffff, (std::int64_t)0x0000000000000000, true}, { 0x0000000000000000, (std::int64_t)0x0000000000000001, false}, { 0x0000000000000001, (std::int64_t)0x0000000000000001, true}, { 0x0000000000000002, (std::int64_t)0x0000000000000001, true}, { 0x000000007ffffffe, (std::int64_t)0x0000000000000001, true}, { 0x000000007fffffff, (std::int64_t)0x0000000000000001, true}, { 0x0000000080000000, (std::int64_t)0x0000000000000001, true}, { 0x0000000080000001, (std::int64_t)0x0000000000000001, true}, { 0x00000000fffffffe, (std::int64_t)0x0000000000000001, true}, { 0x00000000ffffffff, (std::int64_t)0x0000000000000001, true}, { 0x0000000100000000, (std::int64_t)0x0000000000000001, true}, { 0x0000000200000000, (std::int64_t)0x0000000000000001, true}, { 0x7ffffffffffffffe, (std::int64_t)0x0000000000000001, true}, { 0x7fffffffffffffff, (std::int64_t)0x0000000000000001, true}, { 0x8000000000000000, (std::int64_t)0x0000000000000001, true}, { 0x8000000000000001, (std::int64_t)0x0000000000000001, true}, { 0xfffffffffffffffe, (std::int64_t)0x0000000000000001, true}, { 0xffffffffffffffff, (std::int64_t)0x0000000000000001, true}, { 0x0000000000000000, (std::int64_t)0x0000000000000002, false}, { 0x0000000000000001, (std::int64_t)0x0000000000000002, false}, { 0x0000000000000002, (std::int64_t)0x0000000000000002, true}, { 0x000000007ffffffe, (std::int64_t)0x0000000000000002, true}, { 0x000000007fffffff, (std::int64_t)0x0000000000000002, true}, { 0x0000000080000000, (std::int64_t)0x0000000000000002, true}, { 0x0000000080000001, (std::int64_t)0x0000000000000002, true}, { 0x00000000fffffffe, (std::int64_t)0x0000000000000002, true}, { 0x00000000ffffffff, (std::int64_t)0x0000000000000002, true}, { 0x0000000100000000, (std::int64_t)0x0000000000000002, true}, { 0x0000000200000000, (std::int64_t)0x0000000000000002, true}, { 0x7ffffffffffffffe, (std::int64_t)0x0000000000000002, true}, { 0x7fffffffffffffff, (std::int64_t)0x0000000000000002, true}, { 0x8000000000000000, (std::int64_t)0x0000000000000002, true}, { 0x8000000000000001, (std::int64_t)0x0000000000000002, true}, { 0xfffffffffffffffe, (std::int64_t)0x0000000000000002, true}, { 0xffffffffffffffff, (std::int64_t)0x0000000000000002, true}, { 0x0000000000000000, (std::int64_t)0x000000007ffffffe, false}, { 0x0000000000000001, (std::int64_t)0x000000007ffffffe, false}, { 0x0000000000000002, (std::int64_t)0x000000007ffffffe, false}, { 0x000000007ffffffe, (std::int64_t)0x000000007ffffffe, true}, { 0x000000007fffffff, (std::int64_t)0x000000007ffffffe, true}, { 0x0000000080000000, (std::int64_t)0x000000007ffffffe, true}, { 0x0000000080000001, (std::int64_t)0x000000007ffffffe, true}, { 0x00000000fffffffe, (std::int64_t)0x000000007ffffffe, true}, { 0x00000000ffffffff, (std::int64_t)0x000000007ffffffe, true}, { 0x0000000100000000, (std::int64_t)0x000000007ffffffe, true}, { 0x0000000200000000, (std::int64_t)0x000000007ffffffe, true}, { 0x7ffffffffffffffe, (std::int64_t)0x000000007ffffffe, true}, { 0x7fffffffffffffff, (std::int64_t)0x000000007ffffffe, true}, { 0x8000000000000000, (std::int64_t)0x000000007ffffffe, true}, { 0x8000000000000001, (std::int64_t)0x000000007ffffffe, true}, { 0xfffffffffffffffe, (std::int64_t)0x000000007ffffffe, true}, { 0xffffffffffffffff, (std::int64_t)0x000000007ffffffe, true}, { 0x0000000000000000, (std::int64_t)0x000000007fffffff, false}, { 0x0000000000000001, (std::int64_t)0x000000007fffffff, false}, { 0x0000000000000002, (std::int64_t)0x000000007fffffff, false}, { 0x000000007ffffffe, (std::int64_t)0x000000007fffffff, false}, { 0x000000007fffffff, (std::int64_t)0x000000007fffffff, true}, { 0x0000000080000000, (std::int64_t)0x000000007fffffff, true}, { 0x0000000080000001, (std::int64_t)0x000000007fffffff, true}, { 0x00000000fffffffe, (std::int64_t)0x000000007fffffff, true}, { 0x00000000ffffffff, (std::int64_t)0x000000007fffffff, true}, { 0x0000000100000000, (std::int64_t)0x000000007fffffff, true}, { 0x0000000200000000, (std::int64_t)0x000000007fffffff, true}, { 0x7ffffffffffffffe, (std::int64_t)0x000000007fffffff, true}, { 0x7fffffffffffffff, (std::int64_t)0x000000007fffffff, true}, { 0x8000000000000000, (std::int64_t)0x000000007fffffff, true}, { 0x8000000000000001, (std::int64_t)0x000000007fffffff, true}, { 0xfffffffffffffffe, (std::int64_t)0x000000007fffffff, true}, { 0xffffffffffffffff, (std::int64_t)0x000000007fffffff, true}, { 0x0000000000000000, (std::int64_t)0x0000000080000000, false}, { 0x0000000000000001, (std::int64_t)0x0000000080000000, false}, { 0x0000000000000002, (std::int64_t)0x0000000080000000, false}, { 0x000000007ffffffe, (std::int64_t)0x0000000080000000, false}, { 0x000000007fffffff, (std::int64_t)0x0000000080000000, false}, { 0x0000000080000000, (std::int64_t)0x0000000080000000, true}, { 0x0000000080000001, (std::int64_t)0x0000000080000000, true}, { 0x00000000fffffffe, (std::int64_t)0x0000000080000000, true}, { 0x00000000ffffffff, (std::int64_t)0x0000000080000000, true}, { 0x0000000100000000, (std::int64_t)0x0000000080000000, true}, { 0x0000000200000000, (std::int64_t)0x0000000080000000, true}, { 0x7ffffffffffffffe, (std::int64_t)0x0000000080000000, true}, { 0x7fffffffffffffff, (std::int64_t)0x0000000080000000, true}, { 0x8000000000000000, (std::int64_t)0x0000000080000000, true}, { 0x8000000000000001, (std::int64_t)0x0000000080000000, true}, { 0xfffffffffffffffe, (std::int64_t)0x0000000080000000, true}, { 0xffffffffffffffff, (std::int64_t)0x0000000080000000, true}, { 0x0000000000000000, (std::int64_t)0x0000000080000001, false}, { 0x0000000000000001, (std::int64_t)0x0000000080000001, false}, { 0x0000000000000002, (std::int64_t)0x0000000080000001, false}, { 0x000000007ffffffe, (std::int64_t)0x0000000080000001, false}, { 0x000000007fffffff, (std::int64_t)0x0000000080000001, false}, { 0x0000000080000000, (std::int64_t)0x0000000080000001, false}, { 0x0000000080000001, (std::int64_t)0x0000000080000001, true}, { 0x00000000fffffffe, (std::int64_t)0x0000000080000001, true}, { 0x00000000ffffffff, (std::int64_t)0x0000000080000001, true}, { 0x0000000100000000, (std::int64_t)0x0000000080000001, true}, { 0x0000000200000000, (std::int64_t)0x0000000080000001, true}, { 0x7ffffffffffffffe, (std::int64_t)0x0000000080000001, true}, { 0x7fffffffffffffff, (std::int64_t)0x0000000080000001, true}, { 0x8000000000000000, (std::int64_t)0x0000000080000001, true}, { 0x8000000000000001, (std::int64_t)0x0000000080000001, true}, { 0xfffffffffffffffe, (std::int64_t)0x0000000080000001, true}, { 0xffffffffffffffff, (std::int64_t)0x0000000080000001, true}, { 0x0000000000000000, (std::int64_t)0x00000000fffffffe, false}, { 0x0000000000000001, (std::int64_t)0x00000000fffffffe, false}, { 0x0000000000000002, (std::int64_t)0x00000000fffffffe, false}, { 0x000000007ffffffe, (std::int64_t)0x00000000fffffffe, false}, { 0x000000007fffffff, (std::int64_t)0x00000000fffffffe, false}, { 0x0000000080000000, (std::int64_t)0x00000000fffffffe, false}, { 0x0000000080000001, (std::int64_t)0x00000000fffffffe, false}, { 0x00000000fffffffe, (std::int64_t)0x00000000fffffffe, true}, { 0x00000000ffffffff, (std::int64_t)0x00000000fffffffe, true}, { 0x0000000100000000, (std::int64_t)0x00000000fffffffe, true}, { 0x0000000200000000, (std::int64_t)0x00000000fffffffe, true}, { 0x7ffffffffffffffe, (std::int64_t)0x00000000fffffffe, true}, { 0x7fffffffffffffff, (std::int64_t)0x00000000fffffffe, true}, { 0x8000000000000000, (std::int64_t)0x00000000fffffffe, true}, { 0x8000000000000001, (std::int64_t)0x00000000fffffffe, true}, { 0xfffffffffffffffe, (std::int64_t)0x00000000fffffffe, true}, { 0xffffffffffffffff, (std::int64_t)0x00000000fffffffe, true}, { 0x0000000000000000, (std::int64_t)0x00000000ffffffff, false}, { 0x0000000000000001, (std::int64_t)0x00000000ffffffff, false}, { 0x0000000000000002, (std::int64_t)0x00000000ffffffff, false}, { 0x000000007ffffffe, (std::int64_t)0x00000000ffffffff, false}, { 0x000000007fffffff, (std::int64_t)0x00000000ffffffff, false}, { 0x0000000080000000, (std::int64_t)0x00000000ffffffff, false}, { 0x0000000080000001, (std::int64_t)0x00000000ffffffff, false}, { 0x00000000fffffffe, (std::int64_t)0x00000000ffffffff, false}, { 0x00000000ffffffff, (std::int64_t)0x00000000ffffffff, true}, { 0x0000000100000000, (std::int64_t)0x00000000ffffffff, true}, { 0x0000000200000000, (std::int64_t)0x00000000ffffffff, true}, { 0x7ffffffffffffffe, (std::int64_t)0x00000000ffffffff, true}, { 0x7fffffffffffffff, (std::int64_t)0x00000000ffffffff, true}, { 0x8000000000000000, (std::int64_t)0x00000000ffffffff, true}, { 0x8000000000000001, (std::int64_t)0x00000000ffffffff, true}, { 0xfffffffffffffffe, (std::int64_t)0x00000000ffffffff, true}, { 0xffffffffffffffff, (std::int64_t)0x00000000ffffffff, true}, { 0x0000000000000000, (std::int64_t)0x0000000100000000, false}, { 0x0000000000000001, (std::int64_t)0x0000000100000000, false}, { 0x0000000000000002, (std::int64_t)0x0000000100000000, false}, { 0x000000007ffffffe, (std::int64_t)0x0000000100000000, false}, { 0x000000007fffffff, (std::int64_t)0x0000000100000000, false}, { 0x0000000080000000, (std::int64_t)0x0000000100000000, false}, { 0x0000000080000001, (std::int64_t)0x0000000100000000, false}, { 0x00000000fffffffe, (std::int64_t)0x0000000100000000, false}, { 0x00000000ffffffff, (std::int64_t)0x0000000100000000, false}, { 0x0000000100000000, (std::int64_t)0x0000000100000000, true}, { 0x0000000200000000, (std::int64_t)0x0000000100000000, true}, { 0x7ffffffffffffffe, (std::int64_t)0x0000000100000000, true}, { 0x7fffffffffffffff, (std::int64_t)0x0000000100000000, true}, { 0x8000000000000000, (std::int64_t)0x0000000100000000, true}, { 0x8000000000000001, (std::int64_t)0x0000000100000000, true}, { 0xfffffffffffffffe, (std::int64_t)0x0000000100000000, true}, { 0xffffffffffffffff, (std::int64_t)0x0000000100000000, true}, { 0x0000000000000000, (std::int64_t)0x0000000200000000, false}, { 0x0000000000000001, (std::int64_t)0x0000000200000000, false}, { 0x0000000000000002, (std::int64_t)0x0000000200000000, false}, { 0x000000007ffffffe, (std::int64_t)0x0000000200000000, false}, { 0x000000007fffffff, (std::int64_t)0x0000000200000000, false}, { 0x0000000080000000, (std::int64_t)0x0000000200000000, false}, { 0x0000000080000001, (std::int64_t)0x0000000200000000, false}, { 0x00000000fffffffe, (std::int64_t)0x0000000200000000, false}, { 0x00000000ffffffff, (std::int64_t)0x0000000200000000, false}, { 0x0000000100000000, (std::int64_t)0x0000000200000000, false}, { 0x0000000200000000, (std::int64_t)0x0000000200000000, true}, { 0x7ffffffffffffffe, (std::int64_t)0x0000000200000000, true}, { 0x7fffffffffffffff, (std::int64_t)0x0000000200000000, true}, { 0x8000000000000000, (std::int64_t)0x0000000200000000, true}, { 0x8000000000000001, (std::int64_t)0x0000000200000000, true}, { 0xfffffffffffffffe, (std::int64_t)0x0000000200000000, true}, { 0xffffffffffffffff, (std::int64_t)0x0000000200000000, true}, { 0x0000000000000000, (std::int64_t)0x7ffffffffffffffe, false}, { 0x0000000000000001, (std::int64_t)0x7ffffffffffffffe, false}, { 0x0000000000000002, (std::int64_t)0x7ffffffffffffffe, false}, { 0x000000007ffffffe, (std::int64_t)0x7ffffffffffffffe, false}, { 0x000000007fffffff, (std::int64_t)0x7ffffffffffffffe, false}, { 0x0000000080000000, (std::int64_t)0x7ffffffffffffffe, false}, { 0x0000000080000001, (std::int64_t)0x7ffffffffffffffe, false}, { 0x00000000fffffffe, (std::int64_t)0x7ffffffffffffffe, false}, { 0x00000000ffffffff, (std::int64_t)0x7ffffffffffffffe, false}, { 0x0000000100000000, (std::int64_t)0x7ffffffffffffffe, false}, { 0x0000000200000000, (std::int64_t)0x7ffffffffffffffe, false}, { 0x7ffffffffffffffe, (std::int64_t)0x7ffffffffffffffe, true}, { 0x7fffffffffffffff, (std::int64_t)0x7ffffffffffffffe, true}, { 0x8000000000000000, (std::int64_t)0x7ffffffffffffffe, true}, { 0x8000000000000001, (std::int64_t)0x7ffffffffffffffe, true}, { 0xfffffffffffffffe, (std::int64_t)0x7ffffffffffffffe, true}, { 0xffffffffffffffff, (std::int64_t)0x7ffffffffffffffe, true}, { 0x0000000000000000, (std::int64_t)0x7fffffffffffffff, false}, { 0x0000000000000001, (std::int64_t)0x7fffffffffffffff, false}, { 0x0000000000000002, (std::int64_t)0x7fffffffffffffff, false}, { 0x000000007ffffffe, (std::int64_t)0x7fffffffffffffff, false}, { 0x000000007fffffff, (std::int64_t)0x7fffffffffffffff, false}, { 0x0000000080000000, (std::int64_t)0x7fffffffffffffff, false}, { 0x0000000080000001, (std::int64_t)0x7fffffffffffffff, false}, { 0x00000000fffffffe, (std::int64_t)0x7fffffffffffffff, false}, { 0x00000000ffffffff, (std::int64_t)0x7fffffffffffffff, false}, { 0x0000000100000000, (std::int64_t)0x7fffffffffffffff, false}, { 0x0000000200000000, (std::int64_t)0x7fffffffffffffff, false}, { 0x7ffffffffffffffe, (std::int64_t)0x7fffffffffffffff, false}, { 0x7fffffffffffffff, (std::int64_t)0x7fffffffffffffff, true}, { 0x8000000000000000, (std::int64_t)0x7fffffffffffffff, true}, { 0x8000000000000001, (std::int64_t)0x7fffffffffffffff, true}, { 0xfffffffffffffffe, (std::int64_t)0x7fffffffffffffff, true}, { 0xffffffffffffffff, (std::int64_t)0x7fffffffffffffff, true}, { 0x0000000000000000, (std::int64_t)0x8000000000000000, true}, { 0x0000000000000001, (std::int64_t)0x8000000000000000, true}, { 0x0000000000000002, (std::int64_t)0x8000000000000000, true}, { 0x000000007ffffffe, (std::int64_t)0x8000000000000000, true}, { 0x000000007fffffff, (std::int64_t)0x8000000000000000, true}, { 0x0000000080000000, (std::int64_t)0x8000000000000000, true}, { 0x0000000080000001, (std::int64_t)0x8000000000000000, true}, { 0x00000000fffffffe, (std::int64_t)0x8000000000000000, true}, { 0x00000000ffffffff, (std::int64_t)0x8000000000000000, true}, { 0x0000000100000000, (std::int64_t)0x8000000000000000, true}, { 0x0000000200000000, (std::int64_t)0x8000000000000000, true}, { 0x7ffffffffffffffe, (std::int64_t)0x8000000000000000, true}, { 0x7fffffffffffffff, (std::int64_t)0x8000000000000000, true}, { 0x8000000000000000, (std::int64_t)0x8000000000000000, false}, { 0x8000000000000001, (std::int64_t)0x8000000000000000, false}, { 0xfffffffffffffffe, (std::int64_t)0x8000000000000000, false}, { 0xffffffffffffffff, (std::int64_t)0x8000000000000000, false}, { 0x0000000000000000, (std::int64_t)0x8000000000000001, true}, { 0x0000000000000001, (std::int64_t)0x8000000000000001, true}, { 0x0000000000000002, (std::int64_t)0x8000000000000001, true}, { 0x000000007ffffffe, (std::int64_t)0x8000000000000001, true}, { 0x000000007fffffff, (std::int64_t)0x8000000000000001, true}, { 0x0000000080000000, (std::int64_t)0x8000000000000001, true}, { 0x0000000080000001, (std::int64_t)0x8000000000000001, true}, { 0x00000000fffffffe, (std::int64_t)0x8000000000000001, true}, { 0x00000000ffffffff, (std::int64_t)0x8000000000000001, true}, { 0x0000000100000000, (std::int64_t)0x8000000000000001, true}, { 0x0000000200000000, (std::int64_t)0x8000000000000001, true}, { 0x7ffffffffffffffe, (std::int64_t)0x8000000000000001, true}, { 0x7fffffffffffffff, (std::int64_t)0x8000000000000001, true}, { 0x8000000000000000, (std::int64_t)0x8000000000000001, true}, { 0x8000000000000001, (std::int64_t)0x8000000000000001, false}, { 0xfffffffffffffffe, (std::int64_t)0x8000000000000001, false}, { 0xffffffffffffffff, (std::int64_t)0x8000000000000001, false}, { 0x0000000000000000, (std::int64_t)0xfffffffffffffffe, true}, { 0x0000000000000001, (std::int64_t)0xfffffffffffffffe, true}, { 0x0000000000000002, (std::int64_t)0xfffffffffffffffe, true}, { 0x000000007ffffffe, (std::int64_t)0xfffffffffffffffe, true}, { 0x000000007fffffff, (std::int64_t)0xfffffffffffffffe, true}, { 0x0000000080000000, (std::int64_t)0xfffffffffffffffe, true}, { 0x0000000080000001, (std::int64_t)0xfffffffffffffffe, true}, { 0x00000000fffffffe, (std::int64_t)0xfffffffffffffffe, true}, { 0x00000000ffffffff, (std::int64_t)0xfffffffffffffffe, true}, { 0x0000000100000000, (std::int64_t)0xfffffffffffffffe, true}, { 0x0000000200000000, (std::int64_t)0xfffffffffffffffe, true}, { 0x7ffffffffffffffe, (std::int64_t)0xfffffffffffffffe, true}, { 0x7fffffffffffffff, (std::int64_t)0xfffffffffffffffe, true}, { 0x8000000000000000, (std::int64_t)0xfffffffffffffffe, true}, { 0x8000000000000001, (std::int64_t)0xfffffffffffffffe, true}, { 0xfffffffffffffffe, (std::int64_t)0xfffffffffffffffe, false}, { 0xffffffffffffffff, (std::int64_t)0xfffffffffffffffe, false}, { 0x0000000000000000, (std::int64_t)0xffffffffffffffff, true}, { 0x0000000000000001, (std::int64_t)0xffffffffffffffff, true}, { 0x0000000000000002, (std::int64_t)0xffffffffffffffff, true}, { 0x000000007ffffffe, (std::int64_t)0xffffffffffffffff, true}, { 0x000000007fffffff, (std::int64_t)0xffffffffffffffff, true}, { 0x0000000080000000, (std::int64_t)0xffffffffffffffff, true}, { 0x0000000080000001, (std::int64_t)0xffffffffffffffff, true}, { 0x00000000fffffffe, (std::int64_t)0xffffffffffffffff, true}, { 0x00000000ffffffff, (std::int64_t)0xffffffffffffffff, true}, { 0x0000000100000000, (std::int64_t)0xffffffffffffffff, true}, { 0x0000000200000000, (std::int64_t)0xffffffffffffffff, true}, { 0x7ffffffffffffffe, (std::int64_t)0xffffffffffffffff, true}, { 0x7fffffffffffffff, (std::int64_t)0xffffffffffffffff, true}, { 0x8000000000000000, (std::int64_t)0xffffffffffffffff, true}, { 0x8000000000000001, (std::int64_t)0xffffffffffffffff, true}, { 0xfffffffffffffffe, (std::int64_t)0xffffffffffffffff, true}, { 0xffffffffffffffff, (std::int64_t)0xffffffffffffffff, false}, }; template<> TestVector< std::uint64_t, std::int64_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint64_int64; this->count = COUNTOF(uint64_int64); } static const TestCase< std::uint32_t, std::int64_t, OpType::Sub > uint32_int64[] = { { 0x00000000, (std::int64_t)0x0000000000000000, true}, { 0x00000001, (std::int64_t)0x0000000000000000, true}, { 0x00000002, (std::int64_t)0x0000000000000000, true}, { 0x7ffffffe, (std::int64_t)0x0000000000000000, true}, { 0x7fffffff, (std::int64_t)0x0000000000000000, true}, { 0x80000000, (std::int64_t)0x0000000000000000, true}, { 0x80000001, (std::int64_t)0x0000000000000000, true}, { 0xfffffffe, (std::int64_t)0x0000000000000000, true}, { 0xffffffff, (std::int64_t)0x0000000000000000, true}, { 0x00000000, (std::int64_t)0x0000000000000001, false}, { 0x00000001, (std::int64_t)0x0000000000000001, true}, { 0x00000002, (std::int64_t)0x0000000000000001, true}, { 0x7ffffffe, (std::int64_t)0x0000000000000001, true}, { 0x7fffffff, (std::int64_t)0x0000000000000001, true}, { 0x80000000, (std::int64_t)0x0000000000000001, true}, { 0x80000001, (std::int64_t)0x0000000000000001, true}, { 0xfffffffe, (std::int64_t)0x0000000000000001, true}, { 0xffffffff, (std::int64_t)0x0000000000000001, true}, { 0x00000000, (std::int64_t)0x0000000000000002, false}, { 0x00000001, (std::int64_t)0x0000000000000002, false}, { 0x00000002, (std::int64_t)0x0000000000000002, true}, { 0x7ffffffe, (std::int64_t)0x0000000000000002, true}, { 0x7fffffff, (std::int64_t)0x0000000000000002, true}, { 0x80000000, (std::int64_t)0x0000000000000002, true}, { 0x80000001, (std::int64_t)0x0000000000000002, true}, { 0xfffffffe, (std::int64_t)0x0000000000000002, true}, { 0xffffffff, (std::int64_t)0x0000000000000002, true}, { 0x00000000, (std::int64_t)0x000000007ffffffe, false}, { 0x00000001, (std::int64_t)0x000000007ffffffe, false}, { 0x00000002, (std::int64_t)0x000000007ffffffe, false}, { 0x7ffffffe, (std::int64_t)0x000000007ffffffe, true}, { 0x7fffffff, (std::int64_t)0x000000007ffffffe, true}, { 0x80000000, (std::int64_t)0x000000007ffffffe, true}, { 0x80000001, (std::int64_t)0x000000007ffffffe, true}, { 0xfffffffe, (std::int64_t)0x000000007ffffffe, true}, { 0xffffffff, (std::int64_t)0x000000007ffffffe, true}, { 0x00000000, (std::int64_t)0x000000007fffffff, false}, { 0x00000001, (std::int64_t)0x000000007fffffff, false}, { 0x00000002, (std::int64_t)0x000000007fffffff, false}, { 0x7ffffffe, (std::int64_t)0x000000007fffffff, false}, { 0x7fffffff, (std::int64_t)0x000000007fffffff, true}, { 0x80000000, (std::int64_t)0x000000007fffffff, true}, { 0x80000001, (std::int64_t)0x000000007fffffff, true}, { 0xfffffffe, (std::int64_t)0x000000007fffffff, true}, { 0xffffffff, (std::int64_t)0x000000007fffffff, true}, { 0x00000000, (std::int64_t)0x0000000080000000, false}, { 0x00000001, (std::int64_t)0x0000000080000000, false}, { 0x00000002, (std::int64_t)0x0000000080000000, false}, { 0x7ffffffe, (std::int64_t)0x0000000080000000, false}, { 0x7fffffff, (std::int64_t)0x0000000080000000, false}, { 0x80000000, (std::int64_t)0x0000000080000000, true}, { 0x80000001, (std::int64_t)0x0000000080000000, true}, { 0xfffffffe, (std::int64_t)0x0000000080000000, true}, { 0xffffffff, (std::int64_t)0x0000000080000000, true}, { 0x00000000, (std::int64_t)0x0000000080000001, false}, { 0x00000001, (std::int64_t)0x0000000080000001, false}, { 0x00000002, (std::int64_t)0x0000000080000001, false}, { 0x7ffffffe, (std::int64_t)0x0000000080000001, false}, { 0x7fffffff, (std::int64_t)0x0000000080000001, false}, { 0x80000000, (std::int64_t)0x0000000080000001, false}, { 0x80000001, (std::int64_t)0x0000000080000001, true}, { 0xfffffffe, (std::int64_t)0x0000000080000001, true}, { 0xffffffff, (std::int64_t)0x0000000080000001, true}, { 0x00000000, (std::int64_t)0x00000000fffffffe, false}, { 0x00000001, (std::int64_t)0x00000000fffffffe, false}, { 0x00000002, (std::int64_t)0x00000000fffffffe, false}, { 0x7ffffffe, (std::int64_t)0x00000000fffffffe, false}, { 0x7fffffff, (std::int64_t)0x00000000fffffffe, false}, { 0x80000000, (std::int64_t)0x00000000fffffffe, false}, { 0x80000001, (std::int64_t)0x00000000fffffffe, false}, { 0xfffffffe, (std::int64_t)0x00000000fffffffe, true}, { 0xffffffff, (std::int64_t)0x00000000fffffffe, true}, { 0x00000000, (std::int64_t)0x00000000ffffffff, false}, { 0x00000001, (std::int64_t)0x00000000ffffffff, false}, { 0x00000002, (std::int64_t)0x00000000ffffffff, false}, { 0x7ffffffe, (std::int64_t)0x00000000ffffffff, false}, { 0x7fffffff, (std::int64_t)0x00000000ffffffff, false}, { 0x80000000, (std::int64_t)0x00000000ffffffff, false}, { 0x80000001, (std::int64_t)0x00000000ffffffff, false}, { 0xfffffffe, (std::int64_t)0x00000000ffffffff, false}, { 0xffffffff, (std::int64_t)0x00000000ffffffff, true}, { 0x00000000, (std::int64_t)0x0000000100000000, false}, { 0x00000001, (std::int64_t)0x0000000100000000, false}, { 0x00000002, (std::int64_t)0x0000000100000000, false}, { 0x7ffffffe, (std::int64_t)0x0000000100000000, false}, { 0x7fffffff, (std::int64_t)0x0000000100000000, false}, { 0x80000000, (std::int64_t)0x0000000100000000, false}, { 0x80000001, (std::int64_t)0x0000000100000000, false}, { 0xfffffffe, (std::int64_t)0x0000000100000000, false}, { 0xffffffff, (std::int64_t)0x0000000100000000, false}, { 0x00000000, (std::int64_t)0x0000000200000000, false}, { 0x00000001, (std::int64_t)0x0000000200000000, false}, { 0x00000002, (std::int64_t)0x0000000200000000, false}, { 0x7ffffffe, (std::int64_t)0x0000000200000000, false}, { 0x7fffffff, (std::int64_t)0x0000000200000000, false}, { 0x80000000, (std::int64_t)0x0000000200000000, false}, { 0x80000001, (std::int64_t)0x0000000200000000, false}, { 0xfffffffe, (std::int64_t)0x0000000200000000, false}, { 0xffffffff, (std::int64_t)0x0000000200000000, false}, { 0x00000000, (std::int64_t)0x7ffffffffffffffe, false}, { 0x00000001, (std::int64_t)0x7ffffffffffffffe, false}, { 0x00000002, (std::int64_t)0x7ffffffffffffffe, false}, { 0x7ffffffe, (std::int64_t)0x7ffffffffffffffe, false}, { 0x7fffffff, (std::int64_t)0x7ffffffffffffffe, false}, { 0x80000000, (std::int64_t)0x7ffffffffffffffe, false}, { 0x80000001, (std::int64_t)0x7ffffffffffffffe, false}, { 0xfffffffe, (std::int64_t)0x7ffffffffffffffe, false}, { 0xffffffff, (std::int64_t)0x7ffffffffffffffe, false}, { 0x00000000, (std::int64_t)0x7fffffffffffffff, false}, { 0x00000001, (std::int64_t)0x7fffffffffffffff, false}, { 0x00000002, (std::int64_t)0x7fffffffffffffff, false}, { 0x7ffffffe, (std::int64_t)0x7fffffffffffffff, false}, { 0x7fffffff, (std::int64_t)0x7fffffffffffffff, false}, { 0x80000000, (std::int64_t)0x7fffffffffffffff, false}, { 0x80000001, (std::int64_t)0x7fffffffffffffff, false}, { 0xfffffffe, (std::int64_t)0x7fffffffffffffff, false}, { 0xffffffff, (std::int64_t)0x7fffffffffffffff, false}, { 0x00000000, (std::int64_t)0x8000000000000000, false}, { 0x00000001, (std::int64_t)0x8000000000000000, false }, { 0x00000002, (std::int64_t)0x8000000000000000, false }, { 0x7ffffffe, (std::int64_t)0x8000000000000000, false }, { 0x7fffffff, (std::int64_t)0x8000000000000000, false }, { 0x80000000, (std::int64_t)0x8000000000000000, false }, { 0x80000001, (std::int64_t)0x8000000000000000, false }, { 0xfffffffe, (std::int64_t)0x8000000000000000, false }, { 0xffffffff, (std::int64_t)0x8000000000000000, false }, { 0x00000000, (std::int64_t)0x8000000000000001, false }, { 0x00000001, (std::int64_t)0x8000000000000001, false }, { 0x00000002, (std::int64_t)0x8000000000000001, false }, { 0x7ffffffe, (std::int64_t)0x8000000000000001, false }, { 0x7fffffff, (std::int64_t)0x8000000000000001, false }, { 0x80000000, (std::int64_t)0x8000000000000001, false }, { 0x80000001, (std::int64_t)0x8000000000000001, false }, { 0xfffffffe, (std::int64_t)0x8000000000000001, false }, { 0xffffffff, (std::int64_t)0x8000000000000001, false }, { 0x00000000, (std::int64_t)0xfffffffffffffffe, true}, { 0x00000001, (std::int64_t)0xfffffffffffffffe, true}, { 0x00000002, (std::int64_t)0xfffffffffffffffe, true}, { 0x7ffffffe, (std::int64_t)0xfffffffffffffffe, true}, { 0x7fffffff, (std::int64_t)0xfffffffffffffffe, true}, { 0x80000000, (std::int64_t)0xfffffffffffffffe, true}, { 0x80000001, (std::int64_t)0xfffffffffffffffe, true}, { 0xfffffffe, (std::int64_t)0xfffffffffffffffe, false}, { 0xffffffff, (std::int64_t)0xfffffffffffffffe, false}, { 0x00000000, (std::int64_t)0xffffffffffffffff, true}, { 0x00000001, (std::int64_t)0xffffffffffffffff, true}, { 0x00000002, (std::int64_t)0xffffffffffffffff, true}, { 0x7ffffffe, (std::int64_t)0xffffffffffffffff, true}, { 0x7fffffff, (std::int64_t)0xffffffffffffffff, true}, { 0x80000000, (std::int64_t)0xffffffffffffffff, true}, { 0x80000001, (std::int64_t)0xffffffffffffffff, true}, { 0xfffffffe, (std::int64_t)0xffffffffffffffff, true}, { 0xffffffff, (std::int64_t)0xffffffffffffffff, true}, }; template<> TestVector< std::uint32_t, std::int64_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint32_int64; this->count = COUNTOF(uint32_int64); } static const TestCase< std::uint32_t, std::int32_t, OpType::Sub > uint32_int32[] = { { 0x00000000, (std::int32_t)0x00000000, true}, { 0x00000001, (std::int32_t)0x00000000, true}, { 0x00000002, (std::int32_t)0x00000000, true}, { 0x7ffffffe, (std::int32_t)0x00000000, true}, { 0x7fffffff, (std::int32_t)0x00000000, true}, { 0x80000000, (std::int32_t)0x00000000, true}, { 0x80000001, (std::int32_t)0x00000000, true}, { 0xfffffffe, (std::int32_t)0x00000000, true}, { 0xffffffff, (std::int32_t)0x00000000, true}, { 0x00000000, (std::int32_t)0x00000001, false}, { 0x00000001, (std::int32_t)0x00000001, true}, { 0x00000002, (std::int32_t)0x00000001, true}, { 0x7ffffffe, (std::int32_t)0x00000001, true}, { 0x7fffffff, (std::int32_t)0x00000001, true}, { 0x80000000, (std::int32_t)0x00000001, true}, { 0x80000001, (std::int32_t)0x00000001, true}, { 0xfffffffe, (std::int32_t)0x00000001, true}, { 0xffffffff, (std::int32_t)0x00000001, true}, { 0x00000000, (std::int32_t)0x00000002, false}, { 0x00000001, (std::int32_t)0x00000002, false}, { 0x00000002, (std::int32_t)0x00000002, true}, { 0x7ffffffe, (std::int32_t)0x00000002, true}, { 0x7fffffff, (std::int32_t)0x00000002, true}, { 0x80000000, (std::int32_t)0x00000002, true}, { 0x80000001, (std::int32_t)0x00000002, true}, { 0xfffffffe, (std::int32_t)0x00000002, true}, { 0xffffffff, (std::int32_t)0x00000002, true}, { 0x00000000, (std::int32_t)0x7ffffffe, false}, { 0x00000001, (std::int32_t)0x7ffffffe, false}, { 0x00000002, (std::int32_t)0x7ffffffe, false}, { 0x7ffffffe, (std::int32_t)0x7ffffffe, true}, { 0x7fffffff, (std::int32_t)0x7ffffffe, true}, { 0x80000000, (std::int32_t)0x7ffffffe, true}, { 0x80000001, (std::int32_t)0x7ffffffe, true}, { 0xfffffffe, (std::int32_t)0x7ffffffe, true}, { 0xffffffff, (std::int32_t)0x7ffffffe, true}, { 0x00000000, (std::int32_t)0x7fffffff, false}, { 0x00000001, (std::int32_t)0x7fffffff, false}, { 0x00000002, (std::int32_t)0x7fffffff, false}, { 0x7ffffffe, (std::int32_t)0x7fffffff, false}, { 0x7fffffff, (std::int32_t)0x7fffffff, true}, { 0x80000000, (std::int32_t)0x7fffffff, true}, { 0x80000001, (std::int32_t)0x7fffffff, true}, { 0xfffffffe, (std::int32_t)0x7fffffff, true}, { 0xffffffff, (std::int32_t)0x7fffffff, true}, { 0x00000000, (std::int32_t)0x80000000, true}, { 0x00000001, (std::int32_t)0x80000000, true}, { 0x00000002, (std::int32_t)0x80000000, true}, { 0x7ffffffe, (std::int32_t)0x80000000, true}, { 0x7fffffff, (std::int32_t)0x80000000, true}, { 0x80000000, (std::int32_t)0x80000000, false}, { 0x80000001, (std::int32_t)0x80000000, false}, { 0xfffffffe, (std::int32_t)0x80000000, false}, { 0xffffffff, (std::int32_t)0x80000000, false}, { 0x00000000, (std::int32_t)0x80000001, true}, { 0x00000001, (std::int32_t)0x80000001, true}, { 0x00000002, (std::int32_t)0x80000001, true}, { 0x7ffffffe, (std::int32_t)0x80000001, true}, { 0x7fffffff, (std::int32_t)0x80000001, true}, { 0x80000000, (std::int32_t)0x80000001, true}, { 0x80000001, (std::int32_t)0x80000001, false}, { 0xfffffffe, (std::int32_t)0x80000001, false}, { 0xffffffff, (std::int32_t)0x80000001, false}, { 0x00000000, (std::int32_t)0xfffffffe, true}, { 0x00000001, (std::int32_t)0xfffffffe, true}, { 0x00000002, (std::int32_t)0xfffffffe, true}, { 0x7ffffffe, (std::int32_t)0xfffffffe, true}, { 0x7fffffff, (std::int32_t)0xfffffffe, true}, { 0x80000000, (std::int32_t)0xfffffffe, true}, { 0x80000001, (std::int32_t)0xfffffffe, true}, { 0xfffffffe, (std::int32_t)0xfffffffe, false}, { 0xffffffff, (std::int32_t)0xfffffffe, false}, { 0x00000000, (std::int32_t)0xffffffff, true}, { 0x00000001, (std::int32_t)0xffffffff, true}, { 0x00000002, (std::int32_t)0xffffffff, true}, { 0x7ffffffe, (std::int32_t)0xffffffff, true}, { 0x7fffffff, (std::int32_t)0xffffffff, true}, { 0x80000000, (std::int32_t)0xffffffff, true}, { 0x80000001, (std::int32_t)0xffffffff, true}, { 0xfffffffe, (std::int32_t)0xffffffff, true}, { 0xffffffff, (std::int32_t)0xffffffff, false}, }; template<> TestVector< std::uint32_t, std::int32_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint32_int32; this->count = COUNTOF(uint32_int32); } static const TestCase< std::uint64_t, std::int32_t, OpType::Sub > uint64_int32[] = { { 0x0000000000000000, (std::int32_t)0x00000000, true}, { 0x0000000000000001, (std::int32_t)0x00000000, true}, { 0x0000000000000002, (std::int32_t)0x00000000, true}, { 0x000000007ffffffe, (std::int32_t)0x00000000, true}, { 0x000000007fffffff, (std::int32_t)0x00000000, true}, { 0x0000000080000000, (std::int32_t)0x00000000, true}, { 0x0000000080000001, (std::int32_t)0x00000000, true}, { 0x00000000fffffffe, (std::int32_t)0x00000000, true}, { 0x00000000ffffffff, (std::int32_t)0x00000000, true}, { 0x0000000100000000, (std::int32_t)0x00000000, true}, { 0x0000000200000000, (std::int32_t)0x00000000, true}, { 0x7ffffffffffffffe, (std::int32_t)0x00000000, true}, { 0x7fffffffffffffff, (std::int32_t)0x00000000, true}, { 0x8000000000000000, (std::int32_t)0x00000000, true}, { 0x8000000000000001, (std::int32_t)0x00000000, true}, { 0xfffffffffffffffe, (std::int32_t)0x00000000, true}, { 0xffffffffffffffff, (std::int32_t)0x00000000, true}, { 0x0000000000000000, (std::int32_t)0x00000001, false}, { 0x0000000000000001, (std::int32_t)0x00000001, true}, { 0x0000000000000002, (std::int32_t)0x00000001, true}, { 0x000000007ffffffe, (std::int32_t)0x00000001, true}, { 0x000000007fffffff, (std::int32_t)0x00000001, true}, { 0x0000000080000000, (std::int32_t)0x00000001, true}, { 0x0000000080000001, (std::int32_t)0x00000001, true}, { 0x00000000fffffffe, (std::int32_t)0x00000001, true}, { 0x00000000ffffffff, (std::int32_t)0x00000001, true}, { 0x0000000100000000, (std::int32_t)0x00000001, true}, { 0x0000000200000000, (std::int32_t)0x00000001, true}, { 0x7ffffffffffffffe, (std::int32_t)0x00000001, true}, { 0x7fffffffffffffff, (std::int32_t)0x00000001, true}, { 0x8000000000000000, (std::int32_t)0x00000001, true}, { 0x8000000000000001, (std::int32_t)0x00000001, true}, { 0xfffffffffffffffe, (std::int32_t)0x00000001, true}, { 0xffffffffffffffff, (std::int32_t)0x00000001, true}, { 0x0000000000000000, (std::int32_t)0x00000002, false}, { 0x0000000000000001, (std::int32_t)0x00000002, false}, { 0x0000000000000002, (std::int32_t)0x00000002, true}, { 0x000000007ffffffe, (std::int32_t)0x00000002, true}, { 0x000000007fffffff, (std::int32_t)0x00000002, true}, { 0x0000000080000000, (std::int32_t)0x00000002, true}, { 0x0000000080000001, (std::int32_t)0x00000002, true}, { 0x00000000fffffffe, (std::int32_t)0x00000002, true}, { 0x00000000ffffffff, (std::int32_t)0x00000002, true}, { 0x0000000100000000, (std::int32_t)0x00000002, true}, { 0x0000000200000000, (std::int32_t)0x00000002, true}, { 0x7ffffffffffffffe, (std::int32_t)0x00000002, true}, { 0x7fffffffffffffff, (std::int32_t)0x00000002, true}, { 0x8000000000000000, (std::int32_t)0x00000002, true}, { 0x8000000000000001, (std::int32_t)0x00000002, true}, { 0xfffffffffffffffe, (std::int32_t)0x00000002, true}, { 0xffffffffffffffff, (std::int32_t)0x00000002, true}, { 0x0000000000000000, (std::int32_t)0x7ffffffe, false}, { 0x0000000000000001, (std::int32_t)0x7ffffffe, false}, { 0x0000000000000002, (std::int32_t)0x7ffffffe, false}, { 0x000000007ffffffe, (std::int32_t)0x7ffffffe, true}, { 0x000000007fffffff, (std::int32_t)0x7ffffffe, true}, { 0x0000000080000000, (std::int32_t)0x7ffffffe, true}, { 0x0000000080000001, (std::int32_t)0x7ffffffe, true}, { 0x00000000fffffffe, (std::int32_t)0x7ffffffe, true}, { 0x00000000ffffffff, (std::int32_t)0x7ffffffe, true}, { 0x0000000100000000, (std::int32_t)0x7ffffffe, true}, { 0x0000000200000000, (std::int32_t)0x7ffffffe, true}, { 0x7ffffffffffffffe, (std::int32_t)0x7ffffffe, true}, { 0x7fffffffffffffff, (std::int32_t)0x7ffffffe, true}, { 0x8000000000000000, (std::int32_t)0x7ffffffe, true}, { 0x8000000000000001, (std::int32_t)0x7ffffffe, true}, { 0xfffffffffffffffe, (std::int32_t)0x7ffffffe, true}, { 0xffffffffffffffff, (std::int32_t)0x7ffffffe, true}, { 0x0000000000000000, (std::int32_t)0x7fffffff, false}, { 0x0000000000000001, (std::int32_t)0x7fffffff, false}, { 0x0000000000000002, (std::int32_t)0x7fffffff, false}, { 0x000000007ffffffe, (std::int32_t)0x7fffffff, false}, { 0x000000007fffffff, (std::int32_t)0x7fffffff, true}, { 0x0000000080000000, (std::int32_t)0x7fffffff, true}, { 0x0000000080000001, (std::int32_t)0x7fffffff, true}, { 0x00000000fffffffe, (std::int32_t)0x7fffffff, true}, { 0x00000000ffffffff, (std::int32_t)0x7fffffff, true}, { 0x0000000100000000, (std::int32_t)0x7fffffff, true}, { 0x0000000200000000, (std::int32_t)0x7fffffff, true}, { 0x7ffffffffffffffe, (std::int32_t)0x7fffffff, true}, { 0x7fffffffffffffff, (std::int32_t)0x7fffffff, true}, { 0x8000000000000000, (std::int32_t)0x7fffffff, true}, { 0x8000000000000001, (std::int32_t)0x7fffffff, true}, { 0xfffffffffffffffe, (std::int32_t)0x7fffffff, true}, { 0xffffffffffffffff, (std::int32_t)0x7fffffff, true}, { 0x0000000000000000, (std::int32_t)0x80000000, true}, { 0x0000000000000001, (std::int32_t)0x80000000, true}, { 0x0000000000000002, (std::int32_t)0x80000000, true}, { 0x000000007ffffffe, (std::int32_t)0x80000000, true}, { 0x000000007fffffff, (std::int32_t)0x80000000, true}, { 0x0000000080000000, (std::int32_t)0x80000000, true}, { 0x0000000080000001, (std::int32_t)0x80000000, true}, { 0x00000000fffffffe, (std::int32_t)0x80000000, true}, { 0x00000000ffffffff, (std::int32_t)0x80000000, true}, { 0x0000000100000000, (std::int32_t)0x80000000, true}, { 0x0000000200000000, (std::int32_t)0x80000000, true}, { 0x7ffffffffffffffe, (std::int32_t)0x80000000, true}, { 0x7fffffffffffffff, (std::int32_t)0x80000000, true}, { 0x8000000000000000, (std::int32_t)0x80000000, true}, { 0x8000000000000001, (std::int32_t)0x80000000, true}, { 0xfffffffffffffffe, (std::int32_t)0x80000000, false}, { 0xffffffffffffffff, (std::int32_t)0x80000000, false}, { 0x0000000000000000, (std::int32_t)0x80000001, true}, { 0x0000000000000001, (std::int32_t)0x80000001, true}, { 0x0000000000000002, (std::int32_t)0x80000001, true}, { 0x000000007ffffffe, (std::int32_t)0x80000001, true}, { 0x000000007fffffff, (std::int32_t)0x80000001, true}, { 0x0000000080000000, (std::int32_t)0x80000001, true}, { 0x0000000080000001, (std::int32_t)0x80000001, true}, { 0x00000000fffffffe, (std::int32_t)0x80000001, true}, { 0x00000000ffffffff, (std::int32_t)0x80000001, true}, { 0x0000000100000000, (std::int32_t)0x80000001, true}, { 0x0000000200000000, (std::int32_t)0x80000001, true}, { 0x7ffffffffffffffe, (std::int32_t)0x80000001, true}, { 0x7fffffffffffffff, (std::int32_t)0x80000001, true}, { 0x8000000000000000, (std::int32_t)0x80000001, true}, { 0x8000000000000001, (std::int32_t)0x80000001, true}, { 0xfffffffffffffffe, (std::int32_t)0x80000001, false}, { 0xffffffffffffffff, (std::int32_t)0x80000001, false}, { 0x0000000000000000, (std::int32_t)0xfffffffe, true}, { 0x0000000000000001, (std::int32_t)0xfffffffe, true}, { 0x0000000000000002, (std::int32_t)0xfffffffe, true}, { 0x000000007ffffffe, (std::int32_t)0xfffffffe, true}, { 0x000000007fffffff, (std::int32_t)0xfffffffe, true}, { 0x0000000080000000, (std::int32_t)0xfffffffe, true}, { 0x0000000080000001, (std::int32_t)0xfffffffe, true}, { 0x00000000fffffffe, (std::int32_t)0xfffffffe, true}, { 0x00000000ffffffff, (std::int32_t)0xfffffffe, true}, { 0x0000000100000000, (std::int32_t)0xfffffffe, true}, { 0x0000000200000000, (std::int32_t)0xfffffffe, true}, { 0x7ffffffffffffffe, (std::int32_t)0xfffffffe, true}, { 0x7fffffffffffffff, (std::int32_t)0xfffffffe, true}, { 0x8000000000000000, (std::int32_t)0xfffffffe, true}, { 0x8000000000000001, (std::int32_t)0xfffffffe, true}, { 0xfffffffffffffffe, (std::int32_t)0xfffffffe, false}, { 0xffffffffffffffff, (std::int32_t)0xfffffffe, false}, { 0x0000000000000000, (std::int32_t)0xffffffff, true}, { 0x0000000000000001, (std::int32_t)0xffffffff, true}, { 0x0000000000000002, (std::int32_t)0xffffffff, true}, { 0x000000007ffffffe, (std::int32_t)0xffffffff, true}, { 0x000000007fffffff, (std::int32_t)0xffffffff, true}, { 0x0000000080000000, (std::int32_t)0xffffffff, true}, { 0x0000000080000001, (std::int32_t)0xffffffff, true}, { 0x00000000fffffffe, (std::int32_t)0xffffffff, true}, { 0x00000000ffffffff, (std::int32_t)0xffffffff, true}, { 0x0000000100000000, (std::int32_t)0xffffffff, true}, { 0x0000000200000000, (std::int32_t)0xffffffff, true}, { 0x7ffffffffffffffe, (std::int32_t)0xffffffff, true}, { 0x7fffffffffffffff, (std::int32_t)0xffffffff, true}, { 0x8000000000000000, (std::int32_t)0xffffffff, true}, { 0x8000000000000001, (std::int32_t)0xffffffff, true}, { 0xfffffffffffffffe, (std::int32_t)0xffffffff, true}, { 0xffffffffffffffff, (std::int32_t)0xffffffff, false}, }; template<> TestVector< std::uint64_t, std::int32_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint64_int32; this->count = COUNTOF(uint64_int32); } static const TestCase< std::uint64_t, std::int16_t, OpType::Sub > uint64_int16[] = { { 0x0000000000000000, (std::int16_t)0x0000, true}, { 0x0000000000000001, (std::int16_t)0x0000, true}, { 0x0000000000000002, (std::int16_t)0x0000, true}, { 0x000000007ffffffe, (std::int16_t)0x0000, true}, { 0x000000007fffffff, (std::int16_t)0x0000, true}, { 0x0000000080000000, (std::int16_t)0x0000, true}, { 0x0000000080000001, (std::int16_t)0x0000, true}, { 0x00000000fffffffe, (std::int16_t)0x0000, true}, { 0x00000000ffffffff, (std::int16_t)0x0000, true}, { 0x0000000100000000, (std::int16_t)0x0000, true}, { 0x0000000200000000, (std::int16_t)0x0000, true}, { 0x7ffffffffffffffe, (std::int16_t)0x0000, true}, { 0x7fffffffffffffff, (std::int16_t)0x0000, true}, { 0x8000000000000000, (std::int16_t)0x0000, true}, { 0x8000000000000001, (std::int16_t)0x0000, true}, { 0xfffffffffffffffe, (std::int16_t)0x0000, true}, { 0xffffffffffffffff, (std::int16_t)0x0000, true}, { 0x0000000000000000, (std::int16_t)0x0001, false}, { 0x0000000000000001, (std::int16_t)0x0001, true}, { 0x0000000000000002, (std::int16_t)0x0001, true}, { 0x000000007ffffffe, (std::int16_t)0x0001, true}, { 0x000000007fffffff, (std::int16_t)0x0001, true}, { 0x0000000080000000, (std::int16_t)0x0001, true}, { 0x0000000080000001, (std::int16_t)0x0001, true}, { 0x00000000fffffffe, (std::int16_t)0x0001, true}, { 0x00000000ffffffff, (std::int16_t)0x0001, true}, { 0x0000000100000000, (std::int16_t)0x0001, true}, { 0x0000000200000000, (std::int16_t)0x0001, true}, { 0x7ffffffffffffffe, (std::int16_t)0x0001, true}, { 0x7fffffffffffffff, (std::int16_t)0x0001, true}, { 0x8000000000000000, (std::int16_t)0x0001, true}, { 0x8000000000000001, (std::int16_t)0x0001, true}, { 0xfffffffffffffffe, (std::int16_t)0x0001, true}, { 0xffffffffffffffff, (std::int16_t)0x0001, true}, { 0x0000000000000000, (std::int16_t)0x0002, false}, { 0x0000000000000001, (std::int16_t)0x0002, false}, { 0x0000000000000002, (std::int16_t)0x0002, true}, { 0x000000007ffffffe, (std::int16_t)0x0002, true}, { 0x000000007fffffff, (std::int16_t)0x0002, true}, { 0x0000000080000000, (std::int16_t)0x0002, true}, { 0x0000000080000001, (std::int16_t)0x0002, true}, { 0x00000000fffffffe, (std::int16_t)0x0002, true}, { 0x00000000ffffffff, (std::int16_t)0x0002, true}, { 0x0000000100000000, (std::int16_t)0x0002, true}, { 0x0000000200000000, (std::int16_t)0x0002, true}, { 0x7ffffffffffffffe, (std::int16_t)0x0002, true}, { 0x7fffffffffffffff, (std::int16_t)0x0002, true}, { 0x8000000000000000, (std::int16_t)0x0002, true}, { 0x8000000000000001, (std::int16_t)0x0002, true}, { 0xfffffffffffffffe, (std::int16_t)0x0002, true}, { 0xffffffffffffffff, (std::int16_t)0x0002, true}, { 0x0000000000000000, (std::int16_t)0x7ffe, false}, { 0x0000000000000001, (std::int16_t)0x7ffe, false}, { 0x0000000000000002, (std::int16_t)0x7ffe, false}, { 0x000000007ffffffe, (std::int16_t)0x7ffe, true}, { 0x000000007fffffff, (std::int16_t)0x7ffe, true}, { 0x0000000080000000, (std::int16_t)0x7ffe, true}, { 0x0000000080000001, (std::int16_t)0x7ffe, true}, { 0x00000000fffffffe, (std::int16_t)0x7ffe, true}, { 0x00000000ffffffff, (std::int16_t)0x7ffe, true}, { 0x0000000100000000, (std::int16_t)0x7ffe, true}, { 0x0000000200000000, (std::int16_t)0x7ffe, true}, { 0x7ffffffffffffffe, (std::int16_t)0x7ffe, true}, { 0x7fffffffffffffff, (std::int16_t)0x7ffe, true}, { 0x8000000000000000, (std::int16_t)0x7ffe, true}, { 0x8000000000000001, (std::int16_t)0x7ffe, true}, { 0xfffffffffffffffe, (std::int16_t)0x7ffe, true}, { 0xffffffffffffffff, (std::int16_t)0x7ffe, true}, { 0x0000000000000000, (std::int16_t)0x7fff, false}, { 0x0000000000000001, (std::int16_t)0x7fff, false}, { 0x0000000000000002, (std::int16_t)0x7fff, false}, { 0x000000007ffffffe, (std::int16_t)0x7fff, true}, { 0x000000007fffffff, (std::int16_t)0x7fff, true}, { 0x0000000080000000, (std::int16_t)0x7fff, true}, { 0x0000000080000001, (std::int16_t)0x7fff, true}, { 0x00000000fffffffe, (std::int16_t)0x7fff, true}, { 0x00000000ffffffff, (std::int16_t)0x7fff, true}, { 0x0000000100000000, (std::int16_t)0x7fff, true}, { 0x0000000200000000, (std::int16_t)0x7fff, true}, { 0x7ffffffffffffffe, (std::int16_t)0x7fff, true}, { 0x7fffffffffffffff, (std::int16_t)0x7fff, true}, { 0x8000000000000000, (std::int16_t)0x7fff, true}, { 0x8000000000000001, (std::int16_t)0x7fff, true}, { 0xfffffffffffffffe, (std::int16_t)0x7fff, true}, { 0xffffffffffffffff, (std::int16_t)0x7fff, true}, { 0x0000000000000000, (std::int16_t)0x8000, true}, { 0x0000000000000001, (std::int16_t)0x8000, true}, { 0x0000000000000002, (std::int16_t)0x8000, true}, { 0x000000007ffffffe, (std::int16_t)0x8000, true}, { 0x000000007fffffff, (std::int16_t)0x8000, true}, { 0x0000000080000000, (std::int16_t)0x8000, true}, { 0x0000000080000001, (std::int16_t)0x8000, true}, { 0x00000000fffffffe, (std::int16_t)0x8000, true}, { 0x00000000ffffffff, (std::int16_t)0x8000, true}, { 0x0000000100000000, (std::int16_t)0x8000, true}, { 0x0000000200000000, (std::int16_t)0x8000, true}, { 0x7ffffffffffffffe, (std::int16_t)0x8000, true}, { 0x7fffffffffffffff, (std::int16_t)0x8000, true}, { 0x8000000000000000, (std::int16_t)0x8000, true}, { 0x8000000000000001, (std::int16_t)0x8000, true}, { 0xfffffffffffffffe, (std::int16_t)0x8000, false}, { 0xffffffffffffffff, (std::int16_t)0x8000, false}, { 0x0000000000000000, (std::int16_t)0x8001, true}, { 0x0000000000000001, (std::int16_t)0x8001, true}, { 0x0000000000000002, (std::int16_t)0x8001, true}, { 0x000000007ffffffe, (std::int16_t)0x8001, true}, { 0x000000007fffffff, (std::int16_t)0x8001, true}, { 0x0000000080000000, (std::int16_t)0x8001, true}, { 0x0000000080000001, (std::int16_t)0x8001, true}, { 0x00000000fffffffe, (std::int16_t)0x8001, true}, { 0x00000000ffffffff, (std::int16_t)0x8001, true}, { 0x0000000100000000, (std::int16_t)0x8001, true}, { 0x0000000200000000, (std::int16_t)0x8001, true}, { 0x7ffffffffffffffe, (std::int16_t)0x8001, true}, { 0x7fffffffffffffff, (std::int16_t)0x8001, true}, { 0x8000000000000000, (std::int16_t)0x8001, true}, { 0x8000000000000001, (std::int16_t)0x8001, true}, { 0xfffffffffffffffe, (std::int16_t)0x8001, false}, { 0xffffffffffffffff, (std::int16_t)0x8001, false}, { 0x0000000000000000, (std::int16_t)0xfffe, true}, { 0x0000000000000001, (std::int16_t)0xfffe, true}, { 0x0000000000000002, (std::int16_t)0xfffe, true}, { 0x000000007ffffffe, (std::int16_t)0xfffe, true}, { 0x000000007fffffff, (std::int16_t)0xfffe, true}, { 0x0000000080000000, (std::int16_t)0xfffe, true}, { 0x0000000080000001, (std::int16_t)0xfffe, true}, { 0x00000000fffffffe, (std::int16_t)0xfffe, true}, { 0x00000000ffffffff, (std::int16_t)0xfffe, true}, { 0x0000000100000000, (std::int16_t)0xfffe, true}, { 0x0000000200000000, (std::int16_t)0xfffe, true}, { 0x7ffffffffffffffe, (std::int16_t)0xfffe, true}, { 0x7fffffffffffffff, (std::int16_t)0xfffe, true}, { 0x8000000000000000, (std::int16_t)0xfffe, true}, { 0x8000000000000001, (std::int16_t)0xfffe, true}, { 0xfffffffffffffffe, (std::int16_t)0xfffe, false}, { 0xffffffffffffffff, (std::int16_t)0xfffe, false}, { 0x0000000000000000, (std::int16_t)0xffff, true}, { 0x0000000000000001, (std::int16_t)0xffff, true}, { 0x0000000000000002, (std::int16_t)0xffff, true}, { 0x000000007ffffffe, (std::int16_t)0xffff, true}, { 0x000000007fffffff, (std::int16_t)0xffff, true}, { 0x0000000080000000, (std::int16_t)0xffff, true}, { 0x0000000080000001, (std::int16_t)0xffff, true}, { 0x00000000fffffffe, (std::int16_t)0xffff, true}, { 0x00000000ffffffff, (std::int16_t)0xffff, true}, { 0x0000000100000000, (std::int16_t)0xffff, true}, { 0x0000000200000000, (std::int16_t)0xffff, true}, { 0x7ffffffffffffffe, (std::int16_t)0xffff, true}, { 0x7fffffffffffffff, (std::int16_t)0xffff, true}, { 0x8000000000000000, (std::int16_t)0xffff, true}, { 0x8000000000000001, (std::int16_t)0xffff, true}, { 0xfffffffffffffffe, (std::int16_t)0xffff, true}, { 0xffffffffffffffff, (std::int16_t)0xffff, false}, }; template<> TestVector< std::uint64_t, std::int16_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint64_int16; this->count = COUNTOF(uint64_int16); } static const TestCase< std::uint64_t, std::int8_t, OpType::Sub > uint64_int8[] = { { 0x0000000000000000, (std::int8_t)0x00, true}, { 0x0000000000000001, (std::int8_t)0x00, true}, { 0x0000000000000002, (std::int8_t)0x00, true}, { 0x000000007ffffffe, (std::int8_t)0x00, true}, { 0x000000007fffffff, (std::int8_t)0x00, true}, { 0x0000000080000000, (std::int8_t)0x00, true}, { 0x0000000080000001, (std::int8_t)0x00, true}, { 0x00000000fffffffe, (std::int8_t)0x00, true}, { 0x00000000ffffffff, (std::int8_t)0x00, true}, { 0x0000000100000000, (std::int8_t)0x00, true}, { 0x0000000200000000, (std::int8_t)0x00, true}, { 0x7ffffffffffffffe, (std::int8_t)0x00, true}, { 0x7fffffffffffffff, (std::int8_t)0x00, true}, { 0x8000000000000000, (std::int8_t)0x00, true}, { 0x8000000000000001, (std::int8_t)0x00, true}, { 0xfffffffffffffffe, (std::int8_t)0x00, true}, { 0xffffffffffffffff, (std::int8_t)0x00, true}, { 0x0000000000000000, (std::int8_t)0x01, false}, { 0x0000000000000001, (std::int8_t)0x01, true}, { 0x0000000000000002, (std::int8_t)0x01, true}, { 0x000000007ffffffe, (std::int8_t)0x01, true}, { 0x000000007fffffff, (std::int8_t)0x01, true}, { 0x0000000080000000, (std::int8_t)0x01, true}, { 0x0000000080000001, (std::int8_t)0x01, true}, { 0x00000000fffffffe, (std::int8_t)0x01, true}, { 0x00000000ffffffff, (std::int8_t)0x01, true}, { 0x0000000100000000, (std::int8_t)0x01, true}, { 0x0000000200000000, (std::int8_t)0x01, true}, { 0x7ffffffffffffffe, (std::int8_t)0x01, true}, { 0x7fffffffffffffff, (std::int8_t)0x01, true}, { 0x8000000000000000, (std::int8_t)0x01, true}, { 0x8000000000000001, (std::int8_t)0x01, true}, { 0xfffffffffffffffe, (std::int8_t)0x01, true}, { 0xffffffffffffffff, (std::int8_t)0x01, true}, { 0x0000000000000000, (std::int8_t)0x02, false}, { 0x0000000000000001, (std::int8_t)0x02, false}, { 0x0000000000000002, (std::int8_t)0x02, true}, { 0x000000007ffffffe, (std::int8_t)0x02, true}, { 0x000000007fffffff, (std::int8_t)0x02, true}, { 0x0000000080000000, (std::int8_t)0x02, true}, { 0x0000000080000001, (std::int8_t)0x02, true}, { 0x00000000fffffffe, (std::int8_t)0x02, true}, { 0x00000000ffffffff, (std::int8_t)0x02, true}, { 0x0000000100000000, (std::int8_t)0x02, true}, { 0x0000000200000000, (std::int8_t)0x02, true}, { 0x7ffffffffffffffe, (std::int8_t)0x02, true}, { 0x7fffffffffffffff, (std::int8_t)0x02, true}, { 0x8000000000000000, (std::int8_t)0x02, true}, { 0x8000000000000001, (std::int8_t)0x02, true}, { 0xfffffffffffffffe, (std::int8_t)0x02, true}, { 0xffffffffffffffff, (std::int8_t)0x02, true}, { 0x0000000000000000, (std::int8_t)0x7e, false}, { 0x0000000000000001, (std::int8_t)0x7e, false}, { 0x0000000000000002, (std::int8_t)0x7e, false}, { 0x000000007ffffffe, (std::int8_t)0x7e, true}, { 0x000000007fffffff, (std::int8_t)0x7e, true}, { 0x0000000080000000, (std::int8_t)0x7e, true}, { 0x0000000080000001, (std::int8_t)0x7e, true}, { 0x00000000fffffffe, (std::int8_t)0x7e, true}, { 0x00000000ffffffff, (std::int8_t)0x7e, true}, { 0x0000000100000000, (std::int8_t)0x7e, true}, { 0x0000000200000000, (std::int8_t)0x7e, true}, { 0x7ffffffffffffffe, (std::int8_t)0x7e, true}, { 0x7fffffffffffffff, (std::int8_t)0x7e, true}, { 0x8000000000000000, (std::int8_t)0x7e, true}, { 0x8000000000000001, (std::int8_t)0x7e, true}, { 0xfffffffffffffffe, (std::int8_t)0x7e, true}, { 0xffffffffffffffff, (std::int8_t)0x7e, true}, { 0x0000000000000000, (std::int8_t)0x7f, false}, { 0x0000000000000001, (std::int8_t)0x7f, false}, { 0x0000000000000002, (std::int8_t)0x7f, false}, { 0x000000007ffffffe, (std::int8_t)0x7f, true}, { 0x000000007fffffff, (std::int8_t)0x7f, true}, { 0x0000000080000000, (std::int8_t)0x7f, true}, { 0x0000000080000001, (std::int8_t)0x7f, true}, { 0x00000000fffffffe, (std::int8_t)0x7f, true}, { 0x00000000ffffffff, (std::int8_t)0x7f, true}, { 0x0000000100000000, (std::int8_t)0x7f, true}, { 0x0000000200000000, (std::int8_t)0x7f, true}, { 0x7ffffffffffffffe, (std::int8_t)0x7f, true}, { 0x7fffffffffffffff, (std::int8_t)0x7f, true}, { 0x8000000000000000, (std::int8_t)0x7f, true}, { 0x8000000000000001, (std::int8_t)0x7f, true}, { 0xfffffffffffffffe, (std::int8_t)0x7f, true}, { 0xffffffffffffffff, (std::int8_t)0x7f, true}, { 0x0000000000000000, (std::int8_t)0x80, true}, { 0x0000000000000001, (std::int8_t)0x80, true}, { 0x0000000000000002, (std::int8_t)0x80, true}, { 0x000000007ffffffe, (std::int8_t)0x80, true}, { 0x000000007fffffff, (std::int8_t)0x80, true}, { 0x0000000080000000, (std::int8_t)0x80, true}, { 0x0000000080000001, (std::int8_t)0x80, true}, { 0x00000000fffffffe, (std::int8_t)0x80, true}, { 0x00000000ffffffff, (std::int8_t)0x80, true}, { 0x0000000100000000, (std::int8_t)0x80, true}, { 0x0000000200000000, (std::int8_t)0x80, true}, { 0x7ffffffffffffffe, (std::int8_t)0x80, true}, { 0x7fffffffffffffff, (std::int8_t)0x80, true}, { 0x8000000000000000, (std::int8_t)0x80, true}, { 0x8000000000000001, (std::int8_t)0x80, true}, { 0xfffffffffffffffe, (std::int8_t)0x80, false}, { 0xffffffffffffffff, (std::int8_t)0x80, false}, { 0x0000000000000000, (std::int8_t)0x81, true}, { 0x0000000000000001, (std::int8_t)0x81, true}, { 0x0000000000000002, (std::int8_t)0x81, true}, { 0x000000007ffffffe, (std::int8_t)0x81, true}, { 0x000000007fffffff, (std::int8_t)0x81, true}, { 0x0000000080000000, (std::int8_t)0x81, true}, { 0x0000000080000001, (std::int8_t)0x81, true}, { 0x00000000fffffffe, (std::int8_t)0x81, true}, { 0x00000000ffffffff, (std::int8_t)0x81, true}, { 0x0000000100000000, (std::int8_t)0x81, true}, { 0x0000000200000000, (std::int8_t)0x81, true}, { 0x7ffffffffffffffe, (std::int8_t)0x81, true}, { 0x7fffffffffffffff, (std::int8_t)0x81, true}, { 0x8000000000000000, (std::int8_t)0x81, true}, { 0x8000000000000001, (std::int8_t)0x81, true}, { 0xfffffffffffffffe, (std::int8_t)0x81, false}, { 0xffffffffffffffff, (std::int8_t)0x81, false}, { 0x0000000000000000, (std::int8_t)0xfe, true}, { 0x0000000000000001, (std::int8_t)0xfe, true}, { 0x0000000000000002, (std::int8_t)0xfe, true}, { 0x000000007ffffffe, (std::int8_t)0xfe, true}, { 0x000000007fffffff, (std::int8_t)0xfe, true}, { 0x0000000080000000, (std::int8_t)0xfe, true}, { 0x0000000080000001, (std::int8_t)0xfe, true}, { 0x00000000fffffffe, (std::int8_t)0xfe, true}, { 0x00000000ffffffff, (std::int8_t)0xfe, true}, { 0x0000000100000000, (std::int8_t)0xfe, true}, { 0x0000000200000000, (std::int8_t)0xfe, true}, { 0x7ffffffffffffffe, (std::int8_t)0xfe, true}, { 0x7fffffffffffffff, (std::int8_t)0xfe, true}, { 0x8000000000000000, (std::int8_t)0xfe, true}, { 0x8000000000000001, (std::int8_t)0xfe, true}, { 0xfffffffffffffffe, (std::int8_t)0xfe, false}, { 0xffffffffffffffff, (std::int8_t)0xfe, false}, { 0x0000000000000000, (std::int8_t)0xff, true}, { 0x0000000000000001, (std::int8_t)0xff, true}, { 0x0000000000000002, (std::int8_t)0xff, true}, { 0x000000007ffffffe, (std::int8_t)0xff, true}, { 0x000000007fffffff, (std::int8_t)0xff, true}, { 0x0000000080000000, (std::int8_t)0xff, true}, { 0x0000000080000001, (std::int8_t)0xff, true}, { 0x00000000fffffffe, (std::int8_t)0xff, true}, { 0x00000000ffffffff, (std::int8_t)0xff, true}, { 0x0000000100000000, (std::int8_t)0xff, true}, { 0x0000000200000000, (std::int8_t)0xff, true}, { 0x7ffffffffffffffe, (std::int8_t)0xff, true}, { 0x7fffffffffffffff, (std::int8_t)0xff, true}, { 0x8000000000000000, (std::int8_t)0xff, true}, { 0x8000000000000001, (std::int8_t)0xff, true}, { 0xfffffffffffffffe, (std::int8_t)0xff, true}, { 0xffffffffffffffff, (std::int8_t)0xff, false}, }; template<> TestVector< std::uint64_t, std::int8_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint64_int8; this->count = COUNTOF(uint64_int8); } static const TestCase< std::uint8_t, std::int64_t, OpType::Sub > uint8_int64[] = { { 0x00, (std::int64_t)0x0000000000000000, true}, { 0x01, (std::int64_t)0x0000000000000000, true}, { 0x02, (std::int64_t)0x0000000000000000, true}, { 0x7e, (std::int64_t)0x0000000000000000, true}, { 0x7f, (std::int64_t)0x0000000000000000, true}, { 0x80, (std::int64_t)0x0000000000000000, true}, { 0x81, (std::int64_t)0x0000000000000000, true}, { 0xfe, (std::int64_t)0x0000000000000000, true}, { 0xff, (std::int64_t)0x0000000000000000, true}, { 0x00, (std::int64_t)0x0000000000000001, false}, { 0x01, (std::int64_t)0x0000000000000001, true}, { 0x02, (std::int64_t)0x0000000000000001, true}, { 0x7e, (std::int64_t)0x0000000000000001, true}, { 0x7f, (std::int64_t)0x0000000000000001, true}, { 0x80, (std::int64_t)0x0000000000000001, true}, { 0x81, (std::int64_t)0x0000000000000001, true}, { 0xfe, (std::int64_t)0x0000000000000001, true}, { 0xff, (std::int64_t)0x0000000000000001, true}, { 0x00, (std::int64_t)0x0000000000000002, false}, { 0x01, (std::int64_t)0x0000000000000002, false}, { 0x02, (std::int64_t)0x0000000000000002, true}, { 0x7e, (std::int64_t)0x0000000000000002, true}, { 0x7f, (std::int64_t)0x0000000000000002, true}, { 0x80, (std::int64_t)0x0000000000000002, true}, { 0x81, (std::int64_t)0x0000000000000002, true}, { 0xfe, (std::int64_t)0x0000000000000002, true}, { 0xff, (std::int64_t)0x0000000000000002, true}, { 0x00, (std::int64_t)0x000000007ffffffe, false}, { 0x01, (std::int64_t)0x000000007ffffffe, false}, { 0x02, (std::int64_t)0x000000007ffffffe, false}, { 0x7e, (std::int64_t)0x000000007ffffffe, false}, { 0x7f, (std::int64_t)0x000000007ffffffe, false}, { 0x80, (std::int64_t)0x000000007ffffffe, false}, { 0x81, (std::int64_t)0x000000007ffffffe, false}, { 0xfe, (std::int64_t)0x000000007ffffffe, false}, { 0xff, (std::int64_t)0x000000007ffffffe, false}, { 0x00, (std::int64_t)0x000000007fffffff, false}, { 0x01, (std::int64_t)0x000000007fffffff, false}, { 0x02, (std::int64_t)0x000000007fffffff, false}, { 0x7e, (std::int64_t)0x000000007fffffff, false}, { 0x7f, (std::int64_t)0x000000007fffffff, false}, { 0x80, (std::int64_t)0x000000007fffffff, false}, { 0x81, (std::int64_t)0x000000007fffffff, false}, { 0xfe, (std::int64_t)0x000000007fffffff, false}, { 0xff, (std::int64_t)0x000000007fffffff, false}, { 0x00, (std::int64_t)0x0000000080000000, false}, { 0x01, (std::int64_t)0x0000000080000000, false}, { 0x02, (std::int64_t)0x0000000080000000, false}, { 0x7e, (std::int64_t)0x0000000080000000, false}, { 0x7f, (std::int64_t)0x0000000080000000, false}, { 0x80, (std::int64_t)0x0000000080000000, false}, { 0x81, (std::int64_t)0x0000000080000000, false}, { 0xfe, (std::int64_t)0x0000000080000000, false}, { 0xff, (std::int64_t)0x0000000080000000, false}, { 0x00, (std::int64_t)0x0000000080000001, false}, { 0x01, (std::int64_t)0x0000000080000001, false}, { 0x02, (std::int64_t)0x0000000080000001, false}, { 0x7e, (std::int64_t)0x0000000080000001, false}, { 0x7f, (std::int64_t)0x0000000080000001, false}, { 0x80, (std::int64_t)0x0000000080000001, false}, { 0x81, (std::int64_t)0x0000000080000001, false}, { 0xfe, (std::int64_t)0x0000000080000001, false}, { 0xff, (std::int64_t)0x0000000080000001, false}, { 0x00, (std::int64_t)0x00000000fffffffe, false}, { 0x01, (std::int64_t)0x00000000fffffffe, false}, { 0x02, (std::int64_t)0x00000000fffffffe, false}, { 0x7e, (std::int64_t)0x00000000fffffffe, false}, { 0x7f, (std::int64_t)0x00000000fffffffe, false}, { 0x80, (std::int64_t)0x00000000fffffffe, false}, { 0x81, (std::int64_t)0x00000000fffffffe, false}, { 0xfe, (std::int64_t)0x00000000fffffffe, false}, { 0xff, (std::int64_t)0x00000000fffffffe, false}, { 0x00, (std::int64_t)0x00000000ffffffff, false}, { 0x01, (std::int64_t)0x00000000ffffffff, false}, { 0x02, (std::int64_t)0x00000000ffffffff, false}, { 0x7e, (std::int64_t)0x00000000ffffffff, false}, { 0x7f, (std::int64_t)0x00000000ffffffff, false}, { 0x80, (std::int64_t)0x00000000ffffffff, false}, { 0x81, (std::int64_t)0x00000000ffffffff, false}, { 0xfe, (std::int64_t)0x00000000ffffffff, false}, { 0xff, (std::int64_t)0x00000000ffffffff, false}, { 0x00, (std::int64_t)0x0000000100000000, false}, { 0x01, (std::int64_t)0x0000000100000000, false}, { 0x02, (std::int64_t)0x0000000100000000, false}, { 0x7e, (std::int64_t)0x0000000100000000, false}, { 0x7f, (std::int64_t)0x0000000100000000, false}, { 0x80, (std::int64_t)0x0000000100000000, false}, { 0x81, (std::int64_t)0x0000000100000000, false}, { 0xfe, (std::int64_t)0x0000000100000000, false}, { 0xff, (std::int64_t)0x0000000100000000, false}, { 0x00, (std::int64_t)0x0000000200000000, false}, { 0x01, (std::int64_t)0x0000000200000000, false}, { 0x02, (std::int64_t)0x0000000200000000, false}, { 0x7e, (std::int64_t)0x0000000200000000, false}, { 0x7f, (std::int64_t)0x0000000200000000, false}, { 0x80, (std::int64_t)0x0000000200000000, false}, { 0x81, (std::int64_t)0x0000000200000000, false}, { 0xfe, (std::int64_t)0x0000000200000000, false}, { 0xff, (std::int64_t)0x0000000200000000, false}, { 0x00, (std::int64_t)0x7ffffffffffffffe, false}, { 0x01, (std::int64_t)0x7ffffffffffffffe, false}, { 0x02, (std::int64_t)0x7ffffffffffffffe, false}, { 0x7e, (std::int64_t)0x7ffffffffffffffe, false}, { 0x7f, (std::int64_t)0x7ffffffffffffffe, false}, { 0x80, (std::int64_t)0x7ffffffffffffffe, false}, { 0x81, (std::int64_t)0x7ffffffffffffffe, false}, { 0xfe, (std::int64_t)0x7ffffffffffffffe, false}, { 0xff, (std::int64_t)0x7ffffffffffffffe, false}, { 0x00, (std::int64_t)0x7fffffffffffffff, false}, { 0x01, (std::int64_t)0x7fffffffffffffff, false}, { 0x02, (std::int64_t)0x7fffffffffffffff, false}, { 0x7e, (std::int64_t)0x7fffffffffffffff, false}, { 0x7f, (std::int64_t)0x7fffffffffffffff, false}, { 0x80, (std::int64_t)0x7fffffffffffffff, false}, { 0x81, (std::int64_t)0x7fffffffffffffff, false}, { 0xfe, (std::int64_t)0x7fffffffffffffff, false}, { 0xff, (std::int64_t)0x7fffffffffffffff, false}, { 0x00, (std::int64_t)0x8000000000000000, false}, { 0x01, (std::int64_t)0x8000000000000000, false}, { 0x02, (std::int64_t)0x8000000000000000, false}, { 0x7e, (std::int64_t)0x8000000000000000, false}, { 0x7f, (std::int64_t)0x8000000000000000, false}, { 0x80, (std::int64_t)0x8000000000000000, false}, { 0x81, (std::int64_t)0x8000000000000000, false}, { 0xfe, (std::int64_t)0x8000000000000000, false}, { 0xff, (std::int64_t)0x8000000000000000, false}, { 0x00, (std::int64_t)0x8000000000000001, false}, { 0x01, (std::int64_t)0x8000000000000001, false}, { 0x02, (std::int64_t)0x8000000000000001, false}, { 0x7e, (std::int64_t)0x8000000000000001, false}, { 0x7f, (std::int64_t)0x8000000000000001, false}, { 0x80, (std::int64_t)0x8000000000000001, false}, { 0x81, (std::int64_t)0x8000000000000001, false}, { 0xfe, (std::int64_t)0x8000000000000001, false}, { 0xff, (std::int64_t)0x8000000000000001, false}, { 0x00, (std::int64_t)0xfffffffffffffffe, true}, { 0x01, (std::int64_t)0xfffffffffffffffe, true}, { 0x02, (std::int64_t)0xfffffffffffffffe, true}, { 0x7e, (std::int64_t)0xfffffffffffffffe, true}, { 0x7f, (std::int64_t)0xfffffffffffffffe, true}, { 0x80, (std::int64_t)0xfffffffffffffffe, true}, { 0x81, (std::int64_t)0xfffffffffffffffe, true}, { 0xfe, (std::int64_t)0xfffffffffffffffe, false}, { 0xff, (std::int64_t)0xfffffffffffffffe, false}, { 0x00, (std::int64_t)0xffffffffffffffff, true}, { 0x01, (std::int64_t)0xffffffffffffffff, true}, { 0x02, (std::int64_t)0xffffffffffffffff, true}, { 0x7e, (std::int64_t)0xffffffffffffffff, true}, { 0x7f, (std::int64_t)0xffffffffffffffff, true}, { 0x80, (std::int64_t)0xffffffffffffffff, true}, { 0x81, (std::int64_t)0xffffffffffffffff, true}, { 0xfe, (std::int64_t)0xffffffffffffffff, true}, { 0xff, (std::int64_t)0xffffffffffffffff, false}, }; template<> TestVector< std::uint8_t, std::int64_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint8_int64; this->count = COUNTOF(uint8_int64); } static const TestCase< std::uint8_t, std::int32_t, OpType::Sub > uint8_int32[] = { { 0x00, (std::int32_t)0x00000000, true}, { 0x01, (std::int32_t)0x00000000, true}, { 0x02, (std::int32_t)0x00000000, true}, { 0x7e, (std::int32_t)0x00000000, true}, { 0x7f, (std::int32_t)0x00000000, true}, { 0x80, (std::int32_t)0x00000000, true}, { 0x81, (std::int32_t)0x00000000, true}, { 0xfe, (std::int32_t)0x00000000, true}, { 0xff, (std::int32_t)0x00000000, true}, { 0x00, (std::int32_t)0x00000001, false}, { 0x01, (std::int32_t)0x00000001, true}, { 0x02, (std::int32_t)0x00000001, true}, { 0x7e, (std::int32_t)0x00000001, true}, { 0x7f, (std::int32_t)0x00000001, true}, { 0x80, (std::int32_t)0x00000001, true}, { 0x81, (std::int32_t)0x00000001, true}, { 0xfe, (std::int32_t)0x00000001, true}, { 0xff, (std::int32_t)0x00000001, true}, { 0x00, (std::int32_t)0x00000002, false}, { 0x01, (std::int32_t)0x00000002, false}, { 0x02, (std::int32_t)0x00000002, true}, { 0x7e, (std::int32_t)0x00000002, true}, { 0x7f, (std::int32_t)0x00000002, true}, { 0x80, (std::int32_t)0x00000002, true}, { 0x81, (std::int32_t)0x00000002, true}, { 0xfe, (std::int32_t)0x00000002, true}, { 0xff, (std::int32_t)0x00000002, true}, { 0x00, (std::int32_t)0x7ffffffe, false}, { 0x01, (std::int32_t)0x7ffffffe, false}, { 0x02, (std::int32_t)0x7ffffffe, false}, { 0x7e, (std::int32_t)0x7ffffffe, false}, { 0x7f, (std::int32_t)0x7ffffffe, false}, { 0x80, (std::int32_t)0x7ffffffe, false}, { 0x81, (std::int32_t)0x7ffffffe, false}, { 0xfe, (std::int32_t)0x7ffffffe, false}, { 0xff, (std::int32_t)0x7ffffffe, false}, { 0x00, (std::int32_t)0x7fffffff, false}, { 0x01, (std::int32_t)0x7fffffff, false}, { 0x02, (std::int32_t)0x7fffffff, false}, { 0x7e, (std::int32_t)0x7fffffff, false}, { 0x7f, (std::int32_t)0x7fffffff, false}, { 0x80, (std::int32_t)0x7fffffff, false}, { 0x81, (std::int32_t)0x7fffffff, false}, { 0xfe, (std::int32_t)0x7fffffff, false}, { 0xff, (std::int32_t)0x7fffffff, false}, { 0x00, (std::int32_t)0x80000000, false}, { 0x01, (std::int32_t)0x80000000, false}, { 0x02, (std::int32_t)0x80000000, false}, { 0x7e, (std::int32_t)0x80000000, false}, { 0x7f, (std::int32_t)0x80000000, false}, { 0x80, (std::int32_t)0x80000000, false}, { 0x81, (std::int32_t)0x80000000, false}, { 0xfe, (std::int32_t)0x80000000, false}, { 0xff, (std::int32_t)0x80000000, false}, { 0x00, (std::int32_t)0x80000001, false}, { 0x01, (std::int32_t)0x80000001, false}, { 0x02, (std::int32_t)0x80000001, false}, { 0x7e, (std::int32_t)0x80000001, false}, { 0x7f, (std::int32_t)0x80000001, false}, { 0x80, (std::int32_t)0x80000001, false}, { 0x81, (std::int32_t)0x80000001, false}, { 0xfe, (std::int32_t)0x80000001, false}, { 0xff, (std::int32_t)0x80000001, false}, { 0x00, (std::int32_t)0xfffffffe, true}, { 0x01, (std::int32_t)0xfffffffe, true}, { 0x02, (std::int32_t)0xfffffffe, true}, { 0x7e, (std::int32_t)0xfffffffe, true}, { 0x7f, (std::int32_t)0xfffffffe, true}, { 0x80, (std::int32_t)0xfffffffe, true}, { 0x81, (std::int32_t)0xfffffffe, true}, { 0xfe, (std::int32_t)0xfffffffe, false}, { 0xff, (std::int32_t)0xfffffffe, false}, { 0x00, (std::int32_t)0xffffffff, true}, { 0x01, (std::int32_t)0xffffffff, true}, { 0x02, (std::int32_t)0xffffffff, true}, { 0x7e, (std::int32_t)0xffffffff, true}, { 0x7f, (std::int32_t)0xffffffff, true}, { 0x80, (std::int32_t)0xffffffff, true}, { 0x81, (std::int32_t)0xffffffff, true}, { 0xfe, (std::int32_t)0xffffffff, true}, { 0xff, (std::int32_t)0xffffffff, false}, }; template<> TestVector< std::uint8_t, std::int32_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint8_int32; this->count = COUNTOF(uint8_int32); } static const TestCase< std::uint8_t, std::int16_t, OpType::Sub > uint8_int16[] = { { 0x00, (std::int16_t)0x0000, true}, { 0x01, (std::int16_t)0x0000, true}, { 0x02, (std::int16_t)0x0000, true}, { 0x7e, (std::int16_t)0x0000, true}, { 0x7f, (std::int16_t)0x0000, true}, { 0x80, (std::int16_t)0x0000, true}, { 0x81, (std::int16_t)0x0000, true}, { 0xfe, (std::int16_t)0x0000, true}, { 0xff, (std::int16_t)0x0000, true}, { 0x00, (std::int16_t)0x0001, false}, { 0x01, (std::int16_t)0x0001, true}, { 0x02, (std::int16_t)0x0001, true}, { 0x7e, (std::int16_t)0x0001, true}, { 0x7f, (std::int16_t)0x0001, true}, { 0x80, (std::int16_t)0x0001, true}, { 0x81, (std::int16_t)0x0001, true}, { 0xfe, (std::int16_t)0x0001, true}, { 0xff, (std::int16_t)0x0001, true}, { 0x00, (std::int16_t)0x0002, false}, { 0x01, (std::int16_t)0x0002, false}, { 0x02, (std::int16_t)0x0002, true}, { 0x7e, (std::int16_t)0x0002, true}, { 0x7f, (std::int16_t)0x0002, true}, { 0x80, (std::int16_t)0x0002, true}, { 0x81, (std::int16_t)0x0002, true}, { 0xfe, (std::int16_t)0x0002, true}, { 0xff, (std::int16_t)0x0002, true}, { 0x00, (std::int16_t)0x7ffe, false}, { 0x01, (std::int16_t)0x7ffe, false}, { 0x02, (std::int16_t)0x7ffe, false}, { 0x7e, (std::int16_t)0x7ffe, false}, { 0x7f, (std::int16_t)0x7ffe, false}, { 0x80, (std::int16_t)0x7ffe, false}, { 0x81, (std::int16_t)0x7ffe, false}, { 0xfe, (std::int16_t)0x7ffe, false}, { 0xff, (std::int16_t)0x7ffe, false}, { 0x00, (std::int16_t)0x7fff, false}, { 0x01, (std::int16_t)0x7fff, false}, { 0x02, (std::int16_t)0x7fff, false}, { 0x7e, (std::int16_t)0x7fff, false}, { 0x7f, (std::int16_t)0x7fff, false}, { 0x80, (std::int16_t)0x7fff, false}, { 0x81, (std::int16_t)0x7fff, false}, { 0xfe, (std::int16_t)0x7fff, false}, { 0xff, (std::int16_t)0x7fff, false}, { 0x00, (std::int16_t)0x8000, false}, { 0x01, (std::int16_t)0x8000, false}, { 0x02, (std::int16_t)0x8000, false}, { 0x7e, (std::int16_t)0x8000, false}, { 0x7f, (std::int16_t)0x8000, false}, { 0x80, (std::int16_t)0x8000, false}, { 0x81, (std::int16_t)0x8000, false}, { 0xfe, (std::int16_t)0x8000, false}, { 0xff, (std::int16_t)0x8000, false}, { 0x00, (std::int16_t)0x8001, false}, { 0x01, (std::int16_t)0x8001, false}, { 0x02, (std::int16_t)0x8001, false}, { 0x7e, (std::int16_t)0x8001, false}, { 0x7f, (std::int16_t)0x8001, false}, { 0x80, (std::int16_t)0x8001, false}, { 0x81, (std::int16_t)0x8001, false}, { 0xfe, (std::int16_t)0x8001, false}, { 0xff, (std::int16_t)0x8001, false}, { 0x00, (std::int16_t)0xfffe, true}, { 0x01, (std::int16_t)0xfffe, true}, { 0x02, (std::int16_t)0xfffe, true}, { 0x7e, (std::int16_t)0xfffe, true}, { 0x7f, (std::int16_t)0xfffe, true}, { 0x80, (std::int16_t)0xfffe, true}, { 0x81, (std::int16_t)0xfffe, true}, { 0xfe, (std::int16_t)0xfffe, false}, { 0xff, (std::int16_t)0xfffe, false}, { 0x00, (std::int16_t)0xffff, true}, { 0x01, (std::int16_t)0xffff, true}, { 0x02, (std::int16_t)0xffff, true}, { 0x7e, (std::int16_t)0xffff, true}, { 0x7f, (std::int16_t)0xffff, true}, { 0x80, (std::int16_t)0xffff, true}, { 0x81, (std::int16_t)0xffff, true}, { 0xfe, (std::int16_t)0xffff, true}, { 0xff, (std::int16_t)0xffff, false}, }; template<> TestVector< std::uint8_t, std::int16_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint8_int16; this->count = COUNTOF(uint8_int16); } static const TestCase< std::uint8_t, std::int8_t, OpType::Sub > uint8_int8[] = { { 0x00, (std::int8_t)0x00, true}, { 0x01, (std::int8_t)0x00, true}, { 0x02, (std::int8_t)0x00, true}, { 0x7e, (std::int8_t)0x00, true}, { 0x7f, (std::int8_t)0x00, true}, { 0x80, (std::int8_t)0x00, true}, { 0x81, (std::int8_t)0x00, true}, { 0xfe, (std::int8_t)0x00, true}, { 0xff, (std::int8_t)0x00, true}, { 0x00, (std::int8_t)0x01, false}, { 0x01, (std::int8_t)0x01, true}, { 0x02, (std::int8_t)0x01, true}, { 0x7e, (std::int8_t)0x01, true}, { 0x7f, (std::int8_t)0x01, true}, { 0x80, (std::int8_t)0x01, true}, { 0x81, (std::int8_t)0x01, true}, { 0xfe, (std::int8_t)0x01, true}, { 0xff, (std::int8_t)0x01, true}, { 0x00, (std::int8_t)0x02, false}, { 0x01, (std::int8_t)0x02, false}, { 0x02, (std::int8_t)0x02, true}, { 0x7e, (std::int8_t)0x02, true}, { 0x7f, (std::int8_t)0x02, true}, { 0x80, (std::int8_t)0x02, true}, { 0x81, (std::int8_t)0x02, true}, { 0xfe, (std::int8_t)0x02, true}, { 0xff, (std::int8_t)0x02, true}, { 0x00, (std::int8_t)0x7e, false}, { 0x01, (std::int8_t)0x7e, false}, { 0x02, (std::int8_t)0x7e, false}, { 0x7e, (std::int8_t)0x7e, true}, { 0x7f, (std::int8_t)0x7e, true}, { 0x80, (std::int8_t)0x7e, true}, { 0x81, (std::int8_t)0x7e, true}, { 0xfe, (std::int8_t)0x7e, true}, { 0xff, (std::int8_t)0x7e, true}, { 0x00, (std::int8_t)0x7f, false}, { 0x01, (std::int8_t)0x7f, false}, { 0x02, (std::int8_t)0x7f, false}, { 0x7e, (std::int8_t)0x7f, false}, { 0x7f, (std::int8_t)0x7f, true}, { 0x80, (std::int8_t)0x7f, true}, { 0x81, (std::int8_t)0x7f, true}, { 0xfe, (std::int8_t)0x7f, true}, { 0xff, (std::int8_t)0x7f, true}, { 0x00, (std::int8_t)0x80, true}, { 0x01, (std::int8_t)0x80, true}, { 0x02, (std::int8_t)0x80, true}, { 0x7e, (std::int8_t)0x80, true}, { 0x7f, (std::int8_t)0x80, true}, { 0x80, (std::int8_t)0x80, false}, { 0x81, (std::int8_t)0x80, false}, { 0xfe, (std::int8_t)0x80, false}, { 0xff, (std::int8_t)0x80, false}, { 0x00, (std::int8_t)0x81, true}, { 0x01, (std::int8_t)0x81, true}, { 0x02, (std::int8_t)0x81, true}, { 0x7e, (std::int8_t)0x81, true}, { 0x7f, (std::int8_t)0x81, true}, { 0x80, (std::int8_t)0x81, true}, { 0x81, (std::int8_t)0x81, false}, { 0xfe, (std::int8_t)0x81, false}, { 0xff, (std::int8_t)0x81, false}, { 0x00, (std::int8_t)0xfe, true}, { 0x01, (std::int8_t)0xfe, true}, { 0x02, (std::int8_t)0xfe, true}, { 0x7e, (std::int8_t)0xfe, true}, { 0x7f, (std::int8_t)0xfe, true}, { 0x80, (std::int8_t)0xfe, true}, { 0x81, (std::int8_t)0xfe, true}, { 0xfe, (std::int8_t)0xfe, false}, { 0xff, (std::int8_t)0xfe, false}, { 0x00, (std::int8_t)0xff, true}, { 0x01, (std::int8_t)0xff, true}, { 0x02, (std::int8_t)0xff, true}, { 0x7e, (std::int8_t)0xff, true}, { 0x7f, (std::int8_t)0xff, true}, { 0x80, (std::int8_t)0xff, true}, { 0x81, (std::int8_t)0xff, true}, { 0xfe, (std::int8_t)0xff, true}, { 0xff, (std::int8_t)0xff, false}, }; template<> TestVector< std::uint8_t, std::int8_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = uint8_int8; this->count = COUNTOF(uint8_int8); } static const TestCase< std::int64_t, std::uint64_t, OpType::Sub > int64_uint64[] = { { (std::int64_t)0x0000000000000000, 0x0000000000000000, true}, { (std::int64_t)0x0000000000000001, 0x0000000000000000, true}, { (std::int64_t)0x0000000000000002, 0x0000000000000000, true}, { (std::int64_t)0x000000007ffffffe, 0x0000000000000000, true}, { (std::int64_t)0x000000007fffffff, 0x0000000000000000, true}, { (std::int64_t)0x0000000080000000, 0x0000000000000000, true}, { (std::int64_t)0x0000000080000001, 0x0000000000000000, true}, { (std::int64_t)0x00000000fffffffe, 0x0000000000000000, true}, { (std::int64_t)0x00000000ffffffff, 0x0000000000000000, true}, { (std::int64_t)0x0000000100000000, 0x0000000000000000, true}, { (std::int64_t)0x0000000200000000, 0x0000000000000000, true}, { (std::int64_t)0x7ffffffffffffffe, 0x0000000000000000, true}, { (std::int64_t)0x7fffffffffffffff, 0x0000000000000000, true}, { (std::int64_t)0x8000000000000000, 0x0000000000000000, true}, { (std::int64_t)0x8000000000000001, 0x0000000000000000, true}, { (std::int64_t)0xfffffffffffffffe, 0x0000000000000000, true}, { (std::int64_t)0xffffffffffffffff, 0x0000000000000000, true}, { (std::int64_t)0x0000000000000000, 0x0000000000000001, true}, { (std::int64_t)0x0000000000000001, 0x0000000000000001, true}, { (std::int64_t)0x0000000000000002, 0x0000000000000001, true}, { (std::int64_t)0x000000007ffffffe, 0x0000000000000001, true}, { (std::int64_t)0x000000007fffffff, 0x0000000000000001, true}, { (std::int64_t)0x0000000080000000, 0x0000000000000001, true}, { (std::int64_t)0x0000000080000001, 0x0000000000000001, true}, { (std::int64_t)0x00000000fffffffe, 0x0000000000000001, true}, { (std::int64_t)0x00000000ffffffff, 0x0000000000000001, true}, { (std::int64_t)0x0000000100000000, 0x0000000000000001, true}, { (std::int64_t)0x0000000200000000, 0x0000000000000001, true}, { (std::int64_t)0x7ffffffffffffffe, 0x0000000000000001, true}, { (std::int64_t)0x7fffffffffffffff, 0x0000000000000001, true}, { (std::int64_t)0x8000000000000000, 0x0000000000000001, false}, { (std::int64_t)0x8000000000000001, 0x0000000000000001, true}, { (std::int64_t)0xfffffffffffffffe, 0x0000000000000001, true}, { (std::int64_t)0xffffffffffffffff, 0x0000000000000001, true}, { (std::int64_t)0x0000000000000000, 0x0000000000000002, true}, { (std::int64_t)0x0000000000000001, 0x0000000000000002, true}, { (std::int64_t)0x0000000000000002, 0x0000000000000002, true}, { (std::int64_t)0x000000007ffffffe, 0x0000000000000002, true}, { (std::int64_t)0x000000007fffffff, 0x0000000000000002, true}, { (std::int64_t)0x0000000080000000, 0x0000000000000002, true}, { (std::int64_t)0x0000000080000001, 0x0000000000000002, true}, { (std::int64_t)0x00000000fffffffe, 0x0000000000000002, true}, { (std::int64_t)0x00000000ffffffff, 0x0000000000000002, true}, { (std::int64_t)0x0000000100000000, 0x0000000000000002, true}, { (std::int64_t)0x0000000200000000, 0x0000000000000002, true}, { (std::int64_t)0x7ffffffffffffffe, 0x0000000000000002, true}, { (std::int64_t)0x7fffffffffffffff, 0x0000000000000002, true}, { (std::int64_t)0x8000000000000000, 0x0000000000000002, false}, { (std::int64_t)0x8000000000000001, 0x0000000000000002, false}, { (std::int64_t)0xfffffffffffffffe, 0x0000000000000002, true}, { (std::int64_t)0xffffffffffffffff, 0x0000000000000002, true}, { (std::int64_t)0x0000000000000000, 0x000000007ffffffe, true}, { (std::int64_t)0x0000000000000001, 0x000000007ffffffe, true}, { (std::int64_t)0x0000000000000002, 0x000000007ffffffe, true}, { (std::int64_t)0x000000007ffffffe, 0x000000007ffffffe, true}, { (std::int64_t)0x000000007fffffff, 0x000000007ffffffe, true}, { (std::int64_t)0x0000000080000000, 0x000000007ffffffe, true}, { (std::int64_t)0x0000000080000001, 0x000000007ffffffe, true}, { (std::int64_t)0x00000000fffffffe, 0x000000007ffffffe, true}, { (std::int64_t)0x00000000ffffffff, 0x000000007ffffffe, true}, { (std::int64_t)0x0000000100000000, 0x000000007ffffffe, true}, { (std::int64_t)0x0000000200000000, 0x000000007ffffffe, true}, { (std::int64_t)0x7ffffffffffffffe, 0x000000007ffffffe, true}, { (std::int64_t)0x7fffffffffffffff, 0x000000007ffffffe, true}, { (std::int64_t)0x8000000000000000, 0x000000007ffffffe, false}, { (std::int64_t)0x8000000000000001, 0x000000007ffffffe, false}, { (std::int64_t)0xfffffffffffffffe, 0x000000007ffffffe, true}, { (std::int64_t)0xffffffffffffffff, 0x000000007ffffffe, true}, { (std::int64_t)0x0000000000000000, 0x000000007fffffff, true}, { (std::int64_t)0x0000000000000001, 0x000000007fffffff, true}, { (std::int64_t)0x0000000000000002, 0x000000007fffffff, true}, { (std::int64_t)0x000000007ffffffe, 0x000000007fffffff, true}, { (std::int64_t)0x000000007fffffff, 0x000000007fffffff, true}, { (std::int64_t)0x0000000080000000, 0x000000007fffffff, true}, { (std::int64_t)0x0000000080000001, 0x000000007fffffff, true}, { (std::int64_t)0x00000000fffffffe, 0x000000007fffffff, true}, { (std::int64_t)0x00000000ffffffff, 0x000000007fffffff, true}, { (std::int64_t)0x0000000100000000, 0x000000007fffffff, true}, { (std::int64_t)0x0000000200000000, 0x000000007fffffff, true}, { (std::int64_t)0x7ffffffffffffffe, 0x000000007fffffff, true}, { (std::int64_t)0x7fffffffffffffff, 0x000000007fffffff, true}, { (std::int64_t)0x8000000000000000, 0x000000007fffffff, false}, { (std::int64_t)0x8000000000000001, 0x000000007fffffff, false}, { (std::int64_t)0xfffffffffffffffe, 0x000000007fffffff, true}, { (std::int64_t)0xffffffffffffffff, 0x000000007fffffff, true}, { (std::int64_t)0x0000000000000000, 0x0000000080000000, true}, { (std::int64_t)0x0000000000000001, 0x0000000080000000, true}, { (std::int64_t)0x0000000000000002, 0x0000000080000000, true}, { (std::int64_t)0x000000007ffffffe, 0x0000000080000000, true}, { (std::int64_t)0x000000007fffffff, 0x0000000080000000, true}, { (std::int64_t)0x0000000080000000, 0x0000000080000000, true}, { (std::int64_t)0x0000000080000001, 0x0000000080000000, true}, { (std::int64_t)0x00000000fffffffe, 0x0000000080000000, true}, { (std::int64_t)0x00000000ffffffff, 0x0000000080000000, true}, { (std::int64_t)0x0000000100000000, 0x0000000080000000, true}, { (std::int64_t)0x0000000200000000, 0x0000000080000000, true}, { (std::int64_t)0x7ffffffffffffffe, 0x0000000080000000, true}, { (std::int64_t)0x7fffffffffffffff, 0x0000000080000000, true}, { (std::int64_t)0x8000000000000000, 0x0000000080000000, false}, { (std::int64_t)0x8000000000000001, 0x0000000080000000, false}, { (std::int64_t)0xfffffffffffffffe, 0x0000000080000000, true}, { (std::int64_t)0xffffffffffffffff, 0x0000000080000000, true}, { (std::int64_t)0x0000000000000000, 0x0000000080000001, true}, { (std::int64_t)0x0000000000000001, 0x0000000080000001, true}, { (std::int64_t)0x0000000000000002, 0x0000000080000001, true}, { (std::int64_t)0x000000007ffffffe, 0x0000000080000001, true}, { (std::int64_t)0x000000007fffffff, 0x0000000080000001, true}, { (std::int64_t)0x0000000080000000, 0x0000000080000001, true}, { (std::int64_t)0x0000000080000001, 0x0000000080000001, true}, { (std::int64_t)0x00000000fffffffe, 0x0000000080000001, true}, { (std::int64_t)0x00000000ffffffff, 0x0000000080000001, true}, { (std::int64_t)0x0000000100000000, 0x0000000080000001, true}, { (std::int64_t)0x0000000200000000, 0x0000000080000001, true}, { (std::int64_t)0x7ffffffffffffffe, 0x0000000080000001, true}, { (std::int64_t)0x7fffffffffffffff, 0x0000000080000001, true}, { (std::int64_t)0x8000000000000000, 0x0000000080000001, false}, { (std::int64_t)0x8000000000000001, 0x0000000080000001, false}, { (std::int64_t)0xfffffffffffffffe, 0x0000000080000001, true}, { (std::int64_t)0xffffffffffffffff, 0x0000000080000001, true}, { (std::int64_t)0x0000000000000000, 0x00000000fffffffe, true}, { (std::int64_t)0x0000000000000001, 0x00000000fffffffe, true}, { (std::int64_t)0x0000000000000002, 0x00000000fffffffe, true}, { (std::int64_t)0x000000007ffffffe, 0x00000000fffffffe, true}, { (std::int64_t)0x000000007fffffff, 0x00000000fffffffe, true}, { (std::int64_t)0x0000000080000000, 0x00000000fffffffe, true}, { (std::int64_t)0x0000000080000001, 0x00000000fffffffe, true}, { (std::int64_t)0x00000000fffffffe, 0x00000000fffffffe, true}, { (std::int64_t)0x00000000ffffffff, 0x00000000fffffffe, true}, { (std::int64_t)0x0000000100000000, 0x00000000fffffffe, true}, { (std::int64_t)0x0000000200000000, 0x00000000fffffffe, true}, { (std::int64_t)0x7ffffffffffffffe, 0x00000000fffffffe, true}, { (std::int64_t)0x7fffffffffffffff, 0x00000000fffffffe, true}, { (std::int64_t)0x8000000000000000, 0x00000000fffffffe, false}, { (std::int64_t)0x8000000000000001, 0x00000000fffffffe, false}, { (std::int64_t)0xfffffffffffffffe, 0x00000000fffffffe, true}, { (std::int64_t)0xffffffffffffffff, 0x00000000fffffffe, true}, { (std::int64_t)0x0000000000000000, 0x00000000ffffffff, true}, { (std::int64_t)0x0000000000000001, 0x00000000ffffffff, true}, { (std::int64_t)0x0000000000000002, 0x00000000ffffffff, true}, { (std::int64_t)0x000000007ffffffe, 0x00000000ffffffff, true}, { (std::int64_t)0x000000007fffffff, 0x00000000ffffffff, true}, { (std::int64_t)0x0000000080000000, 0x00000000ffffffff, true}, { (std::int64_t)0x0000000080000001, 0x00000000ffffffff, true}, { (std::int64_t)0x00000000fffffffe, 0x00000000ffffffff, true}, { (std::int64_t)0x00000000ffffffff, 0x00000000ffffffff, true}, { (std::int64_t)0x0000000100000000, 0x00000000ffffffff, true}, { (std::int64_t)0x0000000200000000, 0x00000000ffffffff, true}, { (std::int64_t)0x7ffffffffffffffe, 0x00000000ffffffff, true}, { (std::int64_t)0x7fffffffffffffff, 0x00000000ffffffff, true}, { (std::int64_t)0x8000000000000000, 0x00000000ffffffff, false}, { (std::int64_t)0x8000000000000001, 0x00000000ffffffff, false}, { (std::int64_t)0xfffffffffffffffe, 0x00000000ffffffff, true}, { (std::int64_t)0xffffffffffffffff, 0x00000000ffffffff, true}, { (std::int64_t)0x0000000000000000, 0x0000000100000000, true}, { (std::int64_t)0x0000000000000001, 0x0000000100000000, true}, { (std::int64_t)0x0000000000000002, 0x0000000100000000, true}, { (std::int64_t)0x000000007ffffffe, 0x0000000100000000, true}, { (std::int64_t)0x000000007fffffff, 0x0000000100000000, true}, { (std::int64_t)0x0000000080000000, 0x0000000100000000, true}, { (std::int64_t)0x0000000080000001, 0x0000000100000000, true}, { (std::int64_t)0x00000000fffffffe, 0x0000000100000000, true}, { (std::int64_t)0x00000000ffffffff, 0x0000000100000000, true}, { (std::int64_t)0x0000000100000000, 0x0000000100000000, true}, { (std::int64_t)0x0000000200000000, 0x0000000100000000, true}, { (std::int64_t)0x7ffffffffffffffe, 0x0000000100000000, true}, { (std::int64_t)0x7fffffffffffffff, 0x0000000100000000, true}, { (std::int64_t)0x8000000000000000, 0x0000000100000000, false}, { (std::int64_t)0x8000000000000001, 0x0000000100000000, false}, { (std::int64_t)0xfffffffffffffffe, 0x0000000100000000, true}, { (std::int64_t)0xffffffffffffffff, 0x0000000100000000, true}, { (std::int64_t)0x0000000000000000, 0x0000000200000000, true}, { (std::int64_t)0x0000000000000001, 0x0000000200000000, true}, { (std::int64_t)0x0000000000000002, 0x0000000200000000, true}, { (std::int64_t)0x000000007ffffffe, 0x0000000200000000, true}, { (std::int64_t)0x000000007fffffff, 0x0000000200000000, true}, { (std::int64_t)0x0000000080000000, 0x0000000200000000, true}, { (std::int64_t)0x0000000080000001, 0x0000000200000000, true}, { (std::int64_t)0x00000000fffffffe, 0x0000000200000000, true}, { (std::int64_t)0x00000000ffffffff, 0x0000000200000000, true}, { (std::int64_t)0x0000000100000000, 0x0000000200000000, true}, { (std::int64_t)0x0000000200000000, 0x0000000200000000, true}, { (std::int64_t)0x7ffffffffffffffe, 0x0000000200000000, true}, { (std::int64_t)0x7fffffffffffffff, 0x0000000200000000, true}, { (std::int64_t)0x8000000000000000, 0x0000000200000000, false}, { (std::int64_t)0x8000000000000001, 0x0000000200000000, false}, { (std::int64_t)0xfffffffffffffffe, 0x0000000200000000, true}, { (std::int64_t)0xffffffffffffffff, 0x0000000200000000, true}, { (std::int64_t)0x0000000000000000, 0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000000000001, 0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000000000002, 0x7ffffffffffffffe, true}, { (std::int64_t)0x000000007ffffffe, 0x7ffffffffffffffe, true}, { (std::int64_t)0x000000007fffffff, 0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000080000000, 0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000080000001, 0x7ffffffffffffffe, true}, { (std::int64_t)0x00000000fffffffe, 0x7ffffffffffffffe, true}, { (std::int64_t)0x00000000ffffffff, 0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000100000000, 0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000200000000, 0x7ffffffffffffffe, true}, { (std::int64_t)0x7ffffffffffffffe, 0x7ffffffffffffffe, true}, { (std::int64_t)0x7fffffffffffffff, 0x7ffffffffffffffe, true}, { (std::int64_t)0x8000000000000000, 0x7ffffffffffffffe, false}, { (std::int64_t)0x8000000000000001, 0x7ffffffffffffffe, false}, { (std::int64_t)0xfffffffffffffffe, 0x7ffffffffffffffe, true}, { (std::int64_t)0xffffffffffffffff, 0x7ffffffffffffffe, true}, { (std::int64_t)0x0000000000000000, 0x7fffffffffffffff, true}, { (std::int64_t)0x0000000000000001, 0x7fffffffffffffff, true}, { (std::int64_t)0x0000000000000002, 0x7fffffffffffffff, true}, { (std::int64_t)0x000000007ffffffe, 0x7fffffffffffffff, true}, { (std::int64_t)0x000000007fffffff, 0x7fffffffffffffff, true}, { (std::int64_t)0x0000000080000000, 0x7fffffffffffffff, true}, { (std::int64_t)0x0000000080000001, 0x7fffffffffffffff, true}, { (std::int64_t)0x00000000fffffffe, 0x7fffffffffffffff, true}, { (std::int64_t)0x00000000ffffffff, 0x7fffffffffffffff, true}, { (std::int64_t)0x0000000100000000, 0x7fffffffffffffff, true}, { (std::int64_t)0x0000000200000000, 0x7fffffffffffffff, true}, { (std::int64_t)0x7ffffffffffffffe, 0x7fffffffffffffff, true}, { (std::int64_t)0x7fffffffffffffff, 0x7fffffffffffffff, true}, { (std::int64_t)0x8000000000000000, 0x7fffffffffffffff, false}, { (std::int64_t)0x8000000000000001, 0x7fffffffffffffff, false}, { (std::int64_t)0xfffffffffffffffe, 0x7fffffffffffffff, false}, { (std::int64_t)0xffffffffffffffff, 0x7fffffffffffffff, true}, { (std::int64_t)0x0000000000000000, 0x8000000000000000, true}, { (std::int64_t)0x0000000000000001, 0x8000000000000000, true}, { (std::int64_t)0x0000000000000002, 0x8000000000000000, true}, { (std::int64_t)0x000000007ffffffe, 0x8000000000000000, true}, { (std::int64_t)0x000000007fffffff, 0x8000000000000000, true}, { (std::int64_t)0x0000000080000000, 0x8000000000000000, true}, { (std::int64_t)0x0000000080000001, 0x8000000000000000, true}, { (std::int64_t)0x00000000fffffffe, 0x8000000000000000, true}, { (std::int64_t)0x00000000ffffffff, 0x8000000000000000, true}, { (std::int64_t)0x0000000100000000, 0x8000000000000000, true}, { (std::int64_t)0x0000000200000000, 0x8000000000000000, true}, { (std::int64_t)0x7ffffffffffffffe, 0x8000000000000000, true}, { (std::int64_t)0x7fffffffffffffff, 0x8000000000000000, true}, { (std::int64_t)0x8000000000000000, 0x8000000000000000, false}, { (std::int64_t)0x8000000000000001, 0x8000000000000000, false}, { (std::int64_t)0xfffffffffffffffe, 0x8000000000000000, false}, { (std::int64_t)0xffffffffffffffff, 0x8000000000000000, false}, { (std::int64_t)0x0000000000000000, 0x8000000000000001, false}, { (std::int64_t)0x0000000000000001, 0x8000000000000001, true}, { (std::int64_t)0x0000000000000002, 0x8000000000000001, true}, { (std::int64_t)0x000000007ffffffe, 0x8000000000000001, true}, { (std::int64_t)0x000000007fffffff, 0x8000000000000001, true}, { (std::int64_t)0x0000000080000000, 0x8000000000000001, true}, { (std::int64_t)0x0000000080000001, 0x8000000000000001, true}, { (std::int64_t)0x00000000fffffffe, 0x8000000000000001, true}, { (std::int64_t)0x00000000ffffffff, 0x8000000000000001, true}, { (std::int64_t)0x0000000100000000, 0x8000000000000001, true}, { (std::int64_t)0x0000000200000000, 0x8000000000000001, true}, { (std::int64_t)0x7ffffffffffffffe, 0x8000000000000001, true}, { (std::int64_t)0x7fffffffffffffff, 0x8000000000000001, true}, { (std::int64_t)0x8000000000000000, 0x8000000000000001, false}, { (std::int64_t)0x8000000000000001, 0x8000000000000001, false}, { (std::int64_t)0xfffffffffffffffe, 0x8000000000000001, false}, { (std::int64_t)0xffffffffffffffff, 0x8000000000000001, false}, { (std::int64_t)0x0000000000000000, 0xfffffffffffffffe, false}, { (std::int64_t)0x0000000000000001, 0xfffffffffffffffe, false}, { (std::int64_t)0x0000000000000002, 0xfffffffffffffffe, false}, { (std::int64_t)0x000000007ffffffe, 0xfffffffffffffffe, false}, { (std::int64_t)0x000000007fffffff, 0xfffffffffffffffe, false}, { (std::int64_t)0x0000000080000000, 0xfffffffffffffffe, false}, { (std::int64_t)0x0000000080000001, 0xfffffffffffffffe, false}, { (std::int64_t)0x00000000fffffffe, 0xfffffffffffffffe, false}, { (std::int64_t)0x00000000ffffffff, 0xfffffffffffffffe, false}, { (std::int64_t)0x0000000100000000, 0xfffffffffffffffe, false}, { (std::int64_t)0x0000000200000000, 0xfffffffffffffffe, false}, { (std::int64_t)0x7ffffffffffffffe, 0xfffffffffffffffe, true}, { (std::int64_t)0x7fffffffffffffff, 0xfffffffffffffffe, true}, { (std::int64_t)0x8000000000000000, 0xfffffffffffffffe, false}, { (std::int64_t)0x8000000000000001, 0xfffffffffffffffe, false}, { (std::int64_t)0xfffffffffffffffe, 0xfffffffffffffffe, false}, { (std::int64_t)0xffffffffffffffff, 0xfffffffffffffffe, false}, { (std::int64_t)0x0000000000000000, 0xffffffffffffffff, false}, { (std::int64_t)0x0000000000000001, 0xffffffffffffffff, false}, { (std::int64_t)0x0000000000000002, 0xffffffffffffffff, false}, { (std::int64_t)0x000000007ffffffe, 0xffffffffffffffff, false}, { (std::int64_t)0x000000007fffffff, 0xffffffffffffffff, false}, { (std::int64_t)0x0000000080000000, 0xffffffffffffffff, false}, { (std::int64_t)0x0000000080000001, 0xffffffffffffffff, false}, { (std::int64_t)0x00000000fffffffe, 0xffffffffffffffff, false}, { (std::int64_t)0x00000000ffffffff, 0xffffffffffffffff, false}, { (std::int64_t)0x0000000100000000, 0xffffffffffffffff, false}, { (std::int64_t)0x0000000200000000, 0xffffffffffffffff, false}, { (std::int64_t)0x7ffffffffffffffe, 0xffffffffffffffff, false}, { (std::int64_t)0x7fffffffffffffff, 0xffffffffffffffff, true}, { (std::int64_t)0x8000000000000000, 0xffffffffffffffff, false}, { (std::int64_t)0x8000000000000001, 0xffffffffffffffff, false}, { (std::int64_t)0xfffffffffffffffe, 0xffffffffffffffff, false}, { (std::int64_t)0xffffffffffffffff, 0xffffffffffffffff, false}, }; template<> TestVector< std::int64_t, std::uint64_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int64_uint64; this->count = COUNTOF(int64_uint64); } static const TestCase< std::int32_t, std::uint64_t, OpType::Sub > int32_uint64[] = { { (std::int32_t)0x00000000, 0x0000000000000000, true}, { (std::int32_t)0x00000001, 0x0000000000000000, true}, { (std::int32_t)0x00000002, 0x0000000000000000, true}, { (std::int32_t)0x7ffffffe, 0x0000000000000000, true}, { (std::int32_t)0x7fffffff, 0x0000000000000000, true}, { (std::int32_t)0x80000000, 0x0000000000000000, true}, { (std::int32_t)0x80000001, 0x0000000000000000, true}, { (std::int32_t)0xfffffffe, 0x0000000000000000, true}, { (std::int32_t)0xffffffff, 0x0000000000000000, true}, { (std::int32_t)0x00000000, 0x0000000000000001, true}, { (std::int32_t)0x00000001, 0x0000000000000001, true}, { (std::int32_t)0x00000002, 0x0000000000000001, true}, { (std::int32_t)0x7ffffffe, 0x0000000000000001, true}, { (std::int32_t)0x7fffffff, 0x0000000000000001, true}, { (std::int32_t)0x80000000, 0x0000000000000001, false}, { (std::int32_t)0x80000001, 0x0000000000000001, true}, { (std::int32_t)0xfffffffe, 0x0000000000000001, true}, { (std::int32_t)0xffffffff, 0x0000000000000001, true}, { (std::int32_t)0x00000000, 0x0000000000000002, true}, { (std::int32_t)0x00000001, 0x0000000000000002, true}, { (std::int32_t)0x00000002, 0x0000000000000002, true}, { (std::int32_t)0x7ffffffe, 0x0000000000000002, true}, { (std::int32_t)0x7fffffff, 0x0000000000000002, true}, { (std::int32_t)0x80000000, 0x0000000000000002, false}, { (std::int32_t)0x80000001, 0x0000000000000002, false}, { (std::int32_t)0xfffffffe, 0x0000000000000002, true}, { (std::int32_t)0xffffffff, 0x0000000000000002, true}, { (std::int32_t)0x00000000, 0x000000007ffffffe, true}, { (std::int32_t)0x00000001, 0x000000007ffffffe, true}, { (std::int32_t)0x00000002, 0x000000007ffffffe, true}, { (std::int32_t)0x7ffffffe, 0x000000007ffffffe, true}, { (std::int32_t)0x7fffffff, 0x000000007ffffffe, true}, { (std::int32_t)0x80000000, 0x000000007ffffffe, false}, { (std::int32_t)0x80000001, 0x000000007ffffffe, false}, { (std::int32_t)0xfffffffe, 0x000000007ffffffe, true}, { (std::int32_t)0xffffffff, 0x000000007ffffffe, true}, { (std::int32_t)0x00000000, 0x000000007fffffff, true}, { (std::int32_t)0x00000001, 0x000000007fffffff, true}, { (std::int32_t)0x00000002, 0x000000007fffffff, true}, { (std::int32_t)0x7ffffffe, 0x000000007fffffff, true}, { (std::int32_t)0x7fffffff, 0x000000007fffffff, true}, { (std::int32_t)0x80000000, 0x000000007fffffff, false}, { (std::int32_t)0x80000001, 0x000000007fffffff, false}, { (std::int32_t)0xfffffffe, 0x000000007fffffff, false}, { (std::int32_t)0xffffffff, 0x000000007fffffff, true}, { (std::int32_t)0x00000000, 0x0000000080000000, true}, { (std::int32_t)0x00000001, 0x0000000080000000, true}, { (std::int32_t)0x00000002, 0x0000000080000000, true}, { (std::int32_t)0x7ffffffe, 0x0000000080000000, true}, { (std::int32_t)0x7fffffff, 0x0000000080000000, true}, { (std::int32_t)0x80000000, 0x0000000080000000, false}, { (std::int32_t)0x80000001, 0x0000000080000000, false}, { (std::int32_t)0xfffffffe, 0x0000000080000000, false}, { (std::int32_t)0xffffffff, 0x0000000080000000, false}, { (std::int32_t)0x00000000, 0x0000000080000001, false}, { (std::int32_t)0x00000001, 0x0000000080000001, true}, { (std::int32_t)0x00000002, 0x0000000080000001, true}, { (std::int32_t)0x7ffffffe, 0x0000000080000001, true}, { (std::int32_t)0x7fffffff, 0x0000000080000001, true}, { (std::int32_t)0x80000000, 0x0000000080000001, false}, { (std::int32_t)0x80000001, 0x0000000080000001, false}, { (std::int32_t)0xfffffffe, 0x0000000080000001, false}, { (std::int32_t)0xffffffff, 0x0000000080000001, false}, { (std::int32_t)0x00000000, 0x00000000fffffffe, false}, { (std::int32_t)0x00000001, 0x00000000fffffffe, false}, { (std::int32_t)0x00000002, 0x00000000fffffffe, false}, { (std::int32_t)0x7ffffffe, 0x00000000fffffffe, true}, { (std::int32_t)0x7fffffff, 0x00000000fffffffe, true}, { (std::int32_t)0x80000000, 0x00000000fffffffe, false}, { (std::int32_t)0x80000001, 0x00000000fffffffe, false}, { (std::int32_t)0xfffffffe, 0x00000000fffffffe, false}, { (std::int32_t)0xffffffff, 0x00000000fffffffe, false}, { (std::int32_t)0x00000000, 0x00000000ffffffff, false}, { (std::int32_t)0x00000001, 0x00000000ffffffff, false}, { (std::int32_t)0x00000002, 0x00000000ffffffff, false}, { (std::int32_t)0x7ffffffe, 0x00000000ffffffff, false}, { (std::int32_t)0x7fffffff, 0x00000000ffffffff, true}, { (std::int32_t)0x80000000, 0x00000000ffffffff, false}, { (std::int32_t)0x80000001, 0x00000000ffffffff, false}, { (std::int32_t)0xfffffffe, 0x00000000ffffffff, false}, { (std::int32_t)0xffffffff, 0x00000000ffffffff, false}, { (std::int32_t)0x00000000, 0x0000000100000000, false}, { (std::int32_t)0x00000001, 0x0000000100000000, false}, { (std::int32_t)0x00000002, 0x0000000100000000, false}, { (std::int32_t)0x7ffffffe, 0x0000000100000000, false}, { (std::int32_t)0x7fffffff, 0x0000000100000000, false}, { (std::int32_t)0x80000000, 0x0000000100000000, false}, { (std::int32_t)0x80000001, 0x0000000100000000, false}, { (std::int32_t)0xfffffffe, 0x0000000100000000, false}, { (std::int32_t)0xffffffff, 0x0000000100000000, false}, { (std::int32_t)0x00000000, 0x0000000200000000, false}, { (std::int32_t)0x00000001, 0x0000000200000000, false}, { (std::int32_t)0x00000002, 0x0000000200000000, false }, { (std::int32_t)0x7ffffffe, 0x0000000200000000, false }, { (std::int32_t)0x7fffffff, 0x0000000200000000, false }, { (std::int32_t)0x80000000, 0x0000000200000000, false }, { (std::int32_t)0x80000001, 0x0000000200000000, false }, { (std::int32_t)0xfffffffe, 0x0000000200000000, false }, { (std::int32_t)0xffffffff, 0x0000000200000000, false }, { (std::int32_t)0x00000000, 0x7ffffffffffffffe, false }, { (std::int32_t)0x00000001, 0x7ffffffffffffffe, false }, { (std::int32_t)0x00000002, 0x7ffffffffffffffe, false }, { (std::int32_t)0x7ffffffe, 0x7ffffffffffffffe, false }, { (std::int32_t)0x7fffffff, 0x7ffffffffffffffe, false }, { (std::int32_t)0x80000000, 0x7ffffffffffffffe, false }, { (std::int32_t)0x80000001, 0x7ffffffffffffffe, false }, { (std::int32_t)0xfffffffe, 0x7ffffffffffffffe, false }, { (std::int32_t)0xffffffff, 0x7ffffffffffffffe, false }, { (std::int32_t)0x00000000, 0x7fffffffffffffff, false }, { (std::int32_t)0x00000001, 0x7fffffffffffffff, false }, { (std::int32_t)0x00000002, 0x7fffffffffffffff, false }, { (std::int32_t)0x7ffffffe, 0x7fffffffffffffff, false }, { (std::int32_t)0x7fffffff, 0x7fffffffffffffff, false }, { (std::int32_t)0x80000000, 0x7fffffffffffffff, false }, { (std::int32_t)0x80000001, 0x7fffffffffffffff, false }, { (std::int32_t)0xfffffffe, 0x7fffffffffffffff, false }, { (std::int32_t)0xffffffff, 0x7fffffffffffffff, false }, { (std::int32_t)0x00000000, 0x8000000000000000, false }, { (std::int32_t)0x00000001, 0x8000000000000000, false }, { (std::int32_t)0x00000002, 0x8000000000000000, false }, { (std::int32_t)0x7ffffffe, 0x8000000000000000, false }, { (std::int32_t)0x7fffffff, 0x8000000000000000, false }, { (std::int32_t)0x80000000, 0x8000000000000000, false }, { (std::int32_t)0x80000001, 0x8000000000000000, false }, { (std::int32_t)0xfffffffe, 0x8000000000000000, false }, { (std::int32_t)0xffffffff, 0x8000000000000000, false }, { (std::int32_t)0x00000000, 0x8000000000000001, false }, { (std::int32_t)0x00000001, 0x8000000000000001, false }, { (std::int32_t)0x00000002, 0x8000000000000001, false }, { (std::int32_t)0x7ffffffe, 0x8000000000000001, false }, { (std::int32_t)0x7fffffff, 0x8000000000000001, false }, { (std::int32_t)0x80000000, 0x8000000000000001, false }, { (std::int32_t)0x80000001, 0x8000000000000001, false }, { (std::int32_t)0xfffffffe, 0x8000000000000001, false }, { (std::int32_t)0xffffffff, 0x8000000000000001, false }, { (std::int32_t)0x00000000, 0xfffffffffffffffe, false}, { (std::int32_t)0x00000001, 0xfffffffffffffffe, false}, { (std::int32_t)0x00000002, 0xfffffffffffffffe, false}, { (std::int32_t)0x7ffffffe, 0xfffffffffffffffe, false}, { (std::int32_t)0x7fffffff, 0xfffffffffffffffe, false}, { (std::int32_t)0x80000000, 0xfffffffffffffffe, false}, { (std::int32_t)0x80000001, 0xfffffffffffffffe, false}, { (std::int32_t)0xfffffffe, 0xfffffffffffffffe, false}, { (std::int32_t)0xffffffff, 0xfffffffffffffffe, false}, { (std::int32_t)0x00000000, 0xffffffffffffffff, false}, { (std::int32_t)0x00000001, 0xffffffffffffffff, false}, { (std::int32_t)0x00000002, 0xffffffffffffffff, false}, { (std::int32_t)0x7ffffffe, 0xffffffffffffffff, false}, { (std::int32_t)0x7fffffff, 0xffffffffffffffff, false}, { (std::int32_t)0x80000000, 0xffffffffffffffff, false}, { (std::int32_t)0x80000001, 0xffffffffffffffff, false}, { (std::int32_t)0xfffffffe, 0xffffffffffffffff, false}, { (std::int32_t)0xffffffff, 0xffffffffffffffff, false}, }; template<> TestVector< std::int32_t, std::uint64_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int32_uint64; this->count = COUNTOF(int32_uint64); } static const TestCase< std::int32_t, std::uint32_t, OpType::Sub > int32_uint32[] = { { (std::int32_t)0x00000000, 0x00000000, true}, { (std::int32_t)0x00000001, 0x00000000, true}, { (std::int32_t)0x00000002, 0x00000000, true}, { (std::int32_t)0x7ffffffe, 0x00000000, true}, { (std::int32_t)0x7fffffff, 0x00000000, true}, { (std::int32_t)0x80000000, 0x00000000, true}, { (std::int32_t)0x80000001, 0x00000000, true}, { (std::int32_t)0xfffffffe, 0x00000000, true}, { (std::int32_t)0xffffffff, 0x00000000, true}, { (std::int32_t)0x00000000, 0x00000001, true}, { (std::int32_t)0x00000001, 0x00000001, true}, { (std::int32_t)0x00000002, 0x00000001, true}, { (std::int32_t)0x7ffffffe, 0x00000001, true}, { (std::int32_t)0x7fffffff, 0x00000001, true}, { (std::int32_t)0x80000000, 0x00000001, false}, { (std::int32_t)0x80000001, 0x00000001, true}, { (std::int32_t)0xfffffffe, 0x00000001, true}, { (std::int32_t)0xffffffff, 0x00000001, true}, { (std::int32_t)0x00000000, 0x00000002, true}, { (std::int32_t)0x00000001, 0x00000002, true}, { (std::int32_t)0x00000002, 0x00000002, true}, { (std::int32_t)0x7ffffffe, 0x00000002, true}, { (std::int32_t)0x7fffffff, 0x00000002, true}, { (std::int32_t)0x80000000, 0x00000002, false}, { (std::int32_t)0x80000001, 0x00000002, false}, { (std::int32_t)0xfffffffe, 0x00000002, true}, { (std::int32_t)0xffffffff, 0x00000002, true}, { (std::int32_t)0x00000000, 0x7ffffffe, true}, { (std::int32_t)0x00000001, 0x7ffffffe, true}, { (std::int32_t)0x00000002, 0x7ffffffe, true}, { (std::int32_t)0x7ffffffe, 0x7ffffffe, true}, { (std::int32_t)0x7fffffff, 0x7ffffffe, true}, { (std::int32_t)0x80000000, 0x7ffffffe, false}, { (std::int32_t)0x80000001, 0x7ffffffe, false}, { (std::int32_t)0xfffffffe, 0x7ffffffe, true}, { (std::int32_t)0xffffffff, 0x7ffffffe, true}, { (std::int32_t)0x00000000, 0x7fffffff, true}, { (std::int32_t)0x00000001, 0x7fffffff, true}, { (std::int32_t)0x00000002, 0x7fffffff, true}, { (std::int32_t)0x7ffffffe, 0x7fffffff, true}, { (std::int32_t)0x7fffffff, 0x7fffffff, true}, { (std::int32_t)0x80000000, 0x7fffffff, false}, { (std::int32_t)0x80000001, 0x7fffffff, false}, { (std::int32_t)0xfffffffe, 0x7fffffff, false}, { (std::int32_t)0xffffffff, 0x7fffffff, true}, { (std::int32_t)0x00000000, 0x80000000, true}, { (std::int32_t)0x00000001, 0x80000000, true}, { (std::int32_t)0x00000002, 0x80000000, true}, { (std::int32_t)0x7ffffffe, 0x80000000, true}, { (std::int32_t)0x7fffffff, 0x80000000, true}, { (std::int32_t)0x80000000, 0x80000000, false}, { (std::int32_t)0x80000001, 0x80000000, false}, { (std::int32_t)0xfffffffe, 0x80000000, false}, { (std::int32_t)0xffffffff, 0x80000000, false}, { (std::int32_t)0x00000000, 0x80000001, false}, { (std::int32_t)0x00000001, 0x80000001, true}, { (std::int32_t)0x00000002, 0x80000001, true}, { (std::int32_t)0x7ffffffe, 0x80000001, true}, { (std::int32_t)0x7fffffff, 0x80000001, true}, { (std::int32_t)0x80000000, 0x80000001, false}, { (std::int32_t)0x80000001, 0x80000001, false}, { (std::int32_t)0xfffffffe, 0x80000001, false}, { (std::int32_t)0xffffffff, 0x80000001, false}, { (std::int32_t)0x00000000, 0xfffffffe, false}, { (std::int32_t)0x00000001, 0xfffffffe, false}, { (std::int32_t)0x00000002, 0xfffffffe, false}, { (std::int32_t)0x7ffffffe, 0xfffffffe, true}, { (std::int32_t)0x7fffffff, 0xfffffffe, true}, { (std::int32_t)0x80000000, 0xfffffffe, false}, { (std::int32_t)0x80000001, 0xfffffffe, false}, { (std::int32_t)0xfffffffe, 0xfffffffe, false}, { (std::int32_t)0xffffffff, 0xfffffffe, false}, { (std::int32_t)0x00000000, 0xffffffff, false}, { (std::int32_t)0x00000001, 0xffffffff, false}, { (std::int32_t)0x00000002, 0xffffffff, false}, { (std::int32_t)0x7ffffffe, 0xffffffff, false}, { (std::int32_t)0x7fffffff, 0xffffffff, true}, { (std::int32_t)0x80000000, 0xffffffff, false}, { (std::int32_t)0x80000001, 0xffffffff, false}, { (std::int32_t)0xfffffffe, 0xffffffff, false}, { (std::int32_t)0xffffffff, 0xffffffff, false}, }; template<> TestVector< std::int32_t, std::uint32_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int32_uint32; this->count = COUNTOF(int32_uint32); } static const TestCase< std::int64_t, std::uint32_t, OpType::Sub > int64_uint32[] = { { (std::int64_t)0x0000000000000000, 0x00000000, true}, { (std::int64_t)0x0000000000000001, 0x00000000, true}, { (std::int64_t)0x0000000000000002, 0x00000000, true}, { (std::int64_t)0x000000007ffffffe, 0x00000000, true}, { (std::int64_t)0x000000007fffffff, 0x00000000, true}, { (std::int64_t)0x0000000080000000, 0x00000000, true}, { (std::int64_t)0x0000000080000001, 0x00000000, true}, { (std::int64_t)0x00000000fffffffe, 0x00000000, true}, { (std::int64_t)0x00000000ffffffff, 0x00000000, true}, { (std::int64_t)0x0000000100000000, 0x00000000, true}, { (std::int64_t)0x0000000200000000, 0x00000000, true}, { (std::int64_t)0x7ffffffffffffffe, 0x00000000, true}, { (std::int64_t)0x7fffffffffffffff, 0x00000000, true}, { (std::int64_t)0x8000000000000000, 0x00000000, true}, { (std::int64_t)0x8000000000000001, 0x00000000, true}, { (std::int64_t)0xfffffffffffffffe, 0x00000000, true}, { (std::int64_t)0xffffffffffffffff, 0x00000000, true}, { (std::int64_t)0x0000000000000000, 0x00000001, true}, { (std::int64_t)0x0000000000000001, 0x00000001, true}, { (std::int64_t)0x0000000000000002, 0x00000001, true}, { (std::int64_t)0x000000007ffffffe, 0x00000001, true}, { (std::int64_t)0x000000007fffffff, 0x00000001, true}, { (std::int64_t)0x0000000080000000, 0x00000001, true}, { (std::int64_t)0x0000000080000001, 0x00000001, true}, { (std::int64_t)0x00000000fffffffe, 0x00000001, true}, { (std::int64_t)0x00000000ffffffff, 0x00000001, true}, { (std::int64_t)0x0000000100000000, 0x00000001, true}, { (std::int64_t)0x0000000200000000, 0x00000001, true}, { (std::int64_t)0x7ffffffffffffffe, 0x00000001, true}, { (std::int64_t)0x7fffffffffffffff, 0x00000001, true}, { (std::int64_t)0x8000000000000000, 0x00000001, false}, { (std::int64_t)0x8000000000000001, 0x00000001, true}, { (std::int64_t)0xfffffffffffffffe, 0x00000001, true}, { (std::int64_t)0xffffffffffffffff, 0x00000001, true}, { (std::int64_t)0x0000000000000000, 0x00000002, true}, { (std::int64_t)0x0000000000000001, 0x00000002, true}, { (std::int64_t)0x0000000000000002, 0x00000002, true}, { (std::int64_t)0x000000007ffffffe, 0x00000002, true}, { (std::int64_t)0x000000007fffffff, 0x00000002, true}, { (std::int64_t)0x0000000080000000, 0x00000002, true}, { (std::int64_t)0x0000000080000001, 0x00000002, true}, { (std::int64_t)0x00000000fffffffe, 0x00000002, true}, { (std::int64_t)0x00000000ffffffff, 0x00000002, true}, { (std::int64_t)0x0000000100000000, 0x00000002, true}, { (std::int64_t)0x0000000200000000, 0x00000002, true}, { (std::int64_t)0x7ffffffffffffffe, 0x00000002, true}, { (std::int64_t)0x7fffffffffffffff, 0x00000002, true}, { (std::int64_t)0x8000000000000000, 0x00000002, false}, { (std::int64_t)0x8000000000000001, 0x00000002, false}, { (std::int64_t)0xfffffffffffffffe, 0x00000002, true}, { (std::int64_t)0xffffffffffffffff, 0x00000002, true}, { (std::int64_t)0x0000000000000000, 0x7ffffffe, true}, { (std::int64_t)0x0000000000000001, 0x7ffffffe, true}, { (std::int64_t)0x0000000000000002, 0x7ffffffe, true}, { (std::int64_t)0x000000007ffffffe, 0x7ffffffe, true}, { (std::int64_t)0x000000007fffffff, 0x7ffffffe, true}, { (std::int64_t)0x0000000080000000, 0x7ffffffe, true}, { (std::int64_t)0x0000000080000001, 0x7ffffffe, true}, { (std::int64_t)0x00000000fffffffe, 0x7ffffffe, true}, { (std::int64_t)0x00000000ffffffff, 0x7ffffffe, true}, { (std::int64_t)0x0000000100000000, 0x7ffffffe, true}, { (std::int64_t)0x0000000200000000, 0x7ffffffe, true}, { (std::int64_t)0x7ffffffffffffffe, 0x7ffffffe, true}, { (std::int64_t)0x7fffffffffffffff, 0x7ffffffe, true}, { (std::int64_t)0x8000000000000000, 0x7ffffffe, false}, { (std::int64_t)0x8000000000000001, 0x7ffffffe, false}, { (std::int64_t)0xfffffffffffffffe, 0x7ffffffe, true}, { (std::int64_t)0xffffffffffffffff, 0x7ffffffe, true}, { (std::int64_t)0x0000000000000000, 0x7fffffff, true}, { (std::int64_t)0x0000000000000001, 0x7fffffff, true}, { (std::int64_t)0x0000000000000002, 0x7fffffff, true}, { (std::int64_t)0x000000007ffffffe, 0x7fffffff, true}, { (std::int64_t)0x000000007fffffff, 0x7fffffff, true}, { (std::int64_t)0x0000000080000000, 0x7fffffff, true}, { (std::int64_t)0x0000000080000001, 0x7fffffff, true}, { (std::int64_t)0x00000000fffffffe, 0x7fffffff, true}, { (std::int64_t)0x00000000ffffffff, 0x7fffffff, true}, { (std::int64_t)0x0000000100000000, 0x7fffffff, true}, { (std::int64_t)0x0000000200000000, 0x7fffffff, true}, { (std::int64_t)0x7ffffffffffffffe, 0x7fffffff, true}, { (std::int64_t)0x7fffffffffffffff, 0x7fffffff, true}, { (std::int64_t)0x8000000000000000, 0x7fffffff, false}, { (std::int64_t)0x8000000000000001, 0x7fffffff, false}, { (std::int64_t)0xfffffffffffffffe, 0x7fffffff, true}, { (std::int64_t)0xffffffffffffffff, 0x7fffffff, true}, { (std::int64_t)0x0000000000000000, 0x80000000, true}, { (std::int64_t)0x0000000000000001, 0x80000000, true}, { (std::int64_t)0x0000000000000002, 0x80000000, true}, { (std::int64_t)0x000000007ffffffe, 0x80000000, true}, { (std::int64_t)0x000000007fffffff, 0x80000000, true}, { (std::int64_t)0x0000000080000000, 0x80000000, true}, { (std::int64_t)0x0000000080000001, 0x80000000, true}, { (std::int64_t)0x00000000fffffffe, 0x80000000, true}, { (std::int64_t)0x00000000ffffffff, 0x80000000, true}, { (std::int64_t)0x0000000100000000, 0x80000000, true}, { (std::int64_t)0x0000000200000000, 0x80000000, true}, { (std::int64_t)0x7ffffffffffffffe, 0x80000000, true}, { (std::int64_t)0x7fffffffffffffff, 0x80000000, true}, { (std::int64_t)0x8000000000000000, 0x80000000, false}, { (std::int64_t)0x8000000000000001, 0x80000000, false}, { (std::int64_t)0xfffffffffffffffe, 0x80000000, true}, { (std::int64_t)0xffffffffffffffff, 0x80000000, true}, { (std::int64_t)0x0000000000000000, 0x80000001, true}, { (std::int64_t)0x0000000000000001, 0x80000001, true}, { (std::int64_t)0x0000000000000002, 0x80000001, true}, { (std::int64_t)0x000000007ffffffe, 0x80000001, true}, { (std::int64_t)0x000000007fffffff, 0x80000001, true}, { (std::int64_t)0x0000000080000000, 0x80000001, true}, { (std::int64_t)0x0000000080000001, 0x80000001, true}, { (std::int64_t)0x00000000fffffffe, 0x80000001, true}, { (std::int64_t)0x00000000ffffffff, 0x80000001, true}, { (std::int64_t)0x0000000100000000, 0x80000001, true}, { (std::int64_t)0x0000000200000000, 0x80000001, true}, { (std::int64_t)0x7ffffffffffffffe, 0x80000001, true}, { (std::int64_t)0x7fffffffffffffff, 0x80000001, true}, { (std::int64_t)0x8000000000000000, 0x80000001, false}, { (std::int64_t)0x8000000000000001, 0x80000001, false}, { (std::int64_t)0xfffffffffffffffe, 0x80000001, true}, { (std::int64_t)0xffffffffffffffff, 0x80000001, true}, { (std::int64_t)0x0000000000000000, 0xfffffffe, true}, { (std::int64_t)0x0000000000000001, 0xfffffffe, true}, { (std::int64_t)0x0000000000000002, 0xfffffffe, true}, { (std::int64_t)0x000000007ffffffe, 0xfffffffe, true}, { (std::int64_t)0x000000007fffffff, 0xfffffffe, true}, { (std::int64_t)0x0000000080000000, 0xfffffffe, true}, { (std::int64_t)0x0000000080000001, 0xfffffffe, true}, { (std::int64_t)0x00000000fffffffe, 0xfffffffe, true}, { (std::int64_t)0x00000000ffffffff, 0xfffffffe, true}, { (std::int64_t)0x0000000100000000, 0xfffffffe, true}, { (std::int64_t)0x0000000200000000, 0xfffffffe, true}, { (std::int64_t)0x7ffffffffffffffe, 0xfffffffe, true}, { (std::int64_t)0x7fffffffffffffff, 0xfffffffe, true}, { (std::int64_t)0x8000000000000000, 0xfffffffe, false}, { (std::int64_t)0x8000000000000001, 0xfffffffe, false}, { (std::int64_t)0xfffffffffffffffe, 0xfffffffe, true}, { (std::int64_t)0xffffffffffffffff, 0xfffffffe, true}, { (std::int64_t)0x0000000000000000, 0xffffffff, true}, { (std::int64_t)0x0000000000000001, 0xffffffff, true}, { (std::int64_t)0x0000000000000002, 0xffffffff, true}, { (std::int64_t)0x000000007ffffffe, 0xffffffff, true}, { (std::int64_t)0x000000007fffffff, 0xffffffff, true}, { (std::int64_t)0x0000000080000000, 0xffffffff, true}, { (std::int64_t)0x0000000080000001, 0xffffffff, true}, { (std::int64_t)0x00000000fffffffe, 0xffffffff, true}, { (std::int64_t)0x00000000ffffffff, 0xffffffff, true}, { (std::int64_t)0x0000000100000000, 0xffffffff, true}, { (std::int64_t)0x0000000200000000, 0xffffffff, true}, { (std::int64_t)0x7ffffffffffffffe, 0xffffffff, true}, { (std::int64_t)0x7fffffffffffffff, 0xffffffff, true}, { (std::int64_t)0x8000000000000000, 0xffffffff, false}, { (std::int64_t)0x8000000000000001, 0xffffffff, false}, { (std::int64_t)0xfffffffffffffffe, 0xffffffff, true}, { (std::int64_t)0xffffffffffffffff, 0xffffffff, true}, }; template<> TestVector< std::int64_t, std::uint32_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int64_uint32; this->count = COUNTOF(int64_uint32); } static const TestCase< std::int64_t, std::uint16_t, OpType::Sub > int64_uint16[] = { { (std::int64_t)0x0000000000000000, 0x0000, true}, { (std::int64_t)0x0000000000000001, 0x0000, true}, { (std::int64_t)0x0000000000000002, 0x0000, true}, { (std::int64_t)0x000000007ffffffe, 0x0000, true}, { (std::int64_t)0x000000007fffffff, 0x0000, true}, { (std::int64_t)0x0000000080000000, 0x0000, true}, { (std::int64_t)0x0000000080000001, 0x0000, true}, { (std::int64_t)0x00000000fffffffe, 0x0000, true}, { (std::int64_t)0x00000000ffffffff, 0x0000, true}, { (std::int64_t)0x0000000100000000, 0x0000, true}, { (std::int64_t)0x0000000200000000, 0x0000, true}, { (std::int64_t)0x7ffffffffffffffe, 0x0000, true}, { (std::int64_t)0x7fffffffffffffff, 0x0000, true}, { (std::int64_t)0x8000000000000000, 0x0000, true}, { (std::int64_t)0x8000000000000001, 0x0000, true}, { (std::int64_t)0xfffffffffffffffe, 0x0000, true}, { (std::int64_t)0xffffffffffffffff, 0x0000, true}, { (std::int64_t)0x0000000000000000, 0x0001, true}, { (std::int64_t)0x0000000000000001, 0x0001, true}, { (std::int64_t)0x0000000000000002, 0x0001, true}, { (std::int64_t)0x000000007ffffffe, 0x0001, true}, { (std::int64_t)0x000000007fffffff, 0x0001, true}, { (std::int64_t)0x0000000080000000, 0x0001, true}, { (std::int64_t)0x0000000080000001, 0x0001, true}, { (std::int64_t)0x00000000fffffffe, 0x0001, true}, { (std::int64_t)0x00000000ffffffff, 0x0001, true}, { (std::int64_t)0x0000000100000000, 0x0001, true}, { (std::int64_t)0x0000000200000000, 0x0001, true}, { (std::int64_t)0x7ffffffffffffffe, 0x0001, true}, { (std::int64_t)0x7fffffffffffffff, 0x0001, true}, { (std::int64_t)0x8000000000000000, 0x0001, false}, { (std::int64_t)0x8000000000000001, 0x0001, true}, { (std::int64_t)0xfffffffffffffffe, 0x0001, true}, { (std::int64_t)0xffffffffffffffff, 0x0001, true}, { (std::int64_t)0x0000000000000000, 0x0002, true}, { (std::int64_t)0x0000000000000001, 0x0002, true}, { (std::int64_t)0x0000000000000002, 0x0002, true}, { (std::int64_t)0x000000007ffffffe, 0x0002, true}, { (std::int64_t)0x000000007fffffff, 0x0002, true}, { (std::int64_t)0x0000000080000000, 0x0002, true}, { (std::int64_t)0x0000000080000001, 0x0002, true}, { (std::int64_t)0x00000000fffffffe, 0x0002, true}, { (std::int64_t)0x00000000ffffffff, 0x0002, true}, { (std::int64_t)0x0000000100000000, 0x0002, true}, { (std::int64_t)0x0000000200000000, 0x0002, true}, { (std::int64_t)0x7ffffffffffffffe, 0x0002, true}, { (std::int64_t)0x7fffffffffffffff, 0x0002, true}, { (std::int64_t)0x8000000000000000, 0x0002, false}, { (std::int64_t)0x8000000000000001, 0x0002, false}, { (std::int64_t)0xfffffffffffffffe, 0x0002, true}, { (std::int64_t)0xffffffffffffffff, 0x0002, true}, { (std::int64_t)0x0000000000000000, 0x7ffe, true}, { (std::int64_t)0x0000000000000001, 0x7ffe, true}, { (std::int64_t)0x0000000000000002, 0x7ffe, true}, { (std::int64_t)0x000000007ffffffe, 0x7ffe, true}, { (std::int64_t)0x000000007fffffff, 0x7ffe, true}, { (std::int64_t)0x0000000080000000, 0x7ffe, true}, { (std::int64_t)0x0000000080000001, 0x7ffe, true}, { (std::int64_t)0x00000000fffffffe, 0x7ffe, true}, { (std::int64_t)0x00000000ffffffff, 0x7ffe, true}, { (std::int64_t)0x0000000100000000, 0x7ffe, true}, { (std::int64_t)0x0000000200000000, 0x7ffe, true}, { (std::int64_t)0x7ffffffffffffffe, 0x7ffe, true}, { (std::int64_t)0x7fffffffffffffff, 0x7ffe, true}, { (std::int64_t)0x8000000000000000, 0x7ffe, false}, { (std::int64_t)0x8000000000000001, 0x7ffe, false}, { (std::int64_t)0xfffffffffffffffe, 0x7ffe, true}, { (std::int64_t)0xffffffffffffffff, 0x7ffe, true}, { (std::int64_t)0x0000000000000000, 0x7fff, true}, { (std::int64_t)0x0000000000000001, 0x7fff, true}, { (std::int64_t)0x0000000000000002, 0x7fff, true}, { (std::int64_t)0x000000007ffffffe, 0x7fff, true}, { (std::int64_t)0x000000007fffffff, 0x7fff, true}, { (std::int64_t)0x0000000080000000, 0x7fff, true}, { (std::int64_t)0x0000000080000001, 0x7fff, true}, { (std::int64_t)0x00000000fffffffe, 0x7fff, true}, { (std::int64_t)0x00000000ffffffff, 0x7fff, true}, { (std::int64_t)0x0000000100000000, 0x7fff, true}, { (std::int64_t)0x0000000200000000, 0x7fff, true}, { (std::int64_t)0x7ffffffffffffffe, 0x7fff, true}, { (std::int64_t)0x7fffffffffffffff, 0x7fff, true}, { (std::int64_t)0x8000000000000000, 0x7fff, false}, { (std::int64_t)0x8000000000000001, 0x7fff, false}, { (std::int64_t)0xfffffffffffffffe, 0x7fff, true}, { (std::int64_t)0xffffffffffffffff, 0x7fff, true}, { (std::int64_t)0x0000000000000000, 0x8000, true}, { (std::int64_t)0x0000000000000001, 0x8000, true}, { (std::int64_t)0x0000000000000002, 0x8000, true}, { (std::int64_t)0x000000007ffffffe, 0x8000, true}, { (std::int64_t)0x000000007fffffff, 0x8000, true}, { (std::int64_t)0x0000000080000000, 0x8000, true}, { (std::int64_t)0x0000000080000001, 0x8000, true}, { (std::int64_t)0x00000000fffffffe, 0x8000, true}, { (std::int64_t)0x00000000ffffffff, 0x8000, true}, { (std::int64_t)0x0000000100000000, 0x8000, true}, { (std::int64_t)0x0000000200000000, 0x8000, true}, { (std::int64_t)0x7ffffffffffffffe, 0x8000, true}, { (std::int64_t)0x7fffffffffffffff, 0x8000, true}, { (std::int64_t)0x8000000000000000, 0x8000, false}, { (std::int64_t)0x8000000000000001, 0x8000, false}, { (std::int64_t)0xfffffffffffffffe, 0x8000, true}, { (std::int64_t)0xffffffffffffffff, 0x8000, true}, { (std::int64_t)0x0000000000000000, 0x8001, true}, { (std::int64_t)0x0000000000000001, 0x8001, true}, { (std::int64_t)0x0000000000000002, 0x8001, true}, { (std::int64_t)0x000000007ffffffe, 0x8001, true}, { (std::int64_t)0x000000007fffffff, 0x8001, true}, { (std::int64_t)0x0000000080000000, 0x8001, true}, { (std::int64_t)0x0000000080000001, 0x8001, true}, { (std::int64_t)0x00000000fffffffe, 0x8001, true}, { (std::int64_t)0x00000000ffffffff, 0x8001, true}, { (std::int64_t)0x0000000100000000, 0x8001, true}, { (std::int64_t)0x0000000200000000, 0x8001, true}, { (std::int64_t)0x7ffffffffffffffe, 0x8001, true}, { (std::int64_t)0x7fffffffffffffff, 0x8001, true}, { (std::int64_t)0x8000000000000000, 0x8001, false}, { (std::int64_t)0x8000000000000001, 0x8001, false}, { (std::int64_t)0xfffffffffffffffe, 0x8001, true}, { (std::int64_t)0xffffffffffffffff, 0x8001, true}, { (std::int64_t)0x0000000000000000, 0xfffe, true}, { (std::int64_t)0x0000000000000001, 0xfffe, true}, { (std::int64_t)0x0000000000000002, 0xfffe, true}, { (std::int64_t)0x000000007ffffffe, 0xfffe, true}, { (std::int64_t)0x000000007fffffff, 0xfffe, true}, { (std::int64_t)0x0000000080000000, 0xfffe, true}, { (std::int64_t)0x0000000080000001, 0xfffe, true}, { (std::int64_t)0x00000000fffffffe, 0xfffe, true}, { (std::int64_t)0x00000000ffffffff, 0xfffe, true}, { (std::int64_t)0x0000000100000000, 0xfffe, true}, { (std::int64_t)0x0000000200000000, 0xfffe, true}, { (std::int64_t)0x7ffffffffffffffe, 0xfffe, true}, { (std::int64_t)0x7fffffffffffffff, 0xfffe, true}, { (std::int64_t)0x8000000000000000, 0xfffe, false}, { (std::int64_t)0x8000000000000001, 0xfffe, false}, { (std::int64_t)0xfffffffffffffffe, 0xfffe, true}, { (std::int64_t)0xffffffffffffffff, 0xfffe, true}, { (std::int64_t)0x0000000000000000, 0xffff, true}, { (std::int64_t)0x0000000000000001, 0xffff, true}, { (std::int64_t)0x0000000000000002, 0xffff, true}, { (std::int64_t)0x000000007ffffffe, 0xffff, true}, { (std::int64_t)0x000000007fffffff, 0xffff, true}, { (std::int64_t)0x0000000080000000, 0xffff, true}, { (std::int64_t)0x0000000080000001, 0xffff, true}, { (std::int64_t)0x00000000fffffffe, 0xffff, true}, { (std::int64_t)0x00000000ffffffff, 0xffff, true}, { (std::int64_t)0x0000000100000000, 0xffff, true}, { (std::int64_t)0x0000000200000000, 0xffff, true}, { (std::int64_t)0x7ffffffffffffffe, 0xffff, true}, { (std::int64_t)0x7fffffffffffffff, 0xffff, true}, { (std::int64_t)0x8000000000000000, 0xffff, false}, { (std::int64_t)0x8000000000000001, 0xffff, false}, { (std::int64_t)0xfffffffffffffffe, 0xffff, true}, { (std::int64_t)0xffffffffffffffff, 0xffff, true}, }; template<> TestVector< std::int64_t, std::uint16_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int64_uint16; this->count = COUNTOF(int64_uint16); } static const TestCase< std::int64_t, std::uint8_t, OpType::Sub > int64_uint8[] = { { (std::int64_t)0x0000000000000000, 0x00, true}, { (std::int64_t)0x0000000000000001, 0x00, true}, { (std::int64_t)0x0000000000000002, 0x00, true}, { (std::int64_t)0x000000007ffffffe, 0x00, true}, { (std::int64_t)0x000000007fffffff, 0x00, true}, { (std::int64_t)0x0000000080000000, 0x00, true}, { (std::int64_t)0x0000000080000001, 0x00, true}, { (std::int64_t)0x00000000fffffffe, 0x00, true}, { (std::int64_t)0x00000000ffffffff, 0x00, true}, { (std::int64_t)0x0000000100000000, 0x00, true}, { (std::int64_t)0x0000000200000000, 0x00, true}, { (std::int64_t)0x7ffffffffffffffe, 0x00, true}, { (std::int64_t)0x7fffffffffffffff, 0x00, true}, { (std::int64_t)0x8000000000000000, 0x00, true}, { (std::int64_t)0x8000000000000001, 0x00, true}, { (std::int64_t)0xfffffffffffffffe, 0x00, true}, { (std::int64_t)0xffffffffffffffff, 0x00, true}, { (std::int64_t)0x0000000000000000, 0x01, true}, { (std::int64_t)0x0000000000000001, 0x01, true}, { (std::int64_t)0x0000000000000002, 0x01, true}, { (std::int64_t)0x000000007ffffffe, 0x01, true}, { (std::int64_t)0x000000007fffffff, 0x01, true}, { (std::int64_t)0x0000000080000000, 0x01, true}, { (std::int64_t)0x0000000080000001, 0x01, true}, { (std::int64_t)0x00000000fffffffe, 0x01, true}, { (std::int64_t)0x00000000ffffffff, 0x01, true}, { (std::int64_t)0x0000000100000000, 0x01, true}, { (std::int64_t)0x0000000200000000, 0x01, true}, { (std::int64_t)0x7ffffffffffffffe, 0x01, true}, { (std::int64_t)0x7fffffffffffffff, 0x01, true}, { (std::int64_t)0x8000000000000000, 0x01, false}, { (std::int64_t)0x8000000000000001, 0x01, true}, { (std::int64_t)0xfffffffffffffffe, 0x01, true}, { (std::int64_t)0xffffffffffffffff, 0x01, true}, { (std::int64_t)0x0000000000000000, 0x02, true}, { (std::int64_t)0x0000000000000001, 0x02, true}, { (std::int64_t)0x0000000000000002, 0x02, true}, { (std::int64_t)0x000000007ffffffe, 0x02, true}, { (std::int64_t)0x000000007fffffff, 0x02, true}, { (std::int64_t)0x0000000080000000, 0x02, true}, { (std::int64_t)0x0000000080000001, 0x02, true}, { (std::int64_t)0x00000000fffffffe, 0x02, true}, { (std::int64_t)0x00000000ffffffff, 0x02, true}, { (std::int64_t)0x0000000100000000, 0x02, true}, { (std::int64_t)0x0000000200000000, 0x02, true}, { (std::int64_t)0x7ffffffffffffffe, 0x02, true}, { (std::int64_t)0x7fffffffffffffff, 0x02, true}, { (std::int64_t)0x8000000000000000, 0x02, false}, { (std::int64_t)0x8000000000000001, 0x02, false}, { (std::int64_t)0xfffffffffffffffe, 0x02, true}, { (std::int64_t)0xffffffffffffffff, 0x02, true}, { (std::int64_t)0x0000000000000000, 0x7e, true}, { (std::int64_t)0x0000000000000001, 0x7e, true}, { (std::int64_t)0x0000000000000002, 0x7e, true}, { (std::int64_t)0x000000007ffffffe, 0x7e, true}, { (std::int64_t)0x000000007fffffff, 0x7e, true}, { (std::int64_t)0x0000000080000000, 0x7e, true}, { (std::int64_t)0x0000000080000001, 0x7e, true}, { (std::int64_t)0x00000000fffffffe, 0x7e, true}, { (std::int64_t)0x00000000ffffffff, 0x7e, true}, { (std::int64_t)0x0000000100000000, 0x7e, true}, { (std::int64_t)0x0000000200000000, 0x7e, true}, { (std::int64_t)0x7ffffffffffffffe, 0x7e, true}, { (std::int64_t)0x7fffffffffffffff, 0x7e, true}, { (std::int64_t)0x8000000000000000, 0x7e, false}, { (std::int64_t)0x8000000000000001, 0x7e, false}, { (std::int64_t)0xfffffffffffffffe, 0x7e, true}, { (std::int64_t)0xffffffffffffffff, 0x7e, true}, { (std::int64_t)0x0000000000000000, 0x7f, true}, { (std::int64_t)0x0000000000000001, 0x7f, true}, { (std::int64_t)0x0000000000000002, 0x7f, true}, { (std::int64_t)0x000000007ffffffe, 0x7f, true}, { (std::int64_t)0x000000007fffffff, 0x7f, true}, { (std::int64_t)0x0000000080000000, 0x7f, true}, { (std::int64_t)0x0000000080000001, 0x7f, true}, { (std::int64_t)0x00000000fffffffe, 0x7f, true}, { (std::int64_t)0x00000000ffffffff, 0x7f, true}, { (std::int64_t)0x0000000100000000, 0x7f, true}, { (std::int64_t)0x0000000200000000, 0x7f, true}, { (std::int64_t)0x7ffffffffffffffe, 0x7f, true}, { (std::int64_t)0x7fffffffffffffff, 0x7f, true}, { (std::int64_t)0x8000000000000000, 0x7f, false}, { (std::int64_t)0x8000000000000001, 0x7f, false}, { (std::int64_t)0xfffffffffffffffe, 0x7f, true}, { (std::int64_t)0xffffffffffffffff, 0x7f, true}, { (std::int64_t)0x0000000000000000, 0x80, true}, { (std::int64_t)0x0000000000000001, 0x80, true}, { (std::int64_t)0x0000000000000002, 0x80, true}, { (std::int64_t)0x000000007ffffffe, 0x80, true}, { (std::int64_t)0x000000007fffffff, 0x80, true}, { (std::int64_t)0x0000000080000000, 0x80, true}, { (std::int64_t)0x0000000080000001, 0x80, true}, { (std::int64_t)0x00000000fffffffe, 0x80, true}, { (std::int64_t)0x00000000ffffffff, 0x80, true}, { (std::int64_t)0x0000000100000000, 0x80, true}, { (std::int64_t)0x0000000200000000, 0x80, true}, { (std::int64_t)0x7ffffffffffffffe, 0x80, true}, { (std::int64_t)0x7fffffffffffffff, 0x80, true}, { (std::int64_t)0x8000000000000000, 0x80, false}, { (std::int64_t)0x8000000000000001, 0x80, false}, { (std::int64_t)0xfffffffffffffffe, 0x80, true}, { (std::int64_t)0xffffffffffffffff, 0x80, true}, { (std::int64_t)0x0000000000000000, 0x81, true}, { (std::int64_t)0x0000000000000001, 0x81, true}, { (std::int64_t)0x0000000000000002, 0x81, true}, { (std::int64_t)0x000000007ffffffe, 0x81, true}, { (std::int64_t)0x000000007fffffff, 0x81, true}, { (std::int64_t)0x0000000080000000, 0x81, true}, { (std::int64_t)0x0000000080000001, 0x81, true}, { (std::int64_t)0x00000000fffffffe, 0x81, true}, { (std::int64_t)0x00000000ffffffff, 0x81, true}, { (std::int64_t)0x0000000100000000, 0x81, true}, { (std::int64_t)0x0000000200000000, 0x81, true}, { (std::int64_t)0x7ffffffffffffffe, 0x81, true}, { (std::int64_t)0x7fffffffffffffff, 0x81, true}, { (std::int64_t)0x8000000000000000, 0x81, false}, { (std::int64_t)0x8000000000000001, 0x81, false}, { (std::int64_t)0xfffffffffffffffe, 0x81, true}, { (std::int64_t)0xffffffffffffffff, 0x81, true}, { (std::int64_t)0x0000000000000000, 0xfe, true}, { (std::int64_t)0x0000000000000001, 0xfe, true}, { (std::int64_t)0x0000000000000002, 0xfe, true}, { (std::int64_t)0x000000007ffffffe, 0xfe, true}, { (std::int64_t)0x000000007fffffff, 0xfe, true}, { (std::int64_t)0x0000000080000000, 0xfe, true}, { (std::int64_t)0x0000000080000001, 0xfe, true}, { (std::int64_t)0x00000000fffffffe, 0xfe, true}, { (std::int64_t)0x00000000ffffffff, 0xfe, true}, { (std::int64_t)0x0000000100000000, 0xfe, true}, { (std::int64_t)0x0000000200000000, 0xfe, true}, { (std::int64_t)0x7ffffffffffffffe, 0xfe, true}, { (std::int64_t)0x7fffffffffffffff, 0xfe, true}, { (std::int64_t)0x8000000000000000, 0xfe, false}, { (std::int64_t)0x8000000000000001, 0xfe, false}, { (std::int64_t)0xfffffffffffffffe, 0xfe, true}, { (std::int64_t)0xffffffffffffffff, 0xfe, true}, { (std::int64_t)0x0000000000000000, 0xff, true}, { (std::int64_t)0x0000000000000001, 0xff, true}, { (std::int64_t)0x0000000000000002, 0xff, true}, { (std::int64_t)0x000000007ffffffe, 0xff, true}, { (std::int64_t)0x000000007fffffff, 0xff, true}, { (std::int64_t)0x0000000080000000, 0xff, true}, { (std::int64_t)0x0000000080000001, 0xff, true}, { (std::int64_t)0x00000000fffffffe, 0xff, true}, { (std::int64_t)0x00000000ffffffff, 0xff, true}, { (std::int64_t)0x0000000100000000, 0xff, true}, { (std::int64_t)0x0000000200000000, 0xff, true}, { (std::int64_t)0x7ffffffffffffffe, 0xff, true}, { (std::int64_t)0x7fffffffffffffff, 0xff, true}, { (std::int64_t)0x8000000000000000, 0xff, false}, { (std::int64_t)0x8000000000000001, 0xff, false}, { (std::int64_t)0xfffffffffffffffe, 0xff, true}, { (std::int64_t)0xffffffffffffffff, 0xff, true}, }; template<> TestVector< std::int64_t, std::uint8_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int64_uint8; this->count = COUNTOF(int64_uint8); } static const TestCase< std::int8_t, std::uint64_t, OpType::Sub > int8_uint64[] = { { (std::int8_t)0x00, 0x0000000000000000, true}, { (std::int8_t)0x01, 0x0000000000000000, true}, { (std::int8_t)0x02, 0x0000000000000000, true}, { (std::int8_t)0x7e, 0x0000000000000000, true}, { (std::int8_t)0x7f, 0x0000000000000000, true}, { (std::int8_t)0x80, 0x0000000000000000, true}, { (std::int8_t)0x81, 0x0000000000000000, true}, { (std::int8_t)0xfe, 0x0000000000000000, true}, { (std::int8_t)0xff, 0x0000000000000000, true}, { (std::int8_t)0x00, 0x0000000000000001, true}, { (std::int8_t)0x01, 0x0000000000000001, true}, { (std::int8_t)0x02, 0x0000000000000001, true}, { (std::int8_t)0x7e, 0x0000000000000001, true}, { (std::int8_t)0x7f, 0x0000000000000001, true}, { (std::int8_t)0x80, 0x0000000000000001, false}, { (std::int8_t)0x81, 0x0000000000000001, true}, { (std::int8_t)0xfe, 0x0000000000000001, true}, { (std::int8_t)0xff, 0x0000000000000001, true}, { (std::int8_t)0x00, 0x0000000000000002, true}, { (std::int8_t)0x01, 0x0000000000000002, true}, { (std::int8_t)0x02, 0x0000000000000002, true}, { (std::int8_t)0x7e, 0x0000000000000002, true}, { (std::int8_t)0x7f, 0x0000000000000002, true}, { (std::int8_t)0x80, 0x0000000000000002, false}, { (std::int8_t)0x81, 0x0000000000000002, false}, { (std::int8_t)0xfe, 0x0000000000000002, true}, { (std::int8_t)0xff, 0x0000000000000002, true}, { (std::int8_t)0x00, 0x000000007ffffffe, false}, { (std::int8_t)0x01, 0x000000007ffffffe, false}, { (std::int8_t)0x02, 0x000000007ffffffe, false}, { (std::int8_t)0x7e, 0x000000007ffffffe, false}, { (std::int8_t)0x7f, 0x000000007ffffffe, false}, { (std::int8_t)0x80, 0x000000007ffffffe, false}, { (std::int8_t)0x81, 0x000000007ffffffe, false}, { (std::int8_t)0xfe, 0x000000007ffffffe, false}, { (std::int8_t)0xff, 0x000000007ffffffe, false}, { (std::int8_t)0x00, 0x000000007fffffff, false}, { (std::int8_t)0x01, 0x000000007fffffff, false}, { (std::int8_t)0x02, 0x000000007fffffff, false}, { (std::int8_t)0x7e, 0x000000007fffffff, false}, { (std::int8_t)0x7f, 0x000000007fffffff, false}, { (std::int8_t)0x80, 0x000000007fffffff, false}, { (std::int8_t)0x81, 0x000000007fffffff, false}, { (std::int8_t)0xfe, 0x000000007fffffff, false}, { (std::int8_t)0xff, 0x000000007fffffff, false}, { (std::int8_t)0x00, 0x0000000080000000, false}, { (std::int8_t)0x01, 0x0000000080000000, false}, { (std::int8_t)0x02, 0x0000000080000000, false}, { (std::int8_t)0x7e, 0x0000000080000000, false}, { (std::int8_t)0x7f, 0x0000000080000000, false}, { (std::int8_t)0x80, 0x0000000080000000, false}, { (std::int8_t)0x81, 0x0000000080000000, false}, { (std::int8_t)0xfe, 0x0000000080000000, false}, { (std::int8_t)0xff, 0x0000000080000000, false}, { (std::int8_t)0x00, 0x0000000080000001, false}, { (std::int8_t)0x01, 0x0000000080000001, false}, { (std::int8_t)0x02, 0x0000000080000001, false}, { (std::int8_t)0x7e, 0x0000000080000001, false}, { (std::int8_t)0x7f, 0x0000000080000001, false}, { (std::int8_t)0x80, 0x0000000080000001, false}, { (std::int8_t)0x81, 0x0000000080000001, false}, { (std::int8_t)0xfe, 0x0000000080000001, false}, { (std::int8_t)0xff, 0x0000000080000001, false}, { (std::int8_t)0x00, 0x00000000fffffffe, false}, { (std::int8_t)0x01, 0x00000000fffffffe, false}, { (std::int8_t)0x02, 0x00000000fffffffe, false}, { (std::int8_t)0x7e, 0x00000000fffffffe, false}, { (std::int8_t)0x7f, 0x00000000fffffffe, false}, { (std::int8_t)0x80, 0x00000000fffffffe, false}, { (std::int8_t)0x81, 0x00000000fffffffe, false}, { (std::int8_t)0xfe, 0x00000000fffffffe, false}, { (std::int8_t)0xff, 0x00000000fffffffe, false}, { (std::int8_t)0x00, 0x00000000ffffffff, false}, { (std::int8_t)0x01, 0x00000000ffffffff, false}, { (std::int8_t)0x02, 0x00000000ffffffff, false}, { (std::int8_t)0x7e, 0x00000000ffffffff, false}, { (std::int8_t)0x7f, 0x00000000ffffffff, false}, { (std::int8_t)0x80, 0x00000000ffffffff, false}, { (std::int8_t)0x81, 0x00000000ffffffff, false}, { (std::int8_t)0xfe, 0x00000000ffffffff, false}, { (std::int8_t)0xff, 0x00000000ffffffff, false}, { (std::int8_t)0x00, 0x0000000100000000, false}, { (std::int8_t)0x01, 0x0000000100000000, false}, { (std::int8_t)0x02, 0x0000000100000000, false}, { (std::int8_t)0x7e, 0x0000000100000000, false}, { (std::int8_t)0x7f, 0x0000000100000000, false}, { (std::int8_t)0x80, 0x0000000100000000, false}, { (std::int8_t)0x81, 0x0000000100000000, false}, { (std::int8_t)0xfe, 0x0000000100000000, false}, { (std::int8_t)0xff, 0x0000000100000000, false}, { (std::int8_t)0x00, 0x0000000200000000, false}, { (std::int8_t)0x01, 0x0000000200000000, false}, { (std::int8_t)0x02, 0x0000000200000000, false}, { (std::int8_t)0x7e, 0x0000000200000000, false}, { (std::int8_t)0x7f, 0x0000000200000000, false}, { (std::int8_t)0x80, 0x0000000200000000, false}, { (std::int8_t)0x81, 0x0000000200000000, false}, { (std::int8_t)0xfe, 0x0000000200000000, false}, { (std::int8_t)0xff, 0x0000000200000000, false}, { (std::int8_t)0x00, 0x7ffffffffffffffe, false}, { (std::int8_t)0x01, 0x7ffffffffffffffe, false}, { (std::int8_t)0x02, 0x7ffffffffffffffe, false}, { (std::int8_t)0x7e, 0x7ffffffffffffffe, false}, { (std::int8_t)0x7f, 0x7ffffffffffffffe, false}, { (std::int8_t)0x80, 0x7ffffffffffffffe, false}, { (std::int8_t)0x81, 0x7ffffffffffffffe, false}, { (std::int8_t)0xfe, 0x7ffffffffffffffe, false}, { (std::int8_t)0xff, 0x7ffffffffffffffe, false}, { (std::int8_t)0x00, 0x7fffffffffffffff, false}, { (std::int8_t)0x01, 0x7fffffffffffffff, false}, { (std::int8_t)0x02, 0x7fffffffffffffff, false}, { (std::int8_t)0x7e, 0x7fffffffffffffff, false}, { (std::int8_t)0x7f, 0x7fffffffffffffff, false}, { (std::int8_t)0x80, 0x7fffffffffffffff, false}, { (std::int8_t)0x81, 0x7fffffffffffffff, false}, { (std::int8_t)0xfe, 0x7fffffffffffffff, false}, { (std::int8_t)0xff, 0x7fffffffffffffff, false}, { (std::int8_t)0x00, 0x8000000000000000, false}, { (std::int8_t)0x01, 0x8000000000000000, false}, { (std::int8_t)0x02, 0x8000000000000000, false}, { (std::int8_t)0x7e, 0x8000000000000000, false}, { (std::int8_t)0x7f, 0x8000000000000000, false}, { (std::int8_t)0x80, 0x8000000000000000, false}, { (std::int8_t)0x81, 0x8000000000000000, false}, { (std::int8_t)0xfe, 0x8000000000000000, false}, { (std::int8_t)0xff, 0x8000000000000000, false}, { (std::int8_t)0x00, 0x8000000000000001, false}, { (std::int8_t)0x01, 0x8000000000000001, false}, { (std::int8_t)0x02, 0x8000000000000001, false}, { (std::int8_t)0x7e, 0x8000000000000001, false}, { (std::int8_t)0x7f, 0x8000000000000001, false}, { (std::int8_t)0x80, 0x8000000000000001, false}, { (std::int8_t)0x81, 0x8000000000000001, false}, { (std::int8_t)0xfe, 0x8000000000000001, false}, { (std::int8_t)0xff, 0x8000000000000001, false}, { (std::int8_t)0x00, 0xfffffffffffffffe, false}, { (std::int8_t)0x01, 0xfffffffffffffffe, false}, { (std::int8_t)0x02, 0xfffffffffffffffe, false}, { (std::int8_t)0x7e, 0xfffffffffffffffe, false}, { (std::int8_t)0x7f, 0xfffffffffffffffe, false}, { (std::int8_t)0x80, 0xfffffffffffffffe, false}, { (std::int8_t)0x81, 0xfffffffffffffffe, false}, { (std::int8_t)0xfe, 0xfffffffffffffffe, false}, { (std::int8_t)0xff, 0xfffffffffffffffe, false}, { (std::int8_t)0x00, 0xffffffffffffffff, false}, { (std::int8_t)0x01, 0xffffffffffffffff, false}, { (std::int8_t)0x02, 0xffffffffffffffff, false}, { (std::int8_t)0x7e, 0xffffffffffffffff, false}, { (std::int8_t)0x7f, 0xffffffffffffffff, false}, { (std::int8_t)0x80, 0xffffffffffffffff, false}, { (std::int8_t)0x81, 0xffffffffffffffff, false}, { (std::int8_t)0xfe, 0xffffffffffffffff, false}, { (std::int8_t)0xff, 0xffffffffffffffff, false}, }; template<> TestVector< std::int8_t, std::uint64_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int8_uint64; this->count = COUNTOF(int8_uint64); } static const TestCase< std::int8_t, std::uint32_t, OpType::Sub > int8_uint32[] = { { (std::int8_t)0x00, 0x00000000, true}, { (std::int8_t)0x01, 0x00000000, true}, { (std::int8_t)0x02, 0x00000000, true}, { (std::int8_t)0x7e, 0x00000000, true}, { (std::int8_t)0x7f, 0x00000000, true}, { (std::int8_t)0x80, 0x00000000, true}, { (std::int8_t)0x81, 0x00000000, true}, { (std::int8_t)0xfe, 0x00000000, true}, { (std::int8_t)0xff, 0x00000000, true}, { (std::int8_t)0x00, 0x00000001, true}, { (std::int8_t)0x01, 0x00000001, true}, { (std::int8_t)0x02, 0x00000001, true}, { (std::int8_t)0x7e, 0x00000001, true}, { (std::int8_t)0x7f, 0x00000001, true}, { (std::int8_t)0x80, 0x00000001, false}, { (std::int8_t)0x81, 0x00000001, true}, { (std::int8_t)0xfe, 0x00000001, true}, { (std::int8_t)0xff, 0x00000001, true}, { (std::int8_t)0x00, 0x00000002, true}, { (std::int8_t)0x01, 0x00000002, true}, { (std::int8_t)0x02, 0x00000002, true}, { (std::int8_t)0x7e, 0x00000002, true}, { (std::int8_t)0x7f, 0x00000002, true}, { (std::int8_t)0x80, 0x00000002, false}, { (std::int8_t)0x81, 0x00000002, false}, { (std::int8_t)0xfe, 0x00000002, true}, { (std::int8_t)0xff, 0x00000002, true}, { (std::int8_t)0x00, 0x7ffffffe, false}, { (std::int8_t)0x01, 0x7ffffffe, false}, { (std::int8_t)0x02, 0x7ffffffe, false}, { (std::int8_t)0x7e, 0x7ffffffe, false}, { (std::int8_t)0x7f, 0x7ffffffe, false}, { (std::int8_t)0x80, 0x7ffffffe, false}, { (std::int8_t)0x81, 0x7ffffffe, false}, { (std::int8_t)0xfe, 0x7ffffffe, false}, { (std::int8_t)0xff, 0x7ffffffe, false}, { (std::int8_t)0x00, 0x7fffffff, false}, { (std::int8_t)0x01, 0x7fffffff, false}, { (std::int8_t)0x02, 0x7fffffff, false}, { (std::int8_t)0x7e, 0x7fffffff, false}, { (std::int8_t)0x7f, 0x7fffffff, false}, { (std::int8_t)0x80, 0x7fffffff, false}, { (std::int8_t)0x81, 0x7fffffff, false}, { (std::int8_t)0xfe, 0x7fffffff, false}, { (std::int8_t)0xff, 0x7fffffff, false}, { (std::int8_t)0x00, 0x80000000, false}, { (std::int8_t)0x01, 0x80000000, false}, { (std::int8_t)0x02, 0x80000000, false}, { (std::int8_t)0x7e, 0x80000000, false}, { (std::int8_t)0x7f, 0x80000000, false}, { (std::int8_t)0x80, 0x80000000, false}, { (std::int8_t)0x81, 0x80000000, false}, { (std::int8_t)0xfe, 0x80000000, false}, { (std::int8_t)0xff, 0x80000000, false}, { (std::int8_t)0x00, 0x80000001, false}, { (std::int8_t)0x01, 0x80000001, false}, { (std::int8_t)0x02, 0x80000001, false}, { (std::int8_t)0x7e, 0x80000001, false}, { (std::int8_t)0x7f, 0x80000001, false}, { (std::int8_t)0x80, 0x80000001, false}, { (std::int8_t)0x81, 0x80000001, false}, { (std::int8_t)0xfe, 0x80000001, false}, { (std::int8_t)0xff, 0x80000001, false}, { (std::int8_t)0x00, 0xfffffffe, false}, { (std::int8_t)0x01, 0xfffffffe, false}, { (std::int8_t)0x02, 0xfffffffe, false}, { (std::int8_t)0x7e, 0xfffffffe, false}, { (std::int8_t)0x7f, 0xfffffffe, false}, { (std::int8_t)0x80, 0xfffffffe, false}, { (std::int8_t)0x81, 0xfffffffe, false}, { (std::int8_t)0xfe, 0xfffffffe, false}, { (std::int8_t)0xff, 0xfffffffe, false}, { (std::int8_t)0x00, 0xffffffff, false}, { (std::int8_t)0x01, 0xffffffff, false}, { (std::int8_t)0x02, 0xffffffff, false}, { (std::int8_t)0x7e, 0xffffffff, false}, { (std::int8_t)0x7f, 0xffffffff, false}, { (std::int8_t)0x80, 0xffffffff, false}, { (std::int8_t)0x81, 0xffffffff, false}, { (std::int8_t)0xfe, 0xffffffff, false}, { (std::int8_t)0xff, 0xffffffff, false}, }; template<> TestVector< std::int8_t, std::uint32_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int8_uint32; this->count = COUNTOF(int8_uint32); } static const TestCase< std::int8_t, std::uint16_t, OpType::Sub > int8_uint16[] = { { (std::int8_t)0x00, 0x0000, true}, { (std::int8_t)0x01, 0x0000, true}, { (std::int8_t)0x02, 0x0000, true}, { (std::int8_t)0x7e, 0x0000, true}, { (std::int8_t)0x7f, 0x0000, true}, { (std::int8_t)0x80, 0x0000, true}, { (std::int8_t)0x81, 0x0000, true}, { (std::int8_t)0xfe, 0x0000, true}, { (std::int8_t)0xff, 0x0000, true}, { (std::int8_t)0x00, 0x0001, true}, { (std::int8_t)0x01, 0x0001, true}, { (std::int8_t)0x02, 0x0001, true}, { (std::int8_t)0x7e, 0x0001, true}, { (std::int8_t)0x7f, 0x0001, true}, { (std::int8_t)0x80, 0x0001, false}, { (std::int8_t)0x81, 0x0001, true}, { (std::int8_t)0xfe, 0x0001, true}, { (std::int8_t)0xff, 0x0001, true}, { (std::int8_t)0x00, 0x0002, true}, { (std::int8_t)0x01, 0x0002, true}, { (std::int8_t)0x02, 0x0002, true}, { (std::int8_t)0x7e, 0x0002, true}, { (std::int8_t)0x7f, 0x0002, true}, { (std::int8_t)0x80, 0x0002, false}, { (std::int8_t)0x81, 0x0002, false}, { (std::int8_t)0xfe, 0x0002, true}, { (std::int8_t)0xff, 0x0002, true}, { (std::int8_t)0x00, 0x7ffe, false}, { (std::int8_t)0x01, 0x7ffe, false}, { (std::int8_t)0x02, 0x7ffe, false}, { (std::int8_t)0x7e, 0x7ffe, false}, { (std::int8_t)0x7f, 0x7ffe, false}, { (std::int8_t)0x80, 0x7ffe, false}, { (std::int8_t)0x81, 0x7ffe, false}, { (std::int8_t)0xfe, 0x7ffe, false}, { (std::int8_t)0xff, 0x7ffe, false}, { (std::int8_t)0x00, 0x7fff, false}, { (std::int8_t)0x01, 0x7fff, false}, { (std::int8_t)0x02, 0x7fff, false}, { (std::int8_t)0x7e, 0x7fff, false}, { (std::int8_t)0x7f, 0x7fff, false}, { (std::int8_t)0x80, 0x7fff, false}, { (std::int8_t)0x81, 0x7fff, false}, { (std::int8_t)0xfe, 0x7fff, false}, { (std::int8_t)0xff, 0x7fff, false}, { (std::int8_t)0x00, 0x8000, false}, { (std::int8_t)0x01, 0x8000, false}, { (std::int8_t)0x02, 0x8000, false}, { (std::int8_t)0x7e, 0x8000, false}, { (std::int8_t)0x7f, 0x8000, false}, { (std::int8_t)0x80, 0x8000, false}, { (std::int8_t)0x81, 0x8000, false}, { (std::int8_t)0xfe, 0x8000, false}, { (std::int8_t)0xff, 0x8000, false}, { (std::int8_t)0x00, 0x8001, false}, { (std::int8_t)0x01, 0x8001, false}, { (std::int8_t)0x02, 0x8001, false}, { (std::int8_t)0x7e, 0x8001, false}, { (std::int8_t)0x7f, 0x8001, false}, { (std::int8_t)0x80, 0x8001, false}, { (std::int8_t)0x81, 0x8001, false}, { (std::int8_t)0xfe, 0x8001, false}, { (std::int8_t)0xff, 0x8001, false}, { (std::int8_t)0x00, 0xfffe, false}, { (std::int8_t)0x01, 0xfffe, false}, { (std::int8_t)0x02, 0xfffe, false}, { (std::int8_t)0x7e, 0xfffe, false}, { (std::int8_t)0x7f, 0xfffe, false}, { (std::int8_t)0x80, 0xfffe, false}, { (std::int8_t)0x81, 0xfffe, false}, { (std::int8_t)0xfe, 0xfffe, false}, { (std::int8_t)0xff, 0xfffe, false}, { (std::int8_t)0x00, 0xffff, false}, { (std::int8_t)0x01, 0xffff, false}, { (std::int8_t)0x02, 0xffff, false}, { (std::int8_t)0x7e, 0xffff, false}, { (std::int8_t)0x7f, 0xffff, false}, { (std::int8_t)0x80, 0xffff, false}, { (std::int8_t)0x81, 0xffff, false}, { (std::int8_t)0xfe, 0xffff, false}, { (std::int8_t)0xff, 0xffff, false}, }; template<> TestVector< std::int8_t, std::uint16_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int8_uint16; this->count = COUNTOF(int8_uint16); } static const TestCase< std::int8_t, std::uint8_t, OpType::Sub > int8_uint8[] = { { static_cast(0x00), 0x00, true}, { static_cast(0x01), 0x00, true}, { static_cast(0x02), 0x00, true}, { static_cast(0x7e), 0x00, true}, { static_cast(0x7f), 0x00, true}, { static_cast(0x80), 0x00, true}, { static_cast(0x81), 0x00, true}, { static_cast(0xfe), 0x00, true}, { static_cast(0xff), 0x00, true}, { static_cast(0x00), 0x01, true}, { static_cast(0x01), 0x01, true}, { static_cast(0x02), 0x01, true}, { static_cast(0x7e), 0x01, true}, { static_cast(0x7f), 0x01, true}, { static_cast(0x80), 0x01, false}, { static_cast(0x81), 0x01, true}, { static_cast(0xfe), 0x01, true}, { static_cast(0xff), 0x01, true}, { static_cast(0x00), 0x02, true}, { static_cast(0x01), 0x02, true}, { static_cast(0x02), 0x02, true}, { static_cast(0x7e), 0x02, true}, { static_cast(0x7f), 0x02, true}, { static_cast(0x80), 0x02, false}, { static_cast(0x81), 0x02, false}, { static_cast(0xfe), 0x02, true}, { static_cast(0xff), 0x02, true}, { static_cast(0x00), 0x7e, true}, { static_cast(0x01), 0x7e, true}, { static_cast(0x02), 0x7e, true}, { static_cast(0x7e), 0x7e, true}, { static_cast(0x7f), 0x7e, true}, { static_cast(0x80), 0x7e, false}, { static_cast(0x81), 0x7e, false}, { static_cast(0xfe), 0x7e, true}, { static_cast(0xff), 0x7e, true}, { static_cast(0x00), 0x7f, true}, { static_cast(0x01), 0x7f, true}, { static_cast(0x02), 0x7f, true}, { static_cast(0x7e), 0x7f, true}, { static_cast(0x7f), 0x7f, true}, { static_cast(0x80), 0x7f, false}, { static_cast(0x81), 0x7f, false}, { static_cast(0xfe), 0x7f, false}, { static_cast(0xff), 0x7f, true}, { static_cast(0x00), 0x80, true}, { static_cast(0x01), 0x80, true}, { static_cast(0x02), 0x80, true}, { static_cast(0x7e), 0x80, true}, { static_cast(0x7f), 0x80, true}, { static_cast(0x80), 0x80, false}, { static_cast(0x81), 0x80, false}, { static_cast(0xfe), 0x80, false}, { static_cast(0xff), 0x80, false}, { static_cast(0x00), 0x81, false}, { static_cast(0x01), 0x81, true}, { static_cast(0x02), 0x81, true}, { static_cast(0x7e), 0x81, true}, { static_cast(0x7f), 0x81, true}, { static_cast(0x80), 0x81, false}, { static_cast(0x81), 0x81, false}, { static_cast(0xfe), 0x81, false}, { static_cast(0xff), 0x81, false}, { static_cast(0x00), 0xfe, false}, { static_cast(0x01), 0xfe, false}, { static_cast(0x02), 0xfe, false}, { static_cast(0x7e), 0xfe, true}, { static_cast(0x7f), 0xfe, true}, { static_cast(0x80), 0xfe, false}, { static_cast(0x81), 0xfe, false}, { static_cast(0xfe), 0xfe, false}, { static_cast(0xff), 0xfe, false}, { static_cast(0x00), 0xff, false}, { static_cast(0x01), 0xff, false}, { static_cast(0x02), 0xff, false}, { static_cast(0x7e), 0xff, false}, { static_cast(0x7f), 0xff, true}, { static_cast(0x80), 0xff, false}, { static_cast(0x81), 0xff, false}, { static_cast(0xfe), 0xff, false}, { static_cast(0xff), 0xff, false}, }; template<> TestVector< std::int8_t, std::uint8_t, OpType::Sub >::TestVector() : current(0) { this->test_cases = int8_uint8; this->count = COUNTOF(int8_uint8); }