diff --git a/CMakeLists.txt b/CMakeLists.txt index 6e6a03909d..9b8d6545b9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -265,28 +265,26 @@ if (DPPC_BUILD_PPC_TESTS) endif() if (DPPC_BUILD_BENCHMARKS) - add_compile_options("-DPPC_BENCHMARKS") - file(GLOB BENCH_SOURCES "${PROJECT_SOURCE_DIR}/benchmark/*.cpp" - "${PROJECT_SOURCE_DIR}/cpu/ppc/*.cpp" - "${PROJECT_SOURCE_DIR}/cpu/ppc/*.h" - ) - add_executable(bench1 ${BENCH_SOURCES} $ - # $ - $ - $ - $ - $ - $) - - target_link_libraries(bench1 PRIVATE cubeb SDL2::SDL2 ${CMAKE_DL_LIBS} - ${CMAKE_THREAD_LIBS_INIT}) - if (WIN32) - target_compile_definitions(bench1 PRIVATE SDL_MAIN_HANDLED) - endif() - - if (DPPC_68K_DEBUGGER) - target_link_libraries(bench1 PRIVATE capstone) - endif() + file(GLOB BENCH_CPU_SOURCES "${PROJECT_SOURCE_DIR}/cpu/ppc/*.cpp" + "${PROJECT_SOURCE_DIR}/cpu/ppc/*.h") + foreach(BENCHMARK bench1 bench2) + add_executable(${BENCHMARK} "benchmark/${BENCHMARK}.cpp" ${BENCH_CPU_SOURCES} + $ + $ + $ + $ + $ + $) + target_compile_definitions(${BENCHMARK} PRIVATE PPC_BENCHMARKS) + target_link_libraries(${BENCHMARK} PRIVATE cubeb SDL2::SDL2 ${CMAKE_DL_LIBS} + ${CMAKE_THREAD_LIBS_INIT}) + if (WIN32) + target_compile_definitions(${BENCHMARK} PRIVATE SDL_MAIN_HANDLED) + endif() + if (DPPC_68K_DEBUGGER) + target_link_libraries(${BENCHMARK} PRIVATE capstone) + endif() + endforeach() endif() if (DPPC_BUILD_PPC_TESTS) diff --git a/benchmark/bench2.cpp b/benchmark/bench2.cpp new file mode 100644 index 0000000000..19c3c793c0 --- /dev/null +++ b/benchmark/bench2.cpp @@ -0,0 +1,119 @@ +/* +DingusPPC - The Experimental PowerPC Macintosh emulator +Copyright (C) 2018-26 The DingusPPC Development Team + (See CREDITS.MD for more details) + +(You may also contact divingkxt or powermax2286 on Discord) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +// Replay floating-point instructions and input registers captured while BeOS +// PR1 GLTeapot renders. This measures the real opcode dispatcher and handlers, +// including FPSCR maintenance, without guest boot, display, or timer overhead. +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "bench2_data.h" + +#if defined(PPC_BENCHMARKS) +void ppc_exception_handler(Except_Type exception_type, uint32_t srr1_bits) { + power_off(po_benchmark_exception); +} +#endif + +static void replay_sample(const FpuSample& sample) { + if ((ppc_state.fpscr ^ sample.fpscr) & FPSCR::RN_MASK) + set_host_rounding_mode(sample.fpscr & FPSCR::RN_MASK); + ppc_state.fpscr = sample.fpscr; + ppc_state.cr = sample.cr; + ppc_state.fpr[(sample.opcode >> 21) & 31].int64_r = sample.d; + ppc_state.fpr[(sample.opcode >> 16) & 31].int64_r = sample.a; + ppc_state.fpr[(sample.opcode >> 11) & 31].int64_r = sample.b; + ppc_state.fpr[(sample.opcode >> 6) & 31].int64_r = sample.c; + ppc_main_opcode(ppc_opcode_grabber, sample.opcode); +} + +static uint64_t check_replay() { + uint64_t hash = 1469598103934665603ULL; + auto mix = [&hash](uint64_t value) { hash = (hash ^ value) * 1099511628211ULL; }; + std::feclearexcept(FE_ALL_EXCEPT); + for (const auto& sample : fpu_samples) { + replay_sample(sample); + mix(ppc_state.fpr[(sample.opcode >> 21) & 31].int64_r); + mix(ppc_state.fpscr); + mix(ppc_state.cr); + } + return hash; +} + +int main(int argc, char** argv) { + if (argc > 2 || (argc == 2 && std::strcmp(argv[1], "--check"))) { + fprintf(stderr, "Usage: %s [--check]\n", argv[0]); + return 2; + } + loguru::g_stderr_verbosity = loguru::Verbosity_ERROR; + is_601 = false; + initialize_ppc_opcode_table(); + ppc_msr_did_change(ppc_state.msr, MSR::ME | MSR::IP | MSR::FP, false); + set_host_rounding_mode(0); + power_on = true; + + const uint64_t expected = check_replay(); + constexpr size_t sample_count = sizeof(fpu_samples) / sizeof(fpu_samples[0]); + printf("GLTeapot FPU replay: %zu samples, checksum %016" PRIx64 "\n", sample_count, expected); + if (!power_on) + return 1; + if (argc == 2 && !std::strcmp(argv[1], "--check")) + return 0; + + constexpr unsigned passes = 10000; + constexpr unsigned trials = 9; + // Warm the dispatcher, handlers and captured input data. + for (unsigned pass = 0; pass < 100; pass++) + for (const auto& sample : fpu_samples) + replay_sample(sample); + + std::vector times; + for (unsigned trial = 0; trial < trials; trial++) { + std::feclearexcept(FE_ALL_EXCEPT); + auto start = std::chrono::steady_clock::now(); + for (unsigned pass = 0; pass < passes; pass++) + for (const auto& sample : fpu_samples) + replay_sample(sample); + auto end = std::chrono::steady_clock::now(); + if (!power_on || check_replay() != expected) { + fprintf(stderr, "FPU replay changed its result during timing\n"); + return 1; + } + double ns = std::chrono::duration(end - start).count() / + (uint64_t(passes) * sample_count); + times.push_back(ns); + printf("Trial %u: %.3f ns/FPU instruction, %.3f million FPU instructions/s\n", + trial + 1, ns, 1000.0 / ns); + } + std::sort(times.begin(), times.end()); + double median = times[times.size() / 2]; + printf("Median: %.3f ns/FPU instruction, %.3f million FPU instructions/s\n", + median, 1000.0 / median); + return 0; +} diff --git a/benchmark/bench2_data.h b/benchmark/bench2_data.h new file mode 100644 index 0000000000..db3ae2e8d7 --- /dev/null +++ b/benchmark/bench2_data.h @@ -0,0 +1,1068 @@ +// Captured from BeOS PR1 GLTeapot on the emulated Power Mac 7300. +// Uniform reservoir sample of 200,000,000 floating-point instructions, +// starting after 35 seconds of boot; records are sorted into execution order. +// These are independent input snapshots, not a dependency-preserving program. +// Captured opcode, FPSCR, CR, and raw bits of FPR D/A/B/C (IEEE binary64). +// Histogram of the full capture: +// fmadds 19.21% (81 replay samples) +// fmuls 13.55% (69 replay samples) +// fcmpo 9.85% (46 replay samples) +// fsub 8.40% (39 replay samples) +// fsubs 8.25% (46 replay samples) +// fadd 7.08% (38 replay samples) +// fmadd 5.88% (41 replay samples) +// fmul 5.75% (29 replay samples) +// fctiwz 5.67% (22 replay samples) +// fcmpu 4.85% (24 replay samples) +// fmsubs 2.85% (18 replay samples) +// fadds 2.24% (15 replay samples) +// fmr 1.71% (10 replay samples) +// fdivs 1.27% (10 replay samples) +// fnmsub 1.02% (7 replay samples) +// fdiv 0.67% (3 replay samples) +// fneg 0.59% (5 replay samples) +// fnmsubs 0.42% (4 replay samples) +// frsp 0.37% (1 replay samples) +// fnmadds 0.25% (3 replay samples) +// mffs 0.05% (0 replay samples) +// fmsub 0.04% (1 replay samples) +// mtfsf 0.02% (0 replay samples) +// fabs 0.02% (0 replay samples) +#ifndef BENCH2_DATA_H +#define BENCH2_DATA_H + +#include + +struct FpuSample { + uint32_t opcode, fpscr, cr; + uint64_t d, a, b, c; +}; + +static constexpr FpuSample fpu_samples[] = { + {0xFC00001E, 0xFC214100, 0x20000000, + 0x41C83F17E0000000ULL, 0x41C83F17E0000000ULL, 0x41C83F17E0000000ULL, 0x41C83F17E0000000ULL}, + {0xED860028, 0xFC216100, 0x20000002, + 0xBF87F4AC00000000ULL, 0x3FB2A588E0000000ULL, 0x3FB5DE9CC0000000ULL, 0x3FB5DE9CC0000000ULL}, + {0xEC4C02B2, 0xFC21E100, 0x20000000, + 0x4002F8E660000000ULL, 0xBFA4F52D00000000ULL, 0xBF7D977B80000000ULL, 0x0000000000000000ULL}, + {0xEC420132, 0xFC214100, 0x40000000, + 0x3FEDDFD9A0000000ULL, 0x3FEDDFD9A0000000ULL, 0x3FED1229A0000000ULL, 0x40008809A0000000ULL}, + {0xFC801850, 0xFC21C100, 0x40000000, + 0xBFD6235100000000ULL, 0x3FDAFB4740000000ULL, 0x3FF0000000000000ULL, 0x3FA08F4980000000ULL}, + {0xFC002040, 0xFC21C100, 0x40000000, + 0x3FD406A260000000ULL, 0x3FD406A260000000ULL, 0xBFF0000000000000ULL, 0xBFDC3FAEA0000000ULL}, + {0xFC021840, 0xFC214100, 0x40000000, + 0x3FADE18500000000ULL, 0x3FB070D880000000ULL, 0x3FF0000000000000ULL, 0xBFEC51F400000000ULL}, + {0xEC810132, 0xFC21C100, 0x40000000, + 0x3FB1D06D00000000ULL, 0xBFD89014C0000000ULL, 0xBFE0DAB1A0000000ULL, 0x3FB1D06D00000000ULL}, + {0xEC841028, 0xFC214100, 0x40000000, + 0x4008000000000000ULL, 0x4008000000000000ULL, 0x3FEDDFDA20000000ULL, 0x3FEB0574E0000000ULL}, + {0xFC0C01B2, 0xFC21C100, 0x80000000, + 0x4008135F43652989ULL, 0xBFB8D3D800000000ULL, 0x4008135F43652989ULL, 0x4008135F00000000ULL}, + {0xEC4C02B2, 0xFC21E100, 0x20000000, + 0xBFD8783880000000ULL, 0xBFAF040100000000ULL, 0x0000000000000000ULL, 0x3F88552980000000ULL}, + {0xEC050032, 0xFC21C100, 0x40000000, + 0xBFBA9CDA80000000ULL, 0xBFC0E25E80000000ULL, 0xBFBA9CDA80000000ULL, 0xBFBA9CDA80000000ULL}, + {0xEC0600BA, 0xFC218100, 0x40000000, + 0xBFBE91CC20000000ULL, 0x3FDB6B4220000000ULL, 0xBFBE91CC20000000ULL, 0xBFBA9CDA80000000ULL}, + {0xFCC231FA, 0xFC21C100, 0x40000084, + 0x3FCD864A93C9DB65ULL, 0x3F6308FE457CFA06ULL, 0x3FCD864A93C9DB65ULL, 0x3FCA7E284A454EEFULL}, + {0xFC412028, 0xFC214100, 0x40000084, + 0x41E0ABF340000000ULL, 0x41E0ABF340000000ULL, 0x41E0000000000000ULL, 0x0000000000000000ULL}, + {0xEC23082A, 0xFC214100, 0x20000000, + 0x40C8178000000000ULL, 0x3FE0000000000000ULL, 0x40C8178000000000ULL, 0x40C8178760000000ULL}, + {0xEC23007A, 0xFC21C100, 0x80000000, + 0xBF991E3BA0000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0xBF991E3BA0000000ULL}, + {0xFC293A3A, 0xFC21E100, 0x80000002, + 0x3E65AC2E49AFA915ULL, 0x3F937B3D93267F21ULL, 0xBEBBBD41C5D26BF1ULL, 0x3E66376972BEA4D0ULL}, + {0xFC240824, 0xFC21C100, 0x80000000, + 0xBFFCE3C34C6779C0ULL, 0x3FA404C019B78B4CULL, 0xBFFCE3C34C6779C0ULL, 0xBC7334FB7CA27401ULL}, + {0xFC000840, 0xFC214100, 0x40000000, + 0x40631A53A0000000ULL, 0x40631A53A0000000ULL, 0x406FE00000000000ULL, 0x406FE00000000000ULL}, + {0xEC8221BA, 0xFC216100, 0x40000000, + 0x3FD1A40760000000ULL, 0x0000000000000000ULL, 0x3FD1A40760000000ULL, 0xBFD0F51940000000ULL}, + {0xFD4C023C, 0xFC21C100, 0x80000000, + 0xBFA1868E480D63D2ULL, 0xBF99268000000000ULL, 0xBFB2691E00000000ULL, 0x40076CB700000000ULL}, + {0xFC400890, 0xFC214100, 0x40000084, + 0x7E37E43C8800759CULL, 0x0000000000000000ULL, 0x41E09AF380000000ULL, 0x7E37E43C8800759CULL}, + {0xEC460172, 0xFC214100, 0x40000021, + 0x3FB0000000000000ULL, 0x3FEEEB41E0000000ULL, 0xBFE27296E0000000ULL, 0x3FEEEB3E40000000ULL}, + {0xED441828, 0xFC21E100, 0x20000000, + 0xBFA445BEE66DFA81ULL, 0x3FD9CCF920000000ULL, 0x3FDC553200000000ULL, 0xBFB52A43C0000000ULL}, + {0xEC0A0172, 0xFC21E100, 0x40000000, + 0x0000000000000000ULL, 0x3F5AC7D5C0000000ULL, 0x0000000000000000ULL, 0xBFD8783880000000ULL}, + {0xFCC2327A, 0xFC21C100, 0x40000021, + 0x3FE3333333333303ULL, 0x3F3C09C6B6F297F5ULL, 0x3FE3333333333303ULL, 0x3FDB700D36F29052ULL}, + {0xEC0300BA, 0xFC21E100, 0x40000000, + 0x403F25F3C0000000ULL, 0x3FF0000000000000ULL, 0x403F25F3C0000000ULL, 0x406066FA80000000ULL}, + {0xFC00F000, 0xFC21C100, 0x40000000, + 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x0000000000000000ULL, 0x3FF0000000000000ULL}, + {0xFC240032, 0xFC21C100, 0x80000084, + 0x3FD2BD3C00000000ULL, 0x4053333340000000ULL, 0xBE8B1D56949B0216ULL, 0xBE8B1D56949B0216ULL}, + {0xEC540732, 0xFC214100, 0x80000021, + 0x7E37E43C8800759CULL, 0xC022AF5B80000000ULL, 0x0000000000000000ULL, 0x3FF134FBE0000000ULL}, + {0xEC020732, 0xFC21C100, 0x20000000, + 0x41E0DC5520000000ULL, 0x41622AC000000000ULL, 0x41E0DC5520000000ULL, 0xBF8BA80CC0000000ULL}, + {0xFC07182A, 0xFC21C100, 0x80000000, + 0x3E54DEE066BF4D4BULL, 0x3FB73AA3833CA800ULL, 0x3E61AEEB04539AA7ULL, 0x3E54DEE066BF4D4BULL}, + {0xEC460172, 0xFC214100, 0x40000000, + 0x3FB0000000000000ULL, 0x3FEEEB46E0000000ULL, 0xBFDF714AE0000000ULL, 0x3FEEEB39A0000000ULL}, + {0xFC20081E, 0xFC214100, 0x40000000, + 0x40EB000000000000ULL, 0x0000000000000000ULL, 0x40EB000000000000ULL, 0x0000000000000000ULL}, + {0xFD4200B2, 0xFC214100, 0x80000000, + 0x3E8E29A700000000ULL, 0x3F701E39CB622742ULL, 0x433000007FFFFFFEULL, 0x3F701E39CB622742ULL}, + {0xEC0000F2, 0xFC21C100, 0x40000000, + 0x3FAB2868A0000000ULL, 0x3FAB2868A0000000ULL, 0x3FAB2868A0000000ULL, 0x3FF0000020000000ULL}, + {0xFC22082A, 0xFC21C100, 0x40000000, + 0xC0EF046840000000ULL, 0x7E37E43C8800759CULL, 0xC0EF046840000000ULL, 0x0000000000000000ULL}, + {0xEC810132, 0xFC21C100, 0x40000000, + 0xBFDF0CA9A0000000ULL, 0x3FE2D86880000000ULL, 0xBFE9DCB9A0000000ULL, 0xBFDF0CA9A0000000ULL}, + {0xEC2408FA, 0xFC214100, 0x40000008, + 0x3FE73FFA60000000ULL, 0x3FDA717200000000ULL, 0x3FE73FFA60000000ULL, 0x3FE279A300000000ULL}, + {0xEC8221BA, 0xFC21C100, 0x40000000, + 0x3FD3184600000000ULL, 0x3FE99999A0000000ULL, 0x3FD3184600000000ULL, 0x3FDCA7B400000000ULL}, + {0xFC001800, 0xFC214100, 0x40000000, + 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FEFFFFC20000000ULL, 0x3FF0000000000000ULL}, + {0xFC012040, 0xFC218100, 0x80000000, + 0xBFCB0C1F20000000ULL, 0xBFE4C65A00000000ULL, 0xBFF0000000000000ULL, 0xBFE4C65A00000000ULL}, + {0xEC1E007A, 0xFC21C100, 0x80000000, + 0xC10CC42000000000ULL, 0xBFD0F1AAE0000000ULL, 0xC10CC42000000000ULL, 0x413FC38200000000ULL}, + {0xFC2B09BA, 0xFC21E100, 0x40000000, + 0xBE3BB7653D74E3F8ULL, 0xBE4513A6D47A6489ULL, 0xBE3BB7653D74E3F8ULL, 0x4008018500000000ULL}, + {0xEC630132, 0xFC214100, 0x40000000, + 0x3FAEEB40A0000000ULL, 0x3FAEEB40A0000000ULL, 0xBFE35D4F60000000ULL, 0x40008809A0000000ULL}, + {0xECAB0B38, 0xFC21E100, 0x40000000, + 0x3FE1AB0360000000ULL, 0x3FC77375E0000000ULL, 0xBF542B29C0000000ULL, 0xBF9D8B0400000000ULL}, + {0xFC000132, 0xFC21C100, 0x80000002, + 0x3E2C7BC727650FE0ULL, 0x3E2C7BC727650FE0ULL, 0x3E2C7BC727650FE0ULL, 0x3FEEC709DC3A03FDULL}, + {0xFD4C023C, 0xFC21C100, 0x40000000, + 0x40C84A4000000000ULL, 0xBF7EA96200000000ULL, 0xBF8E6F1000000000ULL, 0x3FFFC32100000000ULL}, + {0xFD4C023C, 0xFC21C100, 0x40000000, + 0x40C84A4000000000ULL, 0xBFA0675D00000000ULL, 0xBFAFCA0000000000ULL, 0x3FFF01B000000000ULL}, + {0xEC2408FA, 0xFC21C100, 0x40000000, + 0xBFC12D0600000000ULL, 0x3FEBF13DA0000000ULL, 0xBFC12D0600000000ULL, 0x3FED906BE0000000ULL}, + {0xEC80217A, 0xFC214100, 0x40000008, + 0x3FC9DCB140000000ULL, 0x3FE2D86220000000ULL, 0x3FC9DCB140000000ULL, 0xBFEBB67AC0000000ULL}, + {0xFC40082A, 0xFC21C100, 0x80000021, + 0x3F8165025F5B2000ULL, 0x3FD1BEBAD2C07000ULL, 0x3E950F72F430FCC6ULL, 0x3FD1BEBAD2C07000ULL}, + {0xFC003828, 0xFC21C100, 0x40000000, + 0xBF9D5A8000000000ULL, 0xBF9D5A8000000000ULL, 0xBF9D5AE980236700ULL, 0xBF9D5A8000000000ULL}, + {0xFC20081E, 0xFC214100, 0x80000000, + 0xC09E980000000000ULL, 0x0000000000000000ULL, 0xC09E980000000000ULL, 0x0000000000000000ULL}, + {0xEC220FB8, 0xFC21C100, 0x20000021, + 0xC0FD905020000000ULL, 0x4137E30000000000ULL, 0xC0FD905020000000ULL, 0x3FBD196A00000000ULL}, + {0xFD6102F2, 0xFC214100, 0x80000000, + 0x3E80B9C1A0000000ULL, 0x3FDDB36C20F3C1E0ULL, 0x433000007FFFFFFEULL, 0x3E80B9C1A0000000ULL}, + {0xFC01002A, 0xFC21C100, 0x80000000, + 0x402F1F8DC0000000ULL, 0x3FE0000000000000ULL, 0x402F1F8DC0000000ULL, 0x402F1F8DC0000000ULL}, + {0xFC240824, 0xFC21E100, 0x80000000, + 0xBFFFC7482D8890A1ULL, 0x3F2930CAFFF82134ULL, 0xBFFFC7482D8890A1ULL, 0xBBE356647153F035ULL}, + {0xFC22082A, 0xFC21C100, 0x40000000, + 0xC103BB7E20000000ULL, 0x7E37E43C8800759CULL, 0xC103BB7E20000000ULL, 0x0000000000000000ULL}, + {0xFC20081E, 0xFC214100, 0x40000000, + 0x410FB15800000000ULL, 0x0000000000000000ULL, 0x410FB15800000000ULL, 0x0000000000000000ULL}, + {0xEE831028, 0xFC214100, 0x40000000, + 0xBFF26C2A00000000ULL, 0x405F9DC480000000ULL, 0x40585ED360000000ULL, 0x405D5A6D60000000ULL}, + {0xFC001040, 0xFC21C100, 0x20000000, + 0x40584BCA00000000ULL, 0x40584BCA00000000ULL, 0x0000000000000000ULL, 0x406FE00000000000ULL}, + {0xEC5F0032, 0xFC21C100, 0x40000008, + 0x4035452700000000ULL, 0x3FEA5572E0000000ULL, 0x4039D8C7E0000000ULL, 0x4039D8C7E0000000ULL}, + {0xEC030778, 0xFC21C100, 0x20000021, + 0x411E966BC0000000ULL, 0x41585A8000000000ULL, 0x411E966BC0000000ULL, 0x3FD8601EE0000000ULL}, + {0xFC07182A, 0xFC21C100, 0x40000000, + 0xBE78EBDBAB50DC3FULL, 0xBFC283E173540900ULL, 0xBE78EBDBAB50DC3FULL, 0xBE78EBDBAB50DC3FULL}, + {0xFC29207A, 0xFC21E100, 0x80000000, + 0xBF66B9418CEE75E2ULL, 0x3FAE3066D6CB1CD3ULL, 0x3FC555555555553EULL, 0xBF66B9418CEE75E2ULL}, + {0xEC280828, 0xFC21E100, 0x40000021, + 0x4014D679C0000000ULL, 0xBFD86F2900000000ULL, 0x4014D679C0000000ULL, 0xC01508C240000000ULL}, + {0xFC01482A, 0xFC21C100, 0x80000002, + 0x433000007FFFFFFFULL, 0x400805BCE07C8420ULL, 0x3ED3CCA119346CCEULL, 0x433000007FFFFFFFULL}, + {0xEC0600BA, 0xFC21C100, 0x40000000, + 0x3FA7C401E0000000ULL, 0x3FE9290000000000ULL, 0x3FA7C401E0000000ULL, 0xBFC63A1B80000000ULL}, + {0xEC03002A, 0xFC21C100, 0x40000000, + 0x3FD28F1F00000000ULL, 0x0000000000000000ULL, 0x3FD28F1F00000000ULL, 0x3FD28F1F00000000ULL}, + {0xFD22183A, 0xFC214100, 0x80000000, + 0x3FFAAB06A0000000ULL, 0x3F66B714128D0C8CULL, 0x3FDB6DB6DB6FABFFULL, 0x3FD561C0A57D04D5ULL}, + {0xFC22082A, 0xFC21C100, 0x80000000, + 0xC1082C2FA0000000ULL, 0x7E37E43C8800759CULL, 0xC1082C2FA0000000ULL, 0x0000000000000000ULL}, + {0xFF812000, 0xFC218100, 0x40000080, + 0x3FD05F6B00000000ULL, 0x41E0ACBB60000000ULL, 0x41E0000000000000ULL, 0x0000000000000000ULL}, + {0xEC5F0032, 0xFC21C100, 0x40000000, + 0x40282A00A0000000ULL, 0x3FDDEAAB40000000ULL, 0x4039D8C7E0000000ULL, 0x4039D8C7E0000000ULL}, + {0xEC3B1778, 0xFC21C100, 0x80000002, + 0xFFF80000FFFCB132ULL, 0xC019F28600000000ULL, 0xC0226FE200000000ULL, 0x3FE33F0760000000ULL}, + {0xFC22082A, 0xFC21C100, 0x40000000, + 0xC0B698DC20000000ULL, 0x7E37E43C8800759CULL, 0xC0B698DC20000000ULL, 0x0000000000000000ULL}, + {0xEC010032, 0xFC214100, 0x40000000, + 0x3FE6A09E60000000ULL, 0xBFEE5B7440000000ULL, 0x3FE6A09E60000000ULL, 0x3FE6A09E60000000ULL}, + {0xEC0901FA, 0xFC21E100, 0x40000000, + 0xBF7CFEB2E0000000ULL, 0x3F7B2B4160000000ULL, 0xBF7CFEB2E0000000ULL, 0xBFC77375E0000000ULL}, + {0xFC801850, 0xFC218100, 0x40000000, + 0x3FE70ED1A0000000ULL, 0xBFCFC28320000000ULL, 0x3FF0000000000000ULL, 0x4012089D00000000ULL}, + {0xFC080028, 0xFC21C100, 0x40000084, + 0xBFB232F425845000ULL, 0xBFB232F500000000ULL, 0xBFB232F425845000ULL, 0xBFB232F425845000ULL}, + {0xEC8221BA, 0xFC21C100, 0x40000000, + 0x3FC43E3F80000000ULL, 0x3FD43BABA0000000ULL, 0x3FC43E3F80000000ULL, 0x3FEF08FB20000000ULL}, + {0xEC280828, 0xFC21A100, 0x20000008, + 0x3FED6E89E0000000ULL, 0x3FEC81E440000000ULL, 0x3FED6E89E0000000ULL, 0x3F957851E0000000ULL}, + {0xFC012040, 0xFC218100, 0x80000000, + 0x3FC13902E0000000ULL, 0xBFDD467260000000ULL, 0xBFF0000000000000ULL, 0xBFDD467260000000ULL}, + {0xFC29207A, 0xFC21E100, 0x80000000, + 0xBF66C0F6C98D5EF6ULL, 0x3F6B10B1C51133A2ULL, 0x3FC555555555553EULL, 0xBF66C0F6C98D5EF6ULL}, + {0xFF011800, 0xFC214100, 0x40000000, + 0xC016E70000000000ULL, 0x41E1040760000000ULL, 0x41F0000000000000ULL, 0x0000000000000000ULL}, + {0xFC00082A, 0xFC21C100, 0x80000002, + 0x3FB2E83F630CDE3CULL, 0x3FB2E83F630CDE3CULL, 0x3FE2B80340000000ULL, 0x3FB2E83F630CDE3CULL}, + {0xEC220FB8, 0xFC21C100, 0x20000021, + 0x4106C1EBC0000000ULL, 0x412ADE0000000000ULL, 0x4106C1EBC0000000ULL, 0x3FCDEF8000000000ULL}, + {0xFC200818, 0xFC21E100, 0x40000000, + 0x3FBFEAD8782A9E94ULL, 0x40639432C0000000ULL, 0x3FBFEAD8782A9E94ULL, 0x40639432C0000000ULL}, + {0xEC22007A, 0xFC21C100, 0x80000000, + 0x3FEA976400000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x3FEA976400000000ULL}, + {0xFC0229BA, 0xFC214100, 0x80000000, + 0x3FAC8A6C00000000ULL, 0x3F35CF1AA05EB803ULL, 0x3FD17460A91D4101ULL, 0x3FCD888C5BDBEFE1ULL}, + {0xEC59C024, 0xFC214100, 0x20000000, + 0xFFF8000006D9DF00ULL, 0xC00AA00000000000ULL, 0xC020C10000000000ULL, 0x0000000000000000ULL}, + {0xFC28102A, 0xFC21C100, 0x40000000, + 0x3FE0B659B71B82A2ULL, 0x4008000000000000ULL, 0x3F603C74B57B2000ULL, 0x433000007FFFFFFEULL}, + {0xFC022040, 0xFC218100, 0x80000000, + 0xBFC48C7920000000ULL, 0x3FAD4E7600000000ULL, 0xBFF0000000000000ULL, 0x3FE5108800000000ULL}, + {0xEC22007A, 0xFC21C100, 0x40000000, + 0xBFED437620000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0xBFED437620000000ULL}, + {0xEC420132, 0xFC214100, 0x40000084, + 0x3FEDDFD9A0000000ULL, 0x3FEDDFD9A0000000ULL, 0x3FE9B6CC00000000ULL, 0x40008809A0000000ULL}, + {0xEC00D02A, 0xFC21E100, 0x80000084, + 0x3FE6A09E60000000ULL, 0x3FE6A09E60000000ULL, 0x3FF0000000000000ULL, 0x3FE6A09E60000000ULL}, + {0xFC40101E, 0xFC214100, 0x40000084, + 0x4196F17800000000ULL, 0x0000000000000000ULL, 0x4196F17800000000ULL, 0x0000000000000000ULL}, + {0xEC2408FA, 0xFC21C100, 0x40000008, + 0xBFEA1E19A0000000ULL, 0x3F96D139C0000000ULL, 0xBFEA1E19A0000000ULL, 0x3FE279A300000000ULL}, + {0xFC29507C, 0xFC21C100, 0x80000000, + 0x3FC54C0BB6AF5AA5ULL, 0x3FBA2F56BD190CA0ULL, 0x3FD477EE4F594DA1ULL, 0x3FC54C0BB6AF5AA5ULL}, + {0xEC0500BA, 0xFC21E100, 0x40000000, + 0xBF9CE828E0000000ULL, 0xBF5803EC60000000ULL, 0xBF9CE828E0000000ULL, 0x402436F180000000ULL}, + {0xFC200090, 0xFC218100, 0x80000000, + 0xBFEA4A69C0000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x3FDC6EB2C0000000ULL}, + {0xFC010000, 0xFC214100, 0x80000008, + 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL}, + {0xEC22007A, 0xFC214100, 0x40000084, + 0x3FEA488C80000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x3FEA488C80000000ULL}, + {0xFC400890, 0xFC214100, 0x40000084, + 0x4330000080000000ULL, 0x0000000000000000ULL, 0x41E0FDA200000000ULL, 0x4330000080000000ULL}, + {0xFC4C1828, 0xFC21E100, 0x80000000, + 0xBFDA3EEEA647865DULL, 0xBFDA3EEE00000000ULL, 0xBFDA3ED9BA030000ULL, 0xBED4EC44865C87E8ULL}, + {0xEC80217A, 0xFC214100, 0x40000000, + 0x3FDABB9240000000ULL, 0x3FD8FCA000000000ULL, 0x3FDABB9240000000ULL, 0xBFDE0BD2C0000000ULL}, + {0xFDA90828, 0xFC21C100, 0x80000000, + 0x3EB8000000000000ULL, 0x3E7B565BB7CBF697ULL, 0xBEAD069080000000ULL, 0xBFAF2446F08E0000ULL}, + {0xEC060028, 0xFC21E100, 0x40000021, + 0xC028DF02A0000000ULL, 0xBFA125BA40000000ULL, 0xC028DF02A0000000ULL, 0xC028DF02A0000000ULL}, + {0xFC020040, 0xFC218100, 0x80000000, + 0x40C8881220000000ULL, 0x40C888B340000000ULL, 0x40C8881220000000ULL, 0x40C8873440000000ULL}, + {0xFC02083A, 0xFC21C100, 0x40000000, + 0x405BC4BEC0000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x405BC4BEC0000000ULL}, + {0xFC211028, 0xFC21C100, 0x80000008, + 0xC056F15C8F9E8000ULL, 0xC056F15C8F9E8000ULL, 0xC057000000000000ULL, 0xBF0EAC22F7FC7557ULL}, + {0xEC8321FA, 0xFC21C100, 0x40000000, + 0x3FD0982BC0000000ULL, 0xBFE3C35700000000ULL, 0x3FD0982BC0000000ULL, 0x8000000000000000ULL}, + {0xEC010032, 0xFC214100, 0x40000008, + 0x3FD87DE2A0000000ULL, 0x3FE7DE2060000000ULL, 0x3FD87DE2A0000000ULL, 0x3FD87DE2A0000000ULL}, + {0xFC001800, 0xFC214100, 0x40000008, + 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FEFFFEE40000000ULL, 0x3FF0000000000000ULL}, + {0xFCCCF82A, 0xFC214100, 0x80000000, + 0x3FE336D37E6E5818ULL, 0x3FA072AC00000000ULL, 0x3FA072ACD23DBFEDULL, 0x433000007FFFFFFFULL}, + {0xFD610028, 0xFC21C100, 0x80000002, + 0x3FE62E4300000000ULL, 0xBE3DE52DA61D3A08ULL, 0xBE3DE52DA6000000ULL, 0xBE3DE52DA6000000ULL}, + {0xEEC2C824, 0xFC218100, 0x80000000, + 0x0000000000000000ULL, 0x402F4C0000000000ULL, 0xBFEB580000000000ULL, 0x0000000000000000ULL}, + {0xFC0A5AFA, 0xFC21C100, 0x80000000, + 0xBE4F54E6CC000000ULL, 0xBFC820A290BCE6CCULL, 0x3C6CF16C00000000ULL, 0x3C6CF16C00000000ULL}, + {0xEC01007A, 0xFC21C100, 0x40000000, + 0x3FEE1C6F20000000ULL, 0x3FCB8A7180000000ULL, 0x3FEE1C6F20000000ULL, 0x3FCB8A7180000000ULL}, + {0xFC40082A, 0xFC21C100, 0x80000000, + 0x3F524BE454240000ULL, 0xBFB9AC95932D8000ULL, 0xBE8166EF8CE1276CULL, 0xBFB9AC95932D8000ULL}, + {0xFC00001E, 0xFC214100, 0x20000084, + 0x41C84E9240000000ULL, 0x41C84E9240000000ULL, 0x41C84E9240000000ULL, 0x41C84E9240000000ULL}, + {0xFC0200F2, 0xFC21C100, 0x80000000, + 0xBE9BCEB768966F33ULL, 0x4053333300000000ULL, 0xBE9BCEB768966F33ULL, 0xBFF1796200000000ULL}, + {0xFC20182A, 0xFC21E100, 0x80000000, + 0xBEDA44B2DF3FD9EAULL, 0xBEE167ADEF9FECF5ULL, 0xC0247FFBC9556000ULL, 0xBEE167ADEF9FECF5ULL}, + {0xFC010000, 0xFC212100, 0x20000084, + 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL}, + {0xEC010032, 0xFC214100, 0x40000000, + 0xBFE279A300000000ULL, 0xBFDE35C300000000ULL, 0xBFE279A300000000ULL, 0xBFE279A300000000ULL}, + {0xEE9A08BA, 0xFC214100, 0x20000008, + 0x402E1B9C20000000ULL, 0xBFE4500000000000ULL, 0x40C83055C0000000ULL, 0x3FD2DAAE40000000ULL}, + {0xFC400890, 0xFC214100, 0x40000084, + 0x7E37E43C8800759CULL, 0x0000000000000000ULL, 0x41E0D24440000000ULL, 0x7E37E43C8800759CULL}, + {0xFC4C0332, 0xFC21C100, 0x40000000, + 0x3F1BC3EDDCFF69F7ULL, 0xBF8513BF00000000ULL, 0x433000007FFFFFFFULL, 0xBF8513BF00000000ULL}, + {0xFC211028, 0xFC21C100, 0x80000002, + 0xC047BFA027121000ULL, 0xC047BFA027121000ULL, 0xC047800000000000ULL, 0xBF0689F579A649EFULL}, + {0xEDA40028, 0xFC212100, 0x20000000, + 0x3FAD20AD00000000ULL, 0x3FD5254D80000000ULL, 0x3FD794CAA0000000ULL, 0x3FD794CAA0000000ULL}, + {0xEC02007A, 0xFC21C100, 0x40000021, + 0x3FE0000000000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x40C8633B40000000ULL}, + {0xFC00082A, 0xFC21C100, 0x80000000, + 0x3FC6F9187CC9379EULL, 0x3FC6F9187CC9379EULL, 0x0000000000000000ULL, 0x3FC6F9187CC9379EULL}, + {0xFC22082A, 0xFC216100, 0x40000000, + 0x40B40BFB20000000ULL, 0x7E37E43C8800759CULL, 0x40B40BFB20000000ULL, 0x0000000000000000ULL}, + {0xFCE83828, 0xFC214100, 0x80000021, + 0x3FF0000000000000ULL, 0x4000134A00000000ULL, 0x3FF0000000000000ULL, 0x3FD17475EC359030ULL}, + {0xEC2408BC, 0xFC214100, 0x40000084, + 0x4028000000000000ULL, 0x4000880980000000ULL, 0x4028000000000000ULL, 0x3FFEDDDA80000000ULL}, + {0xFC011840, 0xFC214100, 0x40000084, + 0xBFC809AA20000000ULL, 0x3FE00C1FE0000000ULL, 0x3FF0000000000000ULL, 0x3FE00C1FE0000000ULL}, + {0xEC0600BA, 0xFC21C100, 0x40000002, + 0x3FA9E09080000000ULL, 0x3F9F7D44E0000000ULL, 0x3FA9E09080000000ULL, 0x3FD4033900000000ULL}, + {0xFFE00890, 0xFC214100, 0x60000008, + 0x0000000000000000ULL, 0x0000000000000000ULL, 0x3FE945EAA0000000ULL, 0xBFE38D5CC0000000ULL}, + {0xFC412028, 0xFC214100, 0x40000084, + 0x41E0E8E580000000ULL, 0x41E0E8E580000000ULL, 0x41E0000000000000ULL, 0x0000000000000000ULL}, + {0xFC022040, 0xFC218100, 0x80000000, + 0xBF93C51720000000ULL, 0x3FA7EEE6C0000000ULL, 0xBFF0000000000000ULL, 0xBFAD149320000000ULL}, + {0xFCC2327A, 0xFC214100, 0x80000000, + 0x3FE3333333333303ULL, 0x3F589C50079BC3B4ULL, 0x3FE3333333333303ULL, 0x3FDB75ED8BB170F9ULL}, + {0xFC412028, 0xFC214100, 0x40000084, + 0x41E1048340000000ULL, 0x41E1048340000000ULL, 0x41E0000000000000ULL, 0x0000000000000000ULL}, + {0xEC280828, 0xFC21E100, 0x40000000, + 0xC034D6FA60000000ULL, 0xBFE555F7C0000000ULL, 0xC034D6FA60000000ULL, 0xC02DFB5280000000ULL}, + {0xFC5F07F2, 0xFC214100, 0x80000021, + 0x0000000000000000ULL, 0x3FA0154649B0C9F6ULL, 0x3FB8E83400000000ULL, 0x3FA0154649B0C9F6ULL}, + {0xEC340FB8, 0xFC21C100, 0x40000000, + 0xBFEA1F4CA0000000ULL, 0x40325FE540000000ULL, 0xBFEA1F4CA0000000ULL, 0xBFA93AD2E0000000ULL}, + {0xEC0A0032, 0xFC21E100, 0x40000000, + 0xC02DA4B3A0000000ULL, 0x3F42E5D3C0000000ULL, 0xC02DA4B3A0000000ULL, 0xC02DA4B3A0000000ULL}, + {0xEC050032, 0xFC218100, 0x40000000, + 0x3FDA717A20000000ULL, 0xBFA4F17820000000ULL, 0x3FDA717A20000000ULL, 0x3FDA717A20000000ULL}, + {0xFC00001E, 0xFC21C100, 0x20000000, + 0x41C86335E0000000ULL, 0x41C86335E0000000ULL, 0x41C86335E0000000ULL, 0x41C86335E0000000ULL}, + {0xEC0301BA, 0xFC21C100, 0x40000021, + 0xBFF8263380000000ULL, 0xBFD85222C0000000ULL, 0xBFF8263380000000ULL, 0x3FF0000000000000ULL}, + {0xFC000132, 0xFC21C100, 0x80000002, + 0x3E50B6C6013379CAULL, 0x3E50B6C6013379CAULL, 0x3E50B6C6013379CAULL, 0x3FEEC709DC3A03FDULL}, + {0xFC2B09BA, 0xFC21E100, 0x40000000, + 0xBE686454EF30D4D9ULL, 0xBE34D0520D79D0A5ULL, 0xBE686454EF30D4D9ULL, 0x4008027300000000ULL}, + {0xEC04007A, 0xFC21C100, 0x40000008, + 0x3FBDB8F9A0000000ULL, 0x0000000000000000ULL, 0x3FBDB8F9A0000000ULL, 0x3FEB2335C0000000ULL}, + {0xFC003828, 0xFC21C100, 0x80000000, + 0x3FC662F300000000ULL, 0x3FC662F300000000ULL, 0x3FC662EDF47EBF00ULL, 0x3FC662F300000000ULL}, + {0xFC22082A, 0xFC21C100, 0x40000000, + 0xC0EEC4FF20000000ULL, 0x7E37E43C8800759CULL, 0xC0EEC4FF20000000ULL, 0x0000000000000000ULL}, + {0xEC210272, 0xFC21E100, 0x40000000, + 0xBF799AA000000000ULL, 0xBF799AA000000000ULL, 0x3F639B7E20000000ULL, 0xBFB79DF3A0000000ULL}, + {0xFC22082A, 0xFC214100, 0x40000084, + 0x40E0EFA060000000ULL, 0x7E37E43C8800759CULL, 0x40E0EFA060000000ULL, 0x0000000000000000ULL}, + {0xEC04007A, 0xFC21E100, 0x40000084, + 0x0000000000000000ULL, 0x3FDB33E9E0000000ULL, 0x0000000000000000ULL, 0xBF8DED17E0000000ULL}, + {0xFC010000, 0xFC212100, 0x20000000, + 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL}, + {0xEC04007A, 0xFC21E100, 0x40000000, + 0x0000000000000000ULL, 0x3FDB33E9E0000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL}, + {0xFC010040, 0xFC21C100, 0x40000000, + 0x0000000000000000ULL, 0x3FE7FA7C80000000ULL, 0x0000000000000000ULL, 0x3FE7FA7C80000000ULL}, + {0xFCC2327A, 0xFC21C100, 0x80000021, + 0x3FE3333333333303ULL, 0x3F270AAC8DCD03D2ULL, 0x3FE3333333333303ULL, 0x3FDB6EACABAD2B5FULL}, + {0xFC001840, 0xFC21E100, 0x40000000, + 0xBFBC309AC0000000ULL, 0xBFBC309AC0000000ULL, 0xBF7A391000000000ULL, 0x402531EE80000000ULL}, + {0xFC010000, 0xFC21C100, 0x80000000, + 0x0000000000000000ULL, 0x41E0ADE9E0000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL}, + {0xFC29307A, 0xFC21C100, 0x80000000, + 0xBEBBA8CEFA633946ULL, 0x3FBD740FD97A1438ULL, 0x3F11566AAF25DE2CULL, 0xBEBBA8CEFA633946ULL}, + {0xFC8A0072, 0xFC21C100, 0x80000084, + 0x3FC555555555553EULL, 0xBFD321BC53AA5805ULL, 0x3C553B305FB50C1CULL, 0xBFD41563C0EAAFFFULL}, + {0xFC29207A, 0xFC21C100, 0x80000000, + 0xBF66B5A1E4F0BD32ULL, 0x3FB5CE8DDB92CBEFULL, 0x3FC555555555553EULL, 0xBF66B5A1E4F0BD32ULL}, + {0xEC000032, 0xFC21C100, 0x40000000, + 0xBFC6B87940000000ULL, 0xBFC6B87940000000ULL, 0xBFC6B87940000000ULL, 0xBFC6B87940000000ULL}, + {0xFC0A0028, 0xFC21E100, 0x80000000, + 0x3FD18FDF2BAC2000ULL, 0x3FD18FDFB73744B0ULL, 0x3FD18FDF2BAC2000ULL, 0x3FD18FDF2BAC2000ULL}, + {0xFC20081E, 0xFC214100, 0x40000000, + 0x40ED100000000000ULL, 0x0000000000000000ULL, 0x40ED100000000000ULL, 0x0000000000000000ULL}, + {0xFC29507C, 0xFC21E100, 0x80000000, + 0x3FC54B57F2B6B604ULL, 0x3FBC2B7CECD705B1ULL, 0x3FD53AE9268FFF52ULL, 0x3FC54B57F2B6B604ULL}, + {0xEC540732, 0xFC214100, 0x40000002, + 0x7E37E43C8800759CULL, 0xBFFF228400000000ULL, 0x0000000000000000ULL, 0x3FDAFBDC20000000ULL}, + {0xFD2A02B2, 0xFC21C100, 0x80000008, + 0x3FCAAEBE4E4751F2ULL, 0x3FCAAEBE4E4751F2ULL, 0x3FCAAEBCF0782000ULL, 0x3FCAAEBE4E4751F2ULL}, + {0xFC000840, 0xFC214100, 0x40000000, + 0x40387B7E40000000ULL, 0x40387B7E40000000ULL, 0x406FE00000000000ULL, 0x406FE00000000000ULL}, + {0xEEBAC024, 0xFC218100, 0x80000000, + 0x0000000000000000ULL, 0xC0154B0000000000ULL, 0xC037154000000000ULL, 0x0000000000000000ULL}, + {0xED860028, 0xFC216100, 0x20000008, + 0xBF6C65CC00000000ULL, 0xBFA125BA40000000ULL, 0xBFA9B89760000000ULL, 0xBFA9B89760000000ULL}, + {0xFC20182A, 0xFC21C100, 0x80000000, + 0xBEB627138C2FB8E6ULL, 0xBEE8138F7185F71DULL, 0xC049919C22377000ULL, 0xBEE8138F7185F71DULL}, + {0xEC010028, 0xFC21C100, 0x40000000, + 0x40C84A53C0000000ULL, 0x40C84AC000000000ULL, 0x40C84A53C0000000ULL, 0x40C84A53C0000000ULL}, + {0xFC1FF000, 0xFC214100, 0x60000000, + 0x0000000000000000ULL, 0x3FD72B0640000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL}, + {0xFC01482A, 0xFC21C100, 0x80000000, + 0x433000007FFFFFFFULL, 0x400802DD9601EC82ULL, 0x3EB3BDB6B5F38747ULL, 0x433000007FFFFFFFULL}, + {0xFC264028, 0xFC21C100, 0x80000000, + 0x400806ED77403542ULL, 0x400806F100000000ULL, 0x4008000000000000ULL, 0x400806F1134D5BE2ULL}, + {0xFD610028, 0xFC21C100, 0x80000084, + 0x3FE62E4300000000ULL, 0x3E47AE9D93EA18CEULL, 0x3E47AE9D94000000ULL, 0x3E47AE9D94000000ULL}, + {0xFC02002A, 0xFC21C100, 0x80000008, + 0x3FE5F338BA2FB3B1ULL, 0xBFF0000000000000ULL, 0x3FE5F338BA2FB3B1ULL, 0x3FE5F338BA2FB3B1ULL}, + {0xEC5F0032, 0xFC21C100, 0x40000000, + 0x404D37EBC0000000ULL, 0x3FD7E0A380000000ULL, 0x4039D8C7E0000000ULL, 0x4039D8C7E0000000ULL}, + {0xEC02007A, 0xFC21C100, 0x40000000, + 0x403D7F4B40000000ULL, 0x3FF0000000000000ULL, 0x403D7F4B40000000ULL, 0x3D5CF14CC0000000ULL}, + {0xEC04007A, 0xFC21A100, 0x40000000, + 0x0000000000000000ULL, 0xBFDBF4AAA0000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL}, + {0xEC0300BA, 0xFC21C100, 0x40000000, + 0x400D258140000000ULL, 0x0000000000000000ULL, 0x400D258140000000ULL, 0x38B3126260000000ULL}, + {0xEC010028, 0xFC21C100, 0x40000000, + 0x40C820B3C0000000ULL, 0x40C81E16A0000000ULL, 0x40C820B3C0000000ULL, 0x40C820B3C0000000ULL}, + {0xFC010000, 0xFC214100, 0x80000000, + 0x0000000000000000ULL, 0x41E0B247A0000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL}, + {0xEC020032, 0xFC21C100, 0x80000021, + 0xBFE5A80000000000ULL, 0x3FDA700000000000ULL, 0xBFE5A80000000000ULL, 0xBFE5A80000000000ULL}, + {0xFC021840, 0xFC214100, 0x40000000, + 0x3FD3AAB1A0000000ULL, 0x3FAA409B00000000ULL, 0x3FF0000000000000ULL, 0xBFE2863060000000ULL}, + {0xEC632028, 0xFC214100, 0x40000021, + 0x4330000080003129ULL, 0x4330000080003129ULL, 0x4330000080000000ULL, 0x40C84B4000000000ULL}, + {0xFC010040, 0xFC214100, 0x20000002, + 0x3FF0000000000000ULL, 0x3FC0400000000000ULL, 0x3FF0000000000000ULL, 0x3FC0400000000000ULL}, + {0xFC003828, 0xFC21E100, 0x40000000, + 0xBFC7248600000000ULL, 0xBFC7248600000000ULL, 0xBFC7248660944600ULL, 0xBFC7248600000000ULL}, + {0xEC3B1778, 0xFC21C100, 0x40000021, + 0xFFF8000000037A4BULL, 0xC050B62260000000ULL, 0xC04ED300A0000000ULL, 0x3FE17EB3A0000000ULL}, + {0xFC66002A, 0xFC21C100, 0x80000000, + 0xC000000000000000ULL, 0x0000000000000000ULL, 0x3E4B837038A4324CULL, 0x3E4B837038A4324CULL}, + {0xEC0300BA, 0xFC21C100, 0x40000000, + 0x400D258140000000ULL, 0x3FF0000000000000ULL, 0x400D258140000000ULL, 0x401E6DA3A0000000ULL}, + {0xEC410032, 0xFC21C100, 0x40000000, + 0x3FEC6D5C60000000ULL, 0x38AA4012A0000000ULL, 0x406732F000000000ULL, 0x406732F000000000ULL}, + {0xFC000840, 0xFC214100, 0x40000000, + 0x403AD3A3A0000000ULL, 0x403AD3A3A0000000ULL, 0x406FE00000000000ULL, 0x406FE00000000000ULL}, + {0xFF011800, 0xFC214100, 0x40000084, + 0xC03D168000000000ULL, 0x41E0D93020000000ULL, 0x41F0000000000000ULL, 0x0000000000000000ULL}, + {0xEC02007A, 0xFC214100, 0x20000084, + 0x3FE0000000000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x40C8789BE0000000ULL}, + {0xFC4C0332, 0xFC214100, 0x80000000, + 0x3F61FEDC73089704ULL, 0x3FA7FF3D00000000ULL, 0x433000007FFFFFFFULL, 0x3FA7FF3D00000000ULL}, + {0xFC240032, 0xFC21C100, 0x80000000, + 0x3FDBC96800000000ULL, 0x4053333340000000ULL, 0xBE77BCDEE3517CFBULL, 0xBE77BCDEE3517CFBULL}, + {0xFC01002A, 0xFC21C100, 0x40000000, + 0x402D25FB40000000ULL, 0x3FE0000000000000ULL, 0x402D25FB40000000ULL, 0x402D25FB40000000ULL}, + {0xFD22183A, 0xFC21C100, 0x40000000, + 0x3FEE758DE0000000ULL, 0x3F43F0F450A2AF2EULL, 0x3FDB6DB6DB6FABFFULL, 0x3FD5580DCF34335FULL}, + {0xEC3B07F2, 0xFC21C100, 0x40000000, + 0xFFF800000001B388ULL, 0xC0080C4C00000000ULL, 0x403A3483C0000000ULL, 0x3FBC4FF400000000ULL}, + {0xFCE601B2, 0xFC216100, 0x40000084, + 0x3D0135BDB6C717BBULL, 0x3E7777A5CF72CECEULL, 0x3B19D747F23E3400ULL, 0x3E7777A5CF72CECEULL}, + {0xEC8221BA, 0xFC21C100, 0x40000000, + 0xBFCF252D00000000ULL, 0xBFD6D62380000000ULL, 0xBFCF252D00000000ULL, 0x3FE08EF280000000ULL}, + {0xFC02083A, 0xFC21C100, 0x40000002, + 0x40287220C0000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x40287220C0000000ULL}, + {0xFC020040, 0xFC214100, 0x40000000, + 0x40C82D53C0000000ULL, 0x40C82B3E60000000ULL, 0x40C82D53C0000000ULL, 0x40C83196A0000000ULL}, + {0xEC00097A, 0xFC214100, 0x40000000, + 0x0000000000000000ULL, 0x0000000000000000ULL, 0x3FEF838560000000ULL, 0xBFF8836F80000000ULL}, + {0xFC264028, 0xFC21C100, 0x80000008, + 0x40080E638D968448ULL, 0x40080E7300000000ULL, 0x4008000000000000ULL, 0x40080E732904BAB5ULL}, + {0xEC80217A, 0xFC21C100, 0x40000021, + 0xBFC6FDD080000000ULL, 0xBFBF9CE8E0000000ULL, 0xBFC6FDD080000000ULL, 0xBFE9E377C0000000ULL}, + {0xEC0A0032, 0xFC21E100, 0x40000000, + 0x402C0DB300000000ULL, 0x3F4BCBDD20000000ULL, 0x402C0DB300000000ULL, 0x402C0DB300000000ULL}, + {0xFDA93828, 0xFC21C100, 0x40000000, + 0xBF7A1FD000000000ULL, 0x3FEBE07E40000000ULL, 0x3FEBE07E00000000ULL, 0x3FD56A9B1428A449ULL}, + {0xFC293A3A, 0xFC21C100, 0x80000000, + 0xBE3940FA5B363A18ULL, 0x3F2AD851D9D28D7EULL, 0xBEBBBD41C5D26BF1ULL, 0x3E66376972BEA4D0ULL}, + {0xEC001028, 0xFC21C100, 0x80000000, + 0x433000007BB99B30ULL, 0x433000007BB99B30ULL, 0x4330000080000000ULL, 0x433000007BB99B30ULL}, + {0xFC211028, 0xFC21C100, 0x80000021, + 0xBFEB235300000000ULL, 0xBFEB235300000000ULL, 0xBFF0000000000000ULL, 0x0000000000000000ULL}, + {0xEEE01824, 0xFC218100, 0x80000000, + 0x0000000000000000ULL, 0xC030C7C000000000ULL, 0xC013FC0000000000ULL, 0xC030C7C000000000ULL}, + {0xFC29207A, 0xFC21E100, 0x80000002, + 0xBF66BBA7D6AA6A3DULL, 0x3FA54F1C1623117CULL, 0x3FC555555555553EULL, 0xBF66BBA7D6AA6A3DULL}, + {0xFC010040, 0xFC21C100, 0x80000000, + 0x0000000000000000ULL, 0x7E37E43C8800759CULL, 0x0000000000000000ULL, 0x7E37E43C8800759CULL}, + {0xFC00001E, 0xFC214100, 0x20000008, + 0x41C80AA6E0000000ULL, 0x41C80AA6E0000000ULL, 0x41C80AA6E0000000ULL, 0x41C80AA6E0000000ULL}, + {0xEC020032, 0xFC218100, 0x80000008, + 0xC013A70000000000ULL, 0xBFFF600000000000ULL, 0xC013A70000000000ULL, 0xC013A70000000000ULL}, + {0xEC03007C, 0xFC21E100, 0x40000084, + 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x3FF0000000000000ULL}, + {0xFF011800, 0xFC214100, 0x40000008, + 0xC012B30000000000ULL, 0x41E10924C0000000ULL, 0x41F0000000000000ULL, 0x0000000000000000ULL}, + {0xFC2C0072, 0xFC21C100, 0x80000021, + 0xBE205C610CA86C39ULL, 0x3FA0D65700000000ULL, 0xBF096CD336B84B0AULL, 0xBE205C610CA86C39ULL}, + {0xFC032040, 0xFC21C100, 0x40000000, + 0x3FE7B97B80000000ULL, 0x3FEFFFF020000000ULL, 0x0000000000000000ULL, 0x3FE3E0C9E0000000ULL}, + {0xEC050032, 0xFC218100, 0x40000000, + 0x3FEFA67E20000000ULL, 0x0000000000000000ULL, 0x3FEFA67E20000000ULL, 0x3FEFA67E20000000ULL}, + {0xFC010040, 0xFC214100, 0x80000084, + 0x0000000000000000ULL, 0x7E37E43C8800759CULL, 0x0000000000000000ULL, 0x7E37E43C8800759CULL}, + {0xFC012040, 0xFC218100, 0x80000000, + 0x3F9B8E2D00000000ULL, 0xBFEB393520000000ULL, 0xBFF0000000000000ULL, 0xBFEB393520000000ULL}, + {0xED262828, 0xFC21E100, 0x20000021, + 0xBF8FE4F7A0000000ULL, 0xBFC5371E40000000ULL, 0x0000000000000000ULL, 0xBF62E73580000000ULL}, + {0xFC002040, 0xFC218100, 0x40000000, + 0xBFC3C42060000000ULL, 0xBFC3C42060000000ULL, 0xBFF0000000000000ULL, 0xBFE6E4E4E0000000ULL}, + {0xEC0000F2, 0xFC21C100, 0x40000000, + 0x3FC3AA7C40000000ULL, 0x3FC3AA7C40000000ULL, 0x3FC3AA7C40000000ULL, 0x3FEFFFF7A0000000ULL}, + {0xEC441028, 0xFC21E100, 0x40000002, + 0xBFF4BFC580000000ULL, 0x3FE6F04A60000000ULL, 0xBFF4BFC580000000ULL, 0xC0188F3D40000000ULL}, + {0xFC410178, 0xFC216100, 0x40000084, + 0x3DE0B4611A600000ULL, 0x3BA3198A2E037073ULL, 0x0000000000000000ULL, 0x4000000000000000ULL}, + {0xEC020828, 0xFC218100, 0x80000008, + 0x0000000000000000ULL, 0x40C8399DE0000000ULL, 0x40C83AA700000000ULL, 0x0000000000000000ULL}, + {0xFC201890, 0xFC214100, 0x40000000, + 0x402006ED60000000ULL, 0x3FC77AF500000000ULL, 0x3FEFFFFCE0000000ULL, 0x3FFEDDDA60000000ULL}, + {0xEC010028, 0xFC21C100, 0x20000000, + 0x40C80FCC20000000ULL, 0x40C8104000000000ULL, 0x40C80FCC20000000ULL, 0x40C80FCC20000000ULL}, + {0xECAB0B38, 0xFC21E100, 0x40000084, + 0x0000000000000000ULL, 0xBF82996000000000ULL, 0xBF42AD1440000000ULL, 0x3F9EBEBB00000000ULL}, + {0xEC0A0032, 0xFC21E100, 0x40000000, + 0xC023332400000000ULL, 0xBF4887EEE0000000ULL, 0xC023332400000000ULL, 0xC023332400000000ULL}, + {0xFC00001E, 0xFC21C100, 0x80000008, + 0x413A1A5CE0000000ULL, 0x413A1A5CE0000000ULL, 0x413A1A5CE0000000ULL, 0x413A1A5CE0000000ULL}, + {0xEE831028, 0xFC21C100, 0x40000021, + 0x0000000000000000ULL, 0x403A9914A0000000ULL, 0x403B51C0A0000000ULL, 0x4039D91200000000ULL}, + {0xFD2A01B2, 0xFC21C100, 0x40000000, + 0x3FDB6DB6F96B649BULL, 0x3CFF9AF9D08958C4ULL, 0x433000007FFFFFFFULL, 0x3FE333334679976AULL}, + {0xFC010040, 0xFC218100, 0x80000021, + 0x40C8512440000000ULL, 0x40C852BB60000000ULL, 0x40C8512440000000ULL, 0x40C852BB60000000ULL}, + {0xEC540732, 0xFC214100, 0x40000000, + 0x7E37E43C8800759CULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x3FD3A52840000000ULL}, + {0xFC021840, 0xFC214100, 0x40000008, + 0x3FB4BD75C0000000ULL, 0x3FB02D7740000000ULL, 0x3FF0000000000000ULL, 0xBFEA4949E0000000ULL}, + {0xEC80217A, 0xFC21C100, 0x40000084, + 0x3FC67DF1E0000000ULL, 0x3FCCBD5560000000ULL, 0x3FC67DF1E0000000ULL, 0xBFEC411BC0000000ULL}, + {0xECA301B2, 0xFC214100, 0x40000000, + 0xBFF9E37800000000ULL, 0x3FEFFFEE60000000ULL, 0x3FDF90C1E0000000ULL, 0x3FEEEB48E0000000ULL}, + {0xFC29002A, 0xFC214100, 0x80000008, + 0x3FD184E720000000ULL, 0x3FF184E720000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL}, + {0xEC220828, 0xFC21C100, 0x80000021, + 0x40C81F4C00000000ULL, 0x40C81E78A0000000ULL, 0x40C81F4C00000000ULL, 0xBFF31D7400000000ULL}, + {0xEC600828, 0xFC214100, 0x20000000, + 0x40F0000000000000ULL, 0x41E0DF1760000000ULL, 0x41E0D80F80000000ULL, 0x41E0DF1760000000ULL}, + {0xEC22007A, 0xFC21C100, 0x20000000, + 0xC00C2F9360000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0xC00C2F9360000000ULL}, + {0xEC0A0032, 0xFC21E100, 0x40000084, + 0xC02C50C1A0000000ULL, 0xBF7415B780000000ULL, 0xC02C50C1A0000000ULL, 0xC02C50C1A0000000ULL}, + {0xEC2300BA, 0xFC214100, 0x80000021, + 0xFFF80000FFFDAE6AULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0xC00599A9E0000000ULL}, + {0xEC22007A, 0xFC21C100, 0x20000084, + 0x402210D6C0000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x402210D6C0000000ULL}, + {0xFC240824, 0xFC21E100, 0x80000000, + 0xBFFE42ABFD75FBCFULL, 0x3F88A9F36FA7C966ULL, 0xBFFE42ABFD75FBCFULL, 0x3C583567693AB4D3ULL}, + {0xED291378, 0xFC21E100, 0x40000000, + 0xBF95785240000000ULL, 0xBF95785240000000ULL, 0x8000000000000000ULL, 0x3F86849000000000ULL}, + {0xEC3B07F2, 0xFC21C100, 0x40000000, + 0xFFF800000002B701ULL, 0xBFFE071900000000ULL, 0x402396C6E0000000ULL, 0x3FD1E968E0000000ULL}, + {0xFCC2327A, 0xFC214100, 0x80000000, + 0x3FE3333333333303ULL, 0x3EB870C448069815ULL, 0x3FE3333333333303ULL, 0x3FDB6DB8E4D58508ULL}, + {0xFC20081E, 0xFC214100, 0x80000084, + 0xC0F4424000000000ULL, 0x0000000000000000ULL, 0xC0F4424000000000ULL, 0x0000000000000000ULL}, + {0xEC0300BA, 0xFC21C100, 0x40000008, + 0x4020E2D460000000ULL, 0x3FF0000000000000ULL, 0x4020E2D460000000ULL, 0x3B4865C960000000ULL}, + {0xFD201028, 0xFC21C100, 0x80000000, + 0x3EC8868262C8892EULL, 0xBF17BCD5F3074727ULL, 0xBF17B97B00000000ULL, 0xBF17BCD5F3074727ULL}, + {0xFF812000, 0xFC218100, 0x40000084, + 0x3FD67962E0000000ULL, 0x41E0C455E0000000ULL, 0x41E0000000000000ULL, 0x0000000000000000ULL}, + {0xFD2B49BA, 0xFC21C100, 0x80000021, + 0x3DE21213EE91AE87ULL, 0xBDFF536B2A9CFBAFULL, 0x3DE21213EE91AE87ULL, 0xBF7F84C21F536B2AULL}, + {0xEC630132, 0xFC214100, 0x40000002, + 0x3FAEEB4180000000ULL, 0x3FAEEB4180000000ULL, 0x3FD25C28E0000000ULL, 0x40008809A0000000ULL}, + {0xFC001800, 0xFC214100, 0x40000084, + 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FEFFFF200000000ULL, 0x3FF0000000000000ULL}, + {0xEC09007A, 0xFC21E100, 0x40000000, + 0x3FB0284EE0000000ULL, 0x3F7C271B80000000ULL, 0x3FB0284EE0000000ULL, 0xC02531ED20000000ULL}, + {0xFC200090, 0xFC218100, 0x80000000, + 0xBFE2A58D20000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xBFCB508640000000ULL}, + {0xFC003828, 0xFC21C100, 0x80000000, + 0xBFD01A3280000000ULL, 0xBFD01A3280000000ULL, 0xBFD01A3260E4C100ULL, 0xBFD01A3280000000ULL}, + {0xEEC2C824, 0xFC218100, 0x80000000, + 0x0000000000000000ULL, 0x4015820000000000ULL, 0xBFEA180000000000ULL, 0x0000000000000000ULL}, + {0xEC3B1778, 0xFC21C100, 0x80000000, + 0xFFF80000FFFFC979ULL, 0xC006597E00000000ULL, 0xBFA3A5EC40000000ULL, 0xBFB04C2260000000ULL}, + {0xFC29287A, 0xFC21E100, 0x80000000, + 0x3F1155637151D971ULL, 0x3F82FBED9E3D2C7BULL, 0xBF66C16C16BEBD93ULL, 0x3F1155637151D971ULL}, + {0xFD4200B2, 0xFC214100, 0x80000000, + 0x3E7C62D400000000ULL, 0x3F68B6E982360300ULL, 0x433000007FFFFFFBULL, 0x3F68B6E982360300ULL}, + {0xEC0300BA, 0xFC21C100, 0x40000000, + 0x4016AB6480000000ULL, 0x3FF0000000000000ULL, 0x4016AB6480000000ULL, 0x4004B012A0000000ULL}, + {0xEC0901FA, 0xFC21E100, 0x40000000, + 0xBF0AB4A700000000ULL, 0xBF33E4E160000000ULL, 0xBF0AB4A700000000ULL, 0x3F9D775140000000ULL}, + {0xEC050032, 0xFC21C100, 0x40000002, + 0xBFA1DB8800000000ULL, 0x3FC0918200000000ULL, 0xBFA1DB8800000000ULL, 0xBFA1DB8800000000ULL}, + {0xEC441028, 0xFC21E100, 0x40000000, + 0xC03DFFFFE0000000ULL, 0x3FE6F39FA0000000ULL, 0xC03DFFFFE0000000ULL, 0xBFD603BE60000000ULL}, + {0xEC24507A, 0xFC21C100, 0x20000000, + 0xC034B1E200000000ULL, 0x3FF0000000000000ULL, 0x40C84A4000000000ULL, 0xC034B1E200000000ULL}, + {0xED4A0078, 0xFC21E100, 0x20000000, + 0x0000000000000000ULL, 0x0000000000000000ULL, 0xBF8C614840000000ULL, 0x3F89E07200000000ULL}, + {0xEC23082A, 0xFC21C100, 0x20000021, + 0x40C8480000000000ULL, 0x3FE0000000000000ULL, 0x40C8480000000000ULL, 0x40C847F740000000ULL}, + {0xFD6C537C, 0xFC214100, 0x80000002, + 0x41DFFFFEE0000000ULL, 0x3FA3E18100000000ULL, 0x3E75584B00000000ULL, 0x3EA8000000000000ULL}, + {0xEC0301F2, 0xFC21C100, 0x20000000, + 0x3F98D8BB20000000ULL, 0x3FA4C203E0000000ULL, 0x3F98D8BB20000000ULL, 0x41DFFFFEE0000000ULL}, + {0xEC050032, 0xFC21C100, 0x40000000, + 0x3FC5E3A840000000ULL, 0x3FE26050C0000000ULL, 0x3FC5E3A840000000ULL, 0x3FC5E3A840000000ULL}, + {0xEC8221BA, 0xFC216100, 0x40000008, + 0x0000000000000000ULL, 0x3FF0000000000000ULL, 0x0000000000000000ULL, 0x3FC63A1A80000000ULL}, + {0xFC090028, 0xFC214100, 0x40000000, + 0x3FF0000000000000ULL, 0x3FEC065960000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL}, + {0xFC003828, 0xFC21C100, 0x80000000, + 0xBFBFE21A00000000ULL, 0xBFBFE21A00000000ULL, 0xBFBFE21B7C52B000ULL, 0xBFBFE21A00000000ULL}, + {0xEC010028, 0xFC21C100, 0x40000000, + 0x40C8496840000000ULL, 0x40C83F99C0000000ULL, 0x40C8496840000000ULL, 0x40C8496840000000ULL}, + {0xFC010040, 0xFC21C100, 0x40000002, + 0x0000000000000000ULL, 0x7E37E43C8800759CULL, 0x0000000000000000ULL, 0x7E37E43C8800759CULL}, + {0xFC010040, 0xFC214100, 0x80000084, + 0x0000000000000000ULL, 0x7E37E43C8800759CULL, 0x0000000000000000ULL, 0x7E37E43C8800759CULL}, + {0xEF601028, 0xFC214100, 0x40000000, + 0x3FEB5D2000000000ULL, 0x40409642C0000000ULL, 0x4040069720000000ULL, 0x40409642C0000000ULL}, + {0xFC010040, 0xFC21C100, 0x80000000, + 0x0000000000000000ULL, 0x7E37E43C8800759CULL, 0x0000000000000000ULL, 0x7E37E43C8800759CULL}, + {0xFC264028, 0xFC21E100, 0x40000084, + 0x4008000012793E87ULL, 0x4008000000000000ULL, 0x4008000000000000ULL, 0x400800001279400DULL}, + {0xFC05023A, 0xFC21E100, 0x40000000, + 0xBE30E7B90F01D7F9ULL, 0xBE3E2FE0145B01F5ULL, 0xBE30E7B90F01D7F9ULL, 0xBF930D8400000000ULL}, + {0xEC050032, 0xFC21C100, 0x40000000, + 0x3FDFD31F80000000ULL, 0xBFCE8F2980000000ULL, 0x3FDFD31F80000000ULL, 0x3FDFD31F80000000ULL}, + {0xEC2408BC, 0xFC214100, 0x40000021, + 0x4028000000000000ULL, 0x4000880980000000ULL, 0x4028000000000000ULL, 0x3FFEDDDA80000000ULL}, + {0xFC010000, 0xFC212100, 0x20000000, + 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL}, + {0xFC001840, 0xFC214100, 0x40000002, + 0x3FE0DDB980000000ULL, 0x3FE0DDB980000000ULL, 0x3FF0000000000000ULL, 0x3FE1B2F360000000ULL}, + {0xFC601828, 0xFC214100, 0x80000021, + 0x4330000080000000ULL, 0x433000007FFFFFFFULL, 0x4330000080000000ULL, 0x433000007FFFFFFFULL}, + {0xEC59C024, 0xFC214100, 0x20000000, + 0xFFF800000594BD00ULL, 0xC010DB0000000000ULL, 0xC02F500000000000ULL, 0x0000000000000000ULL}, + {0xEC23007A, 0xFC21C100, 0x40000000, + 0x3FC8A4A100000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x3FC8A4A100000000ULL}, + {0xEC23082A, 0xFC21C100, 0x40000000, + 0x40C8610000000000ULL, 0x3FE0000000000000ULL, 0x40C8610000000000ULL, 0x40C86125A0000000ULL}, + {0xEC01002A, 0xFC21C100, 0x40000084, + 0xBFC400A980000000ULL, 0x0000000000000000ULL, 0xBFC400A980000000ULL, 0xBFC400A980000000ULL}, + {0xEC280828, 0xFC21A100, 0x20000021, + 0xBFB5DE9CC0000000ULL, 0xBFB2A588E0000000ULL, 0xBFB5DE9CC0000000ULL, 0x3F9D775140000000ULL}, + {0xFC0308BA, 0xFC21E100, 0x80000000, + 0xBFFB9D92E98F0000ULL, 0xBF97035000000000ULL, 0xBE972303E4F9CC49ULL, 0x3EF0000000000000ULL}, + {0xFC00001E, 0xFC214100, 0x80000000, + 0x41373BEEA0000000ULL, 0x41373BEEA0000000ULL, 0x41373BEEA0000000ULL, 0x41373BEEA0000000ULL}, + {0xEC0000F2, 0xFC21C100, 0x40000000, + 0x3FEC01ACA0000000ULL, 0x3FEC01ACA0000000ULL, 0x3FEC01ACA0000000ULL, 0x3FF0000040000000ULL}, + {0xEC060028, 0xFC21E100, 0x40000008, + 0xC024D6F9E0000000ULL, 0xBFB2A588E0000000ULL, 0xC024D6F9E0000000ULL, 0xC024D6F9E0000000ULL}, + {0xEC23007A, 0xFC21C100, 0x80000000, + 0xBFD9F23480000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0xBFD9F23480000000ULL}, + {0xEC0300BA, 0xFC21E100, 0x40000008, + 0x4036D8B820000000ULL, 0x3FF0000000000000ULL, 0x4036D8B820000000ULL, 0x3EB49EE1C0000000ULL}, + {0xFC00001E, 0xFC21C100, 0x40000000, + 0xC1121B3B80000000ULL, 0xC1121B3B80000000ULL, 0xC1121B3B80000000ULL, 0xC1121B3B80000000ULL}, + {0xEC0301F2, 0xFC21C100, 0x20000000, + 0x3FE29E93C0000000ULL, 0x3FABF607A0000000ULL, 0x3FE29E93C0000000ULL, 0x41DFFFFEE0000000ULL}, + {0xFC4C1828, 0xFC21C100, 0x80000008, + 0x3FCF8CFDD29BAE39ULL, 0x3FCF8CFD00000000ULL, 0x3FCF8FCC34600000ULL, 0xBF16730E228E36D4ULL}, + {0xFF011800, 0xFC214100, 0x40000084, + 0xC008840000000000ULL, 0x41E105C0A0000000ULL, 0x41F0000000000000ULL, 0x0000000000000000ULL}, + {0xEC210132, 0xFC21C100, 0x40000002, + 0x3FE0D2F800000000ULL, 0x3FE0D2F800000000ULL, 0x3FE71B8880000000ULL, 0x3FD5E3AA60000000ULL}, + {0xEC23082A, 0xFC21C100, 0x40000000, + 0x40C87B8000000000ULL, 0x3FE0000000000000ULL, 0x40C87B8000000000ULL, 0x40C87B9DC0000000ULL}, + {0xFC010040, 0xFC214100, 0x20000000, + 0x3FF0000000000000ULL, 0x3FED780000000000ULL, 0x3FF0000000000000ULL, 0x3FED780000000000ULL}, + {0xEC211028, 0xFC21C100, 0x40000084, + 0x43300000800030A0ULL, 0x43300000800030A0ULL, 0x4330000080000000ULL, 0x40C84FDE20000000ULL}, + {0xEC010028, 0xFC21C100, 0x80000000, + 0x40C88D5880000000ULL, 0x40C88B8920000000ULL, 0x40C88D5880000000ULL, 0x40C88D5880000000ULL}, + {0xFC29307A, 0xFC21C100, 0x80000000, + 0xBEBBACAC51790421ULL, 0x3FB7E30AC62F89C7ULL, 0x3F11566AAF25DE2CULL, 0xBEBBACAC51790421ULL}, + {0xFC400890, 0xFC214100, 0x40000084, + 0x7E37E43C8800759CULL, 0x0000000000000000ULL, 0x41E0E0E700000000ULL, 0x7E37E43C8800759CULL}, + {0xEC22007A, 0xFC214100, 0x20000084, + 0x3FCBF06800000000ULL, 0x3FE1900000000000ULL, 0x40C847B3E0000000ULL, 0x3FCBF06800000000ULL}, + {0xFC000132, 0xFC21C100, 0x80000000, + 0xBE358D4F01AAFD08ULL, 0xBE358D4F01AAFD08ULL, 0xBE358D4F01AAFD08ULL, 0x3FEEC709DC3A03FDULL}, + {0xFC0C02F2, 0xFC21C100, 0x80000000, + 0xBEF6F52A4A4BA848ULL, 0xBFD458F100000000ULL, 0xBEF6F52A4A4BA848ULL, 0x3FE62E4300000000ULL}, + {0xFC0200F2, 0xFC21E100, 0x80000000, + 0xBE661117F449C382ULL, 0x4053333300000000ULL, 0xBE661117F449C382ULL, 0xBFB1D3FC00000000ULL}, + {0xFC020028, 0xFC21C100, 0x80000008, + 0xBFC3317CCF1E643DULL, 0x3FF0000000000000ULL, 0xBFC3317CCF1E643DULL, 0xBFC3317CCF1E643DULL}, + {0xFC29287A, 0xFC21C100, 0x80000008, + 0x3F1149F725D3AF23ULL, 0x3FBCCF0C0D549491ULL, 0xBF66C16C16BEBD93ULL, 0x3F1149F725D3AF23ULL}, + {0xEC6201B2, 0xFC214100, 0x40000000, + 0x3FEFFFFFA0000000ULL, 0x3FB0000000000000ULL, 0x3FEE958AC0000000ULL, 0x3FEEEB4040000000ULL}, + {0xFC041028, 0xFC21E100, 0x20000021, + 0x3DD0B4611A626331ULL, 0x3E77800000000000ULL, 0x3DE0B4611A626331ULL, 0x3DD0B4611A626331ULL}, + {0xEC03007E, 0xFC21C100, 0x40000000, + 0xBFD7A177C0000000ULL, 0xBFDB99F1A0000000ULL, 0xBFD7A177C0000000ULL, 0x3FE65D5560000000ULL}, + {0xFFE00890, 0xFC214100, 0x60000000, + 0x0000000000000000ULL, 0x0000000000000000ULL, 0x3FDEC89AC0000000ULL, 0xBF964B8660000000ULL}, + {0xEC03007C, 0xFC21E100, 0x40000084, + 0x3FED3BC380000000ULL, 0xBFD7C7D840000000ULL, 0x3FED3BC380000000ULL, 0x3FDF30F7C0000000ULL}, + {0xEC03002A, 0xFC21C100, 0x40000021, + 0x3FD303D000000000ULL, 0xC000000000000000ULL, 0x3FD303D000000000ULL, 0x3FD303D000000000ULL}, + {0xEC410032, 0xFC21C100, 0x40000000, + 0x402910EF20000000ULL, 0x0000000000000000ULL, 0x406732F000000000ULL, 0x406732F000000000ULL}, + {0xEC050032, 0xFC218100, 0x40000084, + 0x3FE8F274A0000000ULL, 0xBFA1E44440000000ULL, 0x3FE8F274A0000000ULL, 0x3FE8F274A0000000ULL}, + {0xEC01002A, 0xFC218100, 0x40000008, + 0xBFE60658A0000000ULL, 0x0000000000000000ULL, 0xBFE60658A0000000ULL, 0xBFE60658A0000000ULL}, + {0xEC211028, 0xFC214100, 0x40000000, + 0x43300000800B4D99ULL, 0x43300000800B4D99ULL, 0x4330000080000000ULL, 0x41E110EF00000000ULL}, + {0xEEC2C824, 0xFC218100, 0x80000021, + 0x0000000000000000ULL, 0x400F100000000000ULL, 0xC00F6A0000000000ULL, 0x0000000000000000ULL}, + {0xFC00001E, 0xFC21C100, 0x40000000, + 0x41C81979C0000000ULL, 0x41C81979C0000000ULL, 0x41C81979C0000000ULL, 0x41C81979C0000000ULL}, + {0xEC03002A, 0xFC21C100, 0x40000000, + 0xBFA6374640000000ULL, 0x0000000000000000ULL, 0xBFA6374640000000ULL, 0xBFA6374640000000ULL}, + {0xEC211028, 0xFC214100, 0x20000000, + 0x43300000800030B2ULL, 0x43300000800030B2ULL, 0x4330000080000000ULL, 0x40C858F320000000ULL}, + {0xFC010000, 0xFC212100, 0x20000000, + 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL}, + {0xFC2D07F2, 0xFC21E100, 0x80000000, + 0x3E9597DFC0000000ULL, 0x3EBEA243B8FECB5CULL, 0x3FC0B4374CE7C000ULL, 0x3FA64208B5AA5D59ULL}, + {0xFC22082A, 0xFC21C100, 0x40000000, + 0x40DB102000000000ULL, 0x7E37E43C8800759CULL, 0x40DB102000000000ULL, 0x0000000000000000ULL}, + {0xFC801850, 0xFC21C100, 0x40000021, + 0xBFE5242220000000ULL, 0xBFE2CCD9C0000000ULL, 0x3FF0000000000000ULL, 0xBF988DAFE0000000ULL}, + {0xFC601828, 0xFC214100, 0x80000000, + 0x4330000080000000ULL, 0x433000007FFFFFFFULL, 0x4330000080000000ULL, 0x433000007FFFFFFFULL}, + {0xEC441028, 0xFC21E100, 0x40000000, + 0xC032A0FB60000000ULL, 0x3FEA220D40000000ULL, 0xC032A0FB60000000ULL, 0xC02D0BFD20000000ULL}, + {0xEC03002A, 0xFC21E100, 0x40000000, + 0x3FDA4A8840000000ULL, 0x0000000000000000ULL, 0x3FDA4A8840000000ULL, 0x3FDA4A8840000000ULL}, + {0xEC02007A, 0xFC214100, 0x40000000, + 0x3FF9E87300000000ULL, 0x40203147C0000000ULL, 0x3FF9E87300000000ULL, 0x3FD0000000000000ULL}, + {0xEC600828, 0xFC214100, 0x20000000, + 0x40F0000000000000ULL, 0x41E0F6D9A0000000ULL, 0x41E0F493E0000000ULL, 0x41E0F6D9A0000000ULL}, + {0xEC4C02B2, 0xFC21E100, 0x20000000, + 0x0000000000000000ULL, 0xBFA57851E0000000ULL, 0x3F3E7195C0000000ULL, 0xBFA92EA600000000ULL}, + {0xFC20081E, 0xFC214100, 0x40000084, + 0x40FFAC1000000000ULL, 0x0000000000000000ULL, 0x40FFAC1000000000ULL, 0x0000000000000000ULL}, + {0xEE831028, 0xFC214100, 0x40000000, + 0x0000000000000000ULL, 0x403B5034C0000000ULL, 0x4039CA4F60000000ULL, 0x403D2656C0000000ULL}, + {0xFC28102A, 0xFC21C100, 0x80000000, + 0x3FD70713171FA53CULL, 0x4008000000000000ULL, 0x3F79D5FEF14D9000ULL, 0x433000007FFFFFFEULL}, + {0xFC00001E, 0xFC214100, 0x20000084, + 0x41C87CE260000000ULL, 0x41C87CE260000000ULL, 0x41C87CE260000000ULL, 0x41C87CE260000000ULL}, + {0xEC03007E, 0xFC21C100, 0x40000000, + 0xBFC25CD480000000ULL, 0x3FE3471720000000ULL, 0xBFC25CD480000000ULL, 0x3FE6CC41C0000000ULL}, + {0xEC810132, 0xFC214100, 0x40000084, + 0x3FB37328A0000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x3FB37328A0000000ULL}, + {0xFCC231FA, 0xFC214100, 0x80000002, + 0x3FCD864A93C9DB65ULL, 0x3F466254552CE46FULL, 0x3FCD864A93C9DB65ULL, 0x3FCA7E284A454EEFULL}, + {0xFC000840, 0xFC214100, 0x40000008, + 0x4016AB6480000000ULL, 0x4016AB6480000000ULL, 0x406FE00000000000ULL, 0x406FE00000000000ULL}, + {0xFC01482A, 0xFC21C100, 0x80000000, + 0x433000007FFFFFFEULL, 0x400804A2B777C620ULL, 0x3EC9D7EE83EF03C3ULL, 0x433000007FFFFFFEULL}, + {0xEC0600BA, 0xFC21C100, 0x40000000, + 0x3FEA4C65A0000000ULL, 0x3FE6B73BA0000000ULL, 0x3FEA4C65A0000000ULL, 0xBFCA07FC00000000ULL}, + {0xED291378, 0xFC21E100, 0x40000000, + 0xBFBBC8AD00000000ULL, 0xBFBBC8AD00000000ULL, 0x8000000000000000ULL, 0x0000000000000000ULL}, + {0xEC23007A, 0xFC21C100, 0x80000000, + 0xC01224EAE0000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0xC01224EAE0000000ULL}, + {0xEC02007A, 0xFC21C100, 0x20000000, + 0x3FE0000000000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x40C8239280000000ULL}, + {0xEC22007A, 0xFC214100, 0x40000000, + 0xBFE279A300000000ULL, 0xBFB0AA0FC0000000ULL, 0x3FAA2E2BA0000000ULL, 0xBFE279A300000000ULL}, + {0xFC2B09BA, 0xFC21C100, 0x80000000, + 0x3E504FE5AAA86DFFULL, 0x3E3CF39A67766CCFULL, 0x3E504FE5AAA86DFFULL, 0x4008074200000000ULL}, + {0xEC8321FA, 0xFC216100, 0x40000008, + 0x3FD4D9CC40000000ULL, 0xBFE9751F60000000ULL, 0x3FD4D9CC40000000ULL, 0x8000000000000000ULL}, + {0xEC340FB8, 0xFC21C100, 0x40000000, + 0xBFFEC070A0000000ULL, 0x4020564500000000ULL, 0xBFFEC070A0000000ULL, 0xBFC0A00420000000ULL}, + {0xFC010028, 0xFC21C100, 0x80000000, + 0xBE89A03200000000ULL, 0xBE8F81D25FF2097AULL, 0xBE89A03200000000ULL, 0xBE89A03200000000ULL}, + {0xED262828, 0xFC21E100, 0x20000000, + 0xBF2908C5E0000000ULL, 0x3FC8E4F940000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL}, + {0xFC29207A, 0xFC21E100, 0x80000000, + 0xBF66C07F003648B9ULL, 0x3F7B5AACBFF65094ULL, 0x3FC555555555553EULL, 0xBF66C07F003648B9ULL}, + {0xEC0500BA, 0xFC21E100, 0x40000000, + 0x3F6CCCA720000000ULL, 0xBF7E99E4A0000000ULL, 0x3F6CCCA720000000ULL, 0x403C74E780000000ULL}, + {0xEC050032, 0xFC218100, 0x40000000, + 0x3FB8721D00000000ULL, 0xBFD89B91E0000000ULL, 0x3FB8721D00000000ULL, 0x3FB8721D00000000ULL}, + {0xEC04007A, 0xFC216100, 0x40000084, + 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL}, + {0xFC29207A, 0xFC21E100, 0x80000084, + 0xBF66B39F0CD5774AULL, 0x3FB98933AA6215EDULL, 0x3FC555555555553EULL, 0xBF66B39F0CD5774AULL}, + {0xEC0500BA, 0xFC21E100, 0x40000021, + 0xBF86A27EC0000000ULL, 0xBF75147900000000ULL, 0xBF86A27EC0000000ULL, 0x4038FBF0E0000000ULL}, + {0xEC001028, 0xFC214100, 0x40000000, + 0x433000007FFADE9FULL, 0x433000007FFADE9FULL, 0x4330000080000000ULL, 0x433000007FFADE9FULL}, + {0xFC001840, 0xFC214100, 0x40000000, + 0x3FD4BA5D80000000ULL, 0x3FD4BA5D80000000ULL, 0x3FF0000000000000ULL, 0xBFE685F1E0000000ULL}, + {0xFC0308BA, 0xFC21C100, 0x80000000, + 0xC055BCE1C6085000ULL, 0xBFF21D6700000000ULL, 0xBEF835BDF0228FC7ULL, 0x3EF0000000000000ULL}, + {0xFC00F000, 0xFC21C100, 0x40000021, + 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x0000000000000000ULL, 0x3FF0000000000000ULL}, + {0xFC0C02F2, 0xFC21C100, 0x80000000, + 0xBF2646228FF794BCULL, 0xBFC0326F00000000ULL, 0xBF2646228FF794BCULL, 0x3FE62E4300000000ULL}, + {0xFFE00072, 0xFC214100, 0x80000021, + 0x3FE08D1700000000ULL, 0x3FC2BC8800000000ULL, 0x3FC2BC8800000000ULL, 0x3FDDD152A0CF6C9BULL}, + {0xFFE00890, 0xFC214100, 0x60000000, + 0x0000000000000000ULL, 0x0000000000000000ULL, 0x3FED36FA60000000ULL, 0x3FD74B9040000000ULL}, + {0xFC000840, 0xFC214100, 0x40000000, + 0x4052158000000000ULL, 0x4052158000000000ULL, 0x406FE00000000000ULL, 0x406FE00000000000ULL}, + {0xFD210028, 0xFC21C100, 0x80000000, + 0x3FA33FBA899AA0C0ULL, 0xBF948E4638A41917ULL, 0xBC678C5F2804F4D4ULL, 0xBC678C5F2804F4D4ULL}, + {0xFC441028, 0xFC21C100, 0x80000008, + 0x4053333300000000ULL, 0x4053333340000000ULL, 0x4053333300000000ULL, 0xC053BCF964F70000ULL}, + {0xEC3B1778, 0xFC21C100, 0x80000008, + 0xFFF80000FFF725C2ULL, 0xC013D1CF80000000ULL, 0xBFF7DAF800000000ULL, 0x4015C0B9E0000000ULL}, + {0xFC07182A, 0xFC21C100, 0x80000021, + 0xBE6D82671BD755E1ULL, 0xBFB07667C1429200ULL, 0xBE6642EC4AE361E0ULL, 0xBE6D82671BD755E1ULL}, + {0xED262828, 0xFC21E100, 0x20000000, + 0xBF90E86C76BBB5A4ULL, 0x3FCF6E75C0000000ULL, 0x3FC0884300000000ULL, 0x0000000000000000ULL}, + {0xFC010040, 0xFC21C100, 0x40000008, + 0x0000000000000000ULL, 0x7E37E43C8800759CULL, 0x0000000000000000ULL, 0x7E37E43C8800759CULL}, + {0xFD610028, 0xFC21C100, 0x80000000, + 0x3FE62E4300000000ULL, 0xBE5D5F10928CDD4AULL, 0xBE5D5F1092800000ULL, 0xBE5D5F1092800000ULL}, + {0xEC2300BA, 0xFC214100, 0x40000000, + 0xFFF800000000B000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x401F3F9200000000ULL}, + {0xEC5F0032, 0xFC21C100, 0x40000000, + 0x4056871BC0000000ULL, 0x3FE268EAE0000000ULL, 0x4039D8C7E0000000ULL, 0x4039D8C7E0000000ULL}, + {0xEC04007A, 0xFC21E100, 0x40000000, + 0x0000000000000000ULL, 0x3FDA178E20000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL}, + {0xEE831028, 0xFC21C100, 0x80000008, + 0xC01C21AB00000000ULL, 0x4025483960000000ULL, 0x40279A6C40000000ULL, 0x4016AB6480000000ULL}, + {0xFC0229BA, 0xFC214100, 0x80000021, + 0x3FC6576D00000000ULL, 0x3F68C3C13B4A2E16ULL, 0x3FD17460A91D4101ULL, 0x3FCD9ACB42C10CFBULL}, + {0xEC0D02F2, 0xFC21E100, 0x20000002, + 0x0000000000000000ULL, 0x3F8B320000000000ULL, 0x0000000000000000ULL, 0x3F842EDA00000000ULL}, + {0xFC032040, 0xFC214100, 0x40000000, + 0x3FDFCB13A0000000ULL, 0x3FEFFFFFA0000000ULL, 0x0000000000000000ULL, 0x3FE2777C20000000ULL}, + {0xFF011800, 0xFC214100, 0x40000000, + 0xC00A6E0000000000ULL, 0x41E0D8CB00000000ULL, 0x41F0000000000000ULL, 0x0000000000000000ULL}, + {0xEC200828, 0xFC214100, 0x40000084, + 0x4330000000000000ULL, 0x4330000086839500ULL, 0x4330000000000000ULL, 0x4330000086839500ULL}, + {0xFC002040, 0xFC218100, 0x40000008, + 0xBF8A088540000000ULL, 0xBF8A088540000000ULL, 0xBFF0000000000000ULL, 0xBFE1296E60000000ULL}, + {0xEC0600BA, 0xFC21C100, 0x40000000, + 0x3FE1EAE180000000ULL, 0x3FD5F64700000000ULL, 0x3FE1EAE180000000ULL, 0x3FCA07F720000000ULL}, + {0xEC2408FA, 0xFC21C100, 0x40000021, + 0xBFE4C1CA60000000ULL, 0x3FC2019AA0000000ULL, 0xBFE4C1CA60000000ULL, 0x3FE6A09E60000000ULL}, + {0xEC050032, 0xFC21A100, 0x40000000, + 0x3FC5E3A7E0000000ULL, 0x0000000000000000ULL, 0x3FC5E3A7E0000000ULL, 0x3FC5E3A7E0000000ULL}, + {0xFC40082A, 0xFC21C100, 0x80000084, + 0x3F171AF4C9A91000ULL, 0x3F9CD774C735E000ULL, 0x3E5B00D30E288FF0ULL, 0x3F9CD774C735E000ULL}, + {0xEC23082A, 0xFC21C100, 0x20000000, + 0x40C82E0000000000ULL, 0x3FE0000000000000ULL, 0x40C82E0000000000ULL, 0x40C82E02A0000000ULL}, + {0xFC002040, 0xFC218100, 0x40000000, + 0x3FD8CE6720000000ULL, 0x3FD8CE6720000000ULL, 0xBFF0000000000000ULL, 0xBFB412E480000000ULL}, + {0xEC8221BA, 0xFC21C100, 0x40000000, + 0x3F985CA140000000ULL, 0xBFEFFC9BC0000000ULL, 0x3F985CA140000000ULL, 0x3F53F47D20000000ULL}, + {0xFC4C1828, 0xFC21E100, 0x80000000, + 0x3FC65DD49FBBECCDULL, 0x3FC65DD400000000ULL, 0x3FC65E2D5DF40000ULL, 0xBEE62F8E04CCDCD6ULL}, + {0xEC0A0172, 0xFC21E100, 0x40000084, + 0x0000000000000000ULL, 0xBF3B0148C0000000ULL, 0x0000000000000000ULL, 0x3FBCA7A8E0000000ULL}, + {0xFC0308BA, 0xFC21E100, 0x80000000, + 0xC01DABC87DAD6000ULL, 0xBFB8B9D200000000ULL, 0xBECC3C5945B3AC5FULL, 0x3EF0000000000000ULL}, + {0xFC20081E, 0xFC214100, 0x40000021, + 0x40B1800000000000ULL, 0x0000000000000000ULL, 0x40B1800000000000ULL, 0x0000000000000000ULL}, + {0xEC050032, 0xFC218100, 0x40000000, + 0x3FECF1BBA0000000ULL, 0xBFB2A588E0000000ULL, 0x3FECF1BBA0000000ULL, 0x3FECF1BBA0000000ULL}, + {0xFC22082A, 0xFC21E100, 0x80000000, + 0xC1207FAAA0000000ULL, 0x7E37E43C8800759CULL, 0xC1207FAAA0000000ULL, 0x0000000000000000ULL}, + {0xFC00001E, 0xFC214100, 0x40000000, + 0x410A61FC40000000ULL, 0x410A61FC40000000ULL, 0x410A61FC40000000ULL, 0x410A61FC40000000ULL}, + {0xED262828, 0xFC21E100, 0x20000000, + 0xBF843E2D8956D3DFULL, 0x3FD6235100000000ULL, 0x3FC77375E0000000ULL, 0x0000000000000000ULL}, + {0xEC810132, 0xFC214100, 0x40000000, + 0x3FEC41B820000000ULL, 0xBFD8705860000000ULL, 0xBFB5107FA0000000ULL, 0x3FEC41B820000000ULL}, + {0xEC04007A, 0xFC214100, 0x40000000, + 0x3FC48009E0000000ULL, 0x3FB00557A0000000ULL, 0x3FC48009E0000000ULL, 0xBFD7F98D00000000ULL}, + {0xECAB0B38, 0xFC21E100, 0x40000000, + 0x0000000000000000ULL, 0x3FB0135400000000ULL, 0x3F7285D040000000ULL, 0x3FC5B0E560000000ULL}, + {0xFCCCF82A, 0xFC21C100, 0x80000000, + 0x3FE34BD9AFDD07A6ULL, 0xBFB5647C00000000ULL, 0xBFB5647C12AC731CULL, 0x433000007FFFFFFFULL}, + {0xEC0300BA, 0xFC21E100, 0x40000084, + 0x4032EBD6C0000000ULL, 0x3FF0000000000000ULL, 0x4032EBD6C0000000ULL, 0x4035F80780000000ULL}, + {0xFC00001E, 0xFC21C100, 0x80000000, + 0x4118AB6680000000ULL, 0x4118AB6680000000ULL, 0x4118AB6680000000ULL, 0x4118AB6680000000ULL}, + {0xEC01007A, 0xFC21C100, 0x40000002, + 0x3FCEAC15A0000000ULL, 0x3FEB8C4E40000000ULL, 0x3FCEAC15A0000000ULL, 0x3FEB8C4E40000000ULL}, + {0xEC610028, 0xFC214100, 0x40000000, + 0x3FADBF4760000000ULL, 0x40C847A3C0000000ULL, 0x40C84052A0000000ULL, 0x40C84052A0000000ULL}, + {0xEC010024, 0xFC21C100, 0x80000000, + 0xC03F5C0980000000ULL, 0x3FF0000000000000ULL, 0xC03F5C0980000000ULL, 0xC03F5C0980000000ULL}, + {0xFC010000, 0xFC212100, 0x20000000, + 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x3FF0000000000000ULL}, + {0xEC0301F2, 0xFC21C100, 0x20000000, + 0xBFD1C48460000000ULL, 0x3FA82E5980000000ULL, 0xBFD1C48460000000ULL, 0x41DFFFFEE0000000ULL}, + {0xFC801850, 0xFC218100, 0x40000084, + 0xBFF0000000000000ULL, 0xBFDD3E87E0000000ULL, 0x3FF0000000000000ULL, 0xBFE5039C80000000ULL}, + {0xFC020028, 0xFC21C100, 0x80000008, + 0xBF9301277A2E7495ULL, 0x3FF0000000000000ULL, 0xBF9301277A2E7495ULL, 0xBF9301277A2E7495ULL}, + {0xFC010040, 0xFC21C100, 0x40000002, + 0x0000000000000000ULL, 0x7E37E43C8800759CULL, 0x0000000000000000ULL, 0x7E37E43C8800759CULL}, + {0xEC540732, 0xFC214100, 0x80000000, + 0x7E37E43C8800759CULL, 0xBFF13DE000000000ULL, 0x0000000000000000ULL, 0x3FBA43AAA0000000ULL}, + {0xEC03002A, 0xFC21C100, 0x40000000, + 0xBFE828B680000000ULL, 0x0000000000000000ULL, 0xBFE828B680000000ULL, 0xBFE828B680000000ULL}, + {0xEFC2007A, 0xFC21A100, 0x80000021, + 0x0000000000000000ULL, 0x3FF0000000000000ULL, 0xBFEFCDB180000000ULL, 0x3FF0000000000000ULL}, + {0xFC801850, 0xFC218100, 0x40000021, + 0x3FEB3D74A0000000ULL, 0xBFD838A6C0000000ULL, 0x3FF0000000000000ULL, 0xC0342751A0000000ULL}, + {0xFFE00072, 0xFC214100, 0x80000000, + 0x3FE08C9D00000000ULL, 0x3FC1DC4C00000000ULL, 0x3FC1DC4C00000000ULL, 0x3FDDE9BCB8325653ULL}, + {0xEC6201B2, 0xFC214100, 0x40000000, + 0x3FEFFFFB00000000ULL, 0x3FB0000000000000ULL, 0xBFD6425D00000000ULL, 0x3FEEEB4280000000ULL}, + {0xEC5F0032, 0xFC21C100, 0x40000000, + 0x3FF0000000000000ULL, 0x3FD39FD360000000ULL, 0x40639432C0000000ULL, 0x40639432C0000000ULL}, + {0xEC6200BA, 0xFC21C100, 0x40000000, + 0xBFE9766740000000ULL, 0x3FEB287660000000ULL, 0x3FD1E6E420000000ULL, 0x3FEB287660000000ULL}, + {0xFC29307A, 0xFC21C100, 0x80000000, + 0xBEBBB86FA2539EFFULL, 0x3F9BC67C15E666D4ULL, 0x3F11566AAF25DE2CULL, 0xBEBBB86FA2539EFFULL}, + {0xFC60181E, 0xFC21E100, 0x20000000, + 0x40C8948000000000ULL, 0x40C84B4000000000ULL, 0x40C8948000000000ULL, 0x40C84B4000000000ULL}, + {0xFCE83828, 0xFC214100, 0x80000000, + 0x3FF8000000000000ULL, 0x4009361500000000ULL, 0x3FF8000000000000ULL, 0x3FD17D1E78FEB1A1ULL}, + {0xEC210132, 0xFC21E100, 0x40000008, + 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL, 0xBFE7C7D720000000ULL}, + {0xEC03007A, 0xFC214100, 0x20000084, + 0x3FE0000000000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x40C8317620000000ULL}, + {0xFC66002A, 0xFC21C100, 0x80000000, + 0xBFF0000000000000ULL, 0x0000000000000000ULL, 0x3E5AC706B29FB818ULL, 0x3E5AC706B29FB818ULL}, + {0xFD6102F2, 0xFC21C100, 0x80000002, + 0xBDD1881200000000ULL, 0x3FD55BE31101F346ULL, 0x433000007FFFFFFFULL, 0xBDD1881200000000ULL}, + {0xFC02083A, 0xFC21C100, 0x40000008, + 0x403FA5F3C0000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x403FA5F3C0000000ULL}, + {0xEC2001B2, 0xFC21C100, 0x20000008, + 0xBFD1F62FA0000000ULL, 0xBFD1610560000000ULL, 0xBFD1610560000000ULL, 0x4062900000000000ULL}, + {0xFC0200F2, 0xFC21C100, 0x80000008, + 0xBE7B673E5572A80FULL, 0x4053333300000000ULL, 0xBE7B673E5572A80FULL, 0xBFD0168600000000ULL}, + {0xED291378, 0xFC21E100, 0x40000002, + 0x3F9EBEBB00000000ULL, 0x3F9EBEBB00000000ULL, 0x0000000000000000ULL, 0xBF49C38000000000ULL}, + {0xFC2B09BA, 0xFC21C100, 0x80000000, + 0x3E453047F6872DFFULL, 0x3E220A0AEAEB9289ULL, 0x3E453047F6872DFFULL, 0x4008001E00000000ULL}, + {0xFCC231FA, 0xFC21C100, 0x80000000, + 0x3FCD864A93C9DB65ULL, 0x3F56BE2FA45F1BE4ULL, 0x3FCD864A93C9DB65ULL, 0x3FCA7E284A454EEFULL}, + {0xFC010040, 0xFC214100, 0x40000084, + 0x0000000000000000ULL, 0x7E37E43C8800759CULL, 0x0000000000000000ULL, 0x7E37E43C8800759CULL}, + {0xEC020828, 0xFC218100, 0x80000000, + 0x0000000000000000ULL, 0x40C8197240000000ULL, 0x40C812D7E0000000ULL, 0x0000000000000000ULL}, + {0xFCCCF82A, 0xFC21C100, 0x80000000, + 0x3FE338129AE8278DULL, 0xBFA3105E00000000ULL, 0xBFA3105EF617864DULL, 0x433000007FFFFFFFULL}, + {0xEF600828, 0xFC21C100, 0x20000000, + 0x0000000000000000ULL, 0x4065BB3FA0000000ULL, 0x4065A33C60000000ULL, 0x4065BB3FA0000000ULL}, + {0xEC8221BA, 0xFC214100, 0x40000000, + 0x3FA85D2B80000000ULL, 0x3FEF9FF920000000ULL, 0x3FA85D2B80000000ULL, 0x3FA1DB7FA0000000ULL}, + {0xEC21002A, 0xFC214100, 0x80000000, + 0x41E0BFE080000000ULL, 0x41E0BFE080000000ULL, 0x0000000000000000ULL, 0x0000000000000000ULL}, + {0xFC0229BA, 0xFC214100, 0x80000000, + 0x3FBF56F600000000ULL, 0x3F6B411FDD1AF912ULL, 0x3FD17460A91D4101ULL, 0x3FCD9CDAF06BA15FULL}, + {0xFC22082A, 0xFC21C100, 0x40000084, + 0xC15F71F6E0000000ULL, 0x7E37E43C8800759CULL, 0xC15F71F6E0000000ULL, 0x0000000000000000ULL}, + {0xFC010040, 0xFC21C100, 0x40000084, + 0x0000000000000000ULL, 0x3FE7B09A60000000ULL, 0x0000000000000000ULL, 0x3FE7B09A60000000ULL}, + {0xFC00F000, 0xFC21C100, 0x40000084, + 0x3FF0000000000000ULL, 0x3FF0000000000000ULL, 0x0000000000000000ULL, 0x3FF0000000000000ULL}, + {0xEC010024, 0xFC21C100, 0x80000002, + 0xC029E99C60000000ULL, 0x3FF0000000000000ULL, 0xC029E99C60000000ULL, 0xC029E99C60000000ULL}, + {0xEF601028, 0xFC214100, 0x20000021, + 0xC03CFFA400000000ULL, 0x403945DC80000000ULL, 0x403E0EE300000000ULL, 0x403945DC80000000ULL}, + {0xEC630132, 0xFC214100, 0x40000008, + 0x3FAEEB4060000000ULL, 0x3FAEEB4060000000ULL, 0x3FD1A3B700000000ULL, 0x40008809A0000000ULL}, + {0xEC6500FA, 0xFC21E100, 0x40000021, + 0x3FE65D5560000000ULL, 0x3F46B831A0000000ULL, 0x3F4DC5B760000000ULL, 0x3FE65D5560000000ULL}, + {0xECAB0B38, 0xFC21E100, 0x40000021, + 0x3FC15B8940000000ULL, 0x3FA0F4F200000000ULL, 0xBF6860ECE0000000ULL, 0xBFC1D686A0000000ULL}, + {0xFC07182A, 0xFC21C100, 0x80000000, + 0xBE750E818D700D13ULL, 0xBFCA551A013C3300ULL, 0xBE716EC424F61312ULL, 0xBE750E818D700D13ULL}, + {0xEC03007E, 0xFC21C100, 0x40000000, + 0xBFE4B6ABE0000000ULL, 0x3FCF5D9A00000000ULL, 0xBFE4B6ABE0000000ULL, 0x3FDE634360000000ULL}, + {0xFC211828, 0xFC21C100, 0x80000000, + 0xBF6F08DED46107C1ULL, 0xBF6F08DED46107C1ULL, 0x4000000000000000ULL, 0x3C0537F8D584F103ULL}, + {0xEC0300BA, 0xFC21C100, 0x40000000, + 0x400D258140000000ULL, 0x0000000000000000ULL, 0x400D258140000000ULL, 0x40227563E0000000ULL}, + {0xFC02002A, 0xFC21C100, 0x40000000, + 0xBFCA41613A88D007ULL, 0xBFF0000000000000ULL, 0xBFCA41613A88D007ULL, 0xBFCA41613A88D007ULL}, + {0xEC210032, 0xFC21C100, 0x40000000, + 0x3EEFE24AC0000000ULL, 0x3EEFE24AC0000000ULL, 0x4063FBFC60000000ULL, 0x4063FBFC60000000ULL}, + {0xEC80217A, 0xFC21C100, 0x40000000, + 0xBFE9535840000000ULL, 0x3FD4A7EFA0000000ULL, 0xBFE9535840000000ULL, 0x3E539E4D40000000ULL}, + {0xECA301B2, 0xFC218100, 0x80000084, + 0x4010D45400000000ULL, 0x400B504F40000000ULL, 0x0000000000000000ULL, 0x3FE1431860000000ULL}, + {0xFC012040, 0xFC218100, 0x80000000, + 0x3FDED138E0000000ULL, 0xBFD0A84D40000000ULL, 0xBFF0000000000000ULL, 0xBFD0A84D40000000ULL}, + {0xFCE70232, 0xFC21C100, 0x80000000, + 0x3FEEC709E0000000ULL, 0x3FEEC709E0000000ULL, 0x3E42324300000000ULL, 0x3F91E73F00000000ULL}, + {0xED262828, 0xFC21E100, 0x20000021, + 0x3F596B0E00000000ULL, 0x0000000000000000ULL, 0xBFA57851E0000000ULL, 0xBF51462020000000ULL}, + {0xFF812000, 0xFC218100, 0x40000084, + 0x3FA107D240000000ULL, 0x41E0AB0760000000ULL, 0x41E0000000000000ULL, 0x0000000000000000ULL}, + {0xEC22007A, 0xFC214100, 0x20000084, + 0x3FE7763560000000ULL, 0x3FD1600000000000ULL, 0x40C845D240000000ULL, 0x3FE7763560000000ULL}, + {0xEC010032, 0xFC214100, 0x40000000, + 0xBFE279A300000000ULL, 0xBFE9560680000000ULL, 0xBFE279A300000000ULL, 0xBFE279A300000000ULL}, + {0xFC012040, 0xFC218100, 0x80000021, + 0x3FD6BFB920000000ULL, 0x3FE515D460000000ULL, 0xBFF0000000000000ULL, 0x3FE515D460000000ULL}, + {0xFC264028, 0xFC21C100, 0x80000000, + 0x400801C37FFDC7B2ULL, 0x400801C300000000ULL, 0x4008000000000000ULL, 0x400801C3BBC382AFULL}, + {0xFC030028, 0xFC21C100, 0x80000000, + 0xBE61BBD9C0000000ULL, 0xBE75A9C4F8CCB0E3ULL, 0xBE61BBD9C0000000ULL, 0xBE61BBD9C0000000ULL}, + {0xFC22082A, 0xFC21C100, 0x40000000, + 0x41400BE3A0000000ULL, 0x7E37E43C8800759CULL, 0x41400BE3A0000000ULL, 0x0000000000000000ULL}, + {0xEC23007A, 0xFC21C100, 0x80000000, + 0x3FF6BFE9A0000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x3FF6BFE9A0000000ULL}, + {0xEC22007A, 0xFC21C100, 0x40000000, + 0x3FD0E601C0000000ULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0x3FD0E601C0000000ULL}, + {0xFC011840, 0xFC214100, 0x40000000, + 0x3FD4950A80000000ULL, 0x3FDE5DE0C0000000ULL, 0x3FF0000000000000ULL, 0x3FDE5DE0C0000000ULL}, + {0xFD4C023C, 0xFC214100, 0x80000000, + 0x3FBAF81F64955901ULL, 0x3FA08C4D00000000ULL, 0x3FB9A6B200000000ULL, 0x4008CD3500000000ULL}, + {0xEC80217A, 0xFC21C100, 0x40000000, + 0x3FB6616B60000000ULL, 0x3FE23A3EC0000000ULL, 0x3FB6616B60000000ULL, 0x3E17177640000000ULL}, + {0xFCE70232, 0xFC21C100, 0x80000000, + 0x3FEEC709E0000000ULL, 0x3FEEC709E0000000ULL, 0x3E744E0E00000000ULL, 0x3FBE45EA00000000ULL}, + {0xEE830828, 0xFC21C100, 0x20000002, + 0x0000000000000000ULL, 0x40672EBC20000000ULL, 0x4067750C00000000ULL, 0x405E822580000000ULL}, + {0xFC001040, 0xFC218100, 0x80000021, + 0x40350BEE60000000ULL, 0x40350BEE60000000ULL, 0x0000000000000000ULL, 0x406FE00000000000ULL}, + {0xEC3B1778, 0xFC214100, 0x40000000, + 0xFFF80000000085A2ULL, 0x401BCE7E00000000ULL, 0x3F8B1117C0000000ULL, 0xBFB4077520000000ULL}, + {0xEC59C024, 0xFC214100, 0x20000000, + 0xFFF800000AC81800ULL, 0xBFF4A80000000000ULL, 0xC020C68000000000ULL, 0x0000000000000000ULL}, + {0xEC0A0032, 0xFC21E100, 0x40000000, + 0x4024A7BEE0000000ULL, 0x3F852EBEE0000000ULL, 0x4024A7BEE0000000ULL, 0x4024A7BEE0000000ULL}, + {0xFC002040, 0xFC21E100, 0x20000008, + 0xC01267EF00000000ULL, 0xC01267EF00000000ULL, 0x0000000000000000ULL, 0xBFFBA80000000000ULL}, + {0xFC002040, 0xFC21C100, 0x40000000, + 0xBF96AF4200000000ULL, 0xBF96AF4200000000ULL, 0xBFF0000000000000ULL, 0x3FE7627AA0000000ULL}, + {0xFC0A5AFA, 0xFC21C100, 0x80000000, + 0x3E431D8899800000ULL, 0x3FB372B9A4ADD133ULL, 0xBC51B57900000000ULL, 0xBC51B57900000000ULL}, + {0xFF812000, 0xFC218100, 0x40000080, + 0x3FB1EAF960000000ULL, 0x41E0F8A7A0000000ULL, 0x41E0000000000000ULL, 0x0000000000000000ULL}, + {0xEC010032, 0xFC21C100, 0x40000000, + 0x3FC7D8B680000000ULL, 0x3FC292C4A0000000ULL, 0x3FC7D8B680000000ULL, 0x3FC7D8B680000000ULL}, + {0xEC2300BA, 0xFC214100, 0x80000084, + 0xFFF80000FFF8389DULL, 0x40F0000000000000ULL, 0x3FE0000000000000ULL, 0xC016B56040000000ULL}, + {0xEC01002A, 0xFC214100, 0x40000002, + 0x3FD3947040000000ULL, 0x0000000000000000ULL, 0x3FD3947040000000ULL, 0x3FD3947040000000ULL}, + {0xEC010028, 0xFC214100, 0x40000000, + 0x40C84AB980000000ULL, 0x40C8493240000000ULL, 0x40C84AB980000000ULL, 0x40C84AB980000000ULL}, + {0xFC00001E, 0xFC214100, 0x40000000, + 0x4127FD5720000000ULL, 0x4127FD5720000000ULL, 0x4127FD5720000000ULL, 0x4127FD5720000000ULL}, + {0xFC00001E, 0xFC21C100, 0x80000021, + 0x4136C7B100000000ULL, 0x4136C7B100000000ULL, 0x4136C7B100000000ULL, 0x4136C7B100000000ULL}, + {0xFC29287A, 0xFC21C100, 0x80000000, + 0x3F1153884EEC77A8ULL, 0x3F9AA2C10E2B6636ULL, 0xBF66C16C16BEBD93ULL, 0x3F1153884EEC77A8ULL}, + {0xEC6200BA, 0xFC21E100, 0x40000000, + 0xBFED5A8000000000ULL, 0x3D58AAA460000000ULL, 0x3FF0000000000000ULL, 0x3D58AAA460000000ULL}, + {0xFC01482A, 0xFC21C100, 0x40000000, + 0x433000007FFFFFFFULL, 0x40080A8B55D96F08ULL, 0x3EF0BF0288DB1FF0ULL, 0x433000007FFFFFFFULL}, + {0xEC6500FA, 0xFC21E100, 0x40000000, + 0x3FDE634360000000ULL, 0xBF43218FE0000000ULL, 0x3F4F8EB620000000ULL, 0x3FDE634360000000ULL}, + {0xFC001840, 0xFC214100, 0x40000008, + 0xBFA97FB4E0000000ULL, 0xBFA97FB4E0000000ULL, 0x3FF0000000000000ULL, 0x3FEA17F660000000ULL}, + {0xFC2B09BA, 0xFC21C100, 0x80000000, + 0x3E7AFD05E14B55E6ULL, 0x3E5AA137076826E7ULL, 0x3E7AFD05E14B55E6ULL, 0x400809EB00000000ULL}, + {0xFD2A01B2, 0xFC21C100, 0x80000000, + 0x3FDB919A6709D82BULL, 0x3F0666343DB92C56ULL, 0x433000007FFFFFFFULL, 0x3FE34A43E9DE39F6ULL}, + {0xEC4448BA, 0xFC21C100, 0x20000000, + 0xC02F5B6180000000ULL, 0x3FF0000000000000ULL, 0x40C84B4000000000ULL, 0xC02F5B6180000000ULL}, +}; + +#endif // BENCH2_DATA_H diff --git a/cpu/ppc/ppcfpopcodes.cpp b/cpu/ppc/ppcfpopcodes.cpp index d62deb9b5f..97bc331424 100644 --- a/cpu/ppc/ppcfpopcodes.cpp +++ b/cpu/ppc/ppcfpopcodes.cpp @@ -31,6 +31,10 @@ along with this program. If not, see . #include #include +#if defined(__APPLE__) && defined(__aarch64__) +#include +#endif + inline static void ppc_update_cr1() { // copy FPSCR[FX|FEX|VX|OX] to CR1 ppc_state.cr = (ppc_state.cr & ~CR_select::CR1_field) | @@ -117,6 +121,26 @@ static double set_endresult_nan() { return std::numeric_limits::quiet_NaN(); } +#if FE_ALL_EXCEPT +static int test_and_clear_fp_exceptions() { +#if defined(__APPLE__) && defined(__aarch64__) + // Darwin's FE_* masks match the ARM64 FPSR exception bits. Preserve + // other status bits and avoid a second register read when clearing. + uint64_t fpsr = __arm_rsr64("fpsr"); + int exceptions = fpsr & FE_ALL_EXCEPT; + if (exceptions) { + fpsr &= ~uint64_t(FE_ALL_EXCEPT); + __arm_wsr64("fpsr", fpsr); + } +#else + int exceptions = std::fetestexcept(FE_ALL_EXCEPT); + if (exceptions) + std::feclearexcept(FE_ALL_EXCEPT); +#endif + return exceptions; +} +#endif + static void fpresult_update(double set_result) { if (std::isnan(set_result)) { ppc_state.fpscr |= FPCC_FUNAN | FPRCD; @@ -128,18 +152,18 @@ static void fpresult_update(double set_result) { } else { ppc_state.fpscr |= FPCC_ZERO; } - - if (std::fetestexcept(FE_OVERFLOW)) { +#if FE_ALL_EXCEPT + int exceptions = test_and_clear_fp_exceptions(); + if (exceptions & FE_OVERFLOW) { ppc_state.fpscr |= (OX + FX); } - if (std::fetestexcept(FE_UNDERFLOW)) { + if (exceptions & FE_UNDERFLOW) { ppc_state.fpscr |= (UX + FX); } - if (std::fetestexcept(FE_DIVBYZERO)) { + if (exceptions & FE_DIVBYZERO) { ppc_state.fpscr |= (ZX + FX); } - - std::feclearexcept(FE_ALL_EXCEPT); +#endif if (std::isinf(set_result)) ppc_state.fpscr |= FPCC_FUNAN;