| // 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" | |
| /* | |
| * Interesting numbers: | |
| * | |
| * std::uint64_t | |
| * 0, 1, 2, 0x7fffffff, 0x80000000, 0xffffffff, 0x100000000, 0x200000000, 0x7fffffffffffffff, 0x8000000000000000, 0xffffffffffffffff | |
| * std::uint32_t | |
| * 0, 1, 2, 0x7fffffff, 0x80000000, 0xffffffff | |
| * std::int64_t | |
| * 0, 1, 2, 0x7fffffff, 0x80000000, 0xffffffff, 0x100000000, 0x200000000, 0x7fffffffffffffff, 0x8000000000000000, 0xffffffffffffffff | |
| */ | |
| // For the most part, unsigned-unsigned combinations are not going to give us any problems | |
| // Only thing to verify is that 0/0 still throws | |
| static const TestCase< std::uint64_t, std::uint64_t, OpType::Div > uint64_uint64[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, true }, | |
| { 0x200000000, 1, true }, | |
| { 0x7fffffffffffffff, 1, true }, | |
| { 0x8000000000000000, 1, true }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, true }, | |
| { 0x7fffffffffffffff, 2, true }, | |
| { 0x8000000000000000, 2, true }, | |
| { 0xffffffffffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0x100000000, 0x7fffffff, true }, | |
| { 0x200000000, 0x7fffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffff, true }, | |
| { 0x8000000000000000, 0x7fffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0x100000000, 0x80000000, true }, | |
| { 0x200000000, 0x80000000, true }, | |
| { 0x7fffffffffffffff, 0x80000000, true }, | |
| { 0x8000000000000000, 0x80000000, true }, | |
| { 0xffffffffffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| { 0x100000000, 0xffffffff, true }, | |
| { 0x200000000, 0xffffffff, true }, | |
| { 0x7fffffffffffffff, 0xffffffff, true }, | |
| { 0x8000000000000000, 0xffffffff, true }, | |
| { 0xffffffffffffffff, 0xffffffff, true }, | |
| { 0, 0x100000000, true }, | |
| { 1, 0x100000000, true }, | |
| { 2, 0x100000000, true }, | |
| { 0x7fffffff, 0x100000000, true }, | |
| { 0x80000000, 0x100000000, true }, | |
| { 0xffffffff, 0x100000000, true }, | |
| { 0x100000000, 0x100000000, true }, | |
| { 0x200000000, 0x100000000, true }, | |
| { 0x7fffffffffffffff, 0x100000000, true }, | |
| { 0x8000000000000000, 0x100000000, true }, | |
| { 0xffffffffffffffff, 0x100000000, true }, | |
| { 0, 0x200000000, true }, | |
| { 1, 0x200000000, true }, | |
| { 2, 0x200000000, true }, | |
| { 0x7fffffff, 0x200000000, true }, | |
| { 0x80000000, 0x200000000, true }, | |
| { 0xffffffff, 0x200000000, true }, | |
| { 0x100000000, 0x200000000, true }, | |
| { 0x200000000, 0x200000000, true }, | |
| { 0x7fffffffffffffff, 0x200000000, true }, | |
| { 0x8000000000000000, 0x200000000, true }, | |
| { 0xffffffffffffffff, 0x200000000, true }, | |
| { 0, 0x7fffffffffffffff, true }, | |
| { 1, 0x7fffffffffffffff, true }, | |
| { 2, 0x7fffffffffffffff, true }, | |
| { 0x7fffffff, 0x7fffffffffffffff, true }, | |
| { 0x80000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffff, 0x7fffffffffffffff, true }, | |
| { 0x100000000, 0x7fffffffffffffff, true }, | |
| { 0x200000000, 0x7fffffffffffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffffffffffff, true }, | |
| { 0x8000000000000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffffffffffff, true }, | |
| { 0, 0x8000000000000000, true }, | |
| { 1, 0x8000000000000000, true }, | |
| { 2, 0x8000000000000000, true }, | |
| { 0x7fffffff, 0x8000000000000000, true }, | |
| { 0x80000000, 0x8000000000000000, true }, | |
| { 0xffffffff, 0x8000000000000000, true }, | |
| { 0x100000000, 0x8000000000000000, true }, | |
| { 0x200000000, 0x8000000000000000, true }, | |
| { 0x7fffffffffffffff, 0x8000000000000000, true }, | |
| { 0x8000000000000000, 0x8000000000000000, true }, | |
| { 0xffffffffffffffff, 0x8000000000000000, true }, | |
| { 0, 0xffffffffffffffff, true }, | |
| { 1, 0xffffffffffffffff, true }, | |
| { 2, 0xffffffffffffffff, true }, | |
| { 0x7fffffff, 0xffffffffffffffff, true }, | |
| { 0x80000000, 0xffffffffffffffff, true }, | |
| { 0xffffffff, 0xffffffffffffffff, true }, | |
| { 0x100000000, 0xffffffffffffffff, true }, | |
| { 0x200000000, 0xffffffffffffffff, true }, | |
| { 0x7fffffffffffffff, 0xffffffffffffffff, true }, | |
| { 0x8000000000000000, 0xffffffffffffffff, true }, | |
| { 0xffffffffffffffff, 0xffffffffffffffff, true }, | |
| }; | |
| template<> TestVector< std::uint64_t, std::uint64_t, OpType::Div>::TestVector() : current(0) | |
| { | |
| this->test_cases = uint64_uint64; | |
| this->count = COUNTOF(uint64_uint64); | |
| } | |
| static const TestCase< std::uint64_t, std::uint32_t, OpType::Div > uint64_uint32[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, true }, | |
| { 0x200000000, 1, true }, | |
| { 0x7fffffffffffffff, 1, true }, | |
| { 0x8000000000000000, 1, true }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, true }, | |
| { 0x7fffffffffffffff, 2, true }, | |
| { 0x8000000000000000, 2, true }, | |
| { 0xffffffffffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0x100000000, 0x7fffffff, true }, | |
| { 0x200000000, 0x7fffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffff, true }, | |
| { 0x8000000000000000, 0x7fffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0x100000000, 0x80000000, true }, | |
| { 0x200000000, 0x80000000, true }, | |
| { 0x7fffffffffffffff, 0x80000000, true }, | |
| { 0x8000000000000000, 0x80000000, true }, | |
| { 0xffffffffffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| { 0x100000000, 0xffffffff, true }, | |
| { 0x200000000, 0xffffffff, true }, | |
| { 0x7fffffffffffffff, 0xffffffff, true }, | |
| { 0x8000000000000000, 0xffffffff, true }, | |
| { 0xffffffffffffffff, 0xffffffff, true }, | |
| }; | |
| template<> TestVector< std::uint64_t, std::uint32_t, OpType::Div>::TestVector() : current(0) | |
| { | |
| this->test_cases = uint64_uint32; | |
| this->count = COUNTOF(uint64_uint32); | |
| } | |
| static const TestCase< std::uint64_t, std::uint16_t, OpType::Div > uint64_uint16[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, true }, | |
| { 0x200000000, 1, true }, | |
| { 0x7fffffffffffffff, 1, true }, | |
| { 0x8000000000000000, 1, true }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, true }, | |
| { 0x7fffffffffffffff, 2, true }, | |
| { 0x8000000000000000, 2, true }, | |
| { 0xffffffffffffffff, 2, true }, | |
| }; | |
| template<> TestVector< std::uint64_t, std::uint16_t, OpType::Div>::TestVector() : current(0) | |
| { | |
| this->test_cases = uint64_uint16; | |
| this->count = COUNTOF(uint64_uint16); | |
| } | |
| static const TestCase< std::uint64_t, std::uint8_t, OpType::Div > uint64_uint8[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, true }, | |
| { 0x200000000, 1, true }, | |
| { 0x7fffffffffffffff, 1, true }, | |
| { 0x8000000000000000, 1, true }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, true }, | |
| { 0x7fffffffffffffff, 2, true }, | |
| { 0x8000000000000000, 2, true }, | |
| { 0xffffffffffffffff, 2, true }, | |
| }; | |
| template<> TestVector< std::uint64_t, std::uint8_t, OpType::Div>::TestVector() : current(0) | |
| { | |
| this->test_cases = uint64_uint8; | |
| this->count = COUNTOF(uint64_uint8); | |
| } | |
| // Same problem as unsigned-signed, but anything negative should now fail | |
| // There are corner cases in the U op SafeInt<T> path, which has to be tested | |
| // individually | |
| static const TestCase< std::uint64_t, std::int64_t, OpType::Div > uint64_int64[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, true }, | |
| { 0x200000000, 1, true }, | |
| { 0x7fffffffffffffff, 1, true }, | |
| { 0x8000000000000000, 1, true }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, true }, | |
| { 0x7fffffffffffffff, 2, true }, | |
| { 0x8000000000000000, 2, true }, | |
| { 0xffffffffffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0x100000000, 0x7fffffff, true }, | |
| { 0x200000000, 0x7fffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffff, true }, | |
| { 0x8000000000000000, 0x7fffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0x100000000, 0x80000000, true }, | |
| { 0x200000000, 0x80000000, true }, | |
| { 0x7fffffffffffffff, 0x80000000, true }, | |
| { 0x8000000000000000, 0x80000000, true }, | |
| { 0xffffffffffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| { 0x100000000, 0xffffffff, true }, | |
| { 0x200000000, 0xffffffff, true }, | |
| { 0x7fffffffffffffff, 0xffffffff, true }, | |
| { 0x8000000000000000, 0xffffffff, true }, | |
| { 0xffffffffffffffff, 0xffffffff, true }, | |
| { 0, 0x100000000, true }, | |
| { 1, 0x100000000, true }, | |
| { 2, 0x100000000, true }, | |
| { 0x7fffffff, 0x100000000, true }, | |
| { 0x80000000, 0x100000000, true }, | |
| { 0xffffffff, 0x100000000, true }, | |
| { 0x100000000, 0x100000000, true }, | |
| { 0x200000000, 0x100000000, true }, | |
| { 0x7fffffffffffffff, 0x100000000, true }, | |
| { 0x8000000000000000, 0x100000000, true }, | |
| { 0xffffffffffffffff, 0x100000000, true }, | |
| { 0, 0x200000000, true }, | |
| { 1, 0x200000000, true }, | |
| { 2, 0x200000000, true }, | |
| { 0x7fffffff, 0x200000000, true }, | |
| { 0x80000000, 0x200000000, true }, | |
| { 0xffffffff, 0x200000000, true }, | |
| { 0x100000000, 0x200000000, true }, | |
| { 0x200000000, 0x200000000, true }, | |
| { 0x7fffffffffffffff, 0x200000000, true }, | |
| { 0x8000000000000000, 0x200000000, true }, | |
| { 0xffffffffffffffff, 0x200000000, true }, | |
| { 0, 0x7fffffffffffffff, true }, | |
| { 1, 0x7fffffffffffffff, true }, | |
| { 2, 0x7fffffffffffffff, true }, | |
| { 0x7fffffff, 0x7fffffffffffffff, true }, | |
| { 0x80000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffff, 0x7fffffffffffffff, true }, | |
| { 0x100000000, 0x7fffffffffffffff, true }, | |
| { 0x200000000, 0x7fffffffffffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffffffffffff, true }, | |
| { 0x8000000000000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffffffffffff, true }, | |
| { 0, 0x8000000000000000, true }, | |
| { 1, 0x8000000000000000, true }, | |
| { 2, 0x8000000000000000, true }, | |
| { 0x7fffffff, 0x8000000000000000, true }, | |
| { 0x80000000, 0x8000000000000000, true }, | |
| { 0xffffffff, 0x8000000000000000, true }, | |
| { 0x100000000, 0x8000000000000000, true }, | |
| { 0x200000000, 0x8000000000000000, true }, | |
| { 0x7fffffffffffffff, 0x8000000000000000, true }, | |
| { 0x8000000000000000, 0x8000000000000000, false }, | |
| { 0xffffffffffffffff, 0x8000000000000000, false }, | |
| { 0, 0xffffffffffffffff, true }, | |
| { 1, 0xffffffffffffffff, false }, | |
| { 2, 0xffffffffffffffff, false }, | |
| { 0x7fffffff, 0xffffffffffffffff, false }, | |
| { 0x80000000, 0xffffffffffffffff, false }, | |
| { 0xffffffff, 0xffffffffffffffff, false }, | |
| { 0x100000000, 0xffffffffffffffff, false }, | |
| { 0x200000000, 0xffffffffffffffff, false }, | |
| { 0x7fffffffffffffff, 0xffffffffffffffff, false }, | |
| { 0x8000000000000000, 0xffffffffffffffff, false }, | |
| { 0xffffffffffffffff, 0xffffffffffffffff, false }, | |
| }; | |
| template<> TestVector< std::uint64_t, std::int64_t, OpType::Div>::TestVector() : current(0) | |
| { | |
| this->test_cases = uint64_int64; | |
| this->count = COUNTOF(uint64_int64); | |
| } | |
| static const TestCase< std::int64_t, std::uint64_t, OpType::Div2 > int64_uint64_2[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, true }, | |
| { 2, 0, true }, | |
| { 0x7fffffff, 0, true }, | |
| { 0x80000000, 0, true }, | |
| { 0xffffffff, 0, true }, | |
| { 0x100000000, 0, true }, | |
| { 0x200000000, 0, true }, | |
| { 0x7fffffffffffffff, 0, true }, | |
| { 0x8000000000000000, 0, true }, | |
| { 0xffffffffffffffff, 0, true }, | |
| { 0, 1, false }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, true }, | |
| { 0x200000000, 1, true }, | |
| { 0x7fffffffffffffff, 1, true }, | |
| { 0x8000000000000000, 1, true }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, false }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, true }, | |
| { 0x7fffffffffffffff, 2, true }, | |
| { 0x8000000000000000, 2, true }, | |
| { 0xffffffffffffffff, 2, true }, | |
| { 0, 0x7fffffff, false }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0x100000000, 0x7fffffff, true }, | |
| { 0x200000000, 0x7fffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffff, true }, | |
| { 0x8000000000000000, 0x7fffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, false }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0x100000000, 0x80000000, true }, | |
| { 0x200000000, 0x80000000, true }, | |
| { 0x7fffffffffffffff, 0x80000000, true }, | |
| { 0x8000000000000000, 0x80000000, true }, | |
| { 0xffffffffffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, false }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| { 0x100000000, 0xffffffff, true }, | |
| { 0x200000000, 0xffffffff, true }, | |
| { 0x7fffffffffffffff, 0xffffffff, true }, | |
| { 0x8000000000000000, 0xffffffff, true }, | |
| { 0xffffffffffffffff, 0xffffffff, true }, | |
| { 0, 0x100000000, false }, | |
| { 1, 0x100000000, true }, | |
| { 2, 0x100000000, true }, | |
| { 0x7fffffff, 0x100000000, true }, | |
| { 0x80000000, 0x100000000, true }, | |
| { 0xffffffff, 0x100000000, true }, | |
| { 0x100000000, 0x100000000, true }, | |
| { 0x200000000, 0x100000000, true }, | |
| { 0x7fffffffffffffff, 0x100000000, true }, | |
| { 0x8000000000000000, 0x100000000, true }, | |
| { 0xffffffffffffffff, 0x100000000, true }, | |
| { 0, 0x200000000, false }, | |
| { 1, 0x200000000, true }, | |
| { 2, 0x200000000, true }, | |
| { 0x7fffffff, 0x200000000, true }, | |
| { 0x80000000, 0x200000000, true }, | |
| { 0xffffffff, 0x200000000, true }, | |
| { 0x100000000, 0x200000000, true }, | |
| { 0x200000000, 0x200000000, true }, | |
| { 0x7fffffffffffffff, 0x200000000, true }, | |
| { 0x8000000000000000, 0x200000000, true }, | |
| { 0xffffffffffffffff, 0x200000000, true }, | |
| { 0, 0x7fffffffffffffff, false }, | |
| { 1, 0x7fffffffffffffff, true }, | |
| { 2, 0x7fffffffffffffff, true }, | |
| { 0x7fffffff, 0x7fffffffffffffff, true }, | |
| { 0x80000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffff, 0x7fffffffffffffff, true }, | |
| { 0x100000000, 0x7fffffffffffffff, true }, | |
| { 0x200000000, 0x7fffffffffffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffffffffffff, true }, | |
| { 0x8000000000000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffffffffffff, true }, | |
| { 0, 0x8000000000000000, false }, | |
| { 1, 0x8000000000000000, false }, | |
| { 2, 0x8000000000000000, true }, | |
| { 0x7fffffff, 0x8000000000000000, true }, | |
| { 0x80000000, 0x8000000000000000, true }, | |
| { 0xffffffff, 0x8000000000000000, true }, | |
| { 0x100000000, 0x8000000000000000, true }, | |
| { 0x200000000, 0x8000000000000000, true }, | |
| { 0x7fffffffffffffff, 0x8000000000000000, true }, | |
| { 0x8000000000000000, 0x8000000000000000, true }, | |
| { 0xffffffffffffffff, 0x8000000000000000, true }, | |
| { 0, 0xffffffffffffffff, false }, | |
| { 1, 0xffffffffffffffff, false }, | |
| { 2, 0xffffffffffffffff, true }, | |
| { 0x7fffffff, 0xffffffffffffffff, true }, | |
| { 0x80000000, 0xffffffffffffffff, true }, | |
| { 0xffffffff, 0xffffffffffffffff, true }, | |
| { 0x100000000, 0xffffffffffffffff, true }, | |
| { 0x200000000, 0xffffffffffffffff, true }, | |
| { 0x7fffffffffffffff, 0xffffffffffffffff, true }, | |
| { 0x8000000000000000, 0xffffffffffffffff, true }, | |
| { 0xffffffffffffffff, 0xffffffffffffffff, false }, | |
| }; | |
| template<> TestVector< std::int64_t, std::uint64_t, OpType::Div2 >::TestVector() : current(0) | |
| { | |
| this->test_cases = int64_uint64_2; | |
| this->count = COUNTOF(int64_uint64_2); | |
| } | |
| static const TestCase< std::uint64_t, std::int32_t, OpType::Div > uint64_int32[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, true }, | |
| { 0x200000000, 1, true }, | |
| { 0x7fffffffffffffff, 1, true }, | |
| { 0x8000000000000000, 1, true }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, true }, | |
| { 0x7fffffffffffffff, 2, true }, | |
| { 0x8000000000000000, 2, true }, | |
| { 0xffffffffffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0x100000000, 0x7fffffff, true }, | |
| { 0x200000000, 0x7fffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffff, true }, | |
| { 0x8000000000000000, 0x7fffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, false }, | |
| { 0xffffffff, 0x80000000, false }, | |
| { 0x100000000, 0x80000000, false }, | |
| { 0x200000000, 0x80000000, false }, | |
| { 0x7fffffffffffffff, 0x80000000, false }, | |
| { 0x8000000000000000, 0x80000000, false }, | |
| { 0xffffffffffffffff, 0x80000000, false }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, false }, | |
| { 2, 0xffffffff, false }, | |
| { 0x7fffffff, 0xffffffff, false }, | |
| { 0x80000000, 0xffffffff, false }, | |
| { 0xffffffff, 0xffffffff, false }, | |
| { 0x100000000, 0xffffffff, false }, | |
| { 0x200000000, 0xffffffff, false }, | |
| { 0x7fffffffffffffff, 0xffffffff, false }, | |
| { 0x8000000000000000, 0xffffffff, false }, | |
| { 0xffffffffffffffff, 0xffffffff, false }, | |
| }; | |
| template<> TestVector< std::uint64_t, std::int32_t, OpType::Div >::TestVector() : current(0) | |
| { | |
| this->test_cases = uint64_int32; | |
| this->count = COUNTOF(uint64_int32); | |
| } | |
| static const TestCase< std::int32_t, std::uint64_t, OpType::Div2 > int32_uint64_2[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, true }, | |
| { 2, 0, true }, | |
| { 0x7fffffff, 0, true }, | |
| { 0x80000000, 0, true }, | |
| { 0xffffffff, 0, true }, | |
| { 0, 1, false }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0, 2, false }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0, 0x7fffffff, false }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, false }, | |
| { 1, 0x80000000, false }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, false }, | |
| { 1, 0xffffffff, false }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, false }, | |
| { 0, 0x100000000, false }, | |
| { 1, 0x100000000, false }, | |
| { 2, 0x100000000, false }, | |
| { 0x7fffffff, 0x100000000, true }, | |
| { 0x80000000, 0x100000000, true }, | |
| { 0xffffffff, 0x100000000, false }, | |
| { 0, 0x200000000, false }, | |
| { 1, 0x200000000, false }, | |
| { 2, 0x200000000, false }, | |
| { 0x7fffffff, 0x200000000, true }, | |
| { 0x80000000, 0x200000000, true }, | |
| { 0xffffffff, 0x200000000, false }, | |
| { 0, 0x7fffffffffffffff, false }, | |
| { 1, 0x7fffffffffffffff, false }, | |
| { 2, 0x7fffffffffffffff, false }, | |
| { 0x7fffffff, 0x7fffffffffffffff, false }, | |
| { 0x80000000, 0x7fffffffffffffff, false }, | |
| { 0xffffffff, 0x7fffffffffffffff, false }, | |
| { 0, 0x8000000000000000, false }, | |
| { 1, 0x8000000000000000, false }, | |
| { 2, 0x8000000000000000, false }, | |
| { 0x7fffffff, 0x8000000000000000, false }, | |
| { 0x80000000, 0x8000000000000000, false }, | |
| { 0xffffffff, 0x8000000000000000, false }, | |
| { 0, 0xffffffffffffffff, false }, | |
| { 1, 0xffffffffffffffff, false }, | |
| { 2, 0xffffffffffffffff, false }, | |
| { 0x7fffffff, 0xffffffffffffffff, false }, | |
| { 0x80000000, 0xffffffffffffffff, false }, | |
| { 0xffffffff, 0xffffffffffffffff, false }, | |
| }; | |
| template<> TestVector< std::int32_t, std::uint64_t, OpType::Div2 >::TestVector() : current(0) | |
| { | |
| this->test_cases = int32_uint64_2; | |
| this->count = COUNTOF(int32_uint64_2); | |
| } | |
| static const TestCase< std::uint64_t, std::int16_t, OpType::Div > uint64_int16[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, true }, | |
| { 0x200000000, 1, true }, | |
| { 0x7fffffffffffffff, 1, true }, | |
| { 0x8000000000000000, 1, true }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, true }, | |
| { 0x7fffffffffffffff, 2, true }, | |
| { 0x8000000000000000, 2, true }, | |
| { 0xffffffffffffffff, 2, true }, | |
| { 0, -1, true }, | |
| { 1, -1, false }, | |
| { 2, -1, false }, | |
| { 0x7fffffff, -1, false }, | |
| { 0x80000000, -1, false }, | |
| { 0xffffffff, -1, false }, | |
| { 0x100000000, -1, false }, | |
| { 0x200000000, -1, false }, | |
| { 0x7fffffffffffffff, -1, false }, | |
| { 0x8000000000000000, -1, false }, | |
| { 0xffffffffffffffff, -1, false }, | |
| }; | |
| template<> TestVector< std::uint64_t, std::int16_t, OpType::Div >::TestVector() : current(0) | |
| { | |
| this->test_cases = uint64_int16; | |
| this->count = COUNTOF(uint64_int16); | |
| } | |
| static const TestCase< std::int16_t, std::uint64_t, OpType::Div2 > int16_uint64_2[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, true }, | |
| { 2, 0, true }, | |
| { 0x7fff, 0, true }, | |
| { 0x8000, 0, true }, | |
| { 0xffff, 0, true }, | |
| { 0, 1, false }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fff, 1, true }, | |
| { 0x8000, 1, true }, | |
| { 0xffff, 1, true }, | |
| { 0, 2, false }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fff, 2, true }, | |
| { 0x8000, 2, true }, | |
| { 0xffff, 2, true }, | |
| { 0, 0x7fffffff, false }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fff, 0x7fffffff, true }, | |
| { 0x8000, 0x7fffffff, true }, | |
| { 0xffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, false }, | |
| { 1, 0x80000000, false }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fff, 0x80000000, true }, | |
| { 0x8000, 0x80000000, true }, | |
| { 0xffff, 0x80000000, true }, | |
| { 0, 0xffffffff, false }, | |
| { 1, 0xffffffff, false }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fff, 0xffffffff, true }, | |
| { 0x8000, 0xffffffff, true }, | |
| { 0xffff, 0xffffffff, false }, | |
| { 0, 0x100000000, false }, | |
| { 1, 0x100000000, false }, | |
| { 2, 0x100000000, false }, | |
| { 0x7fff, 0x100000000, true }, | |
| { 0x8000, 0x100000000, true }, | |
| { 0xffff, 0x100000000, false }, | |
| { 0, 0x200000000, false }, | |
| { 1, 0x200000000, false }, | |
| { 2, 0x200000000, false }, | |
| { 0x7fff, 0x200000000, true }, | |
| { 0x8000, 0x200000000, true }, | |
| { 0xffff, 0x200000000, false }, | |
| { 0, 0x7fffffffffffffff, false }, | |
| { 1, 0x7fffffffffffffff, false }, | |
| { 2, 0x7fffffffffffffff, false }, | |
| { 0x7fff, 0x7fffffffffffffff, false }, | |
| { 0x8000, 0x7fffffffffffffff, false }, | |
| { 0xffff, 0x7fffffffffffffff, false }, | |
| { 0, 0x8000000000000000, false }, | |
| { 1, 0x8000000000000000, false }, | |
| { 2, 0x8000000000000000, false }, | |
| { 0x7fff, 0x8000000000000000, false }, | |
| { 0x8000, 0x8000000000000000, false }, | |
| { 0xffff, 0x8000000000000000, false }, | |
| { 0, 0xffffffffffffffff, false }, | |
| { 1, 0xffffffffffffffff, false }, | |
| { 2, 0xffffffffffffffff, false }, | |
| { 0x7fff, 0xffffffffffffffff, false }, | |
| { 0x8000, 0xffffffffffffffff, false }, | |
| { 0xffff, 0xffffffffffffffff, false }, | |
| }; | |
| template<> TestVector< std::int16_t, std::uint64_t, OpType::Div2 >::TestVector() : current(0) | |
| { | |
| this->test_cases = int16_uint64_2; | |
| this->count = COUNTOF(int16_uint64_2); | |
| } | |
| static const TestCase< std::uint64_t, std::int8_t, OpType::Div > uint64_int8[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, true }, | |
| { 0x200000000, 1, true }, | |
| { 0x7fffffffffffffff, 1, true }, | |
| { 0x8000000000000000, 1, true }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, true }, | |
| { 0x7fffffffffffffff, 2, true }, | |
| { 0x8000000000000000, 2, true }, | |
| { 0xffffffffffffffff, 2, true }, | |
| { 0, -1, true }, | |
| { 1, -1, false }, | |
| { 2, -1, false }, | |
| { 0x7fffffff, -1, false }, | |
| { 0x80000000, -1, false }, | |
| { 0xffffffff, -1, false }, | |
| { 0x100000000, -1, false }, | |
| { 0x200000000, -1, false }, | |
| { 0x7fffffffffffffff, -1, false }, | |
| { 0x8000000000000000, -1, false }, | |
| { 0xffffffffffffffff, -1, false }, | |
| }; | |
| template<> TestVector< std::uint64_t, std::int8_t, OpType::Div >::TestVector() : current(0) | |
| { | |
| this->test_cases = uint64_int8; | |
| this->count = COUNTOF(uint64_int8); | |
| } | |
| static const TestCase< std::int8_t, std::uint64_t, OpType::Div2 > int8_uint64_2[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, true }, | |
| { 2, 0, true }, | |
| { 0x7f, 0, true }, | |
| { 0x80, 0, true }, | |
| { 0xff, 0, true }, | |
| { 0, 1, false }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7f, 1, true }, | |
| { 0x80, 1, true }, | |
| { 0xff, 1, true }, | |
| { 0, 2, false }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7f, 2, true }, | |
| { 0x80, 2, true }, | |
| { 0xff, 2, true }, | |
| { 0, 0x7fffffff, false }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7f, 0x7fffffff, true }, | |
| { 0x80, 0x7fffffff, true }, | |
| { 0xff, 0x7fffffff, true }, | |
| { 0, 0x80000000, false }, | |
| { 1, 0x80000000, false }, | |
| { 2, 0x80000000, true }, | |
| { 0x7f, 0x80000000, true }, | |
| { 0x80, 0x80000000, true }, | |
| { 0xff, 0x80000000, true }, | |
| { 0, 0xffffffff, false }, | |
| { 1, 0xffffffff, false }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7f, 0xffffffff, true }, | |
| { 0x80, 0xffffffff, true }, | |
| { 0xff, 0xffffffff, false }, | |
| { 0, 0x100000000, false }, | |
| { 1, 0x100000000, false }, | |
| { 2, 0x100000000, false }, | |
| { 0x7f, 0x100000000, true }, | |
| { 0x80, 0x100000000, true }, | |
| { 0xff, 0x100000000, false }, | |
| { 0, 0x200000000, false }, | |
| { 1, 0x200000000, false }, | |
| { 2, 0x200000000, false }, | |
| { 0x7f, 0x200000000, true }, | |
| { 0x80, 0x200000000, true }, | |
| { 0xff, 0x200000000, false }, | |
| { 0, 0x7fffffffffffffff, false }, | |
| { 1, 0x7fffffffffffffff, false }, | |
| { 2, 0x7fffffffffffffff, false }, | |
| { 0x7f, 0x7fffffffffffffff, false }, | |
| { 0x80, 0x7fffffffffffffff, false }, | |
| { 0xff, 0x7fffffffffffffff, false }, | |
| { 0, 0x8000000000000000, false }, | |
| { 1, 0x8000000000000000, false }, | |
| { 2, 0x8000000000000000, false }, | |
| { 0x7f, 0x8000000000000000, false }, | |
| { 0x80, 0x8000000000000000, false }, | |
| { 0xff, 0x8000000000000000, false }, | |
| { 0, 0xffffffffffffffff, false }, | |
| { 1, 0xffffffffffffffff, false }, | |
| { 2, 0xffffffffffffffff, false }, | |
| { 0x7f, 0xffffffffffffffff, false }, | |
| { 0x80, 0xffffffffffffffff, false }, | |
| { 0xff, 0xffffffffffffffff, false }, | |
| }; | |
| template<> TestVector< std::int8_t, std::uint64_t, OpType::Div2 >::TestVector() : current(0) | |
| { | |
| this->test_cases = int8_uint64_2; | |
| this->count = COUNTOF(int8_uint64_2); | |
| } | |
| static const TestCase< std::int64_t, std::int64_t, OpType::Div > int64_int64[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, true }, | |
| { 0x200000000, 1, true }, | |
| { 0x7fffffffffffffff, 1, true }, | |
| { 0x8000000000000000, 1, true }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, true }, | |
| { 0x7fffffffffffffff, 2, true }, | |
| { 0x8000000000000000, 2, true }, | |
| { 0xffffffffffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0x100000000, 0x7fffffff, true }, | |
| { 0x200000000, 0x7fffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffff, true }, | |
| { 0x8000000000000000, 0x7fffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0x100000000, 0x80000000, true }, | |
| { 0x200000000, 0x80000000, true }, | |
| { 0x7fffffffffffffff, 0x80000000, true }, | |
| { 0x8000000000000000, 0x80000000, true }, | |
| { 0xffffffffffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| { 0x100000000, 0xffffffff, true }, | |
| { 0x200000000, 0xffffffff, true }, | |
| { 0x7fffffffffffffff, 0xffffffff, true }, | |
| { 0x8000000000000000, 0xffffffff, true }, | |
| { 0xffffffffffffffff, 0xffffffff, true }, | |
| { 0, 0x100000000, true }, | |
| { 1, 0x100000000, true }, | |
| { 2, 0x100000000, true }, | |
| { 0x7fffffff, 0x100000000, true }, | |
| { 0x80000000, 0x100000000, true }, | |
| { 0xffffffff, 0x100000000, true }, | |
| { 0x100000000, 0x100000000, true }, | |
| { 0x200000000, 0x100000000, true }, | |
| { 0x7fffffffffffffff, 0x100000000, true }, | |
| { 0x8000000000000000, 0x100000000, true }, | |
| { 0xffffffffffffffff, 0x100000000, true }, | |
| { 0, 0x200000000, true }, | |
| { 1, 0x200000000, true }, | |
| { 2, 0x200000000, true }, | |
| { 0x7fffffff, 0x200000000, true }, | |
| { 0x80000000, 0x200000000, true }, | |
| { 0xffffffff, 0x200000000, true }, | |
| { 0x100000000, 0x200000000, true }, | |
| { 0x200000000, 0x200000000, true }, | |
| { 0x7fffffffffffffff, 0x200000000, true }, | |
| { 0x8000000000000000, 0x200000000, true }, | |
| { 0xffffffffffffffff, 0x200000000, true }, | |
| { 0, 0x7fffffffffffffff, true }, | |
| { 1, 0x7fffffffffffffff, true }, | |
| { 2, 0x7fffffffffffffff, true }, | |
| { 0x7fffffff, 0x7fffffffffffffff, true }, | |
| { 0x80000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffff, 0x7fffffffffffffff, true }, | |
| { 0x100000000, 0x7fffffffffffffff, true }, | |
| { 0x200000000, 0x7fffffffffffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffffffffffff, true }, | |
| { 0x8000000000000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffffffffffff, true }, | |
| { 0, 0x8000000000000000, true }, | |
| { 1, 0x8000000000000000, true }, | |
| { 2, 0x8000000000000000, true }, | |
| { 0x7fffffff, 0x8000000000000000, true }, | |
| { 0x80000000, 0x8000000000000000, true }, | |
| { 0xffffffff, 0x8000000000000000, true }, | |
| { 0x100000000, 0x8000000000000000, true }, | |
| { 0x200000000, 0x8000000000000000, true }, | |
| { 0x7fffffffffffffff, 0x8000000000000000, true }, | |
| { 0x8000000000000000, 0x8000000000000000, true }, | |
| { 0xffffffffffffffff, 0x8000000000000000, true }, | |
| { 0, 0xffffffffffffffff, true }, | |
| { 1, 0xffffffffffffffff, true }, | |
| { 2, 0xffffffffffffffff, true }, | |
| { 0x7fffffff, 0xffffffffffffffff, true }, | |
| { 0x80000000, 0xffffffffffffffff, true }, | |
| { 0xffffffff, 0xffffffffffffffff, true }, | |
| { 0x100000000, 0xffffffffffffffff, true }, | |
| { 0x200000000, 0xffffffffffffffff, true }, | |
| { 0x7fffffffffffffff, 0xffffffffffffffff, true }, | |
| { 0x8000000000000000, 0xffffffffffffffff, false }, | |
| { 0xffffffffffffffff, 0xffffffffffffffff, true }, | |
| }; | |
| template<> TestVector< std::int64_t, std::int64_t, OpType::Div >::TestVector() : current(0) | |
| { | |
| this->test_cases = int64_int64; | |
| this->count = COUNTOF(int64_int64); | |
| } | |
| static const TestCase< std::int64_t, std::int32_t, OpType::Div > int64_int32[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, true }, | |
| { 0x200000000, 1, true }, | |
| { 0x7fffffffffffffff, 1, true }, | |
| { 0x8000000000000000, 1, true }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, true }, | |
| { 0x7fffffffffffffff, 2, true }, | |
| { 0x8000000000000000, 2, true }, | |
| { 0xffffffffffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0x100000000, 0x7fffffff, true }, | |
| { 0x200000000, 0x7fffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffff, true }, | |
| { 0x8000000000000000, 0x7fffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0x100000000, 0x80000000, true }, | |
| { 0x200000000, 0x80000000, true }, | |
| { 0x7fffffffffffffff, 0x80000000, true }, | |
| { 0x8000000000000000, 0x80000000, true }, | |
| { 0xffffffffffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| { 0x100000000, 0xffffffff, true }, | |
| { 0x200000000, 0xffffffff, true }, | |
| { 0x7fffffffffffffff, 0xffffffff, true }, | |
| { 0x8000000000000000, 0xffffffff, false }, | |
| { 0xffffffffffffffff, 0xffffffff, true }, | |
| }; | |
| template<> TestVector< std::int64_t, std::int32_t, OpType::Div >::TestVector() : current(0) | |
| { | |
| this->test_cases = int64_int32; | |
| this->count = COUNTOF(int64_int32); | |
| } | |
| static const TestCase< std::int64_t, std::int32_t, OpType::Div2 > int64_int32_2[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, false }, | |
| { 0xffffffff, 1, false }, | |
| { 0x100000000, 1, false }, | |
| { 0x200000000, 1, false }, | |
| { 0x7fffffffffffffff, 1, false }, | |
| { 0x8000000000000000, 1, false }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, false }, | |
| { 0x200000000, 2, false }, | |
| { 0x7fffffffffffffff, 2, false }, | |
| { 0x8000000000000000, 2, false }, | |
| { 0xffffffffffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0x100000000, 0x7fffffff, true }, | |
| { 0x200000000, 0x7fffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffff, false }, | |
| { 0x8000000000000000, 0x7fffffff, false }, | |
| { 0xffffffffffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0x100000000, 0x80000000, true }, | |
| { 0x200000000, 0x80000000, true }, | |
| { 0x7fffffffffffffff, 0x80000000, false }, | |
| { 0x8000000000000000, 0x80000000, false }, | |
| { 0xffffffffffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, false }, | |
| { 0x100000000, 0xffffffff, false }, | |
| { 0x200000000, 0xffffffff, false }, | |
| { 0x7fffffffffffffff, 0xffffffff, false }, | |
| { 0x8000000000000000, 0xffffffff, false }, | |
| { 0xffffffffffffffff, 0xffffffff, true }, | |
| }; | |
| template<> TestVector< std::int64_t, std::int32_t, OpType::Div2 >::TestVector() : current(0) | |
| { | |
| this->test_cases = int64_int32_2; | |
| this->count = COUNTOF(int64_int32_2); | |
| } | |
| static const TestCase< std::int64_t, std::uint64_t, OpType::Div > int64_uint64[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, true }, | |
| { 0x200000000, 1, true }, | |
| { 0x7fffffffffffffff, 1, true }, | |
| { 0x8000000000000000, 1, true }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, true }, | |
| { 0x7fffffffffffffff, 2, true }, | |
| { 0x8000000000000000, 2, true }, | |
| { 0xffffffffffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0x100000000, 0x7fffffff, true }, | |
| { 0x200000000, 0x7fffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffff, true }, | |
| { 0x8000000000000000, 0x7fffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0x100000000, 0x80000000, true }, | |
| { 0x200000000, 0x80000000, true }, | |
| { 0x7fffffffffffffff, 0x80000000, true }, | |
| { 0x8000000000000000, 0x80000000, true }, | |
| { 0xffffffffffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| { 0x100000000, 0xffffffff, true }, | |
| { 0x200000000, 0xffffffff, true }, | |
| { 0x7fffffffffffffff, 0xffffffff, true }, | |
| { 0x8000000000000000, 0xffffffff, true }, | |
| { 0xffffffffffffffff, 0xffffffff, true }, | |
| { 0, 0x100000000, true }, | |
| { 1, 0x100000000, true }, | |
| { 2, 0x100000000, true }, | |
| { 0x7fffffff, 0x100000000, true }, | |
| { 0x80000000, 0x100000000, true }, | |
| { 0xffffffff, 0x100000000, true }, | |
| { 0x100000000, 0x100000000, true }, | |
| { 0x200000000, 0x100000000, true }, | |
| { 0x7fffffffffffffff, 0x100000000, true }, | |
| { 0x8000000000000000, 0x100000000, true }, | |
| { 0xffffffffffffffff, 0x100000000, true }, | |
| { 0, 0x200000000, true }, | |
| { 1, 0x200000000, true }, | |
| { 2, 0x200000000, true }, | |
| { 0x7fffffff, 0x200000000, true }, | |
| { 0x80000000, 0x200000000, true }, | |
| { 0xffffffff, 0x200000000, true }, | |
| { 0x100000000, 0x200000000, true }, | |
| { 0x200000000, 0x200000000, true }, | |
| { 0x7fffffffffffffff, 0x200000000, true }, | |
| { 0x8000000000000000, 0x200000000, true }, | |
| { 0xffffffffffffffff, 0x200000000, true }, | |
| { 0, 0x7fffffffffffffff, true }, | |
| { 1, 0x7fffffffffffffff, true }, | |
| { 2, 0x7fffffffffffffff, true }, | |
| { 0x7fffffff, 0x7fffffffffffffff, true }, | |
| { 0x80000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffff, 0x7fffffffffffffff, true }, | |
| { 0x100000000, 0x7fffffffffffffff, true }, | |
| { 0x200000000, 0x7fffffffffffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffffffffffff, true }, | |
| { 0x8000000000000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffffffffffff, true }, | |
| { 0, 0x8000000000000000, true }, | |
| { 1, 0x8000000000000000, true }, | |
| { 2, 0x8000000000000000, true }, | |
| { 0x7fffffff, 0x8000000000000000, true }, | |
| { 0x80000000, 0x8000000000000000, true }, | |
| { 0xffffffff, 0x8000000000000000, true }, | |
| { 0x100000000, 0x8000000000000000, true }, | |
| { 0x200000000, 0x8000000000000000, true }, | |
| { 0x7fffffffffffffff, 0x8000000000000000, true }, | |
| { 0x8000000000000000, 0x8000000000000000, true }, | |
| { 0xffffffffffffffff, 0x8000000000000000, true }, | |
| { 0, 0xffffffffffffffff, true }, | |
| { 1, 0xffffffffffffffff, true }, | |
| { 2, 0xffffffffffffffff, true }, | |
| { 0x7fffffff, 0xffffffffffffffff, true }, | |
| { 0x80000000, 0xffffffffffffffff, true }, | |
| { 0xffffffff, 0xffffffffffffffff, true }, | |
| { 0x100000000, 0xffffffffffffffff, true }, | |
| { 0x200000000, 0xffffffffffffffff, true }, | |
| { 0x7fffffffffffffff, 0xffffffffffffffff, true }, | |
| { 0x8000000000000000, 0xffffffffffffffff, true }, | |
| { 0xffffffffffffffff, 0xffffffffffffffff, true }, | |
| }; | |
| template<> TestVector< std::int64_t, std::uint64_t, OpType::Div >::TestVector() : current(0) | |
| { | |
| this->test_cases = int64_uint64; | |
| this->count = COUNTOF(int64_uint64); | |
| } | |
| static const TestCase< std::uint64_t, std::int64_t, OpType::Div2 > uint64_int64_2[] = | |
| { | |
| {0, 0, false }, | |
| {0, 1, false }, | |
| {0, 2, false }, | |
| {0, 0x7fffffff, false }, | |
| {0, 0x80000000, false }, | |
| {0, 0xffffffff, false }, | |
| {0, 0x100000000, false }, | |
| {0, 0x200000000, false }, | |
| {0, 0x7fffffffffffffff, false }, | |
| {0, 0x8000000000000000, false }, | |
| {0, 0xffffffffffffffff, false }, | |
| {1, 0, true }, | |
| {1, 1, true }, | |
| {1, 2, true }, | |
| {1, 0x7fffffff, true }, | |
| {1, 0x80000000, true }, | |
| {1, 0xffffffff, true }, | |
| {1, 0x100000000, true }, | |
| {1, 0x200000000, true }, | |
| {1, 0x7fffffffffffffff, true }, | |
| {1, 0x8000000000000000, false }, | |
| {1, 0xffffffffffffffff, false }, | |
| {2, 0, true }, | |
| {2, 1, true }, | |
| {2, 2, true }, | |
| {2, 0x7fffffff, true }, | |
| {2, 0x80000000, true }, | |
| {2, 0xffffffff, true }, | |
| {2, 0x100000000, true }, | |
| {2, 0x200000000, true }, | |
| {2, 0x7fffffffffffffff, true }, | |
| {2, 0x8000000000000000, false }, | |
| {2, 0xffffffffffffffff, true }, | |
| {0x7fffffff, 0, true }, | |
| {0x7fffffff, 1, true }, | |
| {0x7fffffff, 2, true }, | |
| {0x7fffffff, 0x7fffffff, true }, | |
| {0x7fffffff, 0x80000000, true }, | |
| {0x7fffffff, 0xffffffff, true }, | |
| {0x7fffffff, 0x100000000, true }, | |
| {0x7fffffff, 0x200000000, true }, | |
| {0x7fffffff, 0x7fffffffffffffff, true }, | |
| {0x7fffffff, 0x8000000000000000, false }, | |
| {0x7fffffff, 0xffffffffffffffff, true }, | |
| {0x80000000, 0, true }, | |
| {0x80000000, 1, true }, | |
| {0x80000000, 2, true }, | |
| {0x80000000, 0x7fffffff, true }, | |
| {0x80000000, 0x80000000, true }, | |
| {0x80000000, 0xffffffff, true }, | |
| {0x80000000, 0x100000000, true }, | |
| {0x80000000, 0x200000000, true }, | |
| {0x80000000, 0x7fffffffffffffff, true }, | |
| {0x80000000, 0x8000000000000000, false }, | |
| {0x80000000, 0xffffffffffffffff, true }, | |
| {0xffffffff, 0, true }, | |
| {0xffffffff, 1, true }, | |
| {0xffffffff, 2, true }, | |
| {0xffffffff, 0x7fffffff, true }, | |
| {0xffffffff, 0x80000000, true }, | |
| {0xffffffff, 0xffffffff, true }, | |
| {0xffffffff, 0x100000000, true }, | |
| {0xffffffff, 0x200000000, true }, | |
| {0xffffffff, 0x7fffffffffffffff, true }, | |
| {0xffffffff, 0x8000000000000000, false }, | |
| {0xffffffff, 0xffffffffffffffff, true }, | |
| {0x100000000, 0, true }, | |
| {0x100000000, 1, true }, | |
| {0x100000000, 2, true }, | |
| {0x100000000, 0x7fffffff, true }, | |
| {0x100000000, 0x80000000, true }, | |
| {0x100000000, 0xffffffff, true }, | |
| {0x100000000, 0x100000000, true }, | |
| {0x100000000, 0x200000000, true }, | |
| {0x100000000, 0x7fffffffffffffff, true }, | |
| {0x100000000, 0x8000000000000000, false }, | |
| {0x100000000, 0xffffffffffffffff, true }, | |
| {0x200000000, 0, true }, | |
| {0x200000000, 1, true }, | |
| {0x200000000, 2, true }, | |
| {0x200000000, 0x7fffffff, true }, | |
| {0x200000000, 0x80000000, true }, | |
| {0x200000000, 0xffffffff, true }, | |
| {0x200000000, 0x100000000, true }, | |
| {0x200000000, 0x200000000, true }, | |
| {0x200000000, 0x7fffffffffffffff, true }, | |
| {0x200000000, 0x8000000000000000, false }, | |
| {0x200000000, 0xffffffffffffffff, true }, | |
| {0x7fffffffffffffff, 0, true }, | |
| {0x7fffffffffffffff, 1, true }, | |
| {0x7fffffffffffffff, 2, true }, | |
| {0x7fffffffffffffff, 0x7fffffff, true }, | |
| {0x7fffffffffffffff, 0x80000000, true }, | |
| {0x7fffffffffffffff, 0xffffffff, true }, | |
| {0x7fffffffffffffff, 0x100000000, true }, | |
| {0x7fffffffffffffff, 0x200000000, true }, | |
| {0x7fffffffffffffff, 0x7fffffffffffffff, true }, | |
| {0x7fffffffffffffff, 0x8000000000000000, false }, | |
| {0x7fffffffffffffff, 0xffffffffffffffff, true }, | |
| {0x8000000000000000, 0, true }, | |
| {0x8000000000000000, 1, true }, | |
| {0x8000000000000000, 2, true }, | |
| {0x8000000000000000, 0x7fffffff, true }, | |
| {0x8000000000000000, 0x80000000, true }, | |
| {0x8000000000000000, 0xffffffff, true }, | |
| {0x8000000000000000, 0x100000000, true }, | |
| {0x8000000000000000, 0x200000000, true }, | |
| {0x8000000000000000, 0x7fffffffffffffff, true }, | |
| {0x8000000000000000, 0x8000000000000000, false }, | |
| {0x8000000000000000, 0xffffffffffffffff, true }, | |
| {0xffffffffffffffff, 0, true }, | |
| {0xffffffffffffffff, 1, true }, | |
| {0xffffffffffffffff, 2, true }, | |
| {0xffffffffffffffff, 0x7fffffff, true }, | |
| {0xffffffffffffffff, 0x80000000, true }, | |
| {0xffffffffffffffff, 0xffffffff, true }, | |
| {0xffffffffffffffff, 0x100000000, true }, | |
| {0xffffffffffffffff, 0x200000000, true }, | |
| {0xffffffffffffffff, 0x7fffffffffffffff, true }, | |
| {0xffffffffffffffff, 0x8000000000000000, true }, | |
| {0xffffffffffffffff, 0xffffffffffffffff, true }, | |
| }; | |
| template<> TestVector< std::uint64_t, std::int64_t, OpType::Div2 >::TestVector() : current(0) | |
| { | |
| this->test_cases = uint64_int64_2; | |
| this->count = COUNTOF(uint64_int64_2); | |
| } | |
| static const TestCase< std::int64_t, std::uint32_t, OpType::Div > int64_uint32[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, true }, | |
| { 0x200000000, 1, true }, | |
| { 0x7fffffffffffffff, 1, true }, | |
| { 0x8000000000000000, 1, true }, | |
| { 0xffffffffffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, true }, | |
| { 0x7fffffffffffffff, 2, true }, | |
| { 0x8000000000000000, 2, true }, | |
| { 0xffffffffffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0x100000000, 0x7fffffff, true }, | |
| { 0x200000000, 0x7fffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffff, true }, | |
| { 0x8000000000000000, 0x7fffffff, true }, | |
| { 0xffffffffffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0x100000000, 0x80000000, true }, | |
| { 0x200000000, 0x80000000, true }, | |
| { 0x7fffffffffffffff, 0x80000000, true }, | |
| { 0x8000000000000000, 0x80000000, true }, | |
| { 0xffffffffffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| { 0x100000000, 0xffffffff, true }, | |
| { 0x200000000, 0xffffffff, true }, | |
| { 0x7fffffffffffffff, 0xffffffff, true }, | |
| { 0x8000000000000000, 0xffffffff, true }, | |
| { 0xffffffffffffffff, 0xffffffff, true }, | |
| }; | |
| template<> TestVector< std::int64_t, std::uint32_t, OpType::Div >::TestVector() : current(0) | |
| { | |
| this->test_cases = int64_uint32; | |
| this->count = COUNTOF(int64_uint32); | |
| } | |
| static const TestCase< std::int64_t, std::uint32_t, OpType::Div2 > int64_uint32_2[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0x100000000, 0, false }, | |
| { 0x200000000, 0, false }, | |
| { 0x7fffffffffffffff, 0, false }, | |
| { 0x8000000000000000, 0, false }, | |
| { 0xffffffffffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0x100000000, 1, false }, | |
| { 0x200000000, 1, false }, | |
| { 0x7fffffffffffffff, 1, false }, | |
| { 0x8000000000000000, 1, false }, | |
| { 0xffffffffffffffff, 1, false }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0x100000000, 2, true }, | |
| { 0x200000000, 2, false }, | |
| { 0x7fffffffffffffff, 2, false }, | |
| { 0x8000000000000000, 2, false }, | |
| { 0xffffffffffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0x100000000, 0x7fffffff, true }, | |
| { 0x200000000, 0x7fffffff, true }, | |
| { 0x7fffffffffffffff, 0x7fffffff, false }, | |
| { 0x8000000000000000, 0x7fffffff, false }, | |
| { 0xffffffffffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0x100000000, 0x80000000, true }, | |
| { 0x200000000, 0x80000000, true }, | |
| { 0x7fffffffffffffff, 0x80000000, true }, | |
| { 0x8000000000000000, 0x80000000, false }, | |
| { 0xffffffffffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| { 0x100000000, 0xffffffff, true }, | |
| { 0x200000000, 0xffffffff, true }, | |
| { 0x7fffffffffffffff, 0xffffffff, true }, | |
| { 0x8000000000000000, 0xffffffff, false }, | |
| { 0xffffffffffffffff, 0xffffffff, true }, | |
| }; | |
| template<> TestVector< std::int64_t, std::uint32_t, OpType::Div2 >::TestVector() : current(0) | |
| { | |
| this->test_cases = int64_uint32_2; | |
| this->count = COUNTOF(int64_uint32_2); | |
| } | |
| static const TestCase< std::uint32_t, std::uint64_t, OpType::Div > uint32_uint64[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| { 0, 0x100000000, true }, | |
| { 1, 0x100000000, true }, | |
| { 2, 0x100000000, true }, | |
| { 0x7fffffff, 0x100000000, true }, | |
| { 0x80000000, 0x100000000, true }, | |
| { 0xffffffff, 0x100000000, true }, | |
| { 0, 0x200000000, true }, | |
| { 1, 0x200000000, true }, | |
| { 2, 0x200000000, true }, | |
| { 0x7fffffff, 0x200000000, true }, | |
| { 0x80000000, 0x200000000, true }, | |
| { 0xffffffff, 0x200000000, true }, | |
| { 0, 0x7fffffffffffffff, true }, | |
| { 1, 0x7fffffffffffffff, true }, | |
| { 2, 0x7fffffffffffffff, true }, | |
| { 0x7fffffff, 0x7fffffffffffffff, true }, | |
| { 0x80000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffff, 0x7fffffffffffffff, true }, | |
| { 0, 0x8000000000000000, true }, | |
| { 1, 0x8000000000000000, true }, | |
| { 2, 0x8000000000000000, true }, | |
| { 0x7fffffff, 0x8000000000000000, true }, | |
| { 0x80000000, 0x8000000000000000, true }, | |
| { 0xffffffff, 0x8000000000000000, true }, | |
| { 0, 0xffffffffffffffff, true }, | |
| { 1, 0xffffffffffffffff, true }, | |
| { 2, 0xffffffffffffffff, true }, | |
| { 0x7fffffff, 0xffffffffffffffff, true }, | |
| { 0x80000000, 0xffffffffffffffff, true }, | |
| { 0xffffffff, 0xffffffffffffffff, true }, | |
| }; | |
| template<> TestVector< std::uint32_t, std::uint64_t, OpType::Div>::TestVector() : current(0) | |
| { | |
| this->test_cases = uint32_uint64; | |
| this->count = COUNTOF(uint32_uint64); | |
| } | |
| static const TestCase< std::uint32_t, std::uint32_t, OpType::Div > uint32_uint32[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| }; | |
| template<> TestVector< std::uint32_t, std::uint32_t, OpType::Div>::TestVector() : current(0) | |
| { | |
| this->test_cases = uint32_uint32; | |
| this->count = COUNTOF(uint32_uint32); | |
| } | |
| static const TestCase< std::uint32_t, std::int64_t, OpType::Div > uint32_int64[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| { 0, 0x100000000, true }, | |
| { 1, 0x100000000, true }, | |
| { 2, 0x100000000, true }, | |
| { 0x7fffffff, 0x100000000, true }, | |
| { 0x80000000, 0x100000000, true }, | |
| { 0xffffffff, 0x100000000, true }, | |
| { 0, 0x200000000, true }, | |
| { 1, 0x200000000, true }, | |
| { 2, 0x200000000, true }, | |
| { 0x7fffffff, 0x200000000, true }, | |
| { 0x80000000, 0x200000000, true }, | |
| { 0xffffffff, 0x200000000, true }, | |
| { 0, 0x7fffffffffffffff, true }, | |
| { 1, 0x7fffffffffffffff, true }, | |
| { 2, 0x7fffffffffffffff, true }, | |
| { 0x7fffffff, 0x7fffffffffffffff, true }, | |
| { 0x80000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffff, 0x7fffffffffffffff, true }, | |
| { 0, 0x8000000000000000, true }, | |
| { 1, 0x8000000000000000, true }, | |
| { 2, 0x8000000000000000, true }, | |
| { 0x7fffffff, 0x8000000000000000, true }, | |
| { 0x80000000, 0x8000000000000000, true }, | |
| { 0xffffffff, 0x8000000000000000, true }, | |
| { 0, 0xffffffffffffffff, true }, | |
| { 1, 0xffffffffffffffff, false }, | |
| { 2, 0xffffffffffffffff, false }, | |
| { 0x7fffffff, 0xffffffffffffffff, false }, | |
| { 0x80000000, 0xffffffffffffffff, false }, | |
| { 0xffffffff, 0xffffffffffffffff, false }, | |
| }; | |
| template<> TestVector< std::uint32_t, std::int64_t, OpType::Div>::TestVector() : current(0) | |
| { | |
| this->test_cases = uint32_int64; | |
| this->count = COUNTOF(uint32_int64); | |
| } | |
| static const TestCase< std::uint32_t, std::int32_t, OpType::Div > uint32_int32[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, false }, | |
| { 0xffffffff, 0x80000000, false }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, false }, | |
| { 2, 0xffffffff, false }, | |
| { 0x7fffffff, 0xffffffff, false }, | |
| { 0x80000000, 0xffffffff, false }, | |
| { 0xffffffff, 0xffffffff, false }, | |
| }; | |
| template<> TestVector< std::uint32_t, std::int32_t, OpType::Div>::TestVector() : current(0) | |
| { | |
| this->test_cases = uint32_int32; | |
| this->count = COUNTOF(uint32_int32); | |
| } | |
| static const TestCase< std::int32_t, std::uint64_t, OpType::Div > int32_uint64[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| { 0, 0x100000000, true }, | |
| { 1, 0x100000000, true }, | |
| { 2, 0x100000000, true }, | |
| { 0x7fffffff, 0x100000000, true }, | |
| { 0x80000000, 0x100000000, true }, | |
| { 0xffffffff, 0x100000000, true }, | |
| { 0, 0x200000000, true }, | |
| { 1, 0x200000000, true }, | |
| { 2, 0x200000000, true }, | |
| { 0x7fffffff, 0x200000000, true }, | |
| { 0x80000000, 0x200000000, true }, | |
| { 0xffffffff, 0x200000000, true }, | |
| { 0, 0x7fffffffffffffff, true }, | |
| { 1, 0x7fffffffffffffff, true }, | |
| { 2, 0x7fffffffffffffff, true }, | |
| { 0x7fffffff, 0x7fffffffffffffff, true }, | |
| { 0x80000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffff, 0x7fffffffffffffff, true }, | |
| { 0, 0x8000000000000000, true }, | |
| { 1, 0x8000000000000000, true }, | |
| { 2, 0x8000000000000000, true }, | |
| { 0x7fffffff, 0x8000000000000000, true }, | |
| { 0x80000000, 0x8000000000000000, true }, | |
| { 0xffffffff, 0x8000000000000000, true }, | |
| { 0, 0xffffffffffffffff, true }, | |
| { 1, 0xffffffffffffffff, true }, | |
| { 2, 0xffffffffffffffff, true }, | |
| { 0x7fffffff, 0xffffffffffffffff, true }, | |
| { 0x80000000, 0xffffffffffffffff, true }, | |
| { 0xffffffff, 0xffffffffffffffff, true }, | |
| }; | |
| template<> TestVector< std::int32_t, std::uint64_t, OpType::Div>::TestVector() : current(0) | |
| { | |
| this->test_cases = int32_uint64; | |
| this->count = COUNTOF(int32_uint64); | |
| } | |
| static const TestCase< std::int32_t, std::uint32_t, OpType::Div > int32_uint32[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| }; | |
| template<> TestVector< std::int32_t, std::uint32_t, OpType::Div>::TestVector() : current(0) | |
| { | |
| this->test_cases = int32_uint32; | |
| this->count = COUNTOF(int32_uint32); | |
| } | |
| static const TestCase< std::int32_t, std::int64_t, OpType::Div > int32_int64[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, true }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| { 0, 0x100000000, true }, | |
| { 1, 0x100000000, true }, | |
| { 2, 0x100000000, true }, | |
| { 0x7fffffff, 0x100000000, true }, | |
| { 0x80000000, 0x100000000, true }, | |
| { 0xffffffff, 0x100000000, true }, | |
| { 0, 0x200000000, true }, | |
| { 1, 0x200000000, true }, | |
| { 2, 0x200000000, true }, | |
| { 0x7fffffff, 0x200000000, true }, | |
| { 0x80000000, 0x200000000, true }, | |
| { 0xffffffff, 0x200000000, true }, | |
| { 0, 0x7fffffffffffffff, true }, | |
| { 1, 0x7fffffffffffffff, true }, | |
| { 2, 0x7fffffffffffffff, true }, | |
| { 0x7fffffff, 0x7fffffffffffffff, true }, | |
| { 0x80000000, 0x7fffffffffffffff, true }, | |
| { 0xffffffff, 0x7fffffffffffffff, true }, | |
| { 0, 0x8000000000000000, true }, | |
| { 1, 0x8000000000000000, true }, | |
| { 2, 0x8000000000000000, true }, | |
| { 0x7fffffff, 0x8000000000000000, true }, | |
| { 0x80000000, 0x8000000000000000, true }, | |
| { 0xffffffff, 0x8000000000000000, true }, | |
| { 0, 0xffffffffffffffff, true }, | |
| { 1, 0xffffffffffffffff, true }, | |
| { 2, 0xffffffffffffffff, true }, | |
| { 0x7fffffff, 0xffffffffffffffff, true }, | |
| { 0x80000000, 0xffffffffffffffff, false }, | |
| { 0xffffffff, 0xffffffffffffffff, true }, | |
| }; | |
| template<> TestVector< std::int32_t, std::int64_t, OpType::Div>::TestVector() : current(0) | |
| { | |
| this->test_cases = int32_int64; | |
| this->count = COUNTOF(int32_int64); | |
| } | |
| static const TestCase< std::int32_t, std::int32_t, OpType::Div > int32_int32[] = | |
| { | |
| { 0, 0, false }, | |
| { 1, 0, false }, | |
| { 2, 0, false }, | |
| { 0x7fffffff, 0, false }, | |
| { 0x80000000, 0, false }, | |
| { 0xffffffff, 0, false }, | |
| { 0, 1, true }, | |
| { 1, 1, true }, | |
| { 2, 1, true }, | |
| { 0x7fffffff, 1, true }, | |
| { 0x80000000, 1, true }, | |
| { 0xffffffff, 1, true }, | |
| { 0, 2, true }, | |
| { 1, 2, true }, | |
| { 2, 2, true }, | |
| { 0x7fffffff, 2, true }, | |
| { 0x80000000, 2, true }, | |
| { 0xffffffff, 2, true }, | |
| { 0, 0x7fffffff, true }, | |
| { 1, 0x7fffffff, true }, | |
| { 2, 0x7fffffff, true }, | |
| { 0x7fffffff, 0x7fffffff, true }, | |
| { 0x80000000, 0x7fffffff, true }, | |
| { 0xffffffff, 0x7fffffff, true }, | |
| { 0, 0x80000000, true }, | |
| { 1, 0x80000000, true }, | |
| { 2, 0x80000000, true }, | |
| { 0x7fffffff, 0x80000000, true }, | |
| { 0x80000000, 0x80000000, true }, | |
| { 0xffffffff, 0x80000000, true }, | |
| { 0, 0xffffffff, true }, | |
| { 1, 0xffffffff, true }, | |
| { 2, 0xffffffff, true }, | |
| { 0x7fffffff, 0xffffffff, true }, | |
| { 0x80000000, 0xffffffff, false }, | |
| { 0xffffffff, 0xffffffff, true }, | |
| }; | |
| template<> TestVector< std::int32_t, std::int32_t, OpType::Div>::TestVector() : current(0) | |
| { | |
| this->test_cases = int32_int32; | |
| this->count = COUNTOF(int32_int32); | |
| } |