Skip to content

Instantly share code, notes, and snippets.

@vcoracolombo
Created October 5, 2022 12:49
Show Gist options
  • Save vcoracolombo/6ad884a402f1bba531e2e3da7e196656 to your computer and use it in GitHub Desktop.
Save vcoracolombo/6ad884a402f1bba531e2e3da7e196656 to your computer and use it in GitHub Desktop.
#include <stdint.h>
#define TEST(H1) \
do { \
uint64_t frt; \
asm("fsqrt %0, %1\n\tfmadd %0, %1, %0, %1" : "=f"(frt) : "f"(H1)); \
} while (0)
#define TEST_ALL(H1, L1, H2, L2) \
do { \
TEST(H1);\
TEST(L1);\
TEST(H2);\
TEST(L2);\
} while(0)
int main(void)
{
int i = 0;
__builtin_mtfsb1(46 - 32); __builtin_mtfsb1(38 - 32); __builtin_mtfsb1(32 - 32);
for (; i < 1000000; ++i) {
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFF1234567ABCDULL, 0x0000000000000000ULL, 0x8000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x0000B486000037F8ULL, 0x000C304E00069660ULL);
TEST_ALL(0x8500ed12895dcc70ULL, 0x2efddec64ef00345ULL, 0x32abd4d0c72f300bULL, 0x103734e5839f8bceULL);
TEST_ALL(0x57c5c0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x998932bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x21f4415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x67570e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x59add18600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x0c8ad54b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0x3244ce08ad53f789ULL, 0x32044e0ed7ad1318ULL, 0x7b7c6677beaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0ULL, 0xFFFFFFFFFULL);
TEST_ALL(0xc0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x32bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x0e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x8600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x4b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFF1234567ABCDULL, 0x0000000000000000ULL, 0x8000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x0000B486000037F8ULL, 0x000C304E00069660ULL);
TEST_ALL(0x8500ed12895dcc70ULL, 0x2efddec64ef00345ULL, 0x32abd4d0c72f300bULL, 0x103734e5839f8bceULL);
TEST_ALL(0x57c5c0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x998932bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x21f4415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x67570e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x59add18600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x0c8ad54b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0x3244ce08ad53f789ULL, 0x32044e0ed7ad1318ULL, 0x7b7c6677beaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0ULL, 0xFFFFFFFFFULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFF1234567ABCDULL, 0x0000000000000000ULL, 0x8000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x0000B486000037F8ULL, 0x000C304E00069660ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFF1234567ABCDULL, 0x0000000000000000ULL, 0x8000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x0000B486000037F8ULL, 0x000C304E00069660ULL);
TEST_ALL(0x8500ed12895dcc70ULL, 0x2efddec64ef00345ULL, 0x32abd4d0c72f300bULL, 0x103734e5839f8bceULL);
TEST_ALL(0x57c5c0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x998932bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x21f4415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x67570e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x59add18600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x0c8ad54b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0x3244ce08ad53f789ULL, 0x32044e0ed7ad1318ULL, 0x7b7c6677beaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0ULL, 0xFFFFFFFFFULL);
TEST_ALL(0xc0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x32bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x0e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x8600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x4b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0xad53f789ULL, 0x32044e0ed7ad1318ULL, 0xbeaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0x0ULL, 0xf3c0c1fc8f3230ULL, 0x0ULL, 0xbeaab9c5ULL);
TEST_ALL(0x0ULL, 0x044e0ed7ad1310ULL, 0xbeaab9c5ULL, 0xbeaab9c5ULL);
TEST_ALL(0x7FFF800000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x7FF8000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x8500ed12895dcc70ULL, 0x2efddec64ef00345ULL, 0x32abd4d0c72f300bULL, 0x103734e5839f8bceULL);
TEST_ALL(0x57c5c0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x998932bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x21f4415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x67570e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFF1234567ABCDULL, 0x0000000000000000ULL, 0x8000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x0000B486000037F8ULL, 0x000C304E00069660ULL);
TEST_ALL(0x8500ed12895dcc70ULL, 0x2efddec64ef00345ULL, 0x32abd4d0c72f300bULL, 0x103734e5839f8bceULL);
TEST_ALL(0x57c5c0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x998932bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x21f4415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x67570e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x59add18600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x0c8ad54b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0x3244ce08ad53f789ULL, 0x32044e0ed7ad1318ULL, 0x7b7c6677beaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0ULL, 0xFFFFFFFFFULL);
TEST_ALL(0xc0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x32bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x0e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x8600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x4b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0xad53f789ULL, 0x32044e0ed7ad1318ULL, 0xbeaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0x0ULL, 0xf3c0c1fc8f3230ULL, 0x0ULL, 0xbeaab9c5ULL);
TEST_ALL(0x0ULL, 0x044e0ed7ad1310ULL, 0xbeaab9c5ULL, 0xbeaab9c5ULL);
TEST_ALL(0x7FFF800000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x7FF8000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x59add18600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x0c8ad54b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0x3244ce08ad53f789ULL, 0x32044e0ed7ad1318ULL, 0x7b7c6677beaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFF1234567ABCDULL, 0x0000000000000000ULL, 0x8000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x0000B486000037F8ULL, 0x000C304E00069660ULL);
TEST_ALL(0x8500ed12895dcc70ULL, 0x2efddec64ef00345ULL, 0x32abd4d0c72f300bULL, 0x103734e5839f8bceULL);
TEST_ALL(0x57c5c0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x998932bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x21f4415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x67570e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x59add18600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x0c8ad54b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0x3244ce08ad53f789ULL, 0x32044e0ed7ad1318ULL, 0x7b7c6677beaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0ULL, 0xFFFFFFFFFULL);
TEST_ALL(0xc0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x32bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x0e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x8600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x4b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0xad53f789ULL, 0x32044e0ed7ad1318ULL, 0xbeaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0x0ULL, 0xf3c0c1fc8f3230ULL, 0x0ULL, 0xbeaab9c5ULL);
TEST_ALL(0x0ULL, 0x044e0ed7ad1310ULL, 0xbeaab9c5ULL, 0xbeaab9c5ULL);
TEST_ALL(0x7FFF800000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x7FF8000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0ULL, 0xFFFFFFFFFULL);
TEST_ALL(0xc0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x32bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFF1234567ABCDULL, 0x0000000000000000ULL, 0x8000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x0000B486000037F8ULL, 0x000C304E00069660ULL);
TEST_ALL(0x8500ed12895dcc70ULL, 0x2efddec64ef00345ULL, 0x32abd4d0c72f300bULL, 0x103734e5839f8bceULL);
TEST_ALL(0x57c5c0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x998932bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x21f4415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x67570e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFF1234567ABCDULL, 0x0000000000000000ULL, 0x8000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x0000B486000037F8ULL, 0x000C304E00069660ULL);
TEST_ALL(0x8500ed12895dcc70ULL, 0x2efddec64ef00345ULL, 0x32abd4d0c72f300bULL, 0x103734e5839f8bceULL);
TEST_ALL(0x57c5c0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x998932bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x21f4415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x67570e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x59add18600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x0c8ad54b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0x3244ce08ad53f789ULL, 0x32044e0ed7ad1318ULL, 0x7b7c6677beaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0ULL, 0xFFFFFFFFFULL);
TEST_ALL(0xc0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x32bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x0e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x8600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x4b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0xad53f789ULL, 0x32044e0ed7ad1318ULL, 0xbeaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0x0ULL, 0xf3c0c1fc8f3230ULL, 0x0ULL, 0xbeaab9c5ULL);
TEST_ALL(0x0ULL, 0x044e0ed7ad1310ULL, 0xbeaab9c5ULL, 0xbeaab9c5ULL);
TEST_ALL(0x7FFF800000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x7FF8000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFF1234567ABCDULL, 0x0000000000000000ULL, 0x8000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x0000B486000037F8ULL, 0x000C304E00069660ULL);
TEST_ALL(0x8500ed12895dcc70ULL, 0x2efddec64ef00345ULL, 0x32abd4d0c72f300bULL, 0x103734e5839f8bceULL);
TEST_ALL(0x57c5c0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x998932bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x21f4415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x67570e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x59add18600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x0c8ad54b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0x3244ce08ad53f789ULL, 0x32044e0ed7ad1318ULL, 0x7b7c6677beaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0ULL, 0xFFFFFFFFFULL);
TEST_ALL(0xc0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x32bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x0e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x8600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x4b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0xad53f789ULL, 0x32044e0ed7ad1318ULL, 0xbeaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0x0ULL, 0xf3c0c1fc8f3230ULL, 0x0ULL, 0xbeaab9c5ULL);
TEST_ALL(0x0ULL, 0x044e0ed7ad1310ULL, 0xbeaab9c5ULL, 0xbeaab9c5ULL);
TEST_ALL(0x7FFF800000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x7FF8000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFF1234567ABCDULL, 0x0000000000000000ULL, 0x8000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x0000B486000037F8ULL, 0x000C304E00069660ULL);
TEST_ALL(0x8500ed12895dcc70ULL, 0x2efddec64ef00345ULL, 0x32abd4d0c72f300bULL, 0x103734e5839f8bceULL);
TEST_ALL(0x57c5c0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x998932bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x21f4415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x67570e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x59add18600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x0c8ad54b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0x3244ce08ad53f789ULL, 0x32044e0ed7ad1318ULL, 0x7b7c6677beaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0ULL, 0xFFFFFFFFFULL);
TEST_ALL(0xc0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x32bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x0e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x8600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x4b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0xad53f789ULL, 0x32044e0ed7ad1318ULL, 0xbeaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0x0ULL, 0xf3c0c1fc8f3230ULL, 0x0ULL, 0xbeaab9c5ULL);
TEST_ALL(0x0ULL, 0x044e0ed7ad1310ULL, 0xbeaab9c5ULL, 0xbeaab9c5ULL);
TEST_ALL(0x7FFF800000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x7FF8000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x59add18600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x0c8ad54b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0x3244ce08ad53f789ULL, 0x32044e0ed7ad1318ULL, 0x7b7c6677beaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0ULL, 0xFFFFFFFFFULL);
TEST_ALL(0xc0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x32bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x0e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x8600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x4b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0xad53f789ULL, 0x32044e0ed7ad1318ULL, 0xbeaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0x0ULL, 0xf3c0c1fc8f3230ULL, 0x0ULL, 0xbeaab9c5ULL);
TEST_ALL(0x0ULL, 0x044e0ed7ad1310ULL, 0xbeaab9c5ULL, 0xbeaab9c5ULL);
TEST_ALL(0x7FFF800000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x7FF8000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x0e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x8600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x4b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0xad53f789ULL, 0x32044e0ed7ad1318ULL, 0xbeaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0x0ULL, 0xf3c0c1fc8f3230ULL, 0x0ULL, 0xbeaab9c5ULL);
TEST_ALL(0x0ULL, 0x044e0ed7ad1310ULL, 0xbeaab9c5ULL, 0xbeaab9c5ULL);
TEST_ALL(0x7FFF800000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x7FF8000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0xc0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x32bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x0e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x8600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x4b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0xad53f789ULL, 0x32044e0ed7ad1318ULL, 0xbeaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0x0ULL, 0xf3c0c1fc8f3230ULL, 0x0ULL, 0xbeaab9c5ULL);
TEST_ALL(0x0ULL, 0x044e0ed7ad1310ULL, 0xbeaab9c5ULL, 0xbeaab9c5ULL);
TEST_ALL(0x7FFF800000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x7FF8000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0xad53f789ULL, 0x32044e0ed7ad1318ULL, 0xbeaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0x0ULL, 0xf3c0c1fc8f3230ULL, 0x0ULL, 0xbeaab9c5ULL);
TEST_ALL(0x0ULL, 0x044e0ed7ad1310ULL, 0xbeaab9c5ULL, 0xbeaab9c5ULL);
TEST_ALL(0x7FFF800000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x7FF8000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0xFFFFF1234567ABCDULL, 0x0000000000000000ULL, 0x8000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x0000B486000037F8ULL, 0x000C304E00069660ULL);
TEST_ALL(0x8500ed12895dcc70ULL, 0x2efddec64ef00345ULL, 0x32abd4d0c72f300bULL, 0x103734e5839f8bceULL);
TEST_ALL(0x57c5c0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x998932bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x21f4415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x67570e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x59add18600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x0c8ad54b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0x3244ce08ad53f789ULL, 0x32044e0ed7ad1318ULL, 0x7b7c6677beaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0ULL, 0xFFFFFFFFFULL);
TEST_ALL(0xc0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x32bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x0e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x8600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x4b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0xad53f789ULL, 0x32044e0ed7ad1318ULL, 0xbeaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0x0ULL, 0xf3c0c1fc8f3230ULL, 0x0ULL, 0xbeaab9c5ULL);
TEST_ALL(0x0ULL, 0x044e0ed7ad1310ULL, 0xbeaab9c5ULL, 0xbeaab9c5ULL);
TEST_ALL(0x7FFF800000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x7FF8000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFF1234567ABCDULL, 0x0000000000000000ULL, 0x8000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x0000B486000037F8ULL, 0x000C304E00069660ULL);
TEST_ALL(0x8500ed12895dcc70ULL, 0x2efddec64ef00345ULL, 0x32abd4d0c72f300bULL, 0x103734e5839f8bceULL);
TEST_ALL(0x57c5c0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x998932bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x21f4415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x67570e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x59add18600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x0c8ad54b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0x3244ce08ad53f789ULL, 0x32044e0ed7ad1318ULL, 0x7b7c6677beaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0ULL, 0xFFFFFFFFFULL);
TEST_ALL(0xc0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x32bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x0e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x8600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x4b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0xad53f789ULL, 0x32044e0ed7ad1318ULL, 0xbeaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0x0ULL, 0xf3c0c1fc8f3230ULL, 0x0ULL, 0xbeaab9c5ULL);
TEST_ALL(0x0ULL, 0x044e0ed7ad1310ULL, 0xbeaab9c5ULL, 0xbeaab9c5ULL);
TEST_ALL(0x7FFF800000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x7FF8000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0xFFFFFFFFFFFFFFFFULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0xFFFFF1234567ABCDULL, 0x0000000000000000ULL, 0x8000000000000000ULL, 0xFFFFFFFFFFFFFFFFULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x0000B486000037F8ULL, 0x000C304E00069660ULL);
TEST_ALL(0x8500ed12895dcc70ULL, 0x2efddec64ef00345ULL, 0x32abd4d0c72f300bULL, 0x103734e5839f8bceULL);
TEST_ALL(0x57c5c0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x998932bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x21f4415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x67570e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x59add18600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x0c8ad54b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0x3244ce08ad53f789ULL, 0x32044e0ed7ad1318ULL, 0x7b7c6677beaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0x0ULL, 0xFFFFFFFFFULL);
TEST_ALL(0xc0583916ea04ULL, 0xb11dcfb3c40c58e9ULL, 0x32bb5c6435f8ULL, 0x3cdabbec03dd171bULL);
TEST_ALL(0x415294ef1833ULL, 0x351fca47e0dc4556ULL, 0x0e6aa62c73d4ULL, 0x814c1b40212fb244ULL);
TEST_ALL(0x8600dd9ea0ULL, 0xae231b86d9b692b5ULL, 0x4b9f8cffd7ULL, 0xb3bada095bbf3a0fULL);
TEST_ALL(0xad53f789ULL, 0x32044e0ed7ad1318ULL, 0xbeaab9c5ULL, 0xebfe8ce84902008cULL);
TEST_ALL(0x0ULL, 0xf3c0c1fc8f3230ULL, 0x0ULL, 0xbeaab9c5ULL);
TEST_ALL(0x0ULL, 0x044e0ed7ad1310ULL, 0xbeaab9c5ULL, 0xbeaab9c5ULL);
TEST_ALL(0x7FFF800000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x7FF8000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x7FF8000000000000ULL, 0x0000000000000001ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x7FFF000000000000ULL, 0x0000000000000000ULL, 0x00000000DEADC0DEULL, 0x000000000000000ULL);
TEST_ALL(0x000087810000E078ULL, 0x0006E3C8000438F5ULL, 0x000B48600003780FULL, 0x00C304E00069660ULL);
TEST_ALL(0x0000000000000001ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0x0000000000000001ULL, 0x0000000000000000ULL, 0x0000000000000002ULL, 0x0000000000000000ULL);
TEST_ALL(0x0000000100000000ULL, 0x0000000000000000ULL, 0x0000001000000000ULL, 0x0000000000000000ULL);
TEST_ALL(0x3f9df3b600000000ULL, 0x0000000000000000ULL, 0x3f9df3b600000000ULL, 0x0000000000000000ULL);
TEST_ALL(0x404558dbc58e142aULL, 0x0000000000000000ULL, 0x4094e5b530214b78ULL, 0x0000000000000000ULL);
TEST_ALL(0x0000000000000000ULL, 0x404558dbc58e142aULL, 0x0000000000000000ULL, 0x4094e5b530214b78ULL);
}
__builtin_mffs();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment