From 99999c2d2bc6b2e122253f5005fb0c4570d55a2c Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:04:41 -0400 Subject: [PATCH 01/36] Fix stale inline-tail limbs and base 8/32 from_chars into a reused destination set_zero, shift_right, divmod_in_place_short and the move-assign steal path left stale limbs above the limb count, which inplace_to_bit_uint reads when the inline capacity is larger than one limb. Base 8/32 from_chars OR-ed digit blocks into stale limbs of a reused heap destination. Adds the storage_for_overwrite and clear_inline_tail helpers and inline_tail tests. --- include/beman/big_int/basic_big_int.hpp | 75 ++++++- include/beman/big_int/charconv.hpp | 2 + tests/beman/big_int/inline_tail.test.cpp | 243 +++++++++++++++++++++++ 3 files changed, 312 insertions(+), 8 deletions(-) create mode 100644 tests/beman/big_int/inline_tail.test.cpp diff --git a/include/beman/big_int/basic_big_int.hpp b/include/beman/big_int/basic_big_int.hpp index 7de383de..b14f7921 100644 --- a/include/beman/big_int/basic_big_int.hpp +++ b/include/beman/big_int/basic_big_int.hpp @@ -620,6 +620,13 @@ class BEMAN_BIG_INT_TRIVIAL_ABI basic_big_int { constexpr void free_limbs(pointer p, size_type n); constexpr void free_storage(); constexpr void grow(size_type limbs_needed); + // Ensures room for `n` limbs and discards the contents (no copy, no zero-fill). Does not change the limb + // count or sign. The caller writes the limbs, sets the count, and zeroes any in-place tail + // (see `clear_inline_tail`). No operand of the caller may alias `*this`. + [[nodiscard]] constexpr limb_type* storage_for_overwrite(size_type n); + // For in-place storage, zeroes the limbs in [limb_count(), old_count). Keeps the invariant + // that in-place limbs past the limb count are zero, which `inplace_to_bit_uint` relies on. + constexpr void clear_inline_tail(size_type old_count) noexcept; constexpr void copy_n_to_allocation(const limb_type* p, size_type n, alloc_result out); // Copies the limbs of `x` into a freshly constructed `*this` whose control word already matches `x`. constexpr void copy_limbs_from(const basic_big_int& x); @@ -793,12 +800,12 @@ class BEMAN_BIG_INT_TRIVIAL_ABI basic_big_int { if constexpr (propagate_alloc) { m_alloc = std::forward(src).m_alloc; } - m_capacity = src.m_capacity; - m_storage.data = src.m_storage.data; - m_size_and_sign = src.m_size_and_sign; - src.m_capacity = 0; - src.m_size_and_sign = 1; - src.m_storage.limbs[0] = limb_type{0}; + m_capacity = src.m_capacity; + m_storage.data = src.m_storage.data; + m_size_and_sign = src.m_size_and_sign; + src.m_capacity = 0; + src.m_size_and_sign = 1; + src.m_storage = {}; if (m_capacity < needed) { grow(needed); } @@ -1035,7 +1042,16 @@ constexpr void basic_big_int::negate() noexcept { template constexpr void basic_big_int::set_zero() noexcept { - limb_ptr()[0] = 0; + limb_type* const limbs = limb_ptr(); + limbs[0] = 0; + if constexpr (inplace_capacity != 1) { + // Keep "inline limbs past the limb count are zero" (see `clear_inline_tail`). + if (is_representation_inplace()) { + for (size_type i = 1; i < inplace_capacity; ++i) { + limbs[i] = 0; + } + } + } m_size_and_sign = 1; } @@ -1399,6 +1415,7 @@ constexpr void basic_big_int::shift_right(const shift_type s) { std::shift_left(limbs, limbs + current_count, static_cast(shifted_limbs)); unchecked_set_limb_count(static_cast(current_count - shifted_limbs)); } + clear_inline_tail(current_count); } if (shifted_bits != 0) { for (size_type i = 0; i + 1 < limb_count(); ++i) { @@ -2938,8 +2955,10 @@ constexpr uint_multiprecision_t basic_big_int::divmod_in_place_short(co if (want_quotient) { unchecked_trim_magnitude(); } else { - limb_ptr()[0] = remainder; + const auto old_count = limb_count(); + limb_ptr()[0] = remainder; unchecked_set_limb_count(1); + clear_inline_tail(old_count); } unchecked_set_sign(result_neg && !unchecked_is_magnitude_zero()); return remainder; @@ -3447,6 +3466,46 @@ constexpr void basic_big_int::grow(const size_type limbs_needed) { m_capacity = static_cast(allocation.count); } +// Same growth policy as `grow`. The new block is allocated before the old one is released. +// Runtime blocks are left uninitialized (poisoned in debug builds); constant evaluation +// must construct every limb before use. +template +constexpr auto basic_big_int::storage_for_overwrite(const size_type n) -> limb_type* { + const size_type current_cap = is_representation_inplace() ? inplace_capacity : m_capacity; + if (n > current_cap) { + if (n > max_limbs) { + detail::throw_length_error(); + } + const size_type new_cap = std::min(std::max(n, 2 * current_cap), max_limbs); + const alloc_result allocation = alloc_limbs(new_cap); + if BEMAN_BIG_INT_IS_NOT_CONSTEVAL { +#ifndef NDEBUG + std::uninitialized_fill_n(allocation.ptr, allocation.count, static_cast(0xDEADBEEFDEADBEEFULL)); +#endif + } else { + for (size_type i = 0; i < allocation.count; ++i) { + std::construct_at(allocation.ptr + i); + } + } + free_storage(); + m_storage.data = allocation.ptr; + m_capacity = static_cast(allocation.count); + } + return limb_ptr(); +} + +template +constexpr void basic_big_int::clear_inline_tail(const size_type old_count) noexcept { + if constexpr (inplace_capacity != 1) { + if (is_representation_inplace()) { + limb_type* const limbs = m_storage.limbs; + for (size_type i = limb_count(); i < old_count; ++i) { + limbs[i] = limb_type{0}; + } + } + } +} + BEMAN_BIG_INT_DIAGNOSTIC_POP() template diff --git a/include/beman/big_int/charconv.hpp b/include/beman/big_int/charconv.hpp index bff86253..16deda52 100644 --- a/include/beman/big_int/charconv.hpp +++ b/include/beman/big_int/charconv.hpp @@ -423,6 +423,8 @@ from_chars(const char* const begin, const char* const end, basic_big_int 1, +// hence basic_big_int<128> and basic_big_int<256>. Reused heap destinations of base 8/32 +// from_chars are covered as well. + +#include +#include +#include +#include +#include + +#include +#include + +#include "testing.hpp" + +namespace bb = BEMAN_BIG_INT_NAMESPACE; + +BEMAN_BIG_INT_BEGIN_NAMESPACE +namespace inline_tail_test { + +inline constexpr unsigned limb_width = static_cast(std::numeric_limits::digits); + +// True when every limb of an in-place value past its limb count is zero. +template +constexpr bool tail_is_zero(const T& x) { + if (!is_inplace(x)) { + return true; + } + const auto* const limbs = x.representation().data(); + for (std::size_t i = x.representation().size(); i < T::inplace_capacity; ++i) { + if (limbs[i] != 0) { + return false; + } + } + return true; +} + +// 2^(k * limb_width) - 1, i.e. k limbs of all ones. Parsed from hex digits: shifting up to the full +// inline capacity can reserve a spare limb and spill to the heap. +template +constexpr T all_ones(unsigned k) { + char digits[1024] = {}; + for (unsigned i = 0; i < k * limb_width / 4; ++i) { + digits[i] = 'f'; + } + T x; + const auto n = k * limb_width / 4; + [[maybe_unused]] const auto r = from_chars(digits, digits + n, x, 16); + return x; +} + +template +constexpr T two_limbs() { // 2^limb_width + 7 + T x{1}; + x <<= limb_width; + x += 7; + return x; +} + +template +constexpr bool sub_self() { + T x = all_ones(2); + x -= x; + return x == 0U && tail_is_zero(x); +} + +template +constexpr bool xor_self() { + T x = all_ones(2); + x ^= x; + return x == 0U && tail_is_zero(x); +} + +// Shift all_ones(k) (k = whole inline capacity) right by `limbs` whole limbs plus `extra` bits. +template +constexpr bool shr_case(unsigned limbs, unsigned extra, bool negative) { + constexpr unsigned k = static_cast(T::inplace_capacity); + T x = all_ones(k); + if (negative) { + x = -x; + } + const unsigned s = limbs * limb_width + extra; + x >>= s; + const unsigned remaining = k * limb_width - s; + T expected{1}; + expected <<= remaining; + if (negative) { + expected = -expected; // floor(-(2^n - 1) / 2^s) == -2^(n - s) + } else { + expected -= 1; + } + return x == expected && tail_is_zero(x); +} + +template +constexpr bool shr_all() { + constexpr unsigned k = static_cast(T::inplace_capacity); + for (const bool neg : {false, true}) { + for (const unsigned extra : {0U, 3U}) { + for (const unsigned limbs : {1U, 3U, k - 1U}) { + if (limbs >= k || (limbs * limb_width + extra) >= k * limb_width) { + continue; + } + if (!shr_case(limbs, extra, neg)) { + return false; + } + } + } + if (!shr_case(k, 0, neg)) { // shift by every bit + return false; + } + } + return true; +} + +template +constexpr bool shr_by_a_limb_matches_builtin() { + T x = all_ones(2); + x >>= limb_width; + return x == std::numeric_limits::max() && tail_is_zero(x); +} + +// The quotient limbs written in place must not survive above the new limb count. +template +constexpr bool rem_by_small() { + T x = all_ones(2); + x -= 1; // 2^(2W) - 2, which is 2 modulo 3 + x %= 3; + if (!(x == 2U && tail_is_zero(x))) { + return false; + } + T q = all_ones(2); + q -= 1; + q /= 3; + return q * 3 + 2 == all_ones(2) - 1 && tail_is_zero(q); +} + +template +constexpr bool div_rem_small_by_large() { + const T a = two_limbs(); + T b{1}; + b <<= 3 * limb_width; + auto r = div_rem_to_zero(a, b); + if (!(r.quotient == 0U && tail_is_zero(r.quotient) && r.remainder == a && tail_is_zero(r.remainder))) { + return false; + } + T a2 = two_limbs(); + auto r2 = div_rem_to_zero(std::move(a2), b); + return r2.quotient == 0U && tail_is_zero(r2.quotient) && r2.remainder == two_limbs(); +} + +template +constexpr bool from_chars_into_two_limbs(int base, const char* digits, unsigned expected) { + T x = two_limbs(); + std::string_view s{digits}; + const auto r = from_chars(s.data(), s.data() + s.size(), x, base); + return r.ec == std::errc{} && x == expected && tail_is_zero(x); +} + +template +constexpr bool from_chars_small_cases() { + return from_chars_into_two_limbs(16, "5", 5U) && from_chars_into_two_limbs(8, "5", 5U) && + from_chars_into_two_limbs(32, "5", 5U) && from_chars_into_two_limbs(2, "101", 5U) && + from_chars_into_two_limbs(4, "11", 5U) && from_chars_into_two_limbs(10, "5", 5U); +} + +// A heap destination full of ones, parsed into with a multi-block power-of-two base. +template +constexpr bool from_chars_reused_heap(int base, const std::string_view digits, const unsigned expected_shift) { + T x = all_ones(static_cast(T::inplace_capacity) + 10); + if (is_inplace(x)) { + return false; + } + const auto r = from_chars(digits.data(), digits.data() + digits.size(), x, base); + T fresh; + const auto r2 = from_chars(digits.data(), digits.data() + digits.size(), fresh, base); + T expected{1}; + expected <<= expected_shift; + return r.ec == std::errc{} && r2.ec == std::errc{} && x == fresh && x == expected; +} + +template +constexpr bool from_chars_reused_heap_all() { + // base 8: 3 bits per digit; base 32: 5 bits per digit; many blocks. + return from_chars_reused_heap(8, "1000000000000000000000000000000000000000", 39 * 3) && + from_chars_reused_heap(32, "10000000000000000000000000000000000000000000", 43 * 5) && + from_chars_reused_heap(8, "1000000000000000000000", 21 * 3) && + from_chars_reused_heap(32, "1000000000000", 12 * 5); +} + +template +constexpr bool moved_from_after_steal() { + T src{1}; + src <<= static_cast(T::inplace_bits) + 10; + T dst; + dst = std::move(src); + return !is_inplace(dst) && src == 0U && tail_is_zero(src); +} + +} // namespace inline_tail_test +BEMAN_BIG_INT_END_NAMESPACE + +namespace it = BEMAN_BIG_INT_NAMESPACE::inline_tail_test; + +#define INLINE_TAIL_CASES(CASE) \ + CASE(Sub128, bb::basic_big_int<128>, sub_self) \ + CASE(Sub256, bb::basic_big_int<256>, sub_self) \ + CASE(Xor128, bb::basic_big_int<128>, xor_self) \ + CASE(Xor256, bb::basic_big_int<256>, xor_self) \ + CASE(ShrAll128, bb::basic_big_int<128>, shr_all) \ + CASE(ShrAll256, bb::basic_big_int<256>, shr_all) \ + CASE(ShrLimb128, bb::basic_big_int<128>, shr_by_a_limb_matches_builtin) \ + CASE(ShrLimb256, bb::basic_big_int<256>, shr_by_a_limb_matches_builtin) \ + CASE(Rem128, bb::basic_big_int<128>, rem_by_small) \ + CASE(Rem256, bb::basic_big_int<256>, rem_by_small) \ + CASE(DivRem128, bb::basic_big_int<128>, div_rem_small_by_large) \ + CASE(DivRem256, bb::basic_big_int<256>, div_rem_small_by_large) \ + CASE(FromChars128, bb::basic_big_int<128>, from_chars_small_cases) \ + CASE(FromChars256, bb::basic_big_int<256>, from_chars_small_cases) \ + CASE(FromCharsHeap64, bb::big_int, from_chars_reused_heap_all) \ + CASE(FromCharsHeap128, bb::basic_big_int<128>, from_chars_reused_heap_all) \ + CASE(Steal64, bb::big_int, moved_from_after_steal) \ + CASE(Steal128, bb::basic_big_int<128>, moved_from_after_steal) \ + CASE(Steal256, bb::basic_big_int<256>, moved_from_after_steal) + +#define INLINE_TAIL_TEST(NAME, TYPE, FN) \ + TEST(InlineTail, NAME) { EXPECT_TRUE(it::FN()); } +INLINE_TAIL_CASES(INLINE_TAIL_TEST) + +// Constant evaluation of the cases that need no heap-limb reads beyond the span. +static_assert(it::sub_self>()); +static_assert(it::xor_self>()); +static_assert(it::shr_all>()); +static_assert(it::shr_all>()); +static_assert(it::rem_by_small>()); +static_assert(it::div_rem_small_by_large>()); +static_assert(it::from_chars_small_cases>()); +static_assert(it::from_chars_reused_heap_all()); +static_assert(it::moved_from_after_steal>()); From 8c46dae8e3fb00ff90d97585163ea68bb9cb0fa6 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:10:34 -0400 Subject: [PATCH 02/36] Add tail-aware add/sub and copying shift span primitives add_n_tail, sub_n_tail, lshift_copy and rshift_copy, with tests. They are not wired into basic_big_int yet. --- include/beman/big_int/detail/span_ops.hpp | 128 ++++++++++ tests/beman/big_int/span_primitives.test.cpp | 255 +++++++++++++++++++ 2 files changed, 383 insertions(+) create mode 100644 tests/beman/big_int/span_primitives.test.cpp diff --git a/include/beman/big_int/detail/span_ops.hpp b/include/beman/big_int/detail/span_ops.hpp index a66b63c7..8bc01cdc 100644 --- a/include/beman/big_int/detail/span_ops.hpp +++ b/include/beman/big_int/detail/span_ops.hpp @@ -1142,6 +1142,134 @@ struct subsystem_signs { bool inner; }; +// ===== Front-end primitives: tail-aware add/sub and copying shifts ================================== +// Single-pass building blocks for the basic_big_int front end. They are independent of the +// kernels above, which stay untouched as a fixed yardstick. + +// dst[0..a.size()) = a + b, returns the carry out of the top limb. Requires a.size() >= b.size() and +// dst.size() >= a.size(). `dst` may equal `a` exactly (in-place add); otherwise it must not overlap `a`. +// Once the carry dies the rest of `a` is copied (skipped entirely when dst == a). +[[nodiscard]] constexpr bool add_n_tail(const std::span dst, + const std::span a, + const std::span b) noexcept { + BEMAN_BIG_INT_DEBUG_ASSERT(a.size() >= b.size()); + BEMAN_BIG_INT_DEBUG_ASSERT(dst.size() >= a.size()); + const std::size_t common = b.size(); + const std::size_t total = a.size(); + bool carry = false; + std::size_t i = 0; + for (; i + 4 <= common; i += 4) { + const auto [v0, c0] = carrying_add(a[i + 0], b[i + 0], carry); + const auto [v1, c1] = carrying_add(a[i + 1], b[i + 1], c0); + const auto [v2, c2] = carrying_add(a[i + 2], b[i + 2], c1); + const auto [v3, c3] = carrying_add(a[i + 3], b[i + 3], c2); + dst[i + 0] = v0; + dst[i + 1] = v1; + dst[i + 2] = v2; + dst[i + 3] = v3; + carry = c3; + } + for (; i < common; ++i) { + const auto [v, c] = carrying_add(a[i], b[i], carry); + dst[i] = v; + carry = c; + } + while (i < total && carry) { + const auto [v, c] = carrying_add(a[i], uint_multiprecision_t{0}, true); + dst[i] = v; + carry = c; + ++i; + } + if (dst.data() != a.data()) { + for (; i < total; ++i) { + dst[i] = a[i]; + } + } + return carry; +} + +// dst[0..a.size()) = a - b, returns the borrow out of the top limb. Same contract as `add_n_tail`. +[[nodiscard]] constexpr bool sub_n_tail(const std::span dst, + const std::span a, + const std::span b) noexcept { + BEMAN_BIG_INT_DEBUG_ASSERT(a.size() >= b.size()); + BEMAN_BIG_INT_DEBUG_ASSERT(dst.size() >= a.size()); + const std::size_t common = b.size(); + const std::size_t total = a.size(); + bool borrow = false; + std::size_t i = 0; + for (; i + 4 <= common; i += 4) { + const auto [v0, b0] = borrowing_sub(a[i + 0], b[i + 0], borrow); + const auto [v1, b1] = borrowing_sub(a[i + 1], b[i + 1], b0); + const auto [v2, b2] = borrowing_sub(a[i + 2], b[i + 2], b1); + const auto [v3, b3] = borrowing_sub(a[i + 3], b[i + 3], b2); + dst[i + 0] = v0; + dst[i + 1] = v1; + dst[i + 2] = v2; + dst[i + 3] = v3; + borrow = b3; + } + for (; i < common; ++i) { + const auto [v, br] = borrowing_sub(a[i], b[i], borrow); + dst[i] = v; + borrow = br; + } + while (i < total && borrow) { + const auto [v, br] = borrowing_sub(a[i], uint_multiprecision_t{0}, true); + dst[i] = v; + borrow = br; + ++i; + } + if (dst.data() != a.data()) { + for (; i < total; ++i) { + dst[i] = a[i]; + } + } + return borrow; +} + +// dst[0..n) = src[0..n) << bits for bits in [1, limb_width), returning the bits shifted out of the top +// limb. Walks top-down, so it is valid when dst >= src (including dst == src) and the ranges do not +// otherwise overlap. +constexpr uint_multiprecision_t lshift_copy(uint_multiprecision_t* const dst, + const uint_multiprecision_t* const src, + const std::size_t n, + const unsigned bits) noexcept { + constexpr unsigned limb_bits = width_v; + BEMAN_BIG_INT_DEBUG_ASSERT(bits >= 1 && bits < limb_bits); + if (n == 0) { + return 0; + } + const unsigned back = limb_bits - bits; + const uint_multiprecision_t out = static_cast(src[n - 1] >> back); + for (std::size_t i = n - 1; i > 0; --i) { + dst[i] = static_cast((src[i] << bits) | (src[i - 1] >> back)); + } + dst[0] = static_cast(src[0] << bits); + return out; +} + +// dst[0..n) = src[0..n) >> bits for bits in [1, limb_width), returning the bits shifted out of the bottom +// limb (left-aligned in the returned limb). Walks bottom-up, so it is valid when dst <= src (including +// dst == src) and the ranges do not otherwise overlap. +constexpr uint_multiprecision_t rshift_copy(uint_multiprecision_t* const dst, + const uint_multiprecision_t* const src, + const std::size_t n, + const unsigned bits) noexcept { + constexpr unsigned limb_bits = width_v; + BEMAN_BIG_INT_DEBUG_ASSERT(bits >= 1 && bits < limb_bits); + if (n == 0) { + return 0; + } + const unsigned back = limb_bits - bits; + const uint_multiprecision_t out = static_cast(src[0] << back); + for (std::size_t i = 0; i + 1 < n; ++i) { + dst[i] = static_cast((src[i] >> bits) | (src[i + 1] << back)); + } + dst[n - 1] = static_cast(src[n - 1] >> bits); + return out; +} + } // namespace detail BEMAN_BIG_INT_END_NAMESPACE diff --git a/tests/beman/big_int/span_primitives.test.cpp b/tests/beman/big_int/span_primitives.test.cpp new file mode 100644 index 00000000..d8fb0828 --- /dev/null +++ b/tests/beman/big_int/span_primitives.test.cpp @@ -0,0 +1,255 @@ +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// SPDX-License-Identifier: BSL-1.0 + +// Tests for the front-end span primitives add_n_tail, sub_n_tail, lshift_copy and rshift_copy. + +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace bb = BEMAN_BIG_INT_NAMESPACE; + +namespace { + +using limb = bb::uint_multiprecision_t; +constexpr unsigned limb_width = static_cast(std::numeric_limits::digits); +constexpr limb max_limb = std::numeric_limits::max(); + +using bits_t = std::vector; // little-endian bit string, the reference representation + +bits_t to_bits(const std::vector& v) { + bits_t out(v.size() * limb_width); + for (std::size_t i = 0; i < out.size(); ++i) { + out[i] = ((v[i / limb_width] >> (i % limb_width)) & 1U) != 0; + } + return out; +} + +std::vector from_bits(const bits_t& b) { + std::vector out(b.size() / limb_width, limb{0}); + for (std::size_t i = 0; i < b.size(); ++i) { + if (b[i]) { + out[i / limb_width] |= static_cast(limb{1} << (i % limb_width)); + } + } + return out; +} + +// Reference a +/- b over a.size() limbs, returning the carry/borrow out. +bool ref_addsub(std::vector& out, const std::vector& a, const std::vector& b, const bool sub) { + const bits_t abits = to_bits(a); + bits_t bbits(abits.size(), false); + const bits_t braw = to_bits(b); + for (std::size_t i = 0; i < braw.size(); ++i) { + bbits[i] = braw[i]; + } + bits_t res(abits.size()); + bool c = false; + for (std::size_t i = 0; i < abits.size(); ++i) { + if (!sub) { + res[i] = (abits[i] != bbits[i]) != c; + c = (abits[i] && bbits[i]) || (c && (abits[i] != bbits[i])); + } else { + res[i] = (abits[i] != bbits[i]) != c; + c = (!abits[i] && bbits[i]) || (c && !(abits[i] != bbits[i])); + } + } + out = from_bits(res); + return c; +} + +limb pick(std::mt19937_64& rng) { + switch (rng() % 5U) { + case 0: + return 0; + case 1: + return max_limb; + case 2: + return 1; + default: + return static_cast(rng()); + } +} + +std::vector random_limbs(std::mt19937_64& rng, const std::size_t n) { + std::vector v(n); + for (auto& x : v) { + x = pick(rng); + } + return v; +} + +constexpr limb poison = static_cast(0xA5A5A5A5A5A5A5A5ULL); + +template +void check_addsub(const bool in_place) { + std::mt19937_64 rng{Sub ? 11U : 7U}; + for (std::size_t m = 0; m <= 9; ++m) { + for (std::size_t n = 0; n <= m; ++n) { + for (int trial = 0; trial < 300; ++trial) { + std::vector a = random_limbs(rng, m); + std::vector b = random_limbs(rng, n); + if (trial % 7 == 0) { // long carry / borrow ripples + for (auto& x : a) { + x = Sub ? limb{0} : max_limb; + } + if (n != 0) { + b[0] = 1; + } + } + std::vector expected; + const bool expected_flag = ref_addsub(expected, a, b, Sub); + + std::vector dst_storage = in_place ? a : std::vector(m, poison); + const limb* a_ptr = in_place ? dst_storage.data() : a.data(); + const std::span a_span{a_ptr, m}; + const std::span dst_span{dst_storage.data(), m}; + const bool flag = Sub ? bb::detail::sub_n_tail(dst_span, a_span, std::span{b}) + : bb::detail::add_n_tail(dst_span, a_span, std::span{b}); + ASSERT_EQ(flag, expected_flag) << "m=" << m << " n=" << n; + ASSERT_EQ(dst_storage, expected) << "m=" << m << " n=" << n; + } + } + } +} + +} // namespace + +TEST(SpanPrimitives, AddNTailSeparateDestination) { check_addsub(false); } +TEST(SpanPrimitives, AddNTailInPlace) { check_addsub(true); } +TEST(SpanPrimitives, SubNTailSeparateDestination) { check_addsub(false); } +TEST(SpanPrimitives, SubNTailInPlace) { check_addsub(true); } + +namespace { + +std::vector ref_shift(const std::vector& src, const unsigned bits, const bool left, limb& out_bits) { + const bits_t in = to_bits(src); + bits_t res(in.size(), false); + out_bits = 0; + for (std::size_t i = 0; i < in.size(); ++i) { + if (left) { + if (i + bits < in.size()) { + res[i + bits] = in[i]; + } else if (in[i]) { + out_bits |= static_cast(limb{1} << (i + bits - in.size())); + } + } else { + if (i >= bits) { + res[i - bits] = in[i]; + } else if (in[i]) { + out_bits |= static_cast(limb{1} << (limb_width - bits + i)); + } + } + } + return from_bits(res); +} + +void check_shift(const bool left, const bool aliased) { + std::mt19937_64 rng{left ? 3U : 5U}; + for (std::size_t n = 0; n <= 9; ++n) { + for (unsigned bits = 1; bits < limb_width; bits += (bits < 5 || bits + 6 > limb_width ? 1 : 7)) { + for (int trial = 0; trial < 20; ++trial) { + const std::vector src = random_limbs(rng, n); + limb expected_out = 0; + const auto expected = ref_shift(src, bits, left, expected_out); + + // Non-aliased: destination below (rshift) or above (lshift) in a bigger buffer. + std::vector buf(n + 3, poison); + limb* dst = nullptr; + const limb* s = nullptr; + std::vector src_buf = src; + if (aliased) { + buf.assign(src.begin(), src.end()); + buf.resize(n + 3, poison); + dst = buf.data(); + s = buf.data(); + } else { + dst = buf.data() + 1; + s = src_buf.data(); + } + const limb out = left ? bb::detail::lshift_copy(dst, s, n, bits) : bb::detail::rshift_copy(dst, s, n, bits); + ASSERT_EQ(out, expected_out) << "n=" << n << " bits=" << bits; + ASSERT_EQ(std::vector(dst, dst + n), expected) << "n=" << n << " bits=" << bits; + if (!aliased) { + ASSERT_EQ(buf[0], poison); + ASSERT_EQ(buf[n + 1], poison); + ASSERT_EQ(buf[n + 2], poison); + } + } + } + } +} + +// Overlapping but not identical ranges: lshift with dst above src, rshift with dst below src. +void check_shift_overlap(const bool left) { + std::mt19937_64 rng{left ? 13U : 17U}; + for (std::size_t n = 1; n <= 9; ++n) { + for (std::size_t offset = 1; offset <= 3; ++offset) { + const unsigned bits = 1 + static_cast(rng() % (limb_width - 1)); + const std::vector src = random_limbs(rng, n); + limb expected_out = 0; + const auto expected = ref_shift(src, bits, left, expected_out); + + std::vector buf(n + offset, poison); + limb* s = left ? buf.data() : buf.data() + offset; + limb* dst = left ? buf.data() + offset : buf.data(); + std::copy(src.begin(), src.end(), s); + const limb out = left ? bb::detail::lshift_copy(dst, s, n, bits) : bb::detail::rshift_copy(dst, s, n, bits); + ASSERT_EQ(out, expected_out); + ASSERT_EQ(std::vector(dst, dst + n), expected) << "n=" << n << " offset=" << offset; + } + } +} + +} // namespace + +TEST(SpanPrimitives, LshiftCopySeparate) { check_shift(true, false); } +TEST(SpanPrimitives, LshiftCopyAliased) { check_shift(true, true); } +TEST(SpanPrimitives, LshiftCopyOverlapping) { check_shift_overlap(true); } +TEST(SpanPrimitives, RshiftCopySeparate) { check_shift(false, false); } +TEST(SpanPrimitives, RshiftCopyAliased) { check_shift(false, true); } +TEST(SpanPrimitives, RshiftCopyOverlapping) { check_shift_overlap(false); } + +// ----- constant evaluation ----- + +namespace { + +consteval bool constexpr_primitives() { + std::array a{max_limb, max_limb, max_limb, max_limb, 5}; + std::array b{1, 0}; + std::array dst{}; + // a + b: the carry ripples through four limbs. + if (bb::detail::add_n_tail(dst, a, b) || dst[0] != 0 || dst[1] != 0 || dst[2] != 0 || dst[3] != 0 || + dst[4] != 6) { + return false; + } + // In-place subtract undoes it. + const std::array sum = dst; + if (bb::detail::sub_n_tail(dst, sum, b) || dst != a) { + return false; + } + // 0 - 1 borrows out of the top. + std::array z{}; + std::array one{1, 0}; + if (!bb::detail::sub_n_tail(z, std::array{}, one) || z[0] != max_limb || z[1] != max_limb) { + return false; + } + // Shifts round-trip. + std::array v{0x123, 0x456, 0x789}; + std::array w{}; + const limb out = bb::detail::lshift_copy(w.data(), v.data(), 3, 4); + if (out != 0 || w[0] != 0x1230 || w[1] != 0x4560 || w[2] != 0x7890) { + return false; + } + const limb lost = bb::detail::rshift_copy(w.data(), w.data(), 3, 4); + return lost == 0 && w == v; +} +static_assert(constexpr_primitives()); + +} // namespace From a9cdcefc56bdebda79bc92937754148fc3048ca0 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:10:35 -0400 Subject: [PATCH 03/36] Steal the heap buffer on move-assign and free with the allocating allocator assign_value now steals an rvalue heap source whenever the destination's allocator can free it, whatever capacity the destination holds. A propagating allocator that compares unequal no longer lets the destination keep a buffer it cannot free. Tests cover pmr, stateful propagating allocators and ownership. --- include/beman/big_int/basic_big_int.hpp | 117 +++++++------ tests/beman/big_int/allocation.test.cpp | 204 ++++++++++++++++++++++- tests/beman/big_int/inline_tail.test.cpp | 55 +++--- 3 files changed, 285 insertions(+), 91 deletions(-) diff --git a/include/beman/big_int/basic_big_int.hpp b/include/beman/big_int/basic_big_int.hpp index b14f7921..53cad81b 100644 --- a/include/beman/big_int/basic_big_int.hpp +++ b/include/beman/big_int/basic_big_int.hpp @@ -722,11 +722,18 @@ class BEMAN_BIG_INT_TRIVIAL_ABI basic_big_int { // Shared implementation behind copy-assign, move-assign, and the lvalue // branches of `operator+` / `operator-`. - // Sets `*this` to a copy of `src`, reusing the existing allocation whenever - // the effective capacity already fits `src.limb_count() + extra_space` limbs. - // `extra_space` lets callers that know they are about to grow by a fixed - // amount (e.g., a carry-out of one limb in addition) reserve that space - // up front so that a subsequent grow is not needed. + // Sets `*this` to the value of `src`. + // + // An rvalue heap `src` is stolen (its buffer adopted, `src` left as inline zero) whenever our + // allocator can free it, i.e. the allocator propagates, is always-equal, or compares equal to + // `src`'s, regardless of the capacity we already hold. Our own buffer is released first, with + // our allocator. Every other case copies, reusing the existing allocation when it already + // fits `src.limb_count() + extra_space` limbs. `extra_space` lets callers that know they are + // about to grow by a fixed amount (e.g., a carry-out of one limb) reserve that space up front; + // it must be 0 for an rvalue `src`. + // + // When a propagating allocator compares unequal to ours, our heap buffer cannot be kept: it is + // released through the old allocator before the new one is adopted. template requires std::same_as, basic_big_int> constexpr void assign_value(Src&& src, const std::size_t extra_space = 0) { @@ -736,10 +743,6 @@ class BEMAN_BIG_INT_TRIVIAL_ABI basic_big_int { return; } - const std::size_t src_count = src.limb_count(); - const std::size_t needed = src_count + extra_space; - const std::size_t eff_cap = is_representation_inplace() ? inplace_capacity : m_capacity; - // Allocator propagation follows `std::allocator_traits`. Stateful allocators // such as `std::pmr::polymorphic_allocator` have a deleted copy/move // assignment operator, so any `m_alloc = ...` must be guarded by @@ -752,7 +755,39 @@ class BEMAN_BIG_INT_TRIVIAL_ABI basic_big_int { (std::is_lvalue_reference_v ? alloc_traits::propagate_on_container_copy_assignment::value : alloc_traits::propagate_on_container_move_assignment::value); - if (needed <= eff_cap) { + if constexpr (!std::is_lvalue_reference_v) { + BEMAN_BIG_INT_DEBUG_ASSERT(extra_space == 0); + if (!src.is_representation_inplace() && + (propagate_alloc || alloc_traits::is_always_equal::value || m_alloc == src.m_alloc)) { + free_storage(); + if constexpr (propagate_alloc) { + m_alloc = std::forward(src).m_alloc; + } + m_capacity = src.m_capacity; + m_storage.data = src.m_storage.data; + m_size_and_sign = src.m_size_and_sign; + src.m_capacity = 0; + src.m_size_and_sign = 1; + src.m_storage = {}; + return; + } + // Inline `src`, or a heap `src` that our allocator cannot free: copy below. + } + + const std::size_t src_count = src.limb_count(); + const std::size_t needed = src_count + extra_space; + const std::size_t eff_cap = is_representation_inplace() ? inplace_capacity : m_capacity; + + // Keeping our heap buffer is only valid if our allocator stays the one that frees it. + const bool keeps_buffer = [&] { + if constexpr (propagate_alloc && !alloc_traits::is_always_equal::value) { + return is_representation_inplace() || m_alloc == src.m_alloc; + } else { + return true; + } + }(); + + if (keeps_buffer && needed <= eff_cap) { // Fast path: current buffer is already big enough const auto old_count = limb_count(); m_size_and_sign = src.m_size_and_sign; @@ -762,22 +797,16 @@ class BEMAN_BIG_INT_TRIVIAL_ABI basic_big_int { limb_type* const dst_limbs = limb_ptr(); const limb_type* const src_limbs = src.limb_ptr(); std::copy_n(src_limbs, src_count, dst_limbs); - // Preserve the "limbs[limb_count..inplace_capacity) == 0" invariant that - // `inplace_to_bit_uint` relies on. Only relevant for inline storage. - if (is_representation_inplace()) { - for (std::size_t i = src_count; i < old_count; ++i) { - dst_limbs[i] = limb_type{0}; - } - } + clear_inline_tail(old_count); return; } - // Slow path: current buffer is too small. Each branch releases our buffer - // with our current allocator, before any propagation, and publishes the - // control words only once the storage they describe is in place. + // Slow path. Each branch releases our buffer with our current allocator, before any + // propagation, and publishes the control words only once the storage they describe is in place. if (src.is_representation_inplace() && needed <= inplace_capacity) { // Both src and the requested headroom fit inline. No buffer to - // adopt or allocate; just propagate (if applicable) and copy limbs. + // allocate; release ours (if any), propagate, and copy limbs. + free_storage(); if constexpr (propagate_alloc) { m_alloc = std::forward(src).m_alloc; } @@ -789,39 +818,9 @@ class BEMAN_BIG_INT_TRIVIAL_ABI basic_big_int { return; } - if constexpr (!std::is_lvalue_reference_v) { - // For a heap `src`, adopt its pointer when the allocators are - // compatible -- i.e., we are propagating from src, the allocator - // type is always-equal (e.g. std::allocator), or the two - // allocators compare equal at runtime. - if (!src.is_representation_inplace()) { - if constexpr (propagate_alloc || alloc_traits::is_always_equal::value) { - free_storage(); - if constexpr (propagate_alloc) { - m_alloc = std::forward(src).m_alloc; - } - m_capacity = src.m_capacity; - m_storage.data = src.m_storage.data; - m_size_and_sign = src.m_size_and_sign; - src.m_capacity = 0; - src.m_size_and_sign = 1; - src.m_storage = {}; - if (m_capacity < needed) { - grow(needed); - } - return; - } - // Allocators differ and don't propagate: fall through to a - // fresh allocation owned by our allocator. - } - // `src` is inline (or unstealable heap), fall through to the - // allocate-and-copy path below. - } - - // Fall back to a fresh allocation of `needed` limbs. Secure it before - // releasing ours, so a throwing allocation leaves `*this` unchanged. A - // propagating allocator has to serve the new block while ours still has to - // release the old, so allocate through a copy of `src`'s. + // Fresh allocation of `needed` limbs. Secure it before releasing ours, so a throwing allocation + // leaves `*this` unchanged. A propagating allocator has to serve the new block while ours still + // has to release the old, so allocate through a copy of `src`'s. const alloc_result allocation = [&] { if constexpr (propagate_alloc) { allocator_type src_alloc(src.m_alloc); @@ -1136,11 +1135,11 @@ constexpr basic_big_int& basic_big_int::operator=(const basic_ template constexpr basic_big_int& basic_big_int::operator=(basic_big_int&& x) noexcept { - // Invariant: `assign_value` with `extra_space == 0` and an rvalue `src` - // never allocates -- either `*this` already fits `x.limb_count()`, or we - // steal `x`'s heap buffer, or `x` is inline and fits inline in `*this`. - // So the `noexcept` contract holds even though `assign_value` itself is - // not marked `noexcept`. + // A heap `x` whose buffer our allocator can free (propagating, always-equal, or equal) is + // stolen whatever our capacity, leaving `x` as inline zero. Otherwise `x` is copied into the + // existing storage, which allocates only if it does not fit. That copy needs an unequal, + // non-propagating allocator (e.g. a different pmr resource); it is the one case in which this + // `noexcept` operator can throw, which terminates. assign_value(std::move(x)); return *this; } diff --git a/tests/beman/big_int/allocation.test.cpp b/tests/beman/big_int/allocation.test.cpp index 67c651ca..cdcfc750 100644 --- a/tests/beman/big_int/allocation.test.cpp +++ b/tests/beman/big_int/allocation.test.cpp @@ -2,7 +2,9 @@ // SPDX-License-Identifier: BSL-1.0 #include +#include #include +#include #include #include #include @@ -868,26 +870,42 @@ TEST(Allocation, CopyAssignReusesDstStorage) { EXPECT_EQ(dst, src); } -TEST(Allocation, MoveAssignReusesDstStorageWhenLarger) { - // When dst's capacity already covers src's limb count, assign_value should - // copy src's limbs into dst's buffer rather than stealing src's (smaller) - // buffer. +TEST(Allocation, MoveAssignStealsHeapSrcEvenWhenDstLarger) { + // A heap source is stolen whatever capacity dst already holds: the source buffer is + // adopted, dst's own buffer is released, and the source is left as inline zero. BEMAN_BIG_INT_NAMESPACE::big_int dst{1U}; dst.reserve_representation(16); // big dst buffer - const auto* const dst_data = dst.representation().data(); - const auto dst_cap = dst.representation_capacity(); + const auto dst_cap = dst.representation_capacity(); BEMAN_BIG_INT_NAMESPACE::big_int src = BEMAN_BIG_INT_NAMESPACE::big_int{0xFFFFFFFFFFFFFFFFU} + BEMAN_BIG_INT_NAMESPACE::big_int{1}; ASSERT_EQ(src.representation().size(), 2U); - const auto src_cap = src.representation_capacity(); + const auto* const src_data = src.representation().data(); + const auto src_cap = src.representation_capacity(); ASSERT_LT(src_cap, dst_cap); // dst has more capacity than src dst = std::move(src); - // dst retained its larger buffer rather than adopting src's smaller one. + EXPECT_EQ(dst.representation().data(), src_data); + EXPECT_EQ(dst.representation_capacity(), src_cap); + ASSERT_EQ(dst.representation().size(), 2U); + EXPECT_TRUE(is_inplace(src)); + EXPECT_EQ(src, 0U); +} + +TEST(Allocation, MoveAssignInlineSrcReusesDstStorage) { + // An inline source has no buffer to steal, so it is copied into dst's existing storage. + BEMAN_BIG_INT_NAMESPACE::big_int dst{1U}; + dst.reserve_representation(16); + const auto* const dst_data = dst.representation().data(); + const auto dst_cap = dst.representation_capacity(); + + BEMAN_BIG_INT_NAMESPACE::big_int src{5U}; + ASSERT_TRUE(is_inplace(src)); + + dst = std::move(src); EXPECT_EQ(dst.representation().data(), dst_data); EXPECT_EQ(dst.representation_capacity(), dst_cap); - ASSERT_EQ(dst.representation().size(), 2U); + EXPECT_EQ(dst, 5U); } TEST(Allocation, MoveAssignStealsSrcWhenDstTooSmall) { @@ -1030,3 +1048,171 @@ consteval bool test_grow_shrink_grow() { return x.representation()[0] == 42U; } static_assert(test_grow_shrink_grow()); + +// ----- Allocator ownership across assignment ----- + +// Records which allocator id handed out each block, and counts blocks released through an allocator other than +// the one that allocated them. +struct ownership_tracker { + std::map owner; + std::size_t mismatched_frees = 0; + std::size_t live = 0; +}; + +ownership_tracker& tracker() { + static ownership_tracker t; + return t; +} + +template +struct tracking_pocca_alloc { + using value_type = T; + using propagate_on_container_copy_assignment = std::true_type; + using propagate_on_container_move_assignment = std::true_type; + + std::size_t id = 0; + + tracking_pocca_alloc() = default; + explicit tracking_pocca_alloc(std::size_t allocator_id) noexcept : id{allocator_id} {} + template + tracking_pocca_alloc(const tracking_pocca_alloc& other) noexcept : id{other.id} {} + + [[nodiscard]] T* allocate(std::size_t n) { + T* const p = std::allocator{}.allocate(n); + tracker().owner[p] = id; + ++tracker().live; + return p; + } + void deallocate(T* p, std::size_t n) noexcept { + if (tracker().owner[p] != id) { + ++tracker().mismatched_frees; + } + tracker().owner.erase(p); + --tracker().live; + std::allocator{}.deallocate(p, n); + } + + template + bool operator==(const tracking_pocca_alloc& other) const noexcept { + return id == other.id; + } +}; + +using tracking_big_int = + BEMAN_BIG_INT_NAMESPACE::basic_big_int<64, + BEMAN_BIG_INT_NAMESPACE::uint_multiprecision_t, + tracking_pocca_alloc>; + +namespace { +using tracking_id = tracking_pocca_alloc; + +tracking_big_int make_heap_value(const tracking_id alloc, const std::size_t bits) { + tracking_big_int x{1, alloc}; + x <<= bits; + return x; +} +} // namespace + +TEST(Allocation, PropagatingCopyAssignFreesLargerDstWithItsOwnAllocator) { + tracker() = {}; + { + tracking_big_int dst = make_heap_value(tracking_id{1U}, 4000); + dst.reserve_representation(200); // larger than the source, so the old fast path kept it + const tracking_big_int src = make_heap_value(tracking_id{2U}, 100); + ASSERT_FALSE(is_inplace(src)); + + dst = src; + + EXPECT_EQ(dst, src); + EXPECT_EQ(dst.get_allocator().id, 2U); + } + EXPECT_EQ(tracker().mismatched_frees, 0U); + EXPECT_EQ(tracker().live, 0U); +} + +TEST(Allocation, PropagatingCopyAssignOfInlineSrcFreesDstWithItsOwnAllocator) { + tracker() = {}; + { + tracking_big_int dst = make_heap_value(tracking_id{1U}, 4000); + const tracking_big_int src{7, tracking_id{2U}}; + + dst = src; + + EXPECT_EQ(dst, 7); + EXPECT_EQ(dst.get_allocator().id, 2U); + } + EXPECT_EQ(tracker().mismatched_frees, 0U); + EXPECT_EQ(tracker().live, 0U); +} + +TEST(Allocation, PropagatingMoveAssignFreesDstWithItsOwnAllocator) { + tracker() = {}; + { + tracking_big_int dst = make_heap_value(tracking_id{1U}, 4000); + tracking_big_int heap_src = make_heap_value(tracking_id{2U}, 100); + const auto* const src_data = heap_src.representation().data(); + + dst = std::move(heap_src); + EXPECT_EQ(dst.representation().data(), src_data); + EXPECT_EQ(dst.get_allocator().id, 2U); + + tracking_big_int inline_src{9, tracking_id{3U}}; + dst = std::move(inline_src); + EXPECT_EQ(dst, 9); + EXPECT_EQ(dst.get_allocator().id, 3U); + } + EXPECT_EQ(tracker().mismatched_frees, 0U); + EXPECT_EQ(tracker().live, 0U); +} + +TEST(Allocation, PmrMoveAssignStealsFromTheSameResource) { + std::pmr::monotonic_buffer_resource resource; + BEMAN_BIG_INT_NAMESPACE::pmr::big_int dst{1, &resource}; + dst.reserve_representation(16); + BEMAN_BIG_INT_NAMESPACE::pmr::big_int src{1, &resource}; + src <<= 200; + const auto* const src_data = src.representation().data(); + const auto expected = src; + + dst = std::move(src); + + EXPECT_EQ(dst.representation().data(), src_data); + EXPECT_EQ(dst, expected); + EXPECT_EQ(dst.get_allocator().resource(), &resource); + EXPECT_EQ(src, 0U); +} + +TEST(Allocation, PmrMoveAssignCopiesFromAnotherResourceAndKeepsItsOwn) { + std::pmr::monotonic_buffer_resource dst_resource; + std::pmr::monotonic_buffer_resource src_resource; + BEMAN_BIG_INT_NAMESPACE::pmr::big_int dst{1, &dst_resource}; + BEMAN_BIG_INT_NAMESPACE::pmr::big_int src{1, &src_resource}; + src <<= 200; + const auto* const src_data = src.representation().data(); + const auto expected = src; + + dst = std::move(src); + + EXPECT_NE(dst.representation().data(), src_data); + EXPECT_EQ(dst, expected); + EXPECT_EQ(dst.get_allocator().resource(), &dst_resource); + EXPECT_EQ(src.get_allocator().resource(), &src_resource); + EXPECT_EQ(src, expected); // not stolen, so the source keeps its value +} + +TEST(Allocation, PmrMoveAssignFromAnotherResourceReusesLargerDstStorage) { + std::pmr::monotonic_buffer_resource dst_resource; + std::pmr::monotonic_buffer_resource src_resource; + BEMAN_BIG_INT_NAMESPACE::pmr::big_int dst{1, &dst_resource}; + dst.reserve_representation(16); + const auto* const dst_data = dst.representation().data(); + BEMAN_BIG_INT_NAMESPACE::pmr::big_int src{1, &src_resource}; + src <<= 200; + const auto expected = src; + + dst = std::move(src); + + EXPECT_EQ(dst.representation().data(), dst_data); + EXPECT_EQ(dst, expected); + EXPECT_EQ(dst.get_allocator().resource(), &dst_resource); +} diff --git a/tests/beman/big_int/inline_tail.test.cpp b/tests/beman/big_int/inline_tail.test.cpp index ef06fd67..304270b4 100644 --- a/tests/beman/big_int/inline_tail.test.cpp +++ b/tests/beman/big_int/inline_tail.test.cpp @@ -47,8 +47,8 @@ constexpr T all_ones(unsigned k) { for (unsigned i = 0; i < k * limb_width / 4; ++i) { digits[i] = 'f'; } - T x; - const auto n = k * limb_width / 4; + T x; + const auto n = k * limb_width / 4; [[maybe_unused]] const auto r = from_chars(digits, digits + n, x, 16); return x; } @@ -148,14 +148,14 @@ constexpr bool div_rem_small_by_large() { if (!(r.quotient == 0U && tail_is_zero(r.quotient) && r.remainder == a && tail_is_zero(r.remainder))) { return false; } - T a2 = two_limbs(); + T a2 = two_limbs(); auto r2 = div_rem_to_zero(std::move(a2), b); return r2.quotient == 0U && tail_is_zero(r2.quotient) && r2.remainder == two_limbs(); } template constexpr bool from_chars_into_two_limbs(int base, const char* digits, unsigned expected) { - T x = two_limbs(); + T x = two_limbs(); std::string_view s{digits}; const auto r = from_chars(s.data(), s.data() + s.size(), x, base); return r.ec == std::errc{} && x == expected && tail_is_zero(x); @@ -198,7 +198,16 @@ constexpr bool moved_from_after_steal() { src <<= static_cast(T::inplace_bits) + 10; T dst; dst = std::move(src); - return !is_inplace(dst) && src == 0U && tail_is_zero(src); + if (is_inplace(dst) || !(src == 0U) || !tail_is_zero(src)) { + return false; + } + // A destination that already holds more room still steals, and must leave a clean source. + T src2{1}; + src2 <<= static_cast(T::inplace_bits) + 10; + T dst2{1}; + dst2 <<= static_cast(T::inplace_bits) + 500; + dst2 = std::move(src2); + return !is_inplace(dst2) && src2 == 0U && tail_is_zero(src2); } } // namespace inline_tail_test @@ -206,25 +215,25 @@ BEMAN_BIG_INT_END_NAMESPACE namespace it = BEMAN_BIG_INT_NAMESPACE::inline_tail_test; -#define INLINE_TAIL_CASES(CASE) \ - CASE(Sub128, bb::basic_big_int<128>, sub_self) \ - CASE(Sub256, bb::basic_big_int<256>, sub_self) \ - CASE(Xor128, bb::basic_big_int<128>, xor_self) \ - CASE(Xor256, bb::basic_big_int<256>, xor_self) \ - CASE(ShrAll128, bb::basic_big_int<128>, shr_all) \ - CASE(ShrAll256, bb::basic_big_int<256>, shr_all) \ - CASE(ShrLimb128, bb::basic_big_int<128>, shr_by_a_limb_matches_builtin) \ - CASE(ShrLimb256, bb::basic_big_int<256>, shr_by_a_limb_matches_builtin) \ - CASE(Rem128, bb::basic_big_int<128>, rem_by_small) \ - CASE(Rem256, bb::basic_big_int<256>, rem_by_small) \ - CASE(DivRem128, bb::basic_big_int<128>, div_rem_small_by_large) \ - CASE(DivRem256, bb::basic_big_int<256>, div_rem_small_by_large) \ - CASE(FromChars128, bb::basic_big_int<128>, from_chars_small_cases) \ - CASE(FromChars256, bb::basic_big_int<256>, from_chars_small_cases) \ - CASE(FromCharsHeap64, bb::big_int, from_chars_reused_heap_all) \ +#define INLINE_TAIL_CASES(CASE) \ + CASE(Sub128, bb::basic_big_int<128>, sub_self) \ + CASE(Sub256, bb::basic_big_int<256>, sub_self) \ + CASE(Xor128, bb::basic_big_int<128>, xor_self) \ + CASE(Xor256, bb::basic_big_int<256>, xor_self) \ + CASE(ShrAll128, bb::basic_big_int<128>, shr_all) \ + CASE(ShrAll256, bb::basic_big_int<256>, shr_all) \ + CASE(ShrLimb128, bb::basic_big_int<128>, shr_by_a_limb_matches_builtin) \ + CASE(ShrLimb256, bb::basic_big_int<256>, shr_by_a_limb_matches_builtin) \ + CASE(Rem128, bb::basic_big_int<128>, rem_by_small) \ + CASE(Rem256, bb::basic_big_int<256>, rem_by_small) \ + CASE(DivRem128, bb::basic_big_int<128>, div_rem_small_by_large) \ + CASE(DivRem256, bb::basic_big_int<256>, div_rem_small_by_large) \ + CASE(FromChars128, bb::basic_big_int<128>, from_chars_small_cases) \ + CASE(FromChars256, bb::basic_big_int<256>, from_chars_small_cases) \ + CASE(FromCharsHeap64, bb::big_int, from_chars_reused_heap_all) \ CASE(FromCharsHeap128, bb::basic_big_int<128>, from_chars_reused_heap_all) \ - CASE(Steal64, bb::big_int, moved_from_after_steal) \ - CASE(Steal128, bb::basic_big_int<128>, moved_from_after_steal) \ + CASE(Steal64, bb::big_int, moved_from_after_steal) \ + CASE(Steal128, bb::basic_big_int<128>, moved_from_after_steal) \ CASE(Steal256, bb::basic_big_int<256>, moved_from_after_steal) #define INLINE_TAIL_TEST(NAME, TYPE, FN) \ From c94a215b139d2f9e7539763d922a9bc56818d8d6 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:08:16 -0400 Subject: [PATCH 04/36] Add divide_takes_schoolbook gate helper and allow quotient to alias dividend in divide_unsigned --- include/beman/big_int/detail/div_impl.hpp | 61 ++++++++++++++++------- 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/include/beman/big_int/detail/div_impl.hpp b/include/beman/big_int/detail/div_impl.hpp index 0038434a..b85591b7 100644 --- a/include/beman/big_int/detail/div_impl.hpp +++ b/include/beman/big_int/detail/div_impl.hpp @@ -52,7 +52,10 @@ constexpr std::size_t divide_unsigned_storage_size(const std::size_t dividend_li // Preconditions: trimmed operands, divisor.size() >= 2, dividend.size() >= // divisor.size(), quotient.size() >= dividend.size() - divisor.size() + 1, // remainder.size() >= dividend.size() + 1, no aliasing, and `scratch` -// provides at least divide_unsigned_storage_size(...) limbs. +// provides at least divide_unsigned_storage_size(...) limbs. The one +// exception to no aliasing: `quotient` may start at the dividend's first limb +// (same data()), because the dividend is copied whole into scratch before the +// first quotient limb is written and never read again. // --------------------------------------------------------------------------- constexpr void divide_unsigned(const std::span quotient, const std::span remainder, @@ -66,7 +69,6 @@ constexpr void divide_unsigned(const std::span quot BEMAN_BIG_INT_DEBUG_ASSERT(dividend.size() >= divisor.size()); BEMAN_BIG_INT_DEBUG_ASSERT(quotient.size() >= dividend.size() - divisor.size() + 1); BEMAN_BIG_INT_DEBUG_ASSERT(remainder.size() >= dividend.size() + 1); - BEMAN_BIG_INT_DEBUG_ASSERT(quotient.data() != dividend.data()); BEMAN_BIG_INT_DEBUG_ASSERT(quotient.data() != divisor.data()); BEMAN_BIG_INT_DEBUG_ASSERT(remainder.data() != dividend.data()); BEMAN_BIG_INT_DEBUG_ASSERT(remainder.data() != divisor.data()); @@ -908,6 +910,37 @@ void divide_barrett_preinv(std::span quotient, std::span inv, scratch_allocator_base& scratch); +// True when the runtime dispatchers send an m-limb by s-limb division to the +// Barrett tier (see the gate rules above). +[[nodiscard]] constexpr bool divide_takes_barrett(const std::size_t m, const std::size_t s) noexcept { + const bool barrett_march = s >= barrett_march_cutoff && m / 16 >= s; + const bool barrett_march8 = s >= barrett_march8_cutoff && m / 8 >= s; + const bool barrett_quarter = m >= barrett_quarter_cutoff && m / 4 >= s; + const bool barrett_balanced = m >= barrett_balanced_cutoff && m - s >= s; + return barrett_march || barrett_march8 || barrett_quarter || barrett_balanced; +} + +// True when the runtime dispatchers take the schoolbook kernel (divide_unsigned) +// for an m-limb by s-limb division: neither the Barrett nor the +// divide-and-conquer gate fires. Constant evaluation always takes it. +[[nodiscard]] constexpr bool divide_takes_schoolbook(const std::size_t m, const std::size_t s) noexcept { + if (divide_takes_barrett(m, s)) { + return false; + } + return !(s >= burnikel_ziegler_cutoff && m - s >= burnikel_ziegler_offset); +} + +// Scratch limbs the schoolbook path of divide_dispatch (remainder_in_scratch = +// false) or divide_dispatch_q (true: the discarded remainder also lives in +// scratch) needs for an m-limb by s-limb division. +[[nodiscard]] constexpr std::size_t +divide_schoolbook_storage_size(const std::size_t m, const std::size_t s, const bool remainder_in_scratch) noexcept { + return divide_unsigned_storage_size(m, s) + (remainder_in_scratch ? m + 1 : 0); +} + +// Scratch limbs up to which a caller may keep division workspace on the stack. +inline constexpr std::size_t small_division_stack_limbs = 128; + // --------------------------------------------------------------------------- // Top-level division dispatcher (counterpart of multiply_dispatch): the Barrett // gates above are checked first, then the divide-and-conquer path, which needs @@ -930,16 +963,12 @@ constexpr void divide_dispatch(const std::span quot const std::size_t m = dividend.size(); const std::size_t s = divisor.size(); - const bool barrett_march = s >= barrett_march_cutoff && m / 16 >= s; - const bool barrett_march8 = s >= barrett_march8_cutoff && m / 8 >= s; - const bool barrett_quarter = m >= barrett_quarter_cutoff && m / 4 >= s; - const bool barrett_balanced = m >= barrett_balanced_cutoff && m - s >= s; - if (barrett_march || barrett_march8 || barrett_quarter || barrett_balanced) { - divide_barrett(quotient, remainder, dividend, divisor, alloc); - return; - } - if (s >= burnikel_ziegler_cutoff && m - s >= burnikel_ziegler_offset) { - divide_burnikel_ziegler(quotient, remainder, dividend, divisor, alloc); + if (!divide_takes_schoolbook(m, s)) { + if (divide_takes_barrett(m, s)) { + divide_barrett(quotient, remainder, dividend, divisor, alloc); + } else { + divide_burnikel_ziegler(quotient, remainder, dividend, divisor, alloc); + } return; } } @@ -967,17 +996,13 @@ constexpr void divide_dispatch_q(const std::span qu const std::size_t s = divisor.size(); if BEMAN_BIG_INT_IS_NOT_CONSTEVAL { - const bool barrett_march = s >= barrett_march_cutoff && m / 16 >= s; - const bool barrett_march8 = s >= barrett_march8_cutoff && m / 8 >= s; - const bool barrett_quarter = m >= barrett_quarter_cutoff && m / 4 >= s; - const bool barrett_balanced = m >= barrett_balanced_cutoff && m - s >= s; - if (barrett_march || barrett_march8 || barrett_quarter || barrett_balanced) { + if (divide_takes_barrett(m, s)) { const std::span r = scratch.allocate(m + 1); divide_barrett(quotient, r, dividend, divisor, alloc); scratch.deallocate(m + 1); return; } - if (s >= burnikel_ziegler_cutoff && m - s >= burnikel_ziegler_offset) { + if (!divide_takes_schoolbook(m, s)) { divide_quotient(quotient, dividend, divisor, alloc); return; } From 1fe907d9582862a8b010cc54a568c51886a22d76 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:08:16 -0400 Subject: [PATCH 05/36] Multiply dispatchers no longer need a pre-zeroed result; add multiply_basecase_runtime header shortcut --- include/beman/big_int/detail/mul_impl.hpp | 78 +++++++++++++++++++---- src/mul_dispatch.cpp | 50 +++++++++++++-- 2 files changed, 111 insertions(+), 17 deletions(-) diff --git a/include/beman/big_int/detail/mul_impl.hpp b/include/beman/big_int/detail/mul_impl.hpp index cb15ee84..c4a11253 100644 --- a/include/beman/big_int/detail/mul_impl.hpp +++ b/include/beman/big_int/detail/mul_impl.hpp @@ -1307,18 +1307,37 @@ static_assert(mul_slice_zones_valid(), "invalid slicing zone table (see mul_slic // the shape-aware dispatch names above. #define BEMAN_BIG_INT_HAS_SHAPE_DISPATCH 1 +// --------------------------------------------------------------------------- +// multiply_single_limb that also writes result[a.size()] when the product has +// no carry limb, so all a.size() + 1 limbs are defined. Same contract +// otherwise: `result` has space for a.size() + 1 limbs, no aliasing. Returns +// the number of significant result limbs. +// --------------------------------------------------------------------------- +constexpr std::size_t multiply_by_limb_full(const std::span result, + const std::span a, + const uint_multiprecision_t val) noexcept { + const std::size_t n = multiply_single_limb(result, a, val); + if (n == a.size()) { + result[n] = 0; + } + return n; +} + // --------------------------------------------------------------------------- // Runtime multiplication tier ladders (src/mul_dispatch.cpp): operands must -// be trimmed with at least two limbs; `result` pre-zeroed, sized for the -// full product, non-aliasing. Kernel workspaces come from the type-erased -// heap hooks. Returns the trimmed significant size. +// be trimmed with at least two limbs; `result` sized for the full product, +// non-aliasing, and need NOT be pre-zeroed: limbs [0, a.size() + b.size()) are +// all written (tiers that accumulate zero-fill them first), limbs beyond are +// untouched. Kernel workspaces come from the type-erased heap hooks. Returns +// the trimmed significant size. // --------------------------------------------------------------------------- std::size_t multiply_runtime(std::span result, std::span a, std::span b, const scratch_heap_source& heap); -// Benchmark/test-only variants of multiply_runtime, same contract. The +// Benchmark/test-only variants of multiply_runtime, same contract (a result +// that is not pre-zeroed is fine). The // schoolbook (min < karatsuba_cutoff) and power-of-two shortcuts still apply in // both. _sliced forces slicing of the top-level product whenever max > min, // ignoring the ratio test, and skips the FFT gate even where it would take the @@ -1341,18 +1360,38 @@ std::size_t square_runtime(std::span result, // Untrimmed/short-operand-tolerant runtime product for the src-side callers // (the division tiers and mulmod): trims, takes the single-limb shortcuts, -// then runs the tier ladder. The runtime mirror of multiply_dispatch. +// then runs the tier ladder. The runtime mirror of multiply_dispatch, with the +// same non-zeroed-result contract. std::size_t multiply_runtime_any(std::span result, std::span a_untrimmed, std::span b_untrimmed, const scratch_heap_source& heap); +// Master switch for the header-side basecase shortcut in multiply_dispatch. +inline constexpr bool mul_header_basecase_enabled = true; + +// Operand length below which multiply_dispatch calls multiply_basecase_runtime +// instead of building the scratch hooks and entering the ladder. A fixed +// constant, deliberately not an arch cutoff: AUTO-mode ISA macros can differ +// between a user TU and the library. src/mul_dispatch.cpp static_asserts that +// it is at most every Karatsuba cutoff of the compiled configuration. +inline constexpr std::size_t mul_header_basecase_limbs = 32; + +// Product (or square, when a and b are the same span) of trimmed operands with +// at least two limbs each, min(a.size(), b.size()) < mul_header_basecase_limbs, +// via the basecase kernels only: no scratch. Same result contract as +// multiply_runtime (no pre-zeroing needed). Returns the trimmed size. +std::size_t multiply_basecase_runtime(std::span result, + std::span a, + std::span b) noexcept; + // --------------------------------------------------------------------------- // result <- a * p2 where p2 is a trimmed power of two: a shifted copy of `a` // placed at limb offset p2.size() - 1, bit-shifted by countr_zero(p2.back()). // O(n) with no scratch, versus a full kernel dispatch (see GMP mpz_mul_2exp). -// `result` must be pre-zeroed, have space for a.size() + p2.size() limbs, and -// must NOT alias `a`. Returns the number of significant result limbs. +// Writes all a.size() + p2.size() limbs of `result` (it need NOT be pre-zeroed), +// which must have space for them and must NOT alias `a`. Returns the number of +// significant result limbs. // --------------------------------------------------------------------------- constexpr std::size_t multiply_power_of_two(const std::span result, const std::span a, @@ -1367,14 +1406,20 @@ constexpr std::size_t multiply_power_of_two(const std::span(std::countr_zero(p2.back())); const auto dst = result.subspan(limb_offset); + std::ranges::fill(result.first(limb_offset), uint_multiprecision_t{0}); std::ranges::copy(a, dst.begin()); - return limb_offset + shift_left_n(dst, a.size(), bit_shift); + const std::size_t shifted = shift_left_n(dst, a.size(), bit_shift); + if (shifted == a.size()) { + dst[shifted] = 0; + } + return limb_offset + shifted; } // --------------------------------------------------------------------------- // Squaring dispatcher: result <- a * a using kernels that exploit the // symmetric cross products. Same contract as multiply_dispatch: `result` must -// be pre-zeroed with space for 2 * a.size() limbs and must NOT alias `a`. +// have space for 2 * a.size() limbs (it need NOT be pre-zeroed) and must NOT +// alias `a`. // `a` must be trimmed with at least two limbs. Returns the number of // significant result limbs. // --------------------------------------------------------------------------- @@ -1393,7 +1438,10 @@ std::size_t square_dispatch(const std::span result, // --------------------------------------------------------------------------- // Top-level multiplication dispatcher. -// `result` must be pre-zeroed and have space for a.size() + b.size() limbs. +// `result` must have space for a.size() + b.size() limbs; it need NOT be +// pre-zeroed. On return limbs [0, trimmed a.size() + trimmed b.size()) hold the +// product (the high ones zero when the product is shorter); limbs beyond are +// untouched, so a caller that wants zeros there fills them itself. // `result` must NOT alias `a` or `b`. // Returns the number of significant result limbs (trimmed). // --------------------------------------------------------------------------- @@ -1419,10 +1467,10 @@ constexpr std::size_t multiply_dispatch(const std::span return hi != 0 ? 2 : 1; } if (a.size() == 1) { - return multiply_single_limb(result, b, a[0]); + return multiply_by_limb_full(result, b, a[0]); } if (b.size() == 1) { - return multiply_single_limb(result, a, b[0]); + return multiply_by_limb_full(result, a, b[0]); } // This check has 0 runtime cost, but could speed up/reduce depth of constant evaluation @@ -1435,6 +1483,7 @@ constexpr std::size_t multiply_dispatch(const std::span } // Squaring halves the widening muls, and so the consteval step count. if (a.data() == b.data() && a.size() == b.size()) { + std::ranges::fill(result.first(2 * a.size()), uint_multiprecision_t{0}); square_long(result, a); return trimmed_size_span(std::span{result.data(), 2 * a.size()}); } @@ -1444,6 +1493,11 @@ constexpr std::size_t multiply_dispatch(const std::span // keeps long multiplication (the recursive tiers could blow up consteval // step limits, and the kernels are runtime-compiled). if BEMAN_BIG_INT_IS_NOT_CONSTEVAL { + if constexpr (mul_header_basecase_enabled) { + if (std::min(a.size(), b.size()) < mul_header_basecase_limbs) { + return multiply_basecase_runtime(result, a, b); + } + } const scratch_allocator hooks(alloc); return multiply_runtime(result, a, b, hooks.heap()); } else { diff --git a/src/mul_dispatch.cpp b/src/mul_dispatch.cpp index 1f1ff152..3c17d001 100644 --- a/src/mul_dispatch.cpp +++ b/src/mul_dispatch.cpp @@ -71,6 +71,9 @@ std::size_t square_runtime(const std::span result, } } + // The Karatsuba/Toom squaring tiers accumulate into the result. + std::ranges::fill(result.first(result_total), uint_multiprecision_t{0}); + const auto in_heap_scratch = [&](const std::size_t limbs, auto&& kernel) { scratch_heap_array buf(heap, limbs); scratch_allocator_base scratch(buf.data(), limbs); @@ -172,9 +175,10 @@ std::size_t multiply_runtime_impl(std::span result, // (it may slice the other way or take the FFT) and allocates its own scratch, // possibly after piece 0 has been written. On x86 (model off, gate = floor on // min) slicing is only entered when min = m is below the floor, so no piece -// takes the FFT and this path is a no-op there. Callers pre-zero the result and -// discard it if an allocation throws. Requires trimmed operands, -// min >= karatsuba_cutoff and a pre-zeroed result. +// takes the FFT and this path is a no-op there. The caller discards the result +// if an allocation throws. Requires trimmed operands, min >= karatsuba_cutoff +// and a result whose first a.size() + b.size() limbs are pre-zeroed (the +// pieces accumulate into it). std::size_t multiply_sliced(const std::span result, const std::span a, const std::span b, @@ -306,6 +310,9 @@ std::size_t multiply_runtime_impl(const std::span r } } + // The slicing and Karatsuba/Toom tiers accumulate into the result. + std::ranges::fill(result.first(result_total), uint_multiprecision_t{0}); + const bool slice = mode == slice_mode::forced ? max_size > min_size : mode == slice_mode::automatic ? mul_should_slice(min_size, max_size) : false; @@ -358,14 +365,47 @@ std::size_t multiply_runtime_any(const std::span re return hi != 0 ? 2 : 1; } if (a.size() == 1) { - return multiply_single_limb(result, b, a[0]); + return multiply_by_limb_full(result, b, a[0]); } if (b.size() == 1) { - return multiply_single_limb(result, a, b[0]); + return multiply_by_limb_full(result, a, b[0]); } return multiply_runtime(result, a, b, heap); } +// The header only calls this below mul_header_basecase_limbs, so every +// operand-size gate used here must stay under the compiled cutoffs. +static_assert(mul_header_basecase_limbs <= karatsuba_cutoff); +static_assert(mul_header_basecase_limbs <= square_karatsuba_cutoff); + +std::size_t multiply_basecase_runtime(const std::span result, + const std::span a, + const std::span b) noexcept { + BEMAN_BIG_INT_DEBUG_ASSERT(a.size() >= 2); + BEMAN_BIG_INT_DEBUG_ASSERT(b.size() >= 2); + BEMAN_BIG_INT_DEBUG_ASSERT(a.back() != 0); + BEMAN_BIG_INT_DEBUG_ASSERT(b.back() != 0); + BEMAN_BIG_INT_DEBUG_ASSERT(std::min(a.size(), b.size()) < mul_header_basecase_limbs); + BEMAN_BIG_INT_DEBUG_ASSERT(result.size() >= a.size() + b.size()); + + const std::size_t result_total = a.size() + b.size(); + + // Mirrors multiply_runtime_impl / square_runtime below their Karatsuba cutoffs. + if (a.data() == b.data() && a.size() == b.size()) { + const std::size_t n = a.size(); + if (n < square_long_cutoff) { + ::beman_big_int_multiply_long_runtime(result.data(), a.data(), n, a.data(), n); + } else if (is_power_of_two_span(a)) { + return multiply_power_of_two(result, a, a); + } else { + ::beman_big_int_square_long_runtime(result.data(), a.data(), n); + } + } else { + ::beman_big_int_multiply_long_runtime(result.data(), a.data(), a.size(), b.data(), b.size()); + } + return trimmed_size_span(std::span{result.data(), result_total}); +} + } // namespace detail BEMAN_BIG_INT_END_NAMESPACE From bc06075772870ccf7d438eee3d2ff09a32213e38 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:08:16 -0400 Subject: [PATCH 06/36] Add dispatch_contract tests: poisoned result spans across multiply and divide dispatchers --- .../beman/big_int/dispatch_contract.test.cpp | 502 ++++++++++++++++++ 1 file changed, 502 insertions(+) create mode 100644 tests/beman/big_int/dispatch_contract.test.cpp diff --git a/tests/beman/big_int/dispatch_contract.test.cpp b/tests/beman/big_int/dispatch_contract.test.cpp new file mode 100644 index 00000000..b27b7f7f --- /dev/null +++ b/tests/beman/big_int/dispatch_contract.test.cpp @@ -0,0 +1,502 @@ +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// SPDX-License-Identifier: BSL-1.0 + +// Result-span contract of the multiply and divide dispatchers: they must produce the correct product, quotient and +// remainder into spans that are NOT pre-zeroed (callers may hand over uninitialized storage), and must leave limbs +// past the product alone. Every case runs a dispatcher into a poison-filled span and into a zeroed span, and the +// two must agree limb for limb; products are also checked against multiply_long where the work is small. + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace detail = ::BEMAN_BIG_INT_NAMESPACE::detail; + +namespace { + +using uint_t = ::BEMAN_BIG_INT_NAMESPACE::uint_multiprecision_t; +using alloc_t = std::allocator; +using limbs_t = std::vector; +using cspan_t = std::span; +using span_t = std::span; + +constexpr uint_t poison = static_cast(0xA5A5A5A5A5A5A5A5ULL); +constexpr uint_t guard_value = static_cast(0x5A5A5A5A5A5A5A5AULL); +constexpr std::size_t guard_limbs = 3; +constexpr std::size_t limb_bits = std::numeric_limits::digits; +constexpr std::size_t max_ref_work = 4'000'000; +constexpr std::size_t max_limbs = 20'000; + +limbs_t random_limbs(const std::size_t n, std::mt19937_64& rng) { + limbs_t v(n); + for (auto& x : v) { + x = static_cast(rng()); + } + if (v.back() == 0) { + v.back() = 1; + } + return v; +} + +// A power of two spanning `n` limbs: the single set bit sits in the top limb at position `bit`. +limbs_t power_of_two(const std::size_t n, const unsigned bit) { + limbs_t v(n, uint_t{0}); + v.back() = uint_t{1} << (bit % limb_bits); + return v; +} + +// Calls `run(result, a, b)` into a poisoned and into a zeroed result of a.size() + b.size() limbs plus guards. +// Checks that the two agree, that guard limbs are untouched, that the returned size is the trimmed size, and +// (when affordable) that the product matches multiply_long. +template +void check_product(const char* what, const cspan_t a, const cspan_t b, Run&& run) { + const std::size_t total = a.size() + b.size(); + limbs_t dirty(total + guard_limbs, poison); + limbs_t clean(total + guard_limbs, uint_t{0}); + std::fill(dirty.begin() + static_cast(total), dirty.end(), guard_value); + std::fill(clean.begin() + static_cast(total), clean.end(), guard_value); + + const std::size_t n_dirty = run(span_t{dirty.data(), total}, a, b); + const std::size_t n_clean = run(span_t{clean.data(), total}, a, b); + + for (std::size_t i = total; i < dirty.size(); ++i) { + EXPECT_EQ(dirty[i], guard_value) << what << ": guard limb " << (i - total) << " overwritten, la=" << a.size() + << " lb=" << b.size(); + } + EXPECT_EQ(n_dirty, n_clean) << what << ": la=" << a.size() << " lb=" << b.size(); + EXPECT_EQ(n_dirty, detail::trimmed_size_span(cspan_t{dirty.data(), total})) + << what << ": returned size is not the trimmed size, la=" << a.size() << " lb=" << b.size(); + const bool same = std::equal(dirty.begin(), dirty.begin() + static_cast(total), clean.begin()); + EXPECT_TRUE(same) << what << ": poisoned result differs from zeroed result, la=" << a.size() + << " lb=" << b.size(); + + if (a.size() * b.size() <= max_ref_work) { + limbs_t ref(total, uint_t{0}); + detail::multiply_long(span_t{ref}, a, b); + const bool matches = std::equal(ref.begin(), ref.end(), dirty.begin()); + EXPECT_TRUE(matches) << what << ": differs from multiply_long, la=" << a.size() << " lb=" << b.size(); + } +} + +// Each runner returns the trimmed size and takes (result, a, b); `a` and `b` are trimmed with a.size() >= 2 where +// the runner is a direct tier entry point. +std::size_t run_dispatch(const span_t r, const cspan_t a, const cspan_t b) { + alloc_t alloc; + return detail::multiply_dispatch(r, a, b, alloc); +} + +std::size_t run_square_dispatch(const span_t r, const cspan_t a, const cspan_t) { + alloc_t alloc; + return detail::square_dispatch(r, a, alloc); +} + +std::size_t run_runtime(const span_t r, const cspan_t a, const cspan_t b) { + alloc_t alloc; + const detail::scratch_allocator hooks(alloc); + return detail::multiply_runtime(r, a, b, hooks.heap()); +} + +std::size_t run_sliced(const span_t r, const cspan_t a, const cspan_t b) { + alloc_t alloc; + const detail::scratch_allocator hooks(alloc); + return detail::multiply_runtime_sliced(r, a, b, hooks.heap()); +} + +std::size_t run_unsliced(const span_t r, const cspan_t a, const cspan_t b) { + alloc_t alloc; + const detail::scratch_allocator hooks(alloc); + return detail::multiply_runtime_unsliced(r, a, b, hooks.heap()); +} + +std::size_t run_any(const span_t r, const cspan_t a, const cspan_t b) { + alloc_t alloc; + const detail::scratch_allocator hooks(alloc); + return detail::multiply_runtime_any(r, a, b, hooks.heap()); +} + +std::size_t run_square_runtime(const span_t r, const cspan_t a, const cspan_t) { + alloc_t alloc; + const detail::scratch_allocator hooks(alloc); + return detail::square_runtime(r, a, hooks.heap()); +} + +std::size_t run_basecase(const span_t r, const cspan_t a, const cspan_t b) { + return detail::multiply_basecase_runtime(r, a, b); +} + +// All entry points for one operand pair (a, b). `squaring` means b is the same span as a. +void check_all_entry_points(const cspan_t a, const cspan_t b, const bool squaring) { + check_product("multiply_dispatch", a, b, run_dispatch); + check_product("multiply_runtime_any", a, b, run_any); + if (a.size() >= 2 && b.size() >= 2) { + check_product("multiply_runtime", a, b, run_runtime); + check_product("multiply_runtime_unsliced", a, b, run_unsliced); + check_product("multiply_runtime_sliced", a, b, run_sliced); + if (std::min(a.size(), b.size()) < detail::mul_header_basecase_limbs) { + check_product("multiply_basecase_runtime", a, b, run_basecase); + } + if (squaring) { + check_product("square_dispatch", a, b, run_square_dispatch); + check_product("square_runtime", a, b, run_square_runtime); + } + } +} + +std::size_t sat_sub(const std::size_t x, const std::size_t d) { return x > d ? x - d : 1; } + +// Operand sizes straddling every cutoff and basecase boundary. +std::vector boundary_sizes() { + std::vector v = {1, 2, 3, 4, 5, 8, 16, 31, 32, 33}; + const std::size_t cutoffs[] = {detail::square_long_cutoff, + detail::karatsuba_cutoff, + detail::square_karatsuba_cutoff, + detail::toom_cook_3_cutoff, + detail::square_toom_cook_3_cutoff, + detail::toom_cook_4_cutoff, + detail::square_toom_cook_4_cutoff, + detail::toom_cook_6_5_cutoff, + detail::square_toom_cook_6_5_cutoff, + detail::toom_cook_8_5_cutoff, + detail::square_toom_cook_8_5_cutoff}; + for (const std::size_t c : cutoffs) { + v.push_back(sat_sub(c, 1)); + v.push_back(c); + v.push_back(c + 1); + } + std::ranges::sort(v); + v.erase(std::unique(v.begin(), v.end()), v.end()); + std::erase_if(v, [](const std::size_t n) { return n > max_limbs; }); + return v; +} + +TEST(DispatchContract, BalancedProductsAtEveryCutoff) { + std::mt19937_64 rng{0xd15ca7c4u}; + for (const std::size_t n : boundary_sizes()) { + const limbs_t a = random_limbs(n, rng); + const limbs_t b = random_limbs(n, rng); + check_all_entry_points(a, b, false); + if (n + 1 <= max_limbs) { + const limbs_t c = random_limbs(n + 1, rng); + check_all_entry_points(a, c, false); + check_all_entry_points(c, a, false); + } + } +} + +TEST(DispatchContract, SquaresAtEveryCutoff) { + std::mt19937_64 rng{0x5ca1ab1eu}; + for (const std::size_t n : boundary_sizes()) { + const limbs_t a = random_limbs(n, rng); + check_all_entry_points(a, a, true); + } +} + +TEST(DispatchContract, SingleLimbOperands) { + std::mt19937_64 rng{0x51a61eu}; + for (const std::size_t n : {std::size_t{1}, std::size_t{2}, std::size_t{3}, std::size_t{17}, std::size_t{200}}) { + const limbs_t a = random_limbs(n, rng); + // No carry out of the top limb: the product still has to define limb n. + const limbs_t small(1, uint_t{3}); + const limbs_t carry(1, ~uint_t{0}); + limbs_t low_top = a; + low_top.back() = 1; + check_all_entry_points(low_top, small, false); + check_all_entry_points(small, low_top, false); + check_all_entry_points(a, carry, false); + check_all_entry_points(carry, a, false); + } +} + +TEST(DispatchContract, PowerOfTwoOperands) { + std::mt19937_64 rng{0xb17b17u}; + for (const std::size_t n : boundary_sizes()) { + if (n < 2) { + continue; + } + for (const unsigned bit : {0u, 1u, 17u, static_cast(limb_bits - 1)}) { + const limbs_t p = power_of_two(n, bit); + for (const std::size_t other : {std::size_t{2}, std::size_t{7}, n, n + 5}) { + if (other > max_limbs) { + continue; + } + const limbs_t a = random_limbs(other, rng); + check_all_entry_points(a, p, false); + check_all_entry_points(p, a, false); + } + check_all_entry_points(p, p, true); + const limbs_t q = power_of_two(n + 1, bit); + check_all_entry_points(p, q, false); + } + } +} + +TEST(DispatchContract, PowerOfTwoKernelWritesEveryLimb) { + std::mt19937_64 rng{0x9072u}; + for (const std::size_t pn : {std::size_t{1}, std::size_t{2}, std::size_t{5}}) { + for (const unsigned bit : {0u, 3u, static_cast(limb_bits - 1)}) { + const limbs_t p = power_of_two(pn, bit); + for (const std::size_t an : {std::size_t{1}, std::size_t{2}, std::size_t{9}}) { + limbs_t a = random_limbs(an, rng); + // Force a top limb that does not carry out for small shifts. + a.back() = 1; + check_product("multiply_power_of_two", a, p, [](const span_t r, const cspan_t x, const cspan_t y) { + return detail::multiply_power_of_two(r, x, y); + }); + } + } + } +} + +// Sliced shapes: a long operand against a short one at or above karatsuba_cutoff. +TEST(DispatchContract, SlicedUnbalancedShapes) { + std::mt19937_64 rng{0x511ceu}; + const std::size_t kc = detail::karatsuba_cutoff; + const std::pair shapes[] = { + {kc, 3 * kc + 1}, {kc, 4 * kc + 3}, {kc + 5, 9 * kc}, {kc + 1, 2 * kc}, {2 * kc, 7 * kc + 2}, {kc - 1, 6 * kc}}; + for (const auto& [s, l] : shapes) { + if (l > max_limbs) { + continue; + } + const limbs_t a = random_limbs(s, rng); + const limbs_t b = random_limbs(l, rng); + check_all_entry_points(a, b, false); + check_all_entry_points(b, a, false); + } +} + +// The first balanced size the FFT gate takes (64-bit limbs), when it is small enough to run quickly. +TEST(DispatchContract, FirstFftSize) { + if constexpr (limb_bits == 64) { + std::mt19937_64 rng{0xff7u}; + for (std::size_t n = detail::karatsuba_cutoff; n <= 6000; ++n) { + if (detail::fft_mul_worthwhile(n, n)) { + const limbs_t a = random_limbs(n, rng); + const limbs_t b = random_limbs(n, rng); + check_all_entry_points(a, b, false); + break; + } + } + for (std::size_t n = detail::karatsuba_cutoff; n <= 6000; ++n) { + if (detail::square_fft_worthwhile(n)) { + const limbs_t a = random_limbs(n, rng); + check_all_entry_points(a, a, true); + break; + } + } + } +} + +// Untrimmed operands: the high zero limbs are dropped before dispatch and limbs past the trimmed sum stay untouched. +TEST(DispatchContract, UntrimmedOperands) { + std::mt19937_64 rng{0x07ca11edu}; + for (const std::size_t n : {std::size_t{2}, std::size_t{5}, std::size_t{40}}) { + limbs_t a = random_limbs(n, rng); + limbs_t b = random_limbs(n + 1, rng); + a.resize(n + 3, uint_t{0}); + b.resize(n + 2, uint_t{0}); + const std::size_t trimmed_total = n + (n + 1); + const std::size_t total = a.size() + b.size(); + limbs_t dirty(total, poison); + limbs_t clean(total, uint_t{0}); + alloc_t alloc; + const std::size_t nd = detail::multiply_dispatch(span_t{dirty}, cspan_t{a}, cspan_t{b}, alloc); + const std::size_t nc = detail::multiply_dispatch(span_t{clean}, cspan_t{a}, cspan_t{b}, alloc); + EXPECT_EQ(nd, nc); + EXPECT_TRUE(std::equal(dirty.begin(), dirty.begin() + static_cast(trimmed_total), clean.begin())); + for (std::size_t i = trimmed_total; i < total; ++i) { + EXPECT_EQ(dirty[i], poison) << "limb " << i << " past the trimmed product was written"; + } + } +} + +// --------------------------------------------------------------------------- +// Division +// --------------------------------------------------------------------------- + +// Quotient/remainder spans are fully written by every tier: poison-fill both and compare against a zeroed run. +void check_division(const std::size_t m, const std::size_t s, std::mt19937_64& rng) { + const limbs_t dividend = random_limbs(m, rng); + const limbs_t divisor = random_limbs(s, rng); + const cspan_t a{dividend}; + const cspan_t b{divisor}; + alloc_t alloc; + + const std::size_t qn = m - s + 1; + const std::size_t rn = m + 1; + + auto run_full = [&](const uint_t fill) { + limbs_t q(qn, fill); + limbs_t r(rn, fill); + detail::scratch_allocator scratch(detail::divide_schoolbook_storage_size(m, s, false), alloc); + detail::divide_dispatch(span_t{q}, span_t{r}, a, b, scratch, alloc); + return std::pair{std::move(q), std::move(r)}; + }; + auto run_q = [&](const uint_t fill) { + limbs_t q(qn, fill); + detail::scratch_allocator scratch(detail::divide_schoolbook_storage_size(m, s, true), alloc); + detail::divide_dispatch_q(span_t{q}, a, b, scratch, alloc); + return q; + }; + + const auto [qd, rd] = run_full(poison); + const auto [qc, rc] = run_full(uint_t{0}); + EXPECT_EQ(qd, qc) << "divide_dispatch quotient, m=" << m << " s=" << s; + EXPECT_EQ(rd, rc) << "divide_dispatch remainder, m=" << m << " s=" << s; + EXPECT_EQ(run_q(poison), run_q(uint_t{0})) << "divide_dispatch_q quotient, m=" << m << " s=" << s; + EXPECT_EQ(run_q(poison), qc) << "divide_dispatch_q differs from divide_dispatch, m=" << m << " s=" << s; + + // q * divisor + r == dividend, checked through the (already contract-tested) multiply_long. + limbs_t prod(qn + s, uint_t{0}); + detail::multiply_long(span_t{prod}, cspan_t{qc.data(), detail::trimmed_size_span(cspan_t{qc})}, + b); + limbs_t sum(std::max(prod.size(), rd.size()) + 1, uint_t{0}); + std::copy(prod.begin(), prod.end(), sum.begin()); + const bool carry = detail::add_unsigned_spans(span_t{sum}.first(sum.size() - 1), span_t{sum}.first(sum.size() - 1), + cspan_t{rd.data(), std::min(rd.size(), sum.size() - 1)}); + EXPECT_FALSE(carry); + for (std::size_t i = 0; i < sum.size(); ++i) { + const uint_t want = i < dividend.size() ? dividend[i] : uint_t{0}; + ASSERT_EQ(sum[i], want) << "q*d+r != dividend at limb " << i << ", m=" << m << " s=" << s; + } +} + +std::vector> division_shapes() { + std::vector> v; + const std::size_t bz = detail::burnikel_ziegler_cutoff; + const std::size_t off = detail::burnikel_ziegler_offset; + for (const std::size_t s : {std::size_t{2}, std::size_t{3}, std::size_t{4}, bz - 1, bz, bz + 1}) { + for (const std::size_t m : {s, s + 1, s + off - 1, s + off, s + off + 1, 3 * s + 1}) { + v.emplace_back(m, s); + } + } + v.emplace_back(8, 4); + v.emplace_back(9, 2); + // Barrett march gate: below, at and above the m/16 line for the compiled march cutoff. + const std::size_t c = detail::barrett_march_cutoff; + for (const std::size_t s : {c - 1, c, c + 1}) { + for (const std::size_t m : {16 * s - 1, 16 * s, 16 * s + 5}) { + if (s >= 2 && m <= max_limbs) { + v.emplace_back(m, s); + } + } + } + return v; +} + +TEST(DispatchContract, DivisionAcrossTierGates) { + std::mt19937_64 rng{0xd1f1de5u}; + bool saw_schoolbook = false; + bool saw_barrett = false; + bool saw_other = false; + for (const auto& [m, s] : division_shapes()) { + check_division(m, s, rng); + if (detail::divide_takes_schoolbook(m, s)) { + saw_schoolbook = true; + } else if (detail::divide_takes_barrett(m, s)) { + saw_barrett = true; + } else { + saw_other = true; + } + } + EXPECT_TRUE(saw_schoolbook); + EXPECT_TRUE(saw_barrett); + EXPECT_TRUE(saw_other); +} + +TEST(DispatchContract, DivideTakesSchoolbookMatchesGates) { + for (std::size_t s = 2; s < 80; ++s) { + for (const std::size_t m : {s, s + 1, s + 9, s + 10, s + 64, 4 * s, 16 * s, 16 * s + 5}) { + const bool barrett = (s >= detail::barrett_march_cutoff && m / 16 >= s) || + (s >= detail::barrett_march8_cutoff && m / 8 >= s) || + (m >= detail::barrett_quarter_cutoff && m / 4 >= s) || + (m >= detail::barrett_balanced_cutoff && m - s >= s); + const bool bz = s >= detail::burnikel_ziegler_cutoff && m - s >= detail::burnikel_ziegler_offset; + EXPECT_EQ(detail::divide_takes_schoolbook(m, s), !barrett && !bz) << "m=" << m << " s=" << s; + } + } +} + +// divide_unsigned reads the dividend only while copying it to scratch, so the quotient may start at its first limb. +TEST(DispatchContract, SchoolbookQuotientMayAliasDividend) { + std::mt19937_64 rng{0xa11a5u}; + for (const auto& [m, s] : {std::pair{8, 4}, {9, 2}, {20, 3}, {5, 5}, {33, 17}}) { + const limbs_t dividend = random_limbs(m, rng); + const limbs_t divisor = random_limbs(s, rng); + const std::size_t qn = m - s + 1; + alloc_t alloc; + + limbs_t q_ref(qn, uint_t{0}); + limbs_t r_ref(m + 1, uint_t{0}); + { + detail::scratch_allocator scratch(detail::divide_unsigned_storage_size(m, s), alloc); + detail::divide_unsigned(span_t{q_ref}, span_t{r_ref}, cspan_t{dividend}, cspan_t{divisor}, scratch); + } + + limbs_t buf = dividend; + limbs_t r(m + 1, poison); + { + detail::scratch_allocator scratch(detail::divide_unsigned_storage_size(m, s), alloc); + detail::divide_unsigned(span_t{buf.data(), qn}, span_t{r}, cspan_t{buf.data(), m}, cspan_t{divisor}, scratch); + } + EXPECT_TRUE(std::equal(q_ref.begin(), q_ref.end(), buf.begin())) << "m=" << m << " s=" << s; + EXPECT_EQ(r, r_ref) << "m=" << m << " s=" << s; + } +} + +// --------------------------------------------------------------------------- +// Constant evaluation: the dispatcher must not rely on a pre-zeroed result there either. +// --------------------------------------------------------------------------- + +constexpr bool constexpr_product_ok(const std::span a, const std::span b) { + std::array dirty{}; + std::array ref{}; + for (auto& x : dirty) { + x = ~uint_t{0}; + } + std::allocator alloc; + const std::size_t total = a.size() + b.size(); + const std::size_t n = detail::multiply_dispatch(std::span{dirty}, a, b, alloc); + detail::multiply_long(std::span{ref}, a, b); + for (std::size_t i = 0; i < total; ++i) { + if (dirty[i] != ref[i]) { + return false; + } + } + return n == detail::trimmed_size_span(std::span{ref.data(), total}); +} + +constexpr bool constexpr_cases() { + constexpr uint_t max = ~uint_t{0}; + const std::array one{7}; + const std::array three{3}; + const std::array wide{1, 2, 4}; + const std::array full{max, max, max}; + const std::array p2{0, 0, 4}; + const std::array p2_unit{0, 0, 1}; + const std::array pair{5, 6}; + const std::array sq{7, 9, 11}; + const std::array top{max}; + return constexpr_product_ok(one, three) && constexpr_product_ok(wide, three) && constexpr_product_ok(full, top) && + constexpr_product_ok(top, full) && constexpr_product_ok(wide, pair) && constexpr_product_ok(p2, pair) && + constexpr_product_ok(pair, p2) && constexpr_product_ok(p2_unit, wide) && constexpr_product_ok(p2, p2) && + constexpr_product_ok(full, full) && constexpr_product_ok(sq, sq); +} + +static_assert(constexpr_cases()); + +} // namespace From f34b6b9287245da00aa05c4997ae631fe30c81ff Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:31:42 -0400 Subject: [PATCH 07/36] Single-pass add/sub front ends: add_in_place and add_into use add_n_tail/sub_n_tail add_in_place adds or subtracts in place with the tail-aware primitives, stops touching limbs once the carry or borrow dies, grows only for the carry limb or when the other operand is longer, and sets the sign and count once. add_into writes a fresh result through storage_for_overwrite with direct stores and no zero scan or one-step trim. Integer operands now go straight through add_into. Differential tests cover operand sizes around the inline capacity, carry and borrow ripples, aliasing and constant evaluation. --- include/beman/big_int/basic_big_int.hpp | 396 +++++------------- .../beman/big_int/front_end_add_sub.test.cpp | 312 ++++++++++++++ tests/beman/big_int/front_end_reference.hpp | 288 +++++++++++++ 3 files changed, 712 insertions(+), 284 deletions(-) create mode 100644 tests/beman/big_int/front_end_add_sub.test.cpp create mode 100644 tests/beman/big_int/front_end_reference.hpp diff --git a/include/beman/big_int/basic_big_int.hpp b/include/beman/big_int/basic_big_int.hpp index 53cad81b..9579d894 100644 --- a/include/beman/big_int/basic_big_int.hpp +++ b/include/beman/big_int/basic_big_int.hpp @@ -1908,15 +1908,9 @@ constexpr detail::common_big_int_type operator+(L&& x, R&& y) { r.add_in_place(x.representation(), x.is_negative()); return r; } else if constexpr (form == detail::binary_op_form::copy_copy) { - // Use add_into which combines copy and addition allocations. - // Pre-order operands so the larger goes first — this lets the hot loop - // drop the `i < a.size()` bounds check on every iteration. + // `add_into` writes the sum straight into the fresh result: one allocation, one pass. Result r{detail::result_allocator(x, y)}; - if (x.limb_count() >= y.limb_count()) { - r.add_into(x.representation(), x.is_negative(), y.representation(), y.is_negative()); - } else { - r.add_into(y.representation(), y.is_negative(), x.representation(), x.is_negative()); - } + r.add_into(x.representation(), x.is_negative(), y.representation(), y.is_negative()); return r; } else if constexpr (form == detail::binary_op_form::move_int) { const auto y_limbs = detail::to_limbs(detail::uabs(y)); @@ -1929,16 +1923,14 @@ constexpr detail::common_big_int_type operator+(L&& x, R&& y) { r.add_in_place(detail::to_fixed_span(x_limbs), detail::integer_signbit(x)); return r; } else if constexpr (form == detail::binary_op_form::copy_int) { - Result r{detail::result_allocator(x, y)}; - r.template assign_value(x, !x.is_representation_inplace()); + Result r{detail::result_allocator(x, y)}; const auto y_limbs = detail::to_limbs(detail::uabs(y)); - r.add_in_place(detail::to_fixed_span(y_limbs), detail::integer_signbit(y)); + r.add_into(x.representation(), x.is_negative(), detail::to_fixed_span(y_limbs), detail::integer_signbit(y)); return r; } else if constexpr (form == detail::binary_op_form::int_copy) { - Result r{detail::result_allocator(x, y)}; - r.template assign_value(y, !y.is_representation_inplace()); + Result r{detail::result_allocator(x, y)}; const auto x_limbs = detail::to_limbs(detail::uabs(x)); - r.add_in_place(detail::to_fixed_span(x_limbs), detail::integer_signbit(x)); + r.add_into(y.representation(), y.is_negative(), detail::to_fixed_span(x_limbs), detail::integer_signbit(x)); return r; } } @@ -1977,14 +1969,8 @@ constexpr detail::common_big_int_type operator-(L&& x, R&& y) { } else if constexpr (form == detail::binary_op_form::copy_copy) { // Both lvalue `basic_big_int`s: fold `x + (-y)` into a fresh buffer in a // single pass via `add_into`, fusing the allocation with the subtract. - // Pre-order operands so the larger goes first — `add_into` relies on - // this to keep the hot loop free of a per-iteration bounds check. Result r{detail::result_allocator(x, y)}; - if (x.limb_count() >= y.limb_count()) { - r.add_into(x.representation(), x.is_negative(), y.representation(), !y.is_negative()); - } else { - r.add_into(y.representation(), !y.is_negative(), x.representation(), x.is_negative()); - } + r.add_into(x.representation(), x.is_negative(), y.representation(), !y.is_negative()); return r; } else if constexpr (form == detail::binary_op_form::move_int) { const auto y_limbs = detail::to_limbs(detail::uabs(y)); @@ -1998,17 +1984,14 @@ constexpr detail::common_big_int_type operator-(L&& x, R&& y) { r.add_in_place(detail::to_fixed_span(x_limbs), detail::integer_signbit(x)); return r; } else if constexpr (form == detail::binary_op_form::copy_int) { - Result r{detail::result_allocator(x, y)}; - r.template assign_value(x, !x.is_representation_inplace()); + Result r{detail::result_allocator(x, y)}; const auto y_limbs = detail::to_limbs(detail::uabs(y)); - r.add_in_place(detail::to_fixed_span(y_limbs), !detail::integer_signbit(y)); + r.add_into(x.representation(), x.is_negative(), detail::to_fixed_span(y_limbs), !detail::integer_signbit(y)); return r; } else if constexpr (form == detail::binary_op_form::int_copy) { - Result r{detail::result_allocator(x, y)}; - r.template assign_value(y, !y.is_representation_inplace()); - r.negate(); + Result r{detail::result_allocator(x, y)}; const auto x_limbs = detail::to_limbs(detail::uabs(x)); - r.add_in_place(detail::to_fixed_span(x_limbs), detail::integer_signbit(x)); + r.add_into(y.representation(), !y.is_negative(), detail::to_fixed_span(x_limbs), detail::integer_signbit(x)); return r; } } @@ -2376,292 +2359,137 @@ basic_big_int::compare_limbs(const std::span template -constexpr void basic_big_int::add_in_place(const std::span other, - const bool other_neg) { - const bool this_neg = is_negative(); +constexpr void +basic_big_int::add_in_place(const std::span other_in, + const bool other_neg) { + using span_t = std::span; + const span_t other = other_in.first(detail::trimmed_size_span(other_in)); + const bool this_neg = is_negative(); + const std::size_t n = limb_count(); + const std::size_t m = other.size(); + const std::uint32_t sign_bit = m_size_and_sign & 0x8000'0000U; if (this_neg == other_neg) { - // Same sign: add magnitudes limb-by-limb. Target sign stays `this_neg`. - const std::uint32_t old_count = limb_count(); - const std::size_t big = std::max(old_count, other.size()); - - // `grow(big)` only allocates when `big` exceeds our current capacity; - // otherwise it's a no-op and we stay in our existing buffer. - grow(big); - limb_type* limbs = limb_ptr(); - - bool carry = false; - for (std::size_t i = 0; i < big; ++i) { - const limb_type li = i < old_count ? limbs[i] : limb_type{0}; - const limb_type ri = i < other.size() ? other[i] : limb_type{0}; - const auto [r_value, r_carry] = detail::carrying_add(li, ri, carry); - limbs[i] = r_value; - carry = r_carry; + // Same sign: the magnitude grows, the sign stays. + if (m <= n) { + limb_type* limbs = limb_ptr(); + const bool carry = detail::add_n_tail({limbs, n}, {limbs, n}, other); + if (carry) { + grow(n + 1); + limbs = limb_ptr(); + limbs[n] = limb_type{1}; + m_size_and_sign = sign_bit | static_cast(n + 1); + } + return; } - unchecked_set_limb_count(static_cast(big)); - - // Only allocate for the extra top limb if the ripple carry has actually escaped. + // `other` is longer, so it cannot alias us and growing first is safe. + grow(m); + limb_type* limbs = limb_ptr(); + const bool carry = detail::add_n_tail({limbs, m}, other, {limbs, n}); + m_size_and_sign = sign_bit | static_cast(m); if (carry) { - grow(big + 1); - limb_ptr()[big] = limb_type{1}; - unchecked_set_limb_count(static_cast(big + 1)); + // `grow` only keeps the limbs the count covers, so the count goes first. + grow(m + 1); + limb_ptr()[m] = limb_type{1}; + m_size_and_sign = sign_bit | static_cast(m + 1); } - - unchecked_set_sign(this_neg && !unchecked_is_magnitude_zero()); return; } - // Differing signs: subtract smaller magnitude from larger; take the sign of the - // larger-magnitude operand. - const auto magnitude_order = detail::compare_limb_magnitudes(representation(), other); - - if (std::is_gteq(magnitude_order)) { - // `|*this| >= |other|`: compute `*this - other` in place. Target sign is `this_neg`. - const std::uint32_t n = limb_count(); - limb_type* const limbs = limb_ptr(); - - bool borrow = false; - for (std::size_t i = 0; i < n; ++i) { - const limb_type li = limbs[i]; - const limb_type si = i < other.size() ? other[i] : limb_type{0}; - const auto [r_value, r_borrow] = detail::borrowing_sub(li, si, borrow); - limbs[i] = r_value; - borrow = r_borrow; - } - // Having picked `*this` as the larger operand, the final borrow must be zero. - BEMAN_BIG_INT_DEBUG_ASSERT(!borrow); - - unchecked_trim_magnitude(); - unchecked_set_sign(this_neg && !unchecked_is_magnitude_zero()); + // Differing signs: subtract the smaller magnitude from the larger; the larger one's sign wins. + const auto order = detail::compare_limb_magnitudes(span_t{limb_ptr(), n}, other); + if (std::is_eq(order)) { + set_zero(); return; } - // `|other| > |*this|`: compute `other - *this` into our buffer. Target sign is `other_neg`. - const std::uint32_t old_count = limb_count(); - const std::size_t n = other.size(); - - // Subtraction can never produce more limbs than the larger operand, so this grow is tight. - grow(n); - limb_type* const limbs = limb_ptr(); - - bool borrow = false; - for (std::size_t i = 0; i < n; ++i) { - // Read our old limb at index `i` *before* overwriting it, so this loop is - // aliasing-safe if `other` happens to point into our own limb buffer. - const limb_type si = i < old_count ? limbs[i] : limb_type{0}; - const limb_type oi = other[i]; - const auto [r_value, r_borrow] = detail::borrowing_sub(oi, si, borrow); - limbs[i] = r_value; - borrow = r_borrow; - } - // Having picked `other` as the larger operand, the final borrow must be zero. + std::size_t k; + bool result_neg; + limb_type* limbs; + [[maybe_unused]] bool borrow; + if (std::is_gt(order)) { + // `|*this| > |other|`: subtract in place, nothing past `other` is touched once the borrow dies. + limbs = limb_ptr(); + borrow = detail::sub_n_tail({limbs, n}, {limbs, n}, other); + k = n; + result_neg = this_neg; + } else { + // `|other| > |*this|` (so `m >= n`): `other - *this` over our own limbs, reading each of ours first. + grow(m); + limbs = limb_ptr(); + borrow = detail::sub_n_tail({limbs, m}, other, {limbs, n}); + k = m; + result_neg = other_neg; + } BEMAN_BIG_INT_DEBUG_ASSERT(!borrow); - unchecked_set_limb_count(static_cast(n)); - unchecked_trim_magnitude(); - - // `|other| > |*this|` strictly, so the magnitude is guaranteed nonzero. - unchecked_set_sign(other_neg && !unchecked_is_magnitude_zero()); + while (k > 1 && limbs[k - 1] == 0) { + --k; + } + // Trimmed limbs are zero, so the inline tail needs no clearing. + m_size_and_sign = (static_cast(result_neg) << 31) | static_cast(k); } // Computes `(a, a_neg) + (b, b_neg)` directly into `*this`. -// Fuses copy and potential second allocation -// Precondition: `a.size() >= b.size()` +// Precondition: `*this` shares no storage with `a` or `b`. +// Either operand order is accepted, and operands may carry untrimmed high zero limbs. template template -constexpr void basic_big_int::add_into(const std::span a, - const bool a_neg, - const std::span b_span, - const bool b_neg) { - BEMAN_BIG_INT_DEBUG_ASSERT(a.size() >= b_span.size()); +constexpr void basic_big_int::add_into(const std::span a_in, + bool a_neg, + const std::span b_in, + bool b_neg) { + using span_t = std::span; + span_t a = a_in.first(detail::trimmed_size_span(a_in)); + span_t bs = b_in.first(detail::trimmed_size_span(b_in)); + if (a.size() < bs.size()) { + std::swap(a, bs); + std::swap(a_neg, b_neg); + } + const std::size_t old_count = limb_count(); + const std::size_t big = a.size(); + const std::size_t cap = is_representation_inplace() ? inplace_capacity : m_capacity; if (a_neg == b_neg) { - // Same sign: add magnitudes. - // Sign of the result is `a_neg`. - const std::size_t big = a.size(); - const std::size_t eff_cap = is_representation_inplace() ? inplace_capacity : m_capacity; - - // `common` is the range where both operands contribute, - // beyond it the remaining `a[i]` limbs just propagate the carry. - const std::size_t common = b_span.size(); - - // Unrolled addition loop - const auto run_add = [&](auto store) { - bool carry = false; - std::size_t i = 0; - for (; i + 4 <= common; i += 4) { - const auto [v0, c0] = detail::carrying_add(a[i + 0], b_span[i + 0], carry); - const auto [v1, c1] = detail::carrying_add(a[i + 1], b_span[i + 1], c0); - const auto [v2, c2] = detail::carrying_add(a[i + 2], b_span[i + 2], c1); - const auto [v3, c3] = detail::carrying_add(a[i + 3], b_span[i + 3], c2); - store(i + 0, v0); - store(i + 1, v1); - store(i + 2, v2); - store(i + 3, v3); - carry = c3; - } - for (; i < common; ++i) { - const auto [v, c] = detail::carrying_add(a[i], b_span[i], carry); - store(i, v); - carry = c; - } - // Carry-propagation tail over `a[common..big)`. Once the ripple - // stops carrying, the rest is a straight copy of `a`'s limbs. - while (i < big && carry) { - const auto [v, c] = detail::carrying_add(a[i], limb_type{0}, true); - store(i, v); - carry = c; - ++i; - } - for (; i < big; ++i) { - store(i, a[i]); - } - return carry; - }; - - if (big > inplace_capacity && big + 1 > eff_cap) { - // Heap allocation required for the result body. - // Write directly into the raw buffer via `construct_at`, - // skipping the `copy_n_to_allocation` zero-fill of the portion we're about to overwrite. - // Reserve `big + 1` so the carry limb folds into the same allocation. - const alloc_result allocation = alloc_limbs(big + 1); - limb_type* const limbs = allocation.ptr; - - const bool carry = run_add([limbs](std::size_t idx, limb_type v) { std::construct_at(limbs + idx, v); }); - - std::construct_at(limbs + big, carry ? limb_type{1} : limb_type{0}); - for (std::size_t i = big + 1; i < allocation.count; ++i) { - std::construct_at(limbs + i); - } - - free_storage(); - m_capacity = static_cast(allocation.count); - m_storage.data = allocation.ptr; - unchecked_set_limb_count(static_cast(carry ? big + 1 : big)); - } else { - // Either we fit inline, or we already own a heap buffer big enough to hold the result. - // Reuse it and let `grow` (almost always a no-op) handle the rare carry-out grow call. - limb_type* const limbs = limb_ptr(); - - const bool carry = run_add([limbs](std::size_t idx, limb_type v) { limbs[idx] = v; }); - unchecked_set_limb_count(static_cast(big)); - - if (carry) { - grow(big + 1); - limb_ptr()[big] = limb_type{1}; - unchecked_set_limb_count(static_cast(big + 1)); - } + // Same sign: the sign of the result is `a_neg` (the magnitude is nonzero when that is negative). + // Ask for the carry limb only when the body alone would force an allocation anyway. + limb_type* const limbs = storage_for_overwrite(big > cap ? big + 1 : big); + const bool carry = detail::add_n_tail({limbs, big}, a, bs); + const auto sign = static_cast(a_neg) << 31; + m_size_and_sign = sign | static_cast(big); + if (carry) { + // `grow` only keeps the limbs the count covers, so the count goes first. + grow(big + 1); + limb_ptr()[big] = limb_type{1}; + m_size_and_sign = sign | static_cast(big + 1); } - - unchecked_set_sign(a_neg && !unchecked_is_magnitude_zero()); + clear_inline_tail(old_count); return; } // Differing signs: subtract the smaller magnitude from the larger. - const auto magnitude_order = detail::compare_limb_magnitudes(a, b_span); - - // Both subtraction branches mirror the same-sign allocation strategy - const std::size_t eff_cap = is_representation_inplace() ? inplace_capacity : m_capacity; - - const auto finalize_trim_and_sign = - [this](const limb_type* const limbs, const std::size_t n, const bool target_neg) { - unchecked_set_limb_count(static_cast(n)); - while (limb_count() > 1 && limbs[limb_count() - 1] == 0) { - unchecked_set_limb_count(limb_count() - 1); - } - unchecked_set_sign(target_neg && !unchecked_is_magnitude_zero()); - }; - - // Unrolled subtract - const auto run_sub = [&](auto larger, auto smaller, auto store, const std::size_t total) { - const std::size_t common = smaller.size(); - bool borrow = false; - std::size_t i = 0; - for (; i + 4 <= common; i += 4) { - const auto [v0, b0] = detail::borrowing_sub(larger[i + 0], smaller[i + 0], borrow); - const auto [v1, b1] = detail::borrowing_sub(larger[i + 1], smaller[i + 1], b0); - const auto [v2, b2] = detail::borrowing_sub(larger[i + 2], smaller[i + 2], b1); - const auto [v3, b3] = detail::borrowing_sub(larger[i + 3], smaller[i + 3], b2); - store(i + 0, v0); - store(i + 1, v1); - store(i + 2, v2); - store(i + 3, v3); - borrow = b3; - } - for (; i < common; ++i) { - const auto [v, br] = detail::borrowing_sub(larger[i], smaller[i], borrow); - store(i, v); - borrow = br; - } - while (i < total && borrow) { - const auto [v, br] = detail::borrowing_sub(larger[i], limb_type{0}, true); - store(i, v); - borrow = br; - ++i; - } - for (; i < total; ++i) { - store(i, larger[i]); - } - return borrow; - }; - - if (std::is_gteq(magnitude_order)) { - // `|a| >= |b|`: compute `a - b` into our buffer. - // Target sign is `a_neg`. - const std::size_t n = a.size(); - - if (n > inplace_capacity && n > eff_cap) { - const alloc_result allocation = alloc_limbs(n); - limb_type* const limbs = allocation.ptr; - - [[maybe_unused]] const bool borrow = - run_sub(a, b_span, [limbs](std::size_t idx, limb_type v) { std::construct_at(limbs + idx, v); }, n); - BEMAN_BIG_INT_DEBUG_ASSERT(!borrow); - for (std::size_t i = n; i < allocation.count; ++i) { - std::construct_at(limbs + i); - } - - free_storage(); - m_capacity = static_cast(allocation.count); - m_storage.data = allocation.ptr; - finalize_trim_and_sign(limbs, n, a_neg); - } else { - limb_type* const limbs = limb_ptr(); - [[maybe_unused]] const bool borrow = - run_sub(a, b_span, [limbs](std::size_t idx, limb_type v) { limbs[idx] = v; }, n); - BEMAN_BIG_INT_DEBUG_ASSERT(!borrow); - finalize_trim_and_sign(limbs, n, a_neg); - } + const auto order = detail::compare_limb_magnitudes(a, bs); + if (std::is_eq(order)) { + set_zero(); return; } + const bool a_larger = std::is_gt(order); + const span_t larger = a_larger ? a : bs; + const span_t smaller = a_larger ? bs : a; + const bool result_neg = a_larger ? a_neg : b_neg; - // `|b| > |a|`: compute `b - a` into our buffer. - // Target sign is `b_neg`. - const std::size_t n = b_span.size(); - - if (n > inplace_capacity && n > eff_cap) { - const alloc_result allocation = alloc_limbs(n); - limb_type* const limbs = allocation.ptr; - - [[maybe_unused]] const bool borrow = - run_sub(b_span, a, [limbs](std::size_t idx, limb_type v) { std::construct_at(limbs + idx, v); }, n); - BEMAN_BIG_INT_DEBUG_ASSERT(!borrow); - for (std::size_t i = n; i < allocation.count; ++i) { - std::construct_at(limbs + i); - } - - free_storage(); - m_capacity = static_cast(allocation.count); - m_storage.data = allocation.ptr; - finalize_trim_and_sign(limbs, n, b_neg); - } else { - limb_type* const limbs = limb_ptr(); - [[maybe_unused]] const bool borrow = - run_sub(b_span, a, [limbs](std::size_t idx, limb_type v) { limbs[idx] = v; }, n); - BEMAN_BIG_INT_DEBUG_ASSERT(!borrow); - finalize_trim_and_sign(limbs, n, b_neg); + std::size_t k = larger.size(); + limb_type* const limbs = storage_for_overwrite(k); + [[maybe_unused]] const bool borrow = detail::sub_n_tail({limbs, k}, larger, smaller); + BEMAN_BIG_INT_DEBUG_ASSERT(!borrow); + while (k > 1 && limbs[k - 1] == 0) { + --k; } + m_size_and_sign = (static_cast(result_neg) << 31) | static_cast(k); + clear_inline_tail(old_count); } // Computes `a * b` and stores the result into `*this`. diff --git a/tests/beman/big_int/front_end_add_sub.test.cpp b/tests/beman/big_int/front_end_add_sub.test.cpp new file mode 100644 index 00000000..f9eb4bf5 --- /dev/null +++ b/tests/beman/big_int/front_end_add_sub.test.cpp @@ -0,0 +1,312 @@ +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// SPDX-License-Identifier: BSL-1.0 + +// Differential tests for the single-pass add/sub front ends (add_in_place, add_into) against a plain +// limb-vector reference, for big_int, basic_big_int<128> and basic_big_int<256>. + +#include +#include +#include +#include +#include + +#include +#include + +#include "front_end_reference.hpp" +#include "testing.hpp" + +namespace bb = BEMAN_BIG_INT_NAMESPACE; + +BEMAN_BIG_INT_BEGIN_NAMESPACE +namespace front_end_test { + +template +void check_add_sub(const ref& a, const ref& b) { + const T ta = make(a); + const T tb = make(b); + const ref sum = ref_add(a, b); + const ref diff = ref_add(a, ref_neg(b)); + const auto describe = [&] { return "a=" + hex(a) + " b=" + hex(b); }; + SCOPED_TRACE(describe()); + + // copy_copy (add_into) + EXPECT_TRUE(matches(ta + tb, sum)); + EXPECT_TRUE(matches(ta - tb, diff)); + EXPECT_TRUE(matches(ta, a)) << "operand modified"; + EXPECT_TRUE(matches(tb, b)) << "operand modified"; + + // rvalue forms (storage reuse) + EXPECT_TRUE(matches(T(ta) + tb, sum)); + EXPECT_TRUE(matches(ta + T(tb), sum)); + EXPECT_TRUE(matches(T(ta) + T(tb), sum)); + EXPECT_TRUE(matches(T(ta) - tb, diff)); + EXPECT_TRUE(matches(ta - T(tb), diff)); + EXPECT_TRUE(matches(T(ta) - T(tb), diff)); + + // compound forms + T c = ta; + c += tb; + EXPECT_TRUE(matches(c, sum)); + T d = ta; + d -= tb; + EXPECT_TRUE(matches(d, diff)); + c -= tb; + EXPECT_TRUE(matches(c, a)) << "(a + b) - b"; + d += tb; + EXPECT_TRUE(matches(d, a)) << "(a - b) + b"; + + // A fresh result from operands that fit inline lands inline exactly when the result fits. + if (std::max(a.mag.size(), b.mag.size()) <= T::inplace_capacity) { + const T r = ta + tb; + EXPECT_EQ(is_inplace(r), sum.mag.size() <= T::inplace_capacity); + const T r2 = ta - tb; + EXPECT_EQ(is_inplace(r2), diff.mag.size() <= T::inplace_capacity); + } +} + +template +void check_integer_forms(const ref& a, long long v, unsigned long long u) { + const T ta = make(a); + const ref rv = [&] { + ref r; + r.neg = v < 0; + if (v != 0) { + r.mag = {static_cast(v < 0 ? 0 - static_cast(v) : static_cast(v))}; + } + return r; + }(); + const ref ru = [&] { + ref r; + if (u != 0) { + r.mag = {static_cast(u)}; + } + return r; + }(); + SCOPED_TRACE("a=" + hex(a) + " v=" + std::to_string(v)); + EXPECT_TRUE(matches(ta + v, ref_add(a, rv))); + EXPECT_TRUE(matches(v + ta, ref_add(rv, a))); + EXPECT_TRUE(matches(ta - v, ref_add(a, ref_neg(rv)))); + EXPECT_TRUE(matches(v - ta, ref_add(rv, ref_neg(a)))); + EXPECT_TRUE(matches(T(ta) + v, ref_add(a, rv))); + EXPECT_TRUE(matches(v - T(ta), ref_add(rv, ref_neg(a)))); + EXPECT_TRUE(matches(ta + u, ref_add(a, ru))); + EXPECT_TRUE(matches(u - ta, ref_add(ru, ref_neg(a)))); + T c = ta; + c += v; + EXPECT_TRUE(matches(c, ref_add(a, rv))); + c = ta; + c -= u; + EXPECT_TRUE(matches(c, ref_add(a, ref_neg(ru)))); +} + +template +void add_sub_sweep() { + std::mt19937_64 rng(12345); + const auto sizes = sizes_for(T::inplace_capacity); + for (const std::size_t na : sizes) { + for (const std::size_t nb : sizes) { + for (unsigned pa = 0; pa < 6; ++pa) { + for (unsigned pb = 0; pb < 6; ++pb) { + for (unsigned signs = 0; signs < 4; ++signs) { + // Subsample the pattern product for the larger sizes to keep the run short. + if (na + nb > 14 && (pa + pb + signs) % 3 != 0) { + continue; + } + check_add_sub(gen(rng, na, pa, (signs & 1U) != 0), gen(rng, nb, pb, (signs & 2U) != 0)); + } + } + } + } + } +} + +template +void add_sub_ripple() { + // a = 2^(kW) - 1 style operands against +-1 and +-2^(jW): the carry or borrow ripples through every + // limb, including exactly at and one past the inline capacity. + std::mt19937_64 rng(777); + for (std::size_t k = 1; k <= 24; ++k) { + const ref ones = gen(rng, k, 1, false); + const ref pow = gen(rng, k + 1, 2, false); + for (const bool n1 : {false, true}) { + for (const bool n2 : {false, true}) { + ref a = ones; + ref b = ref{n2, {1}}; + a.neg = n1; + check_add_sub(a, b); + check_add_sub(b, a); + ref c = pow; + c.neg = n2; + check_add_sub(a, c); + check_add_sub(c, a); + check_add_sub(c, ref{n1, {1}}); + } + } + } +} + +template +void integer_sweep() { + std::mt19937_64 rng(2468); + const long long vs[] = {0, 1, -1, 5, -5, std::numeric_limits::max(), std::numeric_limits::min()}; + for (const std::size_t n : sizes_for(T::inplace_capacity)) { + for (unsigned p = 0; p < 6; ++p) { + for (const bool neg : {false, true}) { + for (const long long v : vs) { + check_integer_forms(gen(rng, n, p, neg), v, static_cast(v)); + } + } + } + } +} + +// A two-limb integer operand whose high limb is zero is not canonical; the front ends must trim it. +template +void wide_integer_operands() { +#ifdef __SIZEOF_INT128__ + if constexpr (W != 64) { + return; // the split below assumes 64-bit limbs + } + std::mt19937_64 rng(4242); + for (const std::size_t n : {0U, 1U, 2U, 3U, 5U}) { + for (const bool neg : {false, true}) { + const ref a = gen(rng, n, 0, neg); + const T ta = make(a); + for (const __int128 v : {static_cast<__int128>(0), static_cast<__int128>(5), static_cast<__int128>(-5), + (static_cast<__int128>(1) << 70) + 3, -((static_cast<__int128>(1) << 90) + 1)}) { + const unsigned __int128 m = v < 0 ? 0 - static_cast(v) : static_cast(v); + ref rv; + rv.neg = v < 0; + rv.mag = {static_cast(m), static_cast(m >> 64)}; + trim(rv.mag); + SCOPED_TRACE("a=" + hex(a)); + EXPECT_TRUE(matches(ta + v, ref_add(a, rv))); + EXPECT_TRUE(matches(v + ta, ref_add(rv, a))); + EXPECT_TRUE(matches(ta - v, ref_add(a, ref_neg(rv)))); + EXPECT_TRUE(matches(v - ta, ref_add(rv, ref_neg(a)))); + EXPECT_TRUE(matches(T(ta) + v, ref_add(a, rv))); + EXPECT_TRUE(matches(v - T(ta), ref_add(rv, ref_neg(a)))); + T c = ta; + c += v; + EXPECT_TRUE(matches(c, ref_add(a, rv))); + c = ta; + c -= v; + EXPECT_TRUE(matches(c, ref_add(a, ref_neg(rv)))); + } + } + } +#endif +} + +template +void aliasing() { + std::mt19937_64 rng(97531); + for (const std::size_t n : sizes_for(T::inplace_capacity)) { + for (unsigned p = 0; p < 6; ++p) { + for (const bool neg : {false, true}) { + const ref a = gen(rng, n, p, neg); + SCOPED_TRACE("a=" + hex(a)); + T x = make(a); + x += x; + EXPECT_TRUE(matches(x, ref_add(a, a))) << "x += x"; + x = make(a); + x -= x; + EXPECT_TRUE(matches(x, ref{})) << "x -= x"; + x = make(a); + x += -x; + EXPECT_TRUE(matches(x, ref{})) << "x += -x"; + x = make(a); + x -= -x; + EXPECT_TRUE(matches(x, ref_add(a, a))) << "x -= -x"; + x = make(a); + x = x + x; + EXPECT_TRUE(matches(x, ref_add(a, a))) << "x = x + x"; + x = make(a); + x = x - x; + EXPECT_TRUE(matches(x, ref{})) << "x = x - x"; + } + } + } +} + +// ----- constant evaluation: multi-limb values (heap storage under consteval) ----- + +template +constexpr bool cx_add_sub(unsigned k) { + const T x = cx_ones(k); + const T y = cx_ones(k + 1); + const unsigned kw = k * W; + + // carry ripples through every limb + if (!cx_pow2(x + 1, kw) || !cx_pow2(1 + x, kw) || !cx_pow2(T(x) + T{1}, kw)) { + return false; + } + if (((x + 1) - 1) != x || (x - (x - 1)) != 1 || ((x + x) != (x << 1))) { + return false; + } + // borrow ripples, and the operand-order / sign-flip paths + const T p = x + 1; + if (!(p - 1 == x) || !(1 - p == -x) || !(x - p == -1) || !(-x - 1 == -p) || !(-x + p == 1)) { + return false; + } + if (!(y - x == (cx_ones(1) << kw)) || !(x - y == -(cx_ones(1) << kw)) || !(y + -x == y - x)) { + return false; + } + // aliasing + T a = x; + a += a; + if (a != (x << 1)) { + return false; + } + a -= a; + if (a != 0 || !tail_is_zero(a)) { + return false; + } + a = x; + a += -a; + if (a != 0) { + return false; + } + a = x; + a = a + a; + if (a != (x << 1)) { + return false; + } + // compound on a growing value + T g{1}; + for (unsigned i = 0; i < k; ++i) { + g += g; + } + g -= 1; + g += g + 1; // 2 * 2^k - 1 + return g == (T{1} << (k + 1)) - 1; +} + +} // namespace front_end_test +BEMAN_BIG_INT_END_NAMESPACE + +namespace fe = BEMAN_BIG_INT_NAMESPACE::front_end_test; + +#define FRONT_END_TYPES(CASE) \ + CASE(BigInt, bb::big_int) \ + CASE(Inline128, bb::basic_big_int<128>) \ + CASE(Inline256, bb::basic_big_int<256>) + +#define FRONT_END_TEST(SUFFIX, TYPE) \ + TEST(FrontEndAddSub##SUFFIX, Sweep) { fe::add_sub_sweep(); } \ + TEST(FrontEndAddSub##SUFFIX, Ripple) { fe::add_sub_ripple(); } \ + TEST(FrontEndAddSub##SUFFIX, IntegerOperands) { fe::integer_sweep(); } \ + TEST(FrontEndAddSub##SUFFIX, WideIntegerOperands) { fe::wide_integer_operands(); } \ + TEST(FrontEndAddSub##SUFFIX, Aliasing) { fe::aliasing(); } +FRONT_END_TYPES(FRONT_END_TEST) + +#define FRONT_END_STATIC(TYPE) \ + static_assert(fe::cx_add_sub(1)); \ + static_assert(fe::cx_add_sub(2)); \ + static_assert(fe::cx_add_sub(TYPE::inplace_capacity)); \ + static_assert(fe::cx_add_sub(TYPE::inplace_capacity + 1)); \ + static_assert(fe::cx_add_sub(TYPE::inplace_capacity + 3)) +FRONT_END_STATIC(bb::big_int); +FRONT_END_STATIC(bb::basic_big_int<128>); +FRONT_END_STATIC(bb::basic_big_int<256>); diff --git a/tests/beman/big_int/front_end_reference.hpp b/tests/beman/big_int/front_end_reference.hpp new file mode 100644 index 00000000..d4d94172 --- /dev/null +++ b/tests/beman/big_int/front_end_reference.hpp @@ -0,0 +1,288 @@ +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// SPDX-License-Identifier: BSL-1.0 + +// Shared reference model for the front_end_add_sub and front_end_shift tests: a sign plus trimmed +// limb-vector magnitude with naive add/sub/shift, and helpers to build operands and compare results. + +#ifndef BEMAN_BIG_INT_TESTS_FRONT_END_REFERENCE_HPP +#define BEMAN_BIG_INT_TESTS_FRONT_END_REFERENCE_HPP + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "testing.hpp" + +BEMAN_BIG_INT_BEGIN_NAMESPACE +namespace front_end_test { + + +using limb = uint_multiprecision_t; +inline constexpr unsigned W = static_cast(std::numeric_limits::digits); + +// Sign and trimmed little-endian magnitude (empty for zero). +struct ref { + bool neg = false; + std::vector mag; +}; + +inline void trim(std::vector& v) { + while (!v.empty() && v.back() == 0) { + v.pop_back(); + } +} + +inline int cmp_mag(const std::vector& a, const std::vector& b) { + if (a.size() != b.size()) { + return a.size() < b.size() ? -1 : 1; + } + for (std::size_t i = a.size(); i-- > 0;) { + if (a[i] != b[i]) { + return a[i] < b[i] ? -1 : 1; + } + } + return 0; +} + +inline std::vector add_mag(const std::vector& a, const std::vector& b) { + std::vector r; + limb carry = 0; + for (std::size_t i = 0; i < std::max(a.size(), b.size()); ++i) { + const limb x = i < a.size() ? a[i] : 0; + const limb y = i < b.size() ? b[i] : 0; + const limb s = static_cast(x + y); + const limb t = static_cast(s + carry); + carry = static_cast((s < x ? 1 : 0) + (t < s ? 1 : 0)); + r.push_back(t); + } + if (carry != 0) { + r.push_back(carry); + } + trim(r); + return r; +} + +// Requires a >= b. +inline std::vector sub_mag(const std::vector& a, const std::vector& b) { + std::vector r; + limb borrow = 0; + for (std::size_t i = 0; i < a.size(); ++i) { + const limb y = i < b.size() ? b[i] : 0; + const limb d = static_cast(a[i] - y); + const limb e = static_cast(d - borrow); + borrow = static_cast((a[i] < y ? 1 : 0) + (d < borrow ? 1 : 0)); + r.push_back(e); + } + trim(r); + return r; +} + +inline ref ref_add(const ref& a, const ref& b) { + if (a.neg == b.neg) { + ref r{a.neg, add_mag(a.mag, b.mag)}; + r.neg = r.neg && !r.mag.empty(); + return r; + } + const int c = cmp_mag(a.mag, b.mag); + if (c == 0) { + return {}; + } + return c > 0 ? ref{a.neg, sub_mag(a.mag, b.mag)} : ref{b.neg, sub_mag(b.mag, a.mag)}; +} + +inline ref ref_neg(ref a) { + a.neg = !a.neg && !a.mag.empty(); + return a; +} + +inline bool bit_at(const std::vector& v, std::size_t i) { + const std::size_t l = i / W; + return l < v.size() && ((v[l] >> (i % W)) & 1U) != 0; +} + +inline ref ref_shl(const ref& a, std::size_t s) { + if (a.mag.empty()) { + return {}; + } + ref r; + r.neg = a.neg; + r.mag.assign(a.mag.size() + s / W + 2, 0); + for (std::size_t i = 0; i < a.mag.size() * W; ++i) { + if (bit_at(a.mag, i)) { + const std::size_t j = i + s; + r.mag[j / W] |= static_cast(limb{1} << (j % W)); + } + } + trim(r.mag); + return r; +} + +// Floor division by 2^s. +inline ref ref_shr(const ref& a, std::size_t s) { + ref r; + r.neg = a.neg; + r.mag.assign(a.mag.size(), 0); + bool inexact = false; + for (std::size_t i = 0; i < a.mag.size() * W; ++i) { + if (!bit_at(a.mag, i)) { + continue; + } + if (i < s) { + inexact = true; + } else { + const std::size_t j = i - s; + r.mag[j / W] |= static_cast(limb{1} << (j % W)); + } + } + trim(r.mag); + if (a.neg && inexact) { + r.mag = add_mag(r.mag, {1}); + } + r.neg = a.neg && !r.mag.empty(); + return r; +} + +inline std::string hex(const ref& r) { + if (r.mag.empty()) { + return "0"; + } + static constexpr char digits[] = "0123456789abcdef"; + std::string s; + for (std::size_t i = r.mag.size(); i-- > 0;) { + for (unsigned d = W / 4; d-- > 0;) { + const char c = digits[(r.mag[i] >> (4 * d)) & 0xFU]; + if (!s.empty() || c != '0') { + s.push_back(c); + } + } + } + return (r.neg ? "-" : "") + s; +} + +template +T make(const ref& r) { + T x; + const auto s = hex(r); + const auto res = from_chars(s.data(), s.data() + s.size(), x, 16); + EXPECT_TRUE(res.ec == std::errc{}); + return x; +} + +template +constexpr bool tail_is_zero(const T& x) { + if (!is_inplace(x)) { + return true; + } + const auto* const limbs = x.representation().data(); + for (std::size_t i = x.representation().size(); i < T::inplace_capacity; ++i) { + if (limbs[i] != 0) { + return false; + } + } + return true; +} + +template +::testing::AssertionResult matches(const T& x, const ref& expect) { + const auto rep = x.representation(); + std::vector got(rep.begin(), rep.end()); + trim(got); + const bool neg = x < 0; + if (got != expect.mag || neg != expect.neg) { + return ::testing::AssertionFailure() << "got " << (neg ? "-" : "") << "[" << got.size() << " limbs] expected " + << hex(expect); + } + if (!is_normalized(x)) { + return ::testing::AssertionFailure() << "not normalized, expected " << hex(expect); + } + if (!tail_is_zero(x)) { + return ::testing::AssertionFailure() << "inline tail not zero, expected " << hex(expect); + } + return ::testing::AssertionSuccess(); +} + +// Operand generator: a magnitude of `n` limbs (0 means zero) in one of several carry-stressing shapes. +inline ref gen(std::mt19937_64& rng, std::size_t n, unsigned pattern, bool neg) { + ref r; + if (n == 0) { + return r; + } + r.mag.assign(n, 0); + const limb ones = std::numeric_limits::max(); + switch (pattern % 6) { + case 0: // random + for (auto& l : r.mag) { + l = static_cast(rng()); + } + break; + case 1: // all ones + std::fill(r.mag.begin(), r.mag.end(), ones); + break; + case 2: // 2^(W(n-1)): zeros below a single top bit + r.mag.back() = 1; + break; + case 3: // top limb 1, ones below + std::fill(r.mag.begin(), r.mag.end(), ones); + r.mag.back() = 1; + break; + case 4: // random with zero low limbs + for (std::size_t i = n / 2; i < n; ++i) { + r.mag[i] = static_cast(rng()); + } + break; + default: // single high bit set + r.mag.back() = static_cast(limb{1} << (W - 1)); + break; + } + if (r.mag.back() == 0) { + r.mag.back() = 1; + } + r.neg = neg; + return r; +} + +inline std::vector sizes_for(std::size_t cap) { + std::vector v; + for (std::size_t i = 0; i <= 20; ++i) { + v.push_back(i); + } + for (const std::size_t extra : {cap - 1, cap, cap + 1, cap + 2}) { + if (extra > 20) { + v.push_back(extra); + } + } + return v; +} + +template +constexpr T cx_ones(unsigned k) { + char digits[2048] = {}; + const unsigned n = k * W / 4; + for (unsigned i = 0; i < n; ++i) { + digits[i] = 'f'; + } + T x; + [[maybe_unused]] const auto r = from_chars(digits, digits + n, x, 16); + return x; +} + +template +constexpr bool cx_pow2(const T& x, unsigned e) { // x == 2^e + T p{1}; + p <<= e; + return x == p; +} + + +} // namespace front_end_test +BEMAN_BIG_INT_END_NAMESPACE + +#endif // BEMAN_BIG_INT_TESTS_FRONT_END_REFERENCE_HPP From ecc399c637cd2095597bce12f5beb0698b9f0916 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:42:57 -0400 Subject: [PATCH 08/36] Drop casts GCC flags as useless in the shift primitives and span tests lshift_copy and rshift_copy and the span_primitives and front-end test helpers cast between identical limb types, which -Wuseless-cast rejects. Use a to_limb helper in the tests, apply clang-format, and use the library's int128 aliases for the wide-integer operand test. --- include/beman/big_int/detail/span_ops.hpp | 12 ++--- .../beman/big_int/front_end_add_sub.test.cpp | 47 ++++++++-------- tests/beman/big_int/front_end_reference.hpp | 53 +++++++++++-------- tests/beman/big_int/span_primitives.test.cpp | 44 +++++++++------ 4 files changed, 91 insertions(+), 65 deletions(-) diff --git a/include/beman/big_int/detail/span_ops.hpp b/include/beman/big_int/detail/span_ops.hpp index 8bc01cdc..6d8f41d7 100644 --- a/include/beman/big_int/detail/span_ops.hpp +++ b/include/beman/big_int/detail/span_ops.hpp @@ -1241,11 +1241,11 @@ constexpr uint_multiprecision_t lshift_copy(uint_multiprecision_t* const d return 0; } const unsigned back = limb_bits - bits; - const uint_multiprecision_t out = static_cast(src[n - 1] >> back); + const uint_multiprecision_t out = src[n - 1] >> back; for (std::size_t i = n - 1; i > 0; --i) { - dst[i] = static_cast((src[i] << bits) | (src[i - 1] >> back)); + dst[i] = (src[i] << bits) | (src[i - 1] >> back); } - dst[0] = static_cast(src[0] << bits); + dst[0] = src[0] << bits; return out; } @@ -1262,11 +1262,11 @@ constexpr uint_multiprecision_t rshift_copy(uint_multiprecision_t* const d return 0; } const unsigned back = limb_bits - bits; - const uint_multiprecision_t out = static_cast(src[0] << back); + const uint_multiprecision_t out = src[0] << back; for (std::size_t i = 0; i + 1 < n; ++i) { - dst[i] = static_cast((src[i] >> bits) | (src[i + 1] << back)); + dst[i] = (src[i] >> bits) | (src[i + 1] << back); } - dst[n - 1] = static_cast(src[n - 1] >> bits); + dst[n - 1] = src[n - 1] >> bits; return out; } diff --git a/tests/beman/big_int/front_end_add_sub.test.cpp b/tests/beman/big_int/front_end_add_sub.test.cpp index f9eb4bf5..5aeeb53d 100644 --- a/tests/beman/big_int/front_end_add_sub.test.cpp +++ b/tests/beman/big_int/front_end_add_sub.test.cpp @@ -72,14 +72,14 @@ void check_integer_forms(const ref& a, long long v, unsigned long long u) { ref r; r.neg = v < 0; if (v != 0) { - r.mag = {static_cast(v < 0 ? 0 - static_cast(v) : static_cast(v))}; + r.mag = {to_limb(v < 0 ? 0 - static_cast(v) : static_cast(v))}; } return r; }(); const ref ru = [&] { ref r; if (u != 0) { - r.mag = {static_cast(u)}; + r.mag = {to_limb(u)}; } return r; }(); @@ -149,7 +149,8 @@ void add_sub_ripple() { template void integer_sweep() { std::mt19937_64 rng(2468); - const long long vs[] = {0, 1, -1, 5, -5, std::numeric_limits::max(), std::numeric_limits::min()}; + const long long vs[] = { + 0, 1, -1, 5, -5, std::numeric_limits::max(), std::numeric_limits::min()}; for (const std::size_t n : sizes_for(T::inplace_capacity)) { for (unsigned p = 0; p < 6; ++p) { for (const bool neg : {false, true}) { @@ -164,21 +165,25 @@ void integer_sweep() { // A two-limb integer operand whose high limb is zero is not canonical; the front ends must trim it. template void wide_integer_operands() { -#ifdef __SIZEOF_INT128__ +#ifdef BEMAN_BIG_INT_HAS_INT128_FUNDAMENTAL if constexpr (W != 64) { return; // the split below assumes 64-bit limbs } std::mt19937_64 rng(4242); for (const std::size_t n : {0U, 1U, 2U, 3U, 5U}) { for (const bool neg : {false, true}) { - const ref a = gen(rng, n, 0, neg); + const ref a = gen(rng, n, 0, neg); const T ta = make(a); - for (const __int128 v : {static_cast<__int128>(0), static_cast<__int128>(5), static_cast<__int128>(-5), - (static_cast<__int128>(1) << 70) + 3, -((static_cast<__int128>(1) << 90) + 1)}) { - const unsigned __int128 m = v < 0 ? 0 - static_cast(v) : static_cast(v); - ref rv; + for (const detail::int128_t v : {static_cast(0), + static_cast(5), + static_cast(-5), + (static_cast(1) << 70) + 3, + -((static_cast(1) << 90) + 1)}) { + const detail::uint128_t m = + v < 0 ? 0 - static_cast(v) : static_cast(v); + ref rv; rv.neg = v < 0; - rv.mag = {static_cast(m), static_cast(m >> 64)}; + rv.mag = {to_limb(m), to_limb(m >> 64)}; trim(rv.mag); SCOPED_TRACE("a=" + hex(a)); EXPECT_TRUE(matches(ta + v, ref_add(a, rv))); @@ -234,8 +239,8 @@ void aliasing() { template constexpr bool cx_add_sub(unsigned k) { - const T x = cx_ones(k); - const T y = cx_ones(k + 1); + const T x = cx_ones(k); + const T y = cx_ones(k + 1); const unsigned kw = k * W; // carry ripples through every limb @@ -293,19 +298,19 @@ namespace fe = BEMAN_BIG_INT_NAMESPACE::front_end_test; CASE(Inline128, bb::basic_big_int<128>) \ CASE(Inline256, bb::basic_big_int<256>) -#define FRONT_END_TEST(SUFFIX, TYPE) \ - TEST(FrontEndAddSub##SUFFIX, Sweep) { fe::add_sub_sweep(); } \ - TEST(FrontEndAddSub##SUFFIX, Ripple) { fe::add_sub_ripple(); } \ - TEST(FrontEndAddSub##SUFFIX, IntegerOperands) { fe::integer_sweep(); } \ +#define FRONT_END_TEST(SUFFIX, TYPE) \ + TEST(FrontEndAddSub##SUFFIX, Sweep) { fe::add_sub_sweep(); } \ + TEST(FrontEndAddSub##SUFFIX, Ripple) { fe::add_sub_ripple(); } \ + TEST(FrontEndAddSub##SUFFIX, IntegerOperands) { fe::integer_sweep(); } \ TEST(FrontEndAddSub##SUFFIX, WideIntegerOperands) { fe::wide_integer_operands(); } \ TEST(FrontEndAddSub##SUFFIX, Aliasing) { fe::aliasing(); } FRONT_END_TYPES(FRONT_END_TEST) -#define FRONT_END_STATIC(TYPE) \ - static_assert(fe::cx_add_sub(1)); \ - static_assert(fe::cx_add_sub(2)); \ - static_assert(fe::cx_add_sub(TYPE::inplace_capacity)); \ - static_assert(fe::cx_add_sub(TYPE::inplace_capacity + 1)); \ +#define FRONT_END_STATIC(TYPE) \ + static_assert(fe::cx_add_sub(1)); \ + static_assert(fe::cx_add_sub(2)); \ + static_assert(fe::cx_add_sub(TYPE::inplace_capacity)); \ + static_assert(fe::cx_add_sub(TYPE::inplace_capacity + 1)); \ static_assert(fe::cx_add_sub(TYPE::inplace_capacity + 3)) FRONT_END_STATIC(bb::big_int); FRONT_END_STATIC(bb::basic_big_int<128>); diff --git a/tests/beman/big_int/front_end_reference.hpp b/tests/beman/big_int/front_end_reference.hpp index d4d94172..0b43aa53 100644 --- a/tests/beman/big_int/front_end_reference.hpp +++ b/tests/beman/big_int/front_end_reference.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -24,8 +25,17 @@ BEMAN_BIG_INT_BEGIN_NAMESPACE namespace front_end_test { +using limb = uint_multiprecision_t; +// Converts without a cast when the types already agree (GCC's -Wuseless-cast), and with one otherwise. +template +constexpr limb to_limb(const U v) noexcept { + if constexpr (std::is_same_v) { + return v; + } else { + return static_cast(v); + } +} -using limb = uint_multiprecision_t; inline constexpr unsigned W = static_cast(std::numeric_limits::digits); // Sign and trimmed little-endian magnitude (empty for zero). @@ -58,9 +68,9 @@ inline std::vector add_mag(const std::vector& a, const std::vector(x + y); - const limb t = static_cast(s + carry); - carry = static_cast((s < x ? 1 : 0) + (t < s ? 1 : 0)); + const limb s = x + y; + const limb t = s + carry; + carry = static_cast(s < x) + static_cast(t < s); r.push_back(t); } if (carry != 0) { @@ -76,9 +86,9 @@ inline std::vector sub_mag(const std::vector& a, const std::vector(a[i] - y); - const limb e = static_cast(d - borrow); - borrow = static_cast((a[i] < y ? 1 : 0) + (d < borrow ? 1 : 0)); + const limb d = a[i] - y; + const limb e = d - borrow; + borrow = static_cast(a[i] < y) + static_cast(d < borrow); r.push_back(e); } trim(r); @@ -118,7 +128,7 @@ inline ref ref_shl(const ref& a, std::size_t s) { for (std::size_t i = 0; i < a.mag.size() * W; ++i) { if (bit_at(a.mag, i)) { const std::size_t j = i + s; - r.mag[j / W] |= static_cast(limb{1} << (j % W)); + r.mag[j / W] |= limb{1} << (j % W); } } trim(r.mag); @@ -139,7 +149,7 @@ inline ref ref_shr(const ref& a, std::size_t s) { inexact = true; } else { const std::size_t j = i - s; - r.mag[j / W] |= static_cast(limb{1} << (j % W)); + r.mag[j / W] |= limb{1} << (j % W); } } trim(r.mag); @@ -169,9 +179,9 @@ inline std::string hex(const ref& r) { template T make(const ref& r) { - T x; - const auto s = hex(r); - const auto res = from_chars(s.data(), s.data() + s.size(), x, 16); + T x; + const auto s = hex(r); + const auto res = from_chars(s.data(), s.data() + s.size(), x, 16); EXPECT_TRUE(res.ec == std::errc{}); return x; } @@ -192,13 +202,13 @@ constexpr bool tail_is_zero(const T& x) { template ::testing::AssertionResult matches(const T& x, const ref& expect) { - const auto rep = x.representation(); + const auto rep = x.representation(); std::vector got(rep.begin(), rep.end()); trim(got); const bool neg = x < 0; if (got != expect.mag || neg != expect.neg) { - return ::testing::AssertionFailure() << "got " << (neg ? "-" : "") << "[" << got.size() << " limbs] expected " - << hex(expect); + return ::testing::AssertionFailure() + << "got " << (neg ? "-" : "") << "[" << got.size() << " limbs] expected " << hex(expect); } if (!is_normalized(x)) { return ::testing::AssertionFailure() << "not normalized, expected " << hex(expect); @@ -220,7 +230,7 @@ inline ref gen(std::mt19937_64& rng, std::size_t n, unsigned pattern, bool neg) switch (pattern % 6) { case 0: // random for (auto& l : r.mag) { - l = static_cast(rng()); + l = to_limb(rng()); } break; case 1: // all ones @@ -235,11 +245,11 @@ inline ref gen(std::mt19937_64& rng, std::size_t n, unsigned pattern, bool neg) break; case 4: // random with zero low limbs for (std::size_t i = n / 2; i < n; ++i) { - r.mag[i] = static_cast(rng()); + r.mag[i] = to_limb(rng()); } break; default: // single high bit set - r.mag.back() = static_cast(limb{1} << (W - 1)); + r.mag.back() = limb{1} << (W - 1); break; } if (r.mag.back() == 0) { @@ -264,12 +274,12 @@ inline std::vector sizes_for(std::size_t cap) { template constexpr T cx_ones(unsigned k) { - char digits[2048] = {}; - const unsigned n = k * W / 4; + char digits[2048] = {}; + const unsigned n = k * W / 4; for (unsigned i = 0; i < n; ++i) { digits[i] = 'f'; } - T x; + T x; [[maybe_unused]] const auto r = from_chars(digits, digits + n, x, 16); return x; } @@ -281,7 +291,6 @@ constexpr bool cx_pow2(const T& x, unsigned e) { // x == 2^e return x == p; } - } // namespace front_end_test BEMAN_BIG_INT_END_NAMESPACE diff --git a/tests/beman/big_int/span_primitives.test.cpp b/tests/beman/big_int/span_primitives.test.cpp index d8fb0828..240e3558 100644 --- a/tests/beman/big_int/span_primitives.test.cpp +++ b/tests/beman/big_int/span_primitives.test.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -21,6 +22,16 @@ using limb = bb::uint_multiprecision_t; constexpr unsigned limb_width = static_cast(std::numeric_limits::digits); constexpr limb max_limb = std::numeric_limits::max(); +// Converts without a cast when the types already agree (GCC's -Wuseless-cast), and with one otherwise. +template +constexpr limb to_limb(const U v) noexcept { + if constexpr (std::is_same_v) { + return v; + } else { + return static_cast(v); + } +} + using bits_t = std::vector; // little-endian bit string, the reference representation bits_t to_bits(const std::vector& v) { @@ -35,7 +46,7 @@ std::vector from_bits(const bits_t& b) { std::vector out(b.size() / limb_width, limb{0}); for (std::size_t i = 0; i < b.size(); ++i) { if (b[i]) { - out[i / limb_width] |= static_cast(limb{1} << (i % limb_width)); + out[i / limb_width] |= limb{1} << (i % limb_width); } } return out; @@ -73,7 +84,7 @@ limb pick(std::mt19937_64& rng) { case 2: return 1; default: - return static_cast(rng()); + return to_limb(rng()); } } @@ -85,7 +96,7 @@ std::vector random_limbs(std::mt19937_64& rng, const std::size_t n) { return v; } -constexpr limb poison = static_cast(0xA5A5A5A5A5A5A5A5ULL); +constexpr limb poison = to_limb(0xA5A5A5A5A5A5A5A5ULL); template void check_addsub(const bool in_place) { @@ -106,8 +117,8 @@ void check_addsub(const bool in_place) { std::vector expected; const bool expected_flag = ref_addsub(expected, a, b, Sub); - std::vector dst_storage = in_place ? a : std::vector(m, poison); - const limb* a_ptr = in_place ? dst_storage.data() : a.data(); + std::vector dst_storage = in_place ? a : std::vector(m, poison); + const limb* a_ptr = in_place ? dst_storage.data() : a.data(); const std::span a_span{a_ptr, m}; const std::span dst_span{dst_storage.data(), m}; const bool flag = Sub ? bb::detail::sub_n_tail(dst_span, a_span, std::span{b}) @@ -137,13 +148,13 @@ std::vector ref_shift(const std::vector& src, const unsigned bits, c if (i + bits < in.size()) { res[i + bits] = in[i]; } else if (in[i]) { - out_bits |= static_cast(limb{1} << (i + bits - in.size())); + out_bits |= limb{1} << (i + bits - in.size()); } } else { if (i >= bits) { res[i - bits] = in[i]; } else if (in[i]) { - out_bits |= static_cast(limb{1} << (limb_width - bits + i)); + out_bits |= limb{1} << (limb_width - bits + i); } } } @@ -155,14 +166,14 @@ void check_shift(const bool left, const bool aliased) { for (std::size_t n = 0; n <= 9; ++n) { for (unsigned bits = 1; bits < limb_width; bits += (bits < 5 || bits + 6 > limb_width ? 1 : 7)) { for (int trial = 0; trial < 20; ++trial) { - const std::vector src = random_limbs(rng, n); + const std::vector src = random_limbs(rng, n); limb expected_out = 0; const auto expected = ref_shift(src, bits, left, expected_out); // Non-aliased: destination below (rshift) or above (lshift) in a bigger buffer. std::vector buf(n + 3, poison); - limb* dst = nullptr; - const limb* s = nullptr; + limb* dst = nullptr; + const limb* s = nullptr; std::vector src_buf = src; if (aliased) { buf.assign(src.begin(), src.end()); @@ -173,7 +184,8 @@ void check_shift(const bool left, const bool aliased) { dst = buf.data() + 1; s = src_buf.data(); } - const limb out = left ? bb::detail::lshift_copy(dst, s, n, bits) : bb::detail::rshift_copy(dst, s, n, bits); + const limb out = + left ? bb::detail::lshift_copy(dst, s, n, bits) : bb::detail::rshift_copy(dst, s, n, bits); ASSERT_EQ(out, expected_out) << "n=" << n << " bits=" << bits; ASSERT_EQ(std::vector(dst, dst + n), expected) << "n=" << n << " bits=" << bits; if (!aliased) { @@ -191,8 +203,8 @@ void check_shift_overlap(const bool left) { std::mt19937_64 rng{left ? 13U : 17U}; for (std::size_t n = 1; n <= 9; ++n) { for (std::size_t offset = 1; offset <= 3; ++offset) { - const unsigned bits = 1 + static_cast(rng() % (limb_width - 1)); - const std::vector src = random_limbs(rng, n); + const unsigned bits = 1 + static_cast(rng() % (limb_width - 1)); + const std::vector src = random_limbs(rng, n); limb expected_out = 0; const auto expected = ref_shift(src, bits, left, expected_out); @@ -200,7 +212,8 @@ void check_shift_overlap(const bool left) { limb* s = left ? buf.data() : buf.data() + offset; limb* dst = left ? buf.data() + offset : buf.data(); std::copy(src.begin(), src.end(), s); - const limb out = left ? bb::detail::lshift_copy(dst, s, n, bits) : bb::detail::rshift_copy(dst, s, n, bits); + const limb out = + left ? bb::detail::lshift_copy(dst, s, n, bits) : bb::detail::rshift_copy(dst, s, n, bits); ASSERT_EQ(out, expected_out); ASSERT_EQ(std::vector(dst, dst + n), expected) << "n=" << n << " offset=" << offset; } @@ -225,8 +238,7 @@ consteval bool constexpr_primitives() { std::array b{1, 0}; std::array dst{}; // a + b: the carry ripples through four limbs. - if (bb::detail::add_n_tail(dst, a, b) || dst[0] != 0 || dst[1] != 0 || dst[2] != 0 || dst[3] != 0 || - dst[4] != 6) { + if (bb::detail::add_n_tail(dst, a, b) || dst[0] != 0 || dst[1] != 0 || dst[2] != 0 || dst[3] != 0 || dst[4] != 6) { return false; } // In-place subtract undoes it. From d34ccdc53b8233119e8dd82e1da778dc86a83c22 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:42:57 -0400 Subject: [PATCH 09/36] Single-pass shift front ends: exact sizing, one lshift_copy/rshift_copy pass shift_left and shift_right work in one in-place pass and keep the inline tail zero; c = a << s and c = a >> s build the result straight from the source into a fresh, exactly sized buffer (no copy followed by an in-place shift). Shifting left no longer reserves a spare limb the value does not need, so 1 << 127 stays inline in basic_big_int<128>, and zero stays a canonical single zero limb. Negative right shifts keep floor rounding by detecting discarded bits during the pass. Differential tests cover shifts around limb boundaries, exhaustive small values, aliasing and constant evaluation. --- include/beman/big_int/basic_big_int.hpp | 301 +++++++++---------- tests/beman/big_int/front_end_shift.test.cpp | 227 ++++++++++++++ 2 files changed, 369 insertions(+), 159 deletions(-) create mode 100644 tests/beman/big_int/front_end_shift.test.cpp diff --git a/include/beman/big_int/basic_big_int.hpp b/include/beman/big_int/basic_big_int.hpp index 9579d894..a78cae02 100644 --- a/include/beman/big_int/basic_big_int.hpp +++ b/include/beman/big_int/basic_big_int.hpp @@ -650,6 +650,10 @@ class BEMAN_BIG_INT_TRIVIAL_ABI basic_big_int { constexpr void shift_left(shift_type s); constexpr void shift_right(shift_type s); + // `*this = (src, neg) << s` / `>> s` (floor rounding) in a single pass. `src` must be canonical and + // must not alias `*this`. + constexpr void assign_shifted_left(std::span src, bool neg, shift_type s); + constexpr void assign_shifted_right(std::span src, bool neg, shift_type s); template [[nodiscard]] constexpr bool equals_integer(Integer x) const noexcept; @@ -1333,102 +1337,167 @@ constexpr bool basic_big_int::unchecked_decrement_magnitude() { return borrow_in; } +// Zero stays zero. The result is sized exactly: the extra top limb exists only when the top limb's +// leading zeros cannot absorb the bit shift. template constexpr void basic_big_int::shift_left(const shift_type s) { BEMAN_BIG_INT_DEBUG_ASSERT(s <= shift_max); - if (s == 0) { + const size_type n = limb_count(); + if (s == 0 || limb_ptr()[n - 1] == 0) { return; } - const shift_type shifted_limbs = s / bits_per_limb; - const shift_type shifted_bits = s % bits_per_limb; + const size_type whole = s / bits_per_limb; + const unsigned bits = static_cast(s % bits_per_limb); + const bool extra = bits != 0 && static_cast(std::countl_zero(limb_ptr()[n - 1])) < bits; + const size_type new_n = n + whole + static_cast(extra); - // Only reserve an extra limb for the bit-shift when the top limb doesn't enough leading zeros. - // `countl_zero` tells us exactly how many bits of headroom the current top limb provides. - const bool needs_extra_limb = - shifted_bits != 0 && static_cast(std::countl_zero(limb_ptr()[limb_count() - 1])) < shifted_bits; - reserve_representation(limb_count() + shifted_limbs + static_cast(needs_extra_limb)); + grow(new_n); limb_type* const limbs = limb_ptr(); + if (bits != 0) { + const limb_type out = detail::lshift_copy(limbs + whole, limbs, n, bits); + if (extra) { + limbs[n + whole] = out; + } + } else { + std::copy_backward(limbs, limbs + n, limbs + n + whole); + } + std::fill_n(limbs, whole, limb_type{0}); + unchecked_set_limb_count(static_cast(new_n)); +} - if (shifted_limbs != 0) { - const auto current_count = limb_count(); - std::copy_backward(limbs, limbs + current_count, limbs + current_count + shifted_limbs); - std::fill_n(limbs, static_cast(shifted_limbs), limb_type{0}); - unchecked_set_limb_count(static_cast(current_count + shifted_limbs)); +// Floor division by `2^s`: a negative value whose discarded bits are not all zero gets its magnitude +// incremented after the (truncating) magnitude shift. +template +constexpr void basic_big_int::shift_right(const shift_type s) { + BEMAN_BIG_INT_DEBUG_ASSERT(s <= shift_max); + if (s == 0) { + return; } - if (shifted_bits != 0) { - const auto current_count = limb_count(); - const limb_type overflow = limbs[current_count - 1] >> (bits_per_limb - shifted_bits); - // Shift all limbs in place, top to bottom. - // Each iteration reads limbs[i-1] (original) and limbs[i] (original), writes limbs[i]. - // This avoids an out-of-bounds write - for (shift_type i = current_count - 1; i > shifted_limbs; --i) { - const detail::wide all_bits{.low_bits = limbs[i - 1], .high_bits = limbs[i]}; - limbs[i] = detail::funnel_shl(all_bits, static_cast(shifted_bits)); + const size_type n = limb_count(); + const size_type whole = s / bits_per_limb; + const unsigned bits = static_cast(s % bits_per_limb); + const bool neg = is_negative(); + + if (whole >= n) { + // Everything is discarded: zero, or -1 for a negative value (which is nonzero, so bits were lost). + set_zero(); + if (neg) { + limb_ptr()[0] = 1; + m_size_and_sign = 0x8000'0001U; } - limbs[shifted_limbs] <<= shifted_bits; + return; + } - if (overflow != 0) { - limbs[current_count] = overflow; - unchecked_set_limb_count(static_cast(current_count + 1)); + limb_type* const limbs = limb_ptr(); + bool inexact = false; + if (neg) { + for (size_type i = 0; i < whole && !inexact; ++i) { + inexact = limbs[i] != 0; } } + + const size_type new_n = n - whole; + if (bits != 0) { + inexact |= detail::rshift_copy(limbs, limbs + whole, new_n, bits) != 0; + } else if (whole != 0) { + std::copy(limbs + whole, limbs + n, limbs); + } + + size_type k = new_n; + while (k > 1 && limbs[k - 1] == 0) { + --k; + } + m_size_and_sign = (m_size_and_sign & 0x8000'0000U) | static_cast(k); + clear_inline_tail(n); + if (neg && inexact) { + // A magnitude that shifted down to zero is a negative zero here; incrementing makes it -1. + unchecked_increment_magnitude(); + BEMAN_BIG_INT_DEBUG_ASSERT(is_negative()); + } } template -constexpr void basic_big_int::shift_right(const shift_type s) { +constexpr void basic_big_int::assign_shifted_left(const std::span src, + const bool neg, + const shift_type s) { BEMAN_BIG_INT_DEBUG_ASSERT(s <= shift_max); - if (s == 0) { + const size_type n = src.size(); + if (src[n - 1] == 0) { + set_zero(); return; } - const shift_type shifted_limbs = s / bits_per_limb; - const shift_type shifted_bits = s % bits_per_limb; - limb_type* const limbs = limb_ptr(); + const size_type old_count = limb_count(); + const size_type whole = s / bits_per_limb; + const unsigned bits = static_cast(s % bits_per_limb); + const bool extra = bits != 0 && static_cast(std::countl_zero(src[n - 1])) < bits; + const size_type new_n = n + whole + static_cast(extra); - // Shifting to the right has the effect of dividing by `pow(2, N)` rounded towards negative infinity. - // When we "discard" limbs, this has truncating rounding; - // for positive numbers that is already what we need, but requires adjustment for negative numbers. - // In that case, we need to figure out whether the result is inexact - // by detecting whether any nonzero bits are shifted out. - const bool needs_decrement = is_negative() && [&] { - for (shift_type i = 0; i < shifted_limbs; ++i) { - if (i >= limb_count()) { - return false; - } - if (limbs[i] != 0) { - return true; - } + limb_type* const limbs = storage_for_overwrite(new_n); + if (bits != 0) { + const limb_type out = detail::lshift_copy(limbs + whole, src.data(), n, bits); + if (extra) { + limbs[n + whole] = out; } - const auto shift_mask = (limb_type{1} << shifted_bits) - 1; - return shifted_limbs < limb_count() && (limbs[shifted_limbs] & shift_mask) != 0; - }(); + } else { + std::copy_n(src.data(), n, limbs + whole); + } + std::fill_n(limbs, whole, limb_type{0}); + m_size_and_sign = (static_cast(neg) << 31) | static_cast(new_n); + clear_inline_tail(old_count); +} - if (shifted_limbs != 0) { - const auto current_count = limb_count(); - if (shifted_limbs >= current_count) { - limbs[0] = 0; - unchecked_set_limb_count(1); - } else { - std::shift_left(limbs, limbs + current_count, static_cast(shifted_limbs)); - unchecked_set_limb_count(static_cast(current_count - shifted_limbs)); +template +constexpr void basic_big_int::assign_shifted_right(const std::span src, + const bool neg, + const shift_type s) { + BEMAN_BIG_INT_DEBUG_ASSERT(s <= shift_max); + const size_type n = src.size(); + const size_type whole = s / bits_per_limb; + const unsigned bits = static_cast(s % bits_per_limb); + + if (whole >= n) { + set_zero(); + if (neg) { + limb_ptr()[0] = 1; + m_size_and_sign = 0x8000'0001U; } - clear_inline_tail(current_count); + return; } - if (shifted_bits != 0) { - for (size_type i = 0; i + 1 < limb_count(); ++i) { - const detail::wide all_bits{.low_bits = limbs[i], .high_bits = limbs[i + 1]}; - limbs[i] = detail::funnel_shr(all_bits, static_cast(shifted_bits)); + + bool inexact = false; + if (neg) { + for (size_type i = 0; i < whole && !inexact; ++i) { + inexact = src[i] != 0; } - BEMAN_BIG_INT_DEBUG_ASSERT(limb_count() != 0); - limbs[limb_count() - 1] >>= shifted_bits; } - unchecked_trim_magnitude(); - if (needs_decrement) { - // See above for rounding considerations. - // Also note that we may be holding a negative zero right now, - // and increasing the magnitude converts that into `-1`. + + // Size the result exactly (the source's top limb may shift away entirely) so a heap source whose + // shifted value fits inline does not allocate. + const size_type old_count = limb_count(); + const limb_type* from = src.data() + whole; + size_type k = n - whole; + const bool top_dies = k > 1 && bits != 0 && (from[k - 1] >> bits) == 0; + k -= static_cast(top_dies); + limb_type* const limbs = storage_for_overwrite(k); + if (bits != 0) { + inexact |= detail::rshift_copy(limbs, from, k, bits) != 0; + if (top_dies) { + // The vanished top limb still contributes its low bits to limb k - 1. + limbs[k - 1] |= static_cast(from[k] << (bits_per_limb - bits)); + } + } else { + std::copy_n(from, k, limbs); + } + + while (k > 1 && limbs[k - 1] == 0) { + --k; + } + m_size_and_sign = (static_cast(neg) << 31) | static_cast(k); + clear_inline_tail(old_count); + if (neg && inexact) { unchecked_increment_magnitude(); BEMAN_BIG_INT_DEBUG_ASSERT(is_negative()); } @@ -2103,17 +2172,9 @@ constexpr std::remove_cvref_t operator<<(T&& x, const S s) { r.shift_left(shift); return r; } else if constexpr (form == detail::binary_op_form::copy_int) { - // lvalue: use assign_value with headroom so shift_left doesn't reallocate. - const shift_type shifted_limbs = shift / Result::bits_per_limb; - const shift_type shifted_bits = shift % Result::bits_per_limb; - const bool needs_extra = - shifted_bits != 0 && - static_cast(std::countl_zero(x.limb_ptr()[x.limb_count() - 1])) < shifted_bits; - const std::size_t headroom = shifted_limbs + static_cast(needs_extra); - + // lvalue: build the shifted value straight into a fresh result, one pass. Result r{detail::result_allocator(x, s)}; - r.template assign_value(x, headroom); - r.shift_left(shift); + r.assign_shifted_left(x.representation(), x.is_negative(), shift); return r; } } @@ -2139,95 +2200,17 @@ constexpr std::remove_cvref_t operator>>(T&& x, const S s) { r.shift_right(shift); return r; } else if constexpr (form == detail::binary_op_form::copy_int) { - // lvalue: copy then shift. Two fast paths avoid copying bits that are - // about to be discarded anyway - // - // First is the case where the value is discarded entirely - // All we need to do is copy the sign - // - // Second is the case where some of the value is discarded - // For positive values this is a simple copy what we need and make a final limb internal shift - // For negative values we need to account for the rounding at the end - // - // If neither of these situations applies, make a full copy and shift. - - using limb_type = uint_multiprecision_t; - - const shift_type shifted_limbs = shift / Result::bits_per_limb; - const shift_type shifted_bits = shift % Result::bits_per_limb; - const shift_type x_bits = static_cast(x.size()); - + // lvalue: shift straight from the source into a fresh result, one pass. + // Shifting out every bit leaves just the sign (-1 or 0), without touching the limbs. const auto alloc = detail::result_allocator(x, s); - - // Case 1: Everything is discarded except the sign - if (shift >= x_bits) { + if (shift >= static_cast(x.size())) { if (x.is_negative()) { return Result{-1, alloc}; } return Result{alloc}; } - - const limb_type* const src_limbs = x.limb_ptr(); - const shift_type src_count = static_cast(x.limb_count()); - - // Number of limbs the shifted result actually occupies. Smaller than - // `src_count` exactly when at least one source limb (or the top - // limb's surviving bits) shrinks away. - const auto new_count = detail::div_to_pos_inf(x_bits - shift, static_cast(Result::bits_per_limb)); - - // Case 2: Result is strictly smaller than the source - if (new_count < src_count) { - const shift_type src_offset = shifted_limbs; - - Result r{alloc}; - r.reserve_representation(new_count); - limb_type* const dst = r.limb_ptr(); - - if (shifted_bits == 0) { - std::copy_n(src_limbs + src_offset, new_count, dst); - } else { - // Funnel-shift directly from source limbs into `dst`. - // Handles the case where we can theoretically go from heap -> inline storage with our result - for (shift_type i = 0; i < new_count; ++i) { - const shift_type src_idx = src_offset + i; - const limb_type low = src_limbs[src_idx]; - const limb_type high = (src_idx + 1 < src_count) ? src_limbs[src_idx + 1] : limb_type{0}; - const detail::wide all_bits{.low_bits = low, .high_bits = high}; - dst[i] = detail::funnel_shr(all_bits, static_cast(shifted_bits)); - } - } - r.unchecked_set_limb_count(static_cast(new_count)); - - if (x.is_negative()) { - // Mirror `shift_right`'s rounding-toward-negative-infinity - // We have to account even for the bits that will never be copied - bool discarded_nonzero = false; - for (shift_type i = 0; i < src_offset; ++i) { - if (src_limbs[i] != 0) { - discarded_nonzero = true; - break; - } - } - - if (!discarded_nonzero && shifted_bits != 0) { - const auto mask = static_cast((limb_type{1} << shifted_bits) - 1); - if ((src_limbs[src_offset] & mask) != 0) { - discarded_nonzero = true; - } - } - - r.unchecked_set_sign(true); - if (discarded_nonzero) { - r.unchecked_increment_magnitude(); - } - } - return r; - } - - // Case 3: Make a full copy and shift Result r{alloc}; - r.template assign_value(x); - r.shift_right(shift); + r.assign_shifted_right(x.representation(), x.is_negative(), shift); return r; } } diff --git a/tests/beman/big_int/front_end_shift.test.cpp b/tests/beman/big_int/front_end_shift.test.cpp new file mode 100644 index 00000000..554abcec --- /dev/null +++ b/tests/beman/big_int/front_end_shift.test.cpp @@ -0,0 +1,227 @@ +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// SPDX-License-Identifier: BSL-1.0 + +// Differential tests for the single-pass shift front ends (shift_left / shift_right in place and the +// assign_shifted_* fresh-result paths) against a plain limb-vector reference, for big_int, +// basic_big_int<128> and basic_big_int<256>. + +#include +#include +#include +#include +#include + +#include +#include + +#include "front_end_reference.hpp" +#include "testing.hpp" + +namespace bb = BEMAN_BIG_INT_NAMESPACE; + +BEMAN_BIG_INT_BEGIN_NAMESPACE +namespace front_end_test { + +template +void check_shifts(const ref& a, const std::size_t s) { + const T ta = make(a); + const ref shl = ref_shl(a, s); + const ref shr = ref_shr(a, s); + SCOPED_TRACE("a=" + hex(a) + " s=" + std::to_string(s)); + + EXPECT_TRUE(matches(ta << s, shl)); + EXPECT_TRUE(matches(ta >> s, shr)); + EXPECT_TRUE(matches(ta, a)) << "operand modified"; + EXPECT_TRUE(matches(T(ta) << s, shl)); + EXPECT_TRUE(matches(T(ta) >> s, shr)); + T c = ta; + c <<= s; + EXPECT_TRUE(matches(c, shl)); + T d = ta; + d >>= s; + EXPECT_TRUE(matches(d, shr)); + + // A fresh result lands inline exactly when it fits, even from a heap source. + const T l = ta << s; + EXPECT_EQ(is_inplace(l), shl.mag.size() <= T::inplace_capacity); + const T r = ta >> s; + EXPECT_EQ(is_inplace(r), shr.mag.size() <= T::inplace_capacity); + // An inline value shifted in place stays inline when the result fits. + if (is_inplace(ta) && shl.mag.size() <= T::inplace_capacity) { + EXPECT_TRUE(is_inplace(c)); + } +} + +template +void shift_sweep() { + std::mt19937_64 rng(1357); + const std::size_t cap = T::inplace_capacity; + for (const std::size_t n : sizes_for(cap)) { + if (n > 8 && n != cap && n != cap + 1) { + continue; + } + for (unsigned p = 0; p < 6; ++p) { + for (const bool neg : {false, true}) { + const ref a = gen(rng, n, p, neg); + std::vector shifts = {0, 1, W - 1, W, W + 1, 2 * W, + 2 * W + 13, 3 * W - 1, n * W - 1, n * W, n * W + 1, n * W + 5, + cap * W, cap * W + 13, (cap + 1) * W, (cap + 2) * W + 1}; + for (const std::size_t s : shifts) { + if (s > 100000) { + continue; // n == 0 underflow of n * W - 1 + } + check_shifts(a, s); + } + } + } + } +} + +// Every small value against every small shift, checked against the builtin (arithmetic shift = floor). +template +void small_exhaustive() { + for (long long x = -70; x <= 70; ++x) { + for (unsigned s = 0; s <= 130; ++s) { + const T tx{x}; + long long expect_r = x >> std::min(s, 62U); + EXPECT_EQ(tx >> s, expect_r) << x << " >> " << s; + T c = tx; + c >>= s; + EXPECT_EQ(c, expect_r) << x << " >>= " << s; + EXPECT_TRUE(tail_is_zero(c)); + if (s <= 40) { + EXPECT_EQ(tx << s, x * (1LL << s)) << x << " << " << s; + T e = tx; + e <<= s; + EXPECT_EQ(e, x * (1LL << s)) << x << " <<= " << s; + EXPECT_TRUE(tail_is_zero(e)); + } + } + } +} + +// Shifting a value that exactly fits the inline capacity must not spill unless the result needs it. +template +void left_shift_exact_sizing() { + constexpr std::size_t cap_bits = T::inplace_capacity * W; + for (const bool neg : {false, true}) { + // 1 << (cap_bits - 1) is the top bit of the inline buffer. + T one{neg ? -1 : 1}; + T top = one << (cap_bits - 1); + EXPECT_TRUE(is_inplace(top)) << "copy form spilled"; + T inplace = one; + inplace <<= (cap_bits - 1); + EXPECT_TRUE(is_inplace(inplace)) << "in-place form spilled"; + EXPECT_EQ(top, inplace); + T next = one << cap_bits; + EXPECT_FALSE(is_inplace(next)); + T moved = std::move(one) << (cap_bits - 1); + EXPECT_TRUE(is_inplace(moved)) << "rvalue form spilled"; + EXPECT_TRUE(tail_is_zero(top) && tail_is_zero(inplace) && tail_is_zero(moved)); + } +} + +// Aliasing and identity shifts: the operand and the destination are the same object. +template +void shift_aliasing() { + std::mt19937_64 rng(97531); + for (const std::size_t n : sizes_for(T::inplace_capacity)) { + for (unsigned p = 0; p < 6; ++p) { + for (const bool neg : {false, true}) { + const ref a = gen(rng, n, p, neg); + SCOPED_TRACE("a=" + hex(a)); + T x = make(a); + x = x << 0; + EXPECT_TRUE(matches(x, a)) << "x = x << 0"; + x = make(a); + x = x >> 0; + EXPECT_TRUE(matches(x, a)) << "x = x >> 0"; + x = make(a); + x <<= 0; + EXPECT_TRUE(matches(x, a)) << "x <<= 0"; + x = make(a); + x <<= W; + EXPECT_TRUE(matches(x, ref_shl(a, W))) << "x <<= W"; + x = make(a); + x >>= W; + EXPECT_TRUE(matches(x, ref_shr(a, W))) << "x >>= W"; + x = make(a); + x = x << W; + EXPECT_TRUE(matches(x, ref_shl(a, W))) << "x = x << W"; + x = make(a); + x = x >> W; + EXPECT_TRUE(matches(x, ref_shr(a, W))) << "x = x >> W"; + } + } + } +} + +// ----- constant evaluation: multi-limb values (heap storage under consteval) ----- + +// 2^(k * W) - 1, parsed from hex so no operation under test builds it. +// ----- constant evaluation: multi-limb values (heap storage under consteval) ----- + +template +constexpr bool cx_shift(unsigned k) { + const T x = cx_ones(k); + const unsigned kw = k * W; + for (const unsigned s : {1U, W - 1, W, W + 1, 2 * W + 13}) { + if (((x << s) >> s) != x || !((x << s) == (x * (T{1} << s)))) { + return false; + } + T c = x; + c <<= s; + const T cc = c; + c >>= s; + if (c != x || !tail_is_zero(c) || (cc >> s) != x) { + return false; + } + // negative floor rounding: low bits of an all-ones value are always discarded when s < kw + if (s < kw) { + const T q = x >> s; + if (((-x) >> s) != -(q + 1) || !tail_is_zero(-x >> s)) { + return false; + } + T n = -x; + n >>= s; + if (n != -(q + 1)) { + return false; + } + } + } + if ((x >> kw) != 0 || ((-x) >> kw) != -1 || ((-x) >> (kw + 5)) != -1) { + return false; + } + T z = x; + z >>= kw; + T nz = -x; + nz >>= kw; + return z == 0 && tail_is_zero(z) && nz == -1 && tail_is_zero(nz); +} + +} // namespace front_end_test +BEMAN_BIG_INT_END_NAMESPACE + +namespace fe = BEMAN_BIG_INT_NAMESPACE::front_end_test; + +#define FRONT_END_TYPES(CASE) \ + CASE(BigInt, bb::big_int) \ + CASE(Inline128, bb::basic_big_int<128>) \ + CASE(Inline256, bb::basic_big_int<256>) + +#define FRONT_END_TEST(SUFFIX, TYPE) \ + TEST(FrontEndShift##SUFFIX, Sweep) { fe::shift_sweep(); } \ + TEST(FrontEndShift##SUFFIX, Aliasing) { fe::shift_aliasing(); } \ + TEST(FrontEndShift##SUFFIX, SmallExhaustive) { fe::small_exhaustive(); } \ + TEST(FrontEndShift##SUFFIX, LeftShiftExactSizing) { fe::left_shift_exact_sizing(); } +FRONT_END_TYPES(FRONT_END_TEST) + +#define FRONT_END_STATIC(TYPE) \ + static_assert(fe::cx_shift(1)); \ + static_assert(fe::cx_shift(2)); \ + static_assert(fe::cx_shift(TYPE::inplace_capacity)); \ + static_assert(fe::cx_shift(TYPE::inplace_capacity + 1)); \ + static_assert(fe::cx_shift(TYPE::inplace_capacity + 3)) +FRONT_END_STATIC(bb::big_int); +FRONT_END_STATIC(bb::basic_big_int<128>); +FRONT_END_STATIC(bb::basic_big_int<256>); From e6f326bb9146607ebcff11aad04e300654b1cbac Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:25:08 -0400 Subject: [PATCH 10/36] Multiply and divide front ends: write results in place, keep the allocator and capacity, stack scratch for small shapes --- include/beman/big_int/basic_big_int.hpp | 421 ++++++++++++++++-------- 1 file changed, 283 insertions(+), 138 deletions(-) diff --git a/include/beman/big_int/basic_big_int.hpp b/include/beman/big_int/basic_big_int.hpp index a78cae02..6f16f2a3 100644 --- a/include/beman/big_int/basic_big_int.hpp +++ b/include/beman/big_int/basic_big_int.hpp @@ -724,6 +724,24 @@ class BEMAN_BIG_INT_TRIVIAL_ABI basic_big_int { constexpr uint_multiprecision_t divmod_in_place_short(uint_multiprecision_t divisor, bool divisor_neg, detail::division_op op); + // `*this *= b`, keeping the allocator. `b` may alias `*this`. A one-limb `b` multiplies in place; a product + // of at most 64 limbs is formed on the stack at run time; larger products go to a fresh buffer that replaces + // the old one only on success. + template + constexpr void multiply_in_place(std::span b, bool b_neg); + + // `*this /= divisor` or `*this %= divisor` for a multi-limb divisor in the schoolbook band, at run + // time and with all scratch on the stack: the dividend is divided where it sits, so nothing allocates. + // Returns false, leaving `*this` untouched, when the shape does not qualify. + template + constexpr bool divide_in_place_small(std::span divisor, + bool divisor_neg, + detail::division_op op); + + // A value holding exactly the trimmed magnitude `mag` (non-empty), with allocator `a`. + [[nodiscard]] static constexpr basic_big_int + make_from_magnitude(std::span mag, bool neg, const allocator_type& a); + // Shared implementation behind copy-assign, move-assign, and the lvalue // branches of `operator+` / `operator-`. // Sets `*this` to the value of `src`. @@ -2475,7 +2493,10 @@ constexpr void basic_big_int::add_into(const std::span template constexpr void basic_big_int::multiply_into(const std::span a, @@ -2492,38 +2513,31 @@ constexpr void basic_big_int::multiply_into(const std::span stack_span{stack_buf, result_size}; - const std::size_t sig = detail::multiply_dispatch(stack_span, a_trimmed, b_trimmed, m_alloc); - if (sig > inplace_capacity) { - grow(sig); - } - auto* const dst = limb_ptr(); - for (std::size_t i = 0; i < sig; ++i) { - dst[i] = stack_buf[i]; + // Both operands are nonzero, so the product is nonzero and its sign is the xor of the operand signs. + if constexpr (inplace_capacity + 1 <= 64) { + if BEMAN_BIG_INT_IS_NOT_CONSTEVAL { + if (result_size == inplace_capacity + 1) { + limb_type stack_buf[inplace_capacity + 1]; + const std::size_t sig = detail::multiply_dispatch( + std::span{stack_buf, result_size}, a_trimmed, b_trimmed, m_alloc); + limb_type* const dst = storage_for_overwrite(sig); + std::copy_n(stack_buf, sig, dst); + unchecked_set_limb_count(static_cast(sig)); + clear_inline_tail(old_count); + unchecked_set_sign(a_neg != b_neg); + return; } - unchecked_set_limb_count(static_cast(sig)); - unchecked_set_sign(a_neg != b_neg && !unchecked_is_magnitude_zero()); - return; } } - grow(result_size); - std::fill_n(limb_ptr(), result_size, limb_type{0}); - - std::span result_span{limb_ptr(), result_size}; - const std::size_t sig = detail::multiply_dispatch(result_span, a_trimmed, b_trimmed, m_alloc); + limb_type* const dst = storage_for_overwrite(result_size); + const std::size_t sig = + detail::multiply_dispatch(std::span{dst, result_size}, a_trimmed, b_trimmed, m_alloc); unchecked_set_limb_count(static_cast(sig)); - unchecked_set_sign(a_neg != b_neg && !unchecked_is_magnitude_zero()); + clear_inline_tail(old_count); + unchecked_set_sign(a_neg != b_neg); } template @@ -2672,6 +2686,68 @@ constexpr auto basic_big_int::operator-=(T&& rhs) -> basic_big_int& return *this; } +// Multiplies in place, keeping the allocator and, below the large-product threshold, the capacity. +template +template +constexpr void basic_big_int::multiply_in_place(const std::span b_span, + const bool b_neg) { + const std::span a_all{limb_ptr(), limb_count()}; + const auto a_trimmed = a_all.first(detail::trimmed_size_span(a_all)); + const auto b_trimmed = b_span.first(detail::trimmed_size_span(b_span)); + + if (detail::is_span_zero(a_trimmed) || detail::is_span_zero(b_trimmed)) { + set_zero(); + return; + } + + const bool result_neg = is_negative() != b_neg; + const std::size_t la = a_trimmed.size(); + const std::size_t lb = b_trimmed.size(); + + if (lb == 1) { + // `b` may alias our limbs, so take its value before anything moves. + const limb_type mul = b_trimmed[0]; + limb_type* limbs = limb_ptr(); + limb_type carry = 0; + for (std::size_t i = 0; i < la; ++i) { + const auto [lo, hi] = detail::widening_mul(limbs[i], mul); + const auto [sum, c] = detail::carrying_add(lo, carry); + limbs[i] = sum; + carry = hi + static_cast(c); + } + if (carry != 0) { + grow(la + 1); + limb_ptr()[la] = carry; + unchecked_set_limb_count(static_cast(la + 1)); + } + unchecked_set_sign(result_neg); + return; + } + + const std::size_t result_size = la + lb; + constexpr size_type stack_limbs = 64; + if BEMAN_BIG_INT_IS_NOT_CONSTEVAL { + if (result_size <= stack_limbs) { + limb_type stack_buf[stack_limbs]; + const std::size_t sig = + detail::multiply_dispatch(std::span{stack_buf, result_size}, a_trimmed, b_trimmed, m_alloc); + // The operands are dead now, so growth may release the old buffer. + const size_type old_count = limb_count(); + limb_type* const dst = storage_for_overwrite(sig); + std::copy_n(stack_buf, sig, dst); + unchecked_set_limb_count(static_cast(sig)); + clear_inline_tail(old_count); + unchecked_set_sign(result_neg); + return; + } + } + + // Large product: build it in a fresh buffer, then adopt that buffer. `*this` is untouched if this throws. + basic_big_int product{m_alloc}; + product.multiply_into(a_trimmed, is_negative(), b_trimmed, b_neg); + *this = std::move(product); +} + // Compound multiplication assignment. template template @@ -2679,30 +2755,82 @@ constexpr auto basic_big_int::operator*=(T&& rhs) -> basic_big_int& requires detail::common_big_int_type_with { if constexpr (detail::is_basic_big_int_v>) { - // Move *this to a temp so the old limbs become a read-only input, - // then multiply into a new *this. - const basic_big_int temp = std::move(*this); - *this = basic_big_int{}; - // `rhs` may alias `*this` (e.g. `y *= y`). - // After the move, `rhs` still references the moved-from destination, so read both operands from `temp`. - if (std::addressof(rhs) == this) { - multiply_into(temp.representation(), temp.is_negative(), temp.representation(), temp.is_negative()); - return *this; - } - multiply_into(temp.representation(), temp.is_negative(), rhs.representation(), rhs.is_negative()); + // `rhs` may be `*this`: multiply_in_place reads both operands before writing. + multiply_in_place(rhs.representation(), rhs.is_negative()); } else { - const basic_big_int temp = std::move(*this); - *this = basic_big_int{}; - const auto rhs_limbs = detail::to_limbs(detail::uabs(rhs)); - multiply_into( - temp.representation(), temp.is_negative(), detail::to_fixed_span(rhs_limbs), detail::integer_signbit(rhs)); + const auto rhs_limbs = detail::to_limbs(detail::uabs(rhs)); + multiply_in_place(detail::to_fixed_span(rhs_limbs), detail::integer_signbit(rhs)); } return *this; } +template +template +constexpr bool +basic_big_int::divide_in_place_small(const std::span divisor, + const bool divisor_neg, + const detail::division_op op) { + if BEMAN_BIG_INT_IS_NOT_CONSTEVAL { + const std::span dividend_all{limb_ptr(), limb_count()}; + const auto dividend = dividend_all.first(detail::trimmed_size_span(dividend_all)); + const auto d = divisor.first(detail::trimmed_size_span(divisor)); + const std::size_t n = dividend.size(); + const std::size_t m = d.size(); + if (m < 2 || n < m || detail::is_span_zero(dividend) || !detail::divide_takes_schoolbook(n, m)) { + return false; + } + const std::size_t q_cap = n - m + 1; + const std::size_t r_cap = n + 1; + const std::size_t need = + detail::divide_schoolbook_storage_size(n, m, true) + (op == detail::division_op::rem ? q_cap : 0); + if (need > detail::small_division_stack_limbs) { + return false; + } + + limb_type stack_buf[detail::small_division_stack_limbs]; + detail::scratch_allocator_base scratch(stack_buf, detail::small_division_stack_limbs); + limb_type* const limbs = limb_ptr(); + const size_type old_count = limb_count(); + if (op == detail::division_op::div) { + // The schoolbook kernel copies the dividend into scratch before its first quotient write. + const std::span quot{limbs, q_cap}; + detail::divide_dispatch_q(quot, dividend, d, scratch, m_alloc); + const std::size_t qsize = detail::trimmed_size_span(std::span{limbs, q_cap}); + unchecked_set_limb_count(static_cast(qsize)); + clear_inline_tail(old_count); + unchecked_set_sign(is_negative() != divisor_neg && !unchecked_is_magnitude_zero()); + } else { + const bool neg = is_negative(); + const std::span quot_span = scratch.allocate(q_cap); + const std::span rem_span = scratch.allocate(r_cap); + detail::divide_dispatch(quot_span, rem_span, dividend, d, scratch, m_alloc); + const std::size_t rsize = detail::trimmed_size_span(std::span{rem_span}); + std::copy_n(rem_span.data(), rsize, limbs); + unchecked_set_limb_count(static_cast(rsize)); + clear_inline_tail(old_count); + unchecked_set_sign(neg && !unchecked_is_magnitude_zero()); + } + return true; + } + return false; +} + +template +constexpr auto basic_big_int::make_from_magnitude(const std::span mag, + const bool neg, + const allocator_type& a) -> basic_big_int { + basic_big_int r{a}; + limb_type* dst = r.storage_for_overwrite(mag.size()); + std::copy(mag.begin(), mag.end(), dst); + r.unchecked_set_limb_count(static_cast(mag.size())); + r.unchecked_set_sign(neg && !r.unchecked_is_magnitude_zero()); + return r; +} + // Single-limb divisor fast path from Knuth -// Avoids allocating a remainder scratch buffer and a `t` buffer: we just stream the quotient through `*this`'s -// limbs and carry a single remainder limb between iterations. +// Avoids a scratch remainder buffer and a `t` buffer. The quotient streams through `*this`'s limbs when they +// already have room; otherwise a run-time stack buffer takes it, so a quotient that trims to fit inline never +// allocates. The remainder-only form needs no quotient at all. template template constexpr uint_multiprecision_t @@ -2713,13 +2841,15 @@ basic_big_int::divmod_into_short(const std::span::divmod_into_short(const std::span quot_span{limb_ptr(), dividend_trim.size()}; - const uint_multiprecision_t remainder = detail::divide_unsigned_short(quot_span, dividend_trim, divisor); + const size_type n = dividend_trim.size(); - if (want_quotient) { - const std::size_t qsize = - detail::trimmed_size_span(std::span{limb_ptr(), dividend_trim.size()}); - unchecked_set_limb_count(static_cast(qsize)); - } else { - limb_ptr()[0] = remainder; + if (!want_quotient) { + const uint_multiprecision_t remainder = detail::mod_unsigned_short(dividend_trim, divisor); + limb_ptr()[0] = remainder; unchecked_set_limb_count(1); + clear_inline_tail(old_count); + unchecked_set_sign(result_neg && !unchecked_is_magnitude_zero()); + return remainder; } + const size_type capacity = is_representation_inplace() ? inplace_capacity : m_capacity; + constexpr size_type stack_limbs = 64; + if BEMAN_BIG_INT_IS_NOT_CONSTEVAL { + if (n > capacity && n <= stack_limbs) { + limb_type stack_buf[stack_limbs]; + const uint_multiprecision_t remainder = + detail::divide_unsigned_short(std::span{stack_buf, n}, dividend_trim, divisor); + const size_type qsize = detail::trimmed_size_span(std::span{stack_buf, n}); + limb_type* const dst = storage_for_overwrite(qsize); + std::copy_n(stack_buf, qsize, dst); + unchecked_set_limb_count(static_cast(qsize)); + clear_inline_tail(old_count); + unchecked_set_sign(result_neg && !unchecked_is_magnitude_zero()); + return remainder; + } + } + + limb_type* const dst = storage_for_overwrite(n); + const uint_multiprecision_t remainder = + detail::divide_unsigned_short(std::span{dst, n}, dividend_trim, divisor); + const size_type qsize = detail::trimmed_size_span(std::span{dst, n}); + unchecked_set_limb_count(static_cast(qsize)); + clear_inline_tail(old_count); unchecked_set_sign(result_neg && !unchecked_is_magnitude_zero()); return remainder; } @@ -2808,26 +2958,25 @@ constexpr auto basic_big_int::divmod_into(const std::span(dividend_trim.size())); + clear_inline_tail(old_count); unchecked_set_sign(dividend_neg && !unchecked_is_magnitude_zero()); - if (op == detail::division_op::rem) { - return {}; - } - - BEMAN_BIG_INT_DEBUG_ASSERT(op == detail::division_op::div_rem); - basic_big_int result = std::move(*this); - set_zero(); - return result; + return {}; } // Single-limb divisor fast path. if (divisor_trim.size() == 1) { const uint_multiprecision_t rem_limb = divmod_into_short(dividend_trim, dividend_neg, divisor_trim[0], divisor_neg, op); - if (rem_limb == 0) { + if (op != detail::division_op::div_rem || rem_limb == 0) { return {}; } basic_big_int remainder{rem_limb, m_alloc}; @@ -2835,70 +2984,63 @@ constexpr auto basic_big_int::divmod_into(const std::span scratch(r_cap + t_cap, m_alloc); - detail::divide_dispatch_q( - std::span{limb_ptr(), q_cap}, dividend_trim, divisor_trim, scratch, m_alloc); + const std::size_t scratch_limbs = + detail::divide_schoolbook_storage_size(n_div, m_div, true) + (op == detail::division_op::rem ? q_cap : 0); + const size_type old_count = limb_count(); - const std::size_t qsize = detail::trimmed_size_span(std::span{limb_ptr(), q_cap}); - unchecked_set_limb_count(static_cast(qsize)); - unchecked_set_sign(unrounded_quotient_neg && !unchecked_is_magnitude_zero()); - return {}; - } + const auto divide_with = [&](detail::scratch_allocator_base& scratch) -> basic_big_int { + if (op == detail::division_op::rem) { + // Quotient and remainder both in scratch; only the remainder is kept. + const std::span quot_span = scratch.allocate(q_cap); + const std::span rem_span = scratch.allocate(r_cap); + detail::divide_dispatch(quot_span, rem_span, dividend_trim, divisor_trim, scratch, m_alloc); + const std::size_t rsize = detail::trimmed_size_span(std::span{rem_span}); + limb_type* const dst = storage_for_overwrite(rsize); + std::copy_n(rem_span.data(), rsize, dst); + unchecked_set_limb_count(static_cast(rsize)); + clear_inline_tail(old_count); + unchecked_set_sign(dividend_neg && !unchecked_is_magnitude_zero()); + return {}; + } - if (want_quotient) { - // *this will hold the quotient. - // Remainder and `t` go in scratch. - grow(q_cap); - std::fill_n(limb_ptr(), q_cap, limb_type{0}); - - detail::scratch_allocator scratch(r_cap + t_cap, m_alloc); - const std::span rem_span = scratch.allocate(r_cap); - - detail::divide_dispatch(std::span{limb_ptr(), q_cap}, - rem_span, - dividend_trim, - divisor_trim, - scratch, - m_alloc); - - const std::size_t qsize = detail::trimmed_size_span(std::span{limb_ptr(), q_cap}); + // Quotient only: the divide-and-conquer band can skip the remainder work through the + // approximate-quotient path. With div_rem the remainder is produced into scratch. + limb_type* const dst = storage_for_overwrite(q_cap); + const std::span quot = {dst, q_cap}; + std::span rem_span = {}; + if (op == detail::division_op::div) { + detail::divide_dispatch_q(quot, dividend_trim, divisor_trim, scratch, m_alloc); + } else { + rem_span = scratch.allocate(r_cap); + detail::divide_dispatch(quot, rem_span, dividend_trim, divisor_trim, scratch, m_alloc); + } + const std::size_t qsize = detail::trimmed_size_span(std::span{dst, q_cap}); unchecked_set_limb_count(static_cast(qsize)); + clear_inline_tail(old_count); unchecked_set_sign(unrounded_quotient_neg && !unchecked_is_magnitude_zero()); + if (op == detail::division_op::div) { + return {}; + } + const std::size_t rsize = detail::trimmed_size_span(std::span{rem_span}); + return make_from_magnitude( + std::span{rem_span.data(), rsize}, dividend_neg, m_alloc); + }; - BEMAN_BIG_INT_DEBUG_ASSERT(op == detail::division_op::div_rem); - basic_big_int rem(rem_span.data(), rem_span.data() + rem_span.size(), m_alloc); - rem.unchecked_set_sign(dividend_neg && !rem.unchecked_is_magnitude_zero()); - return rem; + if BEMAN_BIG_INT_IS_NOT_CONSTEVAL { + if (scratch_limbs <= detail::small_division_stack_limbs) { + limb_type stack_buf[detail::small_division_stack_limbs]; + detail::scratch_allocator_base scratch(stack_buf, detail::small_division_stack_limbs); + return divide_with(scratch); + } } - - // *this will hold the remainder. - // Quotient and `t` go in scratch. - grow(r_cap); - std::fill_n(limb_ptr(), r_cap, limb_type{0}); - - detail::scratch_allocator scratch(q_cap + t_cap, m_alloc); - const std::span quot_span = scratch.allocate(q_cap); - - detail::divide_dispatch( - quot_span, std::span{limb_ptr(), r_cap}, dividend_trim, divisor_trim, scratch, m_alloc); - - const std::size_t rsize = detail::trimmed_size_span(std::span{limb_ptr(), r_cap}); - unchecked_set_limb_count(static_cast(rsize)); - unchecked_set_sign(dividend_neg && !unchecked_is_magnitude_zero()); - return {}; + detail::scratch_allocator scratch(scratch_limbs, m_alloc); + return divide_with(scratch); } // Simultaneously computes the quotient and remainder of a division, @@ -3024,15 +3166,16 @@ constexpr auto basic_big_int::operator/=(T&& rhs) -> basic_big_int& // storage when `&rhs == this`. if (&rhs == this) { BEMAN_BIG_INT_ASSERT(!is_zero()); - *this = basic_big_int{1}; + set_zero(); + limb_ptr()[0] = 1; return *this; } } if (rhs.limb_count() == 1) { static_cast(divmod_in_place_short(rhs.limb_ptr()[0], rhs.is_negative(), detail::division_op::div)); - } else { - const basic_big_int temp = std::move(*this); - *this = basic_big_int{}; + } else if (!divide_in_place_small(rhs.representation(), rhs.is_negative(), detail::division_op::div)) { + const basic_big_int temp(std::move(*this), m_alloc); + set_zero(); divmod_into(temp.representation(), temp.is_negative(), rhs.representation(), @@ -3044,9 +3187,10 @@ constexpr auto basic_big_int::operator/=(T&& rhs) -> basic_big_int& if (detail::trimmed_size_span(rhs_limbs) == 1) { static_cast( divmod_in_place_short(rhs_limbs[0], detail::integer_signbit(rhs), detail::division_op::div)); - } else { - const basic_big_int temp = std::move(*this); - *this = basic_big_int{}; + } else if (!divide_in_place_small( + detail::to_fixed_span(rhs_limbs), detail::integer_signbit(rhs), detail::division_op::div)) { + const basic_big_int temp(std::move(*this), m_alloc); + set_zero(); divmod_into(temp.representation(), temp.is_negative(), detail::to_fixed_span(rhs_limbs), @@ -3067,15 +3211,15 @@ constexpr auto basic_big_int::operator%=(T&& rhs) -> basic_big_int& // Self-modulus: `std::move(*this)` below would zero `rhs` when &rhs == this. if (&rhs == this) { BEMAN_BIG_INT_ASSERT(!is_zero()); - *this = basic_big_int{}; + set_zero(); return *this; } } if (rhs.limb_count() == 1) { static_cast(divmod_in_place_short(rhs.limb_ptr()[0], rhs.is_negative(), detail::division_op::rem)); - } else { - const basic_big_int temp = std::move(*this); - *this = basic_big_int{}; + } else if (!divide_in_place_small(rhs.representation(), rhs.is_negative(), detail::division_op::rem)) { + const basic_big_int temp(std::move(*this), m_alloc); + set_zero(); divmod_into(temp.representation(), temp.is_negative(), rhs.representation(), @@ -3087,9 +3231,10 @@ constexpr auto basic_big_int::operator%=(T&& rhs) -> basic_big_int& if (detail::trimmed_size_span(rhs_limbs) == 1) { static_cast( divmod_in_place_short(rhs_limbs[0], detail::integer_signbit(rhs), detail::division_op::rem)); - } else { - const basic_big_int temp = std::move(*this); - *this = basic_big_int{}; + } else if (!divide_in_place_small( + detail::to_fixed_span(rhs_limbs), detail::integer_signbit(rhs), detail::division_op::rem)) { + const basic_big_int temp(std::move(*this), m_alloc); + set_zero(); divmod_into(temp.representation(), temp.is_negative(), detail::to_fixed_span(rhs_limbs), From 4586e3762bec8412f22ace40444f8510919b4238 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:25:08 -0400 Subject: [PATCH 11/36] Add mul/div front end tests: aliasing, inline capacity edges, gate shapes, propagating allocator, constexpr --- tests/beman/big_int/allocation.test.cpp | 73 +++ .../beman/big_int/dispatch_contract.test.cpp | 65 +-- tests/beman/big_int/muldiv_frontend.test.cpp | 480 ++++++++++++++++++ 3 files changed, 588 insertions(+), 30 deletions(-) create mode 100644 tests/beman/big_int/muldiv_frontend.test.cpp diff --git a/tests/beman/big_int/allocation.test.cpp b/tests/beman/big_int/allocation.test.cpp index cdcfc750..54a2cd80 100644 --- a/tests/beman/big_int/allocation.test.cpp +++ b/tests/beman/big_int/allocation.test.cpp @@ -312,6 +312,79 @@ TEST(Allocation, PropagatingAssignmentIsStrongWhenAllocationThrows) { EXPECT_EQ(dst, src); } +// Compound multiplication, division and modulus keep the object's own allocator. These objects use a +// propagating-on-move-assignment allocator, so replacing `*this` with a default-constructed one would +// reset its id. +TEST(Allocation, CompoundMultiplyDivideModulusKeepPropagatingAllocator) { + using alloc_t = pocca_alloc; + const auto big = [](std::size_t id, unsigned shift) { + pocca_big_int x{1, alloc_t{id}}; + x <<= shift; + x += 12345; + return x; + }; + // Small (inline), a few limbs (stack product), and large (fresh-buffer product) operands. + for (const unsigned shift : {10U, 200U, 700U, 6000U}) { + pocca_big_int a = big(7U, shift); + pocca_big_int b = big(7U, 130U); + pocca_big_int c = big(7U, 64U); + const pocca_big_int a0 = a; + + a *= b; + EXPECT_EQ(a.get_allocator().id, 7U) << "*= shift " << shift; + EXPECT_EQ(a, a0 * b); + + a /= b; + EXPECT_EQ(a.get_allocator().id, 7U) << "/= shift " << shift; + EXPECT_EQ(a, a0); + + a *= a; + EXPECT_EQ(a.get_allocator().id, 7U) << "x *= x shift " << shift; + EXPECT_EQ(a, a0 * a0); + + a %= b; + EXPECT_EQ(a.get_allocator().id, 7U) << "%= shift " << shift; + EXPECT_EQ(a, (a0 * a0) % b); + + a = a0; + a /= a; + EXPECT_EQ(a.get_allocator().id, 7U) << "x /= x shift " << shift; + EXPECT_EQ(a, 1); + + a = a0; + a %= a; + EXPECT_EQ(a.get_allocator().id, 7U) << "x %= x shift " << shift; + EXPECT_EQ(a, 0); + + a = a0; + a *= 3; + a /= 3; + a %= 1000003; + EXPECT_EQ(a.get_allocator().id, 7U) << "integer rhs shift " << shift; + + // Divisors and multipliers that fit one limb take the in-place paths. + a = a0; + a *= c; + a /= c; + EXPECT_EQ(a.get_allocator().id, 7U); + EXPECT_EQ(a, a0); + } +} + +TEST(Allocation, MultiplyAndDivideResultsTakeAllocatorFromOperand) { + using alloc_t = pocca_alloc; + pocca_big_int a{1, alloc_t{3U}}; + a <<= 500; + pocca_big_int b{1, alloc_t{3U}}; + b <<= 190; + EXPECT_EQ((a * b).get_allocator().id, 3U); + EXPECT_EQ((a / b).get_allocator().id, 3U); + EXPECT_EQ((a % b).get_allocator().id, 3U); + const auto both = div_rem_to_zero(a + 1, b + 1); + EXPECT_EQ(both.quotient.get_allocator().id, 3U); + EXPECT_EQ(both.remainder.get_allocator().id, 3U); +} + // A stateful allocator whose `select_on_container_copy_construction` hands back a // distinct allocator (`id + 1`) instead of a copy. A copy-constructed container // must adopt that allocator, so `id` shows whether the constructor consulted the diff --git a/tests/beman/big_int/dispatch_contract.test.cpp b/tests/beman/big_int/dispatch_contract.test.cpp index b27b7f7f..0bde0fd1 100644 --- a/tests/beman/big_int/dispatch_contract.test.cpp +++ b/tests/beman/big_int/dispatch_contract.test.cpp @@ -35,12 +35,12 @@ using limbs_t = std::vector; using cspan_t = std::span; using span_t = std::span; -constexpr uint_t poison = static_cast(0xA5A5A5A5A5A5A5A5ULL); -constexpr uint_t guard_value = static_cast(0x5A5A5A5A5A5A5A5AULL); -constexpr std::size_t guard_limbs = 3; -constexpr std::size_t limb_bits = std::numeric_limits::digits; -constexpr std::size_t max_ref_work = 4'000'000; -constexpr std::size_t max_limbs = 20'000; +constexpr uint_t poison = static_cast(0xA5A5A5A5A5A5A5A5ULL); +constexpr uint_t guard_value = static_cast(0x5A5A5A5A5A5A5A5AULL); +constexpr std::size_t guard_limbs = 3; +constexpr std::size_t limb_bits = std::numeric_limits::digits; +constexpr std::size_t max_ref_work = 4'000'000; +constexpr std::size_t max_limbs = 20'000; limbs_t random_limbs(const std::size_t n, std::mt19937_64& rng) { limbs_t v(n); @@ -75,15 +75,14 @@ void check_product(const char* what, const cspan_t a, const cspan_t b, Run&& run const std::size_t n_clean = run(span_t{clean.data(), total}, a, b); for (std::size_t i = total; i < dirty.size(); ++i) { - EXPECT_EQ(dirty[i], guard_value) << what << ": guard limb " << (i - total) << " overwritten, la=" << a.size() - << " lb=" << b.size(); + EXPECT_EQ(dirty[i], guard_value) + << what << ": guard limb " << (i - total) << " overwritten, la=" << a.size() << " lb=" << b.size(); } EXPECT_EQ(n_dirty, n_clean) << what << ": la=" << a.size() << " lb=" << b.size(); EXPECT_EQ(n_dirty, detail::trimmed_size_span(cspan_t{dirty.data(), total})) << what << ": returned size is not the trimmed size, la=" << a.size() << " lb=" << b.size(); const bool same = std::equal(dirty.begin(), dirty.begin() + static_cast(total), clean.begin()); - EXPECT_TRUE(same) << what << ": poisoned result differs from zeroed result, la=" << a.size() - << " lb=" << b.size(); + EXPECT_TRUE(same) << what << ": poisoned result differs from zeroed result, la=" << a.size() << " lb=" << b.size(); if (a.size() * b.size() <= max_ref_work) { limbs_t ref(total, uint_t{0}); @@ -161,7 +160,7 @@ std::size_t sat_sub(const std::size_t x, const std::size_t d) { return x > d ? x // Operand sizes straddling every cutoff and basecase boundary. std::vector boundary_sizes() { - std::vector v = {1, 2, 3, 4, 5, 8, 16, 31, 32, 33}; + std::vector v = {1, 2, 3, 4, 5, 8, 16, 31, 32, 33}; const std::size_t cutoffs[] = {detail::square_long_cutoff, detail::karatsuba_cutoff, detail::square_karatsuba_cutoff, @@ -264,10 +263,14 @@ TEST(DispatchContract, PowerOfTwoKernelWritesEveryLimb) { // Sliced shapes: a long operand against a short one at or above karatsuba_cutoff. TEST(DispatchContract, SlicedUnbalancedShapes) { - std::mt19937_64 rng{0x511ceu}; - const std::size_t kc = detail::karatsuba_cutoff; - const std::pair shapes[] = { - {kc, 3 * kc + 1}, {kc, 4 * kc + 3}, {kc + 5, 9 * kc}, {kc + 1, 2 * kc}, {2 * kc, 7 * kc + 2}, {kc - 1, 6 * kc}}; + std::mt19937_64 rng{0x511ceu}; + const std::size_t kc = detail::karatsuba_cutoff; + const std::pair shapes[] = {{kc, 3 * kc + 1}, + {kc, 4 * kc + 3}, + {kc + 5, 9 * kc}, + {kc + 1, 2 * kc}, + {2 * kc, 7 * kc + 2}, + {kc - 1, 6 * kc}}; for (const auto& [s, l] : shapes) { if (l > max_limbs) { continue; @@ -314,10 +317,11 @@ TEST(DispatchContract, UntrimmedOperands) { limbs_t dirty(total, poison); limbs_t clean(total, uint_t{0}); alloc_t alloc; - const std::size_t nd = detail::multiply_dispatch(span_t{dirty}, cspan_t{a}, cspan_t{b}, alloc); - const std::size_t nc = detail::multiply_dispatch(span_t{clean}, cspan_t{a}, cspan_t{b}, alloc); - EXPECT_EQ(nd, nc); - EXPECT_TRUE(std::equal(dirty.begin(), dirty.begin() + static_cast(trimmed_total), clean.begin())); + const std::size_t n_dirty = detail::multiply_dispatch(span_t{dirty}, cspan_t{a}, cspan_t{b}, alloc); + const std::size_t n_clean = detail::multiply_dispatch(span_t{clean}, cspan_t{a}, cspan_t{b}, alloc); + EXPECT_EQ(n_dirty, n_clean); + EXPECT_TRUE( + std::equal(dirty.begin(), dirty.begin() + static_cast(trimmed_total), clean.begin())); for (std::size_t i = trimmed_total; i < total; ++i) { EXPECT_EQ(dirty[i], poison) << "limb " << i << " past the trimmed product was written"; } @@ -340,8 +344,8 @@ void check_division(const std::size_t m, const std::size_t s, std::mt19937_64& r const std::size_t rn = m + 1; auto run_full = [&](const uint_t fill) { - limbs_t q(qn, fill); - limbs_t r(rn, fill); + limbs_t q(qn, fill); + limbs_t r(rn, fill); detail::scratch_allocator scratch(detail::divide_schoolbook_storage_size(m, s, false), alloc); detail::divide_dispatch(span_t{q}, span_t{r}, a, b, scratch, alloc); return std::pair{std::move(q), std::move(r)}; @@ -362,11 +366,11 @@ void check_division(const std::size_t m, const std::size_t s, std::mt19937_64& r // q * divisor + r == dividend, checked through the (already contract-tested) multiply_long. limbs_t prod(qn + s, uint_t{0}); - detail::multiply_long(span_t{prod}, cspan_t{qc.data(), detail::trimmed_size_span(cspan_t{qc})}, - b); + detail::multiply_long(span_t{prod}, cspan_t{qc.data(), detail::trimmed_size_span(cspan_t{qc})}, b); limbs_t sum(std::max(prod.size(), rd.size()) + 1, uint_t{0}); std::copy(prod.begin(), prod.end(), sum.begin()); - const bool carry = detail::add_unsigned_spans(span_t{sum}.first(sum.size() - 1), span_t{sum}.first(sum.size() - 1), + const bool carry = detail::add_unsigned_spans(span_t{sum}.first(sum.size() - 1), + span_t{sum}.first(sum.size() - 1), cspan_t{rd.data(), std::min(rd.size(), sum.size() - 1)}); EXPECT_FALSE(carry); for (std::size_t i = 0; i < sum.size(); ++i) { @@ -425,7 +429,7 @@ TEST(DispatchContract, DivideTakesSchoolbookMatchesGates) { (s >= detail::barrett_march8_cutoff && m / 8 >= s) || (m >= detail::barrett_quarter_cutoff && m / 4 >= s) || (m >= detail::barrett_balanced_cutoff && m - s >= s); - const bool bz = s >= detail::burnikel_ziegler_cutoff && m - s >= detail::burnikel_ziegler_offset; + const bool bz = s >= detail::burnikel_ziegler_cutoff && m - s >= detail::burnikel_ziegler_offset; EXPECT_EQ(detail::divide_takes_schoolbook(m, s), !barrett && !bz) << "m=" << m << " s=" << s; } } @@ -435,9 +439,9 @@ TEST(DispatchContract, DivideTakesSchoolbookMatchesGates) { TEST(DispatchContract, SchoolbookQuotientMayAliasDividend) { std::mt19937_64 rng{0xa11a5u}; for (const auto& [m, s] : {std::pair{8, 4}, {9, 2}, {20, 3}, {5, 5}, {33, 17}}) { - const limbs_t dividend = random_limbs(m, rng); - const limbs_t divisor = random_limbs(s, rng); - const std::size_t qn = m - s + 1; + const limbs_t dividend = random_limbs(m, rng); + const limbs_t divisor = random_limbs(s, rng); + const std::size_t qn = m - s + 1; alloc_t alloc; limbs_t q_ref(qn, uint_t{0}); @@ -451,7 +455,8 @@ TEST(DispatchContract, SchoolbookQuotientMayAliasDividend) { limbs_t r(m + 1, poison); { detail::scratch_allocator scratch(detail::divide_unsigned_storage_size(m, s), alloc); - detail::divide_unsigned(span_t{buf.data(), qn}, span_t{r}, cspan_t{buf.data(), m}, cspan_t{divisor}, scratch); + detail::divide_unsigned( + span_t{buf.data(), qn}, span_t{r}, cspan_t{buf.data(), m}, cspan_t{divisor}, scratch); } EXPECT_TRUE(std::equal(q_ref.begin(), q_ref.end(), buf.begin())) << "m=" << m << " s=" << s; EXPECT_EQ(r, r_ref) << "m=" << m << " s=" << s; @@ -481,7 +486,7 @@ constexpr bool constexpr_product_ok(const std::span a, const std:: } constexpr bool constexpr_cases() { - constexpr uint_t max = ~uint_t{0}; + constexpr uint_t max = ~uint_t{0}; const std::array one{7}; const std::array three{3}; const std::array wide{1, 2, 4}; diff --git a/tests/beman/big_int/muldiv_frontend.test.cpp b/tests/beman/big_int/muldiv_frontend.test.cpp new file mode 100644 index 00000000..71cc57c1 --- /dev/null +++ b/tests/beman/big_int/muldiv_frontend.test.cpp @@ -0,0 +1,480 @@ +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// SPDX-License-Identifier: BSL-1.0 + +// Front ends of multiplication and division (operator*, *=, /, %, /=, %=, div_rem_to_zero) against a +// limb-level reference: aliasing, results at and one past the inline capacity, every operand size from +// 0 to 20 limbs, shapes straddling the schoolbook / divide-and-conquer / Barrett gates, and constant +// evaluation of multi-limb products and divisions. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "testing.hpp" + +BEMAN_BIG_INT_BEGIN_NAMESPACE +namespace muldiv_frontend_test { + +using limb_t = uint_multiprecision_t; +using limbs_t = std::vector; + +inline constexpr std::size_t limb_bits = static_cast(std::numeric_limits::digits); + +// Random magnitude of exactly `n` limbs with a nonzero top limb; n == 0 gives the empty (zero) magnitude. +inline limbs_t random_mag(const std::size_t n, std::mt19937_64& rng) { + limbs_t v(n); + for (auto& x : v) { + x = static_cast(rng()); + } + if (n != 0 && v.back() == 0) { + v.back() = 1; + } + return v; +} + +template +T make(const limbs_t& mag, const bool neg) { + if (mag.empty()) { + return T{}; + } + static constexpr char digits[] = "0123456789abcdef"; + std::string s; + if (neg) { + s.push_back('-'); + } + for (std::size_t i = mag.size(); i-- > 0;) { + for (std::size_t d = limb_bits / 4; d-- > 0;) { + s.push_back(digits[(mag[i] >> (4 * d)) & 0xFU]); + } + } + T x; + const auto [p, ec] = from_chars(s.data(), s.data() + s.size(), x, 16); + EXPECT_TRUE(ec == std::errc{} && p == s.data() + s.size()); + return x; +} + +template +limbs_t mag_of(const T& x) { + const auto rep = x.representation(); + limbs_t v(rep.begin(), rep.end()); + while (!v.empty() && v.back() == 0) { + v.pop_back(); + } + return v; +} + +inline limbs_t ref_mul(const limbs_t& a, const limbs_t& b) { + if (a.empty() || b.empty()) { + return {}; + } + limbs_t r(a.size() + b.size(), limb_t{0}); + detail::multiply_long(std::span{r}, std::span{a}, std::span{b}); + while (!r.empty() && r.back() == 0) { + r.pop_back(); + } + return r; +} + +inline limbs_t ref_add(const limbs_t& a, const limbs_t& b) { + limbs_t r(std::max(a.size(), b.size()) + 1, limb_t{0}); + bool carry = false; + for (std::size_t i = 0; i < r.size(); ++i) { + const limb_t x = i < a.size() ? a[i] : limb_t{0}; + const limb_t y = i < b.size() ? b[i] : limb_t{0}; + const auto [sum, out] = detail::carrying_add(x, y, carry); + r[i] = sum; + carry = out; + } + while (!r.empty() && r.back() == 0) { + r.pop_back(); + } + return r; +} + +// -1, 0, 1 for |a| <=> |b|. +inline int ref_cmp(const limbs_t& a, const limbs_t& b) { + if (a.size() != b.size()) { + return a.size() < b.size() ? -1 : 1; + } + for (std::size_t i = a.size(); i-- > 0;) { + if (a[i] != b[i]) { + return a[i] < b[i] ? -1 : 1; + } + } + return 0; +} + +// True when every in-place limb past the limb count is zero (the invariant behind inplace_to_bit_uint). +template +bool tail_is_zero(const T& x) { + if (!is_inplace(x)) { + return true; + } + const auto* const limbs = x.representation().data(); + for (std::size_t i = x.representation().size(); i < T::inplace_capacity; ++i) { + if (limbs[i] != 0) { + return false; + } + } + return true; +} + +template +::testing::AssertionResult is_value(const T& x, const limbs_t& mag, const bool neg) { + if (mag_of(x) != mag) { + return ::testing::AssertionFailure() + << "magnitude differs (got " << mag_of(x).size() << " limbs, want " << mag.size() << ")"; + } + if ((x < 0) != (neg && !mag.empty())) { + return ::testing::AssertionFailure() << "sign differs"; + } + if (!is_normalized(x)) { + return ::testing::AssertionFailure() << "not normalized"; + } + if (!tail_is_zero(x)) { + return ::testing::AssertionFailure() << "stale inline tail"; + } + if (x != make(mag, neg)) { + return ::testing::AssertionFailure() << "operator== disagrees with the limbs"; + } + return ::testing::AssertionSuccess(); +} + +// Checks every multiplication form of a * b against the reference. +template +void check_multiply(const limbs_t& am, const bool an, const limbs_t& bm, const bool bn) { + const limbs_t pm = ref_mul(am, bm); + const bool neg = an != bn; + const T a = make(am, an); + const T b = make(bm, bn); + const T a0 = a; + const T b0 = b; + + EXPECT_TRUE(is_value(a * b, pm, neg)) << "a*b la=" << am.size() << " lb=" << bm.size(); + EXPECT_TRUE(is_value(T{a} * b, pm, neg)) << "rvalue a*b la=" << am.size() << " lb=" << bm.size(); + T c = a; + c *= b; + EXPECT_TRUE(is_value(c, pm, neg)) << "a*=b la=" << am.size() << " lb=" << bm.size(); + // Reuse a destination that already holds a different, possibly longer, value. + std::mt19937_64 rng{1}; + T d = make(random_mag(24, rng), true); + d = a; + d *= b; + EXPECT_TRUE(is_value(d, pm, neg)) << "reused a*=b la=" << am.size() << " lb=" << bm.size(); + EXPECT_EQ(a, a0); + EXPECT_EQ(b, b0); +} + +// Checks every division form of a / b, a % b and div_rem_to_zero against the reference identities. +template +void check_divide(const limbs_t& am, const bool an, const limbs_t& bm, const bool bn) { + ASSERT_FALSE(bm.empty()); + const T a = make(am, an); + const T b = make(bm, bn); + const T a0 = a; + const T b0 = b; + + const T q = a / b; + const T r = a % b; + + // |r| < |b|, sign(r) follows a, q * b + r == a. + const limbs_t qm = mag_of(q); + const limbs_t rm = mag_of(r); + EXPECT_LT(ref_cmp(rm, bm), 0) << "remainder not below divisor, la=" << am.size() << " lb=" << bm.size(); + EXPECT_EQ(ref_add(ref_mul(qm, bm), rm), am) << "q*b+r != a, la=" << am.size() << " lb=" << bm.size(); + EXPECT_TRUE(is_value(q, qm, an != bn)); + EXPECT_TRUE(is_value(r, rm, an)); + + const auto both = div_rem_to_zero(a, b); + EXPECT_EQ(both.quotient, q) << "div_rem_to_zero quotient, la=" << am.size() << " lb=" << bm.size(); + EXPECT_EQ(both.remainder, r) << "div_rem_to_zero remainder, la=" << am.size() << " lb=" << bm.size(); + EXPECT_TRUE(is_value(both.quotient, qm, an != bn)); + EXPECT_TRUE(is_value(both.remainder, rm, an)); + + T c = a; + c /= b; + EXPECT_TRUE(is_value(c, qm, an != bn)) << "a/=b la=" << am.size() << " lb=" << bm.size(); + T d = a; + d %= b; + EXPECT_TRUE(is_value(d, rm, an)) << "a%=b la=" << am.size() << " lb=" << bm.size(); + EXPECT_EQ(a, a0); + EXPECT_EQ(b, b0); +} + +template +void differential_all_sizes() { + std::mt19937_64 rng{0x6d756c64u}; + for (std::size_t la = 0; la <= 20; ++la) { + for (std::size_t lb = 0; lb <= 20; ++lb) { + const limbs_t am = random_mag(la, rng); + const limbs_t bm = random_mag(lb, rng); + for (const bool an : {false, true}) { + for (const bool bn : {false, true}) { + check_multiply(am, an, bm, bn); + if (lb != 0) { + check_divide(am, an, bm, bn); + } + } + } + } + } +} + +TEST(MulDivFrontend, DifferentialBigInt) { differential_all_sizes(); } +TEST(MulDivFrontend, DifferentialInline128) { differential_all_sizes>(); } +TEST(MulDivFrontend, DifferentialInline256) { differential_all_sizes>(); } + +// Divisor and dividend of related sizes: below, at, and above each gate of the dispatcher. +template +void gate_shapes() { + std::mt19937_64 rng{0x6761746u}; + std::vector> shapes; + const std::size_t bz = detail::burnikel_ziegler_cutoff; + const std::size_t off = detail::burnikel_ziegler_offset; + for (const std::size_t s : {std::size_t{2}, std::size_t{3}, bz - 1, bz, bz + 1}) { + for (const std::size_t m : {s, s + 1, s + off - 1, s + off, s + off + 1, 3 * s + 1}) { + shapes.emplace_back(m, s); + } + } + const std::size_t c = detail::barrett_march_cutoff; + for (const std::size_t s : {c - 1, c, c + 1}) { + for (const std::size_t m : {16 * s - 1, 16 * s, 16 * s + 5}) { + shapes.emplace_back(m, s); + } + } + for (const auto& [m, s] : shapes) { + const limbs_t am = random_mag(m, rng); + const limbs_t bm = random_mag(s, rng); + check_divide(am, false, bm, false); + check_divide(am, true, bm, false); + check_divide(am, false, bm, true); + check_multiply(am, false, bm, true); + } +} + +TEST(MulDivFrontend, GateShapesBigInt) { gate_shapes(); } +TEST(MulDivFrontend, GateShapesInline128) { gate_shapes>(); } + +// Products and quotients landing exactly at, and one limb past, the inline capacity. +template +void inline_capacity_edges() { + std::mt19937_64 rng{0xed6eu}; + constexpr std::size_t cap = T::inplace_capacity; + for (const std::size_t result_limbs : {cap - 1, cap, cap + 1, cap + 2}) { + if (result_limbs < 2) { + continue; + } + for (const bool full : {false, true}) { + // a (result_limbs - 1 limbs) * b (1 limb): all-ones forces a carry limb, a small b does not. + limbs_t am = random_mag(result_limbs - 1, rng); + limbs_t bm = {full ? ~limb_t{0} : limb_t{3}}; + if (full) { + std::ranges::fill(am, ~limb_t{0}); + } + check_multiply(am, false, bm, false); + check_multiply(bm, true, am, false); + // And the matching division (multi-limb divisor too). + const limbs_t big = random_mag(result_limbs + 1, rng); + check_divide(big, false, bm, false); + check_divide(big, true, am.size() >= 2 ? am : random_mag(2, rng), false); + } + } +} + +TEST(MulDivFrontend, InlineCapacityEdgesBigInt) { inline_capacity_edges(); } +TEST(MulDivFrontend, InlineCapacityEdges128) { inline_capacity_edges>(); } +TEST(MulDivFrontend, InlineCapacityEdges256) { inline_capacity_edges>(); } + +// Aliasing: the destination is also an operand, and divisors that are copies of the dividend. +template +void aliasing() { + std::mt19937_64 rng{0xa11a5u}; + for (const std::size_t n : {std::size_t{1}, + std::size_t{2}, + std::size_t{3}, + std::size_t{9}, + std::size_t{20}, + std::size_t{80}, + std::size_t{300}}) { + for (const bool neg : {false, true}) { + const limbs_t am = random_mag(n, rng); + const limbs_t bm = random_mag(n / 2 + 1, rng); + const limbs_t sqm = ref_mul(am, am); + const limbs_t pm = ref_mul(am, bm); + + T a = make(am, neg); + const T b = make(bm, false); + a = a * b; + EXPECT_TRUE(is_value(a, pm, neg)) << "a = a * b, n=" << n; + + a = make(am, neg); + a = b * a; + EXPECT_TRUE(is_value(a, pm, neg)) << "a = b * a, n=" << n; + + a = make(am, neg); + a *= a; + EXPECT_TRUE(is_value(a, sqm, false)) << "a *= a, n=" << n; + + a = make(am, neg); + a = a * a; + EXPECT_TRUE(is_value(a, sqm, false)) << "a = a * a, n=" << n; + + a = make(am, neg); + a *= b; + EXPECT_TRUE(is_value(a, pm, neg)) << "a *= b, n=" << n; + + a = make(am, neg); + a /= a; + EXPECT_TRUE(is_value(a, limbs_t{1}, false)) << "a /= a, n=" << n; + + a = make(am, neg); + a %= a; + EXPECT_TRUE(is_value(a, limbs_t{}, false)) << "a %= a, n=" << n; + + a = make(am, neg); + const T copy = a; + a /= copy; + EXPECT_TRUE(is_value(a, limbs_t{1}, false)) << "a /= copy of a, n=" << n; + + a = make(am, neg); + a %= copy; + EXPECT_TRUE(is_value(a, limbs_t{}, false)) << "a %= copy of a, n=" << n; + + a = make(am, neg); + a = a / a; + EXPECT_TRUE(is_value(a, limbs_t{1}, false)) << "a = a / a, n=" << n; + + a = make(am, neg); + a = a % a; + EXPECT_TRUE(is_value(a, limbs_t{}, false)) << "a = a % a, n=" << n; + + // a = a / b and a = a % b through the destination. + const auto both = div_rem_to_zero(make(am, neg), b); + a = make(am, neg); + a = a / b; + EXPECT_EQ(a, both.quotient) << "a = a / b, n=" << n; + a = make(am, neg); + a = a % b; + EXPECT_EQ(a, both.remainder) << "a = a % b, n=" << n; + a = make(am, neg); + a /= b; + EXPECT_EQ(a, both.quotient) << "a /= b, n=" << n; + a = make(am, neg); + a %= b; + EXPECT_EQ(a, both.remainder) << "a %= b, n=" << n; + } + } +} + +TEST(MulDivFrontend, AliasingBigInt) { aliasing(); } +TEST(MulDivFrontend, AliasingInline128) { aliasing>(); } + +// Compound ops against built-in integers, one-limb and two-limb. +TEST(MulDivFrontend, CompoundWithIntegers) { + std::mt19937_64 rng{0x1417u}; + for (const std::size_t n : {std::size_t{1}, std::size_t{2}, std::size_t{7}, std::size_t{40}}) { + const limbs_t am = random_mag(n, rng); + for (const std::int64_t v : + {std::int64_t{3}, std::int64_t{-7}, std::int64_t{1} << 40, std::numeric_limits::max()}) { + const limbs_t vm = { + static_cast(v < 0 ? -static_cast(v) : static_cast(v))}; + big_int a = make(am, false); + a *= v; + EXPECT_TRUE(is_value(a, ref_mul(am, vm), v < 0)) << "a *= int, n=" << n; + a = make(am, false); + a /= v; + EXPECT_EQ(a, make(am, false) / make(vm, v < 0)); + a = make(am, false); + a %= v; + EXPECT_EQ(a, make(am, false) % make(vm, v < 0)); + } + } +} + +// Constant evaluation of multi-limb products and divisions. +consteval bool constexpr_multi_limb() { + big_int a = (big_int{1} << 200) + 12345; + big_int b = (big_int{1} << 70) + 3; + + big_int q = a / b; + big_int r = a % b; + if (q * b + r != a || r >= b || r < 0) { + return false; + } + const auto both = div_rem_to_zero(a, b); + if (both.quotient != q || both.remainder != r) { + return false; + } + + big_int c = a; + c *= b; + if (c != a * b || c / b != a || c % b != 0) { + return false; + } + c = a; + c /= b; + if (c != q) { + return false; + } + c = a; + c %= b; + if (c != r) { + return false; + } + c = a; + c *= c; + if (c != a * a) { + return false; + } + c = a; + c /= c; + if (c != 1) { + return false; + } + c = a; + c %= c; + if (c != 0) { + return false; + } + c = -a; + c *= 3; + if (c != -(a * 3)) { + return false; + } + c = a * 5; + c /= 5; + c %= (big_int{1} << 100); + return c == a % (big_int{1} << 100); +} + +static_assert(constexpr_multi_limb()); + +consteval bool constexpr_inline_variants() { + basic_big_int<256> a = (basic_big_int<256>{1} << 300) + 77; + basic_big_int<256> b = (basic_big_int<256>{1} << 130) + 5; + auto c = a; + c *= b; + if (c != a * b || c / b != a || c % b != 0) { + return false; + } + c = a; + c /= b; + return c == a / b; +} + +static_assert(constexpr_inline_variants()); + +} // namespace muldiv_frontend_test +BEMAN_BIG_INT_END_NAMESPACE From 48f090ae63fb84fdd4ad33b297cf96395542db5e Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:36:50 -0400 Subject: [PATCH 12/36] dispatch_contract test: avoid useless casts and a GCC array-bounds false positive --- tests/beman/big_int/dispatch_contract.test.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/beman/big_int/dispatch_contract.test.cpp b/tests/beman/big_int/dispatch_contract.test.cpp index 0bde0fd1..739c2ed1 100644 --- a/tests/beman/big_int/dispatch_contract.test.cpp +++ b/tests/beman/big_int/dispatch_contract.test.cpp @@ -35,8 +35,8 @@ using limbs_t = std::vector; using cspan_t = std::span; using span_t = std::span; -constexpr uint_t poison = static_cast(0xA5A5A5A5A5A5A5A5ULL); -constexpr uint_t guard_value = static_cast(0x5A5A5A5A5A5A5A5AULL); +constexpr uint_t poison = ~uint_t{0} / 255 * 0xA5; +constexpr uint_t guard_value = ~uint_t{0} / 255 * 0x5A; constexpr std::size_t guard_limbs = 3; constexpr std::size_t limb_bits = std::numeric_limits::digits; constexpr std::size_t max_ref_work = 4'000'000; @@ -213,7 +213,9 @@ TEST(DispatchContract, SingleLimbOperands) { const limbs_t small(1, uint_t{3}); const limbs_t carry(1, ~uint_t{0}); limbs_t low_top = a; - low_top.back() = 1; + if (!low_top.empty()) { + low_top.back() = 1; + } check_all_entry_points(low_top, small, false); check_all_entry_points(small, low_top, false); check_all_entry_points(a, carry, false); From 7e9640af890c5be9571b8fb1a79069563c1fa7c5 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:44:30 -0400 Subject: [PATCH 13/36] Format front_end_shift.test.cpp --- tests/beman/big_int/front_end_shift.test.cpp | 51 ++++++++++++-------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/tests/beman/big_int/front_end_shift.test.cpp b/tests/beman/big_int/front_end_shift.test.cpp index 554abcec..bbc9baaa 100644 --- a/tests/beman/big_int/front_end_shift.test.cpp +++ b/tests/beman/big_int/front_end_shift.test.cpp @@ -24,9 +24,9 @@ namespace front_end_test { template void check_shifts(const ref& a, const std::size_t s) { - const T ta = make(a); - const ref shl = ref_shl(a, s); - const ref shr = ref_shr(a, s); + const T ta = make(a); + const ref shl = ref_shl(a, s); + const ref shr = ref_shr(a, s); SCOPED_TRACE("a=" + hex(a) + " s=" + std::to_string(s)); EXPECT_TRUE(matches(ta << s, shl)); @@ -54,7 +54,7 @@ void check_shifts(const ref& a, const std::size_t s) { template void shift_sweep() { - std::mt19937_64 rng(1357); + std::mt19937_64 rng(1357); const std::size_t cap = T::inplace_capacity; for (const std::size_t n : sizes_for(cap)) { if (n > 8 && n != cap && n != cap + 1) { @@ -62,10 +62,23 @@ void shift_sweep() { } for (unsigned p = 0; p < 6; ++p) { for (const bool neg : {false, true}) { - const ref a = gen(rng, n, p, neg); - std::vector shifts = {0, 1, W - 1, W, W + 1, 2 * W, - 2 * W + 13, 3 * W - 1, n * W - 1, n * W, n * W + 1, n * W + 5, - cap * W, cap * W + 13, (cap + 1) * W, (cap + 2) * W + 1}; + const ref a = gen(rng, n, p, neg); + std::vector shifts = {0, + 1, + W - 1, + W, + W + 1, + 2 * W, + 2 * W + 13, + 3 * W - 1, + n * W - 1, + n * W, + n * W + 1, + n * W + 5, + cap * W, + cap * W + 13, + (cap + 1) * W, + (cap + 2) * W + 1}; for (const std::size_t s : shifts) { if (s > 100000) { continue; // n == 0 underflow of n * W - 1 @@ -82,7 +95,7 @@ template void small_exhaustive() { for (long long x = -70; x <= 70; ++x) { for (unsigned s = 0; s <= 130; ++s) { - const T tx{x}; + const T tx{x}; long long expect_r = x >> std::min(s, 62U); EXPECT_EQ(tx >> s, expect_r) << x << " >> " << s; T c = tx; @@ -131,7 +144,7 @@ void shift_aliasing() { const ref a = gen(rng, n, p, neg); SCOPED_TRACE("a=" + hex(a)); T x = make(a); - x = x << 0; + x = x << 0; EXPECT_TRUE(matches(x, a)) << "x = x << 0"; x = make(a); x = x >> 0; @@ -209,18 +222,18 @@ namespace fe = BEMAN_BIG_INT_NAMESPACE::front_end_test; CASE(Inline128, bb::basic_big_int<128>) \ CASE(Inline256, bb::basic_big_int<256>) -#define FRONT_END_TEST(SUFFIX, TYPE) \ - TEST(FrontEndShift##SUFFIX, Sweep) { fe::shift_sweep(); } \ - TEST(FrontEndShift##SUFFIX, Aliasing) { fe::shift_aliasing(); } \ - TEST(FrontEndShift##SUFFIX, SmallExhaustive) { fe::small_exhaustive(); } \ +#define FRONT_END_TEST(SUFFIX, TYPE) \ + TEST(FrontEndShift##SUFFIX, Sweep) { fe::shift_sweep(); } \ + TEST(FrontEndShift##SUFFIX, Aliasing) { fe::shift_aliasing(); } \ + TEST(FrontEndShift##SUFFIX, SmallExhaustive) { fe::small_exhaustive(); } \ TEST(FrontEndShift##SUFFIX, LeftShiftExactSizing) { fe::left_shift_exact_sizing(); } FRONT_END_TYPES(FRONT_END_TEST) -#define FRONT_END_STATIC(TYPE) \ - static_assert(fe::cx_shift(1)); \ - static_assert(fe::cx_shift(2)); \ - static_assert(fe::cx_shift(TYPE::inplace_capacity)); \ - static_assert(fe::cx_shift(TYPE::inplace_capacity + 1)); \ +#define FRONT_END_STATIC(TYPE) \ + static_assert(fe::cx_shift(1)); \ + static_assert(fe::cx_shift(2)); \ + static_assert(fe::cx_shift(TYPE::inplace_capacity)); \ + static_assert(fe::cx_shift(TYPE::inplace_capacity + 1)); \ static_assert(fe::cx_shift(TYPE::inplace_capacity + 3)) FRONT_END_STATIC(bb::big_int); FRONT_END_STATIC(bb::basic_big_int<128>); From 59b811c180de31bb043ac2e1168b8d9a0ab08d3f Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:46:07 -0400 Subject: [PATCH 14/36] Avoid a same-type cast in the debug poison fill of storage_for_overwrite --- include/beman/big_int/basic_big_int.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/beman/big_int/basic_big_int.hpp b/include/beman/big_int/basic_big_int.hpp index 6f16f2a3..784d4fce 100644 --- a/include/beman/big_int/basic_big_int.hpp +++ b/include/beman/big_int/basic_big_int.hpp @@ -3435,7 +3435,7 @@ constexpr auto basic_big_int::storage_for_overwrite(const size_type n) const alloc_result allocation = alloc_limbs(new_cap); if BEMAN_BIG_INT_IS_NOT_CONSTEVAL { #ifndef NDEBUG - std::uninitialized_fill_n(allocation.ptr, allocation.count, static_cast(0xDEADBEEFDEADBEEFULL)); + std::uninitialized_fill_n(allocation.ptr, allocation.count, limb_type{~limb_type{0} / 0xFF * 0xA5}); #endif } else { for (size_type i = 0; i < allocation.count; ++i) { From f1fe822cdb90635ce5334b038d4f45ea1af2d70e Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 13:26:04 -0400 Subject: [PATCH 15/36] Silence -Wpadded on the front-end test reference struct --- tests/beman/big_int/front_end_reference.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/beman/big_int/front_end_reference.hpp b/tests/beman/big_int/front_end_reference.hpp index 0b43aa53..fdc2f140 100644 --- a/tests/beman/big_int/front_end_reference.hpp +++ b/tests/beman/big_int/front_end_reference.hpp @@ -39,10 +39,13 @@ constexpr limb to_limb(const U v) noexcept { inline constexpr unsigned W = static_cast(std::numeric_limits::digits); // Sign and trimmed little-endian magnitude (empty for zero). +BEMAN_BIG_INT_DIAGNOSTIC_PUSH() +BEMAN_BIG_INT_DIAGNOSTIC_IGNORED_GCC("-Wpadded") struct ref { bool neg = false; std::vector mag; }; +BEMAN_BIG_INT_DIAGNOSTIC_POP() inline void trim(std::vector& v) { while (!v.empty() && v.back() == 0) { From 98c2c74699c19f0da7b7ba967f94b53cd457bb20 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 13:27:12 -0400 Subject: [PATCH 16/36] Make the front-end, mul/div and allocation tests independent of the limb width --- tests/beman/big_int/allocation.test.cpp | 15 ++++++++++----- tests/beman/big_int/front_end_add_sub.test.cpp | 17 ++--------------- tests/beman/big_int/front_end_reference.hpp | 13 +++++++++++++ tests/beman/big_int/muldiv_frontend.test.cpp | 16 ++++++++++++++-- 4 files changed, 39 insertions(+), 22 deletions(-) diff --git a/tests/beman/big_int/allocation.test.cpp b/tests/beman/big_int/allocation.test.cpp index 54a2cd80..570f6603 100644 --- a/tests/beman/big_int/allocation.test.cpp +++ b/tests/beman/big_int/allocation.test.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: BSL-1.0 #include +#include #include #include #include @@ -922,6 +923,10 @@ TEST(Allocation, SelfAssignment) { } // ----- operator= storage reuse ----- +// Limbs in 2^64, whatever the limb width. +constexpr std::size_t two_pow_64_limbs = + 64U / static_cast(std::numeric_limits::digits) + 1U; + // The shared `assign_value` helper keeps the destination's allocation if its // effective capacity already fits the source. These tests verify the fast path // by checking that the destination's data pointer does not change. @@ -934,12 +939,12 @@ TEST(Allocation, CopyAssignReusesDstStorage) { const BEMAN_BIG_INT_NAMESPACE::big_int src = BEMAN_BIG_INT_NAMESPACE::big_int{0xFFFFFFFFFFFFFFFFU} + BEMAN_BIG_INT_NAMESPACE::big_int{1}; - ASSERT_EQ(src.representation().size(), 2U); // heap, 2 limbs -- fits in dst's capacity + ASSERT_EQ(src.representation().size(), two_pow_64_limbs); // heap -- fits in dst's capacity dst = src; EXPECT_EQ(dst.representation().data(), dst_data); // no reallocation EXPECT_EQ(dst.representation_capacity(), dst_cap); - ASSERT_EQ(dst.representation().size(), 2U); + ASSERT_EQ(dst.representation().size(), two_pow_64_limbs); EXPECT_EQ(dst, src); } @@ -952,7 +957,7 @@ TEST(Allocation, MoveAssignStealsHeapSrcEvenWhenDstLarger) { BEMAN_BIG_INT_NAMESPACE::big_int src = BEMAN_BIG_INT_NAMESPACE::big_int{0xFFFFFFFFFFFFFFFFU} + BEMAN_BIG_INT_NAMESPACE::big_int{1}; - ASSERT_EQ(src.representation().size(), 2U); + ASSERT_EQ(src.representation().size(), two_pow_64_limbs); const auto* const src_data = src.representation().data(); const auto src_cap = src.representation_capacity(); ASSERT_LT(src_cap, dst_cap); // dst has more capacity than src @@ -960,7 +965,7 @@ TEST(Allocation, MoveAssignStealsHeapSrcEvenWhenDstLarger) { dst = std::move(src); EXPECT_EQ(dst.representation().data(), src_data); EXPECT_EQ(dst.representation_capacity(), src_cap); - ASSERT_EQ(dst.representation().size(), 2U); + ASSERT_EQ(dst.representation().size(), two_pow_64_limbs); EXPECT_TRUE(is_inplace(src)); EXPECT_EQ(src, 0U); } @@ -1011,7 +1016,7 @@ TEST(Allocation, CopyAssignAllocatesWhenDstTooSmall) { ASSERT_FALSE(is_inplace(src)); dst = src; - ASSERT_EQ(dst.representation().size(), 2U); + ASSERT_EQ(dst.representation().size(), two_pow_64_limbs); EXPECT_FALSE(is_inplace(dst)); EXPECT_NE(dst.representation().data(), src.representation().data()); EXPECT_EQ(dst, src); diff --git a/tests/beman/big_int/front_end_add_sub.test.cpp b/tests/beman/big_int/front_end_add_sub.test.cpp index 5aeeb53d..70baa673 100644 --- a/tests/beman/big_int/front_end_add_sub.test.cpp +++ b/tests/beman/big_int/front_end_add_sub.test.cpp @@ -68,21 +68,8 @@ void check_add_sub(const ref& a, const ref& b) { template void check_integer_forms(const ref& a, long long v, unsigned long long u) { const T ta = make(a); - const ref rv = [&] { - ref r; - r.neg = v < 0; - if (v != 0) { - r.mag = {to_limb(v < 0 ? 0 - static_cast(v) : static_cast(v))}; - } - return r; - }(); - const ref ru = [&] { - ref r; - if (u != 0) { - r.mag = {to_limb(u)}; - } - return r; - }(); + const ref rv = from_u64(v < 0 ? 0 - static_cast(v) : static_cast(v), v < 0); + const ref ru = from_u64(u, false); SCOPED_TRACE("a=" + hex(a) + " v=" + std::to_string(v)); EXPECT_TRUE(matches(ta + v, ref_add(a, rv))); EXPECT_TRUE(matches(v + ta, ref_add(rv, a))); diff --git a/tests/beman/big_int/front_end_reference.hpp b/tests/beman/big_int/front_end_reference.hpp index fdc2f140..995c545f 100644 --- a/tests/beman/big_int/front_end_reference.hpp +++ b/tests/beman/big_int/front_end_reference.hpp @@ -47,6 +47,19 @@ struct ref { }; BEMAN_BIG_INT_DIAGNOSTIC_POP() +inline void trim(std::vector& v); + +// The magnitude of a 64-bit value split into limbs of any width. +inline ref from_u64(const unsigned long long m, const bool neg) { + ref r; + for (unsigned sh = 0; sh < 64; sh += W) { + r.mag.push_back(to_limb(m >> sh)); + } + trim(r.mag); + r.neg = neg && !r.mag.empty(); + return r; +} + inline void trim(std::vector& v) { while (!v.empty() && v.back() == 0) { v.pop_back(); diff --git a/tests/beman/big_int/muldiv_frontend.test.cpp b/tests/beman/big_int/muldiv_frontend.test.cpp index 71cc57c1..14620f6f 100644 --- a/tests/beman/big_int/muldiv_frontend.test.cpp +++ b/tests/beman/big_int/muldiv_frontend.test.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -388,8 +389,19 @@ TEST(MulDivFrontend, CompoundWithIntegers) { const limbs_t am = random_mag(n, rng); for (const std::int64_t v : {std::int64_t{3}, std::int64_t{-7}, std::int64_t{1} << 40, std::numeric_limits::max()}) { - const limbs_t vm = { - static_cast(v < 0 ? -static_cast(v) : static_cast(v))}; + // The 64-bit magnitude split into limbs of whatever width the build uses. + const std::uint64_t vmag = v < 0 ? -static_cast(v) : static_cast(v); + limbs_t vm; + for (std::size_t sh = 0; sh < 64; sh += limb_bits) { + if constexpr (std::is_same_v) { + vm.push_back(vmag >> sh); + } else { + vm.push_back(static_cast(vmag >> sh)); + } + } + while (vm.size() > 1 && vm.back() == 0) { + vm.pop_back(); + } big_int a = make(am, false); a *= v; EXPECT_TRUE(is_value(a, ref_mul(am, vm), v < 0)) << "a *= int, n=" << n; From 06248d6b631420c0133421353b6ea28f88aa5862 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 13:27:59 -0400 Subject: [PATCH 17/36] Use the simple carry loop in add_n_tail/sub_n_tail on GCC --- include/beman/big_int/detail/span_ops.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/beman/big_int/detail/span_ops.hpp b/include/beman/big_int/detail/span_ops.hpp index 6d8f41d7..5604471a 100644 --- a/include/beman/big_int/detail/span_ops.hpp +++ b/include/beman/big_int/detail/span_ops.hpp @@ -1158,6 +1158,8 @@ struct subsystem_signs { const std::size_t total = a.size(); bool carry = false; std::size_t i = 0; +#if !defined(__GNUC__) || defined(__clang__) + // GCC re-materializes the carry flag per limb in an unrolled chain and runs the one-limb loop below faster. for (; i + 4 <= common; i += 4) { const auto [v0, c0] = carrying_add(a[i + 0], b[i + 0], carry); const auto [v1, c1] = carrying_add(a[i + 1], b[i + 1], c0); @@ -1169,6 +1171,7 @@ struct subsystem_signs { dst[i + 3] = v3; carry = c3; } +#endif for (; i < common; ++i) { const auto [v, c] = carrying_add(a[i], b[i], carry); dst[i] = v; @@ -1198,6 +1201,7 @@ struct subsystem_signs { const std::size_t total = a.size(); bool borrow = false; std::size_t i = 0; +#if !defined(__GNUC__) || defined(__clang__) for (; i + 4 <= common; i += 4) { const auto [v0, b0] = borrowing_sub(a[i + 0], b[i + 0], borrow); const auto [v1, b1] = borrowing_sub(a[i + 1], b[i + 1], b0); @@ -1209,6 +1213,7 @@ struct subsystem_signs { dst[i + 3] = v3; borrow = b3; } +#endif for (; i < common; ++i) { const auto [v, br] = borrowing_sub(a[i], b[i], borrow); dst[i] = v; From 57970c48f435de176254fdcf8f14dae1621a0915 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 13:29:38 -0400 Subject: [PATCH 18/36] Use shift_left_n/shift_right_n for in-place pure bit shifts --- include/beman/big_int/basic_big_int.hpp | 26 ++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/include/beman/big_int/basic_big_int.hpp b/include/beman/big_int/basic_big_int.hpp index 784d4fce..3e7eb9b1 100644 --- a/include/beman/big_int/basic_big_int.hpp +++ b/include/beman/big_int/basic_big_int.hpp @@ -1372,15 +1372,21 @@ constexpr void basic_big_int::shift_left(const shift_type s) { grow(new_n); limb_type* const limbs = limb_ptr(); - if (bits != 0) { - const limb_type out = detail::lshift_copy(limbs + whole, limbs, n, bits); - if (extra) { - limbs[n + whole] = out; - } + if (whole == 0) { + // A pure bit shift in place: the existing kernel is the fastest single pass. + [[maybe_unused]] const auto size = detail::shift_left_n({limbs, new_n}, n, bits); + BEMAN_BIG_INT_DEBUG_ASSERT(size == new_n); } else { - std::copy_backward(limbs, limbs + n, limbs + n + whole); + if (bits != 0) { + const limb_type out = detail::lshift_copy(limbs + whole, limbs, n, bits); + if (extra) { + limbs[n + whole] = out; + } + } else { + std::copy_backward(limbs, limbs + n, limbs + n + whole); + } + std::fill_n(limbs, whole, limb_type{0}); } - std::fill_n(limbs, whole, limb_type{0}); unchecked_set_limb_count(static_cast(new_n)); } @@ -1417,9 +1423,11 @@ constexpr void basic_big_int::shift_right(const shift_type s) { } const size_type new_n = n - whole; - if (bits != 0) { + if (whole == 0) { + inexact |= detail::shift_right_n({limbs, n}, bits) != 0; + } else if (bits != 0) { inexact |= detail::rshift_copy(limbs, limbs + whole, new_n, bits) != 0; - } else if (whole != 0) { + } else { std::copy(limbs + whole, limbs + n, limbs); } From fc183c918b01165fff1b4ced818bcc191e2f1d98 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 13:29:38 -0400 Subject: [PATCH 19/36] Fast path for single-limb add/sub in add_in_place and add_into, with tests --- include/beman/big_int/basic_big_int.hpp | 44 ++++++++++++++++++ .../beman/big_int/front_end_add_sub.test.cpp | 45 +++++++++++++++++++ 2 files changed, 89 insertions(+) diff --git a/include/beman/big_int/basic_big_int.hpp b/include/beman/big_int/basic_big_int.hpp index 3e7eb9b1..5262ce06 100644 --- a/include/beman/big_int/basic_big_int.hpp +++ b/include/beman/big_int/basic_big_int.hpp @@ -2382,6 +2382,27 @@ basic_big_int::add_in_place(const std::span y ? x - y : y - x; + m_size_and_sign = (static_cast(x > y ? this_neg : other_neg) << 31) | 1U; + } + return; + } + if (this_neg == other_neg) { // Same sign: the magnitude grows, the sign stays. if (m <= n) { @@ -2458,6 +2479,29 @@ constexpr void basic_big_int::add_into(const std::span(a_neg) << 31) | (carry ? 2U : 1U); + } else if (x == y) { + set_zero(); + return; + } else { + storage_for_overwrite(1)[0] = x > y ? x - y : y - x; + m_size_and_sign = (static_cast(x > y ? a_neg : b_neg) << 31) | 1U; + } + clear_inline_tail(old_count); + return; + } + const std::size_t old_count = limb_count(); const std::size_t big = a.size(); const std::size_t cap = is_representation_inplace() ? inplace_capacity : m_capacity; diff --git a/tests/beman/big_int/front_end_add_sub.test.cpp b/tests/beman/big_int/front_end_add_sub.test.cpp index 70baa673..e089926f 100644 --- a/tests/beman/big_int/front_end_add_sub.test.cpp +++ b/tests/beman/big_int/front_end_add_sub.test.cpp @@ -191,6 +191,32 @@ void wide_integer_operands() { #endif } +// Every sign combination of one-limb operands at the edges of the limb range: carry out of the single limb, +// borrow, cancellation to zero, and results that change the limb count. +template +void single_limb_sweep() { + const limb ones = std::numeric_limits::max(); + const limb half = limb{1} << (W - 1); + const limb mags[] = {0, 1, 2, 3, half - 1, half, half + 1, ones - 1, ones}; + for (const limb ma : mags) { + for (const limb mb : mags) { + for (unsigned signs = 0; signs < 4; ++signs) { + ref a; + ref b; + if (ma != 0) { + a.mag = {ma}; + a.neg = (signs & 1U) != 0; + } + if (mb != 0) { + b.mag = {mb}; + b.neg = (signs & 2U) != 0; + } + check_add_sub(a, b); + } + } + } +} + template void aliasing() { std::mt19937_64 rng(97531); @@ -275,6 +301,22 @@ constexpr bool cx_add_sub(unsigned k) { return g == (T{1} << (k + 1)) - 1; } +template +constexpr bool cx_single_limb() { + const limb ones = std::numeric_limits::max(); + const T m{ones}; + T two_w{1}; + two_w <<= W; + T c = m; + c += m; // carry out of the single limb, in place + T d = m; + d -= 5; + T e = -m; + e -= m; + return m + 1 == two_w && m + m == c && 1 + m == two_w && (T{0} - m) == -m && (m - m) == 0 && + (m - m).representation().size() == 1 && c - m == m && d + 5 == m && -m + m == 0 && e == -c && -m - 1 == -two_w; +} + } // namespace front_end_test BEMAN_BIG_INT_END_NAMESPACE @@ -287,6 +329,7 @@ namespace fe = BEMAN_BIG_INT_NAMESPACE::front_end_test; #define FRONT_END_TEST(SUFFIX, TYPE) \ TEST(FrontEndAddSub##SUFFIX, Sweep) { fe::add_sub_sweep(); } \ + TEST(FrontEndAddSub##SUFFIX, SingleLimb) { fe::single_limb_sweep(); } \ TEST(FrontEndAddSub##SUFFIX, Ripple) { fe::add_sub_ripple(); } \ TEST(FrontEndAddSub##SUFFIX, IntegerOperands) { fe::integer_sweep(); } \ TEST(FrontEndAddSub##SUFFIX, WideIntegerOperands) { fe::wide_integer_operands(); } \ @@ -302,3 +345,5 @@ FRONT_END_TYPES(FRONT_END_TEST) FRONT_END_STATIC(bb::big_int); FRONT_END_STATIC(bb::basic_big_int<128>); FRONT_END_STATIC(bb::basic_big_int<256>); +static_assert(fe::cx_single_limb()); +static_assert(fe::cx_single_limb>()); From 61ed134ac2f9591af1c629f1279e763f7554998c Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 13:30:45 -0400 Subject: [PATCH 20/36] Format front-end tests and drop useless casts in muldiv_frontend test --- tests/beman/big_int/front_end_add_sub.test.cpp | 12 +++++++----- tests/beman/big_int/muldiv_frontend.test.cpp | 18 ++++++++++++------ 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/tests/beman/big_int/front_end_add_sub.test.cpp b/tests/beman/big_int/front_end_add_sub.test.cpp index e089926f..ca765286 100644 --- a/tests/beman/big_int/front_end_add_sub.test.cpp +++ b/tests/beman/big_int/front_end_add_sub.test.cpp @@ -68,7 +68,8 @@ void check_add_sub(const ref& a, const ref& b) { template void check_integer_forms(const ref& a, long long v, unsigned long long u) { const T ta = make(a); - const ref rv = from_u64(v < 0 ? 0 - static_cast(v) : static_cast(v), v < 0); + const ref rv = + from_u64(v < 0 ? 0 - static_cast(v) : static_cast(v), v < 0); const ref ru = from_u64(u, false); SCOPED_TRACE("a=" + hex(a) + " v=" + std::to_string(v)); EXPECT_TRUE(matches(ta + v, ref_add(a, rv))); @@ -195,8 +196,8 @@ void wide_integer_operands() { // borrow, cancellation to zero, and results that change the limb count. template void single_limb_sweep() { - const limb ones = std::numeric_limits::max(); - const limb half = limb{1} << (W - 1); + const limb ones = std::numeric_limits::max(); + const limb half = limb{1} << (W - 1); const limb mags[] = {0, 1, 2, 3, half - 1, half, half + 1, ones - 1, ones}; for (const limb ma : mags) { for (const limb mb : mags) { @@ -314,7 +315,8 @@ constexpr bool cx_single_limb() { T e = -m; e -= m; return m + 1 == two_w && m + m == c && 1 + m == two_w && (T{0} - m) == -m && (m - m) == 0 && - (m - m).representation().size() == 1 && c - m == m && d + 5 == m && -m + m == 0 && e == -c && -m - 1 == -two_w; + (m - m).representation().size() == 1 && c - m == m && d + 5 == m && -m + m == 0 && e == -c && + -m - 1 == -two_w; } } // namespace front_end_test @@ -329,7 +331,7 @@ namespace fe = BEMAN_BIG_INT_NAMESPACE::front_end_test; #define FRONT_END_TEST(SUFFIX, TYPE) \ TEST(FrontEndAddSub##SUFFIX, Sweep) { fe::add_sub_sweep(); } \ - TEST(FrontEndAddSub##SUFFIX, SingleLimb) { fe::single_limb_sweep(); } \ + TEST(FrontEndAddSub##SUFFIX, SingleLimb) { fe::single_limb_sweep(); } \ TEST(FrontEndAddSub##SUFFIX, Ripple) { fe::add_sub_ripple(); } \ TEST(FrontEndAddSub##SUFFIX, IntegerOperands) { fe::integer_sweep(); } \ TEST(FrontEndAddSub##SUFFIX, WideIntegerOperands) { fe::wide_integer_operands(); } \ diff --git a/tests/beman/big_int/muldiv_frontend.test.cpp b/tests/beman/big_int/muldiv_frontend.test.cpp index 14620f6f..82b6763f 100644 --- a/tests/beman/big_int/muldiv_frontend.test.cpp +++ b/tests/beman/big_int/muldiv_frontend.test.cpp @@ -31,13 +31,23 @@ namespace muldiv_frontend_test { using limb_t = uint_multiprecision_t; using limbs_t = std::vector; +// Converts without a cast when the types already agree (-Wuseless-cast), and with one otherwise. +template +constexpr limb_t to_limb(const U v) noexcept { + if constexpr (std::is_same_v) { + return v; + } else { + return static_cast(v); + } +} + inline constexpr std::size_t limb_bits = static_cast(std::numeric_limits::digits); // Random magnitude of exactly `n` limbs with a nonzero top limb; n == 0 gives the empty (zero) magnitude. inline limbs_t random_mag(const std::size_t n, std::mt19937_64& rng) { limbs_t v(n); for (auto& x : v) { - x = static_cast(rng()); + x = to_limb(rng()); } if (n != 0 && v.back() == 0) { v.back() = 1; @@ -393,11 +403,7 @@ TEST(MulDivFrontend, CompoundWithIntegers) { const std::uint64_t vmag = v < 0 ? -static_cast(v) : static_cast(v); limbs_t vm; for (std::size_t sh = 0; sh < 64; sh += limb_bits) { - if constexpr (std::is_same_v) { - vm.push_back(vmag >> sh); - } else { - vm.push_back(static_cast(vmag >> sh)); - } + vm.push_back(to_limb(vmag >> sh)); } while (vm.size() > 1 && vm.back() == 0) { vm.pop_back(); From 5718449143db8bb503aa63b6eb7a27612142e8ef Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 13:37:29 -0400 Subject: [PATCH 21/36] Keep the mul-add product in registers in mul_add_single_limb_in_place (GCC spilled the widening_mul pair) --- include/beman/big_int/detail/span_ops.hpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/beman/big_int/detail/span_ops.hpp b/include/beman/big_int/detail/span_ops.hpp index 5604471a..d598ec5e 100644 --- a/include/beman/big_int/detail/span_ops.hpp +++ b/include/beman/big_int/detail/span_ops.hpp @@ -708,12 +708,23 @@ constexpr std::size_t multiply_single_limb(const std::span; + for (std::size_t i = 0; i < size; ++i) { + const wide_type product = static_cast(s[i]) * mul + carry; + s[i] = static_cast(product); + carry = static_cast(product >> width_v); + } +#else for (std::size_t i = 0; i < size; ++i) { const auto [lo, hi] = widening_mul(s[i], mul); const uint_multiprecision_t next = lo + carry; carry = hi + static_cast(next < lo); s[i] = next; } +#endif if (carry == 0) { return size; } From a40f970caad949b6ae11760a45286c053de1f99e Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 14:21:24 -0400 Subject: [PATCH 22/36] In-place shifts go back to lshift_copy/rshift_copy; register-carried shift loops under GCC Reverts 2f9150b: routing whole-limb-free in-place shifts to shift_left_n/shift_right_n slowed them on AArch64/clang by 15-50%. GCC reloads src[i - 1] in the two-load loop form when dst may alias src, so under GCC the copying shifts carry it in a register; clang keeps the two-load form, which it compiles better. --- include/beman/big_int/basic_big_int.hpp | 26 +++++++----------- include/beman/big_int/detail/span_ops.hpp | 33 ++++++++++++++++++++--- 2 files changed, 38 insertions(+), 21 deletions(-) diff --git a/include/beman/big_int/basic_big_int.hpp b/include/beman/big_int/basic_big_int.hpp index 5262ce06..dfe02346 100644 --- a/include/beman/big_int/basic_big_int.hpp +++ b/include/beman/big_int/basic_big_int.hpp @@ -1372,21 +1372,15 @@ constexpr void basic_big_int::shift_left(const shift_type s) { grow(new_n); limb_type* const limbs = limb_ptr(); - if (whole == 0) { - // A pure bit shift in place: the existing kernel is the fastest single pass. - [[maybe_unused]] const auto size = detail::shift_left_n({limbs, new_n}, n, bits); - BEMAN_BIG_INT_DEBUG_ASSERT(size == new_n); - } else { - if (bits != 0) { - const limb_type out = detail::lshift_copy(limbs + whole, limbs, n, bits); - if (extra) { - limbs[n + whole] = out; - } - } else { - std::copy_backward(limbs, limbs + n, limbs + n + whole); + if (bits != 0) { + const limb_type out = detail::lshift_copy(limbs + whole, limbs, n, bits); + if (extra) { + limbs[n + whole] = out; } - std::fill_n(limbs, whole, limb_type{0}); + } else { + std::copy_backward(limbs, limbs + n, limbs + n + whole); } + std::fill_n(limbs, whole, limb_type{0}); unchecked_set_limb_count(static_cast(new_n)); } @@ -1423,11 +1417,9 @@ constexpr void basic_big_int::shift_right(const shift_type s) { } const size_type new_n = n - whole; - if (whole == 0) { - inexact |= detail::shift_right_n({limbs, n}, bits) != 0; - } else if (bits != 0) { + if (bits != 0) { inexact |= detail::rshift_copy(limbs, limbs + whole, new_n, bits) != 0; - } else { + } else if (whole != 0) { std::copy(limbs + whole, limbs + n, limbs); } diff --git a/include/beman/big_int/detail/span_ops.hpp b/include/beman/big_int/detail/span_ops.hpp index d598ec5e..5254b6aa 100644 --- a/include/beman/big_int/detail/span_ops.hpp +++ b/include/beman/big_int/detail/span_ops.hpp @@ -1256,12 +1256,25 @@ constexpr uint_multiprecision_t lshift_copy(uint_multiprecision_t* const d if (n == 0) { return 0; } - const unsigned back = limb_bits - bits; - const uint_multiprecision_t out = src[n - 1] >> back; + const unsigned back = limb_bits - bits; +#if defined(__GNUC__) && !defined(__clang__) + // GCC reloads src[i - 1] each iteration when dst may alias src; carry it in a register. + // Clang compiles the two-load form below better. + uint_multiprecision_t hi = src[n - 1]; + const uint_multiprecision_t out = hi >> back; + for (std::size_t i = n - 1; i > 0; --i) { + const uint_multiprecision_t lo = src[i - 1]; + dst[i] = (hi << bits) | (lo >> back); + hi = lo; + } + dst[0] = hi << bits; +#else + const uint_multiprecision_t out = src[n - 1] >> back; for (std::size_t i = n - 1; i > 0; --i) { dst[i] = (src[i] << bits) | (src[i - 1] >> back); } dst[0] = src[0] << bits; +#endif return out; } @@ -1277,12 +1290,24 @@ constexpr uint_multiprecision_t rshift_copy(uint_multiprecision_t* const d if (n == 0) { return 0; } - const unsigned back = limb_bits - bits; - const uint_multiprecision_t out = src[0] << back; + const unsigned back = limb_bits - bits; +#if defined(__GNUC__) && !defined(__clang__) + // See lshift_copy. + uint_multiprecision_t lo = src[0]; + const uint_multiprecision_t out = lo << back; + for (std::size_t i = 0; i + 1 < n; ++i) { + const uint_multiprecision_t hi = src[i + 1]; + dst[i] = (lo >> bits) | (hi << back); + lo = hi; + } + dst[n - 1] = lo >> bits; +#else + const uint_multiprecision_t out = src[0] << back; for (std::size_t i = 0; i + 1 < n; ++i) { dst[i] = (src[i] >> bits) | (src[i + 1] << back); } dst[n - 1] = src[n - 1] >> bits; +#endif return out; } From 533f11580d50c209043538d428b0b6742670a969 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:09:57 -0400 Subject: [PATCH 23/36] Add floor and vecsort rows, inline-bits option and allocation-count tests for the item 1 baseline shape_sweep: sweep_int = basic_big_int (CMake cache option, default 64) behind every timed row, printed with its sizeof in the #const line; a floor row (kernel plus one allocate/deallocate pair of the result size) for add, sub, shl, shr, mul, sqr and divrem; a vecsort op (copy + sort + sum of 100000 one-limb values, ns per element, with builtin and copy rows). gap_sweep.sh, selftest.sh and summarize.py know the new rows (auto - floor and inplace - kernel columns). Tests: move the stateful counting_allocator into util/util_counting_allocator.hpp and add alloc_count.test.cpp (steady-state allocations per call for the counting allocator, pmr default resource and basic_big_int<256>); cases that exceed their target at cf1cf54 are skipped behind item1_pending. --- tests/beman/big_int/alloc_count.test.cpp | 427 ++++++++++++ tests/beman/big_int/perf/CMakeLists.txt | 12 +- tests/beman/big_int/perf/shape_sweep.cpp | 638 ++++++++++++------ tests/beman/big_int/perf/tools/gap_sweep.sh | 22 +- tests/beman/big_int/perf/tools/selftest.sh | 3 +- tests/beman/big_int/perf/tools/summarize.py | 23 +- tests/beman/big_int/scratch_heap.test.cpp | 35 +- .../big_int/util/util_counting_allocator.hpp | 70 ++ 8 files changed, 985 insertions(+), 245 deletions(-) create mode 100644 tests/beman/big_int/alloc_count.test.cpp create mode 100644 tests/beman/big_int/util/util_counting_allocator.hpp diff --git a/tests/beman/big_int/alloc_count.test.cpp b/tests/beman/big_int/alloc_count.test.cpp new file mode 100644 index 00000000..aa6a1bdb --- /dev/null +++ b/tests/beman/big_int/alloc_count.test.cpp @@ -0,0 +1,427 @@ +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// SPDX-License-Identifier: BSL-1.0 + +// Steady-state heap allocations per operation. Every case runs one warm-up call (so destinations reach their working +// capacity), then K calls, and reports the allocator traffic per call. Three environments: +// counting basic_big_int<64, limb, counting_allocator> (stateful allocator, util_counting_allocator.hpp) +// pmr pmr::big_int with a counting memory_resource installed through std::pmr::set_default_resource, so +// results (which take select_on_container_copy_construction of an operand allocator) land on it +// wide256 basic_big_int<256, limb, counting_allocator> (inline capacity of 4 64-bit limbs) +// The measured counts are printed to stdout as "[alloc_count] ...". The expectations below are the item 1 targets +// (see the front-end cost plan); cases that exceed their target at the baseline (cf1cf54) are marked pending and skipped +// while `item1_pending` is true. Drop the constant (and the baseline columns) when the library changes land. +// +// Baseline counts measured at cf1cf54 (allocations per call, K = 64 after one warm-up call; `want` is the target the +// case asserts; the cases whose baseline exceeds `want` are the pending ones): +// +// case want counting pmr wide256 +// ---------------------------------------------------------------------------- +// c = a + b (16x16) 1 1 1 1 +// c = a - b (16x16) 1 1 1 1 +// c += b; c -= b (16x16) 0 0 0 0 +// c = a << 13 (16 limbs) 1 1 1 1 +// c = a >> 13 (16 limbs) 1 1 1 1 +// c <<= 13; c >>= 13 (16 limbs) 0 0 0 0 +// c = a * b (8x8) 1 1 1 1 +// c = a; c *= b (8x8 -> 16) 0 1 1 1 +// c = a; c *= 7 (8 limbs) 0 1 1 1 +// c = a / b (8x4) 1 2 2 2 +// c = a % b (8x4) 1 2 2 2 +// div_rem_to_zero (8x4) <= 2 5 5 4 +// c = a / b (2x1) 0 (>= 2 inline) 1 1 0 +// c = a; c /= b (8x4) [stretch] 0 3 3 2 +// c = a; c %= b (8x4) [stretch] 0 2 2 2 +// from_chars 2000 digits (reserved) <= 2 2 2 2 +// +// pending at the baseline: every row with a baseline above `want` (the compound `*=`, `/=` and `%=`, `a / b`, `a % b` +// and div_rem_to_zero). The add/sub/shift/mul rows already meet their target: the item 1 gain there is in the copy and +// zero-fill work, not the allocation count. + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include "util/util_counting_allocator.hpp" + +namespace { + +using BEMAN_BIG_INT_NAMESPACE::basic_big_int; +using BEMAN_BIG_INT_NAMESPACE::div_rem_to_zero; +using BEMAN_BIG_INT_NAMESPACE::from_chars; +using BEMAN_BIG_INT_NAMESPACE::uint_multiprecision_t; +using BEMAN_BIG_INT_NAMESPACE::test_util::counting_allocator; +using BEMAN_BIG_INT_NAMESPACE::test_util::counting_state; + +using limb = uint_multiprecision_t; + +// Cases that exceed their target at the baseline are skipped while this is true. +constexpr bool item1_pending = true; + +constexpr int calls = 64; // K + +std::vector random_limbs(const std::size_t n, std::uint64_t seed) { + std::vector v(n); + for (auto& x : v) { + seed ^= seed << 13U; + seed ^= seed >> 7U; + seed ^= seed << 17U; + x = static_cast(seed); + } + if (v.back() == 0) { + v.back() = 1; + } + return v; +} + +// ----- environments ----- + +struct counting_env { + static constexpr const char* name = "counting"; + static constexpr std::size_t index = 0; + + using int_t = basic_big_int<64, limb, counting_allocator>; + + counting_state state; + counting_allocator alloc{&state}; + + [[nodiscard]] int_t empty() { return int_t(alloc); } + [[nodiscard]] int_t make(const std::vector& v) { return int_t(v.begin(), v.end(), alloc); } + [[nodiscard]] std::size_t count() const { return state.total_allocations; } +}; + +struct wide256_env { + static constexpr const char* name = "wide256"; + static constexpr std::size_t index = 2; + + using int_t = basic_big_int<256, limb, counting_allocator>; + + counting_state state; + counting_allocator alloc{&state}; + + [[nodiscard]] int_t empty() { return int_t(alloc); } + [[nodiscard]] int_t make(const std::vector& v) { return int_t(v.begin(), v.end(), alloc); } + [[nodiscard]] std::size_t count() const { return state.total_allocations; } +}; + +class counting_resource final : public std::pmr::memory_resource { + public: + [[nodiscard]] std::size_t allocations() const noexcept { return m_allocs; } + + private: + [[nodiscard]] void* do_allocate(const std::size_t bytes, const std::size_t align) override { + ++m_allocs; + return std::pmr::new_delete_resource()->allocate(bytes, align); + } + void do_deallocate(void* p, const std::size_t bytes, const std::size_t align) override { + std::pmr::new_delete_resource()->deallocate(p, bytes, align); + } + [[nodiscard]] bool do_is_equal(const std::pmr::memory_resource& other) const noexcept override { + return this == &other; + } + + std::size_t m_allocs{0}; +}; + +struct pmr_env { + static constexpr const char* name = "pmr"; + static constexpr std::size_t index = 1; + + using int_t = BEMAN_BIG_INT_NAMESPACE::pmr::big_int; + + counting_resource resource; + std::pmr::memory_resource* previous; + + pmr_env() : previous(std::pmr::set_default_resource(&resource)) {} + ~pmr_env() { std::pmr::set_default_resource(previous); } + pmr_env(const pmr_env&) = delete; + pmr_env& operator=(const pmr_env&) = delete; + + [[nodiscard]] int_t empty() { return int_t(); } + [[nodiscard]] int_t make(const std::vector& v) { return int_t(v.begin(), v.end()); } + [[nodiscard]] std::size_t count() const { return resource.allocations(); } +}; + +// One warm-up call, then `k` calls; returns allocations per call. +template +double steady_allocs(Env& env, F&& f, const int k = calls) { + f(); + const std::size_t before = env.count(); + for (int i = 0; i < k; ++i) { + f(); + } + return static_cast(env.count() - before) / static_cast(k); +} + +// Baseline (cf1cf54) count per environment, in the order counting, pmr, wide256. +using baseline_counts = std::array; + +} // namespace + +// Prints the measurement; fails when it exceeds `want`, or skips when the case is known to exceed it at the baseline +// and the item 1 changes are still pending. +#define ALLOC_EXPECT(Env, case_name, measured, want, baseline) \ + do { \ + const double alloc_measured_ = (measured); \ + const double alloc_want_ = (want); \ + const double alloc_base_ = (baseline)[Env::index]; \ + std::printf("[alloc_count] %-8s %-34s measured=%6.3f want<=%5.2f baseline=%6.3f\n", \ + Env::name, \ + case_name, \ + alloc_measured_, \ + alloc_want_, \ + alloc_base_); \ + if (alloc_measured_ > alloc_want_ && item1_pending && alloc_base_ > alloc_want_) { \ + GTEST_SKIP() << "item 1 pending: " << case_name << " measures " << alloc_measured_ << ", want <= " \ + << alloc_want_; \ + } \ + EXPECT_LE(alloc_measured_, alloc_want_) << case_name; \ + } while (false) + +namespace { + +template +class AllocCount : public ::testing::Test {}; + +using envs = ::testing::Types; +TYPED_TEST_SUITE(AllocCount, envs); + +// Baseline columns are filled from the baseline run (see the table at the top of the file). + +// ----- add and subtract ----- + +TYPED_TEST(AllocCount, AddHeapResult) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(16, 1)); + const int_t b = env.make(random_limbs(16, 2)); + int_t c = env.empty(); + const double n = steady_allocs(env, [&] { c = a + b; }); + EXPECT_TRUE(c - b == a); + ALLOC_EXPECT(TypeParam, "c = a + b (16x16)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); +} + +TYPED_TEST(AllocCount, SubHeapResult) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(16, 3)); + const int_t b = env.make(random_limbs(16, 4)); + int_t c = env.empty(); + const double n = steady_allocs(env, [&] { c = a - b; }); + EXPECT_TRUE(c + b == a); + ALLOC_EXPECT(TypeParam, "c = a - b (16x16)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); +} + +TYPED_TEST(AllocCount, AddSubInPlaceWithCapacity) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(16, 5)); + const int_t b = env.make(random_limbs(16, 6)); + int_t c = a; + const double n = steady_allocs(env, [&] { + c += b; + c -= b; + }); + EXPECT_TRUE(c == a); + ALLOC_EXPECT(TypeParam, "c += b; c -= b (16x16)", n, 0.0, (baseline_counts{0.0, 0.0, 0.0})); +} + +// ----- shifts ----- + +TYPED_TEST(AllocCount, ShiftLeftHeapResult) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(16, 7)); + int_t c = env.empty(); + const double n = steady_allocs(env, [&] { c = a << 13; }); + EXPECT_TRUE((c >> 13) == a); + ALLOC_EXPECT(TypeParam, "c = a << 13 (16 limbs)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); +} + +TYPED_TEST(AllocCount, ShiftRightHeapResult) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(16, 8)); + int_t c = env.empty(); + const double n = steady_allocs(env, [&] { c = a >> 13; }); + EXPECT_TRUE((c << 13) <= a); + ALLOC_EXPECT(TypeParam, "c = a >> 13 (16 limbs)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); +} + +TYPED_TEST(AllocCount, ShiftInPlaceWithCapacity) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(16, 9)); + int_t c = a; + const double n = steady_allocs(env, [&] { + c <<= 13; + c >>= 13; + }); + EXPECT_TRUE(c == a); + ALLOC_EXPECT(TypeParam, "c <<= 13; c >>= 13 (16 limbs)", n, 0.0, (baseline_counts{0.0, 0.0, 0.0})); +} + +// ----- multiply ----- + +TYPED_TEST(AllocCount, MultiplyHeapResult) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 10)); + const int_t b = env.make(random_limbs(8, 11)); + int_t c = env.empty(); + const double n = steady_allocs(env, [&] { c = a * b; }); + EXPECT_TRUE(c / b == a); + ALLOC_EXPECT(TypeParam, "c = a * b (8x8)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); +} + +// c is restored from a inside the timed call (a copy into existing capacity), so the pair is steady. +TYPED_TEST(AllocCount, MultiplyInPlaceByBigInt) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 12)); + const int_t b = env.make(random_limbs(8, 13)); + int_t c = env.empty(); + const double n = steady_allocs(env, [&] { + c = a; + c *= b; + }); + EXPECT_TRUE(c == a * b); + ALLOC_EXPECT(TypeParam, "c = a; c *= b (8x8 -> 16)", n, 0.0, (baseline_counts{1.0, 1.0, 1.0})); +} + +TYPED_TEST(AllocCount, MultiplyInPlaceBySmall) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 14)); + int_t c = env.empty(); + const double n = steady_allocs(env, [&] { + c = a; + c *= 7; + }); + EXPECT_TRUE(c == a * 7); + ALLOC_EXPECT(TypeParam, "c = a; c *= 7 (8 limbs)", n, 0.0, (baseline_counts{1.0, 1.0, 1.0})); +} + +// ----- divide ----- + +TYPED_TEST(AllocCount, DivideHeapResult) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 15)); + const int_t b = env.make(random_limbs(4, 16)); + int_t c = env.empty(); + const double n = steady_allocs(env, [&] { c = a / b; }); + EXPECT_TRUE(c * b + a % b == a); + ALLOC_EXPECT(TypeParam, "c = a / b (8x4)", n, 1.0, (baseline_counts{2.0, 2.0, 2.0})); +} + +TYPED_TEST(AllocCount, RemainderHeapResult) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 17)); + const int_t b = env.make(random_limbs(4, 18)); + int_t c = env.empty(); + const double n = steady_allocs(env, [&] { c = a % b; }); + EXPECT_TRUE(a / b * b + c == a); + ALLOC_EXPECT(TypeParam, "c = a % b (8x4)", n, 1.0, (baseline_counts{2.0, 2.0, 2.0})); +} + +TYPED_TEST(AllocCount, DivRemToZero) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 19)); + const int_t b = env.make(random_limbs(4, 20)); + bool ok = true; + const double n = steady_allocs(env, [&] { + const auto qr = div_rem_to_zero(a, b); + ok = ok && qr.quotient * b + qr.remainder == a; + }); + EXPECT_TRUE(ok); + ALLOC_EXPECT(TypeParam, "div_rem_to_zero (8x4)", n, 2.0, (baseline_counts{5.0, 5.0, 4.0})); +} + +// A two-limb dividend over a one-limb divisor, quotient two limbs: it fits inline only when the inline capacity is at +// least two limbs, so the case applies to wide256 only. +TYPED_TEST(AllocCount, DivideTwoByOneQuotientInline) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(std::vector{random_limbs(1, 21)[0], ~limb{0}}); + const int_t b = env.make(std::vector{limb{0x123456789ULL}}); + int_t c = env.empty(); + const double n = steady_allocs(env, [&] { c = a / b; }); + EXPECT_TRUE(c * b + a % b == a); + if (int_t::inplace_capacity < 2) { + std::printf("[alloc_count] %-8s %-34s measured=%6.3f (inline capacity %zu: quotient needs the heap, n/a)\n", + TypeParam::name, + "c = a / b (2x1)", + n, + static_cast(int_t::inplace_capacity)); + GTEST_SKIP() << "the 2-limb quotient only fits inline at inline capacity >= 2"; + } + ALLOC_EXPECT(TypeParam, "c = a / b (2x1, inline q)", n, 0.0, (baseline_counts{1.0, 1.0, 0.0})); +} + +// Stretch: in the schoolbook band the quotient could be built in the object's own limbs. +TYPED_TEST(AllocCount, DivideInPlace) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 22)); + const int_t b = env.make(random_limbs(4, 23)); + int_t c = env.empty(); + const double n = steady_allocs(env, [&] { + c = a; + c /= b; + }); + EXPECT_TRUE(c == a / b); + ALLOC_EXPECT(TypeParam, "c = a; c /= b (8x4) [stretch]", n, 0.0, (baseline_counts{3.0, 3.0, 2.0})); +} + +TYPED_TEST(AllocCount, RemainderInPlace) { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 24)); + const int_t b = env.make(random_limbs(4, 25)); + int_t c = env.empty(); + const double n = steady_allocs(env, [&] { + c = a; + c %= b; + }); + EXPECT_TRUE(c == a % b); + ALLOC_EXPECT(TypeParam, "c = a; c %= b (8x4) [stretch]", n, 0.0, (baseline_counts{2.0, 2.0, 2.0})); +} + +// ----- decimal from_chars ----- + +TYPED_TEST(AllocCount, FromCharsDecimalIntoReserved) { + TypeParam env; + using int_t = typename TypeParam::int_t; + std::string digits(2000, '0'); + for (std::size_t i = 0; i < digits.size(); ++i) { + digits[i] = static_cast('0' + (i * 7 + 3) % 10); + } + digits[0] = '9'; + int_t c = env.empty(); + c.reserve(2000 * 3 + 800); // 2000 decimal digits are about 6644 bits + std::errc ec = std::errc{}; + const double n = steady_allocs( + env, + [&] { + const auto r = from_chars(digits.data(), digits.data() + digits.size(), c); + ec = r.ec; + }, + 16); + EXPECT_EQ(ec, std::errc{}); + // The value must be 2000 decimal digits long. + EXPECT_GT(c.size(), 6600u); + ALLOC_EXPECT(TypeParam, "from_chars 2000 digits (reserved)", n, 2.0, (baseline_counts{2.0, 2.0, 2.0})); +} + +} // namespace diff --git a/tests/beman/big_int/perf/CMakeLists.txt b/tests/beman/big_int/perf/CMakeLists.txt index f69a7e76..fc6cf585 100644 --- a/tests/beman/big_int/perf/CMakeLists.txt +++ b/tests/beman/big_int/perf/CMakeLists.txt @@ -10,6 +10,14 @@ option( OFF ) +# Inline capacity (bits) of the big integer type behind every timed row: sweep_int = basic_big_int. 64 is +# big_int; the item 1 inline-capacity study builds 128, 256 and 512 as well. +set(BEMAN_BIG_INT_SWEEP_INLINE_BITS + 64 + CACHE STRING + "Inline bits of the integer type timed by shape_sweep. Default: 64 (big_int). Values: { 64, 128, 256, 512 }." +) + add_executable(beman.big_int.benchmarks.shape_sweep shape_sweep.cpp) target_link_libraries( beman.big_int.benchmarks.shape_sweep @@ -33,7 +41,9 @@ file( ) target_compile_definitions( beman.big_int.benchmarks.shape_sweep - PRIVATE BEMAN_BIG_INT_SWEEP_VIA_CMAKE + PRIVATE + BEMAN_BIG_INT_SWEEP_VIA_CMAKE + BEMAN_BIG_INT_SWEEP_INLINE_BITS=${BEMAN_BIG_INT_SWEEP_INLINE_BITS} ) target_include_directories( beman.big_int.benchmarks.shape_sweep diff --git a/tests/beman/big_int/perf/shape_sweep.cpp b/tests/beman/big_int/perf/shape_sweep.cpp index 7e830e9f..3f2b1588 100644 --- a/tests/beman/big_int/perf/shape_sweep.cpp +++ b/tests/beman/big_int/perf/shape_sweep.cpp @@ -14,6 +14,11 @@ // shl shr NxS: N limbs shifted by S bits // mul AxB sqr N or NxN div rem divrem dividend x divisor // tochars NxBASE fromchars NxBASE (the decimal-or-other string of a random N-limb value) +// vecsort NxL N one-limb values (L = 1) in a vector: copy + sort + sum, ns per element (see +// run_vecsort) +// +// Every row that uses the library integer type uses sweep_int = basic_big_int +// (default 64, that is big_int); the #const line prints sweep_inline_bits and sweep_int_sizeof. // // Rows (CSV column 'path'; default 'auto'; rows of one shape run back to back): // auto the public big_int API into a pre-existing destination (c = a + b, ...) @@ -22,6 +27,10 @@ // ladder // (unsliced) and shares its timings with --rows unsliced. Kernels that work in place (shifts, gcd, tochars // and gmp's get_str/gcd/set_str inputs) include the copy-in of their operands in the timed loop. +// floor add sub shl shr mul sqr divrem: the kernel row plus one std::allocator allocate/deallocate pair of the +// result +// size (quotient and remainder for divrem), the API floor of `c = a op b`. No pair is charged for a result +// that fits the inline capacity of the integer type under test. // kernelip shl/shr only: in-place pair shl then shr on one buffer, halved, no copy-in // gmp GMP mpn on preallocated buffers (needs -DBEMAN_BIG_INT_SWEEP_GMP, 64-bit limbs, -lgmp) // gmpz GMP mpz with the destination reused, operands loaded with mpz_import @@ -129,6 +138,13 @@ namespace dt = ::BEMAN_BIG_INT_NAMESPACE::detail; using limb_t = bb::uint_multiprecision_t; using u64 = std::uint64_t; +// The big integer type behind every timed row (auto, inplace, floor, vecsort, ...). The default 64 inline bits is +// bb::big_int; -DBEMAN_BIG_INT_SWEEP_INLINE_BITS=128/256/512 is the inline-capacity study. +#if !defined(BEMAN_BIG_INT_SWEEP_INLINE_BITS) + #define BEMAN_BIG_INT_SWEEP_INLINE_BITS 64 +#endif +using sweep_int = bb::basic_big_int; + constexpr unsigned limb_bits = std::numeric_limits::digits; // Residue primes below 2^31, so every product fits a u64 on any host. @@ -285,6 +301,8 @@ std::string const_line() { kv(s, "SIMD_MUL", 0); #endif kv(s, "limb_bits", limb_bits); + kv(s, "sweep_inline_bits", BEMAN_BIG_INT_SWEEP_INLINE_BITS); + kv(s, "sweep_int_sizeof", sizeof(sweep_int)); #if defined(NDEBUG) kv(s, "ndebug", 1); #else @@ -368,7 +386,7 @@ u64 residue(const std::span x, const u64 p) { return r; } -bb::big_int make_big(const std::vector& v) { return bb::big_int(v.begin(), v.end()); } +sweep_int make_big(const std::vector& v) { return sweep_int(v.begin(), v.end()); } [[noreturn]] void fail(const std::string& msg) { std::fprintf(stderr, "shape_sweep: FAIL: %s\n", msg.c_str()); @@ -506,9 +524,9 @@ void check_division(const char* what, const std::size_t lb, const std::span a, const std::span b, - const bb::big_int& q, - const bb::big_int& r, - const bb::big_int& divisor) { + const sweep_int& q, + const sweep_int& r, + const sweep_int& divisor) { for (const u64 p : {prime_a, prime_b}) { const u64 lhs = (mulmod(residue(q.representation(), p), residue(b, p), p) + residue(r.representation(), p)) % p; @@ -613,6 +631,51 @@ void time_row(const options& opt, print_row(opt, name, la, lb, t); } +// The API floor of `c = a op b`: the kernel plus one std::allocator allocate/deallocate pair of the result size (two +// pairs, held together, for divrem: quotient and remainder). It is what `c = a op b` costs once the front end is free. +// A result that fits the inline capacity of sweep_int needs no heap block, so no pair is charged for it. On = false +// compiles to nothing, so the kernel rows are unchanged. +template +class api_floor { + public: + explicit api_floor([[maybe_unused]] const std::size_t n1, [[maybe_unused]] const std::size_t n2 = 0) { + if constexpr (On) { + std::allocator alloc; + m_n1 = n1 > sweep_int::inplace_capacity ? n1 : 0; + m_n2 = n2 > sweep_int::inplace_capacity ? n2 : 0; + if (m_n1 != 0) { + m_p1 = alloc.allocate(m_n1); + escape(m_p1); + } + if (m_n2 != 0) { + m_p2 = alloc.allocate(m_n2); + escape(m_p2); + } + } + } + ~api_floor() { + if constexpr (On) { + std::allocator alloc; + if (m_n2 != 0) { + escape(m_p2); + alloc.deallocate(m_p2, m_n2); + } + if (m_n1 != 0) { + escape(m_p1); + alloc.deallocate(m_p1, m_n1); + } + } + } + api_floor(const api_floor&) = delete; + api_floor& operator=(const api_floor&) = delete; + + private: + limb_t* m_p1{nullptr}; + limb_t* m_p2{nullptr}; + std::size_t m_n1{0}; + std::size_t m_n2{0}; +}; + #if defined(BEMAN_BIG_INT_SWEEP_GMP) // GMP mpz operand/destination with the limbs readable through the hand-declared struct. struct zint { @@ -650,14 +713,14 @@ void run_mul(const options& opt, const std::size_t la, const std::size_t lb) { for (const auto& row : opt.rows) { if (row == "auto") { - const bb::big_int a = make_big(va); - const bb::big_int b = make_big(vb); + const sweep_int a = make_big(va); + const sweep_int b = make_big(vb); { - const bb::big_int c = a * b; + const sweep_int c = a * b; check_product("mul", la, lb, va, vb, c.representation()); } - bb::big_int c; - auto work = [&] { + sweep_int c; + auto work = [&] { c = a * b; escape(&c); escape(c.representation().data()); @@ -665,17 +728,18 @@ void run_mul(const options& opt, const std::size_t la, const std::size_t lb) { const timing t = measure(work, opt); check_product("mul (last timed product)", la, lb, va, vb, c.representation()); print_row(opt, "auto", la, lb, t); - } else if (row == "sliced" || row == "unsliced" || row == "kernel") { - const std::string path = row == "kernel" ? "unsliced" : row; + } else if (row == "sliced" || row == "unsliced" || row == "kernel" || row == "floor") { + const bool is_kernel = row == "kernel" || row == "floor"; + const std::string path = is_kernel ? "unsliced" : row; if (la < 2 || lb < 2) { - if (row == "kernel") { + if (is_kernel) { skip_row(opt, row, "the tier ladder needs both operands of at least 2 limbs"); continue; } usage_error("--path " + row + " needs both operands of at least 2 limbs"); } #if !defined(BEMAN_BIG_INT_HAS_SHAPE_DISPATCH) - if (row == "kernel") { + if (is_kernel) { skip_row(opt, row, "needs BEMAN_BIG_INT_HAS_SHAPE_DISPATCH"); continue; } @@ -684,25 +748,34 @@ void run_mul(const options& opt, const std::size_t la, const std::size_t lb) { std::allocator alloc; const dt::scratch_allocator> hooks(alloc); std::vector result(la + lb); - std::size_t n = 0; - auto work = [&] { - std::ranges::fill(result, limb_t{0}); - n = fn(result, va, vb, hooks.heap()); - escape(&n); - escape(result.data()); - }; - const auto verify = [&](const char* what) { - check_product(what, la, lb, va, vb, result); - if (n != trimmed_size(result)) { - fail(path + " returned size " + std::to_string(n) + " but the trimmed size is " + - std::to_string(trimmed_size(result)) + " at " + sh); - } + std::size_t n = 0; + const auto go = [&](const auto floor_tag) { + constexpr bool floor_on = decltype(floor_tag)::value; + auto work = [&] { + const api_floor pair(la + lb); + std::ranges::fill(result, limb_t{0}); + n = fn(result, va, vb, hooks.heap()); + escape(&n); + escape(result.data()); + }; + const auto verify = [&](const char* what) { + check_product(what, la, lb, va, vb, result); + if (n != trimmed_size(result)) { + fail(path + " returned size " + std::to_string(n) + " but the trimmed size is " + + std::to_string(trimmed_size(result)) + " at " + sh); + } + }; + work(); + verify(path.c_str()); + const timing t = measure(work, opt); + verify((path + " (last timed product)").c_str()); + print_row(opt, row.c_str(), la, lb, t); }; - work(); - verify(path.c_str()); - const timing t = measure(work, opt); - verify((path + " (last timed product)").c_str()); - print_row(opt, row.c_str(), la, lb, t); + if (row == "floor") { + go(std::true_type{}); + } else { + go(std::false_type{}); + } } else if (row == "fft") { if constexpr (limb_bits != 64) { usage_error("--path fft needs 64-bit limbs"); @@ -775,13 +848,13 @@ void run_sqr(const options& opt, const std::size_t n) { for (const auto& row : opt.rows) { if (row == "auto") { - const bb::big_int a = make_big(va); + const sweep_int a = make_big(va); { - const bb::big_int c = a * a; // same object on both sides selects the squaring path + const sweep_int c = a * a; // same object on both sides selects the squaring path check_product("sqr", n, n, va, va, c.representation()); } - bb::big_int c; - auto work = [&] { + sweep_int c; + auto work = [&] { c = a * a; escape(&c); escape(c.representation().data()); @@ -789,7 +862,7 @@ void run_sqr(const options& opt, const std::size_t n) { const timing t = measure(work, opt); check_product("sqr (last timed product)", n, n, va, va, c.representation()); print_row(opt, "auto", n, n, t); - } else if (row == "kernel") { + } else if (row == "kernel" || row == "floor") { if (n < 2) { skip_row(opt, row, "the squaring ladder needs at least 2 limbs"); continue; @@ -799,23 +872,32 @@ void run_sqr(const options& opt, const std::size_t n) { const dt::scratch_allocator> hooks(alloc); std::vector result(2 * n); std::size_t size = 0; - time_row( - opt, - "kernel", - n, - n, - [&] { - std::ranges::fill(result, limb_t{0}); - size = dt::square_runtime(result, va, hooks.heap()); - escape(&size); - escape(result.data()); - }, - [&] { - check_product("kernel sqr", n, n, va, va, result); - if (size != trimmed_size(result)) { - fail("kernel sqr returned a wrong size at " + shape_str(n, n)); - } - }); + const auto go = [&](const auto floor_tag) { + constexpr bool floor_on = decltype(floor_tag)::value; + time_row( + opt, + floor_on ? "floor" : "kernel", + n, + n, + [&] { + const api_floor pair(2 * n); + std::ranges::fill(result, limb_t{0}); + size = dt::square_runtime(result, va, hooks.heap()); + escape(&size); + escape(result.data()); + }, + [&] { + check_product("kernel sqr", n, n, va, va, result); + if (size != trimmed_size(result)) { + fail("kernel sqr returned a wrong size at " + shape_str(n, n)); + } + }); + }; + if (row == "floor") { + go(std::true_type{}); + } else { + go(std::false_type{}); + } #if defined(BEMAN_BIG_INT_SWEEP_GMP) } else if (row == "gmp") { const auto ga = to_gmp(va); @@ -864,13 +946,13 @@ void run_div(const options& opt, const std::size_t la, const std::size_t lb) { const auto vb = random_limbs(rng, lb); const auto sh = shape_str(la, lb); - const bb::big_int a = make_big(va); - const bb::big_int b = make_big(vb); - limbs ref_q; - limbs ref_r; + const sweep_int a = make_big(va); + const sweep_int b = make_big(vb); + limbs ref_q; + limbs ref_r; { - const bb::big_int q = a / b; - const bb::big_int r = a % b; + const sweep_int q = a / b; + const sweep_int r = a % b; check_division(opt.op.c_str(), la, lb, va, vb, q, r, b); ref_q = trimmed(q.representation()); ref_r = trimmed(r.representation()); @@ -879,9 +961,9 @@ void run_div(const options& opt, const std::size_t la, const std::size_t lb) { for (const auto& row : opt.rows) { if (row == "auto") { - bb::big_int q; - bb::big_int r; - auto work = [&] { + sweep_int q; + sweep_int r; + auto work = [&] { if (opt.op == "div") { q = a / b; escape(&q); @@ -907,49 +989,62 @@ void run_div(const options& opt, const std::size_t la, const std::size_t lb) { } check_division((opt.op + " (last timed result)").c_str(), la, lb, va, vb, q, r, b); print_row(opt, "auto", la, lb, t); - } else if (row == "kernel") { + } else if (row == "kernel" || row == "floor") { if (!is_divrem) { skip_row(opt, row, "kernel rows time quotient and remainder together, use divrem"); - } else if (lb == 1) { - limbs q(la); - limb_t rem = 0; - time_row( - opt, - "kernel", - la, - lb, - [&] { - rem = dt::divide_unsigned_short(q, va, vb[0]); - escape(&rem); - escape(q.data()); - }, - [&] { - expect_same("kernel divrem quotient", sh, q, ref_q); - expect_same("kernel divrem remainder", sh, std::span{&rem, 1}, ref_r); - }); + continue; + } + const auto go = [&](const auto floor_tag) { + constexpr bool floor_on = decltype(floor_tag)::value; + const char* name = floor_on ? "floor" : "kernel"; + if (lb == 1) { + limbs q(la); + limb_t rem = 0; + time_row( + opt, + name, + la, + lb, + [&] { + const api_floor pair(la, lb); + rem = dt::divide_unsigned_short(q, va, vb[0]); + escape(&rem); + escape(q.data()); + }, + [&] { + expect_same("kernel divrem quotient", sh, q, ref_q); + expect_same("kernel divrem remainder", sh, std::span{&rem, 1}, ref_r); + }); + } else { + const std::size_t q_len = la - lb + 1; + const std::size_t r_cap = la + 1; + std::allocator alloc; + dt::scratch_allocator> scratch( + r_cap + dt::divide_unsigned_storage_size(la, lb), alloc); + const std::span rem = scratch.allocate(r_cap); + limbs q(q_len); + time_row( + opt, + name, + la, + lb, + [&] { + const api_floor pair(q_len, lb); + std::ranges::fill(q, limb_t{0}); + dt::divide_dispatch(q, rem, va, vb, scratch, alloc); + escape(q.data()); + escape(rem.data()); + }, + [&] { + expect_same("kernel divrem quotient", sh, q, ref_q); + expect_same("kernel divrem remainder", sh, rem, ref_r); + }); + } + }; + if (row == "floor") { + go(std::true_type{}); } else { - const std::size_t q_len = la - lb + 1; - const std::size_t r_cap = la + 1; - std::allocator alloc; - dt::scratch_allocator> scratch(r_cap + dt::divide_unsigned_storage_size(la, lb), - alloc); - const std::span rem = scratch.allocate(r_cap); - limbs q(q_len); - time_row( - opt, - "kernel", - la, - lb, - [&] { - std::ranges::fill(q, limb_t{0}); - dt::divide_dispatch(q, rem, va, vb, scratch, alloc); - escape(q.data()); - escape(rem.data()); - }, - [&] { - expect_same("kernel divrem quotient", sh, q, ref_q); - expect_same("kernel divrem remainder", sh, rem, ref_r); - }); + go(std::false_type{}); } #if defined(BEMAN_BIG_INT_SWEEP_GMP) } else if (row == "gmp") { @@ -996,8 +1091,8 @@ void run_div(const options& opt, const std::size_t la, const std::size_t lb) { escape(gr.data()); }, [&] { - const bb::big_int gq_big(gq.begin(), gq.end()); - const bb::big_int gr_big(gr.begin(), gr.end()); + const sweep_int gq_big(gq.begin(), gq.end()); + const sweep_int gr_big(gr.begin(), gr.end()); check_division("gmp divrem", la, lb, va, vb, gq_big, gr_big, b); expect_same("gmp divrem quotient", sh, from_gmp(gq, gq.size()), ref_q); expect_same("gmp divrem remainder", sh, from_gmp(gr, gr.size()), ref_r); @@ -1067,11 +1162,11 @@ void run_addsub(const options& opt, const std::size_t la, const std::size_t lb) } const auto sh = shape_str(la, lb); - const bb::big_int a = make_big(va); - const bb::big_int b = make_big(vb); - limbs ref; + const sweep_int a = make_big(va); + const sweep_int b = make_big(vb); + limbs ref; { - const bb::big_int c = Add ? a + b : a - b; + const sweep_int c = Add ? a + b : a - b; check_addsub("api", sh, va, vb, trimmed(c.representation())); ref = trimmed(c.representation()); } @@ -1079,7 +1174,7 @@ void run_addsub(const options& opt, const std::size_t la, const std::size_t lb) for (const auto& row : opt.rows) { if (row == "auto") { - bb::big_int c; + sweep_int c; time_row( opt, "auto", @@ -1098,7 +1193,7 @@ void run_addsub(const options& opt, const std::size_t la, const std::size_t lb) } else if (row == "inplace") { // One timed unit is two operations (c += b; c -= b, or the reverse for sub); per-op time is half. { - bb::big_int t = a; + sweep_int t = a; if constexpr (Add) { t += b; } else { @@ -1106,7 +1201,7 @@ void run_addsub(const options& opt, const std::size_t la, const std::size_t lb) } expect_same("inplace first op", sh, t.representation(), ref); } - bb::big_int c = a; + sweep_int c = a; time_row( opt, "inplace", @@ -1125,35 +1220,44 @@ void run_addsub(const options& opt, const std::size_t la, const std::size_t lb) }, [&] { expect_same("inplace pair", sh, c.representation(), va_ref); }, 0.5); - } else if (row == "kernel") { + } else if (row == "kernel" || row == "floor") { limbs res(la); bool carry = false; std::size_t size = 0; - time_row( - opt, - "kernel", - la, - lb, - [&] { - if constexpr (Add) { - carry = dt::add_unsigned_spans(res, va, vb); - escape(&carry); - } else { - size = dt::subtract_unsigned_spans(res, va, vb); - escape(&size); - } - escape(res.data()); - }, - [&] { - limbs full = res; - if (Add && carry) { - full.push_back(1); - } - expect_same("kernel", sh, full, ref); - if (!Add && size != trimmed_size(res)) { - fail("kernel sub returned a wrong size at " + sh); - } - }); + const auto go = [&](const auto floor_tag) { + constexpr bool floor_on = decltype(floor_tag)::value; + time_row( + opt, + floor_on ? "floor" : "kernel", + la, + lb, + [&] { + const api_floor pair(Add ? la + 1 : la); + if constexpr (Add) { + carry = dt::add_unsigned_spans(res, va, vb); + escape(&carry); + } else { + size = dt::subtract_unsigned_spans(res, va, vb); + escape(&size); + } + escape(res.data()); + }, + [&] { + limbs full = res; + if (Add && carry) { + full.push_back(1); + } + expect_same("kernel", sh, full, ref); + if (!Add && size != trimmed_size(res)) { + fail("kernel sub returned a wrong size at " + sh); + } + }); + }; + if (row == "floor") { + go(std::true_type{}); + } else { + go(std::false_type{}); + } #if defined(BEMAN_BIG_INT_SWEEP_GMP) } else if (row == "gmp") { const auto ga = to_gmp(va); @@ -1228,10 +1332,10 @@ void run_cmp(const options& opt, const std::size_t la, const std::size_t lb) { const int want = va[0] < vb[0] ? -1 : 1; const auto sh = shape_str(la, lb); - const bb::big_int a = make_big(va); - const bb::big_int b = make_big(vb); - int s = 0; - const auto check = [&](const char* what) { + const sweep_int a = make_big(va); + const sweep_int b = make_big(vb); + int s = 0; + const auto check = [&](const char* what) { if (s != want) { fail(std::string(what) + " cmp sign mismatch at " + sh); } @@ -1346,10 +1450,10 @@ void run_shift(const options& opt, const std::size_t n, const std::size_t bits) const unsigned partial = static_cast(bits % limb_bits); const int s = static_cast(bits); - const bb::big_int a = make_big(va); - limbs ref; + const sweep_int a = make_big(va); + limbs ref; { - const bb::big_int c = Left ? a << s : a >> s; + const sweep_int c = Left ? a << s : a >> s; check_shift("api", sh, va, bits, trimmed(c.representation())); ref = trimmed(c.representation()); } @@ -1357,7 +1461,7 @@ void run_shift(const options& opt, const std::size_t n, const std::size_t bits) for (const auto& row : opt.rows) { if (row == "auto") { - bb::big_int c; + sweep_int c; time_row( opt, "auto", @@ -1377,7 +1481,7 @@ void run_shift(const options& opt, const std::size_t n, const std::size_t bits) // One timed unit is two operations, c <<= s; c >>= s for shl and c >>= s; c <<= s for shr (the latter // settles on a with its low S bits cleared); per-op time is half. { - bb::big_int t = a; + sweep_int t = a; if constexpr (Left) { t <<= s; } else { @@ -1385,7 +1489,7 @@ void run_shift(const options& opt, const std::size_t n, const std::size_t bits) } expect_same("inplace first op", sh, t.representation(), ref); } - bb::big_int c = a; + sweep_int c = a; time_row( opt, "inplace", @@ -1406,49 +1510,60 @@ void run_shift(const options& opt, const std::size_t n, const std::size_t bits) if constexpr (Left) { expect_same("inplace pair", sh, c.representation(), va_ref); } else { - bb::big_int t = c; + sweep_int t = c; t >>= s; expect_same("inplace pair", sh, t.representation(), ref); } }, 0.5); - } else if (row == "kernel") { + } else if (row == "kernel" || row == "floor") { // The span kernels work in place, so the copy-in of the source is part of the timed loop. - if constexpr (Left) { - limbs buf(n + whole + 1); - std::size_t size = 0; - time_row( - opt, - "kernel", - n, - bits, - [&] { - std::ranges::copy(va, buf.begin()); - size = dt::shift_left_bits(buf, n, bits); - escape(&size); - escape(buf.data()); - }, - [&] { expect_same("kernel", sh, std::span{buf.data(), size}, ref); }); + const auto go = [&](const auto floor_tag) { + constexpr bool floor_on = decltype(floor_tag)::value; + const char* name = floor_on ? "floor" : "kernel"; + if constexpr (Left) { + limbs buf(n + whole + 1); + std::size_t size = 0; + time_row( + opt, + name, + n, + bits, + [&] { + const api_floor pair(n + whole + (partial != 0 ? 1 : 0)); + std::ranges::copy(va, buf.begin()); + size = dt::shift_left_bits(buf, n, bits); + escape(&size); + escape(buf.data()); + }, + [&] { expect_same("kernel", sh, std::span{buf.data(), size}, ref); }); + } else { + // The same two steps as shift_right_bits (move down whole limbs, shift_right_n the rest), without + // its debug assertion that every dropped bit is zero. + const std::size_t m = n - whole; + limbs buf(m); + limb_t dropped = 0; + time_row( + opt, + name, + n, + bits, + [&] { + const api_floor pair(m); + std::copy(va.begin() + static_cast(whole), va.end(), buf.begin()); + if (partial != 0) { + dropped = dt::shift_right_n(buf, partial); + escape(&dropped); + } + escape(buf.data()); + }, + [&] { expect_same("kernel", sh, buf, ref); }); + } + }; + if (row == "floor") { + go(std::true_type{}); } else { - // The same two steps as shift_right_bits (move down whole limbs, shift_right_n the rest), without its - // debug assertion that every dropped bit is zero. - const std::size_t m = n - whole; - limbs buf(m); - limb_t dropped = 0; - time_row( - opt, - "kernel", - n, - bits, - [&] { - std::copy(va.begin() + static_cast(whole), va.end(), buf.begin()); - if (partial != 0) { - dropped = dt::shift_right_n(buf, partial); - escape(&dropped); - } - escape(buf.data()); - }, - [&] { expect_same("kernel", sh, buf, ref); }); + go(std::false_type{}); } } else if (row == "kernelip") { if constexpr (!Left) { @@ -1563,16 +1678,16 @@ void run_tochars(const options& opt, const std::size_t n, const std::size_t base const auto sh = shape_str(n, base_arg); const auto cap = digit_capacity(n, base); - const bb::big_int a = make_big(va); - std::string ref(cap, '\0'); + const sweep_int a = make_big(va); + std::string ref(cap, '\0'); { const auto r = bb::to_chars(ref.data(), ref.data() + ref.size(), a, base); if (r.ec != std::errc{}) { fail("to_chars failed at " + sh); } ref.resize(static_cast(r.ptr - ref.data())); - bb::big_int back; - const auto fr = bb::from_chars(ref.data(), ref.data() + ref.size(), back, base); + sweep_int back; + const auto fr = bb::from_chars(ref.data(), ref.data() + ref.size(), back, base); if (fr.ec != std::errc{}) { fail("from_chars failed on the to_chars output at " + sh); } @@ -1670,8 +1785,8 @@ void run_fromchars(const options& opt, const std::size_t n, const std::size_t ba const auto sh = shape_str(n, base_arg); const limbs ref = trimmed(va); - const bb::big_int a = make_big(va); - std::string str(digit_capacity(n, base), '\0'); + const sweep_int a = make_big(va); + std::string str(digit_capacity(n, base), '\0'); { const auto r = bb::to_chars(str.data(), str.data() + str.size(), a, base); if (r.ec != std::errc{}) { @@ -1686,7 +1801,7 @@ void run_fromchars(const options& opt, const std::size_t n, const std::size_t ba for (const auto& row : opt.rows) { if (row == "auto") { - bb::big_int c; + sweep_int c; std::from_chars_result r{}; time_row( opt, @@ -1789,11 +1904,11 @@ void run_gcd(const options& opt, const std::size_t la, const std::size_t lb) { vb[0] |= 1; const auto sh = shape_str(la, lb); - const bb::big_int a = make_big(va); - const bb::big_int b = make_big(vb); - limbs ref; + const sweep_int a = make_big(va); + const sweep_int b = make_big(vb); + limbs ref; { - const bb::big_int g = bb::gcd(a, b); + const sweep_int g = bb::gcd(a, b); if (g <= 0 || !((a % g) == 0) || !((b % g) == 0)) { fail("gcd result does not divide both operands at " + sh); } @@ -1802,7 +1917,7 @@ void run_gcd(const options& opt, const std::size_t la, const std::size_t lb) { for (const auto& row : opt.rows) { if (row == "auto") { - bb::big_int c; + sweep_int c; time_row( opt, "auto", @@ -1875,6 +1990,127 @@ void run_gcd(const options& opt, const std::size_t la, const std::size_t lb) { } } +// --------------------------------------------------------------------------- +// vecsort: the container cost of the inline capacity. Shape NxL: a vector of N random one-limb values (L must be 1) of +// mixed sign and magnitude below 2^63. One timed unit is copy-assigning the unsorted source into the work vector, +// std::sort, and summing; the reported time is per element (ns), so the rows are comparable across inline sizes. +// auto std::vector copy + sort + sum (the sum is a sweep_int, += per element) +// builtin std::vector the same with a wrapping uint64 sum, the reference +// copy std::vector the copy-assign alone, to subtract from auto +// --------------------------------------------------------------------------- + +void run_vecsort(const options& opt, const std::size_t n, const std::size_t value_limbs) { + if (value_limbs != 1) { + usage_error("vecsort needs NxL with L = 1 (one-limb values), got " + shape_str(n, value_limbs)); + } + std::mt19937_64 rng(splitmix(opt.seed ^ splitmix(n * 1000003 + 1))); + std::vector raw(n); + for (auto& x : raw) { + const auto mag = static_cast(rng() >> 1); + x = (rng() & 1) != 0 ? -mag : mag; + } + std::vector sorted = raw; + std::ranges::sort(sorted); + std::vector src_big(raw.begin(), raw.end()); + const auto sh = shape_str(n, 1); + const double scale = 1.0 / static_cast(n); + +#if defined(__SIZEOF_INT128__) + __int128 ref_sum = 0; + for (const auto x : raw) { + ref_sum += x; + } + const sweep_int want_total = (sweep_int(static_cast(ref_sum >> 64)) << 64) + + sweep_int(static_cast(static_cast(ref_sum))); + u64 want_wrap = static_cast(static_cast(ref_sum)); +#else + u64 want_wrap = 0; + for (const auto x : raw) { + want_wrap += static_cast(x); + } +#endif + + for (const auto& row : opt.rows) { + if (row == "auto") { + std::vector work = src_big; + sweep_int total; + time_row( + opt, + "auto", + n, + 1, + [&] { + work = src_big; + std::sort(work.begin(), work.end()); + total = 0; + for (const auto& v : work) { + total += v; + } + escape(&total); + escape(work.data()); + }, + [&] { + for (std::size_t i = 0; i < n; ++i) { + if (!(work[i] == sorted[i])) { + fail("vecsort auto: element " + std::to_string(i) + " out of order at " + sh); + } + } +#if defined(__SIZEOF_INT128__) + if (!(total == want_total)) { + fail("vecsort auto: wrong sum at " + sh); + } +#endif + }, + scale); + } else if (row == "builtin") { + std::vector work = raw; + u64 total = 0; + time_row( + opt, + "builtin", + n, + 1, + [&] { + work = raw; + std::sort(work.begin(), work.end()); + total = 0; + for (const auto v : work) { + total += static_cast(v); + } + escape(&total); + escape(work.data()); + }, + [&] { + if (work != sorted || total != want_wrap) { + fail("vecsort builtin: wrong result at " + sh); + } + }, + scale); + } else if (row == "copy") { + std::vector work = src_big; + time_row( + opt, + "copy", + n, + 1, + [&] { + work = src_big; + escape(work.data()); + }, + [&] { + for (std::size_t i = 0; i < n; ++i) { + if (!(work[i] == raw[i])) { + fail("vecsort copy: element " + std::to_string(i) + " differs at " + sh); + } + } + }, + scale); + } else { + skip_row(opt, row, "not applicable"); + } + } +} + // --------------------------------------------------------------------------- // Command line. // --------------------------------------------------------------------------- @@ -1948,8 +2184,9 @@ std::vector split_commas(const std::string& s) { } const char* const all_ops[] = { - "mul", "sqr", "div", "rem", "divrem", "add", "sub", "shl", "shr", "cmp", "tochars", "fromchars", "gcd"}; -const char* const all_rows[] = {"auto", "inplace", "kernel", "kernelip", "gmp", "gmpz", "sliced", "unsliced", "fft"}; + "mul", "sqr", "div", "rem", "divrem", "add", "sub", "shl", "shr", "cmp", "tochars", "fromchars", "gcd", "vecsort"}; +const char* const all_rows[] = { + "auto", "inplace", "kernel", "kernelip", "floor", "gmp", "gmpz", "sliced", "unsliced", "fft", "builtin", "copy"}; bool one_of(const std::string& s, const auto& list) { return std::ranges::find(list, s) != std::end(list); } @@ -1991,8 +2228,9 @@ options parse_args(const int argc, char** argv) { } } if (!one_of(opt.op, all_ops)) { - usage_error("usage: shape_sweep " - "[--rows auto,inplace,kernel,kernelip,gmp,gmpz,sliced,unsliced,fft] [--path ROW] [--rounds N] " + usage_error("usage: shape_sweep " + "[--rows auto,inplace,kernel,kernelip,floor,gmp,gmpz,sliced,unsliced,fft,builtin,copy] " + "[--path ROW] [--rounds N] " "[--round-ms X] [--seed S] [--gmp] [--grid FILE] [SHAPE ...]"); } if (opt.rounds == 0 || opt.round_ms <= 0.0) { @@ -2080,6 +2318,8 @@ int main(int argc, char** argv) { run_fromchars(opt, la, lb); } else if (op == "gcd") { run_gcd(opt, la, lb); + } else if (op == "vecsort") { + run_vecsort(opt, la, lb); } else { run_div(opt, la, lb); } diff --git a/tests/beman/big_int/perf/tools/gap_sweep.sh b/tests/beman/big_int/perf/tools/gap_sweep.sh index 6a18ccff..9c93fc7e 100755 --- a/tests/beman/big_int/perf/tools/gap_sweep.sh +++ b/tests/beman/big_int/perf/tools/gap_sweep.sh @@ -9,7 +9,9 @@ # uses --rounds 3, gcd 65536 uses --rounds 1. Output: one CSV (op,path,la,lb,reps,rounds,median_ns,min_ns, # round_ms_actual) with the '#const' line kept once at the top, after '# gap_sweep' comment lines. # Works on macOS bash 3.2 and Ubuntu bash. --bands is for partial runs (default all three). -# Ops: add sub shl shr cmp mul sqr divrem tochars fromchars gcd (default all). +# Ops: add sub shl shr cmp mul sqr divrem tochars fromchars gcd (default all), and vecsort (container cost of the inline +# capacity, only when named in --ops). The floor row (kernel plus one allocate/deallocate pair of the result size) is +# run for add sub shl shr mul sqr divrem. set -eu if [ "$#" -lt 2 ]; then @@ -80,32 +82,32 @@ sweep() { } if want add; then - sweep add auto,inplace,kernel,gmp,gmpz "1x1 2x2 4x4 8x8 16x16" "64x64 256x256 1024x1024 2000x2000 1024x1" \ + sweep add auto,inplace,kernel,floor,gmp,gmpz "1x1 2x2 4x4 8x8 16x16" "64x64 256x256 1024x1024 2000x2000 1024x1" \ "16384x16384 131072x131072 1048576x1048576" fi if want sub; then - sweep sub auto,inplace,kernel,gmp,gmpz "1x1 2x2 4x4 8x8 16x16" "64x64 256x256 1024x1024 2000x2000 1024x1" \ + sweep sub auto,inplace,kernel,floor,gmp,gmpz "1x1 2x2 4x4 8x8 16x16" "64x64 256x256 1024x1024 2000x2000 1024x1" \ "16384x16384 131072x131072 1048576x1048576" fi if want shl; then - sweep shl auto,inplace,kernel,kernelip,gmp,gmpz "1x13 4x13 16x13" "256x13 2000x13 2000x77" "131072x13 1048576x13" + sweep shl auto,inplace,kernel,kernelip,floor,gmp,gmpz "1x13 4x13 16x13" "256x13 2000x13 2000x77" "131072x13 1048576x13" fi if want shr; then - sweep shr auto,inplace,kernel,gmp,gmpz "1x13 4x13 16x13" "256x13 2000x13 2000x77" "131072x13 1048576x13" + sweep shr auto,inplace,kernel,floor,gmp,gmpz "1x13 4x13 16x13" "256x13 2000x13 2000x77" "131072x13 1048576x13" fi if want cmp; then sweep cmp auto,kernel,gmp,gmpz "1 4 16" "256 2000" "131072" fi if want mul; then - sweep mul auto,kernel,gmp,gmpz "1x1 2x2 3x3 4x4 6x6 8x8 12x12 16x16" \ + sweep mul auto,kernel,floor,gmp,gmpz "1x1 2x2 3x3 4x4 6x6 8x8 12x12 16x16" \ "32x32 64x64 128x128 256x256 512x512 1000x1000 2000x2000 2000x100" \ "4096x4096 16384x16384 65536x65536 262144x262144 1048576x1048576 262144x8192" fi if want sqr; then - sweep sqr auto,kernel,gmp,gmpz "4 16" "64 512 2000" "16384 262144 1048576" + sweep sqr auto,kernel,floor,gmp,gmpz "4 16" "64 512 2000" "16384 262144 1048576" fi if want divrem; then - sweep divrem auto,kernel,gmp,gmpz "2x1 8x4 32x16" "128x64 512x256 2000x1000 4000x2000 2000x100 65536x1" \ + sweep divrem auto,kernel,floor,gmp,gmpz "2x1 8x4 32x16" "128x64 512x256 2000x1000 4000x2000 2000x100 65536x1" \ "16384x8192 131072x65536 1048576x524288" fi if want tochars; then @@ -120,4 +122,8 @@ if want gcd; then sweep gcd auto,kernel,gmp,gmpz "2x2 4x4 16x16" "64x64 256x256 1024x1024 2000x2000" "16384x16384" if band large; then run gcd auto,kernel,gmp,gmpz 1 65536x65536; fi fi +if want vecsort; then + # Not in the default op list: the shape is N values of one limb, medium band; rows are per element. + if band medium; then run vecsort auto,builtin,copy 9 100000x1; fi +fi echo "[gap_sweep] $(date +%H:%M:%S) done: $OUT" >&2 diff --git a/tests/beman/big_int/perf/tools/selftest.sh b/tests/beman/big_int/perf/tools/selftest.sh index 905b5cd5..de36eeab 100755 --- a/tests/beman/big_int/perf/tools/selftest.sh +++ b/tests/beman/big_int/perf/tools/selftest.sh @@ -11,7 +11,7 @@ while IFS= read -r spec; do op=${spec%% *} shapes=${spec#* } # shellcheck disable=SC2086 - if ! "$B" "$op" --rows auto,inplace,kernel,kernelip,gmp,gmpz --rounds 1 --round-ms 2 $shapes >/dev/null; then + if ! "$B" "$op" --rows auto,inplace,kernel,kernelip,floor,gmp,gmpz,builtin,copy --rounds 1 --round-ms 2 $shapes >/dev/null; then echo "selftest: FAILED $spec" >&2 rc=1 else @@ -30,5 +30,6 @@ div 8x4 tochars 1x10 4x10 16x10 64x10 256x10 16x16 2000x10 fromchars 1x10 4x10 16x10 64x10 256x10 2000x10 gcd 2x2 4x4 16x16 64x64 256x256 100x30 +vecsort 1000x1 SPECS exit $rc diff --git a/tests/beman/big_int/perf/tools/summarize.py b/tests/beman/big_int/perf/tools/summarize.py index fefea022..bc2ee83a 100755 --- a/tests/beman/big_int/perf/tools/summarize.py +++ b/tests/beman/big_int/perf/tools/summarize.py @@ -38,7 +38,7 @@ def spread(key): def shape_spread(op, la, lb): - s = [(spread((op, la, lb, p)), p) for p in ("auto", "inplace", "kernel", "gmp", "gmpz")] + s = [(spread((op, la, lb, p)), p) for p in ("auto", "inplace", "kernel", "floor", "gmp", "gmpz", "builtin", "copy")] s = [x for x in s if x[0] is not None] return max(s) if s else (None, "") @@ -72,7 +72,7 @@ def spr_txt(op, la, lb): if m.startswith("# gap_sweep") or m.startswith("#const"): out.append(" " + m[:200]) out.append("") -out.append("Ratios: >1 means big_int is slower. inplace is per-op (already halved). Gap ns = auto - kernel (front end).\n") +out.append("Ratios: >1 means big_int is slower. inplace is per-op (already halved). Gap ns: auto - kernel is the whole front end, auto - floor is what remains above one allocate/deallocate pair of the result size (API floor), inplace - kernel is the in-place front end.\n") gaps = [] ops = [] allspr = [(spread(k), k) for k in data if spread(k) is not None] @@ -87,18 +87,31 @@ def spr_txt(op, la, lb): ops.append(k[0]) for op in ops: out.append(f"## {op}\n") + if op == "vecsort": + out.append("ns per element for copy-assign + sort + sum of N one-limb values (builtin = std::int64_t).\n") + out.append("| N | auto ns | builtin ns | auto/builtin | copy ns | auto-copy ns |") + out.append("|---:|---:|---:|---:|---:|---:|") + for _, la, lb in [k for k in order if k[0] == op]: + a_, b_, c_ = (med(op, la, lb, x) for x in ("auto", "builtin", "copy")) + d_ = None if a_ is None or c_ is None else a_ - c_ + out.append(f"| {la} | {fmt(a_,2)} | {fmt(b_,2)} | {fmt(ratio(a_, b_))} | {fmt(c_,2)} | {fmt(d_,2)} |") + out.append("") + continue for b in ("small", "medium", "large"): shapes = [k for k in order if k[0] == op and band(op, k[1]) == b] if not shapes: continue out.append(f"**{b}**\n") - out.append("| shape | auto ns | gmpz ns | auto/gmpz | kernel/gmp | inplace/gmpz | auto-kernel ns | spread % (row) |") - out.append("|---|---:|---:|---:|---:|---:|---:|---:|") + out.append("| shape | auto ns | gmpz ns | auto/gmpz | kernel/gmp | inplace/gmpz | auto-kernel ns | floor ns | auto-floor ns | inplace-kernel ns | spread % (row) |") + out.append("|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|") for _, la, lb in shapes: a, kn, g, z, ip = (med(op, la, lb, x) for x in ("auto", "kernel", "gmp", "gmpz", "inplace")) r1, r2, r3 = ratio(a, z), ratio(kn, g), ratio(ip, z) + fl = med(op, la, lb, "floor") d = None if a is None or kn is None else a - kn - out.append(f"| {la}x{lb} | {fmt(a,1)} | {fmt(z,1)} | {fmt(r1)} | {fmt(r2)} | {fmt(r3)} | {fmt(d,1)} | {spr_txt(op, la, lb)} |") + d2 = None if a is None or fl is None else a - fl + d3 = None if ip is None or kn is None else ip - kn + out.append(f"| {la}x{lb} | {fmt(a,1)} | {fmt(z,1)} | {fmt(r1)} | {fmt(r2)} | {fmt(r3)} | {fmt(d,1)} | {fmt(fl,1)} | {fmt(d2,1)} | {fmt(d3,1)} | {spr_txt(op, la, lb)} |") if r1: gaps.append((r1, "auto/gmpz", op, la, lb)) if r2: diff --git a/tests/beman/big_int/scratch_heap.test.cpp b/tests/beman/big_int/scratch_heap.test.cpp index 4f6af5ec..d634d44d 100644 --- a/tests/beman/big_int/scratch_heap.test.cpp +++ b/tests/beman/big_int/scratch_heap.test.cpp @@ -8,6 +8,8 @@ #include +#include "util/util_counting_allocator.hpp" + #include #include @@ -22,37 +24,8 @@ namespace { namespace detail = BEMAN_BIG_INT_NAMESPACE::detail; using uint_t = BEMAN_BIG_INT_NAMESPACE::uint_multiprecision_t; -struct counting_state { - std::map allocations; - std::map live_elements; -}; - -template -struct counting_allocator { - using value_type = T; - - counting_state* state = nullptr; - - counting_allocator() = default; - explicit counting_allocator(counting_state* s) : state(s) {} - template - counting_allocator(const counting_allocator& other) : state(other.state) {} - - T* allocate(const std::size_t n) { - ++state->allocations[std::type_index(typeid(T))]; - state->live_elements[std::type_index(typeid(T))] += n; - return std::allocator{}.allocate(n); - } - void deallocate(T* p, const std::size_t n) noexcept { - state->live_elements[std::type_index(typeid(T))] -= n; - std::allocator{}.deallocate(p, n); - } - - template - bool operator==(const counting_allocator& other) const { - return state == other.state; - } -}; +using BEMAN_BIG_INT_NAMESPACE::test_util::counting_allocator; +using BEMAN_BIG_INT_NAMESPACE::test_util::counting_state; TEST(ScratchHeap, HooksRouteThroughTheOwningAllocatorsRebinds) { counting_state state; diff --git a/tests/beman/big_int/util/util_counting_allocator.hpp b/tests/beman/big_int/util/util_counting_allocator.hpp new file mode 100644 index 00000000..3c3bab66 --- /dev/null +++ b/tests/beman/big_int/util/util_counting_allocator.hpp @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// SPDX-License-Identifier: BSL-1.0 + +// A stateful counting allocator shared by the allocation tests. The counters live in a counting_state owned by the +// test, so every rebound copy of the allocator reports into the same place. Allocators that were default constructed +// (state == nullptr) forward to std::allocator without counting. + +#ifndef BEMAN_BIG_INT_TEST_UTIL_COUNTING_ALLOCATOR_HPP +#define BEMAN_BIG_INT_TEST_UTIL_COUNTING_ALLOCATOR_HPP + +#include +#include +#include +#include +#include + +#include + +BEMAN_BIG_INT_BEGIN_NAMESPACE +namespace test_util { + +struct counting_state { + std::map allocations; + std::map live_elements; + std::size_t total_allocations{0}; + std::size_t total_deallocations{0}; + + void reset_totals() noexcept { + total_allocations = 0; + total_deallocations = 0; + } +}; + +template +struct counting_allocator { + using value_type = T; + + counting_state* state = nullptr; + + counting_allocator() = default; + explicit counting_allocator(counting_state* s) : state(s) {} + template + counting_allocator(const counting_allocator& other) : state(other.state) {} + + T* allocate(const std::size_t n) { + if (state != nullptr) { + ++state->allocations[std::type_index(typeid(T))]; + state->live_elements[std::type_index(typeid(T))] += n; + ++state->total_allocations; + } + return std::allocator{}.allocate(n); + } + void deallocate(T* p, const std::size_t n) noexcept { + if (state != nullptr) { + state->live_elements[std::type_index(typeid(T))] -= n; + ++state->total_deallocations; + } + std::allocator{}.deallocate(p, n); + } + + template + bool operator==(const counting_allocator& other) const { + return state == other.state; + } +}; + +} // namespace test_util +BEMAN_BIG_INT_END_NAMESPACE + +#endif // BEMAN_BIG_INT_TEST_UTIL_COUNTING_ALLOCATOR_HPP From e56d6fac831f32bdd0f699fc6984b0c9e96fb6c0 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:16:22 -0400 Subject: [PATCH 24/36] Format alloc_count.test.cpp and document the floor and vecsort rows in the tools README --- tests/beman/big_int/alloc_count.test.cpp | 182 +++++++++++------------ tests/beman/big_int/perf/tools/README.md | 6 +- 2 files changed, 94 insertions(+), 94 deletions(-) diff --git a/tests/beman/big_int/alloc_count.test.cpp b/tests/beman/big_int/alloc_count.test.cpp index aa6a1bdb..cb1198aa 100644 --- a/tests/beman/big_int/alloc_count.test.cpp +++ b/tests/beman/big_int/alloc_count.test.cpp @@ -8,8 +8,8 @@ // results (which take select_on_container_copy_construction of an operand allocator) land on it // wide256 basic_big_int<256, limb, counting_allocator> (inline capacity of 4 64-bit limbs) // The measured counts are printed to stdout as "[alloc_count] ...". The expectations below are the item 1 targets -// (see the front-end cost plan); cases that exceed their target at the baseline (cf1cf54) are marked pending and skipped -// while `item1_pending` is true. Drop the constant (and the baseline columns) when the library changes land. +// (see the front-end cost plan); cases that exceed their target at the baseline (cf1cf54) are marked pending and +// skipped while `item1_pending` is true. Drop the constant (and the baseline columns) when the library changes land. // // Baseline counts measured at cf1cf54 (allocations per call, K = 64 after one warm-up call; `want` is the target the // case asserts; the cases whose baseline exceeds `want` are the pending ones): @@ -168,22 +168,22 @@ using baseline_counts = std::array; // Prints the measurement; fails when it exceeds `want`, or skips when the case is known to exceed it at the baseline // and the item 1 changes are still pending. -#define ALLOC_EXPECT(Env, case_name, measured, want, baseline) \ - do { \ - const double alloc_measured_ = (measured); \ - const double alloc_want_ = (want); \ - const double alloc_base_ = (baseline)[Env::index]; \ - std::printf("[alloc_count] %-8s %-34s measured=%6.3f want<=%5.2f baseline=%6.3f\n", \ - Env::name, \ - case_name, \ - alloc_measured_, \ - alloc_want_, \ - alloc_base_); \ - if (alloc_measured_ > alloc_want_ && item1_pending && alloc_base_ > alloc_want_) { \ - GTEST_SKIP() << "item 1 pending: " << case_name << " measures " << alloc_measured_ << ", want <= " \ - << alloc_want_; \ - } \ - EXPECT_LE(alloc_measured_, alloc_want_) << case_name; \ +#define ALLOC_EXPECT(Env, case_name, measured, want, baseline) \ + do { \ + const double alloc_measured_ = (measured); \ + const double alloc_want_ = (want); \ + const double alloc_base_ = (baseline)[Env::index]; \ + std::printf("[alloc_count] %-8s %-34s measured=%6.3f want<=%5.2f baseline=%6.3f\n", \ + Env::name, \ + case_name, \ + alloc_measured_, \ + alloc_want_, \ + alloc_base_); \ + if (alloc_measured_ > alloc_want_ && item1_pending && alloc_base_ > alloc_want_) { \ + GTEST_SKIP() << "item 1 pending: " << case_name << " measures " << alloc_measured_ \ + << ", want <= " << alloc_want_; \ + } \ + EXPECT_LE(alloc_measured_, alloc_want_) << case_name; \ } while (false) namespace { @@ -199,33 +199,33 @@ TYPED_TEST_SUITE(AllocCount, envs); // ----- add and subtract ----- TYPED_TEST(AllocCount, AddHeapResult) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(16, 1)); - const int_t b = env.make(random_limbs(16, 2)); - int_t c = env.empty(); + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(16, 1)); + const int_t b = env.make(random_limbs(16, 2)); + int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a + b; }); EXPECT_TRUE(c - b == a); ALLOC_EXPECT(TypeParam, "c = a + b (16x16)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); } TYPED_TEST(AllocCount, SubHeapResult) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(16, 3)); - const int_t b = env.make(random_limbs(16, 4)); - int_t c = env.empty(); + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(16, 3)); + const int_t b = env.make(random_limbs(16, 4)); + int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a - b; }); EXPECT_TRUE(c + b == a); ALLOC_EXPECT(TypeParam, "c = a - b (16x16)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); } TYPED_TEST(AllocCount, AddSubInPlaceWithCapacity) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(16, 5)); - const int_t b = env.make(random_limbs(16, 6)); - int_t c = a; + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(16, 5)); + const int_t b = env.make(random_limbs(16, 6)); + int_t c = a; const double n = steady_allocs(env, [&] { c += b; c -= b; @@ -237,30 +237,30 @@ TYPED_TEST(AllocCount, AddSubInPlaceWithCapacity) { // ----- shifts ----- TYPED_TEST(AllocCount, ShiftLeftHeapResult) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(16, 7)); - int_t c = env.empty(); + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(16, 7)); + int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a << 13; }); EXPECT_TRUE((c >> 13) == a); ALLOC_EXPECT(TypeParam, "c = a << 13 (16 limbs)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); } TYPED_TEST(AllocCount, ShiftRightHeapResult) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(16, 8)); - int_t c = env.empty(); + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(16, 8)); + int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a >> 13; }); EXPECT_TRUE((c << 13) <= a); ALLOC_EXPECT(TypeParam, "c = a >> 13 (16 limbs)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); } TYPED_TEST(AllocCount, ShiftInPlaceWithCapacity) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(16, 9)); - int_t c = a; + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(16, 9)); + int_t c = a; const double n = steady_allocs(env, [&] { c <<= 13; c >>= 13; @@ -272,11 +272,11 @@ TYPED_TEST(AllocCount, ShiftInPlaceWithCapacity) { // ----- multiply ----- TYPED_TEST(AllocCount, MultiplyHeapResult) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(8, 10)); - const int_t b = env.make(random_limbs(8, 11)); - int_t c = env.empty(); + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 10)); + const int_t b = env.make(random_limbs(8, 11)); + int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a * b; }); EXPECT_TRUE(c / b == a); ALLOC_EXPECT(TypeParam, "c = a * b (8x8)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); @@ -284,11 +284,11 @@ TYPED_TEST(AllocCount, MultiplyHeapResult) { // c is restored from a inside the timed call (a copy into existing capacity), so the pair is steady. TYPED_TEST(AllocCount, MultiplyInPlaceByBigInt) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(8, 12)); - const int_t b = env.make(random_limbs(8, 13)); - int_t c = env.empty(); + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 12)); + const int_t b = env.make(random_limbs(8, 13)); + int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a; c *= b; @@ -298,10 +298,10 @@ TYPED_TEST(AllocCount, MultiplyInPlaceByBigInt) { } TYPED_TEST(AllocCount, MultiplyInPlaceBySmall) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(8, 14)); - int_t c = env.empty(); + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 14)); + int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a; c *= 7; @@ -313,34 +313,34 @@ TYPED_TEST(AllocCount, MultiplyInPlaceBySmall) { // ----- divide ----- TYPED_TEST(AllocCount, DivideHeapResult) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(8, 15)); - const int_t b = env.make(random_limbs(4, 16)); - int_t c = env.empty(); + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 15)); + const int_t b = env.make(random_limbs(4, 16)); + int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a / b; }); EXPECT_TRUE(c * b + a % b == a); ALLOC_EXPECT(TypeParam, "c = a / b (8x4)", n, 1.0, (baseline_counts{2.0, 2.0, 2.0})); } TYPED_TEST(AllocCount, RemainderHeapResult) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(8, 17)); - const int_t b = env.make(random_limbs(4, 18)); - int_t c = env.empty(); + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 17)); + const int_t b = env.make(random_limbs(4, 18)); + int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a % b; }); EXPECT_TRUE(a / b * b + c == a); ALLOC_EXPECT(TypeParam, "c = a % b (8x4)", n, 1.0, (baseline_counts{2.0, 2.0, 2.0})); } TYPED_TEST(AllocCount, DivRemToZero) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(8, 19)); - const int_t b = env.make(random_limbs(4, 20)); - bool ok = true; - const double n = steady_allocs(env, [&] { + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 19)); + const int_t b = env.make(random_limbs(4, 20)); + bool ok = true; + const double n = steady_allocs(env, [&] { const auto qr = div_rem_to_zero(a, b); ok = ok && qr.quotient * b + qr.remainder == a; }); @@ -351,11 +351,11 @@ TYPED_TEST(AllocCount, DivRemToZero) { // A two-limb dividend over a one-limb divisor, quotient two limbs: it fits inline only when the inline capacity is at // least two limbs, so the case applies to wide256 only. TYPED_TEST(AllocCount, DivideTwoByOneQuotientInline) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(std::vector{random_limbs(1, 21)[0], ~limb{0}}); - const int_t b = env.make(std::vector{limb{0x123456789ULL}}); - int_t c = env.empty(); + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(std::vector{random_limbs(1, 21)[0], ~limb{0}}); + const int_t b = env.make(std::vector{limb{0x123456789ULL}}); + int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a / b; }); EXPECT_TRUE(c * b + a % b == a); if (int_t::inplace_capacity < 2) { @@ -371,11 +371,11 @@ TYPED_TEST(AllocCount, DivideTwoByOneQuotientInline) { // Stretch: in the schoolbook band the quotient could be built in the object's own limbs. TYPED_TEST(AllocCount, DivideInPlace) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(8, 22)); - const int_t b = env.make(random_limbs(4, 23)); - int_t c = env.empty(); + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 22)); + const int_t b = env.make(random_limbs(4, 23)); + int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a; c /= b; @@ -385,11 +385,11 @@ TYPED_TEST(AllocCount, DivideInPlace) { } TYPED_TEST(AllocCount, RemainderInPlace) { - TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(8, 24)); - const int_t b = env.make(random_limbs(4, 25)); - int_t c = env.empty(); + TypeParam env; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 24)); + const int_t b = env.make(random_limbs(4, 25)); + int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a; c %= b; @@ -401,7 +401,7 @@ TYPED_TEST(AllocCount, RemainderInPlace) { // ----- decimal from_chars ----- TYPED_TEST(AllocCount, FromCharsDecimalIntoReserved) { - TypeParam env; + TypeParam env; using int_t = typename TypeParam::int_t; std::string digits(2000, '0'); for (std::size_t i = 0; i < digits.size(); ++i) { diff --git a/tests/beman/big_int/perf/tools/README.md b/tests/beman/big_int/perf/tools/README.md index ceab5ce8..29bdea4c 100644 --- a/tests/beman/big_int/perf/tools/README.md +++ b/tests/beman/big_int/perf/tools/README.md @@ -7,14 +7,14 @@ SPDX-License-Identifier: BSL-1.0 Scripts that produced the data in [`../gmp_gap_analysis.md`](../gmp_gap_analysis.md). The harness itself is `../shape_sweep.cpp` (CMake target `beman.big_int.benchmarks.shape_sweep`, built with -`-DBEMAN_BIG_INT_BUILD_BENCHMARKS=ON -DBEMAN_BIG_INT_SHAPE_SWEEP_ONLY=ON -DBEMAN_BIG_INT_SWEEP_GMP=ON`). Nothing here is part +`-DBEMAN_BIG_INT_BUILD_BENCHMARKS=ON -DBEMAN_BIG_INT_SHAPE_SWEEP_ONLY=ON -DBEMAN_BIG_INT_SWEEP_GMP=ON`; `-DBEMAN_BIG_INT_SWEEP_INLINE_BITS=64|128|256|512` sets the inline capacity of the integer type behind every timed row, default 64 = `big_int`). Nothing here is part of the CMake build or the test suite. | Tool | What it does and how it is invoked | |---|---| -| `gap_sweep.sh` | `gap_sweep.sh [--seed S] [--ops a,b] [--bands small,medium,large] [--pin "taskset -c 2"]`: runs the report's size grid with every applicable row; writes one CSV (`#const` line once, then `op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual`). About 5 minutes per full run. | +| `gap_sweep.sh` | `gap_sweep.sh [--seed S] [--ops a,b] [--bands small,medium,large] [--pin "taskset -c 2"]`: runs the report's size grid with every applicable row (add, sub, shl, shr, mul, sqr and divrem also run the `floor` row: the kernel plus one allocate/deallocate pair of the result size, the API floor of `c = a op b`; `--ops vecsort` adds the inline-capacity container row, default off); writes one CSV (`#const` line once, then `op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual`). About 5 minutes per full run. | | `selftest.sh` | `selftest.sh `: every op and row at small shapes; exit status 0 means all correctness checks passed (timings meaningless). | -| `summarize.py` | `summarize.py a.csv [b.csv] [probe.csv] [--ghz G] > summary.md`: per op and band ratio tables (auto/gmpz, kernel/gmp, inplace/gmpz, auto-kernel ns), top gaps, probe table; with two sweep CSVs also the seed spread. Run with `python3 -I`. | +| `summarize.py` | `summarize.py a.csv [b.csv] [probe.csv] [--ghz G] > summary.md`: per op and band ratio tables (auto/gmpz, kernel/gmp, inplace/gmpz, auto-kernel ns), top gaps, probe table; with two sweep CSVs also the seed spread. Tables carry the floor, `auto - floor` and `inplace - kernel` ns columns when those rows exist. Run with `python3 -I`. | | `compare.py` | `compare.py [heat\|tables]`: the report's cross-configuration tables (comma-separated CSV lists average seeds). | | `probe_tables.py` | `probe_tables.py [n] [opt]`: the report's probe table (cycles/limb per compiler, M4 ns/limb x 4.47). | | `bucket_tables.py` | `bucket_tables.py `: compact profile table plus the "time saved if linear helpers ran at GMP speed" estimate. | From 73864a1d7e3f66c07d34667bb6c55c74cdd23f23 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:19:29 -0400 Subject: [PATCH 25/36] Add x64 baseline sweep data for item 1 (cf1cf54, g++-14 -march=native, seeds 1 and 2, same-seed repeat, large-band spot checks) --- .../perf/item1/x64_gcc14_base_seed1.csv | 370 ++++++++++++++++++ .../perf/item1/x64_gcc14_base_seed1_rep.csv | 370 ++++++++++++++++++ .../perf/item1/x64_gcc14_base_seed2.csv | 370 ++++++++++++++++++ .../perf/item1/x64_gcc14_base_spot_seed1.csv | 24 ++ .../perf/item1/x64_gcc14_base_spot_seed2.csv | 24 ++ 5 files changed, 1158 insertions(+) create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base_seed1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base_seed1_rep.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base_seed2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed2.csv diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base_seed1.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base_seed1.csv new file mode 100644 index 00000000..9b32ed1a --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base_seed1.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T16:14:14Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2449321,9,8.07,8.04,19.80 +add,inplace,1,1,2431227,9,4.09,4.06,19.87 +add,kernel,1,1,10589208,9,1.89,1.89,20.08 +add,floor,1,1,2067326,9,9.67,9.63,20.10 +add,gmp,1,1,8824048,9,2.27,2.27,20.02 +add,gmpz,1,1,4813055,9,4.16,4.16,20.01 +add,auto,2,2,1141979,9,17.53,17.45,20.07 +add,inplace,2,2,1734809,9,5.84,5.78,20.24 +add,kernel,2,2,8362912,9,2.36,2.34,19.73 +add,floor,2,2,1993522,9,10.02,10.01,20.02 +add,gmp,2,2,8824275,9,2.27,2.27,20.00 +add,gmpz,2,2,4751488,9,4.16,4.16,19.79 +add,auto,4,4,1129671,9,17.61,17.54,19.91 +add,inplace,4,4,1807157,9,5.53,5.52,20.01 +add,kernel,4,4,6504085,9,3.08,3.03,20.08 +add,floor,4,4,1853661,9,10.78,10.77,19.98 +add,gmp,4,4,8007044,9,2.50,2.50,20.00 +add,gmpz,4,4,4603717,9,4.35,4.34,20.05 +add,auto,8,8,1066620,9,18.81,18.71,20.04 +add,inplace,8,8,1386882,9,7.22,7.20,20.03 +add,kernel,8,8,4377349,9,4.58,4.53,20.22 +add,floor,8,8,1629046,9,12.28,12.28,20.02 +add,gmp,8,8,5423668,9,3.69,3.69,20.00 +add,gmpz,8,8,4249059,9,4.65,4.64,19.81 +add,auto,16,16,808479,9,24.78,24.34,20.04 +add,inplace,16,16,865153,9,11.63,11.52,20.08 +add,kernel,16,16,2646873,9,7.56,7.56,20.01 +add,floor,16,16,1305784,9,15.34,15.30,20.06 +add,gmp,16,16,3632084,9,5.49,5.48,19.97 +add,gmpz,16,16,3049710,9,6.51,6.48,19.88 +add,auto,64,64,314712,9,63.61,63.39,20.18 +add,inplace,64,64,256771,9,38.96,38.68,19.99 +add,kernel,64,64,601101,9,33.26,33.19,19.99 +add,floor,64,64,482625,9,41.45,40.60,19.98 +add,gmp,64,64,1294852,9,15.45,15.45,20.02 +add,gmpz,64,64,1212580,9,16.49,16.46,19.99 +add,auto,256,256,89433,9,223.69,223.51,20.00 +add,inplace,256,256,68430,9,146.16,146.07,20.01 +add,kernel,256,256,139805,9,143.00,142.96,19.99 +add,floor,256,256,125865,9,158.85,158.75,20.00 +add,gmp,256,256,255640,9,78.23,78.23,20.01 +add,gmpz,256,256,251618,9,79.51,79.41,20.19 +add,auto,1024,1024,23774,9,841.10,840.80,20.00 +add,inplace,1024,1024,17158,9,582.95,582.80,20.01 +add,kernel,1024,1024,34574,9,578.42,578.34,20.05 +add,floor,1024,1024,33662,9,594.22,594.05,20.01 +add,gmp,1024,1024,51230,9,390.41,390.40,20.00 +add,gmpz,1024,1024,51076,9,391.57,391.54,20.00 +add,auto,2000,2000,11599,9,1724.31,1724.04,20.01 +add,inplace,2000,2000,8811,9,1134.88,1134.68,20.00 +add,kernel,2000,2000,17650,9,1132.72,1132.67,19.99 +add,floor,2000,2000,17300,9,1150.63,1150.34,19.91 +add,gmp,2000,2000,42998,9,465.18,465.16,20.06 +add,gmpz,2000,2000,42435,9,471.21,469.34,19.97 +add,auto,1024,1,71304,9,280.40,280.16,19.99 +add,inplace,1024,1,17248,9,579.75,579.70,20.00 +add,kernel,1024,1,34622,9,577.69,577.68,20.01 +add,floor,1024,1,33698,9,593.53,593.42,20.01 +add,gmp,1024,1,85699,9,233.35,233.26,20.00 +add,gmpz,1024,1,85415,9,234.15,233.82,20.00 +sub,auto,1,1,2219617,9,9.03,8.95,20.01 +sub,inplace,1,1,2500470,9,3.97,3.97,19.89 +sub,kernel,1,1,13236398,9,1.51,1.51,20.00 +sub,floor,1,1,10540923,9,1.90,1.89,20.07 +sub,gmp,1,1,8824181,9,2.27,2.27,20.00 +sub,gmpz,1,1,4603641,9,4.34,4.34,20.03 +sub,auto,2,2,1062368,9,18.80,18.78,19.97 +sub,inplace,2,2,2176615,9,4.60,4.57,20.00 +sub,kernel,2,2,9543947,9,2.09,2.08,19.92 +sub,floor,2,2,2032200,9,9.82,9.82,19.97 +sub,gmp,2,2,8805045,9,2.27,2.27,19.96 +sub,gmpz,2,2,4600603,9,4.35,4.34,20.05 +sub,auto,4,4,1077798,9,18.57,18.52,20.01 +sub,inplace,4,4,1864568,9,5.38,5.36,20.05 +sub,kernel,4,4,6866144,9,2.88,2.83,19.74 +sub,floor,4,4,1888496,9,10.59,10.59,20.01 +sub,gmp,4,4,7995581,9,2.49,2.49,19.90 +sub,gmpz,4,4,4408380,9,4.58,4.54,20.21 +sub,auto,8,8,998449,9,20.23,20.11,20.20 +sub,inplace,8,8,1403038,9,7.13,7.11,20.00 +sub,kernel,8,8,4585226,9,4.37,4.35,20.05 +sub,floor,8,8,1639807,9,12.19,12.15,19.98 +sub,gmp,8,8,5434168,9,3.68,3.68,20.01 +sub,gmpz,8,8,4048183,9,4.96,4.94,20.12 +sub,auto,16,16,789199,9,25.34,25.02,20.01 +sub,inplace,16,16,953400,9,10.50,10.48,20.05 +sub,kernel,16,16,2491804,9,8.02,8.02,19.99 +sub,floor,16,16,1316467,9,15.17,15.15,19.96 +sub,gmp,16,16,3634122,9,5.50,5.50,19.99 +sub,gmpz,16,16,2930611,9,6.81,6.78,19.96 +sub,auto,64,64,304534,9,65.80,65.62,20.05 +sub,inplace,64,64,265432,9,37.84,37.71,20.09 +sub,kernel,64,64,606389,9,32.90,32.69,19.93 +sub,floor,64,64,473938,9,42.21,42.15,20.03 +sub,gmp,64,64,1292582,9,15.45,15.45,19.98 +sub,gmpz,64,64,1193934,9,16.74,16.71,20.00 +sub,auto,256,256,89439,9,223.63,223.48,20.01 +sub,inplace,256,256,68821,9,145.32,145.28,20.01 +sub,kernel,256,256,140037,9,142.83,142.78,20.00 +sub,floor,256,256,126309,9,158.17,158.02,19.99 +sub,gmp,256,256,255403,9,78.25,78.25,19.99 +sub,gmpz,256,256,250410,9,79.85,79.74,19.99 +sub,auto,1024,1024,23727,9,841.59,841.40,19.97 +sub,inplace,1024,1024,17199,9,581.49,581.44,20.01 +sub,kernel,1024,1024,34594,9,578.19,578.12,20.01 +sub,floor,1024,1024,33677,9,594.28,593.68,20.01 +sub,gmp,1024,1024,51302,9,389.84,389.84,20.00 +sub,gmpz,1024,1024,51127,9,391.23,391.18,20.01 +sub,auto,2000,2000,11469,9,1743.29,1743.05,20.00 +sub,inplace,2000,2000,8821,9,1133.71,1133.55,20.00 +sub,kernel,2000,2000,17670,9,1131.93,1131.90,20.04 +sub,floor,2000,2000,17320,9,1149.12,1148.67,19.90 +sub,gmp,2000,2000,42840,9,466.87,466.83,20.00 +sub,gmpz,2000,2000,42712,9,468.40,466.23,19.99 +sub,auto,1024,1,70687,9,282.75,282.04,19.98 +sub,inplace,1024,1,17226,9,579.67,579.63,19.97 +sub,kernel,1024,1,34676,9,576.78,576.77,20.00 +sub,floor,1024,1,33732,9,592.97,592.88,20.00 +sub,gmp,1024,1,85422,9,233.85,233.77,19.98 +sub,gmpz,1024,1,85276,9,234.13,233.75,19.96 +shl,auto,1,13,1223232,9,16.46,16.32,20.12 +shl,inplace,1,13,2459676,9,4.08,4.04,20.07 +shl,kernel,1,13,9626421,9,2.08,2.07,19.99 +shl,kernelip,1,13,5742821,9,1.73,1.71,19.96 +shl,floor,1,13,2115663,9,9.64,9.63,20.41 +shl,gmp,1,13,9626259,9,1.89,1.89,18.19 +shl,gmpz,1,13,5882746,9,3.40,3.40,20.01 +shl,auto,4,13,1071996,9,18.40,18.25,19.71 +shl,inplace,4,13,1944187,9,5.14,5.13,20.00 +shl,kernel,4,13,5839757,9,3.38,3.38,19.83 +shl,kernelip,4,13,3413272,9,2.98,2.93,20.31 +shl,floor,4,13,1762663,9,11.08,10.98,19.52 +shl,gmp,4,13,8145349,9,2.27,2.27,18.46 +shl,gmpz,4,13,5042297,9,3.97,3.97,20.03 +shl,auto,16,13,831039,9,24.15,24.05,20.07 +shl,inplace,16,13,1086551,9,9.19,9.17,19.99 +shl,kernel,16,13,2727619,9,7.31,7.29,19.95 +shl,kernelip,16,13,1407213,9,6.99,6.90,19.80 +shl,floor,16,13,1280673,9,14.96,14.94,19.17 +shl,gmp,16,13,4917755,9,3.97,3.97,19.66 +shl,gmpz,16,13,3508649,9,5.71,5.70,20.06 +shl,auto,256,13,148412,9,134.97,133.28,20.00 +shl,inplace,256,13,107313,9,93.03,92.75,19.98 +shl,kernel,256,13,214111,9,93.47,93.38,20.04 +shl,kernelip,256,13,102324,9,97.76,97.72,20.02 +shl,floor,256,13,177058,9,117.30,117.22,20.78 +shl,gmp,256,13,424784,9,47.21,47.16,20.08 +shl,gmpz,256,13,398173,9,50.38,50.19,20.06 +shl,auto,2000,13,21789,9,917.62,915.20,20.00 +shl,inplace,2000,13,15214,9,657.15,656.08,20.00 +shl,kernel,2000,13,27815,9,719.13,719.00,20.01 +shl,kernelip,2000,13,13981,9,715.33,715.29,20.01 +shl,floor,2000,13,26991,9,739.04,738.60,19.96 +shl,gmp,2000,13,59626,9,335.50,335.42,20.01 +shl,gmpz,2000,13,59054,9,338.54,338.36,19.99 +shl,auto,2000,77,18771,9,1065.49,1063.28,20.00 +shl,inplace,2000,77,13089,9,764.22,764.10,20.01 +shl,kernel,2000,77,23447,9,852.75,851.72,20.00 +shl,kernelip,2000,77,12155,9,822.77,822.20,20.01 +shl,floor,2000,77,22953,9,875.07,871.27,20.07 +shl,gmp,2000,77,59188,9,337.73,337.72,20.02 +shl,gmpz,2000,77,59099,9,338.41,338.33,20.01 +shr,auto,1,13,1979794,9,10.08,10.01,19.94 +shr,inplace,1,13,2716781,9,3.65,3.60,19.81 +shr,kernel,1,13,11754602,9,1.70,1.70,20.03 +shr,floor,1,13,8810080,9,2.27,2.27,19.97 +shr,gmp,1,13,10588463,9,1.89,1.89,20.00 +shr,gmpz,1,13,6216896,9,3.21,3.21,19.99 +shr,auto,4,13,965991,9,20.65,20.56,19.96 +shr,inplace,4,13,2131090,9,4.71,4.67,20.11 +shr,kernel,4,13,5847930,9,3.40,3.40,19.91 +shr,floor,4,13,1703378,9,11.73,11.71,19.99 +shr,gmp,4,13,8720401,9,2.28,2.27,19.93 +shr,gmpz,4,13,5072170,9,3.92,3.91,19.89 +shr,auto,16,13,785685,9,25.42,25.30,19.98 +shr,inplace,16,13,1142645,9,8.74,8.67,19.99 +shr,kernel,16,13,2129972,9,9.39,9.38,19.99 +shr,floor,16,13,1176777,9,16.85,16.79,19.84 +shr,gmp,16,13,4375254,9,4.58,4.57,20.03 +shr,gmpz,16,13,3306568,9,6.09,6.05,20.45 +shr,auto,256,13,146758,9,136.31,135.96,20.00 +shr,inplace,256,13,106744,9,93.74,93.51,20.02 +shr,kernel,256,13,181555,9,110.05,109.87,19.99 +shr,floor,256,13,151380,9,132.06,131.95,20.00 +shr,gmp,256,13,415329,9,48.00,47.89,19.94 +shr,gmpz,256,13,395132,9,50.70,50.56,20.02 +shr,auto,2000,13,20985,9,951.88,951.42,19.99 +shr,inplace,2000,13,15208,9,656.94,656.62,19.99 +shr,kernel,2000,13,24633,9,811.93,811.91,20.00 +shr,floor,2000,13,24014,9,832.96,832.44,20.00 +shr,gmp,2000,13,59549,9,335.93,335.82,20.01 +shr,gmpz,2000,13,59016,9,338.86,338.75,20.01 +shr,auto,2000,77,18426,9,1084.45,1084.04,19.98 +shr,inplace,2000,77,12771,9,765.20,764.50,19.57 +shr,kernel,2000,77,24093,9,830.10,830.09,20.02 +shr,floor,2000,77,23454,9,853.01,852.41,20.01 +shr,gmp,2000,77,59533,9,335.94,335.91,20.01 +shr,gmpz,2000,77,58940,9,339.27,339.18,20.00 +mul,auto,1,1,1062289,9,18.82,18.80,20.03 +mul,gmp,1,1,5869876,9,3.38,3.37,19.87 +mul,gmpz,1,1,5039397,9,3.97,3.97,19.99 +mul,auto,2,2,731838,9,27.40,27.23,20.05 +mul,kernel,2,2,2844433,9,7.60,7.57,21.62 +mul,floor,2,2,1348727,9,14.99,14.88,20.23 +mul,gmp,2,2,5305625,9,3.78,3.76,20.08 +mul,gmpz,2,2,3228462,9,6.08,6.02,19.60 +mul,auto,3,3,683363,9,29.01,28.84,19.85 +mul,kernel,3,3,2391158,9,8.86,8.80,21.20 +mul,floor,3,3,1234413,9,16.46,16.31,20.31 +mul,gmp,3,3,2560367,9,7.88,7.77,20.15 +mul,gmpz,3,3,2024290,9,9.82,9.78,19.89 +mul,auto,4,4,633434,9,31.56,31.53,20.01 +mul,kernel,4,4,1842076,9,11.47,11.36,21.10 +mul,floor,4,4,1086348,9,18.45,18.38,20.05 +mul,gmp,4,4,2031295,9,9.92,9.75,20.06 +mul,gmpz,4,4,1619319,9,12.35,12.32,20.01 +mul,auto,6,6,485853,9,41.43,41.23,20.13 +mul,kernel,6,6,1217369,9,17.16,17.14,20.89 +mul,floor,6,6,818683,9,24.28,24.16,19.87 +mul,gmp,6,6,1272243,9,15.67,15.65,19.96 +mul,gmpz,6,6,1120534,9,17.88,17.85,20.05 +mul,auto,8,8,425349,9,46.94,46.85,19.96 +mul,kernel,8,8,814580,9,24.99,24.95,20.38 +mul,floor,8,8,609593,9,32.48,32.24,19.80 +mul,gmp,8,8,733810,9,27.15,26.81,19.90 +mul,gmpz,8,8,694020,9,28.83,28.61,20.03 +mul,auto,12,12,289092,9,69.11,68.94,20.03 +mul,kernel,12,12,428662,9,48.18,48.13,20.65 +mul,floor,12,12,370965,9,53.97,53.86,20.02 +mul,gmp,12,12,406280,9,49.22,49.20,20.01 +mul,gmpz,12,12,393996,9,50.75,50.74,20.00 +mul,auto,16,16,199929,9,100.14,100.06,20.02 +mul,kernel,16,16,253657,9,79.80,79.72,20.24 +mul,floor,16,16,233958,9,85.46,85.21,20.00 +mul,gmp,16,16,241850,9,82.69,82.64,20.00 +mul,gmpz,16,16,234551,9,85.27,85.24,20.00 +mul,auto,32,32,94478,9,211.90,211.57,20.02 +mul,kernel,32,32,106842,9,188.17,187.47,20.10 +mul,floor,32,32,101548,9,196.94,196.13,20.00 +mul,gmp,32,32,74699,9,267.73,267.70,20.00 +mul,gmpz,32,32,74088,9,269.94,269.87,20.01 +mul,auto,64,64,38704,9,517.23,516.22,20.01 +mul,kernel,64,64,40878,9,498.45,497.60,20.38 +mul,floor,64,64,40184,9,497.39,496.78,20.01 +mul,gmp,64,64,22128,9,903.64,903.30,20.00 +mul,gmpz,64,64,22691,9,876.06,875.74,19.88 +mul,auto,128,128,11631,9,1720.17,1717.80,20.01 +mul,kernel,128,128,11623,9,1716.57,1714.84,19.97 +mul,floor,128,128,11569,9,1728.18,1725.82,20.00 +mul,gmp,128,128,7349,9,2721.24,2720.25,20.00 +mul,gmpz,128,128,7379,9,2710.17,2708.85,20.00 +mul,auto,256,256,3221,9,6207.65,6205.01,20.03 +mul,kernel,256,256,3234,9,6183.79,6173.29,20.00 +mul,floor,256,256,3226,9,6198.49,6185.04,20.00 +mul,gmp,256,256,2578,9,7759.40,7758.70,20.00 +mul,gmpz,256,256,2572,9,7777.86,7774.36,20.00 +mul,auto,512,512,1038,9,19291.51,19272.83,20.04 +mul,kernel,512,512,1045,9,19145.36,19127.60,20.02 +mul,floor,512,512,1043,9,19170.20,19149.41,20.00 +mul,gmp,512,512,953,9,20992.28,20968.45,20.00 +mul,gmpz,512,512,960,9,20851.99,20850.40,20.03 +mul,auto,1000,1000,334,9,59817.17,59722.29,19.98 +mul,kernel,1000,1000,337,9,59461.71,59419.15,20.04 +mul,floor,1000,1000,337,9,59406.20,59366.18,20.02 +mul,gmp,1000,1000,375,9,53379.49,53336.41,20.02 +mul,gmpz,1000,1000,375,9,53475.41,53440.06,20.06 +mul,auto,2000,2000,114,9,176892.45,176784.43,20.17 +mul,kernel,2000,2000,114,9,176449.38,176366.66,20.12 +mul,floor,2000,2000,114,9,176403.16,176161.12,20.11 +mul,gmp,2000,2000,139,9,143938.91,143917.90,20.04 +mul,gmpz,2000,2000,139,9,144053.19,143971.47,20.02 +mul,auto,2000,100,1122,9,17826.17,17822.76,20.00 +mul,kernel,2000,100,1134,9,17645.55,17642.45,20.01 +mul,floor,2000,100,1132,9,17673.47,17667.22,20.05 +mul,gmp,2000,100,562,9,35674.81,35622.32,20.04 +mul,gmpz,2000,100,560,9,35686.87,35645.65,19.99 +sqr,auto,4,4,613667,9,32.77,32.58,20.19 +sqr,kernel,4,4,2252042,9,8.92,8.88,20.08 +sqr,floor,4,4,1230614,9,16.68,16.62,20.53 +sqr,gmp,4,4,3520345,9,5.69,5.63,20.01 +sqr,gmpz,4,4,2314961,9,8.66,8.61,20.05 +sqr,auto,16,16,251679,9,80.02,79.77,20.13 +sqr,kernel,16,16,356033,9,56.21,56.14,20.01 +sqr,floor,16,16,318840,9,63.42,63.35,20.22 +sqr,gmp,16,16,394427,9,50.73,50.69,20.02 +sqr,gmpz,16,16,383889,9,52.09,52.07,20.02 +sqr,auto,64,64,65922,9,303.58,303.25,20.04 +sqr,kernel,64,64,73060,9,273.67,273.27,19.99 +sqr,floor,64,64,72593,9,281.76,280.55,20.46 +sqr,gmp,64,64,36394,9,549.22,548.97,19.99 +sqr,gmpz,64,64,36309,9,551.23,550.64,20.02 +sqr,auto,512,512,1870,9,10707.00,10698.11,20.02 +sqr,kernel,512,512,1893,9,10566.82,10550.91,20.00 +sqr,floor,512,512,1892,9,10564.06,10550.28,20.00 +sqr,gmp,512,512,1320,9,15155.46,15151.21,20.03 +sqr,gmpz,512,512,1319,9,15161.34,15154.94,20.00 +sqr,auto,2000,2000,200,9,100241.88,100170.32,20.05 +sqr,kernel,2000,2000,202,9,99569.03,99471.31,20.11 +sqr,floor,2000,2000,202,9,99403.17,99213.06,20.07 +sqr,gmp,2000,2000,199,9,100558.73,100509.94,20.01 +sqr,gmpz,2000,2000,199,9,100617.68,100559.91,20.03 +divrem,auto,2,1,475647,9,41.87,41.71,19.91 +divrem,kernel,2,1,3683330,9,5.43,5.35,20.05 +divrem,floor,2,1,1599608,9,12.54,12.51,20.05 +divrem,gmp,2,1,2300685,9,8.69,8.68,19.99 +divrem,gmpz,2,1,1514197,9,13.16,13.14,19.93 +divrem,auto,8,4,188577,9,105.82,105.57,19.95 +divrem,kernel,8,4,501570,9,39.67,39.55,19.92 +divrem,floor,8,4,371578,9,53.88,53.10,19.98 +divrem,gmp,8,4,503492,9,39.97,39.87,20.17 +divrem,gmpz,8,4,479506,9,41.57,41.37,19.94 +divrem,auto,32,16,54174,9,370.41,369.94,20.07 +divrem,kernel,32,16,69491,9,287.47,286.94,19.98 +divrem,floor,32,16,65896,9,302.77,302.20,19.95 +divrem,gmp,32,16,104113,9,191.84,191.01,19.97 +divrem,gmpz,32,16,102258,9,195.25,194.23,19.96 +divrem,auto,128,64,5916,9,3338.53,3336.90,19.77 +divrem,kernel,128,64,6261,9,3191.57,3191.18,19.99 +divrem,floor,128,64,6241,9,3204.89,3202.32,20.00 +divrem,gmp,128,64,11634,9,1720.55,1718.42,20.03 +divrem,gmpz,128,64,11566,9,1729.39,1728.90,20.00 +divrem,auto,512,256,685,9,29241.89,29231.86,20.03 +divrem,kernel,512,256,696,9,28758.95,28747.08,20.04 +divrem,floor,512,256,691,9,28940.79,28933.10,20.00 +divrem,gmp,512,256,1233,9,16231.72,16229.35,20.01 +divrem,gmpz,512,256,1230,9,16266.52,16263.89,20.01 +divrem,auto,2000,1000,111,9,181535.92,181386.13,20.25 +divrem,kernel,2000,1000,111,9,180495.57,180411.42,20.05 +divrem,floor,2000,1000,111,9,180421.23,180364.23,20.03 +divrem,gmp,2000,1000,146,9,137789.51,137762.71,20.12 +divrem,gmpz,2000,1000,146,9,137799.95,137777.72,20.12 +divrem,auto,4000,2000,43,9,470134.70,469907.16,20.22 +divrem,kernel,4000,2000,43,9,466234.47,466029.14,20.05 +divrem,floor,4000,2000,43,9,465013.67,464897.35,20.00 +divrem,gmp,4000,2000,60,9,334292.82,333955.80,20.07 +divrem,gmpz,4000,2000,60,9,335081.82,334947.18,20.11 +divrem,auto,2000,100,140,9,143634.89,143602.21,20.11 +divrem,kernel,2000,100,141,9,142209.70,142198.04,20.06 +divrem,floor,2000,100,141,9,142296.45,142251.62,20.07 +divrem,gmp,2000,100,276,9,72640.66,72616.89,20.05 +divrem,gmpz,2000,100,276,9,72587.66,72556.21,20.04 +divrem,auto,65536,1,103,9,194096.37,193661.17,20.01 +divrem,kernel,65536,1,120,9,167213.99,166994.21,20.06 +divrem,floor,65536,1,115,9,174688.11,174604.18,20.10 +divrem,gmp,65536,1,136,9,148110.61,148097.95,20.17 +divrem,gmpz,65536,1,136,9,148109.35,148098.13,20.15 +fromchars,auto,4,10,105977,9,188.55,188.15,19.99 +fromchars,kernel,4,10,533084,9,37.44,37.38,19.97 +fromchars,gmp,4,10,633828,9,31.26,31.15,19.83 +fromchars,gmpz,4,10,301296,9,66.36,66.04,19.99 +fromchars,auto,16,10,46722,9,428.65,424.18,20.00 +fromchars,kernel,16,10,97132,9,207.64,205.02,20.19 +fromchars,gmp,16,10,159230,9,124.95,124.47,19.90 +fromchars,gmpz,16,10,78031,9,256.66,255.98,20.05 +fromchars,auto,64,10,7297,9,2838.04,2751.90,20.71 +fromchars,kernel,64,10,9316,9,2167.86,2012.64,20.00 +fromchars,gmp,64,10,22561,9,886.29,886.09,20.00 +fromchars,gmpz,64,10,14461,9,1383.55,1382.63,20.02 +fromchars,auto,256,10,702,9,28064.43,27616.00,20.00 +fromchars,kernel,256,10,790,9,25734.94,24942.48,20.41 +fromchars,gmp,256,10,2504,9,7977.88,7972.78,19.99 +fromchars,gmpz,256,10,2016,9,9884.60,9878.90,19.93 +fromchars,auto,2000,10,48,9,423411.81,421901.06,20.32 +fromchars,kernel,2000,10,50,9,401119.68,400926.48,20.07 +fromchars,gmp,2000,10,110,9,182704.76,182625.81,20.10 +fromchars,gmpz,2000,10,102,9,197727.52,197690.04,20.17 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base_seed1_rep.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base_seed1_rep.csv new file mode 100644 index 00000000..12506089 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base_seed1_rep.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T16:17:34Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2302129,9,8.06,8.02,18.72 +add,inplace,1,1,2458162,9,4.10,4.08,20.20 +add,kernel,1,1,10589007,9,1.89,1.89,20.00 +add,floor,1,1,2072135,9,9.65,9.63,20.01 +add,gmp,1,1,8644561,9,2.27,2.27,19.63 +add,gmpz,1,1,4811693,9,4.16,4.16,20.00 +add,auto,2,2,1147003,9,17.55,17.45,20.13 +add,inplace,2,2,1732199,9,5.82,5.77,20.25 +add,kernel,2,2,8526608,9,2.37,2.35,20.22 +add,floor,2,2,1992402,9,10.06,10.01,20.02 +add,gmp,2,2,8781818,9,2.27,2.27,19.91 +add,gmpz,2,2,4813085,9,4.16,4.16,20.01 +add,auto,4,4,1113870,9,17.78,17.71,19.80 +add,inplace,4,4,1811155,9,5.54,5.52,20.11 +add,kernel,4,4,6466080,9,3.05,3.02,19.83 +add,floor,4,4,1851691,9,10.78,10.77,19.96 +add,gmp,4,4,8010564,9,2.50,2.50,20.02 +add,gmpz,4,4,4603838,9,4.34,4.34,20.03 +add,auto,8,8,1050403,9,19.15,19.08,20.11 +add,inplace,8,8,1376097,9,7.25,7.24,19.96 +add,kernel,8,8,4361304,9,4.64,4.53,20.25 +add,floor,8,8,1629017,9,12.28,12.28,20.01 +add,gmp,8,8,5425103,9,3.69,3.69,20.01 +add,gmpz,8,8,4278251,9,4.66,4.64,19.95 +add,auto,16,16,813377,9,25.03,24.51,20.26 +add,inplace,16,16,864120,9,11.59,11.54,20.02 +add,kernel,16,16,2094765,9,9.55,9.55,20.01 +add,floor,16,16,1294218,9,15.45,15.44,20.01 +add,gmp,16,16,3337316,9,5.99,5.98,20.02 +add,gmpz,16,16,3062582,9,6.54,6.50,20.02 +add,auto,64,64,313681,9,63.90,63.68,20.04 +add,inplace,64,64,256870,9,39.09,38.84,20.07 +add,kernel,64,64,594706,9,33.63,33.61,20.00 +add,floor,64,64,473139,9,42.13,42.05,19.98 +add,gmp,64,64,1294670,9,15.45,15.45,20.00 +add,gmpz,64,64,1212687,9,16.49,16.46,20.00 +add,auto,256,256,88596,9,225.73,225.66,20.00 +add,inplace,256,256,68482,9,146.12,146.07,20.02 +add,kernel,256,256,140320,9,142.55,142.52,20.02 +add,floor,256,256,125982,9,158.84,158.61,20.01 +add,gmp,256,256,255643,9,78.23,78.23,20.00 +add,gmpz,256,256,251319,9,79.59,79.48,20.01 +add,auto,1024,1024,23720,9,842.90,842.66,20.00 +add,inplace,1024,1024,17119,9,583.96,583.95,20.00 +add,kernel,1024,1024,34578,9,578.38,578.32,20.00 +add,floor,1024,1024,32970,9,596.03,594.19,19.71 +add,gmp,1024,1024,51229,9,390.42,390.41,20.00 +add,gmpz,1024,1024,51058,9,391.61,391.57,20.01 +add,auto,2000,2000,11600,9,1724.22,1723.83,20.00 +add,inplace,2000,2000,8812,9,1134.80,1134.67,20.00 +add,kernel,2000,2000,17662,9,1132.32,1132.30,20.00 +add,floor,2000,2000,17381,9,1150.62,1150.41,20.00 +add,gmp,2000,2000,43431,9,459.08,459.06,19.94 +add,gmpz,2000,2000,42133,9,474.72,472.98,19.99 +add,auto,1024,1,71053,9,281.23,280.89,19.98 +add,inplace,1024,1,17242,9,580.03,579.99,20.00 +add,kernel,1024,1,34618,9,577.73,577.71,20.00 +add,floor,1024,1,33677,9,593.88,593.78,20.00 +add,gmp,1024,1,85868,9,232.76,232.47,19.99 +add,gmpz,1024,1,85460,9,233.99,233.64,19.99 +sub,auto,1,1,2228730,9,8.99,8.93,20.03 +sub,inplace,1,1,2518261,9,3.98,3.97,20.08 +sub,kernel,1,1,13236363,9,1.51,1.51,20.01 +sub,floor,1,1,10486505,9,1.90,1.89,19.87 +sub,gmp,1,1,8742414,9,2.27,2.27,19.88 +sub,gmpz,1,1,4603761,9,4.34,4.34,20.02 +sub,auto,2,2,1057033,9,18.80,18.71,19.86 +sub,inplace,2,2,2180994,9,4.59,4.56,19.99 +sub,kernel,2,2,9544126,9,2.10,2.08,19.97 +sub,floor,2,2,2036313,9,9.82,9.82,20.01 +sub,gmp,2,2,8810583,9,2.27,2.27,19.98 +sub,gmpz,2,2,4603778,9,4.34,4.34,20.01 +sub,auto,4,4,1068392,9,18.72,18.65,20.01 +sub,inplace,4,4,1859359,9,5.38,5.36,19.99 +sub,kernel,4,4,6997183,9,2.86,2.83,20.04 +sub,floor,4,4,1889955,9,10.59,10.58,20.03 +sub,gmp,4,4,8042988,9,2.49,2.49,20.01 +sub,gmpz,4,4,4318729,9,4.57,4.53,19.84 +sub,auto,8,8,971873,9,20.59,20.53,20.04 +sub,inplace,8,8,1402460,9,7.12,7.11,19.97 +sub,kernel,8,8,4592402,9,4.39,4.35,20.16 +sub,floor,8,8,1643219,9,12.18,12.15,20.02 +sub,gmp,8,8,5433620,9,3.68,3.68,20.01 +sub,gmpz,8,8,4026237,9,4.95,4.94,19.95 +sub,auto,16,16,790233,9,25.35,24.97,20.00 +sub,inplace,16,16,952953,9,10.50,10.48,20.02 +sub,kernel,16,16,2493017,9,8.02,8.02,20.00 +sub,floor,16,16,1317396,9,15.16,15.15,20.01 +sub,gmp,16,16,3634935,9,5.50,5.50,20.00 +sub,gmpz,16,16,2953562,9,6.80,6.75,20.06 +sub,auto,64,64,302972,9,65.85,65.54,19.94 +sub,inplace,64,64,261023,9,38.34,38.23,20.01 +sub,kernel,64,64,597068,9,33.42,33.17,19.94 +sub,floor,64,64,474651,9,42.11,42.06,20.00 +sub,gmp,64,64,1287469,9,15.53,15.52,20.09 +sub,gmpz,64,64,1194601,9,16.74,16.71,20.01 +sub,auto,256,256,89411,9,223.69,223.52,20.01 +sub,inplace,256,256,68417,9,146.16,146.14,20.00 +sub,kernel,256,256,140026,9,142.82,142.81,20.00 +sub,floor,256,256,126201,9,158.43,158.05,19.99 +sub,gmp,256,256,255688,9,78.23,78.22,20.00 +sub,gmpz,256,256,250193,9,79.85,79.75,19.98 +sub,auto,1024,1024,23751,9,841.97,841.76,20.00 +sub,inplace,1024,1024,17196,9,581.55,581.51,20.00 +sub,kernel,1024,1024,34592,9,578.22,578.12,20.01 +sub,floor,1024,1024,33675,9,594.29,593.97,20.02 +sub,gmp,1024,1024,51303,9,389.84,389.83,20.00 +sub,gmpz,1024,1024,51126,9,391.18,391.17,20.00 +sub,auto,2000,2000,11506,9,1738.27,1738.15,20.00 +sub,inplace,2000,2000,8816,9,1134.15,1134.04,20.00 +sub,kernel,2000,2000,17644,9,1132.56,1132.49,19.98 +sub,floor,2000,2000,17405,9,1149.27,1148.71,20.05 +sub,gmp,2000,2000,43886,9,453.42,453.38,19.90 +sub,gmpz,2000,2000,42011,9,475.75,475.71,20.00 +sub,auto,1024,1,70818,9,282.10,281.93,19.98 +sub,inplace,1024,1,17250,9,579.71,579.63,20.00 +sub,kernel,1024,1,34675,9,576.79,576.77,20.00 +sub,floor,1024,1,33725,9,593.03,592.86,20.00 +sub,gmp,1024,1,85525,9,233.79,233.72,20.00 +sub,gmpz,1024,1,85418,9,234.05,233.68,20.07 +shl,auto,1,13,1217883,9,16.46,16.41,20.04 +shl,inplace,1,13,2442994,9,4.07,4.05,19.88 +shl,kernel,1,13,9626469,9,2.08,2.07,19.99 +shl,kernelip,1,13,5643619,9,1.75,1.72,19.75 +shl,floor,1,13,2117662,9,9.64,9.63,20.41 +shl,gmp,1,13,9626002,9,1.89,1.89,18.19 +shl,gmpz,1,13,5882721,9,3.40,3.40,20.00 +shl,auto,4,13,1043662,9,18.92,18.71,19.73 +shl,inplace,4,13,1908028,9,5.16,5.15,19.72 +shl,kernel,4,13,4304665,9,4.65,4.64,20.04 +shl,kernelip,4,13,3418478,9,2.92,2.90,20.04 +shl,floor,4,13,1733536,9,11.20,11.18,19.42 +shl,gmp,4,13,8098220,9,2.30,2.29,18.66 +shl,gmpz,4,13,5019935,9,3.99,3.98,20.06 +shl,auto,16,13,820312,9,24.47,24.33,20.08 +shl,inplace,16,13,1090241,9,9.18,9.15,20.09 +shl,kernel,16,13,2638283,9,7.46,7.40,20.06 +shl,kernelip,16,13,1420978,9,7.10,7.00,20.20 +shl,floor,16,13,1273767,9,15.21,15.13,19.37 +shl,gmp,16,13,4942715,9,4.04,4.03,19.97 +shl,gmpz,16,13,3452835,9,5.80,5.77,20.03 +shl,auto,256,13,148950,9,133.19,132.37,19.93 +shl,inplace,256,13,107464,9,93.13,92.81,20.01 +shl,kernel,256,13,214042,9,93.41,93.28,19.99 +shl,kernelip,256,13,102226,9,97.80,97.70,20.15 +shl,floor,256,13,167865,9,118.82,116.63,20.20 +shl,gmp,256,13,424047,9,47.30,47.19,20.06 +shl,gmpz,256,13,396059,9,50.42,50.17,19.97 +shl,auto,2000,13,21831,9,916.15,914.88,20.00 +shl,inplace,2000,13,15203,9,656.92,656.24,19.98 +shl,kernel,2000,13,27676,9,719.39,719.11,19.91 +shl,kernelip,2000,13,13981,9,715.34,715.29,20.01 +shl,floor,2000,13,27130,9,738.71,738.42,20.04 +shl,gmp,2000,13,59608,9,335.47,335.36,20.00 +shl,gmpz,2000,13,58311,9,349.14,338.80,20.50 +shl,auto,2000,77,18769,9,1064.92,1061.19,19.99 +shl,inplace,2000,77,13073,9,765.14,764.21,20.01 +shl,kernel,2000,77,23494,9,852.50,851.11,20.03 +shl,kernelip,2000,77,12161,9,822.94,822.32,20.02 +shl,floor,2000,77,22919,9,873.01,871.15,20.01 +shl,gmp,2000,77,59168,9,337.72,337.72,19.99 +shl,gmpz,2000,77,59106,9,338.41,338.38,20.04 +shr,auto,1,13,1958635,9,10.09,10.02,19.73 +shr,inplace,1,13,2784690,9,3.63,3.56,20.25 +shr,kernel,1,13,11755951,9,1.75,1.70,20.54 +shr,floor,1,13,8572871,9,2.27,2.27,19.43 +shr,gmp,1,13,10588904,9,1.89,1.89,20.00 +shr,gmpz,1,13,6197678,9,3.23,3.22,20.03 +shr,auto,4,13,956684,9,20.92,20.85,20.01 +shr,inplace,4,13,2158819,9,4.68,4.65,20.28 +shr,kernel,4,13,5884351,9,3.41,3.40,20.06 +shr,floor,4,13,1698610,9,11.83,11.76,20.08 +shr,gmp,4,13,8623752,9,2.33,2.31,20.08 +shr,gmpz,4,13,5023259,9,3.98,3.95,19.96 +shr,auto,16,13,777502,9,25.98,25.67,20.18 +shr,inplace,16,13,1103847,9,8.76,8.71,19.38 +shr,kernel,16,13,2508535,9,8.04,7.96,20.18 +shr,floor,16,13,1194384,9,16.74,16.66,20.02 +shr,gmp,16,13,4667554,9,4.29,4.28,20.03 +shr,gmpz,16,13,3212315,9,6.15,6.11,19.76 +shr,auto,256,13,146020,9,136.09,135.88,19.88 +shr,inplace,256,13,106278,9,93.78,93.52,19.93 +shr,kernel,256,13,181454,9,110.25,110.00,20.01 +shr,floor,256,13,152397,9,131.33,131.15,20.01 +shr,gmp,256,13,416602,9,48.07,47.82,20.13 +shr,gmpz,256,13,380863,9,51.13,50.60,19.64 +shr,auto,2000,13,21072,9,951.42,950.24,20.05 +shr,inplace,2000,13,15230,9,657.55,656.76,20.05 +shr,kernel,2000,13,24633,9,811.91,811.89,20.00 +shr,floor,2000,13,24010,9,832.98,832.63,20.00 +shr,gmp,2000,13,59220,9,337.72,337.62,20.00 +shr,gmpz,2000,13,59022,9,338.84,338.71,20.01 +shr,auto,2000,77,18441,9,1084.57,1084.16,20.00 +shr,inplace,2000,77,13070,9,765.04,764.67,20.00 +shr,kernel,2000,77,24076,9,830.11,830.08,20.08 +shr,floor,2000,77,23423,9,873.85,853.38,20.55 +shr,gmp,2000,77,59540,9,335.93,335.92,20.00 +shr,gmpz,2000,77,58952,9,339.23,339.17,20.00 +mul,auto,1,1,1063823,9,18.83,18.81,20.05 +mul,gmp,1,1,5907045,9,3.38,3.35,19.94 +mul,gmpz,1,1,5042394,9,3.97,3.97,20.00 +mul,auto,2,2,728303,9,27.47,27.32,20.03 +mul,kernel,2,2,2816436,9,7.54,7.48,21.20 +mul,floor,2,2,1330702,9,15.03,14.97,20.04 +mul,gmp,2,2,5317356,9,3.78,3.77,20.10 +mul,gmpz,2,2,3212243,9,6.18,6.02,19.95 +mul,auto,3,3,675194,9,29.50,29.42,19.92 +mul,kernel,3,3,2351673,9,9.00,8.96,21.15 +mul,floor,3,3,1221935,9,16.63,16.52,20.37 +mul,gmp,3,3,2579943,9,7.79,7.72,20.11 +mul,gmpz,3,3,2032686,9,9.82,9.78,19.97 +mul,auto,4,4,635995,9,31.55,31.36,20.04 +mul,kernel,4,4,1910347,9,10.96,10.90,20.94 +mul,floor,4,4,1083824,9,18.57,18.52,20.17 +mul,gmp,4,4,2101127,9,9.49,9.48,19.96 +mul,gmpz,4,4,1623562,9,12.29,11.94,20.16 +mul,auto,6,6,487047,9,41.15,40.91,20.04 +mul,kernel,6,6,1214169,9,17.17,17.13,20.85 +mul,floor,6,6,817802,9,24.48,24.28,20.01 +mul,gmp,6,6,1275682,9,15.69,15.64,20.00 +mul,gmpz,6,6,1120264,9,17.90,17.86,20.05 +mul,auto,8,8,431607,9,46.28,46.23,20.05 +mul,kernel,8,8,822884,9,25.00,24.96,20.62 +mul,floor,8,8,617746,9,32.16,32.00,19.88 +mul,gmp,8,8,732826,9,27.35,26.98,19.98 +mul,gmpz,8,8,696300,9,30.06,28.90,20.93 +mul,auto,12,12,289661,9,69.01,68.84,19.99 +mul,kernel,12,12,429887,9,47.05,47.03,20.27 +mul,floor,12,12,371019,9,53.98,53.90,20.04 +mul,gmp,12,12,405186,9,49.11,49.10,19.92 +mul,gmpz,12,12,394142,9,50.76,50.74,20.00 +mul,auto,16,16,197539,9,101.36,101.27,20.03 +mul,kernel,16,16,253271,9,78.86,78.81,19.97 +mul,floor,16,16,232383,9,86.21,85.95,20.04 +mul,gmp,16,16,232050,9,85.80,82.98,19.89 +mul,gmpz,16,16,237084,9,84.38,84.35,20.01 +mul,auto,32,32,94535,9,211.07,210.50,19.96 +mul,kernel,32,32,105626,9,188.63,188.37,19.93 +mul,floor,32,32,101204,9,196.92,196.37,19.93 +mul,gmp,32,32,74730,9,267.54,267.43,19.99 +mul,gmpz,32,32,74048,9,270.17,270.04,20.01 +mul,auto,64,64,38748,9,515.73,514.98,19.98 +mul,kernel,64,64,41188,9,482.22,481.02,19.86 +mul,floor,64,64,40577,9,493.74,492.66,20.03 +mul,gmp,64,64,22982,9,873.82,860.20,20.18 +mul,gmpz,64,64,22461,9,861.88,861.56,19.38 +mul,auto,128,128,11481,9,1743.46,1741.45,20.04 +mul,kernel,128,128,11779,9,1694.80,1693.24,19.97 +mul,floor,128,128,11709,9,1705.50,1703.20,19.98 +mul,gmp,128,128,7112,9,2809.35,2808.82,19.98 +mul,gmpz,128,128,7259,9,2755.22,2754.49,20.01 +mul,auto,256,256,3216,9,6221.65,6217.15,20.01 +mul,kernel,256,256,3225,9,6183.07,6177.09,19.94 +mul,floor,256,256,3228,9,6200.94,6193.52,20.02 +mul,gmp,256,256,2573,9,7762.11,7759.49,20.10 +mul,gmpz,256,256,2395,9,7890.89,7746.72,18.98 +mul,auto,512,512,1039,9,19263.42,19241.38,20.01 +mul,kernel,512,512,1045,9,19153.64,19120.45,20.01 +mul,floor,512,512,1043,9,19168.38,19128.51,20.00 +mul,gmp,512,512,962,9,20803.62,20799.10,20.02 +mul,gmpz,512,512,959,9,20867.23,20859.34,20.01 +mul,auto,1000,1000,333,9,59934.38,59897.78,19.97 +mul,kernel,1000,1000,336,9,59605.40,59537.22,20.03 +mul,floor,1000,1000,337,9,59519.90,59480.93,20.06 +mul,gmp,1000,1000,374,9,53575.94,53569.07,20.08 +mul,gmpz,1000,1000,373,9,55335.66,53741.05,20.71 +mul,auto,2000,2000,113,9,177297.24,177010.29,20.08 +mul,kernel,2000,2000,114,9,176188.09,176062.68,20.12 +mul,floor,2000,2000,114,9,176499.87,176386.02,20.13 +mul,gmp,2000,2000,139,9,143942.89,143926.68,20.03 +mul,gmpz,2000,2000,139,9,144054.53,143974.09,20.02 +mul,auto,2000,100,1123,9,17829.07,17823.32,20.03 +mul,kernel,2000,100,1132,9,17668.16,17662.33,20.01 +mul,floor,2000,100,1131,9,17690.76,17680.65,20.01 +mul,gmp,2000,100,556,9,35979.15,35939.72,20.01 +mul,gmpz,2000,100,550,9,37258.27,36077.72,20.49 +sqr,auto,4,4,598611,9,33.36,33.20,19.97 +sqr,kernel,4,4,2193665,9,9.07,9.05,19.95 +sqr,floor,4,4,1214131,9,16.91,16.88,20.54 +sqr,gmp,4,4,3463257,9,5.78,5.73,20.03 +sqr,gmpz,4,4,2292456,9,8.69,8.66,19.93 +sqr,auto,16,16,250182,9,79.72,79.58,19.95 +sqr,kernel,16,16,325338,9,61.20,61.15,19.91 +sqr,floor,16,16,317471,9,62.95,62.93,20.34 +sqr,gmp,16,16,400701,9,49.91,49.88,20.00 +sqr,gmpz,16,16,383823,9,53.15,52.07,20.49 +sqr,auto,64,64,65560,9,298.59,298.22,19.59 +sqr,kernel,64,64,73934,9,270.48,270.25,20.00 +sqr,floor,64,64,72308,9,282.14,281.60,20.40 +sqr,gmp,64,64,36169,9,550.33,549.93,19.91 +sqr,gmpz,64,64,36276,9,551.30,551.15,20.00 +sqr,auto,512,512,1833,9,10919.84,10913.00,20.02 +sqr,kernel,512,512,1901,9,10518.86,10511.24,20.00 +sqr,floor,512,512,1900,9,10534.79,10530.59,20.02 +sqr,gmp,512,512,1293,9,15146.29,15125.77,19.62 +sqr,gmpz,512,512,1318,9,15198.56,15187.85,20.21 +sqr,auto,2000,2000,193,9,98809.07,98632.41,19.31 +sqr,kernel,2000,2000,204,9,98071.35,98044.75,20.01 +sqr,floor,2000,2000,204,9,98181.32,98140.40,20.03 +sqr,gmp,2000,2000,199,9,100632.82,100596.96,20.03 +sqr,gmpz,2000,2000,199,9,100606.46,100521.32,20.05 +divrem,auto,2,1,479491,9,41.93,41.72,20.09 +divrem,kernel,2,1,3637936,9,5.44,5.41,19.91 +divrem,floor,2,1,1587384,9,12.69,12.60,20.11 +divrem,gmp,2,1,2303878,9,8.79,8.67,20.30 +divrem,gmpz,2,1,1468257,9,13.18,13.15,19.40 +divrem,auto,8,4,188435,9,105.97,105.63,19.99 +divrem,kernel,8,4,521944,9,38.41,38.18,20.08 +divrem,floor,8,4,369883,9,53.73,53.34,19.89 +divrem,gmp,8,4,499183,9,40.01,39.88,20.00 +divrem,gmpz,8,4,481290,9,41.61,41.47,20.04 +divrem,auto,32,16,54160,9,369.34,368.36,20.01 +divrem,kernel,32,16,69282,9,288.08,287.27,19.96 +divrem,floor,32,16,65399,9,309.67,305.57,20.34 +divrem,gmp,32,16,100937,9,191.80,191.09,19.39 +divrem,gmpz,32,16,102999,9,194.58,193.80,20.03 +divrem,auto,128,64,5786,9,3454.39,3453.77,19.99 +divrem,kernel,128,64,6233,9,3210.55,3208.79,20.03 +divrem,floor,128,64,6227,9,3211.64,3209.33,20.00 +divrem,gmp,128,64,11440,9,1747.25,1745.39,19.99 +divrem,gmpz,128,64,11592,9,1726.11,1725.22,20.01 +divrem,auto,512,256,676,9,29626.89,29618.00,20.03 +divrem,kernel,512,256,694,9,28886.54,28830.07,20.05 +divrem,floor,512,256,682,9,29386.20,29343.38,20.13 +divrem,gmp,512,256,1184,9,16261.80,16258.13,19.55 +divrem,gmpz,512,256,1236,9,16193.66,16189.28,20.02 +divrem,auto,2000,1000,111,9,181711.42,181638.68,20.18 +divrem,kernel,2000,1000,111,9,181631.76,181137.12,20.22 +divrem,floor,2000,1000,110,9,181901.36,181347.36,20.01 +divrem,gmp,2000,1000,145,9,138057.81,138013.25,20.03 +divrem,gmpz,2000,1000,146,9,137872.27,137828.13,20.13 +divrem,auto,4000,2000,43,9,467922.60,466571.05,20.11 +divrem,kernel,4000,2000,43,9,469294.56,467115.74,20.19 +divrem,floor,4000,2000,43,9,473293.37,471403.72,20.43 +divrem,gmp,4000,2000,59,9,345134.75,333351.98,20.21 +divrem,gmpz,4000,2000,60,9,334079.38,333839.98,20.04 +divrem,auto,2000,100,139,9,144105.47,144078.61,20.06 +divrem,kernel,2000,100,141,9,141833.86,141768.74,20.02 +divrem,floor,2000,100,141,9,141879.82,141823.31,20.01 +divrem,gmp,2000,100,276,9,72697.84,72655.97,20.06 +divrem,gmpz,2000,100,275,9,72752.93,72725.81,20.01 +divrem,auto,65536,1,103,9,194285.92,193768.80,20.01 +divrem,kernel,65536,1,120,9,167263.07,166962.62,20.07 +divrem,floor,65536,1,115,9,174737.60,174550.65,20.09 +divrem,gmp,65536,1,135,9,153238.89,148161.56,20.63 +divrem,gmpz,65536,1,136,9,148126.29,148108.49,20.15 +fromchars,auto,4,10,106568,9,188.01,187.78,20.05 +fromchars,kernel,4,10,534219,9,37.48,37.40,20.02 +fromchars,gmp,4,10,640345,9,31.25,31.12,20.01 +fromchars,gmpz,4,10,300216,9,66.30,66.18,19.91 +fromchars,auto,16,10,45651,9,438.11,432.58,19.98 +fromchars,kernel,16,10,97657,9,208.69,202.59,20.26 +fromchars,gmp,16,10,160446,9,124.67,124.30,20.01 +fromchars,gmpz,16,10,77939,9,256.32,256.09,20.02 +fromchars,auto,64,10,6816,9,2872.57,2830.40,19.74 +fromchars,kernel,64,10,9456,9,2119.45,2049.68,19.90 +fromchars,gmp,64,10,22889,9,873.35,872.86,19.99 +fromchars,gmpz,64,10,14693,9,1401.17,1360.45,20.51 +fromchars,auto,256,10,696,9,28070.30,28003.57,19.65 +fromchars,kernel,256,10,754,9,25501.70,25055.23,19.38 +fromchars,gmp,256,10,2481,9,8055.80,8050.08,20.03 +fromchars,gmpz,256,10,2008,9,9961.16,9957.63,20.02 +fromchars,auto,2000,10,48,9,421653.69,421526.92,20.25 +fromchars,kernel,2000,10,50,9,401134.02,401109.66,20.07 +fromchars,gmp,2000,10,110,9,183125.19,183096.29,20.14 +fromchars,gmpz,2000,10,101,9,198036.61,197970.13,20.01 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base_seed2.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base_seed2.csv new file mode 100644 index 00000000..e923b482 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base_seed2.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T16:15:45Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2448874,9,8.08,8.02,19.81 +add,inplace,1,1,2462453,9,4.08,4.06,20.12 +add,kernel,1,1,10588928,9,1.89,1.89,20.00 +add,floor,1,1,2075873,9,9.67,9.64,20.07 +add,gmp,1,1,8824048,9,2.27,2.27,20.00 +add,gmpz,1,1,4812888,9,4.16,4.16,20.00 +add,auto,2,2,1144540,9,17.49,17.45,20.02 +add,inplace,2,2,1690331,9,5.83,5.80,19.78 +add,kernel,2,2,8478078,9,2.36,2.31,20.04 +add,floor,2,2,1994131,9,10.03,10.01,20.03 +add,gmp,2,2,8824183,9,2.27,2.27,20.00 +add,gmpz,2,2,4813060,9,4.16,4.16,20.02 +add,auto,4,4,1134398,9,17.76,17.59,20.10 +add,inplace,4,4,1795623,9,5.55,5.52,19.93 +add,kernel,4,4,6297307,9,3.08,3.03,19.45 +add,floor,4,4,1857651,9,10.78,10.77,20.07 +add,gmp,4,4,8005685,9,2.50,2.50,20.01 +add,gmpz,4,4,4576331,9,4.34,4.34,19.92 +add,auto,8,8,1053123,9,19.11,19.02,20.31 +add,inplace,8,8,1387558,9,7.21,7.20,20.03 +add,kernel,8,8,4396405,9,4.55,4.53,20.06 +add,floor,8,8,1628991,9,12.28,12.28,20.00 +add,gmp,8,8,5425518,9,3.69,3.69,20.00 +add,gmpz,8,8,4310751,9,4.66,4.65,20.09 +add,auto,16,16,811815,9,24.53,24.23,19.93 +add,inplace,16,16,844901,9,11.91,11.87,20.13 +add,kernel,16,16,2645838,9,7.56,7.56,20.02 +add,floor,16,16,1307213,9,15.30,15.30,20.00 +add,gmp,16,16,2917318,9,6.85,6.84,19.98 +add,gmpz,16,16,3074398,9,6.51,6.48,20.02 +add,auto,64,64,314691,9,63.46,63.31,19.97 +add,inplace,64,64,255900,9,38.88,38.73,19.90 +add,kernel,64,64,602089,9,33.17,33.13,19.99 +add,floor,64,64,479579,9,41.14,40.28,19.76 +add,gmp,64,64,1294713,9,15.45,15.45,20.00 +add,gmpz,64,64,1212684,9,16.49,16.46,19.99 +add,auto,256,256,89397,9,223.84,223.68,20.02 +add,inplace,256,256,68743,9,145.55,145.49,20.01 +add,kernel,256,256,140292,9,142.55,142.49,20.00 +add,floor,256,256,126074,9,158.77,158.56,20.01 +add,gmp,256,256,255644,9,78.23,78.23,20.01 +add,gmpz,256,256,251713,9,79.46,79.36,19.99 +add,auto,1024,1024,23679,9,841.66,841.61,19.94 +add,inplace,1024,1024,17146,9,583.17,583.10,20.00 +add,kernel,1024,1024,34516,9,579.53,579.43,20.00 +add,floor,1024,1024,33665,9,594.19,594.09,20.00 +add,gmp,1024,1024,51140,9,391.09,391.06,20.00 +add,gmpz,1024,1024,51015,9,392.04,392.03,20.01 +add,auto,2000,2000,11619,9,1721.38,1721.17,20.06 +add,inplace,2000,2000,8819,9,1133.98,1133.90,20.01 +add,kernel,2000,2000,17651,9,1133.07,1133.03,20.01 +add,floor,2000,2000,17271,9,1150.56,1150.30,19.91 +add,gmp,2000,2000,41815,9,478.31,478.30,20.01 +add,gmpz,2000,2000,41208,9,485.28,483.84,19.99 +add,auto,1024,1,71258,9,280.55,280.15,19.99 +add,inplace,1024,1,17245,9,579.74,579.64,20.00 +add,kernel,1024,1,34563,9,578.68,578.66,20.00 +add,floor,1024,1,33697,9,593.56,593.40,20.00 +add,gmp,1024,1,85979,9,232.65,232.48,20.02 +add,gmpz,1024,1,85506,9,233.95,233.58,20.01 +sub,auto,1,1,2196710,9,8.96,8.95,19.73 +sub,inplace,1,1,2521117,9,3.98,3.97,20.09 +sub,kernel,1,1,13236265,9,1.51,1.51,20.00 +sub,floor,1,1,10523807,9,1.90,1.89,19.98 +sub,gmp,1,1,8824138,9,2.27,2.27,20.00 +sub,gmpz,1,1,4603754,9,4.34,4.34,20.07 +sub,auto,2,2,1057673,9,18.80,18.77,19.90 +sub,inplace,2,2,2174871,9,4.59,4.57,19.98 +sub,kernel,2,2,9293172,9,2.15,2.15,20.02 +sub,floor,2,2,2032481,9,9.83,9.82,19.98 +sub,gmp,2,2,8823761,9,2.27,2.27,20.00 +sub,gmpz,2,2,4589719,9,4.34,4.34,19.95 +sub,auto,4,4,1060688,9,18.91,18.86,20.06 +sub,inplace,4,4,1849859,9,5.37,5.37,19.92 +sub,kernel,4,4,6983596,9,2.88,2.83,20.13 +sub,floor,4,4,1875633,9,10.66,10.61,19.99 +sub,gmp,4,4,8031343,9,2.49,2.49,19.98 +sub,gmpz,4,4,4345250,9,4.57,4.55,19.90 +sub,auto,8,8,985911,9,20.40,20.29,20.11 +sub,inplace,8,8,1406241,9,7.13,7.11,20.04 +sub,kernel,8,8,4586261,9,4.38,4.37,20.10 +sub,floor,8,8,1638711,9,12.20,12.18,20.01 +sub,gmp,8,8,5434737,9,3.68,3.68,20.03 +sub,gmpz,8,8,4048611,9,4.98,4.94,20.12 +sub,auto,16,16,785821,9,25.32,24.92,19.83 +sub,inplace,16,16,951910,9,10.51,10.48,20.01 +sub,kernel,16,16,2492413,9,8.02,8.02,20.00 +sub,floor,16,16,1318289,9,15.17,15.16,20.00 +sub,gmp,16,16,3635895,9,5.50,5.50,20.01 +sub,gmpz,16,16,2938012,9,6.80,6.76,19.97 +sub,auto,64,64,304479,9,65.73,65.54,20.01 +sub,inplace,64,64,263164,9,38.01,37.89,20.00 +sub,kernel,64,64,607810,9,32.83,32.43,19.91 +sub,floor,64,64,475208,9,42.10,42.02,20.01 +sub,gmp,64,64,1292662,9,15.45,15.45,19.97 +sub,gmpz,64,64,1194460,9,16.74,16.71,19.99 +sub,auto,256,256,89441,9,223.72,223.58,20.02 +sub,inplace,256,256,68756,9,145.46,145.34,20.00 +sub,kernel,256,256,136738,9,142.87,142.79,19.56 +sub,floor,256,256,126459,9,158.30,158.23,20.03 +sub,gmp,256,256,255663,9,78.23,78.22,20.00 +sub,gmpz,256,256,250482,9,79.84,79.78,20.00 +sub,auto,1024,1024,23754,9,841.99,841.85,20.00 +sub,inplace,1024,1024,17198,9,581.53,581.50,20.04 +sub,kernel,1024,1024,34494,9,578.97,578.90,19.98 +sub,floor,1024,1024,33645,9,594.34,593.94,20.00 +sub,gmp,1024,1024,51298,9,389.84,389.83,20.00 +sub,gmpz,1024,1024,51039,9,391.21,391.18,19.97 +sub,auto,2000,2000,11482,9,1741.72,1741.59,20.00 +sub,inplace,2000,2000,8817,9,1134.18,1133.86,20.00 +sub,kernel,2000,2000,17636,9,1133.25,1133.24,19.99 +sub,floor,2000,2000,17389,9,1149.85,1149.71,19.99 +sub,gmp,2000,2000,41855,9,477.92,477.87,20.02 +sub,gmpz,2000,2000,40603,9,492.57,491.08,19.99 +sub,auto,1024,1,70544,9,283.52,282.73,20.00 +sub,inplace,1024,1,17252,9,579.71,579.64,20.02 +sub,kernel,1024,1,34618,9,577.80,577.73,20.02 +sub,floor,1024,1,33727,9,593.17,592.95,20.01 +sub,gmp,1024,1,85713,9,233.09,232.98,19.98 +sub,gmpz,1024,1,85426,9,234.09,234.06,20.00 +shl,auto,1,13,1209932,9,16.41,16.32,19.89 +shl,inplace,1,13,2470026,9,4.08,4.05,20.13 +shl,kernel,1,13,9626449,9,2.08,2.06,19.97 +shl,kernelip,1,13,5743715,9,1.74,1.73,20.09 +shl,floor,1,13,2117767,9,9.64,9.63,20.42 +shl,gmp,1,13,9626142,9,1.89,1.89,18.18 +shl,gmpz,1,13,5882669,9,3.40,3.40,20.02 +shl,auto,4,13,1074518,9,18.64,18.57,20.02 +shl,inplace,4,13,1938938,9,5.15,5.13,20.07 +shl,kernel,4,13,5831352,9,3.45,3.44,20.14 +shl,kernelip,4,13,3450738,9,2.94,2.91,20.31 +shl,floor,4,13,1755433,9,11.35,11.18,19.96 +shl,gmp,4,13,8657331,9,2.31,2.31,20.01 +shl,gmpz,4,13,4948302,9,4.03,4.02,19.93 +shl,auto,16,13,817158,9,24.55,24.41,20.07 +shl,inplace,16,13,1088184,9,9.16,9.15,19.95 +shl,kernel,16,13,2728064,9,7.36,7.34,20.09 +shl,kernelip,16,13,1389895,9,7.08,6.90,19.69 +shl,floor,16,13,1278807,9,15.18,15.11,19.40 +shl,gmp,16,13,4959276,9,4.04,4.01,20.01 +shl,gmpz,16,13,3458051,9,5.80,5.78,20.05 +shl,auto,256,13,147858,9,135.56,133.34,20.10 +shl,inplace,256,13,107496,9,93.03,92.89,20.01 +shl,kernel,256,13,214522,9,93.44,93.20,20.04 +shl,kernelip,256,13,102308,9,97.71,97.66,20.00 +shl,floor,256,13,177656,9,116.38,116.32,20.68 +shl,gmp,256,13,419887,9,47.64,47.28,20.00 +shl,gmpz,256,13,387011,9,51.67,51.38,19.98 +shl,auto,2000,13,21634,9,917.77,917.28,19.87 +shl,inplace,2000,13,15225,9,657.73,656.35,20.04 +shl,kernel,2000,13,27711,9,718.68,718.32,19.93 +shl,kernelip,2000,13,13981,9,715.33,715.28,20.00 +shl,floor,2000,13,27200,9,738.69,738.12,20.09 +shl,gmp,2000,13,59616,9,335.89,335.64,20.02 +shl,gmpz,2000,13,59117,9,338.58,338.23,20.03 +shl,auto,2000,77,18750,9,1067.05,1065.35,20.01 +shl,inplace,2000,77,13057,9,765.40,764.58,20.01 +shl,kernel,2000,77,23388,9,853.10,851.71,19.96 +shl,kernelip,2000,77,12157,9,822.46,822.13,20.00 +shl,floor,2000,77,22922,9,874.63,872.01,20.05 +shl,gmp,2000,77,59212,9,337.73,337.72,20.00 +shl,gmpz,2000,77,59096,9,338.39,338.37,20.00 +shr,auto,1,13,1988364,9,10.12,10.06,20.12 +shr,inplace,1,13,2752092,9,3.62,3.58,19.98 +shr,kernel,1,13,11753062,9,1.70,1.70,20.04 +shr,floor,1,13,8824226,9,2.27,2.27,20.03 +shr,gmp,1,13,10589002,9,1.89,1.89,20.01 +shr,gmpz,1,13,6209146,9,3.21,3.21,19.96 +shr,auto,4,13,961189,9,21.35,20.72,20.61 +shr,inplace,4,13,2066358,9,4.69,4.68,19.43 +shr,kernel,4,13,5874827,9,3.41,3.40,20.04 +shr,floor,4,13,1702465,9,11.81,11.77,20.11 +shr,gmp,4,13,8594496,9,2.32,2.31,19.99 +shr,gmpz,4,13,5043387,9,3.96,3.95,20.02 +shr,auto,16,13,783813,9,25.68,25.58,20.14 +shr,inplace,16,13,1147585,9,8.71,8.66,20.00 +shr,kernel,16,13,2450991,9,8.03,7.95,19.71 +shr,floor,16,13,1191568,9,16.76,16.69,19.97 +shr,gmp,16,13,4709545,9,4.27,4.24,20.20 +shr,gmpz,16,13,3173529,9,6.15,6.09,19.58 +shr,auto,256,13,146820,9,136.21,136.15,20.00 +shr,inplace,256,13,106473,9,93.75,93.62,20.01 +shr,kernel,256,13,181488,9,109.99,109.78,19.96 +shr,floor,256,13,152231,9,131.23,131.02,19.97 +shr,gmp,256,13,416132,9,48.05,47.83,19.99 +shr,gmpz,256,13,394979,9,50.59,50.55,19.99 +shr,auto,2000,13,21019,9,951.09,949.71,19.99 +shr,inplace,2000,13,15227,9,656.82,656.76,20.02 +shr,kernel,2000,13,24637,9,811.81,811.80,20.09 +shr,floor,2000,13,23046,9,861.00,833.92,19.82 +shr,gmp,2000,13,59488,9,335.98,335.82,19.99 +shr,gmpz,2000,13,59019,9,338.87,338.74,20.00 +shr,auto,2000,77,18452,9,1083.27,1082.12,19.99 +shr,inplace,2000,77,13078,9,764.84,764.43,20.01 +shr,kernel,2000,77,24139,9,828.48,828.37,20.00 +shr,floor,2000,77,23509,9,850.71,849.84,20.00 +shr,gmp,2000,77,59533,9,335.93,335.91,20.00 +shr,gmpz,2000,77,58959,9,339.27,339.18,20.00 +mul,auto,1,1,1028227,9,18.89,18.84,19.44 +mul,gmp,1,1,5339567,9,3.75,3.61,19.93 +mul,gmpz,1,1,5042168,9,3.97,3.97,20.01 +mul,auto,2,2,724262,9,27.56,27.37,19.94 +mul,kernel,2,2,2830993,9,7.51,7.49,21.28 +mul,floor,2,2,1337485,9,15.05,15.00,20.17 +mul,gmp,2,2,5046744,9,3.98,3.95,20.05 +mul,gmpz,2,2,3304479,9,6.02,5.98,19.91 +mul,auto,3,3,688903,9,29.25,29.00,20.14 +mul,kernel,3,3,2366568,9,9.18,9.13,21.75 +mul,floor,3,3,1211163,9,16.62,16.38,20.08 +mul,gmp,3,3,2490956,9,7.98,7.78,20.08 +mul,gmpz,3,3,2038030,9,9.81,9.76,20.01 +mul,auto,4,4,637480,9,31.50,31.39,20.07 +mul,kernel,4,4,1898350,9,11.00,10.97,20.89 +mul,floor,4,4,1083716,9,18.53,18.46,20.08 +mul,gmp,4,4,2105527,9,9.53,9.47,20.08 +mul,gmpz,4,4,1683148,9,11.91,11.87,20.07 +mul,auto,6,6,481165,9,41.38,40.95,19.86 +mul,kernel,6,6,1218924,9,17.29,17.28,21.08 +mul,floor,6,6,816483,9,24.34,24.20,19.87 +mul,gmp,6,6,1245872,9,16.00,15.64,20.18 +mul,gmpz,6,6,1116327,9,17.87,17.85,19.96 +mul,auto,8,8,430611,9,46.37,46.24,20.02 +mul,kernel,8,8,818226,9,25.16,24.97,20.59 +mul,floor,8,8,623634,9,32.04,31.93,20.01 +mul,gmp,8,8,737620,9,27.22,27.01,20.06 +mul,gmpz,8,8,681142,9,28.94,28.52,19.73 +mul,auto,12,12,290396,9,68.89,68.79,20.00 +mul,kernel,12,12,429865,9,47.10,47.02,20.25 +mul,floor,12,12,371508,9,53.94,53.89,20.04 +mul,gmp,12,12,411804,9,49.99,48.55,20.95 +mul,gmpz,12,12,393836,9,50.77,50.75,20.04 +mul,auto,16,16,199117,9,100.44,100.36,20.01 +mul,kernel,16,16,254229,9,79.51,79.42,20.22 +mul,floor,16,16,232260,9,86.54,86.39,20.11 +mul,gmp,16,16,240628,9,83.21,83.16,20.02 +mul,gmpz,16,16,236523,9,84.62,84.56,20.02 +mul,auto,32,32,91484,9,218.79,218.46,20.03 +mul,kernel,32,32,106992,9,187.95,187.46,20.11 +mul,floor,32,32,102087,9,196.08,195.78,20.03 +mul,gmp,32,32,74649,9,268.01,267.85,20.25 +mul,gmpz,32,32,69540,9,269.79,269.65,18.92 +mul,auto,64,64,38993,9,511.90,511.49,19.97 +mul,kernel,64,64,41282,9,484.45,483.46,20.00 +mul,floor,64,64,40587,9,492.29,491.53,19.99 +mul,gmp,64,64,23335,9,855.42,855.02,19.97 +mul,gmpz,64,64,23282,9,858.91,858.51,20.00 +mul,auto,128,128,11571,9,1727.79,1725.56,19.99 +mul,kernel,128,128,11841,9,1693.77,1688.92,20.08 +mul,floor,128,128,11763,9,1701.07,1698.60,20.02 +mul,gmp,128,128,7380,9,2709.74,2708.98,20.13 +mul,gmpz,128,128,7085,9,2808.73,2722.49,19.73 +mul,auto,256,256,3207,9,6238.98,6236.09,20.01 +mul,kernel,256,256,3245,9,6169.81,6163.50,20.02 +mul,floor,256,256,3242,9,6173.75,6172.18,20.02 +mul,gmp,256,256,2556,9,7827.04,7826.00,20.01 +mul,gmpz,256,256,2552,9,7840.10,7834.62,20.01 +mul,auto,512,512,1020,9,19607.43,19578.55,20.01 +mul,kernel,512,512,1046,9,19090.33,19073.96,19.97 +mul,floor,512,512,1044,9,19164.29,19155.73,20.01 +mul,gmp,512,512,963,9,20769.87,20765.87,20.01 +mul,gmpz,512,512,941,9,21560.89,20831.31,20.35 +mul,auto,1000,1000,332,9,60245.07,60122.47,20.02 +mul,kernel,1000,1000,337,9,59476.06,59423.24,20.06 +mul,floor,1000,1000,337,9,59447.01,59419.42,20.04 +mul,gmp,1000,1000,376,9,53286.43,53274.42,20.08 +mul,gmpz,1000,1000,375,9,53369.49,53346.62,20.02 +mul,auto,2000,2000,113,9,178208.89,178046.33,20.14 +mul,kernel,2000,2000,114,9,176508.97,176386.66,20.12 +mul,floor,2000,2000,114,9,176634.82,176443.71,20.14 +mul,gmp,2000,2000,139,9,144129.16,144112.05,20.03 +mul,gmpz,2000,2000,139,9,149488.87,144142.41,20.91 +mul,auto,2000,100,1120,9,17855.26,17844.57,20.00 +mul,kernel,2000,100,1133,9,17657.43,17654.77,20.07 +mul,floor,2000,100,1132,9,17681.71,17675.93,20.02 +mul,gmp,2000,100,556,9,36094.73,36003.68,20.06 +mul,gmpz,2000,100,556,9,35964.97,35882.06,19.99 +sqr,auto,4,4,608842,9,32.96,32.75,20.05 +sqr,kernel,4,4,2221095,9,8.99,8.90,19.99 +sqr,floor,4,4,1219731,9,16.88,16.83,20.58 +sqr,gmp,4,4,3470567,9,5.78,5.73,20.24 +sqr,gmpz,4,4,2216012,9,8.76,8.61,19.45 +sqr,auto,16,16,250117,9,79.89,79.76,19.99 +sqr,kernel,16,16,342220,9,58.47,58.40,20.03 +sqr,floor,16,16,320669,9,68.94,68.90,22.11 +sqr,gmp,16,16,399347,9,49.82,49.79,19.90 +sqr,gmpz,16,16,383668,9,52.15,52.11,20.01 +sqr,auto,64,64,66987,9,298.55,298.12,20.01 +sqr,kernel,64,64,74206,9,269.51,269.40,20.00 +sqr,floor,64,64,72503,9,279.96,279.39,20.29 +sqr,gmp,64,64,36409,9,567.17,549.40,20.94 +sqr,gmpz,64,64,36324,9,550.75,549.87,20.00 +sqr,auto,512,512,1879,9,10650.06,10642.52,20.01 +sqr,kernel,512,512,1899,9,10518.72,10514.04,19.97 +sqr,floor,512,512,1899,9,10530.70,10525.67,20.00 +sqr,gmp,512,512,1329,9,15057.82,15050.69,20.01 +sqr,gmpz,512,512,1331,9,15041.95,15036.86,20.02 +sqr,auto,2000,2000,203,9,98670.79,98607.71,20.03 +sqr,kernel,2000,2000,206,9,97549.83,97464.60,20.12 +sqr,floor,2000,2000,204,9,98139.81,98108.00,20.02 +sqr,gmp,2000,2000,199,9,102488.24,100575.86,20.35 +sqr,gmpz,2000,2000,192,9,100700.76,100651.23,19.41 +divrem,auto,2,1,497774,9,39.99,39.78,19.93 +divrem,kernel,2,1,3665563,9,5.46,5.35,19.96 +divrem,floor,2,1,1591896,9,12.53,12.51,19.96 +divrem,gmp,2,1,2986211,9,6.70,6.69,20.01 +divrem,gmpz,2,1,1733405,9,11.50,11.46,19.94 +divrem,auto,8,4,170093,9,117.28,115.84,19.91 +divrem,kernel,8,4,398643,9,49.95,49.68,19.91 +divrem,floor,8,4,312360,9,63.23,62.96,19.77 +divrem,gmp,8,4,446791,9,44.91,44.57,20.24 +divrem,gmpz,8,4,409623,9,47.21,46.97,19.65 +divrem,auto,32,16,53937,9,370.86,369.94,20.00 +divrem,kernel,32,16,68830,9,291.29,290.56,20.05 +divrem,floor,32,16,65939,9,303.22,302.54,20.18 +divrem,gmp,32,16,105662,9,189.91,189.41,20.08 +divrem,gmpz,32,16,104130,9,192.68,191.19,20.07 +divrem,auto,128,64,5982,9,3343.08,3342.19,20.00 +divrem,kernel,128,64,6259,9,3196.40,3194.38,20.01 +divrem,floor,128,64,6194,9,3210.66,3208.60,19.89 +divrem,gmp,128,64,11621,9,1721.10,1719.99,20.00 +divrem,gmpz,128,64,11608,9,1779.73,1722.48,20.90 +divrem,auto,512,256,672,9,29681.78,29669.84,19.96 +divrem,kernel,512,256,706,9,28376.83,28352.61,20.05 +divrem,floor,512,256,693,9,28840.02,28826.50,20.00 +divrem,gmp,512,256,1234,9,16211.85,16208.39,20.03 +divrem,gmpz,512,256,1231,9,16260.66,16257.13,20.02 +divrem,auto,2000,1000,110,9,182286.25,182200.82,20.05 +divrem,kernel,2000,1000,111,9,180854.68,180788.84,20.07 +divrem,floor,2000,1000,111,9,180940.17,180760.33,20.09 +divrem,gmp,2000,1000,145,9,137972.68,137951.09,20.01 +divrem,gmpz,2000,1000,139,9,143167.24,138130.73,20.09 +divrem,auto,4000,2000,43,9,467424.53,465693.88,20.10 +divrem,kernel,4000,2000,44,9,467001.70,464064.00,20.55 +divrem,floor,4000,2000,43,9,466584.35,464900.88,20.06 +divrem,gmp,4000,2000,61,9,331962.49,331864.62,20.25 +divrem,gmpz,4000,2000,61,9,332143.92,331885.64,20.27 +divrem,auto,2000,100,140,9,143053.61,143035.37,20.03 +divrem,kernel,2000,100,138,9,145150.30,145124.28,20.03 +divrem,floor,2000,100,138,9,145004.64,144868.80,20.01 +divrem,gmp,2000,100,278,9,72013.75,71983.53,20.02 +divrem,gmpz,2000,100,277,9,74882.24,72618.91,20.86 +divrem,auto,65536,1,103,9,188543.75,188274.09,19.47 +divrem,kernel,65536,1,120,9,167536.56,167256.91,20.10 +divrem,floor,65536,1,115,9,174761.33,174502.60,20.10 +divrem,gmp,65536,1,136,9,148103.00,148095.48,20.15 +divrem,gmpz,65536,1,136,9,148124.12,148116.55,20.15 +fromchars,auto,4,10,100248,9,199.25,198.34,19.98 +fromchars,kernel,4,10,443077,9,44.64,44.45,19.78 +fromchars,gmp,4,10,625711,9,31.97,31.91,20.01 +fromchars,gmpz,4,10,286389,9,69.52,68.97,19.92 +fromchars,auto,16,10,47480,9,429.70,416.67,20.54 +fromchars,kernel,16,10,83925,9,238.55,229.52,19.99 +fromchars,gmp,16,10,161196,9,123.33,123.17,19.89 +fromchars,gmpz,16,10,77840,9,255.47,254.87,19.94 +fromchars,auto,64,10,7230,9,2796.80,2678.12,20.13 +fromchars,kernel,64,10,8962,9,2096.14,2012.76,19.00 +fromchars,gmp,64,10,21540,9,929.42,928.37,20.02 +fromchars,gmpz,64,10,14151,9,1409.92,1409.29,19.96 +fromchars,auto,256,10,686,9,28100.25,28033.18,19.56 +fromchars,kernel,256,10,765,9,25767.25,24962.85,19.61 +fromchars,gmp,256,10,2476,9,8086.84,8079.07,20.13 +fromchars,gmpz,256,10,1916,9,10084.45,9995.28,19.88 +fromchars,auto,2000,10,48,9,422034.17,421810.02,20.26 +fromchars,kernel,2000,10,50,9,401566.02,401344.82,20.13 +fromchars,gmp,2000,10,110,9,182366.71,182277.92,20.08 +fromchars,gmpz,2000,10,102,9,197649.09,197615.27,20.19 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed1.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed1.csv new file mode 100644 index 00000000..649c8be4 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed1.csv @@ -0,0 +1,24 @@ +# spot checks seed=1 bin=/home/mborland/big-int-item1-base/bin/shape_sweep.base64 pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,1333,3,15005.20,15003.86,20.00 +add,inplace,16384,16384,1073,3,9322.52,9322.38,20.02 +add,kernel,16384,16384,2150,3,9307.38,9304.63,20.02 +add,floor,16384,16384,2145,3,9326.73,9326.69,20.01 +add,gmp,16384,16384,2886,3,6930.68,6930.67,20.00 +add,gmpz,16384,16384,2896,3,6907.28,6907.17,20.01 +mul,auto,2000,2000,114,3,176899.65,176844.89,20.17 +mul,kernel,2000,2000,114,3,176510.29,176507.56,20.13 +mul,floor,2000,2000,114,3,176878.80,176871.19,20.17 +mul,gmp,2000,2000,139,3,143960.45,143950.60,20.01 +mul,gmpz,2000,2000,139,3,143947.65,143870.13,20.01 +mul,auto,16384,16384,6,3,3740843.00,3739234.50,22.44 +mul,kernel,16384,16384,6,3,3741315.50,3741093.83,22.45 +mul,floor,16384,16384,6,3,3747882.67,3741536.00,22.48 +mul,gmp,16384,16384,12,3,1767325.08,1767044.92,21.21 +mul,gmpz,16384,16384,12,3,1769182.83,1768649.33,21.23 +divrem,auto,4096,2048,41,3,493351.02,493347.98,20.23 +divrem,kernel,4096,2048,41,3,489031.22,488859.59,20.05 +divrem,floor,4096,2048,41,3,490565.66,490520.80,20.11 +divrem,gmp,4096,2048,54,3,366651.46,366613.98,19.80 +divrem,gmpz,4096,2048,55,3,367188.65,366662.71,20.22 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed2.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed2.csv new file mode 100644 index 00000000..844014b3 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed2.csv @@ -0,0 +1,24 @@ +# spot checks seed=2 bin=/home/mborland/big-int-item1-base/bin/shape_sweep.base64 pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,1348,3,14847.76,14845.60,20.01 +add,inplace,16384,16384,1076,3,9299.34,9299.26,20.01 +add,kernel,16384,16384,2154,3,9288.21,9287.97,20.02 +add,floor,16384,16384,2149,3,9307.02,9306.99,20.00 +add,gmp,16384,16384,2881,3,6941.72,6941.02,20.01 +add,gmpz,16384,16384,2879,3,6943.86,6943.67,19.99 +mul,auto,2000,2000,113,3,177053.29,176760.51,20.00 +mul,kernel,2000,2000,114,3,176513.31,176483.09,20.12 +mul,floor,2000,2000,114,3,176530.62,176473.11,20.13 +mul,gmp,2000,2000,139,3,145255.02,144078.73,20.19 +mul,gmpz,2000,2000,135,3,155610.47,150907.02,20.97 +mul,auto,16384,16384,6,3,3755523.50,3753062.00,22.65 +mul,kernel,16384,16384,6,3,3758244.17,3755581.83,22.56 +mul,floor,16384,16384,6,3,3743913.50,3736755.00,22.45 +mul,gmp,16384,16384,12,3,1773819.25,1764473.83,21.27 +mul,gmpz,16384,16384,12,3,1766142.08,1766047.83,21.20 +divrem,auto,4096,2048,41,3,489899.90,488919.20,20.08 +divrem,kernel,4096,2048,42,3,487398.90,486833.14,20.49 +divrem,floor,4096,2048,41,3,489369.66,488265.83,20.06 +divrem,gmp,4096,2048,54,3,370644.13,370575.02,20.02 +divrem,gmpz,4096,2048,55,3,370625.07,370493.18,20.38 From cad0df13ec34ab9aa2ba788fb4589606cf7af18a Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:32:13 -0400 Subject: [PATCH 26/36] Add x64 baseline vecsort data for inline bits 64, 128 and 256 (cf1cf54 library, g++-14 -march=native) --- .../perf/item1/x64_gcc14_base128_vecsort_seed1a.csv | 7 +++++++ .../perf/item1/x64_gcc14_base128_vecsort_seed1b.csv | 7 +++++++ .../perf/item1/x64_gcc14_base128_vecsort_seed2a.csv | 7 +++++++ .../perf/item1/x64_gcc14_base128_vecsort_seed2b.csv | 7 +++++++ .../perf/item1/x64_gcc14_base256_vecsort_seed1a.csv | 7 +++++++ .../perf/item1/x64_gcc14_base256_vecsort_seed1b.csv | 7 +++++++ .../perf/item1/x64_gcc14_base256_vecsort_seed2a.csv | 7 +++++++ .../perf/item1/x64_gcc14_base256_vecsort_seed2b.csv | 7 +++++++ .../big_int/perf/item1/x64_gcc14_base64_vecsort_seed1a.csv | 7 +++++++ .../big_int/perf/item1/x64_gcc14_base64_vecsort_seed1b.csv | 7 +++++++ .../big_int/perf/item1/x64_gcc14_base64_vecsort_seed2a.csv | 7 +++++++ .../big_int/perf/item1/x64_gcc14_base64_vecsort_seed2b.csv | 7 +++++++ 12 files changed, 84 insertions(+) create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2b.csv diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1a.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1a.csv new file mode 100644 index 00000000..5de90922 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1a.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T16:31:49Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base128 seed=1 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,92.39,92.22,27.73 +vecsort,builtin,100000,1,6,9,39.21,39.18,23.53 +vecsort,copy,100000,1,94,9,2.14,2.12,20.19 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1b.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1b.csv new file mode 100644 index 00000000..4a0e27b1 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1b.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T16:31:54Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base128 seed=1 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,92.35,92.06,27.70 +vecsort,builtin,100000,1,6,9,39.25,39.17,23.54 +vecsort,copy,100000,1,95,9,2.15,2.12,20.40 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2a.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2a.csv new file mode 100644 index 00000000..5fb5fb35 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2a.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T16:31:52Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base128 seed=2 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,92.09,91.82,27.63 +vecsort,builtin,100000,1,6,9,39.35,39.30,23.61 +vecsort,copy,100000,1,93,9,2.15,2.12,19.98 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2b.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2b.csv new file mode 100644 index 00000000..8f67df04 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2b.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T16:31:57Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base128 seed=2 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,92.00,91.72,27.60 +vecsort,builtin,100000,1,6,9,39.32,39.27,23.61 +vecsort,copy,100000,1,94,9,2.13,2.12,20.06 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1a.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1a.csv new file mode 100644 index 00000000..e9c68f0c --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1a.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T16:31:50Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base256 seed=1 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,97.31,96.72,29.19 +vecsort,builtin,100000,1,6,9,39.26,39.23,23.57 +vecsort,copy,100000,1,88,9,2.30,2.26,20.28 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1b.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1b.csv new file mode 100644 index 00000000..50a9d0e6 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1b.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T16:31:55Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base256 seed=1 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,97.18,96.75,29.16 +vecsort,builtin,100000,1,6,9,40.25,39.20,24.23 +vecsort,copy,100000,1,89,9,2.30,2.26,20.46 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2a.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2a.csv new file mode 100644 index 00000000..2e3d30bf --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2a.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T16:31:53Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base256 seed=2 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,96.88,96.00,29.04 +vecsort,builtin,100000,1,6,9,39.37,39.25,23.69 +vecsort,copy,100000,1,87,9,2.34,2.28,21.00 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2b.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2b.csv new file mode 100644 index 00000000..7f41918c --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2b.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T16:31:58Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base256 seed=2 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,99.97,96.35,30.04 +vecsort,builtin,100000,1,6,9,39.34,39.25,23.60 +vecsort,copy,100000,1,89,9,2.29,2.25,20.43 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1a.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1a.csv new file mode 100644 index 00000000..7aceb490 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1a.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T16:31:48Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,91.19,89.22,27.58 +vecsort,builtin,100000,1,6,9,39.32,39.30,23.59 +vecsort,copy,100000,1,105,9,1.96,1.92,20.52 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1b.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1b.csv new file mode 100644 index 00000000..f08bb7d4 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1b.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T16:31:54Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,89.64,89.06,26.89 +vecsort,builtin,100000,1,6,9,39.33,39.30,23.60 +vecsort,copy,100000,1,103,9,1.96,1.92,20.16 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2a.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2a.csv new file mode 100644 index 00000000..ddf56b85 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2a.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T16:31:51Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,89.18,88.91,26.89 +vecsort,builtin,100000,1,6,9,39.41,39.38,23.65 +vecsort,copy,100000,1,102,9,1.95,1.90,19.92 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2b.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2b.csv new file mode 100644 index 00000000..1e1b1a45 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2b.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T16:31:56Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,89.19,88.67,26.75 +vecsort,builtin,100000,1,6,9,39.40,39.31,23.64 +vecsort,copy,100000,1,105,9,1.98,1.94,20.70 From a0559433737f7e16a2bacf811fc83922ab10d333 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:46:23 -0400 Subject: [PATCH 27/36] Enforce every alloc_count case now that the front end changes have landed; do not count the div_rem_to_zero check's own allocations --- tests/beman/big_int/alloc_count.test.cpp | 38 +++++++++++++++--------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/tests/beman/big_int/alloc_count.test.cpp b/tests/beman/big_int/alloc_count.test.cpp index cb1198aa..509a5b74 100644 --- a/tests/beman/big_int/alloc_count.test.cpp +++ b/tests/beman/big_int/alloc_count.test.cpp @@ -8,8 +8,8 @@ // results (which take select_on_container_copy_construction of an operand allocator) land on it // wide256 basic_big_int<256, limb, counting_allocator> (inline capacity of 4 64-bit limbs) // The measured counts are printed to stdout as "[alloc_count] ...". The expectations below are the item 1 targets -// (see the front-end cost plan); cases that exceed their target at the baseline (cf1cf54) are marked pending and -// skipped while `item1_pending` is true. Drop the constant (and the baseline columns) when the library changes land. +// (see the front-end cost plan); with `item1_pending` true, cases that exceed their target at the baseline (cf1cf54) +// are skipped instead of failing. The constant is false now that the front end changes have landed. // // Baseline counts measured at cf1cf54 (allocations per call, K = 64 after one warm-up call; `want` is the target the // case asserts; the cases whose baseline exceeds `want` are the pending ones): @@ -27,15 +27,16 @@ // c = a; c *= 7 (8 limbs) 0 1 1 1 // c = a / b (8x4) 1 2 2 2 // c = a % b (8x4) 1 2 2 2 -// div_rem_to_zero (8x4) <= 2 5 5 4 +// div_rem_to_zero (8x4) <= 2 4 4 3 // c = a / b (2x1) 0 (>= 2 inline) 1 1 0 // c = a; c /= b (8x4) [stretch] 0 3 3 2 // c = a; c %= b (8x4) [stretch] 0 2 2 2 // from_chars 2000 digits (reserved) <= 2 2 2 2 // -// pending at the baseline: every row with a baseline above `want` (the compound `*=`, `/=` and `%=`, `a / b`, `a % b` -// and div_rem_to_zero). The add/sub/shift/mul rows already meet their target: the item 1 gain there is in the copy and -// zero-fill work, not the allocation count. +// Every case is enforced (item1_pending is false). The div_rem_to_zero baseline counts the quotient (5 limbs), the +// 22-limb scratch and the over-reserved remainder (9 limbs) plus one more on the counting environments for operands +// that need normalising; an earlier version of this table (5, 5, 4) also counted the check's own temporaries. Set +// `item1_pending` back to true to skip a case whose baseline count exceeds its target. #include #include @@ -64,7 +65,7 @@ using BEMAN_BIG_INT_NAMESPACE::test_util::counting_state; using limb = uint_multiprecision_t; // Cases that exceed their target at the baseline are skipped while this is true. -constexpr bool item1_pending = true; +constexpr bool item1_pending = false; constexpr int calls = 64; // K @@ -161,6 +162,14 @@ double steady_allocs(Env& env, F&& f, const int k = calls) { return static_cast(env.count() - before) / static_cast(k); } +// Keeps a result observable without allocating. +volatile std::size_t escape_sink = 0; + +template +void escape_value(const T& x) { + escape_sink = x.size(); +} + // Baseline (cf1cf54) count per environment, in the order counting, pmr, wide256. using baseline_counts = std::array; @@ -336,16 +345,17 @@ TYPED_TEST(AllocCount, RemainderHeapResult) { TYPED_TEST(AllocCount, DivRemToZero) { TypeParam env; - using int_t = typename TypeParam::int_t; - const int_t a = env.make(random_limbs(8, 19)); - const int_t b = env.make(random_limbs(4, 20)); - bool ok = true; + using int_t = typename TypeParam::int_t; + const int_t a = env.make(random_limbs(8, 19)); + const int_t b = env.make(random_limbs(4, 20)); + // The result is checked after the measurement so the check's own temporaries are not counted. const double n = steady_allocs(env, [&] { const auto qr = div_rem_to_zero(a, b); - ok = ok && qr.quotient * b + qr.remainder == a; + escape_value(qr.quotient); }); - EXPECT_TRUE(ok); - ALLOC_EXPECT(TypeParam, "div_rem_to_zero (8x4)", n, 2.0, (baseline_counts{5.0, 5.0, 4.0})); + const auto qr = div_rem_to_zero(a, b); + EXPECT_TRUE(qr.quotient * b + qr.remainder == a); + ALLOC_EXPECT(TypeParam, "div_rem_to_zero (8x4)", n, 2.0, (baseline_counts{4.0, 4.0, 3.0})); } // A two-limb dividend over a one-limb divisor, quotient two limbs: it fits inline only when the inline capacity is at From e6462783296738b9619f0e790595781d9bf53c16 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:53:12 -0400 Subject: [PATCH 28/36] alloc_count: add 128 and 512-bit environments and a small-shape study case --- tests/beman/big_int/alloc_count.test.cpp | 116 +++++++++++++++++++---- 1 file changed, 97 insertions(+), 19 deletions(-) diff --git a/tests/beman/big_int/alloc_count.test.cpp b/tests/beman/big_int/alloc_count.test.cpp index 509a5b74..9cd4daa4 100644 --- a/tests/beman/big_int/alloc_count.test.cpp +++ b/tests/beman/big_int/alloc_count.test.cpp @@ -7,6 +7,7 @@ // pmr pmr::big_int with a counting memory_resource installed through std::pmr::set_default_resource, so // results (which take select_on_container_copy_construction of an operand allocator) land on it // wide256 basic_big_int<256, limb, counting_allocator> (inline capacity of 4 64-bit limbs) +// wide128, wide512 the same with 128 and 512 inline bits (the inline-capacity study; no baseline column) // The measured counts are printed to stdout as "[alloc_count] ...". The expectations below are the item 1 targets // (see the front-end cost plan); with `item1_pending` true, cases that exceed their target at the baseline (cf1cf54) // are skipped instead of failing. The constant is false now that the front end changes have landed. @@ -42,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -83,6 +85,13 @@ std::vector random_limbs(const std::size_t n, std::uint64_t seed) { return v; } +// Like random_limbs with the top bit set, so sums, shifts and products have the full worst-case limb count. +std::vector full_limbs(const std::size_t n, const std::uint64_t seed) { + auto v = random_limbs(n, seed); + v.back() |= limb{1} << (std::numeric_limits::digits - 1); + return v; +} + // ----- environments ----- struct counting_env { @@ -113,6 +122,34 @@ struct wide256_env { [[nodiscard]] std::size_t count() const { return state.total_allocations; } }; +struct wide128_env { + static constexpr const char* name = "wide128"; + static constexpr std::size_t index = 3; + + using int_t = basic_big_int<128, limb, counting_allocator>; + + counting_state state; + counting_allocator alloc{&state}; + + [[nodiscard]] int_t empty() { return int_t(alloc); } + [[nodiscard]] int_t make(const std::vector& v) { return int_t(v.begin(), v.end(), alloc); } + [[nodiscard]] std::size_t count() const { return state.total_allocations; } +}; + +struct wide512_env { + static constexpr const char* name = "wide512"; + static constexpr std::size_t index = 4; + + using int_t = basic_big_int<512, limb, counting_allocator>; + + counting_state state; + counting_allocator alloc{&state}; + + [[nodiscard]] int_t empty() { return int_t(alloc); } + [[nodiscard]] int_t make(const std::vector& v) { return int_t(v.begin(), v.end(), alloc); } + [[nodiscard]] std::size_t count() const { return state.total_allocations; } +}; + class counting_resource final : public std::pmr::memory_resource { public: [[nodiscard]] std::size_t allocations() const noexcept { return m_allocs; } @@ -170,8 +207,8 @@ void escape_value(const T& x) { escape_sink = x.size(); } -// Baseline (cf1cf54) count per environment, in the order counting, pmr, wide256. -using baseline_counts = std::array; +// Baseline (cf1cf54) count per environment, in the order counting, pmr, wide256, wide128, wide512 (-1: not measured). +using baseline_counts = std::array; } // namespace @@ -200,7 +237,7 @@ namespace { template class AllocCount : public ::testing::Test {}; -using envs = ::testing::Types; +using envs = ::testing::Types; TYPED_TEST_SUITE(AllocCount, envs); // Baseline columns are filled from the baseline run (see the table at the top of the file). @@ -215,7 +252,7 @@ TYPED_TEST(AllocCount, AddHeapResult) { int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a + b; }); EXPECT_TRUE(c - b == a); - ALLOC_EXPECT(TypeParam, "c = a + b (16x16)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); + ALLOC_EXPECT(TypeParam, "c = a + b (16x16)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0, -1.0, -1.0})); } TYPED_TEST(AllocCount, SubHeapResult) { @@ -226,7 +263,7 @@ TYPED_TEST(AllocCount, SubHeapResult) { int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a - b; }); EXPECT_TRUE(c + b == a); - ALLOC_EXPECT(TypeParam, "c = a - b (16x16)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); + ALLOC_EXPECT(TypeParam, "c = a - b (16x16)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0, -1.0, -1.0})); } TYPED_TEST(AllocCount, AddSubInPlaceWithCapacity) { @@ -240,7 +277,7 @@ TYPED_TEST(AllocCount, AddSubInPlaceWithCapacity) { c -= b; }); EXPECT_TRUE(c == a); - ALLOC_EXPECT(TypeParam, "c += b; c -= b (16x16)", n, 0.0, (baseline_counts{0.0, 0.0, 0.0})); + ALLOC_EXPECT(TypeParam, "c += b; c -= b (16x16)", n, 0.0, (baseline_counts{0.0, 0.0, 0.0, -1.0, -1.0})); } // ----- shifts ----- @@ -252,7 +289,7 @@ TYPED_TEST(AllocCount, ShiftLeftHeapResult) { int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a << 13; }); EXPECT_TRUE((c >> 13) == a); - ALLOC_EXPECT(TypeParam, "c = a << 13 (16 limbs)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); + ALLOC_EXPECT(TypeParam, "c = a << 13 (16 limbs)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0, -1.0, -1.0})); } TYPED_TEST(AllocCount, ShiftRightHeapResult) { @@ -262,7 +299,7 @@ TYPED_TEST(AllocCount, ShiftRightHeapResult) { int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a >> 13; }); EXPECT_TRUE((c << 13) <= a); - ALLOC_EXPECT(TypeParam, "c = a >> 13 (16 limbs)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); + ALLOC_EXPECT(TypeParam, "c = a >> 13 (16 limbs)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0, -1.0, -1.0})); } TYPED_TEST(AllocCount, ShiftInPlaceWithCapacity) { @@ -275,7 +312,7 @@ TYPED_TEST(AllocCount, ShiftInPlaceWithCapacity) { c >>= 13; }); EXPECT_TRUE(c == a); - ALLOC_EXPECT(TypeParam, "c <<= 13; c >>= 13 (16 limbs)", n, 0.0, (baseline_counts{0.0, 0.0, 0.0})); + ALLOC_EXPECT(TypeParam, "c <<= 13; c >>= 13 (16 limbs)", n, 0.0, (baseline_counts{0.0, 0.0, 0.0, -1.0, -1.0})); } // ----- multiply ----- @@ -288,7 +325,7 @@ TYPED_TEST(AllocCount, MultiplyHeapResult) { int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a * b; }); EXPECT_TRUE(c / b == a); - ALLOC_EXPECT(TypeParam, "c = a * b (8x8)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0})); + ALLOC_EXPECT(TypeParam, "c = a * b (8x8)", n, 1.0, (baseline_counts{1.0, 1.0, 1.0, -1.0, -1.0})); } // c is restored from a inside the timed call (a copy into existing capacity), so the pair is steady. @@ -303,7 +340,7 @@ TYPED_TEST(AllocCount, MultiplyInPlaceByBigInt) { c *= b; }); EXPECT_TRUE(c == a * b); - ALLOC_EXPECT(TypeParam, "c = a; c *= b (8x8 -> 16)", n, 0.0, (baseline_counts{1.0, 1.0, 1.0})); + ALLOC_EXPECT(TypeParam, "c = a; c *= b (8x8 -> 16)", n, 0.0, (baseline_counts{1.0, 1.0, 1.0, -1.0, -1.0})); } TYPED_TEST(AllocCount, MultiplyInPlaceBySmall) { @@ -316,7 +353,7 @@ TYPED_TEST(AllocCount, MultiplyInPlaceBySmall) { c *= 7; }); EXPECT_TRUE(c == a * 7); - ALLOC_EXPECT(TypeParam, "c = a; c *= 7 (8 limbs)", n, 0.0, (baseline_counts{1.0, 1.0, 1.0})); + ALLOC_EXPECT(TypeParam, "c = a; c *= 7 (8 limbs)", n, 0.0, (baseline_counts{1.0, 1.0, 1.0, -1.0, -1.0})); } // ----- divide ----- @@ -329,7 +366,7 @@ TYPED_TEST(AllocCount, DivideHeapResult) { int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a / b; }); EXPECT_TRUE(c * b + a % b == a); - ALLOC_EXPECT(TypeParam, "c = a / b (8x4)", n, 1.0, (baseline_counts{2.0, 2.0, 2.0})); + ALLOC_EXPECT(TypeParam, "c = a / b (8x4)", n, 1.0, (baseline_counts{2.0, 2.0, 2.0, -1.0, -1.0})); } TYPED_TEST(AllocCount, RemainderHeapResult) { @@ -340,7 +377,7 @@ TYPED_TEST(AllocCount, RemainderHeapResult) { int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a % b; }); EXPECT_TRUE(a / b * b + c == a); - ALLOC_EXPECT(TypeParam, "c = a % b (8x4)", n, 1.0, (baseline_counts{2.0, 2.0, 2.0})); + ALLOC_EXPECT(TypeParam, "c = a % b (8x4)", n, 1.0, (baseline_counts{2.0, 2.0, 2.0, -1.0, -1.0})); } TYPED_TEST(AllocCount, DivRemToZero) { @@ -355,7 +392,7 @@ TYPED_TEST(AllocCount, DivRemToZero) { }); const auto qr = div_rem_to_zero(a, b); EXPECT_TRUE(qr.quotient * b + qr.remainder == a); - ALLOC_EXPECT(TypeParam, "div_rem_to_zero (8x4)", n, 2.0, (baseline_counts{4.0, 4.0, 3.0})); + ALLOC_EXPECT(TypeParam, "div_rem_to_zero (8x4)", n, 2.0, (baseline_counts{4.0, 4.0, 3.0, -1.0, -1.0})); } // A two-limb dividend over a one-limb divisor, quotient two limbs: it fits inline only when the inline capacity is at @@ -376,7 +413,7 @@ TYPED_TEST(AllocCount, DivideTwoByOneQuotientInline) { static_cast(int_t::inplace_capacity)); GTEST_SKIP() << "the 2-limb quotient only fits inline at inline capacity >= 2"; } - ALLOC_EXPECT(TypeParam, "c = a / b (2x1, inline q)", n, 0.0, (baseline_counts{1.0, 1.0, 0.0})); + ALLOC_EXPECT(TypeParam, "c = a / b (2x1, inline q)", n, 0.0, (baseline_counts{1.0, 1.0, 0.0, -1.0, -1.0})); } // Stretch: in the schoolbook band the quotient could be built in the object's own limbs. @@ -391,7 +428,7 @@ TYPED_TEST(AllocCount, DivideInPlace) { c /= b; }); EXPECT_TRUE(c == a / b); - ALLOC_EXPECT(TypeParam, "c = a; c /= b (8x4) [stretch]", n, 0.0, (baseline_counts{3.0, 3.0, 2.0})); + ALLOC_EXPECT(TypeParam, "c = a; c /= b (8x4) [stretch]", n, 0.0, (baseline_counts{3.0, 3.0, 2.0, -1.0, -1.0})); } TYPED_TEST(AllocCount, RemainderInPlace) { @@ -405,7 +442,7 @@ TYPED_TEST(AllocCount, RemainderInPlace) { c %= b; }); EXPECT_TRUE(c == a % b); - ALLOC_EXPECT(TypeParam, "c = a; c %= b (8x4) [stretch]", n, 0.0, (baseline_counts{2.0, 2.0, 2.0})); + ALLOC_EXPECT(TypeParam, "c = a; c %= b (8x4) [stretch]", n, 0.0, (baseline_counts{2.0, 2.0, 2.0, -1.0, -1.0})); } // ----- decimal from_chars ----- @@ -431,7 +468,48 @@ TYPED_TEST(AllocCount, FromCharsDecimalIntoReserved) { EXPECT_EQ(ec, std::errc{}); // The value must be 2000 decimal digits long. EXPECT_GT(c.size(), 6600u); - ALLOC_EXPECT(TypeParam, "from_chars 2000 digits (reserved)", n, 2.0, (baseline_counts{2.0, 2.0, 2.0})); + ALLOC_EXPECT(TypeParam, "from_chars 2000 digits (reserved)", n, 2.0, (baseline_counts{2.0, 2.0, 2.0, -1.0, -1.0})); +} + +// ----- small shapes (the inline-capacity study): allocations per call at 1, 2, 4 and 8 limbs ----- +// A result that fits the inline capacity allocates nothing; otherwise one block. Counts are printed for the study +// table. + +TYPED_TEST(AllocCount, SmallShapes) { + TypeParam env; + using int_t = typename TypeParam::int_t; + for (const std::size_t n : {std::size_t{1}, std::size_t{2}, std::size_t{4}, std::size_t{8}}) { + const int_t a = env.make(full_limbs(n, 40 + n)); + const int_t b = env.make(full_limbs(n, 50 + n)); + const int_t d = env.make(full_limbs((n + 1) / 2, 60 + n)); + int_t c = env.empty(); + int_t q = env.empty(); + int_t r = env.empty(); + const std::string shape = std::to_string(n) + " limbs"; + const auto row = [&](const char* op, const double allocs, const double want) { + const std::string name = std::string(op) + " (" + shape + ")"; + std::printf( + "[alloc_count] %-8s %-34s measured=%6.3f small-shape\n", TypeParam::name, name.c_str(), allocs); + EXPECT_LE(allocs, want) << name; + }; + row("c = a + b", steady_allocs(env, [&] { c = a + b; }), 1.0); + row("c = a - b", steady_allocs(env, [&] { c = a - b; }), 1.0); + row("c = a << 13", steady_allocs(env, [&] { c = a << 13; }), 1.0); + row("c = a >> 13", steady_allocs(env, [&] { c = a >> 13; }), 1.0); + row("c = a * b", steady_allocs(env, [&] { c = a * b; }), 1.0); + row("c = a * a", steady_allocs(env, [&] { c = a * a; }), 1.0); + row("c = a / d (n x n/2)", steady_allocs(env, [&] { c = a / d; }), 1.0); + row("div_rem_to_zero (n x n/2)", + steady_allocs(env, + [&] { + const auto qr = div_rem_to_zero(a, d); + escape_value(qr.quotient); + }), + 2.0); + q = a / d; + r = a % d; + EXPECT_TRUE(q * d + r == a); + } } } // namespace From a26c8784eb592b5e3489e29367aac2ad679bc7a2 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 12:53:58 -0400 Subject: [PATCH 29/36] alloc_count: keep the 2x1 divisor within 32-bit limbs --- tests/beman/big_int/alloc_count.test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/beman/big_int/alloc_count.test.cpp b/tests/beman/big_int/alloc_count.test.cpp index 9cd4daa4..8c2d3aec 100644 --- a/tests/beman/big_int/alloc_count.test.cpp +++ b/tests/beman/big_int/alloc_count.test.cpp @@ -401,7 +401,7 @@ TYPED_TEST(AllocCount, DivideTwoByOneQuotientInline) { TypeParam env; using int_t = typename TypeParam::int_t; const int_t a = env.make(std::vector{random_limbs(1, 21)[0], ~limb{0}}); - const int_t b = env.make(std::vector{limb{0x123456789ULL}}); + const int_t b = env.make(std::vector{limb{0x12345678U}}); int_t c = env.empty(); const double n = steady_allocs(env, [&] { c = a / b; }); EXPECT_TRUE(c * b + a % b == a); From 381a5a7abec1bf5ae82c96d5069809292ea9aacb Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 13:22:13 -0400 Subject: [PATCH 30/36] Add item 1 results: before/after sweeps on x64 and M4, shortcut A/B, inline-capacity study, results document and table script --- tests/beman/big_int/perf/gmp_gap_analysis.md | 5 + .../big_int/perf/item1/mac_base64_seed1a.csv | 370 +++++++++++ .../big_int/perf/item1/mac_base64_seed1b.csv | 370 +++++++++++ .../big_int/perf/item1/mac_base64_seed2a.csv | 370 +++++++++++ .../big_int/perf/item1/mac_base64_seed2b.csv | 370 +++++++++++ .../perf/item1/mac_base64_spot_seed1.csv | 31 + .../perf/item1/mac_base64_spot_seed2.csv | 31 + .../big_int/perf/item1/mac_new64_seed1a.csv | 370 +++++++++++ .../big_int/perf/item1/mac_new64_seed1b.csv | 370 +++++++++++ .../big_int/perf/item1/mac_new64_seed2a.csv | 370 +++++++++++ .../big_int/perf/item1/mac_new64_seed2b.csv | 370 +++++++++++ .../perf/item1/mac_new64_shortcut_run1.csv | 20 + .../perf/item1/mac_new64_shortcut_run2.csv | 20 + .../perf/item1/mac_new64_shortcut_run3.csv | 20 + .../perf/item1/mac_new64_spot_seed1.csv | 31 + .../perf/item1/mac_new64_spot_seed2.csv | 31 + .../perf/item1/mac_nosc64_shortcut_run1.csv | 20 + .../perf/item1/mac_nosc64_shortcut_run2.csv | 20 + .../perf/item1/mac_nosc64_shortcut_run3.csv | 20 + .../big_int/perf/item1/mac_study128_run1.csv | 166 +++++ .../big_int/perf/item1/mac_study128_run2.csv | 166 +++++ .../perf/item1/mac_study128_vecsort_run1.csv | 7 + .../perf/item1/mac_study128_vecsort_run2.csv | 7 + .../big_int/perf/item1/mac_study256_run1.csv | 166 +++++ .../big_int/perf/item1/mac_study256_run2.csv | 166 +++++ .../perf/item1/mac_study256_vecsort_run1.csv | 7 + .../perf/item1/mac_study256_vecsort_run2.csv | 7 + .../big_int/perf/item1/mac_study512_run1.csv | 166 +++++ .../big_int/perf/item1/mac_study512_run2.csv | 166 +++++ .../perf/item1/mac_study512_vecsort_run1.csv | 7 + .../perf/item1/mac_study512_vecsort_run2.csv | 7 + .../big_int/perf/item1/mac_study64_run1.csv | 166 +++++ .../big_int/perf/item1/mac_study64_run2.csv | 166 +++++ .../perf/item1/mac_study64_vecsort_run1.csv | 7 + .../perf/item1/mac_study64_vecsort_run2.csv | 7 + .../big_int/perf/item1/x64_base64_seed1a.csv | 370 +++++++++++ .../big_int/perf/item1/x64_base64_seed1b.csv | 370 +++++++++++ .../big_int/perf/item1/x64_base64_seed2a.csv | 370 +++++++++++ .../big_int/perf/item1/x64_base64_seed2b.csv | 370 +++++++++++ .../perf/item1/x64_base64_spot_seed1.csv | 31 + .../perf/item1/x64_base64_spot_seed2.csv | 31 + .../big_int/perf/item1/x64_new64_seed1a.csv | 370 +++++++++++ .../big_int/perf/item1/x64_new64_seed1b.csv | 370 +++++++++++ .../big_int/perf/item1/x64_new64_seed2a.csv | 370 +++++++++++ .../big_int/perf/item1/x64_new64_seed2b.csv | 370 +++++++++++ .../perf/item1/x64_new64_shortcut_run1.csv | 20 + .../perf/item1/x64_new64_shortcut_run2.csv | 20 + .../perf/item1/x64_new64_shortcut_run3.csv | 20 + .../perf/item1/x64_new64_spot_seed1.csv | 31 + .../perf/item1/x64_new64_spot_seed2.csv | 31 + .../perf/item1/x64_nosc64_shortcut_run1.csv | 20 + .../perf/item1/x64_nosc64_shortcut_run2.csv | 20 + .../perf/item1/x64_nosc64_shortcut_run3.csv | 20 + .../big_int/perf/item1/x64_study128_run1.csv | 166 +++++ .../big_int/perf/item1/x64_study128_run2.csv | 166 +++++ .../perf/item1/x64_study128_vecsort_run1.csv | 7 + .../perf/item1/x64_study128_vecsort_run2.csv | 7 + .../big_int/perf/item1/x64_study256_run1.csv | 166 +++++ .../big_int/perf/item1/x64_study256_run2.csv | 166 +++++ .../perf/item1/x64_study256_vecsort_run1.csv | 7 + .../perf/item1/x64_study256_vecsort_run2.csv | 7 + .../big_int/perf/item1/x64_study512_run1.csv | 166 +++++ .../big_int/perf/item1/x64_study512_run2.csv | 166 +++++ .../perf/item1/x64_study512_vecsort_run1.csv | 7 + .../perf/item1/x64_study512_vecsort_run2.csv | 7 + .../big_int/perf/item1/x64_study64_run1.csv | 166 +++++ .../big_int/perf/item1/x64_study64_run2.csv | 166 +++++ .../perf/item1/x64_study64_vecsort_run1.csv | 7 + .../perf/item1/x64_study64_vecsort_run2.csv | 7 + .../big_int/perf/item1_frontend_results.md | 575 ++++++++++++++++++ .../__pycache__/item1_tables.cpython-314.pyc | Bin 0 -> 16506 bytes .../beman/big_int/perf/tools/item1_tables.py | 228 +++++++ 72 files changed, 9984 insertions(+) create mode 100644 tests/beman/big_int/perf/item1/mac_base64_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/mac_base64_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/mac_base64_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/mac_base64_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/mac_base64_spot_seed1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_base64_spot_seed2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_new64_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/mac_new64_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/mac_new64_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/mac_new64_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/mac_new64_shortcut_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_new64_shortcut_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_new64_shortcut_run3.csv create mode 100644 tests/beman/big_int/perf/item1/mac_new64_spot_seed1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_new64_spot_seed2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run3.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study128_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study128_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study128_vecsort_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study128_vecsort_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study256_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study256_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study256_vecsort_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study256_vecsort_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study512_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study512_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study512_vecsort_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study512_vecsort_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study64_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study64_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study64_vecsort_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_study64_vecsort_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_base64_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64_base64_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/x64_base64_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/x64_base64_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/x64_base64_spot_seed1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_base64_spot_seed2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_new64_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64_new64_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/x64_new64_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/x64_new64_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/x64_new64_shortcut_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_new64_shortcut_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_new64_shortcut_run3.csv create mode 100644 tests/beman/big_int/perf/item1/x64_new64_spot_seed1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_new64_spot_seed2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run3.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study128_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study128_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study128_vecsort_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study128_vecsort_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study256_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study256_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study256_vecsort_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study256_vecsort_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study512_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study512_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study512_vecsort_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study512_vecsort_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study64_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study64_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study64_vecsort_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_study64_vecsort_run2.csv create mode 100644 tests/beman/big_int/perf/item1_frontend_results.md create mode 100644 tests/beman/big_int/perf/tools/__pycache__/item1_tables.cpython-314.pyc create mode 100644 tests/beman/big_int/perf/tools/item1_tables.py diff --git a/tests/beman/big_int/perf/gmp_gap_analysis.md b/tests/beman/big_int/perf/gmp_gap_analysis.md index 5b813b50..ec41af50 100644 --- a/tests/beman/big_int/perf/gmp_gap_analysis.md +++ b/tests/beman/big_int/perf/gmp_gap_analysis.md @@ -527,6 +527,11 @@ Decision criteria applied (from the plan): | 9 | Make `add_unsigned_spans` stop at the carry tail (1024x1 add is 2.5x GMP in the kernel row) and give the public add the same compiler-independent loop | kernel/gmp 2.5x, auto 1.2x | kernel rows only; public path already fine | S | both | | 10 | Conversions: after #2 and #4, recheck; power-chain reuse looks minor at 10000 limbs (4.5-7%) but is untested above 100k limbs | tochars/fromchars 262144/131072 2.8x | speculative | M | both | +Status of item 1: implemented on branch `opt_1`; results, targets met and not met, and the inline-capacity study are in +[`item1_frontend_results.md`](item1_frontend_results.md) (small `auto` is now 2-5 ns above the allocation floor for mul/sqr, +0-5 ns for shifts and 2-6 ns for add/sub; x64 add 1000 840 -> 800 ns, below the 650 ns goal; x64 `+=`/`-=` at >= 64 limbs and decimal +`fromchars` regress). + Not recommended: asm for cmp (already faster than GMP on x64, parity on M4); asm for mul 32-512 limbs on x64 (IFMA beats GMP by 1.1-1.8x). diff --git a/tests/beman/big_int/perf/item1/mac_base64_seed1a.csv b/tests/beman/big_int/perf/item1/mac_base64_seed1a.csv new file mode 100644 index 00000000..32d28c4e --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_base64_seed1a.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T16:55:49Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,3101985,9,6.54,6.46,20.61 +add,inplace,1,1,3233824,9,3.22,3.22,20.88 +add,kernel,1,1,17531050,9,1.14,1.14,20.02 +add,floor,1,1,2081933,9,9.45,9.43,19.77 +add,gmp,1,1,13188126,9,1.49,1.48,19.65 +add,gmpz,1,1,6725644,9,3.07,3.02,20.78 +add,auto,2,2,1327708,9,14.64,14.39,19.38 +add,inplace,2,2,2616211,9,3.74,3.72,19.64 +add,kernel,2,2,14214244,9,1.39,1.39,19.81 +add,floor,2,2,2020651,9,9.44,9.42,19.30 +add,gmp,2,2,9864181,9,1.99,1.96,19.54 +add,gmpz,2,2,5945857,9,6.69,3.25,37.22 +add,auto,4,4,1311621,9,15.36,15.10,20.45 +add,inplace,4,4,2690012,9,3.76,3.71,20.19 +add,kernel,4,4,10250683,9,1.95,1.93,19.96 +add,floor,4,4,1908978,9,10.21,10.15,19.67 +add,gmp,4,4,11528187,9,1.74,1.73,20.57 +add,gmpz,4,4,5683898,9,4.47,4.17,26.38 +add,auto,8,8,1288769,9,15.42,14.84,19.97 +add,inplace,8,8,2047580,9,4.90,4.87,20.11 +add,kernel,8,8,5722060,9,3.50,3.46,20.02 +add,floor,8,8,1707963,9,12.03,11.90,20.57 +add,gmp,8,8,8951187,9,2.24,2.23,20.53 +add,gmpz,8,8,3762332,9,5.23,5.04,19.59 +add,auto,16,16,1200108,9,16.32,16.26,19.61 +add,inplace,16,16,1031423,9,9.71,9.67,20.02 +add,kernel,16,16,2677780,9,7.56,7.47,20.26 +add,floor,16,16,1455178,9,13.45,13.42,19.63 +add,gmp,16,16,6187338,9,3.23,3.22,20.13 +add,gmpz,16,16,4964910,9,4.24,4.03,20.32 +add,auto,64,64,368498,9,54.45,54.16,20.04 +add,inplace,64,64,194047,9,51.23,50.09,19.81 +add,kernel,64,64,408261,9,49.14,47.91,20.10 +add,floor,64,64,314466,9,63.36,60.39,19.59 +add,gmp,64,64,1801024,9,11.18,11.07,20.12 +add,gmpz,64,64,1575421,9,12.93,12.88,20.42 +add,auto,256,256,133018,9,148.31,144.68,19.94 +add,inplace,256,256,41540,9,236.48,230.48,19.66 +add,kernel,256,256,85972,9,232.24,223.63,19.83 +add,floor,256,256,80628,9,245.68,237.93,19.76 +add,gmp,256,256,351901,9,57.16,56.84,20.12 +add,gmpz,256,256,344060,9,57.69,57.05,19.82 +add,auto,1024,1024,37079,9,552.37,532.70,20.38 +add,inplace,1024,1024,10238,9,974.52,948.72,19.87 +add,kernel,1024,1024,21346,9,966.64,940.31,20.94 +add,floor,1024,1024,20320,9,976.10,941.85,19.81 +add,gmp,1024,1024,79648,9,251.39,245.85,19.98 +add,gmpz,1024,1024,78559,9,253.11,246.46,19.79 +add,auto,2000,2000,19684,9,1117.23,1047.06,20.51 +add,inplace,2000,2000,4949,9,1907.99,1827.84,18.83 +add,kernel,2000,2000,10614,9,1894.00,1841.86,20.07 +add,floor,2000,2000,10535,9,1914.35,1857.04,20.17 +add,gmp,2000,2000,40403,9,495.04,486.50,19.98 +add,gmpz,2000,2000,40226,9,495.51,483.44,19.91 +add,auto,1024,1,108661,9,174.99,166.63,20.55 +add,inplace,1024,1,9834,9,968.66,940.76,19.03 +add,kernel,1024,1,27159,9,732.80,707.46,19.79 +add,floor,1024,1,26603,9,754.65,749.24,20.08 +add,gmp,1024,1,77730,9,261.08,254.07,20.27 +add,gmpz,1024,1,78397,9,261.89,257.44,20.49 +sub,auto,1,1,2673999,9,7.44,7.21,19.84 +sub,inplace,1,1,2984154,9,3.29,3.23,19.74 +sub,kernel,1,1,19489125,9,1.04,1.03,20.13 +sub,floor,1,1,11498669,9,1.74,1.74,19.99 +sub,gmp,1,1,13446394,9,1.49,1.48,20.02 +sub,gmpz,1,1,6704541,9,3.06,2.74,19.92 +sub,auto,2,2,1321798,9,15.05,14.60,19.92 +sub,inplace,2,2,3223607,9,3.47,3.10,21.47 +sub,kernel,2,2,14268439,9,1.39,1.39,19.86 +sub,floor,2,2,2116247,9,9.91,9.48,20.82 +sub,gmp,2,2,10085686,9,1.98,1.94,19.98 +sub,gmpz,2,2,6195408,9,3.24,3.20,21.07 +sub,auto,4,4,1174303,9,15.93,15.89,18.87 +sub,inplace,4,4,2607819,9,3.74,3.72,19.98 +sub,kernel,4,4,10304965,9,1.95,1.93,20.19 +sub,floor,4,4,1961906,9,10.18,9.94,20.10 +sub,gmp,4,4,11460016,9,1.74,1.73,19.97 +sub,gmpz,4,4,6708045,9,2.99,2.98,20.07 +sub,auto,8,8,1267273,9,15.52,15.44,19.70 +sub,inplace,8,8,2016283,9,5.20,4.89,20.73 +sub,kernel,8,8,5694240,9,3.51,3.50,20.04 +sub,floor,8,8,1748398,9,11.19,11.15,19.76 +sub,gmp,8,8,8856036,9,2.25,2.23,19.91 +sub,gmpz,8,8,5757032,9,3.48,3.46,20.02 +sub,auto,16,16,1103757,9,17.87,17.62,19.84 +sub,inplace,16,16,1067428,9,9.32,8.83,20.32 +sub,kernel,16,16,2591669,9,7.69,7.63,19.91 +sub,floor,16,16,1340528,9,14.90,14.66,20.07 +sub,gmp,16,16,6356177,9,3.23,3.07,20.20 +sub,gmpz,16,16,4499819,9,4.28,4.23,19.64 +sub,auto,64,64,489935,9,40.82,40.67,20.00 +sub,inplace,64,64,196661,9,50.58,48.98,19.83 +sub,kernel,64,64,405457,9,48.80,48.66,19.80 +sub,floor,64,64,330879,9,60.35,58.93,19.92 +sub,gmp,64,64,1756657,9,11.50,11.37,20.24 +sub,gmpz,64,64,1448313,9,13.86,13.77,20.12 +sub,auto,256,256,149965,9,132.54,131.69,20.10 +sub,inplace,256,256,42361,9,238.44,233.95,20.12 +sub,kernel,256,256,85185,9,233.30,227.18,19.75 +sub,floor,256,256,82471,9,242.46,237.61,19.96 +sub,gmp,256,256,349047,9,57.23,56.76,19.97 +sub,gmpz,256,256,347918,9,57.82,57.14,20.08 +sub,auto,1024,1024,36846,9,539.95,535.90,19.92 +sub,inplace,1024,1024,10180,9,983.69,971.13,19.99 +sub,kernel,1024,1024,20589,9,966.29,953.18,19.89 +sub,floor,1024,1024,20595,9,974.66,948.27,20.01 +sub,gmp,1024,1024,79633,9,251.89,247.44,20.01 +sub,gmpz,1024,1024,78658,9,253.60,248.23,19.88 +sub,auto,2000,2000,18068,9,1067.43,1008.32,19.37 +sub,inplace,2000,2000,5242,9,1918.51,1872.49,20.06 +sub,kernel,2000,2000,10474,9,1906.14,1850.36,19.89 +sub,floor,2000,2000,10610,9,1912.23,1869.65,20.27 +sub,gmp,2000,2000,40575,9,493.57,482.47,19.99 +sub,gmpz,2000,2000,41089,9,497.40,491.98,20.38 +sub,auto,1024,1,98013,9,212.83,200.02,21.04 +sub,inplace,1024,1,10352,9,967.09,938.76,19.97 +sub,kernel,1024,1,27373,9,735.83,732.80,20.17 +sub,floor,1024,1,26177,9,751.66,721.08,19.69 +sub,gmp,1024,1,77621,9,264.29,261.00,20.47 +sub,gmpz,1024,1,75798,9,263.92,259.88,19.93 +shl,auto,1,13,1167227,9,16.90,16.38,19.71 +shl,inplace,1,13,4396954,9,2.34,2.29,20.53 +shl,kernel,1,13,8862971,9,2.24,2.23,19.90 +shl,kernelip,1,13,5716825,9,1.77,1.75,20.25 +shl,floor,1,13,1830478,9,10.93,10.67,20.08 +shl,gmp,1,13,15934901,9,1.25,1.24,19.94 +shl,gmpz,1,13,10086044,9,1.98,1.98,20.03 +shl,auto,4,13,1043827,9,18.70,18.64,19.81 +shl,inplace,4,13,2781034,9,3.57,3.55,19.95 +shl,kernel,4,13,5329925,9,3.73,3.71,19.94 +shl,kernelip,4,13,2896863,9,3.38,3.33,19.67 +shl,floor,4,13,1515337,9,12.82,12.41,19.28 +shl,gmp,4,13,10124378,9,1.99,1.98,20.16 +shl,gmpz,4,13,7321834,9,2.73,2.72,20.00 +shl,auto,16,13,945455,9,21.77,21.34,20.55 +shl,inplace,16,13,1724641,9,5.79,5.77,20.00 +shl,kernel,16,13,4847096,9,4.16,4.12,20.12 +shl,kernelip,16,13,1354100,9,6.77,6.67,18.33 +shl,floor,16,13,1666442,9,11.84,11.78,19.85 +shl,gmp,16,13,5212579,9,3.47,3.47,18.12 +shl,gmpz,16,13,4123271,9,4.82,4.80,19.89 +shl,auto,256,13,231288,9,85.60,85.05,19.83 +shl,inplace,256,13,274928,9,36.30,36.20,19.96 +shl,kernel,256,13,406948,9,49.17,48.98,20.01 +shl,kernelip,256,13,202212,9,48.76,48.55,19.78 +shl,floor,256,13,343105,9,57.93,56.93,19.85 +shl,gmp,256,13,542966,9,36.91,36.81,20.06 +shl,gmpz,256,13,526456,9,37.81,37.75,19.96 +shl,auto,2000,13,31297,9,613.27,591.39,19.51 +shl,inplace,2000,13,35426,9,283.48,282.45,20.08 +shl,kernel,2000,13,52282,9,383.50,381.58,20.16 +shl,kernelip,2000,13,26641,9,376.01,375.14,20.09 +shl,floor,2000,13,49884,9,401.08,398.55,20.00 +shl,gmp,2000,13,25275,9,1593.99,857.18,32.22 +shl,gmpz,2000,13,9855,9,2653.56,1906.52,25.19 +shl,auto,2000,77,25277,9,786.27,754.66,20.14 +shl,inplace,2000,77,23764,9,425.10,423.91,20.27 +shl,kernel,2000,77,37883,9,528.23,517.58,19.97 +shl,kernelip,2000,77,19260,9,519.58,514.24,19.98 +shl,floor,2000,77,36957,9,542.09,535.93,20.07 +shl,gmp,2000,77,66641,9,292.55,286.50,19.61 +shl,gmpz,2000,77,69239,9,290.83,286.95,20.12 +shr,auto,1,13,2120926,9,9.42,8.92,19.69 +shr,inplace,1,13,4420450,9,2.36,2.26,20.69 +shr,kernel,1,13,8962368,9,2.23,2.23,20.03 +shr,floor,1,13,8060990,9,2.50,2.44,20.62 +shr,gmp,1,13,20000001,9,0.99,0.99,19.89 +shr,gmpz,1,13,10051378,9,2.00,1.98,20.20 +shr,auto,4,13,1101151,9,18.76,18.20,20.67 +shr,inplace,4,13,3079460,9,3.21,3.20,19.77 +shr,kernel,4,13,4953019,9,3.72,3.71,18.56 +shr,floor,4,13,1643441,9,12.14,11.41,19.59 +shr,gmp,4,13,11520642,9,1.74,1.73,20.05 +shr,gmpz,4,13,7325254,9,2.74,2.72,20.08 +shr,auto,16,13,945064,9,21.02,20.88,19.92 +shr,inplace,16,13,1989994,9,5.06,5.06,20.16 +shr,kernel,16,13,4795069,9,4.18,4.15,20.03 +shr,floor,16,13,1545972,9,13.04,12.92,20.14 +shr,gmp,16,13,6181564,9,3.23,3.22,19.98 +shr,gmpz,16,13,4719282,9,4.24,4.23,20.62 +shr,auto,256,13,230399,9,87.48,86.86,20.13 +shr,inplace,256,13,272606,9,35.93,35.68,19.60 +shr,kernel,256,13,300460,9,66.30,65.91,19.92 +shr,floor,256,13,265241,9,75.57,75.35,20.05 +shr,gmp,256,13,545597,9,36.74,36.61,20.05 +shr,gmpz,256,13,518888,9,38.44,38.06,20.04 +shr,auto,2000,13,29359,9,654.79,633.81,19.37 +shr,inplace,2000,13,35216,9,282.45,281.25,19.88 +shr,kernel,2000,13,39086,9,511.65,509.30,20.01 +shr,floor,2000,13,38558,9,524.47,519.66,20.22 +shr,gmp,2000,13,66443,9,304.11,290.75,20.31 +shr,gmpz,2000,13,67633,9,291.89,287.47,19.85 +shr,auto,2000,77,20755,9,1006.47,960.55,20.91 +shr,inplace,2000,77,23762,9,419.79,418.43,19.94 +shr,kernel,2000,77,38708,9,517.10,510.50,20.01 +shr,floor,2000,77,38001,9,526.08,524.83,20.00 +shr,gmp,2000,77,66183,9,291.01,289.69,19.41 +shr,gmpz,2000,77,67237,9,301.06,285.92,20.33 +mul,auto,1,1,1267626,9,17.24,15.20,21.45 +mul,gmp,1,1,5365101,9,3.73,3.71,20.02 +mul,gmpz,1,1,7238532,9,2.74,2.73,19.95 +mul,auto,2,2,726408,9,26.65,25.78,19.43 +mul,kernel,2,2,3118001,9,6.51,6.46,20.35 +mul,floor,2,2,1381441,9,14.92,14.82,20.67 +mul,gmp,2,2,4241011,9,4.73,4.71,20.09 +mul,gmpz,2,2,2901334,9,6.81,6.78,19.78 +mul,auto,3,3,667310,9,29.94,29.01,19.97 +mul,kernel,3,3,2410850,9,8.21,8.18,20.01 +mul,floor,3,3,1115893,9,17.53,16.83,19.30 +mul,gmp,3,3,3215476,9,6.09,6.07,19.72 +mul,gmpz,3,3,2249713,9,8.62,8.49,19.35 +mul,auto,4,4,676527,9,29.61,28.99,20.16 +mul,kernel,4,4,1800816,9,11.24,11.11,20.23 +mul,floor,4,4,1187921,9,16.80,16.66,20.00 +mul,gmp,4,4,2170987,9,9.00,8.94,19.64 +mul,gmpz,4,4,1829506,9,10.94,10.91,20.02 +mul,auto,6,6,607822,9,33.12,32.82,20.13 +mul,kernel,6,6,1040307,9,19.18,19.05,19.98 +mul,floor,6,6,794977,9,23.98,23.76,19.17 +mul,gmp,6,6,1398366,9,14.43,14.35,20.22 +mul,gmpz,6,6,1133646,9,18.12,17.88,20.70 +mul,auto,8,8,479545,9,41.55,41.20,20.11 +mul,kernel,8,8,868862,9,22.87,22.83,19.89 +mul,floor,8,8,664818,9,30.50,30.02,20.24 +mul,gmp,8,8,851257,9,22.77,22.02,19.74 +mul,gmpz,8,8,801405,9,26.18,25.11,21.12 +mul,auto,12,12,319739,9,62.65,61.69,19.98 +mul,kernel,12,12,482804,9,40.97,40.93,19.79 +mul,floor,12,12,404733,9,49.37,49.27,19.98 +mul,gmp,12,12,450728,9,44.30,44.17,19.96 +mul,gmpz,12,12,428854,9,46.64,46.34,20.01 +mul,auto,16,16,212198,9,94.59,94.11,20.06 +mul,kernel,16,16,287632,9,69.84,69.45,20.31 +mul,floor,16,16,251318,9,78.78,78.52,19.79 +mul,gmp,16,16,258745,9,77.44,77.15,20.08 +mul,gmpz,16,16,252999,9,79.02,78.86,20.04 +mul,auto,32,32,66654,9,298.15,297.75,19.93 +mul,kernel,32,32,76816,9,258.51,258.15,19.87 +mul,floor,32,32,68269,9,279.73,279.00,19.15 +mul,gmp,32,32,74367,9,270.72,268.33,20.13 +mul,gmpz,32,32,73964,9,270.70,270.19,20.04 +mul,auto,64,64,19035,9,1037.09,1035.45,19.78 +mul,kernel,64,64,20325,9,981.98,980.30,19.98 +mul,floor,64,64,19376,9,1019.25,1011.76,19.73 +mul,gmp,64,64,25695,9,775.04,773.38,19.94 +mul,gmpz,64,64,25739,9,776.85,773.93,20.04 +mul,auto,128,128,5464,9,3640.81,3622.05,19.93 +mul,kernel,128,128,5593,9,3576.78,3550.08,19.98 +mul,floor,128,128,5596,9,3615.90,3571.93,20.36 +mul,gmp,128,128,7625,9,2638.89,2625.43,20.11 +mul,gmpz,128,128,7559,9,2645.09,2635.94,20.00 +mul,auto,256,256,1692,9,11845.35,11806.61,20.07 +mul,kernel,256,256,1706,9,11742.11,11718.08,20.06 +mul,floor,256,256,1702,9,11765.77,11718.88,20.11 +mul,gmp,256,256,2533,9,7925.11,7810.40,20.06 +mul,gmpz,256,256,2554,9,7853.77,7805.58,20.07 +mul,auto,512,512,541,9,37229.74,36895.64,20.15 +mul,kernel,512,512,542,9,36931.66,36812.19,20.01 +mul,floor,512,512,544,9,36904.26,36678.39,20.10 +mul,gmp,512,512,1051,9,19028.78,18950.09,20.02 +mul,gmpz,512,512,1053,9,19011.55,18986.70,20.13 +mul,auto,1000,1000,187,9,106996.21,106483.51,20.02 +mul,kernel,1000,1000,188,9,106689.94,106552.75,20.07 +mul,floor,1000,1000,170,9,106782.84,106488.73,18.42 +mul,gmp,1000,1000,361,9,55094.76,54762.12,19.88 +mul,gmpz,1000,1000,364,9,54882.21,54779.30,19.99 +mul,auto,2000,2000,67,9,302050.37,301316.55,20.26 +mul,kernel,2000,2000,67,9,301473.88,298654.24,20.22 +mul,floor,2000,2000,67,9,304617.54,298598.88,20.33 +mul,gmp,2000,2000,136,9,148208.95,147819.85,20.17 +mul,gmpz,2000,2000,136,9,148623.47,148127.15,20.22 +mul,auto,2000,100,427,9,46991.61,46775.18,20.10 +mul,kernel,2000,100,427,9,46681.30,46543.03,19.93 +mul,floor,2000,100,427,9,46713.60,46604.61,20.26 +mul,gmp,2000,100,541,9,35051.45,34950.17,18.96 +mul,gmpz,2000,100,579,9,34658.10,34529.51,20.08 +sqr,auto,4,4,674993,9,29.43,29.32,19.99 +sqr,kernel,4,4,1762749,9,11.23,10.91,19.67 +sqr,floor,4,4,1211080,9,16.46,16.38,20.01 +sqr,gmp,4,4,2919987,9,6.69,6.46,19.53 +sqr,gmpz,4,4,2113222,9,9.68,9.46,20.29 +sqr,auto,16,16,225294,9,88.95,88.67,20.05 +sqr,kernel,16,16,319507,9,62.02,61.50,19.80 +sqr,floor,16,16,259680,9,71.38,70.94,18.56 +sqr,gmp,16,16,314932,9,61.34,59.10,19.53 +sqr,gmpz,16,16,299462,9,66.73,65.17,19.94 +sqr,auto,64,64,31957,9,627.29,625.23,20.10 +sqr,kernel,64,64,33975,9,587.86,581.52,19.93 +sqr,floor,64,64,33348,9,601.67,598.29,20.06 +sqr,gmp,64,64,29613,9,662.67,655.17,19.70 +sqr,gmpz,64,64,29573,9,676.27,656.14,19.90 +sqr,auto,512,512,816,9,24605.39,24290.85,20.03 +sqr,kernel,512,512,810,9,24275.77,24097.58,19.65 +sqr,floor,512,512,823,9,24416.16,24218.56,20.24 +sqr,gmp,512,512,1226,9,16469.62,16260.40,20.15 +sqr,gmpz,512,512,1018,9,19683.98,19449.12,20.03 +sqr,auto,2000,2000,89,9,224819.75,223413.39,20.05 +sqr,kernel,2000,2000,91,9,222940.93,221290.30,20.28 +sqr,floor,2000,2000,90,9,222926.39,222166.21,20.08 +sqr,gmp,2000,2000,166,9,120932.98,120406.12,20.07 +sqr,gmpz,2000,2000,166,9,120191.77,119299.95,19.97 +divrem,auto,2,1,644316,9,31.25,30.53,20.09 +divrem,kernel,2,1,3586841,9,5.61,5.59,20.13 +divrem,floor,2,1,1444947,9,13.88,13.43,20.07 +divrem,gmp,2,1,4009877,9,5.01,4.97,20.11 +divrem,gmpz,2,1,2275480,9,8.79,8.76,20.04 +divrem,auto,8,4,216804,9,91.84,91.21,19.90 +divrem,kernel,8,4,491042,9,41.11,40.29,20.20 +divrem,floor,8,4,354115,9,56.63,55.87,20.03 +divrem,gmp,8,4,496720,9,39.71,39.39,19.76 +divrem,gmpz,8,4,462473,9,43.01,42.31,19.81 +divrem,auto,32,16,42559,9,482.41,479.48,20.51 +divrem,kernel,32,16,50689,9,390.72,377.90,19.77 +divrem,floor,32,16,47773,9,409.84,398.00,19.53 +divrem,gmp,32,16,96344,9,207.37,202.25,20.03 +divrem,gmpz,32,16,95325,9,210.10,206.30,19.95 +divrem,auto,128,64,5347,9,3727.10,3632.75,19.90 +divrem,kernel,128,64,5614,9,3575.71,3510.39,20.12 +divrem,floor,128,64,5500,9,3619.45,3507.24,19.78 +divrem,gmp,128,64,11213,9,1780.39,1755.13,19.94 +divrem,gmpz,128,64,11202,9,1784.44,1777.44,20.20 +divrem,auto,512,256,674,9,29646.02,29401.46,20.02 +divrem,kernel,512,256,682,9,29333.09,28986.19,20.00 +divrem,floor,512,256,680,9,29383.27,29004.47,19.96 +divrem,gmp,512,256,1218,9,16331.38,16205.63,19.90 +divrem,gmpz,512,256,1229,9,16322.01,16210.30,20.07 +divrem,auto,2000,1000,87,9,232143.68,231034.00,20.24 +divrem,kernel,2000,1000,87,9,231181.52,228812.74,20.10 +divrem,floor,2000,1000,87,9,232943.97,229001.44,20.23 +divrem,gmp,2000,1000,147,9,136199.54,135286.84,20.11 +divrem,gmpz,2000,1000,150,9,134395.83,134126.39,20.20 +divrem,auto,4000,2000,30,9,685144.47,680165.30,20.55 +divrem,kernel,4000,2000,30,9,683731.93,678752.77,20.53 +divrem,floor,4000,2000,30,9,684095.83,680309.70,20.52 +divrem,gmp,4000,2000,59,9,343073.44,342485.88,20.38 +divrem,gmpz,4000,2000,59,9,344240.12,342995.76,20.32 +divrem,auto,2000,100,212,9,95012.58,94620.48,20.17 +divrem,kernel,2000,100,215,9,93850.58,93565.31,20.18 +divrem,floor,2000,100,213,9,93921.75,93312.99,19.99 +divrem,gmp,2000,100,288,9,69325.95,69050.06,19.99 +divrem,gmpz,2000,100,288,9,69379.77,68751.88,20.11 +divrem,auto,65536,1,82,9,243146.34,241600.61,20.22 +divrem,kernel,65536,1,86,9,226987.41,225219.00,19.56 +divrem,floor,65536,1,80,9,228992.71,226743.75,18.79 +divrem,gmp,65536,1,118,9,170146.54,163618.64,19.91 +divrem,gmpz,65536,1,119,9,169908.96,165580.18,20.11 +fromchars,auto,4,10,217178,9,92.60,90.69,20.01 +fromchars,kernel,4,10,632516,9,32.56,31.89,20.52 +fromchars,gmp,4,10,645825,9,30.60,29.97,19.78 +fromchars,gmpz,4,10,269586,9,76.25,74.16,20.46 +fromchars,auto,16,10,52404,9,380.65,371.30,19.91 +fromchars,kernel,16,10,101976,9,193.68,189.84,19.71 +fromchars,gmp,16,10,141015,9,142.82,139.76,20.06 +fromchars,gmpz,16,10,63264,9,315.94,313.12,20.02 +fromchars,auto,64,10,9096,9,2187.34,2160.55,19.89 +fromchars,kernel,64,10,10770,9,1856.78,1814.81,20.05 +fromchars,gmp,64,10,20926,9,955.21,946.64,20.03 +fromchars,gmpz,64,10,12467,9,1604.67,1587.43,20.00 +fromchars,auto,256,10,1442,9,13821.92,13694.09,19.92 +fromchars,kernel,256,10,1727,9,11575.20,11495.90,19.98 +fromchars,gmp,256,10,2526,9,8001.35,7935.21,20.21 +fromchars,gmpz,256,10,1878,9,10627.57,10564.52,20.10 +fromchars,auto,2000,10,67,9,301437.18,299575.87,20.32 +fromchars,kernel,2000,10,71,9,282810.45,281894.94,20.07 +fromchars,gmp,2000,10,109,9,183594.04,183052.75,20.01 +fromchars,gmpz,2000,10,99,9,204882.15,203244.95,20.38 diff --git a/tests/beman/big_int/perf/item1/mac_base64_seed1b.csv b/tests/beman/big_int/perf/item1/mac_base64_seed1b.csv new file mode 100644 index 00000000..a0b46064 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_base64_seed1b.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T16:58:49Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2879648,9,6.95,6.92,20.09 +add,inplace,1,1,3222015,9,3.11,3.10,20.27 +add,kernel,1,1,17545028,9,1.15,1.14,20.21 +add,floor,1,1,2111876,9,9.51,9.45,20.18 +add,gmp,1,1,13499431,9,1.49,1.48,20.14 +add,gmpz,1,1,6621649,9,3.53,2.98,23.83 +add,auto,2,2,1346668,9,14.47,14.40,19.69 +add,inplace,2,2,2422171,9,4.19,4.10,20.30 +add,kernel,2,2,14383444,9,1.39,1.39,20.01 +add,floor,2,2,2071243,9,9.92,9.69,20.47 +add,gmp,2,2,10694398,9,1.74,1.73,18.62 +add,gmpz,2,2,6720650,9,3.61,2.98,29.01 +add,auto,4,4,1321552,9,15.14,15.10,20.01 +add,inplace,4,4,2598134,9,3.60,3.59,18.93 +add,kernel,4,4,10329950,9,1.91,1.91,19.79 +add,floor,4,4,1911765,9,10.43,10.38,19.99 +add,gmp,4,4,11518773,9,1.74,1.73,20.79 +add,gmpz,4,4,4796431,9,4.93,4.03,20.99 +add,auto,8,8,1263275,9,15.57,15.50,19.69 +add,inplace,8,8,1940896,9,4.93,4.91,19.20 +add,kernel,8,8,5691849,9,3.50,3.47,19.91 +add,floor,8,8,1701037,9,11.93,11.90,20.35 +add,gmp,8,8,8963506,9,2.24,2.23,20.32 +add,gmpz,8,8,5224360,9,4.44,3.80,20.90 +add,auto,16,16,1206916,9,16.33,16.30,19.75 +add,inplace,16,16,1040599,9,9.62,9.57,20.03 +add,kernel,16,16,2647620,9,7.55,7.50,20.02 +add,floor,16,16,1438133,9,13.68,13.59,19.76 +add,gmp,16,16,6190678,9,3.26,3.23,20.14 +add,gmpz,16,16,4829844,9,4.50,4.50,21.88 +add,auto,64,64,352141,9,54.63,54.19,19.48 +add,inplace,64,64,193235,9,51.55,49.95,19.88 +add,kernel,64,64,404533,9,49.42,49.26,19.99 +add,floor,64,64,331851,9,61.21,60.10,20.22 +add,gmp,64,64,1699425,9,11.40,11.09,19.42 +add,gmpz,64,64,1544089,9,12.92,12.85,19.96 +add,auto,256,256,136034,9,146.12,144.66,19.87 +add,inplace,256,256,41223,9,239.49,234.26,19.71 +add,kernel,256,256,84555,9,235.28,231.61,20.11 +add,floor,256,256,80360,9,245.01,237.37,19.65 +add,gmp,256,256,352497,9,56.93,56.18,20.04 +add,gmpz,256,256,347044,9,57.96,57.58,20.13 +add,auto,1024,1024,35427,9,573.64,548.22,20.26 +add,inplace,1024,1024,10073,9,983.99,967.51,19.83 +add,kernel,1024,1024,20394,9,972.61,938.05,19.75 +add,floor,1024,1024,21046,9,982.68,965.15,20.72 +add,gmp,1024,1024,79413,9,251.71,249.14,19.97 +add,gmpz,1024,1024,78508,9,256.15,250.13,20.07 +add,auto,2000,2000,18806,9,1085.68,1014.88,20.38 +add,inplace,2000,2000,5144,9,1942.85,1884.21,19.90 +add,kernel,2000,2000,10294,9,1920.52,1887.23,19.73 +add,floor,2000,2000,10313,9,1939.05,1879.86,19.90 +add,gmp,2000,2000,40576,9,494.76,490.43,20.07 +add,gmpz,2000,2000,40176,9,496.45,492.46,19.93 +add,auto,1024,1,114937,9,168.25,167.27,19.45 +add,inplace,1024,1,10164,9,978.30,929.66,19.71 +add,kernel,1024,1,27395,9,732.35,710.91,19.99 +add,floor,1024,1,26565,9,752.06,751.39,19.99 +add,gmp,1024,1,75867,9,263.46,258.35,19.97 +add,gmpz,1024,1,75319,9,264.83,258.58,19.86 +sub,auto,1,1,2600864,9,7.68,7.60,19.95 +sub,inplace,1,1,2983392,9,3.35,3.23,19.82 +sub,kernel,1,1,19243585,9,1.04,1.03,19.90 +sub,floor,1,1,11513805,9,1.74,1.74,20.01 +sub,gmp,1,1,13513040,9,1.49,1.49,20.16 +sub,gmpz,1,1,7251369,9,2.89,2.74,20.64 +sub,auto,2,2,1325846,9,14.79,14.64,19.63 +sub,inplace,2,2,3037216,9,3.35,3.10,20.09 +sub,kernel,2,2,14141771,9,1.40,1.39,19.86 +sub,floor,2,2,2104201,9,9.30,9.24,19.66 +sub,gmp,2,2,11538120,9,1.74,1.74,20.18 +sub,gmpz,2,2,6715782,9,2.98,2.97,20.00 +sub,auto,4,4,1258053,9,15.89,15.66,19.95 +sub,inplace,4,4,2778605,9,3.60,3.59,20.06 +sub,kernel,4,4,10256943,9,1.94,1.93,19.95 +sub,floor,4,4,2059610,9,9.95,9.50,20.24 +sub,gmp,4,4,11500983,9,1.74,1.73,19.97 +sub,gmpz,4,4,6690109,9,2.98,2.98,19.97 +sub,auto,8,8,1234839,9,16.47,16.44,20.34 +sub,inplace,8,8,1910803,9,4.97,4.91,19.20 +sub,kernel,8,8,5712003,9,3.50,3.49,20.02 +sub,floor,8,8,1753491,9,11.44,11.39,20.22 +sub,gmp,8,8,8933713,9,2.24,2.23,21.12 +sub,gmpz,8,8,5755041,9,3.54,3.48,20.40 +sub,auto,16,16,1087336,9,18.20,18.09,19.83 +sub,inplace,16,16,1125651,9,12.60,8.88,20.11 +sub,kernel,16,16,2593606,9,7.71,7.64,20.02 +sub,floor,16,16,1333915,9,15.16,14.41,19.99 +sub,gmp,16,16,6107127,9,3.24,3.11,19.59 +sub,gmpz,16,16,4652313,9,4.26,4.23,20.02 +sub,auto,64,64,487832,9,41.12,41.08,20.49 +sub,inplace,64,64,195619,9,51.03,50.21,19.97 +sub,kernel,64,64,415193,9,49.36,48.61,20.43 +sub,floor,64,64,330979,9,60.72,59.74,20.05 +sub,gmp,64,64,1741419,9,11.40,11.30,19.87 +sub,gmpz,64,64,1449948,9,13.85,13.59,20.03 +sub,auto,256,256,150473,9,132.88,131.79,20.03 +sub,inplace,256,256,41774,9,239.51,232.09,19.95 +sub,kernel,256,256,84384,9,237.90,235.45,20.06 +sub,floor,256,256,81655,9,244.43,236.90,19.88 +sub,gmp,256,256,354546,9,57.26,57.09,20.39 +sub,gmpz,256,256,342188,9,57.75,57.23,19.75 +sub,auto,1024,1024,37511,9,551.41,536.74,20.89 +sub,inplace,1024,1024,10130,9,985.65,974.41,19.95 +sub,kernel,1024,1024,20904,9,973.45,930.91,20.21 +sub,floor,1024,1024,20191,9,975.70,947.55,19.67 +sub,gmp,1024,1024,79496,9,251.65,247.72,19.96 +sub,gmpz,1024,1024,78220,9,253.50,250.38,19.80 +sub,auto,2000,2000,19926,9,1079.78,1031.23,21.45 +sub,inplace,2000,2000,4994,9,1939.87,1881.27,19.41 +sub,kernel,2000,2000,10372,9,1920.95,1856.77,19.83 +sub,floor,2000,2000,10251,9,1926.52,1880.66,19.72 +sub,gmp,2000,2000,40456,9,494.75,489.37,19.99 +sub,gmpz,2000,2000,40669,9,498.66,491.62,20.26 +sub,auto,1024,1,98120,9,203.89,200.28,20.00 +sub,inplace,1024,1,10219,9,974.00,947.16,19.82 +sub,kernel,1024,1,28076,9,731.71,713.64,20.50 +sub,floor,1024,1,27017,9,754.16,735.53,20.34 +sub,gmp,1024,1,77490,9,263.08,259.17,20.41 +sub,gmpz,1024,1,75405,9,265.51,262.10,20.00 +shl,auto,1,13,1202803,9,16.46,16.34,19.80 +shl,inplace,1,13,4404756,9,2.31,2.29,20.33 +shl,kernel,1,13,8856605,9,2.24,2.23,19.82 +shl,kernelip,1,13,5845373,9,1.75,1.73,20.45 +shl,floor,1,13,1756037,9,11.41,11.20,20.00 +shl,gmp,1,13,16118229,9,1.24,1.23,20.07 +shl,gmpz,1,13,10059850,9,1.99,1.98,19.99 +shl,auto,4,13,1066391,9,18.98,18.60,20.11 +shl,inplace,4,13,2816416,9,3.57,3.54,20.25 +shl,kernel,4,13,5109210,9,3.73,3.72,19.07 +shl,kernelip,4,13,2763484,9,3.36,3.34,18.57 +shl,floor,4,13,1453109,9,12.63,12.41,18.77 +shl,gmp,4,13,10062817,9,1.99,1.98,19.78 +shl,gmpz,4,13,7320952,9,2.73,2.73,20.05 +shl,auto,16,13,964753,9,21.61,20.75,20.72 +shl,inplace,16,13,1728758,9,5.79,5.78,20.04 +shl,kernel,16,13,4893191,9,4.08,4.06,19.96 +shl,kernelip,16,13,1375747,9,6.84,6.65,18.90 +shl,floor,16,13,1668789,9,11.96,11.70,19.92 +shl,gmp,16,13,5368225,9,3.48,3.47,18.66 +shl,gmpz,16,13,3865829,9,5.15,5.07,19.87 +shl,auto,256,13,232578,9,85.91,85.48,20.05 +shl,inplace,256,13,271214,9,36.38,36.25,19.73 +shl,kernel,256,13,406893,9,49.20,49.03,20.04 +shl,kernelip,256,13,204811,9,48.73,48.40,19.95 +shl,floor,256,13,348933,9,57.58,57.23,20.13 +shl,gmp,256,13,543548,9,36.93,36.89,20.09 +shl,gmpz,256,13,524026,9,37.78,37.73,19.81 +shl,auto,2000,13,32238,9,664.00,640.07,21.60 +shl,inplace,2000,13,35449,9,282.59,281.86,20.06 +shl,kernel,2000,13,51535,9,383.89,382.81,19.84 +shl,kernelip,2000,13,26574,9,376.70,374.54,20.02 +shl,floor,2000,13,49693,9,400.16,397.88,20.08 +shl,gmp,2000,13,42395,9,1315.54,782.78,41.88 +shl,gmpz,2000,13,15706,9,1877.57,1297.57,26.80 +shl,auto,2000,77,25498,9,759.95,719.55,19.35 +shl,inplace,2000,77,23700,9,424.54,421.36,20.09 +shl,kernel,2000,77,37986,9,527.11,523.38,20.02 +shl,kernelip,2000,77,19214,9,521.82,515.01,20.18 +shl,floor,2000,77,36430,9,542.43,540.27,19.78 +shl,gmp,2000,77,68487,9,292.19,287.11,20.04 +shl,gmpz,2000,77,65960,9,294.77,287.86,19.68 +shr,auto,1,13,2127401,9,9.21,9.17,20.02 +shr,inplace,1,13,4185613,9,2.27,2.23,19.25 +shr,kernel,1,13,8942228,9,2.23,2.22,20.00 +shr,floor,1,13,8042952,9,2.49,2.45,20.74 +shr,gmp,1,13,20000001,9,0.99,0.99,19.86 +shr,gmpz,1,13,10076172,9,1.99,1.98,20.11 +shr,auto,4,13,1121084,9,17.38,17.22,19.56 +shr,inplace,4,13,3098949,9,3.25,3.20,20.25 +shr,kernel,4,13,5641047,9,3.50,3.48,20.19 +shr,floor,4,13,1677394,9,12.09,11.60,20.23 +shr,gmp,4,13,11571960,9,1.74,1.74,20.13 +shr,gmpz,4,13,7322264,9,2.73,2.72,19.99 +shr,auto,16,13,945415,9,20.96,20.74,19.89 +shr,inplace,16,13,1987848,9,5.06,5.04,20.13 +shr,kernel,16,13,4811169,9,4.17,4.15,20.08 +shr,floor,16,13,1563499,9,12.92,12.71,20.19 +shr,gmp,16,13,6197024,9,3.23,3.22,20.05 +shr,gmpz,16,13,4720330,9,4.23,4.22,19.98 +shr,auto,256,13,229669,9,87.05,86.61,20.01 +shr,inplace,256,13,278851,9,36.14,35.71,20.10 +shr,kernel,256,13,301284,9,66.37,65.95,19.99 +shr,floor,256,13,276820,9,78.24,77.54,21.64 +shr,gmp,256,13,541425,9,36.84,36.67,19.95 +shr,gmpz,256,13,525367,9,38.06,37.90,20.00 +shr,auto,2000,13,32278,9,722.35,649.23,21.95 +shr,inplace,2000,13,35047,9,282.06,281.25,19.79 +shr,kernel,2000,13,39035,9,512.93,510.77,20.08 +shr,floor,2000,13,38170,9,529.96,523.84,20.28 +shr,gmp,2000,13,67574,9,309.15,291.01,21.41 +shr,gmpz,2000,13,69905,9,301.97,291.28,21.00 +shr,auto,2000,77,19116,9,1060.90,1011.13,20.23 +shr,inplace,2000,77,23876,9,419.74,417.38,20.05 +shr,kernel,2000,77,38561,9,518.49,513.92,20.01 +shr,floor,2000,77,37659,9,530.79,519.55,20.20 +shr,gmp,2000,77,68889,9,292.12,290.42,19.99 +shr,gmpz,2000,77,68483,9,292.66,285.65,19.95 +mul,auto,1,1,1301000,9,15.45,15.18,20.39 +mul,gmp,1,1,5254568,9,3.73,3.72,19.73 +mul,gmpz,1,1,7315641,9,2.73,2.73,19.98 +mul,auto,2,2,683282,9,32.56,29.28,19.79 +mul,kernel,2,2,3058653,9,6.63,6.36,20.07 +mul,floor,2,2,1360330,9,14.72,14.63,20.21 +mul,gmp,2,2,4457986,9,4.47,4.46,19.92 +mul,gmpz,2,2,3139627,9,6.49,6.20,20.09 +mul,auto,3,3,656860,9,30.86,29.83,20.08 +mul,kernel,3,3,2373591,9,8.43,8.43,20.05 +mul,floor,3,3,1201269,9,16.84,16.70,20.40 +mul,gmp,3,3,3225521,9,6.07,6.06,19.77 +mul,gmpz,3,3,2291981,9,8.27,8.12,19.07 +mul,auto,4,4,664766,9,29.38,28.97,19.53 +mul,kernel,4,4,1787775,9,11.19,10.87,19.97 +mul,floor,4,4,1163720,9,17.19,16.90,19.95 +mul,gmp,4,4,2237187,9,9.01,8.94,20.35 +mul,gmpz,4,4,1858090,9,10.92,9.77,19.89 +mul,auto,6,6,282964,9,68.79,67.94,19.43 +mul,kernel,6,6,1042182,9,19.06,18.93,19.95 +mul,floor,6,6,794268,9,24.27,23.49,19.40 +mul,gmp,6,6,1390434,9,14.45,14.29,20.09 +mul,gmpz,6,6,369659,9,53.23,52.45,19.70 +mul,auto,8,8,469812,9,42.23,41.92,19.92 +mul,kernel,8,8,872632,9,22.87,22.82,19.95 +mul,floor,8,8,661223,9,30.37,30.21,20.13 +mul,gmp,8,8,886610,9,22.96,22.45,20.35 +mul,gmpz,8,8,770299,9,26.00,24.05,19.79 +mul,auto,12,12,324517,9,61.60,61.53,20.01 +mul,kernel,12,12,488732,9,41.03,40.88,20.26 +mul,floor,12,12,407903,9,49.21,48.91,20.06 +mul,gmp,12,12,431480,9,44.24,44.14,19.13 +mul,gmpz,12,12,428789,9,46.49,46.23,19.95 +mul,auto,16,16,212699,9,95.40,95.11,20.31 +mul,kernel,16,16,287049,9,69.65,69.50,20.05 +mul,floor,16,16,255041,9,78.36,78.18,19.99 +mul,gmp,16,16,262082,9,77.34,77.10,20.28 +mul,gmpz,16,16,255551,9,78.34,78.28,20.04 +mul,auto,32,32,67090,9,297.59,295.14,19.94 +mul,kernel,32,32,77512,9,258.62,257.74,20.04 +mul,floor,32,32,71655,9,278.66,278.24,19.99 +mul,gmp,32,32,73726,9,271.91,271.02,20.24 +mul,gmpz,32,32,73324,9,271.68,267.93,19.87 +mul,auto,64,64,19241,9,1043.97,1032.18,20.06 +mul,kernel,64,64,20305,9,981.57,979.93,19.97 +mul,floor,64,64,19775,9,1011.13,1009.14,20.05 +mul,gmp,64,64,25856,9,774.52,772.97,20.04 +mul,gmpz,64,64,25577,9,778.23,774.52,19.89 +mul,auto,128,128,5518,9,3625.11,3616.43,20.01 +mul,kernel,128,128,5614,9,3560.47,3555.94,20.01 +mul,floor,128,128,5599,9,3576.52,3567.30,20.04 +mul,gmp,128,128,7438,9,2677.44,2640.19,19.82 +mul,gmpz,128,128,7418,9,2642.18,2634.31,19.62 +mul,auto,256,256,1685,9,11820.52,11793.74,19.95 +mul,kernel,256,256,1695,9,11767.31,11731.74,19.96 +mul,floor,256,256,1707,9,11751.24,11730.94,20.08 +mul,gmp,256,256,2546,9,7881.14,7839.47,20.12 +mul,gmpz,256,256,2550,9,7834.95,7822.35,20.01 +mul,auto,512,512,541,9,37116.07,36979.74,20.13 +mul,kernel,512,512,541,9,36879.16,36748.07,20.11 +mul,floor,512,512,542,9,36926.74,36756.69,20.02 +mul,gmp,512,512,934,9,21328.11,21217.57,19.92 +mul,gmpz,512,512,1050,9,19025.20,18943.77,19.96 +mul,auto,1000,1000,184,9,107259.74,106839.45,19.75 +mul,kernel,1000,1000,188,9,106846.19,106535.46,20.11 +mul,floor,1000,1000,188,9,107181.96,106667.55,20.20 +mul,gmp,1000,1000,360,9,55513.43,55071.18,19.96 +mul,gmpz,1000,1000,365,9,55168.61,54828.42,20.15 +mul,auto,2000,2000,67,9,301931.58,299790.43,20.22 +mul,kernel,2000,2000,67,9,301205.84,299109.45,20.17 +mul,floor,2000,2000,67,9,301959.57,300924.76,20.22 +mul,gmp,2000,2000,136,9,148371.32,147742.96,20.20 +mul,gmpz,2000,2000,135,9,148101.24,147249.39,19.99 +mul,auto,2000,100,428,9,46853.49,46776.58,20.08 +mul,kernel,2000,100,422,9,46908.37,46638.13,19.78 +mul,floor,2000,100,428,9,46833.43,46629.87,20.43 +mul,gmp,2000,100,571,9,35096.25,34924.33,20.07 +mul,gmpz,2000,100,574,9,34780.63,34573.75,19.95 +sqr,auto,4,4,654571,9,30.67,28.87,19.87 +sqr,kernel,4,4,1765259,9,11.39,11.22,20.34 +sqr,floor,4,4,1222787,9,16.19,16.14,19.82 +sqr,gmp,4,4,2879677,9,6.95,6.92,20.03 +sqr,gmpz,4,4,2062969,9,9.19,9.17,19.19 +sqr,auto,16,16,217217,9,91.77,90.92,20.28 +sqr,kernel,16,16,317023,9,63.65,62.55,20.10 +sqr,floor,16,16,277957,9,71.80,69.54,19.84 +sqr,gmp,16,16,322398,9,62.08,61.50,19.98 +sqr,gmpz,16,16,300124,9,65.88,65.39,20.10 +sqr,auto,64,64,32080,9,626.01,623.66,20.09 +sqr,kernel,64,64,34540,9,579.78,579.11,20.04 +sqr,floor,64,64,33420,9,600.44,597.51,20.08 +sqr,gmp,64,64,29680,9,670.66,667.53,19.92 +sqr,gmpz,64,64,29435,9,679.48,675.57,20.02 +sqr,auto,512,512,806,9,24553.45,24431.09,19.92 +sqr,kernel,512,512,825,9,24355.20,24183.23,20.08 +sqr,floor,512,512,814,9,24343.72,24165.44,19.80 +sqr,gmp,512,512,1093,9,18287.59,18112.42,19.96 +sqr,gmpz,512,512,1018,9,19650.34,19437.50,20.03 +sqr,auto,2000,2000,90,9,223452.78,222993.06,20.13 +sqr,kernel,2000,2000,90,9,222750.92,222556.01,20.06 +sqr,floor,2000,2000,91,9,223341.12,222733.05,20.33 +sqr,gmp,2000,2000,165,9,120859.60,119171.97,19.90 +sqr,gmpz,2000,2000,167,9,120576.35,120203.09,20.15 +divrem,auto,2,1,641434,9,31.27,30.86,20.04 +divrem,kernel,2,1,3566345,9,5.63,5.59,20.07 +divrem,floor,2,1,1501724,9,13.43,13.41,20.28 +divrem,gmp,2,1,3984301,9,5.03,5.00,20.02 +divrem,gmpz,2,1,2249450,9,8.82,8.76,19.86 +divrem,auto,8,4,220405,9,91.31,90.88,20.12 +divrem,kernel,8,4,487810,9,40.93,40.47,19.95 +divrem,floor,8,4,358357,9,56.26,55.69,20.10 +divrem,gmp,8,4,502522,9,39.80,39.04,19.93 +divrem,gmpz,8,4,466690,9,43.28,42.30,20.16 +divrem,auto,32,16,41587,9,477.52,468.39,19.77 +divrem,kernel,32,16,50645,9,394.47,384.98,19.92 +divrem,floor,32,16,48536,9,414.17,401.64,20.16 +divrem,gmp,32,16,97581,9,208.34,206.62,20.31 +divrem,gmpz,32,16,96532,9,210.50,208.24,20.30 +divrem,auto,128,64,5334,9,3729.94,3607.16,19.82 +divrem,kernel,128,64,5651,9,3606.77,3559.14,20.35 +divrem,floor,128,64,5519,9,3621.21,3519.76,19.93 +divrem,gmp,128,64,11377,9,1772.99,1767.84,20.18 +divrem,gmpz,128,64,11288,9,1780.00,1754.88,20.08 +divrem,auto,512,256,676,9,29671.78,29393.12,20.07 +divrem,kernel,512,256,680,9,29407.47,29225.61,20.15 +divrem,floor,512,256,688,9,29731.83,29534.10,20.43 +divrem,gmp,512,256,1220,9,16339.65,16260.21,19.93 +divrem,gmpz,512,256,1222,9,16335.99,16324.37,19.97 +divrem,auto,2000,1000,86,9,232244.19,231487.41,19.97 +divrem,kernel,2000,1000,87,9,231181.52,230535.45,20.16 +divrem,floor,2000,1000,87,9,230762.45,229171.93,20.07 +divrem,gmp,2000,1000,147,9,135637.76,135280.05,19.94 +divrem,gmpz,2000,1000,149,9,134879.76,134476.51,20.10 +divrem,auto,4000,2000,30,9,684130.57,678875.00,20.53 +divrem,kernel,4000,2000,30,9,691493.07,681069.43,20.66 +divrem,floor,4000,2000,30,9,684733.33,679737.50,20.53 +divrem,gmp,4000,2000,59,9,342978.81,341382.78,20.22 +divrem,gmpz,4000,2000,59,9,344005.64,342675.14,20.32 +divrem,auto,2000,100,211,9,95325.44,94946.48,20.13 +divrem,kernel,2000,100,214,9,94035.43,93397.98,20.22 +divrem,floor,2000,100,214,9,93897.20,93398.75,20.10 +divrem,gmp,2000,100,289,9,69423.44,69060.27,20.13 +divrem,gmpz,2000,100,289,9,69256.34,68942.91,20.01 +divrem,auto,65536,1,84,9,244136.42,239713.30,20.46 +divrem,kernel,65536,1,90,9,226465.28,223306.49,20.41 +divrem,floor,65536,1,87,9,230306.03,226602.97,19.99 +divrem,gmp,65536,1,117,9,169607.91,168223.65,19.88 +divrem,gmpz,65536,1,117,9,169175.57,164870.01,19.79 +fromchars,auto,4,10,222366,9,90.90,90.41,20.43 +fromchars,kernel,4,10,614477,9,32.80,31.73,20.08 +fromchars,gmp,4,10,609435,9,32.67,30.51,19.67 +fromchars,gmpz,4,10,270692,9,76.22,74.01,20.66 +fromchars,auto,16,10,49763,9,400.82,396.19,19.93 +fromchars,kernel,16,10,103132,9,194.11,190.30,19.99 +fromchars,gmp,16,10,140960,9,145.87,143.10,20.47 +fromchars,gmpz,16,10,63606,9,318.04,312.81,20.39 +fromchars,auto,64,10,9104,9,2196.18,2181.11,19.98 +fromchars,kernel,64,10,10828,9,1875.38,1819.05,20.19 +fromchars,gmp,64,10,20564,9,956.69,950.38,19.66 +fromchars,gmpz,64,10,12529,9,1596.67,1579.19,20.01 +fromchars,auto,256,10,1447,9,13839.52,13686.13,20.02 +fromchars,kernel,256,10,1730,9,11552.26,11513.66,19.98 +fromchars,gmp,256,10,2526,9,7942.05,7899.81,20.11 +fromchars,gmpz,256,10,1902,9,10478.05,10408.58,19.96 +fromchars,auto,2000,10,67,9,300151.75,298356.97,20.12 +fromchars,kernel,2000,10,71,9,282614.44,282313.38,20.18 +fromchars,gmp,2000,10,108,9,185024.31,183471.06,20.11 +fromchars,gmpz,2000,10,99,9,203168.77,202573.66,20.36 diff --git a/tests/beman/big_int/perf/item1/mac_base64_seed2a.csv b/tests/beman/big_int/perf/item1/mac_base64_seed2a.csv new file mode 100644 index 00000000..841e0b98 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_base64_seed2a.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T17:01:51Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2874465,9,6.95,6.93,20.00 +add,inplace,1,1,3030871,9,3.23,3.22,19.60 +add,kernel,1,1,17540953,9,1.14,1.14,20.09 +add,floor,1,1,2085666,9,9.43,9.18,19.73 +add,gmp,1,1,13437502,9,1.49,1.48,20.04 +add,gmpz,1,1,6702451,9,2.99,2.97,20.40 +add,auto,2,2,1361702,9,14.76,14.66,20.21 +add,inplace,2,2,2656198,9,3.77,3.76,20.09 +add,kernel,2,2,14372356,9,1.40,1.39,20.30 +add,floor,2,2,2100070,9,9.69,9.49,20.43 +add,gmp,2,2,9941424,9,2.01,1.98,19.95 +add,gmpz,2,2,6717998,9,7.10,2.98,39.45 +add,auto,4,4,1293075,9,15.72,15.49,20.40 +add,inplace,4,4,2554590,9,3.72,3.72,19.10 +add,kernel,4,4,10432693,9,1.92,1.90,19.97 +add,floor,4,4,1964696,9,10.65,10.16,20.66 +add,gmp,4,4,11515004,9,1.74,1.73,20.01 +add,gmpz,4,4,4251891,9,4.59,4.30,19.78 +add,auto,8,8,1293919,9,15.53,15.46,20.09 +add,inplace,8,8,2003116,9,5.10,4.98,20.27 +add,kernel,8,8,5690799,9,3.48,3.47,19.83 +add,floor,8,8,1641508,9,12.05,11.70,19.70 +add,gmp,8,8,8971404,9,2.23,2.23,20.05 +add,gmpz,8,8,3788850,9,5.08,4.81,19.13 +add,auto,16,16,1116200,9,17.59,17.25,19.65 +add,inplace,16,16,1038113,9,9.65,9.58,20.03 +add,kernel,16,16,2658976,9,7.55,7.48,20.03 +add,floor,16,16,1464319,9,13.66,13.64,20.07 +add,gmp,16,16,6183655,9,3.24,3.23,20.01 +add,gmpz,16,16,4959293,9,4.50,4.49,20.35 +add,auto,64,64,353927,9,54.22,54.10,19.22 +add,inplace,64,64,193679,9,51.13,49.92,19.75 +add,kernel,64,64,411753,9,49.15,48.21,20.25 +add,floor,64,64,330103,9,60.45,59.38,19.93 +add,gmp,64,64,1760143,9,11.14,11.00,19.57 +add,gmpz,64,64,1547058,9,12.90,12.77,19.96 +add,auto,256,256,136444,9,146.45,145.28,20.07 +add,inplace,256,256,40167,9,240.22,239.71,19.30 +add,kernel,256,256,84718,9,236.31,235.83,20.02 +add,floor,256,256,81180,9,246.85,246.20,20.07 +add,gmp,256,256,351093,9,57.09,56.31,20.08 +add,gmpz,256,256,287622,9,68.32,67.03,19.60 +add,auto,1024,1024,36399,9,546.68,537.67,20.00 +add,inplace,1024,1024,10134,9,986.72,968.10,19.99 +add,kernel,1024,1024,20493,9,969.23,943.92,19.86 +add,floor,1024,1024,20398,9,987.06,958.01,20.04 +add,gmp,1024,1024,79494,9,251.65,248.81,20.35 +add,gmpz,1024,1024,78967,9,253.00,248.18,19.94 +add,auto,2000,2000,18929,9,1138.91,1027.28,21.52 +add,inplace,2000,2000,5120,9,1947.69,1896.22,19.85 +add,kernel,2000,2000,10454,9,1909.38,1864.42,19.88 +add,floor,2000,2000,10460,9,1939.84,1905.18,20.26 +add,gmp,2000,2000,40195,9,494.75,484.54,19.82 +add,gmpz,2000,2000,40409,9,495.19,489.53,20.00 +add,auto,1024,1,119806,9,175.14,167.30,22.66 +add,inplace,1024,1,10249,9,978.11,954.90,19.99 +add,kernel,1024,1,27202,9,737.67,719.84,20.02 +add,floor,1024,1,27214,9,754.36,740.46,20.51 +add,gmp,1024,1,75494,9,261.73,256.61,19.71 +add,gmpz,1024,1,74822,9,264.41,258.48,19.73 +sub,auto,1,1,2689631,9,7.47,7.44,20.34 +sub,inplace,1,1,2987292,9,3.55,3.35,19.34 +sub,kernel,1,1,19506598,9,1.04,1.03,20.18 +sub,floor,1,1,11515768,9,1.74,1.73,20.00 +sub,gmp,1,1,13425738,9,1.49,1.48,19.99 +sub,gmpz,1,1,6856718,9,2.90,2.74,19.53 +sub,auto,2,2,1317382,9,14.89,14.63,19.57 +sub,inplace,2,2,3228810,9,3.25,3.10,19.20 +sub,kernel,2,2,14150165,9,1.40,1.39,19.88 +sub,floor,2,2,2118927,9,9.28,8.94,19.86 +sub,gmp,2,2,10059047,9,2.01,1.96,20.07 +sub,gmpz,2,2,6190045,9,3.23,3.23,20.02 +sub,auto,4,4,1299974,9,15.43,15.15,20.27 +sub,inplace,4,4,2687405,9,3.61,3.59,19.78 +sub,kernel,4,4,10259965,9,1.94,1.93,19.93 +sub,floor,4,4,2012143,9,10.18,9.95,20.46 +sub,gmp,4,4,11469936,9,1.74,1.73,19.95 +sub,gmpz,4,4,6706712,9,2.98,2.97,20.02 +sub,auto,8,8,1228553,9,15.98,15.93,19.90 +sub,inplace,8,8,1901529,9,5.22,5.21,19.88 +sub,kernel,8,8,5743757,9,3.50,3.48,20.07 +sub,floor,8,8,1746149,9,11.73,11.42,20.54 +sub,gmp,8,8,8973356,9,2.23,2.23,20.06 +sub,gmpz,8,8,5755614,9,3.48,3.47,20.01 +sub,auto,16,16,1062422,9,19.12,18.28,20.00 +sub,inplace,16,16,1095852,9,9.34,9.19,20.50 +sub,kernel,16,16,2625419,9,7.66,7.60,20.11 +sub,floor,16,16,1312648,9,14.76,14.64,19.52 +sub,gmp,16,16,6186074,9,3.24,3.23,20.01 +sub,gmpz,16,16,4664169,9,4.29,4.22,20.09 +sub,auto,64,64,487686,9,40.96,40.69,19.98 +sub,inplace,64,64,195253,9,50.82,49.44,19.74 +sub,kernel,64,64,406306,9,49.44,48.50,20.00 +sub,floor,64,64,338659,9,59.21,58.34,20.04 +sub,gmp,64,64,1742260,9,11.40,11.35,19.90 +sub,gmpz,64,64,1437684,9,13.74,13.65,19.79 +sub,auto,256,256,151452,9,132.17,130.69,19.97 +sub,inplace,256,256,41806,9,239.63,235.53,20.01 +sub,kernel,256,256,85855,9,235.61,229.81,20.24 +sub,floor,256,256,81735,9,243.17,239.24,19.82 +sub,gmp,256,256,348972,9,57.14,56.73,19.93 +sub,gmpz,256,256,344308,9,57.96,57.86,19.97 +sub,auto,1024,1024,37258,9,543.51,524.66,20.63 +sub,inplace,1024,1024,10276,9,1014.98,963.31,20.71 +sub,kernel,1024,1024,20611,9,974.26,948.99,19.98 +sub,floor,1024,1024,20177,9,980.63,956.35,19.81 +sub,gmp,1024,1024,79303,9,251.88,247.93,19.98 +sub,gmpz,1024,1024,79075,9,253.65,249.64,20.00 +sub,auto,2000,2000,18216,9,1151.78,1067.58,20.71 +sub,inplace,2000,2000,5156,9,1916.20,1866.78,19.69 +sub,kernel,2000,2000,10424,9,1907.14,1866.19,19.85 +sub,floor,2000,2000,10379,9,1923.99,1871.91,19.92 +sub,gmp,2000,2000,39706,9,495.74,484.98,19.64 +sub,gmpz,2000,2000,40193,9,496.95,491.94,19.99 +sub,auto,1024,1,110615,9,174.67,166.52,20.25 +sub,inplace,1024,1,10491,9,964.73,953.71,20.22 +sub,kernel,1024,1,28131,9,738.30,733.15,20.98 +sub,floor,1024,1,26639,9,749.38,738.24,19.93 +sub,gmp,1024,1,76056,9,263.35,259.01,20.00 +sub,gmpz,1024,1,75543,9,267.86,265.83,20.24 +shl,auto,1,13,1217387,9,16.67,16.38,20.31 +shl,inplace,1,13,4389668,9,2.30,2.29,20.21 +shl,kernel,1,13,8938491,9,2.24,2.23,20.03 +shl,kernelip,1,13,5820013,9,1.75,1.73,20.34 +shl,floor,1,13,1765588,9,11.15,10.69,19.80 +shl,gmp,1,13,15968792,9,1.24,1.24,19.97 +shl,gmpz,1,13,10090635,9,1.98,1.98,20.05 +shl,auto,4,13,1062531,9,20.06,18.66,21.37 +shl,inplace,4,13,2753752,9,3.54,3.51,19.67 +shl,kernel,4,13,5374664,9,4.51,3.73,23.30 +shl,kernelip,4,13,2910225,9,3.36,3.31,19.52 +shl,floor,4,13,1538012,9,13.36,12.89,20.38 +shl,gmp,4,13,10093013,9,1.98,1.97,20.00 +shl,gmpz,4,13,7314510,9,2.73,2.72,19.96 +shl,auto,16,13,951631,9,21.15,20.98,20.28 +shl,inplace,16,13,1734311,9,5.78,5.77,20.06 +shl,kernel,16,13,4902473,9,4.09,4.06,20.04 +shl,kernelip,16,13,1388314,9,6.81,6.73,18.90 +shl,floor,16,13,1658505,9,11.99,11.97,19.90 +shl,gmp,16,13,5373874,9,3.48,3.47,18.73 +shl,gmpz,16,13,3888270,9,5.16,5.12,20.09 +shl,auto,256,13,230729,9,85.98,85.69,19.88 +shl,inplace,256,13,272925,9,36.53,36.26,19.96 +shl,kernel,256,13,402500,9,49.15,49.04,19.82 +shl,kernelip,256,13,204079,9,48.67,48.37,20.01 +shl,floor,256,13,350240,9,57.64,57.33,20.22 +shl,gmp,256,13,541727,9,36.92,36.80,20.02 +shl,gmpz,256,13,529503,9,37.84,37.78,20.04 +shl,auto,2000,13,32457,9,691.68,637.39,22.25 +shl,inplace,2000,13,35386,9,282.87,282.13,20.05 +shl,kernel,2000,13,52318,9,382.77,382.23,20.05 +shl,kernelip,2000,13,26441,9,380.04,375.35,20.08 +shl,floor,2000,13,49967,9,400.23,398.75,20.03 +shl,gmp,2000,13,18345,9,1901.93,1305.76,34.26 +shl,gmpz,2000,13,22038,9,1253.90,1113.30,25.44 +shl,auto,2000,77,25298,9,803.98,757.95,20.12 +shl,inplace,2000,77,23681,9,424.50,418.72,20.05 +shl,kernel,2000,77,38220,9,527.79,526.69,20.19 +shl,kernelip,2000,77,18338,9,520.75,514.54,19.07 +shl,floor,2000,77,36872,9,541.69,539.11,19.96 +shl,gmp,2000,77,69342,9,288.95,287.21,20.04 +shl,gmpz,2000,77,67749,9,287.81,287.14,19.70 +shr,auto,1,13,2130533,9,9.43,9.35,20.08 +shr,inplace,1,13,4237841,9,2.23,2.23,19.21 +shr,kernel,1,13,8997456,9,2.24,2.23,20.27 +shr,floor,1,13,8238021,9,2.48,2.44,20.52 +shr,gmp,1,13,20000001,9,0.99,0.99,19.88 +shr,gmpz,1,13,9760520,9,1.99,1.98,19.41 +shr,auto,4,13,1102212,9,18.64,18.19,20.55 +shr,inplace,4,13,3065370,9,3.31,3.29,20.30 +shr,kernel,4,13,5373283,9,3.72,3.70,19.98 +shr,floor,4,13,1697358,9,11.66,11.60,19.78 +shr,gmp,4,13,11508704,9,1.73,1.72,19.99 +shr,gmpz,4,13,7261276,9,2.73,2.71,19.85 +shr,auto,16,13,955339,9,21.07,20.97,20.17 +shr,inplace,16,13,1974306,9,5.09,5.09,20.13 +shr,kernel,16,13,4795599,9,4.18,4.17,20.06 +shr,floor,16,13,1574115,9,13.21,12.97,20.76 +shr,gmp,16,13,6189037,9,3.22,3.22,19.97 +shr,gmpz,16,13,4715145,9,4.23,4.21,19.93 +shr,auto,256,13,230284,9,87.09,86.55,20.04 +shr,inplace,256,13,277143,9,35.90,35.75,19.93 +shr,kernel,256,13,301528,9,66.34,65.97,19.99 +shr,floor,256,13,292488,9,75.81,75.41,22.20 +shr,gmp,256,13,544557,9,36.68,36.61,20.00 +shr,gmpz,256,13,522540,9,38.21,38.02,20.10 +shr,auto,2000,13,27904,9,703.37,678.87,19.71 +shr,inplace,2000,13,35553,9,283.57,281.86,20.20 +shr,kernel,2000,13,39052,9,512.65,506.74,20.03 +shr,floor,2000,13,37832,9,524.82,522.04,19.89 +shr,gmp,2000,13,62654,9,315.08,287.49,19.62 +shr,gmpz,2000,13,68578,9,295.90,286.34,20.24 +shr,auto,2000,77,19566,9,1054.94,989.70,20.76 +shr,inplace,2000,77,23625,9,420.21,419.38,19.90 +shr,kernel,2000,77,38345,9,516.17,513.84,19.84 +shr,floor,2000,77,37523,9,525.82,523.83,19.76 +shr,gmp,2000,77,65840,9,290.22,285.57,19.10 +shr,gmpz,2000,77,68555,9,286.61,285.86,19.69 +mul,auto,1,1,1280477,9,15.43,15.38,19.82 +mul,gmp,1,1,5386259,9,3.72,3.72,20.13 +mul,gmpz,1,1,7329954,9,2.73,2.73,20.02 +mul,auto,2,2,661221,9,28.45,27.42,19.02 +mul,kernel,2,2,3080984,9,6.54,6.53,20.16 +mul,floor,2,2,1388057,9,14.42,14.38,20.06 +mul,gmp,2,2,4242547,9,4.72,4.56,19.95 +mul,gmpz,2,2,3083977,9,6.23,6.20,19.53 +mul,auto,3,3,630827,9,30.79,29.18,19.40 +mul,kernel,3,3,2370614,9,8.44,8.42,20.14 +mul,floor,3,3,1193649,9,17.15,16.64,20.56 +mul,gmp,3,3,3278343,9,6.23,6.08,20.35 +mul,gmpz,3,3,2392121,9,7.79,7.73,18.66 +mul,auto,4,4,659098,9,29.61,29.43,19.62 +mul,kernel,4,4,1787492,9,11.21,11.10,19.99 +mul,floor,4,4,1186221,9,16.75,16.69,19.92 +mul,gmp,4,4,2166132,9,8.97,8.95,19.51 +mul,gmpz,4,4,1981175,9,10.90,9.72,21.06 +mul,auto,6,6,605363,9,32.91,32.73,19.97 +mul,kernel,6,6,1061007,9,19.21,18.88,20.34 +mul,floor,6,6,845728,9,23.70,23.26,20.24 +mul,gmp,6,6,1397730,9,14.27,14.15,19.93 +mul,gmpz,6,6,1103691,9,18.91,18.42,20.79 +mul,auto,8,8,483713,9,41.44,41.07,20.02 +mul,kernel,8,8,869271,9,23.00,22.98,20.07 +mul,floor,8,8,538947,9,35.91,35.69,19.44 +mul,gmp,8,8,887003,9,24.70,22.69,21.70 +mul,gmpz,8,8,744358,9,26.95,25.53,19.95 +mul,auto,12,12,322955,9,61.56,61.26,19.93 +mul,kernel,12,12,483722,9,40.99,40.91,19.88 +mul,floor,12,12,409731,9,49.01,48.90,20.13 +mul,gmp,12,12,456556,9,43.91,43.80,20.04 +mul,gmpz,12,12,431915,9,46.27,46.03,19.99 +mul,auto,16,16,210185,9,95.10,93.77,19.94 +mul,kernel,16,16,287380,9,69.79,69.52,20.12 +mul,floor,16,16,250677,9,78.31,78.12,19.70 +mul,gmp,16,16,258800,9,77.27,76.23,19.95 +mul,gmpz,16,16,256139,9,78.96,78.91,20.25 +mul,auto,32,32,66665,9,298.21,297.37,19.94 +mul,kernel,32,32,77224,9,258.80,257.81,19.99 +mul,floor,32,32,71276,9,279.91,278.07,19.96 +mul,gmp,32,32,75925,9,257.96,254.31,19.67 +mul,gmpz,32,32,77918,9,256.68,255.94,20.01 +mul,auto,64,64,19195,9,1038.75,1033.06,19.93 +mul,kernel,64,64,20334,9,983.56,981.30,20.01 +mul,floor,64,64,19458,9,1010.10,1008.73,19.67 +mul,gmp,64,64,25821,9,775.19,771.96,20.02 +mul,gmpz,64,64,25841,9,775.65,774.18,20.06 +mul,auto,128,128,5491,9,3621.60,3615.35,19.90 +mul,kernel,128,128,5612,9,3567.76,3553.35,20.04 +mul,floor,128,128,5584,9,3581.98,3573.79,20.01 +mul,gmp,128,128,7481,9,2672.49,2645.67,19.98 +mul,gmpz,128,128,7520,9,2678.94,2658.62,20.25 +mul,auto,256,256,1684,9,11861.24,11813.07,20.04 +mul,kernel,256,256,1709,9,11727.35,11715.04,20.12 +mul,floor,256,256,1703,9,11752.40,11706.62,20.02 +mul,gmp,256,256,2487,9,8026.91,7812.09,19.82 +mul,gmpz,256,256,2533,9,7857.81,7820.39,19.91 +mul,auto,512,512,543,9,37181.25,37055.25,20.19 +mul,kernel,512,512,543,9,36862.57,36769.87,20.04 +mul,floor,512,512,539,9,36877.32,36776.75,19.87 +mul,gmp,512,512,938,9,21320.98,21186.52,20.00 +mul,gmpz,512,512,1053,9,18957.98,18945.12,19.98 +mul,auto,1000,1000,188,9,107353.50,106973.18,20.21 +mul,kernel,1000,1000,187,9,106880.79,106281.86,19.97 +mul,floor,1000,1000,188,9,106923.76,106503.54,20.10 +mul,gmp,1000,1000,360,9,55118.06,54908.10,19.85 +mul,gmpz,1000,1000,358,9,55801.91,54850.09,20.07 +mul,auto,2000,2000,67,9,302219.52,299399.25,20.27 +mul,kernel,2000,2000,67,9,301276.12,299975.12,20.19 +mul,floor,2000,2000,67,9,302052.87,297919.78,20.23 +mul,gmp,2000,2000,136,9,148799.33,148060.05,20.79 +mul,gmpz,2000,2000,134,9,148052.55,146701.81,19.83 +mul,auto,2000,100,425,9,47016.57,46674.90,19.95 +mul,kernel,2000,100,303,9,65912.27,65711.63,20.00 +mul,floor,2000,100,303,9,66158.00,65806.79,20.17 +mul,gmp,2000,100,564,9,35388.96,35171.10,20.00 +mul,gmpz,2000,100,573,9,34684.05,34523.85,19.92 +sqr,auto,4,4,687438,9,29.27,29.07,20.12 +sqr,kernel,4,4,1774955,9,11.88,11.39,21.00 +sqr,floor,4,4,1233948,9,16.20,16.16,20.07 +sqr,gmp,4,4,3057938,9,6.94,6.45,20.61 +sqr,gmpz,4,4,2178171,9,9.21,9.16,20.24 +sqr,auto,16,16,212271,9,90.70,88.92,19.44 +sqr,kernel,16,16,322507,9,62.47,62.00,20.16 +sqr,floor,16,16,268173,9,71.80,71.68,19.43 +sqr,gmp,16,16,322149,9,62.42,61.16,20.09 +sqr,gmpz,16,16,305105,9,65.76,65.33,20.06 +sqr,auto,64,64,32024,9,626.08,622.69,20.15 +sqr,kernel,64,64,34423,9,581.41,578.28,20.00 +sqr,floor,64,64,33509,9,599.54,596.79,20.11 +sqr,gmp,64,64,29992,9,672.53,663.90,20.30 +sqr,gmpz,64,64,29600,9,673.25,669.54,19.96 +sqr,auto,512,512,815,9,24579.86,24482.06,20.04 +sqr,kernel,512,512,823,9,24587.53,24302.25,20.15 +sqr,floor,512,512,825,9,24309.44,24258.38,20.07 +sqr,gmp,512,512,1215,9,16466.29,16367.56,20.03 +sqr,gmpz,512,512,1014,9,19643.00,19035.13,19.85 +sqr,auto,2000,2000,90,9,223456.49,222175.47,20.11 +sqr,kernel,2000,2000,90,9,222005.10,220418.99,19.97 +sqr,floor,2000,2000,91,9,222498.18,220680.40,20.27 +sqr,gmp,2000,2000,166,9,120149.35,118784.14,19.95 +sqr,gmpz,2000,2000,168,9,120566.47,119741.82,20.25 +divrem,auto,2,1,657860,9,33.12,30.76,19.29 +divrem,kernel,2,1,3179131,9,6.26,6.18,19.92 +divrem,floor,2,1,1468079,9,13.69,13.64,20.16 +divrem,gmp,2,1,3995182,9,5.01,4.96,19.99 +divrem,gmpz,2,1,2279350,9,8.75,8.71,19.96 +divrem,auto,8,4,191654,9,102.42,100.45,19.58 +divrem,kernel,8,4,389988,9,51.41,50.85,20.03 +divrem,floor,8,4,306244,9,65.49,64.45,20.06 +divrem,gmp,8,4,482867,9,41.41,40.78,19.99 +divrem,gmpz,8,4,452320,9,44.13,43.46,19.96 +divrem,auto,32,16,41823,9,480.42,468.87,20.04 +divrem,kernel,32,16,51598,9,388.39,380.09,20.03 +divrem,floor,32,16,48891,9,405.32,393.10,19.74 +divrem,gmp,32,16,98029,9,205.29,201.46,20.10 +divrem,gmpz,32,16,95637,9,210.44,208.05,20.15 +divrem,auto,128,64,5286,9,3733.75,3621.82,19.67 +divrem,kernel,128,64,5545,9,3614.86,3603.76,20.08 +divrem,floor,128,64,5475,9,3653.84,3645.70,20.02 +divrem,gmp,128,64,11237,9,1767.92,1757.85,19.87 +divrem,gmpz,128,64,11518,9,1768.33,1749.22,20.34 +divrem,auto,512,256,728,9,27500.80,27436.53,20.06 +divrem,kernel,512,256,734,9,27321.01,27156.45,20.17 +divrem,floor,512,256,734,9,27312.96,27237.23,20.10 +divrem,gmp,512,256,1213,9,16466.95,16354.53,19.96 +divrem,gmpz,512,256,1215,9,16481.69,16381.21,20.03 +divrem,auto,2000,1000,86,9,233200.10,232681.20,20.07 +divrem,kernel,2000,1000,87,9,231700.67,230146.08,20.28 +divrem,floor,2000,1000,86,9,231637.60,228853.20,19.90 +divrem,gmp,2000,1000,148,9,135556.30,135210.86,20.08 +divrem,gmpz,2000,1000,149,9,134497.48,134201.34,20.06 +divrem,auto,4000,2000,30,9,690975.00,686584.70,20.76 +divrem,kernel,4000,2000,30,9,688098.60,685043.07,20.65 +divrem,floor,4000,2000,30,9,688280.53,687416.67,20.66 +divrem,gmp,4000,2000,58,9,345548.14,342212.64,20.02 +divrem,gmpz,4000,2000,58,9,344137.21,342368.53,19.95 +divrem,auto,2000,100,210,9,95182.54,95158.93,20.01 +divrem,kernel,2000,100,213,9,94305.16,93970.85,20.07 +divrem,floor,2000,100,213,9,94318.86,94004.69,20.10 +divrem,gmp,2000,100,291,9,68831.62,68734.82,20.04 +divrem,gmpz,2000,100,292,9,68773.97,68564.07,20.08 +divrem,auto,65536,1,84,9,240565.48,236138.88,20.20 +divrem,kernel,65536,1,90,9,226576.86,224064.36,20.40 +divrem,floor,65536,1,88,9,229111.74,227026.99,20.14 +divrem,gmp,65536,1,118,9,168669.84,164153.96,19.80 +divrem,gmpz,65536,1,119,9,169358.54,165136.91,20.07 +fromchars,auto,4,10,207155,9,93.06,90.32,19.33 +fromchars,kernel,4,10,607613,9,32.89,32.52,19.97 +fromchars,gmp,4,10,629163,9,31.12,29.80,19.84 +fromchars,gmpz,4,10,261200,9,74.29,74.01,19.42 +fromchars,auto,16,10,50577,9,393.67,382.05,19.86 +fromchars,kernel,16,10,103709,9,193.41,192.53,20.06 +fromchars,gmp,16,10,141936,9,140.82,138.29,19.95 +fromchars,gmpz,16,10,63119,9,318.47,313.66,20.04 +fromchars,auto,64,10,9131,9,2206.45,2166.49,20.33 +fromchars,kernel,64,10,10633,9,1854.39,1823.69,19.65 +fromchars,gmp,64,10,21239,9,958.34,945.48,20.48 +fromchars,gmpz,64,10,12432,9,1599.15,1574.19,19.81 +fromchars,auto,256,10,1444,9,13839.74,13785.81,20.01 +fromchars,kernel,256,10,1736,9,11543.75,11481.97,20.03 +fromchars,gmp,256,10,2518,9,7952.86,7896.74,20.02 +fromchars,gmpz,256,10,1893,9,10818.92,10699.55,20.48 +fromchars,auto,2000,10,67,9,300362.57,299358.84,20.14 +fromchars,kernel,2000,10,71,9,282304.58,281352.70,20.06 +fromchars,gmp,2000,10,110,9,184476.89,183846.59,20.30 +fromchars,gmpz,2000,10,98,9,202370.33,201918.37,19.85 diff --git a/tests/beman/big_int/perf/item1/mac_base64_seed2b.csv b/tests/beman/big_int/perf/item1/mac_base64_seed2b.csv new file mode 100644 index 00000000..3ea476cb --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_base64_seed2b.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T17:04:53Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2982088,9,6.70,6.66,20.07 +add,inplace,1,1,3026649,9,3.23,3.10,19.33 +add,kernel,1,1,17291689,9,1.14,1.14,19.77 +add,floor,1,1,2091303,9,9.75,9.51,20.43 +add,gmp,1,1,13430685,9,1.49,1.48,20.01 +add,gmpz,1,1,6670308,9,3.72,2.99,24.73 +add,auto,2,2,1359766,9,14.64,14.42,19.85 +add,inplace,2,2,2686823,9,3.76,3.72,20.17 +add,kernel,2,2,14359704,9,1.39,1.39,19.98 +add,floor,2,2,2090135,9,9.63,9.60,20.26 +add,gmp,2,2,11522172,9,1.75,1.73,19.97 +add,gmpz,2,2,6691148,9,3.54,3.05,27.51 +add,auto,4,4,1316876,9,15.12,14.89,19.90 +add,inplace,4,4,2620502,9,3.73,3.71,19.56 +add,kernel,4,4,10316942,9,1.93,1.92,19.93 +add,floor,4,4,1897860,9,10.45,10.19,19.73 +add,gmp,4,4,11519784,9,1.74,1.73,20.44 +add,gmpz,4,4,4661204,9,5.03,4.13,23.02 +add,auto,8,8,1338839,9,15.94,14.87,20.97 +add,inplace,8,8,1908322,9,5.03,5.00,19.28 +add,kernel,8,8,5710902,9,3.50,3.48,19.96 +add,floor,8,8,1673267,9,11.95,11.77,20.05 +add,gmp,8,8,8948487,9,2.23,2.23,20.02 +add,gmpz,8,8,3728460,9,5.34,5.14,19.89 +add,auto,16,16,1247949,9,16.11,15.80,20.19 +add,inplace,16,16,1029774,9,9.61,9.51,19.81 +add,kernel,16,16,2648331,9,7.59,7.52,20.08 +add,floor,16,16,1491256,9,13.72,13.42,20.44 +add,gmp,16,16,6205584,9,3.23,3.22,20.02 +add,gmpz,16,16,4694531,9,4.50,4.48,21.11 +add,auto,64,64,344084,9,58.38,58.08,20.09 +add,inplace,64,64,194319,9,51.35,50.22,19.93 +add,kernel,64,64,398713,9,49.38,48.21,19.69 +add,floor,64,64,314732,9,62.67,61.21,19.70 +add,gmp,64,64,1773923,9,11.18,11.12,19.84 +add,gmpz,64,64,1503303,9,13.30,13.08,20.02 +add,auto,256,256,135510,9,147.84,146.89,20.06 +add,inplace,256,256,42277,9,239.52,232.28,20.38 +add,kernel,256,256,84683,9,235.69,229.03,19.84 +add,floor,256,256,81379,9,243.89,237.38,19.80 +add,gmp,256,256,350034,9,57.09,56.42,20.07 +add,gmpz,256,256,346531,9,57.95,57.36,20.09 +add,auto,1024,1024,35802,9,550.65,539.84,20.02 +add,inplace,1024,1024,10479,9,987.00,974.95,20.65 +add,kernel,1024,1024,20972,9,964.32,940.82,20.16 +add,floor,1024,1024,19679,9,992.23,967.00,19.78 +add,gmp,1024,1024,79900,9,251.79,246.84,20.12 +add,gmpz,1024,1024,78896,9,252.89,247.54,19.90 +add,auto,2000,2000,16946,9,1136.12,1065.76,19.21 +add,inplace,2000,2000,5170,9,1928.55,1890.16,19.83 +add,kernel,2000,2000,10427,9,1944.12,1919.14,20.35 +add,floor,2000,2000,10370,9,1933.96,1893.30,20.04 +add,gmp,2000,2000,40411,9,494.98,489.10,19.98 +add,gmpz,2000,2000,40182,9,496.81,491.65,19.93 +add,auto,1024,1,119433,9,168.21,166.46,20.31 +add,inplace,1024,1,10174,9,971.47,935.97,19.70 +add,kernel,1024,1,27355,9,738.76,720.09,20.11 +add,floor,1024,1,27097,9,759.62,749.90,20.57 +add,gmp,1024,1,75905,9,260.95,254.73,19.73 +add,gmpz,1024,1,75916,9,264.31,259.91,20.00 +sub,auto,1,1,2603042,9,7.70,7.68,20.23 +sub,inplace,1,1,3103074,9,3.35,3.22,20.87 +sub,kernel,1,1,19519169,9,1.03,1.02,20.20 +sub,floor,1,1,11513948,9,1.74,1.73,19.97 +sub,gmp,1,1,13467497,9,1.49,1.48,20.12 +sub,gmpz,1,1,6510775,9,2.99,2.96,19.55 +sub,auto,2,2,1323258,9,15.61,14.94,20.35 +sub,inplace,2,2,3046178,9,3.27,3.22,20.40 +sub,kernel,2,2,14389344,9,1.40,1.39,20.18 +sub,floor,2,2,2120432,9,9.44,9.41,20.01 +sub,gmp,2,2,11523136,9,1.73,1.73,19.98 +sub,gmpz,2,2,6714767,9,3.23,2.97,21.10 +sub,auto,4,4,1279697,9,16.03,15.60,20.48 +sub,inplace,4,4,2502898,9,4.16,3.95,21.12 +sub,kernel,4,4,10211177,9,1.95,1.93,19.95 +sub,floor,4,4,1961671,9,9.96,9.91,19.61 +sub,gmp,4,4,11502826,9,1.74,1.73,20.00 +sub,gmpz,4,4,6710622,9,2.99,2.98,20.08 +sub,auto,8,8,1162216,9,16.65,15.93,19.28 +sub,inplace,8,8,1894535,9,5.16,5.09,19.51 +sub,kernel,8,8,5699919,9,3.50,3.46,19.91 +sub,floor,8,8,1641544,9,11.44,11.39,19.18 +sub,gmp,8,8,8955439,9,2.23,2.23,20.03 +sub,gmpz,8,8,5758756,9,3.48,3.48,20.08 +sub,auto,16,16,1104207,9,17.98,17.73,19.90 +sub,inplace,16,16,1125893,9,12.90,8.91,19.75 +sub,kernel,16,16,2601597,9,7.67,7.65,19.98 +sub,floor,16,16,1262411,9,15.37,15.22,19.51 +sub,gmp,16,16,3310937,9,6.02,6.00,19.94 +sub,gmpz,16,16,4665115,9,4.22,4.22,19.72 +sub,auto,64,64,492035,9,40.93,40.39,19.61 +sub,inplace,64,64,193411,9,51.50,50.86,19.90 +sub,kernel,64,64,415946,9,51.38,49.17,21.31 +sub,floor,64,64,326140,9,60.63,59.30,19.75 +sub,gmp,64,64,1757069,9,11.39,11.31,20.02 +sub,gmpz,64,64,1444893,9,13.84,13.77,20.02 +sub,auto,256,256,151167,9,132.40,129.97,20.01 +sub,inplace,256,256,42525,9,238.40,232.45,20.22 +sub,kernel,256,256,84738,9,234.91,227.44,19.91 +sub,floor,256,256,81144,9,247.30,241.60,20.06 +sub,gmp,256,256,349640,9,57.19,56.50,19.95 +sub,gmpz,256,256,345940,9,57.88,56.92,20.08 +sub,auto,1024,1024,35300,9,567.50,523.95,20.03 +sub,inplace,1024,1024,10116,9,986.21,966.90,19.93 +sub,kernel,1024,1024,20530,9,962.32,942.50,19.67 +sub,floor,1024,1024,20382,9,976.54,951.70,19.88 +sub,gmp,1024,1024,78660,9,251.83,248.72,19.81 +sub,gmpz,1024,1024,78416,9,253.82,248.84,19.89 +sub,auto,2000,2000,18511,9,1110.47,1042.20,20.46 +sub,inplace,2000,2000,5195,9,1944.32,1882.82,20.10 +sub,kernel,2000,2000,10400,9,1913.84,1856.93,19.77 +sub,floor,2000,2000,10250,9,1923.16,1890.78,19.73 +sub,gmp,2000,2000,40366,9,495.72,493.99,20.04 +sub,gmpz,2000,2000,40211,9,497.71,485.11,19.96 +sub,auto,1024,1,118855,9,170.16,166.41,20.59 +sub,inplace,1024,1,9839,9,985.97,980.05,19.59 +sub,kernel,1024,1,27208,9,734.22,717.60,19.99 +sub,floor,1024,1,26818,9,754.26,742.99,20.21 +sub,gmp,1024,1,75731,9,261.18,256.21,19.75 +sub,gmpz,1024,1,75062,9,265.05,261.06,19.85 +shl,auto,1,13,1174069,9,18.43,16.86,21.03 +shl,inplace,1,13,4323203,9,2.30,2.29,19.99 +shl,kernel,1,13,8965911,9,2.23,2.23,20.11 +shl,kernelip,1,13,8925144,9,1.23,1.12,25.43 +shl,floor,1,13,1786497,9,11.91,10.40,18.75 +shl,gmp,1,13,15931085,9,1.26,1.25,20.07 +shl,gmpz,1,13,9915246,9,2.00,1.98,19.88 +shl,auto,4,13,1061574,9,19.35,19.04,20.66 +shl,inplace,4,13,2775086,9,3.62,3.53,20.01 +shl,kernel,4,13,5384113,9,3.72,3.71,20.05 +shl,kernelip,4,13,2897946,9,3.38,3.33,19.56 +shl,floor,4,13,1521223,9,12.96,12.65,19.78 +shl,gmp,4,13,10115514,9,2.01,1.98,20.23 +shl,gmpz,4,13,7303498,9,2.73,2.72,19.94 +shl,auto,16,13,963952,9,21.11,20.73,20.52 +shl,inplace,16,13,1727704,9,5.79,5.78,20.03 +shl,kernel,16,13,4877590,9,4.10,4.07,19.99 +shl,kernelip,16,13,1472767,9,6.81,6.76,20.24 +shl,floor,16,13,1676093,9,12.04,11.94,20.41 +shl,gmp,16,13,5374289,9,3.49,3.47,18.75 +shl,gmpz,16,13,4105521,9,4.80,4.77,19.72 +shl,auto,256,13,233021,9,85.84,85.02,20.09 +shl,inplace,256,13,274888,9,36.32,36.24,19.99 +shl,kernel,256,13,405863,9,49.20,48.94,20.00 +shl,kernelip,256,13,204351,9,48.70,48.44,19.91 +shl,floor,256,13,348611,9,57.74,57.65,20.14 +shl,gmp,256,13,538095,9,37.32,36.97,20.05 +shl,gmpz,256,13,526242,9,37.90,37.79,19.98 +shl,auto,2000,13,35705,9,608.25,554.68,21.76 +shl,inplace,2000,13,35342,9,284.43,282.33,20.23 +shl,kernel,2000,13,52137,9,383.66,381.25,19.98 +shl,kernelip,2000,13,26529,9,376.02,372.82,19.95 +shl,floor,2000,13,49844,9,402.11,399.88,20.02 +shl,gmp,2000,13,10429,9,2299.71,2109.69,20.36 +shl,gmpz,2000,13,13714,9,2591.02,1713.89,25.20 +shl,auto,2000,77,24389,9,795.11,770.05,19.55 +shl,inplace,2000,77,23286,9,425.75,421.90,19.80 +shl,kernel,2000,77,37910,9,528.88,521.32,20.03 +shl,kernelip,2000,77,19262,9,520.62,515.17,20.03 +shl,floor,2000,77,37143,9,542.23,539.46,20.16 +shl,gmp,2000,77,68905,9,289.61,286.56,20.07 +shl,gmpz,2000,77,66358,9,287.55,287.07,19.32 +shr,auto,1,13,2079698,9,9.43,9.40,19.69 +shr,inplace,1,13,4210645,9,2.36,2.35,19.92 +shr,kernel,1,13,8929121,9,2.23,2.23,19.96 +shr,floor,1,13,8062836,9,2.48,2.43,20.17 +shr,gmp,1,13,20000001,9,0.99,0.99,19.85 +shr,gmpz,1,13,10067886,9,1.99,1.98,20.10 +shr,auto,4,13,1071042,9,17.86,17.45,19.15 +shr,inplace,4,13,3131098,9,3.20,3.20,20.13 +shr,kernel,4,13,5368667,9,3.72,3.70,19.99 +shr,floor,4,13,1714376,9,11.75,11.64,20.24 +shr,gmp,4,13,11490190,9,1.74,1.74,20.01 +shr,gmpz,4,13,7299998,9,2.76,2.73,20.08 +shr,auto,16,13,961559,9,21.04,20.80,20.25 +shr,inplace,16,13,1987541,9,5.06,5.02,20.13 +shr,kernel,16,13,4783670,9,4.18,4.17,20.03 +shr,floor,16,13,1534430,9,13.56,12.94,20.80 +shr,gmp,16,13,6193465,9,3.23,3.22,19.98 +shr,gmpz,16,13,4721650,9,4.23,4.22,20.04 +shr,auto,256,13,230685,9,89.07,86.97,20.58 +shr,inplace,256,13,271811,9,36.52,36.12,19.82 +shr,kernel,256,13,300666,9,66.59,66.36,20.28 +shr,floor,256,13,289856,9,75.65,75.33,21.95 +shr,gmp,256,13,542543,9,36.67,36.61,19.95 +shr,gmpz,256,13,526953,9,38.02,37.99,20.05 +shr,auto,2000,13,30190,9,710.19,634.74,21.25 +shr,inplace,2000,13,34998,9,284.46,282.25,19.89 +shr,kernel,2000,13,38882,9,512.80,510.14,20.01 +shr,floor,2000,13,38096,9,524.75,519.01,20.19 +shr,gmp,2000,13,68880,9,299.66,288.40,20.64 +shr,gmpz,2000,13,63076,9,308.52,295.37,19.58 +shr,auto,2000,77,18542,9,1066.00,980.62,19.69 +shr,inplace,2000,77,23799,9,423.34,418.20,20.14 +shr,kernel,2000,77,38754,9,516.86,510.68,20.00 +shr,floor,2000,77,38002,9,525.11,520.30,19.94 +shr,gmp,2000,77,67343,9,295.84,292.65,19.98 +shr,gmpz,2000,77,68602,9,286.53,285.15,19.69 +mul,auto,1,1,1338802,9,15.02,14.65,20.03 +mul,gmp,1,1,5370896,9,3.73,3.71,20.01 +mul,gmpz,1,1,7324141,9,2.73,2.73,20.05 +mul,auto,2,2,660823,9,36.34,28.02,23.60 +mul,kernel,2,2,3086685,9,6.54,6.45,20.13 +mul,floor,2,2,1375703,9,14.73,14.36,20.31 +mul,gmp,2,2,4241261,9,4.72,4.71,20.05 +mul,gmpz,2,2,2915680,9,6.81,6.80,19.87 +mul,auto,3,3,693468,9,29.81,28.66,20.73 +mul,kernel,3,3,2367285,9,8.44,8.20,19.94 +mul,floor,3,3,1166183,9,17.11,16.56,19.87 +mul,gmp,3,3,3282517,9,6.08,6.07,19.97 +mul,gmpz,3,3,2379986,9,8.19,8.06,19.51 +mul,auto,4,4,664727,9,29.36,29.24,19.51 +mul,kernel,4,4,1799410,9,11.24,11.00,20.22 +mul,floor,4,4,1198254,9,17.17,16.64,20.37 +mul,gmp,4,4,2208715,9,8.96,8.94,19.83 +mul,gmpz,4,4,2058005,9,10.99,10.64,22.88 +mul,auto,6,6,609628,9,32.76,32.63,19.98 +mul,kernel,6,6,1042298,9,19.14,18.98,19.95 +mul,floor,6,6,848575,9,23.58,23.40,20.00 +mul,gmp,6,6,1374827,9,14.52,14.27,19.90 +mul,gmpz,6,6,1116378,9,18.48,17.98,20.53 +mul,auto,8,8,478638,9,41.32,41.14,19.80 +mul,kernel,8,8,873649,9,22.87,22.84,19.99 +mul,floor,8,8,657275,9,30.21,30.03,19.86 +mul,gmp,8,8,885975,9,24.08,22.81,21.14 +mul,gmpz,8,8,760088,9,27.53,25.99,21.16 +mul,auto,12,12,323504,9,62.00,61.29,20.01 +mul,kernel,12,12,488310,9,40.94,40.91,20.00 +mul,floor,12,12,408486,9,48.95,48.86,20.02 +mul,gmp,12,12,451373,9,44.30,44.19,20.02 +mul,gmpz,12,12,431456,9,46.56,46.36,20.09 +mul,auto,16,16,209870,9,94.69,94.46,19.88 +mul,kernel,16,16,287596,9,69.54,69.41,20.01 +mul,floor,16,16,254722,9,78.96,78.70,20.13 +mul,gmp,16,16,256464,9,78.03,77.50,20.00 +mul,gmpz,16,16,253234,9,79.07,78.81,20.03 +mul,auto,32,32,66616,9,298.24,296.55,19.91 +mul,kernel,32,32,77303,9,258.75,257.93,19.99 +mul,floor,32,32,71666,9,279.39,278.31,20.08 +mul,gmp,32,32,76831,9,260.68,255.21,20.00 +mul,gmpz,32,32,76538,9,261.07,257.23,20.13 +mul,auto,64,64,19317,9,1033.85,1032.81,19.98 +mul,kernel,64,64,20273,9,987.64,980.32,20.05 +mul,floor,64,64,19611,9,1015.10,1012.62,19.96 +mul,gmp,64,64,25844,9,776.28,772.78,20.09 +mul,gmpz,64,64,25280,9,778.61,776.18,19.72 +mul,auto,128,128,5525,9,3624.47,3613.41,20.04 +mul,kernel,128,128,5593,9,3568.72,3562.45,19.98 +mul,floor,128,128,5545,9,3595.21,3573.28,19.99 +mul,gmp,128,128,7498,9,2710.64,2664.36,20.37 +mul,gmpz,128,128,7497,9,2671.90,2657.17,20.06 +mul,auto,256,256,1603,9,12511.64,12436.27,20.07 +mul,kernel,256,256,1619,9,12377.01,12336.94,20.08 +mul,floor,256,256,1600,9,12370.10,12342.97,19.81 +mul,gmp,256,256,1937,9,10342.39,10285.32,20.07 +mul,gmpz,256,256,2552,9,7822.31,7795.96,20.02 +mul,auto,512,512,539,9,37142.78,36941.64,20.01 +mul,kernel,512,512,543,9,36873.54,36617.86,20.00 +mul,floor,512,512,529,9,36888.39,36811.59,19.95 +mul,gmp,512,512,934,9,21305.32,21190.00,19.92 +mul,gmpz,512,512,1055,9,19068.64,18966.63,20.14 +mul,auto,1000,1000,189,9,107024.91,106585.32,20.30 +mul,kernel,1000,1000,188,9,106656.03,106084.22,20.05 +mul,floor,1000,1000,188,9,106538.79,106268.39,20.04 +mul,gmp,1000,1000,364,9,55066.85,54907.62,20.06 +mul,gmpz,1000,1000,364,9,55113.67,54814.79,20.06 +mul,auto,2000,2000,67,9,302287.93,301703.36,20.28 +mul,kernel,2000,2000,67,9,305763.06,302005.60,20.45 +mul,floor,2000,2000,67,9,301137.43,299582.09,20.17 +mul,gmp,2000,2000,136,9,148431.68,147820.46,20.21 +mul,gmpz,2000,2000,135,9,149062.96,147908.03,20.11 +mul,auto,2000,100,425,9,46938.14,46696.47,19.98 +mul,kernel,2000,100,429,9,46648.51,46461.34,20.02 +mul,floor,2000,100,427,9,46718.29,46653.49,19.97 +mul,gmp,2000,100,570,9,35093.13,35002.34,20.01 +mul,gmpz,2000,100,575,9,34690.36,34577.03,19.96 +sqr,auto,4,4,670925,9,29.92,29.36,20.09 +sqr,kernel,4,4,1776432,9,11.82,11.25,20.67 +sqr,floor,4,4,1235489,9,16.41,16.17,20.21 +sqr,gmp,4,4,3094241,9,6.46,6.44,20.00 +sqr,gmpz,4,4,2160027,9,9.70,9.23,21.01 +sqr,auto,16,16,225494,9,88.92,88.52,20.04 +sqr,kernel,16,16,323274,9,62.00,61.90,20.09 +sqr,floor,16,16,278664,9,72.25,71.79,20.14 +sqr,gmp,16,16,318803,9,63.53,62.84,20.24 +sqr,gmpz,16,16,300015,9,66.70,66.01,19.99 +sqr,auto,64,64,31981,9,626.75,623.11,20.03 +sqr,kernel,64,64,34542,9,585.32,579.41,20.51 +sqr,floor,64,64,33316,9,598.82,597.33,19.95 +sqr,gmp,64,64,30241,9,663.55,651.65,19.99 +sqr,gmpz,64,64,29565,9,671.51,662.35,19.85 +sqr,auto,512,512,810,9,24695.52,24436.11,20.00 +sqr,kernel,512,512,816,9,24416.72,24216.61,19.98 +sqr,floor,512,512,820,9,24327.34,24172.97,19.93 +sqr,gmp,512,512,1214,9,16405.48,16268.88,19.91 +sqr,gmpz,512,512,1015,9,19696.51,19375.78,19.97 +sqr,auto,2000,2000,90,9,224970.37,222405.09,20.20 +sqr,kernel,2000,2000,91,9,222860.35,221872.70,20.28 +sqr,floor,2000,2000,91,9,222803.11,221416.21,20.26 +sqr,gmp,2000,2000,167,9,120955.84,119175.65,20.17 +sqr,gmpz,2000,2000,166,9,121127.51,119742.22,20.09 +divrem,auto,2,1,643586,9,31.04,30.66,20.36 +divrem,kernel,2,1,3173726,9,6.26,6.21,19.97 +divrem,floor,2,1,1382072,9,14.59,14.07,20.11 +divrem,gmp,2,1,3980264,9,5.02,4.98,19.99 +divrem,gmpz,2,1,2276112,9,8.81,8.74,20.03 +divrem,auto,8,4,199845,9,99.97,99.57,20.03 +divrem,kernel,8,4,381222,9,51.67,51.20,19.75 +divrem,floor,8,4,304642,9,65.33,64.72,19.90 +divrem,gmp,8,4,479105,9,41.40,40.99,19.81 +divrem,gmpz,8,4,451269,9,44.29,43.37,19.93 +divrem,auto,32,16,41961,9,477.02,462.04,19.94 +divrem,kernel,32,16,51394,9,393.53,379.46,20.12 +divrem,floor,32,16,49809,9,410.88,398.34,20.29 +divrem,gmp,32,16,97465,9,204.69,199.27,19.81 +divrem,gmpz,32,16,96038,9,207.56,203.44,19.91 +divrem,auto,128,64,5342,9,3751.59,3607.17,19.90 +divrem,kernel,128,64,5493,9,3669.32,3496.54,20.01 +divrem,floor,128,64,5449,9,3597.04,3506.40,19.61 +divrem,gmp,128,64,11346,9,1768.18,1745.98,20.04 +divrem,gmpz,128,64,11348,9,1767.12,1734.92,20.01 +divrem,auto,512,256,725,9,27533.22,27468.91,19.96 +divrem,kernel,512,256,696,9,27212.28,27007.00,18.92 +divrem,floor,512,256,734,9,27228.71,26958.79,19.96 +divrem,gmp,512,256,1223,9,16423.79,16347.68,20.09 +divrem,gmpz,512,256,1214,9,16433.18,16340.09,19.95 +divrem,auto,2000,1000,86,9,232843.02,231984.49,20.02 +divrem,kernel,2000,1000,87,9,231868.77,231044.06,20.17 +divrem,floor,2000,1000,87,9,231808.91,230874.52,20.19 +divrem,gmp,2000,1000,148,9,135810.81,135393.30,20.12 +divrem,gmpz,2000,1000,149,9,134263.99,133932.89,20.01 +divrem,auto,4000,2000,30,9,690488.90,686629.17,20.70 +divrem,kernel,4000,2000,30,9,688169.43,685844.47,20.67 +divrem,floor,4000,2000,30,9,689131.93,686858.33,20.70 +divrem,gmp,4000,2000,59,9,341854.53,340786.02,20.18 +divrem,gmpz,4000,2000,59,9,347637.00,342530.36,20.47 +divrem,auto,2000,100,210,9,95385.31,95128.57,20.07 +divrem,kernel,2000,100,212,9,94309.16,93827.64,20.00 +divrem,floor,2000,100,213,9,93922.73,93668.82,20.01 +divrem,gmp,2000,100,292,9,68608.16,68335.62,20.04 +divrem,gmpz,2000,100,290,9,68838.93,68403.88,19.99 +divrem,auto,65536,1,83,9,240530.12,237225.90,19.95 +divrem,kernel,65536,1,88,9,228329.07,224178.50,20.10 +divrem,floor,65536,1,88,9,230490.52,226810.14,20.33 +divrem,gmp,65536,1,118,9,169401.13,165429.73,19.98 +divrem,gmpz,65536,1,118,9,172992.94,169728.46,20.41 +fromchars,auto,4,10,218659,9,94.02,91.96,20.47 +fromchars,kernel,4,10,573065,9,34.85,34.58,20.00 +fromchars,gmp,4,10,648474,9,30.67,29.72,19.94 +fromchars,gmpz,4,10,253323,9,77.14,76.41,19.53 +fromchars,auto,16,10,49218,9,401.32,389.46,19.73 +fromchars,kernel,16,10,103686,9,191.03,189.05,19.81 +fromchars,gmp,16,10,142436,9,140.56,138.83,20.00 +fromchars,gmpz,16,10,63745,9,316.90,312.62,20.17 +fromchars,auto,64,10,9220,9,2194.27,2167.20,20.23 +fromchars,kernel,64,10,10873,9,1852.43,1818.99,20.06 +fromchars,gmp,64,10,20970,9,954.66,948.40,20.33 +fromchars,gmpz,64,10,12507,9,1601.50,1576.02,19.99 +fromchars,auto,256,10,1447,9,13823.02,13772.72,20.04 +fromchars,kernel,256,10,1710,9,11566.93,11499.10,19.85 +fromchars,gmp,256,10,2520,9,7973.21,7936.69,20.11 +fromchars,gmpz,256,10,1880,9,10501.04,10464.43,19.82 +fromchars,auto,2000,10,67,9,300265.54,298429.73,20.14 +fromchars,kernel,2000,10,71,9,282617.37,280933.10,20.17 +fromchars,gmp,2000,10,110,9,184674.62,183231.06,20.37 +fromchars,gmpz,2000,10,99,9,204284.09,202820.71,20.20 diff --git a/tests/beman/big_int/perf/item1/mac_base64_spot_seed1.csv b/tests/beman/big_int/perf/item1/mac_base64_spot_seed1.csv new file mode 100644 index 00000000..cd3c2ec5 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_base64_spot_seed1.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,2137,3,9467.67,9400.76,20.31 +add,inplace,16384,16384,621,3,16118.29,16105.51,20.04 +add,kernel,16384,16384,1259,3,15894.66,15876.62,20.02 +add,floor,16384,16384,1262,3,16000.23,15950.81,20.18 +add,gmp,16384,16384,4901,3,4077.03,4024.52,19.90 +add,gmpz,16384,16384,4897,3,4096.67,4087.60,20.05 +mul,auto,2000,2000,66,3,302705.18,302260.09,19.99 +mul,kernel,2000,2000,67,3,301503.73,301228.22,20.20 +mul,floor,2000,2000,67,3,301391.18,301365.67,20.24 +mul,gmp,2000,2000,135,3,148756.17,148460.19,20.10 +mul,gmpz,2000,2000,136,3,148611.83,148578.12,20.22 +mul,auto,16384,16384,4,3,5401718.75,5397448.00,21.60 +mul,kernel,16384,16384,4,3,5355031.25,5281093.75,21.38 +mul,floor,16384,16384,4,3,5317666.50,5251239.75,21.20 +mul,gmp,16384,16384,13,3,1584804.46,1581846.15,20.60 +mul,gmpz,16384,16384,13,3,1574625.00,1569134.62,20.46 +divrem,auto,4096,2048,29,3,703211.21,697771.55,20.34 +divrem,kernel,4096,2048,29,3,702175.31,699692.52,20.35 +divrem,floor,4096,2048,29,3,700563.21,698639.38,20.30 +divrem,gmp,4096,2048,56,3,358523.82,357557.29,20.06 +divrem,gmpz,4096,2048,56,3,360552.09,359755.95,20.20 +tochars,auto,10000,10,3,3,8240930.67,8231930.67,24.71 +tochars,kernel,10000,10,3,3,8209041.67,8168625.00,24.60 +tochars,gmp,10000,10,5,3,4118483.40,4117808.40,20.61 +tochars,gmpz,10000,10,5,3,4153725.00,4136091.80,20.75 +fromchars,auto,10000,10,5,3,4473100.00,4172175.00,22.01 +fromchars,kernel,10000,10,5,3,4098016.60,4082641.60,20.53 +fromchars,gmp,10000,10,12,3,1781430.58,1779000.00,21.38 +fromchars,gmpz,10000,10,11,3,1862632.55,1852799.18,20.48 diff --git a/tests/beman/big_int/perf/item1/mac_base64_spot_seed2.csv b/tests/beman/big_int/perf/item1/mac_base64_spot_seed2.csv new file mode 100644 index 00000000..bb0ce784 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_base64_spot_seed2.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,2111,3,9479.31,9474.60,20.02 +add,inplace,16384,16384,618,3,15893.71,15611.55,19.54 +add,kernel,16384,16384,1265,3,15781.03,15412.29,19.83 +add,floor,16384,16384,1278,3,15993.90,15942.16,20.44 +add,gmp,16384,16384,4936,3,4088.86,4088.13,20.21 +add,gmpz,16384,16384,4943,3,4094.72,4090.62,20.25 +mul,auto,2000,2000,67,3,303179.73,302294.15,20.33 +mul,kernel,2000,2000,67,3,301301.63,300376.87,20.19 +mul,floor,2000,2000,67,3,300554.73,298804.72,20.13 +mul,gmp,2000,2000,135,3,148607.72,148513.58,20.08 +mul,gmpz,2000,2000,135,3,149200.93,148383.64,20.22 +mul,auto,16384,16384,4,3,5399802.25,5397510.50,21.61 +mul,kernel,16384,16384,4,3,5363322.75,5229302.00,21.29 +mul,floor,16384,16384,4,3,5509489.50,5445281.25,21.99 +mul,gmp,16384,16384,13,3,1583038.46,1580368.62,20.61 +mul,gmpz,16384,16384,13,3,1559541.69,1559362.15,20.28 +divrem,auto,4096,2048,29,3,702862.07,701853.45,20.41 +divrem,kernel,4096,2048,29,3,702436.76,695168.10,20.31 +divrem,floor,4096,2048,29,3,706959.76,701728.45,20.47 +divrem,gmp,4096,2048,56,3,366867.55,356706.84,20.53 +divrem,gmpz,4096,2048,56,3,357228.43,356312.50,20.00 +tochars,auto,10000,10,3,3,8253972.33,8194389.00,24.79 +tochars,kernel,10000,10,3,3,8203013.67,8192528.00,24.61 +tochars,gmp,10000,10,5,3,4098558.40,4092625.00,20.49 +tochars,gmpz,10000,10,5,3,4149025.00,4141508.20,20.75 +fromchars,auto,10000,10,5,3,4189733.40,4167583.20,20.94 +fromchars,kernel,10000,10,5,3,4093975.00,4082458.40,20.45 +fromchars,gmp,10000,10,12,3,1772107.58,1767878.50,21.25 +fromchars,gmpz,10000,10,11,3,1855469.73,1850943.18,20.48 diff --git a/tests/beman/big_int/perf/item1/mac_new64_seed1a.csv b/tests/beman/big_int/perf/item1/mac_new64_seed1a.csv new file mode 100644 index 00000000..0637fb2f --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_new64_seed1a.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T16:57:19Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2591075,9,7.54,7.45,19.61 +add,inplace,1,1,2980790,9,3.54,3.28,21.06 +add,kernel,1,1,17537265,9,1.14,1.14,20.03 +add,floor,1,1,2181846,9,9.43,9.17,20.52 +add,gmp,1,1,13291988,9,1.51,1.49,20.11 +add,gmpz,1,1,6104269,9,2.97,2.96,20.59 +add,auto,2,2,1319892,9,15.69,15.63,20.71 +add,inplace,2,2,2597028,9,3.91,3.84,20.42 +add,kernel,2,2,14350155,9,1.39,1.39,19.96 +add,floor,2,2,2048608,9,9.80,9.43,19.94 +add,gmp,2,2,9648049,9,1.99,1.96,19.15 +add,gmpz,2,2,6717924,9,3.28,2.98,23.21 +add,auto,4,4,1452128,9,14.19,13.94,20.52 +add,inplace,4,4,2867501,9,3.50,3.49,20.30 +add,kernel,4,4,10410817,9,1.92,1.91,20.00 +add,floor,4,4,1969299,9,10.17,10.15,20.06 +add,gmp,4,4,11506198,9,1.74,1.73,20.01 +add,gmpz,4,4,5843618,9,4.12,3.88,21.05 +add,auto,8,8,1300442,9,15.65,15.27,20.30 +add,inplace,8,8,2490431,9,4.11,4.10,20.48 +add,kernel,8,8,5728023,9,3.48,3.46,19.93 +add,floor,8,8,1679966,9,12.14,11.65,20.14 +add,gmp,8,8,8955115,9,2.23,2.23,19.99 +add,gmpz,8,8,5089410,9,4.38,3.81,19.90 +add,auto,16,16,1216970,9,16.38,16.01,19.90 +add,inplace,16,16,1790209,9,5.59,5.59,20.06 +add,kernel,16,16,2593593,9,7.58,7.55,19.70 +add,floor,16,16,1457234,9,13.80,13.67,20.17 +add,gmp,16,16,6192279,9,3.23,3.22,20.07 +add,gmpz,16,16,4991107,9,4.01,3.98,20.57 +add,auto,64,64,526135,9,38.21,37.78,20.18 +add,inplace,64,64,505123,9,19.99,19.87,20.19 +add,kernel,64,64,407414,9,49.49,48.33,20.25 +add,floor,64,64,328248,9,60.82,59.87,19.95 +add,gmp,64,64,1791363,9,11.17,11.02,20.08 +add,gmpz,64,64,1504414,9,13.32,13.21,20.02 +add,auto,256,256,181912,9,111.95,109.51,20.41 +add,inplace,256,256,99831,9,100.69,98.84,20.02 +add,kernel,256,256,85302,9,235.05,232.26,20.04 +add,floor,256,256,81011,9,246.43,239.32,19.90 +add,gmp,256,256,349957,9,57.32,56.49,20.35 +add,gmpz,256,256,350624,9,57.73,57.17,20.23 +add,auto,1024,1024,45227,9,452.79,445.78,20.47 +add,inplace,1024,1024,22974,9,433.69,423.86,19.93 +add,kernel,1024,1024,19749,9,968.46,937.87,19.29 +add,floor,1024,1024,19534,9,989.70,953.47,19.33 +add,gmp,1024,1024,80474,9,252.03,250.87,20.28 +add,gmpz,1024,1024,78943,9,253.36,246.59,19.97 +add,auto,2000,2000,22849,9,877.19,867.14,20.03 +add,inplace,2000,2000,11646,9,860.75,840.62,20.15 +add,kernel,2000,2000,10435,9,1922.77,1906.87,20.14 +add,floor,2000,2000,10688,9,1922.95,1892.96,20.48 +add,gmp,2000,2000,40381,9,494.47,486.59,19.94 +add,gmpz,2000,2000,40319,9,496.45,488.39,19.98 +add,auto,1024,1,200577,9,105.94,91.80,22.85 +add,inplace,1024,1,3359947,9,2.98,2.97,20.03 +add,kernel,1024,1,26902,9,733.68,715.02,19.69 +add,floor,1024,1,26659,9,754.87,737.01,20.08 +add,gmp,1024,1,76426,9,261.99,258.29,20.02 +add,gmpz,1024,1,75203,9,268.35,265.91,20.17 +sub,auto,1,1,2768364,9,8.11,7.95,20.94 +sub,inplace,1,1,2784222,9,3.60,3.33,19.88 +sub,kernel,1,1,19159868,9,1.05,1.04,20.09 +sub,floor,1,1,11510860,9,1.74,1.73,20.00 +sub,gmp,1,1,13414633,9,1.49,1.48,20.00 +sub,gmpz,1,1,8062622,9,2.48,2.48,20.05 +sub,auto,2,2,1322284,9,14.68,14.39,19.44 +sub,inplace,2,2,2846889,9,3.49,3.47,19.92 +sub,kernel,2,2,14150406,9,1.42,1.41,20.27 +sub,floor,2,2,2021756,9,9.47,9.42,19.18 +sub,gmp,2,2,10089632,9,1.99,1.98,20.19 +sub,gmpz,2,2,6624400,9,2.98,2.96,19.74 +sub,auto,4,4,1403983,9,14.49,14.01,20.29 +sub,inplace,4,4,2877336,9,3.61,3.47,20.65 +sub,kernel,4,4,10320456,9,1.94,1.93,20.05 +sub,floor,4,4,1964061,9,10.35,9.72,20.00 +sub,gmp,4,4,11378158,9,1.74,1.73,19.79 +sub,gmpz,4,4,7314682,9,2.74,2.73,20.25 +sub,auto,8,8,1193054,9,20.49,15.99,20.55 +sub,inplace,8,8,2509053,9,4.12,3.95,20.88 +sub,kernel,8,8,5775141,9,3.49,3.46,20.15 +sub,floor,8,8,1729691,9,12.40,11.39,19.01 +sub,gmp,8,8,8877493,9,2.24,2.23,19.86 +sub,gmpz,8,8,6128677,9,3.23,3.23,19.84 +sub,auto,16,16,1153511,9,17.52,17.37,20.24 +sub,inplace,16,16,1947046,9,5.23,5.15,20.35 +sub,kernel,16,16,2573604,9,7.73,7.66,19.91 +sub,floor,16,16,1311816,9,15.21,15.14,19.99 +sub,gmp,16,16,6505103,9,3.23,3.09,20.78 +sub,gmpz,16,16,4574127,9,4.38,4.33,20.13 +sub,auto,64,64,522968,9,35.89,35.68,19.27 +sub,inplace,64,64,488451,9,19.96,19.78,19.50 +sub,kernel,64,64,405589,9,49.50,48.76,20.08 +sub,floor,64,64,333694,9,65.51,59.83,21.45 +sub,gmp,64,64,1799158,9,11.17,11.12,20.10 +sub,gmpz,64,64,1454058,9,13.82,13.75,20.14 +sub,auto,256,256,183510,9,110.24,108.58,20.25 +sub,inplace,256,256,100119,9,101.25,100.46,20.26 +sub,kernel,256,256,84415,9,236.83,236.61,20.00 +sub,floor,256,256,81623,9,245.54,245.16,20.10 +sub,gmp,256,256,350755,9,57.55,56.84,20.19 +sub,gmpz,256,256,346089,9,57.96,57.39,20.04 +sub,auto,1024,1024,44225,9,453.65,452.63,20.06 +sub,inplace,1024,1024,23124,9,433.65,423.25,19.96 +sub,kernel,1024,1024,20428,9,972.79,940.65,19.74 +sub,floor,1024,1024,20578,9,976.95,956.28,20.08 +sub,gmp,1024,1024,79431,9,251.25,247.63,19.93 +sub,gmpz,1024,1024,78805,9,252.97,251.08,19.92 +sub,auto,2000,2000,22820,9,877.40,865.48,20.08 +sub,inplace,2000,2000,11778,9,850.75,836.15,20.01 +sub,kernel,2000,2000,10743,9,1923.45,1866.06,20.56 +sub,floor,2000,2000,10273,9,1922.70,1875.37,19.65 +sub,gmp,2000,2000,40420,9,494.22,488.28,19.95 +sub,gmpz,2000,2000,40099,9,496.64,487.05,19.91 +sub,auto,1024,1,148952,9,149.61,143.79,23.05 +sub,inplace,1024,1,3094853,9,3.23,3.21,19.96 +sub,kernel,1024,1,27384,9,730.28,706.16,19.88 +sub,floor,1024,1,26533,9,752.88,734.62,19.96 +sub,gmp,1024,1,74765,9,262.71,257.69,19.69 +sub,gmpz,1024,1,74507,9,269.30,258.71,20.05 +shl,auto,1,13,1610013,9,12.58,12.41,20.22 +shl,inplace,1,13,3967158,9,2.48,2.48,19.72 +shl,kernel,1,13,10088109,9,2.23,1.98,21.73 +shl,kernelip,1,13,8991916,9,1.77,1.12,27.96 +shl,floor,1,13,1944319,9,10.93,10.52,21.16 +shl,gmp,1,13,16123425,9,1.25,1.24,20.34 +shl,gmpz,1,13,9885306,9,1.99,1.99,19.69 +shl,auto,4,13,1517852,9,13.01,12.70,19.79 +shl,inplace,4,13,2652224,9,3.70,3.61,19.66 +shl,kernel,4,13,5347329,9,3.73,3.71,19.92 +shl,kernelip,4,13,2959418,9,3.38,3.35,20.05 +shl,floor,4,13,1580028,9,12.93,12.65,20.32 +shl,gmp,4,13,10018621,9,2.00,1.98,20.07 +shl,gmpz,4,13,7328847,9,2.74,2.73,20.07 +shl,auto,16,13,1338689,9,17.05,15.10,22.41 +shl,inplace,16,13,1874275,9,5.31,5.28,19.93 +shl,kernel,16,13,4778620,9,4.17,4.15,19.93 +shl,kernelip,16,13,1375463,9,6.81,6.66,18.67 +shl,floor,16,13,1694282,9,12.41,11.74,20.82 +shl,gmp,16,13,5755034,9,3.48,3.47,20.03 +shl,gmpz,16,13,3930199,9,5.17,5.10,18.90 +shl,auto,256,13,477289,9,41.40,41.11,19.82 +shl,inplace,256,13,336147,9,29.83,29.75,20.10 +shl,kernel,256,13,408478,9,49.11,48.77,20.06 +shl,kernelip,256,13,204993,9,48.66,48.17,19.92 +shl,floor,256,13,348121,9,57.26,57.17,19.95 +shl,gmp,256,13,538668,9,36.94,36.88,19.90 +shl,gmpz,256,13,509750,9,38.84,38.57,19.79 +shl,auto,2000,13,83735,9,250.75,236.73,21.22 +shl,inplace,2000,13,50833,9,196.05,195.53,19.92 +shl,kernel,2000,13,52081,9,383.93,382.37,20.00 +shl,kernelip,2000,13,26547,9,376.97,375.80,20.04 +shl,floor,2000,13,49999,9,400.92,398.48,20.05 +shl,gmp,2000,13,10951,9,1848.86,1707.99,20.90 +shl,gmpz,2000,13,13255,9,2137.57,1635.52,23.55 +shl,auto,2000,77,64888,9,631.13,287.42,34.89 +shl,inplace,2000,77,43219,9,229.19,227.60,19.81 +shl,kernel,2000,77,37993,9,527.69,521.15,20.01 +shl,kernelip,2000,77,19414,9,521.35,518.77,20.37 +shl,floor,2000,77,36782,9,540.34,536.30,19.84 +shl,gmp,2000,77,68492,9,290.09,287.80,20.10 +shl,gmpz,2000,77,66305,9,288.91,287.37,19.18 +shr,auto,1,13,2931393,9,6.46,6.42,18.97 +shr,inplace,1,13,3009699,9,3.32,3.30,20.02 +shr,kernel,1,13,8941529,9,2.23,2.22,19.96 +shr,floor,1,13,7373312,9,2.50,2.46,18.58 +shr,gmp,1,13,19857097,9,1.00,0.99,19.83 +shr,gmpz,1,13,9971247,9,1.99,1.98,19.89 +shr,auto,4,13,1444598,9,14.31,13.90,20.65 +shr,inplace,4,13,2865957,9,3.79,3.64,21.64 +shr,kernel,4,13,5346099,9,3.73,3.73,19.96 +shr,floor,4,13,1672292,9,11.95,11.91,20.33 +shr,gmp,4,13,11509763,9,1.74,1.73,20.05 +shr,gmpz,4,13,7313153,9,2.73,2.73,20.02 +shr,auto,16,13,1112645,9,18.36,18.00,20.40 +shr,inplace,16,13,1927984,9,5.24,5.17,20.20 +shr,kernel,16,13,4871317,9,4.11,4.09,20.00 +shr,floor,16,13,1550490,9,12.98,12.93,20.27 +shr,gmp,16,13,6181087,9,3.23,3.22,19.96 +shr,gmpz,16,13,4719383,9,4.24,4.23,20.01 +shr,auto,256,13,477163,9,42.13,42.03,20.19 +shr,inplace,256,13,326339,9,30.43,30.35,19.90 +shr,kernel,256,13,300651,9,66.48,66.13,19.98 +shr,floor,256,13,264775,9,75.26,75.14,19.95 +shr,gmp,256,13,543395,9,36.79,36.68,20.04 +shr,gmpz,256,13,525105,9,38.13,37.96,20.01 +shr,auto,2000,13,89338,9,259.13,225.81,23.12 +shr,inplace,2000,13,50947,9,196.20,195.68,20.01 +shr,kernel,2000,13,38713,9,513.48,511.33,19.93 +shr,floor,2000,13,37690,9,525.57,513.68,19.76 +shr,gmp,2000,13,68703,9,294.63,290.49,20.73 +shr,gmpz,2000,13,68879,9,298.30,287.37,20.55 +shr,auto,2000,77,75949,9,295.94,247.71,19.93 +shr,inplace,2000,77,50950,9,196.06,195.32,19.98 +shr,kernel,2000,77,39221,9,516.81,512.32,20.33 +shr,floor,2000,77,38250,9,526.35,525.50,20.14 +shr,gmp,2000,77,69061,9,290.02,289.24,20.05 +shr,gmpz,2000,77,68649,9,292.07,285.61,19.97 +mul,auto,1,1,1413077,9,13.99,13.68,19.70 +mul,gmp,1,1,5370218,9,3.73,3.72,20.20 +mul,gmpz,1,1,7308907,9,2.74,2.73,20.03 +mul,auto,2,2,1131218,9,18.16,17.64,20.55 +mul,kernel,2,2,3105648,9,6.40,6.31,19.81 +mul,floor,2,2,1359951,9,17.01,14.75,22.58 +mul,gmp,2,2,4482300,9,4.57,4.47,20.56 +mul,gmpz,2,2,3094663,9,6.54,6.51,20.31 +mul,auto,3,3,1056584,9,19.69,19.16,21.03 +mul,kernel,3,3,2513849,9,8.27,8.19,20.77 +mul,floor,3,3,1201705,9,16.69,16.60,20.05 +mul,gmp,3,3,3217732,9,6.35,6.20,19.90 +mul,gmpz,3,3,2539625,9,7.90,7.85,20.87 +mul,auto,4,4,878393,9,21.67,20.84,19.00 +mul,kernel,4,4,1808374,9,11.07,10.98,20.01 +mul,floor,4,4,1172989,9,16.70,16.64,19.83 +mul,gmp,4,4,2479801,9,8.85,8.06,21.29 +mul,gmpz,4,4,2054461,9,9.76,9.72,20.08 +mul,auto,6,6,745880,9,27.29,26.91,20.34 +mul,kernel,6,6,1048779,9,19.19,19.15,20.18 +mul,floor,6,6,798797,9,23.85,23.67,19.20 +mul,gmp,6,6,1381349,9,15.40,14.79,21.01 +mul,gmpz,6,6,1082499,9,18.66,18.49,20.25 +mul,auto,8,8,576788,9,34.43,34.22,19.98 +mul,kernel,8,8,869940,9,22.97,22.88,19.97 +mul,floor,8,8,653900,9,30.66,30.52,20.09 +mul,gmp,8,8,777103,9,25.72,24.66,20.29 +mul,gmpz,8,8,799278,9,26.94,24.42,21.02 +mul,auto,12,12,372070,9,53.96,53.47,20.07 +mul,kernel,12,12,482208,9,41.29,41.24,19.96 +mul,floor,12,12,403329,9,49.61,49.29,20.00 +mul,gmp,12,12,449911,9,44.35,44.13,20.00 +mul,gmpz,12,12,426282,9,46.66,46.53,19.88 +mul,auto,16,16,242406,9,82.38,82.29,20.12 +mul,kernel,16,16,287331,9,69.34,69.22,19.92 +mul,floor,16,16,256041,9,78.26,78.08,20.06 +mul,gmp,16,16,257382,9,76.24,76.03,19.62 +mul,gmpz,16,16,253686,9,79.00,78.77,20.06 +mul,auto,32,32,71381,9,281.03,279.77,20.10 +mul,kernel,32,32,76974,9,258.52,257.58,19.91 +mul,floor,32,32,71914,9,277.88,277.64,20.07 +mul,gmp,32,32,74366,9,269.72,268.27,20.24 +mul,gmpz,32,32,73409,9,272.21,270.35,20.01 +mul,auto,64,64,19847,9,1008.17,1004.93,20.02 +mul,kernel,64,64,20403,9,983.94,981.22,20.09 +mul,floor,64,64,19642,9,1008.84,1007.17,19.83 +mul,gmp,64,64,25947,9,776.83,771.04,20.16 +mul,gmpz,64,64,25515,9,779.42,775.11,19.91 +mul,auto,128,128,5610,9,3577.85,3566.18,20.09 +mul,kernel,128,128,5572,9,3576.52,3574.55,19.99 +mul,floor,128,128,5528,9,3632.87,3600.13,20.07 +mul,gmp,128,128,7515,9,2650.58,2626.63,19.88 +mul,gmpz,128,128,6690,9,2998.26,2988.14,20.08 +mul,auto,256,256,1653,9,12073.75,12059.26,20.02 +mul,kernel,256,256,1700,9,11766.59,11740.05,20.11 +mul,floor,256,256,1695,9,11785.77,11755.24,19.99 +mul,gmp,256,256,2560,9,7849.58,7823.57,20.16 +mul,gmpz,256,256,2551,9,7817.31,7800.81,19.94 +mul,auto,512,512,542,9,36888.84,36838.49,20.01 +mul,kernel,512,512,530,9,37008.88,36868.71,19.63 +mul,floor,512,512,541,9,36978.67,36848.43,20.02 +mul,gmp,512,512,934,9,21308.49,21183.57,19.89 +mul,gmpz,512,512,942,9,21340.63,21290.34,20.15 +mul,auto,1000,1000,188,9,106776.82,106418.66,20.12 +mul,kernel,1000,1000,188,9,106868.35,106455.45,20.11 +mul,floor,1000,1000,186,9,107175.18,106391.13,19.95 +mul,gmp,1000,1000,367,9,55064.37,54800.75,20.25 +mul,gmpz,1000,1000,363,9,55161.27,54913.80,20.14 +mul,auto,2000,2000,67,9,301645.52,299872.51,20.21 +mul,kernel,2000,2000,67,9,301368.16,299745.03,20.21 +mul,floor,2000,2000,67,9,302559.07,301422.27,20.26 +mul,gmp,2000,2000,131,9,148506.99,148136.76,19.46 +mul,gmpz,2000,2000,134,9,148517.10,148425.69,19.92 +mul,auto,2000,100,426,9,46419.89,46236.21,19.81 +mul,kernel,2000,100,432,9,46561.53,46445.99,20.11 +mul,floor,2000,100,428,9,46961.16,46588.20,20.22 +mul,gmp,2000,100,565,9,34988.57,34956.93,19.78 +mul,gmpz,2000,100,579,9,34709.77,34623.27,20.09 +sqr,auto,4,4,947359,9,24.05,21.08,21.94 +sqr,kernel,4,4,1774215,9,11.25,11.15,20.02 +sqr,floor,4,4,1232691,9,16.19,16.14,20.00 +sqr,gmp,4,4,2878540,9,6.95,6.68,19.94 +sqr,gmpz,4,4,2268854,9,9.45,9.17,21.53 +sqr,auto,16,16,244876,9,76.42,74.80,18.95 +sqr,kernel,16,16,313217,9,63.79,63.31,19.97 +sqr,floor,16,16,276289,9,69.32,69.10,19.40 +sqr,gmp,16,16,315658,9,63.54,62.79,20.38 +sqr,gmpz,16,16,300238,9,66.72,63.34,19.92 +sqr,auto,64,64,32806,9,600.98,598.54,19.77 +sqr,kernel,64,64,34493,9,581.63,579.81,20.06 +sqr,floor,64,64,33266,9,599.77,598.27,19.94 +sqr,gmp,64,64,30262,9,659.26,655.20,20.11 +sqr,gmpz,64,64,28990,9,677.08,659.08,19.59 +sqr,auto,512,512,823,9,24306.70,24209.75,20.03 +sqr,kernel,512,512,818,9,24380.25,24164.83,19.95 +sqr,floor,512,512,820,9,24349.24,24260.26,20.08 +sqr,gmp,512,512,1091,9,18339.02,18027.80,20.04 +sqr,gmpz,512,512,1017,9,19694.28,19574.28,20.03 +sqr,auto,2000,2000,90,9,224206.94,222388.42,20.16 +sqr,kernel,2000,2000,90,9,223715.74,222495.37,20.14 +sqr,floor,2000,2000,89,9,223344.10,222635.76,19.90 +sqr,gmp,2000,2000,166,9,120635.04,119208.83,20.00 +sqr,gmpz,2000,2000,166,9,120833.33,120245.99,20.06 +divrem,auto,2,1,694551,9,29.60,28.38,19.51 +divrem,kernel,2,1,3492552,9,5.72,5.70,20.00 +divrem,floor,2,1,1468791,9,13.67,13.14,19.83 +divrem,gmp,2,1,4006628,9,5.09,5.02,20.31 +divrem,gmpz,2,1,2305394,9,8.68,8.63,20.01 +divrem,auto,8,4,276541,9,71.42,69.71,19.66 +divrem,kernel,8,4,491342,9,40.91,40.40,20.10 +divrem,floor,8,4,352747,9,56.27,55.92,19.85 +divrem,gmp,8,4,505045,9,39.87,39.80,20.15 +divrem,gmpz,8,4,462727,9,43.39,42.87,20.08 +divrem,auto,32,16,47051,9,429.07,425.07,20.26 +divrem,kernel,32,16,51775,9,399.66,394.35,20.75 +divrem,floor,32,16,48526,9,410.95,400.97,19.93 +divrem,gmp,32,16,95265,9,210.63,204.75,20.10 +divrem,gmpz,32,16,94683,9,210.48,208.51,19.95 +divrem,auto,128,64,5424,9,3678.07,3597.44,19.92 +divrem,kernel,128,64,5526,9,3602.39,3473.13,19.84 +divrem,floor,128,64,5422,9,3662.22,3629.17,19.88 +divrem,gmp,128,64,11245,9,1775.04,1758.85,19.97 +divrem,gmpz,128,64,11303,9,1783.15,1769.17,20.17 +divrem,auto,512,256,680,9,29707.84,29515.50,20.25 +divrem,kernel,512,256,676,9,29467.21,29142.75,20.11 +divrem,floor,512,256,679,9,29520.19,29413.72,20.04 +divrem,gmp,512,256,1224,9,16377.11,16322.27,20.21 +divrem,gmpz,512,256,1222,9,16360.44,16307.28,19.99 +divrem,auto,2000,1000,87,9,232264.37,231628.36,20.29 +divrem,kernel,2000,1000,87,9,232985.63,231761.49,20.28 +divrem,floor,2000,1000,86,9,231953.97,230949.62,19.98 +divrem,gmp,2000,1000,147,9,135624.71,135204.37,19.93 +divrem,gmpz,2000,1000,148,9,134395.55,134188.34,19.93 +divrem,auto,4000,2000,29,9,686166.66,681341.93,19.96 +divrem,kernel,4000,2000,30,9,684884.73,682731.97,20.54 +divrem,floor,4000,2000,30,9,685611.10,680047.23,20.59 +divrem,gmp,4000,2000,59,9,343038.14,342341.10,20.24 +divrem,gmpz,4000,2000,59,9,344128.54,341688.56,20.29 +divrem,auto,2000,100,213,9,94077.27,93828.44,20.06 +divrem,kernel,2000,100,214,9,93809.19,93436.14,20.11 +divrem,floor,2000,100,213,9,93653.76,93233.77,19.96 +divrem,gmp,2000,100,281,9,70988.58,70169.48,19.94 +divrem,gmpz,2000,100,282,9,70021.28,69476.66,19.73 +divrem,auto,65536,1,87,9,233628.36,229191.09,20.64 +divrem,kernel,65536,1,89,9,230061.80,225183.04,20.42 +divrem,floor,65536,1,87,9,231447.32,224070.40,20.05 +divrem,gmp,65536,1,119,9,170274.51,167248.25,20.26 +divrem,gmpz,65536,1,117,9,170847.22,167709.76,19.97 +fromchars,auto,4,10,216091,9,92.24,89.95,19.85 +fromchars,kernel,4,10,620985,9,32.36,31.45,20.05 +fromchars,gmp,4,10,634956,9,31.92,30.02,20.08 +fromchars,gmpz,4,10,262750,9,77.83,75.74,20.30 +fromchars,auto,16,10,52671,9,381.77,372.88,20.13 +fromchars,kernel,16,10,103504,9,192.99,189.13,19.86 +fromchars,gmp,16,10,142260,9,140.57,139.40,20.01 +fromchars,gmpz,16,10,62953,9,318.32,314.18,20.00 +fromchars,auto,64,10,9037,9,2196.83,2161.72,19.82 +fromchars,kernel,64,10,10954,9,1858.43,1808.47,20.42 +fromchars,gmp,64,10,21172,9,955.46,950.11,20.23 +fromchars,gmpz,64,10,12521,9,1600.17,1592.61,20.04 +fromchars,auto,256,10,1449,9,13787.96,13762.80,20.02 +fromchars,kernel,256,10,1734,9,11542.70,11510.09,20.06 +fromchars,gmp,256,10,2525,9,7965.18,7941.50,20.11 +fromchars,gmpz,256,10,1838,9,10810.03,10534.21,19.81 +fromchars,auto,2000,10,67,9,300227.00,299726.36,20.12 +fromchars,kernel,2000,10,72,9,282653.35,281670.14,20.41 +fromchars,gmp,2000,10,108,9,183959.10,183116.90,20.04 +fromchars,gmpz,2000,10,99,9,203446.12,202760.10,20.15 diff --git a/tests/beman/big_int/perf/item1/mac_new64_seed1b.csv b/tests/beman/big_int/perf/item1/mac_new64_seed1b.csv new file mode 100644 index 00000000..c8af2c47 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_new64_seed1b.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T17:00:20Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2568978,9,7.74,7.24,19.48 +add,inplace,1,1,2877323,9,3.48,3.45,20.05 +add,kernel,1,1,17539778,9,1.14,1.14,20.09 +add,floor,1,1,2115840,9,8.96,8.92,19.32 +add,gmp,1,1,13406923,9,1.49,1.48,19.97 +add,gmpz,1,1,6706764,9,2.98,2.98,19.99 +add,auto,2,2,1336860,9,15.00,14.66,19.99 +add,inplace,2,2,2564769,9,3.86,3.77,19.89 +add,kernel,2,2,14239102,9,1.39,1.39,19.87 +add,floor,2,2,2112052,9,9.45,9.40,20.00 +add,gmp,2,2,10105791,9,1.99,1.98,20.07 +add,gmpz,2,2,6617961,9,3.11,2.96,20.57 +add,auto,4,4,1427192,9,14.67,14.19,21.06 +add,inplace,4,4,2753847,9,3.51,3.50,19.56 +add,kernel,4,4,10396872,9,1.92,1.90,20.00 +add,floor,4,4,1918524,9,10.18,10.15,19.62 +add,gmp,4,4,11376590,9,1.74,1.73,19.83 +add,gmpz,4,4,5339509,9,4.14,3.94,19.77 +add,auto,8,8,1269750,9,15.24,15.15,19.38 +add,inplace,8,8,2517561,9,3.99,3.97,20.12 +add,kernel,8,8,5661907,9,3.52,3.46,19.92 +add,floor,8,8,1648244,9,12.36,12.10,20.38 +add,gmp,8,8,8801046,9,2.29,2.26,20.10 +add,gmpz,8,8,5089676,9,4.47,3.74,21.87 +add,auto,16,16,1163961,9,17.03,16.59,19.77 +add,inplace,16,16,1785565,9,5.59,5.58,19.98 +add,kernel,16,16,2642351,9,7.55,7.50,20.00 +add,floor,16,16,1453919,9,13.42,13.32,19.65 +add,gmp,16,16,6075665,9,3.23,3.22,19.62 +add,gmpz,16,16,5013128,9,4.47,3.99,20.41 +add,auto,64,64,523060,9,38.13,37.60,19.90 +add,inplace,64,64,500514,9,19.93,19.70,19.94 +add,kernel,64,64,404371,9,49.37,47.99,19.89 +add,floor,64,64,326713,9,60.66,60.07,19.92 +add,gmp,64,64,1801600,9,11.09,11.06,20.02 +add,gmpz,64,64,1498075,9,13.34,13.23,19.96 +add,auto,256,256,184576,9,109.84,109.54,20.29 +add,inplace,256,256,98902,9,101.08,98.15,19.86 +add,kernel,256,256,85291,9,234.32,225.76,19.91 +add,floor,256,256,79899,9,249.16,243.07,20.08 +add,gmp,256,256,350398,9,56.93,56.52,19.94 +add,gmpz,256,256,345523,9,57.73,56.85,19.90 +add,auto,1024,1024,44146,9,450.83,444.44,19.88 +add,inplace,1024,1024,23651,9,433.51,418.39,20.40 +add,kernel,1024,1024,20574,9,968.32,934.06,19.80 +add,floor,1024,1024,20420,9,987.01,958.52,20.17 +add,gmp,1024,1024,79390,9,252.71,249.93,20.28 +add,gmpz,1024,1024,78686,9,253.02,250.40,19.90 +add,auto,2000,2000,22551,9,883.79,867.51,19.92 +add,inplace,2000,2000,11775,9,870.03,859.42,20.51 +add,kernel,2000,2000,10290,9,1919.24,1869.49,19.69 +add,floor,2000,2000,10389,9,1934.55,1892.21,20.11 +add,gmp,2000,2000,40519,9,496.57,493.81,20.16 +add,gmpz,2000,2000,40365,9,497.07,491.16,20.09 +add,auto,1024,1,213096,9,108.32,99.39,21.55 +add,inplace,1024,1,3347244,9,2.98,2.97,19.98 +add,kernel,1024,1,26735,9,736.84,723.35,19.66 +add,floor,1024,1,25141,9,754.93,753.13,19.01 +add,gmp,1024,1,75849,9,262.80,256.33,19.88 +add,gmpz,1024,1,75690,9,264.78,258.29,19.99 +sub,auto,1,1,2598617,9,7.93,7.68,20.47 +sub,inplace,1,1,2983509,9,3.48,3.35,20.64 +sub,kernel,1,1,19108582,9,1.05,1.04,19.99 +sub,floor,1,1,11504521,9,1.75,1.74,20.16 +sub,gmp,1,1,13490226,9,1.49,1.48,20.09 +sub,gmpz,1,1,8059980,9,2.48,2.48,20.00 +sub,auto,2,2,1359625,9,14.38,14.33,19.69 +sub,inplace,2,2,2878412,9,3.48,3.47,20.18 +sub,kernel,2,2,14115689,9,1.42,1.41,19.99 +sub,floor,2,2,2138783,9,9.43,9.10,20.14 +sub,gmp,2,2,10076213,9,1.99,1.96,20.00 +sub,gmpz,2,2,6721904,9,2.99,2.97,20.12 +sub,auto,4,4,1379393,9,14.95,14.84,20.64 +sub,inplace,4,4,2777129,9,3.61,3.49,20.18 +sub,kernel,4,4,9577798,9,1.95,1.94,18.83 +sub,floor,4,4,1957935,9,12.37,10.18,21.06 +sub,gmp,4,4,11524887,9,1.74,1.73,20.05 +sub,gmpz,4,4,7330909,9,2.73,2.73,20.03 +sub,auto,8,8,1285640,9,15.35,15.17,19.79 +sub,inplace,8,8,2434901,9,4.13,4.11,20.47 +sub,kernel,8,8,5599645,9,3.49,3.47,19.68 +sub,floor,8,8,1669550,9,11.94,11.90,20.13 +sub,gmp,8,8,8944710,9,2.23,2.23,20.01 +sub,gmpz,8,8,6160505,9,3.24,3.22,19.94 +sub,auto,16,16,1158486,9,17.92,17.29,20.68 +sub,inplace,16,16,1916777,9,5.23,5.22,20.04 +sub,kernel,16,16,2599134,9,7.72,7.66,20.04 +sub,floor,16,16,1278295,9,15.02,14.90,19.18 +sub,gmp,16,16,6196608,9,3.04,2.98,19.11 +sub,gmpz,16,16,4732732,9,4.23,4.21,20.11 +sub,auto,64,64,549486,9,36.22,36.05,19.89 +sub,inplace,64,64,502638,9,19.94,19.84,20.06 +sub,kernel,64,64,407435,9,49.67,49.23,20.21 +sub,floor,64,64,337538,9,60.19,59.50,20.29 +sub,gmp,64,64,1783406,9,11.23,11.13,20.03 +sub,gmpz,64,64,1446218,9,13.90,13.72,20.11 +sub,auto,256,256,180859,9,110.72,109.35,20.01 +sub,inplace,256,256,99092,9,101.04,98.15,19.93 +sub,kernel,256,256,84666,9,237.38,232.07,20.05 +sub,floor,256,256,81661,9,245.33,241.35,20.03 +sub,gmp,256,256,348890,9,57.18,56.30,19.89 +sub,gmpz,256,256,345164,9,57.88,57.52,19.99 +sub,auto,1024,1024,43982,9,452.63,436.22,19.80 +sub,inplace,1024,1024,22859,9,434.12,426.12,19.83 +sub,kernel,1024,1024,21122,9,998.16,962.05,20.96 +sub,floor,1024,1024,20476,9,974.97,958.15,19.98 +sub,gmp,1024,1024,80163,9,251.51,248.59,20.14 +sub,gmpz,1024,1024,78555,9,253.49,250.63,19.88 +sub,auto,2000,2000,23060,9,875.59,857.15,20.10 +sub,inplace,2000,2000,11823,9,854.56,833.48,20.16 +sub,kernel,2000,2000,10438,9,1916.20,1856.29,19.88 +sub,floor,2000,2000,10420,9,1931.03,1885.94,20.00 +sub,gmp,2000,2000,40422,9,495.86,491.47,20.28 +sub,gmpz,2000,2000,39714,9,497.04,491.17,19.76 +sub,auto,1024,1,138859,9,142.88,136.10,20.03 +sub,inplace,1024,1,3365358,9,2.98,2.97,20.33 +sub,kernel,1024,1,27264,9,733.90,718.96,19.94 +sub,floor,1024,1,26509,9,749.59,724.86,19.74 +sub,gmp,1024,1,75471,9,261.85,255.62,19.66 +sub,gmpz,1024,1,74862,9,266.62,260.29,19.86 +shl,auto,1,13,1709181,9,12.12,11.86,20.75 +shl,inplace,1,13,3811324,9,2.53,2.48,19.29 +shl,kernel,1,13,8962800,9,2.23,2.23,20.03 +shl,kernelip,1,13,8849715,9,1.76,1.12,26.83 +shl,floor,1,13,1772257,9,10.68,10.60,19.03 +shl,gmp,1,13,15816358,9,1.24,1.23,19.60 +shl,gmpz,1,13,10027138,9,1.99,1.98,19.96 +shl,auto,4,13,1557542,9,13.36,12.77,20.69 +shl,inplace,4,13,2688080,9,3.71,3.69,20.21 +shl,kernel,4,13,5369436,9,3.72,3.71,20.10 +shl,kernelip,4,13,2965835,9,3.38,3.37,20.06 +shl,floor,4,13,1593071,9,13.30,12.87,21.22 +shl,gmp,4,13,10161402,9,1.99,1.98,20.18 +shl,gmpz,4,13,7329918,9,2.73,2.72,20.02 +shl,auto,16,13,1310421,9,15.25,15.02,20.10 +shl,inplace,16,13,1890079,9,5.34,5.32,20.25 +shl,kernel,16,13,4840047,9,4.15,4.13,20.23 +shl,kernelip,16,13,1350070,9,6.82,6.73,18.42 +shl,floor,16,13,1613104,9,12.18,11.99,19.72 +shl,gmp,16,13,5744606,9,3.48,3.47,20.26 +shl,gmpz,16,13,3756753,9,5.07,4.99,19.09 +shl,auto,256,13,484868,9,41.18,41.07,19.99 +shl,inplace,256,13,336302,9,29.84,29.74,20.08 +shl,kernel,256,13,407262,9,49.10,49.06,20.02 +shl,kernelip,256,13,205525,9,48.71,48.50,20.07 +shl,floor,256,13,347967,9,57.71,57.00,20.09 +shl,gmp,256,13,544199,9,36.90,36.81,20.10 +shl,gmpz,256,13,528665,9,37.88,37.75,20.18 +shl,auto,2000,13,82633,9,263.59,240.64,22.56 +shl,inplace,2000,13,51049,9,196.01,195.41,20.01 +shl,kernel,2000,13,52112,9,382.58,379.20,20.05 +shl,kernelip,2000,13,26554,9,376.89,374.06,20.31 +shl,floor,2000,13,50253,9,399.67,396.37,20.10 +shl,gmp,2000,13,48518,9,1714.36,600.91,80.74 +shl,gmpz,2000,13,34981,9,1761.89,987.08,60.33 +shl,auto,2000,77,65540,9,410.15,290.27,26.43 +shl,inplace,2000,77,43961,9,229.68,228.90,20.25 +shl,kernel,2000,77,37861,9,529.93,526.08,20.05 +shl,kernelip,2000,77,18837,9,519.38,514.19,19.67 +shl,floor,2000,77,37027,9,537.95,536.07,19.94 +shl,gmp,2000,77,69641,9,290.27,287.15,20.24 +shl,gmpz,2000,77,68686,9,288.25,287.23,19.95 +shr,auto,1,13,2879424,9,6.52,6.43,19.08 +shr,inplace,1,13,3001935,9,3.33,3.31,20.14 +shr,kernel,1,13,8970686,9,2.24,2.23,20.07 +shr,floor,1,13,8013846,9,2.48,2.30,19.86 +shr,gmp,1,13,20000001,9,0.99,0.99,19.98 +shr,gmpz,1,13,10070833,9,1.98,1.98,19.99 +shr,auto,4,13,1402625,9,14.03,13.83,19.70 +shr,inplace,4,13,2674589,9,3.87,3.77,20.65 +shr,kernel,4,13,5362678,9,3.73,3.53,19.79 +shr,floor,4,13,1643246,9,12.19,12.11,20.49 +shr,gmp,4,13,11559818,9,1.74,1.73,20.12 +shr,gmpz,4,13,7306169,9,2.73,2.72,19.95 +shr,auto,16,13,1078921,9,18.36,17.90,19.72 +shr,inplace,16,13,1925289,9,5.24,5.22,20.32 +shr,kernel,16,13,4815886,9,4.16,4.15,20.04 +shr,floor,16,13,1516117,9,12.97,12.86,19.99 +shr,gmp,16,13,6198192,9,3.23,3.22,20.01 +shr,gmpz,16,13,4719605,9,4.24,4.23,20.02 +shr,auto,256,13,474884,9,43.86,42.18,20.67 +shr,inplace,256,13,327400,9,30.54,30.30,19.99 +shr,kernel,256,13,300579,9,66.66,66.36,20.10 +shr,floor,256,13,264961,9,75.24,74.71,19.95 +shr,gmp,256,13,542868,9,36.74,36.65,19.94 +shr,gmpz,256,13,518228,9,38.06,37.95,19.73 +shr,auto,2000,13,86139,9,251.08,228.35,22.11 +shr,inplace,2000,13,51102,9,196.59,195.75,20.18 +shr,kernel,2000,13,39036,9,515.47,505.94,20.04 +shr,floor,2000,13,38335,9,524.58,519.40,20.13 +shr,gmp,2000,13,68490,9,291.00,289.73,20.08 +shr,gmpz,2000,13,66171,9,297.09,286.83,19.85 +shr,auto,2000,77,88843,9,263.16,242.49,23.81 +shr,inplace,2000,77,50980,9,195.67,195.41,19.98 +shr,kernel,2000,77,38688,9,514.50,510.42,19.92 +shr,floor,2000,77,38285,9,526.31,520.76,20.10 +shr,gmp,2000,77,68620,9,290.07,289.50,19.95 +shr,gmpz,2000,77,69103,9,288.44,286.11,19.95 +mul,auto,1,1,1385887,9,14.78,14.25,21.18 +mul,gmp,1,1,5373267,9,3.74,3.71,20.21 +mul,gmpz,1,1,7300925,9,2.74,2.73,20.01 +mul,auto,2,2,1086378,9,18.60,18.35,20.31 +mul,kernel,2,2,3154453,9,6.36,6.23,19.96 +mul,floor,2,2,1346097,9,14.72,14.38,19.98 +mul,gmp,2,2,4242804,9,4.73,4.71,20.07 +mul,gmpz,2,2,2969505,9,6.74,6.71,20.03 +mul,auto,3,3,1018363,9,19.52,19.24,19.96 +mul,kernel,3,3,2223326,9,9.41,8.18,20.55 +mul,floor,3,3,1223690,9,16.64,16.43,20.67 +mul,gmp,3,3,3219055,9,6.13,6.08,19.77 +mul,gmpz,3,3,2236817,9,9.62,8.74,21.96 +mul,auto,4,4,948656,9,21.45,21.29,20.48 +mul,kernel,4,4,1897189,9,10.98,10.62,20.70 +mul,floor,4,4,1153768,9,16.64,16.42,19.34 +mul,gmp,4,4,2157990,9,8.97,8.97,19.52 +mul,gmpz,4,4,1891604,9,11.01,10.94,20.92 +mul,auto,6,6,732458,9,27.59,27.51,20.23 +mul,kernel,6,6,1065768,9,18.80,18.53,20.02 +mul,floor,6,6,790901,9,23.46,23.34,18.85 +mul,gmp,6,6,1356257,9,14.88,14.46,20.08 +mul,gmpz,6,6,1062114,9,18.52,18.36,19.73 +mul,auto,8,8,573104,9,34.72,34.65,19.97 +mul,kernel,8,8,863785,9,23.02,22.86,19.87 +mul,floor,8,8,656714,9,30.64,30.15,20.16 +mul,gmp,8,8,887394,9,22.58,22.01,20.33 +mul,gmpz,8,8,770295,9,27.27,24.42,20.69 +mul,auto,12,12,363803,9,54.20,53.99,19.83 +mul,kernel,12,12,489353,9,40.83,40.75,20.00 +mul,floor,12,12,404799,9,49.48,49.22,20.04 +mul,gmp,12,12,451772,9,44.31,44.16,20.02 +mul,gmpz,12,12,429629,9,47.01,46.56,20.21 +mul,auto,16,16,242853,9,82.92,82.29,20.15 +mul,kernel,16,16,288178,9,69.46,69.35,20.05 +mul,floor,16,16,254727,9,78.66,78.34,20.05 +mul,gmp,16,16,258406,9,77.31,76.13,19.88 +mul,gmpz,16,16,256831,9,79.15,78.08,20.29 +mul,auto,32,32,70772,9,282.42,279.72,19.96 +mul,kernel,32,32,77475,9,257.69,256.92,19.97 +mul,floor,32,32,71872,9,280.89,278.64,20.36 +mul,gmp,32,32,72937,9,269.54,268.64,19.74 +mul,gmpz,32,32,73993,9,268.29,267.79,19.91 +mul,auto,64,64,19779,9,1007.00,1004.62,19.92 +mul,kernel,64,64,20328,9,984.27,981.35,20.01 +mul,floor,64,64,19766,9,1010.06,1006.00,19.97 +mul,gmp,64,64,25523,9,773.17,771.14,19.75 +mul,gmpz,64,64,25547,9,778.89,774.85,19.90 +mul,auto,128,128,5555,9,3581.56,3572.32,19.90 +mul,kernel,128,128,5578,9,3588.48,3575.92,20.13 +mul,floor,128,128,5556,9,3595.17,3584.42,19.97 +mul,gmp,128,128,7558,9,2642.18,2625.42,20.01 +mul,gmpz,128,128,6583,9,3002.04,2983.46,19.78 +mul,auto,256,256,1708,9,11761.71,11732.87,20.11 +mul,kernel,256,256,1694,9,11774.89,11746.41,19.97 +mul,floor,256,256,1697,9,11807.80,11748.26,20.05 +mul,gmp,256,256,2554,9,7825.18,7813.33,20.00 +mul,gmpz,256,256,2557,9,7811.56,7800.55,19.99 +mul,auto,512,512,539,9,37137.45,37028.14,20.04 +mul,kernel,512,512,543,9,36947.97,36796.58,20.08 +mul,floor,512,512,541,9,36948.09,36802.45,19.99 +mul,gmp,512,512,1053,9,18972.70,18957.58,20.01 +mul,gmpz,512,512,1054,9,19078.79,19004.43,20.09 +mul,auto,1000,1000,188,9,106940.38,106285.02,20.12 +mul,kernel,1000,1000,187,9,106778.97,106459.01,19.97 +mul,floor,1000,1000,188,9,106831.12,106568.27,20.08 +mul,gmp,1000,1000,365,9,55440.98,54993.04,20.23 +mul,gmpz,1000,1000,363,9,55099.75,54731.17,20.03 +mul,auto,2000,2000,67,9,301538.57,299996.27,20.20 +mul,kernel,2000,2000,66,9,304584.61,302908.47,20.10 +mul,floor,2000,2000,66,9,305273.36,304018.94,20.24 +mul,gmp,2000,2000,135,9,148283.64,147172.53,20.03 +mul,gmpz,2000,2000,135,9,148881.79,147843.21,20.08 +mul,auto,2000,100,432,9,46365.74,46189.24,20.04 +mul,kernel,2000,100,431,9,46778.23,46466.45,20.19 +mul,floor,2000,100,425,9,46763.24,46612.25,19.87 +mul,gmp,2000,100,572,9,35078.23,34844.26,20.07 +mul,gmpz,2000,100,577,9,34705.95,34583.12,20.03 +sqr,auto,4,4,934600,9,21.39,21.33,20.03 +sqr,kernel,4,4,1772359,9,11.28,11.23,20.01 +sqr,floor,4,4,1211066,9,16.66,16.18,20.04 +sqr,gmp,4,4,3088546,9,6.45,6.45,19.98 +sqr,gmpz,4,4,2091585,9,9.63,9.44,20.13 +sqr,auto,16,16,263528,9,75.40,74.78,19.85 +sqr,kernel,16,16,313291,9,63.80,63.64,19.99 +sqr,floor,16,16,276048,9,72.61,72.49,20.05 +sqr,gmp,16,16,313781,9,62.16,59.42,19.47 +sqr,gmpz,16,16,304736,9,66.30,65.13,20.14 +sqr,auto,64,64,33353,9,599.95,597.77,20.01 +sqr,kernel,64,64,34421,9,580.33,579.25,19.97 +sqr,floor,64,64,33446,9,598.13,597.07,20.11 +sqr,gmp,64,64,29578,9,674.64,670.17,19.95 +sqr,gmpz,64,64,29002,9,675.42,655.95,19.77 +sqr,auto,512,512,816,9,24538.40,24290.95,19.96 +sqr,kernel,512,512,821,9,24327.85,24248.02,19.97 +sqr,floor,512,512,819,9,24339.74,24296.70,19.95 +sqr,gmp,512,512,1093,9,18407.52,18087.53,20.14 +sqr,gmpz,512,512,1023,9,19647.36,19453.08,20.06 +sqr,auto,2000,2000,90,9,222767.13,221259.72,20.07 +sqr,kernel,2000,2000,90,9,224975.92,223084.26,20.22 +sqr,floor,2000,2000,90,9,224349.53,222912.03,20.27 +sqr,gmp,2000,2000,168,9,120515.38,118786.96,20.24 +sqr,gmpz,2000,2000,167,9,120664.43,118697.11,20.14 +divrem,auto,2,1,727400,9,27.57,27.38,20.16 +divrem,kernel,2,1,3560137,9,5.72,5.70,20.37 +divrem,floor,2,1,1517633,9,12.71,12.66,19.52 +divrem,gmp,2,1,3997303,9,5.02,4.99,20.52 +divrem,gmpz,2,1,2299811,9,8.74,8.69,20.13 +divrem,auto,8,4,280082,9,71.00,69.95,19.88 +divrem,kernel,8,4,490825,9,41.03,40.43,20.07 +divrem,floor,8,4,354076,9,55.97,55.63,19.79 +divrem,gmp,8,4,480098,9,39.74,39.32,19.10 +divrem,gmpz,8,4,469057,9,43.26,42.46,20.28 +divrem,auto,32,16,46442,9,430.66,429.87,20.01 +divrem,kernel,32,16,50766,9,396.85,393.94,20.17 +divrem,floor,32,16,48323,9,413.81,400.47,19.97 +divrem,gmp,32,16,94847,9,208.52,204.40,19.79 +divrem,gmpz,32,16,95219,9,209.97,207.07,19.95 +divrem,auto,128,64,5421,9,3704.32,3630.96,20.02 +divrem,kernel,128,64,5583,9,3582.25,3497.69,19.94 +divrem,floor,128,64,5494,9,3642.58,3579.09,19.97 +divrem,gmp,128,64,11262,9,1801.10,1777.99,20.42 +divrem,gmpz,128,64,11161,9,1789.32,1776.73,19.97 +divrem,auto,512,256,673,9,29719.42,29478.33,19.99 +divrem,kernel,512,256,674,9,29638.97,29207.72,20.12 +divrem,floor,512,256,673,9,29433.57,29095.78,19.79 +divrem,gmp,512,256,1223,9,16351.49,16304.82,20.00 +divrem,gmpz,512,256,1225,9,16378.64,16272.89,20.05 +divrem,auto,2000,1000,87,9,232266.76,231345.78,20.22 +divrem,kernel,2000,1000,87,9,231319.92,230353.92,20.15 +divrem,floor,2000,1000,87,9,231415.23,230467.44,20.14 +divrem,gmp,2000,1000,148,9,135441.44,134942.28,20.05 +divrem,gmpz,2000,1000,150,9,134865.83,134107.22,20.23 +divrem,auto,4000,2000,30,9,685788.87,683083.33,20.58 +divrem,kernel,4000,2000,30,9,684544.43,680877.77,20.54 +divrem,floor,4000,2000,29,9,686102.03,682168.10,19.92 +divrem,gmp,4000,2000,59,9,342356.64,341458.32,20.20 +divrem,gmpz,4000,2000,59,9,342310.03,341214.68,20.21 +divrem,auto,2000,100,214,9,93940.81,93675.23,20.13 +divrem,kernel,2000,100,214,9,93559.58,93307.05,20.02 +divrem,floor,2000,100,214,9,93671.93,93371.50,20.05 +divrem,gmp,2000,100,289,9,69368.65,68953.43,20.06 +divrem,gmpz,2000,100,289,9,69379.03,68893.45,20.04 +divrem,auto,65536,1,87,9,226373.09,223908.53,19.79 +divrem,kernel,65536,1,89,9,229074.44,223875.47,20.29 +divrem,floor,65536,1,84,9,229676.10,224643.36,19.23 +divrem,gmp,65536,1,118,9,168897.60,164526.83,19.91 +divrem,gmpz,65536,1,116,9,170277.30,166681.03,19.69 +fromchars,auto,4,10,218308,9,91.66,91.15,20.01 +fromchars,kernel,4,10,613681,9,32.82,31.81,20.08 +fromchars,gmp,4,10,660655,9,30.97,30.05,20.39 +fromchars,gmpz,4,10,263756,9,77.26,75.59,20.26 +fromchars,auto,16,10,50230,9,396.21,393.01,20.02 +fromchars,kernel,16,10,103728,9,189.87,187.62,19.72 +fromchars,gmp,16,10,137000,9,142.62,141.65,19.61 +fromchars,gmpz,16,10,63014,9,318.60,313.88,20.08 +fromchars,auto,64,10,9182,9,2175.27,2146.95,19.93 +fromchars,kernel,64,10,10793,9,1856.60,1795.56,19.96 +fromchars,gmp,64,10,20607,9,961.06,957.23,19.86 +fromchars,gmpz,64,10,12589,9,1602.34,1591.18,20.15 +fromchars,auto,256,10,1452,9,13786.33,13723.20,20.03 +fromchars,kernel,256,10,1733,9,11531.86,11469.59,19.98 +fromchars,gmp,256,10,2540,9,7963.37,7889.80,20.20 +fromchars,gmpz,256,10,1857,9,10816.08,10591.81,20.02 +fromchars,auto,2000,10,67,9,299946.51,299512.43,20.12 +fromchars,kernel,2000,10,71,9,282765.85,281528.17,20.09 +fromchars,gmp,2000,10,107,9,184035.44,183250.00,19.87 +fromchars,gmpz,2000,10,99,9,203202.44,201667.52,20.11 diff --git a/tests/beman/big_int/perf/item1/mac_new64_seed2a.csv b/tests/beman/big_int/perf/item1/mac_new64_seed2a.csv new file mode 100644 index 00000000..70eeebf3 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_new64_seed2a.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T17:03:23Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2768273,9,7.62,7.21,21.00 +add,inplace,1,1,2770409,9,3.60,3.60,20.00 +add,kernel,1,1,17444399,9,1.14,1.14,19.93 +add,floor,1,1,2122517,9,9.24,9.17,19.67 +add,gmp,1,1,13403291,9,1.49,1.49,20.05 +add,gmpz,1,1,6698076,9,2.98,2.97,19.95 +add,auto,2,2,1284735,9,14.99,14.51,19.26 +add,inplace,2,2,2602083,9,3.89,3.85,20.20 +add,kernel,2,2,14393581,9,1.39,1.39,20.02 +add,floor,2,2,2119273,9,9.44,9.41,20.14 +add,gmp,2,2,10120754,9,1.98,1.97,20.07 +add,gmpz,2,2,5560106,9,3.36,3.29,19.99 +add,auto,4,4,1395905,9,14.38,14.09,20.00 +add,inplace,4,4,2763499,9,3.36,3.34,19.01 +add,kernel,4,4,10330823,9,1.93,1.93,19.97 +add,floor,4,4,1911722,9,10.43,10.41,19.97 +add,gmp,4,4,11497660,9,1.74,1.73,19.97 +add,gmpz,4,4,3440835,9,6.08,5.92,20.81 +add,auto,8,8,1335463,9,14.61,14.53,19.71 +add,inplace,8,8,2520701,9,4.01,3.86,20.25 +add,kernel,8,8,5718084,9,3.47,3.43,19.79 +add,floor,8,8,1649891,9,12.04,11.91,19.89 +add,gmp,8,8,8874994,9,2.23,2.23,19.86 +add,gmpz,8,8,4470032,9,4.47,4.30,20.05 +add,auto,16,16,1183579,9,17.12,17.06,20.26 +add,inplace,16,16,1754978,9,5.59,5.59,19.68 +add,kernel,16,16,2649755,9,7.57,7.53,20.04 +add,floor,16,16,1460637,9,13.50,13.46,19.77 +add,gmp,16,16,6421474,9,3.23,3.22,20.74 +add,gmpz,16,16,4982947,9,4.47,4.46,22.36 +add,auto,64,64,488864,9,41.37,37.95,20.00 +add,inplace,64,64,502310,9,19.99,19.85,20.05 +add,kernel,64,64,412826,9,48.92,47.74,20.09 +add,floor,64,64,328297,9,60.87,60.01,19.94 +add,gmp,64,64,1803314,9,11.10,11.01,20.04 +add,gmpz,64,64,1546345,9,13.01,12.82,20.09 +add,auto,256,256,183301,9,110.00,108.07,20.26 +add,inplace,256,256,98503,9,100.76,99.02,19.80 +add,kernel,256,256,87160,9,232.18,225.24,20.20 +add,floor,256,256,81577,9,246.00,241.93,20.03 +add,gmp,256,256,352686,9,57.02,56.30,20.08 +add,gmpz,256,256,329026,9,57.84,56.97,19.03 +add,auto,1024,1024,44333,9,449.40,446.23,19.97 +add,inplace,1024,1024,22965,9,435.27,434.27,19.99 +add,kernel,1024,1024,20431,9,973.31,969.80,20.14 +add,floor,1024,1024,19934,9,990.36,961.05,19.62 +add,gmp,1024,1024,79961,9,250.27,244.11,19.93 +add,gmpz,1024,1024,79658,9,253.27,250.67,20.16 +add,auto,2000,2000,22500,9,901.69,868.20,20.17 +add,inplace,2000,2000,11736,9,847.58,834.94,19.90 +add,kernel,2000,2000,10424,9,1914.56,1851.60,19.87 +add,floor,2000,2000,9934,9,1932.17,1878.93,19.10 +add,gmp,2000,2000,40525,9,495.45,488.38,20.07 +add,gmpz,2000,2000,40284,9,497.03,490.00,20.02 +add,auto,1024,1,192265,9,110.54,97.05,20.21 +add,inplace,1024,1,3360114,9,2.98,2.96,20.01 +add,kernel,1024,1,27053,9,736.66,713.00,19.76 +add,floor,1024,1,26488,9,754.39,736.91,19.90 +add,gmp,1024,1,75863,9,263.32,256.13,19.93 +add,gmpz,1024,1,76479,9,264.76,261.42,20.24 +sub,auto,1,1,2490581,9,8.08,7.93,20.15 +sub,inplace,1,1,2978828,9,3.57,3.33,20.98 +sub,kernel,1,1,18936393,9,1.06,1.04,20.01 +sub,floor,1,1,11482970,9,1.75,1.74,20.22 +sub,gmp,1,1,13301781,9,1.49,1.49,19.84 +sub,gmpz,1,1,8053386,9,2.48,2.48,20.00 +sub,auto,2,2,1355991,9,14.77,14.42,20.04 +sub,inplace,2,2,2873550,9,3.48,3.47,20.04 +sub,kernel,2,2,14130837,9,1.43,1.41,20.17 +sub,floor,2,2,2111263,9,9.45,9.41,20.27 +sub,gmp,2,2,11436561,9,1.84,1.74,19.63 +sub,gmpz,2,2,7315491,9,2.74,2.73,20.61 +sub,auto,4,4,1378058,9,17.13,14.56,20.03 +sub,inplace,4,4,2756491,9,3.63,3.60,20.21 +sub,kernel,4,4,10291854,9,1.94,1.93,19.98 +sub,floor,4,4,1921661,9,10.42,10.40,20.05 +sub,gmp,4,4,11040786,9,1.74,1.73,19.22 +sub,gmpz,4,4,7324301,9,2.73,2.73,19.99 +sub,auto,8,8,1281943,9,15.59,15.41,20.03 +sub,inplace,8,8,2440724,9,4.08,3.97,19.91 +sub,kernel,8,8,5765640,9,3.50,3.48,20.23 +sub,floor,8,8,1630349,9,11.66,11.39,19.10 +sub,gmp,8,8,8935348,9,2.23,2.23,19.95 +sub,gmpz,8,8,6189907,9,3.23,3.22,20.03 +sub,auto,16,16,1145465,9,17.48,17.42,20.05 +sub,inplace,16,16,1890958,9,5.23,5.21,19.78 +sub,kernel,16,16,2596908,9,7.68,7.66,19.96 +sub,floor,16,16,1340603,9,15.54,14.92,20.62 +sub,gmp,16,16,6728999,9,3.12,2.96,20.84 +sub,gmpz,16,16,4585450,9,4.36,4.34,20.02 +sub,auto,64,64,522650,9,35.87,35.73,19.10 +sub,inplace,64,64,506057,9,19.84,19.70,20.09 +sub,kernel,64,64,406855,9,49.48,47.91,20.05 +sub,floor,64,64,332431,9,59.66,58.56,19.79 +sub,gmp,64,64,1778911,9,11.20,11.12,19.93 +sub,gmpz,64,64,1449748,9,13.91,13.66,20.12 +sub,auto,256,256,178515,9,110.29,109.20,19.65 +sub,inplace,256,256,99050,9,100.68,98.33,19.87 +sub,kernel,256,256,86008,9,235.05,226.45,20.15 +sub,floor,256,256,81654,9,245.74,242.83,20.09 +sub,gmp,256,256,351083,9,56.88,55.63,19.92 +sub,gmpz,256,256,345694,9,57.86,57.19,19.98 +sub,auto,1024,1024,33410,9,589.17,585.42,19.79 +sub,inplace,1024,1024,23681,9,435.73,430.24,20.60 +sub,kernel,1024,1024,20403,9,978.81,940.49,19.86 +sub,floor,1024,1024,20290,9,978.91,953.22,19.85 +sub,gmp,1024,1024,80285,9,251.41,248.58,20.15 +sub,gmpz,1024,1024,78822,9,253.47,249.98,19.94 +sub,auto,2000,2000,22696,9,868.91,860.56,19.69 +sub,inplace,2000,2000,11475,9,848.60,833.40,19.55 +sub,kernel,2000,2000,10337,9,1925.83,1872.82,19.80 +sub,floor,2000,2000,9872,9,1909.26,1864.35,18.93 +sub,gmp,2000,2000,40349,9,494.05,486.96,19.93 +sub,gmpz,2000,2000,40277,9,497.34,485.20,19.93 +sub,auto,1024,1,189082,9,116.96,97.61,21.76 +sub,inplace,1024,1,3357413,9,2.98,2.97,20.02 +sub,kernel,1024,1,27189,9,725.70,717.80,19.72 +sub,floor,1024,1,26619,9,756.71,727.77,20.21 +sub,gmp,1024,1,75202,9,261.66,255.05,19.61 +sub,gmpz,1024,1,75984,9,264.16,258.36,20.02 +shl,auto,1,13,1655185,9,13.70,12.14,21.78 +shl,inplace,1,13,4019869,9,2.48,2.48,20.08 +shl,kernel,1,13,8921400,9,2.23,2.22,19.92 +shl,kernelip,1,13,8936527,9,1.77,1.13,27.79 +shl,floor,1,13,1819455,9,11.15,10.91,20.57 +shl,gmp,1,13,16147122,9,1.24,1.24,20.01 +shl,gmpz,1,13,10086651,9,1.98,1.98,20.01 +shl,auto,4,13,1554056,9,12.85,12.80,20.04 +shl,inplace,4,13,2597077,9,3.84,3.76,20.00 +shl,kernel,4,13,5251533,9,3.73,3.72,19.63 +shl,kernelip,4,13,2985601,9,3.38,3.32,20.11 +shl,floor,4,13,1522217,9,14.10,13.12,21.17 +shl,gmp,4,13,10071850,9,1.99,1.98,20.07 +shl,gmpz,4,13,7267344,9,2.73,2.72,19.86 +shl,auto,16,13,1221423,9,16.03,15.92,19.71 +shl,inplace,16,13,1891439,9,5.28,5.26,19.98 +shl,kernel,16,13,4841082,9,4.14,4.12,20.05 +shl,kernelip,16,13,1344486,9,6.81,6.80,18.33 +shl,floor,16,13,1591164,9,12.40,11.99,19.53 +shl,gmp,16,13,5758597,9,3.48,3.47,20.03 +shl,gmpz,16,13,3776564,9,5.15,5.13,19.83 +shl,auto,256,13,481546,9,40.93,40.64,19.85 +shl,inplace,256,13,336681,9,29.78,29.72,20.06 +shl,kernel,256,13,407955,9,49.50,49.08,20.19 +shl,kernelip,256,13,205260,9,48.68,48.44,19.98 +shl,floor,256,13,342378,9,57.35,57.26,19.65 +shl,gmp,256,13,539132,9,36.87,36.82,19.88 +shl,gmpz,256,13,528255,9,37.83,37.79,20.00 +shl,auto,2000,13,73917,9,268.45,249.18,19.27 +shl,inplace,2000,13,51139,9,197.00,195.83,20.18 +shl,kernel,2000,13,52013,9,383.52,381.99,19.95 +shl,kernelip,2000,13,26554,9,376.35,374.56,19.97 +shl,floor,2000,13,49208,9,404.14,400.48,19.86 +shl,gmp,2000,13,17297,9,1974.21,1148.86,31.91 +shl,gmpz,2000,13,11477,9,2880.10,2026.69,25.53 +shl,auto,2000,77,68554,9,493.41,358.72,28.35 +shl,inplace,2000,77,43898,9,228.39,227.23,20.07 +shl,kernel,2000,77,37165,9,529.27,525.21,19.83 +shl,kernelip,2000,77,19533,9,519.86,509.22,20.26 +shl,floor,2000,77,36809,9,539.79,535.03,19.86 +shl,gmp,2000,77,69393,9,287.96,286.74,20.03 +shl,gmpz,2000,77,68527,9,289.51,287.10,19.94 +shr,auto,1,13,3091796,9,6.69,5.95,20.13 +shr,inplace,1,13,3023972,9,3.32,3.29,20.06 +shr,kernel,1,13,8963189,9,2.24,2.22,20.10 +shr,floor,1,13,8041193,9,2.48,2.43,19.98 +shr,gmp,1,13,20000001,9,0.99,0.99,19.86 +shr,gmpz,1,13,10066737,9,1.99,1.98,20.02 +shr,auto,4,13,1436013,9,13.92,13.75,20.02 +shr,inplace,4,13,2814111,9,3.61,3.55,20.80 +shr,kernel,4,13,5376832,9,3.72,3.70,20.00 +shr,floor,4,13,1746326,9,11.97,11.90,21.17 +shr,gmp,4,13,11414064,9,1.74,1.73,19.87 +shr,gmpz,4,13,7251802,9,2.75,2.72,20.06 +shr,auto,16,13,1105719,9,18.15,18.08,20.21 +shr,inplace,16,13,1929327,9,5.31,5.25,20.45 +shr,kernel,16,13,4824697,9,4.15,4.15,20.05 +shr,floor,16,13,1580116,9,13.21,12.98,20.89 +shr,gmp,16,13,6201215,9,3.23,3.22,20.00 +shr,gmpz,16,13,4732086,9,4.23,4.22,20.04 +shr,auto,256,13,476495,9,42.92,41.96,20.35 +shr,inplace,256,13,328705,9,30.34,30.07,19.97 +shr,kernel,256,13,300759,9,66.38,66.05,19.98 +shr,floor,256,13,266321,9,75.50,74.86,20.14 +shr,gmp,256,13,544219,9,36.70,36.63,20.01 +shr,gmpz,256,13,522726,9,38.09,37.94,19.90 +shr,auto,2000,13,75546,9,276.54,246.90,20.72 +shr,inplace,2000,13,50934,9,196.48,195.68,19.99 +shr,kernel,2000,13,39122,9,510.85,506.59,19.98 +shr,floor,2000,13,37860,9,525.84,521.62,19.97 +shr,gmp,2000,13,66748,9,326.05,291.30,20.81 +shr,gmpz,2000,13,70055,9,298.36,286.09,20.52 +shr,auto,2000,77,74824,9,281.22,242.71,20.81 +shr,inplace,2000,77,50716,9,196.03,195.65,19.88 +shr,kernel,2000,77,38691,9,516.73,512.20,20.02 +shr,floor,2000,77,38205,9,526.15,523.84,20.11 +shr,gmp,2000,77,67998,9,290.70,289.21,19.95 +shr,gmpz,2000,77,67609,9,288.53,286.55,19.53 +mul,auto,1,1,1407408,9,14.13,13.95,19.99 +mul,gmp,1,1,5369867,9,3.72,3.71,20.00 +mul,gmpz,1,1,7292019,9,2.73,2.73,19.95 +mul,auto,2,2,1076653,9,19.09,18.37,20.38 +mul,kernel,2,2,3103358,9,6.39,6.24,19.80 +mul,floor,2,2,1390330,9,14.41,14.35,20.08 +mul,gmp,2,2,4462026,9,4.71,4.67,21.01 +mul,gmpz,2,2,3073713,9,6.86,6.51,20.92 +mul,auto,3,3,1060335,9,19.53,18.66,20.68 +mul,kernel,3,3,2472180,9,8.19,8.17,20.28 +mul,floor,3,3,1169458,9,16.66,16.30,19.65 +mul,gmp,3,3,3033992,9,6.42,6.34,19.47 +mul,gmpz,3,3,2595203,9,9.30,7.69,24.11 +mul,auto,4,4,937477,9,21.62,21.33,20.22 +mul,kernel,4,4,1897395,9,11.39,10.59,21.28 +mul,floor,4,4,1171622,9,16.92,16.60,19.75 +mul,gmp,4,4,2213307,9,8.95,8.92,19.80 +mul,gmpz,4,4,2049825,9,10.17,9.71,20.61 +mul,auto,6,6,739564,9,27.35,27.13,20.23 +mul,kernel,6,6,1026611,9,18.69,18.50,19.36 +mul,floor,6,6,854876,9,23.56,23.28,20.07 +mul,gmp,6,6,1397073,9,14.38,14.25,20.26 +mul,gmpz,6,6,1083309,9,17.73,17.44,19.48 +mul,auto,8,8,572226,9,35.74,35.32,20.54 +mul,kernel,8,8,872034,9,22.95,22.92,20.02 +mul,floor,8,8,659881,9,30.36,30.16,20.06 +mul,gmp,8,8,886819,9,23.98,22.62,21.56 +mul,gmpz,8,8,817316,9,24.96,24.46,20.27 +mul,auto,12,12,368972,9,54.06,53.89,19.95 +mul,kernel,12,12,490562,9,40.89,40.77,20.09 +mul,floor,12,12,379486,9,49.64,49.45,18.86 +mul,gmp,12,12,452676,9,44.32,44.08,20.07 +mul,gmpz,12,12,427372,9,46.66,46.57,19.95 +mul,auto,16,16,239028,9,82.55,82.35,19.77 +mul,kernel,16,16,287645,9,69.54,69.28,20.04 +mul,floor,16,16,253331,9,78.65,78.19,19.94 +mul,gmp,16,16,259168,9,76.63,76.06,19.93 +mul,gmpz,16,16,257387,9,77.87,77.69,20.04 +mul,auto,32,32,71495,9,281.26,279.27,20.14 +mul,kernel,32,32,77421,9,258.38,257.53,20.06 +mul,floor,32,32,71960,9,279.10,277.37,20.16 +mul,gmp,32,32,75269,9,259.80,257.78,19.67 +mul,gmpz,32,32,76193,9,261.07,260.40,19.90 +mul,auto,64,64,19910,9,1009.02,1005.32,20.10 +mul,kernel,64,64,20333,9,985.54,982.12,20.15 +mul,floor,64,64,19885,9,1009.79,1008.10,20.08 +mul,gmp,64,64,25785,9,772.03,770.59,19.94 +mul,gmpz,64,64,25678,9,779.80,775.89,20.03 +mul,auto,128,128,5597,9,3581.11,3563.94,20.06 +mul,kernel,128,128,5580,9,3585.48,3574.63,20.00 +mul,floor,128,128,5547,9,3592.98,3588.07,19.95 +mul,gmp,128,128,7519,9,2661.44,2639.12,20.03 +mul,gmpz,128,128,6559,9,3020.71,3014.01,19.84 +mul,auto,256,256,1706,9,11866.31,11738.57,20.17 +mul,kernel,256,256,1684,9,11839.44,11823.68,19.96 +mul,floor,256,256,1703,9,11776.16,11745.65,20.06 +mul,gmp,256,256,2552,9,7855.29,7818.70,20.08 +mul,gmpz,256,256,2552,9,7901.17,7814.39,20.14 +mul,auto,512,512,544,9,36878.98,36803.62,20.07 +mul,kernel,512,512,542,9,36916.05,36836.72,20.01 +mul,floor,512,512,534,9,36984.32,36801.81,19.77 +mul,gmp,512,512,1053,9,18986.86,18941.28,20.02 +mul,gmpz,512,512,1055,9,18985.86,18909.44,20.02 +mul,auto,1000,1000,188,9,106607.05,106129.65,20.04 +mul,kernel,1000,1000,188,9,107060.06,106705.01,20.16 +mul,floor,1000,1000,189,9,106938.27,106621.92,20.29 +mul,gmp,1000,1000,362,9,55258.52,55072.06,20.00 +mul,gmpz,1000,1000,361,9,55311.17,55002.19,19.95 +mul,auto,2000,2000,66,9,304306.82,301835.86,20.09 +mul,kernel,2000,2000,67,9,301794.15,299247.52,20.22 +mul,floor,2000,2000,67,9,301988.19,299912.93,20.21 +mul,gmp,2000,2000,135,9,149025.31,148431.79,20.13 +mul,gmpz,2000,2000,135,9,148840.43,148031.18,20.11 +mul,auto,2000,100,434,9,46273.52,46104.94,20.09 +mul,kernel,2000,100,428,9,46739.10,46381.91,20.05 +mul,floor,2000,100,428,9,46653.62,46516.06,19.97 +mul,gmp,2000,100,570,9,35055.99,34994.37,19.99 +mul,gmpz,2000,100,574,9,34769.09,34606.93,19.97 +sqr,auto,4,4,947479,9,21.59,21.14,20.43 +sqr,kernel,4,4,1779823,9,11.25,11.06,20.08 +sqr,floor,4,4,1242960,9,16.17,15.88,20.10 +sqr,gmp,4,4,2876214,9,6.95,6.93,20.00 +sqr,gmpz,4,4,2104375,9,9.24,9.18,19.81 +sqr,auto,16,16,266438,9,75.29,74.75,20.09 +sqr,kernel,16,16,313862,9,63.81,63.50,20.12 +sqr,floor,16,16,275431,9,72.46,72.27,19.94 +sqr,gmp,16,16,315105,9,63.49,62.97,19.99 +sqr,gmpz,16,16,304350,9,65.81,65.54,20.02 +sqr,auto,64,64,33378,9,599.95,597.27,20.04 +sqr,kernel,64,64,34330,9,581.00,580.09,20.34 +sqr,floor,64,64,33382,9,598.60,596.78,20.00 +sqr,gmp,64,64,29876,9,672.02,668.41,20.11 +sqr,gmpz,64,64,29854,9,668.25,666.37,19.95 +sqr,auto,512,512,819,9,24376.83,24265.97,19.98 +sqr,kernel,512,512,813,9,24342.51,24279.62,19.88 +sqr,floor,512,512,818,9,24410.56,24374.24,20.00 +sqr,gmp,512,512,1084,9,18232.93,18098.06,19.77 +sqr,gmpz,512,512,1018,9,19699.74,19477.69,20.06 +sqr,auto,2000,2000,90,9,223354.17,221431.48,20.09 +sqr,kernel,2000,2000,90,9,222859.72,221710.19,20.07 +sqr,floor,2000,2000,90,9,223178.70,222555.09,20.12 +sqr,gmp,2000,2000,166,9,120304.22,119692.52,19.98 +sqr,gmpz,2000,2000,166,9,121046.19,119083.84,20.05 +divrem,auto,2,1,937064,9,21.33,21.26,19.99 +divrem,kernel,2,1,3184012,9,6.33,6.28,20.15 +divrem,floor,2,1,1457138,9,13.77,13.65,20.16 +divrem,gmp,2,1,3983960,9,5.03,4.92,20.14 +divrem,gmpz,2,1,2297181,9,8.67,8.64,19.97 +divrem,auto,8,4,247524,9,80.15,79.30,19.81 +divrem,kernel,8,4,393829,9,52.56,51.73,20.67 +divrem,floor,8,4,306345,9,65.31,64.12,19.98 +divrem,gmp,8,4,481908,9,41.79,41.18,20.11 +divrem,gmpz,8,4,450496,9,44.38,44.10,20.07 +divrem,auto,32,16,45959,9,433.90,426.76,19.90 +divrem,kernel,32,16,51410,9,390.24,381.72,20.33 +divrem,floor,32,16,48816,9,410.63,398.99,19.93 +divrem,gmp,32,16,96481,9,207.56,203.27,20.02 +divrem,gmpz,32,16,94457,9,209.55,207.92,19.84 +divrem,auto,128,64,5417,9,3676.71,3565.62,19.81 +divrem,kernel,128,64,5544,9,3606.32,3514.62,19.94 +divrem,floor,128,64,5531,9,3644.77,3579.71,20.16 +divrem,gmp,128,64,11334,9,1765.41,1746.26,19.99 +divrem,gmpz,128,64,11247,9,1764.12,1749.68,19.82 +divrem,auto,512,256,714,9,27391.86,27191.06,19.72 +divrem,kernel,512,256,735,9,27249.60,27108.45,20.02 +divrem,floor,512,256,739,9,27323.47,27092.75,20.20 +divrem,gmp,512,256,1212,9,16494.71,16425.30,20.11 +divrem,gmpz,512,256,1216,9,16478.10,16360.99,20.05 +divrem,auto,2000,1000,86,9,232616.77,232030.05,20.04 +divrem,kernel,2000,1000,86,9,232637.10,231350.77,20.00 +divrem,floor,2000,1000,87,9,231961.21,230639.85,20.19 +divrem,gmp,2000,1000,148,9,135758.16,135348.53,20.11 +divrem,gmpz,2000,1000,148,9,134683.84,134328.83,19.94 +divrem,auto,4000,2000,29,9,689918.10,686344.83,20.01 +divrem,kernel,4000,2000,29,9,690579.03,687475.55,20.02 +divrem,floor,4000,2000,30,9,691500.00,687200.00,20.78 +divrem,gmp,4000,2000,59,9,344500.00,343061.44,20.32 +divrem,gmpz,4000,2000,59,9,344158.19,342874.29,20.35 +divrem,auto,2000,100,212,9,94720.72,94359.08,20.08 +divrem,kernel,2000,100,213,9,94313.57,93882.63,20.09 +divrem,floor,2000,100,213,9,94256.26,94035.21,20.09 +divrem,gmp,2000,100,287,9,68898.08,68403.17,19.77 +divrem,gmpz,2000,100,292,9,68728.88,68510.70,20.08 +divrem,auto,65536,1,88,9,227642.51,223546.40,19.98 +divrem,kernel,65536,1,89,9,230899.82,226983.15,20.94 +divrem,floor,65536,1,87,9,231778.25,223497.61,20.03 +divrem,gmp,65536,1,118,9,169521.19,165746.47,19.97 +divrem,gmpz,65536,1,118,9,169923.03,169426.91,20.04 +fromchars,auto,4,10,207717,9,91.62,91.27,19.19 +fromchars,kernel,4,10,620952,9,32.63,32.06,20.22 +fromchars,gmp,4,10,602875,9,32.16,30.98,19.26 +fromchars,gmpz,4,10,263239,9,76.60,74.61,20.09 +fromchars,auto,16,10,50005,9,399.42,388.93,19.88 +fromchars,kernel,16,10,104371,9,192.24,185.56,19.98 +fromchars,gmp,16,10,137197,9,143.77,141.93,19.77 +fromchars,gmpz,16,10,63083,9,315.85,312.51,19.93 +fromchars,auto,64,10,9139,9,2181.84,2164.65,20.17 +fromchars,kernel,64,10,10773,9,1849.61,1803.16,19.83 +fromchars,gmp,64,10,21041,9,953.21,939.41,20.20 +fromchars,gmpz,64,10,12363,9,1623.56,1597.89,19.97 +fromchars,auto,256,10,1457,9,13795.84,13695.58,20.08 +fromchars,kernel,256,10,1736,9,11508.35,11457.13,19.99 +fromchars,gmp,256,10,2535,9,7982.25,7915.30,20.23 +fromchars,gmpz,256,10,1889,9,10773.34,10556.97,20.31 +fromchars,auto,2000,10,67,9,299945.90,298603.87,20.08 +fromchars,kernel,2000,10,69,9,282167.26,281167.87,19.54 +fromchars,gmp,2000,10,109,9,184082.57,183362.39,20.07 +fromchars,gmpz,2000,10,99,9,204372.47,203406.57,20.32 diff --git a/tests/beman/big_int/perf/item1/mac_new64_seed2b.csv b/tests/beman/big_int/perf/item1/mac_new64_seed2b.csv new file mode 100644 index 00000000..a2cebf19 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_new64_seed2b.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T17:06:24Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2687755,9,7.77,7.47,20.76 +add,inplace,1,1,2880711,9,3.23,3.22,19.15 +add,kernel,1,1,17491933,9,1.14,1.14,19.99 +add,floor,1,1,2119247,9,9.42,9.40,19.99 +add,gmp,1,1,13400718,9,1.49,1.48,19.91 +add,gmpz,1,1,6727363,9,2.97,2.95,19.98 +add,auto,2,2,1313025,9,15.43,14.69,20.09 +add,inplace,2,2,2618108,9,3.84,3.84,20.32 +add,kernel,2,2,14388364,9,1.39,1.39,19.98 +add,floor,2,2,2024383,9,9.91,9.78,20.04 +add,gmp,2,2,10092735,9,1.98,1.95,19.99 +add,gmpz,2,2,6626737,9,3.36,3.00,22.28 +add,auto,4,4,1410643,9,14.27,14.18,20.20 +add,inplace,4,4,2840409,9,3.49,3.48,19.84 +add,kernel,4,4,10210739,9,1.94,1.93,19.80 +add,floor,4,4,1908854,9,10.23,10.19,19.57 +add,gmp,4,4,11528791,9,1.74,1.74,20.12 +add,gmpz,4,4,3730149,9,6.03,5.63,22.44 +add,auto,8,8,1211558,9,15.04,14.91,18.38 +add,inplace,8,8,2431768,9,4.09,3.98,19.84 +add,kernel,8,8,5748435,9,3.47,3.45,19.99 +add,floor,8,8,1677309,9,11.93,11.91,20.08 +add,gmp,8,8,8954893,9,2.23,2.23,20.42 +add,gmpz,8,8,4534675,9,4.53,4.46,20.71 +add,auto,16,16,1193821,9,16.72,16.43,20.12 +add,inplace,16,16,1768704,9,5.59,5.58,19.92 +add,kernel,16,16,2649614,9,7.56,7.44,20.00 +add,floor,16,16,1436134,9,13.80,13.66,19.93 +add,gmp,16,16,6892355,9,2.91,2.88,20.14 +add,gmpz,16,16,5004317,9,4.05,4.03,20.97 +add,auto,64,64,507360,9,38.00,37.80,19.48 +add,inplace,64,64,502728,9,19.90,19.86,20.03 +add,kernel,64,64,405304,9,48.76,47.89,19.74 +add,floor,64,64,331613,9,60.50,60.31,20.09 +add,gmp,64,64,1792945,9,11.07,11.01,19.87 +add,gmpz,64,64,1548041,9,12.95,12.90,20.07 +add,auto,256,256,182791,9,109.17,106.30,19.91 +add,inplace,256,256,99686,9,101.11,98.69,20.16 +add,kernel,256,256,85201,9,235.28,229.20,20.08 +add,floor,256,256,80850,9,243.00,237.93,19.68 +add,gmp,256,256,351433,9,56.93,56.07,19.98 +add,gmpz,256,256,345397,9,57.88,56.91,19.94 +add,auto,1024,1024,44468,9,445.62,435.39,19.73 +add,inplace,1024,1024,23782,9,431.87,425.36,20.70 +add,kernel,1024,1024,20619,9,973.81,968.31,20.12 +add,floor,1024,1024,19853,9,994.13,984.07,20.20 +add,gmp,1024,1024,79856,9,250.37,245.62,19.92 +add,gmpz,1024,1024,79007,9,253.58,250.40,20.04 +add,auto,2000,2000,22586,9,889.54,871.00,20.11 +add,inplace,2000,2000,11660,9,842.77,819.42,19.58 +add,kernel,2000,2000,10470,9,1911.25,1868.19,19.98 +add,floor,2000,2000,10388,9,1959.48,1937.51,20.54 +add,gmp,2000,2000,40850,9,495.08,494.29,20.27 +add,gmpz,2000,2000,40269,9,496.12,487.48,19.94 +add,auto,1024,1,220168,9,104.39,89.20,21.19 +add,inplace,1024,1,3362393,9,2.98,2.97,20.25 +add,kernel,1024,1,26899,9,740.25,717.97,19.78 +add,floor,1024,1,26527,9,757.19,734.53,20.05 +add,gmp,1024,1,75929,9,263.60,258.10,20.05 +add,gmpz,1024,1,74174,9,264.73,258.99,19.60 +sub,auto,1,1,2601029,9,7.70,7.44,19.91 +sub,inplace,1,1,3087923,9,3.23,3.22,19.94 +sub,kernel,1,1,19097470,9,1.05,1.04,19.97 +sub,floor,1,1,11487573,9,1.74,1.73,20.02 +sub,gmp,1,1,13469510,9,1.49,1.48,20.11 +sub,gmpz,1,1,7987268,9,2.50,2.49,20.13 +sub,auto,2,2,1222480,9,16.85,16.55,20.56 +sub,inplace,2,2,2876033,9,3.48,3.47,20.05 +sub,kernel,2,2,14117096,9,1.42,1.41,19.98 +sub,floor,2,2,2120369,9,9.67,9.49,20.41 +sub,gmp,2,2,11523026,9,1.83,1.73,19.83 +sub,gmpz,2,2,7340334,9,2.75,2.73,20.79 +sub,auto,4,4,1404540,9,14.25,14.19,20.09 +sub,inplace,4,4,2879275,9,3.48,3.34,19.74 +sub,kernel,4,4,10296931,9,1.95,1.94,20.03 +sub,floor,4,4,1999376,9,10.01,9.89,20.04 +sub,gmp,4,4,11464857,9,1.74,1.73,19.93 +sub,gmpz,4,4,7318073,9,2.74,2.73,20.03 +sub,auto,8,8,1270315,9,15.59,15.42,19.80 +sub,inplace,8,8,2435001,9,4.11,4.08,20.23 +sub,kernel,8,8,5670085,9,3.49,3.48,19.80 +sub,floor,8,8,1754147,9,11.36,11.17,19.89 +sub,gmp,8,8,8938296,9,2.23,2.23,19.96 +sub,gmpz,8,8,6191624,9,3.23,3.22,20.00 +sub,auto,16,16,1163761,9,17.26,17.15,20.10 +sub,inplace,16,16,1898918,9,5.24,5.22,20.21 +sub,kernel,16,16,2599476,9,7.70,7.65,20.01 +sub,floor,16,16,1284352,9,14.89,14.65,19.18 +sub,gmp,16,16,6202599,9,3.23,3.22,20.06 +sub,gmpz,16,16,4739660,9,4.23,4.22,20.05 +sub,auto,64,64,559971,9,35.98,35.87,20.11 +sub,inplace,64,64,508498,9,19.86,19.81,20.33 +sub,kernel,64,64,407453,9,49.33,47.96,20.01 +sub,floor,64,64,329202,9,60.24,59.58,19.86 +sub,gmp,64,64,1758181,9,11.34,11.18,19.89 +sub,gmpz,64,64,1484116,9,13.39,13.31,19.87 +sub,auto,256,256,181517,9,109.96,108.16,19.91 +sub,inplace,256,256,98978,9,101.05,98.40,19.95 +sub,kernel,256,256,86371,9,236.45,229.21,20.35 +sub,floor,256,256,82107,9,245.45,239.69,20.05 +sub,gmp,256,256,334008,9,57.01,56.25,19.03 +sub,gmpz,256,256,346076,9,57.89,57.06,20.01 +sub,auto,1024,1024,44755,9,449.90,444.62,20.14 +sub,inplace,1024,1024,23279,9,434.96,432.74,20.25 +sub,kernel,1024,1024,20474,9,966.40,955.68,19.85 +sub,floor,1024,1024,20264,9,983.61,955.41,20.07 +sub,gmp,1024,1024,78659,9,251.64,247.60,19.74 +sub,gmpz,1024,1024,78833,9,254.13,253.25,20.08 +sub,auto,2000,2000,22763,9,881.65,852.94,20.00 +sub,inplace,2000,2000,11859,9,845.87,833.26,20.01 +sub,kernel,2000,2000,10477,9,1912.20,1888.95,20.03 +sub,floor,2000,2000,10346,9,1927.84,1891.81,19.94 +sub,gmp,2000,2000,40698,9,494.13,491.36,20.12 +sub,gmpz,2000,2000,39939,9,497.44,488.62,19.86 +sub,auto,1024,1,198059,9,104.81,95.66,21.22 +sub,inplace,1024,1,3356391,9,2.98,2.97,20.02 +sub,kernel,1024,1,27124,9,729.49,708.55,19.72 +sub,floor,1024,1,25756,9,759.08,740.15,19.61 +sub,gmp,1024,1,75151,9,262.99,259.53,19.70 +sub,gmpz,1024,1,76206,9,264.44,259.20,20.07 +shl,auto,1,13,1635713,9,12.19,11.92,19.74 +shl,inplace,1,13,3922954,9,2.49,2.48,19.63 +shl,kernel,1,13,8932683,9,2.23,2.23,19.98 +shl,kernelip,1,13,5645756,9,1.78,1.77,20.04 +shl,floor,1,13,1833187,9,11.05,10.95,20.46 +shl,gmp,1,13,16191987,9,1.24,1.24,20.13 +shl,gmpz,1,13,10046006,9,1.98,1.98,19.94 +shl,auto,4,13,1541315,9,13.02,12.95,20.29 +shl,inplace,4,13,2604131,9,3.88,3.80,20.31 +shl,kernel,4,13,5375912,9,3.73,3.71,20.07 +shl,kernelip,4,13,2953153,9,3.38,3.30,19.88 +shl,floor,4,13,1593318,9,12.66,12.45,20.29 +shl,gmp,4,13,10045106,9,1.98,1.97,19.93 +shl,gmpz,4,13,7281941,9,2.73,2.72,19.90 +shl,auto,16,13,1318857,9,16.34,15.22,21.46 +shl,inplace,16,13,1865858,9,5.30,5.28,19.80 +shl,kernel,16,13,4825445,9,4.14,4.12,19.97 +shl,kernelip,16,13,1376656,9,6.79,6.73,18.69 +shl,floor,16,13,1638646,9,11.92,11.77,19.60 +shl,gmp,16,13,5756333,9,3.47,3.46,20.01 +shl,gmpz,16,13,3894938,9,5.14,5.07,20.10 +shl,auto,256,13,484710,9,41.38,41.19,20.14 +shl,inplace,256,13,336295,9,29.76,29.72,20.05 +shl,kernel,256,13,407492,9,49.10,49.02,20.02 +shl,kernelip,256,13,205579,9,48.67,48.50,20.01 +shl,floor,256,13,348528,9,57.44,57.20,20.09 +shl,gmp,256,13,541343,9,37.07,36.87,20.08 +shl,gmpz,256,13,529570,9,37.87,37.75,20.05 +shl,auto,2000,13,85789,9,261.25,228.31,22.10 +shl,inplace,2000,13,51035,9,197.72,195.48,20.14 +shl,kernel,2000,13,51797,9,383.45,378.40,19.84 +shl,kernelip,2000,13,26587,9,376.35,375.51,20.02 +shl,floor,2000,13,49859,9,400.03,397.79,19.96 +shl,gmp,2000,13,12617,9,1753.90,1510.42,24.85 +shl,gmpz,2000,13,18492,9,1348.88,1052.99,27.21 +shl,auto,2000,77,67486,9,423.88,291.73,32.93 +shl,inplace,2000,77,43925,9,227.60,226.89,20.06 +shl,kernel,2000,77,37124,9,529.91,524.04,19.66 +shl,kernelip,2000,77,19209,9,520.43,507.96,19.96 +shl,floor,2000,77,37067,9,539.45,536.35,19.98 +shl,gmp,2000,77,69619,9,290.21,287.94,20.33 +shl,gmpz,2000,77,67539,9,289.19,286.62,19.64 +shr,auto,1,13,2980954,9,6.87,6.70,20.38 +shr,inplace,1,13,3001469,9,3.37,3.30,20.14 +shr,kernel,1,13,8936681,9,2.24,2.22,20.01 +shr,floor,1,13,7964083,9,2.48,2.44,19.84 +shr,gmp,1,13,20000001,9,0.99,0.99,19.86 +shr,gmpz,1,13,10073280,9,1.99,1.98,20.10 +shr,auto,4,13,1479936,9,13.98,13.53,20.59 +shr,inplace,4,13,2729906,9,3.60,3.58,19.98 +shr,kernel,4,13,5364861,9,3.73,3.72,20.00 +shr,floor,4,13,1754522,9,11.84,11.60,20.74 +shr,gmp,4,13,11506037,9,1.74,1.72,19.99 +shr,gmpz,4,13,7328061,9,2.73,2.72,19.99 +shr,auto,16,13,1117181,9,19.61,17.88,21.68 +shr,inplace,16,13,1922870,9,5.22,5.17,20.02 +shr,kernel,16,13,4783222,9,4.16,4.14,19.93 +shr,floor,16,13,1542990,9,12.69,12.59,19.59 +shr,gmp,16,13,6202582,9,3.23,3.22,20.03 +shr,gmpz,16,13,4726071,9,4.23,4.23,20.01 +shr,auto,256,13,468738,9,42.25,41.72,19.79 +shr,inplace,256,13,329854,9,30.34,30.28,20.02 +shr,kernel,256,13,300482,9,66.58,66.45,20.01 +shr,floor,256,13,265532,9,75.25,74.73,19.98 +shr,gmp,256,13,542437,9,36.79,36.66,20.05 +shr,gmpz,256,13,526214,9,38.10,37.95,20.07 +shr,auto,2000,13,90336,9,243.54,236.09,22.49 +shr,inplace,2000,13,50952,9,195.95,195.15,19.96 +shr,kernel,2000,13,38740,9,514.05,507.79,19.95 +shr,floor,2000,13,38103,9,523.64,516.00,19.91 +shr,gmp,2000,13,68382,9,303.16,292.15,21.23 +shr,gmpz,2000,13,67408,9,314.26,288.45,20.73 +shr,auto,2000,77,89849,9,271.65,227.59,23.15 +shr,inplace,2000,77,51017,9,195.64,195.20,19.95 +shr,kernel,2000,77,38114,9,522.75,516.48,19.92 +shr,floor,2000,77,38078,9,527.03,525.98,20.07 +shr,gmp,2000,77,69177,9,290.15,289.67,20.10 +shr,gmpz,2000,77,68365,9,301.17,291.16,20.82 +mul,auto,1,1,1427439,9,14.22,14.03,20.39 +mul,gmp,1,1,5337770,9,3.72,3.71,19.86 +mul,gmpz,1,1,7303580,9,2.74,2.73,20.11 +mul,auto,2,2,1084510,9,18.57,18.08,20.13 +mul,kernel,2,2,3241113,9,6.65,6.35,21.61 +mul,floor,2,2,1391310,9,14.39,14.36,20.14 +mul,gmp,2,2,4287710,9,4.72,4.70,20.27 +mul,gmpz,2,2,3054148,9,6.82,6.51,20.65 +mul,auto,3,3,1047043,9,19.30,19.09,20.60 +mul,kernel,3,3,2525982,9,8.19,7.93,18.62 +mul,floor,3,3,1184017,9,16.74,16.64,19.95 +mul,gmp,3,3,3296722,9,6.20,6.05,20.32 +mul,gmpz,3,3,2539118,9,7.89,7.88,20.94 +mul,auto,4,4,896603,9,21.65,21.16,19.38 +mul,kernel,4,4,1832479,9,11.10,10.94,20.32 +mul,floor,4,4,1108894,9,17.16,17.13,19.07 +mul,gmp,4,4,2194347,9,9.05,8.96,19.89 +mul,gmpz,4,4,1777112,9,10.99,10.91,19.73 +mul,auto,6,6,732153,9,27.33,27.12,20.02 +mul,kernel,6,6,1041496,9,19.13,19.09,19.95 +mul,floor,6,6,829709,9,23.93,23.83,19.86 +mul,gmp,6,6,1385079,9,14.53,14.47,20.24 +mul,gmpz,6,6,1063347,9,18.93,18.07,20.05 +mul,auto,8,8,583510,9,34.94,34.20,20.33 +mul,kernel,8,8,873607,9,22.92,22.85,20.02 +mul,floor,8,8,663153,9,30.30,30.08,20.12 +mul,gmp,8,8,882944,9,22.44,22.08,20.33 +mul,gmpz,8,8,787578,9,27.14,24.25,20.68 +mul,auto,12,12,373835,9,53.59,53.37,20.05 +mul,kernel,12,12,483180,9,41.37,41.25,20.02 +mul,floor,12,12,400677,9,49.48,49.36,19.87 +mul,gmp,12,12,451637,9,44.22,44.11,19.97 +mul,gmpz,12,12,426840,9,46.66,46.50,19.91 +mul,auto,16,16,241292,9,82.81,81.97,19.95 +mul,kernel,16,16,286824,9,69.50,69.32,19.94 +mul,floor,16,16,252580,9,78.38,77.99,19.79 +mul,gmp,16,16,263447,9,77.01,75.97,20.21 +mul,gmpz,16,16,257075,9,77.90,77.64,20.03 +mul,auto,32,32,70213,9,284.73,280.97,19.94 +mul,kernel,32,32,77253,9,261.65,257.84,20.15 +mul,floor,32,32,72081,9,278.29,277.71,20.07 +mul,gmp,32,32,77461,9,258.78,257.81,20.06 +mul,gmpz,32,32,76522,9,260.49,258.83,20.02 +mul,auto,64,64,19907,9,1009.27,1003.75,20.26 +mul,kernel,64,64,20136,9,981.98,978.48,19.77 +mul,floor,64,64,19850,9,1007.95,1005.19,20.03 +mul,gmp,64,64,25987,9,771.62,770.42,20.05 +mul,gmpz,64,64,25892,9,774.61,772.67,20.07 +mul,auto,128,128,5604,9,3573.69,3568.05,20.04 +mul,kernel,128,128,5591,9,3577.43,3571.82,20.02 +mul,floor,128,128,5555,9,3594.36,3585.04,19.97 +mul,gmp,128,128,7559,9,2657.20,2644.95,20.08 +mul,gmpz,128,128,6609,9,3015.20,2995.97,19.93 +mul,auto,256,256,1697,9,11746.12,11729.69,19.94 +mul,kernel,256,256,1705,9,11799.14,11751.93,20.13 +mul,floor,256,256,1693,9,11790.24,11746.51,19.98 +mul,gmp,256,256,1928,9,10345.09,10308.65,19.99 +mul,gmpz,256,256,2559,9,7913.78,7823.60,20.19 +mul,auto,512,512,543,9,36887.05,36773.33,20.05 +mul,kernel,512,512,543,9,36916.44,36853.98,20.06 +mul,floor,512,512,542,9,36984.39,36840.79,20.05 +mul,gmp,512,512,938,9,21363.23,21240.41,20.04 +mul,gmpz,512,512,1051,9,19009.91,18983.35,19.98 +mul,auto,1000,1000,185,9,106520.27,105944.15,19.79 +mul,kernel,1000,1000,187,9,106828.43,106718.81,19.99 +mul,floor,1000,1000,186,9,106657.48,106411.06,19.85 +mul,gmp,1000,1000,363,9,55185.95,54862.49,20.03 +mul,gmpz,1000,1000,368,9,55332.43,54986.07,20.37 +mul,auto,2000,2000,67,9,301360.07,299973.88,20.21 +mul,kernel,2000,2000,67,9,301588.94,297431.58,20.16 +mul,floor,2000,2000,67,9,301804.72,300582.09,20.22 +mul,gmp,2000,2000,136,9,148182.90,147766.54,20.16 +mul,gmpz,2000,2000,134,9,150088.62,148336.75,20.05 +mul,auto,2000,100,432,9,46250.87,46141.97,19.98 +mul,kernel,2000,100,430,9,46655.13,46426.16,20.05 +mul,floor,2000,100,430,9,46829.75,46655.23,20.16 +mul,gmp,2000,100,570,9,35157.09,35054.09,20.06 +mul,gmpz,2000,100,579,9,34665.59,34569.23,20.07 +sqr,auto,4,4,843436,9,21.65,21.35,18.70 +sqr,kernel,4,4,1785848,9,11.23,11.10,20.10 +sqr,floor,4,4,1220896,9,16.65,16.11,20.21 +sqr,gmp,4,4,2850193,9,6.96,6.93,19.83 +sqr,gmpz,4,4,2080095,9,9.68,9.42,20.07 +sqr,auto,16,16,260436,9,75.01,74.47,19.62 +sqr,kernel,16,16,313420,9,64.00,63.77,20.25 +sqr,floor,16,16,274326,9,72.47,72.10,19.88 +sqr,gmp,16,16,318786,9,61.93,60.02,19.67 +sqr,gmpz,16,16,305959,9,65.75,65.24,20.13 +sqr,auto,64,64,33306,9,600.06,599.06,20.01 +sqr,kernel,64,64,34471,9,579.77,578.54,20.00 +sqr,floor,64,64,33445,9,598.15,597.31,20.03 +sqr,gmp,64,64,29761,9,667.74,656.83,20.26 +sqr,gmpz,64,64,29575,9,669.18,656.73,19.81 +sqr,auto,512,512,820,9,24372.00,24327.24,19.99 +sqr,kernel,512,512,821,9,24370.58,24182.40,20.01 +sqr,floor,512,512,817,9,24346.85,24306.71,19.90 +sqr,gmp,512,512,1094,9,18308.84,18047.38,19.99 +sqr,gmpz,512,512,1011,9,19657.85,19354.89,19.89 +sqr,auto,2000,2000,90,9,223330.56,222770.38,20.09 +sqr,kernel,2000,2000,89,9,223778.09,222497.19,19.96 +sqr,floor,2000,2000,90,9,223148.61,221426.39,20.08 +sqr,gmp,2000,2000,168,9,120885.91,119783.48,20.37 +sqr,gmpz,2000,2000,164,9,120986.54,119567.58,19.92 +divrem,auto,2,1,956495,9,20.82,20.33,19.78 +divrem,kernel,2,1,3184559,9,6.32,6.27,20.22 +divrem,floor,2,1,1452280,9,14.01,13.78,20.33 +divrem,gmp,2,1,3985862,9,5.01,4.97,19.96 +divrem,gmpz,2,1,2298369,9,8.69,8.65,19.97 +divrem,auto,8,4,246290,9,80.49,79.10,19.76 +divrem,kernel,8,4,392715,9,52.44,51.26,20.69 +divrem,floor,8,4,301675,9,65.75,64.99,19.81 +divrem,gmp,8,4,480707,9,41.76,41.23,20.02 +divrem,gmpz,8,4,456656,9,44.25,43.37,20.18 +divrem,auto,32,16,46591,9,435.07,422.67,20.26 +divrem,kernel,32,16,50643,9,390.80,381.41,19.75 +divrem,floor,32,16,48867,9,408.98,406.84,19.97 +divrem,gmp,32,16,93999,9,208.30,200.82,19.47 +divrem,gmpz,32,16,98456,9,211.08,208.42,20.77 +divrem,auto,128,64,5312,9,3705.55,3568.32,19.65 +divrem,kernel,128,64,5523,9,3601.29,3496.08,19.76 +divrem,floor,128,64,5560,9,3619.79,3550.13,20.12 +divrem,gmp,128,64,11305,9,1766.73,1748.48,19.96 +divrem,gmpz,128,64,11263,9,1771.13,1742.27,19.93 +divrem,auto,512,256,721,9,27518.44,27179.21,19.86 +divrem,kernel,512,256,738,9,27285.68,27224.71,20.14 +divrem,floor,512,256,734,9,27300.41,27240.07,20.13 +divrem,gmp,512,256,1220,9,16545.01,16443.95,20.37 +divrem,gmpz,512,256,1203,9,16473.47,16393.81,19.80 +divrem,auto,2000,1000,87,9,232442.53,231474.14,20.22 +divrem,kernel,2000,1000,87,9,232060.34,231624.52,20.20 +divrem,floor,2000,1000,87,9,232362.54,230485.15,20.23 +divrem,gmp,2000,1000,148,9,135541.67,135036.03,20.05 +divrem,gmpz,2000,1000,150,9,134393.89,134100.27,20.15 +divrem,auto,4000,2000,29,9,690333.34,686800.28,20.03 +divrem,kernel,4000,2000,30,9,688663.90,686213.87,20.68 +divrem,floor,4000,2000,30,9,688851.40,684561.10,20.67 +divrem,gmp,4000,2000,59,9,342067.80,341432.90,20.19 +divrem,gmpz,4000,2000,58,9,342225.59,341854.88,19.87 +divrem,auto,2000,100,213,9,94769.95,94179.19,20.19 +divrem,kernel,2000,100,213,9,94264.48,93837.44,20.07 +divrem,floor,2000,100,213,9,94372.07,94160.80,20.11 +divrem,gmp,2000,100,288,9,69216.87,68777.92,19.96 +divrem,gmpz,2000,100,291,9,68734.97,68374.29,19.99 +divrem,auto,65536,1,86,9,230923.93,228779.07,19.85 +divrem,kernel,65536,1,87,9,229714.56,223722.70,19.86 +divrem,floor,65536,1,88,9,225883.52,223844.69,19.94 +divrem,gmp,65536,1,119,9,171529.06,167557.77,20.42 +divrem,gmpz,65536,1,118,9,171046.97,164847.81,20.04 +fromchars,auto,4,10,218402,9,90.84,90.08,19.92 +fromchars,kernel,4,10,598069,9,32.99,32.53,19.76 +fromchars,gmp,4,10,615754,9,32.00,31.53,19.84 +fromchars,gmpz,4,10,265381,9,78.38,75.44,20.62 +fromchars,auto,16,10,49625,9,402.23,390.65,19.87 +fromchars,kernel,16,10,106807,9,191.78,190.73,20.49 +fromchars,gmp,16,10,138921,9,141.27,140.28,19.85 +fromchars,gmpz,16,10,61637,9,318.87,315.53,19.65 +fromchars,auto,64,10,9143,9,2182.47,2145.87,19.93 +fromchars,kernel,64,10,11025,9,1855.14,1820.11,20.35 +fromchars,gmp,64,10,20740,9,956.27,952.64,20.04 +fromchars,gmpz,64,10,12464,9,1596.49,1575.34,19.89 +fromchars,auto,256,10,1449,9,13799.98,13685.79,19.98 +fromchars,kernel,256,10,1721,9,11621.80,11589.31,20.26 +fromchars,gmp,256,10,2520,9,7876.95,7861.44,19.87 +fromchars,gmpz,256,10,1862,9,10527.97,10442.29,19.59 +fromchars,auto,2000,10,67,9,301506.21,299901.75,20.19 +fromchars,kernel,2000,10,70,9,282582.14,282230.36,19.82 +fromchars,gmp,2000,10,110,9,184463.64,183132.19,20.77 +fromchars,gmpz,2000,10,99,9,202633.84,201979.80,20.07 diff --git a/tests/beman/big_int/perf/item1/mac_new64_shortcut_run1.csv b/tests/beman/big_int/perf/item1/mac_new64_shortcut_run1.csv new file mode 100644 index 00000000..64260beb --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_new64_shortcut_run1.csv @@ -0,0 +1,20 @@ +# shortcut A/B new64 run1 +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +mul,auto,2,2,991646,9,18.63,18.43,18.78 +mul,kernel,2,2,3128455,9,6.31,6.22,19.67 +mul,auto,3,3,943260,9,20.10,19.67,19.03 +mul,kernel,3,3,2600773,9,7.88,7.68,20.64 +mul,auto,4,4,926784,9,21.59,21.33,19.95 +mul,kernel,4,4,1805236,9,10.60,10.55,19.40 +mul,auto,6,6,729554,9,27.33,26.74,19.83 +mul,kernel,6,6,1041647,9,19.45,18.99,20.19 +mul,auto,8,8,572638,9,34.75,34.21,19.83 +mul,kernel,8,8,869214,9,22.97,22.94,19.97 +mul,auto,12,12,369710,9,53.93,53.85,20.00 +mul,kernel,12,12,486263,9,41.04,40.86,19.96 +mul,auto,16,16,244060,9,82.15,82.02,20.14 +mul,kernel,16,16,286905,9,69.72,69.46,20.01 +sqr,auto,4,4,937703,9,21.41,21.32,20.27 +sqr,kernel,4,4,1781798,9,11.26,11.16,20.10 +sqr,auto,16,16,262643,9,76.07,74.80,20.01 +sqr,kernel,16,16,313975,9,63.71,63.40,20.12 diff --git a/tests/beman/big_int/perf/item1/mac_new64_shortcut_run2.csv b/tests/beman/big_int/perf/item1/mac_new64_shortcut_run2.csv new file mode 100644 index 00000000..e891c745 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_new64_shortcut_run2.csv @@ -0,0 +1,20 @@ +# shortcut A/B new64 run2 +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +mul,auto,2,2,1073526,9,19.88,18.94,21.14 +mul,kernel,2,2,3117147,9,6.15,6.13,19.32 +mul,auto,3,3,970635,9,20.35,18.97,19.84 +mul,kernel,3,3,2496906,9,7.95,7.92,19.84 +mul,auto,4,4,919788,9,21.49,20.87,19.63 +mul,kernel,4,4,1819646,9,11.17,11.07,20.37 +mul,auto,6,6,746186,9,27.12,26.89,19.97 +mul,kernel,6,6,1032563,9,19.08,18.46,19.53 +mul,auto,8,8,565279,9,35.15,34.65,19.82 +mul,kernel,8,8,855684,9,23.39,23.34,20.06 +mul,auto,12,12,369581,9,54.33,53.58,19.99 +mul,kernel,12,12,479300,9,41.64,41.49,19.97 +mul,auto,16,16,238096,9,83.46,82.59,19.85 +mul,kernel,16,16,286991,9,69.82,69.61,20.07 +sqr,auto,4,4,948474,9,21.47,21.07,20.30 +sqr,kernel,4,4,1801017,9,11.28,11.15,20.28 +sqr,auto,16,16,265148,9,74.94,74.37,19.92 +sqr,kernel,16,16,315457,9,63.90,63.45,20.16 diff --git a/tests/beman/big_int/perf/item1/mac_new64_shortcut_run3.csv b/tests/beman/big_int/perf/item1/mac_new64_shortcut_run3.csv new file mode 100644 index 00000000..9db6eebf --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_new64_shortcut_run3.csv @@ -0,0 +1,20 @@ +# shortcut A/B new64 run3 +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +mul,auto,2,2,979332,9,20.25,18.42,19.19 +mul,kernel,2,2,3130262,9,6.38,6.04,19.51 +mul,auto,3,3,991991,9,20.27,19.75,20.17 +mul,kernel,3,3,2439324,9,8.18,7.93,19.86 +mul,auto,4,4,943837,9,21.20,21.00,20.00 +mul,kernel,4,4,1805348,9,10.84,10.61,19.65 +mul,auto,6,6,737202,9,27.39,27.07,20.16 +mul,kernel,6,6,1032915,9,19.46,19.35,20.14 +mul,auto,8,8,574803,9,34.75,34.54,19.97 +mul,kernel,8,8,870149,9,22.86,22.84,19.90 +mul,auto,12,12,365223,9,54.53,54.18,19.90 +mul,kernel,12,12,487624,9,41.05,40.97,20.04 +mul,auto,16,16,240175,9,82.77,82.27,19.93 +mul,kernel,16,16,287028,9,69.70,69.41,20.02 +sqr,auto,4,4,915185,9,21.56,21.08,19.90 +sqr,kernel,4,4,1771978,9,11.23,11.10,19.89 +sqr,auto,16,16,263412,9,76.11,74.50,20.03 +sqr,kernel,16,16,314699,9,63.65,63.41,20.04 diff --git a/tests/beman/big_int/perf/item1/mac_new64_spot_seed1.csv b/tests/beman/big_int/perf/item1/mac_new64_spot_seed1.csv new file mode 100644 index 00000000..f8acbb87 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_new64_spot_seed1.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,2805,3,7280.66,7260.34,20.52 +add,inplace,16384,16384,1402,3,7072.05,7031.00,19.81 +add,kernel,16384,16384,1259,3,15751.46,15697.28,19.88 +add,floor,16384,16384,1283,3,15950.31,15813.23,20.43 +add,gmp,16384,16384,4961,3,4108.62,4078.62,20.36 +add,gmpz,16384,16384,4864,3,4109.26,4094.23,20.03 +mul,auto,2000,2000,67,3,301772.39,300866.28,20.20 +mul,kernel,2000,2000,66,3,304799.88,301380.68,20.30 +mul,floor,2000,2000,66,3,304413.52,302695.71,20.08 +mul,gmp,2000,2000,135,3,148702.47,148574.38,20.14 +mul,gmpz,2000,2000,135,3,148097.53,148016.36,20.00 +mul,auto,16384,16384,4,3,5381198.00,5374270.75,21.52 +mul,kernel,16384,16384,4,3,5401635.50,5268739.50,21.47 +mul,floor,16384,16384,4,3,5332208.50,5264531.25,21.26 +mul,gmp,16384,16384,13,3,1584881.38,1583301.31,20.61 +mul,gmpz,16384,16384,13,3,1570092.92,1569647.46,20.44 +divrem,auto,4096,2048,29,3,702669.52,702051.72,20.38 +divrem,kernel,4096,2048,29,3,703524.45,698464.07,20.41 +divrem,floor,4096,2048,29,3,701863.52,701735.66,20.36 +divrem,gmp,4096,2048,56,3,358471.73,358419.64,20.07 +divrem,gmpz,4096,2048,56,3,358473.96,357995.54,20.08 +tochars,auto,10000,10,3,3,8255819.33,8240083.33,24.76 +tochars,kernel,10000,10,3,3,8213361.33,8184958.33,24.62 +tochars,gmp,10000,10,5,3,4114175.00,4102700.00,20.59 +tochars,gmpz,10000,10,5,3,4201241.80,4189658.20,20.99 +fromchars,auto,10000,10,5,3,4170816.80,4167141.80,20.86 +fromchars,kernel,10000,10,5,3,4080925.00,4080533.40,20.44 +fromchars,gmp,10000,10,12,3,1766826.33,1760632.00,21.23 +fromchars,gmpz,10000,10,11,3,1858856.00,1856617.45,20.45 diff --git a/tests/beman/big_int/perf/item1/mac_new64_spot_seed2.csv b/tests/beman/big_int/perf/item1/mac_new64_spot_seed2.csv new file mode 100644 index 00000000..55b6d346 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_new64_spot_seed2.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,2762,3,7252.87,7251.36,20.06 +add,inplace,16384,16384,1426,3,7138.50,7116.88,20.38 +add,kernel,16384,16384,1285,3,15873.83,15845.43,20.40 +add,floor,16384,16384,1256,3,15963.94,15963.04,20.05 +add,gmp,16384,16384,4944,3,4081.52,4080.61,20.18 +add,gmpz,16384,16384,4883,3,4094.14,4065.71,19.96 +mul,auto,2000,2000,67,3,300979.48,300804.10,20.18 +mul,kernel,2000,2000,67,3,302273.00,301124.37,20.26 +mul,floor,2000,2000,67,3,301523.01,300096.40,20.20 +mul,gmp,2000,2000,135,3,148062.04,147274.39,19.98 +mul,gmpz,2000,2000,134,3,148414.49,148238.81,19.89 +mul,auto,16384,16384,4,3,5325750.00,5279666.75,21.31 +mul,kernel,16384,16384,4,3,5384364.50,5373083.25,21.52 +mul,floor,16384,16384,4,3,5327041.50,5302958.25,21.35 +mul,gmp,16384,16384,13,3,1580903.85,1579022.38,20.54 +mul,gmpz,16384,16384,13,3,1565105.77,1564897.38,20.37 +divrem,auto,4096,2048,29,3,714329.00,711827.59,20.70 +divrem,kernel,4096,2048,29,3,700752.86,700310.34,20.33 +divrem,floor,4096,2048,29,3,701287.34,697369.28,20.30 +divrem,gmp,4096,2048,57,3,356966.39,355825.30,20.46 +divrem,gmpz,4096,2048,57,3,357983.91,357867.70,20.43 +tochars,auto,10000,10,3,3,8226055.67,8225736.00,24.70 +tochars,kernel,10000,10,3,3,8220138.67,8210666.67,24.66 +tochars,gmp,10000,10,5,3,4102991.80,4102583.20,20.53 +tochars,gmpz,10000,10,5,3,4160558.40,4153308.40,20.80 +fromchars,auto,10000,10,5,3,4171508.40,4166375.00,20.85 +fromchars,kernel,10000,10,5,3,4095375.00,4082841.60,20.47 +fromchars,gmp,10000,10,12,3,1763017.42,1762010.42,21.16 +fromchars,gmpz,10000,10,11,3,1856776.55,1854325.82,20.42 diff --git a/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run1.csv b/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run1.csv new file mode 100644 index 00000000..87130cb5 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run1.csv @@ -0,0 +1,20 @@ +# shortcut A/B nosc64 run1 +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +mul,auto,2,2,1032288,9,19.41,19.34,19.60 +mul,kernel,2,2,3084915,9,6.53,6.45,20.18 +mul,auto,3,3,872368,9,23.76,21.11,20.26 +mul,kernel,3,3,2372563,9,8.20,8.18,19.49 +mul,auto,4,4,913336,9,22.18,21.88,20.21 +mul,kernel,4,4,1793142,9,10.70,10.58,19.31 +mul,auto,6,6,713738,9,28.07,28.00,20.08 +mul,kernel,6,6,1038502,9,19.19,18.68,19.88 +mul,auto,8,8,550877,9,35.89,35.55,19.76 +mul,kernel,8,8,852113,9,23.48,23.44,20.03 +mul,auto,12,12,364469,9,54.24,54.20,19.82 +mul,kernel,12,12,482329,9,41.60,41.53,20.08 +mul,auto,16,16,241584,9,82.88,82.79,20.03 +mul,kernel,16,16,285789,9,70.10,69.76,20.08 +sqr,auto,4,4,861927,9,23.16,22.80,20.05 +sqr,kernel,4,4,1730716,9,11.46,11.27,19.84 +sqr,auto,16,16,256381,9,78.34,77.42,20.06 +sqr,kernel,16,16,321471,9,60.90,60.73,19.69 diff --git a/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run2.csv b/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run2.csv new file mode 100644 index 00000000..e77ff7eb --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run2.csv @@ -0,0 +1,20 @@ +# shortcut A/B nosc64 run2 +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +mul,auto,2,2,1034629,9,19.26,19.00,20.09 +mul,kernel,2,2,3088613,9,6.47,6.43,19.97 +mul,auto,3,3,953290,9,21.23,20.95,20.25 +mul,kernel,3,3,2437151,9,8.43,8.21,20.52 +mul,auto,4,4,885513,9,22.31,22.11,19.86 +mul,kernel,4,4,1780510,9,11.29,11.20,20.08 +mul,auto,6,6,719555,9,28.31,27.82,20.30 +mul,kernel,6,6,991925,9,19.11,18.69,18.98 +mul,auto,8,8,560165,9,35.72,35.13,19.95 +mul,kernel,8,8,846688,9,23.49,23.45,19.91 +mul,auto,12,12,364245,9,54.63,54.35,19.91 +mul,kernel,12,12,481245,9,41.63,41.51,20.05 +mul,auto,16,16,237134,9,83.43,82.66,19.77 +mul,kernel,16,16,285099,9,70.19,70.00,20.02 +sqr,auto,4,4,860824,9,23.13,23.09,19.94 +sqr,kernel,4,4,1732448,9,11.25,11.23,19.58 +sqr,auto,16,16,257136,9,77.95,77.36,20.06 +sqr,kernel,16,16,315252,9,61.43,61.03,19.36 diff --git a/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run3.csv b/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run3.csv new file mode 100644 index 00000000..1ee2cd2a --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run3.csv @@ -0,0 +1,20 @@ +# shortcut A/B nosc64 run3 +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +mul,auto,2,2,979863,9,19.93,19.07,19.41 +mul,kernel,2,2,3089202,9,6.50,6.44,20.08 +mul,auto,3,3,960363,9,21.13,20.55,20.38 +mul,kernel,3,3,2437866,9,8.20,8.17,20.00 +mul,auto,4,4,891326,9,22.35,22.08,19.96 +mul,kernel,4,4,1802243,9,10.79,10.44,19.47 +mul,auto,6,6,705033,9,27.60,27.31,19.57 +mul,kernel,6,6,1039974,9,19.30,19.04,20.04 +mul,auto,8,8,563657,9,35.82,35.33,20.21 +mul,kernel,8,8,845778,9,23.61,23.46,19.98 +mul,auto,12,12,352531,9,54.46,54.32,19.24 +mul,kernel,12,12,479706,9,41.68,41.64,20.00 +mul,auto,16,16,238985,9,83.93,83.07,20.48 +mul,kernel,16,16,285461,9,70.12,69.91,20.01 +sqr,auto,4,4,864584,9,23.32,23.04,20.25 +sqr,kernel,4,4,1739663,9,11.27,11.23,19.64 +sqr,auto,16,16,255180,9,77.28,77.04,19.78 +sqr,kernel,16,16,326492,9,60.74,60.47,19.83 diff --git a/tests/beman/big_int/perf/item1/mac_study128_run1.csv b/tests/beman/big_int/perf/item1/mac_study128_run1.csv new file mode 100644 index 00000000..139a8da3 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study128_run1.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:09:18Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new128 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2655658,9,8.39,7.59,20.42 +add,inplace,1,1,2859367,9,3.35,3.34,19.25 +add,kernel,1,1,17543941,9,1.14,1.14,20.06 +add,floor,1,1,10993518,9,1.84,1.82,20.17 +add,gmp,1,1,13556846,9,1.49,1.48,20.18 +add,gmpz,1,1,6708423,9,2.99,2.96,20.31 +add,auto,2,2,1147438,9,17.96,17.40,20.39 +add,inplace,2,2,2598549,9,3.88,3.85,20.15 +add,kernel,2,2,14389126,9,1.39,1.39,20.03 +add,floor,2,2,2076426,9,9.44,9.41,19.76 +add,gmp,2,2,10030168,9,1.98,1.95,19.87 +add,gmpz,2,2,6696654,9,3.23,2.98,21.63 +add,auto,4,4,1433239,9,14.25,13.72,20.28 +add,inplace,4,4,2857334,9,3.48,3.47,19.95 +add,kernel,4,4,10398297,9,1.91,1.90,19.92 +add,floor,4,4,1913188,9,10.23,10.16,19.69 +add,gmp,4,4,11524545,9,1.74,1.74,20.49 +add,gmpz,4,4,4530743,9,4.26,4.03,19.49 +add,auto,8,8,1321179,9,15.41,15.12,20.42 +add,inplace,8,8,2470751,9,3.97,3.96,19.65 +add,kernel,8,8,5765852,9,3.50,3.45,20.19 +add,floor,8,8,1610913,9,11.89,11.65,19.41 +add,gmp,8,8,8964163,9,2.23,2.23,20.03 +add,gmpz,8,8,4742873,9,4.09,3.91,19.23 +add,auto,16,16,1245781,9,16.23,16.00,20.34 +add,inplace,16,16,1786953,9,5.59,5.58,20.10 +add,kernel,16,16,2648679,9,7.56,7.49,20.04 +add,floor,16,16,1475547,9,13.89,13.31,20.36 +add,gmp,16,16,6179345,9,3.23,2.99,20.08 +add,gmpz,16,16,4971592,9,4.48,4.24,22.16 +sub,auto,1,1,2422817,9,8.26,8.18,20.07 +sub,inplace,1,1,3088872,9,3.48,3.47,21.49 +sub,kernel,1,1,19328941,9,1.03,1.03,19.91 +sub,floor,1,1,11481817,9,1.73,1.73,19.92 +sub,gmp,1,1,13444896,9,1.49,1.48,20.02 +sub,gmpz,1,1,8002903,9,2.48,2.48,19.88 +sub,auto,2,2,2319521,9,8.69,8.49,20.11 +sub,inplace,2,2,2641693,9,3.84,3.83,20.31 +sub,kernel,2,2,14118727,9,1.41,1.41,20.00 +sub,floor,2,2,10062249,9,1.98,1.98,19.99 +sub,gmp,2,2,10055669,9,1.98,1.95,19.93 +sub,gmpz,2,2,6724464,9,2.98,2.82,19.93 +sub,auto,4,4,1426803,9,14.01,13.96,20.08 +sub,inplace,4,4,2775434,9,3.60,3.60,20.08 +sub,kernel,4,4,10114241,9,1.94,1.93,19.62 +sub,floor,4,4,2012265,9,10.42,10.17,20.94 +sub,gmp,4,4,11487184,9,1.74,1.73,19.97 +sub,gmpz,4,4,7294080,9,2.74,2.73,20.02 +sub,auto,8,8,1323927,9,15.16,15.00,20.09 +sub,inplace,8,8,2436407,9,4.43,4.10,21.48 +sub,kernel,8,8,5718994,9,3.50,3.49,20.02 +sub,floor,8,8,1667124,9,12.23,11.90,20.37 +sub,gmp,8,8,8946939,9,2.24,2.23,20.02 +sub,gmpz,8,8,6170262,9,3.23,3.22,19.93 +sub,auto,16,16,1124445,9,17.20,17.18,19.46 +sub,inplace,16,16,1915338,9,5.34,5.30,20.51 +sub,kernel,16,16,2611907,9,7.67,7.64,20.04 +sub,floor,16,16,1343255,9,15.63,15.61,21.03 +sub,gmp,16,16,6115527,9,3.20,3.12,19.51 +sub,gmpz,16,16,4734557,9,4.23,4.22,20.05 +shl,auto,1,13,3226745,9,6.21,6.19,20.37 +shl,inplace,1,13,2991300,9,3.48,3.13,20.54 +shl,kernel,1,13,8957999,9,2.24,2.23,20.02 +shl,kernelip,1,13,8269469,9,1.77,1.40,28.69 +shl,floor,1,13,4659917,9,5.37,4.33,25.39 +shl,gmp,1,13,16218274,9,1.24,1.24,20.17 +shl,gmpz,1,13,10078514,9,1.99,1.98,20.11 +shl,auto,4,13,1534223,9,12.55,12.50,19.57 +shl,inplace,4,13,2581949,9,3.84,3.81,19.98 +shl,kernel,4,13,5386273,9,4.46,3.72,22.95 +shl,kernelip,4,13,2940030,9,3.40,3.36,20.00 +shl,floor,4,13,1495342,9,12.72,12.63,19.31 +shl,gmp,4,13,10062888,9,1.98,1.98,19.99 +shl,gmpz,4,13,7308269,9,2.73,2.72,19.99 +shl,auto,16,13,1213613,9,15.68,15.56,19.78 +shl,inplace,16,13,1901315,9,5.32,5.31,20.23 +shl,kernel,16,13,4905356,9,4.10,4.07,20.09 +shl,kernelip,16,13,1445167,9,6.82,6.69,19.66 +shl,floor,16,13,1641209,9,12.43,12.18,20.27 +shl,gmp,16,13,5712573,9,3.48,3.47,19.87 +shl,gmpz,16,13,3873578,9,5.26,5.11,20.32 +shr,auto,1,13,2285902,9,9.86,8.06,21.93 +shr,inplace,1,13,3845623,9,3.31,2.61,24.26 +shr,kernel,1,13,8092512,9,2.51,2.48,20.27 +shr,floor,1,13,8061273,9,2.48,2.47,20.36 +shr,gmp,1,13,20000001,9,0.99,0.99,19.87 +shr,gmpz,1,13,10073943,9,2.00,1.98,20.14 +shr,auto,4,13,1411009,9,13.99,13.86,19.74 +shr,inplace,4,13,2620862,9,3.90,3.72,20.39 +shr,kernel,4,13,4477649,9,4.47,4.22,19.88 +shr,floor,4,13,1675876,9,11.90,11.84,19.96 +shr,gmp,4,13,11508985,9,1.74,1.73,20.01 +shr,gmpz,4,13,7323678,9,2.73,2.72,20.03 +shr,auto,16,13,1145027,9,17.82,17.54,20.38 +shr,inplace,16,13,1883044,9,5.19,5.19,19.58 +shr,kernel,16,13,4789434,9,4.18,4.17,20.02 +shr,floor,16,13,1578518,9,12.92,12.89,20.60 +shr,gmp,16,13,6205735,9,3.27,3.23,20.20 +shr,gmpz,16,13,4726199,9,4.23,4.21,20.19 +mul,auto,1,1,2173676,9,8.98,8.92,19.68 +mul,gmp,1,1,5346137,9,3.73,3.72,19.93 +mul,gmpz,1,1,7289809,9,2.74,2.73,19.98 +mul,auto,2,2,1076045,9,18.47,18.29,19.93 +mul,kernel,2,2,3145347,9,6.39,6.31,20.29 +mul,floor,2,2,1234973,9,15.58,15.21,19.72 +mul,gmp,2,2,4458095,9,4.25,4.22,19.36 +mul,gmpz,2,2,2966227,9,6.86,6.76,20.34 +mul,auto,3,3,1008146,9,20.01,19.21,19.85 +mul,kernel,3,3,2423201,9,8.19,8.16,20.05 +mul,floor,3,3,1182258,9,17.12,16.92,20.18 +mul,gmp,3,3,3272023,9,6.22,6.11,20.30 +mul,gmpz,3,3,2121251,9,10.96,8.79,22.81 +mul,auto,4,4,895690,9,21.84,21.33,19.48 +mul,kernel,4,4,1880998,9,11.16,10.92,20.95 +mul,floor,4,4,1182991,9,17.14,16.71,20.14 +mul,gmp,4,4,2183490,9,9.00,8.93,19.81 +mul,gmpz,4,4,1827538,9,11.18,10.96,20.42 +mul,auto,6,6,737967,9,26.93,26.86,19.91 +mul,kernel,6,6,1044476,9,19.04,18.38,19.73 +mul,floor,6,6,798622,9,23.80,23.68,19.45 +mul,gmp,6,6,1391515,9,14.54,14.27,20.22 +mul,gmpz,6,6,1141091,9,17.59,17.17,20.25 +mul,auto,8,8,561566,9,35.27,35.11,19.84 +mul,kernel,8,8,870952,9,22.99,22.91,20.26 +mul,floor,8,8,656035,9,30.55,30.28,20.03 +mul,gmp,8,8,789486,9,24.93,22.99,19.54 +mul,gmpz,8,8,826557,9,26.76,24.25,21.64 +mul,auto,12,12,370114,9,53.90,53.78,19.99 +mul,kernel,12,12,487507,9,41.06,40.98,20.02 +mul,floor,12,12,403858,9,49.21,49.08,19.98 +mul,gmp,12,12,452463,9,44.35,44.23,20.06 +mul,gmpz,12,12,427634,9,46.72,46.56,19.99 +mul,auto,16,16,237607,9,82.84,82.56,19.70 +mul,kernel,16,16,287741,9,70.38,70.04,20.30 +mul,floor,16,16,250638,9,79.64,78.48,19.90 +mul,gmp,16,16,261512,9,77.19,76.72,20.18 +mul,gmpz,16,16,256453,9,77.91,77.82,20.00 +sqr,auto,4,4,913619,9,24.76,21.11,19.79 +sqr,kernel,4,4,1989843,9,10.78,10.05,21.14 +sqr,floor,4,4,1258872,9,16.35,15.93,20.44 +sqr,gmp,4,4,2876947,9,6.96,6.95,20.08 +sqr,gmpz,4,4,2233441,9,9.69,9.45,21.60 +sqr,auto,16,16,267204,9,74.04,73.58,19.81 +sqr,kernel,16,16,328165,9,60.81,60.61,19.99 +sqr,floor,16,16,275404,9,72.56,71.84,20.01 +sqr,gmp,16,16,317699,9,63.60,62.77,20.17 +sqr,gmpz,16,16,300219,9,66.85,66.07,20.10 +divrem,auto,2,1,863155,9,23.33,22.54,20.05 +divrem,kernel,2,1,3537796,9,5.62,5.58,20.09 +divrem,floor,2,1,3045058,9,6.59,6.57,20.09 +divrem,gmp,2,1,3960612,9,5.03,4.94,19.88 +divrem,gmpz,2,1,2303051,9,8.68,8.64,20.01 +divrem,auto,8,4,286531,9,70.19,69.85,20.11 +divrem,kernel,8,4,487613,9,40.75,40.25,19.87 +divrem,floor,8,4,357269,9,56.12,55.59,20.05 +divrem,gmp,8,4,513643,9,39.69,39.19,20.35 +divrem,gmpz,8,4,466812,9,43.18,42.60,20.38 +divrem,auto,32,16,47008,9,431.90,424.91,20.26 +divrem,kernel,32,16,51664,9,393.15,387.76,20.29 +divrem,floor,32,16,48554,9,410.29,397.02,19.79 +divrem,gmp,32,16,96661,9,207.42,203.61,20.04 +divrem,gmpz,32,16,95160,9,209.95,204.82,19.93 diff --git a/tests/beman/big_int/perf/item1/mac_study128_run2.csv b/tests/beman/big_int/perf/item1/mac_study128_run2.csv new file mode 100644 index 00000000..c33f65ad --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study128_run2.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:12:06Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new128 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2407426,9,8.13,8.05,19.91 +add,inplace,1,1,3099008,9,3.60,3.23,22.09 +add,kernel,1,1,17480918,9,1.14,1.14,19.97 +add,floor,1,1,10987802,9,1.83,1.82,20.10 +add,gmp,1,1,13280067,9,1.49,1.49,20.00 +add,gmpz,1,1,6717764,9,2.98,2.97,20.19 +add,auto,2,2,1106527,9,17.11,16.74,18.98 +add,inplace,2,2,2440077,9,3.85,3.84,19.11 +add,kernel,2,2,14385007,9,1.39,1.39,20.07 +add,floor,2,2,2055155,9,9.67,9.46,19.72 +add,gmp,2,2,10072436,9,1.98,1.96,19.97 +add,gmpz,2,2,6374520,9,6.06,3.23,31.72 +add,auto,4,4,1414316,9,14.13,13.71,19.81 +add,inplace,4,4,2985580,9,3.60,3.35,21.13 +add,kernel,4,4,10426875,9,1.92,1.91,20.01 +add,floor,4,4,1921034,9,10.67,10.40,20.43 +add,gmp,4,4,11518601,9,1.76,1.74,20.40 +add,gmpz,4,4,5780965,9,4.16,3.48,24.65 +add,auto,8,8,1326265,9,15.02,14.95,19.98 +add,inplace,8,8,2436335,9,4.09,3.97,19.77 +add,kernel,8,8,5669419,9,3.57,3.54,20.22 +add,floor,8,8,1645672,9,12.16,12.08,20.02 +add,gmp,8,8,8908351,9,2.24,2.23,19.93 +add,gmpz,8,8,4659323,9,4.37,4.28,20.56 +add,auto,16,16,1258282,9,16.39,16.11,20.52 +add,inplace,16,16,1752374,9,5.60,5.59,19.71 +add,kernel,16,16,2659006,9,7.53,7.49,20.03 +add,floor,16,16,1437638,9,13.65,13.41,19.67 +add,gmp,16,16,6376129,9,3.10,3.05,20.00 +add,gmpz,16,16,4455495,9,4.49,4.49,20.03 +sub,auto,1,1,2353389,9,8.46,8.40,19.89 +sub,inplace,1,1,2682523,9,3.74,3.70,20.04 +sub,kernel,1,1,19105896,9,1.03,1.03,19.67 +sub,floor,1,1,11487846,9,1.74,1.73,20.03 +sub,gmp,1,1,13301890,9,1.49,1.49,19.85 +sub,gmpz,1,1,8071942,9,2.49,2.48,20.08 +sub,auto,2,2,2303887,9,8.77,8.70,20.48 +sub,inplace,2,2,2627177,9,3.85,3.84,20.35 +sub,kernel,2,2,14133508,9,1.41,1.39,19.90 +sub,floor,2,2,10079654,9,1.99,1.98,20.09 +sub,gmp,2,2,10077364,9,1.98,1.96,19.97 +sub,gmpz,2,2,6703561,9,2.76,2.73,18.88 +sub,auto,4,4,1401441,9,14.03,13.90,20.46 +sub,inplace,4,4,2675648,9,3.74,3.73,20.23 +sub,kernel,4,4,10242000,9,1.94,1.91,19.97 +sub,floor,4,4,1954140,9,10.53,10.36,20.74 +sub,gmp,4,4,11500666,9,1.74,1.73,20.00 +sub,gmpz,4,4,7326668,9,2.74,2.72,20.05 +sub,auto,8,8,1290234,9,15.89,15.45,20.33 +sub,inplace,8,8,2313855,9,4.22,4.12,19.55 +sub,kernel,8,8,5677931,9,3.51,3.50,19.95 +sub,floor,8,8,1649892,9,11.61,11.43,19.39 +sub,gmp,8,8,8924538,9,2.24,2.23,19.97 +sub,gmpz,8,8,6185747,9,3.23,3.22,19.96 +sub,auto,16,16,1179796,9,18.15,16.79,20.98 +sub,inplace,16,16,1873917,9,5.34,5.33,20.12 +sub,kernel,16,16,2580868,9,7.77,7.70,20.13 +sub,floor,16,16,1323141,9,15.13,14.80,20.00 +sub,gmp,16,16,6067091,9,3.10,3.09,18.97 +sub,gmpz,16,16,4706421,9,4.24,4.23,19.97 +shl,auto,1,13,2858506,9,7.01,6.93,20.02 +shl,inplace,1,13,2850038,9,3.46,3.41,19.74 +shl,kernel,1,13,8965523,9,2.23,2.21,20.02 +shl,kernelip,1,13,8654558,9,1.79,1.21,27.93 +shl,floor,1,13,4202726,9,4.92,4.52,20.99 +shl,gmp,1,13,16156113,9,1.24,1.24,20.04 +shl,gmpz,1,13,10084873,9,2.03,1.98,20.32 +shl,auto,4,13,1520902,9,12.94,12.84,19.85 +shl,inplace,4,13,2622546,9,3.84,3.80,20.14 +shl,kernel,4,13,5361340,9,3.73,3.71,20.02 +shl,kernelip,4,13,2965542,9,3.39,3.37,20.07 +shl,floor,4,13,1581427,9,12.43,12.38,20.71 +shl,gmp,4,13,10102034,9,1.98,1.97,20.02 +shl,gmpz,4,13,7318592,9,2.73,2.72,19.96 +shl,auto,16,13,1286498,9,15.35,15.26,19.80 +shl,inplace,16,13,1866725,9,5.40,5.29,20.04 +shl,kernel,16,13,4900133,9,4.07,4.06,20.05 +shl,kernelip,16,13,1459432,9,6.77,6.75,19.77 +shl,floor,16,13,1632201,9,11.87,11.74,19.48 +shl,gmp,16,13,5753663,9,3.49,3.47,20.78 +shl,gmpz,16,13,3734277,9,5.18,5.13,19.34 +shr,auto,1,13,2345262,9,8.02,7.93,19.44 +shr,inplace,1,13,2780848,9,3.50,3.35,19.45 +shr,kernel,1,13,8049584,9,2.49,2.47,20.06 +shr,floor,1,13,7608237,9,2.53,2.48,19.28 +shr,gmp,1,13,19972954,9,1.00,0.99,19.91 +shr,gmpz,1,13,10044939,9,1.98,1.98,19.95 +shr,auto,4,13,1426732,9,14.00,13.78,19.91 +shr,inplace,4,13,1022051,9,9.85,9.83,20.17 +shr,kernel,4,13,4509779,9,4.47,4.46,20.19 +shr,floor,4,13,1616004,9,12.41,11.91,19.84 +shr,gmp,4,13,11506186,9,1.74,1.73,19.97 +shr,gmpz,4,13,7296037,9,2.73,2.72,19.92 +shr,auto,16,13,1131614,9,17.67,17.47,20.01 +shr,inplace,16,13,1909888,9,5.31,5.18,20.33 +shr,kernel,16,13,4657330,9,4.25,4.23,19.91 +shr,floor,16,13,1530496,9,13.02,12.91,20.00 +shr,gmp,16,13,6196616,9,3.23,3.22,20.00 +shr,gmpz,16,13,4719498,9,4.23,4.22,19.95 +mul,auto,1,1,2176120,9,9.18,9.16,20.12 +mul,gmp,1,1,5350693,9,3.76,3.70,20.08 +mul,gmpz,1,1,7312658,9,2.73,2.72,19.99 +mul,auto,2,2,1070731,9,18.62,18.01,19.89 +mul,kernel,2,2,3150884,9,6.33,5.98,19.65 +mul,floor,2,2,1369359,9,14.39,14.28,19.73 +mul,gmp,2,2,4388755,9,4.48,4.46,20.05 +mul,gmpz,2,2,3074758,9,6.64,6.48,20.40 +mul,auto,3,3,995575,9,20.05,19.99,20.08 +mul,kernel,3,3,2442280,9,8.19,8.17,20.01 +mul,floor,3,3,1195800,9,16.63,16.17,19.86 +mul,gmp,3,3,3268970,9,6.22,6.15,20.34 +mul,gmpz,3,3,2374563,9,9.12,8.22,18.99 +mul,auto,4,4,940386,9,21.26,20.87,19.98 +mul,kernel,4,4,1850513,9,11.29,10.82,20.79 +mul,floor,4,4,1202282,9,16.69,16.37,20.04 +mul,gmp,4,4,2066875,9,9.30,9.24,19.21 +mul,gmpz,4,4,1856833,9,10.95,10.91,20.39 +mul,auto,6,6,749825,9,27.21,26.67,20.37 +mul,kernel,6,6,1072390,9,18.97,18.72,20.33 +mul,floor,6,6,824297,9,25.06,23.90,20.35 +mul,gmp,6,6,1386808,9,14.49,14.39,20.09 +mul,gmpz,6,6,1143833,9,17.47,17.32,20.52 +mul,auto,8,8,569133,9,34.83,34.34,19.78 +mul,kernel,8,8,873273,9,23.06,22.86,20.16 +mul,floor,8,8,661872,9,30.64,30.12,20.21 +mul,gmp,8,8,852008,9,23.28,22.31,20.46 +mul,gmpz,8,8,805827,9,24.48,24.38,19.75 +mul,auto,12,12,357833,9,53.87,53.68,19.29 +mul,kernel,12,12,488165,9,40.90,40.82,19.98 +mul,floor,12,12,404878,9,49.57,49.12,19.96 +mul,gmp,12,12,451194,9,44.67,44.15,20.20 +mul,gmpz,12,12,423961,9,47.26,47.19,20.05 +mul,auto,16,16,241487,9,82.79,82.73,20.05 +mul,kernel,16,16,287001,9,69.88,69.56,20.06 +mul,floor,16,16,250363,9,79.75,79.44,19.99 +mul,gmp,16,16,263310,9,76.17,75.99,20.10 +mul,gmpz,16,16,252424,9,79.07,78.72,20.01 +sqr,auto,4,4,920076,9,21.65,21.52,20.51 +sqr,kernel,4,4,1755650,9,11.23,11.12,19.72 +sqr,floor,4,4,1241411,9,16.18,16.14,20.17 +sqr,gmp,4,4,2875065,9,6.95,6.94,19.98 +sqr,gmpz,4,4,2063502,9,9.69,9.67,20.00 +sqr,auto,16,16,269302,9,74.37,73.53,20.06 +sqr,kernel,16,16,327990,9,62.40,60.54,20.32 +sqr,floor,16,16,287609,9,68.46,68.17,19.75 +sqr,gmp,16,16,321332,9,62.09,58.36,19.71 +sqr,gmpz,16,16,311474,9,65.64,64.23,20.38 +divrem,auto,2,1,866772,9,23.04,22.83,20.04 +divrem,kernel,2,1,3184076,9,6.28,6.23,19.96 +divrem,floor,2,1,2800091,9,7.15,7.12,20.01 +divrem,gmp,2,1,3954665,9,5.08,5.04,20.09 +divrem,gmpz,2,1,2295752,9,8.69,8.65,20.04 +divrem,auto,8,4,250806,9,80.20,79.21,20.09 +divrem,kernel,8,4,380111,9,52.61,51.97,19.98 +divrem,floor,8,4,305866,9,65.23,64.22,19.93 +divrem,gmp,8,4,478134,9,41.65,41.22,19.92 +divrem,gmpz,8,4,453025,9,44.20,43.94,20.02 +divrem,auto,32,16,47188,9,428.12,416.29,20.14 +divrem,kernel,32,16,52350,9,394.30,385.37,20.55 +divrem,floor,32,16,48433,9,425.02,402.15,20.42 +divrem,gmp,32,16,97195,9,206.47,201.58,20.14 +divrem,gmpz,32,16,94713,9,207.89,206.01,19.67 diff --git a/tests/beman/big_int/perf/item1/mac_study128_vecsort_run1.csv b/tests/beman/big_int/perf/item1/mac_study128_vecsort_run1.csv new file mode 100644 index 00000000..855c0270 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study128_vecsort_run1.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:09:59Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new128 seed=1 ops=vecsort bands=medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,95.41,94.45,28.62 +vecsort,builtin,100000,1,15,9,13.79,13.48,20.66 +vecsort,copy,100000,1,53,9,3.92,3.86,20.88 diff --git a/tests/beman/big_int/perf/item1/mac_study128_vecsort_run2.csv b/tests/beman/big_int/perf/item1/mac_study128_vecsort_run2.csv new file mode 100644 index 00000000..a992b1c7 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study128_vecsort_run2.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:12:47Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new128 seed=2 ops=vecsort bands=medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,94.14,93.19,28.25 +vecsort,builtin,100000,1,16,9,12.98,12.83,20.83 +vecsort,copy,100000,1,53,9,3.87,3.84,20.58 diff --git a/tests/beman/big_int/perf/item1/mac_study256_run1.csv b/tests/beman/big_int/perf/item1/mac_study256_run1.csv new file mode 100644 index 00000000..4db2b432 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study256_run1.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:10:00Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new256 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2128828,9,9.18,8.89,19.70 +add,inplace,1,1,2736131,9,3.48,3.47,19.21 +add,kernel,1,1,17470389,9,1.14,1.14,19.98 +add,floor,1,1,10981146,9,1.82,1.82,20.02 +add,gmp,1,1,13377640,9,1.49,1.48,19.92 +add,gmpz,1,1,6719697,9,2.98,2.97,21.38 +add,auto,2,2,1845169,9,10.70,10.33,19.65 +add,inplace,2,2,2333811,9,4.23,4.09,19.68 +add,kernel,2,2,14344987,9,1.39,1.39,20.00 +add,floor,2,2,9647329,9,2.07,2.06,20.02 +add,gmp,2,2,10163145,9,1.99,1.96,20.19 +add,gmpz,2,2,5986931,9,4.78,3.02,23.23 +add,auto,4,4,2217587,9,9.02,8.97,20.17 +add,inplace,4,4,2545004,9,3.73,3.72,19.36 +add,kernel,4,4,10124761,9,1.99,1.97,20.08 +add,floor,4,4,1965798,9,10.21,10.18,20.17 +add,gmp,4,4,11499982,9,1.74,1.73,19.98 +add,gmpz,4,4,5116242,9,4.12,3.85,22.34 +add,auto,8,8,1286102,9,15.29,14.76,19.60 +add,inplace,8,8,2401299,9,4.22,3.97,19.92 +add,kernel,8,8,5469472,9,3.65,3.55,19.97 +add,floor,8,8,1679749,9,12.29,11.93,20.55 +add,gmp,8,8,8959661,9,2.24,2.23,20.23 +add,gmpz,8,8,5193744,9,3.81,3.79,19.75 +add,auto,16,16,1216485,9,16.19,16.12,19.77 +add,inplace,16,16,1752600,9,5.71,5.69,20.14 +add,kernel,16,16,2605875,9,7.68,7.64,20.02 +add,floor,16,16,1431896,9,13.93,13.80,20.12 +add,gmp,16,16,6787533,9,3.22,2.94,21.17 +add,gmpz,16,16,4941213,9,4.26,3.99,21.37 +sub,auto,1,1,2368907,9,8.68,8.40,20.45 +sub,inplace,1,1,2741409,9,3.72,3.59,20.31 +sub,kernel,1,1,18739224,9,1.07,1.06,20.06 +sub,floor,1,1,11515125,9,1.74,1.73,20.03 +sub,gmp,1,1,11522721,9,1.74,1.73,20.02 +sub,gmpz,1,1,7990012,9,2.50,2.48,19.94 +sub,auto,2,2,2242405,9,8.94,8.46,19.78 +sub,inplace,2,2,2607662,9,3.85,3.60,19.67 +sub,kernel,2,2,13987932,9,1.42,1.41,19.79 +sub,floor,2,2,9953239,9,2.00,1.99,19.94 +sub,gmp,2,2,8954829,9,2.23,2.21,19.99 +sub,gmpz,2,2,6731626,9,2.99,2.98,20.09 +sub,auto,4,4,2235126,9,8.95,8.91,20.10 +sub,inplace,4,4,2586369,9,3.85,3.84,20.06 +sub,kernel,4,4,10061646,9,1.99,1.98,19.99 +sub,floor,4,4,8037514,9,2.49,2.49,20.03 +sub,gmp,4,4,10067694,9,1.99,1.98,20.03 +sub,gmpz,4,4,7320924,9,2.74,2.73,20.06 +sub,auto,8,8,1283261,9,15.50,15.44,20.22 +sub,inplace,8,8,2438888,9,4.03,3.97,19.69 +sub,kernel,8,8,2477218,9,8.05,7.86,19.84 +sub,floor,8,8,1780221,9,11.32,11.01,20.24 +sub,gmp,8,8,8064620,9,2.48,2.47,20.02 +sub,gmpz,8,8,6193924,9,3.23,3.22,20.03 +sub,auto,16,16,1112627,9,18.87,17.83,20.73 +sub,inplace,16,16,1904072,9,5.33,5.28,20.27 +sub,kernel,16,16,1274191,9,15.66,15.20,19.95 +sub,floor,16,16,1226462,9,16.47,16.42,20.20 +sub,gmp,16,16,5762557,9,3.47,3.23,19.69 +sub,gmpz,16,16,4583377,9,4.37,4.35,20.03 +shl,auto,1,13,2731043,9,7.29,7.12,19.85 +shl,inplace,1,13,2812270,9,3.57,3.35,20.00 +shl,kernel,1,13,8961143,9,2.24,2.23,20.04 +shl,kernelip,1,13,7465399,9,1.81,1.79,26.97 +shl,floor,1,13,5475549,9,3.61,3.57,19.83 +shl,gmp,1,13,16081346,9,1.24,1.24,19.96 +shl,gmpz,1,13,10063070,9,1.99,1.98,19.98 +shl,auto,4,13,1477058,9,13.94,13.66,20.61 +shl,inplace,4,13,2708977,9,4.66,3.71,25.29 +shl,kernel,4,13,5372253,9,3.72,3.70,20.00 +shl,kernelip,4,13,2965903,9,3.40,3.37,20.15 +shl,floor,4,13,1543833,9,12.66,12.64,19.59 +shl,gmp,4,13,10080008,9,1.99,1.98,20.01 +shl,gmpz,4,13,7309285,9,2.73,2.73,19.95 +shl,auto,16,13,1210409,9,16.67,16.61,20.33 +shl,inplace,16,13,1867836,9,5.35,5.32,20.07 +shl,kernel,16,13,4816919,9,4.12,4.09,19.85 +shl,kernelip,16,13,1418095,9,6.78,6.67,19.27 +shl,floor,16,13,1678244,9,11.96,11.59,20.13 +shl,gmp,16,13,5750828,9,3.48,3.47,20.03 +shl,gmpz,16,13,3868795,9,5.12,5.10,19.84 +shr,auto,1,13,2551479,9,8.25,7.76,20.14 +shr,inplace,1,13,2998560,9,3.33,3.31,20.06 +shr,kernel,1,13,8908837,9,2.24,2.23,20.00 +shr,floor,1,13,8058691,9,2.49,2.48,20.45 +shr,gmp,1,13,20000001,9,0.99,0.99,19.87 +shr,gmpz,1,13,10066487,9,1.99,1.98,19.99 +shr,auto,4,13,2059488,9,9.85,9.65,20.25 +shr,inplace,4,13,2646363,9,3.81,3.75,20.11 +shr,kernel,4,13,5378442,9,3.72,3.69,20.03 +shr,floor,4,13,4250215,9,4.47,4.43,19.27 +shr,gmp,4,13,11528618,9,1.74,1.73,20.02 +shr,gmpz,4,13,7311568,9,2.74,2.73,20.25 +shr,auto,16,13,1122798,9,17.83,17.71,20.05 +shr,inplace,16,13,1921562,9,5.33,5.30,20.54 +shr,kernel,16,13,4824359,9,4.14,4.13,20.11 +shr,floor,16,13,1492702,9,12.95,12.88,19.33 +shr,gmp,16,13,6198928,9,3.23,3.22,20.01 +shr,gmpz,16,13,4725324,9,4.49,4.22,22.29 +mul,auto,1,1,2153036,9,9.21,9.17,19.87 +mul,gmp,1,1,5367141,9,3.75,3.71,20.21 +mul,gmpz,1,1,7321354,9,2.73,2.73,20.00 +mul,auto,2,2,1415924,9,13.49,13.44,19.23 +mul,kernel,2,2,3071568,9,6.52,6.46,20.00 +mul,floor,2,2,2446679,9,8.15,8.12,19.96 +mul,gmp,2,2,4245856,9,4.72,4.70,20.02 +mul,gmpz,2,2,2828916,9,7.18,6.98,20.12 +mul,auto,3,3,1031278,9,19.61,19.45,20.47 +mul,kernel,3,3,2370150,9,8.46,8.43,20.08 +mul,floor,3,3,1181127,9,16.64,16.60,19.66 +mul,gmp,3,3,3215892,9,6.22,6.21,19.99 +mul,gmpz,3,3,2315050,9,10.23,8.85,23.36 +mul,auto,4,4,936191,9,21.88,21.34,20.84 +mul,kernel,4,4,1893562,9,11.01,10.80,20.80 +mul,floor,4,4,1196212,9,16.65,16.42,20.07 +mul,gmp,4,4,2232818,9,8.72,8.11,19.26 +mul,gmpz,4,4,2045415,9,9.83,9.77,19.76 +mul,auto,6,6,722706,9,27.40,27.22,19.82 +mul,kernel,6,6,1058748,9,18.88,18.68,19.98 +mul,floor,6,6,781690,9,23.61,23.23,18.47 +mul,gmp,6,6,1333735,9,15.04,14.81,20.05 +mul,gmpz,6,6,1077618,9,18.96,18.61,20.37 +mul,auto,8,8,579511,9,34.29,34.22,19.91 +mul,kernel,8,8,871238,9,22.95,22.89,20.03 +mul,floor,8,8,670123,9,30.05,29.84,20.20 +mul,gmp,8,8,841454,9,22.37,21.98,19.28 +mul,gmpz,8,8,817130,9,24.40,24.22,19.95 +mul,auto,12,12,374062,9,53.71,53.26,20.08 +mul,kernel,12,12,487123,9,41.12,41.01,20.06 +mul,floor,12,12,399400,9,49.67,49.13,19.98 +mul,gmp,12,12,454855,9,43.84,43.59,19.94 +mul,gmpz,12,12,428351,9,46.85,46.57,20.10 +mul,auto,16,16,238878,9,82.66,82.40,19.78 +mul,kernel,16,16,287777,9,69.41,69.30,19.98 +mul,floor,16,16,255852,9,78.60,78.00,20.11 +mul,gmp,16,16,247972,9,77.20,76.97,19.17 +mul,gmpz,16,16,253276,9,79.05,78.92,20.02 +sqr,auto,4,4,937827,9,21.15,21.07,19.84 +sqr,kernel,4,4,1789046,9,11.16,10.94,19.88 +sqr,floor,4,4,1244875,9,16.17,16.04,20.16 +sqr,gmp,4,4,2874391,9,7.01,6.94,20.21 +sqr,gmpz,4,4,2241071,9,9.20,8.96,20.84 +sqr,auto,16,16,265560,9,73.39,72.96,19.53 +sqr,kernel,16,16,312290,9,63.54,63.21,19.87 +sqr,floor,16,16,290782,9,71.43,68.99,20.58 +sqr,gmp,16,16,316991,9,62.96,60.32,19.90 +sqr,gmpz,16,16,309430,9,65.77,64.71,20.27 +divrem,auto,2,1,836083,9,23.83,23.52,19.88 +divrem,kernel,2,1,3550622,9,5.63,5.62,20.01 +divrem,floor,2,1,3036953,9,6.71,6.58,20.57 +divrem,gmp,2,1,3900997,9,5.02,4.99,19.72 +divrem,gmpz,2,1,2223723,9,8.67,8.59,19.31 +divrem,auto,8,4,288697,9,68.27,67.80,19.74 +divrem,kernel,8,4,483699,9,41.34,40.52,19.94 +divrem,floor,8,4,410015,9,48.73,48.28,19.99 +divrem,gmp,8,4,495115,9,40.21,39.71,19.99 +divrem,gmpz,8,4,466875,9,43.76,42.87,20.36 +divrem,auto,32,16,45132,9,430.24,419.99,19.37 +divrem,kernel,32,16,51148,9,393.42,382.39,20.07 +divrem,floor,32,16,48903,9,411.73,404.93,20.13 +divrem,gmp,32,16,96331,9,207.23,203.46,19.91 +divrem,gmpz,32,16,97156,9,210.36,205.28,20.34 diff --git a/tests/beman/big_int/perf/item1/mac_study256_run2.csv b/tests/beman/big_int/perf/item1/mac_study256_run2.csv new file mode 100644 index 00000000..bb4d50f4 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study256_run2.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:12:48Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new256 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2462397,9,9.19,8.22,22.74 +add,inplace,1,1,2872990,9,3.23,3.22,19.01 +add,kernel,1,1,17365424,9,1.14,1.14,19.86 +add,floor,1,1,10891717,9,1.82,1.82,19.86 +add,gmp,1,1,13421402,9,1.49,1.48,20.05 +add,gmpz,1,1,6630939,9,2.99,2.98,21.44 +add,auto,2,2,1916775,9,10.58,10.40,20.34 +add,inplace,2,2,2325520,9,4.22,4.19,19.61 +add,kernel,2,2,14170220,9,1.39,1.39,19.79 +add,floor,2,2,9657721,9,2.07,2.07,19.99 +add,gmp,2,2,10166751,9,1.98,1.97,20.17 +add,gmpz,2,2,6657957,9,3.26,3.01,24.17 +add,auto,4,4,2221836,9,9.59,8.73,20.86 +add,inplace,4,4,2858985,9,3.81,3.72,21.68 +add,kernel,4,4,10143333,9,1.97,1.96,20.02 +add,floor,4,4,1963507,9,10.21,10.18,20.17 +add,gmp,4,4,11509975,9,1.74,1.73,20.02 +add,gmpz,4,4,5989246,9,4.08,3.78,22.12 +add,auto,8,8,1355528,9,15.04,14.83,20.62 +add,inplace,8,8,2514322,9,4.25,4.01,21.08 +add,kernel,8,8,5500686,9,3.64,3.62,20.03 +add,floor,8,8,1679061,9,11.93,11.67,20.04 +add,gmp,8,8,8939652,9,2.23,2.23,20.16 +add,gmpz,8,8,5258226,9,3.86,3.81,20.20 +add,auto,16,16,1232351,9,16.99,16.10,20.03 +add,inplace,16,16,1751401,9,5.71,5.70,20.30 +add,kernel,16,16,2597866,9,7.66,7.60,19.91 +add,floor,16,16,1451849,9,13.74,13.68,19.85 +add,gmp,16,16,6200542,9,3.23,3.22,20.01 +add,gmpz,16,16,5026090,9,4.47,4.46,22.67 +sub,auto,1,1,2370301,9,8.46,8.37,20.11 +sub,inplace,1,1,2703229,9,3.72,3.60,20.04 +sub,kernel,1,1,18775421,9,1.06,1.06,19.99 +sub,floor,1,1,10985221,9,1.76,1.74,19.28 +sub,gmp,1,1,11465913,9,1.74,1.73,19.95 +sub,gmpz,1,1,7995830,9,2.49,2.48,19.91 +sub,auto,2,2,2290883,9,8.69,8.68,19.95 +sub,inplace,2,2,2583572,9,3.86,3.85,20.49 +sub,kernel,2,2,14357851,9,1.42,1.40,20.35 +sub,floor,2,2,9619684,9,1.99,1.98,19.14 +sub,gmp,2,2,8943664,9,2.23,2.20,19.93 +sub,gmpz,2,2,6682378,9,2.98,2.97,19.90 +sub,auto,4,4,2177222,9,9.49,8.96,20.58 +sub,inplace,4,4,2598725,9,3.97,3.85,20.51 +sub,kernel,4,4,10124597,9,2.23,1.98,21.53 +sub,floor,4,4,8015758,9,2.49,2.49,19.97 +sub,gmp,4,4,10021732,9,1.99,1.98,19.97 +sub,gmpz,4,4,7313841,9,2.73,2.73,19.97 +sub,auto,8,8,1240266,9,15.95,15.71,19.87 +sub,inplace,8,8,2480667,9,3.99,3.97,20.17 +sub,kernel,8,8,5554714,9,3.54,3.53,19.69 +sub,floor,8,8,1748332,9,11.66,11.43,20.35 +sub,gmp,8,8,8081114,9,2.48,2.48,20.06 +sub,gmpz,8,8,6191025,9,3.23,3.22,19.98 +sub,auto,16,16,1105553,9,18.03,17.41,19.93 +sub,inplace,16,16,1885860,9,5.37,5.30,20.35 +sub,kernel,16,16,2592978,9,7.71,7.70,19.99 +sub,floor,16,16,1299320,9,15.39,15.11,19.91 +sub,gmp,16,16,6149913,9,3.23,3.22,20.07 +sub,gmpz,16,16,4601877,9,4.38,4.35,20.14 +shl,auto,1,13,2863637,9,7.22,7.19,20.72 +shl,inplace,1,13,2759832,9,3.75,3.64,20.80 +shl,kernel,1,13,8965409,9,2.23,2.23,20.03 +shl,kernelip,1,13,9032801,9,1.10,1.10,24.03 +shl,floor,1,13,5280177,9,3.66,3.58,19.34 +shl,gmp,1,13,16114153,9,1.24,1.24,20.00 +shl,gmpz,1,13,10078860,9,2.00,1.98,20.13 +shl,auto,4,13,1471103,9,13.34,13.21,19.61 +shl,inplace,4,13,2627575,9,3.83,3.73,20.74 +shl,kernel,4,13,5374716,9,3.73,3.70,20.12 +shl,kernelip,4,13,2905823,9,3.39,3.37,19.72 +shl,floor,4,13,1573199,9,12.71,12.65,20.43 +shl,gmp,4,13,10080610,9,1.99,1.98,20.01 +shl,gmpz,4,13,7172402,9,2.77,2.73,19.87 +shl,auto,16,13,1190579,9,17.23,16.81,20.47 +shl,inplace,16,13,1865416,9,5.35,5.34,19.99 +shl,kernel,16,13,4878975,9,4.10,4.09,20.07 +shl,kernelip,16,13,1445086,9,6.80,6.69,19.59 +shl,floor,16,13,1650373,9,11.94,11.84,19.85 +shl,gmp,16,13,5754358,9,3.48,3.47,20.01 +shl,gmpz,16,13,3859606,9,5.19,5.15,20.03 +shr,auto,1,13,1995080,9,12.23,9.14,23.71 +shr,inplace,1,13,3830613,9,3.41,2.60,20.26 +shr,kernel,1,13,8923428,9,2.26,2.24,20.25 +shr,floor,1,13,8050522,9,2.48,2.45,20.16 +shr,gmp,1,13,20000001,9,0.99,0.99,19.89 +shr,gmpz,1,13,10073885,9,1.99,1.98,20.03 +shr,auto,4,13,2054477,9,10.59,9.65,21.63 +shr,inplace,4,13,2743607,9,3.72,3.69,20.39 +shr,kernel,4,13,5388131,9,3.76,3.71,20.23 +shr,floor,4,13,4192108,9,4.48,4.46,18.86 +shr,gmp,4,13,11516278,9,1.74,1.73,19.99 +shr,gmpz,4,13,7323307,9,2.73,2.72,20.00 +shr,auto,16,13,1116225,9,17.72,17.61,19.88 +shr,inplace,16,13,1916773,9,5.24,5.21,20.07 +shr,kernel,16,13,4812986,9,4.14,4.14,19.93 +shr,floor,16,13,1564756,9,12.91,12.67,20.18 +shr,gmp,16,13,6204792,9,3.23,3.22,20.11 +shr,gmpz,16,13,4727474,9,4.24,4.22,20.14 +mul,auto,1,1,2122170,9,9.42,9.37,19.98 +mul,gmp,1,1,5368300,9,3.72,3.70,19.97 +mul,gmpz,1,1,7325987,9,2.73,2.73,20.03 +mul,auto,2,2,1411151,9,13.71,13.35,19.28 +mul,kernel,2,2,3226250,9,6.46,6.24,20.68 +mul,floor,2,2,2466376,9,7.99,7.91,19.76 +mul,gmp,2,2,4219057,9,4.72,4.71,19.94 +mul,gmpz,2,2,3202515,9,6.26,6.22,20.88 +mul,auto,3,3,1043772,9,19.62,19.09,20.42 +mul,kernel,3,3,2440089,9,8.19,8.18,20.36 +mul,floor,3,3,1185428,9,17.36,16.64,21.01 +mul,gmp,3,3,3285694,9,6.09,6.03,20.01 +mul,gmpz,3,3,2304221,9,8.50,8.39,20.13 +mul,auto,4,4,936488,9,21.74,21.52,20.47 +mul,kernel,4,4,1805322,9,11.12,10.45,19.87 +mul,floor,4,4,1185878,9,16.86,16.65,19.90 +mul,gmp,4,4,2235077,9,8.94,8.93,20.01 +mul,gmpz,4,4,1899664,9,9.88,9.76,18.84 +mul,auto,6,6,712018,9,27.56,27.09,19.60 +mul,kernel,6,6,1053943,9,18.93,18.44,19.97 +mul,floor,6,6,853342,9,23.59,23.37,20.21 +mul,gmp,6,6,1376929,9,14.49,14.39,19.97 +mul,gmpz,6,6,1153848,9,18.82,17.52,21.66 +mul,auto,8,8,574226,9,34.83,34.44,19.99 +mul,kernel,8,8,869804,9,22.97,22.91,20.01 +mul,floor,8,8,664426,9,29.84,29.73,19.84 +mul,gmp,8,8,896484,9,22.46,22.11,21.08 +mul,gmpz,8,8,819244,9,24.68,24.25,20.17 +mul,auto,12,12,372315,9,54.04,53.81,20.14 +mul,kernel,12,12,488162,9,40.99,40.96,20.02 +mul,floor,12,12,410479,9,49.33,48.78,20.23 +mul,gmp,12,12,456339,9,43.97,43.81,20.09 +mul,gmpz,12,12,427496,9,46.73,46.63,20.00 +mul,auto,16,16,242417,9,82.35,82.16,20.02 +mul,kernel,16,16,287703,9,69.57,69.40,20.02 +mul,floor,16,16,252939,9,79.02,78.82,20.03 +mul,gmp,16,16,262028,9,76.56,76.24,20.08 +mul,gmpz,16,16,252860,9,78.23,77.68,19.81 +sqr,auto,4,4,945137,9,21.17,21.09,20.08 +sqr,kernel,4,4,1866549,9,10.65,10.17,19.73 +sqr,floor,4,4,1229133,9,16.97,16.12,20.84 +sqr,gmp,4,4,2877511,9,6.95,6.69,19.79 +sqr,gmpz,4,4,2108024,9,9.68,8.70,19.73 +sqr,auto,16,16,264268,9,74.34,73.03,19.59 +sqr,kernel,16,16,315512,9,63.48,63.30,20.04 +sqr,floor,16,16,279384,9,71.69,70.99,20.01 +sqr,gmp,16,16,328864,9,63.45,61.67,20.74 +sqr,gmpz,16,16,297252,9,66.59,65.28,19.72 +divrem,auto,2,1,857779,9,23.29,23.05,19.91 +divrem,kernel,2,1,3186956,9,6.32,6.19,20.13 +divrem,floor,2,1,2813916,9,7.19,7.12,20.23 +divrem,gmp,2,1,4005916,9,5.00,4.97,20.04 +divrem,gmpz,2,1,2305719,9,8.69,8.62,20.14 +divrem,auto,8,4,247877,9,81.11,79.78,20.08 +divrem,kernel,8,4,385071,9,51.44,51.09,19.84 +divrem,floor,8,4,331994,9,60.32,60.02,20.02 +divrem,gmp,8,4,481304,9,41.53,40.76,19.97 +divrem,gmpz,8,4,450891,9,44.26,43.78,19.91 +divrem,auto,32,16,46372,9,432.39,423.88,20.02 +divrem,kernel,32,16,48618,9,394.44,378.47,19.04 +divrem,floor,32,16,48833,9,409.74,403.26,20.06 +divrem,gmp,32,16,97534,9,205.16,202.09,19.98 +divrem,gmpz,32,16,96212,9,208.17,203.68,20.02 diff --git a/tests/beman/big_int/perf/item1/mac_study256_vecsort_run1.csv b/tests/beman/big_int/perf/item1/mac_study256_vecsort_run1.csv new file mode 100644 index 00000000..d3c3a929 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study256_vecsort_run1.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:10:41Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new256 seed=1 ops=vecsort bands=medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,97.95,96.96,29.36 +vecsort,builtin,100000,1,16,9,13.41,12.97,21.35 +vecsort,copy,100000,1,50,9,3.95,3.91,19.79 diff --git a/tests/beman/big_int/perf/item1/mac_study256_vecsort_run2.csv b/tests/beman/big_int/perf/item1/mac_study256_vecsort_run2.csv new file mode 100644 index 00000000..b87b6bce --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study256_vecsort_run2.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:13:31Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new256 seed=2 ops=vecsort bands=medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,95.06,94.65,28.58 +vecsort,builtin,100000,1,16,9,12.95,12.88,20.80 +vecsort,copy,100000,1,61,9,3.58,3.31,22.21 diff --git a/tests/beman/big_int/perf/item1/mac_study512_run1.csv b/tests/beman/big_int/perf/item1/mac_study512_run1.csv new file mode 100644 index 00000000..6f8a1a9a --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study512_run1.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:10:42Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new512 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2010831,9,10.74,9.88,21.26 +add,inplace,1,1,2883772,9,3.55,3.47,20.38 +add,kernel,1,1,17494419,9,1.14,1.14,20.01 +add,floor,1,1,10839063,9,1.82,1.82,19.86 +add,gmp,1,1,13442163,9,1.49,1.48,20.03 +add,gmpz,1,1,6544855,9,3.02,2.96,20.07 +add,auto,2,2,1746988,9,10.98,10.54,19.31 +add,inplace,2,2,2431176,9,4.22,3.98,20.02 +add,kernel,2,2,14352877,9,1.39,1.39,20.02 +add,floor,2,2,9671916,9,2.07,2.06,20.01 +add,gmp,2,2,10083681,9,1.98,1.97,20.12 +add,gmpz,2,2,6698607,9,5.16,2.98,32.46 +add,auto,4,4,2014474,9,9.93,9.84,20.00 +add,inplace,4,4,2522530,9,3.97,3.92,20.08 +add,kernel,4,4,10125190,9,1.98,1.97,20.09 +add,floor,4,4,7779428,9,2.58,2.57,20.22 +add,gmp,4,4,11509799,9,1.74,1.73,20.00 +add,gmpz,4,4,5138758,9,3.99,3.85,20.91 +add,auto,8,8,2255859,9,8.71,8.66,19.66 +add,inplace,8,8,2351021,9,4.28,4.22,20.14 +add,kernel,8,8,5419047,9,3.68,3.63,19.90 +add,floor,8,8,1589026,9,12.02,11.68,19.13 +add,gmp,8,8,8960064,9,2.25,2.23,20.15 +add,gmpz,8,8,4498679,9,4.44,4.28,20.12 +add,auto,16,16,1232541,9,16.44,16.27,20.46 +add,inplace,16,16,1671657,9,5.73,5.70,19.18 +add,kernel,16,16,2595991,9,7.75,7.73,20.15 +add,floor,16,16,1454601,9,13.93,13.76,20.30 +add,gmp,16,16,6193585,9,3.23,3.22,19.99 +add,gmpz,16,16,5005552,9,4.45,3.99,20.25 +sub,auto,1,1,2235804,9,8.75,8.68,19.70 +sub,inplace,1,1,2766669,9,3.63,3.60,20.10 +sub,kernel,1,1,18212337,9,1.09,1.09,19.85 +sub,floor,1,1,11516094,9,1.74,1.73,20.03 +sub,gmp,1,1,13417501,9,1.49,1.48,19.97 +sub,gmpz,1,1,8060273,9,2.48,2.48,20.00 +sub,auto,2,2,2238740,9,9.19,9.13,20.58 +sub,inplace,2,2,2599536,9,3.85,3.84,20.02 +sub,kernel,2,2,14318762,9,1.41,1.40,20.13 +sub,floor,2,2,10073780,9,1.99,1.98,20.00 +sub,gmp,2,2,10055603,9,1.99,1.95,19.90 +sub,gmpz,2,2,6732266,9,2.73,2.73,18.76 +sub,auto,4,4,2117288,9,9.59,9.22,20.11 +sub,inplace,4,4,2697873,9,3.60,3.60,19.50 +sub,kernel,4,4,9918694,9,2.02,2.00,20.03 +sub,floor,4,4,8060777,9,2.49,2.49,20.09 +sub,gmp,4,4,11515585,9,1.74,1.73,20.01 +sub,gmpz,4,4,7317810,9,2.73,2.73,19.98 +sub,auto,8,8,2231385,9,8.97,8.96,20.30 +sub,inplace,8,8,2295293,9,4.21,4.10,19.43 +sub,kernel,8,8,5465004,9,3.64,3.63,20.30 +sub,floor,8,8,4780750,9,4.20,4.17,20.08 +sub,gmp,8,8,8962819,9,2.23,2.23,20.03 +sub,gmpz,8,8,6191521,9,3.23,3.22,20.02 +sub,auto,16,16,1107168,9,18.22,17.71,19.72 +sub,inplace,16,16,1914922,9,5.26,5.20,20.20 +sub,kernel,16,16,2554265,9,7.82,7.77,19.98 +sub,floor,16,16,1340786,9,15.18,15.10,20.52 +sub,gmp,16,16,6138752,9,3.23,3.22,19.82 +sub,gmpz,16,16,4738252,9,4.22,4.21,20.00 +shl,auto,1,13,2880265,9,6.94,6.91,20.02 +shl,inplace,1,13,2763496,9,3.54,3.52,20.10 +shl,kernel,1,13,8974742,9,2.23,2.22,20.03 +shl,kernelip,1,13,5767832,9,1.74,1.58,19.83 +shl,floor,1,13,3877733,9,5.49,4.82,21.08 +shl,gmp,1,13,16103259,9,1.24,1.24,20.00 +shl,gmpz,1,13,10077185,9,1.99,1.98,20.03 +shl,auto,4,13,2461263,9,8.38,7.94,20.41 +shl,inplace,4,13,2284639,9,4.39,4.29,20.11 +shl,kernel,4,13,5285728,9,3.77,3.71,19.91 +shl,kernelip,4,13,3008813,9,3.39,3.32,20.53 +shl,floor,4,13,3988905,9,4.99,4.90,19.96 +shl,gmp,4,13,10123173,9,1.99,1.96,20.10 +shl,gmpz,4,13,7337479,9,2.73,2.73,20.09 +shl,auto,16,13,1008667,9,20.08,19.79,20.54 +shl,inplace,16,13,1903424,9,5.33,5.31,20.30 +shl,kernel,16,13,4825119,9,4.15,4.13,20.04 +shl,kernelip,16,13,1467146,9,7.05,6.84,20.79 +shl,floor,16,13,1643826,9,11.96,11.81,19.65 +shl,gmp,16,13,5749654,9,3.47,3.47,19.99 +shl,gmpz,16,13,4078075,9,4.93,4.89,20.19 +shr,auto,1,13,2519319,9,8.19,7.91,24.19 +shr,inplace,1,13,2977994,9,3.34,3.31,19.92 +shr,kernel,1,13,8970297,9,2.23,2.23,20.04 +shr,floor,1,13,7693775,9,2.51,2.48,19.34 +shr,gmp,1,13,20000001,9,0.99,0.99,19.95 +shr,gmpz,1,13,10071499,9,1.98,1.98,19.99 +shr,auto,4,13,2012165,9,9.39,9.18,19.30 +shr,inplace,4,13,2673915,9,3.76,3.45,19.89 +shr,kernel,4,13,5358895,9,3.73,3.71,20.01 +shr,floor,4,13,4342372,9,4.47,4.39,19.77 +shr,gmp,4,13,11565488,9,1.74,1.74,20.10 +shr,gmpz,4,13,7331419,9,2.73,2.73,20.04 +shr,auto,16,13,1111000,9,18.53,17.99,20.72 +shr,inplace,16,13,1850853,9,5.35,5.27,19.78 +shr,kernel,16,13,4753418,9,4.17,4.16,19.98 +shr,floor,16,13,1522918,9,13.16,13.13,20.19 +shr,gmp,16,13,6202948,9,3.23,3.22,20.03 +shr,gmpz,16,13,4728720,9,4.23,4.22,20.03 +mul,auto,1,1,2168991,9,9.18,9.05,19.90 +mul,gmp,1,1,5383509,9,3.72,3.71,20.04 +mul,gmpz,1,1,7308529,9,2.74,2.73,20.00 +mul,auto,2,2,1470192,9,13.87,13.64,20.38 +mul,kernel,2,2,3215583,9,6.21,6.19,19.98 +mul,floor,2,2,2682658,9,7.45,7.43,20.00 +mul,gmp,2,2,4232991,9,4.48,4.35,19.42 +mul,gmpz,2,2,2962535,9,6.50,6.29,19.14 +mul,auto,3,3,1343932,9,14.93,14.89,20.06 +mul,kernel,3,3,2447609,9,8.25,8.18,20.90 +mul,floor,3,3,2005589,9,9.53,9.44,19.18 +mul,gmp,3,3,3227588,9,6.19,6.07,19.87 +mul,gmpz,3,3,2231272,9,10.49,9.11,23.11 +mul,auto,4,4,1324654,9,15.18,15.12,20.13 +mul,kernel,4,4,1804606,9,11.20,11.14,20.22 +mul,floor,4,4,1812191,9,11.16,10.94,20.15 +mul,gmp,4,4,2281238,9,9.63,9.18,21.63 +mul,gmpz,4,4,1784646,9,10.95,10.90,19.61 +mul,auto,6,6,708103,9,27.88,27.58,19.80 +mul,kernel,6,6,1035960,9,19.28,19.15,20.00 +mul,floor,6,6,824993,9,23.99,23.77,19.78 +mul,gmp,6,6,1339705,9,14.81,14.38,19.74 +mul,gmpz,6,6,1135104,9,17.62,17.33,20.08 +mul,auto,8,8,576802,9,34.49,34.32,19.90 +mul,kernel,8,8,872675,9,23.24,22.96,20.25 +mul,floor,8,8,608707,9,32.46,30.31,19.96 +mul,gmp,8,8,828085,9,23.71,22.68,19.36 +mul,gmpz,8,8,752590,9,24.54,24.42,18.80 +mul,auto,12,12,371549,9,54.24,53.81,20.13 +mul,kernel,12,12,485878,9,41.27,41.15,20.19 +mul,floor,12,12,403563,9,49.34,49.26,19.93 +mul,gmp,12,12,453339,9,44.04,43.90,19.95 +mul,gmpz,12,12,429102,9,46.60,46.53,19.99 +mul,auto,16,16,241468,9,82.86,82.60,20.05 +mul,kernel,16,16,288547,9,69.43,69.29,20.13 +mul,floor,16,16,250930,9,78.60,78.34,19.90 +mul,gmp,16,16,258833,9,77.36,77.15,20.02 +mul,gmpz,16,16,253099,9,79.22,78.98,20.08 +sqr,auto,4,4,1298989,9,15.41,15.36,20.01 +sqr,kernel,4,4,1778975,9,11.28,11.16,20.08 +sqr,floor,4,4,1716126,9,11.35,11.21,19.51 +sqr,gmp,4,4,2871604,9,6.95,6.94,19.98 +sqr,gmpz,4,4,2179147,9,8.99,8.94,19.76 +sqr,auto,16,16,264060,9,74.69,73.52,19.74 +sqr,kernel,16,16,323017,9,60.80,60.65,19.74 +sqr,floor,16,16,281311,9,71.47,71.14,20.11 +sqr,gmp,16,16,320065,9,61.98,61.56,19.84 +sqr,gmpz,16,16,304335,9,66.14,64.55,20.04 +divrem,auto,2,1,847429,9,24.09,23.55,20.35 +divrem,kernel,2,1,3547681,9,5.63,5.59,19.95 +divrem,floor,2,1,3049252,9,6.60,6.55,20.23 +divrem,gmp,2,1,3982857,9,5.01,4.99,19.97 +divrem,gmpz,2,1,2303806,9,8.74,8.65,20.11 +divrem,auto,8,4,302549,9,66.56,66.05,20.18 +divrem,kernel,8,4,487340,9,41.12,40.75,19.99 +divrem,floor,8,4,475328,9,41.69,41.09,19.77 +divrem,gmp,8,4,498139,9,40.27,39.04,19.97 +divrem,gmpz,8,4,458695,9,43.37,42.47,19.81 +divrem,auto,32,16,45921,9,432.52,422.59,19.79 +divrem,kernel,32,16,50896,9,393.69,383.42,20.01 +divrem,floor,32,16,49821,9,406.94,396.31,20.24 +divrem,gmp,32,16,97845,9,207.44,202.41,20.26 +divrem,gmpz,32,16,96499,9,210.14,207.06,20.25 diff --git a/tests/beman/big_int/perf/item1/mac_study512_run2.csv b/tests/beman/big_int/perf/item1/mac_study512_run2.csv new file mode 100644 index 00000000..6e77bc61 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study512_run2.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:13:32Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new512 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2089312,9,9.49,9.24,19.83 +add,inplace,1,1,2978965,9,3.60,3.37,21.30 +add,kernel,1,1,17473141,9,1.14,1.14,19.98 +add,floor,1,1,11005946,9,1.82,1.82,20.10 +add,gmp,1,1,13448166,9,1.49,1.48,20.01 +add,gmpz,1,1,6716614,9,2.99,2.98,22.20 +add,auto,2,2,1923968,9,10.73,10.67,20.69 +add,inplace,2,2,2517512,9,4.09,3.97,20.48 +add,kernel,2,2,14343378,9,1.39,1.39,19.99 +add,floor,2,2,9659997,9,2.07,2.06,20.30 +add,gmp,2,2,11336398,9,1.74,1.74,20.20 +add,gmpz,2,2,6109738,9,4.11,3.32,25.57 +add,auto,4,4,2020659,9,10.01,9.58,20.39 +add,inplace,4,4,2563323,9,3.89,3.73,19.84 +add,kernel,4,4,10331714,9,1.95,1.93,20.07 +add,floor,4,4,7709902,9,2.57,2.57,19.85 +add,gmp,4,4,11509931,9,1.74,1.74,20.02 +add,gmpz,4,4,5325322,9,3.95,3.65,20.22 +add,auto,8,8,2206738,9,9.26,9.08,20.37 +add,inplace,8,8,2239065,9,4.47,4.45,20.02 +add,kernel,8,8,5469944,9,3.62,3.60,19.83 +add,floor,8,8,1714397,9,12.00,11.65,20.49 +add,gmp,8,8,8960480,9,2.24,2.23,20.17 +add,gmpz,8,8,4926190,9,4.43,4.26,21.91 +add,auto,16,16,1202903,9,16.45,16.27,19.93 +add,inplace,16,16,1749752,9,5.73,5.70,20.29 +add,kernel,16,16,2594667,9,7.70,7.67,19.99 +add,floor,16,16,1379625,9,14.41,14.30,19.89 +add,gmp,16,16,6210987,9,3.23,3.22,20.13 +add,gmpz,16,16,4757279,9,4.00,3.98,19.57 +sub,auto,1,1,2236756,9,8.94,8.90,20.02 +sub,inplace,1,1,2749327,9,3.73,3.71,20.65 +sub,kernel,1,1,18693287,9,1.08,1.07,20.19 +sub,floor,1,1,11481883,9,1.74,1.74,19.96 +sub,gmp,1,1,13421353,9,1.49,1.49,20.00 +sub,gmpz,1,1,8061418,9,2.48,2.48,20.02 +sub,auto,2,2,2192980,9,9.17,8.91,19.92 +sub,inplace,2,2,2597557,9,3.85,3.72,19.73 +sub,kernel,2,2,13995069,9,1.42,1.39,19.78 +sub,floor,2,2,10080180,9,2.01,1.98,20.16 +sub,gmp,2,2,10015092,9,1.98,1.96,19.87 +sub,gmpz,2,2,6707106,9,2.98,2.73,19.59 +sub,auto,4,4,2011975,9,9.94,9.90,20.02 +sub,inplace,4,4,2549594,9,3.98,3.97,20.27 +sub,kernel,4,4,10206046,9,1.96,1.95,19.97 +sub,floor,4,4,8025611,9,2.48,2.48,19.95 +sub,gmp,4,4,11465631,9,1.74,1.74,19.99 +sub,gmpz,4,4,7323527,9,2.73,2.73,20.05 +sub,auto,8,8,2215970,9,8.92,8.75,19.75 +sub,inplace,8,8,2393558,9,4.47,3.98,21.06 +sub,kernel,8,8,5572402,9,3.56,3.55,19.90 +sub,floor,8,8,4901144,9,4.10,4.08,20.08 +sub,gmp,8,8,8828898,9,2.24,2.23,19.88 +sub,gmpz,8,8,6135052,9,3.24,3.22,19.88 +sub,auto,16,16,1165463,9,17.55,17.12,20.43 +sub,inplace,16,16,1820837,9,5.33,5.21,19.32 +sub,kernel,16,16,2567593,9,7.80,7.75,20.02 +sub,floor,16,16,1319390,9,14.83,14.68,19.77 +sub,gmp,16,16,6098627,9,3.04,3.01,18.76 +sub,gmpz,16,16,4640070,9,4.35,4.33,20.17 +shl,auto,1,13,2890754,9,6.95,6.91,20.10 +shl,inplace,1,13,2659810,9,4.36,3.62,23.46 +shl,kernel,1,13,8958734,9,2.24,2.23,20.24 +shl,kernelip,1,13,5765265,9,1.76,1.74,20.23 +shl,floor,1,13,5808133,9,4.07,3.44,24.27 +shl,gmp,1,13,16107968,9,1.24,1.24,20.71 +shl,gmpz,1,13,10082637,9,1.99,1.98,20.08 +shl,auto,4,13,2364742,9,8.46,8.39,19.99 +shl,inplace,4,13,2182570,9,4.60,4.59,20.16 +shl,kernel,4,13,5355583,9,3.72,3.70,19.97 +shl,kernelip,4,13,2928058,9,3.38,3.34,19.79 +shl,floor,4,13,3632859,9,5.33,5.14,19.77 +shl,gmp,4,13,10070129,9,1.99,1.98,20.77 +shl,gmpz,4,13,7326171,9,2.73,2.73,20.04 +shl,auto,16,13,1050948,9,20.31,19.64,19.58 +shl,inplace,16,13,1899232,9,5.35,5.33,20.31 +shl,kernel,16,13,4809353,9,4.15,4.14,19.97 +shl,kernelip,16,13,1461802,9,7.39,7.05,21.42 +shl,floor,16,13,1623430,9,11.92,11.72,19.38 +shl,gmp,16,13,5761359,9,3.48,3.47,20.36 +shl,gmpz,16,13,4093368,9,4.83,4.73,19.78 +shr,auto,1,13,2457264,9,10.71,7.99,23.46 +shr,inplace,1,13,2998262,9,3.34,3.32,20.04 +shr,kernel,1,13,8951151,9,2.23,2.23,20.00 +shr,floor,1,13,8051513,9,2.48,2.48,20.05 +shr,gmp,1,13,20000001,9,0.99,0.99,19.89 +shr,gmpz,1,13,10062266,9,1.99,1.98,20.03 +shr,auto,4,13,1922424,9,10.18,9.75,19.65 +shr,inplace,4,13,2765523,9,3.78,3.76,20.95 +shr,kernel,4,13,5368615,9,3.73,3.72,20.04 +shr,floor,4,13,4490426,9,4.47,4.46,20.13 +shr,gmp,4,13,11497207,9,1.74,1.73,20.12 +shr,gmpz,4,13,7315814,9,2.73,2.73,20.07 +shr,auto,16,13,1051009,9,18.26,18.00,19.73 +shr,inplace,16,13,1901719,9,5.25,5.23,19.95 +shr,kernel,16,13,4813397,9,4.15,4.15,20.01 +shr,floor,16,13,1572036,9,13.14,12.69,20.71 +shr,gmp,16,13,6200350,9,3.24,3.22,20.12 +shr,gmpz,16,13,4710571,9,4.24,4.23,19.97 +mul,auto,1,1,2181061,9,9.23,8.82,19.97 +mul,gmp,1,1,5373385,9,3.73,3.72,20.02 +mul,gmpz,1,1,7320874,9,2.74,2.73,20.15 +mul,auto,2,2,1441128,9,13.74,13.38,19.72 +mul,kernel,2,2,3215613,9,7.02,6.21,20.10 +mul,floor,2,2,2754296,9,7.44,6.96,20.09 +mul,gmp,2,2,4353953,9,4.47,4.46,19.52 +mul,gmpz,2,2,3048825,9,6.84,6.21,20.12 +mul,auto,3,3,1366216,9,14.66,14.62,20.05 +mul,kernel,3,3,2502600,9,7.95,7.93,20.12 +mul,floor,3,3,2174283,9,9.49,9.19,20.57 +mul,gmp,3,3,3223037,9,6.17,6.01,19.73 +mul,gmpz,3,3,2398393,9,9.31,8.87,23.24 +mul,auto,4,4,1333832,9,14.88,14.86,19.88 +mul,kernel,4,4,1794301,9,10.94,10.63,19.56 +mul,floor,4,4,1804354,9,11.24,10.96,20.21 +mul,gmp,4,4,2203051,9,8.94,8.90,19.85 +mul,gmpz,4,4,1827705,9,11.03,10.94,20.23 +mul,auto,6,6,716292,9,28.07,27.76,20.20 +mul,kernel,6,6,1035670,9,19.27,19.17,19.95 +mul,floor,6,6,838693,9,23.91,23.73,20.30 +mul,gmp,6,6,1348918,9,14.77,14.18,19.80 +mul,gmpz,6,6,1042807,9,18.76,18.65,19.69 +mul,auto,8,8,567531,9,34.53,34.40,19.73 +mul,kernel,8,8,863872,9,23.06,22.98,19.94 +mul,floor,8,8,654471,9,30.54,30.21,19.97 +mul,gmp,8,8,861288,9,22.73,21.94,19.52 +mul,gmpz,8,8,816016,9,24.48,24.41,19.99 +mul,auto,12,12,356567,9,55.84,54.15,19.75 +mul,kernel,12,12,480363,9,41.27,41.15,19.83 +mul,floor,12,12,404605,9,49.50,49.25,20.01 +mul,gmp,12,12,451717,9,44.10,43.98,20.02 +mul,gmpz,12,12,428821,9,46.67,46.52,20.07 +mul,auto,16,16,239829,9,82.67,82.50,19.85 +mul,kernel,16,16,286155,9,69.48,69.22,19.87 +mul,floor,16,16,253744,9,78.88,78.63,20.03 +mul,gmp,16,16,258066,9,77.16,76.97,19.92 +mul,gmpz,16,16,251860,9,79.07,78.59,19.97 +sqr,auto,4,4,1292934,9,15.39,15.37,19.94 +sqr,kernel,4,4,1774604,9,11.34,11.20,20.09 +sqr,floor,4,4,1779344,9,11.26,11.17,20.04 +sqr,gmp,4,4,2838308,9,6.96,6.93,19.83 +sqr,gmpz,4,4,2040211,9,9.78,9.69,20.03 +sqr,auto,16,16,263102,9,74.22,73.85,19.59 +sqr,kernel,16,16,327722,9,61.32,61.19,20.13 +sqr,floor,16,16,292822,9,68.19,67.88,19.95 +sqr,gmp,16,16,316195,9,63.28,62.15,19.94 +sqr,gmpz,16,16,300417,9,66.48,64.79,19.92 +divrem,auto,2,1,855288,9,23.48,23.20,20.03 +divrem,kernel,2,1,3142452,9,6.29,6.24,19.85 +divrem,floor,2,1,2746052,9,7.15,7.10,19.69 +divrem,gmp,2,1,3982421,9,5.02,4.97,19.97 +divrem,gmpz,2,1,2292560,9,8.69,8.65,19.95 +divrem,auto,8,4,252985,9,78.60,78.30,19.89 +divrem,kernel,8,4,387661,9,51.72,51.21,20.13 +divrem,floor,8,4,377234,9,52.63,52.10,19.89 +divrem,gmp,8,4,480745,9,41.71,41.25,20.04 +divrem,gmpz,8,4,450149,9,44.39,43.47,19.95 +divrem,auto,32,16,45788,9,433.12,422.07,19.77 +divrem,kernel,32,16,48648,9,392.00,385.81,19.29 +divrem,floor,32,16,48741,9,410.18,401.38,19.96 +divrem,gmp,32,16,97691,9,204.87,197.71,19.89 +divrem,gmpz,32,16,96040,9,207.99,205.22,19.96 diff --git a/tests/beman/big_int/perf/item1/mac_study512_vecsort_run1.csv b/tests/beman/big_int/perf/item1/mac_study512_vecsort_run1.csv new file mode 100644 index 00000000..e7e293d3 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study512_vecsort_run1.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:11:23Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new512 seed=1 ops=vecsort bands=medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,100.15,99.13,30.14 +vecsort,builtin,100000,1,15,9,13.53,13.07,20.20 +vecsort,copy,100000,1,47,9,4.40,4.39,20.82 diff --git a/tests/beman/big_int/perf/item1/mac_study512_vecsort_run2.csv b/tests/beman/big_int/perf/item1/mac_study512_vecsort_run2.csv new file mode 100644 index 00000000..32535112 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study512_vecsort_run2.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:14:13Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new512 seed=2 ops=vecsort bands=medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,96.44,95.21,28.86 +vecsort,builtin,100000,1,15,9,13.00,12.80,19.47 +vecsort,copy,100000,1,47,9,4.40,4.33,20.68 diff --git a/tests/beman/big_int/perf/item1/mac_study64_run1.csv b/tests/beman/big_int/perf/item1/mac_study64_run1.csv new file mode 100644 index 00000000..4611097f --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study64_run1.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:08:36Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2686022,9,7.28,7.22,19.73 +add,inplace,1,1,2811781,9,3.57,3.47,19.95 +add,kernel,1,1,17509394,9,1.14,1.14,20.01 +add,floor,1,1,2064444,9,9.21,9.16,19.21 +add,gmp,1,1,13448823,9,1.49,1.48,20.10 +add,gmpz,1,1,6710626,9,2.98,2.97,20.48 +add,auto,2,2,1365760,9,15.58,14.39,20.79 +add,inplace,2,2,2593711,9,3.85,3.84,19.99 +add,kernel,2,2,14366586,9,1.40,1.39,20.14 +add,floor,2,2,2023695,9,9.97,9.84,19.96 +add,gmp,2,2,11438330,9,1.96,1.74,21.74 +add,gmpz,2,2,6219651,9,3.23,3.19,21.09 +add,auto,4,4,1339033,9,14.28,14.20,19.15 +add,inplace,4,4,2841415,9,3.61,3.59,20.52 +add,kernel,4,4,10323530,9,1.93,1.92,19.99 +add,floor,4,4,1956230,9,10.43,10.17,20.10 +add,gmp,4,4,11473579,9,1.74,1.73,19.94 +add,gmpz,4,4,4121952,9,5.90,4.65,21.81 +add,auto,8,8,1341448,9,14.94,14.69,20.04 +add,inplace,8,8,2575267,9,3.86,3.85,20.05 +add,kernel,8,8,5767434,9,3.50,3.46,20.22 +add,floor,8,8,1518777,9,11.93,11.90,18.45 +add,gmp,8,8,8979587,9,2.26,2.23,20.22 +add,gmpz,8,8,5125414,9,3.84,3.80,19.20 +add,auto,16,16,1152149,9,17.36,16.64,19.69 +add,inplace,16,16,1783326,9,5.59,5.55,19.95 +add,kernel,16,16,2662828,9,7.56,7.48,20.14 +add,floor,16,16,1412775,9,13.94,13.90,19.81 +add,gmp,16,16,6204794,9,3.23,3.22,20.07 +add,gmpz,16,16,4451911,9,4.49,4.48,20.13 +sub,auto,1,1,2498678,9,7.95,7.88,19.86 +sub,inplace,1,1,3043844,9,3.50,3.28,21.16 +sub,kernel,1,1,19148186,9,1.05,1.04,20.05 +sub,floor,1,1,11499780,9,1.74,1.73,19.98 +sub,gmp,1,1,12977002,9,1.49,1.49,19.39 +sub,gmpz,1,1,8076576,9,2.48,2.48,20.04 +sub,auto,2,2,1381136,9,14.56,14.36,20.12 +sub,inplace,2,2,2880859,9,3.49,3.47,20.27 +sub,kernel,2,2,14039839,9,1.42,1.41,19.88 +sub,floor,2,2,2167147,9,9.43,9.40,20.44 +sub,gmp,2,2,11505806,9,1.80,1.74,19.77 +sub,gmpz,2,2,6709578,9,2.98,2.96,19.99 +sub,auto,4,4,1375633,9,14.33,14.16,19.81 +sub,inplace,4,4,2869202,9,3.35,3.34,19.47 +sub,kernel,4,4,10316486,9,1.94,1.94,20.05 +sub,floor,4,4,2008063,9,10.16,9.92,20.61 +sub,gmp,4,4,11385902,9,1.74,1.73,19.83 +sub,gmpz,4,4,7319155,9,2.73,2.73,20.00 +sub,auto,8,8,1267676,9,15.74,15.54,19.94 +sub,inplace,8,8,2407098,9,4.08,4.03,19.69 +sub,kernel,8,8,5722784,9,3.48,3.47,19.97 +sub,floor,8,8,1680521,9,11.67,11.41,19.56 +sub,gmp,8,8,8959282,9,2.24,2.23,20.05 +sub,gmpz,8,8,6169131,9,3.23,3.22,19.92 +sub,auto,16,16,1154567,9,17.76,17.26,20.59 +sub,inplace,16,16,1954055,9,5.14,5.11,20.19 +sub,kernel,16,16,2595765,9,7.72,7.65,20.08 +sub,floor,16,16,1299811,9,15.38,15.01,19.97 +sub,gmp,16,16,6206739,9,3.23,2.97,19.79 +sub,gmpz,16,16,4595722,9,4.39,4.35,20.14 +shl,auto,1,13,1711656,9,11.72,11.55,20.01 +shl,inplace,1,13,4030796,9,2.49,2.48,20.32 +shl,kernel,1,13,8971268,9,2.24,2.23,20.09 +shl,kernelip,1,13,8954631,9,1.79,1.12,20.06 +shl,floor,1,13,1864143,9,10.67,10.42,19.92 +shl,gmp,1,13,16184987,9,1.24,1.24,20.10 +shl,gmpz,1,13,10075459,9,1.99,1.98,20.04 +shl,auto,4,13,1540947,9,12.47,12.43,19.24 +shl,inplace,4,13,2719729,9,3.81,3.77,21.27 +shl,kernel,4,13,5367410,9,3.73,3.72,20.03 +shl,kernelip,4,13,2954854,9,3.37,3.35,20.05 +shl,floor,4,13,1508932,9,13.16,13.14,19.92 +shl,gmp,4,13,10077984,9,1.99,1.98,20.18 +shl,gmpz,4,13,7240335,9,2.74,2.73,19.81 +shl,auto,16,13,1258096,9,15.53,15.36,19.59 +shl,inplace,16,13,1882912,9,5.30,5.26,20.14 +shl,kernel,16,13,4920632,9,4.05,4.04,19.92 +shl,kernelip,16,13,1352558,9,6.82,6.72,18.40 +shl,floor,16,13,1606453,9,12.35,12.16,19.76 +shl,gmp,16,13,5739348,9,3.48,3.48,20.11 +shl,gmpz,16,13,3881727,9,5.20,5.15,20.14 +shr,auto,1,13,3077812,9,6.96,6.60,21.28 +shr,inplace,1,13,3002541,9,3.30,3.29,19.85 +shr,kernel,1,13,8811088,9,2.24,2.22,19.69 +shr,floor,1,13,8038947,9,2.50,2.47,20.20 +shr,gmp,1,13,20000001,9,0.99,0.99,19.85 +shr,gmpz,1,13,10071839,9,1.99,1.99,20.61 +shr,auto,4,13,1441255,9,13.88,13.81,20.08 +shr,inplace,4,13,2761985,9,3.67,3.56,20.03 +shr,kernel,4,13,5370996,9,3.73,3.71,20.02 +shr,floor,4,13,1790203,9,13.89,11.43,24.57 +shr,gmp,4,13,11446891,9,1.74,1.73,19.89 +shr,gmpz,4,13,7320042,9,2.74,2.73,20.14 +shr,auto,16,13,1098554,9,18.38,18.07,20.32 +shr,inplace,16,13,1930451,9,5.19,5.16,20.05 +shr,kernel,16,13,4812640,9,4.20,4.15,20.17 +shr,floor,16,13,1514647,9,13.14,12.94,19.90 +shr,gmp,16,13,6204760,9,3.23,3.22,20.07 +shr,gmpz,16,13,4726483,9,4.23,4.22,20.01 +mul,auto,1,1,1471666,9,14.39,13.70,20.24 +mul,gmp,1,1,5368486,9,3.72,3.72,19.99 +mul,gmpz,1,1,7327292,9,2.74,2.73,20.04 +mul,auto,2,2,1106925,9,18.25,18.02,20.17 +mul,kernel,2,2,3176994,9,6.37,6.15,20.04 +mul,floor,2,2,1347078,9,14.45,14.39,19.49 +mul,gmp,2,2,4470046,9,4.47,4.23,19.85 +mul,gmpz,2,2,3197689,9,6.51,6.21,20.89 +mul,auto,3,3,1042781,9,19.28,19.19,20.25 +mul,kernel,3,3,2520110,9,8.19,7.94,20.53 +mul,floor,3,3,1154912,9,17.38,16.38,19.84 +mul,gmp,3,3,3191709,9,6.14,6.09,19.65 +mul,gmpz,3,3,2321270,9,9.12,7.90,20.68 +mul,auto,4,4,946163,9,21.79,21.16,20.55 +mul,kernel,4,4,1801963,9,11.12,10.89,20.00 +mul,floor,4,4,1189077,9,16.89,16.62,20.00 +mul,gmp,4,4,2160064,9,9.69,9.57,21.07 +mul,gmpz,4,4,2006003,9,10.95,10.91,22.13 +mul,auto,6,6,504565,9,39.71,38.82,19.99 +mul,kernel,6,6,1033991,9,19.33,18.66,19.84 +mul,floor,6,6,792090,9,24.43,23.67,19.28 +mul,gmp,6,6,1273472,9,14.51,14.36,18.47 +mul,gmpz,6,6,1104432,9,18.36,17.38,20.08 +mul,auto,8,8,572189,9,35.15,34.82,20.14 +mul,kernel,8,8,870287,9,22.93,22.90,19.97 +mul,floor,8,8,659110,9,30.35,30.13,20.02 +mul,gmp,8,8,893822,9,22.57,22.40,20.26 +mul,gmpz,8,8,815269,9,24.63,24.46,20.08 +mul,auto,12,12,371687,9,53.85,53.70,20.01 +mul,kernel,12,12,490337,9,41.14,40.65,20.14 +mul,floor,12,12,405886,9,49.18,48.99,19.97 +mul,gmp,12,12,178667,9,111.83,109.91,20.03 +mul,gmpz,12,12,425130,9,46.77,46.48,19.90 +mul,auto,16,16,240204,9,82.83,82.53,19.95 +mul,kernel,16,16,286219,9,70.22,69.46,20.11 +mul,floor,16,16,243245,9,81.12,78.43,19.52 +mul,gmp,16,16,263207,9,76.47,75.96,20.12 +mul,gmpz,16,16,255118,9,77.89,77.75,19.89 +sqr,auto,4,4,934266,9,21.66,21.31,20.63 +sqr,kernel,4,4,1804793,9,11.24,11.16,20.31 +sqr,floor,4,4,1257702,9,16.24,15.89,20.33 +sqr,gmp,4,4,2881516,9,6.94,6.93,20.01 +sqr,gmpz,4,4,2122383,9,9.48,8.93,20.00 +sqr,auto,16,16,262876,9,75.36,74.76,19.81 +sqr,kernel,16,16,310970,9,63.73,63.48,19.85 +sqr,floor,16,16,276164,9,72.29,68.58,19.78 +sqr,gmp,16,16,328563,9,62.56,61.58,20.64 +sqr,gmpz,16,16,301749,9,66.61,66.44,20.10 +divrem,auto,2,1,712841,9,28.11,28.04,20.21 +divrem,kernel,2,1,3562047,9,5.71,5.66,20.33 +divrem,floor,2,1,1517705,9,13.75,13.18,20.63 +divrem,gmp,2,1,3956422,9,5.06,5.00,19.97 +divrem,gmpz,2,1,2291395,9,8.75,8.67,20.04 +divrem,auto,8,4,286040,9,70.23,69.71,20.11 +divrem,kernel,8,4,487126,9,40.68,39.75,19.80 +divrem,floor,8,4,358382,9,55.81,55.21,20.15 +divrem,gmp,8,4,508375,9,40.00,39.19,20.29 +divrem,gmpz,8,4,465933,9,43.08,42.99,20.09 +divrem,auto,32,16,46752,9,427.95,421.13,19.97 +divrem,kernel,32,16,50796,9,394.78,387.69,19.98 +divrem,floor,32,16,48739,9,410.62,396.51,19.93 +divrem,gmp,32,16,96673,9,207.46,203.69,20.00 +divrem,gmpz,32,16,94234,9,209.91,205.85,19.70 diff --git a/tests/beman/big_int/perf/item1/mac_study64_run2.csv b/tests/beman/big_int/perf/item1/mac_study64_run2.csv new file mode 100644 index 00000000..3c5583eb --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study64_run2.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:11:24Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2597674,9,7.71,7.63,20.00 +add,inplace,1,1,2793998,9,3.47,3.46,19.72 +add,kernel,1,1,17484398,9,1.14,1.14,19.98 +add,floor,1,1,2229010,9,9.68,8.92,21.01 +add,gmp,1,1,13440533,9,1.49,1.48,20.25 +add,gmpz,1,1,6696191,9,2.98,2.96,20.49 +add,auto,2,2,1266753,9,15.77,15.49,19.94 +add,inplace,2,2,2596796,9,4.01,3.85,20.99 +add,kernel,2,2,14358028,9,1.39,1.39,19.96 +add,floor,2,2,2118460,9,9.53,9.44,20.17 +add,gmp,2,2,10063753,9,1.99,1.97,20.18 +add,gmpz,2,2,5977064,9,3.25,3.23,19.68 +add,auto,4,4,1430027,9,14.00,13.96,20.04 +add,inplace,4,4,2879156,9,3.49,3.48,20.39 +add,kernel,4,4,10383799,9,1.92,1.92,19.97 +add,floor,4,4,1966301,9,10.43,10.17,20.44 +add,gmp,4,4,11510767,9,1.74,1.73,20.02 +add,gmpz,4,4,3537266,9,6.07,5.71,21.23 +add,auto,8,8,1311165,9,15.63,15.29,20.41 +add,inplace,8,8,2600379,9,3.88,3.84,20.36 +add,kernel,8,8,5750047,9,3.47,3.46,19.96 +add,floor,8,8,1693628,9,12.16,11.66,20.54 +add,gmp,8,8,8943935,9,2.23,2.23,19.99 +add,gmpz,8,8,4670381,9,4.49,4.09,20.67 +add,auto,16,16,1213947,9,16.63,16.38,20.19 +add,inplace,16,16,1780318,9,5.58,5.58,19.96 +add,kernel,16,16,2645089,9,7.59,7.54,20.07 +add,floor,16,16,1461587,9,13.85,13.68,19.83 +add,gmp,16,16,6277789,9,3.22,2.90,19.62 +add,gmpz,16,16,4460416,9,4.49,4.48,20.03 +sub,auto,1,1,2452330,9,7.94,7.69,19.56 +sub,inplace,1,1,2880935,9,3.49,3.47,20.33 +sub,kernel,1,1,19166069,9,1.05,1.04,20.04 +sub,floor,1,1,11516693,9,1.74,1.73,20.02 +sub,gmp,1,1,13459751,9,1.49,1.48,20.05 +sub,gmpz,1,1,8077992,9,2.49,2.48,20.14 +sub,auto,2,2,1415064,9,14.72,14.11,20.71 +sub,inplace,2,2,2857560,9,3.48,3.46,19.86 +sub,kernel,2,2,14102801,9,1.41,1.41,19.99 +sub,floor,2,2,2240543,9,8.97,8.93,20.32 +sub,gmp,2,2,11397855,9,1.76,1.74,20.47 +sub,gmpz,2,2,7336444,9,2.73,2.73,20.04 +sub,auto,4,4,1428316,9,14.44,14.05,20.80 +sub,inplace,4,4,2769990,9,3.48,3.46,19.44 +sub,kernel,4,4,9739131,9,1.94,1.93,18.87 +sub,floor,4,4,2013028,9,9.97,9.90,20.29 +sub,gmp,4,4,11507382,9,1.74,1.73,19.99 +sub,gmpz,4,4,7276705,9,2.73,2.73,19.91 +sub,auto,8,8,1266853,9,15.48,15.21,19.58 +sub,inplace,8,8,2444117,9,4.10,4.03,20.00 +sub,kernel,8,8,5742005,9,3.52,3.48,20.17 +sub,floor,8,8,1791872,9,11.77,11.65,19.02 +sub,gmp,8,8,8879331,9,2.23,2.23,19.84 +sub,gmpz,8,8,6191404,9,3.23,3.22,19.99 +sub,auto,16,16,1101335,9,18.80,18.30,20.60 +sub,inplace,16,16,1907986,9,5.22,5.22,19.96 +sub,kernel,16,16,2593825,9,7.69,7.63,20.05 +sub,floor,16,16,1339087,9,15.21,15.14,20.52 +sub,gmp,16,16,6741793,9,2.98,2.95,20.57 +sub,gmpz,16,16,4505083,9,4.39,4.36,19.76 +shl,auto,1,13,1590934,9,12.11,11.86,19.26 +shl,inplace,1,13,4027441,9,2.49,2.48,20.27 +shl,kernel,1,13,8894671,9,2.24,2.23,19.93 +shl,kernelip,1,13,8353954,9,1.13,1.12,22.07 +shl,floor,1,13,1830118,9,10.93,10.89,20.13 +shl,gmp,1,13,16119257,9,1.24,1.23,20.03 +shl,gmpz,1,13,9964147,9,2.01,1.98,19.94 +shl,auto,4,13,1546973,9,12.90,12.79,19.99 +shl,inplace,4,13,2639830,9,3.84,3.71,20.41 +shl,kernel,4,13,5375708,9,3.72,3.53,19.90 +shl,kernelip,4,13,2961529,9,3.37,3.35,19.96 +shl,floor,4,13,1488827,9,12.89,12.66,19.50 +shl,gmp,4,13,10063265,9,1.99,1.97,19.98 +shl,gmpz,4,13,7330560,9,2.73,2.72,20.01 +shl,auto,16,13,1293656,9,15.42,15.25,20.13 +shl,inplace,16,13,1862751,9,5.31,5.28,19.76 +shl,kernel,16,13,4825178,9,4.15,4.14,20.01 +shl,kernelip,16,13,1392328,9,6.81,6.72,19.03 +shl,floor,16,13,1608683,9,12.15,11.92,19.50 +shl,gmp,16,13,5683984,9,3.52,3.48,20.00 +shl,gmpz,16,13,3866740,9,5.25,5.17,20.27 +shr,auto,1,13,2878553,9,6.95,6.91,20.00 +shr,inplace,1,13,3555401,9,3.31,2.74,19.83 +shr,kernel,1,13,8968720,9,2.23,2.22,20.03 +shr,floor,1,13,8061886,9,2.48,2.45,19.98 +shr,gmp,1,13,20000001,9,0.99,0.99,19.85 +shr,gmpz,1,13,10081112,9,1.99,1.98,20.08 +shr,auto,4,13,1429878,9,13.91,13.78,19.98 +shr,inplace,4,13,2816065,9,3.57,3.55,19.80 +shr,kernel,4,13,5374028,9,3.77,3.73,20.18 +shr,floor,4,13,1781436,9,12.11,11.90,21.53 +shr,gmp,4,13,11500501,9,1.74,1.73,19.99 +shr,gmpz,4,13,7341757,9,2.73,2.72,20.03 +shr,auto,16,13,1124171,9,17.97,17.83,20.30 +shr,inplace,16,13,1923784,9,5.27,5.23,20.30 +shr,kernel,16,13,4811827,9,4.17,4.15,20.06 +shr,floor,16,13,1545096,9,13.49,12.91,20.79 +shr,gmp,16,13,6186871,9,3.23,3.22,20.00 +shr,gmpz,16,13,4732968,9,4.23,4.23,20.09 +mul,auto,1,1,1363640,9,14.61,14.08,19.74 +mul,gmp,1,1,5372936,9,3.72,3.70,20.01 +mul,gmpz,1,1,7276553,9,2.74,2.73,19.90 +mul,auto,2,2,1094243,9,18.91,18.61,20.78 +mul,kernel,2,2,3125964,9,6.19,6.10,19.51 +mul,floor,2,2,1357450,9,14.66,14.62,20.04 +mul,gmp,2,2,4262782,9,4.49,4.47,19.44 +mul,gmpz,2,2,3013139,9,6.57,6.50,19.94 +mul,auto,3,3,1015370,9,19.40,19.25,19.73 +mul,kernel,3,3,2427511,9,7.98,7.93,19.55 +mul,floor,3,3,1189477,9,16.85,16.64,19.97 +mul,gmp,3,3,3294000,9,6.08,6.05,20.08 +mul,gmpz,3,3,2485275,9,7.90,7.83,19.73 +mul,auto,4,4,934847,9,21.41,21.34,20.11 +mul,kernel,4,4,1797410,9,11.16,10.86,20.09 +mul,floor,4,4,1202132,9,17.22,16.72,20.71 +mul,gmp,4,4,2541868,9,8.95,7.89,21.71 +mul,gmpz,4,4,1788492,9,11.66,11.16,20.60 +mul,auto,6,6,732767,9,27.34,27.15,20.05 +mul,kernel,6,6,1080084,9,19.34,18.89,20.85 +mul,floor,6,6,827773,9,23.99,23.72,19.82 +mul,gmp,6,6,1374857,9,14.51,14.44,19.97 +mul,gmpz,6,6,1071268,9,18.45,17.69,19.79 +mul,auto,8,8,569787,9,35.45,35.16,20.21 +mul,kernel,8,8,873947,9,22.91,22.86,20.04 +mul,floor,8,8,652351,9,30.41,30.36,19.92 +mul,gmp,8,8,901964,9,22.14,22.07,20.01 +mul,gmpz,8,8,758654,9,26.94,24.47,20.20 +mul,auto,12,12,368355,9,53.87,53.56,19.84 +mul,kernel,12,12,490288,9,41.25,40.75,20.22 +mul,floor,12,12,404705,9,49.38,49.18,19.98 +mul,gmp,12,12,454443,9,44.10,43.97,20.04 +mul,gmpz,12,12,427905,9,46.64,46.43,19.96 +mul,auto,16,16,242784,9,82.78,82.34,20.11 +mul,kernel,16,16,287766,9,69.50,69.39,20.01 +mul,floor,16,16,253294,9,79.13,78.57,20.01 +mul,gmp,16,16,258475,9,77.43,76.21,20.00 +mul,gmpz,16,16,255470,9,78.34,78.17,20.01 +sqr,auto,4,4,920848,9,23.90,21.45,19.68 +sqr,kernel,4,4,1788679,9,11.24,11.18,20.13 +sqr,floor,4,4,1182081,9,20.16,16.13,19.98 +sqr,gmp,4,4,2841569,9,6.96,6.93,19.89 +sqr,gmpz,4,4,2121470,9,9.71,9.48,20.62 +sqr,auto,16,16,264383,9,75.88,75.24,20.29 +sqr,kernel,16,16,314582,9,63.76,63.54,20.05 +sqr,floor,16,16,275696,9,72.26,71.45,19.87 +sqr,gmp,16,16,322090,9,63.93,61.59,20.44 +sqr,gmpz,16,16,304061,9,65.82,61.90,19.89 +divrem,auto,2,1,940535,9,21.16,20.58,19.85 +divrem,kernel,2,1,3188479,9,6.33,6.27,20.18 +divrem,floor,2,1,1474785,9,13.48,13.41,19.92 +divrem,gmp,2,1,3997293,9,5.02,4.97,20.04 +divrem,gmpz,2,1,2310884,9,8.68,8.62,20.05 +divrem,auto,8,4,252153,9,79.74,78.94,20.14 +divrem,kernel,8,4,381604,9,51.47,50.89,19.68 +divrem,floor,8,4,306781,9,65.37,64.91,20.11 +divrem,gmp,8,4,482826,9,41.67,41.19,20.13 +divrem,gmpz,8,4,451226,9,44.18,43.31,19.91 +divrem,auto,32,16,45860,9,431.45,419.66,19.68 +divrem,kernel,32,16,50726,9,391.33,377.65,19.81 +divrem,floor,32,16,48109,9,417.74,398.23,20.02 +divrem,gmp,32,16,96341,9,207.65,202.89,19.97 +divrem,gmpz,32,16,95659,9,208.77,205.54,19.94 diff --git a/tests/beman/big_int/perf/item1/mac_study64_vecsort_run1.csv b/tests/beman/big_int/perf/item1/mac_study64_vecsort_run1.csv new file mode 100644 index 00000000..6d5ed98b --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study64_vecsort_run1.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:09:17Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=vecsort bands=medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,89.17,88.56,26.89 +vecsort,builtin,100000,1,16,9,13.46,12.96,21.30 +vecsort,copy,100000,1,75,9,2.69,2.66,20.13 diff --git a/tests/beman/big_int/perf/item1/mac_study64_vecsort_run2.csv b/tests/beman/big_int/perf/item1/mac_study64_vecsort_run2.csv new file mode 100644 index 00000000..a2c32b47 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_study64_vecsort_run2.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:12:05Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=vecsort bands=medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,86.56,85.29,25.85 +vecsort,builtin,100000,1,16,9,12.97,12.78,20.84 +vecsort,copy,100000,1,75,9,2.70,2.66,20.32 diff --git a/tests/beman/big_int/perf/item1/x64_base64_seed1a.csv b/tests/beman/big_int/perf/item1/x64_base64_seed1a.csv new file mode 100644 index 00000000..68676f2a --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_base64_seed1a.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T16:59:07Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2386193,9,8.24,8.16,19.68 +add,inplace,1,1,2394258,9,4.15,4.14,19.92 +add,kernel,1,1,10522148,9,1.90,1.89,19.97 +add,floor,1,1,2036257,9,9.85,9.82,20.09 +add,gmp,1,1,8813225,9,2.27,2.27,19.98 +add,gmpz,1,1,4730952,9,4.23,4.22,20.00 +add,auto,2,2,1121706,9,17.83,17.79,20.03 +add,inplace,2,2,1680791,9,5.95,5.88,20.08 +add,kernel,2,2,8051696,9,2.49,2.37,19.95 +add,floor,2,2,1954153,9,10.25,10.20,20.03 +add,gmp,2,2,8653262,9,2.31,2.31,19.99 +add,gmpz,2,2,4721369,9,4.24,4.23,20.01 +add,auto,4,4,1112055,9,17.99,17.91,20.01 +add,inplace,4,4,1769136,9,5.64,5.63,19.98 +add,kernel,4,4,6413057,9,3.16,3.11,20.39 +add,floor,4,4,1819960,9,10.97,10.97,19.99 +add,gmp,4,4,7855950,9,2.55,2.55,20.20 +add,gmpz,4,4,4260427,9,4.43,4.43,19.04 +add,auto,8,8,1044024,9,19.15,19.11,20.02 +add,inplace,8,8,1359132,9,7.36,7.34,19.99 +add,kernel,8,8,4257010,9,4.63,4.62,19.83 +add,floor,8,8,1598250,9,12.52,12.51,20.01 +add,gmp,8,8,5409542,9,3.69,3.69,19.95 +add,gmpz,8,8,4199827,9,4.74,4.73,19.94 +add,auto,16,16,770633,9,25.73,25.56,19.86 +add,inplace,16,16,851247,9,11.79,11.76,20.10 +add,kernel,16,16,2326919,9,8.60,8.57,20.05 +add,floor,16,16,1199062,9,15.62,15.59,18.99 +add,gmp,16,16,3626194,9,5.50,5.48,19.94 +add,gmpz,16,16,3012814,9,6.64,6.61,20.00 +add,auto,64,64,314917,9,63.53,62.99,19.98 +add,inplace,64,64,255439,9,39.05,38.86,19.93 +add,kernel,64,64,602296,9,33.17,33.14,19.98 +add,floor,64,64,479076,9,41.32,40.71,19.80 +add,gmp,64,64,1286377,9,15.55,15.55,20.00 +add,gmpz,64,64,1212468,9,16.49,16.46,20.03 +add,auto,256,256,89408,9,223.60,223.49,20.01 +add,inplace,256,256,68412,9,150.05,146.05,20.61 +add,kernel,256,256,139727,9,142.52,142.50,19.92 +add,floor,256,256,125904,9,158.81,158.59,19.99 +add,gmp,256,256,251355,9,78.23,78.19,19.68 +add,gmpz,256,256,251595,9,79.49,79.39,20.00 +add,auto,1024,1024,23770,9,841.54,841.32,20.00 +add,inplace,1024,1024,17157,9,582.91,582.83,20.00 +add,kernel,1024,1024,34580,9,578.45,578.32,20.01 +add,floor,1024,1024,33662,9,594.21,594.17,20.01 +add,gmp,1024,1024,51227,9,390.41,390.40,20.00 +add,gmpz,1024,1024,51106,9,405.90,396.99,20.65 +add,auto,2000,2000,11606,9,1723.16,1722.92,20.00 +add,inplace,2000,2000,8812,9,1134.85,1134.75,20.00 +add,kernel,2000,2000,17653,9,1132.99,1132.95,20.00 +add,floor,2000,2000,17398,9,1149.41,1149.01,20.00 +add,gmp,2000,2000,43135,9,463.54,463.53,20.01 +add,gmpz,2000,2000,41458,9,482.36,480.79,20.00 +add,auto,1024,1,71327,9,280.50,280.28,20.01 +add,inplace,1024,1,17239,9,580.20,580.14,20.00 +add,kernel,1024,1,34599,9,577.73,577.71,20.04 +add,floor,1024,1,33698,9,597.43,593.43,20.26 +add,gmp,1024,1,82872,9,232.65,232.62,19.38 +add,gmpz,1024,1,85446,9,233.94,233.74,19.99 +sub,auto,1,1,2199768,9,9.17,9.09,20.21 +sub,inplace,1,1,2452365,9,4.05,4.04,19.89 +sub,kernel,1,1,13236173,9,1.51,1.51,20.00 +sub,floor,1,1,10589050,9,1.89,1.89,20.04 +sub,gmp,1,1,8824044,9,2.27,2.27,20.00 +sub,gmpz,1,1,4522441,9,4.41,4.39,19.95 +sub,auto,2,2,1042371,9,19.20,19.12,20.02 +sub,inplace,2,2,2143094,9,4.68,4.66,20.17 +sub,kernel,2,2,9074171,9,2.12,2.08,19.33 +sub,floor,2,2,1997719,9,10.02,10.01,20.01 +sub,gmp,2,2,8657858,9,2.30,2.30,20.11 +sub,gmpz,2,2,4516461,9,4.43,4.43,20.04 +sub,auto,4,4,1058756,9,18.89,18.86,20.04 +sub,inplace,4,4,1823852,9,5.50,5.49,20.10 +sub,kernel,4,4,7017101,9,2.89,2.86,20.32 +sub,floor,4,4,1850872,9,10.80,10.79,19.98 +sub,gmp,4,4,7877139,9,2.54,2.53,19.99 +sub,gmpz,4,4,4243814,9,4.65,4.62,19.84 +sub,auto,8,8,906753,9,21.16,20.48,19.05 +sub,inplace,8,8,1378818,9,7.26,7.25,20.02 +sub,kernel,8,8,4481870,9,4.48,4.45,20.06 +sub,floor,8,8,1611861,9,12.44,12.40,20.12 +sub,gmp,8,8,5426432,9,3.68,3.68,19.99 +sub,gmpz,8,8,3961055,9,5.06,5.03,20.05 +sub,auto,16,16,769267,9,25.76,25.21,19.76 +sub,inplace,16,16,934672,9,10.71,10.70,20.02 +sub,kernel,16,16,2453516,9,8.12,8.07,19.91 +sub,floor,16,16,1292831,9,15.47,15.44,20.01 +sub,gmp,16,16,3632900,9,5.52,5.50,20.38 +sub,gmpz,16,16,2818317,9,6.94,6.88,19.55 +sub,auto,64,64,303594,9,66.12,65.84,20.07 +sub,inplace,64,64,264153,9,37.85,37.32,19.96 +sub,kernel,64,64,607577,9,32.91,32.87,20.00 +sub,floor,64,64,473758,9,42.17,42.09,19.98 +sub,gmp,64,64,1294446,9,15.45,15.45,20.01 +sub,gmpz,64,64,1194619,9,16.74,16.71,20.00 +sub,auto,256,256,88851,9,224.99,224.76,19.99 +sub,inplace,256,256,68805,9,145.35,145.29,20.00 +sub,kernel,256,256,140021,9,147.43,142.85,20.61 +sub,floor,256,256,126070,9,158.28,158.09,19.96 +sub,gmp,256,256,255664,9,78.23,78.22,20.00 +sub,gmpz,256,256,250515,9,79.87,79.75,20.01 +sub,auto,1024,1024,23774,9,841.52,841.27,20.01 +sub,inplace,1024,1024,17162,9,581.59,581.50,19.97 +sub,kernel,1024,1024,34591,9,578.20,578.16,20.00 +sub,floor,1024,1024,33671,9,594.20,593.99,20.01 +sub,gmp,1024,1024,51303,9,389.84,389.83,20.07 +sub,gmpz,1024,1024,50215,9,405.38,391.22,20.30 +sub,auto,2000,2000,11482,9,1742.13,1741.89,20.02 +sub,inplace,2000,2000,8820,9,1133.79,1133.72,20.01 +sub,kernel,2000,2000,17675,9,1131.27,1131.22,20.00 +sub,floor,2000,2000,17406,9,1149.27,1149.15,20.00 +sub,gmp,2000,2000,41724,9,477.85,477.82,19.94 +sub,gmpz,2000,2000,41355,9,483.61,482.15,19.99 +sub,auto,1024,1,70650,9,282.89,282.62,19.99 +sub,inplace,1024,1,17158,9,579.68,579.62,19.89 +sub,kernel,1024,1,34677,9,576.78,576.77,20.00 +sub,floor,1024,1,33728,9,602.89,592.95,20.42 +sub,gmp,1024,1,82735,9,233.95,233.83,19.36 +sub,gmpz,1024,1,85435,9,234.56,234.18,20.06 +shl,auto,1,13,1191071,9,16.76,16.58,19.96 +shl,inplace,1,13,2402761,9,4.16,4.11,19.94 +shl,kernel,1,13,9615687,9,2.08,2.07,19.96 +shl,kernelip,1,13,5598695,9,1.78,1.75,19.96 +shl,floor,1,13,2077756,9,9.82,9.82,20.42 +shl,gmp,1,13,9465924,9,1.93,1.92,18.22 +shl,gmpz,1,13,5759795,9,3.47,3.47,19.96 +shl,auto,4,13,1071197,9,18.73,18.63,20.18 +shl,inplace,4,13,1861827,9,5.27,5.24,19.70 +shl,kernel,4,13,5706246,9,3.46,3.44,19.76 +shl,kernelip,4,13,3426062,9,2.93,2.91,20.10 +shl,floor,4,13,1726130,9,11.26,11.24,19.51 +shl,gmp,4,13,7990504,9,2.31,2.31,18.46 +shl,gmpz,4,13,4946163,9,4.04,4.04,20.00 +shl,auto,16,13,804884,9,24.50,24.28,19.71 +shl,inplace,16,13,1072256,9,9.33,9.32,20.02 +shl,kernel,16,13,2688433,9,7.46,7.44,20.10 +shl,kernelip,16,13,1326585,9,7.49,7.23,19.92 +shl,floor,16,13,1247726,9,15.24,15.21,19.00 +shl,gmp,16,13,4929909,9,4.05,4.05,20.17 +shl,gmpz,16,13,3436944,9,5.82,5.81,20.02 +shl,auto,256,13,143927,9,138.19,135.87,19.91 +shl,inplace,256,13,107014,9,93.16,92.83,19.92 +shl,kernel,256,13,208852,9,95.75,95.53,20.00 +shl,kernelip,256,13,102309,9,97.75,97.70,20.00 +shl,floor,256,13,174826,9,118.55,118.20,20.72 +shl,gmp,256,13,419186,9,48.08,47.92,20.21 +shl,gmpz,256,13,367901,9,52.03,51.22,19.21 +shl,auto,2000,13,21760,9,916.48,914.30,19.94 +shl,inplace,2000,13,15195,9,657.27,656.17,19.98 +shl,kernel,2000,13,27814,9,728.83,719.05,20.18 +shl,kernelip,2000,13,13980,9,715.38,715.30,20.00 +shl,floor,2000,13,27176,9,739.43,739.14,20.10 +shl,gmp,2000,13,58841,9,340.56,338.67,20.03 +shl,gmpz,2000,13,58001,9,344.13,343.05,19.97 +shl,auto,2000,77,18804,9,1064.16,1063.65,20.02 +shl,inplace,2000,77,13069,9,764.90,763.98,20.04 +shl,kernel,2000,77,23375,9,877.76,854.06,20.54 +shl,kernelip,2000,77,12158,9,822.87,822.54,20.01 +shl,floor,2000,77,22932,9,872.22,870.70,20.00 +shl,gmp,2000,77,58109,9,344.23,344.22,20.00 +shl,gmpz,2000,77,57984,9,344.92,344.88,20.00 +shr,auto,1,13,1944312,9,10.27,10.23,19.99 +shr,inplace,1,13,2690750,9,3.69,3.66,19.88 +shr,kernel,1,13,11666816,9,1.71,1.71,19.98 +shr,floor,1,13,8692271,9,2.30,2.29,20.01 +shr,gmp,1,13,10388260,9,1.93,1.93,20.00 +shr,gmpz,1,13,6110962,9,3.36,3.28,20.61 +shr,auto,4,13,953539,9,21.10,21.05,20.14 +shr,inplace,4,13,2090648,9,4.80,4.74,20.05 +shr,kernel,4,13,5771518,9,3.47,3.46,20.05 +shr,floor,4,13,1665675,9,12.01,11.98,20.01 +shr,gmp,4,13,8590560,9,2.33,2.31,20.01 +shr,gmpz,4,13,5036568,9,3.96,3.95,19.95 +shr,auto,16,13,768452,9,26.07,26.01,20.03 +shr,inplace,16,13,1109753,9,9.01,8.99,20.01 +shr,kernel,16,13,2418767,9,8.21,8.14,19.86 +shr,floor,16,13,1154429,9,17.61,17.22,20.43 +shr,gmp,16,13,4280753,9,4.64,4.64,19.90 +shr,gmpz,16,13,2726962,9,7.34,7.28,20.00 +shr,auto,256,13,142369,9,140.71,140.54,20.04 +shr,inplace,256,13,106201,9,93.84,93.72,19.94 +shr,kernel,256,13,178239,9,111.95,111.34,19.94 +shr,floor,256,13,150591,9,133.13,132.94,20.04 +shr,gmp,256,13,408660,9,49.00,48.84,20.02 +shr,gmpz,256,13,387603,9,51.63,51.54,20.01 +shr,auto,2000,13,21067,9,948.92,947.19,20.00 +shr,inplace,2000,13,15228,9,657.58,656.67,20.21 +shr,kernel,2000,13,23145,9,814.38,811.76,19.01 +shr,floor,2000,13,24016,9,832.97,832.61,20.03 +shr,gmp,2000,13,57820,9,342.48,341.87,19.81 +shr,gmpz,2000,13,57903,9,345.33,345.17,20.00 +shr,auto,2000,77,18425,9,1084.13,1083.28,19.97 +shr,inplace,2000,77,13077,9,765.03,764.71,20.01 +shr,kernel,2000,77,24139,9,828.58,828.53,20.01 +shr,floor,2000,77,23596,9,848.19,847.23,20.01 +shr,gmp,2000,77,58732,9,341.63,341.11,20.06 +shr,gmpz,2000,77,57864,9,345.12,343.66,20.03 +mul,auto,1,1,1030059,9,19.99,19.19,20.44 +mul,gmp,1,1,5762940,9,3.45,3.41,19.82 +mul,gmpz,1,1,4947001,9,4.04,4.04,20.02 +mul,auto,2,2,718176,9,27.87,27.79,20.09 +mul,kernel,2,2,2813987,9,7.59,7.56,21.38 +mul,floor,2,2,1332617,9,15.05,14.96,20.05 +mul,gmp,2,2,5203469,9,3.83,3.80,19.91 +mul,gmpz,2,2,3260490,9,6.14,6.08,19.99 +mul,auto,3,3,670203,9,29.63,29.50,20.24 +mul,kernel,3,3,2344711,9,9.01,8.98,21.22 +mul,floor,3,3,1168079,9,17.44,16.74,20.29 +mul,gmp,3,3,2521606,9,7.95,7.91,20.05 +mul,gmpz,3,3,1993335,9,9.99,9.97,19.92 +mul,auto,4,4,630262,9,32.00,31.85,20.17 +mul,kernel,4,4,1875851,9,11.10,11.08,20.83 +mul,floor,4,4,1074965,9,18.49,18.41,19.89 +mul,gmp,4,4,2064894,9,9.68,9.66,19.99 +mul,gmpz,4,4,1648613,9,12.16,12.14,20.06 +mul,auto,6,6,478908,9,41.93,41.63,20.10 +mul,kernel,6,6,1194751,9,17.50,17.46,21.00 +mul,floor,6,6,737848,9,25.36,24.67,18.75 +mul,gmp,6,6,1252461,9,15.97,15.94,20.28 +mul,gmpz,6,6,1098782,9,18.22,18.18,20.01 +mul,auto,8,8,421942,9,47.11,47.04,19.88 +mul,kernel,8,8,808126,9,25.61,25.45,20.79 +mul,floor,8,8,608285,9,32.70,32.55,19.89 +mul,gmp,8,8,721301,9,27.61,27.50,19.92 +mul,gmpz,8,8,676572,9,29.36,29.21,19.90 +mul,auto,12,12,284325,9,70.26,70.23,20.00 +mul,kernel,12,12,421024,9,47.99,47.93,20.20 +mul,floor,12,12,362303,9,56.28,54.85,20.42 +mul,gmp,12,12,383709,9,52.06,51.71,19.97 +mul,gmpz,12,12,386740,9,51.74,51.72,20.03 +mul,auto,16,16,195810,9,101.92,101.89,19.97 +mul,kernel,16,16,251256,9,80.35,80.26,20.19 +mul,floor,16,16,230387,9,86.99,86.86,20.05 +mul,gmp,16,16,239569,9,83.43,83.38,19.99 +mul,gmpz,16,16,234027,9,85.62,85.48,20.03 +mul,auto,32,32,94705,9,211.54,210.95,20.03 +mul,kernel,32,32,105368,9,187.24,186.96,19.75 +mul,floor,32,32,99853,9,203.17,199.99,20.35 +mul,gmp,32,32,71016,9,272.91,272.79,19.45 +mul,gmpz,32,32,72674,9,275.26,275.21,20.00 +mul,auto,64,64,38805,9,515.75,514.44,20.01 +mul,kernel,64,64,41394,9,490.16,489.23,20.30 +mul,floor,64,64,40660,9,490.44,489.91,19.94 +mul,gmp,64,64,21900,9,913.28,913.09,20.00 +mul,gmpz,64,64,21849,9,915.57,915.45,20.01 +mul,auto,128,128,11486,9,1739.58,1737.87,19.98 +mul,kernel,128,128,11646,9,1719.54,1717.31,20.03 +mul,floor,128,128,11563,9,1729.06,1725.19,20.09 +mul,gmp,128,128,6783,9,2787.30,2759.17,19.01 +mul,gmpz,128,128,7201,9,2778.29,2776.35,20.00 +mul,auto,256,256,3224,9,6257.99,6200.64,20.18 +mul,kernel,256,256,3176,9,6312.03,6289.23,20.05 +mul,floor,256,256,3160,9,6326.56,6316.34,19.99 +mul,gmp,256,256,2532,9,7899.71,7898.45,20.00 +mul,gmpz,256,256,2525,9,7921.86,7916.67,20.00 +mul,auto,512,512,1039,9,19292.05,19260.51,20.05 +mul,kernel,512,512,1046,9,19142.10,19128.29,20.03 +mul,floor,512,512,1044,9,19162.78,19154.89,20.01 +mul,gmp,512,512,930,9,21849.82,21519.35,20.36 +mul,gmpz,512,512,907,9,21416.63,21402.88,19.50 +mul,auto,1000,1000,331,9,59781.19,59649.61,19.79 +mul,kernel,1000,1000,337,9,59421.13,59377.32,20.03 +mul,floor,1000,1000,337,9,59409.54,59361.06,20.02 +mul,gmp,1000,1000,369,9,54290.01,54282.64,20.03 +mul,gmpz,1000,1000,368,9,54351.05,54228.38,20.02 +mul,auto,2000,2000,113,9,177067.48,176962.08,20.01 +mul,kernel,2000,2000,114,9,176370.68,176254.24,20.11 +mul,floor,2000,2000,114,9,176418.61,176263.93,20.11 +mul,gmp,2000,2000,136,9,150948.05,146887.36,20.49 +mul,gmpz,2000,2000,136,9,147048.24,146872.09,19.99 +mul,auto,2000,100,1123,9,17891.59,17824.06,20.18 +mul,kernel,2000,100,1109,9,18078.67,17985.17,20.04 +mul,floor,2000,100,1104,9,18116.66,18065.33,20.01 +mul,gmp,2000,100,549,9,36429.01,36356.80,20.01 +mul,gmpz,2000,100,548,9,36403.83,36352.56,19.95 +sqr,auto,4,4,594311,9,33.63,33.49,19.98 +sqr,kernel,4,4,2187297,9,9.06,9.04,19.82 +sqr,floor,4,4,1215381,9,16.92,16.91,20.56 +sqr,gmp,4,4,3406846,9,6.00,5.82,20.42 +sqr,gmpz,4,4,2256739,9,8.82,8.77,19.92 +sqr,auto,16,16,251084,9,79.65,79.62,20.05 +sqr,kernel,16,16,355706,9,56.23,56.17,20.01 +sqr,floor,16,16,320137,9,62.49,62.44,20.01 +sqr,gmp,16,16,393160,9,51.70,50.85,20.27 +sqr,gmpz,16,16,366669,9,53.14,53.10,19.60 +sqr,auto,64,64,66321,9,301.25,301.03,19.99 +sqr,kernel,64,64,74203,9,269.64,269.42,20.01 +sqr,floor,64,64,72671,9,280.21,279.88,20.37 +sqr,gmp,64,64,35683,9,564.46,560.25,20.28 +sqr,gmpz,64,64,34769,9,563.81,563.59,19.69 +sqr,auto,512,512,1880,9,10642.15,10635.22,20.01 +sqr,kernel,512,512,1890,9,10581.76,10573.38,20.00 +sqr,floor,512,512,1887,9,10588.21,10584.86,19.98 +sqr,gmp,512,512,1301,9,15381.09,15354.22,20.01 +sqr,gmpz,512,512,1306,9,15254.34,15173.73,19.93 +sqr,auto,2000,2000,199,9,100700.44,100681.88,20.04 +sqr,kernel,2000,2000,200,9,100249.77,100221.24,20.05 +sqr,floor,2000,2000,200,9,100183.68,100155.43,20.06 +sqr,gmp,2000,2000,195,9,102528.74,101913.76,20.01 +sqr,gmpz,2000,2000,193,9,104543.50,102431.79,20.17 +divrem,auto,2,1,470410,9,42.56,42.36,20.01 +divrem,kernel,2,1,3654043,9,5.60,5.47,20.40 +divrem,floor,2,1,1563156,9,12.79,12.75,19.99 +divrem,gmp,2,1,2305807,9,8.69,8.68,20.04 +divrem,gmpz,2,1,1487400,9,13.42,13.39,20.01 +divrem,auto,8,4,185542,9,107.93,107.21,20.00 +divrem,kernel,8,4,478355,9,42.21,41.95,20.18 +divrem,floor,8,4,350789,9,56.40,56.15,19.77 +divrem,gmp,8,4,498764,9,40.11,39.90,20.07 +divrem,gmpz,8,4,452194,9,44.86,43.69,20.14 +divrem,auto,32,16,53368,9,375.38,372.34,20.02 +divrem,kernel,32,16,68301,9,291.91,291.23,19.94 +divrem,floor,32,16,65447,9,306.42,305.35,20.06 +divrem,gmp,32,16,104163,9,191.76,191.02,19.97 +divrem,gmpz,32,16,102978,9,193.97,193.59,19.98 +divrem,auto,128,64,5885,9,3402.49,3400.91,20.02 +divrem,kernel,128,64,6152,9,3253.48,3250.21,20.01 +divrem,floor,128,64,6120,9,3265.77,3264.03,19.98 +divrem,gmp,128,64,11650,9,1717.78,1716.66,20.03 +divrem,gmpz,128,64,11451,9,1767.38,1721.94,20.28 +divrem,auto,512,256,649,9,30838.46,30829.71,20.02 +divrem,kernel,512,256,681,9,29367.33,29349.45,20.03 +divrem,floor,512,256,664,9,30003.24,29994.23,19.92 +divrem,gmp,512,256,1218,9,16307.79,16237.78,19.86 +divrem,gmpz,512,256,1224,9,16316.75,16289.51,19.99 +divrem,auto,2000,1000,108,9,185439.62,185402.27,20.04 +divrem,kernel,2000,1000,109,9,183746.60,183651.75,20.04 +divrem,floor,2000,1000,109,9,184106.18,184069.10,20.07 +divrem,gmp,2000,1000,143,9,139235.37,138042.63,19.88 +divrem,gmpz,2000,1000,145,9,140752.61,137708.54,20.39 +divrem,auto,4000,2000,41,9,492334.63,478304.12,20.08 +divrem,kernel,4000,2000,43,9,473419.33,473247.74,20.37 +divrem,floor,4000,2000,43,9,475934.35,475751.86,20.46 +divrem,gmp,4000,2000,59,9,339851.97,339731.86,20.06 +divrem,gmpz,4000,2000,59,9,340983.58,340359.12,20.14 +divrem,auto,2000,100,137,9,146356.15,146313.53,20.05 +divrem,kernel,2000,100,139,9,144606.63,144556.04,20.10 +divrem,floor,2000,100,139,9,144661.16,144611.14,20.11 +divrem,gmp,2000,100,276,9,72558.64,72517.73,20.04 +divrem,gmpz,2000,100,276,9,72602.37,72569.37,20.04 +divrem,auto,65536,1,103,9,193746.90,193246.44,19.95 +divrem,kernel,65536,1,120,9,167123.98,166968.62,20.06 +divrem,floor,65536,1,115,9,174866.02,174551.76,20.10 +divrem,gmp,65536,1,136,9,148102.60,148095.22,20.14 +divrem,gmpz,65536,1,136,9,148122.87,148117.49,20.15 +fromchars,auto,4,10,106262,9,190.38,187.91,20.23 +fromchars,kernel,4,10,534248,9,37.48,37.36,20.01 +fromchars,gmp,4,10,641368,9,31.36,31.11,20.16 +fromchars,gmpz,4,10,297648,9,67.51,67.27,20.09 +fromchars,auto,16,10,47552,9,420.40,417.37,20.01 +fromchars,kernel,16,10,97215,9,210.44,204.78,20.49 +fromchars,gmp,16,10,160898,9,124.36,124.23,20.08 +fromchars,gmpz,16,10,76140,9,261.86,261.45,19.95 +fromchars,auto,64,10,7104,9,2777.48,2709.83,19.78 +fromchars,kernel,64,10,9301,9,2093.97,2046.79,19.77 +fromchars,gmp,64,10,22373,9,894.56,892.86,20.02 +fromchars,gmpz,64,10,14422,9,1386.00,1382.09,20.00 +fromchars,auto,256,10,693,9,28664.36,28342.13,19.88 +fromchars,kernel,256,10,775,9,25869.17,25389.49,20.10 +fromchars,gmp,256,10,2466,9,8043.17,8006.10,19.83 +fromchars,gmpz,256,10,1988,9,10064.07,10023.70,19.99 +fromchars,auto,2000,10,47,9,429825.43,429674.26,20.20 +fromchars,kernel,2000,10,49,9,409132.33,408702.73,20.05 +fromchars,gmp,2000,10,107,9,186313.56,186107.07,19.94 +fromchars,gmpz,2000,10,100,9,200908.02,200484.41,20.08 diff --git a/tests/beman/big_int/perf/item1/x64_base64_seed1b.csv b/tests/beman/big_int/perf/item1/x64_base64_seed1b.csv new file mode 100644 index 00000000..c7383df9 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_base64_seed1b.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T17:02:04Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2376329,9,8.22,8.20,19.54 +add,inplace,1,1,2408571,9,4.17,4.14,20.06 +add,kernel,1,1,10588845,9,1.89,1.89,20.00 +add,floor,1,1,2029166,9,9.84,9.83,19.99 +add,gmp,1,1,8756330,9,2.27,2.27,19.90 +add,gmpz,1,1,4812945,9,4.16,4.16,20.00 +add,auto,2,2,1120106,9,17.88,17.86,20.04 +add,inplace,2,2,1659577,9,5.90,5.87,19.72 +add,kernel,2,2,8254972,9,2.40,2.35,19.74 +add,floor,2,2,1953132,9,10.22,10.20,19.98 +add,gmp,2,2,8824120,9,2.27,2.27,20.01 +add,gmpz,2,2,4799502,9,4.18,4.17,20.08 +add,auto,4,4,1102255,9,18.19,18.13,20.05 +add,inplace,4,4,1765912,9,5.65,5.62,19.94 +add,kernel,4,4,6466109,9,3.09,3.06,20.05 +add,floor,4,4,1818712,9,10.98,10.97,19.98 +add,gmp,4,4,7865830,9,2.54,2.53,19.96 +add,gmpz,4,4,4509246,9,4.43,4.42,19.98 +add,auto,8,8,1031264,9,19.39,19.30,19.98 +add,inplace,8,8,1351004,9,7.39,7.38,19.98 +add,kernel,8,8,4302421,9,4.69,4.61,20.26 +add,floor,8,8,1598256,9,12.51,12.51,20.01 +add,gmp,8,8,5424928,9,3.69,3.69,20.00 +add,gmpz,8,8,4285588,9,4.69,4.66,20.08 +add,auto,16,16,784501,9,25.51,25.34,20.01 +add,inplace,16,16,850347,9,11.80,11.74,20.08 +add,kernel,16,16,2613508,9,7.62,7.59,19.91 +add,floor,16,16,1282556,9,15.59,15.59,20.00 +add,gmp,16,16,3580698,9,5.58,5.57,19.98 +add,gmpz,16,16,2832543,9,7.05,7.01,19.97 +add,auto,64,64,311696,9,64.27,64.07,20.03 +add,inplace,64,64,252952,9,39.49,39.44,19.99 +add,kernel,64,64,602580,9,33.18,33.15,19.99 +add,floor,64,64,483332,9,41.10,40.93,19.90 +add,gmp,64,64,1286424,9,15.55,15.55,20.01 +add,gmpz,64,64,1148554,9,17.41,17.38,19.99 +add,auto,256,256,89266,9,224.08,224.03,20.00 +add,inplace,256,256,68155,9,146.15,146.05,19.94 +add,kernel,256,256,140336,9,142.54,142.48,20.05 +add,floor,256,256,125552,9,159.43,159.15,20.01 +add,gmp,256,256,255646,9,78.23,78.23,20.00 +add,gmpz,256,256,251550,9,79.50,79.40,19.99 +add,auto,1024,1024,23770,9,841.47,841.21,20.00 +add,inplace,1024,1024,17153,9,582.97,582.80,20.00 +add,kernel,1024,1024,34571,9,578.47,578.40,20.00 +add,floor,1024,1024,33649,9,594.59,594.28,20.07 +add,gmp,1024,1024,51184,9,390.63,390.59,19.99 +add,gmpz,1024,1024,51076,9,391.57,391.54,20.00 +add,auto,2000,2000,11623,9,1720.97,1720.62,20.00 +add,inplace,2000,2000,8805,9,1135.53,1135.48,20.00 +add,kernel,2000,2000,17671,9,1131.83,1131.78,20.00 +add,floor,2000,2000,17413,9,1149.07,1148.72,20.03 +add,gmp,2000,2000,41826,9,478.18,478.15,20.00 +add,gmpz,2000,2000,41351,9,483.62,482.07,20.03 +add,auto,1024,1,71303,9,280.71,280.25,20.02 +add,inplace,1024,1,17246,9,579.82,579.78,20.00 +add,kernel,1024,1,34620,9,577.73,577.72,20.00 +add,floor,1024,1,33680,9,593.80,593.53,20.00 +add,gmp,1024,1,85965,9,235.26,232.58,20.23 +add,gmpz,1024,1,82096,9,234.14,233.55,19.39 +sub,auto,1,1,2203163,9,9.17,9.14,20.18 +sub,inplace,1,1,2477976,9,4.03,4.01,19.96 +sub,kernel,1,1,13236356,9,1.51,1.51,20.00 +sub,floor,1,1,10492934,9,1.90,1.89,19.99 +sub,gmp,1,1,8823868,9,2.27,2.27,20.00 +sub,gmpz,1,1,4599855,9,4.34,4.34,20.02 +sub,auto,2,2,1044900,9,19.20,19.14,20.05 +sub,inplace,2,2,2134277,9,4.67,4.65,19.93 +sub,kernel,2,2,9625182,9,2.08,2.08,20.05 +sub,floor,2,2,1986250,9,10.02,10.01,19.90 +sub,gmp,2,2,8824213,9,2.27,2.27,20.06 +sub,gmpz,2,2,4580755,9,4.35,4.34,19.94 +sub,auto,4,4,1051713,9,18.91,18.88,19.89 +sub,inplace,4,4,1814388,9,5.48,5.46,19.88 +sub,kernel,4,4,7053025,9,2.86,2.83,20.14 +sub,floor,4,4,1847055,9,10.79,10.78,19.93 +sub,gmp,4,4,7996920,9,2.49,2.49,19.96 +sub,gmpz,4,4,4294965,9,4.65,4.63,19.96 +sub,auto,8,8,968675,9,20.56,20.43,19.90 +sub,inplace,8,8,1377786,9,7.27,7.25,20.02 +sub,kernel,8,8,4508705,9,4.40,4.37,19.81 +sub,floor,8,8,1610372,9,12.42,12.40,20.00 +sub,gmp,8,8,5436701,9,3.68,3.67,20.02 +sub,gmpz,8,8,3968649,9,5.04,5.01,20.04 +sub,auto,16,16,776060,9,25.69,25.20,19.87 +sub,inplace,16,16,933270,9,10.70,10.67,19.96 +sub,kernel,16,16,2491571,9,8.03,8.02,20.02 +sub,floor,16,16,1295886,9,15.46,15.42,20.05 +sub,gmp,16,16,3637199,9,5.50,5.50,20.07 +sub,gmpz,16,16,2936245,9,6.80,6.77,19.97 +sub,auto,64,64,304375,9,65.78,65.56,20.01 +sub,inplace,64,64,263693,9,38.00,37.82,20.03 +sub,kernel,64,64,607453,9,32.87,32.78,19.96 +sub,floor,64,64,470789,9,42.58,42.46,20.04 +sub,gmp,64,64,1294789,9,15.45,15.45,20.01 +sub,gmpz,64,64,1194695,9,16.74,16.71,20.01 +sub,auto,256,256,89448,9,223.62,223.51,20.00 +sub,inplace,256,256,68701,9,145.51,145.45,19.99 +sub,kernel,256,256,139963,9,142.85,142.83,20.00 +sub,floor,256,256,126388,9,158.27,158.09,20.00 +sub,gmp,256,256,254860,9,78.47,78.45,20.01 +sub,gmpz,256,256,250363,9,79.84,79.77,19.99 +sub,auto,1024,1024,23771,9,841.51,841.34,20.00 +sub,inplace,1024,1024,17185,9,581.54,581.41,20.03 +sub,kernel,1024,1024,34422,9,578.17,578.13,19.90 +sub,floor,1024,1024,33681,9,594.08,593.93,20.01 +sub,gmp,1024,1024,51234,9,390.36,390.35,20.00 +sub,gmpz,1024,1024,51049,9,391.78,391.74,20.00 +sub,auto,2000,2000,11463,9,1742.11,1741.83,19.97 +sub,inplace,2000,2000,8813,9,1134.72,1134.45,20.00 +sub,kernel,2000,2000,17673,9,1131.63,1131.61,20.00 +sub,floor,2000,2000,17407,9,1148.97,1148.81,20.02 +sub,gmp,2000,2000,42257,9,473.27,473.25,20.00 +sub,gmpz,2000,2000,42794,9,467.23,465.26,19.99 +sub,auto,1024,1,70705,9,283.13,282.44,20.01 +sub,inplace,1024,1,17254,9,579.68,579.62,20.01 +sub,kernel,1024,1,34676,9,576.77,576.76,20.00 +sub,floor,1024,1,33717,9,593.07,592.95,20.01 +sub,gmp,1024,1,85502,9,233.83,233.73,19.99 +sub,gmpz,1024,1,85470,9,234.24,233.71,20.01 +shl,auto,1,13,1193542,9,16.78,16.67,20.05 +shl,inplace,1,13,2436083,9,4.11,4.09,20.02 +shl,kernel,1,13,9626340,9,2.08,2.08,20.00 +shl,kernelip,1,13,5655714,9,1.75,1.72,19.80 +shl,floor,1,13,2077721,9,9.82,9.82,20.42 +shl,gmp,1,13,9626124,9,1.92,1.91,18.47 +shl,gmpz,1,13,5771342,9,3.47,3.47,20.00 +shl,auto,4,13,1065551,9,18.66,18.46,19.86 +shl,inplace,4,13,1907651,9,5.24,5.22,19.98 +shl,kernel,4,13,5776144,9,3.45,3.44,19.96 +shl,kernelip,4,13,3333734,9,3.00,2.96,20.00 +shl,floor,4,13,1731032,9,11.19,11.18,19.37 +shl,gmp,4,13,7991562,9,2.31,2.31,18.47 +shl,gmpz,4,13,4943605,9,4.04,4.04,20.00 +shl,auto,16,13,816084,9,24.51,24.36,20.02 +shl,inplace,16,13,1073560,9,9.27,9.25,19.93 +shl,kernel,16,13,2656354,9,7.46,7.43,19.87 +shl,kernelip,16,13,1382381,9,7.14,7.07,19.81 +shl,floor,16,13,1251380,9,15.22,15.21,19.05 +shl,gmp,16,13,4905110,9,4.05,4.05,19.98 +shl,gmpz,16,13,3441228,9,5.82,5.81,20.04 +shl,auto,256,13,148369,9,135.09,133.83,20.01 +shl,inplace,256,13,107540,9,93.05,92.88,20.02 +shl,kernel,256,13,210202,9,96.16,95.49,20.19 +shl,kernelip,256,13,102365,9,97.77,97.72,20.01 +shl,floor,256,13,174833,9,116.71,116.50,20.40 +shl,gmp,256,13,424067,9,47.30,47.05,20.05 +shl,gmpz,256,13,397681,9,50.30,49.97,19.99 +shl,auto,2000,13,21851,9,914.88,913.88,20.00 +shl,inplace,2000,13,15225,9,656.75,656.21,20.00 +shl,kernel,2000,13,27795,9,719.42,719.08,20.00 +shl,kernelip,2000,13,13980,9,715.35,715.32,20.01 +shl,floor,2000,13,27203,9,740.32,738.77,20.15 +shl,gmp,2000,13,59630,9,335.48,335.36,20.05 +shl,gmpz,2000,13,59075,9,338.59,338.13,20.01 +shl,auto,2000,77,18823,9,1065.06,1064.27,20.06 +shl,inplace,2000,77,13090,9,764.48,764.20,20.03 +shl,kernel,2000,77,23518,9,848.78,848.34,19.96 +shl,kernelip,2000,77,12164,9,822.72,822.18,20.02 +shl,floor,2000,77,22945,9,872.09,870.96,20.02 +shl,gmp,2000,77,58962,9,339.34,337.73,20.01 +shl,gmpz,2000,77,58554,9,341.87,340.54,20.01 +shr,auto,1,13,1949753,9,10.27,10.23,20.01 +shr,inplace,1,13,2683576,9,3.66,3.61,19.62 +shr,kernel,1,13,11752220,9,1.70,1.70,20.00 +shr,floor,1,13,8824106,9,2.27,2.27,20.01 +shr,gmp,1,13,10574625,9,1.90,1.90,20.12 +shr,gmpz,1,13,6109309,9,3.27,3.27,20.04 +shr,auto,4,13,949564,9,21.12,21.08,20.06 +shr,inplace,4,13,2106678,9,4.76,4.72,20.10 +shr,kernel,4,13,5637827,9,3.47,3.46,19.60 +shr,floor,4,13,1659019,9,12.05,12.01,19.98 +shr,gmp,4,13,8577967,9,2.32,2.31,19.98 +shr,gmpz,4,13,5060118,9,3.97,3.95,20.09 +shr,auto,16,13,768968,9,26.08,26.00,20.06 +shr,inplace,16,13,1124419,9,8.86,8.79,19.89 +shr,kernel,16,13,2449011,9,8.19,8.14,20.08 +shr,floor,16,13,1171912,9,17.17,17.08,20.11 +shr,gmp,16,13,4654159,9,4.33,4.30,20.09 +shr,gmpz,16,13,3212266,9,6.20,6.16,20.04 +shr,auto,256,13,143035,9,139.58,139.38,19.97 +shr,inplace,256,13,106623,9,93.72,93.56,20.02 +shr,kernel,256,13,181735,9,110.03,109.97,20.00 +shr,floor,256,13,152809,9,131.14,130.88,20.04 +shr,gmp,256,13,413843,9,48.14,47.98,19.94 +shr,gmpz,256,13,395089,9,50.75,50.64,20.05 +shr,auto,2000,13,21066,9,949.87,949.33,20.04 +shr,inplace,2000,13,15207,9,657.48,656.68,20.04 +shr,kernel,2000,13,24639,9,811.76,811.74,20.03 +shr,floor,2000,13,24032,9,832.11,831.64,20.00 +shr,gmp,2000,13,59550,9,336.05,335.79,20.02 +shr,gmpz,2000,13,59038,9,338.90,338.83,20.02 +shr,auto,2000,77,18450,9,1084.33,1083.64,20.00 +shr,inplace,2000,77,13072,9,764.97,764.67,20.00 +shr,kernel,2000,77,24050,9,831.63,831.60,20.00 +shr,floor,2000,77,23171,9,852.64,849.99,19.75 +shr,gmp,2000,77,59528,9,335.94,335.91,20.00 +shr,gmpz,2000,77,58848,9,339.29,339.23,19.97 +mul,auto,1,1,1037956,9,19.22,19.19,19.96 +mul,gmp,1,1,5894738,9,3.38,3.35,19.93 +mul,gmpz,1,1,4973157,9,4.03,4.01,20.03 +mul,auto,2,2,718980,9,27.88,27.84,20.05 +mul,kernel,2,2,2762040,9,7.62,7.57,21.05 +mul,floor,2,2,1303515,9,15.58,15.37,20.29 +mul,gmp,2,2,4995920,9,4.01,4.00,20.02 +mul,gmpz,2,2,3274110,9,6.15,6.11,20.21 +mul,auto,3,3,669958,9,29.55,29.42,19.82 +mul,kernel,3,3,2360874,9,9.02,8.97,21.28 +mul,floor,3,3,1205019,9,16.63,16.51,20.04 +mul,gmp,3,3,2523209,9,7.94,7.89,20.07 +mul,gmpz,3,3,1914699,9,10.17,10.08,19.52 +mul,auto,4,4,626397,9,31.98,31.89,20.04 +mul,kernel,4,4,1894971,9,11.10,11.08,21.05 +mul,floor,4,4,1071214,9,18.92,18.74,20.24 +mul,gmp,4,4,2055901,9,9.75,9.70,20.03 +mul,gmpz,4,4,1642512,9,12.17,12.12,20.01 +mul,auto,6,6,475240,9,42.06,41.94,20.05 +mul,kernel,6,6,1190106,9,17.51,17.48,20.84 +mul,floor,6,6,803842,9,24.87,24.74,19.98 +mul,gmp,6,6,1178026,9,16.93,16.83,19.95 +mul,gmpz,6,6,1080137,9,18.53,18.51,20.02 +mul,auto,8,8,424104,9,47.20,47.10,20.06 +mul,kernel,8,8,802418,9,25.53,25.44,20.49 +mul,floor,8,8,607843,9,32.82,32.66,19.94 +mul,gmp,8,8,736598,9,27.19,26.89,19.97 +mul,gmpz,8,8,688995,9,28.64,28.37,19.83 +mul,auto,12,12,284400,9,70.40,70.28,20.02 +mul,kernel,12,12,420608,9,48.09,48.06,20.23 +mul,floor,12,12,361657,9,55.36,55.26,20.02 +mul,gmp,12,12,407334,9,49.00,48.73,19.95 +mul,gmpz,12,12,391607,9,51.09,50.93,20.01 +mul,auto,16,16,196357,9,101.93,101.85,20.02 +mul,kernel,16,16,251794,9,80.04,79.90,20.16 +mul,floor,16,16,230679,9,87.12,86.79,20.09 +mul,gmp,16,16,243975,9,81.89,81.86,19.98 +mul,gmpz,16,16,237972,9,84.13,84.04,20.02 +mul,auto,32,32,93086,9,212.59,212.15,19.80 +mul,kernel,32,32,100556,9,206.70,206.38,20.79 +mul,floor,32,32,95391,9,209.25,208.81,19.96 +mul,gmp,32,32,68177,9,289.44,288.59,19.75 +mul,gmpz,32,32,71887,9,276.28,275.26,19.86 +mul,auto,64,64,36630,9,545.34,544.87,19.99 +mul,kernel,64,64,41121,9,481.44,480.98,19.80 +mul,floor,64,64,40528,9,493.35,493.07,20.00 +mul,gmp,64,64,22855,9,875.17,875.06,20.01 +mul,gmpz,64,64,22841,9,875.00,873.52,19.98 +mul,auto,128,128,11517,9,1736.25,1734.93,20.00 +mul,kernel,128,128,11692,9,1718.97,1717.61,20.10 +mul,floor,128,128,11630,9,1717.62,1715.69,19.98 +mul,gmp,128,128,7185,9,2784.27,2783.05,20.00 +mul,gmpz,128,128,7240,9,2753.55,2740.50,19.95 +mul,auto,256,256,3198,9,6255.27,6252.26,20.00 +mul,kernel,256,256,3248,9,6158.99,6149.77,20.05 +mul,floor,256,256,3208,9,6280.69,6237.44,20.16 +mul,gmp,256,256,2522,9,7931.56,7909.23,19.99 +mul,gmpz,256,256,2542,9,7827.88,7801.98,19.92 +mul,auto,512,512,1037,9,19258.28,19251.90,19.97 +mul,kernel,512,512,1034,9,19318.98,19293.60,19.98 +mul,floor,512,512,1033,9,19397.44,19370.98,20.03 +mul,gmp,512,512,942,9,21056.73,20929.28,19.84 +mul,gmpz,512,512,961,9,20887.13,20808.10,20.07 +mul,auto,1000,1000,334,9,59903.48,59786.63,20.00 +mul,kernel,1000,1000,337,9,59502.78,59440.44,20.05 +mul,floor,1000,1000,337,9,59433.75,59387.33,20.03 +mul,gmp,1000,1000,368,9,53898.88,53500.70,19.83 +mul,gmpz,1000,1000,375,9,53355.67,53317.70,20.05 +mul,auto,2000,2000,113,9,177088.93,176845.41,20.02 +mul,kernel,2000,2000,113,9,176229.81,176099.51,19.91 +mul,floor,2000,2000,114,9,176340.85,176200.80,20.10 +mul,gmp,2000,2000,138,9,144731.89,143916.88,19.95 +mul,gmpz,2000,2000,139,9,144044.93,143974.93,20.03 +mul,auto,2000,100,1111,9,18005.55,18001.95,20.01 +mul,kernel,2000,100,1134,9,17668.24,17650.53,20.05 +mul,floor,2000,100,1124,9,17992.16,17954.70,20.23 +mul,gmp,2000,100,549,9,36459.33,36400.37,20.05 +mul,gmpz,2000,100,551,9,36127.69,35865.32,19.89 +sqr,auto,4,4,598967,9,33.46,33.26,20.03 +sqr,kernel,4,4,2201559,9,9.10,9.04,20.02 +sqr,floor,4,4,1212725,9,16.92,16.90,20.53 +sqr,gmp,4,4,3465874,9,5.83,5.77,20.18 +sqr,gmpz,4,4,2253042,9,8.83,8.79,19.91 +sqr,auto,16,16,250862,9,79.65,79.43,19.98 +sqr,kernel,16,16,355620,9,56.23,56.21,20.00 +sqr,floor,16,16,320422,9,62.43,62.36,20.02 +sqr,gmp,16,16,393842,9,50.53,50.20,19.90 +sqr,gmpz,16,16,372040,9,53.67,53.39,19.96 +sqr,auto,64,64,64953,9,303.86,302.58,19.75 +sqr,kernel,64,64,74169,9,269.64,269.52,20.00 +sqr,floor,64,64,72729,9,279.68,279.44,20.35 +sqr,gmp,64,64,35224,9,567.49,567.35,19.99 +sqr,gmpz,64,64,35706,9,559.45,557.67,19.97 +sqr,auto,512,512,1887,9,10592.71,10588.35,19.99 +sqr,kernel,512,512,1900,9,10524.88,10508.61,19.99 +sqr,floor,512,512,1894,9,10544.52,10536.96,19.97 +sqr,gmp,512,512,1305,9,15135.58,15107.99,19.78 +sqr,gmpz,512,512,1326,9,15090.83,15083.42,20.01 +sqr,auto,2000,2000,203,9,98526.83,98492.61,20.00 +sqr,kernel,2000,2000,204,9,98034.91,98006.09,20.00 +sqr,floor,2000,2000,205,9,98075.98,98030.57,20.11 +sqr,gmp,2000,2000,197,9,100899.94,100824.92,19.88 +sqr,gmpz,2000,2000,199,9,100928.21,100904.75,20.11 +divrem,auto,2,1,468556,9,42.55,42.36,19.93 +divrem,kernel,2,1,3644365,9,5.49,5.46,20.06 +divrem,floor,2,1,1569637,9,12.78,12.75,20.06 +divrem,gmp,2,1,2305417,9,8.69,8.68,20.03 +divrem,gmpz,2,1,1501636,9,13.37,13.31,20.07 +divrem,auto,8,4,185705,9,107.40,107.22,19.96 +divrem,kernel,8,4,516334,9,38.77,38.46,20.01 +divrem,floor,8,4,364345,9,54.54,54.32,19.88 +divrem,gmp,8,4,502597,9,39.91,39.64,20.07 +divrem,gmpz,8,4,477428,9,41.57,41.22,19.84 +divrem,auto,32,16,53829,9,369.39,368.32,19.89 +divrem,kernel,32,16,69844,9,286.43,286.14,20.02 +divrem,floor,32,16,66109,9,302.80,302.49,20.02 +divrem,gmp,32,16,104056,9,191.83,191.30,19.96 +divrem,gmpz,32,16,102985,9,194.32,193.29,20.00 +divrem,auto,128,64,5955,9,3365.40,3361.91,20.05 +divrem,kernel,128,64,6211,9,3235.12,3219.56,20.09 +divrem,floor,128,64,6177,9,3252.24,3242.32,20.09 +divrem,gmp,128,64,11639,9,1718.91,1717.69,20.09 +divrem,gmpz,128,64,11570,9,1723.44,1722.76,19.94 +divrem,auto,512,256,672,9,29786.93,29780.91,20.02 +divrem,kernel,512,256,683,9,29310.67,29300.86,20.02 +divrem,floor,512,256,678,9,29499.21,29496.43,20.00 +divrem,gmp,512,256,1234,9,16221.24,16217.68,20.02 +divrem,gmpz,512,256,1228,9,16290.71,16288.62,20.00 +divrem,auto,2000,1000,109,9,185001.87,184956.48,20.17 +divrem,kernel,2000,1000,109,9,183946.38,183916.64,20.05 +divrem,floor,2000,1000,109,9,184058.09,183858.90,20.08 +divrem,gmp,2000,1000,146,9,137686.32,137648.83,20.10 +divrem,gmpz,2000,1000,146,9,137792.71,137779.16,20.12 +divrem,auto,4000,2000,42,9,479431.33,479152.98,20.14 +divrem,kernel,4000,2000,43,9,476192.93,476005.40,20.48 +divrem,floor,4000,2000,43,9,474277.47,474107.16,20.42 +divrem,gmp,4000,2000,59,9,339565.49,339095.27,20.04 +divrem,gmpz,4000,2000,59,9,340485.34,338375.59,20.06 +divrem,auto,2000,100,137,9,146258.18,145866.42,20.04 +divrem,kernel,2000,100,139,9,144432.29,143786.28,20.08 +divrem,floor,2000,100,139,9,144262.15,143932.67,20.05 +divrem,gmp,2000,100,276,9,72641.43,72621.92,20.05 +divrem,gmpz,2000,100,276,9,72569.93,72531.40,20.03 +divrem,auto,65536,1,103,9,194549.13,194326.86,20.06 +divrem,kernel,65536,1,120,9,167081.79,166830.23,20.05 +divrem,floor,65536,1,115,9,174707.16,174619.43,20.09 +divrem,gmp,65536,1,136,9,148099.18,148097.03,20.17 +divrem,gmpz,65536,1,136,9,148124.50,148114.92,20.15 +fromchars,auto,4,10,106036,9,188.07,187.57,19.96 +fromchars,kernel,4,10,533828,9,37.44,37.39,19.99 +fromchars,gmp,4,10,641095,9,31.34,31.23,20.10 +fromchars,gmpz,4,10,301552,9,66.77,66.05,20.11 +fromchars,auto,16,10,48055,9,418.48,412.57,20.07 +fromchars,kernel,16,10,95642,9,210.92,209.23,20.29 +fromchars,gmp,16,10,133583,9,150.00,149.04,20.08 +fromchars,gmpz,16,10,77537,9,259.17,258.63,20.15 +fromchars,auto,64,10,7010,9,2777.09,2674.13,19.40 +fromchars,kernel,64,10,9715,9,2122.69,1950.61,20.69 +fromchars,gmp,64,10,22955,9,870.88,870.34,19.99 +fromchars,gmpz,64,10,14781,9,1357.86,1353.76,20.06 +fromchars,auto,256,10,722,9,28160.62,27811.66,20.52 +fromchars,kernel,256,10,766,9,25722.01,25216.76,19.86 +fromchars,gmp,256,10,2498,9,8010.01,8004.23,20.01 +fromchars,gmpz,256,10,1996,9,10058.90,10032.56,20.08 +fromchars,auto,2000,10,47,9,430210.30,430011.45,20.22 +fromchars,kernel,2000,10,49,9,409096.69,409045.69,20.05 +fromchars,gmp,2000,10,108,9,184145.36,183354.11,19.88 +fromchars,gmpz,2000,10,101,9,198250.16,198050.49,20.03 diff --git a/tests/beman/big_int/perf/item1/x64_base64_seed2a.csv b/tests/beman/big_int/perf/item1/x64_base64_seed2a.csv new file mode 100644 index 00000000..c0507b09 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_base64_seed2a.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T17:05:00Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2359151,9,8.22,8.19,19.41 +add,inplace,1,1,2422283,9,4.13,4.11,20.13 +add,kernel,1,1,10573240,9,1.89,1.89,19.99 +add,floor,1,1,2034753,9,9.88,9.83,20.09 +add,gmp,1,1,8820402,9,2.27,2.27,20.00 +add,gmpz,1,1,4812281,9,4.16,4.16,20.00 +add,auto,2,2,1123682,9,17.84,17.78,20.07 +add,inplace,2,2,1686103,9,5.89,5.85,19.86 +add,kernel,2,2,8433302,9,2.37,2.34,19.98 +add,floor,2,2,1961254,9,10.23,10.20,20.06 +add,gmp,2,2,8824171,9,2.27,2.27,20.01 +add,gmpz,2,2,4813000,9,4.16,4.16,20.01 +add,auto,4,4,1111069,9,18.10,18.04,20.12 +add,inplace,4,4,1768930,9,5.64,5.63,19.99 +add,kernel,4,4,6581746,9,3.09,3.07,20.39 +add,floor,4,4,1820826,9,10.97,10.97,19.99 +add,gmp,4,4,7981769,9,2.50,2.50,19.97 +add,gmpz,4,4,4576869,9,4.37,4.35,20.00 +add,auto,8,8,996945,9,20.02,19.90,19.99 +add,inplace,8,8,1347147,9,7.36,7.33,19.82 +add,kernel,8,8,4375319,9,4.59,4.53,20.05 +add,floor,8,8,1596188,9,12.51,12.50,19.98 +add,gmp,8,8,5424300,9,3.69,3.69,20.00 +add,gmpz,8,8,4172017,9,4.80,4.79,20.01 +add,auto,16,16,798414,9,25.26,24.69,20.17 +add,inplace,16,16,853111,9,11.74,11.70,20.05 +add,kernel,16,16,2647202,9,7.56,7.56,20.01 +add,floor,16,16,1283423,9,15.55,15.51,19.96 +add,gmp,16,16,3157531,9,6.32,6.32,19.97 +add,gmpz,16,16,3065864,9,6.52,6.48,19.99 +add,auto,64,64,309917,9,63.60,63.46,19.72 +add,inplace,64,64,255961,9,39.05,38.79,19.97 +add,kernel,64,64,602612,9,33.23,33.14,20.04 +add,floor,64,64,491392,9,41.28,40.58,20.20 +add,gmp,64,64,1294678,9,15.45,15.45,20.03 +add,gmpz,64,64,1212731,9,16.49,16.46,20.00 +add,auto,256,256,89534,9,223.48,223.33,20.01 +add,inplace,256,256,68692,9,145.54,145.51,20.00 +add,kernel,256,256,140295,9,142.53,142.52,20.00 +add,floor,256,256,126100,9,158.80,158.67,20.04 +add,gmp,256,256,255647,9,78.23,78.23,20.01 +add,gmpz,256,256,248180,9,80.59,80.49,20.00 +add,auto,1024,1024,23772,9,841.24,841.03,20.00 +add,inplace,1024,1024,17150,9,582.93,582.89,19.99 +add,kernel,1024,1024,34581,9,578.47,578.37,20.01 +add,floor,1024,1024,33657,9,594.19,594.09,20.00 +add,gmp,1024,1024,51193,9,390.42,390.40,19.99 +add,gmpz,1024,1024,51090,9,391.36,391.33,19.99 +add,auto,2000,2000,11635,9,1718.98,1718.62,20.00 +add,inplace,2000,2000,8811,9,1135.00,1134.88,20.02 +add,kernel,2000,2000,17651,9,1133.09,1133.04,20.00 +add,floor,2000,2000,17401,9,1149.84,1149.17,20.06 +add,gmp,2000,2000,41892,9,477.47,477.46,20.01 +add,gmpz,2000,2000,41859,9,475.61,473.79,19.89 +add,auto,1024,1,71312,9,280.42,279.93,20.00 +add,inplace,1024,1,17247,9,579.73,579.65,20.00 +add,kernel,1024,1,34620,9,577.70,577.69,20.00 +add,floor,1024,1,33700,9,593.50,593.46,20.00 +add,gmp,1024,1,86133,9,232.62,232.59,20.04 +add,gmpz,1024,1,85452,9,234.11,233.72,20.01 +sub,auto,1,1,2224347,9,8.99,8.96,20.04 +sub,inplace,1,1,2521090,9,3.98,3.97,20.07 +sub,kernel,1,1,13236310,9,1.51,1.51,20.02 +sub,floor,1,1,10533250,9,1.89,1.89,19.99 +sub,gmp,1,1,8824254,9,2.27,2.27,20.00 +sub,gmpz,1,1,4602645,9,4.35,4.34,20.03 +sub,auto,2,2,1050016,9,19.00,18.91,19.95 +sub,inplace,2,2,2159980,9,4.61,4.59,19.92 +sub,kernel,2,2,9506553,9,2.10,2.08,19.86 +sub,floor,2,2,2006495,9,9.99,9.98,20.06 +sub,gmp,2,2,8824213,9,2.27,2.27,20.00 +sub,gmpz,2,2,4590479,9,4.34,4.34,19.95 +sub,auto,4,4,1057080,9,18.96,18.89,20.04 +sub,inplace,4,4,1835387,9,5.45,5.42,20.01 +sub,kernel,4,4,6983660,9,2.88,2.83,20.12 +sub,floor,4,4,1855804,9,10.78,10.76,20.02 +sub,gmp,4,4,8045446,9,2.49,2.49,20.02 +sub,gmpz,4,4,4279320,9,4.63,4.60,19.84 +sub,auto,8,8,966859,9,20.61,20.57,19.94 +sub,inplace,8,8,1378918,9,7.24,7.20,19.95 +sub,kernel,8,8,4572732,9,4.36,4.35,19.99 +sub,floor,8,8,1611385,9,12.42,12.36,20.01 +sub,gmp,8,8,5417149,9,3.68,3.68,19.96 +sub,gmpz,8,8,4029078,9,4.99,4.94,20.12 +sub,auto,16,16,782511,9,25.88,25.41,20.22 +sub,inplace,16,16,941081,9,10.60,10.53,19.94 +sub,kernel,16,16,2491259,9,8.02,8.02,19.98 +sub,floor,16,16,1303436,9,15.40,15.34,20.06 +sub,gmp,16,16,3635841,9,5.50,5.50,20.00 +sub,gmpz,16,16,2932764,9,6.80,6.74,19.94 +sub,auto,64,64,298665,9,66.92,66.80,19.99 +sub,inplace,64,64,263361,9,37.94,37.87,19.98 +sub,kernel,64,64,608405,9,32.92,32.85,20.03 +sub,floor,64,64,472230,9,42.11,42.06,19.88 +sub,gmp,64,64,1275563,9,15.68,15.68,20.00 +sub,gmpz,64,64,1194689,9,16.74,16.71,20.00 +sub,auto,256,256,89104,9,224.46,224.27,20.00 +sub,inplace,256,256,68787,9,145.44,145.35,20.02 +sub,kernel,256,256,139994,9,142.85,142.81,20.00 +sub,floor,256,256,125891,9,158.45,158.38,19.95 +sub,gmp,256,256,255653,9,78.23,78.22,20.02 +sub,gmpz,256,256,250382,9,79.86,79.73,20.01 +sub,auto,1024,1024,23760,9,841.57,841.38,20.00 +sub,inplace,1024,1024,17191,9,581.77,581.74,20.00 +sub,kernel,1024,1024,34592,9,578.20,578.16,20.00 +sub,floor,1024,1024,33662,9,594.52,593.70,20.01 +sub,gmp,1024,1024,51305,9,389.83,389.83,20.00 +sub,gmpz,1024,1024,51126,9,391.21,391.17,20.00 +sub,auto,2000,2000,11483,9,1741.80,1741.55,20.00 +sub,inplace,2000,2000,8811,9,1134.20,1133.90,19.99 +sub,kernel,2000,2000,17668,9,1132.05,1132.03,20.00 +sub,floor,2000,2000,17403,9,1149.30,1148.84,20.00 +sub,gmp,2000,2000,41486,9,482.11,481.81,20.00 +sub,gmpz,2000,2000,41340,9,483.82,482.33,20.00 +sub,auto,1024,1,70700,9,283.09,282.89,20.03 +sub,inplace,1024,1,17229,9,580.38,580.29,20.01 +sub,kernel,1024,1,34676,9,576.78,576.77,20.00 +sub,floor,1024,1,33725,9,593.11,592.90,20.04 +sub,gmp,1024,1,85888,9,232.86,232.74,20.01 +sub,gmpz,1024,1,85470,9,233.96,233.53,19.99 +shl,auto,1,13,1200118,9,16.73,16.63,20.07 +shl,inplace,1,13,2429217,9,4.08,4.05,19.87 +shl,kernel,1,13,9626563,9,2.08,2.07,20.00 +shl,kernelip,1,13,5787824,9,1.75,1.71,20.25 +shl,floor,1,13,2078504,9,9.82,9.82,20.42 +shl,gmp,1,13,9624727,9,1.89,1.89,18.20 +shl,gmpz,1,13,5775418,9,3.47,3.47,20.02 +shl,auto,4,13,1065382,9,18.72,18.69,19.95 +shl,inplace,4,13,1928787,9,5.16,5.13,19.93 +shl,kernel,4,13,5740740,9,3.45,3.44,19.87 +shl,kernelip,4,13,3424045,9,2.95,2.92,20.20 +shl,floor,4,13,1705072,9,11.33,11.32,19.33 +shl,gmp,4,13,7991650,9,2.31,2.31,18.48 +shl,gmpz,4,13,4946861,9,4.04,4.04,20.01 +shl,auto,16,13,818532,9,24.48,24.34,20.06 +shl,inplace,16,13,1082624,9,9.24,9.20,20.01 +shl,kernel,16,13,2687778,9,7.45,7.44,20.05 +shl,kernelip,16,13,1367700,9,7.28,7.16,19.86 +shl,floor,16,13,1251785,9,15.23,15.21,19.06 +shl,gmp,16,13,4411253,9,4.50,4.49,19.88 +shl,gmpz,16,13,3399920,9,5.82,5.81,19.84 +shl,auto,256,13,149192,9,135.42,133.98,20.16 +shl,inplace,256,13,107642,9,93.18,92.94,20.06 +shl,kernel,256,13,214454,9,93.16,93.07,19.99 +shl,kernelip,256,13,102322,9,97.74,97.73,20.01 +shl,floor,256,13,179680,9,116.42,116.33,20.92 +shl,gmp,256,13,424044,9,47.24,47.14,20.03 +shl,gmpz,256,13,398050,9,50.29,50.18,20.02 +shl,auto,2000,13,21781,9,917.29,915.51,19.99 +shl,inplace,2000,13,15160,9,657.05,656.35,19.92 +shl,kernel,2000,13,27754,9,719.97,719.77,20.03 +shl,kernelip,2000,13,13980,9,715.36,715.33,20.02 +shl,floor,2000,13,27179,9,739.67,739.56,20.11 +shl,gmp,2000,13,59630,9,335.52,335.30,20.01 +shl,gmpz,2000,13,59089,9,338.59,338.42,20.01 +shl,auto,2000,77,18773,9,1066.07,1063.97,20.01 +shl,inplace,2000,77,13088,9,764.56,764.06,20.02 +shl,kernel,2000,77,23495,9,849.02,848.37,19.95 +shl,kernelip,2000,77,12161,9,822.60,822.08,20.01 +shl,floor,2000,77,22976,9,873.56,872.29,20.08 +shl,gmp,2000,77,59203,9,337.72,337.72,20.00 +shl,gmpz,2000,77,59107,9,338.40,338.36,20.00 +shr,auto,1,13,1976629,9,10.12,10.03,20.01 +shr,inplace,1,13,2736620,9,3.66,3.62,19.99 +shr,kernel,1,13,11754485,9,1.70,1.70,20.00 +shr,floor,1,13,8824113,9,2.27,2.27,20.01 +shr,gmp,1,13,10589081,9,1.89,1.89,20.01 +shr,gmpz,1,13,6107744,9,3.27,3.27,20.02 +shr,auto,4,13,944289,9,21.04,20.96,19.89 +shr,inplace,4,13,2126170,9,4.72,4.66,20.05 +shr,kernel,4,13,5755541,9,3.46,3.46,19.97 +shr,floor,4,13,1667662,9,11.96,11.94,19.96 +shr,gmp,4,13,8622473,9,2.33,2.31,20.09 +shr,gmpz,4,13,4732002,9,4.26,4.14,20.14 +shr,auto,16,13,773063,9,26.03,25.79,20.10 +shr,inplace,16,13,1144946,9,8.79,8.75,20.12 +shr,kernel,16,13,2473372,9,8.14,8.05,20.11 +shr,floor,16,13,1169712,9,17.02,17.00,19.92 +shr,gmp,16,13,4653866,9,4.33,4.30,20.12 +shr,gmpz,16,13,3250789,9,6.17,6.15,20.04 +shr,auto,256,13,144821,9,137.54,136.55,19.93 +shr,inplace,256,13,106647,9,93.74,93.59,19.99 +shr,kernel,256,13,181826,9,110.18,109.95,20.05 +shr,floor,256,13,152350,9,131.32,130.94,20.01 +shr,gmp,256,13,415884,9,48.09,47.94,19.99 +shr,gmpz,256,13,394775,9,50.66,50.56,19.99 +shr,auto,2000,13,21064,9,950.50,947.61,20.01 +shr,inplace,2000,13,15228,9,656.89,656.73,20.01 +shr,kernel,2000,13,24636,9,811.84,811.82,20.00 +shr,floor,2000,13,24057,9,831.60,831.51,20.01 +shr,gmp,2000,13,59540,9,335.95,335.90,20.01 +shr,gmpz,2000,13,59008,9,339.07,338.84,20.01 +shr,auto,2000,77,18376,9,1085.31,1084.55,19.94 +shr,inplace,2000,77,13067,9,764.89,764.55,19.99 +shr,kernel,2000,77,24094,9,830.10,830.07,20.00 +shr,floor,2000,77,23416,9,854.23,853.91,20.00 +shr,gmp,2000,77,59536,9,335.93,335.91,20.00 +shr,gmpz,2000,77,58945,9,339.24,339.17,20.00 +mul,auto,1,1,1041808,9,19.24,19.14,20.02 +mul,gmp,1,1,5905070,9,3.39,3.37,20.03 +mul,gmpz,1,1,5041858,9,3.98,3.97,20.06 +mul,auto,2,2,716404,9,27.98,27.81,20.11 +mul,kernel,2,2,2793327,9,7.61,7.56,21.25 +mul,floor,2,2,1331470,9,15.44,15.24,20.53 +mul,gmp,2,2,5178930,9,3.84,3.82,19.90 +mul,gmpz,2,2,3275671,9,6.14,6.08,20.12 +mul,auto,3,3,678754,9,29.64,29.57,20.14 +mul,kernel,3,3,2335504,9,9.03,8.99,21.11 +mul,floor,3,3,1214437,9,16.72,16.58,20.31 +mul,gmp,3,3,2543228,9,7.83,7.77,19.90 +mul,gmpz,3,3,2002600,9,10.01,9.98,20.05 +mul,auto,4,4,626537,9,31.94,31.78,20.03 +mul,kernel,4,4,1890698,9,11.13,11.10,21.25 +mul,floor,4,4,1065569,9,18.81,18.66,20.06 +mul,gmp,4,4,2060062,9,9.70,9.66,19.96 +mul,gmpz,4,4,1646866,9,12.21,12.14,20.10 +mul,auto,6,6,474390,9,41.96,41.66,19.91 +mul,kernel,6,6,1193055,9,17.50,17.48,20.88 +mul,floor,6,6,794463,9,24.92,24.82,19.79 +mul,gmp,6,6,1262950,9,15.77,15.70,19.93 +mul,gmpz,6,6,1102425,9,18.18,18.15,20.05 +mul,auto,8,8,424839,9,47.13,47.09,20.04 +mul,kernel,8,8,808116,9,25.55,25.44,20.66 +mul,floor,8,8,604394,9,32.83,32.77,19.85 +mul,gmp,8,8,734992,9,27.13,26.93,19.97 +mul,gmpz,8,8,697821,9,29.01,28.74,20.23 +mul,auto,12,12,286002,9,70.16,70.03,20.07 +mul,kernel,12,12,423137,9,47.63,47.50,20.16 +mul,floor,12,12,354978,9,56.60,56.43,20.09 +mul,gmp,12,12,412039,9,48.55,48.54,20.01 +mul,gmpz,12,12,393945,9,50.76,50.74,19.99 +mul,auto,16,16,198463,9,101.26,100.98,20.11 +mul,kernel,16,16,254349,9,79.39,79.12,20.19 +mul,floor,16,16,227057,9,88.67,88.44,20.15 +mul,gmp,16,16,244255,9,81.88,81.82,20.01 +mul,gmpz,16,16,237532,9,84.07,84.00,19.97 +mul,auto,32,32,93597,9,213.19,212.84,19.96 +mul,kernel,32,32,107056,9,186.88,186.14,20.02 +mul,floor,32,32,101761,9,196.73,196.46,20.02 +mul,gmp,32,32,72964,9,273.55,271.17,19.94 +mul,gmpz,32,32,73212,9,274.02,273.09,20.05 +mul,auto,64,64,38939,9,513.64,512.96,20.00 +mul,kernel,64,64,41284,9,483.01,482.28,19.94 +mul,floor,64,64,40694,9,491.79,490.69,20.01 +mul,gmp,64,64,22938,9,871.41,866.72,19.98 +mul,gmpz,64,64,23240,9,863.03,861.87,20.08 +mul,auto,128,128,11477,9,1741.78,1740.83,19.99 +mul,kernel,128,128,11757,9,1695.42,1693.51,19.93 +mul,floor,128,128,11715,9,1707.01,1704.63,20.02 +mul,gmp,128,128,7204,9,2772.38,2760.20,19.96 +mul,gmpz,128,128,7330,9,2711.77,2710.75,19.92 +mul,auto,256,256,3199,9,6253.34,6251.69,20.04 +mul,kernel,256,256,3234,9,6187.47,6177.15,20.03 +mul,floor,256,256,3232,9,6191.79,6186.73,20.02 +mul,gmp,256,256,2513,9,7920.35,7821.48,19.86 +mul,gmpz,256,256,2551,9,7812.84,7808.88,19.93 +mul,auto,512,512,1027,9,19454.86,19438.39,20.00 +mul,kernel,512,512,1037,9,19458.92,19439.41,20.18 +mul,floor,512,512,1030,9,19369.81,19350.34,19.95 +mul,gmp,512,512,949,9,20822.78,20816.63,19.83 +mul,gmpz,512,512,961,9,20819.61,20807.72,20.01 +mul,auto,1000,1000,334,9,59890.52,59779.84,20.03 +mul,kernel,1000,1000,335,9,59749.07,59651.79,20.01 +mul,floor,1000,1000,334,9,59858.13,59815.06,19.99 +mul,gmp,1000,1000,372,9,53341.16,53332.78,19.86 +mul,gmpz,1000,1000,376,9,53290.15,53260.01,20.04 +mul,auto,2000,2000,113,9,177034.65,176809.73,20.00 +mul,kernel,2000,2000,113,9,176902.01,176757.52,20.00 +mul,floor,2000,2000,114,9,176984.02,176874.36,20.18 +mul,gmp,2000,2000,139,9,144127.15,144105.26,20.04 +mul,gmpz,2000,2000,139,9,144147.10,144113.55,20.04 +mul,auto,2000,100,1123,9,17822.86,17816.10,20.02 +mul,kernel,2000,100,1133,9,17651.41,17637.08,20.00 +mul,floor,2000,100,1132,9,17671.11,17663.70,20.01 +mul,gmp,2000,100,544,9,36667.62,36308.30,19.92 +mul,gmpz,2000,100,557,9,35924.80,35886.29,20.01 +sqr,auto,4,4,598485,9,33.32,33.24,19.95 +sqr,kernel,4,4,2200226,9,9.08,9.03,20.01 +sqr,floor,4,4,1217034,9,16.91,16.90,20.59 +sqr,gmp,4,4,3434726,9,5.81,5.77,19.95 +sqr,gmpz,4,4,2263755,9,8.83,8.79,20.02 +sqr,auto,16,16,250695,9,79.76,79.67,19.99 +sqr,kernel,16,16,355849,9,56.26,56.24,20.02 +sqr,floor,16,16,320141,9,65.01,64.90,20.83 +sqr,gmp,16,16,394430,9,50.07,49.80,19.77 +sqr,gmpz,16,16,383949,9,52.10,52.07,20.01 +sqr,auto,64,64,67139,9,298.38,298.13,20.04 +sqr,kernel,64,64,74228,9,269.36,269.27,20.00 +sqr,floor,64,64,72588,9,279.97,279.53,20.32 +sqr,gmp,64,64,35738,9,558.04,553.25,19.90 +sqr,gmpz,64,64,35975,9,551.05,550.10,19.82 +sqr,auto,512,512,1879,9,10648.57,10635.50,20.00 +sqr,kernel,512,512,1901,9,10524.08,10512.16,20.01 +sqr,floor,512,512,1900,9,10529.98,10524.46,20.01 +sqr,gmp,512,512,1321,9,15092.44,15071.88,19.95 +sqr,gmpz,512,512,1329,9,15052.51,15044.80,20.00 +sqr,auto,2000,2000,202,9,99302.71,99271.97,20.06 +sqr,kernel,2000,2000,200,9,100172.99,100134.62,20.04 +sqr,floor,2000,2000,201,9,98851.67,98817.61,19.87 +sqr,gmp,2000,2000,199,9,100614.38,100552.36,20.02 +sqr,gmpz,2000,2000,199,9,100648.35,100601.37,20.06 +divrem,auto,2,1,490147,9,40.66,40.47,19.94 +divrem,kernel,2,1,3680899,9,5.49,5.45,20.20 +divrem,floor,2,1,1567747,9,12.77,12.75,20.02 +divrem,gmp,2,1,2984635,9,6.70,6.69,19.99 +divrem,gmpz,2,1,1721630,9,11.66,11.64,20.09 +divrem,auto,8,4,169812,9,117.96,117.51,20.05 +divrem,kernel,8,4,408755,9,49.20,48.97,20.13 +divrem,floor,8,4,305951,9,64.41,64.19,19.71 +divrem,gmp,8,4,457976,9,43.79,43.59,20.05 +divrem,gmpz,8,4,435444,9,46.04,45.92,20.06 +divrem,auto,32,16,54141,9,369.33,368.52,19.98 +divrem,kernel,32,16,68957,9,289.44,289.05,19.96 +divrem,floor,32,16,65395,9,305.49,305.19,19.98 +divrem,gmp,32,16,105500,9,189.77,189.42,20.02 +divrem,gmpz,32,16,104357,9,191.86,191.17,20.01 +divrem,auto,128,64,5944,9,3363.95,3362.83,20.03 +divrem,kernel,128,64,6113,9,3273.48,3271.22,20.04 +divrem,floor,128,64,6223,9,3227.11,3213.36,20.08 +divrem,gmp,128,64,11397,9,1753.65,1752.24,19.99 +divrem,gmpz,128,64,11472,9,1742.78,1742.10,20.01 +divrem,auto,512,256,684,9,29252.91,29246.59,20.02 +divrem,kernel,512,256,683,9,29297.13,29292.21,20.01 +divrem,floor,512,256,691,9,28978.98,28974.77,20.03 +divrem,gmp,512,256,1235,9,16202.80,16199.79,20.01 +divrem,gmpz,512,256,1230,9,16270.13,16268.47,20.03 +divrem,auto,2000,1000,107,9,187435.69,187301.74,20.05 +divrem,kernel,2000,1000,108,9,185227.57,185157.50,20.02 +divrem,floor,2000,1000,109,9,185270.89,185190.63,20.20 +divrem,gmp,2000,1000,145,9,137925.31,137904.96,20.00 +divrem,gmpz,2000,1000,145,9,138219.70,138182.87,20.04 +divrem,auto,4000,2000,42,9,477168.19,476820.69,20.04 +divrem,kernel,4000,2000,43,9,473856.19,473687.84,20.38 +divrem,floor,4000,2000,43,9,475118.14,474838.26,20.48 +divrem,gmp,4000,2000,60,9,335223.13,333648.22,20.13 +divrem,gmpz,4000,2000,60,9,333713.30,332778.80,20.02 +divrem,auto,2000,100,138,9,144275.32,143938.88,19.93 +divrem,kernel,2000,100,141,9,142468.21,141934.38,20.09 +divrem,floor,2000,100,140,9,142597.98,142160.33,19.95 +divrem,gmp,2000,100,278,9,72089.49,72044.03,20.05 +divrem,gmpz,2000,100,278,9,72002.23,71982.26,20.02 +divrem,auto,65536,1,103,9,193720.34,192795.80,19.95 +divrem,kernel,65536,1,120,9,167109.40,166939.00,20.06 +divrem,floor,65536,1,115,9,174724.22,174539.67,20.09 +divrem,gmp,65536,1,136,9,148107.83,148099.99,20.16 +divrem,gmpz,65536,1,136,9,148120.68,148108.96,20.14 +fromchars,auto,4,10,99601,9,200.82,199.81,19.99 +fromchars,kernel,4,10,447899,9,44.58,44.44,19.96 +fromchars,gmp,4,10,626322,9,31.98,31.90,20.04 +fromchars,gmpz,4,10,283389,9,69.55,69.00,19.71 +fromchars,auto,16,10,47587,9,422.60,420.05,20.13 +fromchars,kernel,16,10,93656,9,213.61,207.96,19.96 +fromchars,gmp,16,10,162377,9,123.36,123.07,20.05 +fromchars,gmpz,16,10,78382,9,254.98,254.40,20.02 +fromchars,auto,64,10,7275,9,2764.03,2632.03,20.05 +fromchars,kernel,64,10,9572,9,2159.31,2041.52,20.61 +fromchars,gmp,64,10,21521,9,929.05,928.89,19.99 +fromchars,gmpz,64,10,14394,9,1386.55,1386.10,19.96 +fromchars,auto,256,10,685,9,28716.15,28336.36,19.74 +fromchars,kernel,256,10,788,9,25740.07,24961.87,20.33 +fromchars,gmp,256,10,2497,9,8015.09,8011.11,20.02 +fromchars,gmpz,256,10,2008,9,9964.89,9960.87,20.01 +fromchars,auto,2000,10,47,9,429370.66,427809.00,20.17 +fromchars,kernel,2000,10,49,9,409108.41,408644.47,20.04 +fromchars,gmp,2000,10,110,9,182436.67,182391.26,20.07 +fromchars,gmpz,2000,10,102,9,197431.94,197345.74,20.14 diff --git a/tests/beman/big_int/perf/item1/x64_base64_seed2b.csv b/tests/beman/big_int/perf/item1/x64_base64_seed2b.csv new file mode 100644 index 00000000..a2340c8c --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_base64_seed2b.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T17:07:57Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2435312,9,8.23,8.17,20.05 +add,inplace,1,1,2451932,9,4.10,4.08,20.11 +add,kernel,1,1,10589067,9,1.89,1.89,20.00 +add,floor,1,1,2037201,9,9.84,9.81,20.08 +add,gmp,1,1,8823833,9,2.27,2.27,20.00 +add,gmpz,1,1,4812862,9,4.16,4.16,20.00 +add,auto,2,2,1124193,9,17.81,17.77,20.03 +add,inplace,2,2,1698835,9,5.83,5.78,19.80 +add,kernel,2,2,8267968,9,2.37,2.34,19.58 +add,floor,2,2,1976466,9,10.20,10.16,20.18 +add,gmp,2,2,8823929,9,2.27,2.27,20.00 +add,gmpz,2,2,4812442,9,4.16,4.16,20.00 +add,auto,4,4,1084534,9,18.48,18.42,20.06 +add,inplace,4,4,1777842,9,5.58,5.55,19.88 +add,kernel,4,4,6569956,9,3.06,3.02,20.17 +add,floor,4,4,1823094,9,10.97,10.96,20.04 +add,gmp,4,4,8007912,9,2.50,2.50,20.00 +add,gmpz,4,4,4518634,9,4.40,4.38,19.87 +add,auto,8,8,1027905,9,19.45,19.15,19.94 +add,inplace,8,8,1330997,9,7.45,7.39,19.84 +add,kernel,8,8,4403097,9,4.55,4.53,20.12 +add,floor,8,8,1605198,9,12.44,12.39,19.97 +add,gmp,8,8,5425228,9,3.69,3.69,20.01 +add,gmpz,8,8,4296241,9,4.67,4.66,20.08 +add,auto,16,16,806148,9,25.26,25.04,20.36 +add,inplace,16,16,852453,9,11.74,11.67,20.01 +add,kernel,16,16,2644688,9,7.56,7.56,19.99 +add,floor,16,16,1299252,9,15.44,15.39,20.06 +add,gmp,16,16,3635820,9,5.50,5.49,20.00 +add,gmpz,16,16,3079870,9,6.51,6.48,20.09 +add,auto,64,64,315276,9,63.54,63.27,20.05 +add,inplace,64,64,256690,9,39.06,38.77,20.07 +add,kernel,64,64,594527,9,33.62,33.59,20.00 +add,floor,64,64,479476,9,41.63,41.34,19.95 +add,gmp,64,64,1294815,9,15.45,15.45,20.00 +add,gmpz,64,64,1212649,9,16.49,16.46,19.99 +add,auto,256,256,88494,9,225.75,225.66,19.98 +add,inplace,256,256,68593,9,145.75,145.73,20.00 +add,kernel,256,256,140320,9,142.56,142.47,20.00 +add,floor,256,256,125938,9,158.74,158.53,20.00 +add,gmp,256,256,255632,9,78.23,78.23,20.01 +add,gmpz,256,256,250253,9,79.54,79.45,19.92 +add,auto,1024,1024,23729,9,842.87,842.70,20.00 +add,inplace,1024,1024,17122,9,583.94,583.92,20.00 +add,kernel,1024,1024,34569,9,578.40,578.24,20.02 +add,floor,1024,1024,33613,9,594.19,594.03,19.97 +add,gmp,1024,1024,51222,9,390.47,390.46,20.00 +add,gmpz,1024,1024,51066,9,391.68,391.66,20.00 +add,auto,2000,2000,11619,9,1721.42,1721.08,20.04 +add,inplace,2000,2000,8806,9,1133.96,1133.86,19.97 +add,kernel,2000,2000,17663,9,1132.36,1132.29,20.00 +add,floor,2000,2000,17379,9,1150.73,1150.53,20.00 +add,gmp,2000,2000,43536,9,459.10,459.08,20.00 +add,gmpz,2000,2000,42118,9,474.87,473.16,19.99 +add,auto,1024,1,71214,9,281.00,280.83,20.02 +add,inplace,1024,1,17244,9,579.89,579.84,20.01 +add,kernel,1024,1,34621,9,577.70,577.69,20.00 +add,floor,1024,1,33681,9,593.73,593.65,20.00 +add,gmp,1024,1,85910,9,232.76,232.74,20.00 +add,gmpz,1024,1,85460,9,233.99,233.61,19.99 +sub,auto,1,1,2215750,9,9.01,8.97,19.98 +sub,inplace,1,1,2521100,9,3.97,3.97,20.03 +sub,kernel,1,1,13236154,9,1.51,1.51,20.00 +sub,floor,1,1,10540263,9,1.90,1.89,20.05 +sub,gmp,1,1,8823183,9,2.27,2.27,20.00 +sub,gmpz,1,1,4603308,9,4.36,4.34,20.07 +sub,auto,2,2,1058713,9,18.91,18.80,20.01 +sub,inplace,2,2,2194574,9,4.59,4.56,20.14 +sub,kernel,2,2,9625449,9,2.10,2.08,20.16 +sub,floor,2,2,2034326,9,9.93,9.90,20.21 +sub,gmp,2,2,8824140,9,2.27,2.27,20.00 +sub,gmpz,2,2,4603804,9,4.34,4.34,20.02 +sub,auto,4,4,1056137,9,18.98,18.88,20.03 +sub,inplace,4,4,1848117,9,5.40,5.38,20.00 +sub,kernel,4,4,6867101,9,2.89,2.83,19.88 +sub,floor,4,4,1878405,9,10.74,10.66,20.16 +sub,gmp,4,4,8018131,9,2.49,2.49,19.97 +sub,gmpz,4,4,4326279,9,4.61,4.57,19.90 +sub,auto,8,8,967233,9,20.57,20.45,19.90 +sub,inplace,8,8,1392103,9,7.17,7.13,19.97 +sub,kernel,8,8,4582337,9,4.36,4.35,19.98 +sub,floor,8,8,1611017,9,12.36,12.33,19.94 +sub,gmp,8,8,5405283,9,3.68,3.68,19.90 +sub,gmpz,8,8,4027731,9,4.96,4.94,19.98 +sub,auto,16,16,771377,9,25.88,25.72,20.01 +sub,inplace,16,16,731215,9,13.68,13.67,20.00 +sub,kernel,16,16,2376479,9,8.42,8.42,20.00 +sub,floor,16,16,1317392,9,15.21,15.16,20.04 +sub,gmp,16,16,3635265,9,5.50,5.50,20.01 +sub,gmpz,16,16,2895044,9,6.93,6.89,20.05 +sub,auto,64,64,286341,9,69.84,69.61,20.00 +sub,inplace,64,64,263260,9,37.57,37.24,19.80 +sub,kernel,64,64,607583,9,32.90,32.86,19.99 +sub,floor,64,64,474814,9,42.15,42.08,20.01 +sub,gmp,64,64,1276536,9,15.67,15.67,20.00 +sub,gmpz,64,64,1160841,9,17.23,17.21,20.00 +sub,auto,256,256,89107,9,224.46,224.38,20.00 +sub,inplace,256,256,68794,9,145.45,145.38,20.08 +sub,kernel,256,256,140048,9,142.83,142.79,20.02 +sub,floor,256,256,126435,9,158.20,158.15,20.00 +sub,gmp,256,256,255668,9,78.23,78.23,20.00 +sub,gmpz,256,256,250225,9,79.96,79.86,20.01 +sub,auto,1024,1024,23761,9,841.84,841.51,20.01 +sub,inplace,1024,1024,17192,9,581.73,581.68,20.00 +sub,kernel,1024,1024,34592,9,578.18,578.12,20.00 +sub,floor,1024,1024,33662,9,594.18,594.03,20.00 +sub,gmp,1024,1024,51303,9,389.85,389.84,20.01 +sub,gmpz,1024,1024,51115,9,391.27,391.25,20.00 +sub,auto,2000,2000,11481,9,1741.94,1741.70,20.00 +sub,inplace,2000,2000,8818,9,1134.31,1134.09,20.00 +sub,kernel,2000,2000,17681,9,1131.21,1131.16,20.00 +sub,floor,2000,2000,17398,9,1149.40,1149.04,20.00 +sub,gmp,2000,2000,42036,9,475.78,475.74,20.00 +sub,gmpz,2000,2000,41351,9,483.65,482.18,19.98 +sub,auto,1024,1,70517,9,283.00,282.36,20.00 +sub,inplace,1024,1,17242,9,580.04,579.93,20.04 +sub,kernel,1024,1,34675,9,576.78,576.77,20.00 +sub,floor,1024,1,33715,9,593.13,593.03,20.00 +sub,gmp,1024,1,85677,9,233.40,233.24,20.00 +sub,gmpz,1024,1,85419,9,234.07,233.63,20.00 +shl,auto,1,13,1205607,9,16.81,16.58,20.24 +shl,inplace,1,13,2431567,9,4.08,4.03,19.81 +shl,kernel,1,13,9626470,9,2.08,2.07,19.98 +shl,kernelip,1,13,5780553,9,1.77,1.72,20.32 +shl,floor,1,13,2085540,9,9.85,9.83,20.62 +shl,gmp,1,13,9626311,9,1.89,1.89,18.22 +shl,gmpz,1,13,5770452,9,3.47,3.46,20.00 +shl,auto,4,13,1069709,9,18.64,18.53,19.95 +shl,inplace,4,13,1925240,9,5.18,5.14,19.96 +shl,kernel,4,13,5766477,9,3.46,3.44,19.98 +shl,kernelip,4,13,3386034,9,2.96,2.92,20.07 +shl,floor,4,13,1727292,9,11.21,11.18,19.40 +shl,gmp,4,13,7991205,9,2.31,2.31,18.47 +shl,gmpz,4,13,4931727,9,4.04,4.04,19.94 +shl,auto,16,13,817300,9,24.56,24.41,20.07 +shl,inplace,16,13,1085427,9,9.20,9.18,19.98 +shl,kernel,16,13,2681109,9,7.51,7.44,20.12 +shl,kernelip,16,13,1405148,9,7.08,6.89,19.81 +shl,floor,16,13,1254258,9,15.21,15.21,19.09 +shl,gmp,16,13,4787832,9,4.06,4.05,19.60 +shl,gmpz,16,13,3438642,9,5.82,5.81,20.03 +shl,auto,256,13,145812,9,135.66,134.36,19.78 +shl,inplace,256,13,107554,9,92.96,92.85,20.01 +shl,kernel,256,13,215196,9,93.20,92.80,20.04 +shl,kernelip,256,13,102262,9,97.77,97.71,20.00 +shl,floor,256,13,177257,9,116.40,116.33,20.63 +shl,gmp,256,13,424243,9,47.34,47.10,20.06 +shl,gmpz,256,13,397823,9,50.35,50.17,20.07 +shl,auto,2000,13,21754,9,916.46,915.11,19.95 +shl,inplace,2000,13,15191,9,658.67,656.75,20.00 +shl,kernel,2000,13,27763,9,719.95,719.81,20.00 +shl,kernelip,2000,13,13980,9,715.35,715.29,20.00 +shl,floor,2000,13,27299,9,739.79,739.36,20.19 +shl,gmp,2000,13,59630,9,335.51,335.27,20.01 +shl,gmpz,2000,13,59057,9,338.52,338.38,19.99 +shl,auto,2000,77,18833,9,1065.60,1064.74,20.07 +shl,inplace,2000,77,13083,9,764.17,764.08,20.00 +shl,kernel,2000,77,23540,9,850.92,849.41,20.02 +shl,kernelip,2000,77,12154,9,822.52,822.19,19.99 +shl,floor,2000,77,22896,9,872.04,870.76,19.96 +shl,gmp,2000,77,59219,9,337.72,337.72,20.00 +shl,gmpz,2000,77,59105,9,338.40,338.37,20.00 +shr,auto,1,13,1975792,9,10.12,10.04,20.00 +shr,inplace,1,13,2736474,9,3.67,3.60,20.07 +shr,kernel,1,13,11752323,9,1.70,1.70,20.04 +shr,floor,1,13,7576693,9,2.64,2.63,19.99 +shr,gmp,1,13,10588831,9,1.89,1.89,20.00 +shr,gmpz,1,13,6109735,9,3.27,3.27,20.00 +shr,auto,4,13,952812,9,21.01,20.95,20.03 +shr,inplace,4,13,2112545,9,4.69,4.67,19.83 +shr,kernel,4,13,5755468,9,3.47,3.46,19.97 +shr,floor,4,13,1619854,9,12.37,12.35,20.04 +shr,gmp,4,13,8623535,9,2.33,2.31,20.06 +shr,gmpz,4,13,5047217,9,3.97,3.96,20.05 +shr,auto,16,13,777305,9,25.93,25.78,20.14 +shr,inplace,16,13,1141862,9,8.74,8.70,19.96 +shr,kernel,16,13,2456192,9,8.16,8.10,20.05 +shr,floor,16,13,1179686,9,17.01,16.96,20.06 +shr,gmp,16,13,4654659,9,4.30,4.30,20.06 +shr,gmpz,16,13,3213075,9,6.25,6.16,20.09 +shr,auto,256,13,145849,9,137.35,136.94,20.02 +shr,inplace,256,13,106600,9,93.76,93.56,20.00 +shr,kernel,256,13,181737,9,110.06,109.77,20.00 +shr,floor,256,13,152424,9,131.23,131.15,20.01 +shr,gmp,256,13,417640,9,48.04,47.95,20.07 +shr,gmpz,256,13,394159,9,50.61,50.51,19.96 +shr,auto,2000,13,21075,9,948.39,947.80,19.99 +shr,inplace,2000,13,15210,9,656.81,656.62,19.99 +shr,kernel,2000,13,24620,9,811.81,811.80,19.99 +shr,floor,2000,13,24024,9,832.28,831.87,19.99 +shr,gmp,2000,13,59545,9,335.98,335.80,20.03 +shr,gmpz,2000,13,59034,9,338.88,338.75,20.01 +shr,auto,2000,77,18455,9,1084.15,1084.00,20.01 +shr,inplace,2000,77,13076,9,764.67,764.34,20.00 +shr,kernel,2000,77,24139,9,828.39,828.37,20.01 +shr,floor,2000,77,23499,9,850.73,850.46,19.99 +shr,gmp,2000,77,59534,9,335.95,335.91,20.00 +shr,gmpz,2000,77,58954,9,339.31,339.15,20.03 +mul,auto,1,1,1043861,9,19.20,19.10,20.05 +mul,gmp,1,1,5909695,9,3.38,3.36,19.99 +mul,gmpz,1,1,5042351,9,3.97,3.97,20.01 +mul,auto,2,2,720206,9,27.83,27.74,20.08 +mul,kernel,2,2,2813496,9,7.62,7.60,21.45 +mul,floor,2,2,1324915,9,15.07,14.99,19.98 +mul,gmp,2,2,5226908,9,3.82,3.80,19.97 +mul,gmpz,2,2,3247534,9,6.08,6.06,19.77 +mul,auto,3,3,673305,9,29.62,29.45,19.99 +mul,kernel,3,3,2369440,9,9.04,9.02,21.43 +mul,floor,3,3,1212102,9,16.64,16.47,20.12 +mul,gmp,3,3,2549476,9,7.81,7.70,19.89 +mul,gmpz,3,3,2019392,9,9.90,9.79,20.00 +mul,auto,4,4,628972,9,31.77,31.68,20.00 +mul,kernel,4,4,1888622,9,11.10,11.07,20.96 +mul,floor,4,4,1082952,9,18.57,18.47,20.09 +mul,gmp,4,4,2054455,9,9.65,9.63,19.85 +mul,gmpz,4,4,1599331,9,12.49,12.44,19.98 +mul,auto,6,6,476314,9,41.82,41.61,19.92 +mul,kernel,6,6,1194829,9,17.49,17.46,20.90 +mul,floor,6,6,805715,9,24.75,24.66,19.95 +mul,gmp,6,6,1270257,9,15.67,15.65,19.91 +mul,gmpz,6,6,1119356,9,17.98,17.95,20.14 +mul,auto,8,8,423800,9,47.19,47.11,20.03 +mul,kernel,8,8,786685,9,25.59,25.46,20.14 +mul,floor,8,8,598482,9,33.20,33.11,19.88 +mul,gmp,8,8,735211,9,27.21,27.07,20.02 +mul,gmpz,8,8,691547,9,29.01,28.54,20.03 +mul,auto,12,12,287804,9,69.84,69.51,20.09 +mul,kernel,12,12,427054,9,47.33,47.28,20.22 +mul,floor,12,12,362606,9,55.15,54.94,19.99 +mul,gmp,12,12,411675,9,48.56,48.55,20.00 +mul,gmpz,12,12,393091,9,50.88,50.87,20.02 +mul,auto,16,16,195165,9,101.73,101.41,19.85 +mul,kernel,16,16,255569,9,78.88,78.79,20.16 +mul,floor,16,16,232961,9,86.01,85.77,20.05 +mul,gmp,16,16,244164,9,81.88,81.85,19.99 +mul,gmpz,16,16,235788,9,84.86,84.83,20.01 +mul,auto,32,32,93857,9,212.92,212.47,20.00 +mul,kernel,32,32,106149,9,189.99,189.56,20.16 +mul,floor,32,32,101719,9,196.72,196.42,20.01 +mul,gmp,32,32,73344,9,269.15,268.01,19.79 +mul,gmpz,32,32,74146,9,269.78,269.69,20.00 +mul,auto,64,64,38531,9,518.95,517.43,19.99 +mul,kernel,64,64,40903,9,495.13,492.40,20.27 +mul,floor,64,64,40125,9,503.32,498.24,20.17 +mul,gmp,64,64,22868,9,868.27,860.24,19.86 +mul,gmpz,64,64,23189,9,861.31,861.21,19.99 +mul,auto,128,128,11657,9,1716.55,1713.90,20.01 +mul,kernel,128,128,11779,9,1702.58,1701.57,20.10 +mul,floor,128,128,11711,9,1704.61,1702.08,19.97 +mul,gmp,128,128,7231,9,2753.11,2717.79,19.86 +mul,gmpz,128,128,7350,9,2714.41,2711.80,19.95 +mul,auto,256,256,3200,9,6253.57,6249.64,20.02 +mul,kernel,256,256,3252,9,6157.02,6150.87,20.02 +mul,floor,256,256,3248,9,6160.46,6156.55,20.06 +mul,gmp,256,256,2522,9,7836.25,7787.01,19.76 +mul,gmpz,256,256,2563,9,7805.79,7801.35,20.01 +mul,auto,512,512,1039,9,19254.06,19242.39,20.00 +mul,kernel,512,512,1042,9,19319.05,19304.70,20.13 +mul,floor,512,512,1036,9,19216.59,19184.23,19.91 +mul,gmp,512,512,948,9,21028.99,21003.03,19.93 +mul,gmpz,512,512,959,9,20846.22,20834.07,19.99 +mul,auto,1000,1000,335,9,59789.59,59703.86,20.03 +mul,kernel,1000,1000,336,9,59397.27,59332.91,19.96 +mul,floor,1000,1000,336,9,59405.07,59394.71,19.98 +mul,gmp,1000,1000,372,9,53732.99,53724.62,20.00 +mul,gmpz,1000,1000,365,9,54196.15,54177.41,19.78 +mul,auto,2000,2000,113,9,177089.83,176952.12,20.01 +mul,kernel,2000,2000,114,9,176103.46,176027.42,20.08 +mul,floor,2000,2000,114,9,176172.86,175953.55,20.08 +mul,gmp,2000,2000,139,9,144794.45,144782.14,20.13 +mul,gmpz,2000,2000,138,9,144939.17,144884.85,20.00 +mul,auto,2000,100,1123,9,17814.53,17813.08,20.01 +mul,kernel,2000,100,1132,9,17662.09,17651.31,20.00 +mul,floor,2000,100,1132,9,17676.22,17674.07,20.01 +mul,gmp,2000,100,550,9,35980.97,35772.12,19.83 +mul,gmpz,2000,100,559,9,35828.48,35811.98,20.04 +sqr,auto,4,4,599364,9,33.33,33.19,20.02 +sqr,kernel,4,4,2200158,9,9.07,9.04,19.97 +sqr,floor,4,4,1214994,9,16.91,16.90,20.55 +sqr,gmp,4,4,3399845,9,5.80,5.77,19.75 +sqr,gmpz,4,4,2250664,9,8.86,8.80,19.92 +sqr,auto,16,16,249170,9,79.66,79.60,19.85 +sqr,kernel,16,16,355634,9,56.25,56.20,20.00 +sqr,floor,16,16,320842,9,65.01,64.96,20.85 +sqr,gmp,16,16,398473,9,49.82,49.80,19.87 +sqr,gmpz,16,16,382933,9,52.09,52.08,19.95 +sqr,auto,64,64,64077,9,311.93,311.40,20.00 +sqr,kernel,64,64,73986,9,270.21,270.05,20.00 +sqr,floor,64,64,72542,9,279.79,279.47,20.31 +sqr,gmp,64,64,35767,9,551.61,548.81,19.79 +sqr,gmpz,64,64,36279,9,551.23,550.84,20.00 +sqr,auto,512,512,1884,9,10616.64,10611.23,20.00 +sqr,kernel,512,512,1896,9,10555.72,10550.64,20.02 +sqr,floor,512,512,1891,9,10597.36,10591.76,20.04 +sqr,gmp,512,512,1330,9,15025.87,15021.27,19.99 +sqr,gmpz,512,512,1330,9,15038.06,15030.22,20.00 +sqr,auto,2000,2000,196,9,102146.20,102087.71,20.02 +sqr,kernel,2000,2000,200,9,98226.88,98202.76,19.68 +sqr,floor,2000,2000,205,9,97984.03,97963.24,20.09 +sqr,gmp,2000,2000,199,9,100542.03,100502.31,20.01 +sqr,gmpz,2000,2000,199,9,100633.55,100572.64,20.02 +divrem,auto,2,1,490399,9,40.67,40.48,19.95 +divrem,kernel,2,1,3666711,9,5.45,5.40,20.02 +divrem,floor,2,1,1564228,9,12.77,12.74,19.96 +divrem,gmp,2,1,2984969,9,6.70,6.69,19.99 +divrem,gmpz,2,1,1733072,9,11.58,11.55,20.07 +divrem,auto,8,4,169440,9,117.85,117.33,19.95 +divrem,kernel,8,4,399129,9,50.05,49.93,19.98 +divrem,floor,8,4,309715,9,63.91,63.52,19.80 +divrem,gmp,8,4,458787,9,43.75,43.57,20.06 +divrem,gmpz,8,4,435815,9,46.03,45.96,20.08 +divrem,auto,32,16,53289,9,373.99,373.09,19.93 +divrem,kernel,32,16,69102,9,289.71,288.75,20.02 +divrem,floor,32,16,66137,9,303.02,302.12,20.07 +divrem,gmp,32,16,104956,9,191.09,190.39,20.07 +divrem,gmpz,32,16,103603,9,193.47,192.45,20.07 +divrem,auto,128,64,5851,9,3341.40,3340.66,19.55 +divrem,kernel,128,64,6261,9,3194.36,3192.69,20.00 +divrem,floor,128,64,6232,9,3205.80,3205.11,19.98 +divrem,gmp,128,64,11641,9,1719.47,1717.70,20.02 +divrem,gmpz,128,64,11612,9,1722.74,1722.27,20.01 +divrem,auto,512,256,689,9,29271.09,29066.08,20.15 +divrem,kernel,512,256,687,9,28881.73,28849.26,19.85 +divrem,floor,512,256,691,9,28979.04,28972.01,20.03 +divrem,gmp,512,256,1232,9,16240.23,16239.00,20.01 +divrem,gmpz,512,256,1226,9,16316.60,16313.69,20.00 +divrem,auto,2000,1000,109,9,185927.31,185222.79,20.26 +divrem,kernel,2000,1000,108,9,185652.52,185603.02,20.05 +divrem,floor,2000,1000,109,9,184666.81,184611.61,20.13 +divrem,gmp,2000,1000,146,9,137947.06,137903.50,20.14 +divrem,gmpz,2000,1000,146,9,137820.97,137795.63,20.16 +divrem,auto,4000,2000,43,9,476041.88,475295.09,20.46 +divrem,kernel,4000,2000,43,9,472591.40,472364.88,20.32 +divrem,floor,4000,2000,43,9,472558.26,472471.07,20.32 +divrem,gmp,4000,2000,60,9,333079.22,332240.98,20.01 +divrem,gmpz,4000,2000,61,9,332468.07,332273.30,20.28 +divrem,auto,2000,100,140,9,143134.21,143039.05,20.06 +divrem,kernel,2000,100,139,9,144821.84,144411.10,20.13 +divrem,floor,2000,100,139,9,144531.19,144384.52,20.09 +divrem,gmp,2000,100,277,9,72355.06,72334.58,20.07 +divrem,gmpz,2000,100,275,9,72899.28,72861.60,20.06 +divrem,auto,65536,1,103,9,193817.64,193419.51,19.97 +divrem,kernel,65536,1,120,9,167049.14,166917.18,20.05 +divrem,floor,65536,1,115,9,174689.93,174379.51,20.08 +divrem,gmp,65536,1,136,9,148110.79,148091.43,20.18 +divrem,gmpz,65536,1,135,9,148112.47,148104.89,20.00 +fromchars,auto,4,10,100373,9,200.05,198.78,20.21 +fromchars,kernel,4,10,450588,9,44.66,44.56,20.13 +fromchars,gmp,4,10,622410,9,32.04,31.87,19.94 +fromchars,gmpz,4,10,288801,9,69.17,68.87,20.01 +fromchars,auto,16,10,48411,9,419.89,412.46,20.32 +fromchars,kernel,16,10,96881,9,208.94,205.75,20.26 +fromchars,gmp,16,10,162224,9,123.37,123.17,20.01 +fromchars,gmpz,16,10,78345,9,255.47,255.26,20.03 +fromchars,auto,64,10,6932,9,2780.49,2678.61,19.29 +fromchars,kernel,64,10,9252,9,2143.22,2089.82,20.16 +fromchars,gmp,64,10,21106,9,947.50,945.93,20.00 +fromchars,gmpz,64,10,14012,9,1427.28,1425.86,20.01 +fromchars,auto,256,10,704,9,28079.49,28022.01,19.89 +fromchars,kernel,256,10,755,9,25388.45,24953.92,19.20 +fromchars,gmp,256,10,2476,9,8061.25,8049.86,19.96 +fromchars,gmpz,256,10,2007,9,9970.38,9963.95,20.01 +fromchars,auto,2000,10,48,9,426962.77,424565.73,20.50 +fromchars,kernel,2000,10,49,9,408472.12,407627.47,20.05 +fromchars,gmp,2000,10,109,9,182622.55,182487.87,19.91 +fromchars,gmpz,2000,10,102,9,197836.03,197742.45,20.18 diff --git a/tests/beman/big_int/perf/item1/x64_base64_spot_seed1.csv b/tests/beman/big_int/perf/item1/x64_base64_spot_seed1.csv new file mode 100644 index 00000000..76906554 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_base64_spot_seed1.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,1340,3,14935.13,14934.71,20.01 +add,inplace,16384,16384,1075,3,9305.76,9305.27,20.01 +add,kernel,16384,16384,2152,3,9293.47,9293.24,20.00 +add,floor,16384,16384,2148,3,9313.13,9312.54,20.01 +add,gmp,16384,16384,2902,3,6893.59,6893.53,20.01 +add,gmpz,16384,16384,2891,3,6918.88,6918.79,20.00 +mul,auto,2000,2000,114,3,176939.30,176865.74,20.17 +mul,kernel,2000,2000,114,3,176589.68,176565.25,20.14 +mul,floor,2000,2000,114,3,176475.29,176340.36,20.12 +mul,gmp,2000,2000,139,3,143948.60,143943.22,20.01 +mul,gmpz,2000,2000,139,3,144000.90,143997.42,20.02 +mul,auto,16384,16384,6,3,3769183.83,3768919.67,22.64 +mul,kernel,16384,16384,6,3,3798222.83,3793843.67,22.79 +mul,floor,16384,16384,6,3,3778494.50,3775113.67,22.68 +mul,gmp,16384,16384,12,3,1763854.92,1763718.58,21.17 +mul,gmpz,16384,16384,12,3,1761961.92,1759595.08,21.14 +divrem,auto,4096,2048,41,3,499381.05,498172.15,20.46 +divrem,kernel,4096,2048,41,3,497148.02,496941.41,20.38 +divrem,floor,4096,2048,41,3,496910.71,496803.17,20.38 +divrem,gmp,4096,2048,55,3,369157.38,368454.60,20.31 +divrem,gmpz,4096,2048,55,3,368853.38,368792.73,20.29 +tochars,auto,10000,10,4,3,5884643.75,5864764.50,23.52 +tochars,kernel,10000,10,4,3,5824239.50,5822492.75,23.33 +tochars,gmp,10000,10,5,3,4178396.00,4174799.20,20.89 +tochars,gmpz,10000,10,5,3,4221438.20,4219150.40,21.16 +fromchars,auto,10000,10,6,3,3669238.50,3665586.00,22.03 +fromchars,kernel,10000,10,6,3,3584278.83,3583633.33,21.51 +fromchars,gmp,10000,10,11,3,1932747.82,1931713.09,21.26 +fromchars,gmpz,10000,10,10,3,2010006.70,2009162.10,20.11 diff --git a/tests/beman/big_int/perf/item1/x64_base64_spot_seed2.csv b/tests/beman/big_int/perf/item1/x64_base64_spot_seed2.csv new file mode 100644 index 00000000..e83f0c82 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_base64_spot_seed2.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,1349,3,14831.34,14829.63,20.01 +add,inplace,16384,16384,1074,3,9299.59,9299.46,19.98 +add,kernel,16384,16384,2140,3,9308.72,9308.31,19.93 +add,floor,16384,16384,2146,3,9325.08,9324.03,20.01 +add,gmp,16384,16384,2874,3,6959.09,6958.82,20.02 +add,gmpz,16384,16384,2874,3,6961.31,6961.13,20.01 +mul,auto,2000,2000,113,3,177137.19,176921.62,20.01 +mul,kernel,2000,2000,114,3,176315.20,176228.61,20.10 +mul,floor,2000,2000,114,3,176603.25,176501.92,20.13 +mul,gmp,2000,2000,139,3,144427.65,144407.18,20.08 +mul,gmpz,2000,2000,139,3,144281.97,144251.51,20.05 +mul,auto,16384,16384,6,3,3799864.83,3785435.67,22.78 +mul,kernel,16384,16384,6,3,3782468.17,3771114.83,22.68 +mul,floor,16384,16384,6,3,3777166.83,3775523.33,22.67 +mul,gmp,16384,16384,12,3,1761587.00,1760340.33,21.14 +mul,gmpz,16384,16384,12,3,1761942.25,1761189.58,21.14 +divrem,auto,4096,2048,41,3,497925.98,497876.29,20.42 +divrem,kernel,4096,2048,41,3,498401.49,498216.39,20.44 +divrem,floor,4096,2048,41,3,495478.02,495404.90,20.32 +divrem,gmp,4096,2048,54,3,372348.87,370674.93,20.10 +divrem,gmpz,4096,2048,55,3,368159.76,367950.25,20.25 +tochars,auto,10000,10,4,3,5895359.50,5888475.00,23.59 +tochars,kernel,10000,10,4,3,5822376.25,5818439.00,23.29 +tochars,gmp,10000,10,5,3,4208269.00,4193154.40,21.03 +tochars,gmpz,10000,10,5,3,4232282.40,4229362.60,21.16 +fromchars,auto,10000,10,6,3,3671038.00,3661800.17,22.01 +fromchars,kernel,10000,10,6,3,3587782.67,3575145.17,21.51 +fromchars,gmp,10000,10,11,3,1931879.09,1931417.27,21.25 +fromchars,gmpz,10000,10,10,3,2006814.00,2006759.20,20.07 diff --git a/tests/beman/big_int/perf/item1/x64_new64_seed1a.csv b/tests/beman/big_int/perf/item1/x64_new64_seed1a.csv new file mode 100644 index 00000000..402d034a --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_new64_seed1a.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T17:00:35Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2962502,9,6.73,6.66,20.03 +add,inplace,1,1,2029362,9,4.92,4.91,19.96 +add,kernel,1,1,10480457,9,1.95,1.90,20.35 +add,floor,1,1,2035514,9,9.82,9.82,19.99 +add,gmp,1,1,8822761,9,2.27,2.27,20.00 +add,gmpz,1,1,4802919,9,4.16,4.16,20.01 +add,auto,2,2,1255750,9,15.91,15.86,19.98 +add,inplace,2,2,1601019,9,6.26,6.07,19.98 +add,kernel,2,2,8283945,9,2.41,2.33,19.94 +add,floor,2,2,1949435,9,10.28,10.23,20.05 +add,gmp,2,2,8753242,9,2.28,2.27,19.92 +add,gmpz,2,2,4743114,9,4.23,4.22,20.04 +add,auto,4,4,1298091,9,15.41,15.41,20.00 +add,inplace,4,4,1747747,9,5.71,5.70,19.98 +add,kernel,4,4,6475829,9,3.12,3.08,20.15 +add,floor,4,4,1800164,9,11.12,11.06,20.03 +add,gmp,4,4,7893788,9,2.53,2.53,19.99 +add,gmpz,4,4,4507550,9,4.43,4.43,19.97 +add,auto,8,8,1193862,9,16.75,16.75,20.01 +add,inplace,8,8,1413067,9,7.07,7.07,20.01 +add,kernel,8,8,4318515,9,4.62,4.61,19.98 +add,floor,8,8,1585630,9,12.59,12.52,19.98 +add,gmp,8,8,5441151,9,3.68,3.67,20.06 +add,gmpz,8,8,4190526,9,4.75,4.72,19.88 +add,auto,16,16,954205,9,20.93,20.89,19.97 +add,inplace,16,16,842792,9,11.88,11.81,20.03 +add,kernel,16,16,2600166,9,7.66,7.64,19.92 +add,floor,16,16,1282531,9,15.61,15.60,20.03 +add,gmp,16,16,3634700,9,5.50,5.50,20.03 +add,gmpz,16,16,3042912,9,6.58,6.55,20.00 +add,auto,64,64,346832,9,57.55,57.48,19.96 +add,inplace,64,64,208016,9,48.06,48.05,20.00 +add,kernel,64,64,599652,9,33.44,33.05,20.04 +add,floor,64,64,481444,9,41.56,41.29,20.02 +add,gmp,64,64,1294717,9,15.45,15.42,20.00 +add,gmpz,64,64,1212810,9,16.49,16.46,20.00 +add,auto,256,256,93547,9,213.86,213.65,20.01 +add,inplace,256,256,50950,9,196.51,196.40,20.03 +add,kernel,256,256,139648,9,143.19,143.14,20.00 +add,floor,256,256,125574,9,159.26,159.15,20.01 +add,gmp,256,256,255676,9,78.23,78.21,20.03 +add,gmpz,256,256,251595,9,79.49,79.39,19.99 +add,auto,1024,1024,24995,9,800.31,800.21,20.00 +add,inplace,1024,1024,12657,9,790.10,789.88,20.01 +add,kernel,1024,1024,34623,9,577.83,577.67,20.01 +add,floor,1024,1024,33642,9,594.56,594.39,20.00 +add,gmp,1024,1024,51215,9,390.50,390.42,20.00 +add,gmpz,1024,1024,51083,9,391.54,391.48,20.01 +add,auto,2000,2000,13027,9,1535.30,1535.17,20.00 +add,inplace,2000,2000,6569,9,1521.12,1520.90,19.99 +add,kernel,2000,2000,17662,9,1132.38,1132.32,20.00 +add,floor,2000,2000,17382,9,1150.53,1150.31,20.00 +add,gmp,2000,2000,43237,9,462.60,462.56,20.02 +add,gmpz,2000,2000,42260,9,473.16,471.40,19.97 +add,auto,1024,1,79201,9,252.40,252.18,19.99 +add,inplace,1024,1,1958107,9,5.12,5.10,20.11 +add,kernel,1024,1,34585,9,577.40,577.38,19.98 +add,floor,1024,1,33680,9,593.85,593.78,20.00 +add,gmp,1024,1,85778,9,232.96,232.34,19.98 +add,gmpz,1024,1,85415,9,234.15,233.74,19.99 +sub,auto,1,1,2573666,9,7.76,7.74,20.00 +sub,inplace,1,1,2139120,9,4.68,4.68,20.03 +sub,kernel,1,1,13236499,9,1.51,1.51,20.03 +sub,floor,1,1,10588453,9,1.89,1.89,20.00 +sub,gmp,1,1,8824222,9,2.27,2.27,20.01 +sub,gmpz,1,1,4603633,9,4.35,4.34,20.59 +sub,auto,2,2,1238713,9,15.88,15.84,19.68 +sub,inplace,2,2,1930301,9,5.18,5.15,20.05 +sub,kernel,2,2,9504089,9,2.11,2.09,20.11 +sub,floor,2,2,1997813,9,10.01,10.01,20.01 +sub,gmp,2,2,8809857,9,2.27,2.27,19.98 +sub,gmpz,2,2,4221588,9,4.72,4.70,19.92 +sub,auto,4,4,1207591,9,16.58,16.56,20.06 +sub,inplace,4,4,1779911,9,5.59,5.59,19.92 +sub,kernel,4,4,6936672,9,2.88,2.88,19.97 +sub,floor,4,4,1854055,9,10.79,10.78,20.01 +sub,gmp,4,4,7571720,9,2.64,2.63,19.98 +sub,gmpz,4,4,4300611,9,4.66,4.62,20.00 +sub,auto,8,8,1113975,9,17.96,17.94,20.01 +sub,inplace,8,8,1438650,9,6.96,6.95,20.02 +sub,kernel,8,8,4509855,9,4.42,4.39,19.92 +sub,floor,8,8,1610342,9,12.41,12.39,19.99 +sub,gmp,8,8,5419298,9,3.69,3.69,19.99 +sub,gmpz,8,8,3969365,9,5.05,5.03,20.08 +sub,auto,16,16,950788,9,21.01,20.85,19.96 +sub,inplace,16,16,883532,9,11.28,11.22,19.95 +sub,kernel,16,16,2489842,9,8.02,8.02,19.97 +sub,floor,16,16,1292961,9,15.46,15.44,19.99 +sub,gmp,16,16,3636261,9,5.50,5.49,20.03 +sub,gmpz,16,16,2936957,9,6.85,6.78,20.09 +sub,auto,64,64,340501,9,58.76,58.70,20.00 +sub,inplace,64,64,212290,9,47.10,47.08,20.00 +sub,kernel,64,64,611122,9,32.73,32.72,20.06 +sub,floor,64,64,474424,9,42.18,42.04,20.00 +sub,gmp,64,64,1294710,9,15.45,15.45,20.00 +sub,gmpz,64,64,1194619,9,16.74,16.71,19.99 +sub,auto,256,256,92688,9,215.88,215.84,20.02 +sub,inplace,256,256,51048,9,195.93,195.89,20.00 +sub,kernel,256,256,140407,9,142.45,142.42,20.01 +sub,floor,256,256,126574,9,158.11,157.96,20.02 +sub,gmp,256,256,255557,9,78.24,78.24,20.00 +sub,gmpz,256,256,250442,9,79.84,79.79,20.00 +sub,auto,1024,1024,24748,9,808.16,808.03,20.02 +sub,inplace,1024,1024,12634,9,791.54,791.48,20.00 +sub,kernel,1024,1024,34592,9,577.73,577.72,19.99 +sub,floor,1024,1024,33683,9,593.68,593.50,20.05 +sub,gmp,1024,1024,51315,9,389.76,389.75,20.00 +sub,gmpz,1024,1024,51124,9,391.21,391.15,20.00 +sub,auto,2000,2000,12910,9,1549.44,1549.27,20.01 +sub,inplace,2000,2000,6580,9,1519.93,1519.89,20.00 +sub,kernel,2000,2000,17674,9,1131.65,1131.63,20.00 +sub,floor,2000,2000,17438,9,1146.98,1146.80,20.02 +sub,gmp,2000,2000,42573,9,469.72,469.71,20.00 +sub,gmpz,2000,2000,42714,9,468.20,466.20,20.01 +sub,auto,1024,1,79121,9,252.74,252.46,20.00 +sub,inplace,1024,1,2142796,9,4.65,4.64,19.95 +sub,kernel,1024,1,34641,9,576.50,576.50,19.97 +sub,floor,1024,1,33749,9,592.58,592.35,20.00 +sub,gmp,1024,1,85464,9,233.99,233.87,20.00 +sub,gmpz,1024,1,85285,9,234.48,234.12,20.00 +shl,auto,1,13,1575634,9,12.63,12.52,19.92 +shl,inplace,1,13,2716730,9,3.69,3.68,20.04 +shl,kernel,1,13,9626378,9,2.08,2.07,20.00 +shl,kernelip,1,13,5621489,9,1.77,1.73,19.83 +shl,floor,1,13,2077730,9,9.83,9.82,20.42 +shl,gmp,1,13,9527291,9,2.08,2.08,19.85 +shl,gmpz,1,13,6110903,9,3.27,3.27,20.00 +shl,auto,4,13,1489231,9,13.46,13.37,20.03 +shl,inplace,4,13,2160959,9,4.63,4.61,20.01 +shl,kernel,4,13,5769038,9,3.50,3.49,20.19 +shl,kernelip,4,13,3354908,9,3.01,2.97,20.24 +shl,floor,4,13,1775674,9,11.19,11.17,19.89 +shl,gmp,4,13,7991269,9,2.50,2.50,20.00 +shl,gmpz,4,13,4946904,9,4.04,4.04,20.02 +shl,auto,16,13,1171312,9,17.06,16.99,19.97 +shl,inplace,16,13,1087273,9,9.22,9.17,20.08 +shl,kernel,16,13,2682060,9,7.45,7.44,19.99 +shl,kernelip,16,13,1384774,9,7.15,7.06,19.79 +shl,floor,16,13,1336669,9,15.63,15.55,20.97 +shl,gmp,16,13,4588201,9,4.37,4.36,20.08 +shl,gmpz,16,13,3434496,9,5.83,5.82,20.07 +shl,auto,256,13,163974,9,122.01,121.93,20.01 +shl,inplace,256,13,97997,9,102.27,101.92,20.04 +shl,kernel,256,13,210816,9,95.07,94.75,20.04 +shl,kernelip,256,13,102612,9,97.53,97.33,20.01 +shl,floor,256,13,177831,9,116.51,116.39,20.72 +shl,gmp,256,13,424103,9,47.31,47.15,20.06 +shl,gmpz,256,13,400336,9,50.01,49.87,20.02 +shl,auto,2000,13,25883,9,772.85,772.46,20.00 +shl,inplace,2000,13,13498,9,740.60,737.98,19.98 +shl,kernel,2000,13,27823,9,719.10,718.96,20.02 +shl,kernelip,2000,13,13980,9,715.21,715.06,20.00 +shl,floor,2000,13,27186,9,738.26,738.13,20.07 +shl,gmp,2000,13,59632,9,335.46,335.37,20.02 +shl,gmpz,2000,13,58892,9,338.66,337.88,19.95 +shl,auto,2000,77,25786,9,774.85,774.73,20.00 +shl,inplace,2000,77,13490,9,741.40,739.88,20.01 +shl,kernel,2000,77,23467,9,854.17,851.27,20.03 +shl,kernelip,2000,77,12166,9,822.02,822.01,20.00 +shl,floor,2000,77,22897,9,874.77,873.94,20.03 +shl,gmp,2000,77,59112,9,341.89,339.93,20.20 +shl,gmpz,2000,77,58341,9,343.82,342.34,20.05 +shr,auto,1,13,2418427,9,8.22,8.20,19.91 +shr,inplace,1,13,3059258,9,3.31,3.28,20.24 +shr,kernel,1,13,11748798,9,1.70,1.70,19.99 +shr,floor,1,13,8824177,9,2.27,2.27,20.06 +shr,gmp,1,13,10398836,9,1.93,1.92,20.01 +shr,gmpz,1,13,5771325,9,3.47,3.47,20.00 +shr,auto,4,13,1239759,9,16.12,16.08,20.01 +shr,inplace,4,13,2105277,9,4.76,4.72,20.05 +shr,kernel,4,13,5771305,9,3.49,3.47,20.22 +shr,floor,4,13,1800537,9,11.12,11.06,20.03 +shr,gmp,4,13,8590282,9,2.34,2.32,20.06 +shr,gmpz,4,13,4423008,9,4.46,4.41,19.70 +shr,auto,16,13,989289,9,20.23,20.20,20.01 +shr,inplace,16,13,1136702,9,8.82,8.78,20.05 +shr,kernel,16,13,1857816,9,10.77,10.75,20.02 +shr,floor,16,13,1264229,9,15.88,15.78,20.08 +shr,gmp,16,13,4634023,9,4.31,4.31,20.01 +shr,gmpz,16,13,2710927,9,7.42,7.28,20.02 +shr,auto,256,13,160032,9,124.81,124.69,20.00 +shr,inplace,256,13,98260,9,101.70,101.63,19.99 +shr,kernel,256,13,181227,9,110.54,110.39,20.04 +shr,floor,256,13,153219,9,130.39,130.23,19.98 +shr,gmp,256,13,418031,9,47.90,47.82,20.04 +shr,gmpz,256,13,391631,9,50.89,50.67,19.95 +shr,auto,2000,13,26651,9,749.53,748.63,19.98 +shr,inplace,2000,13,13524,9,738.58,737.01,19.98 +shr,kernel,2000,13,24632,9,811.96,811.90,20.06 +shr,floor,2000,13,24024,9,831.93,831.59,19.99 +shr,gmp,2000,13,59595,9,336.15,335.62,20.05 +shr,gmpz,2000,13,58658,9,340.09,339.41,19.95 +shr,auto,2000,77,26738,9,748.04,747.47,20.01 +shr,inplace,2000,77,13518,9,740.13,739.84,20.01 +shr,kernel,2000,77,24055,9,831.48,831.47,20.00 +shr,floor,2000,77,23442,9,853.47,852.24,20.00 +shr,gmp,2000,77,59448,9,336.40,336.17,20.01 +shr,gmpz,2000,77,58804,9,339.58,339.08,19.97 +mul,auto,1,1,1224439,9,16.33,16.32,20.00 +mul,gmp,1,1,5906193,9,3.37,3.37,19.95 +mul,gmpz,1,1,4948325,9,4.04,4.04,20.00 +mul,auto,2,2,1058513,9,18.89,18.88,20.00 +mul,kernel,2,2,2834769,9,7.62,7.58,21.62 +mul,floor,2,2,1363508,9,14.99,14.88,20.41 +mul,gmp,2,2,5189171,9,3.85,3.83,20.00 +mul,gmpz,2,2,3232863,9,6.16,6.09,19.89 +mul,auto,3,3,984125,9,20.34,20.29,20.04 +mul,kernel,3,3,2385504,9,8.95,8.93,21.36 +mul,floor,3,3,1230324,9,16.40,16.31,20.16 +mul,gmp,3,3,2530362,9,7.94,7.81,20.01 +mul,gmpz,3,3,1982705,9,10.00,9.98,19.85 +mul,auto,4,4,892415,9,22.42,22.34,20.01 +mul,kernel,4,4,1932691,9,10.91,10.88,21.12 +mul,floor,4,4,1115209,9,18.18,18.12,20.30 +mul,gmp,4,4,2060716,9,9.68,9.67,19.97 +mul,gmpz,4,4,1644343,9,12.17,12.16,20.02 +mul,auto,6,6,710377,9,28.06,28.05,19.93 +mul,kernel,6,6,1215126,9,17.16,17.15,20.87 +mul,floor,6,6,811742,9,24.34,24.32,19.76 +mul,gmp,6,6,1252509,9,15.97,15.95,20.01 +mul,gmpz,6,6,1098013,9,18.21,18.20,20.04 +mul,auto,8,8,552852,9,36.20,36.14,20.03 +mul,kernel,8,8,804208,9,25.42,25.34,20.44 +mul,floor,8,8,619844,9,32.34,32.24,20.07 +mul,gmp,8,8,732692,9,27.15,26.95,19.88 +mul,gmpz,8,8,686247,9,29.33,29.11,20.15 +mul,auto,12,12,340598,9,58.75,58.72,20.01 +mul,kernel,12,12,420838,9,48.13,48.09,20.25 +mul,floor,12,12,364609,9,54.87,54.84,20.01 +mul,gmp,12,12,391646,9,50.90,50.74,19.93 +mul,gmpz,12,12,387966,9,51.63,51.50,20.06 +mul,auto,16,16,222287,9,90.04,89.73,20.01 +mul,kernel,16,16,251738,9,81.26,81.16,20.46 +mul,floor,16,16,228798,9,88.04,87.82,20.13 +mul,gmp,16,16,242430,9,82.57,82.36,20.02 +mul,gmpz,16,16,235949,9,84.82,84.67,20.01 +mul,auto,32,32,98593,9,202.84,202.42,20.01 +mul,kernel,32,32,100646,9,207.40,206.51,20.90 +mul,floor,32,32,95641,9,209.32,208.90,20.04 +mul,gmp,32,32,68041,9,292.32,290.98,19.90 +mul,gmpz,32,32,71598,9,277.94,277.17,19.91 +mul,auto,64,64,38676,9,516.33,515.61,19.97 +mul,kernel,64,64,40597,9,484.83,484.38,19.69 +mul,floor,64,64,40355,9,495.08,494.60,19.98 +mul,gmp,64,64,22750,9,879.59,879.10,20.02 +mul,gmpz,64,64,22721,9,879.59,877.33,19.98 +mul,auto,128,128,11581,9,1729.61,1725.94,20.03 +mul,kernel,128,128,11700,9,1723.00,1721.03,20.15 +mul,floor,128,128,11628,9,1719.97,1717.75,20.00 +mul,gmp,128,128,7188,9,2782.57,2782.18,20.00 +mul,gmpz,128,128,7221,9,2770.59,2759.08,19.99 +mul,auto,256,256,3209,9,6231.59,6225.66,20.03 +mul,kernel,256,256,3237,9,6246.58,6175.68,20.17 +mul,floor,256,256,3210,9,6248.22,6199.05,20.06 +mul,gmp,256,256,2515,9,7954.80,7944.65,20.05 +mul,gmpz,256,256,2506,9,7973.22,7921.95,19.99 +mul,auto,512,512,1043,9,19210.71,19191.47,20.05 +mul,kernel,512,512,1032,9,19348.34,19338.00,19.97 +mul,floor,512,512,1030,9,19420.18,19413.51,20.00 +mul,gmp,512,512,942,9,21204.07,21020.15,19.94 +mul,gmpz,512,512,947,9,20989.69,20841.79,19.85 +mul,auto,1000,1000,336,9,59627.71,59586.72,20.04 +mul,kernel,1000,1000,337,9,59568.19,59536.55,20.09 +mul,floor,1000,1000,336,9,59524.84,59491.01,20.00 +mul,gmp,1000,1000,368,9,53987.76,53662.93,19.87 +mul,gmpz,1000,1000,373,9,53517.59,53317.96,19.96 +mul,auto,2000,2000,114,9,176444.49,176288.07,20.11 +mul,kernel,2000,2000,114,9,176292.58,176144.32,20.11 +mul,floor,2000,2000,114,9,176503.15,176304.75,20.12 +mul,gmp,2000,2000,137,9,144666.08,144200.43,19.83 +mul,gmpz,2000,2000,139,9,144088.96,144017.68,20.08 +mul,auto,2000,100,1121,9,17841.58,17839.33,20.01 +mul,kernel,2000,100,1121,9,17966.73,17677.10,20.07 +mul,floor,2000,100,1133,9,17819.78,17652.68,20.21 +mul,gmp,2000,100,549,9,36365.86,36327.32,19.98 +mul,gmpz,2000,100,548,9,36340.23,36238.86,19.92 +sqr,auto,4,4,902209,9,22.13,22.13,20.02 +sqr,kernel,4,4,2008458,9,9.94,9.79,19.93 +sqr,floor,4,4,1190789,9,16.78,16.77,19.99 +sqr,gmp,4,4,3450965,9,5.79,5.77,19.99 +sqr,gmpz,4,4,2270932,9,8.85,8.78,20.10 +sqr,auto,16,16,299541,9,66.85,66.78,20.03 +sqr,kernel,16,16,349392,9,57.25,57.20,20.00 +sqr,floor,16,16,319859,9,62.62,62.59,20.03 +sqr,gmp,16,16,393575,9,50.75,50.52,19.97 +sqr,gmpz,16,16,365953,9,54.59,54.39,19.98 +sqr,auto,64,64,72082,9,277.06,276.40,19.97 +sqr,kernel,64,64,69361,9,288.29,287.98,20.05 +sqr,floor,64,64,68269,9,293.03,291.50,20.00 +sqr,gmp,64,64,35592,9,561.48,561.25,19.98 +sqr,gmpz,64,64,35421,9,563.75,562.78,19.97 +sqr,auto,512,512,1896,9,10540.98,10533.37,19.99 +sqr,kernel,512,512,1890,9,10526.71,10521.01,19.90 +sqr,floor,512,512,1883,9,10548.36,10541.54,19.87 +sqr,gmp,512,512,1299,9,15205.89,15117.13,19.76 +sqr,gmpz,512,512,1320,9,15146.42,15139.38,19.99 +sqr,auto,2000,2000,204,9,97774.70,97734.03,19.95 +sqr,kernel,2000,2000,205,9,97963.05,97869.66,20.10 +sqr,floor,2000,2000,205,9,97739.56,97726.85,20.04 +sqr,gmp,2000,2000,196,9,100934.60,100623.90,19.81 +sqr,gmpz,2000,2000,199,9,100641.68,100601.17,20.03 +divrem,auto,2,1,512264,9,39.16,39.03,20.06 +divrem,kernel,2,1,3434863,9,5.81,5.60,19.81 +divrem,floor,2,1,1564086,9,12.75,12.74,19.96 +divrem,gmp,2,1,2267464,9,8.69,8.68,19.71 +divrem,gmpz,2,1,1491943,9,13.38,13.32,19.99 +divrem,auto,8,4,211420,9,95.67,95.36,20.23 +divrem,kernel,8,4,471097,9,42.76,42.62,20.18 +divrem,floor,8,4,313261,9,63.91,63.77,20.05 +divrem,gmp,8,4,499954,9,40.05,39.89,20.03 +divrem,gmpz,8,4,479504,9,41.62,41.33,19.96 +divrem,auto,32,16,58946,9,339.95,339.16,20.03 +divrem,kernel,32,16,68103,9,292.84,291.91,19.97 +divrem,floor,32,16,65200,9,306.79,306.14,20.00 +divrem,gmp,32,16,104029,9,192.14,191.48,19.99 +divrem,gmpz,32,16,102664,9,194.69,193.99,19.99 +divrem,auto,128,64,6055,9,3332.44,3319.71,20.16 +divrem,kernel,128,64,6172,9,3237.50,3229.67,19.99 +divrem,floor,128,64,6152,9,3258.25,3240.84,20.03 +divrem,gmp,128,64,11584,9,1726.33,1725.02,20.00 +divrem,gmpz,128,64,11607,9,1722.98,1722.24,20.04 +divrem,auto,512,256,669,9,29939.76,29926.40,20.05 +divrem,kernel,512,256,681,9,29407.98,29393.44,20.04 +divrem,floor,512,256,680,9,29424.73,29407.55,20.01 +divrem,gmp,512,256,1227,9,16310.02,16308.68,20.01 +divrem,gmpz,512,256,1236,9,16191.73,16188.03,20.02 +divrem,auto,2000,1000,109,9,184678.80,184573.21,20.13 +divrem,kernel,2000,1000,109,9,184069.33,183993.76,20.06 +divrem,floor,2000,1000,109,9,184215.08,184126.77,20.08 +divrem,gmp,2000,1000,145,9,138643.61,138400.55,20.11 +divrem,gmpz,2000,1000,145,9,138381.05,138356.87,20.07 +divrem,auto,4000,2000,42,9,478317.95,478202.14,20.09 +divrem,kernel,4000,2000,43,9,474615.88,474523.14,20.41 +divrem,floor,4000,2000,43,9,474475.00,474184.93,20.40 +divrem,gmp,4000,2000,59,9,340763.22,340657.08,20.12 +divrem,gmpz,4000,2000,59,9,339624.47,338694.59,20.04 +divrem,auto,2000,100,138,9,145113.68,145039.17,20.03 +divrem,kernel,2000,100,137,9,146970.80,146698.25,20.18 +divrem,floor,2000,100,139,9,144437.97,144086.55,20.07 +divrem,gmp,2000,100,276,9,72632.64,72589.14,20.05 +divrem,gmpz,2000,100,276,9,72674.23,72624.81,20.06 +divrem,auto,65536,1,115,9,174563.77,174277.23,20.07 +divrem,kernel,65536,1,120,9,167367.07,167268.24,20.09 +divrem,floor,65536,1,119,9,168452.23,167920.83,20.05 +divrem,gmp,65536,1,136,9,148101.51,148095.52,20.14 +divrem,gmpz,65536,1,136,9,148108.10,148105.15,20.15 +fromchars,auto,4,10,165105,9,121.01,120.64,20.00 +fromchars,kernel,4,10,523099,9,38.29,38.18,20.04 +fromchars,gmp,4,10,633459,9,31.33,31.25,19.85 +fromchars,gmpz,4,10,298235,9,67.25,66.87,20.06 +fromchars,auto,16,10,46066,9,431.68,426.60,19.90 +fromchars,kernel,16,10,93189,9,213.85,209.96,19.99 +fromchars,gmp,16,10,160358,9,124.61,124.45,19.99 +fromchars,gmpz,16,10,77079,9,260.08,259.47,20.07 +fromchars,auto,64,10,6825,9,3014.83,2929.31,20.64 +fromchars,kernel,64,10,8641,9,2446.74,2266.94,21.40 +fromchars,gmp,64,10,23013,9,868.79,867.75,19.99 +fromchars,gmpz,64,10,14792,9,1350.84,1349.69,20.00 +fromchars,auto,256,10,698,9,29723.56,28805.99,20.94 +fromchars,kernel,256,10,713,9,29650.99,26387.09,20.63 +fromchars,gmp,256,10,2508,9,7963.96,7951.79,19.97 +fromchars,gmpz,256,10,1996,9,10046.66,10031.16,20.05 +fromchars,auto,2000,10,47,9,428460.47,428245.89,20.15 +fromchars,kernel,2000,10,50,9,405771.72,405641.00,20.29 +fromchars,gmp,2000,10,108,9,184625.91,183632.33,19.93 +fromchars,gmpz,2000,10,101,9,199377.83,198839.34,20.13 diff --git a/tests/beman/big_int/perf/item1/x64_new64_seed1b.csv b/tests/beman/big_int/perf/item1/x64_new64_seed1b.csv new file mode 100644 index 00000000..d153c77f --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_new64_seed1b.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T17:03:32Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2990122,9,6.70,6.61,20.03 +add,inplace,1,1,2035995,9,4.91,4.91,20.00 +add,kernel,1,1,10405454,9,1.91,1.89,19.91 +add,floor,1,1,1990852,9,9.82,9.82,19.58 +add,gmp,1,1,8823883,9,2.27,2.27,20.00 +add,gmpz,1,1,4813001,9,4.16,4.16,20.00 +add,auto,2,2,1257542,9,15.91,15.87,20.03 +add,inplace,2,2,1621745,9,6.14,6.06,19.94 +add,kernel,2,2,8621831,9,2.39,2.37,21.10 +add,floor,2,2,1935160,9,10.27,10.23,19.90 +add,gmp,2,2,8821828,9,2.27,2.27,20.00 +add,gmpz,2,2,4742340,9,4.22,4.20,20.03 +add,auto,4,4,1294681,9,15.42,15.41,19.96 +add,inplace,4,4,1747398,9,5.72,5.71,19.98 +add,kernel,4,4,6535811,9,3.07,3.04,20.22 +add,floor,4,4,1800061,9,11.06,11.02,19.94 +add,gmp,4,4,7950474,9,2.51,2.50,19.94 +add,gmpz,4,4,4533944,9,4.42,4.41,20.06 +add,auto,8,8,1193808,9,16.76,16.75,20.00 +add,inplace,8,8,1375185,9,7.30,7.26,20.13 +add,kernel,8,8,4338622,9,4.57,4.56,19.89 +add,floor,8,8,1595788,9,12.59,12.51,20.13 +add,gmp,8,8,5439332,9,3.68,3.67,20.01 +add,gmpz,8,8,4226533,9,4.72,4.71,19.99 +add,auto,16,16,957336,9,20.95,20.90,20.05 +add,inplace,16,16,842822,9,11.88,11.82,20.03 +add,kernel,16,16,2638541,9,7.57,7.56,19.97 +add,floor,16,16,1282861,9,15.63,15.59,20.09 +add,gmp,16,16,3632707,9,5.50,5.50,19.99 +add,gmpz,16,16,3080226,9,6.52,6.50,20.09 +add,auto,64,64,335697,9,59.63,59.58,20.02 +add,inplace,64,64,208032,9,48.07,48.06,20.00 +add,kernel,64,64,614518,9,32.74,32.59,20.12 +add,floor,64,64,477369,9,41.94,40.40,19.89 +add,gmp,64,64,1294538,9,15.45,15.45,20.00 +add,gmpz,64,64,1212843,9,16.49,16.46,20.03 +add,auto,256,256,93494,9,214.00,213.90,20.02 +add,inplace,256,256,50732,9,197.00,196.90,19.99 +add,kernel,256,256,140661,9,142.37,142.18,20.02 +add,floor,256,256,125537,9,159.43,159.27,20.02 +add,gmp,256,256,255678,9,78.22,78.21,20.03 +add,gmpz,256,256,251267,9,79.58,79.49,19.99 +add,auto,1024,1024,24998,9,799.97,799.84,20.00 +add,inplace,1024,1024,12656,9,790.14,789.98,20.00 +add,kernel,1024,1024,34613,9,577.70,577.55,20.00 +add,floor,1024,1024,33634,9,594.81,594.65,20.01 +add,gmp,1024,1024,51212,9,390.51,390.47,20.00 +add,gmpz,1024,1024,51070,9,391.36,391.34,19.99 +add,auto,2000,2000,13026,9,1535.43,1535.26,20.00 +add,inplace,2000,2000,6575,9,1520.97,1520.76,20.00 +add,kernel,2000,2000,17676,9,1131.53,1131.50,20.02 +add,floor,2000,2000,17389,9,1150.36,1150.22,20.01 +add,gmp,2000,2000,42007,9,475.23,475.08,20.02 +add,gmpz,2000,2000,41273,9,484.63,483.29,20.00 +add,auto,1024,1,79254,9,252.57,252.25,20.02 +add,inplace,1024,1,1963786,9,5.10,5.09,20.04 +add,kernel,1024,1,34641,9,577.40,577.38,20.00 +add,floor,1024,1,33681,9,593.83,593.79,20.00 +add,gmp,1024,1,85909,9,233.13,232.57,20.02 +add,gmpz,1024,1,85366,9,234.14,233.89,19.99 +sub,auto,1,1,2574726,9,7.76,7.74,20.00 +sub,inplace,1,1,2141538,9,4.67,4.66,20.01 +sub,kernel,1,1,13236297,9,1.51,1.51,20.00 +sub,floor,1,1,10587857,9,1.89,1.89,20.00 +sub,gmp,1,1,8824236,9,2.27,2.27,20.00 +sub,gmpz,1,1,4603643,9,4.34,4.34,20.09 +sub,auto,2,2,1256126,9,15.86,15.84,19.93 +sub,inplace,2,2,1943401,9,5.12,5.10,19.92 +sub,kernel,2,2,9373265,9,2.12,2.10,19.89 +sub,floor,2,2,2000933,9,10.01,10.00,20.07 +sub,gmp,2,2,8824144,9,2.27,2.27,20.03 +sub,gmpz,2,2,4603740,9,4.36,4.34,20.09 +sub,auto,4,4,1206521,9,16.56,16.56,20.00 +sub,inplace,4,4,1787995,9,5.59,5.59,20.01 +sub,kernel,4,4,7052507,9,2.84,2.83,20.01 +sub,floor,4,4,1854330,9,10.79,10.78,20.01 +sub,gmp,4,4,7985604,9,2.50,2.50,20.00 +sub,gmpz,4,4,4342270,9,4.62,4.61,20.10 +sub,auto,8,8,1113469,9,17.97,17.96,20.02 +sub,inplace,8,8,1438431,9,6.96,6.95,20.01 +sub,kernel,8,8,4570827,9,4.36,4.35,19.95 +sub,floor,8,8,1610836,9,12.40,12.38,19.98 +sub,gmp,8,8,5422569,9,3.69,3.69,20.00 +sub,gmpz,8,8,4022695,9,5.00,4.97,20.11 +sub,auto,16,16,951605,9,21.01,20.91,20.01 +sub,inplace,16,16,888722,9,11.24,11.12,19.97 +sub,kernel,16,16,2493630,9,8.02,8.02,20.01 +sub,floor,16,16,1294702,9,15.46,15.44,20.01 +sub,gmp,16,16,3638982,9,5.50,5.49,20.00 +sub,gmpz,16,16,2948379,9,6.82,6.76,20.07 +sub,auto,64,64,340529,9,58.78,58.68,20.02 +sub,inplace,64,64,211993,9,47.19,47.16,20.01 +sub,kernel,64,64,611402,9,32.70,32.69,19.99 +sub,floor,64,64,473350,9,42.27,41.86,19.98 +sub,gmp,64,64,1294691,9,15.45,15.45,20.00 +sub,gmpz,64,64,1194650,9,16.74,16.71,19.99 +sub,auto,256,256,92630,9,215.90,215.78,20.00 +sub,inplace,256,256,51039,9,195.89,195.81,20.00 +sub,kernel,256,256,140380,9,142.46,142.43,20.00 +sub,floor,256,256,126422,9,158.17,158.06,20.00 +sub,gmp,256,256,255610,9,78.24,78.24,20.00 +sub,gmpz,256,256,250418,9,79.83,79.74,19.99 +sub,auto,1024,1024,24738,9,808.70,808.48,20.10 +sub,inplace,1024,1024,12633,9,791.56,791.46,20.00 +sub,kernel,1024,1024,34618,9,577.76,577.75,20.00 +sub,floor,1024,1024,33681,9,593.90,593.71,20.00 +sub,gmp,1024,1024,51314,9,389.76,389.75,20.01 +sub,gmpz,1024,1024,51126,9,391.20,391.18,20.00 +sub,auto,2000,2000,12910,9,1549.17,1548.92,20.00 +sub,inplace,2000,2000,6579,9,1520.02,1519.87,20.00 +sub,kernel,2000,2000,17680,9,1131.19,1131.18,20.01 +sub,floor,2000,2000,17412,9,1149.13,1148.41,20.01 +sub,gmp,2000,2000,41824,9,478.21,478.20,20.00 +sub,gmpz,2000,2000,40911,9,487.16,485.81,19.93 +sub,auto,1024,1,79100,9,252.87,252.54,20.00 +sub,inplace,1024,1,2152801,9,4.64,4.64,20.00 +sub,kernel,1024,1,34630,9,577.42,577.42,20.01 +sub,floor,1024,1,33746,9,592.67,592.57,20.00 +sub,gmp,1024,1,85577,9,233.66,233.51,20.00 +sub,gmpz,1024,1,85293,9,234.46,234.10,20.00 +shl,auto,1,13,1567282,9,12.66,12.62,19.85 +shl,inplace,1,13,2715531,9,3.68,3.67,20.00 +shl,kernel,1,13,9674640,9,2.08,2.07,20.06 +shl,kernelip,1,13,5755621,9,1.75,1.70,20.02 +shl,floor,1,13,2069328,9,9.82,9.82,20.32 +shl,gmp,1,13,9623693,9,2.08,2.08,19.99 +shl,gmpz,1,13,6110873,9,3.27,3.27,20.00 +shl,auto,4,13,1461518,9,13.71,13.51,20.04 +shl,inplace,4,13,2164852,9,4.62,4.62,20.05 +shl,kernel,4,13,5724422,9,3.50,3.49,20.07 +shl,kernelip,4,13,3342397,9,2.97,2.95,19.86 +shl,floor,4,13,1775712,9,11.28,11.19,20.06 +shl,gmp,4,13,7991441,9,2.50,2.50,20.00 +shl,gmpz,4,13,4946970,9,4.04,4.04,20.02 +shl,auto,16,13,1159849,9,17.17,17.11,19.90 +shl,inplace,16,13,1086855,9,9.13,9.08,19.88 +shl,kernel,16,13,2679891,9,7.45,7.44,19.97 +shl,kernelip,16,13,1390520,9,7.15,7.05,19.86 +shl,floor,16,13,1342707,9,15.24,15.21,20.46 +shl,gmp,16,13,4768546,9,4.16,4.15,19.92 +shl,gmpz,16,13,3435402,9,5.84,5.82,20.06 +shl,auto,256,13,163871,9,122.03,121.96,20.00 +shl,inplace,256,13,97797,9,102.21,102.05,19.99 +shl,kernel,256,13,214329,9,94.23,93.49,20.19 +shl,kernelip,256,13,102386,9,97.42,97.33,19.95 +shl,floor,256,13,179039,9,116.41,116.35,20.84 +shl,gmp,256,13,408199,9,48.71,48.34,19.87 +shl,gmpz,256,13,401316,9,49.88,49.66,20.01 +shl,auto,2000,13,25887,9,772.74,772.53,20.01 +shl,inplace,2000,13,13503,9,740.93,740.49,20.02 +shl,kernel,2000,13,27776,9,719.94,719.71,20.00 +shl,kernelip,2000,13,13981,9,715.19,715.08,20.00 +shl,floor,2000,13,27113,9,739.12,738.54,20.05 +shl,gmp,2000,13,59641,9,335.39,335.34,20.00 +shl,gmpz,2000,13,59163,9,338.01,337.86,20.00 +shl,auto,2000,77,25820,9,774.68,774.40,20.00 +shl,inplace,2000,77,13487,9,741.43,740.43,20.00 +shl,kernel,2000,77,23407,9,848.74,848.23,19.92 +shl,kernelip,2000,77,12166,9,822.02,822.01,20.01 +shl,floor,2000,77,22910,9,871.33,870.42,19.96 +shl,gmp,2000,77,59286,9,337.53,337.53,20.02 +shl,gmpz,2000,77,59039,9,338.76,338.22,20.00 +shr,auto,1,13,2438135,9,8.19,8.19,19.97 +shr,inplace,1,13,3066519,9,3.30,3.27,20.23 +shr,kernel,1,13,11696359,9,1.70,1.70,19.90 +shr,floor,1,13,8824145,9,2.27,2.27,20.02 +shr,gmp,1,13,10558005,9,1.91,1.89,20.15 +shr,gmpz,1,13,5771181,9,3.47,3.47,20.00 +shr,auto,4,13,1246785,9,16.08,16.02,20.08 +shr,inplace,4,13,2278974,9,4.36,4.34,19.96 +shr,kernel,4,13,5578694,9,3.47,3.47,19.38 +shr,floor,4,13,1804091,9,11.07,11.05,19.99 +shr,gmp,4,13,8585217,9,2.33,2.32,19.97 +shr,gmpz,4,13,5056008,9,3.97,3.96,20.13 +shr,auto,16,13,1004422,9,19.92,19.90,20.03 +shr,inplace,16,13,1146805,9,8.70,8.65,19.99 +shr,kernel,16,13,2238583,9,8.92,8.90,20.01 +shr,floor,16,13,1301993,9,15.46,15.33,20.12 +shr,gmp,16,13,4138303,9,4.83,4.83,20.00 +shr,gmpz,16,13,3210635,9,6.34,6.22,20.57 +shr,auto,256,13,159078,9,125.57,125.38,19.97 +shr,inplace,256,13,98349,9,101.65,101.58,19.99 +shr,kernel,256,13,181238,9,110.39,110.32,20.01 +shr,floor,256,13,152571,9,130.26,130.05,19.87 +shr,gmp,256,13,418176,9,47.74,47.44,19.95 +shr,gmpz,256,13,393489,9,50.66,50.50,19.96 +shr,auto,2000,13,26672,9,750.29,749.60,20.02 +shr,inplace,2000,13,13554,9,737.08,735.29,20.00 +shr,kernel,2000,13,24617,9,812.52,812.48,20.00 +shr,floor,2000,13,24028,9,832.37,832.07,20.00 +shr,gmp,2000,13,59562,9,335.65,335.57,20.00 +shr,gmpz,2000,13,59011,9,338.95,338.85,20.01 +shr,auto,2000,77,26646,9,750.54,750.20,20.00 +shr,inplace,2000,77,13507,9,739.89,739.70,19.99 +shr,kernel,2000,77,24094,9,830.09,830.09,20.00 +shr,floor,2000,77,23487,9,852.21,851.86,20.03 +shr,gmp,2000,77,59464,9,336.24,336.04,19.99 +shr,gmpz,2000,77,58987,9,339.03,338.99,20.00 +mul,auto,1,1,1222953,9,16.34,16.31,19.99 +mul,gmp,1,1,6003939,9,3.37,3.36,20.27 +mul,gmpz,1,1,4988555,9,3.99,3.98,19.89 +mul,auto,2,2,1056499,9,18.96,18.87,20.03 +mul,kernel,2,2,2839166,9,7.58,7.55,21.59 +mul,floor,2,2,1358854,9,14.97,14.89,20.32 +mul,gmp,2,2,5162246,9,3.85,3.83,19.87 +mul,gmpz,2,2,3244271,9,6.12,6.09,19.90 +mul,auto,3,3,988244,9,20.28,20.24,20.11 +mul,kernel,3,3,2394574,9,8.92,8.92,21.48 +mul,floor,3,3,1248115,9,16.29,16.23,20.34 +mul,gmp,3,3,2559042,9,7.83,7.75,20.03 +mul,gmpz,3,3,2000264,9,10.02,9.96,20.01 +mul,auto,4,4,877890,9,22.34,22.25,19.62 +mul,kernel,4,4,1926499,9,10.93,10.90,21.11 +mul,floor,4,4,1113084,9,18.20,18.12,20.26 +mul,gmp,4,4,2069228,9,9.68,9.67,20.06 +mul,gmpz,4,4,1641079,9,12.18,12.14,19.99 +mul,auto,6,6,707892,9,28.04,28.03,19.86 +mul,kernel,6,6,1216879,9,17.16,17.15,20.89 +mul,floor,6,6,802901,9,24.37,24.32,19.58 +mul,gmp,6,6,1257101,9,15.91,15.87,20.03 +mul,gmpz,6,6,1098736,9,18.22,18.19,20.02 +mul,auto,8,8,553716,9,36.04,35.98,19.97 +mul,kernel,8,8,805691,9,25.43,25.37,20.48 +mul,floor,8,8,621431,9,32.30,32.24,20.07 +mul,gmp,8,8,736491,9,27.17,26.93,19.98 +mul,gmpz,8,8,691908,9,28.96,28.60,20.04 +mul,auto,12,12,343079,9,58.14,57.96,19.96 +mul,kernel,12,12,421290,9,47.97,47.85,20.21 +mul,floor,12,12,366084,9,54.82,54.74,20.07 +mul,gmp,12,12,411212,9,48.68,48.58,20.02 +mul,gmpz,12,12,391569,9,50.89,50.75,19.93 +mul,auto,16,16,226021,9,88.55,88.41,20.01 +mul,kernel,16,16,255018,9,79.51,79.36,20.27 +mul,floor,16,16,230568,9,86.75,86.30,19.99 +mul,gmp,16,16,244090,9,81.90,81.87,20.02 +mul,gmpz,16,16,236847,9,84.46,84.42,20.02 +mul,auto,32,32,99992,9,199.26,198.44,19.92 +mul,kernel,32,32,107194,9,187.77,187.25,20.14 +mul,floor,32,32,101931,9,196.39,195.59,20.01 +mul,gmp,32,32,73367,9,271.84,270.69,19.95 +mul,gmpz,32,32,73219,9,272.19,270.61,19.92 +mul,auto,64,64,40529,9,492.91,492.50,19.99 +mul,kernel,64,64,41481,9,482.51,481.80,20.03 +mul,floor,64,64,40776,9,490.49,489.93,20.01 +mul,gmp,64,64,22844,9,875.50,875.08,20.00 +mul,gmpz,64,64,22803,9,871.02,866.96,19.86 +mul,auto,128,128,11637,9,1717.82,1716.60,20.00 +mul,kernel,128,128,11762,9,1690.93,1689.67,19.89 +mul,floor,128,128,11736,9,1703.93,1701.91,19.99 +mul,gmp,128,128,7040,9,2840.60,2825.57,19.97 +mul,gmpz,128,128,7179,9,2763.26,2756.09,19.84 +mul,auto,256,256,3240,9,6172.05,6168.73,20.05 +mul,kernel,256,256,3242,9,6163.25,6159.44,20.01 +mul,floor,256,256,3236,9,6183.01,6178.66,20.02 +mul,gmp,256,256,2528,9,7908.39,7855.10,19.95 +mul,gmpz,256,256,2556,9,7767.37,7762.16,19.87 +mul,auto,512,512,1039,9,19255.68,19251.38,20.01 +mul,kernel,512,512,1044,9,19169.71,19138.37,20.03 +mul,floor,512,512,1028,9,19197.93,19176.54,19.74 +mul,gmp,512,512,944,9,20897.81,20827.60,19.76 +mul,gmpz,512,512,961,9,20818.14,20804.84,20.02 +mul,auto,1000,1000,334,9,59947.78,59902.46,20.04 +mul,kernel,1000,1000,336,9,59510.99,59477.81,20.00 +mul,floor,1000,1000,335,9,59613.97,59589.27,19.97 +mul,gmp,1000,1000,367,9,53756.36,53666.53,19.76 +mul,gmpz,1000,1000,374,9,53559.04,53524.48,20.03 +mul,auto,2000,2000,113,9,177185.40,177065.49,20.04 +mul,kernel,2000,2000,114,9,176481.11,176202.05,20.11 +mul,floor,2000,2000,114,9,176485.06,176352.18,20.15 +mul,gmp,2000,2000,139,9,144088.89,144062.60,20.06 +mul,gmpz,2000,2000,139,9,144121.93,144041.25,20.05 +mul,auto,2000,100,1135,9,17632.65,17628.15,20.01 +mul,kernel,2000,100,1133,9,17655.69,17649.80,20.00 +mul,floor,2000,100,1130,9,17706.44,17676.13,20.05 +mul,gmp,2000,100,544,9,36772.44,36526.14,19.99 +mul,gmpz,2000,100,554,9,36100.46,36042.04,20.02 +sqr,auto,4,4,901814,9,22.19,22.14,20.03 +sqr,kernel,4,4,1985896,9,9.99,9.89,19.85 +sqr,floor,4,4,1197027,9,17.02,16.98,20.38 +sqr,gmp,4,4,3007244,9,6.65,6.65,20.00 +sqr,gmpz,4,4,2268298,9,8.82,8.77,20.00 +sqr,auto,16,16,300724,9,66.33,66.16,19.94 +sqr,kernel,16,16,354158,9,56.53,56.50,20.04 +sqr,floor,16,16,319623,9,62.60,62.56,20.01 +sqr,gmp,16,16,393789,9,50.30,50.04,19.82 +sqr,gmpz,16,16,374020,9,53.31,53.30,19.96 +sqr,auto,64,64,72644,9,275.08,274.53,19.98 +sqr,kernel,64,64,73487,9,272.41,271.89,20.03 +sqr,floor,64,64,72752,9,278.29,277.63,20.25 +sqr,gmp,64,64,35720,9,559.93,558.59,19.99 +sqr,gmpz,64,64,35810,9,556.93,555.09,19.95 +sqr,auto,512,512,1888,9,10593.02,10585.90,20.00 +sqr,kernel,512,512,1843,9,10853.41,10849.74,20.00 +sqr,floor,512,512,1870,9,10602.51,10592.82,19.83 +sqr,gmp,512,512,1314,9,15090.21,15080.17,19.85 +sqr,gmpz,512,512,1325,9,15108.31,15098.51,20.02 +sqr,auto,2000,2000,201,9,98168.79,98099.38,19.86 +sqr,kernel,2000,2000,204,9,98059.38,97967.85,20.01 +sqr,floor,2000,2000,205,9,97917.76,97900.34,20.09 +sqr,gmp,2000,2000,198,9,100652.05,100597.78,19.95 +sqr,gmpz,2000,2000,199,9,100653.88,100569.83,20.03 +divrem,auto,2,1,508973,9,39.23,39.06,20.01 +divrem,kernel,2,1,3603029,9,5.76,5.71,20.87 +divrem,floor,2,1,1565799,9,12.77,12.75,20.00 +divrem,gmp,2,1,2266430,9,8.82,8.80,19.99 +divrem,gmpz,2,1,1517237,9,13.19,13.14,20.01 +divrem,auto,8,4,233137,9,87.01,86.64,20.29 +divrem,kernel,8,4,371515,9,53.75,53.50,20.07 +divrem,floor,8,4,323543,9,62.24,61.86,20.17 +divrem,gmp,8,4,498421,9,40.13,39.94,20.00 +divrem,gmpz,8,4,410300,9,49.15,48.85,20.19 +divrem,auto,32,16,58898,9,339.96,338.96,20.03 +divrem,kernel,32,16,69137,9,288.86,288.27,19.98 +divrem,floor,32,16,65914,9,303.74,303.22,20.02 +divrem,gmp,32,16,104749,9,191.37,191.08,20.06 +divrem,gmpz,32,16,98827,9,202.55,202.03,20.03 +divrem,auto,128,64,6036,9,3301.10,3294.04,19.93 +divrem,kernel,128,64,6156,9,3230.88,3227.19,19.90 +divrem,floor,128,64,6031,9,3270.04,3259.74,19.73 +divrem,gmp,128,64,11633,9,1719.63,1718.89,20.04 +divrem,gmpz,128,64,11609,9,1722.61,1721.89,20.00 +divrem,auto,512,256,670,9,29873.66,29860.28,20.02 +divrem,kernel,512,256,671,9,29810.89,29804.71,20.01 +divrem,floor,512,256,680,9,29451.92,29436.56,20.03 +divrem,gmp,512,256,1232,9,16238.38,16237.12,20.01 +divrem,gmpz,512,256,1227,9,16263.92,16257.94,19.96 +divrem,auto,2000,1000,108,9,185285.06,185201.32,20.06 +divrem,kernel,2000,1000,108,9,185917.61,185846.72,20.08 +divrem,floor,2000,1000,108,9,186372.71,186303.73,20.13 +divrem,gmp,2000,1000,146,9,137864.75,137842.10,20.13 +divrem,gmpz,2000,1000,146,9,137811.71,137798.82,20.12 +divrem,auto,4000,2000,43,9,474703.56,474589.86,20.42 +divrem,kernel,4000,2000,43,9,476298.14,476134.60,20.49 +divrem,floor,4000,2000,43,9,475275.74,475097.02,20.44 +divrem,gmp,4000,2000,59,9,337962.17,335528.36,19.93 +divrem,gmpz,4000,2000,60,9,338130.32,337576.18,20.29 +divrem,auto,2000,100,136,9,146849.06,146344.33,19.96 +divrem,kernel,2000,100,139,9,143598.78,142840.83,19.96 +divrem,floor,2000,100,139,9,143494.45,142516.94,19.95 +divrem,gmp,2000,100,276,9,72655.01,72592.06,20.05 +divrem,gmpz,2000,100,275,9,72743.37,72720.30,20.01 +divrem,auto,65536,1,115,9,174391.67,174003.28,20.05 +divrem,kernel,65536,1,120,9,167283.69,167066.54,20.08 +divrem,floor,65536,1,120,9,167871.33,167603.31,20.14 +divrem,gmp,65536,1,136,9,148102.98,148095.32,20.15 +divrem,gmpz,65536,1,136,9,148112.63,148106.90,20.14 +fromchars,auto,4,10,172366,9,114.93,114.67,19.81 +fromchars,kernel,4,10,505472,9,39.49,39.44,19.97 +fromchars,gmp,4,10,638349,9,31.36,31.18,20.02 +fromchars,gmpz,4,10,290003,9,68.80,68.60,19.96 +fromchars,auto,16,10,45753,9,433.94,427.31,19.85 +fromchars,kernel,16,10,94185,9,217.58,210.27,20.44 +fromchars,gmp,16,10,160518,9,124.46,124.11,19.98 +fromchars,gmpz,16,10,78188,9,256.16,255.23,20.06 +fromchars,auto,64,10,6713,9,3198.98,3028.14,21.47 +fromchars,kernel,64,10,8138,9,2420.81,2282.39,19.79 +fromchars,gmp,64,10,22845,9,872.59,871.43,19.95 +fromchars,gmpz,64,10,14696,9,1362.54,1359.58,20.03 +fromchars,auto,256,10,656,9,31928.16,28865.87,20.66 +fromchars,kernel,256,10,636,9,31026.14,28345.69,19.80 +fromchars,gmp,256,10,2493,9,8017.48,8011.83,19.99 +fromchars,gmpz,256,10,2013,9,9939.77,9933.08,20.01 +fromchars,auto,2000,10,47,9,428511.85,427765.43,20.14 +fromchars,kernel,2000,10,50,9,405642.52,405489.92,20.28 +fromchars,gmp,2000,10,110,9,182953.37,182876.15,20.13 +fromchars,gmpz,2000,10,101,9,197927.87,197843.49,19.99 diff --git a/tests/beman/big_int/perf/item1/x64_new64_seed2a.csv b/tests/beman/big_int/perf/item1/x64_new64_seed2a.csv new file mode 100644 index 00000000..44220890 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_new64_seed2a.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T17:06:29Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2947162,9,6.68,6.61,19.67 +add,inplace,1,1,2025987,9,4.91,4.89,19.89 +add,kernel,1,1,10441756,9,1.92,1.89,20.08 +add,floor,1,1,2043750,9,9.81,9.81,20.06 +add,gmp,1,1,8823906,9,2.27,2.27,20.00 +add,gmpz,1,1,4812914,9,4.16,4.16,20.00 +add,auto,2,2,1259569,9,15.93,15.86,20.08 +add,inplace,2,2,1675336,9,6.10,5.94,20.46 +add,kernel,2,2,8429919,9,2.39,2.32,20.13 +add,floor,2,2,1951460,9,10.31,10.25,20.10 +add,gmp,2,2,8824123,9,2.27,2.27,20.00 +add,gmpz,2,2,4813114,9,4.16,4.16,20.01 +add,auto,4,4,1297339,9,15.41,15.41,20.00 +add,inplace,4,4,1751736,9,5.71,5.71,20.03 +add,kernel,4,4,6350894,9,3.06,3.02,19.45 +add,floor,4,4,1805112,9,11.13,11.01,20.08 +add,gmp,4,4,8041969,9,2.49,2.49,20.01 +add,gmpz,4,4,4561067,9,4.37,4.35,19.93 +add,auto,8,8,1193848,9,16.75,16.75,20.00 +add,inplace,8,8,1409310,9,7.10,7.07,19.99 +add,kernel,8,8,4402958,9,4.53,4.53,19.96 +add,floor,8,8,1584952,9,12.68,12.59,20.08 +add,gmp,8,8,5435837,9,3.68,3.68,20.00 +add,gmpz,8,8,4304697,9,4.66,4.66,20.09 +add,auto,16,16,955804,9,20.93,20.88,20.01 +add,inplace,16,16,845340,9,11.84,11.73,20.01 +add,kernel,16,16,2646818,9,7.56,7.56,20.00 +add,floor,16,16,1290614,9,15.61,15.59,20.15 +add,gmp,16,16,3633563,9,5.50,5.50,19.99 +add,gmpz,16,16,3062237,9,6.53,6.51,20.00 +add,auto,64,64,347503,9,57.59,57.47,20.01 +add,inplace,64,64,208077,9,48.06,48.05,20.00 +add,kernel,64,64,607226,9,32.86,32.69,19.97 +add,floor,64,64,478994,9,41.56,41.49,20.01 +add,gmp,64,64,1294647,9,15.45,15.45,20.00 +add,gmpz,64,64,1212692,9,16.49,16.46,20.01 +add,auto,256,256,93872,9,213.18,213.11,20.01 +add,inplace,256,256,51114,9,195.68,195.64,20.00 +add,kernel,256,256,140421,9,142.38,142.16,19.99 +add,floor,256,256,125907,9,158.95,158.84,20.01 +add,gmp,256,256,255695,9,78.24,78.22,20.02 +add,gmpz,256,256,251617,9,79.47,79.38,19.99 +add,auto,1024,1024,24990,9,800.36,800.29,20.00 +add,inplace,1024,1024,12647,9,790.76,790.51,20.00 +add,kernel,1024,1024,34610,9,577.73,577.57,20.02 +add,floor,1024,1024,33606,9,594.63,594.44,19.98 +add,gmp,1024,1024,51210,9,390.51,390.40,20.00 +add,gmpz,1024,1024,51093,9,391.47,391.42,20.00 +add,auto,2000,2000,13035,9,1534.55,1534.35,20.02 +add,inplace,2000,2000,6579,9,1520.09,1520.04,20.00 +add,kernel,2000,2000,17376,9,1131.84,1131.81,19.68 +add,floor,2000,2000,17381,9,1151.27,1150.63,20.01 +add,gmp,2000,2000,43685,9,457.83,457.81,20.00 +add,gmpz,2000,2000,41744,9,478.78,477.21,19.97 +add,auto,1024,1,79221,9,252.52,252.19,20.00 +add,inplace,1024,1,1957152,9,5.11,5.09,19.99 +add,kernel,1024,1,34639,9,577.40,577.38,20.00 +add,floor,1024,1,33667,9,594.07,593.98,20.00 +add,gmp,1024,1,85910,9,232.71,232.60,20.00 +add,gmpz,1024,1,85465,9,233.97,233.76,19.99 +sub,auto,1,1,2579299,9,7.77,7.74,20.03 +sub,inplace,1,1,2141071,9,4.69,4.65,20.06 +sub,kernel,1,1,13236180,9,1.51,1.51,20.00 +sub,floor,1,1,10588830,9,1.89,1.89,20.00 +sub,gmp,1,1,8824049,9,2.27,2.27,20.00 +sub,gmpz,1,1,4584985,9,4.34,4.34,19.93 +sub,auto,2,2,1273749,9,15.66,15.61,19.97 +sub,inplace,2,2,1985996,9,5.07,5.00,20.11 +sub,kernel,2,2,9425125,9,2.11,2.10,19.93 +sub,floor,2,2,2020594,9,9.94,9.88,20.07 +sub,gmp,2,2,8816523,9,2.27,2.27,19.98 +sub,gmpz,2,2,4577372,9,4.34,4.34,19.91 +sub,auto,4,4,1207648,9,16.57,16.57,20.02 +sub,inplace,4,4,1787448,9,5.60,5.59,20.02 +sub,kernel,4,4,7051699,9,2.84,2.84,20.00 +sub,floor,4,4,1861829,9,10.75,10.71,20.01 +sub,gmp,4,4,8008164,9,2.50,2.50,20.00 +sub,gmpz,4,4,4375044,9,4.57,4.54,19.99 +sub,auto,8,8,1110720,9,18.01,17.98,19.99 +sub,inplace,8,8,1420766,9,7.05,7.03,20.03 +sub,kernel,8,8,4554947,9,4.39,4.39,20.01 +sub,floor,8,8,1629945,9,12.33,12.21,20.06 +sub,gmp,8,8,5424039,9,3.69,3.69,20.01 +sub,gmpz,8,8,3708706,9,5.34,5.31,19.82 +sub,auto,16,16,951650,9,21.11,20.93,20.09 +sub,inplace,16,16,902853,9,11.11,11.07,20.04 +sub,kernel,16,16,2493322,9,8.02,8.02,20.00 +sub,floor,16,16,1316000,9,15.24,15.22,20.07 +sub,gmp,16,16,3636666,9,5.50,5.49,19.98 +sub,gmpz,16,16,2925172,9,6.80,6.77,19.91 +sub,auto,64,64,341467,9,58.64,58.55,20.02 +sub,inplace,64,64,212442,9,47.09,47.09,20.02 +sub,kernel,64,64,611771,9,32.70,32.70,20.01 +sub,floor,64,64,474192,9,42.15,42.11,19.99 +sub,gmp,64,64,1294668,9,15.45,15.45,20.00 +sub,gmpz,64,64,1194263,9,16.74,16.71,19.99 +sub,auto,256,256,92660,9,215.87,215.76,20.00 +sub,inplace,256,256,51049,9,195.91,195.85,20.00 +sub,kernel,256,256,140395,9,142.45,142.44,20.00 +sub,floor,256,256,126610,9,158.17,157.97,20.06 +sub,gmp,256,256,255593,9,78.24,78.24,20.01 +sub,gmpz,256,256,250367,9,79.82,79.73,19.99 +sub,auto,1024,1024,23744,9,842.62,842.09,20.01 +sub,inplace,1024,1024,12621,9,792.36,792.34,20.00 +sub,kernel,1024,1024,34560,9,578.75,578.72,20.00 +sub,floor,1024,1024,33677,9,593.84,593.56,20.00 +sub,gmp,1024,1024,51198,9,390.65,390.63,20.00 +sub,gmpz,1024,1024,50967,9,392.42,392.37,20.00 +sub,auto,2000,2000,12900,9,1549.32,1549.23,19.99 +sub,inplace,2000,2000,6580,9,1519.93,1519.89,20.00 +sub,kernel,2000,2000,17657,9,1132.72,1132.69,20.02 +sub,floor,2000,2000,17408,9,1149.16,1148.91,20.00 +sub,gmp,2000,2000,41708,9,479.53,479.52,20.00 +sub,gmpz,2000,2000,41016,9,487.57,486.23,19.99 +sub,auto,1024,1,79026,9,253.12,252.89,20.00 +sub,inplace,1024,1,2041191,9,4.90,4.88,20.03 +sub,kernel,1024,1,34635,9,577.45,577.43,20.06 +sub,floor,1024,1,33756,9,592.65,592.53,20.01 +sub,gmp,1024,1,85942,9,232.78,232.73,20.00 +sub,gmpz,1024,1,85482,9,233.94,233.51,19.99 +shl,auto,1,13,1587202,9,12.68,12.58,20.12 +shl,inplace,1,13,2723779,9,3.67,3.66,20.00 +shl,kernel,1,13,9625862,9,2.08,2.06,19.96 +shl,kernelip,1,13,5723149,9,1.75,1.72,20.09 +shl,floor,1,13,2085814,9,9.81,9.79,20.46 +shl,gmp,1,13,9619800,9,2.08,2.08,19.99 +shl,gmpz,1,13,6110909,9,3.27,3.27,20.01 +shl,auto,4,13,1483437,9,13.52,13.48,20.07 +shl,inplace,4,13,2133880,9,4.63,4.62,19.79 +shl,kernel,4,13,5722548,9,3.50,3.48,20.03 +shl,kernelip,4,13,3438275,9,2.93,2.91,20.15 +shl,floor,4,13,1775812,9,11.20,11.18,19.89 +shl,gmp,4,13,7991195,9,2.70,2.50,21.46 +shl,gmpz,4,13,4947026,9,4.04,4.04,20.02 +shl,auto,16,13,1168648,9,17.13,17.08,20.02 +shl,inplace,16,13,1104645,9,9.06,9.04,20.09 +shl,kernel,16,13,2683600,9,7.46,7.44,20.03 +shl,kernelip,16,13,1391376,9,7.12,6.99,19.77 +shl,floor,16,13,1315926,9,15.22,15.21,20.03 +shl,gmp,16,13,4783280,9,4.15,4.13,19.98 +shl,gmpz,16,13,3448899,9,5.81,5.80,20.05 +shl,auto,256,13,163649,9,122.14,122.03,19.99 +shl,inplace,256,13,97750,9,102.25,102.05,19.99 +shl,kernel,256,13,214453,9,93.47,93.30,20.05 +shl,kernelip,256,13,102814,9,97.43,97.33,20.04 +shl,floor,256,13,179217,9,117.08,116.96,20.98 +shl,gmp,256,13,424059,9,47.22,47.13,20.02 +shl,gmpz,256,13,402260,9,49.76,49.60,20.01 +shl,auto,2000,13,25888,9,772.77,772.63,20.01 +shl,inplace,2000,13,13114,9,763.25,739.94,19.90 +shl,kernel,2000,13,27802,9,719.46,719.36,20.01 +shl,kernelip,2000,13,13981,9,715.21,715.08,20.00 +shl,floor,2000,13,27146,9,739.16,738.66,20.07 +shl,gmp,2000,13,59628,9,335.40,335.34,20.00 +shl,gmpz,2000,13,59177,9,338.12,337.88,20.01 +shl,auto,2000,77,25799,9,775.06,774.55,20.00 +shl,inplace,2000,77,13487,9,741.58,740.64,20.00 +shl,kernel,2000,77,23453,9,850.86,849.99,19.95 +shl,kernelip,2000,77,12165,9,822.04,822.02,20.02 +shl,floor,2000,77,22975,9,872.50,870.95,20.04 +shl,gmp,2000,77,59286,9,337.59,337.53,20.03 +shl,gmpz,2000,77,59135,9,338.23,338.20,20.00 +shr,auto,1,13,2439467,9,8.19,8.18,19.99 +shr,inplace,1,13,3032154,9,3.30,3.27,20.01 +shr,kernel,1,13,11756241,9,1.70,1.70,20.01 +shr,floor,1,13,8823980,9,2.27,2.27,20.00 +shr,gmp,1,13,10588341,9,1.89,1.89,20.05 +shr,gmpz,1,13,5772741,9,3.47,3.46,20.00 +shr,auto,4,13,1248254,9,16.02,15.99,20.02 +shr,inplace,4,13,2294995,9,4.36,4.34,20.02 +shr,kernel,4,13,5625705,9,3.56,3.55,20.06 +shr,floor,4,13,1793770,9,11.13,11.09,20.01 +shr,gmp,4,13,8608723,9,2.33,2.31,20.08 +shr,gmpz,4,13,5051974,9,3.98,3.95,20.09 +shr,auto,16,13,1003660,9,19.92,19.90,20.00 +shr,inplace,16,13,1154754,9,8.66,8.62,20.00 +shr,kernel,16,13,2367425,9,8.43,8.39,19.97 +shr,floor,16,13,1292444,9,15.47,15.32,20.00 +shr,gmp,16,13,4635087,9,4.32,4.31,20.02 +shr,gmpz,16,13,3212376,9,6.25,6.22,20.23 +shr,auto,256,13,154938,9,129.14,128.71,20.02 +shr,inplace,256,13,98387,9,101.70,101.50,20.01 +shr,kernel,256,13,181278,9,110.45,110.34,20.04 +shr,floor,256,13,152642,9,130.39,130.26,19.92 +shr,gmp,256,13,416163,9,47.90,47.47,19.92 +shr,gmpz,256,13,395020,9,50.69,50.50,20.02 +shr,auto,2000,13,26671,9,750.55,749.52,20.02 +shr,inplace,2000,13,13488,9,738.72,736.81,19.93 +shr,kernel,2000,13,24634,9,811.97,811.92,20.01 +shr,floor,2000,13,24050,9,831.87,831.70,20.01 +shr,gmp,2000,13,59509,9,335.89,335.63,20.02 +shr,gmpz,2000,13,58877,9,339.01,338.94,19.96 +shr,auto,2000,77,26678,9,750.71,749.77,20.05 +shr,inplace,2000,77,13520,9,740.20,740.02,20.02 +shr,kernel,2000,77,24087,9,830.39,830.35,20.00 +shr,floor,2000,77,23449,9,853.00,851.42,20.00 +shr,gmp,2000,77,59477,9,336.32,336.19,20.00 +shr,gmpz,2000,77,58978,9,339.09,338.99,20.00 +mul,auto,1,1,1224649,9,16.33,16.27,20.00 +mul,gmp,1,1,5971456,9,3.37,3.32,20.15 +mul,gmpz,1,1,4748782,9,4.22,4.21,20.02 +mul,auto,2,2,1055854,9,18.85,18.77,19.92 +mul,kernel,2,2,2856436,9,7.56,7.52,21.68 +mul,floor,2,2,1356617,9,14.93,14.90,20.28 +mul,gmp,2,2,5232787,9,3.84,3.82,20.07 +mul,gmpz,2,2,3285135,9,6.13,6.11,20.14 +mul,auto,3,3,991117,9,20.22,20.18,20.05 +mul,kernel,3,3,2379207,9,8.98,8.92,21.38 +mul,floor,3,3,1236965,9,16.45,16.38,20.36 +mul,gmp,3,3,2583551,9,7.69,7.65,19.88 +mul,gmpz,3,3,2004428,9,9.99,9.93,20.02 +mul,auto,4,4,891210,9,22.33,22.22,19.90 +mul,kernel,4,4,1930737,9,10.92,10.90,21.16 +mul,floor,4,4,1113638,9,18.21,18.12,20.28 +mul,gmp,4,4,2061126,9,9.69,9.66,19.96 +mul,gmpz,4,4,1646933,9,12.15,12.10,20.09 +mul,auto,6,6,713137,9,27.99,27.93,19.96 +mul,kernel,6,6,1215443,9,17.16,17.15,20.86 +mul,floor,6,6,819969,9,24.40,24.35,20.01 +mul,gmp,6,6,1271291,9,15.71,15.68,19.98 +mul,gmpz,6,6,1109290,9,18.06,17.99,20.04 +mul,auto,8,8,556271,9,35.70,35.46,19.89 +mul,kernel,8,8,805210,9,25.40,25.28,20.46 +mul,floor,8,8,620196,9,32.35,32.27,20.07 +mul,gmp,8,8,741889,9,27.09,26.88,20.08 +mul,gmpz,8,8,690182,9,28.88,28.54,19.95 +mul,auto,12,12,346729,9,57.61,57.56,20.00 +mul,kernel,12,12,425661,9,47.55,47.32,20.23 +mul,floor,12,12,368780,9,54.69,54.42,20.16 +mul,gmp,12,12,391054,9,51.05,50.90,19.97 +mul,gmpz,12,12,394035,9,50.75,50.75,20.00 +mul,auto,16,16,226273,9,88.42,88.35,20.01 +mul,kernel,16,16,256481,9,78.59,78.51,20.18 +mul,floor,16,16,233490,9,85.75,85.45,20.02 +mul,gmp,16,16,244143,9,81.89,81.87,19.99 +mul,gmpz,16,16,237835,9,84.07,83.99,19.99 +mul,auto,32,32,99490,9,200.78,200.12,19.97 +mul,kernel,32,32,102922,9,200.01,199.74,20.58 +mul,floor,32,32,98436,9,203.16,202.84,20.01 +mul,gmp,32,32,73361,9,270.19,268.35,19.80 +mul,gmpz,32,32,74166,9,269.78,269.63,20.03 +mul,auto,64,64,39707,9,503.08,502.64,19.98 +mul,kernel,64,64,40915,9,486.34,486.02,19.91 +mul,floor,64,64,40224,9,497.07,495.45,20.00 +mul,gmp,64,64,22852,9,871.90,863.91,19.89 +mul,gmpz,64,64,23179,9,863.01,862.40,20.02 +mul,auto,128,128,11622,9,1720.08,1719.04,19.99 +mul,kernel,128,128,11721,9,1705.83,1703.85,20.02 +mul,floor,128,128,11663,9,1717.29,1716.58,20.06 +mul,gmp,128,128,7220,9,2754.19,2726.54,19.89 +mul,gmpz,128,128,7384,9,2707.48,2707.06,20.00 +mul,auto,256,256,3233,9,6185.07,6183.40,20.01 +mul,kernel,256,256,3252,9,6145.99,6142.48,19.99 +mul,floor,256,256,3246,9,6163.27,6157.64,20.01 +mul,gmp,256,256,2519,9,7889.71,7832.09,19.88 +mul,gmpz,256,256,2553,9,7797.53,7790.37,19.93 +mul,auto,512,512,1043,9,19175.02,19159.57,20.00 +mul,kernel,512,512,1038,9,19195.56,19179.83,19.92 +mul,floor,512,512,1036,9,19309.17,19297.73,20.04 +mul,gmp,512,512,949,9,20861.36,20832.75,19.80 +mul,gmpz,512,512,958,9,20897.88,20891.80,20.02 +mul,auto,1000,1000,335,9,59800.80,59707.52,20.03 +mul,kernel,1000,1000,337,9,59437.95,59411.68,20.04 +mul,floor,1000,1000,336,9,59520.59,59472.57,20.00 +mul,gmp,1000,1000,369,9,54167.95,54162.62,19.99 +mul,gmpz,1000,1000,372,9,53833.36,53827.54,20.06 +mul,auto,2000,2000,113,9,176568.24,176409.13,19.95 +mul,kernel,2000,2000,114,9,176459.43,176175.34,20.11 +mul,floor,2000,2000,114,9,176414.18,176377.71,20.11 +mul,gmp,2000,2000,139,9,144361.71,144279.22,20.07 +mul,gmpz,2000,2000,139,9,144302.91,144268.82,20.06 +mul,auto,2000,100,1134,9,17640.57,17637.72,20.00 +mul,kernel,2000,100,1134,9,17654.16,17652.04,20.05 +mul,floor,2000,100,1132,9,17674.47,17672.16,20.01 +mul,gmp,2000,100,546,9,36198.28,35939.30,19.78 +mul,gmpz,2000,100,557,9,35934.60,35925.21,20.02 +sqr,auto,4,4,897143,9,22.16,22.12,19.93 +sqr,kernel,4,4,1992429,9,9.97,9.84,19.83 +sqr,floor,4,4,1223378,9,16.77,16.75,20.52 +sqr,gmp,4,4,3438398,9,5.80,5.77,19.98 +sqr,gmpz,4,4,2263755,9,8.86,8.78,20.07 +sqr,auto,16,16,300958,9,66.39,66.29,20.00 +sqr,kernel,16,16,349650,9,57.21,57.15,20.02 +sqr,floor,16,16,320318,9,62.64,62.60,20.07 +sqr,gmp,16,16,398797,9,49.83,49.79,19.88 +sqr,gmpz,16,16,383954,9,52.09,52.06,20.00 +sqr,auto,64,64,72796,9,275.16,274.27,20.02 +sqr,kernel,64,64,69636,9,287.26,287.01,20.02 +sqr,floor,64,64,68568,9,294.08,293.86,20.19 +sqr,gmp,64,64,35585,9,558.74,554.52,19.89 +sqr,gmpz,64,64,36061,9,555.23,553.33,20.08 +sqr,auto,512,512,1872,9,10677.59,10666.50,19.98 +sqr,kernel,512,512,1890,9,10540.76,10533.13,19.92 +sqr,floor,512,512,1895,9,10619.49,10606.63,20.13 +sqr,gmp,512,512,1325,9,15074.79,15068.19,19.98 +sqr,gmpz,512,512,1331,9,15036.69,15029.57,20.01 +sqr,auto,2000,2000,204,9,98242.38,98225.75,20.04 +sqr,kernel,2000,2000,201,9,99783.75,99759.32,20.06 +sqr,floor,2000,2000,199,9,98334.50,98311.23,19.62 +sqr,gmp,2000,2000,199,9,100613.18,100549.22,20.04 +sqr,gmpz,2000,2000,199,9,100678.97,100611.17,20.03 +divrem,auto,2,1,632058,9,31.69,31.47,20.02 +divrem,kernel,2,1,3413934,9,5.70,5.58,19.56 +divrem,floor,2,1,1562123,9,12.77,12.74,19.96 +divrem,gmp,2,1,2984206,9,6.70,6.69,20.00 +divrem,gmpz,2,1,1720269,9,11.67,11.62,20.06 +divrem,auto,8,4,204858,9,98.98,98.52,20.29 +divrem,kernel,8,4,373823,9,53.49,53.44,20.01 +divrem,floor,8,4,277984,9,72.11,71.79,20.09 +divrem,gmp,8,4,460146,9,43.67,43.49,20.09 +divrem,gmpz,8,4,434725,9,45.93,45.82,19.97 +divrem,auto,32,16,59117,9,339.40,339.03,20.08 +divrem,kernel,32,16,69197,9,288.57,287.48,19.97 +divrem,floor,32,16,65359,9,306.70,306.24,20.05 +divrem,gmp,32,16,104506,9,190.83,190.08,19.96 +divrem,gmpz,32,16,102918,9,194.41,193.72,20.08 +divrem,auto,128,64,5921,9,3322.12,3319.52,19.67 +divrem,kernel,128,64,6261,9,3194.53,3193.97,20.00 +divrem,floor,128,64,6023,9,3323.00,3320.36,20.02 +divrem,gmp,128,64,11631,9,1720.15,1718.96,20.02 +divrem,gmpz,128,64,11612,9,1722.73,1722.32,20.00 +divrem,auto,512,256,690,9,29143.08,29056.26,20.10 +divrem,kernel,512,256,693,9,28900.29,28883.07,20.03 +divrem,floor,512,256,691,9,28969.89,28948.91,20.01 +divrem,gmp,512,256,1234,9,16207.46,16202.35,20.00 +divrem,gmpz,512,256,1229,9,16284.15,16279.00,20.01 +divrem,auto,2000,1000,108,9,187321.85,187124.81,20.23 +divrem,kernel,2000,1000,109,9,184522.94,184456.74,20.11 +divrem,floor,2000,1000,109,9,184758.56,184650.45,20.16 +divrem,gmp,2000,1000,145,9,138077.55,138039.08,20.03 +divrem,gmpz,2000,1000,144,9,138056.44,137988.78,19.88 +divrem,auto,4000,2000,43,9,475254.30,475004.79,20.44 +divrem,kernel,4000,2000,42,9,476604.83,476442.79,20.05 +divrem,floor,4000,2000,42,9,476838.90,476593.76,20.04 +divrem,gmp,4000,2000,60,9,335032.80,333254.35,20.09 +divrem,gmpz,4000,2000,60,9,333410.83,332825.82,20.01 +divrem,auto,2000,100,141,9,142156.61,141730.06,20.07 +divrem,kernel,2000,100,139,9,144655.21,144391.73,20.11 +divrem,floor,2000,100,142,9,141655.44,141354.01,20.13 +divrem,gmp,2000,100,278,9,71998.38,71967.68,20.01 +divrem,gmpz,2000,100,279,9,71928.63,71908.56,20.08 +divrem,auto,65536,1,115,9,174332.21,174155.90,20.05 +divrem,kernel,65536,1,120,9,167419.08,167195.21,20.09 +divrem,floor,65536,1,119,9,168278.23,167955.12,20.03 +divrem,gmp,65536,1,135,9,148099.85,148091.96,20.00 +divrem,gmpz,65536,1,135,9,148115.63,148099.95,20.02 +fromchars,auto,4,10,172847,9,115.85,115.71,20.07 +fromchars,kernel,4,10,515611,9,38.82,38.72,20.01 +fromchars,gmp,4,10,624445,9,32.06,31.91,20.14 +fromchars,gmpz,4,10,285590,9,69.16,69.06,19.82 +fromchars,auto,16,10,46131,9,433.99,430.82,20.01 +fromchars,kernel,16,10,92819,9,214.14,203.07,19.77 +fromchars,gmp,16,10,162433,9,123.11,122.90,20.00 +fromchars,gmpz,16,10,68653,9,291.15,288.66,19.98 +fromchars,auto,64,10,6770,9,3174.61,3023.44,21.51 +fromchars,kernel,64,10,8672,9,2457.12,2249.98,20.90 +fromchars,gmp,64,10,21121,9,947.92,947.03,20.02 +fromchars,gmpz,64,10,14012,9,1426.78,1425.12,19.99 +fromchars,auto,256,10,672,9,32618.25,30466.41,21.18 +fromchars,kernel,256,10,718,9,28812.51,27449.44,20.86 +fromchars,gmp,256,10,2489,9,8032.21,8029.83,19.99 +fromchars,gmpz,256,10,2011,9,9940.70,9935.96,19.99 +fromchars,auto,2000,10,48,9,426524.38,424169.12,20.45 +fromchars,kernel,2000,10,50,9,405649.66,405317.38,20.28 +fromchars,gmp,2000,10,110,9,182745.08,182606.98,20.15 +fromchars,gmpz,2000,10,102,9,197517.05,197436.79,20.17 diff --git a/tests/beman/big_int/perf/item1/x64_new64_seed2b.csv b/tests/beman/big_int/perf/item1/x64_new64_seed2b.csv new file mode 100644 index 00000000..b650e1f5 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_new64_seed2b.csv @@ -0,0 +1,370 @@ +# gap_sweep date 2026-10-06T17:09:25Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2983927,9,6.73,6.58,20.05 +add,inplace,1,1,2035771,9,4.91,4.91,20.00 +add,kernel,1,1,10365375,9,1.92,1.90,19.95 +add,floor,1,1,2057950,9,9.77,9.74,20.10 +add,gmp,1,1,8823931,9,2.27,2.27,20.00 +add,gmpz,1,1,4812898,9,4.16,4.16,20.00 +add,auto,2,2,1273161,9,15.75,15.68,20.05 +add,inplace,2,2,1658994,9,6.15,5.96,20.34 +add,kernel,2,2,8184278,9,2.40,2.35,19.63 +add,floor,2,2,1949445,9,10.27,10.22,20.02 +add,gmp,2,2,8824062,9,2.27,2.27,20.00 +add,gmpz,2,2,4812022,9,4.16,4.16,20.00 +add,auto,4,4,1298082,9,15.42,15.41,20.01 +add,inplace,4,4,1746165,9,5.72,5.71,19.97 +add,kernel,4,4,6617923,9,3.05,3.03,20.26 +add,floor,4,4,1798412,9,11.08,11.01,19.94 +add,gmp,4,4,8041418,9,2.49,2.49,20.00 +add,gmpz,4,4,4555824,9,4.39,4.38,20.01 +add,auto,8,8,1193885,9,16.75,16.75,20.01 +add,inplace,8,8,1408586,9,7.09,7.08,20.00 +add,kernel,8,8,4411957,9,4.53,4.53,20.02 +add,floor,8,8,1603021,9,12.56,12.48,20.12 +add,gmp,8,8,5434699,9,3.68,3.68,20.01 +add,gmpz,8,8,4302458,9,4.65,4.63,20.04 +add,auto,16,16,949253,9,21.06,21.03,20.00 +add,inplace,16,16,848664,9,11.78,11.72,19.99 +add,kernel,16,16,2647208,9,7.56,7.56,20.00 +add,floor,16,16,1299326,9,15.45,15.37,20.06 +add,gmp,16,16,3634650,9,5.50,5.50,20.00 +add,gmpz,16,16,3078520,9,6.52,6.48,20.06 +add,auto,64,64,347088,9,57.58,57.54,20.06 +add,inplace,64,64,206662,9,48.31,48.30,19.97 +add,kernel,64,64,608229,9,32.88,32.58,19.98 +add,floor,64,64,477222,9,41.93,41.92,20.02 +add,gmp,64,64,1294725,9,15.45,15.45,20.00 +add,gmpz,64,64,1212798,9,16.49,16.46,19.99 +add,auto,256,256,93969,9,212.84,212.80,20.00 +add,inplace,256,256,51103,9,195.67,195.63,20.00 +add,kernel,256,256,140399,9,142.38,142.24,20.01 +add,floor,256,256,125524,9,159.23,159.16,19.99 +add,gmp,256,256,255699,9,78.22,78.21,20.00 +add,gmpz,256,256,251703,9,79.46,79.36,20.00 +add,auto,1024,1024,25006,9,799.90,799.79,20.00 +add,inplace,1024,1024,12659,9,790.06,789.87,20.00 +add,kernel,1024,1024,34616,9,577.86,577.61,20.00 +add,floor,1024,1024,33624,9,594.72,594.58,20.00 +add,gmp,1024,1024,51206,9,390.57,390.55,20.00 +add,gmpz,1024,1024,51099,9,391.40,391.38,20.02 +add,auto,2000,2000,13023,9,1535.78,1535.55,20.00 +add,inplace,2000,2000,6579,9,1520.08,1520.00,20.01 +add,kernel,2000,2000,17655,9,1132.78,1132.75,20.00 +add,floor,2000,2000,17377,9,1150.78,1150.40,20.00 +add,gmp,2000,2000,41798,9,479.14,478.49,20.03 +add,gmpz,2000,2000,41353,9,483.63,482.13,19.98 +add,auto,1024,1,79341,9,252.16,251.83,20.01 +add,inplace,1024,1,1960473,9,5.10,5.10,20.00 +add,kernel,1024,1,34633,9,577.39,577.36,20.00 +add,floor,1024,1,33514,9,593.98,593.90,19.91 +add,gmp,1024,1,85831,9,233.05,232.86,20.00 +add,gmpz,1024,1,85361,9,233.86,233.50,19.96 +sub,auto,1,1,2578774,9,7.77,7.75,20.04 +sub,inplace,1,1,2127122,9,4.68,4.64,19.90 +sub,kernel,1,1,13236253,9,1.51,1.51,20.00 +sub,floor,1,1,10588807,9,1.89,1.89,20.04 +sub,gmp,1,1,8824033,9,2.27,2.27,20.01 +sub,gmpz,1,1,4603712,9,4.34,4.34,20.03 +sub,auto,2,2,1272669,9,15.73,15.64,20.02 +sub,inplace,2,2,1964801,9,5.10,5.09,20.07 +sub,kernel,2,2,9504511,9,2.10,2.10,20.07 +sub,floor,2,2,2035529,9,10.03,9.89,20.38 +sub,gmp,2,2,8824029,9,2.27,2.27,20.00 +sub,gmpz,2,2,4594257,9,4.34,4.34,19.97 +sub,auto,4,4,1205804,9,16.57,16.57,19.99 +sub,inplace,4,4,1787525,9,5.59,5.59,20.02 +sub,kernel,4,4,7054044,9,2.84,2.83,20.00 +sub,floor,4,4,1884463,9,10.73,10.68,20.21 +sub,gmp,4,4,7457020,9,2.68,2.68,20.01 +sub,gmpz,4,4,4391434,9,4.57,4.53,20.06 +sub,auto,8,8,1115997,9,17.92,17.91,20.01 +sub,inplace,8,8,1442450,9,6.93,6.93,20.01 +sub,kernel,8,8,4576631,9,4.37,4.36,19.99 +sub,floor,8,8,1615788,9,12.40,12.37,20.03 +sub,gmp,8,8,4765367,9,4.20,4.20,20.00 +sub,gmpz,8,8,3840915,9,5.20,5.18,19.98 +sub,auto,16,16,948827,9,21.11,20.99,20.02 +sub,inplace,16,16,916254,9,10.98,10.95,20.11 +sub,kernel,16,16,2679158,9,7.46,7.46,20.01 +sub,floor,16,16,1312766,9,15.33,15.25,20.12 +sub,gmp,16,16,3637688,9,5.50,5.49,20.00 +sub,gmpz,16,16,2941291,9,6.80,6.78,20.00 +sub,auto,64,64,335474,9,59.57,59.53,20.00 +sub,inplace,64,64,211889,9,47.19,47.17,20.00 +sub,kernel,64,64,611479,9,32.70,32.69,20.00 +sub,floor,64,64,473456,9,42.26,41.80,20.06 +sub,gmp,64,64,1294709,9,15.45,15.45,20.00 +sub,gmpz,64,64,1190927,9,16.79,16.76,19.99 +sub,auto,256,256,92524,9,216.13,215.99,20.03 +sub,inplace,256,256,50886,9,195.92,195.90,19.94 +sub,kernel,256,256,139495,9,143.38,143.37,20.00 +sub,floor,256,256,126643,9,158.07,157.97,20.02 +sub,gmp,256,256,255606,9,78.24,78.24,20.00 +sub,gmpz,256,256,249971,9,79.85,79.74,19.96 +sub,auto,1024,1024,24733,9,808.45,808.21,19.99 +sub,inplace,1024,1024,12635,9,791.54,791.51,20.01 +sub,kernel,1024,1024,34616,9,577.80,577.76,20.01 +sub,floor,1024,1024,33676,9,593.90,593.78,20.00 +sub,gmp,1024,1024,51315,9,389.76,389.75,20.00 +sub,gmpz,1024,1024,51127,9,391.22,391.18,20.00 +sub,auto,2000,2000,12913,9,1548.79,1548.61,20.00 +sub,inplace,2000,2000,6580,9,1520.00,1519.91,20.01 +sub,kernel,2000,2000,17659,9,1132.59,1132.54,20.00 +sub,floor,2000,2000,17401,9,1149.50,1149.13,20.00 +sub,gmp,2000,2000,42600,9,469.52,469.49,20.00 +sub,gmpz,2000,2000,41776,9,478.76,477.05,20.03 +sub,auto,1024,1,79119,9,252.81,252.58,20.00 +sub,inplace,1024,1,2027790,9,4.89,4.88,19.87 +sub,kernel,1024,1,34691,9,576.51,576.50,20.02 +sub,floor,1024,1,33750,9,592.65,592.51,20.01 +sub,gmp,1024,1,85917,9,232.78,232.71,20.00 +sub,gmpz,1024,1,85490,9,233.94,233.48,19.99 +shl,auto,1,13,1614905,9,12.59,12.48,20.33 +shl,inplace,1,13,2528451,9,3.99,3.97,20.16 +shl,kernel,1,13,9626293,9,2.08,2.07,19.99 +shl,kernelip,1,13,5628671,9,1.74,1.71,19.57 +shl,floor,1,13,2011629,9,9.82,9.80,19.75 +shl,gmp,1,13,9626100,9,2.08,2.08,20.00 +shl,gmpz,1,13,5890106,9,3.39,3.39,19.98 +shl,auto,4,13,1484593,9,13.44,13.38,19.94 +shl,inplace,4,13,2160889,9,4.62,4.61,19.98 +shl,kernel,4,13,5720766,9,3.50,3.48,20.07 +shl,kernelip,4,13,3387956,9,2.94,2.93,20.05 +shl,floor,4,13,1775336,9,11.19,11.17,19.86 +shl,gmp,4,13,7991225,9,2.50,2.50,20.03 +shl,gmpz,4,13,4946379,9,4.04,4.04,20.02 +shl,auto,16,13,1166639,9,17.03,16.97,19.88 +shl,inplace,16,13,1084627,9,9.12,8.99,19.73 +shl,kernel,16,13,2686810,9,7.45,7.44,20.02 +shl,kernelip,16,13,1422901,9,7.10,7.07,20.26 +shl,floor,16,13,1344058,9,15.21,15.21,20.45 +shl,gmp,16,13,4837597,9,4.15,4.13,20.11 +shl,gmpz,16,13,3445982,9,5.80,5.80,20.05 +shl,auto,256,13,163968,9,122.03,121.90,20.01 +shl,inplace,256,13,97727,9,102.25,101.89,19.98 +shl,kernel,256,13,214754,9,93.18,92.91,20.01 +shl,kernelip,256,13,102658,9,97.43,97.35,20.01 +shl,floor,256,13,179755,9,116.53,116.47,20.95 +shl,gmp,256,13,424122,9,47.23,47.10,20.06 +shl,gmpz,256,13,401813,9,49.80,49.59,20.01 +shl,auto,2000,13,25888,9,772.77,772.67,20.02 +shl,inplace,2000,13,13504,9,740.89,739.16,20.01 +shl,kernel,2000,13,27782,9,720.02,719.85,20.01 +shl,kernelip,2000,13,13983,9,715.20,715.08,20.00 +shl,floor,2000,13,27174,9,739.79,739.62,20.11 +shl,gmp,2000,13,59551,9,335.38,335.37,19.97 +shl,gmpz,2000,13,59136,9,338.05,337.86,19.99 +shl,auto,2000,77,25819,9,774.75,774.62,20.01 +shl,inplace,2000,77,13488,9,741.52,741.38,20.00 +shl,kernel,2000,77,23540,9,850.01,848.62,20.00 +shl,kernelip,2000,77,12165,9,822.05,822.02,20.00 +shl,floor,2000,77,22953,9,870.91,870.53,20.00 +shl,gmp,2000,77,59285,9,337.63,337.54,20.02 +shl,gmpz,2000,77,59106,9,338.20,338.16,19.99 +shr,auto,1,13,2441630,9,8.19,8.19,20.01 +shr,inplace,1,13,3040369,9,3.28,3.26,19.99 +shr,kernel,1,13,11755993,9,1.70,1.70,20.02 +shr,floor,1,13,8823766,9,2.27,2.27,20.00 +shr,gmp,1,13,10588710,9,1.89,1.89,20.04 +shr,gmpz,1,13,5777432,9,3.46,3.46,20.02 +shr,auto,4,13,1238732,9,16.14,16.09,20.01 +shr,inplace,4,13,2004483,9,4.97,4.90,19.89 +shr,kernel,4,13,5771346,9,3.51,3.46,20.27 +shr,floor,4,13,1779624,9,11.24,11.21,20.02 +shr,gmp,4,13,8082021,9,2.47,2.47,19.97 +shr,gmpz,4,13,4192651,9,4.76,4.72,19.92 +shr,auto,16,13,998835,9,20.02,19.99,20.01 +shr,inplace,16,13,1155545,9,8.65,8.62,19.98 +shr,kernel,16,13,2291842,9,8.79,8.74,20.14 +shr,floor,16,13,1248350,9,15.72,15.60,19.62 +shr,gmp,16,13,4436465,9,4.51,4.50,20.03 +shr,gmpz,16,13,3237313,9,6.31,6.15,20.35 +shr,auto,256,13,159506,9,125.35,125.07,19.99 +shr,inplace,256,13,98515,9,101.65,101.55,20.03 +shr,kernel,256,13,180719,9,110.70,110.48,20.00 +shr,floor,256,13,153465,9,130.40,130.32,20.02 +shr,gmp,256,13,417967,9,47.77,47.52,19.99 +shr,gmpz,256,13,395372,9,50.70,50.62,20.05 +shr,auto,2000,13,26680,9,750.25,749.19,20.02 +shr,inplace,2000,13,13533,9,739.58,738.32,20.01 +shr,kernel,2000,13,24627,9,812.10,812.02,20.00 +shr,floor,2000,13,24022,9,832.09,831.84,19.99 +shr,gmp,2000,13,59598,9,335.65,335.54,20.02 +shr,gmpz,2000,13,58980,9,339.02,338.88,19.99 +shr,auto,2000,77,26505,9,754.65,754.06,20.01 +shr,inplace,2000,77,13512,9,740.11,738.47,19.99 +shr,kernel,2000,77,24152,9,828.11,828.09,20.00 +shr,floor,2000,77,23521,9,850.91,850.19,20.02 +shr,gmp,2000,77,59153,9,336.34,336.22,19.91 +shr,gmpz,2000,77,58980,9,339.07,339.03,20.00 +mul,auto,1,1,1199372,9,16.34,16.27,19.63 +mul,gmp,1,1,5937981,9,3.34,3.31,19.82 +mul,gmpz,1,1,5042278,9,3.97,3.97,20.02 +mul,auto,2,2,1065869,9,18.87,18.82,20.12 +mul,kernel,2,2,2839987,9,7.59,7.56,21.58 +mul,floor,2,2,1356424,9,14.92,14.87,20.26 +mul,gmp,2,2,5239458,9,3.82,3.80,20.07 +mul,gmpz,2,2,3285598,9,6.11,6.08,20.07 +mul,auto,3,3,989494,9,20.21,20.13,20.02 +mul,kernel,3,3,2393109,9,8.95,8.92,21.71 +mul,floor,3,3,1239907,9,16.44,16.38,20.41 +mul,gmp,3,3,2586523,9,7.78,7.70,20.16 +mul,gmpz,3,3,2013098,9,9.92,9.88,19.98 +mul,auto,4,4,894006,9,22.25,22.15,19.90 +mul,kernel,4,4,1926640,9,10.91,10.89,21.08 +mul,floor,4,4,1113831,9,18.19,18.14,20.28 +mul,gmp,4,4,2060795,9,9.66,9.66,19.93 +mul,gmpz,4,4,1638712,9,12.20,12.10,19.95 +mul,auto,6,6,717334,9,27.89,27.82,20.01 +mul,kernel,6,6,1217364,9,17.15,17.14,20.91 +mul,floor,6,6,820493,9,24.38,24.34,20.00 +mul,gmp,6,6,1269342,9,15.67,15.65,19.89 +mul,gmpz,6,6,1111777,9,17.96,17.92,19.97 +mul,auto,8,8,558143,9,35.56,35.45,19.86 +mul,kernel,8,8,811603,9,25.39,25.27,20.60 +mul,floor,8,8,615497,9,32.35,32.25,19.92 +mul,gmp,8,8,738738,9,27.05,26.90,19.98 +mul,gmpz,8,8,685388,9,28.88,28.70,19.79 +mul,auto,12,12,346995,9,57.61,57.59,20.00 +mul,kernel,12,12,428519,9,47.36,47.24,20.30 +mul,floor,12,12,368472,9,54.48,54.23,20.09 +mul,gmp,12,12,411752,9,48.56,48.55,20.01 +mul,gmpz,12,12,393990,9,50.75,50.73,19.99 +mul,auto,16,16,226275,9,88.38,88.33,20.00 +mul,kernel,16,16,256809,9,78.67,78.51,20.21 +mul,floor,16,16,234436,9,85.54,85.32,20.05 +mul,gmp,16,16,244118,9,81.90,81.89,19.99 +mul,gmpz,16,16,237935,9,84.07,84.03,20.00 +mul,auto,32,32,99671,9,200.21,199.37,19.94 +mul,kernel,32,32,106167,9,188.67,188.47,20.04 +mul,floor,32,32,101145,9,197.45,196.56,19.95 +mul,gmp,32,32,73236,9,269.60,268.80,19.79 +mul,gmpz,32,32,74156,9,269.71,269.66,20.00 +mul,auto,64,64,40330,9,493.60,492.95,19.91 +mul,kernel,64,64,40814,9,488.15,487.57,19.94 +mul,floor,64,64,40385,9,494.40,493.82,19.98 +mul,gmp,64,64,22893,9,866.14,858.83,19.82 +mul,gmpz,64,64,23261,9,860.00,858.34,20.04 +mul,auto,128,128,11557,9,1730.12,1728.78,20.01 +mul,kernel,128,128,11768,9,1694.36,1693.37,19.95 +mul,floor,128,128,11700,9,1707.95,1706.48,20.00 +mul,gmp,128,128,7031,9,2815.54,2790.22,19.79 +mul,gmpz,128,128,7122,9,2808.10,2807.02,20.00 +mul,auto,256,256,3235,9,6185.06,6183.06,20.01 +mul,kernel,256,256,3243,9,6176.11,6173.48,20.03 +mul,floor,256,256,3239,9,6177.23,6176.49,20.01 +mul,gmp,256,256,2527,9,7826.16,7779.29,19.83 +mul,gmpz,256,256,2563,9,7805.31,7801.25,20.01 +mul,auto,512,512,1044,9,19164.13,19142.86,20.01 +mul,kernel,512,512,1046,9,19150.47,19131.22,20.03 +mul,floor,512,512,1044,9,19168.41,19153.77,20.01 +mul,gmp,512,512,952,9,20789.91,20785.44,19.81 +mul,gmpz,512,512,960,9,20841.04,20823.52,20.01 +mul,auto,1000,1000,336,9,59673.24,59554.48,20.05 +mul,kernel,1000,1000,337,9,59462.38,59357.36,20.08 +mul,floor,1000,1000,336,9,59625.59,59573.19,20.05 +mul,gmp,1000,1000,371,9,53567.97,53560.42,19.88 +mul,gmpz,1000,1000,373,9,53749.76,53728.02,20.05 +mul,auto,2000,2000,114,9,176769.88,176633.75,20.17 +mul,kernel,2000,2000,114,9,176371.14,176102.37,20.11 +mul,floor,2000,2000,114,9,176411.07,176232.32,20.11 +mul,gmp,2000,2000,139,9,144123.43,144096.40,20.03 +mul,gmpz,2000,2000,139,9,144181.42,144119.34,20.04 +mul,auto,2000,100,1132,9,17639.44,17633.06,19.97 +mul,kernel,2000,100,1132,9,17664.50,17662.47,20.00 +mul,floor,2000,100,1131,9,17685.31,17682.20,20.01 +mul,gmp,2000,100,543,9,36468.65,36219.48,19.82 +mul,gmpz,2000,100,552,9,36170.94,36111.19,19.98 +sqr,auto,4,4,889675,9,22.15,22.10,19.74 +sqr,kernel,4,4,1985464,9,9.96,9.90,19.77 +sqr,floor,4,4,1208097,9,16.79,16.77,20.29 +sqr,gmp,4,4,3348758,9,5.79,5.76,19.44 +sqr,gmpz,4,4,2274242,9,8.83,8.77,20.06 +sqr,auto,16,16,301298,9,66.31,66.23,19.98 +sqr,kernel,16,16,349154,9,57.22,57.17,19.99 +sqr,floor,16,16,320305,9,62.69,62.59,20.09 +sqr,gmp,16,16,395746,9,49.83,49.81,19.75 +sqr,gmpz,16,16,384148,9,52.10,52.07,20.01 +sqr,auto,64,64,72031,9,277.71,276.97,19.99 +sqr,kernel,64,64,73241,9,273.18,272.86,20.02 +sqr,floor,64,64,71534,9,278.68,277.66,19.95 +sqr,gmp,64,64,35729,9,556.48,552.57,19.88 +sqr,gmpz,64,64,36024,9,552.00,551.02,19.89 +sqr,auto,512,512,1893,9,10571.09,10561.60,20.01 +sqr,kernel,512,512,1892,9,10577.56,10569.78,20.01 +sqr,floor,512,512,1888,9,10588.64,10580.76,19.99 +sqr,gmp,512,512,1332,9,15017.92,15011.03,20.00 +sqr,gmpz,512,512,1331,9,15030.31,15027.51,20.01 +sqr,auto,2000,2000,203,9,98567.38,98339.75,20.02 +sqr,kernel,2000,2000,204,9,98318.25,98274.92,20.06 +sqr,floor,2000,2000,204,9,98527.49,98507.87,20.10 +sqr,gmp,2000,2000,199,9,100651.96,100596.38,20.04 +sqr,gmpz,2000,2000,199,9,100658.40,100615.44,20.04 +divrem,auto,2,1,635819,9,31.60,31.47,20.11 +divrem,kernel,2,1,3578608,9,5.77,5.58,20.69 +divrem,floor,2,1,1533093,9,13.01,12.98,19.96 +divrem,gmp,2,1,2929584,9,6.70,6.70,19.65 +divrem,gmpz,2,1,1727401,9,11.60,11.58,20.05 +divrem,auto,8,4,207251,9,97.11,96.74,20.12 +divrem,kernel,8,4,370902,9,53.71,53.48,19.92 +divrem,floor,8,4,278094,9,72.13,71.47,20.05 +divrem,gmp,8,4,459016,9,43.47,43.42,19.99 +divrem,gmpz,8,4,434273,9,45.92,45.88,19.97 +divrem,auto,32,16,58259,9,341.69,341.61,19.92 +divrem,kernel,32,16,68662,9,291.96,291.26,20.05 +divrem,floor,32,16,65015,9,306.79,306.30,19.97 +divrem,gmp,32,16,104117,9,192.49,191.51,20.03 +divrem,gmpz,32,16,103622,9,194.00,193.65,20.12 +divrem,auto,128,64,6069,9,3295.84,3294.74,20.01 +divrem,kernel,128,64,6204,9,3223.08,3221.79,20.00 +divrem,floor,128,64,6222,9,3216.30,3215.40,20.02 +divrem,gmp,128,64,11394,9,1754.58,1752.55,19.99 +divrem,gmpz,128,64,11587,9,1726.50,1725.94,20.01 +divrem,auto,512,256,693,9,29110.86,28973.95,20.15 +divrem,kernel,512,256,692,9,28924.61,28901.07,20.02 +divrem,floor,512,256,689,9,29017.93,29001.93,19.99 +divrem,gmp,512,256,1233,9,16227.97,16225.90,20.01 +divrem,gmpz,512,256,1234,9,16214.95,16208.95,20.02 +divrem,auto,2000,1000,109,9,185196.28,184530.94,20.19 +divrem,kernel,2000,1000,108,9,186062.36,185996.72,20.09 +divrem,floor,2000,1000,108,9,186182.42,186083.47,20.11 +divrem,gmp,2000,1000,145,9,138335.21,138281.01,20.11 +divrem,gmpz,2000,1000,145,9,138134.63,138123.37,20.03 +divrem,auto,4000,2000,43,9,473971.91,473773.26,20.38 +divrem,kernel,4000,2000,43,9,474786.16,474576.40,20.42 +divrem,floor,4000,2000,43,9,475114.77,474869.26,20.45 +divrem,gmp,4000,2000,60,9,335354.32,334056.93,20.11 +divrem,gmpz,4000,2000,60,9,332544.43,332290.82,19.96 +divrem,auto,2000,100,139,9,144831.12,144819.19,20.15 +divrem,kernel,2000,100,142,9,141401.66,141110.63,20.09 +divrem,floor,2000,100,142,9,141223.35,141142.82,20.09 +divrem,gmp,2000,100,278,9,71952.97,71931.24,20.02 +divrem,gmpz,2000,100,279,9,71874.90,71864.14,20.05 +divrem,auto,65536,1,115,9,174442.58,174261.90,20.06 +divrem,kernel,65536,1,120,9,167187.50,167007.33,20.08 +divrem,floor,65536,1,120,9,167573.87,167288.59,20.11 +divrem,gmp,65536,1,136,9,148102.09,148092.53,20.14 +divrem,gmpz,65536,1,136,9,148112.93,148090.84,20.18 +fromchars,auto,4,10,171613,9,116.41,116.10,19.99 +fromchars,kernel,4,10,516388,9,38.79,38.65,20.02 +fromchars,gmp,4,10,626640,9,32.01,31.92,20.06 +fromchars,gmpz,4,10,289369,9,69.08,68.90,20.04 +fromchars,auto,16,10,46715,9,432.97,429.01,20.26 +fromchars,kernel,16,10,89825,9,225.59,220.22,20.26 +fromchars,gmp,16,10,162268,9,123.27,123.09,20.01 +fromchars,gmpz,16,10,78620,9,254.41,254.19,20.04 +fromchars,auto,64,10,6730,9,2945.58,2821.74,19.98 +fromchars,kernel,64,10,9742,9,2334.51,2103.67,21.02 +fromchars,gmp,64,10,21302,9,939.07,937.69,20.00 +fromchars,gmpz,64,10,14057,9,1423.53,1421.83,20.03 +fromchars,auto,256,10,679,9,28853.69,28141.23,19.86 +fromchars,kernel,256,10,736,9,29469.16,27330.21,21.90 +fromchars,gmp,256,10,2492,9,8016.63,8009.97,19.98 +fromchars,gmpz,256,10,2007,9,9976.02,9970.71,20.02 +fromchars,auto,2000,10,47,9,426673.13,423767.66,20.05 +fromchars,kernel,2000,10,50,9,405997.02,405780.76,20.30 +fromchars,gmp,2000,10,110,9,182764.29,182702.07,20.10 +fromchars,gmpz,2000,10,102,9,197428.02,197379.51,20.14 diff --git a/tests/beman/big_int/perf/item1/x64_new64_shortcut_run1.csv b/tests/beman/big_int/perf/item1/x64_new64_shortcut_run1.csv new file mode 100644 index 00000000..d8f94268 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_new64_shortcut_run1.csv @@ -0,0 +1,20 @@ +# shortcut A/B new64 run1 +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +mul,auto,2,2,1058099,9,18.87,18.84,20.00 +mul,kernel,2,2,2826567,9,7.65,7.60,21.68 +mul,auto,3,3,986605,9,20.29,20.22,20.02 +mul,kernel,3,3,2379337,9,9.38,9.30,22.33 +mul,auto,4,4,895981,9,22.26,22.19,19.98 +mul,kernel,4,4,1935498,9,10.95,10.92,21.21 +mul,auto,6,6,718194,9,27.89,27.82,20.04 +mul,kernel,6,6,1215406,9,17.15,17.14,20.84 +mul,auto,8,8,556105,9,35.67,35.46,19.83 +mul,kernel,8,8,802432,9,25.65,25.53,20.61 +mul,auto,12,12,346220,9,57.71,57.62,20.01 +mul,kernel,12,12,426984,9,47.40,47.31,20.25 +mul,auto,16,16,208058,9,96.06,95.99,19.99 +mul,kernel,16,16,226490,9,88.15,87.98,19.98 +sqr,auto,4,4,903271,9,22.20,22.06,20.04 +sqr,kernel,4,4,1616631,9,12.47,12.28,20.17 +sqr,auto,16,16,291093,9,68.76,68.60,20.02 +sqr,kernel,16,16,343068,9,58.34,58.23,20.01 diff --git a/tests/beman/big_int/perf/item1/x64_new64_shortcut_run2.csv b/tests/beman/big_int/perf/item1/x64_new64_shortcut_run2.csv new file mode 100644 index 00000000..b04b224f --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_new64_shortcut_run2.csv @@ -0,0 +1,20 @@ +# shortcut A/B new64 run2 +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +mul,auto,2,2,1052056,9,18.94,18.87,19.95 +mul,kernel,2,2,2808152,9,7.59,7.52,21.28 +mul,auto,3,3,981985,9,20.43,20.25,20.02 +mul,kernel,3,3,2390276,9,8.93,8.92,21.40 +mul,auto,4,4,888690,9,22.37,22.34,19.92 +mul,kernel,4,4,1931632,9,10.93,10.90,21.13 +mul,auto,6,6,713189,9,28.00,27.96,19.97 +mul,kernel,6,6,1217894,9,17.16,17.14,20.90 +mul,auto,8,8,560338,9,35.68,35.51,20.01 +mul,kernel,8,8,808429,9,25.31,25.23,20.48 +mul,auto,12,12,346907,9,57.65,57.56,20.00 +mul,kernel,12,12,427145,9,47.56,47.44,20.33 +mul,auto,16,16,210630,9,95.03,94.90,20.02 +mul,kernel,16,16,230473,9,87.91,87.80,20.26 +sqr,auto,4,4,907887,9,22.03,21.95,20.00 +sqr,kernel,4,4,2032432,9,9.84,9.75,20.00 +sqr,auto,16,16,301689,9,66.33,66.26,20.01 +sqr,kernel,16,16,349143,9,57.25,57.21,19.99 diff --git a/tests/beman/big_int/perf/item1/x64_new64_shortcut_run3.csv b/tests/beman/big_int/perf/item1/x64_new64_shortcut_run3.csv new file mode 100644 index 00000000..321c8551 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_new64_shortcut_run3.csv @@ -0,0 +1,20 @@ +# shortcut A/B new64 run3 +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +mul,auto,2,2,1053169,9,18.94,18.89,19.97 +mul,kernel,2,2,2854276,9,7.64,7.61,21.82 +mul,auto,3,3,968130,9,20.29,20.24,19.66 +mul,kernel,3,3,2385658,9,8.94,8.91,21.34 +mul,auto,4,4,886249,9,22.34,22.27,19.82 +mul,kernel,4,4,1899183,9,11.61,11.52,22.03 +mul,auto,6,6,714107,9,27.99,27.86,19.98 +mul,kernel,6,6,1217561,9,17.15,17.13,20.90 +mul,auto,8,8,561084,9,35.69,35.59,20.02 +mul,kernel,8,8,781155,9,25.82,25.70,20.17 +mul,auto,12,12,346370,9,57.78,57.74,20.03 +mul,kernel,12,12,418197,9,47.77,47.67,19.99 +mul,auto,16,16,210696,9,94.97,94.90,20.01 +mul,kernel,16,16,228457,9,88.22,87.95,20.16 +sqr,auto,4,4,908551,9,21.95,21.89,19.96 +sqr,kernel,4,4,2021037,9,9.85,9.80,19.93 +sqr,auto,16,16,260154,9,77.18,76.93,20.07 +sqr,kernel,16,16,352459,9,56.74,56.70,20.00 diff --git a/tests/beman/big_int/perf/item1/x64_new64_spot_seed1.csv b/tests/beman/big_int/perf/item1/x64_new64_spot_seed1.csv new file mode 100644 index 00000000..cfa266c1 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_new64_spot_seed1.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,1591,3,12437.96,12437.75,19.79 +add,inplace,16384,16384,803,3,12455.50,12455.03,20.00 +add,kernel,16384,16384,2154,3,9288.78,9288.37,20.01 +add,floor,16384,16384,2148,3,9312.95,9312.88,20.00 +add,gmp,16384,16384,2885,3,6934.99,6934.82,20.01 +add,gmpz,16384,16384,2882,3,6927.60,6926.87,19.97 +mul,auto,2000,2000,113,3,176524.72,176519.96,19.95 +mul,kernel,2000,2000,114,3,176559.53,176449.72,20.13 +mul,floor,2000,2000,114,3,176852.52,176736.38,20.16 +mul,gmp,2000,2000,139,3,143955.26,143944.85,20.01 +mul,gmpz,2000,2000,139,3,143997.83,143946.70,20.02 +mul,auto,16384,16384,6,3,3777189.00,3775779.33,22.66 +mul,kernel,16384,16384,6,3,3791482.00,3790272.33,22.75 +mul,floor,16384,16384,6,3,3787669.17,3783454.00,22.73 +mul,gmp,16384,16384,12,3,1761828.42,1761481.58,21.14 +mul,gmpz,16384,16384,12,3,1763531.42,1762290.92,21.16 +divrem,auto,4096,2048,41,3,500795.68,499912.71,20.53 +divrem,kernel,4096,2048,41,3,498583.71,498537.00,20.44 +divrem,floor,4096,2048,41,3,497344.63,497116.76,20.39 +divrem,gmp,4096,2048,55,3,367953.18,367893.25,20.24 +divrem,gmpz,4096,2048,55,3,367482.76,367367.53,20.22 +tochars,auto,10000,10,4,3,5884269.00,5883212.00,23.56 +tochars,kernel,10000,10,4,3,5854447.25,5852018.00,23.43 +tochars,gmp,10000,10,5,3,4185088.20,4183189.00,20.93 +tochars,gmpz,10000,10,5,3,4221363.40,4219639.40,21.11 +fromchars,auto,10000,10,6,3,3649842.50,3648271.33,21.92 +fromchars,kernel,10000,10,6,3,3575054.00,3559428.67,21.43 +fromchars,gmp,10000,10,11,3,1932985.82,1931462.82,21.27 +fromchars,gmpz,10000,10,10,3,2008227.20,2007289.10,20.08 diff --git a/tests/beman/big_int/perf/item1/x64_new64_spot_seed2.csv b/tests/beman/big_int/perf/item1/x64_new64_spot_seed2.csv new file mode 100644 index 00000000..737e5d92 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_new64_spot_seed2.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,1609,3,12432.76,12431.98,20.01 +add,inplace,16384,16384,803,3,12455.74,12455.59,20.00 +add,kernel,16384,16384,2149,3,9307.34,9307.30,20.00 +add,floor,16384,16384,2143,3,9328.71,9327.92,20.03 +add,gmp,16384,16384,2536,3,7888.12,7886.73,20.01 +add,gmpz,16384,16384,2535,3,7891.87,7890.30,20.00 +mul,auto,2000,2000,113,3,178054.55,177946.59,20.12 +mul,kernel,2000,2000,114,3,176508.37,176507.18,20.13 +mul,floor,2000,2000,114,3,176551.76,176518.70,20.13 +mul,gmp,2000,2000,139,3,144204.45,144187.40,20.05 +mul,gmpz,2000,2000,139,3,144341.19,144275.71,20.06 +mul,auto,16384,16384,6,3,3771149.50,3770493.17,22.64 +mul,kernel,16384,16384,6,3,3771288.17,3765809.67,22.64 +mul,floor,16384,16384,6,3,3780640.00,3780459.00,22.71 +mul,gmp,16384,16384,11,3,1834016.91,1832816.91,20.17 +mul,gmpz,16384,16384,12,3,1804320.58,1803606.50,21.65 +divrem,auto,4096,2048,41,3,496737.88,496732.44,20.37 +divrem,kernel,4096,2048,41,3,499080.10,498891.59,20.46 +divrem,floor,4096,2048,41,3,499402.51,499394.20,20.48 +divrem,gmp,4096,2048,54,3,370861.43,369023.02,20.00 +divrem,gmpz,4096,2048,55,3,367787.42,367640.15,20.23 +tochars,auto,10000,10,4,3,5873762.50,5871235.00,23.51 +tochars,kernel,10000,10,4,3,5838182.25,5834857.50,23.35 +tochars,gmp,10000,10,5,3,4180554.80,4179733.20,20.91 +tochars,gmpz,10000,10,5,3,4220963.00,4220620.80,21.11 +fromchars,auto,10000,10,6,3,3652930.17,3646335.33,21.92 +fromchars,kernel,10000,10,6,3,3560482.83,3550122.83,21.36 +fromchars,gmp,10000,10,11,3,1933120.55,1931096.09,21.34 +fromchars,gmpz,10000,10,10,3,2005491.20,2005324.10,20.06 diff --git a/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run1.csv b/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run1.csv new file mode 100644 index 00000000..db9039a1 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run1.csv @@ -0,0 +1,20 @@ +# shortcut A/B nosc64 run1 +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +mul,auto,2,2,868401,9,22.74,22.65,19.76 +mul,kernel,2,2,2773105,9,7.63,7.56,21.19 +mul,auto,3,3,813455,9,24.60,24.50,20.03 +mul,kernel,3,3,2390989,9,8.93,8.92,21.39 +mul,auto,4,4,757720,9,26.27,26.18,19.90 +mul,kernel,4,4,1926421,9,10.93,10.91,21.09 +mul,auto,6,6,599372,9,33.36,33.33,19.99 +mul,kernel,6,6,1215103,9,17.17,17.15,20.88 +mul,auto,8,8,483777,9,41.30,41.22,19.98 +mul,kernel,8,8,807772,9,25.43,25.34,20.54 +mul,auto,12,12,319597,9,62.58,62.41,19.99 +mul,kernel,12,12,425710,9,48.29,48.19,20.56 +mul,auto,16,16,200506,9,99.79,99.66,20.01 +mul,kernel,16,16,249820,9,79.36,79.22,19.84 +sqr,auto,4,4,733701,9,27.32,27.23,20.04 +sqr,kernel,4,4,2008767,9,10.17,9.97,20.39 +sqr,auto,16,16,280965,9,71.24,71.16,20.01 +sqr,kernel,16,16,348113,9,57.42,57.38,19.99 diff --git a/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run2.csv b/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run2.csv new file mode 100644 index 00000000..b0c80651 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run2.csv @@ -0,0 +1,20 @@ +# shortcut A/B nosc64 run2 +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +mul,auto,2,2,873498,9,22.67,22.62,19.83 +mul,kernel,2,2,2839003,9,7.61,7.58,21.65 +mul,auto,3,3,820849,9,24.45,24.36,20.08 +mul,kernel,3,3,2359197,9,8.94,8.93,21.13 +mul,auto,4,4,757700,9,26.33,26.31,19.96 +mul,kernel,4,4,1933369,9,10.94,10.90,21.16 +mul,auto,6,6,612103,9,32.68,32.64,20.00 +mul,kernel,6,6,1217181,9,17.17,17.15,20.93 +mul,auto,8,8,485020,9,41.15,40.91,19.95 +mul,kernel,8,8,805846,9,25.51,25.30,20.55 +mul,auto,12,12,317224,9,62.61,62.37,19.85 +mul,kernel,12,12,424272,9,47.50,47.40,20.16 +mul,auto,16,16,173590,9,115.51,115.09,20.04 +mul,kernel,16,16,256763,9,78.56,78.45,20.18 +sqr,auto,4,4,733109,9,27.35,27.31,20.05 +sqr,kernel,4,4,2026865,9,9.87,9.77,20.01 +sqr,auto,16,16,272845,9,73.27,73.21,20.00 +sqr,kernel,16,16,345750,9,57.84,57.77,20.03 diff --git a/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run3.csv b/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run3.csv new file mode 100644 index 00000000..b7add623 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run3.csv @@ -0,0 +1,20 @@ +# shortcut A/B nosc64 run3 +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +mul,auto,2,2,876250,9,22.72,22.67,19.98 +mul,kernel,2,2,2818407,9,7.57,7.54,21.46 +mul,auto,3,3,812625,9,24.72,24.57,20.18 +mul,kernel,3,3,2388863,9,8.93,8.91,21.59 +mul,auto,4,4,755599,9,26.37,26.31,19.96 +mul,kernel,4,4,1930599,9,10.92,10.91,21.13 +mul,auto,6,6,599281,9,32.77,32.72,19.65 +mul,kernel,6,6,1215955,9,17.17,17.15,20.87 +mul,auto,8,8,488777,9,41.02,40.75,20.04 +mul,kernel,8,8,807898,9,25.38,25.20,20.52 +mul,auto,12,12,319362,9,62.54,62.33,19.98 +mul,kernel,12,12,425897,9,47.55,47.41,20.24 +mul,auto,16,16,171887,9,116.03,115.56,19.94 +mul,kernel,16,16,256109,9,78.91,78.81,20.22 +sqr,auto,4,4,733262,9,27.30,27.27,20.03 +sqr,kernel,4,4,2018549,9,9.89,9.83,19.97 +sqr,auto,16,16,274932,9,72.77,72.70,20.02 +sqr,kernel,16,16,348580,9,57.44,57.36,20.02 diff --git a/tests/beman/big_int/perf/item1/x64_study128_run1.csv b/tests/beman/big_int/perf/item1/x64_study128_run1.csv new file mode 100644 index 00000000..d812b5ee --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study128_run1.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:12:16Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new128 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2378345,9,8.32,8.31,19.79 +add,inplace,1,1,2036089,9,4.91,4.89,20.00 +add,kernel,1,1,10420139,9,1.92,1.90,20.03 +add,floor,1,1,7792082,9,2.60,2.53,20.21 +add,gmp,1,1,8642719,9,2.35,2.27,20.16 +add,gmpz,1,1,4811288,9,4.16,4.16,19.99 +add,auto,2,2,1037988,9,19.49,19.28,20.18 +add,inplace,2,2,1457167,9,6.90,6.84,20.20 +add,kernel,2,2,8607393,9,2.36,2.31,20.27 +add,floor,2,2,1958992,9,10.28,10.23,20.12 +add,gmp,2,2,8824093,9,2.27,2.27,20.00 +add,gmpz,2,2,4813126,9,4.16,4.16,20.00 +add,auto,4,4,1133040,9,17.70,17.45,20.02 +add,inplace,4,4,1606523,9,6.17,6.05,19.88 +add,kernel,4,4,6542415,9,3.03,3.02,19.83 +add,floor,4,4,1793675,9,11.17,11.08,20.07 +add,gmp,4,4,8044143,9,2.49,2.49,20.01 +add,gmpz,4,4,4582112,9,4.34,4.34,19.91 +add,auto,8,8,1065413,9,18.79,18.69,20.02 +add,inplace,8,8,1375105,9,7.34,7.20,20.16 +add,kernel,8,8,4411860,9,4.53,4.53,20.03 +add,floor,8,8,1599967,9,12.49,12.45,20.01 +add,gmp,8,8,5437331,9,3.68,3.68,20.00 +add,gmpz,8,8,4297525,9,4.68,4.66,20.11 +add,auto,16,16,797141,9,25.05,24.93,19.96 +add,inplace,16,16,733579,9,13.82,13.60,20.27 +add,kernel,16,16,2642928,9,7.56,7.55,19.97 +add,floor,16,16,1299130,9,15.42,15.40,20.04 +add,gmp,16,16,3635760,9,5.50,5.50,20.02 +add,gmpz,16,16,3071673,9,6.52,6.50,20.02 +sub,auto,1,1,2076016,9,9.63,9.63,20.02 +sub,inplace,1,1,2161159,9,4.65,4.63,20.12 +sub,kernel,1,1,13236266,9,1.51,1.51,20.00 +sub,floor,1,1,10585831,9,1.89,1.89,19.99 +sub,gmp,1,1,8824091,9,2.27,2.27,20.00 +sub,gmpz,1,1,4603697,9,4.34,4.34,20.02 +sub,auto,2,2,1846925,9,10.83,10.80,20.05 +sub,inplace,2,2,1831768,9,5.43,5.36,19.97 +sub,kernel,2,2,9549201,9,2.11,2.10,20.18 +sub,floor,2,2,8137867,9,2.47,2.46,20.18 +sub,gmp,2,2,8824092,9,2.27,2.27,20.00 +sub,gmpz,2,2,4585338,9,4.34,4.34,19.99 +sub,auto,4,4,1041442,9,19.47,19.29,20.27 +sub,inplace,4,4,1686733,9,5.97,5.91,20.13 +sub,kernel,4,4,7051442,9,2.84,2.84,20.03 +sub,floor,4,4,1884929,9,10.70,10.63,20.16 +sub,gmp,4,4,7973618,9,2.50,2.50,19.94 +sub,gmpz,4,4,4386255,9,4.56,4.54,20.03 +sub,auto,8,8,948649,9,20.96,20.76,19.87 +sub,inplace,8,8,1412387,9,6.96,6.95,19.71 +sub,kernel,8,8,4588422,9,4.36,4.36,20.02 +sub,floor,8,8,1621930,9,12.26,12.20,19.89 +sub,gmp,8,8,5423292,9,3.69,3.69,20.02 +sub,gmpz,8,8,3988278,9,4.98,4.95,19.85 +sub,auto,16,16,816229,9,24.64,24.09,20.08 +sub,inplace,16,16,897940,9,11.15,11.09,20.01 +sub,kernel,16,16,2493836,9,8.02,8.02,20.00 +sub,floor,16,16,1310988,9,15.28,15.25,20.05 +sub,gmp,16,16,3640225,9,5.49,5.49,20.01 +sub,gmpz,16,16,2892169,9,6.93,6.91,20.03 +shl,auto,1,13,2795159,9,7.16,7.14,20.02 +shl,inplace,1,13,2320650,9,4.26,4.24,19.82 +shl,kernel,1,13,9626307,9,2.07,2.04,19.88 +shl,kernelip,1,13,5671726,9,1.76,1.73,19.99 +shl,floor,1,13,8860171,9,2.65,2.62,23.62 +shl,gmp,1,13,9626241,9,1.89,1.89,18.19 +shl,gmpz,1,13,6109742,9,3.27,3.27,20.06 +shl,auto,4,13,1333371,9,14.86,14.81,19.81 +shl,inplace,4,13,2107349,9,4.75,4.74,20.01 +shl,kernel,4,13,5707672,9,3.52,3.48,20.06 +shl,kernelip,4,13,3380550,9,2.94,2.91,19.88 +shl,floor,4,13,1836676,9,11.19,11.18,20.55 +shl,gmp,4,13,7991276,9,2.31,2.31,18.48 +shl,gmpz,4,13,4946961,9,4.04,4.04,20.05 +shl,auto,16,13,1095454,9,18.27,18.20,20.00 +shl,inplace,16,13,1128184,9,8.89,8.85,20.05 +shl,kernel,16,13,2683977,9,7.45,7.43,19.99 +shl,kernelip,16,13,1443005,9,7.17,7.12,20.69 +shl,floor,16,13,1345536,9,15.21,15.21,20.48 +shl,gmp,16,13,4790622,9,4.20,4.16,20.20 +shl,gmpz,16,13,3432321,9,5.83,5.81,20.00 +shr,auto,1,13,2245821,9,8.90,8.87,19.99 +shr,inplace,1,13,2846033,9,3.45,3.43,19.67 +shr,kernel,1,13,11752430,9,1.70,1.70,20.01 +shr,floor,1,13,7635598,9,2.60,2.59,19.86 +shr,gmp,1,13,10587331,9,1.89,1.89,20.05 +shr,gmpz,1,13,5772733,9,3.47,3.46,20.06 +shr,auto,4,13,1192992,9,16.80,16.73,20.07 +shr,inplace,4,13,2243652,9,4.45,4.43,19.97 +shr,kernel,4,13,5711959,9,3.47,3.47,19.83 +shr,floor,4,13,1786514,9,11.19,11.17,20.01 +shr,gmp,4,13,8454248,9,2.33,2.31,19.76 +shr,gmpz,4,13,5002944,9,3.97,3.94,19.86 +shr,auto,16,13,959108,9,20.94,20.82,20.07 +shr,inplace,16,13,1178049,9,8.47,8.41,19.95 +shr,kernel,16,13,2389094,9,8.41,8.38,20.11 +shr,floor,16,13,1292450,9,15.54,15.37,20.04 +shr,gmp,16,13,4625023,9,4.30,4.29,19.90 +shr,gmpz,16,13,3249748,9,6.24,6.16,20.41 +mul,auto,1,1,1888258,9,10.57,10.54,19.97 +mul,gmp,1,1,5909109,9,3.40,3.38,20.05 +mul,gmpz,1,1,5032904,9,3.97,3.97,19.98 +mul,auto,2,2,975653,9,20.30,20.25,19.81 +mul,kernel,2,2,2734194,9,7.57,7.54,20.70 +mul,floor,2,2,1353682,9,15.03,14.93,20.55 +mul,gmp,2,2,5201979,9,3.83,3.80,19.91 +mul,gmpz,2,2,3264693,9,6.14,6.09,20.02 +mul,auto,3,3,915260,9,21.90,21.86,20.04 +mul,kernel,3,3,2322088,9,8.93,8.92,20.76 +mul,floor,3,3,1246481,9,16.50,16.25,20.61 +mul,gmp,3,3,2597837,9,7.76,7.73,20.17 +mul,gmpz,3,3,2002592,9,9.94,9.92,19.94 +mul,auto,4,4,830616,9,23.95,23.89,19.91 +mul,kernel,4,4,1891935,9,10.90,10.88,20.65 +mul,floor,4,4,1109132,9,18.50,18.29,20.71 +mul,gmp,4,4,2071348,9,9.67,9.62,20.03 +mul,gmpz,4,4,1640888,9,12.18,12.14,20.00 +mul,auto,6,6,676270,9,29.63,29.55,20.04 +mul,kernel,6,6,1213233,9,17.15,17.13,20.84 +mul,floor,6,6,821652,9,24.65,24.31,20.39 +mul,gmp,6,6,1273880,9,15.68,15.63,19.98 +mul,gmpz,6,6,1109941,9,18.04,17.94,20.02 +mul,auto,8,8,533947,9,37.34,37.24,19.94 +mul,kernel,8,8,809791,9,25.31,25.15,20.49 +mul,floor,8,8,613750,9,32.62,32.56,20.04 +mul,gmp,8,8,734746,9,27.08,27.00,19.91 +mul,gmpz,8,8,695170,9,29.20,28.01,20.21 +mul,auto,12,12,341023,9,58.65,58.62,20.00 +mul,kernel,12,12,419995,9,48.14,48.05,20.23 +mul,floor,12,12,363693,9,55.29,55.13,20.10 +mul,gmp,12,12,411838,9,48.56,48.54,20.01 +mul,gmpz,12,12,385810,9,51.84,51.83,20.00 +mul,auto,16,16,220298,9,90.72,90.63,19.99 +mul,kernel,16,16,254360,9,78.55,78.47,19.98 +mul,floor,16,16,230766,9,86.64,86.43,19.99 +mul,gmp,16,16,244150,9,81.90,81.89,20.01 +mul,gmpz,16,16,238069,9,84.07,84.03,20.04 +sqr,auto,4,4,841580,9,23.78,23.76,20.02 +sqr,kernel,4,4,1838832,9,10.83,10.74,19.92 +sqr,floor,4,4,1144678,9,17.27,17.10,19.84 +sqr,gmp,4,4,3463456,9,5.82,5.76,20.14 +sqr,gmpz,4,4,2270803,9,8.79,8.75,19.98 +sqr,auto,16,16,293598,9,68.05,67.99,19.98 +sqr,kernel,16,16,358060,9,55.85,55.83,20.00 +sqr,floor,16,16,321022,9,62.26,62.18,19.99 +sqr,gmp,16,16,399201,9,49.83,49.80,19.89 +sqr,gmpz,16,16,383752,9,52.09,52.07,19.99 +divrem,auto,2,1,572514,9,35.13,34.96,20.12 +divrem,kernel,2,1,3549375,9,5.68,5.50,20.09 +divrem,floor,2,1,3382456,9,6.01,5.89,20.30 +divrem,gmp,2,1,2305338,9,8.68,8.68,20.02 +divrem,gmpz,2,1,1516423,9,13.20,13.17,20.04 +divrem,auto,8,4,225969,9,89.10,88.28,20.11 +divrem,kernel,8,4,458487,9,43.65,43.44,20.02 +divrem,floor,8,4,364775,9,55.30,54.76,20.13 +divrem,gmp,8,4,501629,9,40.11,39.98,20.11 +divrem,gmpz,8,4,482494,9,41.69,41.38,20.11 +divrem,auto,32,16,57965,9,345.83,344.58,20.04 +divrem,kernel,32,16,69295,9,289.11,288.57,20.03 +divrem,floor,32,16,66065,9,303.25,302.36,20.03 +divrem,gmp,32,16,103712,9,193.23,192.93,20.04 +divrem,gmpz,32,16,102321,9,195.01,194.53,19.95 diff --git a/tests/beman/big_int/perf/item1/x64_study128_run2.csv b/tests/beman/big_int/perf/item1/x64_study128_run2.csv new file mode 100644 index 00000000..91e2417d --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study128_run2.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:14:57Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new128 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2403581,9,8.32,8.31,20.01 +add,inplace,1,1,2042527,9,4.91,4.89,20.06 +add,kernel,1,1,10304700,9,1.94,1.90,19.95 +add,floor,1,1,7820568,9,2.58,2.55,20.21 +add,gmp,1,1,8823957,9,2.27,2.27,20.01 +add,gmpz,1,1,4443627,9,4.38,4.17,19.35 +add,auto,2,2,1034623,9,19.28,19.23,20.01 +add,inplace,2,2,1452779,9,6.97,6.90,20.26 +add,kernel,2,2,8506678,9,2.33,2.30,19.85 +add,floor,2,2,1962077,9,10.30,10.16,20.16 +add,gmp,2,2,8824088,9,2.27,2.27,20.00 +add,gmpz,2,2,4812485,9,4.16,4.16,20.00 +add,auto,4,4,1149976,9,17.43,17.31,20.01 +add,inplace,4,4,1594224,9,6.12,6.07,19.60 +add,kernel,4,4,6597906,9,3.03,3.02,20.16 +add,floor,4,4,1790515,9,11.51,11.11,20.54 +add,gmp,4,4,8002918,9,2.49,2.49,19.94 +add,gmpz,4,4,4566264,9,4.37,4.34,19.94 +add,auto,8,8,1055114,9,18.78,18.61,19.81 +add,inplace,8,8,1387235,9,7.38,7.21,20.47 +add,kernel,8,8,4329729,9,4.69,4.54,20.22 +add,floor,8,8,1597655,9,12.60,12.53,20.13 +add,gmp,8,8,5427795,9,3.68,3.67,19.96 +add,gmpz,8,8,4301488,9,4.66,4.65,20.08 +add,auto,16,16,846113,9,23.33,23.08,19.68 +add,inplace,16,16,802852,9,12.41,12.36,19.93 +add,kernel,16,16,2646873,9,7.56,7.56,20.00 +add,floor,16,16,1302979,9,15.40,15.37,20.08 +add,gmp,16,16,3633245,9,5.50,5.50,20.00 +add,gmpz,16,16,3063794,9,6.52,6.47,19.98 +sub,auto,1,1,2073959,9,9.64,9.63,20.01 +sub,inplace,1,1,2143316,9,4.65,4.63,20.00 +sub,kernel,1,1,13113548,9,1.51,1.51,19.84 +sub,floor,1,1,10588913,9,1.89,1.89,20.01 +sub,gmp,1,1,8821706,9,2.27,2.27,20.00 +sub,gmpz,1,1,4603262,9,4.34,4.34,20.02 +sub,auto,2,2,1847488,9,10.82,10.79,19.99 +sub,inplace,2,2,1836461,9,5.46,5.32,20.00 +sub,kernel,2,2,9423636,9,2.12,2.10,20.03 +sub,floor,2,2,8110625,9,2.49,2.47,20.21 +sub,gmp,2,2,8824271,9,2.27,2.27,20.00 +sub,gmpz,2,2,4603831,9,4.34,4.34,20.04 +sub,auto,4,4,1020420,9,19.53,19.26,19.90 +sub,inplace,4,4,1674366,9,5.95,5.87,19.90 +sub,kernel,4,4,7051747,9,2.84,2.83,20.00 +sub,floor,4,4,1887068,9,10.71,10.64,20.19 +sub,gmp,4,4,8014488,9,2.50,2.50,20.05 +sub,gmpz,4,4,4390256,9,4.56,4.55,20.04 +sub,auto,8,8,952633,9,21.07,20.64,20.08 +sub,inplace,8,8,1420529,9,7.00,6.97,19.91 +sub,kernel,8,8,4522933,9,4.42,4.42,20.00 +sub,floor,8,8,1621377,9,12.33,12.25,19.97 +sub,gmp,8,8,5108635,9,3.92,3.91,20.01 +sub,gmpz,8,8,4026397,9,4.97,4.94,19.98 +sub,auto,16,16,820181,9,24.26,24.08,20.00 +sub,inplace,16,16,908358,9,11.05,11.00,20.07 +sub,kernel,16,16,2678347,9,7.46,7.46,19.99 +sub,floor,16,16,1310867,9,15.24,15.21,19.98 +sub,gmp,16,16,3641388,9,5.50,5.49,20.02 +sub,gmpz,16,16,2933990,9,6.77,6.76,19.91 +shl,auto,1,13,2801475,9,7.16,7.15,20.07 +shl,inplace,1,13,2331311,9,4.29,4.24,19.94 +shl,kernel,1,13,9718535,9,2.07,2.04,20.14 +shl,kernelip,1,13,5552600,9,1.78,1.70,19.64 +shl,floor,1,13,8910312,9,2.68,2.63,23.80 +shl,gmp,1,13,9626414,9,1.90,1.90,18.32 +shl,gmpz,1,13,6110827,9,3.27,3.27,20.02 +shl,auto,4,13,1346922,9,14.93,14.79,20.09 +shl,inplace,4,13,2106247,9,4.75,4.74,20.02 +shl,kernel,4,13,5600980,9,3.50,3.49,19.64 +shl,kernelip,4,13,3390639,9,2.95,2.91,19.98 +shl,floor,4,13,1836873,9,11.66,11.61,21.41 +shl,gmp,4,13,7991490,9,2.31,2.31,18.51 +shl,gmpz,4,13,4916607,9,4.04,4.04,19.92 +shl,auto,16,13,1095572,9,18.18,18.14,19.92 +shl,inplace,16,13,1119001,9,8.88,8.85,19.90 +shl,kernel,16,13,2683369,9,7.45,7.44,20.02 +shl,kernelip,16,13,1390576,9,7.10,7.02,19.74 +shl,floor,16,13,1348953,9,15.22,15.21,20.54 +shl,gmp,16,13,4934249,9,4.05,4.05,20.14 +shl,gmpz,16,13,3451002,9,5.80,5.80,20.06 +shr,auto,1,13,2245414,9,8.90,8.88,20.00 +shr,inplace,1,13,2925232,9,3.44,3.42,20.16 +shr,kernel,1,13,11751753,9,1.70,1.70,20.02 +shr,floor,1,13,8824113,9,2.27,2.27,20.00 +shr,gmp,1,13,10588935,9,1.89,1.89,20.01 +shr,gmpz,1,13,5773912,9,3.47,3.46,20.02 +shr,auto,4,13,1189261,9,16.86,16.67,20.00 +shr,inplace,4,13,2255447,9,4.44,4.42,20.01 +shr,kernel,4,13,5771486,9,3.47,3.47,20.02 +shr,floor,4,13,1785225,9,11.19,11.18,19.98 +shr,gmp,4,13,8657055,9,2.35,2.33,20.31 +shr,gmpz,4,13,5017987,9,3.99,3.95,20.01 +shr,auto,16,13,956593,9,20.87,20.81,20.01 +shr,inplace,16,13,1177200,9,8.48,8.43,19.96 +shr,kernel,16,13,2399805,9,8.38,8.33,20.10 +shr,floor,16,13,1297007,9,15.47,15.35,20.06 +shr,gmp,16,13,4595108,9,4.31,4.31,19.90 +shr,gmpz,16,13,3178125,9,6.41,6.35,20.40 +mul,auto,1,1,1910337,9,10.44,10.42,19.93 +mul,gmp,1,1,5902505,9,3.37,3.34,19.90 +mul,gmpz,1,1,5030143,9,3.99,3.98,20.06 +mul,auto,2,2,983793,9,20.30,20.29,20.00 +mul,kernel,2,2,2731294,9,7.56,7.53,20.67 +mul,floor,2,2,1357742,9,15.22,14.89,20.62 +mul,gmp,2,2,5188396,9,3.84,3.83,20.11 +mul,gmpz,2,2,3182393,9,6.21,6.11,19.77 +mul,auto,3,3,913389,9,21.90,21.88,20.01 +mul,kernel,3,3,2324186,9,8.99,8.97,20.89 +mul,floor,3,3,1244443,9,16.65,16.34,20.67 +mul,gmp,3,3,2538457,9,7.77,7.70,19.72 +mul,gmpz,3,3,1995019,9,10.01,9.98,19.96 +mul,auto,4,4,826402,9,24.04,23.99,19.87 +mul,kernel,4,4,1866855,9,11.02,10.99,20.59 +mul,floor,4,4,1105399,9,18.27,18.11,20.34 +mul,gmp,4,4,2066409,9,9.67,9.64,19.99 +mul,gmpz,4,4,1649126,9,12.15,12.09,20.02 +mul,auto,6,6,678345,9,29.55,29.47,20.04 +mul,kernel,6,6,1216216,9,17.16,17.15,20.88 +mul,floor,6,6,820878,9,25.13,24.83,20.66 +mul,gmp,6,6,1275860,9,15.67,15.65,20.00 +mul,gmpz,6,6,1114426,9,18.01,17.86,20.05 +mul,auto,8,8,532525,9,37.37,37.14,19.89 +mul,kernel,8,8,802610,9,25.36,25.31,20.36 +mul,floor,8,8,618166,9,32.44,32.30,20.06 +mul,gmp,8,8,740564,9,27.07,26.94,20.08 +mul,gmpz,8,8,683171,9,28.88,28.60,19.69 +mul,auto,12,12,340671,9,58.63,58.59,19.98 +mul,kernel,12,12,427928,9,47.44,47.33,20.30 +mul,floor,12,12,368345,9,54.72,54.60,20.16 +mul,gmp,12,12,411926,9,51.17,48.55,20.87 +mul,gmpz,12,12,394232,9,50.76,50.75,20.01 +mul,auto,16,16,222037,9,90.07,90.03,20.01 +mul,kernel,16,16,256523,9,78.54,78.51,20.15 +mul,floor,16,16,234618,9,86.02,85.73,20.17 +mul,gmp,16,16,243670,9,81.91,81.89,19.98 +mul,gmpz,16,16,237897,9,84.06,84.02,20.00 +sqr,auto,4,4,841329,9,23.85,23.72,20.06 +sqr,kernel,4,4,2020761,9,9.91,9.86,20.03 +sqr,floor,4,4,1190254,9,17.19,17.06,20.49 +sqr,gmp,4,4,3449011,9,5.81,5.76,20.00 +sqr,gmpz,4,4,2264093,9,8.80,8.77,19.94 +sqr,auto,16,16,293395,9,67.91,67.84,19.92 +sqr,kernel,16,16,357809,9,55.91,55.85,20.00 +sqr,floor,16,16,321600,9,63.48,63.37,20.41 +sqr,gmp,16,16,398277,9,49.83,49.80,19.85 +sqr,gmpz,16,16,383906,9,52.09,52.07,20.00 +divrem,auto,2,1,591757,9,33.78,33.67,20.00 +divrem,kernel,2,1,3469055,9,5.76,5.68,20.47 +divrem,floor,2,1,3212601,9,6.07,5.96,19.66 +divrem,gmp,2,1,2984307,9,6.70,6.69,20.00 +divrem,gmpz,2,1,1672457,9,12.02,11.96,20.08 +divrem,auto,8,4,199459,9,100.62,100.29,20.08 +divrem,kernel,8,4,306426,9,65.30,65.20,20.00 +divrem,floor,8,4,266198,9,75.42,75.20,20.07 +divrem,gmp,8,4,460005,9,43.91,43.60,20.18 +divrem,gmpz,8,4,435368,9,46.05,45.92,20.05 +divrem,auto,32,16,58102,9,343.32,342.49,19.96 +divrem,kernel,32,16,69311,9,288.98,288.53,20.05 +divrem,floor,32,16,65933,9,302.93,302.55,19.97 +divrem,gmp,32,16,105171,9,189.32,188.59,19.91 +divrem,gmpz,32,16,103236,9,193.38,192.75,19.96 diff --git a/tests/beman/big_int/perf/item1/x64_study128_vecsort_run1.csv b/tests/beman/big_int/perf/item1/x64_study128_vecsort_run1.csv new file mode 100644 index 00000000..32c1c9f1 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study128_vecsort_run1.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:12:55Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new128 seed=1 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,92.58,92.27,27.77 +vecsort,builtin,100000,1,6,9,39.32,39.24,23.59 +vecsort,copy,100000,1,81,9,2.50,2.46,20.19 diff --git a/tests/beman/big_int/perf/item1/x64_study128_vecsort_run2.csv b/tests/beman/big_int/perf/item1/x64_study128_vecsort_run2.csv new file mode 100644 index 00000000..5478abda --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study128_vecsort_run2.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:15:36Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new128 seed=2 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,92.04,91.89,27.62 +vecsort,builtin,100000,1,6,9,39.47,39.35,23.72 +vecsort,copy,100000,1,82,9,2.51,2.49,20.62 diff --git a/tests/beman/big_int/perf/item1/x64_study256_run1.csv b/tests/beman/big_int/perf/item1/x64_study256_run1.csv new file mode 100644 index 00000000..6c0531c5 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study256_run1.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:12:56Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new256 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2340269,9,8.62,8.59,20.16 +add,inplace,1,1,2025421,9,4.91,4.89,19.88 +add,kernel,1,1,10235209,9,1.92,1.90,19.70 +add,floor,1,1,7738268,9,2.58,2.54,19.92 +add,gmp,1,1,8810023,9,2.27,2.27,19.97 +add,gmpz,1,1,4813001,9,4.16,4.16,20.00 +add,auto,2,2,1853986,9,10.84,10.81,20.14 +add,inplace,2,2,1499235,9,6.38,6.33,19.21 +add,kernel,2,2,8660080,9,2.33,2.29,20.15 +add,floor,2,2,7036074,9,2.89,2.84,20.35 +add,gmp,2,2,8824159,9,2.27,2.27,20.00 +add,gmpz,2,2,4812736,9,4.16,4.16,20.00 +add,auto,4,4,1884945,9,10.61,10.60,19.99 +add,inplace,4,4,1742011,9,5.73,5.70,19.96 +add,kernel,4,4,6579002,9,3.03,3.02,19.96 +add,floor,4,4,1791604,9,11.12,11.08,19.93 +add,gmp,4,4,8014867,9,2.49,2.49,19.96 +add,gmpz,4,4,4594258,9,4.34,4.34,19.97 +add,auto,8,8,1058990,9,18.89,18.88,20.00 +add,inplace,8,8,1392078,9,7.19,7.17,20.04 +add,kernel,8,8,4412046,9,4.53,4.53,20.01 +add,floor,8,8,1604392,9,12.49,12.41,20.03 +add,gmp,8,8,5435549,9,3.68,3.68,20.00 +add,gmpz,8,8,4298960,9,4.65,4.64,20.03 +add,auto,16,16,849266,9,23.53,23.21,19.94 +add,inplace,16,16,781406,9,12.73,12.68,19.90 +add,kernel,16,16,2647104,9,7.56,7.56,20.00 +add,floor,16,16,1290874,9,15.50,15.45,20.01 +add,gmp,16,16,3054449,9,6.56,6.55,20.04 +add,gmpz,16,16,3059286,9,6.50,6.49,19.92 +sub,auto,1,1,1997786,9,10.02,10.01,20.04 +sub,inplace,1,1,2157618,9,4.63,4.62,19.97 +sub,kernel,1,1,11046739,9,1.83,1.81,20.22 +sub,floor,1,1,10588474,9,1.89,1.89,20.00 +sub,gmp,1,1,8824036,9,2.27,2.27,20.00 +sub,gmpz,1,1,4603737,9,4.36,4.34,20.13 +sub,auto,2,2,1772566,9,11.32,11.26,20.05 +sub,inplace,2,2,1856845,9,5.44,5.37,20.23 +sub,kernel,2,2,9467067,9,2.11,2.09,19.96 +sub,floor,2,2,7999936,9,2.47,2.46,19.81 +sub,gmp,2,2,8824141,9,2.27,2.27,20.02 +sub,gmpz,2,2,4594292,9,4.34,4.34,19.99 +sub,auto,4,4,1662164,9,12.11,12.05,20.11 +sub,inplace,4,4,1774205,9,5.59,5.59,19.84 +sub,kernel,4,4,7052582,9,2.84,2.83,20.03 +sub,floor,4,4,6227479,9,3.21,3.21,20.02 +sub,gmp,4,4,8009848,9,2.50,2.50,20.00 +sub,gmpz,4,4,4387442,9,4.56,4.54,20.05 +sub,auto,8,8,985485,9,20.26,20.25,19.97 +sub,inplace,8,8,1422798,9,7.03,6.99,20.08 +sub,kernel,8,8,4579819,9,4.36,4.35,19.96 +sub,floor,8,8,1622763,9,12.27,12.23,19.93 +sub,gmp,8,8,5425507,9,3.69,3.69,20.02 +sub,gmpz,8,8,4016147,9,4.95,4.94,19.93 +sub,auto,16,16,858397,9,23.35,23.22,20.04 +sub,inplace,16,16,894685,9,11.11,11.07,19.89 +sub,kernel,16,16,2678699,9,7.46,7.46,20.00 +sub,floor,16,16,1301295,9,15.36,15.34,20.02 +sub,gmp,16,16,3607953,9,5.54,5.54,20.00 +sub,gmpz,16,16,2948140,9,6.80,6.77,20.05 +shl,auto,1,13,2463414,9,8.19,8.18,20.20 +shl,inplace,1,13,2331712,9,4.30,4.25,20.10 +shl,kernel,1,13,9769376,9,2.06,2.05,20.12 +shl,kernelip,1,13,5793484,9,1.75,1.69,20.15 +shl,floor,1,13,9626120,9,2.65,2.62,25.62 +shl,gmp,1,13,9626091,9,1.89,1.89,18.18 +shl,gmpz,1,13,6111132,9,3.27,3.27,20.01 +shl,auto,4,13,1212005,9,16.26,16.20,19.76 +shl,inplace,4,13,2109597,9,4.74,4.72,20.04 +shl,kernel,4,13,5706090,9,3.50,3.48,19.94 +shl,kernelip,4,13,3399734,9,2.94,2.91,20.04 +shl,floor,4,13,1829220,9,11.27,11.23,20.60 +shl,gmp,4,13,7991556,9,2.31,2.31,18.48 +shl,gmpz,4,13,4915589,9,4.04,4.04,19.91 +shl,auto,16,13,979904,9,20.63,20.46,20.20 +shl,inplace,16,13,997975,9,10.15,10.04,20.34 +shl,kernel,16,13,2682259,9,7.45,7.44,20.00 +shl,kernelip,16,13,1395534,9,7.08,7.04,19.77 +shl,floor,16,13,1349831,9,15.23,15.21,20.58 +shl,gmp,16,13,4946046,9,4.04,4.04,20.09 +shl,gmpz,16,13,3453246,9,5.81,5.79,20.16 +shr,auto,1,13,2195427,9,9.11,9.09,20.00 +shr,inplace,1,13,2874195,9,3.45,3.42,19.91 +shr,kernel,1,13,11752390,9,1.70,1.70,20.02 +shr,floor,1,13,8824198,9,2.27,2.27,20.06 +shr,gmp,1,13,10580178,9,1.89,1.89,20.02 +shr,gmpz,1,13,5771502,9,3.47,3.46,20.00 +shr,auto,4,13,1669798,9,11.95,11.93,19.96 +shr,inplace,4,13,2244575,9,4.46,4.45,20.01 +shr,kernel,4,13,5771450,9,3.47,3.47,20.04 +shr,floor,4,13,4977935,9,4.04,4.02,20.09 +shr,gmp,4,13,8419899,9,2.35,2.32,19.76 +shr,gmpz,4,13,5061871,9,3.96,3.94,20.09 +shr,auto,16,13,928023,9,21.62,21.56,20.07 +shr,inplace,16,13,1172822,9,8.49,8.43,19.88 +shr,kernel,16,13,2366066,9,8.43,8.41,19.97 +shr,floor,16,13,1297961,9,15.42,15.35,20.03 +shr,gmp,16,13,4596020,9,4.35,4.34,20.00 +shr,gmpz,16,13,3147032,9,6.28,6.21,19.79 +mul,auto,1,1,1884278,9,10.61,10.60,20.00 +mul,gmp,1,1,5891764,9,3.38,3.36,19.95 +mul,gmpz,1,1,4934264,9,3.97,3.97,19.63 +mul,auto,2,2,1401078,9,14.25,14.24,20.01 +mul,kernel,2,2,2852017,9,7.54,7.53,21.54 +mul,floor,2,2,2638249,9,7.70,7.64,20.33 +mul,gmp,2,2,5226651,9,3.82,3.79,19.96 +mul,gmpz,2,2,3263688,9,6.13,6.10,20.05 +mul,auto,3,3,850688,9,23.41,23.26,19.94 +mul,kernel,3,3,2391082,9,8.93,8.91,21.38 +mul,floor,3,3,1250882,9,16.33,16.29,20.44 +mul,gmp,3,3,2559047,9,7.77,7.66,19.91 +mul,gmpz,3,3,2006354,9,9.92,9.88,19.92 +mul,auto,4,4,821247,9,24.36,24.27,20.01 +mul,kernel,4,4,1933930,9,10.91,10.89,21.12 +mul,floor,4,4,1114316,9,18.17,18.13,20.25 +mul,gmp,4,4,2060701,9,9.67,9.64,19.93 +mul,gmpz,4,4,1642101,9,12.15,12.09,19.94 +mul,auto,6,6,661563,9,30.25,30.17,20.04 +mul,kernel,6,6,1209269,9,17.21,17.20,20.82 +mul,floor,6,6,818385,9,24.40,24.34,19.97 +mul,gmp,6,6,1263450,9,15.69,15.66,19.83 +mul,gmpz,6,6,1108244,9,18.05,17.94,19.99 +mul,auto,8,8,525282,9,37.95,37.88,19.98 +mul,kernel,8,8,810520,9,25.44,25.29,20.64 +mul,floor,8,8,616915,9,32.35,32.31,19.96 +mul,gmp,8,8,738197,9,27.03,26.91,19.97 +mul,gmpz,8,8,688721,9,28.99,28.70,19.98 +mul,auto,12,12,336205,9,59.79,59.60,20.11 +mul,kernel,12,12,425133,9,47.47,47.34,20.18 +mul,floor,12,12,368055,9,54.76,54.47,20.14 +mul,gmp,12,12,411823,9,48.56,48.55,20.01 +mul,gmpz,12,12,394107,9,50.76,50.74,20.00 +mul,auto,16,16,217635,9,91.83,91.67,19.99 +mul,kernel,16,16,256135,9,78.56,78.47,20.15 +mul,floor,16,16,235185,9,85.58,85.33,20.14 +mul,gmp,16,16,243951,9,81.91,81.89,19.98 +mul,gmpz,16,16,237816,9,84.08,84.05,20.00 +sqr,auto,4,4,817914,9,24.46,24.22,19.97 +sqr,kernel,4,4,2043336,9,9.83,9.73,20.09 +sqr,floor,4,4,1218507,9,16.78,16.74,20.46 +sqr,gmp,4,4,3177919,9,6.32,6.29,20.06 +sqr,gmpz,4,4,2267874,9,8.81,8.73,19.96 +sqr,auto,16,16,286800,9,69.88,69.71,20.03 +sqr,kernel,16,16,328447,9,60.87,60.83,19.99 +sqr,floor,16,16,316176,9,63.31,63.24,20.36 +sqr,gmp,16,16,400602,9,49.84,49.81,19.97 +sqr,gmpz,16,16,384019,9,52.08,52.07,20.00 +divrem,auto,2,1,536794,9,37.48,37.27,20.12 +divrem,kernel,2,1,3540036,9,5.68,5.52,20.09 +divrem,floor,2,1,3314977,9,6.01,5.86,19.83 +divrem,gmp,2,1,2299662,9,8.68,8.67,19.99 +divrem,gmpz,2,1,1510756,9,13.18,13.17,19.91 +divrem,auto,8,4,240105,9,83.15,82.40,19.93 +divrem,kernel,8,4,498914,9,40.20,40.07,20.06 +divrem,floor,8,4,430831,9,46.92,46.56,20.20 +divrem,gmp,8,4,483822,9,41.49,41.26,20.06 +divrem,gmpz,8,4,480718,9,41.57,41.37,19.99 +divrem,auto,32,16,58164,9,343.94,343.14,20.00 +divrem,kernel,32,16,69186,9,288.87,287.78,19.98 +divrem,floor,32,16,65574,9,304.76,303.91,19.99 +divrem,gmp,32,16,104381,9,192.74,191.18,20.10 +divrem,gmpz,32,16,102697,9,194.56,193.80,19.97 diff --git a/tests/beman/big_int/perf/item1/x64_study256_run2.csv b/tests/beman/big_int/perf/item1/x64_study256_run2.csv new file mode 100644 index 00000000..05b2d8d8 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study256_run2.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:15:37Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new256 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2339650,9,8.62,8.61,20.18 +add,inplace,1,1,2032324,9,4.91,4.90,19.98 +add,kernel,1,1,10125391,9,1.92,1.91,19.47 +add,floor,1,1,7785942,9,2.56,2.53,19.99 +add,gmp,1,1,8797140,9,2.27,2.27,19.94 +add,gmpz,1,1,4802559,9,4.16,4.16,19.96 +add,auto,2,2,1854084,9,10.89,10.81,20.19 +add,inplace,2,2,1543103,9,6.39,6.31,19.83 +add,kernel,2,2,8436887,9,2.33,2.31,19.75 +add,floor,2,2,6812234,9,2.89,2.86,19.75 +add,gmp,2,2,8824016,9,2.27,2.27,20.00 +add,gmpz,2,2,4812878,9,4.16,4.16,20.00 +add,auto,4,4,1883033,9,10.62,10.61,20.00 +add,inplace,4,4,1742722,9,5.72,5.71,19.95 +add,kernel,4,4,6617924,9,3.04,3.02,20.18 +add,floor,4,4,1792524,9,11.21,11.15,20.11 +add,gmp,4,4,7979719,9,2.61,2.55,20.75 +add,gmpz,4,4,4504808,9,4.42,4.40,19.92 +add,auto,8,8,1059077,9,18.89,18.89,20.01 +add,inplace,8,8,1398472,9,7.18,7.16,20.10 +add,kernel,8,8,4407474,9,4.53,4.53,20.00 +add,floor,8,8,1600720,9,12.52,12.49,20.05 +add,gmp,8,8,5435117,9,3.68,3.68,20.01 +add,gmpz,8,8,3500958,9,5.73,5.68,20.03 +add,auto,16,16,850210,9,23.49,23.21,19.94 +add,inplace,16,16,779405,9,12.81,12.72,19.96 +add,kernel,16,16,2642549,9,7.83,7.57,20.54 +add,floor,16,16,1284723,9,15.60,15.57,20.03 +add,gmp,16,16,3634809,9,5.50,5.50,20.00 +add,gmpz,16,16,3039567,9,6.52,6.48,19.81 +sub,auto,1,1,1994602,9,10.06,10.04,20.10 +sub,inplace,1,1,2160976,9,4.63,4.62,20.04 +sub,kernel,1,1,13236257,9,1.51,1.51,20.00 +sub,floor,1,1,10589000,9,1.89,1.89,20.00 +sub,gmp,1,1,8824122,9,2.27,2.27,20.00 +sub,gmpz,1,1,4603707,9,4.34,4.34,20.02 +sub,auto,2,2,1776150,9,11.29,11.26,20.06 +sub,inplace,2,2,1917518,9,5.21,5.18,20.12 +sub,kernel,2,2,9541629,9,2.12,2.10,20.21 +sub,floor,2,2,8078311,9,2.48,2.46,20.00 +sub,gmp,2,2,8824151,9,2.27,2.27,20.00 +sub,gmpz,2,2,4603859,9,4.35,4.34,20.07 +sub,auto,4,4,1666721,9,12.09,12.03,20.15 +sub,inplace,4,4,1786028,9,5.61,5.58,20.05 +sub,kernel,4,4,7054354,9,2.84,2.83,20.00 +sub,floor,4,4,6210881,9,3.22,3.21,20.00 +sub,gmp,4,4,8009083,9,2.50,2.50,20.04 +sub,gmpz,4,4,4368570,9,4.60,4.57,20.11 +sub,auto,8,8,987399,9,20.26,20.25,20.05 +sub,inplace,8,8,1425939,9,7.01,6.97,20.06 +sub,kernel,8,8,4575601,9,4.36,4.35,19.96 +sub,floor,8,8,1630214,9,12.25,12.21,19.96 +sub,gmp,8,8,5416072,9,3.69,3.69,19.99 +sub,gmpz,8,8,4025961,9,4.98,4.95,20.03 +sub,auto,16,16,844574,9,23.56,23.45,19.89 +sub,inplace,16,16,888653,9,11.25,11.16,19.98 +sub,kernel,16,16,2493626,9,8.02,8.02,20.00 +sub,floor,16,16,1316707,9,15.23,15.17,20.04 +sub,gmp,16,16,3608335,9,5.54,5.54,20.00 +sub,gmpz,16,16,2945077,9,6.81,6.78,20.05 +shl,auto,1,13,2423736,9,8.19,8.17,19.87 +shl,inplace,1,13,2312259,9,4.26,4.23,19.77 +shl,kernel,1,13,9820626,9,2.08,2.05,20.33 +shl,kernelip,1,13,5755491,9,1.74,1.71,20.14 +shl,floor,1,13,9545445,9,2.65,2.62,25.32 +shl,gmp,1,13,9626313,9,1.89,1.89,18.19 +shl,gmpz,1,13,5946032,9,3.34,3.33,19.87 +shl,auto,4,13,1213447,9,16.39,16.17,19.84 +shl,inplace,4,13,2115943,9,4.75,4.73,20.11 +shl,kernel,4,13,5547029,9,3.59,3.49,19.85 +shl,kernelip,4,13,3342782,9,2.95,2.91,19.77 +shl,floor,4,13,1823655,9,11.26,11.22,20.54 +shl,gmp,4,13,7991464,9,2.33,2.31,18.60 +shl,gmpz,4,13,4946051,9,4.05,4.04,20.04 +shl,auto,16,13,982716,9,20.35,20.25,20.03 +shl,inplace,16,13,1106985,9,9.01,8.98,19.95 +shl,kernel,16,13,2687496,9,7.44,7.43,20.01 +shl,kernelip,16,13,1400756,9,7.13,7.09,19.99 +shl,floor,16,13,1348972,9,15.22,15.21,20.54 +shl,gmp,16,13,4927268,9,4.05,4.05,20.05 +shl,gmpz,16,13,2803364,9,6.99,6.94,19.58 +shr,auto,1,13,2195920,9,9.12,9.10,20.04 +shr,inplace,1,13,2910315,9,3.46,3.40,20.13 +shr,kernel,1,13,9372854,9,2.13,2.11,19.99 +shr,floor,1,13,8145343,9,2.46,2.46,20.08 +shr,gmp,1,13,10588370,9,1.89,1.89,20.05 +shr,gmpz,1,13,5768737,9,3.47,3.47,20.00 +shr,auto,4,13,1681697,9,11.90,11.89,20.01 +shr,inplace,4,13,2249804,9,4.45,4.45,20.03 +shr,kernel,4,13,5756356,9,3.47,3.47,19.98 +shr,floor,4,13,4998660,9,4.04,4.00,20.16 +shr,gmp,4,13,8656848,9,2.34,2.31,20.29 +shr,gmpz,4,13,5044669,9,3.97,3.95,20.03 +shr,auto,16,13,922786,9,21.71,21.61,20.04 +shr,inplace,16,13,1180707,9,8.47,8.43,20.01 +shr,kernel,16,13,2383155,9,8.36,8.34,19.94 +shr,floor,16,13,1283838,9,15.47,15.33,19.85 +shr,gmp,16,13,4627276,9,4.35,4.32,20.12 +shr,gmpz,16,13,3087865,9,6.33,6.24,19.55 +mul,auto,1,1,1855808,9,10.91,10.61,20.40 +mul,gmp,1,1,5944650,9,3.36,3.31,19.95 +mul,gmpz,1,1,5000987,9,4.00,3.99,20.02 +mul,auto,2,2,1399063,9,14.26,14.25,19.98 +mul,kernel,2,2,2807030,9,7.56,7.53,21.24 +mul,floor,2,2,2567558,9,7.91,7.82,20.38 +mul,gmp,2,2,5210688,9,3.82,3.80,19.92 +mul,gmpz,2,2,3285564,9,6.13,6.11,20.16 +mul,auto,3,3,854294,9,23.50,23.38,20.08 +mul,kernel,3,3,2317357,9,8.93,8.91,20.71 +mul,floor,3,3,1233018,9,16.43,16.40,20.26 +mul,gmp,3,3,2564824,9,7.77,7.72,20.09 +mul,gmpz,3,3,1954367,9,10.03,9.99,19.76 +mul,auto,4,4,822558,9,24.33,24.26,20.04 +mul,kernel,4,4,1929799,9,10.91,10.89,21.08 +mul,floor,4,4,1114873,9,18.12,18.08,20.21 +mul,gmp,4,4,2062474,9,9.69,9.67,19.99 +mul,gmpz,4,4,1638692,9,12.18,12.12,19.95 +mul,auto,6,6,662440,9,30.24,30.18,20.05 +mul,kernel,6,6,1211886,9,17.18,17.16,20.83 +mul,floor,6,6,820565,9,24.36,24.34,20.01 +mul,gmp,6,6,1273774,9,15.74,15.71,20.05 +mul,gmpz,6,6,1105461,9,18.00,17.96,19.93 +mul,auto,8,8,524693,9,38.02,37.94,19.96 +mul,kernel,8,8,808540,9,25.42,25.27,20.54 +mul,floor,8,8,618310,9,32.35,32.30,20.03 +mul,gmp,8,8,742152,9,27.04,26.90,20.07 +mul,gmpz,8,8,696572,9,28.97,28.59,20.16 +mul,auto,12,12,333202,9,60.01,59.72,19.99 +mul,kernel,12,12,421662,9,48.49,48.41,20.46 +mul,floor,12,12,363793,9,55.26,55.08,20.13 +mul,gmp,12,12,402091,9,49.72,49.71,19.99 +mul,gmpz,12,12,378487,9,52.84,52.81,20.00 +mul,auto,16,16,216602,9,91.97,91.76,19.94 +mul,kernel,16,16,256335,9,78.57,78.45,20.15 +mul,floor,16,16,232746,9,85.88,85.70,20.02 +mul,gmp,16,16,242813,9,82.39,82.37,20.01 +mul,gmpz,16,16,237829,9,84.08,84.04,20.00 +sqr,auto,4,4,815683,9,24.39,24.30,19.93 +sqr,kernel,4,4,2049593,9,9.79,9.70,20.04 +sqr,floor,4,4,1220030,9,16.78,16.76,20.50 +sqr,gmp,4,4,3439571,9,5.81,5.76,19.95 +sqr,gmpz,4,4,2259868,9,8.80,8.75,19.91 +sqr,auto,16,16,291458,9,68.68,68.45,20.02 +sqr,kernel,16,16,347584,9,57.51,57.42,20.01 +sqr,floor,16,16,312130,9,62.87,62.84,19.63 +sqr,gmp,16,16,399990,9,49.83,49.81,19.94 +sqr,gmpz,16,16,377560,9,52.09,52.07,19.68 +divrem,auto,2,1,556785,9,35.97,35.82,20.03 +divrem,kernel,2,1,3230255,9,6.12,6.04,19.78 +divrem,floor,2,1,3357282,9,5.98,5.91,20.03 +divrem,gmp,2,1,2637036,9,7.59,7.58,20.02 +divrem,gmpz,2,1,1723108,9,11.71,11.62,20.15 +divrem,auto,8,4,212218,9,95.06,94.48,20.22 +divrem,kernel,8,4,333804,9,58.23,57.93,19.85 +divrem,floor,8,4,313907,9,64.36,64.04,20.21 +divrem,gmp,8,4,458468,9,43.77,43.65,20.11 +divrem,gmpz,8,4,434783,9,46.05,45.96,20.03 +divrem,auto,32,16,58296,9,343.55,342.25,20.03 +divrem,kernel,32,16,69158,9,288.80,288.48,19.99 +divrem,floor,32,16,65973,9,302.78,302.31,19.98 +divrem,gmp,32,16,104926,9,190.06,189.75,19.96 +divrem,gmpz,32,16,103026,9,193.36,192.71,19.93 diff --git a/tests/beman/big_int/perf/item1/x64_study256_vecsort_run1.csv b/tests/beman/big_int/perf/item1/x64_study256_vecsort_run1.csv new file mode 100644 index 00000000..90002046 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study256_vecsort_run1.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:13:36Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new256 seed=1 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,98.87,98.31,29.64 +vecsort,builtin,100000,1,6,9,39.34,39.23,23.60 +vecsort,copy,100000,1,77,9,2.64,2.59,20.32 diff --git a/tests/beman/big_int/perf/item1/x64_study256_vecsort_run2.csv b/tests/beman/big_int/perf/item1/x64_study256_vecsort_run2.csv new file mode 100644 index 00000000..509a6bf8 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study256_vecsort_run2.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:16:17Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new256 seed=2 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,98.31,97.92,29.53 +vecsort,builtin,100000,1,6,9,39.48,39.38,23.69 +vecsort,copy,100000,1,75,9,2.61,2.59,19.69 diff --git a/tests/beman/big_int/perf/item1/x64_study512_run1.csv b/tests/beman/big_int/perf/item1/x64_study512_run1.csv new file mode 100644 index 00000000..7801cf33 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study512_run1.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:13:37Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new512 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2267885,9,8.65,8.62,19.65 +add,inplace,1,1,2035667,9,4.91,4.70,19.95 +add,kernel,1,1,10509284,9,1.93,1.89,20.26 +add,floor,1,1,7833272,9,2.58,2.54,20.22 +add,gmp,1,1,8823541,9,2.27,2.27,20.01 +add,gmpz,1,1,4812896,9,4.16,4.16,20.02 +add,auto,2,2,1803044,9,11.01,10.93,19.90 +add,inplace,2,2,1644593,9,6.21,6.12,20.39 +add,kernel,2,2,8590347,9,2.36,2.33,20.33 +add,floor,2,2,6963766,9,2.89,2.84,20.21 +add,gmp,2,2,8824085,9,2.27,2.27,20.00 +add,gmpz,2,2,4813095,9,4.16,4.16,20.00 +add,auto,4,4,1883283,9,10.65,10.62,20.06 +add,inplace,4,4,1748184,9,5.71,5.70,19.98 +add,kernel,4,4,6578994,9,3.04,3.02,19.99 +add,floor,4,4,5341341,9,3.67,3.61,19.54 +add,gmp,4,4,7223345,9,2.77,2.77,20.00 +add,gmpz,4,4,4589319,9,4.34,4.34,19.99 +add,auto,8,8,1658689,9,11.99,11.98,19.90 +add,inplace,8,8,1417844,9,7.04,7.03,19.97 +add,kernel,8,8,4398644,9,4.53,4.53,19.94 +add,floor,8,8,1602134,9,12.54,12.51,20.11 +add,gmp,8,8,5443160,9,3.68,3.68,20.02 +add,gmpz,8,8,4287712,9,4.66,4.64,19.97 +add,auto,16,16,848328,9,23.52,23.40,19.95 +add,inplace,16,16,840701,9,11.89,11.85,20.02 +add,kernel,16,16,2646080,9,7.56,7.56,20.00 +add,floor,16,16,1303170,9,15.36,15.34,20.03 +add,gmp,16,16,3633393,9,5.50,5.50,20.00 +add,gmpz,16,16,3074352,9,6.52,6.49,20.06 +sub,auto,1,1,1997766,9,10.04,10.01,20.05 +sub,inplace,1,1,2160809,9,4.63,4.63,20.04 +sub,kernel,1,1,13236280,9,1.51,1.51,20.00 +sub,floor,1,1,10588750,9,1.89,1.89,20.00 +sub,gmp,1,1,8750993,9,2.27,2.27,19.85 +sub,gmpz,1,1,4603627,9,4.34,4.34,20.00 +sub,auto,2,2,1777515,9,11.30,11.28,20.08 +sub,inplace,2,2,1843481,9,5.39,5.32,19.92 +sub,kernel,2,2,9585450,9,2.11,2.10,20.29 +sub,floor,2,2,8082124,9,2.47,2.46,19.98 +sub,gmp,2,2,8824148,9,2.27,2.27,20.01 +sub,gmpz,2,2,4560099,9,4.34,4.34,19.82 +sub,auto,4,4,1655855,9,12.11,12.06,20.04 +sub,inplace,4,4,1782725,9,5.59,5.58,19.94 +sub,kernel,4,4,7053980,9,2.84,2.83,20.00 +sub,floor,4,4,6210369,9,3.21,3.21,19.95 +sub,gmp,4,4,8008019,9,2.50,2.50,20.01 +sub,gmpz,4,4,4344176,9,4.58,4.53,19.84 +sub,auto,8,8,1483825,9,13.48,13.45,20.00 +sub,inplace,8,8,1437561,9,6.96,6.96,20.01 +sub,kernel,8,8,4584748,9,4.37,4.36,20.07 +sub,floor,8,8,4184797,9,4.78,4.78,20.05 +sub,gmp,8,8,5420846,9,3.69,3.69,19.99 +sub,gmpz,8,8,4034264,9,4.98,4.95,20.09 +sub,auto,16,16,775345,9,25.94,25.65,20.07 +sub,inplace,16,16,908128,9,11.08,10.84,20.05 +sub,kernel,16,16,2684042,9,7.45,7.45,20.00 +sub,floor,16,16,1309992,9,15.28,15.24,20.01 +sub,gmp,16,16,3224190,9,6.20,6.20,20.01 +sub,gmpz,16,16,2939073,9,6.82,6.81,20.04 +shl,auto,1,13,2431347,9,8.26,8.21,20.09 +shl,inplace,1,13,2356462,9,4.26,4.24,20.08 +shl,kernel,1,13,9664569,9,2.06,2.03,19.90 +shl,kernelip,1,13,5613237,9,1.75,1.70,19.60 +shl,floor,1,13,9625907,9,2.66,2.64,25.62 +shl,gmp,1,13,10588962,9,2.08,2.08,22.00 +shl,gmpz,1,13,5893698,9,3.39,3.39,20.02 +shl,auto,4,13,2193738,9,9.14,9.01,20.02 +shl,inplace,4,13,1938352,9,5.18,5.16,20.07 +shl,kernel,4,13,5722355,9,3.50,3.49,20.08 +shl,kernelip,4,13,3370719,9,2.97,2.91,20.00 +shl,floor,4,13,5419702,9,4.14,4.13,22.48 +shl,gmp,4,13,8655980,9,2.50,2.50,21.69 +shl,gmpz,4,13,4946839,9,4.04,4.04,20.00 +shl,auto,16,13,1030851,9,19.44,19.33,20.06 +shl,inplace,16,13,1120507,9,8.89,8.84,19.90 +shl,kernel,16,13,2686011,9,7.45,7.44,20.02 +shl,kernelip,16,13,1407175,9,7.19,7.05,20.20 +shl,floor,16,13,1310247,9,15.21,15.21,19.94 +shl,gmp,16,13,4854826,9,4.17,4.14,20.27 +shl,gmpz,16,13,3406604,9,5.83,5.81,19.95 +shr,auto,1,13,2153186,9,9.29,9.29,20.00 +shr,inplace,1,13,2928727,9,3.42,3.40,20.07 +shr,kernel,1,13,11578799,9,1.70,1.70,19.73 +shr,floor,1,13,8761579,9,2.27,2.27,19.89 +shr,gmp,1,13,10588911,9,1.89,1.89,20.04 +shr,gmpz,1,13,5771371,9,3.47,3.47,20.01 +shr,auto,4,13,1639702,9,12.20,12.16,20.00 +shr,inplace,4,13,2230130,9,4.48,4.46,19.99 +shr,kernel,4,13,4515750,9,4.43,4.43,20.01 +shr,floor,4,13,4972166,9,4.02,3.96,20.00 +shr,gmp,4,13,8560600,9,2.35,2.34,20.15 +shr,gmpz,4,13,5040077,9,3.96,3.95,20.06 +shr,auto,16,13,907169,9,22.00,21.92,19.99 +shr,inplace,16,13,1096427,9,9.11,9.06,19.99 +shr,kernel,16,13,2328264,9,8.61,8.58,20.05 +shr,floor,16,13,1265424,9,15.78,15.74,19.98 +shr,gmp,16,13,4603655,9,4.35,4.34,20.10 +shr,gmpz,16,13,3042011,9,6.29,6.20,19.10 +mul,auto,1,1,1851617,9,10.80,10.79,20.03 +mul,gmp,1,1,5918857,9,3.40,3.37,20.11 +mul,gmpz,1,1,5018300,9,3.99,3.98,20.01 +mul,auto,2,2,1398284,9,14.28,14.25,19.97 +mul,kernel,2,2,2726597,9,7.62,7.58,20.79 +mul,floor,2,2,2590678,9,7.85,7.73,20.48 +mul,gmp,2,2,5212265,9,3.83,3.81,19.92 +mul,gmpz,2,2,3269352,9,6.11,6.09,19.98 +mul,auto,3,3,1281732,9,15.64,15.60,20.05 +mul,kernel,3,3,2325254,9,9.07,9.03,21.08 +mul,floor,3,3,2176578,9,9.29,9.19,20.34 +mul,gmp,3,3,2578441,9,7.80,7.63,20.06 +mul,gmpz,3,3,1994924,9,10.00,9.94,19.95 +mul,auto,4,4,1129330,9,17.73,17.64,20.05 +mul,kernel,4,4,1886007,9,11.02,11.00,20.79 +mul,floor,4,4,1800234,9,11.21,11.12,20.23 +mul,gmp,4,4,2063767,9,9.68,9.66,20.00 +mul,gmpz,4,4,1642285,9,12.17,12.13,20.00 +mul,auto,6,6,664051,9,30.13,30.11,20.00 +mul,kernel,6,6,1203501,9,17.30,17.28,20.81 +mul,floor,6,6,811891,9,25.51,25.21,20.78 +mul,gmp,6,6,1275185,9,15.72,15.65,20.04 +mul,gmpz,6,6,1111347,9,18.08,18.00,20.09 +mul,auto,8,8,523686,9,37.86,37.82,19.83 +mul,kernel,8,8,807961,9,25.49,25.35,20.58 +mul,floor,8,8,594835,9,32.75,32.66,19.51 +mul,gmp,8,8,742291,9,27.05,26.90,20.07 +mul,gmpz,8,8,688619,9,28.84,28.71,19.94 +mul,auto,12,12,335713,9,59.78,59.62,20.07 +mul,kernel,12,12,424770,9,47.51,47.33,20.17 +mul,floor,12,12,364453,9,54.95,54.86,20.03 +mul,gmp,12,12,411893,9,48.56,48.54,20.00 +mul,gmpz,12,12,394118,9,50.76,50.74,20.00 +mul,auto,16,16,218443,9,91.45,91.07,19.98 +mul,kernel,16,16,255457,9,78.66,78.57,20.10 +mul,floor,16,16,229756,9,86.01,85.84,19.76 +mul,gmp,16,16,244324,9,81.91,81.88,20.01 +mul,gmpz,16,16,238016,9,84.06,84.03,20.01 +sqr,auto,4,4,1140184,9,17.45,17.42,19.90 +sqr,kernel,4,4,2024108,9,9.91,9.86,20.09 +sqr,floor,4,4,2138072,9,9.60,9.57,20.52 +sqr,gmp,4,4,3370310,9,5.83,5.82,19.69 +sqr,gmpz,4,4,2262308,9,8.83,8.80,19.99 +sqr,auto,16,16,294060,9,68.07,67.99,20.01 +sqr,kernel,16,16,357951,9,55.86,55.83,20.00 +sqr,floor,16,16,321655,9,62.31,62.24,20.04 +sqr,gmp,16,16,398530,9,49.84,49.83,19.87 +sqr,gmpz,16,16,384001,9,52.11,52.09,20.01 +divrem,auto,2,1,526717,9,37.63,37.47,19.82 +divrem,kernel,2,1,3422383,9,5.73,5.64,19.79 +divrem,floor,2,1,3143256,9,6.29,6.23,19.85 +divrem,gmp,2,1,2301728,9,8.69,8.67,20.00 +divrem,gmpz,2,1,1518261,9,13.17,13.15,20.00 +divrem,auto,8,4,267960,9,75.02,74.59,20.08 +divrem,kernel,8,4,494850,9,40.32,40.06,19.97 +divrem,floor,8,4,512897,9,39.13,38.92,20.07 +divrem,gmp,8,4,502347,9,40.03,39.73,20.09 +divrem,gmpz,8,4,479763,9,41.69,41.55,20.01 +divrem,auto,32,16,58383,9,341.90,341.12,19.97 +divrem,kernel,32,16,69009,9,288.46,287.78,19.92 +divrem,floor,32,16,65779,9,303.91,302.57,19.98 +divrem,gmp,32,16,104039,9,192.27,191.35,20.00 +divrem,gmpz,32,16,102051,9,195.16,194.71,19.93 diff --git a/tests/beman/big_int/perf/item1/x64_study512_run2.csv b/tests/beman/big_int/perf/item1/x64_study512_run2.csv new file mode 100644 index 00000000..3041c748 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study512_run2.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:16:18Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new512 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2317883,9,8.68,8.62,20.11 +add,inplace,1,1,2036037,9,4.91,4.91,20.01 +add,kernel,1,1,10376121,9,1.91,1.90,19.81 +add,floor,1,1,7740466,9,2.56,2.53,19.83 +add,gmp,1,1,8822700,9,2.27,2.27,20.00 +add,gmpz,1,1,4812848,9,4.16,4.16,20.00 +add,auto,2,2,1835149,9,10.99,10.85,20.17 +add,inplace,2,2,1629237,9,6.18,6.09,20.12 +add,kernel,2,2,8269873,9,2.35,2.29,19.46 +add,floor,2,2,6859995,9,2.88,2.85,19.85 +add,gmp,2,2,8823963,9,2.27,2.27,20.01 +add,gmpz,2,2,4813028,9,4.16,4.16,20.00 +add,auto,4,4,1884101,9,10.64,10.61,20.05 +add,inplace,4,4,1748698,9,5.71,5.69,20.00 +add,kernel,4,4,6584012,9,3.04,3.03,20.10 +add,floor,4,4,5572963,9,3.61,3.60,20.18 +add,gmp,4,4,8042646,9,2.49,2.49,20.03 +add,gmpz,4,4,4494086,9,4.54,4.37,20.63 +add,auto,8,8,1667458,9,11.99,11.99,20.01 +add,inplace,8,8,1420461,9,7.05,7.03,20.03 +add,kernel,8,8,4411936,9,4.53,4.53,20.01 +add,floor,8,8,1582843,9,12.57,12.52,19.89 +add,gmp,8,8,5437616,9,3.68,3.68,20.01 +add,gmpz,8,8,4167886,9,4.80,4.80,20.03 +add,auto,16,16,846688,9,23.49,23.40,19.90 +add,inplace,16,16,843387,9,11.95,11.93,20.17 +add,kernel,16,16,2647163,9,7.56,7.56,20.00 +add,floor,16,16,1304780,9,15.47,15.42,20.18 +add,gmp,16,16,3634207,9,5.50,5.50,19.99 +add,gmpz,16,16,3048853,9,6.56,6.50,20.01 +sub,auto,1,1,1913940,9,10.39,10.18,20.17 +sub,inplace,1,1,2160289,9,4.63,4.63,20.02 +sub,kernel,1,1,13236497,9,1.51,1.51,20.00 +sub,floor,1,1,10588920,9,1.89,1.89,20.00 +sub,gmp,1,1,8822495,9,2.27,2.27,20.00 +sub,gmpz,1,1,4550655,9,4.34,4.34,19.78 +sub,auto,2,2,1766883,9,11.35,11.33,20.06 +sub,inplace,2,2,1842731,9,5.37,5.28,19.78 +sub,kernel,2,2,9385991,9,2.11,2.09,19.81 +sub,floor,2,2,8139960,9,2.47,2.46,20.16 +sub,gmp,2,2,8824103,9,2.27,2.27,20.01 +sub,gmpz,2,2,4603558,9,4.34,4.34,20.05 +sub,auto,4,4,1656757,9,12.12,12.10,20.10 +sub,inplace,4,4,1781596,9,5.60,5.59,19.99 +sub,kernel,4,4,6633729,9,3.02,3.01,20.04 +sub,floor,4,4,6184672,9,3.24,3.24,20.08 +sub,gmp,4,4,8010452,9,2.50,2.50,20.06 +sub,gmpz,4,4,4352316,9,4.58,4.56,19.96 +sub,auto,8,8,1482804,9,13.49,13.48,20.01 +sub,inplace,8,8,1441931,9,6.94,6.93,20.03 +sub,kernel,8,8,4522282,9,4.42,4.42,20.00 +sub,floor,8,8,4161944,9,4.81,4.81,20.02 +sub,gmp,8,8,5165763,9,3.87,3.87,20.00 +sub,gmpz,8,8,4018546,9,4.96,4.94,19.95 +sub,auto,16,16,773526,9,25.75,25.59,19.95 +sub,inplace,16,16,911884,9,11.01,10.88,20.06 +sub,kernel,16,16,2679497,9,7.46,7.46,20.01 +sub,floor,16,16,1304487,9,15.39,15.30,20.07 +sub,gmp,16,16,3639766,9,5.49,5.49,20.01 +sub,gmpz,16,16,2920150,9,6.79,6.77,19.84 +shl,auto,1,13,2431431,9,8.29,8.22,20.15 +shl,inplace,1,13,2352459,9,4.26,4.22,20.02 +shl,kernel,1,13,9626133,9,2.08,2.00,19.93 +shl,kernelip,1,13,5809063,9,1.74,1.71,20.24 +shl,floor,1,13,9585832,9,2.65,2.62,25.35 +shl,gmp,1,13,10541927,9,2.08,2.08,21.90 +shl,gmpz,1,13,6110932,9,3.27,3.27,20.01 +shl,auto,4,13,2201509,9,9.15,9.05,20.12 +shl,inplace,4,13,1933852,9,5.18,5.16,20.01 +shl,kernel,4,13,5711450,9,3.50,3.48,20.03 +shl,kernelip,4,13,3339830,9,2.96,2.94,19.79 +shl,floor,4,13,5439020,9,4.14,4.13,22.53 +shl,gmp,4,13,8656909,9,2.55,2.50,22.44 +shl,gmpz,4,13,4941078,9,4.04,4.04,19.99 +shl,auto,16,13,1028204,9,19.48,19.38,20.08 +shl,inplace,16,13,1120977,9,8.85,8.82,19.84 +shl,kernel,16,13,2687364,9,7.45,7.44,20.02 +shl,kernelip,16,13,1397768,9,7.19,7.07,20.08 +shl,floor,16,13,1255226,9,15.21,15.21,19.13 +shl,gmp,16,13,4857971,9,4.16,4.15,20.25 +shl,gmpz,16,13,3409634,9,5.83,5.80,19.89 +shr,auto,1,13,2148196,9,9.32,9.31,20.02 +shr,inplace,1,13,2919026,9,3.43,3.41,20.04 +shr,kernel,1,13,11752128,9,1.70,1.70,20.01 +shr,floor,1,13,8824152,9,2.27,2.27,20.07 +shr,gmp,1,13,10588680,9,1.89,1.89,20.01 +shr,gmpz,1,13,5763703,9,3.46,3.46,19.98 +shr,auto,4,13,1730509,9,11.59,11.55,20.06 +shr,inplace,4,13,2230008,9,4.49,4.46,20.02 +shr,kernel,4,13,5736483,9,3.47,3.47,19.95 +shr,floor,4,13,4957856,9,4.02,4.00,19.93 +shr,gmp,4,13,8524700,9,2.33,2.32,19.90 +shr,gmpz,4,13,5065857,9,3.96,3.94,20.05 +shr,auto,16,13,910252,9,22.01,21.93,20.05 +shr,inplace,16,13,1135543,9,8.83,8.81,20.09 +shr,kernel,16,13,2384103,9,8.40,8.36,20.05 +shr,floor,16,13,1293084,9,15.50,15.40,20.05 +shr,gmp,16,13,4602663,9,4.35,4.34,20.06 +shr,gmpz,16,13,3223298,9,6.23,6.22,20.20 +mul,auto,1,1,1852126,9,10.80,10.79,20.01 +mul,gmp,1,1,5937723,9,3.50,3.36,20.99 +mul,gmpz,1,1,4987953,9,3.99,3.99,19.93 +mul,auto,2,2,1400989,9,14.27,14.25,20.02 +mul,kernel,2,2,2691195,9,7.70,7.63,20.74 +mul,floor,2,2,2508353,9,8.05,7.93,20.27 +mul,gmp,2,2,4911346,9,4.07,4.05,19.98 +mul,gmpz,2,2,3253208,9,6.15,6.11,20.02 +mul,auto,3,3,1278400,9,15.62,15.60,19.98 +mul,kernel,3,3,2349253,9,9.02,9.00,21.19 +mul,floor,3,3,2188708,9,9.18,9.05,20.19 +mul,gmp,3,3,2551206,9,7.82,7.75,19.94 +mul,gmpz,3,3,2012059,9,9.90,9.87,19.96 +mul,auto,4,4,1128210,9,17.80,17.62,20.14 +mul,kernel,4,4,1795681,9,11.28,11.22,20.27 +mul,floor,4,4,1703437,9,11.93,11.76,20.26 +mul,gmp,4,4,2036711,9,9.92,9.73,20.56 +mul,gmpz,4,4,1648531,9,12.18,12.15,20.11 +mul,auto,6,6,663244,9,30.15,30.14,20.00 +mul,kernel,6,6,1203026,9,17.29,17.28,20.80 +mul,floor,6,6,773823,9,25.01,24.63,19.39 +mul,gmp,6,6,1153339,9,17.35,17.30,20.01 +mul,gmpz,6,6,1103394,9,17.99,17.91,19.86 +mul,auto,8,8,528249,9,37.87,37.85,20.02 +mul,kernel,8,8,809170,9,25.64,25.48,20.72 +mul,floor,8,8,611821,9,32.83,32.72,20.08 +mul,gmp,8,8,731920,9,27.05,26.94,19.82 +mul,gmpz,8,8,697824,9,28.52,27.90,19.94 +mul,auto,12,12,334660,9,60.01,59.82,20.10 +mul,kernel,12,12,424171,9,47.59,47.43,20.18 +mul,floor,12,12,364373,9,55.02,54.86,20.04 +mul,gmp,12,12,412034,9,48.56,48.54,20.01 +mul,gmpz,12,12,385127,9,51.92,51.90,20.00 +mul,auto,16,16,220119,9,91.12,90.83,20.06 +mul,kernel,16,16,256314,9,78.65,78.57,20.18 +mul,floor,16,16,230770,9,85.77,85.40,19.79 +mul,gmp,16,16,242546,9,82.47,82.43,20.00 +mul,gmpz,16,16,237952,9,84.12,84.06,20.05 +sqr,auto,4,4,1142352,9,17.44,17.38,19.92 +sqr,kernel,4,4,2016611,9,9.82,9.74,19.78 +sqr,floor,4,4,2146820,9,9.61,9.58,20.63 +sqr,gmp,4,4,3464532,9,5.79,5.76,20.09 +sqr,gmpz,4,4,2271398,9,8.77,8.74,19.92 +sqr,auto,16,16,277092,9,72.23,72.07,20.01 +sqr,kernel,16,16,343305,9,58.27,58.22,20.00 +sqr,floor,16,16,314792,9,66.20,66.12,20.87 +sqr,gmp,16,16,398208,9,49.82,49.77,19.84 +sqr,gmpz,16,16,383948,9,52.09,52.07,20.00 +divrem,auto,2,1,561224,9,35.65,35.42,20.51 +divrem,kernel,2,1,3431112,9,5.72,5.64,19.75 +divrem,floor,2,1,3331197,9,6.01,5.95,20.00 +divrem,gmp,2,1,2985552,9,6.70,6.70,20.00 +divrem,gmpz,2,1,1735360,9,11.59,11.55,20.11 +divrem,auto,8,4,233546,9,85.29,84.78,19.98 +divrem,kernel,8,4,404293,9,49.59,49.24,20.05 +divrem,floor,8,4,391868,9,51.63,51.37,20.25 +divrem,gmp,8,4,457228,9,43.79,43.57,20.00 +divrem,gmpz,8,4,430724,9,46.09,46.01,19.86 +divrem,auto,32,16,58406,9,342.75,341.77,20.01 +divrem,kernel,32,16,68905,9,301.34,288.45,20.79 +divrem,floor,32,16,63901,9,304.33,303.90,19.44 +divrem,gmp,32,16,104966,9,190.01,188.82,19.94 +divrem,gmpz,32,16,100889,9,194.93,194.12,19.71 diff --git a/tests/beman/big_int/perf/item1/x64_study512_vecsort_run1.csv b/tests/beman/big_int/perf/item1/x64_study512_vecsort_run1.csv new file mode 100644 index 00000000..771cc75d --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study512_vecsort_run1.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:14:16Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new512 seed=1 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,2,9,104.26,103.52,20.84 +vecsort,builtin,100000,1,6,9,39.30,39.27,23.58 +vecsort,copy,100000,1,64,9,3.14,3.09,20.13 diff --git a/tests/beman/big_int/perf/item1/x64_study512_vecsort_run2.csv b/tests/beman/big_int/perf/item1/x64_study512_vecsort_run2.csv new file mode 100644 index 00000000..539ae1eb --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study512_vecsort_run2.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:16:57Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new512 seed=2 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,2,9,102.61,102.45,20.55 +vecsort,builtin,100000,1,6,9,39.37,39.34,23.62 +vecsort,copy,100000,1,63,9,3.14,3.10,19.84 diff --git a/tests/beman/big_int/perf/item1/x64_study64_run1.csv b/tests/beman/big_int/perf/item1/x64_study64_run1.csv new file mode 100644 index 00000000..077a2954 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study64_run1.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:11:36Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2957529,9,6.66,6.61,19.72 +add,inplace,1,1,2035779,9,4.91,4.91,20.00 +add,kernel,1,1,10340399,9,1.92,1.89,19.83 +add,floor,1,1,2044024,9,9.81,9.81,20.06 +add,gmp,1,1,8823766,9,2.27,2.27,20.05 +add,gmpz,1,1,4813093,9,4.16,4.16,20.04 +add,auto,2,2,1257083,9,15.96,15.89,20.06 +add,inplace,2,2,1610213,9,6.15,5.98,19.68 +add,kernel,2,2,8199515,9,2.41,2.34,19.80 +add,floor,2,2,1961320,9,10.23,10.20,20.09 +add,gmp,2,2,8824154,9,2.27,2.27,20.00 +add,gmpz,2,2,4813017,9,4.16,4.16,20.00 +add,auto,4,4,1297234,9,15.42,15.41,20.01 +add,inplace,4,4,1743098,9,5.71,5.71,19.93 +add,kernel,4,4,6604569,9,3.04,3.02,20.14 +add,floor,4,4,1798459,9,11.09,11.02,19.95 +add,gmp,4,4,8041608,9,2.49,2.49,20.01 +add,gmpz,4,4,4593245,9,4.34,4.34,19.97 +add,auto,8,8,1193770,9,16.75,16.75,20.00 +add,inplace,8,8,1408671,9,7.09,7.07,19.98 +add,kernel,8,8,4412052,9,4.53,4.53,20.02 +add,floor,8,8,1576939,9,12.48,12.36,19.68 +add,gmp,8,8,5440013,9,3.68,3.67,20.01 +add,gmpz,8,8,4307109,9,4.65,4.64,20.04 +add,auto,16,16,954302,9,21.02,20.92,20.05 +add,inplace,16,16,852983,9,11.71,11.62,19.95 +add,kernel,16,16,2647191,9,7.56,7.55,20.00 +add,floor,16,16,1301275,9,15.39,15.34,20.07 +add,gmp,16,16,3540248,9,5.65,5.65,20.00 +add,gmpz,16,16,2565485,9,7.76,7.75,19.92 +sub,auto,1,1,2553405,9,7.76,7.74,19.83 +sub,inplace,1,1,2135430,9,4.68,4.66,19.97 +sub,kernel,1,1,13236224,9,1.51,1.51,20.00 +sub,floor,1,1,10581523,9,1.89,1.89,19.99 +sub,gmp,1,1,8823397,9,2.27,2.27,20.00 +sub,gmpz,1,1,4603644,9,4.34,4.34,20.00 +sub,auto,2,2,1280156,9,15.71,15.63,20.13 +sub,inplace,2,2,1960200,9,5.11,5.10,20.10 +sub,kernel,2,2,9542863,9,2.10,2.09,20.10 +sub,floor,2,2,2020669,9,9.96,9.91,20.11 +sub,gmp,2,2,8824108,9,2.27,2.27,20.00 +sub,gmpz,2,2,4602314,9,4.35,4.34,20.06 +sub,auto,4,4,1204449,9,16.59,16.57,19.98 +sub,inplace,4,4,1787662,9,5.59,5.59,20.01 +sub,kernel,4,4,7052433,9,2.84,2.83,20.00 +sub,floor,4,4,1854606,9,10.81,10.74,20.04 +sub,gmp,4,4,8009859,9,2.50,2.50,20.00 +sub,gmpz,4,4,4372638,9,4.56,4.54,19.96 +sub,auto,8,8,1116542,9,17.91,17.91,20.01 +sub,inplace,8,8,1436638,9,6.95,6.95,19.99 +sub,kernel,8,8,4587303,9,4.36,4.35,20.00 +sub,floor,8,8,1605505,9,12.42,12.40,19.94 +sub,gmp,8,8,5423888,9,3.69,3.69,20.00 +sub,gmpz,8,8,4048090,9,4.96,4.93,20.09 +sub,auto,16,16,941441,9,21.23,21.12,19.99 +sub,inplace,16,16,899680,9,11.05,11.00,19.89 +sub,kernel,16,16,2493743,9,8.02,8.02,20.00 +sub,floor,16,16,1312458,9,15.29,15.24,20.06 +sub,gmp,16,16,3637338,9,5.50,5.49,19.99 +sub,gmpz,16,16,2946398,9,6.81,6.75,20.04 +shl,auto,1,13,1577746,9,12.60,12.41,19.87 +shl,inplace,1,13,2707333,9,3.67,3.67,19.91 +shl,kernel,1,13,9658541,9,2.07,2.07,20.03 +shl,kernelip,1,13,5648390,9,1.74,1.70,19.62 +shl,floor,1,13,2080687,9,9.82,9.80,20.43 +shl,gmp,1,13,9626171,9,2.08,2.08,20.00 +shl,gmpz,1,13,6110834,9,3.27,3.27,20.02 +shl,auto,4,13,1481653,9,13.44,13.36,19.90 +shl,inplace,4,13,2167924,9,4.61,4.59,20.00 +shl,kernel,4,13,5711158,9,3.50,3.47,20.04 +shl,kernelip,4,13,3402982,9,2.94,2.91,20.04 +shl,floor,4,13,1770339,9,11.20,11.19,19.84 +shl,gmp,4,13,7991311,9,2.50,2.50,20.00 +shl,gmpz,4,13,4947049,9,4.04,4.04,20.03 +shl,auto,16,13,1174359,9,17.07,16.96,20.03 +shl,inplace,16,13,1106880,9,9.10,9.00,20.15 +shl,kernel,16,13,2684565,9,7.45,7.44,20.00 +shl,kernelip,16,13,1406483,9,7.13,7.05,20.07 +shl,floor,16,13,1342232,9,15.22,15.21,20.43 +shl,gmp,16,13,4816627,9,4.16,4.15,20.08 +shl,gmpz,16,13,3407164,9,5.84,5.81,19.89 +shr,auto,1,13,2440400,9,8.19,8.18,19.99 +shr,inplace,1,13,2970127,9,3.29,3.25,19.55 +shr,kernel,1,13,11745605,9,1.70,1.70,19.99 +shr,floor,1,13,8822456,9,2.27,2.27,20.00 +shr,gmp,1,13,10589565,9,1.89,1.89,20.01 +shr,gmpz,1,13,5775292,9,3.47,3.46,20.08 +shr,auto,4,13,1247066,9,16.06,15.99,20.03 +shr,inplace,4,13,2284628,9,4.36,4.32,19.91 +shr,kernel,4,13,5690183,9,3.51,3.47,19.98 +shr,floor,4,13,1796223,9,11.15,11.11,20.02 +shr,gmp,4,13,8656115,9,2.33,2.32,20.19 +shr,gmpz,4,13,5042697,9,3.97,3.94,20.06 +shr,auto,16,13,1004547,9,19.93,19.90,20.03 +shr,inplace,16,13,1155662,9,8.65,8.62,19.99 +shr,kernel,16,13,2386072,9,8.34,8.32,19.90 +shr,floor,16,13,1289417,9,15.46,15.36,19.96 +shr,gmp,16,13,4635080,9,4.31,4.31,20.07 +shr,gmpz,16,13,3194500,9,6.24,6.22,20.09 +mul,auto,1,1,1222672,9,16.36,16.33,20.01 +mul,gmp,1,1,5965340,9,3.37,3.35,20.12 +mul,gmpz,1,1,5025922,9,3.97,3.97,19.97 +mul,auto,2,2,1058974,9,18.94,18.90,20.07 +mul,kernel,2,2,2828172,9,7.62,7.55,21.57 +mul,floor,2,2,1356258,9,14.99,14.83,20.35 +mul,gmp,2,2,5208109,9,3.82,3.80,19.89 +mul,gmpz,2,2,3286419,9,6.10,6.07,20.05 +mul,auto,3,3,987599,9,20.25,20.21,20.01 +mul,kernel,3,3,2395772,9,8.93,8.92,21.40 +mul,floor,3,3,1235660,9,16.37,16.32,20.23 +mul,gmp,3,3,2577655,9,7.72,7.70,19.90 +mul,gmpz,3,3,2007431,9,9.99,9.95,20.04 +mul,auto,4,4,898437,9,22.30,22.28,20.07 +mul,kernel,4,4,1927289,9,10.97,10.89,21.13 +mul,floor,4,4,1113593,9,18.20,18.14,20.28 +mul,gmp,4,4,2076741,9,9.62,9.56,19.97 +mul,gmpz,4,4,1653060,9,12.08,12.02,19.99 +mul,auto,6,6,720426,9,27.81,27.70,20.03 +mul,kernel,6,6,1217611,9,17.16,17.14,20.89 +mul,floor,6,6,822429,9,24.35,24.32,20.06 +mul,gmp,6,6,1273561,9,15.68,15.66,19.98 +mul,gmpz,6,6,1113233,9,17.95,17.92,20.02 +mul,auto,8,8,562122,9,35.53,35.37,19.96 +mul,kernel,8,8,808444,9,25.46,25.25,20.58 +mul,floor,8,8,620549,9,32.36,32.27,20.09 +mul,gmp,8,8,742575,9,27.09,26.83,20.09 +mul,gmpz,8,8,692471,9,28.85,28.72,20.01 +mul,auto,12,12,347316,9,57.58,57.54,20.00 +mul,kernel,12,12,428962,9,47.37,47.28,20.32 +mul,floor,12,12,366927,9,54.46,54.24,19.97 +mul,gmp,12,12,411819,9,48.56,48.54,20.00 +mul,gmpz,12,12,385924,9,51.82,51.81,20.00 +mul,auto,16,16,225862,9,88.50,88.48,19.99 +mul,kernel,16,16,255671,9,78.60,78.46,20.10 +mul,floor,16,16,234420,9,85.45,85.28,20.03 +mul,gmp,16,16,243901,9,82.02,81.99,20.00 +mul,gmpz,16,16,235932,9,84.09,84.05,19.85 +sqr,auto,4,4,912984,9,22.02,21.96,20.10 +sqr,kernel,4,4,2029332,9,9.87,9.82,20.04 +sqr,floor,4,4,1216090,9,16.78,16.74,20.44 +sqr,gmp,4,4,3472950,9,5.84,5.77,20.29 +sqr,gmpz,4,4,2278441,9,8.81,8.75,20.08 +sqr,auto,16,16,301487,9,66.34,66.23,19.99 +sqr,kernel,16,16,348800,9,57.36,57.32,20.01 +sqr,floor,16,16,320186,9,62.78,62.77,20.11 +sqr,gmp,16,16,400620,9,49.80,49.78,19.95 +sqr,gmpz,16,16,383769,9,52.10,52.06,19.99 +divrem,auto,2,1,512633,9,39.21,39.13,20.11 +divrem,kernel,2,1,3475117,9,5.74,5.67,19.96 +divrem,floor,2,1,1561097,9,12.83,12.80,20.04 +divrem,gmp,2,1,2302399,9,8.68,8.67,19.99 +divrem,gmpz,2,1,1475329,9,13.56,13.55,20.00 +divrem,auto,8,4,233941,9,86.37,85.82,20.21 +divrem,kernel,8,4,467761,9,42.70,42.57,19.98 +divrem,floor,8,4,324722,9,62.39,62.10,20.28 +divrem,gmp,8,4,498304,9,40.00,39.80,19.93 +divrem,gmpz,8,4,483991,9,41.54,41.37,20.11 +divrem,auto,32,16,59081,9,340.28,339.64,20.12 +divrem,kernel,32,16,68457,9,292.08,290.98,19.98 +divrem,floor,32,16,65163,9,307.11,306.49,20.01 +divrem,gmp,32,16,104591,9,191.39,190.62,20.01 +divrem,gmpz,32,16,102889,9,194.01,193.64,19.96 diff --git a/tests/beman/big_int/perf/item1/x64_study64_run2.csv b/tests/beman/big_int/perf/item1/x64_study64_run2.csv new file mode 100644 index 00000000..8fbebafb --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study64_run2.csv @@ -0,0 +1,166 @@ +# gap_sweep date 2026-10-06T17:14:17Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2972068,9,6.66,6.61,19.88 +add,inplace,1,1,2036014,9,4.91,4.91,20.00 +add,kernel,1,1,10384993,9,1.91,1.90,19.99 +add,floor,1,1,2055798,9,9.79,9.76,20.14 +add,gmp,1,1,8824178,9,2.27,2.27,20.02 +add,gmpz,1,1,4812965,9,4.16,4.16,20.00 +add,auto,2,2,1267554,9,15.83,15.73,20.05 +add,inplace,2,2,1671274,9,6.08,5.94,20.36 +add,kernel,2,2,7948084,9,2.38,2.33,19.08 +add,floor,2,2,1945780,9,10.24,10.19,19.93 +add,gmp,2,2,8824122,9,2.27,2.27,20.00 +add,gmpz,2,2,4812018,9,4.16,4.16,20.00 +add,auto,4,4,1298031,9,15.41,15.41,20.01 +add,inplace,4,4,1745012,9,5.73,5.71,20.09 +add,kernel,4,4,6359359,9,3.12,3.03,19.82 +add,floor,4,4,1754815,9,11.16,11.11,19.81 +add,gmp,4,4,7998427,9,2.50,2.49,20.02 +add,gmpz,4,4,4588389,9,4.37,4.37,20.08 +add,auto,8,8,1193765,9,16.75,16.75,20.00 +add,inplace,8,8,1412399,9,7.09,7.07,20.02 +add,kernel,8,8,4412050,9,4.53,4.53,20.00 +add,floor,8,8,1594328,9,12.54,12.45,20.00 +add,gmp,8,8,5437394,9,3.68,3.68,20.01 +add,gmpz,8,8,4285819,9,4.67,4.62,19.99 +add,auto,16,16,955979,9,20.92,20.89,20.01 +add,inplace,16,16,842392,9,11.78,11.75,19.84 +add,kernel,16,16,2646809,9,7.56,7.56,20.00 +add,floor,16,16,1296921,9,15.51,15.44,20.11 +add,gmp,16,16,3636119,9,5.50,5.50,20.01 +add,gmpz,16,16,3063291,9,6.51,6.48,19.95 +sub,auto,1,1,2581875,9,7.75,7.74,20.01 +sub,inplace,1,1,2141959,9,4.67,4.66,20.02 +sub,kernel,1,1,13236315,9,1.51,1.51,20.00 +sub,floor,1,1,10356243,9,1.89,1.89,19.58 +sub,gmp,1,1,8823900,9,2.27,2.27,20.00 +sub,gmpz,1,1,4603811,9,4.35,4.34,20.05 +sub,auto,2,2,1280316,9,15.73,15.67,20.14 +sub,inplace,2,2,1960883,9,5.14,5.10,20.18 +sub,kernel,2,2,9501366,9,2.11,2.10,20.10 +sub,floor,2,2,2026283,9,9.96,9.94,20.19 +sub,gmp,2,2,8824320,9,2.27,2.27,20.01 +sub,gmpz,2,2,4603317,9,4.35,4.34,20.05 +sub,auto,4,4,1207566,9,16.56,16.56,20.00 +sub,inplace,4,4,1788204,9,5.59,5.59,20.00 +sub,kernel,4,4,7055432,9,2.84,2.83,20.01 +sub,floor,4,4,1880228,9,10.74,10.70,20.19 +sub,gmp,4,4,8009130,9,2.50,2.50,20.00 +sub,gmpz,4,4,4398966,9,4.57,4.54,20.08 +sub,auto,8,8,1113679,9,17.97,17.96,20.01 +sub,inplace,8,8,1442357,9,6.93,6.93,20.03 +sub,kernel,8,8,4581077,9,4.36,4.36,20.00 +sub,floor,8,8,1624103,9,12.30,12.25,19.96 +sub,gmp,8,8,5425119,9,3.69,3.69,20.01 +sub,gmpz,8,8,4046224,9,4.97,4.94,20.11 +sub,auto,16,16,950367,9,20.92,20.80,19.92 +sub,inplace,16,16,900453,9,11.09,11.05,19.98 +sub,kernel,16,16,2493636,9,8.03,8.02,20.22 +sub,floor,16,16,1261677,9,15.46,15.43,19.64 +sub,gmp,16,16,3637955,9,5.50,5.50,20.01 +sub,gmpz,16,16,2839231,9,7.02,6.97,19.94 +shl,auto,1,13,1579749,9,12.63,12.49,19.97 +shl,inplace,1,13,2718002,9,3.68,3.67,20.03 +shl,kernel,1,13,9626338,9,2.08,2.06,19.99 +shl,kernelip,1,13,5842620,9,1.74,1.72,20.45 +shl,floor,1,13,2079196,9,9.83,9.82,20.44 +shl,gmp,1,13,9626109,9,2.08,2.08,20.02 +shl,gmpz,1,13,6110690,9,3.27,3.27,20.02 +shl,auto,4,13,1485851,9,13.45,13.38,19.98 +shl,inplace,4,13,2163240,9,4.62,4.62,20.02 +shl,kernel,4,13,5673925,9,3.50,3.44,19.74 +shl,kernelip,4,13,3368901,9,2.95,2.91,19.92 +shl,floor,4,13,1775609,9,11.19,11.18,19.87 +shl,gmp,4,13,7990288,9,2.50,2.50,20.00 +shl,gmpz,4,13,4935618,9,4.04,4.04,19.98 +shl,auto,16,13,1173739,9,17.07,16.98,20.04 +shl,inplace,16,13,1095143,9,9.17,9.02,20.05 +shl,kernel,16,13,2679239,9,7.45,7.44,19.97 +shl,kernelip,16,13,1426422,9,7.12,7.06,20.33 +shl,floor,16,13,1284540,9,15.30,15.27,19.67 +shl,gmp,16,13,4766976,9,4.19,4.13,19.89 +shl,gmpz,16,13,3445362,9,5.80,5.80,20.05 +shr,auto,1,13,2439078,9,8.19,8.18,19.98 +shr,inplace,1,13,3067022,9,3.30,3.25,20.29 +shr,kernel,1,13,11752764,9,1.70,1.70,19.99 +shr,floor,1,13,8823817,9,2.27,2.27,20.00 +shr,gmp,1,13,10588656,9,1.89,1.89,20.02 +shr,gmpz,1,13,5780859,9,3.46,3.46,20.02 +shr,auto,4,13,1240148,9,15.98,15.95,19.82 +shr,inplace,4,13,2295823,9,4.34,4.32,19.91 +shr,kernel,4,13,5736359,9,3.49,3.47,20.01 +shr,floor,4,13,1789199,9,11.16,11.12,19.98 +shr,gmp,4,13,8531457,9,2.32,2.31,19.89 +shr,gmpz,4,13,4948903,9,3.99,3.96,19.72 +shr,auto,16,13,1002991,9,19.92,19.90,19.98 +shr,inplace,16,13,1162081,9,8.65,8.64,20.12 +shr,kernel,16,13,2372175,9,8.43,8.40,20.00 +shr,floor,16,13,1296791,9,15.46,15.39,20.10 +shr,gmp,16,13,4592473,9,4.41,4.29,20.16 +shr,gmpz,16,13,3223511,9,6.18,6.16,20.07 +mul,auto,1,1,1207058,9,16.61,16.33,20.10 +mul,gmp,1,1,5614789,9,3.37,3.31,19.03 +mul,gmpz,1,1,4954687,9,4.04,4.03,19.99 +mul,auto,2,2,1052939,9,18.92,18.88,20.01 +mul,kernel,2,2,2829443,9,7.60,7.55,21.56 +mul,floor,2,2,1356977,9,15.02,14.90,20.36 +mul,gmp,2,2,4994446,9,3.99,3.97,19.93 +mul,gmpz,2,2,3253564,9,6.13,6.09,19.95 +mul,auto,3,3,986509,9,20.23,20.18,19.98 +mul,kernel,3,3,2369472,9,8.94,8.92,21.24 +mul,floor,3,3,1247175,9,16.30,16.23,20.35 +mul,gmp,3,3,2575770,9,7.75,7.71,19.98 +mul,gmpz,3,3,2010176,9,9.97,9.95,20.05 +mul,auto,4,4,894328,9,22.30,22.26,19.98 +mul,kernel,4,4,1932500,9,10.91,10.89,21.11 +mul,floor,4,4,1102606,9,18.25,18.19,20.16 +mul,gmp,4,4,1942264,9,10.26,10.22,19.95 +mul,gmpz,4,4,1565351,9,12.84,12.78,20.09 +mul,auto,6,6,710454,9,28.27,28.10,20.08 +mul,kernel,6,6,1214782,9,17.59,17.48,21.35 +mul,floor,6,6,816837,9,24.35,24.31,19.91 +mul,gmp,6,6,1276105,9,15.70,15.66,20.03 +mul,gmpz,6,6,1093504,9,18.31,18.27,20.03 +mul,auto,8,8,562701,9,35.61,35.49,20.05 +mul,kernel,8,8,811364,9,26.03,25.88,21.11 +mul,floor,8,8,616931,9,32.45,32.38,20.02 +mul,gmp,8,8,736963,9,27.07,26.86,19.93 +mul,gmpz,8,8,691461,9,29.01,28.66,20.11 +mul,auto,12,12,347122,9,57.65,57.61,20.01 +mul,kernel,12,12,426239,9,47.30,47.12,20.17 +mul,floor,12,12,368203,9,54.37,54.20,20.02 +mul,gmp,12,12,411899,9,48.56,48.55,20.00 +mul,gmpz,12,12,394208,9,50.75,50.73,20.04 +mul,auto,16,16,225900,9,88.44,88.35,19.98 +mul,kernel,16,16,256844,9,78.60,78.46,20.19 +mul,floor,16,16,234526,9,85.38,85.17,20.02 +mul,gmp,16,16,244237,9,81.92,81.90,20.05 +mul,gmpz,16,16,238003,9,84.05,84.01,20.02 +sqr,auto,4,4,919373,9,22.10,21.85,20.29 +sqr,kernel,4,4,2023172,9,9.88,9.75,19.97 +sqr,floor,4,4,1205845,9,16.78,16.76,20.26 +sqr,gmp,4,4,3462359,9,5.81,5.77,20.13 +sqr,gmpz,4,4,2275983,9,8.80,8.74,20.04 +sqr,auto,16,16,293747,9,68.11,66.55,19.93 +sqr,kernel,16,16,345667,9,57.78,57.71,19.97 +sqr,floor,16,16,318094,9,63.79,63.71,20.29 +sqr,gmp,16,16,398528,9,49.85,49.81,19.88 +sqr,gmpz,16,16,383977,9,52.08,52.06,20.00 +divrem,auto,2,1,638234,9,31.56,31.40,20.13 +divrem,kernel,2,1,3487912,9,5.69,5.48,19.78 +divrem,floor,2,1,1563714,9,12.77,12.75,19.97 +divrem,gmp,2,1,2984562,9,6.70,6.70,20.00 +divrem,gmpz,2,1,1711935,9,11.66,11.59,19.95 +divrem,auto,8,4,208951,9,97.40,96.63,20.34 +divrem,kernel,8,4,355219,9,56.35,56.10,20.02 +divrem,floor,8,4,264328,9,72.03,71.73,19.04 +divrem,gmp,8,4,450333,9,44.61,44.33,20.08 +divrem,gmpz,8,4,425589,9,47.00,46.83,20.01 +divrem,auto,32,16,59041,9,338.86,337.62,20.01 +divrem,kernel,32,16,69265,9,288.80,288.24,20.01 +divrem,floor,32,16,65985,9,304.29,303.66,20.07 +divrem,gmp,32,16,105374,9,190.47,189.53,20.06 +divrem,gmpz,32,16,103736,9,192.11,191.53,19.94 diff --git a/tests/beman/big_int/perf/item1/x64_study64_vecsort_run1.csv b/tests/beman/big_int/perf/item1/x64_study64_vecsort_run1.csv new file mode 100644 index 00000000..84c78bc1 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study64_vecsort_run1.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:12:15Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,86.45,86.32,25.95 +vecsort,builtin,100000,1,6,9,39.37,39.18,23.61 +vecsort,copy,100000,1,177,9,1.13,1.13,20.08 diff --git a/tests/beman/big_int/perf/item1/x64_study64_vecsort_run2.csv b/tests/beman/big_int/perf/item1/x64_study64_vecsort_run2.csv new file mode 100644 index 00000000..95726c1e --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_study64_vecsort_run2.csv @@ -0,0 +1,7 @@ +# gap_sweep date 2026-10-06T17:14:56Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=vecsort bands=medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +vecsort,auto,100000,1,3,9,85.81,85.61,25.78 +vecsort,builtin,100000,1,6,9,39.50,39.45,23.71 +vecsort,copy,100000,1,177,9,1.13,1.13,20.16 diff --git a/tests/beman/big_int/perf/item1_frontend_results.md b/tests/beman/big_int/perf/item1_frontend_results.md new file mode 100644 index 00000000..5e68ebdf --- /dev/null +++ b/tests/beman/big_int/perf/item1_frontend_results.md @@ -0,0 +1,575 @@ + + +# Item 1 results: cutting the fixed per-call front-end cost + +Item 1 of [`gmp_gap_analysis.md`](gmp_gap_analysis.md) section 6 targeted the 13-18 ns that `+ - << >>` add on top of the +span kernel at <= 16 limbs, the ~21 ns for small `*`, and the 37-66 ns for small divrem. This document records what changed, +how it was measured, and where the targets were and were not met. Numbers are nanoseconds per operation unless noted; +"before" is the library at cf1cf54 and "after" is `opt_1` at 9145b4e, both measured with the same harness (`shape_sweep.cpp`, +with the `floor` row added). The inline-capacity decision is left to the reader: the study in section 7 reports costs and +benefits without recommending a default. + +## 1. Summary of the changes + +- **Assignment.** `operator=(&&)` (`assign_value`) steals an rvalue's heap buffer whenever the destination's allocator can + free it, whatever capacity the destination already holds, instead of copying the limbs and freeing the source. A + propagating allocator that compares unequal no longer leaves the destination holding a buffer it cannot free. So + `c = a op b` costs one allocation (the result) plus the kernel, with no copy. +- **No-zero-fill storage.** New `storage_for_overwrite(n)` ensures capacity and discards the contents: no copy, no + value-initialisation at run time (a debug build poison-fills new blocks, a constant evaluation value-initialises). The + multiply and divide dispatchers no longer require a pre-zeroed result; the zero-fill moved into the tiers that need it, so + the basecase no longer pays two fills. `clear_inline_tail` keeps the "inline limbs above the count are zero" invariant. +- **add and sub.** `add_in_place` and `add_into` use the tail-aware `add_n_tail`/`sub_n_tail` (4-way unrolled, stops once the + carry or borrow dies), grow only for the carry limb, set sign and size once, and write the result with direct stores into + `storage_for_overwrite` storage: no zero re-scan, no one-step trim. +- **Shifts.** `c = a << s` and `c = a >> s` build the result from the source in one pass (`lshift_copy`/`rshift_copy`) into an + exactly sized buffer; `<<=` and `>>=` shift in one in-place pass without reserving a spare limb the value does not need + (so `1 << 127` stays inline in a 128-bit `basic_big_int`). Negative right shifts keep floor rounding by detecting + discarded bits during the pass. +- **Multiply.** `multiply_into` writes into `storage_for_overwrite` storage and drops the fill and the zero re-scan. `*=` + keeps the allocator and capacity (one-limb rhs in place, small products through a stack buffer, larger ones into a fresh + buffer so `x *= x` works). A header-side basecase shortcut (`multiply_basecase_runtime`, `mul_header_basecase_enabled`) + skips the scratch hooks and the tier ladder when `min(la, lb) < 32` (section 6). +- **Divide.** `divmod_into` uses `storage_for_overwrite` and a 128-limb stack arena for small-shape scratch, builds the + remainder from its trimmed span instead of over-reserving, and a 2x1 quotient that fits inline no longer allocates. `/=` + and `%=` keep the object's allocator and capacity (`const basic_big_int temp(std::move(*this), m_alloc); set_zero();`). +- **Bug fixes (found while making the above safe).** Stale inline-tail limbs when the inline capacity is above one limb + (`set_zero`, `shift_right`, `divmod_in_place_short`, the move-assign steal path) made `inplace_to_bit_uint` and so `==` + against builtins wrong for `basic_big_int<128>`; base 8 and 32 `from_chars` into a reused heap destination OR-ed digits + into stale limbs (this affected `big_int` itself); the move-assign fast path propagated a POCCA/POCMA allocator but kept + the heap buffer it could no longer free. All have regression tests (`inline_tail`, `allocation`, `front_end_*`, + `muldiv_frontend`, `dispatch_contract`). + +## 2. Method + +- **Harness.** `shape_sweep` (see `perf/tools/README.md`). Rows: `auto` is `c = a op b` into a reused destination, `inplace` + is `c += b; c -= b` (shifts: `<<=` then `>>=`) halved, `kernel` is the span kernel, `floor` is the kernel plus one + `std::allocator` allocate/deallocate pair of the result size (two for divrem: quotient and remainder), and `gmpz` is GMP + `mpz` with the destination reused. The floor is the true API floor of `c = a op b`: no pair is charged when the result + fits the inline capacity of the integer type under test (at 64 bits that affects shr 1x13 and the 1-limb remainder of + divrem 2x1). `auto - floor` is what the front end costs on top of the unavoidable allocation. The shift `kernel` row + includes the copy-in of the source, so for shifts `auto - floor` can go negative once `auto` is a single pass. +- **Machines.** x64: i9-11900K, Ubuntu 24.04, g++-14.3 `-O2 -march=native`, SIMD_MUL, IFMA multiply kernels + (`BMI2_ADX=1 AVX512_IFMA=1`), every sweep pinned with `taskset -c 2`, box idle. M4: Apple M4 Max, appleclang 21, + SIMD_MUL, nothing pinned, machine idle and not building during timing. GMP 6.3.0 on both. +- **Runs.** Before and after binaries were interleaved: seeds 1 and 2, two repeats each, so four runs per binary and machine + (`gap_sweep.sh --ops add,sub,shl,shr,mul,sqr,divrem,fromchars --bands small,medium`). Reported values are the median of the + four runs; divrem shapes of up to 32 limbs are the mean over the two seeds (the operands change the Knuth D path, see + caveats). Large-band spot checks are 3-round runs per seed. Raw CSVs are in `perf/item1/` + (`x64_*`, `mac_*`; `x64_gcc14_base*` and `x64_gcc14_base{64,128,256}_vecsort_*` are the earlier cf1cf54 baseline runs). +- **Binaries.** Before: harness at cf1cf54 (`base64`). After: `opt_1` (`new64`). The inline-capacity study uses `new64`, + `new128`, `new256`, `new512` (`-DBEMAN_BIG_INT_SWEEP_INLINE_BITS`). The `#const` line of every binary was checked + (`SIMD_MUL=1`, `ndebug=1`, `sweep_inline_bits`, `sweep_int_sizeof`, x64 `BMI2_ADX=1 AVX512_IFMA=1`, `gcc-14.3.0`), and + `selftest.sh` passed on all of them. + +## 3. Before and after + +Cells read `before -> after`. `auto/gmpz` is the user-visible gap to GMP (above 1 means `big_int` is slower). + +### 3.1 x64 (g++-14, -march=native), small band + +| op | shape | auto ns | inplace ns | auto - floor ns | auto/gmpz | auto - kernel ns | +|---|---|---:|---:|---:|---:|---:| +| add | 1x1 | 8.2 -> 6.7 | 4.1 -> 4.9 | -1.6 -> -3.1 | 1.98 -> 1.61 | 6.3 -> 4.8 | +| add | 2x2 | 17.8 -> 15.9 | 5.9 -> 6.1 | 7.6 -> 5.6 | 4.28 -> 3.80 | 15.5 -> 13.5 | +| add | 4x4 | 18.1 -> 15.4 | 5.6 -> 5.7 | 7.2 -> 4.3 | 4.11 -> 3.50 | 15.1 -> 12.3 | +| add | 8x8 | 19.4 -> 16.8 | 7.4 -> 7.1 | 6.9 -> 4.2 | 4.12 -> 3.57 | 14.8 -> 12.2 | +| add | 16x16 | 25.4 -> 20.9 | 11.8 -> 11.9 | 9.8 -> 5.3 | 3.86 -> 3.21 | 17.8 -> 13.4 | +| sub | 1x1 | 9.1 -> 7.8 | 4.0 -> 4.7 | 7.2 -> 5.9 | 2.09 -> 1.79 | 7.6 -> 6.3 | +| sub | 2x2 | 19.1 -> 15.8 | 4.6 -> 5.1 | 9.1 -> 5.8 | 4.40 -> 3.63 | 17.0 -> 13.7 | +| sub | 4x4 | 18.9 -> 16.6 | 5.5 -> 5.6 | 8.2 -> 5.8 | 4.08 -> 3.61 | 16.1 -> 13.7 | +| sub | 8x8 | 20.6 -> 18.0 | 7.2 -> 7.0 | 8.2 -> 5.6 | 4.11 -> 3.51 | 16.2 -> 13.6 | +| sub | 16x16 | 25.8 -> 21.1 | 10.7 -> 11.2 | 10.4 -> 5.7 | 3.76 -> 3.09 | 17.7 -> 13.0 | +| shl | 1x13 | 16.8 -> 12.6 | 4.1 -> 3.7 | 7.0 -> 2.8 | 4.83 -> 3.87 | 14.7 -> 10.6 | +| shl | 4x13 | 18.7 -> 13.5 | 5.2 -> 4.6 | 7.5 -> 2.3 | 4.63 -> 3.34 | 15.2 -> 10.0 | +| shl | 16x13 | 24.5 -> 17.1 | 9.3 -> 9.1 | 9.3 -> 1.9 | 4.21 -> 2.94 | 17.0 -> 9.6 | +| shr | 1x13 | 10.2 -> 8.2 | 3.7 -> 3.3 | 7.9 -> 5.9 | 3.12 -> 2.36 | 8.5 -> 6.5 | +| shr | 4x13 | 21.1 -> 16.1 | 4.7 -> 4.6 | 9.0 -> 5.0 | 5.31 -> 3.82 | 17.6 -> 12.6 | +| shr | 16x13 | 26.1 -> 20.0 | 8.8 -> 8.7 | 9.0 -> 4.4 | 4.18 -> 3.16 | 17.9 -> 11.1 | +| mul | 2x2 | 27.9 -> 18.9 | - | 12.6 -> 3.9 | 4.54 -> 3.08 | 20.3 -> 11.3 | +| mul | 3x3 | 29.6 -> 20.2 | - | 12.9 -> 3.8 | 2.96 -> 2.03 | 20.6 -> 11.3 | +| mul | 4x4 | 32.0 -> 22.3 | - | 13.3 -> 4.1 | 2.62 -> 1.83 | 20.9 -> 11.4 | +| mul | 6x6 | 41.9 -> 28.0 | - | 17.0 -> 3.6 | 2.30 -> 1.54 | 24.4 -> 10.9 | +| mul | 8x8 | 47.2 -> 35.9 | - | 14.3 -> 3.5 | 1.63 -> 1.24 | 21.6 -> 10.5 | +| mul | 12x12 | 70.2 -> 57.9 | - | 14.4 -> 3.1 | 1.38 -> 1.14 | 22.4 -> 10.1 | +| mul | 16x16 | 101.8 -> 88.5 | - | 14.8 -> 2.2 | 1.21 -> 1.05 | 22.1 -> 9.4 | +| sqr | 4x4 | 33.4 -> 22.2 | - | 16.5 -> 5.4 | 3.78 -> 2.51 | 24.3 -> 12.2 | +| sqr | 16x16 | 79.7 -> 66.4 | - | 15.9 -> 3.7 | 1.51 -> 1.26 | 23.4 -> 9.1 | +| divrem | 2x1 | 41.6 -> 35.4 | - | 28.8 -> 22.6 | 3.33 -> 2.84 | 36.1 -> 29.7 | +| divrem | 8x4 | 112.8 -> 94.7 | - | 53.0 -> 27.1 | 2.53 -> 2.07 | 67.7 -> 43.8 | +| divrem | 32x16 | 372.0 -> 340.2 | - | 67.6 -> 34.2 | 1.92 -> 1.73 | 82.6 -> 49.7 | +| fromchars | 4x10 | 195.2 -> 116.1 | - | - | 2.86 -> 1.68 | 154.2 -> 77.3 | +| fromchars | 16x10 | 420.1 -> 433.5 | - | - | 1.63 -> 1.68 | 209.5 -> 217.6 | + +### 3.2 M4 (appleclang), small band + +| op | shape | auto ns | inplace ns | auto - floor ns | auto/gmpz | auto - kernel ns | +|---|---|---:|---:|---:|---:|---:| +| add | 1x1 | 6.8 -> 7.7 | 3.2 -> 3.5 | -2.7 -> -1.7 | 2.07 -> 2.58 | 5.7 -> 6.5 | +| add | 2x2 | 14.6 -> 15.2 | 3.8 -> 3.9 | 5.0 -> 5.6 | 2.84 -> 4.58 | 13.2 -> 13.8 | +| add | 4x4 | 15.2 -> 14.3 | 3.7 -> 3.5 | 4.8 -> 4.1 | 3.20 -> 2.82 | 13.3 -> 12.4 | +| add | 8x8 | 15.6 -> 15.1 | 5.0 -> 4.0 | 3.6 -> 3.1 | 3.02 -> 3.39 | 12.1 -> 11.7 | +| add | 16x16 | 16.3 -> 16.9 | 9.6 -> 5.6 | 2.7 -> 3.2 | 3.63 -> 3.96 | 8.8 -> 9.3 | +| sub | 1x1 | 7.6 -> 8.0 | 3.4 -> 3.5 | 5.8 -> 6.3 | 2.57 -> 3.23 | 6.5 -> 7.0 | +| sub | 2x2 | 15.0 -> 14.7 | 3.3 -> 3.5 | 5.6 -> 5.3 | 4.63 -> 5.14 | 13.6 -> 13.3 | +| sub | 4x4 | 15.9 -> 14.7 | 3.7 -> 3.6 | 5.8 -> 4.3 | 5.33 -> 5.38 | 14.0 -> 12.8 | +| sub | 8x8 | 16.2 -> 15.6 | 5.2 -> 4.1 | 4.8 -> 3.8 | 4.66 -> 4.83 | 12.7 -> 12.1 | +| sub | 16x16 | 18.1 -> 17.5 | 11.0 -> 5.2 | 3.1 -> 2.4 | 4.24 -> 4.07 | 10.4 -> 9.8 | +| shl | 1x13 | 16.8 -> 12.4 | 2.3 -> 2.5 | 5.5 -> 1.4 | 8.46 -> 6.24 | 14.5 -> 10.2 | +| shl | 4x13 | 19.2 -> 13.0 | 3.6 -> 3.8 | 6.3 -> -0.1 | 7.02 -> 4.77 | 15.4 -> 9.3 | +| shl | 16x13 | 21.4 -> 16.2 | 5.8 -> 5.3 | 9.4 -> 3.9 | 4.29 -> 3.15 | 17.3 -> 12.0 | +| shr | 1x13 | 9.4 -> 6.6 | 2.3 -> 3.3 | 6.9 -> 4.1 | 4.74 -> 3.32 | 7.2 -> 4.4 | +| shr | 4x13 | 18.2 -> 14.0 | 3.2 -> 3.7 | 6.3 -> 2.0 | 6.67 -> 5.13 | 14.5 -> 10.3 | +| shr | 16x13 | 21.0 -> 18.4 | 5.1 -> 5.2 | 7.9 -> 5.4 | 4.97 -> 4.34 | 16.9 -> 14.2 | +| mul | 2x2 | 30.5 -> 18.6 | - | 15.8 -> 4.0 | 4.59 -> 2.74 | 24.0 -> 12.2 | +| mul | 3x3 | 30.4 -> 19.5 | - | 13.2 -> 2.8 | 3.69 -> 2.27 | 21.9 -> 11.3 | +| mul | 4x4 | 29.5 -> 21.6 | - | 12.5 -> 4.8 | 2.70 -> 2.04 | 18.3 -> 10.5 | +| mul | 6x6 | 33.0 -> 27.3 | - | 9.2 -> 3.6 | 1.77 -> 1.47 | 13.9 -> 8.4 | +| mul | 8x8 | 41.5 -> 34.8 | - | 11.1 -> 4.3 | 1.56 -> 1.29 | 18.6 -> 11.9 | +| mul | 12x12 | 61.8 -> 54.0 | - | 12.7 -> 4.5 | 1.33 -> 1.16 | 20.8 -> 12.9 | +| mul | 16x16 | 94.9 -> 82.7 | - | 16.3 -> 4.2 | 1.20 -> 1.05 | 25.2 -> 13.2 | +| sqr | 4x4 | 29.7 -> 21.6 | - | 13.4 -> 5.2 | 3.14 -> 2.27 | 18.1 -> 10.4 | +| sqr | 16x16 | 89.8 -> 75.3 | - | 18.0 -> 2.9 | 1.36 -> 1.14 | 27.6 -> 11.5 | +| divrem | 2x1 | 31.7 -> 24.8 | - | 17.8 -> 11.3 | 3.60 -> 2.86 | 25.7 -> 18.8 | +| divrem | 8x4 | 96.4 -> 75.8 | - | 35.5 -> 14.9 | 2.21 -> 1.73 | 50.1 -> 29.0 | +| divrem | 32x16 | 479.3 -> 432.2 | - | 69.3 -> 21.1 | 2.29 -> 2.06 | 87.6 -> 37.8 | +| fromchars | 4x10 | 92.8 -> 91.6 | - | - | 1.22 -> 1.18 | 60.0 -> 58.9 | +| fromchars | 16x10 | 397.2 -> 397.8 | - | - | 1.25 -> 1.25 | 203.7 -> 205.8 | + +### 3.3 x64, medium band + +| op | shape | auto ns | inplace ns | auto - floor ns | auto/gmpz | auto - kernel ns | +|---|---|---:|---:|---:|---:|---:| +| add | 64x64 | 63.6 -> 57.6 | 39.1 -> 48.1 | 22.3 -> 15.8 | 3.86 -> 3.49 | 30.4 -> 24.7 | +| add | 256x256 | 223.8 -> 213.5 | 145.9 -> 196.1 | 65.0 -> 54.3 | 2.81 -> 2.69 | 81.3 -> 71.1 | +| add | 1024x1024 | 841.5 -> 800.1 | 583.0 -> 790.1 | 247.3 -> 205.5 | 2.15 -> 2.04 | 263.0 -> 222.4 | +| add | 2000x2000 | 1721.2 -> 1535.4 | 1134.9 -> 1520.5 | 571.6 -> 384.7 | 3.59 -> 3.19 | 588.5 -> 403.3 | +| sub | 64x64 | 66.5 -> 58.8 | 37.9 -> 47.1 | 24.4 -> 16.5 | 3.97 -> 3.51 | 33.6 -> 26.1 | +| sub | 1024x1024 | 841.5 -> 808.6 | 581.7 -> 791.5 | 247.4 -> 214.7 | 2.15 -> 2.07 | 263.4 -> 230.8 | +| shl | 256x13 | 135.5 -> 122.0 | 93.1 -> 102.2 | 19.0 -> 5.5 | 2.69 -> 2.45 | 41.1 -> 28.2 | +| shl | 2000x13 | 916.5 -> 772.8 | 657.2 -> 740.9 | 176.7 -> 33.6 | 2.71 -> 2.29 | 196.5 -> 53.1 | +| shl | 2000x77 | 1065.3 -> 774.8 | 764.5 -> 741.5 | 193.2 -> -97.1 | 3.13 -> 2.29 | 215.4 -> -75.6 | +| shr | 256x13 | 138.6 -> 125.5 | 93.8 -> 101.7 | 7.3 -> -4.9 | 2.73 -> 2.47 | 28.4 -> 15.0 | +| shr | 2000x13 | 949.4 -> 750.3 | 657.2 -> 738.7 | 117.2 -> -81.7 | 2.80 -> 2.21 | 137.6 -> -61.8 | +| shr | 2000x77 | 1084.2 -> 750.6 | 764.9 -> 740.1 | 232.6 -> -102.0 | 3.20 -> 2.21 | 254.9 -> -79.6 | +| mul | 32x32 | 212.8 -> 200.5 | - | 12.8 -> 0.2 | 0.77 -> 0.74 | 24.1 -> 6.2 | +| mul | 64x64 | 517.4 -> 498.3 | - | 24.8 -> 3.6 | 0.60 -> 0.57 | 30.8 -> 12.8 | +| mul | 256x256 | 6254.4 -> 6185.1 | - | 18.2 -> 4.9 | 0.80 -> 0.79 | 81.2 -> 15.4 | +| mul | 1000x1000 | 59840.1 -> 59737.0 | - | 418.4 -> 167.6 | 1.11 -> 1.11 | 378.1 -> 250.3 | +| mul | 2000x2000 | 177078.2 -> 176669.1 | - | 698.5 -> 219.4 | 1.23 -> 1.23 | 778.0 -> 253.8 | +| mul | 2000x100 | 17857.2 -> 17640.0 | - | 23.0 -> -55.9 | 0.50 -> 0.49 | 192.1 -> -20.1 | +| sqr | 64x64 | 302.6 -> 276.1 | - | 22.7 -> -9.7 | 0.54 -> 0.50 | 32.9 -> -4.1 | +| sqr | 512x512 | 10629.4 -> 10582.1 | - | 63.0 -> -13.5 | 0.71 -> 0.70 | 89.1 -> 22.9 | +| sqr | 2000x2000 | 100001.6 -> 98205.6 | - | 1537.8 -> 79.5 | 0.99 -> 0.98 | 801.6 -> 16.8 | +| divrem | 128x64 | 3364.7 -> 3311.6 | - | 125.0 -> 47.5 | 1.94 -> 1.92 | 120.4 -> 84.6 | +| divrem | 512x256 | 29529.0 -> 29508.4 | - | 289.9 -> 287.0 | 1.81 -> 1.82 | 225.1 -> 342.1 | +| divrem | 2000x1000 | 185683.5 -> 185240.7 | - | 1297.0 -> -229.8 | 1.35 -> 1.34 | 1096.5 -> 20.4 | +| divrem | 4000x2000 | 478299.8 -> 474978.9 | - | 3602.0 -> -216.3 | 1.42 -> 1.41 | 4662.0 -> -563.2 | +| divrem | 2000x100 | 145266.8 -> 144972.4 | - | 870.1 -> 2397.5 | 2.00 -> 2.01 | 747.3 -> 845.4 | +| divrem | 65536x1 | 193782.3 -> 174417.1 | - | 19066.6 -> 6342.3 | 1.31 -> 1.18 | 26686.7 -> 7091.7 | +| fromchars | 64x10 | 2777.3 -> 3094.7 | - | - | 2.00 -> 2.22 | 644.3 -> 660.9 | +| fromchars | 256x10 | 28412.5 -> 30825.9 | - | - | 2.84 -> 3.10 | 2681.4 -> 1265.8 | +| fromchars | 2000x10 | 429598.0 -> 427566.8 | - | - | 2.17 -> 2.16 | 20495.5 -> 21856.1 | + +### 3.4 M4, medium band + +| op | shape | auto ns | inplace ns | auto - floor ns | auto/gmpz | auto - kernel ns | +|---|---|---:|---:|---:|---:|---:| +| add | 64x64 | 54.5 -> 38.2 | 51.3 -> 20.0 | -7.4 -> -22.6 | 4.22 -> 2.90 | 5.3 -> -11.0 | +| add | 256x256 | 147.1 -> 109.9 | 239.5 -> 100.9 | -98.2 -> -136.3 | 2.54 -> 1.90 | -88.3 -> -124.8 | +| add | 1024x1024 | 551.5 -> 450.1 | 985.4 -> 433.6 | -433.4 -> -539.9 | 2.18 -> 1.78 | -416.4 -> -520.8 | +| add | 2000x2000 | 1126.7 -> 886.7 | 1935.7 -> 854.2 | -809.8 -> -1046.7 | 2.27 -> 1.78 | -788.3 -> -1030.2 | +| sub | 64x64 | 40.9 -> 35.9 | 50.9 -> 19.9 | -19.5 -> -24.3 | 2.96 -> 2.59 | -8.5 -> -13.6 | +| sub | 1024x1024 | 547.5 -> 453.1 | 985.9 -> 434.5 | -428.7 -> -524.8 | 2.16 -> 1.79 | -422.4 -> -522.7 | +| shl | 256x13 | 85.9 -> 41.3 | 36.4 -> 29.8 | 28.2 -> -16.1 | 2.27 -> 1.09 | 36.7 -> -7.8 | +| shl | 2000x13 | 638.6 -> 262.4 | 283.2 -> 196.5 | 238.0 -> -138.1 | 0.29 -> 0.13 | 255.1 -> -121.1 | +| shl | 2000x77 | 790.7 -> 458.6 | 424.8 -> 228.8 | 248.5 -> -81.0 | 2.73 -> 1.59 | 262.7 -> -70.9 | +| shr | 256x13 | 87.3 -> 42.6 | 36.0 -> 30.4 | 11.6 -> -32.7 | 2.29 -> 1.12 | 20.9 -> -23.9 | +| shr | 2000x13 | 706.8 -> 255.1 | 283.0 -> 196.3 | 182.0 -> -270.0 | 2.36 -> 0.86 | 194.1 -> -258.7 | +| shr | 2000x77 | 1057.9 -> 276.4 | 420.0 -> 195.8 | 532.0 -> -249.9 | 3.65 -> 0.95 | 540.9 -> -240.3 | +| mul | 32x32 | 298.2 -> 281.8 | - | 18.6 -> 3.1 | 1.12 -> 1.06 | 39.5 -> 23.4 | +| mul | 64x64 | 1037.9 -> 1008.6 | - | 24.8 -> -0.7 | 1.33 -> 1.29 | 55.2 -> 24.5 | +| mul | 256x256 | 11853.3 -> 11814.0 | - | 94.2 -> 26.0 | 1.51 -> 1.50 | 98.6 -> 27.0 | +| mul | 1000x1000 | 107142.3 -> 106691.9 | - | 289.0 -> -192.8 | 1.94 -> 1.93 | 374.3 -> -156.5 | +| mul | 2000x2000 | 302134.9 -> 301592.0 | - | 128.7 -> -681.6 | 2.04 -> 2.03 | 759.9 -> -99.5 | +| mul | 2000x100 | 46964.9 -> 46319.6 | - | 189.0 -> -476.9 | 1.35 -> 1.33 | 170.0 -> -377.5 | +| sqr | 64x64 | 626.4 -> 600.0 | - | 26.4 -> 1.6 | 0.93 -> 0.89 | 43.0 -> 19.3 | +| sqr | 512x512 | 24592.6 -> 24374.4 | - | 257.1 -> 26.4 | 1.25 -> 1.24 | 206.7 -> 17.9 | +| sqr | 2000x2000 | 224138.1 -> 223342.4 | - | 1273.4 -> 81.0 | 1.86 -> 1.85 | 1332.5 -> -404.5 | +| divrem | 128x64 | 3731.8 -> 3691.2 | - | 111.5 -> 47.5 | 2.10 -> 2.08 | 121.0 -> 89.4 | +| divrem | 512x256 | 28589.6 -> 28613.1 | - | 241.5 -> 234.6 | 1.74 -> 1.74 | 262.6 -> 236.7 | +| divrem | 2000x1000 | 232543.6 -> 232354.6 | - | 820.3 -> 397.1 | 1.73 -> 1.73 | 1102.5 -> 5.9 | +| divrem | 4000x2000 | 687816.7 -> 688042.4 | - | 1309.8 -> 565.7 | 2.00 -> 2.00 | -317.3 -> 1268.1 | +| divrem | 2000x100 | 95254.0 -> 94399.0 | - | 1331.8 -> 434.9 | 1.38 -> 1.37 | 1083.7 -> 362.2 | +| divrem | 65536x1 | 241855.9 -> 229283.2 | - | 12147.0 -> -1278.5 | 1.43 -> 1.34 | 15073.8 -> -605.0 | +| fromchars | 64x10 | 2195.2 -> 2182.2 | - | - | 1.37 -> 1.36 | 339.6 -> 326.3 | +| fromchars | 256x10 | 13831.3 -> 13791.9 | - | - | 1.31 -> 1.28 | 2271.7 -> 2254.6 | +| fromchars | 2000x10 | 300314.1 -> 300086.8 | - | - | 1.47 -> 1.48 | 17698.1 -> 17469.0 | + +### 3.5 Large-band spot checks + +x64: + +| op | shape | auto ns | kernel ns | gmpz ns | auto/gmpz | change in auto | +|---|---|---:|---:|---:|---:|---:| +| add | 16384x16384 | 14883 -> 12435 | 9301 -> 9298 | 7410 | 2.01 -> 1.68 | -16.4% | +| divrem | 4096x2048 | 498654 -> 498767 | 497775 -> 498832 | 367635 | 1.36 -> 1.36 | +0.0% | +| fromchars | 10000x10 | 3670138 -> 3651386 | 3586031 -> 3567768 | 2006859 | 1.83 -> 1.82 | -0.5% | +| mul | 2000x2000 | 177038 -> 177290 | 176452 -> 176534 | 144170 | 1.23 -> 1.23 | +0.1% | +| mul | 16384x16384 | 3784524 -> 3774169 | 3790346 -> 3781385 | 1783926 | 2.12 -> 2.12 | -0.3% | +| tochars | 10000x10 | 5890002 -> 5879016 | 5823308 -> 5846315 | 4221163 | 1.40 -> 1.39 | -0.2% | + +M4: + +| op | shape | auto ns | kernel ns | gmpz ns | auto/gmpz | change in auto | +|---|---|---:|---:|---:|---:|---:| +| add | 16384x16384 | 9473 -> 7267 | 15838 -> 15813 | 4102 | 2.31 -> 1.77 | -23.3% | +| divrem | 4096x2048 | 703037 -> 708499 | 702306 -> 702139 | 358229 | 1.96 -> 1.98 | +0.8% | +| fromchars | 10000x10 | 4331417 -> 4171163 | 4095996 -> 4088150 | 1857816 | 2.33 -> 2.25 | -3.7% | +| mul | 2000x2000 | 302942 -> 301376 | 301403 -> 303536 | 148256 | 2.04 -> 2.03 | -0.5% | +| mul | 16384x16384 | 5400760 -> 5353474 | 5359177 -> 5393000 | 1567599 | 3.45 -> 3.42 | -0.9% | +| tochars | 10000x10 | 8247452 -> 8240938 | 8206028 -> 8216750 | 4180900 | 1.97 -> 1.97 | -0.1% | + +Observations that matter for reading the tables: + +- Small `auto` on x64 improved by 1.5-4.5 ns for add and sub, 2-7 ns for shifts, 9-14 ns for mul/sqr and 6-32 ns for divrem + (2x1 to 32x16). On M4 the add/sub rows at 1-16 limbs are within noise of the baseline, apart from a small consistent + loss at the smallest shapes (add 1x1 6.8 -> 7.7 ns, 2x2 14.6 -> 15.2; its allocator pair is cheap, a floor only 3-6 ns above + the kernel, so there was little to remove); M4 shifts improved by 3-6 ns, mul/sqr by 6-15 ns and divrem by 7-47 ns. +- Medium and large `auto` rows move by their copy and zero-fill savings only: add 16384 -16% (x64) and -23% (M4), shifts at + 2000 limbs -16..-31% (x64) and -42..-74% (M4), mul and divrem above ~256 limbs within +-1.5% (divrem 65536x1 -10% on x64). +- **Regressions, all reproducible (4 of 4 runs):** + - x64 `inplace` (`c += b; c -= b`) at >= 64 limbs is slower: add 64x64 39.1 -> 48.1 ns, 256x256 145.9 -> 196.1, + 1024x1024 583.0 -> 790.1 (+35%), 2000x2000 1134.9 -> 1520.5; sub the same; the 256x13 and 2000x13 shift pairs 93 -> 102 (+10%) and 657 -> 741 (+13%); the smallest `inplace` rows are 0.5-0.8 ns + slower too (add 1x1 4.1 -> 4.9, sub 1x1 4.0 -> 4.7). + `auto` improved but `inplace` did not: `add_n_tail` on x64 does not reach the ADX-assisted speed of + `add_unsigned_spans` (the unchanged `kernel` row is 578 ns at 1024x1024, the new in-place pair is 790). On M4 the same + rows improved by 2.3x (985 -> 434 ns at 1024x1024). + - x64 `fromchars` (decimal) at 64 and 256 limbs-worth of digits: 64x10 2777 -> 3095 ns (+11%), 256x10 28412 -> 30826 + (+8.5%), 16x10 420 -> 434 (+3%); 4x10 improved 195 -> 116. The `kernel` row moves the same way (256x10 25.7k -> + 29.6k), 2000x10 and the M4 are unchanged. With `mul_header_basecase_enabled = false` the x64 rows return to the + baseline (64x10 2800 / 2870 ns base / shortcut-off, 3050 with the shortcut), while direct mul shapes (40x2 .. 133x31) + show no slowdown. `digits_to_limbs` is a header template compiled into the harness TU (a perf profile is 99.9% in that + one function), so this looks like an inlining/code-generation interaction in GCC 14 rather than an algorithmic change; it + was not isolated further. + +## 4. Plan targets + +Targets from the plan, with the achieved values (median of the four runs). Kernel-row noise at <= 16 limbs is 1-2 ns +(section 8), so a miss of less than ~1.5 ns on an `inplace - kernel` target is within noise. + +| target | x64 | M4 | +|---|---|---| +| `inplace - kernel` <= 3 ns for add/sub/shl/shr at 2-16 limbs | **partly met**: add 3.7/2.6/2.5/4.3 (2/4/8/16 limbs, before 3.5/2.5/2.8/4.2), sub 3.0/2.8/2.6/3.2, shl 1.1/1.7, shr 1.1/-0.2. The in-place path was already near the kernel at these sizes; essentially unchanged | **met**: add 2.5/1.6/0.6/-2.0, sub 2.1/1.7/0.6/-2.5, shifts 0.0..1.2 | +| `auto - floor` <= 3 ns at <= 16 limbs, add/sub/shl/shr | **not met except shl**: add 5.6/4.3/4.2/5.3 (before 7.6/7.2/6.9/9.8), sub 5.8/5.8/5.6/5.7, shl 2.3/1.9 (met), shr 5.0/4.4 | **mostly not met**: add 5.6/4.1/3.1/3.2, sub 5.3/4.3/3.8/2.4, shl -0.1/3.9, shr 2.0/5.4 | +| `auto - floor` <= 5 ns at <= 16 limbs, mul/sqr | **met** for mul 2.2-4.1 (before 12.6-17.0); sqr 5.4 (4x4, marginal) and 3.7 (16x16) | **met** for mul 2.8-4.8 (before 9.2-16.3); sqr 5.2 (4x4, marginal) and 2.9 | +| x64 add 1000 `auto`: 840 -> <= 650 ns | **not met**: add 1024x1024 841 -> 800 ns (2000x2000 1721 -> 1535) | n/a (M4: 552 -> 450 ns) | +| divrem 8x4 `auto - kernel`: 66 -> <= 2 floors + 5 ns (i.e. `auto - floor` <= 5) | **not met**: `auto - kernel` 67.7 -> 43.8, `auto - floor` 53.0 -> 27.1 | **not met**: `auto - kernel` 50.1 -> 29.0, `auto - floor` 35.5 -> 14.9 | +| medium and large rows: no regression > 3% | **not met**: `inplace` add/sub +23..+35% at >= 64 limbs, shifts +13%, decimal `fromchars` +8..+11% at 64-256 limbs-worth of digits (section 3); `auto` rows and the large spot checks are within 3% | **met for medium and large rows**: none regresses; in the small band add 1x1 and 2x2 `auto` are 0.4-0.9 ns slower (+4%, +13%) | + +The allocation targets in `alloc_count.test.cpp` all hold (section 5). + +## 5. Allocation counts + +Steady-state allocations per call (one warm-up call, then 64 calls, `alloc_count.test.cpp`), before -> after where a baseline +exists. Environments: `big_int` with a counting allocator, `pmr::big_int` with a counting default memory resource, and +`basic_big_int`. All cases are enforced (`item1_pending = false`); the 128 and 512 columns were not +measured at cf1cf54. `c = a / b (2x1)` needs the heap for the 2-limb quotient at 64 bits (1 allocation); it is 0 from 128 +bits up. + +| case | `big_int` (counting allocator) | `pmr::big_int` | inline 128 | inline 256 | inline 512 | +|---|---|---|---|---|---| +| `c = a + b (16x16)` | 1 -> 1 | 1 -> 1 | 1 | 1 -> 1 | 1 | +| `c = a - b (16x16)` | 1 -> 1 | 1 -> 1 | 1 | 1 -> 1 | 1 | +| `c += b; c -= b (16x16)` | 0 -> 0 | 0 -> 0 | 0 | 0 -> 0 | 0 | +| `c = a << 13 (16 limbs)` | 1 -> 1 | 1 -> 1 | 1 | 1 -> 1 | 1 | +| `c = a >> 13 (16 limbs)` | 1 -> 1 | 1 -> 1 | 1 | 1 -> 1 | 1 | +| `c <<= 13; c >>= 13 (16 limbs)` | 0 -> 0 | 0 -> 0 | 0 | 0 -> 0 | 0 | +| `c = a * b (8x8)` | 1 -> 1 | 1 -> 1 | 1 | 1 -> 1 | 1 | +| `c = a; c *= b (8x8 -> 16)` | 1 -> 0 | 1 -> 0 | 0 | 1 -> 0 | 0 | +| `c = a; c *= 7 (8 limbs)` | 1 -> 0 | 1 -> 0 | 0 | 1 -> 0 | 0 | +| `c = a / b (8x4)` | 2 -> 1 | 2 -> 1 | 1 | 2 -> 1 | 0 | +| `c = a % b (8x4)` | 2 -> 1 | 2 -> 1 | 1 | 2 -> 0 | 0 | +| `div_rem_to_zero (8x4)` | 4 -> 2 | 4 -> 2 | 2 | 3 -> 1 | 0 | +| `c = a / b (2x1)` | 1 | 1 | - | - | - | +| `c = a; c /= b (8x4) [stretch]` | 3 -> 0 | 3 -> 0 | 0 | 2 -> 0 | 0 | +| `c = a; c %= b (8x4) [stretch]` | 2 -> 0 | 2 -> 0 | 0 | 2 -> 0 | 0 | +| `from_chars 2000 digits (reserved)` | 2 -> 2 | 2 -> 2 | 2 | 2 -> 2 | 2 | +| `c = a / b (2x1, inline q)` | - | - | 0 | 0 -> 0 | 0 | + +The baseline `div_rem_to_zero` counts are the quotient (5 limbs), a 22-limb scratch and a remainder over-reserved to 9 limbs, +plus one more where the operands need normalising (an earlier version of the test also counted its own check's temporaries). +For the inline-capacity study, allocations per call at 1, 2, 4 and 8 limbs (operands with the top bit set, so sums, shifts +and products have the full limb count; `a / d` is n limbs over n/2): + +| op | limbs | 64 | 128 | 256 | 512 | +|---|---:|---:|---:|---:|---:| +| `c = a + b` | 1 | 1 | 0 | 0 | 0 | +| `c = a - b` | 1 | 0 | 0 | 0 | 0 | +| `c = a << 13` | 1 | 1 | 0 | 0 | 0 | +| `c = a >> 13` | 1 | 0 | 0 | 0 | 0 | +| `c = a * b` | 1 | 1 | 0 | 0 | 0 | +| `c = a * a` | 1 | 1 | 0 | 0 | 0 | +| `c = a / d (n x n/2)` | 1 | 0 | 0 | 0 | 0 | +| `div_rem_to_zero (n x n/2)` | 1 | 0 | 0 | 0 | 0 | +| `c = a + b` | 2 | 1 | 1 | 0 | 0 | +| `c = a - b` | 2 | 1 | 0 | 0 | 0 | +| `c = a << 13` | 2 | 1 | 1 | 0 | 0 | +| `c = a >> 13` | 2 | 1 | 0 | 0 | 0 | +| `c = a * b` | 2 | 1 | 1 | 0 | 0 | +| `c = a * a` | 2 | 1 | 1 | 0 | 0 | +| `c = a / d (n x n/2)` | 2 | 1 | 0 | 0 | 0 | +| `div_rem_to_zero (n x n/2)` | 2 | 1 | 0 | 0 | 0 | +| `c = a + b` | 4 | 1 | 1 | 1 | 0 | +| `c = a - b` | 4 | 1 | 1 | 0 | 0 | +| `c = a << 13` | 4 | 1 | 1 | 1 | 0 | +| `c = a >> 13` | 4 | 1 | 1 | 0 | 0 | +| `c = a * b` | 4 | 1 | 1 | 1 | 0 | +| `c = a * a` | 4 | 1 | 1 | 1 | 0 | +| `c = a / d (n x n/2)` | 4 | 1 | 1 | 0 | 0 | +| `div_rem_to_zero (n x n/2)` | 4 | 2 | 1 | 0 | 0 | +| `c = a + b` | 8 | 1 | 1 | 1 | 1 | +| `c = a - b` | 8 | 1 | 1 | 1 | 0 | +| `c = a << 13` | 8 | 1 | 1 | 1 | 1 | +| `c = a >> 13` | 8 | 1 | 1 | 1 | 0 | +| `c = a * b` | 8 | 1 | 1 | 1 | 1 | +| `c = a * a` | 8 | 1 | 1 | 1 | 1 | +| `c = a / d (n x n/2)` | 8 | 1 | 1 | 1 | 0 | +| `div_rem_to_zero (n x n/2)` | 8 | 2 | 2 | 1 | 0 | + +## 6. Header basecase shortcut (`mul_header_basecase_enabled`) + +`new64` (shortcut on) against a build of the same tree with `mul_header_basecase_enabled = false` (edited in a scratch copy, +not committed), interleaved, three runs each, `auto` row: + +x64: + +| op | shape | shortcut on (new64) ns | off ns | on - off ns | runs on / off | +|---|---|---:|---:|---:|---| +| mul | 2x2 | 18.9 | 22.7 | -3.8 | 18.9/18.9/18.9 vs 22.7/22.7/22.7 | +| mul | 3x3 | 20.3 | 24.6 | -4.3 | 20.3/20.4/20.3 vs 24.6/24.4/24.7 | +| mul | 4x4 | 22.3 | 26.3 | -4.0 | 22.3/22.4/22.3 vs 26.3/26.3/26.4 | +| mul | 6x6 | 28.0 | 32.8 | -4.8 | 27.9/28.0/28.0 vs 33.4/32.7/32.8 | +| mul | 8x8 | 35.7 | 41.1 | -5.5 | 35.7/35.7/35.7 vs 41.3/41.1/41.0 | +| mul | 12x12 | 57.7 | 62.6 | -4.9 | 57.7/57.6/57.8 vs 62.6/62.6/62.5 | +| mul | 16x16 | 95.0 | 115.5 | -20.5 | 96.1/95.0/95.0 vs 99.8/115.5/116.0 | +| sqr | 4x4 | 22.0 | 27.3 | -5.3 | 22.2/22.0/21.9 vs 27.3/27.4/27.3 | +| sqr | 16x16 | 68.8 | 72.8 | -4.0 | 68.8/66.3/77.2 vs 71.2/73.3/72.8 | + +M4: + +| op | shape | shortcut on (new64) ns | off ns | on - off ns | runs on / off | +|---|---|---:|---:|---:|---| +| mul | 2x2 | 19.9 | 19.4 | +0.5 | 18.6/19.9/20.2 vs 19.4/19.3/19.9 | +| mul | 3x3 | 20.3 | 21.2 | -1.0 | 20.1/20.4/20.3 vs 23.8/21.2/21.1 | +| mul | 4x4 | 21.5 | 22.3 | -0.8 | 21.6/21.5/21.2 vs 22.2/22.3/22.4 | +| mul | 6x6 | 27.3 | 28.1 | -0.7 | 27.3/27.1/27.4 vs 28.1/28.3/27.6 | +| mul | 8x8 | 34.8 | 35.8 | -1.1 | 34.8/35.1/34.8 vs 35.9/35.7/35.8 | +| mul | 12x12 | 54.3 | 54.5 | -0.1 | 53.9/54.3/54.5 vs 54.2/54.6/54.5 | +| mul | 16x16 | 82.8 | 83.4 | -0.7 | 82.2/83.5/82.8 vs 82.9/83.4/83.9 | +| sqr | 4x4 | 21.5 | 23.2 | -1.7 | 21.4/21.5/21.6 vs 23.2/23.1/23.3 | +| sqr | 16x16 | 76.1 | 78.0 | -1.9 | 76.1/74.9/76.1 vs 78.3/78.0/77.3 | + +Verdict: on x64 the shortcut is worth 3.8-5.5 ns on mul 2x2..12x12 and 4-5 ns on sqr 4 and 16 (the 16x16 difference of 20 ns +is noisy: one of the three shortcut-off runs was 99.8 ns and two were 115 ns, the rest of the data show ~4 ns), clearly above +the 1 ns threshold. On M4 it saves 0.1-1.1 ns on mul 3..16 (in the noise of the runs; 2x2 is 0.5 ns slower with it) and 1.7-1.9 ns on sqr 4 and 16, so +it is at best marginal there. The x64 `fromchars` regression in section 3 appears only with the shortcut compiled in. The +trade-off is therefore: -4..5 ns on small x64 mul/sqr (13-20% of those rows) against +8-11% on decimal `fromchars` at +64-256 limbs-worth of digits on x64 with GCC 14. + +## 7. Inline-capacity study + +The same front-end code with the inline capacity of the integer type set to N = 64 (`big_int`), 128, 256 and 512 bits. +`sizeof`: 16, 24, 40 and 72 bytes. `auto` and `inplace` are medians of two runs (seeds 1 and 2, so divrem is the mean of +seeds); the vecsort row sorts and sums a `std::vector` of 100000 one-limb values of mixed sign (copy-assign + `std::sort` + +sum, ns per element; the builtin row is `std::vector`; the copy row is the copy-assign alone). + +### 7.1 x64 + +**auto ns** + +| op | shape | N=64 | N=128 | N=256 | N=512 | +|---|---|---:|---:|---:|---:| +| add | 1x1 | 6.7 | 8.3 | 8.6 | 8.7 | +| add | 4x4 | 15.4 | 17.6 | 10.6 | 10.6 | +| add | 16x16 | 21.0 | 24.2 | 23.5 | 23.5 | +| sub | 1x1 | 7.8 | 9.6 | 10.0 | 10.2 | +| sub | 4x4 | 16.6 | 19.5 | 12.1 | 12.1 | +| sub | 16x16 | 21.1 | 24.5 | 23.5 | 25.8 | +| shl | 1x13 | 12.6 | 7.2 | 8.2 | 8.3 | +| shl | 4x13 | 13.4 | 14.9 | 16.3 | 9.1 | +| shl | 16x13 | 17.1 | 18.2 | 20.5 | 19.5 | +| shr | 1x13 | 8.2 | 8.9 | 9.1 | 9.3 | +| shr | 4x13 | 16.0 | 16.8 | 11.9 | 11.9 | +| shr | 16x13 | 19.9 | 20.9 | 21.7 | 22.0 | +| mul | 1x1 | 16.5 | 10.5 | 10.8 | 10.8 | +| mul | 2x2 | 18.9 | 20.3 | 14.3 | 14.3 | +| mul | 4x4 | 22.3 | 24.0 | 24.3 | 17.8 | +| mul | 8x8 | 35.6 | 37.4 | 38.0 | 37.9 | +| mul | 16x16 | 88.5 | 90.4 | 91.9 | 91.3 | +| sqr | 4x4 | 22.1 | 23.8 | 24.4 | 17.4 | +| sqr | 16x16 | 67.2 | 68.0 | 69.3 | 70.2 | +| divrem | 2x1 | 35.4 | 34.5 | 36.7 | 36.6 | +| divrem | 8x4 | 91.9 | 94.9 | 89.1 | 80.2 | +| divrem | 32x16 | 339.6 | 344.6 | 343.7 | 342.3 | + +**inplace ns** + +| op | shape | N=64 | N=128 | N=256 | N=512 | +|---|---|---:|---:|---:|---:| +| add | 1x1 | 4.9 | 4.9 | 4.9 | 4.9 | +| add | 4x4 | 5.7 | 6.1 | 5.7 | 5.7 | +| add | 16x16 | 11.7 | 13.1 | 12.8 | 11.9 | +| sub | 1x1 | 4.7 | 4.7 | 4.6 | 4.6 | +| sub | 4x4 | 5.6 | 6.0 | 5.6 | 5.6 | +| sub | 16x16 | 11.1 | 11.1 | 11.2 | 11.0 | +| shl | 1x13 | 3.7 | 4.3 | 4.3 | 4.3 | +| shl | 4x13 | 4.6 | 4.8 | 4.7 | 5.2 | +| shl | 16x13 | 9.1 | 8.9 | 9.6 | 8.9 | +| shr | 1x13 | 3.3 | 3.4 | 3.5 | 3.4 | +| shr | 4x13 | 4.3 | 4.4 | 4.5 | 4.5 | +| shr | 16x13 | 8.7 | 8.5 | 8.5 | 9.0 | + +**vecsort, ns per element (100000 one-limb values: copy + sort + sum)** + +| row | N=64 | N=128 | N=256 | N=512 | +|---|---:|---:|---:|---:| +| auto | 86.13 | 92.31 | 98.59 | 103.44 | +| builtin | 39.44 | 39.39 | 39.41 | 39.33 | +| copy | 1.13 | 2.50 | 2.62 | 3.14 | + +### 7.2 M4 + +**auto ns** + +| op | shape | N=64 | N=128 | N=256 | N=512 | +|---|---|---:|---:|---:|---:| +| add | 1x1 | 7.5 | 8.3 | 9.2 | 10.1 | +| add | 4x4 | 14.1 | 14.2 | 9.3 | 10.0 | +| add | 16x16 | 17.0 | 16.3 | 16.6 | 16.4 | +| sub | 1x1 | 7.9 | 8.4 | 8.6 | 8.8 | +| sub | 4x4 | 14.4 | 14.0 | 9.2 | 9.8 | +| sub | 16x16 | 18.3 | 17.7 | 18.5 | 17.9 | +| shl | 1x13 | 11.9 | 6.6 | 7.3 | 6.9 | +| shl | 4x13 | 12.7 | 12.7 | 13.6 | 8.4 | +| shl | 16x13 | 15.5 | 15.5 | 17.0 | 20.2 | +| shr | 1x13 | 7.0 | 8.9 | 10.2 | 9.4 | +| shr | 4x13 | 13.9 | 14.0 | 10.2 | 9.8 | +| shr | 16x13 | 18.2 | 17.7 | 17.8 | 18.4 | +| mul | 1x1 | 14.5 | 9.1 | 9.3 | 9.2 | +| mul | 2x2 | 18.6 | 18.5 | 13.6 | 13.8 | +| mul | 4x4 | 21.6 | 21.6 | 21.8 | 15.0 | +| mul | 8x8 | 35.3 | 35.0 | 34.6 | 34.5 | +| mul | 16x16 | 82.8 | 82.8 | 82.5 | 82.8 | +| sqr | 4x4 | 22.8 | 23.2 | 21.2 | 15.4 | +| sqr | 16x16 | 75.6 | 74.2 | 73.9 | 74.5 | +| divrem | 2x1 | 24.6 | 23.2 | 23.6 | 23.8 | +| divrem | 8x4 | 75.0 | 75.2 | 74.7 | 72.6 | +| divrem | 32x16 | 429.7 | 430.0 | 431.3 | 432.8 | + +**inplace ns** + +| op | shape | N=64 | N=128 | N=256 | N=512 | +|---|---|---:|---:|---:|---:| +| add | 1x1 | 3.5 | 3.5 | 3.4 | 3.6 | +| add | 4x4 | 3.5 | 3.5 | 3.8 | 3.9 | +| add | 16x16 | 5.6 | 5.6 | 5.7 | 5.7 | +| sub | 1x1 | 3.5 | 3.6 | 3.7 | 3.7 | +| sub | 4x4 | 3.4 | 3.7 | 3.9 | 3.8 | +| sub | 16x16 | 5.2 | 5.3 | 5.3 | 5.3 | +| shl | 1x13 | 2.5 | 3.5 | 3.7 | 4.0 | +| shl | 4x13 | 3.8 | 3.8 | 4.2 | 4.5 | +| shl | 16x13 | 5.3 | 5.4 | 5.3 | 5.3 | +| shr | 1x13 | 3.3 | 3.4 | 3.4 | 3.3 | +| shr | 4x13 | 3.6 | 6.9 | 3.8 | 3.8 | +| shr | 16x13 | 5.2 | 5.2 | 5.3 | 5.3 | + +**vecsort, ns per element (100000 one-limb values: copy + sort + sum)** + +| row | N=64 | N=128 | N=256 | N=512 | +|---|---:|---:|---:|---:| +| auto | 87.87 | 94.78 | 96.50 | 98.30 | +| builtin | 13.21 | 13.38 | 13.18 | 13.27 | +| copy | 2.70 | 3.90 | 3.77 | 4.40 | + +Neutral summary of the trade-off (no default is recommended here): + +- **What a larger inline capacity removes.** Results that fit inline skip the allocator entirely: at 128 bits a 2-limb + product, a 1-limb sum or a 2x1 quotient no longer allocates, at 256 bits operands up to 3-4 limbs, at 512 bits up to ~8. + That is 4-11 ns per operation in the rows where the result fits (x64: add 4x4 15.4 ns at N=64 against 10.6 at N=256, + mul 2x2 18.9 against 14.3 at N=256, mul 1x1 16.5 against 10.5 at N=128, divrem 8x4 91.9 against 80.2 at N=512; M4: add + 4x4 14.1 against 9.3, mul 2x2 18.6 against 13.6, mul 1x1 14.5 against 9.1). +- **What it costs.** `sizeof` grows from 16 to 24, 40 and 72 bytes. Rows whose result does not fit inline are slightly + slower or unchanged: on x64 add 16x16 is 21.0 ns at N=64 and 23.5-24.2 at N=128-512, shl 16x13 17.1 against 18.2-20.5, mul + 16x16 88.5 against 90.4-91.9; on M4 the 16-limb rows are within 1 ns except shl 16x13 (15.5 at N=64, 20.2 at N=512). Some + single-limb rows are slower at larger N (x64 add 1x1 6.7 ns at N=64, 8.3-8.7 at N=128-512; M4 7.5 against 8.3-10.1). The + container workload (vecsort) pays for the bigger element: x64 + 86.1 -> 92.3 -> 98.6 -> 103.4 ns per element (+7%, +14%, +20% against N=64), M4 87.9 -> 94.8 -> 96.5 -> 98.3 ns (+8%, + +10%, +12%); the copy-assign alone goes 1.1 -> 2.5 -> 2.6 -> 3.1 ns on x64 and 2.7 -> 3.9 -> 3.8 -> 4.4 ns on M4. A + `std::int64_t` vector costs 39.4 ns (x64) and 13.2 ns (M4) per element for reference. +- **In-place operations** and divrem at 32x16 do not depend on N within ~1.5 ns. + +## 8. Caveats + +- **Noise modes at <= 16 limbs.** Kernel rows at tiny sizes flip between two stable modes from process to process with the + same data and binary (x64 baseline: `add kernel 16x16` 7.56 / 9.55 / 7.56 ns, `shl kernel 4x13` 3.38 / 4.65 / 3.45, + `shr kernel 16x13` 9.39 / 8.04 / 8.03, `sqr kernel 16x16` 56.2 / 61.2 / 58.5), probably buffer or code alignment. Differences + of 1-2 ns on kernel rows, and therefore on `auto - kernel` and `inplace - kernel` at <= 16 limbs, are not significant; + the `floor` and `inplace` rows are the steadier references. The M4 baseline mul 2x2 `auto` varied 26.6-36.3 ns across its + four runs (the new binary 18.2-19.1). +- **divrem seed dependence.** Different random operands change the division path: divrem 8x4 differs 11-26% between seeds + (kernel 39.7 vs 50.0 ns in the baseline). Small divrem rows are means of seeds 1 and 2; compare before and after only on + the same seeds. +- The shift `kernel` rows include the copy-in of the source, so `auto - kernel` and `auto - floor` for shifts at + >= 256 limbs are negative once `auto` is a single pass. +- The x64 numbers are GCC 14 with `-march=native`; the decimal `fromchars` regression (section 3) was seen only there. +- The 2-run study and the 3-run shortcut comparison are small samples: treat differences below ~1 ns as noise. + +## 9. Correctness matrix + +- M4 (appleclang): `appleclang-debug` workflow (MaxSan) 1264/1264, `appleclang-release` 1296/1296, + `appleclang-release-namespace` 1282/1282 (ctest counts include skipped benches). +- x64 box: `llvm-debug` (MaxSan) 1341/1341 and `llvm-release` (clang-23, `-march=native`) 1341/1341. GCC (g++-14, g++-13, + IFMA=OFF g++-14, and g++-14 debug without NDEBUG): every target builds except the two test targets + `front_end_add_sub` and `front_end_shift`, which fail `-Werror=padded` at + `tests/beman/big_int/front_end_reference.hpp:44` (`std::vector mag;` in struct `ref`). With + `-Wno-error=padded` both pass on gcc-14 release and debug (15 and 12 tests); all other GCC tests pass (1296/1298 with the + two targets not built). +- Docker linux/arm64 (GCC 16, `ctest -E float_construction`): `gcc-release` and `gcc-debug` 1225/1227 passed, the same two + `front_end_*` targets failing to build on `-Werror=padded`. +- 32-bit limbs (`llvm-release` with `-DBEMAN_BIG_INT_FORCED_LIMB_WIDTH=32`, x64): `inline_tail`, `span_primitives`, + `front_end_shift`, `dispatch_contract` and `alloc_count` compile and pass. `front_end_add_sub` + (`*.IntegerOperands`, 3 tests) and `muldiv_frontend` (`CompoundWithIntegers`, aborts on a division by zero reference) + fail at 32-bit limbs because the tests build the reference operand from a 64-bit `v` truncated to one 32-bit limb + (`front_end_add_sub.test.cpp:93`, `muldiv_frontend.test.cpp:395`); `Allocation.MoveAssignStealsHeapSrcEvenWhenDstLarger` + replaces the baseline's equally failing `MoveAssignReusesDstStorageWhenLarger` (it assumes 64-bit limbs). Every other + 32-bit failure (bitwise, increment_decrement, karatsuba, pmr, wide_ops fail to compile; CompoundSubtraction, BitShift, + Addition and IntegerAssignment cases) is in the cf1cf54 tree as well. +- GCC with 32-bit limbs: `basic_big_int.hpp:643` (`shift_max` narrowing; line 636 at cf1cf54), `base_conversion.hpp:144` + (`-Wpadded`) and `base_tables.hpp:66` (`-Wconversion`) are errors at cf1cf54 too. + +## 10. Reproducing + +``` +# harness binaries (M4 shown; x64: PATH=:$PATH, preset gcc-release, -DCMAKE_CXX_FLAGS=-march=native) +C="-DBEMAN_BIG_INT_BUILD_BENCHMARKS=ON -DBEMAN_BIG_INT_SHAPE_SWEEP_ONLY=ON -DBEMAN_BIG_INT_SWEEP_GMP=ON -DBEMAN_BIG_INT_SIMD_MUL=ON" +cmake --preset appleclang-release -B build/item1/mac-new64 $C -DBEMAN_BIG_INT_SWEEP_INLINE_BITS=64 # also 128, 256, 512 +cmake --build build/item1/mac-new64 --target beman.big_int.benchmarks.shape_sweep +# before binary: the same command on a checkout of cf1cf54 with this harness (floor/vecsort rows, inline-bits option) + +# before/after, interleaved (seeds 1 and 2, two repeats), x64 pinned with --pin "taskset -c 2" +tools/gap_sweep.sh out.csv --seed S --ops add,sub,shl,shr,mul,sqr,divrem,fromchars --bands small,medium +# large spot checks (3 rounds): shape_sweep add --rows auto,inplace,kernel,floor,gmp,gmpz --rounds 3 16384x16384; +# mul 2000x2000 and 16384x16384; divrem 4096x2048; tochars/fromchars 10000x10 +# study: tools/gap_sweep.sh out.csv --seed S --ops add,sub,shl,shr,mul,sqr,divrem --bands small +# tools/gap_sweep.sh out.csv --ops vecsort --bands medium +# tables: python3 -I tools/item1_tables.py item1 x64 (or: mac) [small medium spots shortcut study] +# allocation counts: cmake --build --target beman.big_int.tests.alloc_count; run the binary and read the +# "[alloc_count]" lines +``` + +The shortcut comparison builds a copy of the tree with `mul_header_basecase_enabled = false` in +`include/beman/big_int/detail/mul_impl.hpp` and otherwise identical flags. diff --git a/tests/beman/big_int/perf/tools/__pycache__/item1_tables.cpython-314.pyc b/tests/beman/big_int/perf/tools/__pycache__/item1_tables.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ba78bca0ce7040de4cfb8cc4cc3152f7f61db663 GIT binary patch literal 16506 zcmd6OX>b&0mSAROR;lhwr4xZl2S_C$2_0PKFcLz51wy1C#jP$$B_WVhrK}PL4Q(_% zvpa>co5DxCaKpM7yT`?}JyuWm?#kWnZTVW$)7?8&lr9o>9kJ_}Sbl5-Mvm#l5gWVj zeVKI$VR!G$L`*`x?|R?;zIT0}Dvbs$1>cSGPfr~vrl|jciTG!cBMYx6C~BNKL2>kM z$|r@ik0xn_PeDS)$B>Zqu@EYDD|e}UszQomawuO0#{yJyN`M+p1yIXn0Mv1XoH~aZ zqu#HN&4Ggi3)exE>tb!2RsD{u2Va+}o+Awie7@?WV1Zd%G0Ig8AW*_a# zpSCZlcTN zru&sRf4z~CP_5mNV|xs5h@v#q3ZTOh@^jSP$4=TDw5aQK^*KieeZ2!cz8-m^SVrmKhtpcP z4Y}h~4dtPaCCYg!z9^gME_zfk%5+f;SPMRnf>*#o{td(!o@tktMke*G$V(WywoeT&6l4Qlh_S&gRDlvB;rUGg} zQAjNZg2I0X0AmxgoEo4VtVoxPF>cRlkzU>AP>HPD;~EyVUY}F&d7mBdofMT`pD^Ho zz%w}D6P0~~Zl_OV28MkOrO0}mfI;_)bf3r$4h*|Q+T+FLU1f()JXmwk>k_;*Lr$Ns z+bs+_hkI+9-94j2u3?|I#@jtm)$JPYIa%X#c_H2H8gdTTbPx1*LE|+Zm(W+^bGrw< zH3L4^P;Hmb**)m;R(sAtPi|+gkO|#b;pYtl7^mjd+VRGF8iT+0a{deXfswnmEPwO7 zDf9A$ix-04IaA4PQ%T78_Jtc4CPwGVw%jh;GIijyBOf05?AS-g?wE7u&9>LHSF|td z=gh@Xb8)CXW-jwL-fP%6Sv1-B%hI2=`Wpk57k#gE1TDeZ>$aB1)5#P+8f(XDF@hfu7PE#&`YR0P*kV%c-xuxiHut)NjvHeyGhtXm6~9 z;NvXa_Enm+gQo&SAX;_-P7q8ldFYPGyn#v_9}mq_aMYfrsAr)}C^?oOa6ZAcmLlx< zA%VKf<+?jMZK(vd7xxAm zf{s~z=>kJ#m3_%jIRy_?l-@M{%mTDU^(1x$61e_2gN2iXY4TKif@MOk{P78fhO9Di zSfO44#Ze^`4;n)1UO+mH2?*PHhNFpG=p~GhJz?MQ6iC$Lm^z02lkXTCkHy)EM@d+7 zfxPGaoqTFPOHm4+5w8n7zCzmRW9oRj?L-HPr=$=hry_^qmF>7Ki@qe?#bfc-OQ@7q zjf<*55?Td~2uJ^TO$Xa1s(J^`2(F>DgM`zshu=aQfMVc&Gep0<19Q z#g ziz;&5y+SEu0X8d)4tqrg7=p+`iC0v(J)&aJDXKvbbm0LP zX|FUYq`Otp@s^jBfwdIYVK)4{&jSE?pfg?GaB)Lm`=u@8&7bQ`cTAb{1~c$*J^(!Y zRo<_d&(Qb}{rPjj;*jE6`Mt~)*L<)3BSwCYesjd@62-f$A3@ zDaa^RsDyULw1l=Qs(ZX=M5Rn;)eeoQ^11~d5FOh;=?!47S-KOuWQ&j z=+R7k#OujQi=YK*nVT)?V5gVe`I$l>7d5k#ZN3 zG7!xY+EN$!>I*ZQyY&tdBze$r3IvA05igdStJ$bRuRjcGlD4l}fepW!O2&;Kf zzQa5+)ZaT7*#FYuJ0>e|l7QvXkiRR~{FXJ;_~!DEDUy_FBIE4s6&denH-M9a2n3NC z8pYU%AlRWfQPU^5hk8yr1#g-JM6V8+|1j*AGt+5vW~EvO z_1okDEKJdQ!624(?n01#-(>QGGLAUWAcI3;#>T&@948q&;SjiPPp# z9t)=fXiZr!eMc5hlA$9Lps~Y-@nb-L(${%5-r}PC*O$)c!DH3=C-E|pdLf>Qhv_Zx z;J@npZoG`7z8_DWP{en5Q622%LL3Ww;nlo3o{oo5$5dxY?tAM$NQ|`gp{(ti;gncJ z6-w`Q4We?`_3XNaG5);W?XjP?drvw&E(o2YKDQl=)ARO$Vb7qm$0a35c9k96A8sL; zQ`0}>8H-n{vY&Pd!>&P6{B`m9s;a8^?{di|!Y5x?O#4!PVvL^SOki z4bl$^Amz;i@W02YdpY^RhEQ>+J6s&@i4@hva_S@Idcw*?7S}?|ke7$JgxmsXO0X27 zN?L-nnITgqGg}1_WW+8okW<(lFyKylH3}s8ljlab@J)rV2eO5|08*K-&<+`5-qKS6 zrZj^1DDHr#7201v7jFFP-2q?3ylt}fmun%AxN@qzNDLEgOEOI2ljUibS{m*Nidfsg znIsDx2A!f{qz+o>$KJ8QIJad4@R~hgv{2+jd|8sjM>}bmbbgSHV}538|EC8bAY=Yo zao+wl12iY>gi2p4?C0A+nQel&sPqWnIuo)XPWZYbJ1N>lC2^pMEK!4J%6d+ zwr$%a%G0OrmGB&3cf-$%zLBqi;LQ2K+R(|Ex#nm2lZ{i)#%lNZOYX6nh_-v0?IDrs zX|`rQd)aHJublqD5V&g;{+7Gh1s7ZVO##L46||w@OBI!!6YvH3m%DB_!%Uceb2y;5 zlbsV}g9EYb@|#8B?Gt&iicJCLP8KX|urrpm^2SIwGu;2?1wbTu>2*ogp;*?cn{>D& zd^T3TA)xR#J!EM^BmGcC8(L98HdyDawg4As4l=R$giP~7^+K6=>Ht-=c)%3CM*Bz1l9g%~bzd0Iv>TqP^k;su_4;b2Vg8oN_F&Gz$ zsGQ~Cp2{hGoVd{jCn9$nK&Rema2iuN%pV|f>yjcQ#le_x1*YUBL~rVyj+r{hjw;qr zqly-mqDGoeD_T_&TOL(-SacR~%z8XA@OhMA6sw3RhGP$!JY0&Ux~LZW!xwwj>lt3P z5y(ou3@HV#ziLUh)*sz&ig4K{Yv~CWDVH#WK@myjDwB116(|>Tpj^NnxQ%YT+raC2 z18)TN0bwAXIf7dVu;41IClL6`dDPB-FI@5_uMexL}sYoJcRK zm$12bEtJSKu&71tV{^*rd_Hv+{8AXNr(&cj7dl=iE8E7sN?ymA3>0UsLnnzPO@+84 zs}7nHpxi?EdDsEUVHG-I$%R7z(%f%A*^;C~XB3K%MRZH0J3*j4?Y^fT)Ob+baRnsV zM+@Mmq`auf%38a6^PqF6yVto@%t2$!n-t&if(uv!HSBR}%6W_awD(ryE$8o=BV0%1 zz`+@gkM8Is>;XDLPu^JT6ZM}IZN^UY9HJGW@Q6OATq#PMSGnNp8I_bxBV;)*gl96Rfidg~m4naVGTPL#M z(ew&lOrw|;P|ypbSVE79ik_2;g(zB|sWLPnJ>mWhwp(}+%D)Rg@4tYUac8gHIA zn8sV~8Z2Os>kWSAi_L+eK;x^WK{{A;osH<0hxl1t<-FcX?mudS`>!{IETP&T*+L^> z%a44K{MEDiDs&WCK@2Lj5pCx*dnh5RQ8=TNmc+AW4TxuJW}qRM{c_=rqR{qm_M6rI zraRDYPhj1pHb4D&-mkA>i@0ZljSBdHS&SHOOx)PDX3&k!3LT_UpkNE*pz1uR+Q|ZNx)iT&%m8k z_)LaVB{YeQV|b#-2U1k-6XbI;SDnn|Ghl!I53Gi2@tF9uyM7p<`XDpPkktbYM=n?X zjAvjCKmwCB(0J7F?m@w&UD>sx3wY7TtEv++?+<8KOWI9Hcv<2vl6|ef;*P=ENMAdw z;^Ggq3{8CA--@Y?V+y}XSvL)@N|$axZ(7Jpn=wjp$V+?oK=5>&9we@o*GpmN2dVlA zXTUPfxYTt9XMzhr&Epq<(5m?fH7rm=yJQV(nyml7(%x~Isj^;{`lx@|PTd-b?B{;xiyQ<~ysnH_A0pLms98;M%)^bb$+ZM?gUxF2XcOq9R8XC;VbxY zCUnhXYlQ~qLOFoM%_dmpBNmP_Q1ZPdI1$LbCM{pkDukB+y)EuZKn6tQy=0q9Zf$b2 zDK3joGiBl8m$h#}HL`N##xtkpW>aV+*bywdru}i#qXia9zh}16;CMabwg1xxExd}O ztU&Ms>=@NS`2tzGgnbP%$dFLPkRfg1qujw;`={!sGCnvJ;|@L&f>1;>7`UM(K9Bivl54v5~J7)bV8(-T;JG;OG4raA|Pb=nUh{cMW#9(5m0~LFum?KX-i6 z^x4i2cYe0#!#zN~5&lHvL|5cH&PZ2xq}vxcFdAz<6MO2}>H4!V^SNmK*|77K;@8Tq zl+9U-qt@b3ZOpn7E*LBhDDo>K=5zO~dBK%0SNqvZ8K}V&;Z2t{*c)2^?}lR5tyhPF zmI=$dzKJt8pL?w~P?xcj6lTC zM2+h|H(B1uyrZ|>vn-pl6yLTKhw5UMRqtr$$~WFF$9uc-t^OuiEwTh^U$q5PcykwQ zyj~j22JeHUp{YXPL~BgW)JT89?zdfVTJOp^mbQ(U1PSb?c)A zHD#=Rbl14vy8?FaLw&{0T-8T;rk%^xA62OUeq3qTS*-pf$FQ?JT|olxnxr7Lfe0O^ zxB`y?o)?191R*?yDhW6Nlu7@8^4-%v>&-aLvmiPY-=rv!n{gF~P6ZfpFK}&mVF{y$ z*DXt^Mc<-GB@`oQO8$6NT)-}M%bj#9q)US(aTChcB1xk9mYeZJz0L-rq5zyR4=^$!I#CH5oWGSDj+RDJ7qGaOie&X@GjT1*FvP1d9MLp zIxVUdUyVgI`$5%9u8xIQ!_H`U4L~ce#duxD6ZQk%W~YuS-hS%pJ!wB$|5BRu4!RXo zS{!rA7;N#D()KOu38TpVXQ7Im|6i&Aj-w|W=N+=^38Um+l-uNf6SqO*hZq)c!QoN; zYvm?D`J7DoN*HCru;G)O9qyfMW9GkFXi;{n}L9GW-9&yegO&EK1K422i@+U;^A zB>;2D6sPKV2+sj~9;1B=;f$I(<_Xlk?4NMvZpbT{|BdE}(PIDyW#Rp8Fnm$f<@JsB zo*UC7j1YK}(aAW%Aj~=u|Xlf_!Np^1d?vP633zdkfxj8gp7}|1kG=v zn_DYy^oA@!_SKDV_DXtr%K^#i*$F6VLqbcU9)1h>mM5{WW?a~$9`x9wROpE;a@r7E zp#|Z|L;MtqlMA_i&xgLLq7M|4wZBqMDnItg?>KYw>9O5F8ZyPKMq>|NW7=JVE_}gn zFRxvLAJ}@Xs=Pc`Y?qhkI@Gbik10?b{1B8^yx4qvm z;e5v$ZVZpSmmALgMf}BW-ZJ=04gnYhb$=WI1#;{@1wDZA2W*xSx&grJUW|(w-J=78 zK6u8+;yyVnPc{ib6QTrS7sBCAF%Cs$5dTP|=LBBlZ;3(QDO!FZEwOPavTZMOQA_bfTr*f%t6_gpJ}qwH$gTz*9~zam^4%deWt zuaD-}Pqf7HH%&Iq?gY#@IA0O z17Kd(g-Sy`5o<;G;Cn}I9*H9Rh^^lftJ*VT-E+$~W9^vLANWc`EiZ#VhcTCYWlg;r z@K*#zUmLqJ7RAFDD_S4RSwEv)KUq4X-8#)a4FLYDkkxk!;RXSru-P8F! z3ve^;qVMGQ1onT$P?=eaoB?yzN|<=KC1$OkXq>UGo3n0?S~pL2#H@`|MKjjsDQC>G z3u-@LD2?#}g>8Ld&Iu}CHu@Epl(3mbGnl^SN_ahMviRA%mP{a)!lLV=Z=Ab&F6@}# zC-+Y=5l8b>_jKXzY4bDD!rfPVfsvOj5b-xg&Cks1&6is*w!YnXm3`-_xysGAD>qN> zk5xWBtKS9=39Ahp5*lMb5vUKW40!!RLDw6nuAYh_4~Ug-i>=r;W85~?Fk{>~tKPMs zgMmDHm`B+f=|>N(IMzoCddkvDdx7y#pEAqaa@2p9(U{#>{mo(D#A6P&XC#QCtZhNpU=v z!Y2S6N_ep|g((COe-GmXd`L3xgU^l0o61`)CBjGzr|t#5Qj82fmt}6x znE;1m+>p0yWgHTh z^X-`b_W)pyBpykLM=`DxehGo_pAfu=03Dg+%s2`}2L7%fR^GA}S>diy$-qAtVR^cBYkA|Q3d4S*or0E44 zMeFWT@LzM6vfQP#|CK6vs8Z90huJFH^w6rMYaiw->HLRgmd^jmNYnLSsTsQVfe|FY zZQa^=RuhM1Brd_75cjtPcENq~JgdKLET3mhfwJI+h^6#_MWa!SD<5Q&2DTvLuE1bK zS3;^+r@#XwUPBr<0u9`@)InvfVqEnwHU<~HlOU({{y!EFy#OM literal 0 HcmV?d00001 diff --git a/tests/beman/big_int/perf/tools/item1_tables.py b/tests/beman/big_int/perf/tools/item1_tables.py new file mode 100644 index 00000000..ce75749c --- /dev/null +++ b/tests/beman/big_int/perf/tools/item1_tables.py @@ -0,0 +1,228 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# SPDX-License-Identifier: BSL-1.0 +# item1_tables.py [section ...] > tables.md +# Tables for item1_frontend_results.md from the CSVs written by the item 1 benchmark driver +# (__seed.csv, __spot_seed.csv, __shortcut_run.csv, +# _study_run.csv, _study_vecsort_run.csv). Run with python3 -I. +# Aggregation: median across runs; divrem shapes of up to 32 limbs use the mean over seeds (the operands change the +# division path), each seed first reduced to the median of its repeats. +import csv +import glob +import os +import statistics +import sys +from collections import defaultdict + + +def load(path): + d = {} + with open(path) as f: + for line in f: + if line.startswith("#") or line.startswith("op,") or not line.strip(): + continue + p = line.strip().split(",") + d[(p[0], int(p[2]), int(p[3]), p[1])] = float(p[6]) + return d + + +def collect(files): + """files: list of (seed, path). Returns {key: [(seed, value)]}.""" + out = defaultdict(list) + for seed, path in files: + for k, v in load(path).items(): + out[k].append((seed, v)) + return out + + +def agg(runs, key): + vals = runs.get(key) + if not vals: + return None + op, la = key[0], key[1] + if op == "divrem" and la <= 32: + per_seed = defaultdict(list) + for s, v in vals: + per_seed[s].append(v) + return statistics.mean(statistics.median(v) for v in per_seed.values()) + return statistics.median(v for _, v in vals) + + +def sweep_runs(d, prefix, variant): + files = [] + for p in sorted(glob.glob(os.path.join(d, f"{prefix}_{variant}_seed*.csv"))): + tag = os.path.basename(p).split("_seed")[1].split(".")[0] + files.append((tag[0], p)) + return collect(files) + + +def spot_runs(d, prefix, variant): + files = [] + for p in sorted(glob.glob(os.path.join(d, f"{prefix}_{variant}_spot_seed*.csv"))): + files.append((os.path.basename(p).split("_seed")[1].split(".")[0], p)) + return collect(files) + + +def f1(x, digits=1): + return "-" if x is None else f"{x:.{digits}f}" + + +def arrow(a, b, digits=1): + if a is None and b is None: + return "-" + return f"{f1(a, digits)} -> {f1(b, digits)}" + + +SMALL = { + "add": [(1, 1), (2, 2), (4, 4), (8, 8), (16, 16)], + "sub": [(1, 1), (2, 2), (4, 4), (8, 8), (16, 16)], + "shl": [(1, 13), (4, 13), (16, 13)], + "shr": [(1, 13), (4, 13), (16, 13)], + "mul": [(2, 2), (3, 3), (4, 4), (6, 6), (8, 8), (12, 12), (16, 16)], + "sqr": [(4, 4), (16, 16)], + "divrem": [(2, 1), (8, 4), (32, 16)], + "fromchars": [(4, 10), (16, 10)], +} +MEDIUM = { + "add": [(64, 64), (256, 256), (1024, 1024), (2000, 2000)], + "sub": [(64, 64), (1024, 1024)], + "shl": [(256, 13), (2000, 13), (2000, 77)], + "shr": [(256, 13), (2000, 13), (2000, 77)], + "mul": [(32, 32), (64, 64), (256, 256), (1000, 1000), (2000, 2000), (2000, 100)], + "sqr": [(64, 64), (512, 512), (2000, 2000)], + "divrem": [(128, 64), (512, 256), (2000, 1000), (4000, 2000), (2000, 100), (65536, 1)], + "fromchars": [(64, 10), (256, 10), (2000, 10)], +} + + +def before_after(d, prefix, table): + base, new = sweep_runs(d, prefix, "base64"), sweep_runs(d, prefix, "new64") + print("| op | shape | auto ns | inplace ns | auto - floor ns | auto/gmpz | auto - kernel ns |") + print("|---|---|---:|---:|---:|---:|---:|") + for op, shapes in table.items(): + for la, lb in shapes: + def g(runs, row): + return agg(runs, (op, la, lb, row)) + + ab, an = g(base, "auto"), g(new, "auto") + ib, i_n = g(base, "inplace"), g(new, "inplace") + fb, fn = g(base, "floor"), g(new, "floor") + zb, zn = g(base, "gmpz"), g(new, "gmpz") + kb, kn = g(base, "kernel"), g(new, "kernel") + + def sub(a, b): + return None if a is None or b is None else a - b + + def rat(a, b): + return None if a is None or b is None or b == 0 else a / b + + print( + f"| {op} | {la}x{lb} | {arrow(ab, an)} | {arrow(ib, i_n)} | {arrow(sub(ab, fb), sub(an, fn))} | " + f"{arrow(rat(ab, zb), rat(an, zn), 2)} | {arrow(sub(ab, kb), sub(an, kn))} |" + ) + + +def spots(d, prefix): + base, new = spot_runs(d, prefix, "base64"), spot_runs(d, prefix, "new64") + keys = sorted({k for k in list(base) + list(new)}, key=lambda k: (k[0], k[1], k[3])) + shapes = [] + for k in keys: + if (k[0], k[1], k[2]) not in shapes: + shapes.append((k[0], k[1], k[2])) + print("| op | shape | auto ns | kernel ns | gmpz ns | auto/gmpz | change in auto |") + print("|---|---|---:|---:|---:|---:|---:|") + for op, la, lb in shapes: + def g(runs, row): + return agg(runs, (op, la, lb, row)) + + ab, an = g(base, "auto"), g(new, "auto") + z = g(new, "gmpz") + ch = None if not ab or not an else (an - ab) / ab * 100 + print( + f"| {op} | {la}x{lb} | {arrow(ab, an, 0)} | {arrow(g(base, 'kernel'), g(new, 'kernel'), 0)} | " + f"{f1(z, 0)} | {arrow(None if not z else ab / z, None if not z else an / z, 2)} | " + f"{'-' if ch is None else f'{ch:+.1f}%'} |" + ) + + +def shortcut(d, prefix): + rows = {} + for v in ("new64", "nosc64"): + files = [(os.path.basename(p), p) for p in sorted(glob.glob(os.path.join(d, f"{prefix}_{v}_shortcut_run*.csv")))] + rows[v] = collect(files) + keys = sorted({k for k in rows["new64"] if k[3] == "auto"}, key=lambda k: (k[0], k[1])) + print("| op | shape | shortcut on (new64) ns | off ns | on - off ns | runs on / off |") + print("|---|---|---:|---:|---:|---|") + for k in keys: + on = [v for _, v in rows["new64"][k]] + off = [v for _, v in rows["nosc64"].get(k, [])] + if not on or not off: + continue + mo, mf = statistics.median(on), statistics.median(off) + print( + f"| {k[0]} | {k[1]}x{k[2]} | {mo:.1f} | {mf:.1f} | {mo - mf:+.1f} | " + f"{'/'.join(f'{x:.1f}' for x in on)} vs {'/'.join(f'{x:.1f}' for x in off)} |" + ) + + +STUDY_ROWS = [ + ("add", (1, 1)), ("add", (4, 4)), ("add", (16, 16)), + ("sub", (1, 1)), ("sub", (4, 4)), ("sub", (16, 16)), + ("shl", (1, 13)), ("shl", (4, 13)), ("shl", (16, 13)), + ("shr", (1, 13)), ("shr", (4, 13)), ("shr", (16, 13)), + ("mul", (1, 1)), ("mul", (2, 2)), ("mul", (4, 4)), ("mul", (8, 8)), ("mul", (16, 16)), + ("sqr", (4, 4)), ("sqr", (16, 16)), + ("divrem", (2, 1)), ("divrem", (8, 4)), ("divrem", (32, 16)), +] # fmt: skip + + +def study(d, prefix): + ns = (64, 128, 256, 512) + runs = {} + for n in ns: + files = [] + for p in sorted(glob.glob(os.path.join(d, f"{prefix}_study{n}_run*.csv"))): + if "vecsort" in p: + continue + files.append((os.path.basename(p).split("_run")[1].split(".")[0], p)) + runs[n] = collect(files) + for row in ("auto", "inplace"): + print(f"\n**{row} ns**\n") + print("| op | shape | " + " | ".join(f"N={n}" for n in ns) + " |") + print("|---|---|" + "---:|" * len(ns)) + for op, (la, lb) in STUDY_ROWS: + vals = [agg(runs[n], (op, la, lb, row)) for n in ns] + if all(v is None for v in vals): + continue + print(f"| {op} | {la}x{lb} | " + " | ".join(f1(v) for v in vals) + " |") + print("\n**vecsort, ns per element (100000 one-limb values: copy + sort + sum)**\n") + print("| row | " + " | ".join(f"N={n}" for n in ns) + " |") + print("|---|" + "---:|" * len(ns)) + vs = {} + for n in ns: + files = [(os.path.basename(p).split("_run")[1].split(".")[0], p) + for p in sorted(glob.glob(os.path.join(d, f"{prefix}_study{n}_vecsort_run*.csv")))] + vs[n] = collect(files) + for row in ("auto", "builtin", "copy"): + vals = [] + for n in ns: + v = [x for _, x in vs[n].get(("vecsort", 100000, 1, row), [])] + vals.append(None if not v else statistics.median(v)) + print(f"| {row} | " + " | ".join(f1(v, 2) for v in vals) + " |") + + +if __name__ == "__main__": + d, prefix = sys.argv[1], sys.argv[2] + sections = sys.argv[3:] or ["small", "medium", "spots", "shortcut", "study"] + for s in sections: + print(f"\n### {s}\n") + if s == "small": + before_after(d, prefix, SMALL) + elif s == "medium": + before_after(d, prefix, MEDIUM) + elif s == "spots": + spots(d, prefix) + elif s == "shortcut": + shortcut(d, prefix) + elif s == "study": + study(d, prefix) From 9b3b9bb6eccb4a1b596f83e80863b9120995756a Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 13:22:20 -0400 Subject: [PATCH 31/36] Add the item 1 benchmark driver to the tools --- tests/beman/big_int/perf/tools/README.md | 1 + tests/beman/big_int/perf/tools/item1_bench.sh | 66 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100755 tests/beman/big_int/perf/tools/item1_bench.sh diff --git a/tests/beman/big_int/perf/tools/README.md b/tests/beman/big_int/perf/tools/README.md index 29bdea4c..49695e86 100644 --- a/tests/beman/big_int/perf/tools/README.md +++ b/tests/beman/big_int/perf/tools/README.md @@ -17,6 +17,7 @@ of the CMake build or the test suite. | `summarize.py` | `summarize.py a.csv [b.csv] [probe.csv] [--ghz G] > summary.md`: per op and band ratio tables (auto/gmpz, kernel/gmp, inplace/gmpz, auto-kernel ns), top gaps, probe table; with two sweep CSVs also the seed spread. Tables carry the floor, `auto - floor` and `inplace - kernel` ns columns when those rows exist. Run with `python3 -I`. | | `compare.py` | `compare.py [heat\|tables]`: the report's cross-configuration tables (comma-separated CSV lists average seeds). | | `probe_tables.py` | `probe_tables.py [n] [opt]`: the report's probe table (cycles/limb per compiler, M4 ns/limb x 4.47). | +| `item1_bench.sh` / `item1_tables.py` | The item 1 before/after driver (`item1_bench.sh [pin]`, needs binaries `shape_sweep.{base64,new64,new128,new256,new512,nosc64}`) and the tables for [`../item1_frontend_results.md`](../item1_frontend_results.md) (`python3 -I item1_tables.py [small medium spots shortcut study]`). | | `bucket_tables.py` | `bucket_tables.py `: compact profile table plus the "time saved if linear helpers ran at GMP speed" estimate. | | `prof.sh` | `prof.sh [filter]` (Linux x86-64, `perf`, `kernel.perf_event_paranoid<=1`): LBR profiles and flame graphs for the report's 12 shapes. Env: `FLAMEGRAPH_DIR` (default `$HOME/FlameGraph`), `PIN`, `MINW`, `LABEL`, `SEED`. | | `classify.py` | `classify.py > buckets.md`: buckets the folded stacks from `prof.sh` by the frame nearest the leaf and scales by the median. | diff --git a/tests/beman/big_int/perf/tools/item1_bench.sh b/tests/beman/big_int/perf/tools/item1_bench.sh new file mode 100755 index 00000000..fb6ecd13 --- /dev/null +++ b/tests/beman/big_int/perf/tools/item1_bench.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# SPDX-License-Identifier: BSL-1.0 +# bench_all.sh [pin command] +# Runs the item 1 before/after sweeps, spot checks, shortcut A/B and inline-capacity study. Never run while building. +BIN=$1; OUT=$2; TOOLS=$3; P=$4; PIN=${5:-} +mkdir -p $OUT +GS=$TOOLS/gap_sweep.sh +OPS=add,sub,shl,shr,mul,sqr,divrem,fromchars +log() { echo "[bench] $(date +%H:%M:%S) $*" >&2; } + +log selftest +for b in new64 new128 new256 new512 nosc64; do + if [ -n "$PIN" ]; then :; fi + $TOOLS/selftest.sh $BIN/shape_sweep.$b 2>&1 | grep -vc "^selftest: ok" | sed "s/^/selftest-failures $b: /" +done + +# B. before/after, interleaved +for seed in 1 2; do for rep in a b; do + for v in base64 new64; do + log "sweep $v seed$seed$rep" + $GS $BIN/shape_sweep.$v $OUT/${P}_${v}_seed${seed}${rep}.csv --seed $seed --ops $OPS --bands small,medium ${PIN:+--pin "$PIN"} 2>/dev/null + done +done; done + +# C. spot checks +spot() { # ; appends + bin=$1; csv=$2; seed=$3 + rm -f $csv; first=1 + one() { op=$1; rows=$2; shape=$3 + $PIN $bin $op --rows $rows --rounds 3 --seed $seed $shape > $OUT/.spot.tmp || echo "spot failed $op $shape" >&2 + if [ $first = 1 ]; then grep -m1 '^#const' $OUT/.spot.tmp >> $csv; grep -m1 '^op,' $OUT/.spot.tmp >> $csv; first=0; fi + grep -v '^#' $OUT/.spot.tmp | grep -v '^op,' >> $csv + } + one add auto,inplace,kernel,floor,gmp,gmpz 16384x16384 + one mul auto,kernel,floor,gmp,gmpz 2000x2000 + one mul auto,kernel,floor,gmp,gmpz 16384x16384 + one divrem auto,kernel,floor,gmp,gmpz 4096x2048 + one tochars auto,kernel,gmp,gmpz 10000x10 + one fromchars auto,kernel,gmp,gmpz 10000x10 +} +for seed in 1 2; do + for v in base64 new64; do log "spot $v seed$seed"; spot $BIN/shape_sweep.$v $OUT/${P}_${v}_spot_seed${seed}.csv $seed; done +done + +# D. basecase shortcut A/B: new64 (shortcut on) vs nosc64 (off), interleaved +for rep in 1 2 3; do + for v in new64 nosc64; do + log "shortcut $v run$rep" + f=$OUT/${P}_${v}_shortcut_run${rep}.csv; rm -f $f + { $PIN $BIN/shape_sweep.$v mul --rows auto,kernel --rounds 9 --seed 1 2x2 3x3 4x4 6x6 8x8 12x12 16x16 + $PIN $BIN/shape_sweep.$v sqr --rows auto,kernel --rounds 9 --seed 1 4 16; } | grep -v '^# \|^op,' > $f.tmp + { echo "# shortcut A/B $v run$rep"; echo "op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual"; grep -v '^#const' $f.tmp; } > $f; rm -f $f.tmp + done +done + +# E. inline-capacity study (small band on the new code) and vecsort, interleaved over N +for rep in 1 2; do + for b in 64 128 256 512; do + log "study N=$b run$rep" + $GS $BIN/shape_sweep.new$b $OUT/${P}_study${b}_run${rep}.csv --seed $rep --ops add,sub,shl,shr,mul,sqr,divrem --bands small ${PIN:+--pin "$PIN"} 2>/dev/null + $GS $BIN/shape_sweep.new$b $OUT/${P}_study${b}_vecsort_run${rep}.csv --seed $rep --ops vecsort --bands medium ${PIN:+--pin "$PIN"} 2>/dev/null + done +done +rm -f $OUT/.spot.tmp +echo BENCH-ALLDONE >&2 From ea9e713be78ef1816f38c21e3f07d7300c1a9342 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 14:20:37 -0400 Subject: [PATCH 32/36] Update item 1 results for d689f75: re-measured before/after, fromchars diagnosis and fix, in-place shift A/B, correctness matrix; add regression and shift A/B scripts --- tests/beman/big_int/perf/gmp_gap_analysis.md | 6 +- .../perf/item1/mac_vshift_base64_run1.csv | 43 ++ .../perf/item1/mac_vshift_base64_run2.csv | 43 ++ .../perf/item1/mac_vshift_base64_run3.csv | 43 ++ .../perf/item1/mac_vshift_new64_run1.csv | 43 ++ .../perf/item1/mac_vshift_new64_run2.csv | 43 ++ .../perf/item1/mac_vshift_new64_run3.csv | 43 ++ .../big_int/perf/item1/mac_vshift_v1_run1.csv | 43 ++ .../big_int/perf/item1/mac_vshift_v1_run2.csv | 43 ++ .../big_int/perf/item1/mac_vshift_v1_run3.csv | 43 ++ .../big_int/perf/item1/mac_vshift_v2_run1.csv | 43 ++ .../big_int/perf/item1/mac_vshift_v2_run2.csv | 43 ++ .../big_int/perf/item1/mac_vshift_v2_run3.csv | 43 ++ .../big_int/perf/item1/mac_vshift_v3_run1.csv | 43 ++ .../big_int/perf/item1/mac_vshift_v3_run2.csv | 43 ++ .../big_int/perf/item1/mac_vshift_v3_run3.csv | 43 ++ .../perf/item1/macr3_base64_seed1a.csv | 400 +++++++++++++ .../perf/item1/macr3_base64_seed1b.csv | 400 +++++++++++++ .../perf/item1/macr3_base64_seed2a.csv | 400 +++++++++++++ .../perf/item1/macr3_base64_seed2b.csv | 400 +++++++++++++ .../perf/item1/macr3_base64_spot_seed1.csv | 31 + .../perf/item1/macr3_base64_spot_seed2.csv | 31 + .../big_int/perf/item1/macr3_new64_seed1a.csv | 400 +++++++++++++ .../big_int/perf/item1/macr3_new64_seed1b.csv | 400 +++++++++++++ .../big_int/perf/item1/macr3_new64_seed2a.csv | 400 +++++++++++++ .../big_int/perf/item1/macr3_new64_seed2b.csv | 400 +++++++++++++ .../perf/item1/macr3_new64_spot_seed1.csv | 31 + .../perf/item1/macr3_new64_spot_seed2.csv | 31 + .../perf/item1/macr3_new64a_seed1a.csv | 400 +++++++++++++ .../perf/item1/macr3_new64a_seed1b.csv | 400 +++++++++++++ .../perf/item1/macr3_new64a_seed2a.csv | 400 +++++++++++++ .../perf/item1/macr3_new64a_seed2b.csv | 400 +++++++++++++ .../perf/item1/x64_vshift_base64_run1.csv | 43 ++ .../perf/item1/x64_vshift_base64_run2.csv | 43 ++ .../perf/item1/x64_vshift_base64_run3.csv | 43 ++ .../perf/item1/x64_vshift_new64_run1.csv | 43 ++ .../perf/item1/x64_vshift_new64_run2.csv | 43 ++ .../perf/item1/x64_vshift_new64_run3.csv | 43 ++ .../big_int/perf/item1/x64_vshift_v1_run1.csv | 43 ++ .../big_int/perf/item1/x64_vshift_v1_run2.csv | 43 ++ .../big_int/perf/item1/x64_vshift_v1_run3.csv | 43 ++ .../big_int/perf/item1/x64_vshift_v2_run1.csv | 43 ++ .../big_int/perf/item1/x64_vshift_v2_run2.csv | 43 ++ .../big_int/perf/item1/x64_vshift_v2_run3.csv | 43 ++ .../big_int/perf/item1/x64_vshift_v3_run1.csv | 43 ++ .../big_int/perf/item1/x64_vshift_v3_run2.csv | 43 ++ .../big_int/perf/item1/x64_vshift_v3_run3.csv | 43 ++ .../perf/item1/x64r3_base64_seed1a.csv | 400 +++++++++++++ .../perf/item1/x64r3_base64_seed1b.csv | 400 +++++++++++++ .../perf/item1/x64r3_base64_seed2a.csv | 400 +++++++++++++ .../perf/item1/x64r3_base64_seed2b.csv | 400 +++++++++++++ .../perf/item1/x64r3_base64_spot_seed1.csv | 31 + .../perf/item1/x64r3_base64_spot_seed2.csv | 31 + .../big_int/perf/item1/x64r3_new64_seed1a.csv | 400 +++++++++++++ .../big_int/perf/item1/x64r3_new64_seed1b.csv | 400 +++++++++++++ .../big_int/perf/item1/x64r3_new64_seed2a.csv | 400 +++++++++++++ .../big_int/perf/item1/x64r3_new64_seed2b.csv | 400 +++++++++++++ .../perf/item1/x64r3_new64_spot_seed1.csv | 31 + .../perf/item1/x64r3_new64_spot_seed2.csv | 31 + .../perf/item1/x64r3_new64a_seed1a.csv | 400 +++++++++++++ .../perf/item1/x64r3_new64a_seed1b.csv | 400 +++++++++++++ .../perf/item1/x64r3_new64a_seed2a.csv | 400 +++++++++++++ .../perf/item1/x64r3_new64a_seed2b.csv | 400 +++++++++++++ .../big_int/perf/item1_frontend_results.md | 553 +++++++++++------- .../__pycache__/item1_tables.cpython-314.pyc | Bin 16506 -> 16547 bytes .../beman/big_int/perf/tools/item1_regress.py | 38 ++ .../beman/big_int/perf/tools/item1_tables.py | 2 + .../beman/big_int/perf/tools/item1_vshift.py | 54 ++ 68 files changed, 11592 insertions(+), 199 deletions(-) create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_base64_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_base64_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_base64_run3.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_new64_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_new64_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_new64_run3.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v1_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v1_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v1_run3.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v2_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v2_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v2_run3.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v3_run1.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v3_run2.csv create mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v3_run3.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_base64_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_base64_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_base64_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_base64_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_base64_spot_seed1.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_base64_spot_seed2.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_new64_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_new64_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_new64_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_new64_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_new64_spot_seed1.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_new64_spot_seed2.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_new64a_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_new64a_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_new64a_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/macr3_new64a_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_base64_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_base64_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_base64_run3.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_new64_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_new64_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_new64_run3.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v1_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v1_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v1_run3.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v2_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v2_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v2_run3.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v3_run1.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v3_run2.csv create mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v3_run3.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_base64_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_base64_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_base64_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_base64_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_base64_spot_seed1.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_base64_spot_seed2.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_new64_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_new64_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_new64_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_new64_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_new64_spot_seed1.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_new64_spot_seed2.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_new64a_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_new64a_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_new64a_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r3_new64a_seed2b.csv create mode 100644 tests/beman/big_int/perf/tools/item1_regress.py create mode 100644 tests/beman/big_int/perf/tools/item1_vshift.py diff --git a/tests/beman/big_int/perf/gmp_gap_analysis.md b/tests/beman/big_int/perf/gmp_gap_analysis.md index ec41af50..ff498a01 100644 --- a/tests/beman/big_int/perf/gmp_gap_analysis.md +++ b/tests/beman/big_int/perf/gmp_gap_analysis.md @@ -528,9 +528,9 @@ Decision criteria applied (from the plan): | 10 | Conversions: after #2 and #4, recheck; power-chain reuse looks minor at 10000 limbs (4.5-7%) but is untested above 100k limbs | tochars/fromchars 262144/131072 2.8x | speculative | M | both | Status of item 1: implemented on branch `opt_1`; results, targets met and not met, and the inline-capacity study are in -[`item1_frontend_results.md`](item1_frontend_results.md) (small `auto` is now 2-5 ns above the allocation floor for mul/sqr, -0-5 ns for shifts and 2-6 ns for add/sub; x64 add 1000 840 -> 800 ns, below the 650 ns goal; x64 `+=`/`-=` at >= 64 limbs and decimal -`fromchars` regress). +[`item1_frontend_results.md`](item1_frontend_results.md) (small `auto` is now 2-5 ns above the allocation floor for +mul/sqr, 0-6 ns for shifts and 3-6 ns for add/sub; x64 add 1000 840 -> 600 ns, meeting the 650 ns goal; open item: the +in-place shift path is 6-9% slower than the baseline on x64 at >= 256 limbs and 22-24% on M4). Not recommended: asm for cmp (already faster than GMP on x64, parity on M4); asm for mul 32-512 limbs on x64 (IFMA beats GMP by 1.1-1.8x). diff --git a/tests/beman/big_int/perf/item1/mac_vshift_base64_run1.csv b/tests/beman/big_int/perf/item1/mac_vshift_base64_run1.csv new file mode 100644 index 00000000..f8ebfde0 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_base64_run1.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1198927,9,16.69,16.63,20.23 +shl,inplace,1,13,4377953,9,2.30,2.30,20.14 +shl,kernel,1,13,8996322,9,2.23,2.18,20.05 +shl,auto,4,13,1028101,9,19.92,19.67,20.45 +shl,inplace,4,13,2718001,9,3.58,3.57,19.66 +shl,kernel,4,13,5091345,9,3.72,3.68,18.96 +shl,auto,16,13,929399,9,22.01,21.24,20.33 +shl,inplace,16,13,1705848,9,5.80,5.77,19.77 +shl,kernel,16,13,4489483,9,4.45,4.45,20.01 +shl,auto,256,13,233774,9,85.88,85.13,20.14 +shl,inplace,256,13,274983,9,36.24,36.18,19.99 +shl,kernel,256,13,409024,9,49.15,48.81,20.24 +shl,auto,2000,13,34882,9,599.20,580.68,19.38 +shl,inplace,2000,13,35279,9,284.12,282.32,20.07 +shl,kernel,2000,13,52348,9,383.39,375.73,20.02 +shl,auto,2000,77,25846,9,806.23,747.65,20.81 +shl,inplace,2000,77,23640,9,424.79,421.14,20.12 +shl,kernel,2000,77,37300,9,531.22,526.51,19.80 +shl,auto,131072,13,456,3,44369.06,44281.16,20.24 +shl,inplace,131072,13,507,3,19794.38,19782.95,20.07 +shl,kernel,131072,13,681,3,29244.74,29091.65,19.90 +shr,auto,1,13,2152136,9,9.18,9.01,19.79 +shr,inplace,1,13,4237299,9,2.36,2.35,20.14 +shr,kernel,1,13,8963766,9,2.23,2.23,20.02 +shr,auto,4,13,1084021,9,18.54,17.88,19.86 +shr,inplace,4,13,3054466,9,3.27,3.26,20.01 +shr,kernel,4,13,5391164,9,3.72,3.69,20.06 +shr,auto,16,13,966790,9,21.49,20.86,20.78 +shr,inplace,16,13,1960596,9,5.12,5.11,20.09 +shr,kernel,16,13,4509020,9,4.46,4.42,20.07 +shr,auto,256,13,228087,9,87.11,86.46,19.87 +shr,inplace,256,13,278983,9,35.79,35.52,19.97 +shr,kernel,256,13,300170,9,66.65,66.52,20.05 +shr,auto,2000,13,32474,9,636.60,622.92,20.21 +shr,inplace,2000,13,35502,9,281.84,279.52,20.00 +shr,kernel,2000,13,38966,9,512.93,502.55,19.93 +shr,auto,2000,77,19469,9,1001.04,985.76,19.44 +shr,inplace,2000,77,23769,9,421.09,419.66,20.06 +shr,kernel,2000,77,38699,9,517.38,511.91,19.99 +shr,auto,131072,13,398,3,48381.18,48238.90,19.54 +shr,inplace,131072,13,504,3,19886.37,19819.07,20.12 +shr,kernel,131072,13,533,3,37596.23,37505.63,20.03 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_base64_run2.csv b/tests/beman/big_int/perf/item1/mac_vshift_base64_run2.csv new file mode 100644 index 00000000..38daf485 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_base64_run2.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1133257,9,18.53,16.84,19.57 +shl,inplace,1,13,4400325,9,2.29,2.29,20.21 +shl,kernel,1,13,8876375,9,2.23,2.23,19.79 +shl,auto,4,13,1007463,9,19.37,18.58,19.54 +shl,inplace,4,13,2795887,9,3.57,3.53,20.02 +shl,kernel,4,13,5378679,9,3.72,3.69,20.00 +shl,auto,16,13,928409,9,21.44,21.21,19.86 +shl,inplace,16,13,1727842,9,5.80,5.79,20.02 +shl,kernel,16,13,4493143,9,4.45,4.44,20.07 +shl,auto,256,13,234560,9,85.56,85.32,20.08 +shl,inplace,256,13,273660,9,36.28,36.17,19.85 +shl,kernel,256,13,405133,9,48.88,48.66,19.80 +shl,auto,2000,13,29508,9,657.42,626.61,19.47 +shl,inplace,2000,13,35445,9,281.97,280.95,19.99 +shl,kernel,2000,13,51789,9,382.24,380.84,19.79 +shl,auto,2000,77,27719,9,766.38,707.31,20.90 +shl,inplace,2000,77,23625,9,424.68,420.04,20.02 +shl,kernel,2000,77,37895,9,527.16,521.22,19.95 +shl,auto,131072,13,411,3,48761.66,48177.62,20.01 +shl,inplace,131072,13,505,3,19766.79,19761.26,19.97 +shl,kernel,131072,13,686,3,29803.75,29508.50,20.42 +shr,auto,1,13,2098601,9,9.43,9.36,19.82 +shr,inplace,1,13,4174090,9,2.36,2.35,19.68 +shr,kernel,1,13,8946815,9,2.23,2.22,19.94 +shr,auto,4,13,1088875,9,18.41,18.21,20.33 +shr,inplace,4,13,3042033,9,3.32,3.29,20.19 +shr,kernel,4,13,5380516,9,3.72,3.70,19.99 +shr,auto,16,13,952388,9,20.99,20.82,20.00 +shr,inplace,16,13,1939621,9,5.11,5.11,19.87 +shr,kernel,16,13,4479820,9,4.46,4.46,20.01 +shr,auto,256,13,228905,9,87.19,86.46,19.99 +shr,inplace,256,13,279690,9,35.71,35.64,20.00 +shr,kernel,256,13,300586,9,66.52,66.15,20.01 +shr,auto,2000,13,32738,9,657.71,639.31,22.21 +shr,inplace,2000,13,35490,9,282.13,281.09,20.02 +shr,kernel,2000,13,39327,9,511.62,507.47,20.11 +shr,auto,2000,77,20274,9,1053.43,1015.20,20.62 +shr,inplace,2000,77,23853,9,419.92,418.94,20.03 +shr,kernel,2000,77,38714,9,514.86,512.94,19.97 +shr,auto,131072,13,402,3,50334.06,50250.52,20.24 +shr,inplace,131072,13,506,3,19793.89,19768.16,20.02 +shr,kernel,131072,13,538,3,37469.80,37464.06,20.16 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_base64_run3.csv b/tests/beman/big_int/perf/item1/mac_vshift_base64_run3.csv new file mode 100644 index 00000000..7d866d24 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_base64_run3.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1199109,9,19.21,16.58,19.77 +shl,inplace,1,13,4402735,9,2.29,2.29,20.19 +shl,kernel,1,13,8937548,9,2.23,2.23,19.95 +shl,auto,4,13,1035827,9,20.06,18.87,20.49 +shl,inplace,4,13,2825909,9,3.54,3.53,20.07 +shl,kernel,4,13,5392726,9,3.72,3.71,20.04 +shl,auto,16,13,903351,9,20.94,20.60,18.96 +shl,inplace,16,13,1727337,9,5.79,5.79,20.01 +shl,kernel,16,13,4492902,9,4.45,4.44,20.01 +shl,auto,256,13,231967,9,85.63,85.53,19.89 +shl,inplace,256,13,274958,9,36.23,36.17,19.93 +shl,kernel,256,13,407800,9,48.80,48.71,19.91 +shl,auto,2000,13,35085,9,638.95,555.65,22.29 +shl,inplace,2000,13,35358,9,282.28,280.51,19.96 +shl,kernel,2000,13,52246,9,382.89,380.69,19.99 +shl,auto,2000,77,26687,9,844.03,732.37,21.70 +shl,inplace,2000,77,23449,9,424.30,422.09,19.90 +shl,kernel,2000,77,37982,9,528.20,519.52,20.01 +shl,auto,131072,13,411,3,48827.96,48702.45,20.24 +shl,inplace,131072,13,506,3,19763.46,19750.91,20.01 +shl,kernel,131072,13,683,3,29280.08,29240.91,20.02 +shr,auto,1,13,2155531,9,9.17,9.16,19.87 +shr,inplace,1,13,4484674,9,2.35,2.23,20.92 +shr,kernel,1,13,8995648,9,2.23,2.22,20.06 +shr,auto,4,13,1079398,9,18.20,17.81,19.72 +shr,inplace,4,13,3042904,9,3.26,3.25,19.91 +shr,kernel,4,13,5382905,9,3.72,3.71,20.15 +shr,auto,16,13,894179,9,22.31,21.96,20.09 +shr,inplace,16,13,1911235,9,5.13,5.11,19.60 +shr,kernel,16,13,4475100,9,4.44,4.42,20.06 +shr,auto,256,13,229903,9,87.03,86.29,20.01 +shr,inplace,256,13,279985,9,36.20,35.66,20.35 +shr,kernel,256,13,296743,9,67.44,66.44,20.10 +shr,auto,2000,13,31564,9,680.92,600.74,21.03 +shr,inplace,2000,13,35311,9,282.03,281.60,19.92 +shr,kernel,2000,13,39094,9,512.16,511.15,20.04 +shr,auto,2000,77,19209,9,1015.75,971.76,19.48 +shr,inplace,2000,77,23749,9,420.07,418.91,19.94 +shr,kernel,2000,77,39036,9,517.70,515.69,20.20 +shr,auto,131072,13,397,3,50371.43,49723.76,19.92 +shr,inplace,131072,13,507,3,20044.21,19973.17,20.30 +shr,kernel,131072,13,529,3,37482.91,37475.58,19.88 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_new64_run1.csv b/tests/beman/big_int/perf/item1/mac_vshift_new64_run1.csv new file mode 100644 index 00000000..d526a1e2 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_new64_run1.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1645048,9,12.20,12.15,20.25 +shl,inplace,1,13,2966233,9,3.34,3.33,19.90 +shl,kernel,1,13,8078743,9,2.48,2.43,20.09 +shl,auto,4,13,1555151,9,12.69,12.61,19.86 +shl,inplace,4,13,1838559,9,5.20,5.08,19.31 +shl,kernel,4,13,5336283,9,3.72,3.69,19.83 +shl,auto,16,13,1312171,9,15.42,15.20,20.29 +shl,inplace,16,13,1455868,9,6.85,6.82,19.93 +shl,kernel,16,13,4493163,9,4.45,4.44,20.00 +shl,auto,256,13,482859,9,41.28,41.06,19.93 +shl,inplace,256,13,225313,9,44.97,44.86,20.26 +shl,kernel,256,13,411911,9,48.96,48.13,20.15 +shl,auto,2000,13,88933,9,268.95,233.85,21.77 +shl,inplace,2000,13,28822,9,346.92,346.03,20.17 +shl,kernel,2000,13,52313,9,383.95,381.74,20.07 +shl,auto,2000,77,68390,9,313.91,292.40,30.50 +shl,inplace,2000,77,44076,9,228.58,222.62,20.37 +shl,kernel,2000,77,37860,9,524.93,515.57,19.82 +shl,auto,131072,13,1108,3,18032.30,18022.60,19.99 +shl,inplace,131072,13,434,3,22962.51,22805.73,19.91 +shl,kernel,131072,13,680,3,29558.39,29428.37,20.10 +shr,auto,1,13,3094933,9,6.73,6.63,21.07 +shr,inplace,1,13,3241989,9,3.05,3.04,19.82 +shr,kernel,1,13,8930587,9,2.23,2.23,20.03 +shr,auto,4,13,1390124,9,14.32,14.23,20.16 +shr,inplace,4,13,2411100,9,4.45,4.39,21.55 +shr,kernel,4,13,5383392,9,3.72,3.68,20.01 +shr,auto,16,13,1103814,9,18.19,18.10,20.08 +shr,inplace,16,13,1629197,9,6.13,6.11,19.97 +shr,kernel,16,13,4903075,9,4.08,4.07,20.00 +shr,auto,256,13,477889,9,42.01,41.98,20.11 +shr,inplace,256,13,223865,9,44.71,44.53,20.06 +shr,kernel,256,13,300390,9,66.93,66.50,20.12 +shr,auto,2000,13,92438,9,262.02,231.41,24.38 +shr,inplace,2000,13,29123,9,349.00,345.32,20.27 +shr,kernel,2000,13,39016,9,512.97,508.29,20.03 +shr,auto,2000,77,91293,9,251.83,229.45,22.90 +shr,inplace,2000,77,48956,9,195.76,195.46,19.26 +shr,kernel,2000,77,38836,9,516.29,509.12,20.02 +shr,auto,131072,13,1106,3,18098.33,18062.27,20.02 +shr,inplace,131072,13,443,3,22605.81,22600.36,20.06 +shr,kernel,131072,13,533,3,37543.78,37261.57,19.97 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_new64_run2.csv b/tests/beman/big_int/perf/item1/mac_vshift_new64_run2.csv new file mode 100644 index 00000000..90de93c3 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_new64_run2.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1710399,9,14.31,11.69,23.14 +shl,inplace,1,13,2945982,9,3.40,3.37,20.03 +shl,kernel,1,13,7977397,9,2.48,2.46,19.85 +shl,auto,4,13,1596751,9,13.11,12.92,20.94 +shl,inplace,4,13,1955198,9,5.24,5.10,20.46 +shl,kernel,4,13,5380306,9,3.72,3.71,20.01 +shl,auto,16,13,1308668,9,16.84,15.29,21.75 +shl,inplace,16,13,1462392,9,6.82,6.80,19.94 +shl,kernel,16,13,4512902,9,4.44,4.43,20.03 +shl,auto,256,13,491586,9,40.93,40.82,20.13 +shl,inplace,256,13,222893,9,44.90,44.77,20.02 +shl,kernel,256,13,410223,9,48.66,48.48,19.98 +shl,auto,2000,13,92629,9,236.36,214.06,21.50 +shl,inplace,2000,13,28939,9,345.09,343.61,19.98 +shl,kernel,2000,13,52320,9,382.46,382.26,20.03 +shl,auto,2000,77,64821,9,506.68,290.65,30.63 +shl,inplace,2000,77,41769,9,226.76,222.08,19.00 +shl,kernel,2000,77,38377,9,526.33,520.27,20.19 +shl,auto,131072,13,1109,3,18056.84,18033.03,20.02 +shl,inplace,131072,13,437,3,22658.04,22622.47,19.80 +shl,kernel,131072,13,683,3,29301.55,29261.83,20.00 +shr,auto,1,13,3032233,9,6.69,6.68,20.28 +shr,inplace,1,13,3239419,9,3.11,3.08,20.13 +shr,kernel,1,13,8973048,9,2.23,2.22,20.23 +shr,auto,4,13,1404703,9,14.10,14.01,19.94 +shr,inplace,4,13,2236520,9,4.47,4.40,20.29 +shr,kernel,4,13,5379817,9,3.72,3.70,20.00 +shr,auto,16,13,1119704,9,18.06,17.84,20.20 +shr,inplace,16,13,1635375,9,6.11,6.10,20.00 +shr,kernel,16,13,4785425,9,4.19,4.18,20.10 +shr,auto,256,13,469047,9,42.73,41.62,20.07 +shr,inplace,256,13,224256,9,44.59,44.12,20.06 +shr,kernel,256,13,299323,9,66.82,66.49,20.00 +shr,auto,2000,13,83190,9,249.20,225.57,20.59 +shr,inplace,2000,13,28971,9,345.02,342.64,19.99 +shr,kernel,2000,13,39248,9,511.78,504.83,20.05 +shr,auto,2000,77,84109,9,244.07,215.89,20.65 +shr,inplace,2000,77,51025,9,195.77,195.16,19.99 +shr,kernel,2000,77,38958,9,515.34,506.63,20.05 +shr,auto,131072,13,1105,3,18115.57,18054.64,20.02 +shr,inplace,131072,13,444,3,22564.14,22556.77,20.05 +shr,kernel,131072,13,533,3,37445.12,37154.78,19.92 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_new64_run3.csv b/tests/beman/big_int/perf/item1/mac_vshift_new64_run3.csv new file mode 100644 index 00000000..7b5579b5 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_new64_run3.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1690446,9,12.23,12.03,20.61 +shl,inplace,1,13,2946166,9,3.38,3.36,20.00 +shl,kernel,1,13,8063871,9,2.48,2.47,19.99 +shl,auto,4,13,1582612,9,12.62,12.57,20.04 +shl,inplace,4,13,1968748,9,4.81,4.77,19.11 +shl,kernel,4,13,5376285,9,3.71,3.71,19.97 +shl,auto,16,13,1171285,9,15.73,15.64,18.95 +shl,inplace,16,13,1467549,9,6.83,6.81,20.15 +shl,kernel,16,13,4519024,9,4.43,4.41,20.01 +shl,auto,256,13,487854,9,41.30,40.97,20.18 +shl,inplace,256,13,222906,9,44.92,44.83,20.11 +shl,kernel,256,13,411249,9,48.64,48.59,20.01 +shl,auto,2000,13,83195,9,263.97,230.56,20.57 +shl,inplace,2000,13,28940,9,345.72,345.19,20.08 +shl,kernel,2000,13,51475,9,389.94,382.19,115.73 +shl,auto,2000,77,64567,9,342.48,310.14,27.99 +shl,inplace,2000,77,43855,9,230.67,221.76,20.38 +shl,kernel,2000,77,38153,9,528.85,525.20,20.21 +shl,auto,131072,13,1099,3,18016.00,17997.69,19.82 +shl,inplace,131072,13,441,3,22824.97,22634.02,20.25 +shl,kernel,131072,13,685,3,29241.18,29202.31,20.02 +shr,auto,1,13,2988478,9,6.93,6.85,20.71 +shr,inplace,1,13,3672227,9,3.06,2.61,21.66 +shr,kernel,1,13,8984493,9,2.23,2.22,20.06 +shr,auto,4,13,1372707,9,14.55,13.70,19.55 +shr,inplace,4,13,2320377,9,4.55,4.24,20.64 +shr,kernel,4,13,5381228,9,3.72,3.70,20.06 +shr,auto,16,13,1112093,9,18.00,17.79,20.07 +shr,inplace,16,13,1631895,9,6.11,6.10,19.95 +shr,kernel,16,13,4460468,9,4.46,4.46,19.93 +shr,auto,256,13,462061,9,42.47,41.99,19.68 +shr,inplace,256,13,224291,9,44.60,44.55,20.03 +shr,kernel,256,13,297498,9,67.28,67.12,20.04 +shr,auto,2000,13,81746,9,269.84,249.61,22.87 +shr,inplace,2000,13,28963,9,344.81,343.54,19.98 +shr,kernel,2000,13,39332,9,511.75,510.93,20.16 +shr,auto,2000,77,92949,9,256.99,215.15,21.26 +shr,inplace,2000,77,51211,9,195.08,194.83,19.99 +shr,kernel,2000,77,38824,9,516.14,511.22,20.01 +shr,auto,131072,13,1098,3,18082.92,18077.60,19.87 +shr,inplace,131072,13,444,3,22547.34,22530.03,20.05 +shr,kernel,131072,13,533,3,37480.22,37446.68,19.98 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v1_run1.csv b/tests/beman/big_int/perf/item1/mac_vshift_v1_run1.csv new file mode 100644 index 00000000..5f71c9b0 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_v1_run1.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1605791,9,12.58,12.26,19.86 +shl,inplace,1,13,4023574,9,2.48,2.48,19.99 +shl,kernel,1,13,10076867,9,2.23,1.98,21.60 +shl,auto,4,13,1551122,9,13.05,12.49,20.30 +shl,inplace,4,13,2658840,9,3.74,3.72,19.87 +shl,kernel,4,13,5375167,9,3.72,3.70,19.98 +shl,auto,16,13,1320159,9,15.22,15.13,19.78 +shl,inplace,16,13,1890623,9,5.28,5.26,19.97 +shl,kernel,16,13,4397267,9,4.43,4.43,19.52 +shl,auto,256,13,477709,9,41.91,41.62,20.04 +shl,inplace,256,13,335898,9,29.65,29.61,19.92 +shl,kernel,256,13,408396,9,48.78,48.76,19.93 +shl,auto,2000,13,79997,9,266.98,234.80,20.88 +shl,inplace,2000,13,51083,9,195.41,195.27,20.00 +shl,kernel,2000,13,52123,9,382.87,380.41,20.07 +shl,auto,2000,77,68240,9,477.96,350.31,45.58 +shl,inplace,2000,77,43280,9,230.90,230.31,20.53 +shl,kernel,2000,77,37746,9,527.98,526.42,19.96 +shl,auto,131072,13,1099,3,18150.93,18124.55,19.94 +shl,inplace,131072,13,536,3,18805.58,18784.40,20.16 +shl,kernel,131072,13,676,3,29396.63,29297.40,19.90 +shr,auto,1,13,3018665,9,6.88,6.69,20.68 +shr,inplace,1,13,3629352,9,3.42,3.03,20.80 +shr,kernel,1,13,8925869,9,2.23,2.22,19.95 +shr,auto,4,13,1323285,9,15.30,15.11,20.21 +shr,inplace,4,13,2799820,9,3.69,3.23,21.14 +shr,kernel,4,13,5367949,9,3.72,3.69,19.98 +shr,auto,16,13,1092676,9,18.07,18.00,19.79 +shr,inplace,16,13,1951530,9,5.19,5.11,20.20 +shr,kernel,16,13,4447203,9,4.50,4.49,20.02 +shr,auto,256,13,478156,9,41.88,41.79,20.06 +shr,inplace,256,13,327718,9,30.37,30.17,19.91 +shr,kernel,256,13,296771,9,67.37,67.04,20.00 +shr,auto,2000,13,85061,9,275.96,248.53,22.08 +shr,inplace,2000,13,50926,9,197.75,195.53,20.10 +shr,kernel,2000,13,39015,9,511.46,504.82,19.91 +shr,auto,2000,77,88356,9,271.15,245.45,23.53 +shr,inplace,2000,77,50934,9,195.66,195.37,19.94 +shr,kernel,2000,77,38721,9,517.77,511.63,20.08 +shr,auto,131072,13,1102,3,18178.09,18139.25,20.05 +shr,inplace,131072,13,539,3,18551.56,18545.76,20.00 +shr,kernel,131072,13,532,3,37569.55,37475.95,20.00 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v1_run2.csv b/tests/beman/big_int/perf/item1/mac_vshift_v1_run2.csv new file mode 100644 index 00000000..8c781516 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_v1_run2.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1677048,9,12.53,11.92,19.52 +shl,inplace,1,13,4010086,9,2.48,2.48,19.99 +shl,kernel,1,13,8982658,9,2.23,2.22,20.04 +shl,auto,4,13,1492938,9,12.93,12.79,19.60 +shl,inplace,4,13,2665519,9,3.77,3.71,20.15 +shl,kernel,4,13,5366271,9,3.72,3.70,19.96 +shl,auto,16,13,1208236,9,15.49,15.29,18.90 +shl,inplace,16,13,1904591,9,5.23,5.22,19.92 +shl,kernel,16,13,4519838,9,4.42,4.41,20.00 +shl,auto,256,13,483572,9,41.53,41.22,20.09 +shl,inplace,256,13,336738,9,29.68,29.65,20.03 +shl,kernel,256,13,410877,9,48.76,48.61,20.04 +shl,auto,2000,13,79167,9,261.43,227.69,20.02 +shl,inplace,2000,13,51008,9,196.09,195.31,20.03 +shl,kernel,2000,13,52391,9,382.09,379.26,20.00 +shl,auto,2000,77,70354,9,293.12,292.38,21.92 +shl,inplace,2000,77,44082,9,226.96,226.53,20.01 +shl,kernel,2000,77,37906,9,528.46,524.70,20.02 +shl,auto,131072,13,1108,3,18152.11,18141.06,20.11 +shl,inplace,131072,13,543,3,18499.16,18483.62,20.09 +shl,kernel,131072,13,682,3,29249.82,29241.81,19.95 +shr,auto,1,13,2892405,9,6.94,6.91,20.08 +shr,inplace,1,13,3010567,9,3.31,3.30,19.97 +shr,kernel,1,13,8980343,9,2.23,2.23,20.02 +shr,auto,4,13,1417836,9,14.91,14.26,20.90 +shr,inplace,4,13,2683446,9,3.39,3.38,18.68 +shr,kernel,4,13,5379141,9,3.72,3.71,20.00 +shr,auto,16,13,1062003,9,18.73,18.54,19.88 +shr,inplace,16,13,1952045,9,5.13,5.11,20.04 +shr,kernel,16,13,4462767,9,4.49,4.48,20.05 +shr,auto,256,13,475789,9,43.13,41.90,20.36 +shr,inplace,256,13,326837,9,30.31,30.17,19.83 +shr,kernel,256,13,293718,9,67.43,67.31,19.84 +shr,auto,2000,13,76464,9,253.80,238.93,19.75 +shr,inplace,2000,13,51196,9,195.69,195.28,20.04 +shr,kernel,2000,13,39125,9,510.51,507.57,20.00 +shr,auto,2000,77,81041,9,266.65,232.99,19.82 +shr,inplace,2000,77,51246,9,195.47,195.18,20.04 +shr,kernel,2000,77,38875,9,521.94,513.05,20.22 +shr,auto,131072,13,1100,3,18142.77,18142.31,19.96 +shr,inplace,131072,13,542,3,18489.62,18468.17,20.06 +shr,kernel,131072,13,535,3,37511.29,37454.28,20.06 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v1_run3.csv b/tests/beman/big_int/perf/item1/mac_vshift_v1_run3.csv new file mode 100644 index 00000000..a1493ef4 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_v1_run3.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1683680,9,11.95,11.89,20.26 +shl,inplace,1,13,3707282,9,2.48,2.47,18.46 +shl,kernel,1,13,8949769,9,2.23,2.23,19.98 +shl,auto,4,13,1538845,9,12.97,12.49,19.93 +shl,inplace,4,13,2483937,9,3.76,3.74,18.88 +shl,kernel,4,13,5769379,9,3.70,3.47,20.85 +shl,auto,16,13,1171181,9,17.04,15.81,54.43 +shl,inplace,16,13,332429,9,29.82,29.74,19.95 +shl,kernel,16,13,805814,9,24.83,24.73,20.00 +shl,auto,256,13,86406,9,231.74,229.69,20.05 +shl,inplace,256,13,60096,9,166.47,165.63,20.06 +shl,kernel,256,13,73432,9,272.72,272.46,20.12 +shl,auto,2000,13,15200,9,1404.30,1348.05,19.89 +shl,inplace,2000,13,9116,9,1099.81,1091.89,20.08 +shl,kernel,2000,13,9327,9,2154.73,2140.08,20.31 +shl,auto,2000,77,11069,9,2039.46,1786.49,22.53 +shl,inplace,2000,77,7702,9,1329.15,1313.53,20.53 +shl,kernel,2000,77,37536,9,3025.47,527.69,20.05 +shl,auto,131072,13,1108,3,18075.02,18072.31,20.04 +shl,inplace,131072,13,539,3,18524.16,18506.80,19.98 +shl,kernel,131072,13,686,3,29306.12,29251.64,20.38 +shr,auto,1,13,2882680,9,6.68,6.44,19.18 +shr,inplace,1,13,3006693,9,3.31,3.30,19.92 +shr,kernel,1,13,8974621,9,2.23,2.22,20.01 +shr,auto,4,13,1346188,9,15.08,14.59,3891.56 +shr,inplace,4,13,2765446,9,4.27,3.45,36.27 +shr,kernel,4,13,5193913,9,3.80,3.68,19.88 +shr,auto,16,13,1032874,9,22.64,19.26,25.42 +shr,inplace,16,13,1892987,9,5.37,5.25,20.28 +shr,kernel,16,13,4216063,9,5.26,4.66,21.46 +shr,auto,256,13,432792,9,46.65,44.42,27.79 +shr,inplace,256,13,324892,9,31.27,30.95,20.37 +shr,kernel,256,13,288685,9,68.61,67.44,20.11 +shr,auto,2000,13,76688,9,258.68,248.09,20.51 +shr,inplace,2000,13,49329,9,203.65,200.94,20.11 +shr,kernel,2000,13,38447,9,531.10,508.30,20.38 +shr,auto,2000,77,77124,9,252.48,248.57,19.54 +shr,inplace,2000,77,49711,9,198.33,197.78,19.88 +shr,kernel,2000,77,37775,9,519.34,509.41,19.72 +shr,auto,131072,13,1094,3,18464.39,18220.98,20.22 +shr,inplace,131072,13,532,3,18883.30,18720.51,20.05 +shr,kernel,131072,13,522,3,37879.23,37766.28,19.81 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v2_run1.csv b/tests/beman/big_int/perf/item1/mac_vshift_v2_run1.csv new file mode 100644 index 00000000..8653b290 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_v2_run1.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1644545,9,12.26,12.08,20.19 +shl,inplace,1,13,3914237,9,2.48,2.48,19.43 +shl,kernel,1,13,8945273,9,2.24,2.23,20.02 +shl,auto,4,13,1479028,9,13.61,13.46,20.15 +shl,inplace,4,13,2746780,9,3.58,3.57,19.93 +shl,kernel,4,13,5392029,9,3.72,3.70,20.05 +shl,auto,16,13,1291316,9,15.52,15.36,20.10 +shl,inplace,16,13,1573053,9,6.29,6.27,19.79 +shl,kernel,16,13,4892053,9,4.10,4.08,20.06 +shl,auto,256,13,354856,9,56.30,55.84,19.96 +shl,inplace,256,13,248813,9,40.11,40.04,19.97 +shl,kernel,256,13,410757,9,48.73,48.69,20.02 +shl,auto,2000,13,50876,9,395.31,391.94,20.21 +shl,inplace,2000,13,31771,9,317.90,314.00,20.15 +shl,kernel,2000,13,52376,9,382.24,380.01,20.02 +shl,auto,2000,77,49644,9,400.64,390.98,19.94 +shl,inplace,2000,77,31873,9,316.70,313.48,20.28 +shl,kernel,2000,77,37728,9,529.17,522.15,19.90 +shl,auto,131072,13,802,3,24944.51,24882.95,20.00 +shl,inplace,131072,13,481,3,20780.41,20731.98,19.98 +shl,kernel,131072,13,684,3,29311.10,29166.55,20.11 +shr,auto,1,13,2987299,9,6.70,6.68,20.00 +shr,inplace,1,13,3594711,9,2.76,2.72,21.30 +shr,kernel,1,13,8958653,9,2.23,2.23,20.00 +shr,auto,4,13,1433162,9,13.99,13.72,20.03 +shr,inplace,4,13,2878886,9,3.93,3.29,21.91 +shr,kernel,4,13,5369090,9,3.72,3.70,19.98 +shr,auto,16,13,1126779,9,17.77,17.73,20.12 +shr,inplace,16,13,1805624,9,5.52,5.49,19.93 +shr,kernel,16,13,4475061,9,4.47,4.45,19.99 +shr,auto,256,13,458241,9,43.34,43.30,19.87 +shr,inplace,256,13,250026,9,39.66,39.43,19.82 +shr,kernel,256,13,296449,9,67.30,66.56,19.93 +shr,auto,2000,13,70791,9,282.29,268.98,20.08 +shr,inplace,2000,13,31898,9,313.53,312.17,20.00 +shr,kernel,2000,13,38693,9,510.50,506.59,19.78 +shr,auto,2000,77,72512,9,291.35,271.30,21.30 +shr,inplace,2000,77,31842,9,317.85,313.73,20.18 +shr,kernel,2000,77,38166,9,520.96,510.50,19.80 +shr,auto,131072,13,1106,3,18015.52,17942.47,19.90 +shr,inplace,131072,13,482,3,20768.11,20694.33,20.00 +shr,kernel,131072,13,533,3,37476.55,37062.85,19.92 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v2_run2.csv b/tests/beman/big_int/perf/item1/mac_vshift_v2_run2.csv new file mode 100644 index 00000000..f4acaaaa --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_v2_run2.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1611463,9,11.98,11.95,19.43 +shl,inplace,1,13,4039446,9,2.48,2.47,20.06 +shl,kernel,1,13,8943643,9,2.23,2.23,19.95 +shl,auto,4,13,1580938,9,12.83,12.48,20.76 +shl,inplace,4,13,2661325,9,3.71,3.70,19.96 +shl,kernel,4,13,5371383,9,3.72,3.71,20.17 +shl,auto,16,13,1252170,9,15.69,15.53,19.68 +shl,inplace,16,13,1572767,9,6.34,6.27,19.90 +shl,kernel,16,13,4756941,9,4.21,4.20,20.01 +shl,auto,256,13,357539,9,56.04,55.94,20.09 +shl,inplace,256,13,249115,9,40.07,39.87,19.97 +shl,kernel,256,13,412047,9,48.74,48.49,20.10 +shl,auto,2000,13,50962,9,398.17,392.89,20.66 +shl,inplace,2000,13,31892,9,313.73,313.35,20.08 +shl,kernel,2000,13,52247,9,383.72,381.79,20.03 +shl,auto,2000,77,50598,9,394.79,391.69,19.97 +shl,inplace,2000,77,31871,9,313.65,312.44,19.99 +shl,kernel,2000,77,38521,9,522.68,518.55,20.17 +shl,auto,131072,13,796,3,25150.86,24897.87,20.03 +shl,inplace,131072,13,481,3,20843.90,20717.34,20.02 +shl,kernel,131072,13,651,3,29900.22,29572.33,19.40 +shr,auto,1,13,2843323,9,6.78,6.70,19.47 +shr,inplace,1,13,3588983,9,2.72,2.72,19.68 +shr,kernel,1,13,8970981,9,2.23,2.22,19.99 +shr,auto,4,13,1424622,9,14.01,13.96,20.03 +shr,inplace,4,13,3045096,9,3.31,3.07,19.78 +shr,kernel,4,13,5399861,9,3.73,3.72,20.18 +shr,auto,16,13,1118138,9,18.09,18.00,20.28 +shr,inplace,16,13,1771188,9,5.51,5.50,19.60 +shr,kernel,16,13,4484056,9,4.46,4.45,20.03 +shr,auto,256,13,454371,9,43.56,43.28,19.79 +shr,inplace,256,13,252672,9,39.63,39.55,20.05 +shr,kernel,256,13,297145,9,67.35,66.96,20.06 +shr,auto,2000,13,68475,9,289.09,270.30,19.67 +shr,inplace,2000,13,31845,9,313.60,313.04,20.01 +shr,kernel,2000,13,38817,9,512.05,505.81,19.88 +shr,auto,2000,77,70439,9,310.25,294.48,22.18 +shr,inplace,2000,77,31903,9,313.81,312.97,20.02 +shr,kernel,2000,77,38861,9,515.67,510.39,20.01 +shr,auto,131072,13,1115,3,17946.94,17914.87,20.01 +shr,inplace,131072,13,480,3,20805.29,20801.00,19.97 +shr,kernel,131072,13,533,3,37504.61,37421.51,19.98 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v2_run3.csv b/tests/beman/big_int/perf/item1/mac_vshift_v2_run3.csv new file mode 100644 index 00000000..7627b875 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_v2_run3.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1682893,9,12.32,11.90,20.63 +shl,inplace,1,13,3968018,9,2.49,2.48,19.77 +shl,kernel,1,13,10018071,9,2.08,1.99,20.35 +shl,auto,4,13,1527334,9,13.25,12.93,20.22 +shl,inplace,4,13,2701646,9,3.84,3.61,20.77 +shl,kernel,4,13,5333258,9,3.74,3.73,19.95 +shl,auto,16,13,1297789,9,15.53,15.45,20.37 +shl,inplace,16,13,1554103,9,6.41,6.30,20.02 +shl,kernel,16,13,4415503,9,4.53,4.52,20.00 +shl,auto,256,13,355965,9,56.45,56.24,20.10 +shl,inplace,256,13,246077,9,40.17,39.93,19.77 +shl,kernel,256,13,412668,9,49.02,48.81,20.22 +shl,auto,2000,13,50076,9,394.05,391.51,19.75 +shl,inplace,2000,13,31342,9,315.71,314.51,19.81 +shl,kernel,2000,13,52155,9,385.02,383.29,20.07 +shl,auto,2000,77,50943,9,394.17,388.24,20.03 +shl,inplace,2000,77,31600,9,315.62,311.09,19.92 +shl,kernel,2000,77,37247,9,532.62,521.09,19.88 +shl,auto,131072,13,798,3,25035.87,24859.54,19.94 +shl,inplace,131072,13,478,3,20984.83,20930.40,20.27 +shl,kernel,131072,13,679,3,29489.87,29326.77,20.02 +shr,auto,1,13,2927036,9,6.95,6.50,20.05 +shr,inplace,1,13,3585374,9,2.75,2.73,19.70 +shr,kernel,1,13,8914816,9,2.24,2.23,19.98 +shr,auto,4,13,1442160,9,14.13,13.81,20.58 +shr,inplace,4,13,2968037,9,3.31,3.27,19.74 +shr,kernel,4,13,5339856,9,3.50,3.48,19.34 +shr,auto,16,13,1109737,9,18.69,17.78,20.53 +shr,inplace,16,13,1847593,9,5.51,5.48,20.39 +shr,kernel,16,13,4460034,9,4.50,4.46,20.22 +shr,auto,256,13,457045,9,43.57,43.46,19.93 +shr,inplace,256,13,248182,9,39.86,39.67,19.89 +shr,kernel,256,13,296287,9,67.60,66.96,20.01 +shr,auto,2000,13,65130,9,298.10,284.29,20.43 +shr,inplace,2000,13,31817,9,317.96,314.78,20.34 +shr,kernel,2000,13,39075,9,513.20,506.81,20.04 +shr,auto,2000,77,69674,9,299.85,282.25,20.62 +shr,inplace,2000,77,31680,9,314.75,314.00,19.97 +shr,kernel,2000,77,38598,9,518.82,511.50,19.99 +shr,auto,131072,13,1106,3,18241.00,18078.85,20.12 +shr,inplace,131072,13,481,3,20782.31,20778.46,19.99 +shr,kernel,131072,13,533,3,37646.34,37597.80,20.08 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v3_run1.csv b/tests/beman/big_int/perf/item1/mac_vshift_v3_run1.csv new file mode 100644 index 00000000..8a40945b --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_v3_run1.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1661654,9,12.02,11.92,20.05 +shl,inplace,1,13,3774375,9,2.48,2.47,18.85 +shl,kernel,1,13,8973439,9,2.23,2.22,20.00 +shl,auto,4,13,1513446,9,13.12,12.92,19.83 +shl,inplace,4,13,2632365,9,3.84,3.74,20.08 +shl,kernel,4,13,5393384,9,3.72,3.70,20.20 +shl,auto,16,13,1287805,9,15.63,15.52,20.18 +shl,inplace,16,13,1540884,9,6.47,6.46,19.96 +shl,kernel,16,13,4908074,9,4.07,4.06,19.97 +shl,auto,256,13,318537,9,62.70,62.33,20.00 +shl,inplace,256,13,208410,9,47.92,47.68,19.98 +shl,kernel,256,13,413276,9,48.30,48.13,20.01 +shl,auto,2000,13,43625,9,450.95,446.47,19.66 +shl,inplace,2000,13,26714,9,375.19,372.99,20.02 +shl,kernel,2000,13,52210,9,382.03,380.50,19.97 +shl,auto,2000,77,44088,9,452.64,446.25,19.93 +shl,inplace,2000,77,26690,9,379.71,371.60,20.14 +shl,kernel,2000,77,37689,9,529.85,526.85,19.96 +shl,auto,131072,13,680,3,29331.00,29295.65,20.21 +shl,inplace,131072,13,406,3,24609.25,24581.85,19.98 +shl,kernel,131072,13,684,3,29322.43,29110.99,20.06 +shr,auto,1,13,3223731,9,6.93,6.21,20.06 +shr,inplace,1,13,3461010,9,2.87,2.83,19.89 +shr,kernel,1,13,8800996,9,2.23,2.22,19.72 +shr,auto,4,13,1418471,9,14.63,13.93,20.42 +shr,inplace,4,13,2829108,9,3.54,3.50,20.18 +shr,kernel,4,13,5385182,9,3.72,3.70,20.03 +shr,auto,16,13,1097587,9,18.49,18.29,20.35 +shr,inplace,16,13,1802427,9,5.65,5.61,20.36 +shr,kernel,16,13,4796837,9,4.17,4.16,20.02 +shr,auto,256,13,413652,9,47.79,47.71,19.79 +shr,inplace,256,13,211478,9,47.30,47.21,20.01 +shr,kernel,256,13,299616,9,66.64,66.14,19.96 +shr,auto,2000,13,60339,9,345.28,325.94,20.63 +shr,inplace,2000,13,26686,9,374.05,372.41,19.97 +shr,kernel,2000,13,39147,9,510.56,498.41,19.91 +shr,auto,2000,77,58972,9,339.25,326.39,19.90 +shr,inplace,2000,77,26753,9,374.60,372.42,20.05 +shr,kernel,2000,77,38699,9,517.15,513.50,20.06 +shr,auto,131072,13,971,3,20633.50,20617.45,20.03 +shr,inplace,131072,13,407,3,24606.47,24599.25,20.05 +shr,kernel,131072,13,536,3,37856.73,37850.20,20.33 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v3_run2.csv b/tests/beman/big_int/perf/item1/mac_vshift_v3_run2.csv new file mode 100644 index 00000000..2811fa64 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_v3_run2.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1656929,9,12.09,12.04,20.26 +shl,inplace,1,13,4034021,9,2.48,2.47,20.09 +shl,kernel,1,13,8972421,9,2.23,2.23,20.02 +shl,auto,4,13,1550326,9,13.76,13.47,21.31 +shl,inplace,4,13,2641940,9,3.78,3.78,20.41 +shl,kernel,4,13,5381040,9,3.48,3.45,18.98 +shl,auto,16,13,1229716,9,16.48,15.80,20.42 +shl,inplace,16,13,1541995,9,6.49,6.48,20.00 +shl,kernel,16,13,4905958,9,4.08,4.07,20.01 +shl,auto,256,13,313981,9,63.72,63.06,19.97 +shl,inplace,256,13,208834,9,47.97,47.71,20.03 +shl,kernel,256,13,413707,9,48.37,48.21,20.02 +shl,auto,2000,13,44155,9,453.04,448.54,20.05 +shl,inplace,2000,13,26757,9,375.03,373.02,20.07 +shl,kernel,2000,13,52137,9,382.49,381.28,19.94 +shl,auto,2000,77,44117,9,452.87,452.49,19.98 +shl,inplace,2000,77,25706,9,375.19,373.68,19.29 +shl,kernel,2000,77,37852,9,526.90,522.48,19.92 +shl,auto,131072,13,696,3,28863.86,28820.28,20.10 +shl,inplace,131072,13,406,3,24609.09,24590.98,19.98 +shl,kernel,131072,13,684,3,29192.01,29140.11,19.97 +shr,auto,1,13,3104799,9,6.68,6.44,20.51 +shr,inplace,1,13,3580603,9,2.78,2.76,21.94 +shr,kernel,1,13,8970678,9,2.23,2.23,20.01 +shr,auto,4,13,1399386,9,14.27,13.86,19.87 +shr,inplace,4,13,2862472,9,3.52,3.51,20.19 +shr,kernel,4,13,5388143,9,3.72,3.71,20.05 +shr,auto,16,13,1114561,9,17.96,17.62,20.03 +shr,inplace,16,13,1749498,9,5.66,5.57,19.85 +shr,kernel,16,13,4496871,9,4.45,4.45,20.07 +shr,auto,256,13,411878,9,48.47,48.05,20.09 +shr,inplace,256,13,211200,9,47.25,47.16,19.96 +shr,kernel,256,13,299205,9,67.29,67.22,20.14 +shr,auto,2000,13,60988,9,330.67,328.41,20.44 +shr,inplace,2000,13,26690,9,374.14,372.89,19.97 +shr,kernel,2000,13,39262,9,510.36,509.85,20.04 +shr,auto,2000,77,60428,9,329.89,329.18,20.23 +shr,inplace,2000,77,26630,9,377.89,372.47,20.07 +shr,kernel,2000,77,38747,9,514.38,511.78,19.99 +shr,auto,131072,13,967,3,20600.66,20547.83,19.91 +shr,inplace,131072,13,407,3,24608.06,24606.27,20.03 +shr,kernel,131072,13,534,3,37470.51,37462.16,20.02 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v3_run3.csv b/tests/beman/big_int/perf/item1/mac_vshift_v3_run3.csv new file mode 100644 index 00000000..313bb071 --- /dev/null +++ b/tests/beman/big_int/perf/item1/mac_vshift_v3_run3.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1630608,9,12.28,12.11,20.06 +shl,inplace,1,13,3998420,9,2.51,2.49,20.04 +shl,kernel,1,13,8903080,9,2.24,2.23,20.00 +shl,auto,4,13,1546473,9,12.92,12.77,20.07 +shl,inplace,4,13,2657793,9,3.83,3.74,20.46 +shl,kernel,4,13,5327984,9,3.74,3.71,19.91 +shl,auto,16,13,1278088,9,16.26,15.55,21.17 +shl,inplace,16,13,1535871,9,6.52,6.50,20.02 +shl,kernel,16,13,4767712,9,4.20,4.19,20.07 +shl,auto,256,13,316428,9,63.05,62.58,19.98 +shl,inplace,256,13,206263,9,48.34,48.12,19.98 +shl,kernel,256,13,408497,9,48.69,48.53,19.90 +shl,auto,2000,13,44050,9,456.18,450.80,20.25 +shl,inplace,2000,13,26247,9,377.25,376.23,19.80 +shl,kernel,2000,13,52485,9,384.37,381.56,20.18 +shl,auto,2000,77,44058,9,455.97,453.36,20.11 +shl,inplace,2000,77,26561,9,377.11,373.11,20.01 +shl,kernel,2000,77,38042,9,525.52,521.29,20.00 +shl,auto,131072,13,690,3,28931.40,28844.75,19.96 +shl,inplace,131072,13,406,3,24596.62,24590.06,20.02 +shl,kernel,131072,13,682,3,29359.54,29278.47,20.01 +shr,auto,1,13,3068121,9,6.63,6.47,20.37 +shr,inplace,1,13,3564260,9,2.78,2.77,19.87 +shr,kernel,1,13,8850192,9,2.24,2.23,19.85 +shr,auto,4,13,1419555,9,14.01,13.58,19.71 +shr,inplace,4,13,2854370,9,3.54,3.52,20.24 +shr,kernel,4,13,5354492,9,3.75,3.73,20.19 +shr,auto,16,13,1094237,9,18.23,17.90,20.28 +shr,inplace,16,13,1813827,9,5.69,5.63,20.64 +shr,kernel,16,13,4876378,9,4.11,4.10,20.06 +shr,auto,256,13,412239,9,48.31,48.00,19.94 +shr,inplace,256,13,210117,9,47.55,47.47,19.98 +shr,kernel,256,13,298708,9,67.19,66.61,20.09 +shr,auto,2000,13,57316,9,340.82,332.74,19.51 +shr,inplace,2000,13,26609,9,375.22,373.73,20.01 +shr,kernel,2000,13,37382,9,534.21,532.76,19.97 +shr,auto,2000,77,59570,9,360.57,339.57,21.10 +shr,inplace,2000,77,26584,9,379.60,375.38,23.95 +shr,kernel,2000,77,35298,9,556.75,547.52,19.57 +shr,auto,131072,13,963,3,20804.95,20716.38,20.37 +shr,inplace,131072,13,398,3,24719.59,24688.60,19.68 +shr,kernel,131072,13,527,3,37720.75,37714.34,19.89 diff --git a/tests/beman/big_int/perf/item1/macr3_base64_seed1a.csv b/tests/beman/big_int/perf/item1/macr3_base64_seed1a.csv new file mode 100644 index 00000000..dbd72253 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_base64_seed1a.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T17:51:52Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2878618,9,6.95,6.84,19.98 +add,inplace,1,1,3033434,9,3.35,3.25,20.16 +add,kernel,1,1,17407760,9,1.14,1.14,19.97 +add,floor,1,1,2119333,9,9.32,9.27,19.86 +add,gmp,1,1,13460736,9,1.49,1.47,20.02 +add,gmpz,1,1,6526120,9,3.95,3.21,27.99 +add,auto,2,2,1363192,9,14.93,14.55,20.32 +add,inplace,2,2,2649648,9,3.75,3.73,19.92 +add,kernel,2,2,14338115,9,1.42,1.40,20.49 +add,floor,2,2,1998430,9,9.94,9.70,19.78 +add,gmp,2,2,11481319,9,1.79,1.74,19.36 +add,gmpz,2,2,6700428,9,5.30,3.66,36.88 +add,auto,4,4,1292645,9,15.43,15.26,19.92 +add,inplace,4,4,2690986,9,3.73,3.72,20.30 +add,kernel,4,4,10458003,9,1.92,1.91,20.08 +add,floor,4,4,1839014,9,10.95,10.44,20.11 +add,gmp,4,4,11388842,9,1.74,1.73,20.34 +add,gmpz,4,4,5600397,9,5.04,3.61,22.66 +add,auto,8,8,1287115,9,15.72,14.84,20.09 +add,inplace,8,8,1973234,9,5.09,4.96,20.10 +add,kernel,8,8,5733881,9,3.50,3.46,20.49 +add,floor,8,8,1643096,9,12.67,12.34,20.82 +add,gmp,8,8,8859162,9,2.28,2.26,20.30 +add,gmpz,8,8,5084197,9,5.21,3.96,24.07 +add,auto,16,16,1225175,9,16.49,16.15,20.41 +add,inplace,16,16,1013413,9,9.70,9.58,19.70 +add,kernel,16,16,2665633,9,7.57,7.47,20.22 +add,floor,16,16,1453944,9,14.18,13.65,20.61 +add,gmp,16,16,6881886,9,3.24,2.88,19.36 +add,gmpz,16,16,2036267,9,9.86,9.62,20.16 +add,auto,64,64,367864,9,54.46,53.52,20.00 +add,inplace,64,64,190162,9,50.99,50.48,20.11 +add,kernel,64,64,415357,9,48.31,47.65,20.06 +add,floor,64,64,315833,9,61.52,60.72,19.53 +add,gmp,64,64,1781326,9,11.22,11.16,20.05 +add,gmpz,64,64,1527580,9,12.99,12.81,19.92 +add,auto,256,256,128062,9,148.16,144.41,18.94 +add,inplace,256,256,43861,9,235.87,232.55,21.12 +add,kernel,256,256,85145,9,231.20,226.17,19.67 +add,floor,256,256,83895,9,243.57,237.52,20.61 +add,gmp,256,256,357315,9,57.00,55.67,20.32 +add,gmpz,256,256,331753,9,57.55,56.14,19.04 +add,auto,1024,1024,36838,9,560.91,534.85,20.71 +add,inplace,1024,1024,9680,9,982.12,975.79,19.21 +add,kernel,1024,1024,19785,9,1015.82,944.29,19.84 +add,floor,1024,1024,19659,9,977.77,945.67,19.31 +add,gmp,1024,1024,79233,9,253.14,246.19,20.53 +add,gmpz,1024,1024,78324,9,253.61,250.83,20.08 +add,auto,2000,2000,17818,9,1135.80,1057.25,20.13 +add,inplace,2000,2000,5303,9,1901.43,1856.01,20.21 +add,kernel,2000,2000,10446,9,1893.63,1830.92,19.69 +add,floor,2000,2000,10488,9,1925.51,1867.99,20.40 +add,gmp,2000,2000,40226,9,495.45,483.38,19.83 +add,gmpz,2000,2000,40381,9,494.31,482.06,19.96 +add,auto,1024,1,112916,9,171.73,168.50,19.40 +add,inplace,1024,1,10368,9,973.14,946.54,20.13 +add,kernel,1024,1,27564,9,725.10,716.67,20.01 +add,floor,1024,1,27160,9,742.87,729.73,20.10 +add,gmp,1024,1,76547,9,260.43,251.95,19.81 +add,gmpz,1024,1,76585,9,261.35,257.96,19.99 +sub,auto,1,1,2688701,9,7.21,7.16,19.63 +sub,inplace,1,1,2836111,9,3.48,3.46,19.72 +sub,kernel,1,1,19483394,9,1.03,1.03,20.11 +sub,floor,1,1,11469225,9,1.76,1.74,20.21 +sub,gmp,1,1,13437629,9,1.49,1.47,19.95 +sub,gmpz,1,1,7284079,9,2.79,2.73,20.53 +sub,auto,2,2,1341221,9,15.25,15.00,20.54 +sub,inplace,2,2,3002839,9,3.26,3.22,19.59 +sub,kernel,2,2,14144241,9,1.40,1.39,19.87 +sub,floor,2,2,2172471,9,9.21,9.18,20.05 +sub,gmp,2,2,11461934,9,1.87,1.74,20.24 +sub,gmpz,2,2,6148719,9,3.24,3.21,19.98 +sub,auto,4,4,1299605,9,15.76,15.61,20.64 +sub,inplace,4,4,2447826,9,4.05,3.73,19.40 +sub,kernel,4,4,10216605,9,1.95,1.94,19.96 +sub,floor,4,4,2008424,9,9.97,9.92,20.15 +sub,gmp,4,4,11319872,9,1.75,1.74,19.86 +sub,gmpz,4,4,6701426,9,2.98,2.97,19.97 +sub,auto,8,8,1232955,9,16.24,15.83,19.97 +sub,inplace,8,8,1988884,9,5.06,5.03,20.33 +sub,kernel,8,8,5656394,9,3.55,3.51,20.19 +sub,floor,8,8,1674275,9,12.20,11.44,20.10 +sub,gmp,8,8,8872468,9,2.25,2.24,19.93 +sub,gmpz,8,8,5742868,9,3.50,3.48,20.08 +sub,auto,16,16,1066926,9,18.54,17.66,19.87 +sub,inplace,16,16,1070898,9,9.41,9.30,22.04 +sub,kernel,16,16,2605674,9,7.69,7.61,20.01 +sub,floor,16,16,1324892,9,15.56,15.16,20.70 +sub,gmp,16,16,6207996,9,3.24,3.23,20.12 +sub,gmpz,16,16,4723329,9,4.48,4.26,21.03 +sub,auto,64,64,486221,9,41.24,40.91,20.19 +sub,inplace,64,64,198655,9,50.33,49.37,19.96 +sub,kernel,64,64,409273,9,49.42,48.08,20.18 +sub,floor,64,64,327033,9,60.81,59.09,19.78 +sub,gmp,64,64,1744755,9,11.45,11.39,20.03 +sub,gmpz,64,64,1442725,9,13.88,13.83,20.01 +sub,auto,256,256,150360,9,132.79,129.02,19.96 +sub,inplace,256,256,42463,9,235.06,228.74,19.88 +sub,kernel,256,256,86860,9,232.80,227.02,20.17 +sub,floor,256,256,82297,9,243.43,239.72,20.00 +sub,gmp,256,256,356796,9,57.21,56.49,20.49 +sub,gmpz,256,256,345698,9,57.73,56.51,19.88 +sub,auto,1024,1024,36143,9,558.65,529.56,20.04 +sub,inplace,1024,1024,10311,9,975.20,950.36,20.06 +sub,kernel,1024,1024,21509,9,944.40,924.93,20.23 +sub,floor,1024,1024,20622,9,980.39,969.62,20.20 +sub,gmp,1024,1024,79092,9,250.38,242.05,19.71 +sub,gmpz,1024,1024,79372,9,252.62,248.38,20.02 +sub,auto,2000,2000,19907,9,1060.04,1021.16,20.46 +sub,inplace,2000,2000,5209,9,1896.65,1834.71,19.67 +sub,kernel,2000,2000,10603,9,1866.92,1826.68,19.76 +sub,floor,2000,2000,10531,9,1894.02,1837.98,19.82 +sub,gmp,2000,2000,41175,9,495.22,483.18,20.40 +sub,gmpz,2000,2000,41378,9,493.89,485.92,20.46 +sub,auto,1024,1,99037,9,205.32,201.40,20.55 +sub,inplace,1024,1,10395,9,961.57,951.40,20.02 +sub,kernel,1024,1,27812,9,721.13,708.60,20.00 +sub,floor,1024,1,26363,9,755.81,741.34,20.01 +sub,gmp,1024,1,76967,9,260.85,256.15,20.05 +sub,gmpz,1024,1,75041,9,262.72,254.99,19.66 +shl,auto,1,13,1200480,9,16.64,16.40,19.96 +shl,inplace,1,13,4376867,9,2.31,2.30,20.23 +shl,kernel,1,13,8946932,9,2.24,2.23,20.02 +shl,kernelip,1,13,8934683,9,1.78,1.75,25.75 +shl,floor,1,13,1781020,9,11.42,11.23,20.34 +shl,gmp,1,13,15961727,9,1.24,1.23,19.83 +shl,gmpz,1,13,9802851,9,2.00,1.98,19.59 +shl,auto,4,13,1013497,9,19.20,18.76,19.60 +shl,inplace,4,13,2852958,9,3.56,3.51,20.35 +shl,kernel,4,13,5383287,9,3.72,3.69,20.06 +shl,kernelip,4,13,2890043,9,3.38,3.29,19.43 +shl,floor,4,13,1523314,9,12.79,12.38,19.66 +shl,gmp,4,13,9779705,9,1.98,1.98,19.38 +shl,gmpz,4,13,7296043,9,2.76,2.72,20.18 +shl,auto,16,13,904352,9,21.94,20.80,19.73 +shl,inplace,16,13,1690336,9,5.79,5.77,19.59 +shl,kernel,16,13,4587383,9,4.15,4.13,19.08 +shl,kernelip,16,13,1457412,9,6.81,6.76,20.13 +shl,floor,16,13,1617832,9,12.14,12.04,19.76 +shl,gmp,16,13,5373552,9,3.52,3.47,19.14 +shl,gmpz,16,13,3983823,9,5.19,5.14,20.78 +shl,auto,256,13,232884,9,85.85,85.39,19.98 +shl,inplace,256,13,275394,9,36.42,36.26,20.06 +shl,kernel,256,13,407005,9,49.33,48.65,20.09 +shl,kernelip,256,13,204152,9,48.80,48.64,19.96 +shl,floor,256,13,346682,9,57.50,57.37,19.94 +shl,gmp,256,13,541540,9,36.88,36.83,19.99 +shl,gmpz,256,13,527045,9,37.79,37.70,19.95 +shl,auto,2000,13,29906,9,649.26,609.39,19.32 +shl,inplace,2000,13,35254,9,282.65,281.69,19.93 +shl,kernel,2000,13,52212,9,383.78,377.80,20.11 +shl,kernelip,2000,13,26598,9,376.57,369.83,19.99 +shl,floor,2000,13,49698,9,407.19,401.44,20.46 +shl,gmp,2000,13,37844,9,1488.96,775.62,49.60 +shl,gmpz,2000,13,35923,9,1960.38,1262.38,61.68 +shl,auto,2000,77,23052,9,829.67,781.44,19.02 +shl,inplace,2000,77,23360,9,425.70,419.89,19.88 +shl,kernel,2000,77,37794,9,532.75,522.74,20.07 +shl,kernelip,2000,77,18669,9,522.81,516.91,19.61 +shl,floor,2000,77,36830,9,544.01,540.89,20.07 +shl,gmp,2000,77,68578,9,290.85,288.32,19.99 +shl,gmpz,2000,77,69005,9,290.92,286.47,20.21 +shr,auto,1,13,2153867,9,9.44,9.17,20.18 +shr,inplace,1,13,4460530,9,2.20,2.11,19.65 +shr,kernel,1,13,8838387,9,2.23,2.22,19.74 +shr,floor,1,13,8044867,9,2.48,2.46,19.96 +shr,gmp,1,13,19981934,9,1.00,0.99,19.89 +shr,gmpz,1,13,10053428,9,2.00,1.98,20.13 +shr,auto,4,13,1101935,9,18.79,18.39,18.99 +shr,inplace,4,13,3002607,9,3.34,3.29,19.98 +shr,kernel,4,13,5342907,9,3.74,3.73,20.18 +shr,floor,4,13,1703369,9,12.10,11.90,20.61 +shr,gmp,4,13,11324151,9,1.76,1.74,19.87 +shr,gmpz,4,13,7271467,9,2.74,2.73,19.95 +shr,auto,16,13,941115,9,21.55,21.28,20.36 +shr,inplace,16,13,1944592,9,5.14,5.09,20.06 +shr,kernel,16,13,4801739,9,4.20,4.16,20.14 +shr,floor,16,13,1541550,9,13.19,13.13,20.38 +shr,gmp,16,13,6148273,9,3.26,3.23,20.05 +shr,gmpz,16,13,4690068,9,4.26,4.24,20.92 +shr,auto,256,13,229273,9,87.65,87.19,20.14 +shr,inplace,256,13,279070,9,35.92,35.78,20.07 +shr,kernel,256,13,300531,9,66.47,66.24,19.97 +shr,floor,256,13,290047,9,76.24,75.14,22.18 +shr,gmp,256,13,456090,9,42.62,42.38,19.54 +shr,gmpz,256,13,523189,9,38.22,38.03,20.05 +shr,auto,2000,13,29917,9,694.67,656.33,21.28 +shr,inplace,2000,13,35126,9,285.30,283.22,20.04 +shr,kernel,2000,13,36211,9,524.51,515.84,19.82 +shr,floor,2000,13,38679,9,526.96,518.41,20.31 +shr,gmp,2000,13,64756,9,293.33,291.11,19.03 +shr,gmpz,2000,13,64183,9,299.11,295.46,19.59 +shr,auto,2000,77,19098,9,1029.34,991.27,19.58 +shr,inplace,2000,77,23765,9,420.77,418.24,19.98 +shr,kernel,2000,77,38764,9,520.61,516.19,20.32 +shr,floor,2000,77,37633,9,530.32,526.45,20.00 +shr,gmp,2000,77,66247,9,295.27,291.01,19.71 +shr,gmpz,2000,77,68475,9,292.59,287.12,20.23 +mul,auto,1,1,1275095,9,15.57,15.29,19.84 +mul,gmp,1,1,5244515,9,3.75,3.72,19.67 +mul,gmpz,1,1,7317582,9,2.80,2.73,20.75 +mul,auto,2,2,758538,9,28.06,26.47,21.12 +mul,kernel,2,2,3063955,9,6.61,6.54,20.32 +mul,floor,2,2,1380050,9,14.74,14.54,20.46 +mul,gmp,2,2,4266861,9,4.52,4.42,19.60 +mul,gmpz,2,2,3167705,9,6.29,6.22,20.19 +mul,auto,3,3,656931,9,31.48,30.25,20.53 +mul,kernel,3,3,2380588,9,8.14,7.95,19.50 +mul,floor,3,3,1147826,9,17.09,16.90,19.87 +mul,gmp,3,3,3161997,9,6.22,6.18,19.73 +mul,gmpz,3,3,2377243,9,8.16,8.09,19.68 +mul,auto,4,4,622023,9,29.55,29.14,18.44 +mul,kernel,4,4,1791600,9,11.22,11.12,20.29 +mul,floor,4,4,1143803,9,17.23,17.06,19.97 +mul,gmp,4,4,2482991,9,8.73,8.10,20.02 +mul,gmpz,4,4,1861695,9,10.89,10.42,20.05 +mul,auto,6,6,587159,9,33.00,32.79,19.43 +mul,kernel,6,6,1049927,9,19.14,18.90,20.10 +mul,floor,6,6,798537,9,24.00,23.72,19.23 +mul,gmp,6,6,1356434,9,14.63,14.45,19.84 +mul,gmpz,6,6,1138735,9,18.63,18.04,21.16 +mul,auto,8,8,476979,9,41.95,41.41,20.09 +mul,kernel,8,8,862713,9,23.07,23.00,19.94 +mul,floor,8,8,656138,9,30.86,30.29,20.22 +mul,gmp,8,8,900505,9,22.40,22.08,21.21 +mul,gmpz,8,8,827572,9,27.00,24.64,21.94 +mul,auto,12,12,321676,9,61.97,61.25,20.06 +mul,kernel,12,12,483803,9,41.34,41.22,20.00 +mul,floor,12,12,398893,9,49.85,49.70,19.99 +mul,gmp,12,12,451232,9,44.50,44.23,20.08 +mul,gmpz,12,12,433824,9,46.49,46.07,20.24 +mul,auto,16,16,210823,9,94.28,93.87,19.94 +mul,kernel,16,16,287093,9,69.71,69.49,20.02 +mul,floor,16,16,254367,9,78.80,78.58,20.10 +mul,gmp,16,16,261425,9,77.25,76.78,20.20 +mul,gmpz,16,16,252909,9,78.27,78.09,19.83 +mul,auto,32,32,66535,9,298.80,296.84,19.95 +mul,kernel,32,32,77056,9,258.39,258.14,19.93 +mul,floor,32,32,70391,9,281.90,278.63,19.80 +mul,gmp,32,32,73648,9,269.25,267.77,19.87 +mul,gmpz,32,32,73998,9,270.97,269.76,20.06 +mul,auto,64,64,19373,9,1035.34,1030.16,20.05 +mul,kernel,64,64,20354,9,985.34,981.01,20.05 +mul,floor,64,64,19657,9,1015.63,1012.12,19.98 +mul,gmp,64,64,25392,9,776.55,773.00,19.75 +mul,gmpz,64,64,25728,9,777.06,776.21,19.99 +mul,auto,128,128,5412,9,3671.65,3617.63,19.88 +mul,kernel,128,128,5557,9,3580.90,3563.86,19.99 +mul,floor,128,128,5399,9,3596.55,3589.53,19.50 +mul,gmp,128,128,7515,9,2671.99,2618.19,20.19 +mul,gmpz,128,128,7433,9,2702.10,2669.93,20.17 +mul,auto,256,256,1633,9,12094.30,11858.42,19.69 +mul,kernel,256,256,1697,9,11730.41,11705.41,20.01 +mul,floor,256,256,1631,9,11888.85,11740.22,19.35 +mul,gmp,256,256,1928,9,10392.79,10296.44,20.08 +mul,gmpz,256,256,2513,9,7952.94,7843.58,19.95 +mul,auto,512,512,518,9,37899.86,37271.96,19.59 +mul,kernel,512,512,534,9,37225.50,36933.29,20.02 +mul,floor,512,512,544,9,37089.69,36838.69,20.38 +mul,gmp,512,512,938,9,21397.25,21323.29,20.09 +mul,gmpz,512,512,1035,9,19086.23,19025.32,19.81 +mul,auto,1000,1000,182,9,109037.09,108188.64,19.89 +mul,kernel,1000,1000,177,9,107628.53,106411.25,19.06 +mul,floor,1000,1000,188,9,107040.34,106056.96,20.29 +mul,gmp,1000,1000,361,9,55247.69,54841.64,19.99 +mul,gmpz,1000,1000,360,9,54993.87,54745.49,19.84 +mul,auto,2000,2000,64,9,302673.17,301170.58,19.40 +mul,kernel,2000,2000,66,9,319402.79,301409.73,21.21 +mul,floor,2000,2000,65,9,303249.35,302462.18,19.74 +mul,gmp,2000,2000,135,9,150466.36,148538.59,20.49 +mul,gmpz,2000,2000,135,9,148793.52,148324.07,20.20 +mul,auto,2000,100,428,9,46926.40,46648.66,20.19 +mul,kernel,2000,100,429,9,46858.49,46594.21,20.11 +mul,floor,2000,100,421,9,46690.52,46556.02,19.68 +mul,gmp,2000,100,574,9,35159.26,34809.23,20.16 +mul,gmpz,2000,100,574,9,34579.41,34505.59,19.89 +sqr,auto,4,4,689231,9,30.36,29.08,21.46 +sqr,kernel,4,4,1768417,9,11.56,11.12,21.10 +sqr,floor,4,4,1165699,9,16.93,16.02,19.65 +sqr,gmp,4,4,2961475,9,6.71,6.69,19.95 +sqr,gmpz,4,4,2128690,9,8.96,8.92,19.72 +sqr,auto,16,16,224105,9,88.52,87.79,19.82 +sqr,kernel,16,16,318524,9,61.97,61.71,19.76 +sqr,floor,16,16,277996,9,69.59,69.43,19.41 +sqr,gmp,16,16,322077,9,61.94,61.58,20.00 +sqr,gmpz,16,16,304175,9,65.94,65.59,20.05 +sqr,auto,64,64,31918,9,624.80,623.91,19.95 +sqr,kernel,64,64,34460,9,586.28,578.55,20.19 +sqr,floor,64,64,33256,9,602.93,598.00,20.04 +sqr,gmp,64,64,29687,9,675.55,658.91,19.94 +sqr,gmpz,64,64,29458,9,676.84,671.18,19.89 +sqr,auto,512,512,805,9,24950.16,24667.91,20.03 +sqr,kernel,512,512,811,9,24356.20,24253.55,19.78 +sqr,floor,512,512,818,9,24418.86,24180.52,19.96 +sqr,gmp,512,512,1091,9,18355.41,18066.41,20.13 +sqr,gmpz,512,512,1029,9,19886.34,19664.80,20.61 +sqr,auto,2000,2000,87,9,229935.34,227097.70,20.01 +sqr,kernel,2000,2000,87,9,229045.02,225160.92,19.89 +sqr,floor,2000,2000,89,9,224161.52,222049.63,20.11 +sqr,gmp,2000,2000,159,9,121241.09,120567.61,19.27 +sqr,gmpz,2000,2000,166,9,121862.95,118916.92,20.25 +divrem,auto,2,1,655411,9,31.15,30.43,20.45 +divrem,kernel,2,1,3548196,9,5.63,5.60,20.00 +divrem,floor,2,1,1488498,9,13.72,13.46,20.44 +divrem,gmp,2,1,3986477,9,5.01,5.00,20.00 +divrem,gmpz,2,1,2276030,9,8.73,8.70,19.88 +divrem,auto,8,4,217269,9,91.68,91.26,19.96 +divrem,kernel,8,4,491798,9,40.66,39.86,19.96 +divrem,floor,8,4,346663,9,56.39,56.08,19.59 +divrem,gmp,8,4,498212,9,39.76,39.25,19.82 +divrem,gmpz,8,4,459444,9,42.99,41.99,19.72 +divrem,auto,32,16,39531,9,475.67,466.15,18.72 +divrem,kernel,32,16,51527,9,395.64,391.97,20.46 +divrem,floor,32,16,50380,9,412.92,398.48,20.90 +divrem,gmp,32,16,94697,9,207.61,205.43,19.67 +divrem,gmpz,32,16,94867,9,211.72,210.41,20.19 +divrem,auto,128,64,5378,9,3740.61,3713.62,20.09 +divrem,kernel,128,64,5546,9,3566.70,3487.37,19.78 +divrem,floor,128,64,5593,9,3593.91,3515.31,20.07 +divrem,gmp,128,64,11125,9,1781.53,1774.75,19.84 +divrem,gmpz,128,64,11296,9,1784.28,1768.55,20.15 +divrem,auto,512,256,668,9,30025.32,29712.39,20.08 +divrem,kernel,512,256,688,9,29469.48,29085.09,20.25 +divrem,floor,512,256,678,9,29397.86,29188.42,19.97 +divrem,gmp,512,256,1223,9,16399.36,16256.13,20.04 +divrem,gmpz,512,256,1224,9,16362.75,16262.02,20.06 +divrem,auto,2000,1000,86,9,233752.42,231080.43,20.06 +divrem,kernel,2000,1000,87,9,231917.15,230813.22,20.17 +divrem,floor,2000,1000,86,9,231785.37,230904.56,19.97 +divrem,gmp,2000,1000,146,9,136696.06,135702.05,19.99 +divrem,gmpz,2000,1000,148,9,135632.03,134266.89,20.08 +divrem,auto,4000,2000,29,9,687495.69,683086.21,20.03 +divrem,kernel,4000,2000,29,9,690405.17,679752.86,20.21 +divrem,floor,4000,2000,29,9,694445.41,683629.31,20.14 +divrem,gmp,4000,2000,57,9,348062.86,345325.30,19.83 +divrem,gmpz,4000,2000,58,9,350732.76,343687.50,20.31 +divrem,auto,2000,100,208,9,95326.32,94538.06,19.81 +divrem,kernel,2000,100,214,9,93777.45,93592.10,20.10 +divrem,floor,2000,100,208,9,95404.85,94263.22,19.80 +divrem,gmp,2000,100,286,9,69377.33,69170.60,19.92 +divrem,gmpz,2000,100,292,9,69548.52,69254.14,20.30 +divrem,auto,65536,1,82,9,243383.63,236972.05,19.92 +divrem,kernel,65536,1,87,9,227066.57,223254.31,19.76 +divrem,floor,65536,1,90,9,225231.48,223963.43,20.27 +divrem,gmp,65536,1,119,9,170168.07,166683.82,20.26 +divrem,gmpz,65536,1,118,9,169896.54,167494.36,20.03 +tochars,auto,1,10,3328321,9,5.98,5.97,19.90 +tochars,kernel,1,10,586851,9,33.57,32.94,19.67 +tochars,gmp,1,10,1199612,9,16.81,16.37,20.07 +tochars,gmpz,1,10,776692,9,25.61,25.51,19.93 +tochars,auto,4,10,256922,9,77.20,77.02,19.87 +tochars,kernel,4,10,203618,9,98.50,96.02,20.03 +tochars,gmp,4,10,279062,9,72.83,72.11,20.42 +tochars,gmpz,4,10,201816,9,103.59,95.45,20.43 +tochars,auto,16,10,24185,9,816.24,801.96,19.82 +tochars,kernel,16,10,28207,9,731.75,725.64,20.80 +tochars,gmp,16,10,39367,9,506.30,499.69,19.92 +tochars,gmpz,16,10,33768,9,597.30,589.19,20.16 +tochars,auto,64,10,4270,9,4659.40,4536.54,19.81 +tochars,kernel,64,10,4425,9,4444.76,4325.89,19.61 +tochars,gmp,64,10,7067,9,2836.91,2772.62,20.04 +tochars,gmpz,64,10,6349,9,3125.73,3047.75,19.77 +tochars,auto,256,10,581,9,33404.33,32244.62,19.36 +tochars,kernel,256,10,597,9,32948.42,32416.60,19.69 +tochars,gmp,256,10,1055,9,18933.93,18625.28,19.94 +tochars,gmpz,256,10,985,9,20233.92,19891.50,19.86 +tochars,auto,2000,10,30,9,675531.97,653884.70,20.20 +tochars,kernel,2000,10,30,9,667859.70,664655.53,20.06 +tochars,gmp,2000,10,50,9,401745.84,398949.16,20.11 +tochars,gmpz,2000,10,50,9,414769.16,414035.00,20.84 +tochars,auto,16,16,229937,9,88.11,85.33,20.30 +tochars,gmp,16,16,244871,9,79.74,78.58,19.60 +tochars,gmpz,16,16,126044,9,158.75,157.38,19.99 +tochars,auto,2000,16,2016,9,9940.68,9487.81,20.09 +tochars,gmp,2000,16,2113,9,9356.05,8889.10,19.43 +tochars,gmpz,2000,16,1162,9,16742.58,16666.42,19.56 +fromchars,auto,4,10,211749,9,90.58,89.79,19.19 +fromchars,kernel,4,10,622379,9,32.18,31.14,20.15 +fromchars,gmp,4,10,630158,9,31.60,31.22,19.89 +fromchars,gmpz,4,10,259530,9,76.76,75.80,19.88 +fromchars,auto,16,10,50993,9,399.11,390.02,20.37 +fromchars,kernel,16,10,102570,9,192.72,190.57,19.87 +fromchars,gmp,16,10,140923,9,144.64,143.15,20.59 +fromchars,gmpz,16,10,62850,9,319.37,315.99,20.21 +fromchars,auto,64,10,9014,9,2195.91,2179.56,19.83 +fromchars,kernel,64,10,10694,9,1843.92,1786.13,19.64 +fromchars,gmp,64,10,20896,9,955.51,940.74,19.96 +fromchars,gmpz,64,10,12522,9,1595.07,1592.00,19.99 +fromchars,auto,256,10,1448,9,13796.70,13773.83,19.98 +fromchars,kernel,256,10,1731,9,11521.66,11444.61,19.94 +fromchars,gmp,256,10,2542,9,7874.57,7825.37,20.02 +fromchars,gmpz,256,10,1867,9,10752.75,10633.01,20.07 +fromchars,auto,2000,10,67,9,299432.21,298764.30,20.07 +fromchars,kernel,2000,10,71,9,281651.99,280278.17,19.99 +fromchars,gmp,2000,10,110,9,182790.91,181026.89,20.08 +fromchars,gmpz,2000,10,100,9,201920.84,201442.92,20.21 diff --git a/tests/beman/big_int/perf/item1/macr3_base64_seed1b.csv b/tests/beman/big_int/perf/item1/macr3_base64_seed1b.csv new file mode 100644 index 00000000..fe58d038 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_base64_seed1b.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T17:56:44Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2873029,9,6.95,6.90,19.97 +add,inplace,1,1,3095420,9,3.11,3.10,19.40 +add,kernel,1,1,17493649,9,1.14,1.14,19.99 +add,floor,1,1,2096836,9,9.44,9.19,19.70 +add,gmp,1,1,13427722,9,1.49,1.48,20.00 +add,gmpz,1,1,6533750,9,3.06,2.98,20.79 +add,auto,2,2,1395072,9,14.74,14.38,20.56 +add,inplace,2,2,2659702,9,3.76,3.75,20.09 +add,kernel,2,2,14367227,9,1.39,1.39,20.06 +add,floor,2,2,2065155,9,9.67,9.45,19.91 +add,gmp,2,2,9861361,9,1.99,1.98,19.68 +add,gmpz,2,2,6544797,9,3.07,3.02,23.97 +add,auto,4,4,1296557,9,15.42,15.31,20.18 +add,inplace,4,4,2591172,9,3.74,3.62,19.35 +add,kernel,4,4,10303656,9,1.95,1.94,20.30 +add,floor,4,4,1869375,9,10.69,10.59,20.43 +add,gmp,4,4,11189426,9,1.76,1.74,19.74 +add,gmpz,4,4,5459002,9,4.30,3.76,23.06 +add,auto,8,8,1238058,9,15.97,15.67,19.79 +add,inplace,8,8,1913081,9,5.07,5.04,19.62 +add,kernel,8,8,5459063,9,3.56,3.51,19.44 +add,floor,8,8,1635649,9,12.01,11.73,19.68 +add,gmp,8,8,8842262,9,2.26,2.25,20.00 +add,gmpz,8,8,3709256,9,5.33,5.20,19.77 +add,auto,16,16,1227813,9,16.30,16.08,20.04 +add,inplace,16,16,1026046,9,9.80,9.73,20.22 +add,kernel,16,16,2600155,9,7.59,7.55,19.82 +add,floor,16,16,1376480,9,14.26,13.94,19.70 +add,gmp,16,16,6071969,9,3.30,3.24,19.95 +add,gmpz,16,16,4966188,9,4.55,4.50,22.70 +add,auto,64,64,365773,9,54.74,54.39,20.02 +add,inplace,64,64,190370,9,52.40,50.56,19.79 +add,kernel,64,64,412233,9,48.40,47.62,19.98 +add,floor,64,64,322464,9,64.74,59.72,20.78 +add,gmp,64,64,1786329,9,11.23,11.20,20.19 +add,gmpz,64,64,1509032,9,13.12,13.05,19.80 +add,auto,256,256,135875,9,149.39,147.42,20.67 +add,inplace,256,256,41056,9,241.98,232.79,19.79 +add,kernel,256,256,83772,9,232.00,226.55,19.49 +add,floor,256,256,81766,9,250.55,243.95,20.49 +add,gmp,256,256,348404,9,56.97,55.98,19.81 +add,gmpz,256,256,343075,9,57.91,57.10,19.86 +add,auto,1024,1024,34749,9,559.88,548.07,19.67 +add,inplace,1024,1024,10022,9,991.54,982.00,19.88 +add,kernel,1024,1024,21196,9,968.36,956.58,20.47 +add,floor,1024,1024,20621,9,986.76,955.01,20.29 +add,gmp,1024,1024,79135,9,252.85,249.15,20.01 +add,gmpz,1024,1024,78664,9,255.84,254.11,20.12 +add,auto,2000,2000,18500,9,1096.38,1054.84,20.27 +add,inplace,2000,2000,5140,9,1964.56,1902.44,20.08 +add,kernel,2000,2000,10032,9,1930.66,1875.98,19.36 +add,floor,2000,2000,10214,9,1958.63,1931.33,20.00 +add,gmp,2000,2000,39043,9,507.54,499.54,20.11 +add,gmpz,2000,2000,39736,9,500.17,483.85,19.71 +add,auto,1024,1,117073,9,190.22,170.17,22.34 +add,inplace,1024,1,10089,9,977.95,955.36,19.78 +add,kernel,1024,1,26810,9,737.08,715.91,19.73 +add,floor,1024,1,26197,9,782.88,742.52,20.66 +add,gmp,1024,1,73028,9,268.52,262.01,19.66 +add,gmpz,1024,1,76729,9,266.99,261.28,20.42 +sub,auto,1,1,2584706,9,7.81,7.66,20.16 +sub,inplace,1,1,3298591,9,3.34,3.02,19.46 +sub,kernel,1,1,19246062,9,1.05,1.03,20.08 +sub,floor,1,1,11479551,9,1.74,1.74,19.99 +sub,gmp,1,1,13404145,9,1.49,1.49,20.02 +sub,gmpz,1,1,7289898,9,2.74,2.73,19.99 +sub,auto,2,2,1319647,9,14.95,14.54,19.78 +sub,inplace,2,2,3049012,9,3.25,3.24,20.38 +sub,kernel,2,2,14119612,9,1.40,1.39,19.80 +sub,floor,2,2,2118027,9,9.48,9.44,20.18 +sub,gmp,2,2,10022229,9,1.99,1.95,19.89 +sub,gmpz,2,2,5957496,9,3.24,3.22,19.30 +sub,auto,4,4,1234437,9,15.47,15.31,19.36 +sub,inplace,4,4,2645036,9,3.80,3.75,20.56 +sub,kernel,4,4,10114213,9,1.97,1.96,19.94 +sub,floor,4,4,2005072,9,10.10,9.68,20.26 +sub,gmp,4,4,11348024,9,1.74,1.74,19.80 +sub,gmpz,4,4,6693787,9,3.01,2.99,20.18 +sub,auto,8,8,1222541,9,16.29,15.75,20.13 +sub,inplace,8,8,1978110,9,5.01,4.94,19.82 +sub,kernel,8,8,5598289,9,3.52,3.51,19.86 +sub,floor,8,8,1744090,9,11.46,11.40,20.58 +sub,gmp,8,8,8922981,9,2.24,2.23,20.01 +sub,gmpz,8,8,5734029,9,3.50,3.48,20.07 +sub,auto,16,16,1091761,9,18.26,18.07,19.94 +sub,inplace,16,16,779544,9,12.43,11.96,19.35 +sub,kernel,16,16,2597950,9,7.73,7.69,20.24 +sub,floor,16,16,1291422,9,15.47,14.89,19.93 +sub,gmp,16,16,6073908,9,3.25,3.12,19.48 +sub,gmpz,16,16,4466781,9,4.47,4.25,19.58 +sub,auto,64,64,472427,9,41.70,41.13,20.02 +sub,inplace,64,64,197499,9,51.18,50.26,20.18 +sub,kernel,64,64,403966,9,49.99,48.75,20.27 +sub,floor,64,64,326313,9,61.54,59.99,19.93 +sub,gmp,64,64,1750531,9,11.53,11.41,20.35 +sub,gmpz,64,64,1432300,9,13.92,13.76,19.94 +sub,auto,256,256,147285,9,133.30,132.27,19.66 +sub,inplace,256,256,41522,9,239.94,233.89,19.79 +sub,kernel,256,256,81352,9,237.32,227.95,19.32 +sub,floor,256,256,80817,9,248.95,244.02,20.06 +sub,gmp,256,256,347939,9,57.34,55.87,19.88 +sub,gmpz,256,256,345015,9,58.15,57.92,20.14 +sub,auto,1024,1024,36018,9,565.90,532.67,20.27 +sub,inplace,1024,1024,10196,9,997.38,973.62,20.30 +sub,kernel,1024,1024,20605,9,981.62,969.62,20.31 +sub,floor,1024,1024,19501,9,1007.06,987.66,19.61 +sub,gmp,1024,1024,79259,9,253.71,247.45,20.04 +sub,gmpz,1024,1024,77430,9,255.38,252.16,19.80 +sub,auto,2000,2000,18372,9,1099.89,1048.41,20.25 +sub,inplace,2000,2000,5055,9,1956.19,1907.37,19.71 +sub,kernel,2000,2000,10501,9,1942.88,1896.55,20.36 +sub,floor,2000,2000,9751,9,1985.01,1938.19,19.35 +sub,gmp,2000,2000,40321,9,495.37,483.66,19.92 +sub,gmpz,2000,2000,39902,9,503.08,491.23,20.01 +sub,auto,1024,1,97639,9,212.16,204.77,21.01 +sub,inplace,1024,1,10087,9,987.70,964.59,19.85 +sub,kernel,1024,1,27133,9,741.28,725.02,20.05 +sub,floor,1024,1,26127,9,770.54,759.25,20.30 +sub,gmp,1024,1,75268,9,263.76,262.51,19.93 +sub,gmpz,1024,1,73649,9,267.08,263.23,19.73 +shl,auto,1,13,1195956,9,16.85,16.65,21.92 +shl,inplace,1,13,4315391,9,2.36,2.30,20.28 +shl,kernel,1,13,8838448,9,2.26,2.20,19.96 +shl,kernelip,1,13,8077115,9,1.75,1.27,26.99 +shl,floor,1,13,1817222,9,11.01,10.70,19.99 +shl,gmp,1,13,15948775,9,1.25,1.25,19.92 +shl,gmpz,1,13,10060830,9,1.99,1.99,20.07 +shl,auto,4,13,1071795,9,19.00,18.75,20.40 +shl,inplace,4,13,2799886,9,3.59,3.55,20.07 +shl,kernel,4,13,4856001,9,3.78,3.73,18.49 +shl,kernelip,4,13,2886405,9,3.38,3.33,19.50 +shl,floor,4,13,1541169,9,14.30,13.16,22.36 +shl,gmp,4,13,10045689,9,1.99,1.98,20.05 +shl,gmpz,4,13,7293781,9,2.78,2.74,20.34 +shl,auto,16,13,857804,9,21.60,21.18,18.87 +shl,inplace,16,13,1715614,9,5.82,5.80,20.02 +shl,kernel,16,13,4837150,9,4.13,4.11,19.97 +shl,kernelip,16,13,1344121,9,6.91,6.72,18.45 +shl,floor,16,13,1643242,9,13.86,12.30,23.39 +shl,gmp,16,13,5309966,9,3.51,3.49,18.62 +shl,gmpz,16,13,4119847,9,4.93,4.83,20.43 +shl,auto,256,13,225406,9,88.22,87.17,19.95 +shl,inplace,256,13,273417,9,37.11,36.35,20.27 +shl,kernel,256,13,403829,9,49.31,49.01,19.92 +shl,kernelip,256,13,204729,9,48.87,48.71,20.03 +shl,floor,256,13,345748,9,57.84,57.43,20.02 +shl,gmp,256,13,542183,9,37.11,36.98,20.12 +shl,gmpz,256,13,525400,9,37.95,37.87,19.95 +shl,auto,2000,13,31187,9,657.21,636.86,20.42 +shl,inplace,2000,13,35117,9,284.29,282.93,19.98 +shl,kernel,2000,13,51990,9,385.12,383.36,20.05 +shl,kernelip,2000,13,26576,9,378.15,376.74,20.21 +shl,floor,2000,13,49655,9,405.32,399.08,20.14 +shl,gmp,2000,13,43913,9,1981.02,1390.91,58.87 +shl,gmpz,2000,13,42040,9,1510.58,568.16,42.82 +shl,auto,2000,77,27146,9,814.13,784.18,21.19 +shl,inplace,2000,77,23427,9,426.83,424.17,20.02 +shl,kernel,2000,77,37721,9,535.55,531.56,20.23 +shl,kernelip,2000,77,19059,9,522.76,518.47,19.92 +shl,floor,2000,77,36958,9,540.95,538.13,20.01 +shl,gmp,2000,77,68645,9,293.34,288.81,20.20 +shl,gmpz,2000,77,66371,9,299.78,294.53,19.75 +shr,auto,1,13,2089514,9,9.09,8.80,19.01 +shr,inplace,1,13,4723509,9,2.24,2.12,20.86 +shr,kernel,1,13,8907353,9,2.25,2.24,20.07 +shr,floor,1,13,7995297,9,2.50,2.49,20.04 +shr,gmp,1,13,20000001,9,1.00,1.00,20.06 +shr,gmpz,1,13,9916456,9,2.00,1.99,19.82 +shr,auto,4,13,1065117,9,18.57,18.20,19.84 +shr,inplace,4,13,2987800,9,3.37,3.30,20.59 +shr,kernel,4,13,5536657,9,3.95,3.67,21.65 +shr,floor,4,13,1691402,9,12.46,11.95,21.44 +shr,gmp,4,13,11470194,9,1.75,1.74,20.05 +shr,gmpz,4,13,7310928,9,2.74,2.72,20.04 +shr,auto,16,13,961459,9,21.57,20.81,20.59 +shr,inplace,16,13,1969613,9,5.12,5.08,20.23 +shr,kernel,16,13,4776244,9,4.20,4.18,20.07 +shr,floor,16,13,1560422,9,13.26,13.10,20.73 +shr,gmp,16,13,6167689,9,3.25,3.24,20.31 +shr,gmpz,16,13,4687060,9,4.26,4.23,19.96 +shr,auto,256,13,225747,9,87.78,87.18,19.90 +shr,inplace,256,13,277851,9,36.00,35.93,20.01 +shr,kernel,256,13,300321,9,66.55,66.31,19.99 +shr,floor,256,13,288309,9,76.13,75.25,21.93 +shr,gmp,256,13,543334,9,36.86,36.69,20.03 +shr,gmpz,256,13,522297,9,38.19,38.06,19.95 +shr,auto,2000,13,29533,9,704.23,685.29,21.37 +shr,inplace,2000,13,35342,9,283.03,282.57,20.07 +shr,kernel,2000,13,38725,9,512.57,510.83,19.87 +shr,floor,2000,13,37891,9,526.45,523.13,20.06 +shr,gmp,2000,13,65269,9,328.13,301.09,21.07 +shr,gmpz,2000,13,68492,9,313.46,291.00,21.59 +shr,auto,2000,77,19830,9,1012.49,976.50,20.11 +shr,inplace,2000,77,23763,9,421.63,419.93,20.05 +shr,kernel,2000,77,38683,9,516.31,510.66,19.96 +shr,floor,2000,77,37683,9,538.23,529.12,20.23 +shr,gmp,2000,77,67725,9,293.37,291.36,19.84 +shr,gmpz,2000,77,67084,9,290.08,287.60,19.83 +mul,auto,1,1,1290839,9,15.58,15.42,20.00 +mul,gmp,1,1,5324425,9,3.75,3.73,19.96 +mul,gmpz,1,1,7294281,9,2.76,2.74,20.10 +mul,auto,2,2,701766,9,28.14,25.84,19.59 +mul,kernel,2,2,3175352,9,6.53,6.32,20.66 +mul,floor,2,2,1353415,9,14.68,14.62,19.93 +mul,gmp,2,2,4234392,9,4.74,4.72,20.08 +mul,gmpz,2,2,3003208,9,6.88,6.52,20.43 +mul,auto,3,3,653858,9,30.02,29.53,19.66 +mul,kernel,3,3,2433328,9,8.47,8.20,20.74 +mul,floor,3,3,1167020,9,16.90,16.58,19.65 +mul,gmp,3,3,3215119,9,6.24,6.10,20.03 +mul,gmpz,3,3,2221942,9,8.52,8.16,18.78 +mul,auto,4,4,676727,9,29.05,28.93,19.74 +mul,kernel,4,4,1777716,9,11.25,11.10,20.01 +mul,floor,4,4,1181798,9,16.79,16.48,19.96 +mul,gmp,4,4,2131232,9,9.54,8.55,19.90 +mul,gmpz,4,4,2053972,9,10.94,9.76,21.67 +mul,auto,6,6,613981,9,33.36,32.92,20.47 +mul,kernel,6,6,1042587,9,19.06,18.95,19.89 +mul,floor,6,6,843664,9,23.64,23.57,20.03 +mul,gmp,6,6,1385014,9,14.55,14.34,20.25 +mul,gmpz,6,6,1097292,9,18.69,17.95,20.56 +mul,auto,8,8,475712,9,41.82,41.54,19.90 +mul,kernel,8,8,869590,9,23.04,22.91,20.03 +mul,floor,8,8,652173,9,30.86,30.47,20.10 +mul,gmp,8,8,835882,9,22.67,22.28,19.44 +mul,gmpz,8,8,774373,9,26.09,25.05,20.28 +mul,auto,12,12,320947,9,61.88,61.58,19.96 +mul,kernel,12,12,485067,9,41.09,40.88,19.97 +mul,floor,12,12,405330,9,49.73,49.49,20.17 +mul,gmp,12,12,449521,9,44.74,44.36,20.13 +mul,gmpz,12,12,427844,9,46.80,46.60,20.03 +mul,auto,16,16,210655,9,95.22,94.80,20.07 +mul,kernel,16,16,284503,9,70.16,69.66,19.95 +mul,floor,16,16,252559,9,79.08,78.82,19.97 +mul,gmp,16,16,257105,9,77.87,77.48,20.06 +mul,gmpz,16,16,252386,9,79.08,78.19,19.95 +mul,auto,32,32,66247,9,298.62,297.07,19.79 +mul,kernel,32,32,77142,9,260.17,259.07,20.07 +mul,floor,32,32,70988,9,284.53,280.08,20.17 +mul,gmp,32,32,75581,9,268.27,264.56,20.26 +mul,gmpz,32,32,74131,9,271.61,268.29,20.12 +mul,auto,64,64,19288,9,1040.31,1034.34,20.06 +mul,kernel,64,64,20275,9,986.79,980.28,20.01 +mul,floor,64,64,19672,9,1015.13,1010.31,19.96 +mul,gmp,64,64,25775,9,776.12,774.29,20.02 +mul,gmpz,64,64,25652,9,779.64,776.63,20.03 +mul,auto,128,128,5430,9,3649.18,3617.36,19.85 +mul,kernel,128,128,5544,9,3578.88,3567.38,19.95 +mul,floor,128,128,5576,9,3591.19,3582.05,20.02 +mul,gmp,128,128,7540,9,2654.05,2642.95,20.02 +mul,gmpz,128,128,7511,9,2655.97,2640.79,20.09 +mul,auto,256,256,1675,9,11902.29,11852.36,19.95 +mul,kernel,256,256,1698,9,11773.43,11744.70,20.03 +mul,floor,256,256,1699,9,11810.92,11777.37,20.08 +mul,gmp,256,256,2512,9,7828.82,7804.36,19.67 +mul,gmpz,256,256,2541,9,7895.66,7832.17,20.04 +mul,auto,512,512,537,9,37504.89,37144.09,20.19 +mul,kernel,512,512,541,9,37173.21,36892.72,20.10 +mul,floor,512,512,538,9,37189.82,36996.44,20.03 +mul,gmp,512,512,935,9,21432.89,21338.73,20.06 +mul,gmpz,512,512,1054,9,19042.26,18962.96,20.06 +mul,auto,1000,1000,187,9,107301.70,107195.63,20.07 +mul,kernel,1000,1000,188,9,107119.02,106955.68,20.16 +mul,floor,1000,1000,187,9,107308.60,106859.85,20.08 +mul,gmp,1000,1000,363,9,55026.98,54886.25,20.00 +mul,gmpz,1000,1000,362,9,55321.13,54864.52,20.05 +mul,auto,2000,2000,66,9,303331.44,302096.59,20.07 +mul,kernel,2000,2000,67,9,302192.79,301660.45,20.27 +mul,floor,2000,2000,66,9,303844.70,302077.03,20.13 +mul,gmp,2000,2000,136,9,149215.99,148415.14,20.33 +mul,gmpz,2000,2000,134,9,149031.40,148146.14,20.02 +mul,auto,2000,100,425,9,46936.67,46837.55,19.97 +mul,kernel,2000,100,428,9,46853.48,46758.28,20.10 +mul,floor,2000,100,426,9,47028.66,46875.00,20.03 +mul,gmp,2000,100,568,9,35265.55,35059.42,20.01 +mul,gmpz,2000,100,574,9,34823.32,34596.25,19.99 +sqr,auto,4,4,626481,9,29.48,29.03,18.72 +sqr,kernel,4,4,1747816,9,11.37,11.11,19.92 +sqr,floor,4,4,1192663,9,16.49,16.42,19.69 +sqr,gmp,4,4,2861588,9,7.00,6.89,20.01 +sqr,gmpz,4,4,2042182,9,9.69,9.68,19.82 +sqr,auto,16,16,224902,9,89.04,88.59,20.01 +sqr,kernel,16,16,320929,9,62.10,61.98,19.95 +sqr,floor,16,16,287059,9,69.88,69.62,20.07 +sqr,gmp,16,16,320249,9,62.22,61.83,20.00 +sqr,gmpz,16,16,304548,9,66.05,65.78,20.13 +sqr,auto,64,64,31806,9,629.73,627.69,20.02 +sqr,kernel,64,64,34235,9,588.65,585.44,20.18 +sqr,floor,64,64,33091,9,602.61,599.74,19.95 +sqr,gmp,64,64,29658,9,676.86,668.74,20.03 +sqr,gmpz,64,64,29437,9,677.56,673.96,19.96 +sqr,auto,512,512,816,9,24695.47,24569.80,20.14 +sqr,kernel,512,512,806,9,24449.70,24359.60,19.85 +sqr,floor,512,512,817,9,24419.78,24328.54,19.94 +sqr,gmp,512,512,1086,9,18402.70,18253.41,19.98 +sqr,gmpz,512,512,1009,9,19784.40,19595.60,19.97 +sqr,auto,2000,2000,89,9,225007.96,223871.73,20.04 +sqr,kernel,2000,2000,89,9,224038.85,222593.64,19.93 +sqr,floor,2000,2000,89,9,225346.91,222547.75,20.03 +sqr,gmp,2000,2000,165,9,121532.83,120468.44,20.05 +sqr,gmpz,2000,2000,166,9,121660.39,120758.28,20.19 +divrem,auto,2,1,594069,9,31.94,31.36,19.20 +divrem,kernel,2,1,3551589,9,5.66,5.62,20.12 +divrem,floor,2,1,1492104,9,13.24,13.19,20.03 +divrem,gmp,2,1,3887842,9,5.16,5.08,20.03 +divrem,gmpz,2,1,2291294,9,8.78,8.73,20.10 +divrem,auto,8,4,221728,9,91.46,90.70,20.30 +divrem,kernel,8,4,486419,9,41.22,40.99,20.09 +divrem,floor,8,4,351780,9,57.61,56.66,20.21 +divrem,gmp,8,4,497702,9,40.54,39.72,20.16 +divrem,gmpz,8,4,455393,9,42.73,42.32,19.59 +divrem,auto,32,16,41001,9,489.35,477.19,20.09 +divrem,kernel,32,16,49246,9,406.66,393.54,19.92 +divrem,floor,32,16,48106,9,419.22,411.11,20.16 +divrem,gmp,32,16,95229,9,212.34,208.49,20.22 +divrem,gmpz,32,16,94475,9,214.42,211.46,20.32 +divrem,auto,128,64,5200,9,3792.33,3731.52,19.73 +divrem,kernel,128,64,5565,9,3702.10,3602.60,20.49 +divrem,floor,128,64,5429,9,3753.55,3591.69,20.28 +divrem,gmp,128,64,10901,9,1836.40,1785.36,20.16 +divrem,gmpz,128,64,10918,9,1817.58,1795.78,19.87 +divrem,auto,512,256,658,9,30422.24,30075.23,20.03 +divrem,kernel,512,256,659,9,30044.95,29606.28,19.75 +divrem,floor,512,256,671,9,29893.26,29553.28,20.05 +divrem,gmp,512,256,1221,9,16423.15,16325.59,20.04 +divrem,gmpz,512,256,1208,9,16788.49,16638.73,20.24 +divrem,auto,2000,1000,84,9,236071.43,233549.61,19.86 +divrem,kernel,2000,1000,86,9,237332.37,233824.13,20.43 +divrem,floor,2000,1000,85,9,232327.94,231764.71,19.81 +divrem,gmp,2000,1000,143,9,139978.15,136953.96,19.96 +divrem,gmpz,2000,1000,147,9,141732.71,135509.35,20.70 +divrem,auto,4000,2000,28,9,712983.64,707998.54,19.96 +divrem,kernel,4000,2000,29,9,704436.79,699310.34,20.41 +divrem,floor,4000,2000,29,9,700712.62,694396.55,20.39 +divrem,gmp,4000,2000,57,9,355009.51,351154.96,20.25 +divrem,gmpz,4000,2000,57,9,352782.89,347482.46,20.24 +divrem,auto,2000,100,208,9,95579.93,94851.37,20.08 +divrem,kernel,2000,100,214,9,94221.38,93939.84,20.21 +divrem,floor,2000,100,213,9,93800.08,93550.86,19.98 +divrem,gmp,2000,100,289,9,70563.44,69367.79,20.40 +divrem,gmpz,2000,100,283,9,70337.31,69441.55,19.85 +divrem,auto,65536,1,81,9,251074.07,240942.90,20.19 +divrem,kernel,65536,1,86,9,232797.48,226852.22,19.92 +divrem,floor,65536,1,87,9,233291.18,231102.48,20.30 +divrem,gmp,65536,1,118,9,172671.26,169545.91,20.36 +divrem,gmpz,65536,1,114,9,177210.16,174070.18,20.23 +tochars,auto,1,10,3262758,9,6.09,6.02,19.83 +tochars,kernel,1,10,586768,9,34.15,32.94,19.91 +tochars,gmp,1,10,1221168,9,16.58,16.39,20.29 +tochars,gmpz,1,10,780309,9,25.70,25.56,20.10 +tochars,auto,4,10,257086,9,77.32,77.12,19.99 +tochars,kernel,4,10,198466,9,102.53,99.66,20.24 +tochars,gmp,4,10,275345,9,72.75,71.42,20.02 +tochars,gmpz,4,10,214831,9,93.20,92.57,20.04 +tochars,auto,16,10,23909,9,837.56,813.06,19.99 +tochars,kernel,16,10,26935,9,748.41,727.44,20.27 +tochars,gmp,16,10,38786,9,513.48,501.43,19.85 +tochars,gmpz,16,10,33806,9,611.47,597.58,20.63 +tochars,auto,64,10,4192,9,4781.12,4647.61,19.99 +tochars,kernel,64,10,4327,9,4586.95,4476.22,19.73 +tochars,gmp,64,10,6907,9,2847.51,2806.24,19.65 +tochars,gmpz,64,10,6320,9,3172.03,3134.02,20.00 +tochars,auto,256,10,580,9,34042.53,33625.00,19.75 +tochars,kernel,256,10,593,9,33388.21,32396.85,19.75 +tochars,gmp,256,10,1056,9,19058.87,18968.20,20.15 +tochars,gmpz,256,10,992,9,20366.26,20163.14,20.21 +tochars,auto,2000,10,30,9,680925.00,676559.70,20.42 +tochars,kernel,2000,10,30,9,669841.67,664833.33,20.09 +tochars,gmp,2000,10,50,9,403310.00,401603.34,20.16 +tochars,gmpz,2000,10,48,9,417090.27,413092.88,20.01 +tochars,auto,16,16,227869,9,87.81,84.66,20.03 +tochars,gmp,16,16,251610,9,81.45,78.86,20.32 +tochars,gmpz,16,16,127548,9,161.00,159.09,20.57 +tochars,auto,2000,16,2099,9,9963.81,9437.01,20.70 +tochars,gmp,2000,16,2136,9,9069.43,8936.49,19.37 +tochars,gmpz,2000,16,1102,9,17354.51,17005.94,19.15 +fromchars,auto,4,10,218940,9,91.27,90.78,19.96 +fromchars,kernel,4,10,621708,9,32.63,31.83,20.24 +fromchars,gmp,4,10,637326,9,32.46,31.03,20.74 +fromchars,gmpz,4,10,255446,9,78.19,77.85,20.05 +fromchars,auto,16,10,50183,9,401.47,394.17,20.14 +fromchars,kernel,16,10,100852,9,196.73,189.39,19.72 +fromchars,gmp,16,10,140340,9,143.30,141.60,20.13 +fromchars,gmpz,16,10,62798,9,318.99,317.30,20.06 +fromchars,auto,64,10,9116,9,2203.67,2177.53,20.08 +fromchars,kernel,64,10,10898,9,1861.74,1856.07,20.31 +fromchars,gmp,64,10,20982,9,958.00,952.06,20.14 +fromchars,gmpz,64,10,12419,9,1606.48,1592.20,19.94 +fromchars,auto,256,10,1447,9,13841.57,13778.22,20.03 +fromchars,kernel,256,10,1723,9,11589.98,11535.84,19.96 +fromchars,gmp,256,10,2495,9,7990.15,7941.12,19.97 +fromchars,gmpz,256,10,1905,9,10527.17,10483.62,20.06 +fromchars,auto,2000,10,64,9,301929.69,300972.00,19.34 +fromchars,kernel,2000,10,70,9,285098.80,282769.64,19.96 +fromchars,gmp,2000,10,108,9,184726.07,183589.51,19.94 +fromchars,gmpz,2000,10,97,9,203613.84,203064.43,19.79 diff --git a/tests/beman/big_int/perf/item1/macr3_base64_seed2a.csv b/tests/beman/big_int/perf/item1/macr3_base64_seed2a.csv new file mode 100644 index 00000000..e67dfc95 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_base64_seed2a.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T18:01:43Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2876971,9,6.93,6.70,19.69 +add,inplace,1,1,2972667,9,3.34,3.10,19.27 +add,kernel,1,1,17448663,9,1.14,1.14,19.98 +add,floor,1,1,2121244,9,9.43,9.17,19.84 +add,gmp,1,1,13336797,9,1.49,1.49,19.90 +add,gmpz,1,1,6141909,9,3.08,2.98,19.24 +add,auto,2,2,1299782,9,15.15,14.45,19.50 +add,inplace,2,2,2462490,9,3.82,3.75,18.85 +add,kernel,2,2,14313382,9,1.39,1.39,19.96 +add,floor,2,2,2020479,9,9.95,9.44,19.88 +add,gmp,2,2,10178075,9,1.99,1.98,20.23 +add,gmpz,2,2,6177609,9,6.48,3.11,34.26 +add,auto,4,4,1331464,9,15.22,14.97,20.28 +add,inplace,4,4,2703395,9,3.65,3.63,19.95 +add,kernel,4,4,10141749,9,1.97,1.95,19.93 +add,floor,4,4,1820990,9,10.76,10.39,19.59 +add,gmp,4,4,11523047,9,1.74,1.73,20.05 +add,gmpz,4,4,4919276,9,4.75,4.54,23.90 +add,auto,8,8,1278919,9,15.60,15.37,20.06 +add,inplace,8,8,2013569,9,5.11,5.04,20.61 +add,kernel,8,8,5724226,9,3.48,3.48,19.94 +add,floor,8,8,1685513,9,11.92,11.89,20.11 +add,gmp,8,8,8960731,9,2.23,2.23,20.05 +add,gmpz,8,8,4452260,9,5.13,4.40,22.72 +add,auto,16,16,1229302,9,16.55,16.43,20.35 +add,inplace,16,16,1018309,9,9.79,9.55,19.86 +add,kernel,16,16,2649832,9,7.53,7.48,19.98 +add,floor,16,16,1459434,9,13.43,13.21,19.70 +add,gmp,16,16,6207784,9,2.99,2.93,18.92 +add,gmpz,16,16,4395450,9,4.52,4.37,19.83 +add,auto,64,64,365339,9,54.58,54.36,19.99 +add,inplace,64,64,194716,9,51.66,50.83,20.10 +add,kernel,64,64,406911,9,49.29,48.04,19.97 +add,floor,64,64,330588,9,60.54,60.41,20.03 +add,gmp,64,64,1812944,9,11.14,11.08,20.19 +add,gmpz,64,64,1557156,9,12.96,12.91,20.18 +add,auto,256,256,133977,9,151.12,149.30,20.16 +add,inplace,256,256,41297,9,240.22,232.88,19.83 +add,kernel,256,256,84822,9,236.30,228.80,19.91 +add,floor,256,256,81387,9,245.68,239.55,20.01 +add,gmp,256,256,351090,9,56.97,56.13,19.96 +add,gmpz,256,256,345140,9,57.97,57.33,20.03 +add,auto,1024,1024,36069,9,570.98,545.13,20.50 +add,inplace,1024,1024,10170,9,987.81,961.91,20.06 +add,kernel,1024,1024,20144,9,978.95,968.77,19.71 +add,floor,1024,1024,20429,9,990.62,971.75,20.19 +add,gmp,1024,1024,79401,9,251.78,249.80,19.97 +add,gmpz,1024,1024,78344,9,253.62,248.16,19.80 +add,auto,2000,2000,19335,9,1128.82,1050.17,21.53 +add,inplace,2000,2000,5167,9,1945.00,1941.44,20.21 +add,kernel,2000,2000,10302,9,1929.29,1885.16,19.80 +add,floor,2000,2000,10289,9,1940.39,1885.59,19.96 +add,gmp,2000,2000,40400,9,496.30,487.14,20.08 +add,gmpz,2000,2000,40294,9,497.41,487.28,20.01 +add,auto,1024,1,113888,9,173.04,167.31,20.28 +add,inplace,1024,1,10192,9,982.82,971.56,20.03 +add,kernel,1024,1,27719,9,734.74,714.45,20.33 +add,floor,1024,1,26785,9,756.54,740.03,20.25 +add,gmp,1024,1,75764,9,263.63,261.64,20.00 +add,gmpz,1024,1,74841,9,267.82,260.91,19.96 +sub,auto,1,1,2603676,9,7.65,7.45,19.85 +sub,inplace,1,1,2935653,9,3.45,3.22,19.73 +sub,kernel,1,1,19485640,9,1.03,1.03,20.07 +sub,floor,1,1,11514456,9,1.74,1.74,20.11 +sub,gmp,1,1,13419442,9,1.49,1.48,20.01 +sub,gmpz,1,1,7307150,9,2.74,2.74,20.08 +sub,auto,2,2,1340759,9,15.06,14.92,20.32 +sub,inplace,2,2,2998917,9,3.27,3.26,19.81 +sub,kernel,2,2,14415814,9,1.39,1.39,20.05 +sub,floor,2,2,2126977,9,9.49,9.36,24.08 +sub,gmp,2,2,10090958,9,1.99,1.97,20.04 +sub,gmpz,2,2,6707924,9,3.23,3.02,21.55 +sub,auto,4,4,1241507,9,17.04,16.01,21.35 +sub,inplace,4,4,2430837,9,4.00,3.97,19.82 +sub,kernel,4,4,10267349,9,1.94,1.94,20.00 +sub,floor,4,4,2014060,9,10.41,9.91,20.66 +sub,gmp,4,4,11522350,9,1.74,1.73,20.01 +sub,gmpz,4,4,6691239,9,2.98,2.98,19.95 +sub,auto,8,8,1251749,9,16.13,15.91,20.16 +sub,inplace,8,8,1974935,9,4.89,4.86,19.50 +sub,kernel,8,8,5713961,9,3.50,3.49,20.01 +sub,floor,8,8,1736330,9,11.42,11.17,19.80 +sub,gmp,8,8,3464470,9,5.74,5.61,19.81 +sub,gmpz,8,8,5690855,9,3.48,3.47,19.78 +sub,auto,16,16,1102620,9,18.50,18.01,20.25 +sub,inplace,16,16,1060635,9,9.38,9.21,19.93 +sub,kernel,16,16,2591142,9,7.70,7.64,19.93 +sub,floor,16,16,1309032,9,14.96,14.89,19.80 +sub,gmp,16,16,6147361,9,3.25,3.23,19.97 +sub,gmpz,16,16,4626531,9,4.23,4.22,19.75 +sub,auto,64,64,488147,9,40.81,40.74,19.94 +sub,inplace,64,64,195499,9,51.15,51.10,20.00 +sub,kernel,64,64,403174,9,49.64,49.52,20.01 +sub,floor,64,64,338430,9,59.21,58.45,20.05 +sub,gmp,64,64,1745561,9,11.41,11.31,19.96 +sub,gmpz,64,64,1451986,9,13.87,13.70,20.10 +sub,auto,256,256,151423,9,132.35,131.00,20.04 +sub,inplace,256,256,41570,9,239.77,235.94,19.92 +sub,kernel,256,256,84071,9,236.46,229.24,19.80 +sub,floor,256,256,82558,9,243.50,237.57,20.00 +sub,gmp,256,256,350076,9,57.63,56.81,20.12 +sub,gmpz,256,256,343017,9,58.05,57.26,19.91 +sub,auto,1024,1024,36146,9,537.40,524.20,19.51 +sub,inplace,1024,1024,10041,9,994.79,981.78,19.95 +sub,kernel,1024,1024,20537,9,977.84,947.51,19.98 +sub,floor,1024,1024,20579,9,979.83,968.32,20.16 +sub,gmp,1024,1024,79260,9,251.70,250.67,19.95 +sub,gmpz,1024,1024,77372,9,253.71,252.81,19.63 +sub,auto,2000,2000,19239,9,1131.20,1037.65,20.46 +sub,inplace,2000,2000,5162,9,1947.92,1898.94,20.05 +sub,kernel,2000,2000,10328,9,1922.76,1873.92,19.98 +sub,floor,2000,2000,10432,9,1934.23,1913.37,20.14 +sub,gmp,2000,2000,40539,9,495.36,486.80,20.06 +sub,gmpz,2000,2000,40655,9,497.11,494.14,20.22 +sub,auto,1024,1,118495,9,167.98,165.37,19.95 +sub,inplace,1024,1,10072,9,974.61,947.12,19.63 +sub,kernel,1024,1,27283,9,731.35,714.65,19.87 +sub,floor,1024,1,26653,9,751.07,734.76,19.96 +sub,gmp,1024,1,75263,9,261.48,255.57,19.63 +sub,gmpz,1024,1,75812,9,266.19,260.67,20.14 +shl,auto,1,13,1219250,9,18.00,16.61,19.78 +shl,inplace,1,13,4398763,9,2.30,2.30,20.35 +shl,kernel,1,13,8941120,9,2.24,2.22,19.98 +shl,kernelip,1,13,6476092,9,1.72,1.46,20.80 +shl,floor,1,13,1831248,9,10.93,10.90,20.10 +shl,gmp,1,13,16136418,9,1.24,1.24,20.39 +shl,gmpz,1,13,10095289,9,1.99,1.98,20.07 +shl,auto,4,13,1033779,9,18.91,18.62,19.56 +shl,inplace,4,13,2836297,9,3.53,3.51,20.06 +shl,kernel,4,13,5131778,9,3.73,3.72,19.34 +shl,kernelip,4,13,2911687,9,3.35,3.30,19.51 +shl,floor,4,13,1579189,9,12.70,12.63,20.11 +shl,gmp,4,13,10076449,9,1.99,1.97,20.02 +shl,gmpz,4,13,7325125,9,2.73,2.72,20.00 +shl,auto,16,13,948147,9,21.76,20.69,20.37 +shl,inplace,16,13,1732739,9,5.78,5.77,20.06 +shl,kernel,16,13,4872688,9,4.08,4.07,19.88 +shl,kernelip,16,13,1445049,9,6.80,6.72,19.63 +shl,floor,16,13,1636885,9,12.16,11.90,19.88 +shl,gmp,16,13,5369558,9,3.48,3.47,18.70 +shl,gmpz,16,13,3924612,9,5.16,5.12,20.20 +shl,auto,256,13,232925,9,85.47,85.22,19.90 +shl,inplace,256,13,271834,9,36.64,36.37,19.92 +shl,kernel,256,13,406226,9,49.23,48.96,19.99 +shl,kernelip,256,13,204242,9,48.74,48.35,19.89 +shl,floor,256,13,348311,9,57.53,57.36,20.04 +shl,gmp,256,13,540703,9,36.96,36.88,19.99 +shl,gmpz,256,13,528038,9,37.88,37.81,20.01 +shl,auto,2000,13,33585,9,633.92,602.72,20.90 +shl,inplace,2000,13,35515,9,285.24,281.80,20.24 +shl,kernel,2000,13,52021,9,384.27,381.54,19.98 +shl,kernelip,2000,13,26563,9,376.86,374.15,20.15 +shl,floor,2000,13,50121,9,399.93,398.62,20.19 +shl,gmp,2000,13,12483,9,2083.56,1895.40,22.80 +shl,gmpz,2000,13,15623,9,2148.33,1181.44,33.20 +shl,auto,2000,77,25851,9,822.91,779.31,21.10 +shl,inplace,2000,77,23540,9,425.58,420.59,19.99 +shl,kernel,2000,77,37874,9,528.68,522.28,19.99 +shl,kernelip,2000,77,19236,9,520.11,512.32,19.98 +shl,floor,2000,77,36984,9,541.40,537.95,20.04 +shl,gmp,2000,77,69466,9,290.46,287.25,20.36 +shl,gmpz,2000,77,66779,9,288.11,286.84,19.42 +shr,auto,1,13,2111534,9,9.18,9.13,19.56 +shr,inplace,1,13,4450957,9,2.35,2.28,20.89 +shr,kernel,1,13,8946170,9,2.23,2.22,19.94 +shr,floor,1,13,8084288,9,2.47,2.44,20.40 +shr,gmp,1,13,20000001,9,0.99,0.99,19.83 +shr,gmpz,1,13,10091967,9,1.98,1.98,20.01 +shr,auto,4,13,1107691,9,18.12,17.79,20.31 +shr,inplace,4,13,3111458,9,3.27,3.19,20.29 +shr,kernel,4,13,5377312,9,3.72,3.70,20.00 +shr,floor,4,13,1748826,9,11.91,11.88,20.88 +shr,gmp,4,13,11542932,9,1.73,1.72,20.03 +shr,gmpz,4,13,7320075,9,2.73,2.72,19.97 +shr,auto,16,13,941762,9,21.14,21.03,19.91 +shr,inplace,16,13,1984300,9,5.06,5.05,20.09 +shr,kernel,16,13,4788496,9,4.18,4.18,20.06 +shr,floor,16,13,1577529,9,12.91,12.89,20.42 +shr,gmp,16,13,6182757,9,3.23,3.22,19.96 +shr,gmpz,16,13,4738844,9,4.23,4.22,20.07 +shr,auto,256,13,223676,9,87.80,86.69,19.70 +shr,inplace,256,13,278595,9,35.79,35.74,19.96 +shr,kernel,256,13,300920,9,66.36,65.96,19.97 +shr,floor,256,13,287986,9,76.35,75.31,21.89 +shr,gmp,256,13,545512,9,36.72,36.62,20.04 +shr,gmpz,256,13,526985,9,38.07,37.99,20.07 +shr,auto,2000,13,29173,9,676.08,640.40,19.79 +shr,inplace,2000,13,35424,9,281.96,281.29,19.99 +shr,kernel,2000,13,39000,9,513.37,511.67,20.01 +shr,floor,2000,13,37875,9,524.68,516.02,19.89 +shr,gmp,2000,13,69104,9,296.12,294.69,20.97 +shr,gmpz,2000,13,70019,9,299.87,287.35,21.34 +shr,auto,2000,77,20534,9,1093.63,963.87,21.34 +shr,inplace,2000,77,23872,9,419.04,416.96,20.02 +shr,kernel,2000,77,38853,9,519.72,515.46,20.18 +shr,floor,2000,77,38003,9,535.51,527.53,20.32 +shr,gmp,2000,77,68804,9,291.29,290.68,20.15 +shr,gmpz,2000,77,68666,9,287.32,285.62,19.76 +mul,auto,1,1,1293205,9,15.34,15.18,19.86 +mul,gmp,1,1,5328530,9,3.75,3.73,20.08 +mul,gmpz,1,1,7306896,9,2.74,2.73,20.02 +mul,auto,2,2,746518,9,27.45,26.81,20.15 +mul,kernel,2,2,3030369,9,6.54,6.47,19.77 +mul,floor,2,2,1373959,9,14.75,14.44,20.40 +mul,gmp,2,2,4408479,9,4.51,4.47,20.22 +mul,gmpz,2,2,3168508,9,6.54,6.52,21.07 +mul,auto,3,3,654471,9,30.17,29.46,19.83 +mul,kernel,3,3,2438233,9,8.23,8.17,20.18 +mul,floor,3,3,1167958,9,16.88,16.48,19.84 +mul,gmp,3,3,3210655,9,6.22,6.21,20.00 +mul,gmpz,3,3,2375777,9,8.36,8.16,19.92 +mul,auto,4,4,654463,9,29.81,29.16,19.44 +mul,kernel,4,4,1791861,9,11.11,11.00,19.92 +mul,floor,4,4,1193401,9,17.18,16.76,20.43 +mul,gmp,4,4,2481362,9,9.17,8.07,20.00 +mul,gmpz,4,4,2054753,9,9.77,9.70,20.28 +mul,auto,6,6,608421,9,32.69,32.50,19.91 +mul,kernel,6,6,1036254,9,19.07,19.01,19.78 +mul,floor,6,6,851932,9,23.67,23.58,20.19 +mul,gmp,6,6,1380176,9,14.55,14.44,20.07 +mul,gmpz,6,6,1093967,9,18.81,17.99,20.41 +mul,auto,8,8,482289,9,42.79,41.43,20.66 +mul,kernel,8,8,237910,9,81.54,79.27,19.35 +mul,floor,8,8,229113,9,86.99,84.52,19.81 +mul,gmp,8,8,896287,9,22.32,22.01,20.11 +mul,gmpz,8,8,733418,9,26.63,25.27,19.48 +mul,auto,12,12,320168,9,61.44,61.34,19.73 +mul,kernel,12,12,478296,9,41.57,41.25,19.87 +mul,floor,12,12,398007,9,49.91,49.58,19.86 +mul,gmp,12,12,453243,9,44.61,44.11,20.16 +mul,gmpz,12,12,428382,9,46.35,46.26,19.89 +mul,auto,16,16,208905,9,94.39,93.57,19.90 +mul,kernel,16,16,286868,9,69.65,69.55,19.99 +mul,floor,16,16,249754,9,79.31,78.80,19.79 +mul,gmp,16,16,258131,9,77.40,77.31,19.99 +mul,gmpz,16,16,253072,9,79.21,78.96,20.07 +mul,auto,32,32,67288,9,297.35,296.31,20.00 +mul,kernel,32,32,77244,9,259.08,258.33,20.01 +mul,floor,32,32,72018,9,280.51,278.94,20.19 +mul,gmp,32,32,77431,9,258.42,257.73,20.04 +mul,gmpz,32,32,76788,9,260.05,259.37,19.97 +mul,auto,64,64,19390,9,1039.72,1029.67,20.14 +mul,kernel,64,64,20218,9,984.16,981.91,19.97 +mul,floor,64,64,19695,9,1012.24,1007.23,19.95 +mul,gmp,64,64,25882,9,775.35,773.27,20.09 +mul,gmpz,64,64,25789,9,776.96,774.50,20.05 +mul,auto,128,128,5540,9,3618.89,3606.24,20.05 +mul,kernel,128,128,5600,9,3566.93,3558.80,20.04 +mul,floor,128,128,5588,9,3578.54,3574.13,20.02 +mul,gmp,128,128,7555,9,2666.61,2653.86,20.19 +mul,gmpz,128,128,7555,9,2667.79,2640.22,20.10 +mul,auto,256,256,1687,9,11844.52,11819.08,20.02 +mul,kernel,256,256,1682,9,11746.11,11726.39,19.78 +mul,floor,256,256,1702,9,11762.24,11735.31,20.03 +mul,gmp,256,256,2556,9,7834.64,7806.83,20.02 +mul,gmpz,256,256,2557,9,7822.61,7792.91,20.00 +mul,auto,512,512,542,9,37228.32,37050.74,20.19 +mul,kernel,512,512,543,9,36874.31,36716.93,20.05 +mul,floor,512,512,542,9,36827.88,36643.37,19.99 +mul,gmp,512,512,1057,9,18987.86,18925.46,20.15 +mul,gmpz,512,512,1039,9,19100.14,18993.94,19.87 +mul,auto,1000,1000,187,9,107052.14,106682.49,20.01 +mul,kernel,1000,1000,188,9,106435.51,106164.01,20.03 +mul,floor,1000,1000,188,9,106753.77,106336.88,20.16 +mul,gmp,1000,1000,362,9,55903.89,55024.63,20.17 +mul,gmpz,1000,1000,366,9,55087.20,54993.05,20.16 +mul,auto,2000,2000,66,9,301945.71,299773.98,19.92 +mul,kernel,2000,2000,67,9,301176.61,298833.34,20.16 +mul,floor,2000,2000,67,9,301944.03,298981.34,20.23 +mul,gmp,2000,2000,135,9,148402.16,147500.93,20.07 +mul,gmpz,2000,2000,135,9,148244.44,147298.77,20.02 +mul,auto,2000,100,426,9,47335.88,46757.53,20.09 +mul,kernel,2000,100,430,9,46660.76,46623.55,20.11 +mul,floor,2000,100,430,9,46748.55,46670.06,20.25 +mul,gmp,2000,100,569,9,35289.10,35121.34,20.08 +mul,gmpz,2000,100,575,9,34774.64,34627.10,19.99 +sqr,auto,4,4,650973,9,29.23,29.04,19.28 +sqr,kernel,4,4,1710370,9,10.97,10.75,18.75 +sqr,floor,4,4,1236604,9,16.20,16.15,20.13 +sqr,gmp,4,4,2843881,9,6.96,6.93,21.52 +sqr,gmpz,4,4,2115482,9,9.48,9.42,20.71 +sqr,auto,16,16,225638,9,88.69,88.35,20.01 +sqr,kernel,16,16,323036,9,62.29,61.96,20.12 +sqr,floor,16,16,276568,9,71.23,69.51,19.63 +sqr,gmp,16,16,321019,9,63.71,62.26,20.73 +sqr,gmpz,16,16,302483,9,65.82,65.54,19.99 +sqr,auto,64,64,31872,9,625.99,623.58,19.95 +sqr,kernel,64,64,34403,9,583.93,583.22,20.11 +sqr,floor,64,64,33400,9,599.04,597.40,20.03 +sqr,gmp,64,64,29872,9,665.39,662.99,19.88 +sqr,gmpz,64,64,29537,9,673.25,657.81,19.76 +sqr,auto,512,512,818,9,24517.93,24486.96,20.08 +sqr,kernel,512,512,820,9,24347.10,24236.94,20.02 +sqr,floor,512,512,824,9,24373.89,24253.44,20.08 +sqr,gmp,512,512,1209,9,16463.02,16337.02,19.91 +sqr,gmpz,512,512,1018,9,19655.86,19305.17,19.96 +sqr,auto,2000,2000,90,9,223448.61,222178.24,20.12 +sqr,kernel,2000,2000,90,9,222570.83,221632.88,20.04 +sqr,floor,2000,2000,90,9,222577.78,221380.56,20.05 +sqr,gmp,2000,2000,166,9,120941.01,119163.15,20.04 +sqr,gmpz,2000,2000,166,9,120801.96,120357.93,20.07 +divrem,auto,2,1,661337,9,30.53,30.10,20.13 +divrem,kernel,2,1,3197657,9,6.27,6.20,20.01 +divrem,floor,2,1,1437775,9,14.27,13.81,20.66 +divrem,gmp,2,1,3714259,9,5.04,4.96,18.72 +divrem,gmpz,2,1,2262611,9,8.87,8.72,19.99 +divrem,auto,8,4,203249,9,99.24,98.75,20.21 +divrem,kernel,8,4,391581,9,51.48,51.12,20.24 +divrem,floor,8,4,308630,9,65.47,64.91,20.42 +divrem,gmp,8,4,471327,9,41.70,41.48,19.68 +divrem,gmpz,8,4,447429,9,44.24,43.83,19.79 +divrem,auto,32,16,41827,9,478.43,462.04,19.98 +divrem,kernel,32,16,50630,9,404.95,393.27,20.35 +divrem,floor,32,16,48880,9,409.09,397.64,19.87 +divrem,gmp,32,16,96494,9,208.00,202.85,20.14 +divrem,gmpz,32,16,95623,9,208.52,204.76,19.92 +divrem,auto,128,64,5347,9,3745.43,3650.27,19.89 +divrem,kernel,128,64,5802,9,3601.42,3528.19,20.86 +divrem,floor,128,64,5502,9,3654.77,3615.97,20.08 +divrem,gmp,128,64,11431,9,1763.65,1739.68,20.13 +divrem,gmpz,128,64,11376,9,1765.48,1743.84,20.05 +divrem,auto,512,256,728,9,27483.86,27367.33,20.07 +divrem,kernel,512,256,736,9,27228.88,26947.86,20.03 +divrem,floor,512,256,738,9,27269.03,26908.25,20.12 +divrem,gmp,512,256,1225,9,16611.09,16410.03,20.29 +divrem,gmpz,512,256,1211,9,16474.99,16410.20,19.98 +divrem,auto,2000,1000,86,9,233499.52,233174.42,20.09 +divrem,kernel,2000,1000,87,9,232318.01,230985.63,20.19 +divrem,floor,2000,1000,87,9,231975.09,230175.77,20.17 +divrem,gmp,2000,1000,147,9,136130.39,135842.97,20.05 +divrem,gmpz,2000,1000,149,9,134864.09,133321.87,20.08 +divrem,auto,4000,2000,29,9,698731.31,692591.97,20.24 +divrem,kernel,4000,2000,29,9,691498.59,687416.66,20.04 +divrem,floor,4000,2000,30,9,690666.67,687781.97,20.74 +divrem,gmp,4000,2000,59,9,345956.22,343276.12,20.42 +divrem,gmpz,4000,2000,59,9,345737.29,344445.61,20.39 +divrem,auto,2000,100,210,9,95852.58,95249.80,20.10 +divrem,kernel,2000,100,212,9,94075.67,93874.60,19.97 +divrem,floor,2000,100,211,9,94243.88,93936.22,19.88 +divrem,gmp,2000,100,291,9,68926.55,68685.71,20.05 +divrem,gmpz,2000,100,290,9,69041.96,68602.59,20.02 +divrem,auto,65536,1,82,9,247057.93,243272.35,20.18 +divrem,kernel,65536,1,89,9,227727.53,222979.40,20.21 +divrem,floor,65536,1,90,9,227794.44,224397.69,20.46 +divrem,gmp,65536,1,117,9,171520.66,169563.38,20.04 +divrem,gmpz,65536,1,118,9,171362.99,166466.10,20.26 +tochars,auto,1,10,3320727,9,5.99,5.97,19.97 +tochars,kernel,1,10,572128,9,34.56,33.96,19.73 +tochars,gmp,1,10,1228775,9,16.40,16.29,20.23 +tochars,gmpz,1,10,823542,9,24.26,24.03,19.96 +tochars,auto,4,10,219108,9,90.73,90.08,19.89 +tochars,kernel,4,10,195879,9,103.54,100.73,20.41 +tochars,gmp,4,10,256878,9,76.74,75.51,19.83 +tochars,gmpz,4,10,204298,9,97.57,95.83,19.90 +tochars,auto,16,10,23873,9,828.91,806.00,19.84 +tochars,kernel,16,10,27188,9,733.06,718.00,19.90 +tochars,gmp,16,10,39395,9,504.20,490.78,19.97 +tochars,gmpz,16,10,33149,9,598.75,593.27,19.83 +tochars,auto,64,10,4260,9,4710.94,4588.07,20.04 +tochars,kernel,64,10,4436,9,4454.82,4375.85,19.76 +tochars,gmp,64,10,7063,9,2836.85,2793.90,20.05 +tochars,gmpz,64,10,6274,9,3169.44,3045.41,19.78 +tochars,auto,256,10,589,9,33776.32,32957.49,19.84 +tochars,kernel,256,10,616,9,32416.26,31994.86,19.93 +tochars,gmp,256,10,1062,9,18976.62,18654.46,20.10 +tochars,gmpz,256,10,982,9,20441.57,20366.39,20.07 +tochars,auto,2000,10,30,9,683220.83,678143.07,20.48 +tochars,kernel,2000,10,30,9,668047.23,660083.33,19.99 +tochars,gmp,2000,10,50,9,402869.18,400425.84,20.13 +tochars,gmpz,2000,10,49,9,414655.61,414390.31,20.34 +tochars,auto,16,16,240199,9,83.37,82.12,20.00 +tochars,gmp,16,16,247171,9,78.83,77.31,19.64 +tochars,gmpz,16,16,123526,9,159.06,157.19,19.71 +tochars,auto,2000,16,2122,9,9931.65,9427.41,20.74 +tochars,gmp,2000,16,2320,9,8977.53,8921.98,21.12 +tochars,gmpz,2000,16,1185,9,16792.05,16612.66,19.98 +fromchars,auto,4,10,219124,9,91.18,90.34,20.08 +fromchars,kernel,4,10,609223,9,32.62,32.18,19.83 +fromchars,gmp,4,10,658217,9,30.89,30.58,20.39 +fromchars,gmpz,4,10,265295,9,74.58,74.44,19.80 +fromchars,auto,16,10,52829,9,380.16,374.92,20.05 +fromchars,kernel,16,10,103965,9,191.70,187.66,19.92 +fromchars,gmp,16,10,141613,9,140.79,140.40,19.97 +fromchars,gmpz,16,10,63492,9,317.20,311.50,20.07 +fromchars,auto,64,10,9128,9,2191.14,2149.74,19.95 +fromchars,kernel,64,10,10778,9,1857.59,1810.93,19.97 +fromchars,gmp,64,10,20798,9,955.32,936.99,19.90 +fromchars,gmpz,64,10,12412,9,1603.96,1577.63,19.88 +fromchars,auto,256,10,1450,9,13831.32,13724.68,20.08 +fromchars,kernel,256,10,1711,9,11540.69,11464.08,19.73 +fromchars,gmp,256,10,2515,9,8009.28,7909.51,20.10 +fromchars,gmpz,256,10,1859,9,10800.18,10564.42,20.00 +fromchars,auto,2000,10,67,9,300209.58,299618.79,20.16 +fromchars,kernel,2000,10,71,9,282541.66,281853.87,20.08 +fromchars,gmp,2000,10,110,9,183178.78,182851.14,20.16 +fromchars,gmpz,2000,10,99,9,203546.72,202929.72,20.20 diff --git a/tests/beman/big_int/perf/item1/macr3_base64_seed2b.csv b/tests/beman/big_int/perf/item1/macr3_base64_seed2b.csv new file mode 100644 index 00000000..baf8a9ff --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_base64_seed2b.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T18:06:36Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2969696,9,6.78,6.76,20.15 +add,inplace,1,1,3345306,9,3.00,2.98,20.05 +add,kernel,1,1,17433897,9,1.15,1.14,20.05 +add,floor,1,1,2116374,9,9.48,9.44,20.22 +add,gmp,1,1,13394690,9,1.50,1.49,20.05 +add,gmpz,1,1,6466485,9,3.02,3.00,20.05 +add,auto,2,2,1348601,9,14.63,14.29,19.73 +add,inplace,2,2,2625248,9,3.79,3.76,19.96 +add,kernel,2,2,14330312,9,1.40,1.39,20.13 +add,floor,2,2,2003371,9,9.99,9.96,20.12 +add,gmp,2,2,11458573,9,1.99,1.75,19.76 +add,gmpz,2,2,4798919,9,6.83,4.52,29.92 +add,auto,4,4,1328532,9,15.29,15.08,20.54 +add,inplace,4,4,2718433,9,3.79,3.74,20.67 +add,kernel,4,4,10421132,9,1.97,1.91,20.53 +add,floor,4,4,1867159,9,15.49,10.74,19.58 +add,gmp,4,4,11419278,9,1.74,1.73,19.89 +add,gmpz,4,4,5210796,9,4.89,4.14,25.47 +add,auto,8,8,1232616,9,16.14,16.03,19.99 +add,inplace,8,8,1865671,9,5.20,4.93,19.22 +add,kernel,8,8,5744349,9,3.53,3.48,20.22 +add,floor,8,8,1672444,9,11.94,11.73,19.89 +add,gmp,8,8,8928251,9,2.24,2.23,19.98 +add,gmpz,8,8,5339073,9,5.27,4.38,25.29 +add,auto,16,16,1217528,9,16.35,16.12,19.85 +add,inplace,16,16,1024050,9,9.77,9.59,19.94 +add,kernel,16,16,2628138,9,7.58,7.55,19.93 +add,floor,16,16,1408123,9,16.70,13.82,23.26 +add,gmp,16,16,6164612,9,3.24,3.24,20.02 +add,gmpz,16,16,5022650,9,4.50,4.39,20.39 +add,auto,64,64,349885,9,54.88,54.50,19.33 +add,inplace,64,64,193529,9,51.53,50.59,19.93 +add,kernel,64,64,405968,9,49.43,48.01,20.01 +add,floor,64,64,330465,9,60.68,59.65,20.02 +add,gmp,64,64,1785881,9,11.18,11.13,19.98 +add,gmpz,64,64,1545337,9,13.00,12.82,20.05 +add,auto,256,256,134585,9,148.07,146.63,19.94 +add,inplace,256,256,41957,9,239.79,236.71,20.11 +add,kernel,256,256,84218,9,236.02,228.67,19.79 +add,floor,256,256,78715,9,250.15,241.31,19.70 +add,gmp,256,256,347284,9,57.76,57.31,20.06 +add,gmpz,256,256,343786,9,58.09,57.47,19.95 +add,auto,1024,1024,35445,9,568.86,553.32,20.15 +add,inplace,1024,1024,9982,9,996.41,969.96,20.05 +add,kernel,1024,1024,19899,9,988.21,978.62,19.91 +add,floor,1024,1024,20243,9,1001.58,983.27,20.19 +add,gmp,1024,1024,78993,9,252.09,250.07,19.93 +add,gmpz,1024,1024,78384,9,253.86,252.28,19.90 +add,auto,2000,2000,17049,9,1138.70,1071.33,19.17 +add,inplace,2000,2000,5004,9,1951.78,1868.09,19.46 +add,kernel,2000,2000,10352,9,1936.27,1889.75,19.95 +add,floor,2000,2000,10396,9,1948.47,1877.95,20.23 +add,gmp,2000,2000,40241,9,497.08,495.69,20.02 +add,gmpz,2000,2000,41016,9,500.35,493.83,20.47 +add,auto,1024,1,118269,9,172.29,168.81,21.00 +add,inplace,1024,1,10206,9,990.99,975.99,20.23 +add,kernel,1024,1,27823,9,749.64,730.75,20.76 +add,floor,1024,1,26115,9,760.40,734.98,19.73 +add,gmp,1024,1,75712,9,263.73,260.19,19.96 +add,gmpz,1024,1,74632,9,266.78,262.36,19.89 +sub,auto,1,1,2594654,9,7.49,7.31,19.50 +sub,inplace,1,1,2878750,9,3.36,3.24,19.44 +sub,kernel,1,1,19439965,9,1.03,1.03,20.00 +sub,floor,1,1,11504644,9,1.74,1.73,20.04 +sub,gmp,1,1,13440357,9,1.50,1.49,20.09 +sub,gmpz,1,1,7215171,9,2.74,2.74,19.84 +sub,auto,2,2,1339412,9,14.94,14.83,20.20 +sub,inplace,2,2,2858876,9,3.27,3.25,18.68 +sub,kernel,2,2,13925111,9,1.43,1.39,19.81 +sub,floor,2,2,2066749,9,9.62,9.39,19.88 +sub,gmp,2,2,11466822,9,1.74,1.74,19.98 +sub,gmpz,2,2,6689777,9,3.00,2.98,20.75 +sub,auto,4,4,1258387,9,15.92,15.64,19.97 +sub,inplace,4,4,2573655,9,3.73,3.72,19.39 +sub,kernel,4,4,10193503,9,1.97,1.93,20.27 +sub,floor,4,4,1976773,9,9.93,9.91,19.66 +sub,gmp,4,4,11521018,9,1.74,1.74,20.04 +sub,gmpz,4,4,6669979,9,2.99,2.97,19.92 +sub,auto,8,8,1269407,9,16.27,15.72,20.57 +sub,inplace,8,8,1949629,9,5.12,5.10,19.99 +sub,kernel,8,8,5697401,9,3.51,3.50,20.05 +sub,floor,8,8,1619776,9,11.89,11.45,19.16 +sub,gmp,8,8,8931741,9,2.24,2.24,20.07 +sub,gmpz,8,8,5747650,9,3.49,3.48,20.09 +sub,auto,16,16,1115419,9,18.03,17.90,20.19 +sub,inplace,16,16,1118577,9,13.26,8.93,20.89 +sub,kernel,16,16,2608001,9,7.69,7.64,20.04 +sub,floor,16,16,1307033,9,15.21,14.91,19.96 +sub,gmp,16,16,6157781,9,3.26,3.24,21.02 +sub,gmpz,16,16,4674083,9,4.25,4.25,20.10 +sub,auto,64,64,485006,9,41.17,41.06,19.97 +sub,inplace,64,64,200849,9,51.19,50.75,20.57 +sub,kernel,64,64,399724,9,50.00,49.44,20.04 +sub,floor,64,64,334553,9,59.59,57.87,19.86 +sub,gmp,64,64,1721001,9,11.50,11.44,19.89 +sub,gmpz,64,64,1437878,9,13.91,13.69,19.96 +sub,auto,256,256,150425,9,132.79,131.81,19.96 +sub,inplace,256,256,41284,9,241.17,234.41,19.84 +sub,kernel,256,256,86074,9,238.60,234.86,20.49 +sub,floor,256,256,80439,9,248.21,241.99,19.92 +sub,gmp,256,256,353512,9,57.34,57.10,20.28 +sub,gmpz,256,256,348887,9,58.17,57.84,20.31 +sub,auto,1024,1024,33873,9,572.52,550.67,19.35 +sub,inplace,1024,1024,9911,9,981.92,958.58,19.53 +sub,kernel,1024,1024,20349,9,979.12,956.98,19.87 +sub,floor,1024,1024,20070,9,993.10,968.14,19.82 +sub,gmp,1024,1024,78989,9,252.31,246.46,19.83 +sub,gmpz,1024,1024,78651,9,254.48,253.82,20.02 +sub,auto,2000,2000,19648,9,1139.46,1040.06,22.10 +sub,inplace,2000,2000,5140,9,2001.94,1946.39,20.60 +sub,kernel,2000,2000,10282,9,1936.84,1863.01,19.73 +sub,floor,2000,2000,10483,9,1909.64,1861.18,19.99 +sub,gmp,2000,2000,40204,9,495.96,489.72,19.89 +sub,gmpz,2000,2000,40496,9,498.11,491.28,20.22 +sub,auto,1024,1,113463,9,174.59,170.57,20.11 +sub,inplace,1024,1,10066,9,978.26,954.15,19.66 +sub,kernel,1024,1,26730,9,742.48,728.54,19.84 +sub,floor,1024,1,27169,9,761.67,749.86,20.68 +sub,gmp,1024,1,77563,9,264.32,254.61,20.35 +sub,gmpz,1024,1,74603,9,267.32,259.98,19.83 +shl,auto,1,13,1102532,9,16.99,16.87,19.19 +shl,inplace,1,13,4382198,9,2.31,2.30,20.42 +shl,kernel,1,13,8935357,9,2.25,2.23,20.12 +shl,kernelip,1,13,6337213,9,1.78,1.65,20.84 +shl,floor,1,13,1919530,9,10.95,10.46,20.04 +shl,gmp,1,13,16154656,9,1.24,1.24,20.15 +shl,gmpz,1,13,10062496,9,1.99,1.98,20.02 +shl,auto,4,13,1013073,9,19.95,19.82,20.25 +shl,inplace,4,13,2802780,9,3.57,3.55,20.12 +shl,kernel,4,13,5351230,9,3.75,3.72,20.04 +shl,kernelip,4,13,2882321,9,3.39,3.36,19.57 +shl,floor,4,13,1532324,9,13.20,12.95,20.27 +shl,gmp,4,13,10019325,9,1.99,1.98,19.98 +shl,gmpz,4,13,7038108,9,2.74,2.73,19.31 +shl,auto,16,13,959565,9,21.72,20.66,20.75 +shl,inplace,16,13,1723075,9,5.81,5.80,20.05 +shl,kernel,16,13,4874471,9,4.10,4.08,19.95 +shl,kernelip,16,13,1351906,9,6.85,6.81,18.50 +shl,floor,16,13,1649837,9,12.21,12.17,20.17 +shl,gmp,16,13,5343561,9,3.49,3.47,18.64 +shl,gmpz,16,13,4103333,9,4.81,4.80,19.76 +shl,auto,256,13,230691,9,86.31,86.17,19.94 +shl,inplace,256,13,271472,9,36.51,36.40,19.88 +shl,kernel,256,13,403992,9,49.41,49.19,19.96 +shl,kernelip,256,13,202727,9,48.90,48.51,19.81 +shl,floor,256,13,346046,9,57.75,56.86,19.93 +shl,gmp,256,13,534994,9,37.10,36.97,19.85 +shl,gmpz,256,13,523854,9,38.02,37.84,19.91 +shl,auto,2000,13,30519,9,668.02,608.88,20.21 +shl,inplace,2000,13,34583,9,284.34,283.14,19.86 +shl,kernel,2000,13,52380,9,384.43,383.04,20.14 +shl,kernelip,2000,13,26498,9,377.61,376.16,20.02 +shl,floor,2000,13,50045,9,399.84,397.31,20.00 +shl,gmp,2000,13,21830,9,2377.42,1757.49,29.01 +shl,gmpz,2000,13,50030,9,2287.49,1080.56,39.90 +shl,auto,2000,77,24861,9,789.72,745.47,19.55 +shl,inplace,2000,77,23506,9,426.89,423.57,20.07 +shl,kernel,2000,77,37888,9,529.18,525.11,20.03 +shl,kernelip,2000,77,19226,9,519.54,516.36,19.99 +shl,floor,2000,77,36999,9,538.45,536.34,19.94 +shl,gmp,2000,77,66881,9,290.25,287.45,19.44 +shl,gmpz,2000,77,65439,9,292.66,288.04,19.31 +shr,auto,1,13,2202964,9,9.01,8.92,20.09 +shr,inplace,1,13,4234247,9,2.36,2.29,19.96 +shr,kernel,1,13,8944048,9,2.24,2.23,20.05 +shr,floor,1,13,7975231,9,2.49,2.45,20.29 +shr,gmp,1,13,20000001,9,0.99,0.99,19.93 +shr,gmpz,1,13,10028522,9,1.99,1.98,19.96 +shr,auto,4,13,1094612,9,18.15,17.53,19.77 +shr,inplace,4,13,3095906,9,3.22,3.21,19.99 +shr,kernel,4,13,5353790,9,3.73,3.73,20.32 +shr,floor,4,13,1678330,9,12.13,11.96,20.83 +shr,gmp,4,13,11474753,9,1.74,1.74,20.09 +shr,gmpz,4,13,7287231,9,2.76,2.73,20.12 +shr,auto,16,13,949877,9,21.13,20.90,20.06 +shr,inplace,16,13,1974765,9,5.09,5.06,20.16 +shr,kernel,16,13,4765664,9,4.20,4.19,20.02 +shr,floor,16,13,1490854,9,13.06,12.95,19.44 +shr,gmp,16,13,6157727,9,3.24,3.22,19.96 +shr,gmpz,16,13,4719822,9,4.25,4.24,20.07 +shr,auto,256,13,227889,9,88.38,87.17,20.20 +shr,inplace,256,13,278166,9,35.99,35.82,20.03 +shr,kernel,256,13,298856,9,67.18,66.49,20.04 +shr,floor,256,13,289308,9,75.78,75.52,21.91 +shr,gmp,256,13,540524,9,36.82,36.72,19.90 +shr,gmpz,256,13,521667,9,38.16,38.10,19.94 +shr,auto,2000,13,30707,9,701.40,651.04,20.37 +shr,inplace,2000,13,35335,9,283.46,282.77,20.03 +shr,kernel,2000,13,38710,9,523.70,510.71,20.22 +shr,floor,2000,13,37082,9,540.96,538.04,20.06 +shr,gmp,2000,13,69259,9,304.17,291.12,21.18 +shr,gmpz,2000,13,68454,9,291.90,286.85,20.17 +shr,auto,2000,77,18318,9,1052.43,997.53,19.41 +shr,inplace,2000,77,22816,9,421.77,419.70,19.23 +shr,kernel,2000,77,38467,9,516.89,514.26,19.88 +shr,floor,2000,77,38055,9,533.27,527.49,20.27 +shr,gmp,2000,77,68237,9,291.63,290.91,19.95 +shr,gmpz,2000,77,69529,9,290.27,286.28,20.29 +mul,auto,1,1,1201780,9,16.09,15.46,19.47 +mul,gmp,1,1,5346680,9,3.73,3.72,19.98 +mul,gmpz,1,1,7316426,9,2.74,2.73,20.07 +mul,auto,2,2,657983,9,28.60,27.36,18.98 +mul,kernel,2,2,3030811,9,6.59,6.50,19.96 +mul,floor,2,2,1382282,9,15.14,14.69,20.75 +mul,gmp,2,2,4466649,9,4.62,4.48,20.59 +mul,gmpz,2,2,2989028,9,6.57,6.51,19.89 +mul,auto,3,3,691265,9,29.45,29.25,20.59 +mul,kernel,3,3,2364675,9,8.45,8.42,20.00 +mul,floor,3,3,1195776,9,16.79,16.65,20.29 +mul,gmp,3,3,2987613,9,6.16,6.11,18.46 +mul,gmpz,3,3,2222120,9,8.49,8.11,18.74 +mul,auto,4,4,666444,9,29.84,28.57,19.88 +mul,kernel,4,4,1790440,9,11.20,11.13,20.16 +mul,floor,4,4,1180148,9,17.05,16.89,20.11 +mul,gmp,4,4,2244677,9,9.06,9.00,20.45 +mul,gmpz,4,4,2041939,9,9.79,9.75,20.00 +mul,auto,6,6,611148,9,33.08,32.73,20.20 +mul,kernel,6,6,1045232,9,19.13,18.96,20.00 +mul,floor,6,6,790551,9,24.07,23.72,19.22 +mul,gmp,6,6,1369225,9,14.57,14.50,19.93 +mul,gmpz,6,6,1057712,9,18.80,18.55,19.97 +mul,auto,8,8,488668,9,40.92,40.53,19.98 +mul,kernel,8,8,864754,9,23.30,23.06,20.10 +mul,floor,8,8,648445,9,30.65,30.50,19.87 +mul,gmp,8,8,894498,9,24.32,22.33,21.56 +mul,gmpz,8,8,747312,9,27.04,25.12,19.97 +mul,auto,12,12,322735,9,61.67,61.57,19.94 +mul,kernel,12,12,481581,9,41.52,41.39,20.00 +mul,floor,12,12,401377,9,49.76,49.59,19.98 +mul,gmp,12,12,451379,9,44.73,44.31,20.28 +mul,gmpz,12,12,431535,9,46.64,46.49,20.16 +mul,auto,16,16,209341,9,95.18,94.31,19.91 +mul,kernel,16,16,285874,9,70.05,69.88,20.13 +mul,floor,16,16,252140,9,79.00,78.70,19.94 +mul,gmp,16,16,258780,9,77.65,77.01,20.09 +mul,gmpz,16,16,254065,9,79.40,78.52,20.16 +mul,auto,32,32,65458,9,298.97,296.72,19.66 +mul,kernel,32,32,76506,9,259.71,258.96,19.90 +mul,floor,32,32,71495,9,279.88,279.39,20.02 +mul,gmp,32,32,77432,9,255.47,254.58,19.87 +mul,gmpz,32,32,76497,9,260.74,258.51,19.94 +mul,auto,64,64,19260,9,1038.93,1032.66,20.00 +mul,kernel,64,64,20187,9,986.86,984.21,19.93 +mul,floor,64,64,19453,9,1019.71,1018.06,19.88 +mul,gmp,64,64,25707,9,777.83,773.88,20.04 +mul,gmpz,64,64,25731,9,780.13,776.98,20.09 +mul,auto,128,128,5484,9,3628.43,3613.69,19.93 +mul,kernel,128,128,5619,9,3585.39,3565.96,20.15 +mul,floor,128,128,5536,9,3610.13,3591.88,20.02 +mul,gmp,128,128,7380,9,2667.25,2653.68,19.69 +mul,gmpz,128,128,7440,9,2694.49,2650.90,20.07 +mul,auto,256,256,1681,9,11890.34,11822.23,19.98 +mul,kernel,256,256,1693,9,11770.11,11740.97,19.92 +mul,floor,256,256,1701,9,11776.01,11730.01,20.14 +mul,gmp,256,256,1917,9,10409.12,10363.09,20.04 +mul,gmpz,256,256,2538,9,7862.54,7832.18,19.96 +mul,auto,512,512,541,9,37296.13,37120.61,20.17 +mul,kernel,512,512,542,9,36999.23,36713.56,20.04 +mul,floor,512,512,538,9,37067.77,36909.00,19.99 +mul,gmp,512,512,934,9,21393.92,21281.23,19.98 +mul,gmpz,512,512,1047,9,19074.94,18964.18,20.00 +mul,auto,1000,1000,187,9,107198.75,106838.02,20.07 +mul,kernel,1000,1000,187,9,107220.59,106464.80,20.03 +mul,floor,1000,1000,187,9,107103.17,106670.45,20.03 +mul,gmp,1000,1000,361,9,55772.62,55424.63,20.17 +mul,gmpz,1000,1000,360,9,55365.74,55273.38,19.95 +mul,auto,2000,2000,66,9,303191.92,301200.12,20.02 +mul,kernel,2000,2000,66,9,302335.23,300953.91,19.96 +mul,floor,2000,2000,66,9,303201.38,301662.88,20.01 +mul,gmp,2000,2000,134,9,149185.01,148555.35,19.99 +mul,gmpz,2000,2000,135,9,149311.42,148336.11,20.15 +mul,auto,2000,100,427,9,47377.63,46991.80,20.34 +mul,kernel,2000,100,421,9,46956.75,46726.94,19.78 +mul,floor,2000,100,427,9,46935.01,46760.54,20.05 +mul,gmp,2000,100,571,9,35387.04,35197.97,20.24 +mul,gmpz,2000,100,575,9,35076.59,34990.72,20.21 +sqr,auto,4,4,623937,9,29.67,29.45,18.70 +sqr,kernel,4,4,1754195,9,11.31,11.22,19.98 +sqr,floor,4,4,1232150,9,16.34,16.22,20.10 +sqr,gmp,4,4,2873671,9,6.98,6.96,20.11 +sqr,gmpz,4,4,2062740,9,9.36,9.19,19.42 +sqr,auto,16,16,222906,9,89.23,88.67,19.91 +sqr,kernel,16,16,321364,9,62.23,62.10,20.01 +sqr,floor,16,16,276109,9,72.17,71.84,19.96 +sqr,gmp,16,16,323660,9,62.08,61.20,20.09 +sqr,gmpz,16,16,299157,9,65.52,65.22,19.74 +sqr,auto,64,64,31235,9,626.76,624.30,19.61 +sqr,kernel,64,64,34233,9,581.96,581.14,19.98 +sqr,floor,64,64,33280,9,601.39,599.76,19.58 +sqr,gmp,64,64,30714,9,668.06,656.68,20.47 +sqr,gmpz,64,64,29454,9,666.60,663.22,19.70 +sqr,auto,512,512,807,9,24695.22,24566.14,19.94 +sqr,kernel,512,512,818,9,24380.09,24325.59,19.94 +sqr,floor,512,512,821,9,24430.52,24334.50,20.07 +sqr,gmp,512,512,1212,9,16470.57,16363.04,19.96 +sqr,gmpz,512,512,1014,9,19768.90,19621.06,20.08 +sqr,auto,2000,2000,90,9,224168.06,223427.78,20.23 +sqr,kernel,2000,2000,90,9,223346.29,222568.06,20.12 +sqr,floor,2000,2000,90,9,223080.09,222631.49,20.11 +sqr,gmp,2000,2000,166,9,120979.67,120066.27,20.09 +sqr,gmpz,2000,2000,164,9,120838.92,120523.37,19.83 +divrem,auto,2,1,647562,9,30.68,30.41,19.88 +divrem,kernel,2,1,3172681,9,6.28,6.19,19.92 +divrem,floor,2,1,1402765,9,13.97,13.71,19.52 +divrem,gmp,2,1,3966120,9,5.04,5.00,19.98 +divrem,gmpz,2,1,2281500,9,8.80,8.77,20.08 +divrem,auto,8,4,195980,9,101.72,100.52,19.94 +divrem,kernel,8,4,391032,9,51.49,50.87,20.13 +divrem,floor,8,4,304779,9,65.62,64.80,19.94 +divrem,gmp,8,4,475200,9,41.96,41.51,19.91 +divrem,gmpz,8,4,450395,9,44.34,43.73,19.92 +divrem,auto,32,16,41529,9,481.64,469.21,19.90 +divrem,kernel,32,16,50078,9,401.33,390.77,20.10 +divrem,floor,32,16,46900,9,429.49,415.91,20.16 +divrem,gmp,32,16,95978,9,208.70,205.84,20.03 +divrem,gmpz,32,16,94964,9,210.69,207.26,20.21 +divrem,auto,128,64,5273,9,3778.98,3682.61,19.88 +divrem,kernel,128,64,5518,9,3639.23,3515.05,19.99 +divrem,floor,128,64,5434,9,3682.45,3603.74,19.93 +divrem,gmp,128,64,11235,9,1766.28,1758.74,19.88 +divrem,gmpz,128,64,11330,9,1768.78,1754.07,20.05 +divrem,auto,512,256,727,9,27605.06,27559.95,20.10 +divrem,kernel,512,256,731,9,27186.10,27054.83,19.89 +divrem,floor,512,256,731,9,27396.83,27033.12,19.96 +divrem,gmp,512,256,1201,9,16584.62,16517.90,19.91 +divrem,gmpz,512,256,1214,9,16511.70,16446.46,20.05 +divrem,auto,2000,1000,86,9,234500.97,233234.01,20.23 +divrem,kernel,2000,1000,86,9,232722.38,231947.19,20.04 +divrem,floor,2000,1000,86,9,233781.50,232196.71,20.07 +divrem,gmp,2000,1000,145,9,137287.93,136473.57,19.89 +divrem,gmpz,2000,1000,149,9,135789.71,135242.17,20.25 +divrem,auto,4000,2000,29,9,693232.76,689136.52,20.10 +divrem,kernel,4000,2000,30,9,692530.57,689076.40,20.76 +divrem,floor,4000,2000,29,9,689303.17,684137.93,19.98 +divrem,gmp,4000,2000,59,9,344228.81,343216.81,20.33 +divrem,gmpz,4000,2000,59,9,345331.20,343848.86,20.35 +divrem,auto,2000,100,210,9,96003.77,95619.25,20.18 +divrem,kernel,2000,100,211,9,94394.16,94026.46,19.97 +divrem,floor,2000,100,212,9,94718.16,94373.62,20.08 +divrem,gmp,2000,100,290,9,68990.66,68864.08,20.02 +divrem,gmpz,2000,100,291,9,68898.48,68809.99,20.09 +divrem,auto,65536,1,82,9,245723.07,237563.51,20.06 +divrem,kernel,65536,1,87,9,233218.87,229516.76,20.23 +divrem,floor,65536,1,86,9,229441.86,225676.35,19.74 +divrem,gmp,65536,1,116,9,173149.78,170516.88,20.06 +divrem,gmpz,65536,1,120,9,171800.00,169881.59,20.64 +tochars,auto,1,10,3323971,9,6.03,5.98,20.01 +tochars,kernel,1,10,576229,9,34.51,33.99,19.86 +tochars,gmp,1,10,1240592,9,16.14,15.97,20.12 +tochars,gmpz,1,10,822805,9,24.31,23.99,19.96 +tochars,auto,4,10,220310,9,90.80,90.57,20.00 +tochars,kernel,4,10,198066,9,103.94,99.91,20.06 +tochars,gmp,4,10,257085,9,77.12,76.33,19.80 +tochars,gmpz,4,10,205735,9,97.02,95.86,19.95 +tochars,auto,16,10,23858,9,828.59,817.06,19.79 +tochars,kernel,16,10,26678,9,754.36,746.35,20.15 +tochars,gmp,16,10,38622,9,509.48,499.10,19.63 +tochars,gmpz,16,10,32800,9,609.31,580.25,19.92 +tochars,auto,64,10,4190,9,4781.83,4556.47,19.92 +tochars,kernel,64,10,4597,9,4536.85,4430.25,20.76 +tochars,gmp,64,10,7057,9,2841.00,2823.51,20.04 +tochars,gmpz,64,10,6311,9,3165.95,3100.10,19.95 +tochars,auto,256,10,593,9,33812.89,33108.42,20.02 +tochars,kernel,256,10,615,9,32923.37,32184.48,20.19 +tochars,gmp,256,10,1048,9,19048.47,18891.74,19.93 +tochars,gmpz,256,10,979,9,20459.10,20175.77,20.00 +tochars,auto,2000,10,30,9,678300.00,676106.93,20.34 +tochars,kernel,2000,10,30,9,668930.53,660969.43,20.02 +tochars,gmp,2000,10,50,9,404635.84,401695.84,20.29 +tochars,gmpz,2000,10,48,9,417446.19,415543.42,20.05 +tochars,auto,16,16,237610,9,83.67,83.11,19.89 +tochars,gmp,16,16,250631,9,79.38,78.05,19.87 +tochars,gmpz,16,16,124935,9,162.57,158.17,20.22 +tochars,auto,2000,16,2029,9,9489.40,9462.44,19.35 +tochars,gmp,2000,16,2203,9,9137.62,9026.80,20.16 +tochars,gmpz,2000,16,1156,9,16898.28,16492.65,19.51 +fromchars,auto,4,10,218432,9,99.99,91.49,19.79 +fromchars,kernel,4,10,601284,9,33.29,32.80,19.94 +fromchars,gmp,4,10,659048,9,31.88,30.89,21.06 +fromchars,gmpz,4,10,260568,9,76.22,75.46,19.87 +fromchars,auto,16,10,49835,9,399.81,390.45,19.93 +fromchars,kernel,16,10,104476,9,194.06,193.54,20.29 +fromchars,gmp,16,10,141239,9,141.05,138.78,19.93 +fromchars,gmpz,16,10,62755,9,314.33,311.55,19.69 +fromchars,auto,64,10,9161,9,2200.70,2159.29,20.12 +fromchars,kernel,64,10,10738,9,1865.83,1810.81,19.91 +fromchars,gmp,64,10,20821,9,957.48,949.91,19.95 +fromchars,gmpz,64,10,12437,9,1599.95,1581.35,19.88 +fromchars,auto,256,10,1450,9,13849.45,13814.17,20.11 +fromchars,kernel,256,10,1731,9,11587.71,11493.93,20.04 +fromchars,gmp,256,10,2468,9,8041.23,7974.25,19.87 +fromchars,gmpz,256,10,1840,9,10862.66,10785.62,19.97 +fromchars,auto,2000,10,67,9,300132.46,299353.24,20.12 +fromchars,kernel,2000,10,71,9,283036.38,282345.07,20.10 +fromchars,gmp,2000,10,109,9,184855.89,184611.24,20.18 +fromchars,gmpz,2000,10,98,9,203673.04,202918.80,19.98 diff --git a/tests/beman/big_int/perf/item1/macr3_base64_spot_seed1.csv b/tests/beman/big_int/perf/item1/macr3_base64_spot_seed1.csv new file mode 100644 index 00000000..7cbfe3a5 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_base64_spot_seed1.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,2117,3,9461.42,9284.76,19.91 +add,inplace,16384,16384,612,3,16373.33,16336.26,20.04 +add,kernel,16384,16384,1253,3,16082.93,15732.58,20.02 +add,floor,16384,16384,1215,3,16282.10,16067.25,19.74 +add,gmp,16384,16384,4913,3,4111.61,4090.23,20.19 +add,gmpz,16384,16384,4871,3,4098.50,4090.07,19.95 +mul,auto,2000,2000,66,3,303008.83,302212.12,19.99 +mul,kernel,2000,2000,66,3,302662.88,302150.26,20.00 +mul,floor,2000,2000,67,3,303221.39,302756.21,20.31 +mul,gmp,2000,2000,135,3,149048.45,148858.64,20.12 +mul,gmpz,2000,2000,135,3,148609.57,148253.09,20.08 +mul,auto,16384,16384,4,3,5446895.75,5389979.00,21.73 +mul,kernel,16384,16384,4,3,5461146.00,5460593.75,21.88 +mul,floor,16384,16384,4,3,5472145.75,5470083.25,21.89 +mul,gmp,16384,16384,13,3,1590227.54,1585935.85,20.67 +mul,gmpz,16384,16384,13,3,1572753.23,1572137.77,20.46 +divrem,auto,4096,2048,29,3,706369.24,701439.66,20.45 +divrem,kernel,4096,2048,29,3,705481.34,705250.00,20.49 +divrem,floor,4096,2048,29,3,706485.62,704367.83,20.51 +divrem,gmp,4096,2048,56,3,361521.59,359500.00,20.22 +divrem,gmpz,4096,2048,56,3,361457.59,360947.16,20.23 +tochars,auto,10000,10,3,3,8266069.67,8250514.00,24.80 +tochars,kernel,10000,10,3,3,8243416.67,8243347.00,24.74 +tochars,gmp,10000,10,5,3,4118158.20,4116225.00,20.63 +tochars,gmpz,10000,10,5,3,4171783.20,4162850.00,20.91 +fromchars,auto,10000,10,5,3,4212891.60,4188066.60,21.04 +fromchars,kernel,10000,10,5,3,4181350.00,4151508.40,20.86 +fromchars,gmp,10000,10,12,3,1765892.33,1762111.08,21.20 +fromchars,gmpz,10000,10,11,3,1864181.82,1860488.64,20.56 diff --git a/tests/beman/big_int/perf/item1/macr3_base64_spot_seed2.csv b/tests/beman/big_int/perf/item1/macr3_base64_spot_seed2.csv new file mode 100644 index 00000000..6af8daba --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_base64_spot_seed2.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,2105,3,9486.30,9421.14,19.95 +add,inplace,16384,16384,611,3,16524.75,15899.72,19.95 +add,kernel,16384,16384,1240,3,16275.40,16271.03,20.19 +add,floor,16384,16384,1256,3,16306.66,16117.44,20.42 +add,gmp,16384,16384,4880,3,4113.05,4085.66,20.07 +add,gmpz,16384,16384,4845,3,4097.27,4065.94,19.85 +mul,auto,2000,2000,66,3,304828.29,303018.94,20.08 +mul,kernel,2000,2000,65,3,306265.38,305051.92,19.90 +mul,floor,2000,2000,66,3,301705.18,301495.59,19.93 +mul,gmp,2000,2000,135,3,148996.61,148346.91,20.09 +mul,gmpz,2000,2000,129,3,148763.57,148649.55,19.21 +mul,auto,16384,16384,4,3,5440416.75,5345229.25,21.66 +mul,kernel,16384,16384,4,3,5433458.25,5352562.50,21.66 +mul,floor,16384,16384,4,3,5502645.75,5421260.25,21.93 +mul,gmp,16384,16384,13,3,1583589.77,1581179.46,20.62 +mul,gmpz,16384,16384,13,3,1570038.46,1562612.23,20.41 +divrem,auto,4096,2048,29,3,706814.66,703538.79,20.49 +divrem,kernel,4096,2048,29,3,702818.97,699304.59,20.36 +divrem,floor,4096,2048,29,3,700497.14,699241.38,20.31 +divrem,gmp,4096,2048,56,3,356235.12,355521.59,19.96 +divrem,gmpz,4096,2048,56,3,358593.02,358457.59,20.11 +tochars,auto,10000,10,3,3,8290597.00,8276764.00,24.86 +tochars,kernel,10000,10,3,3,8233028.00,8187652.67,24.66 +tochars,gmp,10000,10,5,3,4112158.20,4110333.40,20.61 +tochars,gmpz,10000,10,5,3,4175058.40,4166866.60,20.87 +fromchars,auto,10000,10,5,3,4184950.00,4179300.00,20.92 +fromchars,kernel,10000,10,5,3,4092716.60,4085566.80,20.47 +fromchars,gmp,10000,10,12,3,1773781.25,1760003.50,21.24 +fromchars,gmpz,10000,10,11,3,1911431.82,1890522.73,20.96 diff --git a/tests/beman/big_int/perf/item1/macr3_new64_seed1a.csv b/tests/beman/big_int/perf/item1/macr3_new64_seed1a.csv new file mode 100644 index 00000000..94d43bd3 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_new64_seed1a.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T17:53:30Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,3355607,9,5.69,5.46,19.25 +add,inplace,1,1,4906225,9,1.86,1.86,18.59 +add,kernel,1,1,17533059,9,1.14,1.14,20.04 +add,floor,1,1,2016053,9,9.43,9.42,19.02 +add,gmp,1,1,13430182,9,1.49,1.48,20.02 +add,gmpz,1,1,6703555,9,2.98,2.96,19.96 +add,auto,2,2,1265574,9,16.02,15.61,20.23 +add,inplace,2,2,2384828,9,4.11,3.99,19.45 +add,kernel,2,2,14390846,9,1.40,1.39,20.18 +add,floor,2,2,2064094,9,9.44,9.42,19.53 +add,gmp,2,2,11515524,9,1.97,1.74,22.03 +add,gmpz,2,2,6184697,9,3.39,3.26,24.06 +add,auto,4,4,1388927,9,14.47,14.20,20.07 +add,inplace,4,4,2584296,9,3.87,3.86,20.01 +add,kernel,4,4,10340527,9,1.94,1.93,20.06 +add,floor,4,4,1864802,9,10.65,10.23,19.86 +add,gmp,4,4,11374938,9,1.75,1.73,19.90 +add,gmpz,4,4,5931671,9,4.25,3.44,24.19 +add,auto,8,8,1279461,9,15.54,15.30,19.87 +add,inplace,8,8,2298803,9,4.30,4.24,19.88 +add,kernel,8,8,5604057,9,3.53,3.48,19.78 +add,floor,8,8,1602456,9,12.76,12.30,20.32 +add,gmp,8,8,8893960,9,2.24,2.24,20.16 +add,gmpz,8,8,4568429,9,4.42,4.22,20.13 +add,auto,16,16,1127409,9,17.85,17.48,20.10 +add,inplace,16,16,1736147,9,5.74,5.71,19.98 +add,kernel,16,16,2651697,9,7.55,7.51,20.08 +add,floor,16,16,1419993,9,13.96,13.65,19.71 +add,gmp,16,16,6200694,9,3.23,3.22,20.02 +add,gmpz,16,16,4786918,9,4.48,4.46,21.42 +add,auto,64,64,490768,9,38.01,37.69,19.17 +add,inplace,64,64,502340,9,19.98,19.78,20.11 +add,kernel,64,64,405014,9,48.84,47.87,19.72 +add,floor,64,64,328371,9,61.25,59.82,20.07 +add,gmp,64,64,1794912,9,11.15,11.05,19.99 +add,gmpz,64,64,1495392,9,13.40,13.37,20.31 +add,auto,256,256,182138,9,109.84,108.26,19.95 +add,inplace,256,256,98882,9,100.50,97.45,19.79 +add,kernel,256,256,85517,9,234.03,233.68,20.03 +add,floor,256,256,82915,9,244.31,238.86,20.24 +add,gmp,256,256,354232,9,58.98,57.82,21.62 +add,gmpz,256,256,345848,9,58.01,57.82,20.10 +add,auto,1024,1024,44779,9,449.40,440.00,20.14 +add,inplace,1024,1024,23011,9,428.48,421.71,19.71 +add,kernel,1024,1024,20626,9,963.46,936.63,19.82 +add,floor,1024,1024,20002,9,978.14,947.93,19.58 +add,gmp,1024,1024,79812,9,251.87,246.47,20.10 +add,gmpz,1024,1024,79713,9,251.94,249.16,20.07 +add,auto,2000,2000,22853,9,878.04,864.80,20.01 +add,inplace,2000,2000,11974,9,854.80,838.49,20.49 +add,kernel,2000,2000,10449,9,1913.37,1857.39,19.91 +add,floor,2000,2000,10360,9,1918.32,1865.29,19.82 +add,gmp,2000,2000,40435,9,493.34,484.32,19.85 +add,gmpz,2000,2000,40198,9,495.83,486.58,19.89 +add,auto,1024,1,205035,9,99.83,92.45,20.26 +add,inplace,1024,1,3222095,9,3.10,3.10,20.00 +add,kernel,1024,1,27011,9,732.51,706.98,19.72 +add,floor,1024,1,26506,9,763.54,751.88,20.31 +add,gmp,1024,1,76821,9,263.98,258.84,20.20 +add,gmpz,1024,1,75231,9,263.60,261.13,19.81 +sub,auto,1,1,3506609,9,5.60,5.47,19.69 +sub,inplace,1,1,5043389,9,1.98,1.98,20.04 +sub,kernel,1,1,19096529,9,1.05,1.05,20.03 +sub,floor,1,1,11531724,9,1.74,1.73,20.24 +sub,gmp,1,1,13404820,9,1.49,1.48,20.00 +sub,gmpz,1,1,7986529,9,2.48,2.48,19.83 +sub,auto,2,2,1308131,9,15.27,14.66,19.85 +sub,inplace,2,2,2663863,9,3.82,3.74,20.33 +sub,kernel,2,2,14400518,9,1.39,1.39,20.09 +sub,floor,2,2,2105344,9,9.22,9.18,19.56 +sub,gmp,2,2,10984323,9,1.99,1.74,21.23 +sub,gmpz,2,2,7337532,9,2.73,2.73,20.09 +sub,auto,4,4,1294604,9,15.03,14.94,19.68 +sub,inplace,4,4,2323970,9,3.98,3.95,19.18 +sub,kernel,4,4,10375633,9,1.93,1.92,20.05 +sub,floor,4,4,2008490,9,10.16,9.92,20.45 +sub,gmp,4,4,11531706,9,1.74,1.73,20.06 +sub,gmpz,4,4,7305971,9,2.73,2.73,19.96 +sub,auto,8,8,1250468,9,15.00,14.96,19.31 +sub,inplace,8,8,2308544,9,4.11,4.10,19.21 +sub,kernel,8,8,5727692,9,3.50,3.48,20.12 +sub,floor,8,8,1734066,9,11.45,11.40,19.98 +sub,gmp,8,8,8927269,9,2.23,2.23,19.94 +sub,gmpz,8,8,6191023,9,3.23,3.22,19.98 +sub,auto,16,16,1069307,9,18.11,17.95,19.52 +sub,inplace,16,16,1832054,9,5.47,5.46,20.10 +sub,kernel,16,16,2614408,9,7.70,7.66,20.13 +sub,floor,16,16,1334144,9,14.91,14.84,19.99 +sub,gmp,16,16,6200106,9,3.23,3.22,20.02 +sub,gmpz,16,16,4578882,9,4.35,4.34,19.93 +sub,auto,64,64,556624,9,36.55,36.00,20.26 +sub,inplace,64,64,502969,9,19.81,19.51,19.90 +sub,kernel,64,64,382691,9,53.07,51.97,20.26 +sub,floor,64,64,327440,9,61.32,59.12,20.02 +sub,gmp,64,64,1799033,9,11.11,11.02,19.98 +sub,gmpz,64,64,1497606,9,13.47,13.32,20.15 +sub,auto,256,256,181181,9,110.58,108.90,19.98 +sub,inplace,256,256,101171,9,99.27,96.86,20.07 +sub,kernel,256,256,85655,9,243.76,226.66,20.55 +sub,floor,256,256,81582,9,245.66,242.43,20.01 +sub,gmp,256,256,351485,9,57.17,56.20,20.06 +sub,gmpz,256,256,349735,9,57.89,57.04,20.25 +sub,auto,1024,1024,44355,9,451.60,438.80,19.94 +sub,inplace,1024,1024,23189,9,430.80,418.19,19.89 +sub,kernel,1024,1024,20678,9,970.09,967.59,20.08 +sub,floor,1024,1024,18954,9,986.05,950.09,18.64 +sub,gmp,1024,1024,79501,9,251.29,247.86,19.96 +sub,gmpz,1024,1024,79815,9,251.97,247.53,20.13 +sub,auto,2000,2000,22322,9,877.64,854.07,19.53 +sub,inplace,2000,2000,11852,9,848.71,821.77,20.06 +sub,kernel,2000,2000,10410,9,1918.86,1869.98,19.92 +sub,floor,2000,2000,10258,9,1922.11,1890.12,19.67 +sub,gmp,2000,2000,40264,9,494.41,486.14,19.80 +sub,gmpz,2000,2000,40232,9,496.91,491.80,20.00 +sub,auto,1024,1,143840,9,144.59,135.34,21.00 +sub,inplace,1024,1,3216013,9,3.11,3.09,20.01 +sub,kernel,1024,1,27529,9,729.41,719.01,20.09 +sub,floor,1024,1,26425,9,756.94,734.04,20.12 +sub,gmp,1024,1,76582,9,261.23,257.31,19.97 +sub,gmpz,1024,1,75530,9,264.43,258.12,19.92 +shl,auto,1,13,1637556,9,12.25,11.95,20.03 +shl,inplace,1,13,2935076,9,3.38,3.37,19.89 +shl,kernel,1,13,7971722,9,2.49,2.48,19.84 +shl,kernelip,1,13,8935930,9,1.73,1.41,30.10 +shl,floor,1,13,1872316,9,10.43,10.40,19.80 +shl,gmp,1,13,16222250,9,1.24,1.24,20.17 +shl,gmpz,1,13,10046469,9,1.98,1.98,19.97 +shl,auto,4,13,1562599,9,13.16,12.76,20.52 +shl,inplace,4,13,1871308,9,5.44,4.88,19.99 +shl,kernel,4,13,5365395,9,3.72,3.70,20.00 +shl,kernelip,4,13,2974597,9,3.36,3.29,19.96 +shl,floor,4,13,1579406,9,12.56,12.42,19.81 +shl,gmp,4,13,9976432,9,1.99,1.98,19.92 +shl,gmpz,4,13,7319537,9,2.73,2.72,19.98 +shl,auto,16,13,1294945,9,15.30,15.19,19.83 +shl,inplace,16,13,1462396,9,6.83,6.82,19.99 +shl,kernel,16,13,4890110,9,4.09,4.05,20.01 +shl,kernelip,16,13,1444386,9,6.79,6.73,19.65 +shl,floor,16,13,1633533,9,12.01,11.93,19.93 +shl,gmp,16,13,5700463,9,3.48,3.47,20.08 +shl,gmpz,16,13,3902753,9,5.15,5.12,20.10 +shl,auto,256,13,487950,9,40.99,40.91,20.03 +shl,inplace,256,13,222247,9,45.03,44.83,20.02 +shl,kernel,256,13,406796,9,49.02,48.83,19.94 +shl,kernelip,256,13,206425,9,48.71,48.58,20.13 +shl,floor,256,13,332384,9,57.09,56.96,19.02 +shl,gmp,256,13,542407,9,36.97,36.92,20.07 +shl,gmpz,256,13,528436,9,37.96,37.76,20.17 +shl,auto,2000,13,80392,9,265.25,237.42,21.55 +shl,inplace,2000,13,28886,9,346.19,343.48,20.00 +shl,kernel,2000,13,51557,9,383.53,380.16,19.76 +shl,kernelip,2000,13,26617,9,376.00,373.68,20.02 +shl,floor,2000,13,49801,9,400.03,397.58,19.96 +shl,gmp,2000,13,29113,9,1214.86,1037.33,38.87 +shl,gmpz,2000,13,11771,9,2498.51,1869.70,22.78 +shl,auto,2000,77,65039,9,388.04,286.88,30.07 +shl,inplace,2000,77,45401,9,228.70,220.67,20.72 +shl,kernel,2000,77,38105,9,526.79,524.50,20.09 +shl,kernelip,2000,77,19280,9,519.78,511.03,19.98 +shl,floor,2000,77,36773,9,543.74,539.58,19.99 +shl,gmp,2000,77,68253,9,290.13,287.17,19.78 +shl,gmpz,2000,77,68264,9,288.44,286.78,19.75 +shr,auto,1,13,2984976,9,6.69,6.69,20.00 +shr,inplace,1,13,3743937,9,3.05,2.60,21.09 +shr,kernel,1,13,8809606,9,2.23,2.23,19.68 +shr,floor,1,13,8056212,9,2.48,2.42,20.39 +shr,gmp,1,13,20000001,9,0.99,0.99,19.95 +shr,gmpz,1,13,10064042,9,1.99,1.98,20.02 +shr,auto,4,13,1416668,9,14.40,14.17,20.39 +shr,inplace,4,13,2103054,9,4.32,4.29,18.20 +shr,kernel,4,13,5361335,9,3.77,3.72,20.16 +shr,floor,4,13,1643031,9,12.39,12.35,20.54 +shr,gmp,4,13,11493716,9,1.74,1.72,19.96 +shr,gmpz,4,13,7327800,9,2.73,2.72,20.01 +shr,auto,16,13,1107310,9,18.00,17.97,19.98 +shr,inplace,16,13,1630940,9,6.12,6.09,19.99 +shr,kernel,16,13,4829532,9,4.10,4.09,19.81 +shr,floor,16,13,1550916,9,12.93,12.89,20.09 +shr,gmp,16,13,6201495,9,3.26,3.22,20.15 +shr,gmpz,16,13,4723774,9,4.24,4.22,20.00 +shr,auto,256,13,473714,9,43.14,42.27,20.53 +shr,inplace,256,13,223823,9,44.57,44.45,19.96 +shr,kernel,256,13,298563,9,66.60,66.17,19.88 +shr,floor,256,13,265289,9,75.30,74.76,19.97 +shr,gmp,256,13,538029,9,36.72,36.61,19.96 +shr,gmpz,256,13,524269,9,38.07,37.86,19.97 +shr,auto,2000,13,80923,9,257.98,235.79,20.98 +shr,inplace,2000,13,28895,9,349.54,343.22,20.12 +shr,kernel,2000,13,39088,9,512.43,506.60,20.03 +shr,floor,2000,13,38210,9,529.12,518.47,20.12 +shr,gmp,2000,13,64835,9,293.64,289.65,19.65 +shr,gmpz,2000,13,68966,9,300.14,288.17,20.56 +shr,auto,2000,77,73889,9,274.84,250.56,19.95 +shr,inplace,2000,77,51017,9,195.75,195.18,19.98 +shr,kernel,2000,77,38810,9,515.67,511.81,19.99 +shr,floor,2000,77,38619,9,527.17,524.00,20.34 +shr,gmp,2000,77,68861,9,290.40,289.25,20.05 +shr,gmpz,2000,77,69869,9,287.58,285.93,20.16 +mul,auto,1,1,1363025,9,13.76,13.55,19.22 +mul,gmp,1,1,5335522,9,3.72,3.71,19.85 +mul,gmpz,1,1,7280323,9,2.74,2.73,19.99 +mul,auto,2,2,1091172,9,18.37,17.76,20.08 +mul,kernel,2,2,3104767,9,6.33,6.30,19.67 +mul,floor,2,2,1371450,9,14.41,14.37,19.83 +mul,gmp,2,2,4234233,9,4.73,4.70,20.04 +mul,gmpz,2,2,2809176,9,6.50,6.48,18.29 +mul,auto,3,3,1019545,9,19.61,19.43,20.39 +mul,kernel,3,3,2446290,9,8.20,8.17,20.05 +mul,floor,3,3,1186105,9,16.93,16.68,20.08 +mul,gmp,3,3,3284540,9,6.07,6.04,19.94 +mul,gmpz,3,3,2542574,9,10.79,7.83,22.59 +mul,auto,4,4,965064,9,21.86,21.55,21.08 +mul,kernel,4,4,1803115,9,10.96,10.87,19.82 +mul,floor,4,4,1184007,9,16.41,16.37,19.60 +mul,gmp,4,4,2233375,9,8.97,8.93,20.02 +mul,gmpz,4,4,1790410,9,11.03,10.92,19.82 +mul,auto,6,6,737039,9,27.08,26.83,19.99 +mul,kernel,6,6,1049301,9,19.16,18.93,20.07 +mul,floor,6,6,812271,9,24.10,23.82,19.57 +mul,gmp,6,6,1405557,9,14.37,14.28,20.24 +mul,gmpz,6,6,1072153,9,18.69,18.35,20.02 +mul,auto,8,8,568559,9,34.59,34.27,19.71 +mul,kernel,8,8,872216,9,22.93,22.88,20.03 +mul,floor,8,8,652606,9,30.26,30.18,19.82 +mul,gmp,8,8,819548,9,24.13,22.62,19.70 +mul,gmpz,8,8,814514,9,24.47,24.37,19.98 +mul,auto,12,12,370264,9,53.76,53.64,19.90 +mul,kernel,12,12,486991,9,41.31,41.22,20.13 +mul,floor,12,12,400132,9,49.59,49.18,19.84 +mul,gmp,12,12,453865,9,44.10,43.96,20.03 +mul,gmpz,12,12,433262,9,46.63,46.43,20.19 +mul,auto,16,16,242429,9,82.39,82.33,19.99 +mul,kernel,16,16,283937,9,69.47,69.34,19.75 +mul,floor,16,16,254794,9,78.35,78.09,19.96 +mul,gmp,16,16,258874,9,77.29,77.00,20.02 +mul,gmpz,16,16,252906,9,78.99,78.91,19.98 +mul,auto,32,32,71149,9,280.00,279.33,19.96 +mul,kernel,32,32,77340,9,258.05,257.17,19.95 +mul,floor,32,32,71913,9,277.64,276.22,19.99 +mul,gmp,32,32,74326,9,268.68,267.23,19.95 +mul,gmpz,32,32,73394,9,271.18,270.72,19.95 +mul,auto,64,64,19856,9,1006.87,1003.62,20.00 +mul,kernel,64,64,20354,9,986.99,982.43,20.07 +mul,floor,64,64,19934,9,1006.34,1005.13,20.07 +mul,gmp,64,64,25934,9,773.44,772.56,20.09 +mul,gmpz,64,64,25771,9,776.18,771.23,20.00 +mul,auto,128,128,5604,9,3575.45,3566.28,20.06 +mul,kernel,128,128,5585,9,3579.78,3573.22,20.12 +mul,floor,128,128,5578,9,3585.91,3578.87,20.04 +mul,gmp,128,128,6638,9,3006.09,2989.00,19.94 +mul,gmpz,128,128,6716,9,2987.13,2973.75,20.07 +mul,auto,256,256,1661,9,12044.18,11978.48,20.01 +mul,kernel,256,256,1694,9,11767.02,11745.33,20.02 +mul,floor,256,256,1665,9,11756.23,11729.43,19.57 +mul,gmp,256,256,2550,9,7817.91,7785.96,19.94 +mul,gmpz,256,256,2551,9,7838.84,7776.41,19.98 +mul,auto,512,512,542,9,36959.56,36842.25,20.02 +mul,kernel,512,512,543,9,36924.42,36830.95,20.12 +mul,floor,512,512,543,9,36966.16,36763.20,20.05 +mul,gmp,512,512,937,9,21378.82,21245.69,20.03 +mul,gmpz,512,512,1053,9,19159.19,18988.17,20.14 +mul,auto,1000,1000,188,9,106569.15,105911.35,20.06 +mul,kernel,1000,1000,188,9,106526.82,105934.84,20.07 +mul,floor,1000,1000,188,9,106657.13,106480.28,20.08 +mul,gmp,1000,1000,360,9,55238.77,54819.33,19.86 +mul,gmpz,1000,1000,363,9,55045.11,54289.83,19.98 +mul,auto,2000,2000,67,9,301615.67,299862.55,20.24 +mul,kernel,2000,2000,67,9,301534.19,298630.60,20.17 +mul,floor,2000,2000,67,9,302591.42,299557.84,20.35 +mul,gmp,2000,2000,135,9,148550.31,148049.70,20.07 +mul,gmpz,2000,2000,133,9,148957.71,148530.70,19.86 +mul,auto,2000,100,432,9,46327.35,46186.63,20.03 +mul,kernel,2000,100,428,9,46625.68,46398.75,19.96 +mul,floor,2000,100,429,9,46693.08,46527.68,20.05 +mul,gmp,2000,100,568,9,35050.69,34985.26,19.93 +mul,gmpz,2000,100,576,9,34772.79,34399.31,20.07 +sqr,auto,4,4,918558,9,21.75,21.38,20.07 +sqr,kernel,4,4,1763382,9,10.98,10.83,19.50 +sqr,floor,4,4,1191009,9,16.45,16.41,19.62 +sqr,gmp,4,4,2869766,9,6.95,6.94,19.97 +sqr,gmpz,4,4,2231034,9,9.69,9.63,21.61 +sqr,auto,16,16,257655,9,77.94,77.55,20.08 +sqr,kernel,16,16,287656,9,69.45,69.08,20.05 +sqr,floor,16,16,274452,9,73.51,73.07,20.19 +sqr,gmp,16,16,313576,9,62.11,61.46,19.54 +sqr,gmpz,16,16,290350,9,68.70,68.54,19.94 +sqr,auto,64,64,33392,9,599.65,599.01,20.05 +sqr,kernel,64,64,34422,9,580.14,579.07,19.97 +sqr,floor,64,64,33362,9,599.41,597.72,20.00 +sqr,gmp,64,64,29697,9,673.86,671.14,20.11 +sqr,gmpz,64,64,29331,9,677.17,674.63,19.92 +sqr,auto,512,512,826,9,24294.04,24115.87,20.07 +sqr,kernel,512,512,822,9,24338.60,24304.74,20.05 +sqr,floor,512,512,822,9,24373.48,24220.09,20.06 +sqr,gmp,512,512,1214,9,16526.70,16317.85,20.11 +sqr,gmpz,512,512,922,9,21402.88,21189.08,19.73 +sqr,auto,2000,2000,90,9,222424.08,221779.62,20.03 +sqr,kernel,2000,2000,90,9,223153.70,222575.47,20.08 +sqr,floor,2000,2000,90,9,223671.76,221416.67,20.15 +sqr,gmp,2000,2000,166,9,121018.07,119689.25,20.06 +sqr,gmpz,2000,2000,168,9,120847.23,118926.59,20.25 +divrem,auto,2,1,705155,9,28.53,28.24,20.20 +divrem,kernel,2,1,3556788,9,5.78,5.68,20.53 +divrem,floor,2,1,1478992,9,13.47,13.16,19.91 +divrem,gmp,2,1,4002274,9,5.00,4.99,20.04 +divrem,gmpz,2,1,2299134,9,8.66,8.63,19.94 +divrem,auto,8,4,281720,9,70.91,70.24,19.99 +divrem,kernel,8,4,487903,9,41.03,40.17,20.08 +divrem,floor,8,4,361101,9,56.13,55.67,20.22 +divrem,gmp,8,4,506650,9,39.92,38.64,20.18 +divrem,gmpz,8,4,459907,9,43.86,42.51,20.09 +divrem,auto,32,16,44814,9,431.90,423.50,19.41 +divrem,kernel,32,16,53258,9,388.40,374.66,20.62 +divrem,floor,32,16,48393,9,405.98,393.20,19.55 +divrem,gmp,32,16,96320,9,207.67,205.37,20.00 +divrem,gmpz,32,16,95419,9,209.03,206.14,19.91 +divrem,auto,128,64,5559,9,3638.87,3562.86,20.17 +divrem,kernel,128,64,5610,9,3552.51,3456.63,19.84 +divrem,floor,128,64,5532,9,3613.92,3606.04,20.00 +divrem,gmp,128,64,11235,9,1783.44,1751.93,19.96 +divrem,gmpz,128,64,11273,9,1785.53,1750.73,20.09 +divrem,auto,512,256,675,9,29625.43,29190.25,19.98 +divrem,kernel,512,256,680,9,29494.42,28926.04,20.05 +divrem,floor,512,256,677,9,29493.91,29057.42,19.94 +divrem,gmp,512,256,1223,9,16442.12,16198.66,20.08 +divrem,gmpz,512,256,1225,9,16353.57,16209.29,20.01 +divrem,auto,2000,1000,87,9,232196.37,230154.21,20.20 +divrem,kernel,2000,1000,87,9,231220.31,230997.61,20.14 +divrem,floor,2000,1000,88,9,231456.92,230117.90,20.37 +divrem,gmp,2000,1000,149,9,135994.41,135175.05,20.26 +divrem,gmpz,2000,1000,149,9,134220.64,133941.56,20.10 +divrem,auto,4000,2000,30,9,686812.50,684288.87,20.61 +divrem,kernel,4000,2000,30,9,684112.50,679672.20,20.54 +divrem,floor,4000,2000,30,9,684790.27,682258.33,20.55 +divrem,gmp,4000,2000,59,9,343136.31,340579.08,20.23 +divrem,gmpz,4000,2000,59,9,346218.22,342485.88,20.39 +divrem,auto,2000,100,213,9,94130.87,93843.31,20.04 +divrem,kernel,2000,100,214,9,93757.59,93608.45,20.07 +divrem,floor,2000,100,213,9,93928.01,93697.97,20.02 +divrem,gmp,2000,100,291,9,69504.01,69094.36,20.21 +divrem,gmpz,2000,100,286,9,69445.66,69231.21,19.86 +divrem,auto,65536,1,88,9,228733.90,224126.42,20.06 +divrem,kernel,65536,1,89,9,224873.60,222929.30,20.01 +divrem,floor,65536,1,88,9,240370.27,227685.60,21.17 +divrem,gmp,65536,1,121,9,169556.47,167073.69,20.47 +divrem,gmpz,65536,1,120,9,167806.25,165224.31,20.07 +tochars,auto,1,10,3347882,9,5.97,5.96,20.00 +tochars,kernel,1,10,597895,9,33.45,32.38,19.92 +tochars,gmp,1,10,1183133,9,16.89,16.84,20.04 +tochars,gmpz,1,10,761164,9,25.75,25.42,19.68 +tochars,auto,4,10,260545,9,77.47,76.76,20.25 +tochars,kernel,4,10,198705,9,100.12,97.59,19.86 +tochars,gmp,4,10,279648,9,72.78,71.32,20.31 +tochars,gmpz,4,10,214999,9,93.51,93.12,20.12 +tochars,auto,16,10,23714,9,839.91,824.40,19.86 +tochars,kernel,16,10,27545,9,733.89,730.60,20.30 +tochars,gmp,16,10,39831,9,504.45,499.30,20.09 +tochars,gmpz,16,10,33342,9,600.43,597.66,20.06 +tochars,auto,64,10,4231,9,4691.96,4596.20,19.80 +tochars,kernel,64,10,4463,9,4437.78,4302.47,19.74 +tochars,gmp,64,10,7044,9,2833.72,2778.27,19.91 +tochars,gmpz,64,10,6347,9,3117.35,3039.37,19.75 +tochars,auto,256,10,608,9,33283.86,32519.19,20.18 +tochars,kernel,256,10,609,9,32563.49,31880.06,19.81 +tochars,gmp,256,10,1052,9,19067.57,18564.08,19.95 +tochars,gmpz,256,10,977,9,20402.38,20072.46,19.89 +tochars,auto,2000,10,30,9,676815.27,666637.50,20.28 +tochars,kernel,2000,10,31,9,667858.87,661131.71,20.69 +tochars,gmp,2000,10,50,9,402912.50,396872.50,20.12 +tochars,gmpz,2000,10,49,9,415520.41,410985.53,20.35 +tochars,auto,16,16,233119,9,82.56,82.24,19.53 +tochars,gmp,16,16,253462,9,78.90,77.84,20.05 +tochars,gmpz,16,16,126649,9,157.31,153.81,19.87 +tochars,auto,2000,16,2115,9,9431.64,9300.87,19.90 +tochars,gmp,2000,16,2247,9,9226.06,8894.93,20.61 +tochars,gmpz,2000,16,1211,9,16677.02,16500.48,20.16 +fromchars,auto,4,10,221407,9,89.50,88.15,19.79 +fromchars,kernel,4,10,620663,9,33.28,32.73,20.66 +fromchars,gmp,4,10,647083,9,30.77,29.47,19.93 +fromchars,gmpz,4,10,263975,9,76.05,74.89,20.06 +fromchars,auto,16,10,49714,9,401.69,389.54,19.91 +fromchars,kernel,16,10,104293,9,189.56,185.71,19.77 +fromchars,gmp,16,10,137154,9,145.99,141.88,19.90 +fromchars,gmpz,16,10,62658,9,314.06,310.25,19.70 +fromchars,auto,64,10,9152,9,2179.65,2152.25,19.95 +fromchars,kernel,64,10,10894,9,1857.21,1807.41,20.19 +fromchars,gmp,64,10,20938,9,952.32,942.70,19.92 +fromchars,gmpz,64,10,12545,9,1596.74,1569.70,19.95 +fromchars,auto,256,10,1448,9,13812.93,13682.18,20.03 +fromchars,kernel,256,10,1730,9,11508.16,11491.76,19.92 +fromchars,gmp,256,10,2504,9,7913.54,7874.53,19.84 +fromchars,gmpz,256,10,1827,9,10824.01,10767.63,19.90 +fromchars,auto,2000,10,67,9,300572.13,299582.09,20.21 +fromchars,kernel,2000,10,71,9,282828.63,281274.65,20.08 +fromchars,gmp,2000,10,109,9,184022.17,183550.07,20.11 +fromchars,gmpz,2000,10,97,9,203498.71,202642.19,19.75 diff --git a/tests/beman/big_int/perf/item1/macr3_new64_seed1b.csv b/tests/beman/big_int/perf/item1/macr3_new64_seed1b.csv new file mode 100644 index 00000000..756e96c5 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_new64_seed1b.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T17:58:23Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,3334793,9,5.78,5.72,19.87 +add,inplace,1,1,5341507,9,1.88,1.87,20.28 +add,kernel,1,1,17308043,9,1.15,1.14,19.88 +add,floor,1,1,2009624,9,9.82,9.67,19.79 +add,gmp,1,1,13369692,9,1.49,1.49,19.99 +add,gmpz,1,1,6315773,9,2.99,2.97,19.06 +add,auto,2,2,1232136,9,15.84,15.74,19.58 +add,inplace,2,2,2413612,9,4.12,4.09,19.86 +add,kernel,2,2,14327790,9,1.40,1.39,20.07 +add,floor,2,2,1994546,9,10.27,9.76,20.57 +add,gmp,2,2,10666819,9,1.76,1.74,18.82 +add,gmpz,2,2,6708860,9,3.24,2.99,19.36 +add,auto,4,4,1322845,9,14.77,14.52,19.49 +add,inplace,4,4,2644993,9,3.89,3.78,20.49 +add,kernel,4,4,10366129,9,1.96,1.91,20.33 +add,floor,4,4,1934137,9,10.46,10.22,20.26 +add,gmp,4,4,11154908,9,1.75,1.75,19.89 +add,gmpz,4,4,5431921,9,3.92,3.33,20.87 +add,auto,8,8,1274893,9,15.65,15.54,20.11 +add,inplace,8,8,2255206,9,4.38,4.21,19.54 +add,kernel,8,8,5395959,9,3.51,3.48,19.13 +add,floor,8,8,1692757,9,11.96,11.77,20.58 +add,gmp,8,8,8892725,9,2.29,2.24,20.41 +add,gmpz,8,8,4941550,9,4.32,3.90,21.13 +add,auto,16,16,1087990,9,17.88,16.79,19.21 +add,inplace,16,16,1716468,9,5.75,5.73,19.85 +add,kernel,16,16,2602691,9,7.58,7.53,19.73 +add,floor,16,16,1430264,9,14.15,14.00,20.28 +add,gmp,16,16,5670472,9,3.27,3.24,18.65 +add,gmpz,16,16,5004577,9,4.07,4.00,20.21 +add,auto,64,64,516931,9,38.25,37.81,19.85 +add,inplace,64,64,499869,9,19.96,19.84,19.98 +add,kernel,64,64,413365,9,49.61,48.74,20.46 +add,floor,64,64,332058,9,61.02,60.87,20.27 +add,gmp,64,64,1791062,9,11.16,11.12,20.01 +add,gmpz,64,64,1491247,9,13.36,13.33,19.92 +add,auto,256,256,175769,9,109.70,108.74,19.34 +add,inplace,256,256,97877,9,101.51,99.44,19.83 +add,kernel,256,256,83692,9,238.15,229.38,19.85 +add,floor,256,256,79585,9,250.99,240.37,19.80 +add,gmp,256,256,352566,9,57.15,56.96,20.15 +add,gmpz,256,256,343230,9,57.92,57.40,19.85 +add,auto,1024,1024,44384,9,452.82,440.41,20.24 +add,inplace,1024,1024,22598,9,438.62,429.89,19.82 +add,kernel,1024,1024,20017,9,984.25,950.94,19.50 +add,floor,1024,1024,20130,9,1000.05,982.21,20.04 +add,gmp,1024,1024,79749,9,252.29,250.11,20.12 +add,gmpz,1024,1024,78725,9,253.71,252.32,20.00 +add,auto,2000,2000,21952,9,884.87,860.00,19.44 +add,inplace,2000,2000,11223,9,885.70,863.78,19.80 +add,kernel,2000,2000,10125,9,1958.58,1899.01,19.75 +add,floor,2000,2000,10096,9,1968.90,1940.60,20.14 +add,gmp,2000,2000,40275,9,497.38,486.38,19.99 +add,gmpz,2000,2000,39988,9,498.64,494.29,19.92 +add,auto,1024,1,206017,9,114.25,102.36,23.48 +add,inplace,1024,1,3214098,9,3.12,3.12,20.13 +add,kernel,1024,1,25954,9,752.63,745.13,19.52 +add,floor,1024,1,25486,9,772.89,757.86,19.73 +add,gmp,1024,1,77137,9,264.51,258.60,20.40 +add,gmpz,1024,1,75354,9,267.73,266.95,20.18 +sub,auto,1,1,3553778,9,5.75,5.55,20.28 +sub,inplace,1,1,4660371,9,2.01,2.00,18.88 +sub,kernel,1,1,19034571,9,1.05,1.05,20.04 +sub,floor,1,1,11459514,9,1.74,1.74,20.01 +sub,gmp,1,1,13449620,9,1.50,1.49,20.18 +sub,gmpz,1,1,7997415,9,2.49,2.49,19.96 +sub,auto,2,2,1356343,9,14.52,14.33,19.78 +sub,inplace,2,2,2606435,9,3.84,3.81,20.06 +sub,kernel,2,2,14181385,9,1.43,1.40,20.20 +sub,floor,2,2,2299990,9,9.31,8.84,21.32 +sub,gmp,2,2,10019353,9,2.00,1.99,20.01 +sub,gmpz,2,2,6772013,9,2.74,2.72,18.90 +sub,auto,4,4,1276358,9,15.24,15.07,19.46 +sub,inplace,4,4,2495082,9,4.12,3.98,20.65 +sub,kernel,4,4,10418444,9,1.93,1.92,20.09 +sub,floor,4,4,2060353,9,9.96,9.71,20.49 +sub,gmp,4,4,11472489,9,1.74,1.74,19.99 +sub,gmpz,4,4,7319869,9,2.74,2.73,20.13 +sub,auto,8,8,1306127,9,15.24,15.21,20.07 +sub,inplace,8,8,2236972,9,4.39,4.35,19.71 +sub,kernel,8,8,5739881,9,3.49,3.47,20.13 +sub,floor,8,8,1730563,9,11.24,11.18,20.08 +sub,gmp,8,8,8920903,9,2.25,2.23,20.05 +sub,gmpz,8,8,6179742,9,3.23,3.22,20.10 +sub,auto,16,16,1079554,9,18.03,17.61,19.53 +sub,inplace,16,16,1862101,9,5.47,5.45,20.45 +sub,kernel,16,16,2599940,9,7.73,7.68,20.09 +sub,floor,16,16,1316840,9,15.16,14.90,19.94 +sub,gmp,16,16,6790364,9,3.22,2.94,21.35 +sub,gmpz,16,16,4612577,9,4.39,4.34,20.21 +sub,auto,64,64,551313,9,36.20,35.91,19.92 +sub,inplace,64,64,507653,9,19.83,19.69,20.12 +sub,kernel,64,64,374353,9,53.69,52.06,19.99 +sub,floor,64,64,329007,9,61.47,60.35,20.19 +sub,gmp,64,64,1730154,9,11.57,11.44,19.98 +sub,gmpz,64,64,1438237,9,13.96,13.74,20.04 +sub,auto,256,256,180380,9,111.86,110.97,20.16 +sub,inplace,256,256,98104,9,101.36,99.51,19.84 +sub,kernel,256,256,82664,9,237.28,226.91,19.53 +sub,floor,256,256,80114,9,249.58,243.85,19.91 +sub,gmp,256,256,350214,9,57.59,56.97,20.19 +sub,gmpz,256,256,343623,9,58.17,57.42,19.98 +sub,auto,1024,1024,40285,9,475.32,454.25,19.02 +sub,inplace,1024,1024,22544,9,441.57,432.73,19.87 +sub,kernel,1024,1024,20383,9,1000.90,958.63,20.34 +sub,floor,1024,1024,20276,9,1006.70,968.98,20.23 +sub,gmp,1024,1024,79394,9,253.39,252.11,20.36 +sub,gmpz,1024,1024,76209,9,255.92,252.54,19.54 +sub,auto,2000,2000,22226,9,905.32,882.39,20.20 +sub,inplace,2000,2000,11498,9,867.70,848.34,19.96 +sub,kernel,2000,2000,10368,9,1952.25,1925.26,20.26 +sub,floor,2000,2000,10686,9,1979.37,1942.48,21.06 +sub,gmp,2000,2000,40206,9,497.69,496.08,20.04 +sub,gmpz,2000,2000,40230,9,497.82,490.15,19.97 +sub,auto,1024,1,147306,9,135.55,122.92,20.16 +sub,inplace,1024,1,2971090,9,3.38,3.35,20.32 +sub,kernel,1024,1,27602,9,741.27,720.70,20.36 +sub,floor,1024,1,26414,9,764.13,752.27,20.16 +sub,gmp,1024,1,75640,9,264.34,260.08,20.08 +sub,gmpz,1024,1,74350,9,268.19,263.68,20.62 +shl,auto,1,13,1638441,9,12.80,12.03,20.87 +shl,inplace,1,13,2994470,9,3.47,3.42,20.80 +shl,kernel,1,13,8031678,9,2.49,2.48,20.02 +shl,kernelip,1,13,8893093,9,1.73,1.64,25.74 +shl,floor,1,13,1780501,9,11.18,10.97,19.85 +shl,gmp,1,13,15863435,9,1.25,1.24,19.81 +shl,gmpz,1,13,10068404,9,1.99,1.99,20.15 +shl,auto,4,13,1525655,9,13.22,13.10,20.28 +shl,inplace,4,13,1862022,9,5.35,5.28,19.99 +shl,kernel,4,13,5346830,9,3.75,3.73,20.09 +shl,kernelip,4,13,2971528,9,3.38,3.31,20.03 +shl,floor,4,13,1510916,9,13.20,13.02,19.96 +shl,gmp,4,13,10011664,9,1.99,1.98,19.98 +shl,gmpz,4,13,7286766,9,2.74,2.73,19.98 +shl,auto,16,13,1240405,9,16.64,16.17,20.60 +shl,inplace,16,13,1447404,9,6.88,6.83,19.97 +shl,kernel,16,13,4860389,9,4.14,4.11,20.10 +shl,kernelip,16,13,1355247,9,6.81,6.76,18.47 +shl,floor,16,13,1600952,9,12.37,12.26,19.87 +shl,gmp,16,13,5728270,9,3.51,3.49,20.09 +shl,gmpz,16,13,3861804,9,5.30,5.26,20.66 +shl,auto,256,13,470230,9,41.85,41.48,19.76 +shl,inplace,256,13,219652,9,45.38,45.09,19.93 +shl,kernel,256,13,400108,9,49.39,49.21,19.83 +shl,kernelip,256,13,202123,9,49.19,48.86,19.90 +shl,floor,256,13,342302,9,58.23,57.72,19.98 +shl,gmp,256,13,541998,9,37.14,37.05,20.16 +shl,gmpz,256,13,520243,9,38.26,37.95,20.12 +shl,auto,2000,13,87408,9,256.01,245.17,21.20 +shl,inplace,2000,13,28891,9,350.56,346.38,20.25 +shl,kernel,2000,13,52831,9,387.41,383.44,20.45 +shl,kernelip,2000,13,26262,9,378.63,376.63,20.07 +shl,floor,2000,13,49751,9,402.00,400.54,20.00 +shl,gmp,2000,13,41755,9,1448.19,665.37,43.79 +shl,gmpz,2000,13,43635,9,1804.71,662.27,49.26 +shl,auto,2000,77,65950,9,434.44,303.12,28.68 +shl,inplace,2000,77,43585,9,233.21,222.54,20.26 +shl,kernel,2000,77,37194,9,529.55,524.99,19.70 +shl,kernelip,2000,77,18941,9,522.00,518.73,19.80 +shl,floor,2000,77,36715,9,551.60,543.02,20.55 +shl,gmp,2000,77,68947,9,290.74,287.19,20.18 +shl,gmpz,2000,77,69085,9,293.22,288.85,21.39 +shr,auto,1,13,3087898,9,6.45,6.21,19.93 +shr,inplace,1,13,3218228,9,3.08,3.07,19.90 +shr,kernel,1,13,8922748,9,2.23,2.23,19.94 +shr,floor,1,13,8961181,9,2.49,2.23,22.31 +shr,gmp,1,13,20000001,9,1.03,0.99,20.45 +shr,gmpz,1,13,9897179,9,2.01,2.00,19.93 +shr,auto,4,13,1389902,9,14.15,14.02,19.73 +shr,inplace,4,13,2289870,9,4.73,4.36,21.50 +shr,kernel,4,13,5363815,9,3.73,3.72,20.29 +shr,floor,4,13,1643005,9,12.00,11.90,19.95 +shr,gmp,4,13,11261982,9,1.75,1.74,19.71 +shr,gmpz,4,13,7314175,9,2.74,2.72,20.13 +shr,auto,16,13,1047032,9,17.98,17.88,18.88 +shr,inplace,16,13,1614576,9,6.11,6.10,19.76 +shr,kernel,16,13,4748011,9,4.16,4.16,19.77 +shr,floor,16,13,1519465,9,13.13,12.66,19.71 +shr,gmp,16,13,6184733,9,3.23,3.22,20.18 +shr,gmpz,16,13,4724253,9,4.24,4.22,20.00 +shr,auto,256,13,464450,9,42.52,42.27,19.91 +shr,inplace,256,13,223098,9,44.89,44.56,20.99 +shr,kernel,256,13,300305,9,66.97,66.45,20.13 +shr,floor,256,13,261424,9,75.55,75.32,19.91 +shr,gmp,256,13,545819,9,36.78,36.62,20.09 +shr,gmpz,256,13,517746,9,38.33,38.02,19.86 +shr,auto,2000,13,80958,9,263.03,235.57,21.96 +shr,inplace,2000,13,28832,9,348.19,345.78,20.07 +shr,kernel,2000,13,38611,9,513.04,511.22,19.83 +shr,floor,2000,13,38080,9,526.76,521.91,20.05 +shr,gmp,2000,13,64831,9,294.16,290.49,19.34 +shr,gmpz,2000,13,61697,9,310.93,298.51,19.51 +shr,auto,2000,77,77675,9,293.32,244.78,22.50 +shr,inplace,2000,77,50572,9,195.97,195.68,19.97 +shr,kernel,2000,77,37112,9,525.08,521.50,19.51 +shr,floor,2000,77,37912,9,531.02,524.68,20.18 +shr,gmp,2000,77,68009,9,298.04,290.40,20.41 +shr,gmpz,2000,77,69520,9,287.03,285.40,19.98 +mul,auto,1,1,1361841,9,14.89,13.35,19.96 +mul,gmp,1,1,5345498,9,3.75,3.73,20.08 +mul,gmpz,1,1,7279323,9,2.74,2.73,19.97 +mul,auto,2,2,1103339,9,18.08,17.84,20.05 +mul,kernel,2,2,3166935,9,6.33,6.30,20.03 +mul,floor,2,2,1299143,9,14.65,14.41,19.22 +mul,gmp,2,2,4473252,9,4.48,4.39,20.03 +mul,gmpz,2,2,3065799,9,6.46,6.12,19.60 +mul,auto,3,3,973158,9,20.79,19.57,19.95 +mul,kernel,3,3,2475222,9,8.25,8.21,20.45 +mul,floor,3,3,1154244,9,17.07,16.69,19.84 +mul,gmp,3,3,3152972,9,6.23,6.17,20.11 +mul,gmpz,3,3,2533047,9,10.23,7.84,23.61 +mul,auto,4,4,923448,9,21.66,21.36,20.04 +mul,kernel,4,4,1794492,9,11.11,10.96,20.00 +mul,floor,4,4,1187968,9,16.87,16.35,20.02 +mul,gmp,4,4,2211456,9,8.96,8.93,19.86 +mul,gmpz,4,4,1995571,9,9.77,9.71,20.29 +mul,auto,6,6,717953,9,27.39,27.13,19.70 +mul,kernel,6,6,1042653,9,19.36,19.17,20.32 +mul,floor,6,6,747871,9,26.64,24.55,19.46 +mul,gmp,6,6,1346163,9,14.67,14.50,20.04 +mul,gmpz,6,6,1080490,9,18.57,17.64,19.83 +mul,auto,8,8,570472,9,35.68,34.72,20.35 +mul,kernel,8,8,868778,9,22.98,22.89,19.95 +mul,floor,8,8,639932,9,30.37,30.18,19.48 +mul,gmp,8,8,890344,9,22.62,22.35,20.88 +mul,gmpz,8,8,745347,9,25.43,24.31,19.11 +mul,auto,12,12,367801,9,53.79,53.59,19.81 +mul,kernel,12,12,486537,9,41.47,41.20,20.26 +mul,floor,12,12,403613,9,49.50,49.42,19.99 +mul,gmp,12,12,448244,9,44.10,44.00,19.80 +mul,gmpz,12,12,425790,9,46.73,46.57,19.90 +mul,auto,16,16,237604,9,82.41,82.09,19.62 +mul,kernel,16,16,287598,9,69.39,69.22,19.98 +mul,floor,16,16,254492,9,78.35,77.95,19.99 +mul,gmp,16,16,262022,9,76.30,76.15,20.00 +mul,gmpz,16,16,257040,9,77.93,77.67,20.02 +mul,auto,32,32,71134,9,280.89,279.78,20.01 +mul,kernel,32,32,77372,9,258.29,257.39,19.99 +mul,floor,32,32,71769,9,279.10,278.16,20.05 +mul,gmp,32,32,75199,9,266.38,265.33,20.02 +mul,gmpz,32,32,73870,9,268.71,267.57,19.88 +mul,auto,64,64,19889,9,1005.89,1001.38,20.00 +mul,kernel,64,64,20339,9,982.77,978.81,20.02 +mul,floor,64,64,19797,9,1009.79,1008.48,20.03 +mul,gmp,64,64,25867,9,774.80,772.81,20.07 +mul,gmpz,64,64,25795,9,775.72,774.25,20.04 +mul,auto,128,128,5600,9,3582.57,3564.91,20.09 +mul,kernel,128,128,5573,9,3584.75,3568.84,20.01 +mul,floor,128,128,5550,9,3631.10,3585.10,20.11 +mul,gmp,128,128,7473,9,2632.93,2621.92,19.70 +mul,gmpz,128,128,6668,9,2990.29,2983.92,19.96 +mul,auto,256,256,1697,9,11727.98,11709.49,19.95 +mul,kernel,256,256,1701,9,11776.92,11740.37,20.02 +mul,floor,256,256,1692,9,11795.73,11761.06,19.96 +mul,gmp,256,256,2554,9,7828.98,7810.77,20.08 +mul,gmpz,256,256,2542,9,7860.59,7815.07,19.98 +mul,auto,512,512,538,9,37037.95,36786.01,19.95 +mul,kernel,512,512,533,9,37493.04,37456.69,19.98 +mul,floor,512,512,542,9,36987.08,36893.30,20.06 +mul,gmp,512,512,1034,9,19005.32,18966.23,19.66 +mul,gmpz,512,512,1002,9,19036.34,18956.42,19.07 +mul,auto,1000,1000,188,9,106843.30,106550.76,20.08 +mul,kernel,1000,1000,188,9,106725.84,106431.96,20.08 +mul,floor,1000,1000,187,9,107678.25,106580.66,20.12 +mul,gmp,1000,1000,364,9,55208.79,54969.09,20.11 +mul,gmpz,1000,1000,364,9,55076.12,54948.72,20.05 +mul,auto,2000,2000,67,9,301762.43,300785.45,20.26 +mul,kernel,2000,2000,66,9,304218.42,301702.65,20.09 +mul,floor,2000,2000,67,9,301986.31,300924.13,20.24 +mul,gmp,2000,2000,135,9,148709.88,147429.33,20.07 +mul,gmpz,2000,2000,135,9,148551.54,147982.41,20.06 +mul,auto,2000,100,432,9,46493.73,46233.80,20.12 +mul,kernel,2000,100,430,9,46630.43,46425.87,20.05 +mul,floor,2000,100,427,9,46697.99,46559.52,19.94 +mul,gmp,2000,100,574,9,34967.63,34897.14,20.08 +mul,gmpz,2000,100,575,9,34696.74,34528.70,20.06 +sqr,auto,4,4,938570,9,21.35,21.30,20.15 +sqr,kernel,4,4,1715118,9,11.39,11.22,19.51 +sqr,floor,4,4,1206073,9,16.16,16.12,19.55 +sqr,gmp,4,4,3206490,9,6.94,6.20,20.54 +sqr,gmpz,4,4,2066142,9,9.68,8.92,19.49 +sqr,auto,16,16,262288,9,75.51,74.93,19.80 +sqr,kernel,16,16,323629,9,61.28,61.01,19.86 +sqr,floor,16,16,277160,9,71.79,70.95,19.84 +sqr,gmp,16,16,323623,9,61.38,59.33,19.95 +sqr,gmpz,16,16,302010,9,66.41,65.38,20.04 +sqr,auto,64,64,33356,9,598.71,597.40,19.98 +sqr,kernel,64,64,34422,9,581.19,579.87,20.04 +sqr,floor,64,64,33139,9,597.57,597.11,19.84 +sqr,gmp,64,64,29634,9,668.82,658.02,19.79 +sqr,gmpz,64,64,29219,9,679.84,669.45,19.88 +sqr,auto,512,512,823,9,24299.11,24239.67,20.01 +sqr,kernel,512,512,819,9,24342.08,24237.74,19.95 +sqr,floor,512,512,821,9,24385.61,24345.36,20.03 +sqr,gmp,512,512,1210,9,16393.04,16355.61,19.87 +sqr,gmpz,512,512,931,9,21486.80,21224.31,20.05 +sqr,auto,2000,2000,89,9,223217.22,222904.02,19.90 +sqr,kernel,2000,2000,90,9,223294.90,222745.38,20.16 +sqr,floor,2000,2000,88,9,223930.40,222556.34,19.73 +sqr,gmp,2000,2000,163,9,120733.38,119861.71,19.67 +sqr,gmpz,2000,2000,166,9,121051.46,119476.66,20.10 +divrem,auto,2,1,697313,9,29.71,27.87,19.64 +divrem,kernel,2,1,3566567,9,5.72,5.66,20.39 +divrem,floor,2,1,1455726,9,13.72,13.37,19.93 +divrem,gmp,2,1,3991336,9,5.05,4.99,20.11 +divrem,gmpz,2,1,2283418,9,8.77,8.73,20.40 +divrem,auto,8,4,282351,9,70.85,69.64,20.07 +divrem,kernel,8,4,489116,9,41.04,40.33,20.09 +divrem,floor,8,4,354244,9,56.12,55.83,19.89 +divrem,gmp,8,4,498411,9,39.89,39.61,19.90 +divrem,gmpz,8,4,469373,9,43.11,42.76,20.21 +divrem,auto,32,16,45693,9,437.98,434.30,19.97 +divrem,kernel,32,16,51185,9,394.94,386.24,20.17 +divrem,floor,32,16,48454,9,415.46,398.95,19.99 +divrem,gmp,32,16,95328,9,208.30,206.32,19.87 +divrem,gmpz,32,16,94786,9,211.26,207.73,20.08 +divrem,auto,128,64,5368,9,3710.34,3670.75,19.91 +divrem,kernel,128,64,5525,9,3613.57,3529.42,19.88 +divrem,floor,128,64,5600,9,3658.53,3623.55,20.45 +divrem,gmp,128,64,11251,9,1779.02,1767.91,20.03 +divrem,gmpz,128,64,11255,9,1788.65,1775.56,20.23 +divrem,auto,512,256,674,9,29647.75,29457.90,19.98 +divrem,kernel,512,256,680,9,29444.79,29373.65,20.03 +divrem,floor,512,256,683,9,29497.44,29289.17,20.14 +divrem,gmp,512,256,1223,9,16376.40,16267.85,20.04 +divrem,gmpz,512,256,1225,9,16344.63,16288.20,20.02 +divrem,auto,2000,1000,87,9,232036.39,231081.90,20.19 +divrem,kernel,2000,1000,87,9,231759.09,230436.30,20.15 +divrem,floor,2000,1000,87,9,231857.28,230059.87,20.19 +divrem,gmp,2000,1000,147,9,135465.99,134724.21,19.92 +divrem,gmpz,2000,1000,149,9,134623.88,134050.05,20.06 +divrem,auto,4000,2000,30,9,692958.33,686780.53,20.74 +divrem,kernel,4000,2000,30,9,685716.67,682469.43,20.59 +divrem,floor,4000,2000,30,9,686687.50,684263.87,20.60 +divrem,gmp,4000,2000,59,9,343437.85,341403.25,20.26 +divrem,gmpz,4000,2000,59,9,343791.66,343284.59,20.29 +divrem,auto,2000,100,213,9,94327.07,93640.26,20.15 +divrem,kernel,2000,100,213,9,93868.93,93380.08,20.01 +divrem,floor,2000,100,213,9,93831.57,93558.49,20.00 +divrem,gmp,2000,100,285,9,69391.81,69107.75,19.82 +divrem,gmpz,2000,100,289,9,69534.46,69055.36,20.07 +divrem,auto,65536,1,86,9,230676.35,225431.69,19.82 +divrem,kernel,65536,1,87,9,232210.72,229814.66,20.62 +divrem,floor,65536,1,87,9,230693.00,227479.89,20.10 +divrem,gmp,65536,1,120,9,171502.08,168905.21,20.62 +divrem,gmpz,65536,1,117,9,173424.86,172748.22,20.29 +tochars,auto,1,10,3345479,9,6.01,5.95,20.22 +tochars,kernel,1,10,593750,9,33.94,32.64,20.14 +tochars,gmp,1,10,1156801,9,17.12,16.87,19.71 +tochars,gmpz,1,10,775876,9,25.62,25.46,19.86 +tochars,auto,4,10,260078,9,77.20,76.84,20.12 +tochars,kernel,4,10,196148,9,101.31,99.62,19.86 +tochars,gmp,4,10,278203,9,71.71,71.03,19.98 +tochars,gmpz,4,10,214725,9,93.43,92.51,20.04 +tochars,auto,16,10,23596,9,845.73,835.47,20.03 +tochars,kernel,16,10,26786,9,735.83,727.51,19.71 +tochars,gmp,16,10,39058,9,511.12,496.83,19.87 +tochars,gmpz,16,10,33105,9,601.20,589.23,19.85 +tochars,auto,64,10,4197,9,4714.95,4618.16,19.79 +tochars,kernel,64,10,4366,9,4545.73,4466.83,19.78 +tochars,gmp,64,10,7049,9,2830.26,2768.38,19.88 +tochars,gmpz,64,10,6357,9,3151.34,3062.51,19.99 +tochars,auto,256,10,586,9,33966.23,33614.48,19.87 +tochars,kernel,256,10,631,9,32762.55,32339.08,20.65 +tochars,gmp,256,10,1062,9,18849.03,18766.16,20.01 +tochars,gmpz,256,10,987,9,20300.36,20046.61,19.99 +tochars,auto,2000,10,30,9,676770.83,670436.13,20.30 +tochars,kernel,2000,10,30,9,672373.63,667763.90,20.19 +tochars,gmp,2000,10,50,9,404115.00,401920.82,20.18 +tochars,gmpz,2000,10,48,9,417298.60,415923.60,20.02 +tochars,auto,16,16,241202,9,86.10,82.62,20.59 +tochars,gmp,16,16,252641,9,79.35,78.37,20.06 +tochars,gmpz,16,16,122331,9,158.02,155.72,19.57 +tochars,auto,2000,16,2094,9,9799.81,9428.07,20.43 +tochars,gmp,2000,16,2114,9,8974.30,8841.65,19.23 +tochars,gmpz,2000,16,1210,9,17020.63,16577.00,20.56 +fromchars,auto,4,10,203231,9,91.20,89.67,18.89 +fromchars,kernel,4,10,617953,9,33.91,32.32,20.85 +fromchars,gmp,4,10,641832,9,31.43,30.05,20.19 +fromchars,gmpz,4,10,260246,9,76.98,76.71,20.27 +fromchars,auto,16,10,49163,9,405.67,395.14,20.05 +fromchars,kernel,16,10,107255,9,192.30,187.35,20.59 +fromchars,gmp,16,10,138724,9,142.55,141.19,19.91 +fromchars,gmpz,16,10,62612,9,315.89,313.57,19.81 +fromchars,auto,64,10,9169,9,2182.63,2165.36,20.01 +fromchars,kernel,64,10,10780,9,1855.48,1830.09,19.97 +fromchars,gmp,64,10,21120,9,950.62,944.90,20.09 +fromchars,gmpz,64,10,12343,9,1609.91,1600.06,19.90 +fromchars,auto,256,10,1447,9,13795.30,13707.30,19.95 +fromchars,kernel,256,10,1739,9,11507.52,11480.35,20.03 +fromchars,gmp,256,10,2531,9,7979.82,7905.74,20.16 +fromchars,gmpz,256,10,1895,9,10512.77,10442.19,20.09 +fromchars,auto,2000,10,67,9,300319.64,299183.46,20.11 +fromchars,kernel,2000,10,71,9,282872.65,281453.65,20.08 +fromchars,gmp,2000,10,110,9,183458.34,182513.64,20.16 +fromchars,gmpz,2000,10,99,9,202939.39,202356.90,20.11 diff --git a/tests/beman/big_int/perf/item1/macr3_new64_seed2a.csv b/tests/beman/big_int/perf/item1/macr3_new64_seed2a.csv new file mode 100644 index 00000000..3eaa9478 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_new64_seed2a.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T18:03:21Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,3187961,9,5.98,5.95,19.24 +add,inplace,1,1,5374113,9,1.87,1.86,20.50 +add,kernel,1,1,17307390,9,1.14,1.14,19.77 +add,floor,1,1,2118852,9,10.84,9.44,22.28 +add,gmp,1,1,13449662,9,1.49,1.48,20.00 +add,gmpz,1,1,6734055,9,2.98,2.96,20.06 +add,auto,2,2,1281145,9,15.58,15.37,20.12 +add,inplace,2,2,2513698,9,3.98,3.97,20.21 +add,kernel,2,2,14390826,9,1.39,1.39,20.05 +add,floor,2,2,2024397,9,9.48,9.41,19.23 +add,gmp,2,2,11509214,9,1.74,1.72,19.99 +add,gmpz,2,2,6185644,9,3.26,2.98,21.14 +add,auto,4,4,1387742,9,14.67,14.02,20.27 +add,inplace,4,4,2642526,9,3.77,3.77,20.00 +add,kernel,4,4,10341226,9,1.93,1.92,19.98 +add,floor,4,4,1918593,9,10.20,10.16,19.73 +add,gmp,4,4,11320623,9,1.74,1.73,19.66 +add,gmpz,4,4,5599098,9,4.29,3.98,24.72 +add,auto,8,8,1310284,9,15.19,15.08,20.01 +add,inplace,8,8,2366897,9,4.23,4.22,20.02 +add,kernel,8,8,5701254,9,3.49,3.47,19.89 +add,floor,8,8,1708654,9,11.89,11.68,20.28 +add,gmp,8,8,8963207,9,2.23,2.23,20.02 +add,gmpz,8,8,4379644,9,4.64,4.33,20.42 +add,auto,16,16,1214843,9,17.17,16.30,20.54 +add,inplace,16,16,1750638,9,5.72,5.70,20.06 +add,kernel,16,16,2646890,9,7.53,7.43,19.91 +add,floor,16,16,1419460,9,14.09,13.86,19.92 +add,gmp,16,16,6693258,9,3.14,2.96,20.88 +add,gmpz,16,16,4473515,9,4.47,4.23,19.81 +add,auto,64,64,526127,9,37.81,37.75,19.89 +add,inplace,64,64,503317,9,19.96,19.92,20.19 +add,kernel,64,64,400876,9,48.66,48.08,19.49 +add,floor,64,64,330647,9,60.75,59.81,20.10 +add,gmp,64,64,1771317,9,11.07,11.01,19.68 +add,gmpz,64,64,1502319,9,13.33,13.07,20.03 +add,auto,256,256,187003,9,109.92,107.48,20.52 +add,inplace,256,256,98855,9,101.00,98.57,19.85 +add,kernel,256,256,84872,9,235.99,228.27,19.92 +add,floor,256,256,81347,9,244.67,237.14,19.82 +add,gmp,256,256,351577,9,57.14,56.94,20.10 +add,gmpz,256,256,341833,9,58.44,57.58,19.94 +add,auto,1024,1024,44177,9,446.64,432.39,19.85 +add,inplace,1024,1024,22853,9,435.78,427.08,19.99 +add,kernel,1024,1024,21183,9,973.41,951.24,20.54 +add,floor,1024,1024,20414,9,984.24,943.64,19.95 +add,gmp,1024,1024,78857,9,251.81,246.16,19.82 +add,gmpz,1024,1024,79439,9,252.28,248.52,20.01 +add,auto,2000,2000,23117,9,870.79,867.71,20.28 +add,inplace,2000,2000,11614,9,846.23,824.91,19.54 +add,kernel,2000,2000,10478,9,1912.00,1876.49,20.03 +add,floor,2000,2000,10295,9,1925.25,1865.66,19.76 +add,gmp,2000,2000,40506,9,495.45,490.19,20.11 +add,gmpz,2000,2000,40538,9,502.00,489.25,20.23 +add,auto,1024,1,196851,9,102.81,94.14,20.56 +add,inplace,1024,1,3233099,9,3.11,3.10,20.08 +add,kernel,1024,1,27220,9,733.73,710.04,19.92 +add,floor,1024,1,26291,9,751.73,733.80,19.70 +add,gmp,1024,1,76994,9,260.70,254.82,20.03 +add,gmpz,1024,1,75161,9,265.03,261.69,19.95 +sub,auto,1,1,3496670,9,5.70,5.52,19.88 +sub,inplace,1,1,4892543,9,1.99,1.98,19.48 +sub,kernel,1,1,19088079,9,1.04,1.04,19.95 +sub,floor,1,1,11529227,9,1.74,1.74,20.05 +sub,gmp,1,1,13409641,9,1.49,1.48,19.97 +sub,gmpz,1,1,8076486,9,2.48,2.48,20.04 +sub,auto,2,2,1372657,9,14.52,14.39,19.95 +sub,inplace,2,2,2714062,9,3.83,3.79,20.79 +sub,kernel,2,2,14388278,9,1.41,1.39,20.22 +sub,floor,2,2,2121127,9,9.52,9.43,20.29 +sub,gmp,2,2,10088859,9,1.99,1.97,20.01 +sub,gmpz,2,2,6693992,9,2.99,2.98,20.09 +sub,auto,4,4,1227262,9,15.23,14.80,18.60 +sub,inplace,4,4,2466630,9,4.27,3.97,21.28 +sub,kernel,4,4,10423968,9,1.92,1.92,20.03 +sub,floor,4,4,1952881,9,9.69,9.66,19.08 +sub,gmp,4,4,11385034,9,1.74,1.73,19.80 +sub,gmpz,4,4,7322560,9,2.74,2.73,20.05 +sub,auto,8,8,1255898,9,16.41,15.79,20.51 +sub,inplace,8,8,2240607,9,4.42,4.25,19.64 +sub,kernel,8,8,5768865,9,3.48,3.47,20.10 +sub,floor,8,8,1697770,9,11.69,11.43,19.75 +sub,gmp,8,8,8949669,9,2.24,2.23,20.06 +sub,gmpz,8,8,6122786,9,3.24,3.22,19.87 +sub,auto,16,16,1170151,9,18.00,17.79,21.13 +sub,inplace,16,16,1818392,9,5.35,5.33,19.46 +sub,kernel,16,16,2594133,9,7.70,7.68,19.98 +sub,floor,16,16,1322867,9,15.15,15.12,20.09 +sub,gmp,16,16,6176184,9,3.22,3.06,19.82 +sub,gmpz,16,16,4736012,9,4.22,4.22,20.01 +sub,auto,64,64,554520,9,35.93,35.69,19.89 +sub,inplace,64,64,506489,9,19.81,19.54,20.06 +sub,kernel,64,64,377956,9,53.29,52.49,20.14 +sub,floor,64,64,328159,9,60.98,59.85,20.04 +sub,gmp,64,64,1772054,9,11.09,11.00,19.66 +sub,gmpz,64,64,1477090,9,13.47,13.34,19.87 +sub,auto,256,256,181297,9,110.50,108.37,20.00 +sub,inplace,256,256,98634,9,101.05,98.18,19.85 +sub,kernel,256,256,84288,9,237.19,231.49,19.96 +sub,floor,256,256,83166,9,247.25,243.58,20.58 +sub,gmp,256,256,350157,9,57.27,56.81,20.05 +sub,gmpz,256,256,343493,9,57.78,56.67,19.82 +sub,auto,1024,1024,44053,9,454.00,452.85,20.02 +sub,inplace,1024,1024,23107,9,433.06,432.73,20.02 +sub,kernel,1024,1024,20588,9,973.85,969.00,20.03 +sub,floor,1024,1024,20234,9,985.94,984.87,19.96 +sub,gmp,1024,1024,79464,9,251.61,247.41,19.98 +sub,gmpz,1024,1024,81392,9,251.63,247.36,20.45 +sub,auto,2000,2000,22581,9,874.36,847.14,19.73 +sub,inplace,2000,2000,11669,9,850.39,834.77,19.77 +sub,kernel,2000,2000,10406,9,1897.43,1853.58,19.73 +sub,floor,2000,2000,10309,9,1938.02,1888.63,19.93 +sub,gmp,2000,2000,40924,9,495.28,482.92,20.23 +sub,gmpz,2000,2000,40667,9,496.43,486.58,20.15 +sub,auto,1024,1,178117,9,120.62,103.36,21.31 +sub,inplace,1024,1,3090528,9,3.23,3.10,19.73 +sub,kernel,1024,1,27222,9,730.89,707.77,19.76 +sub,floor,1024,1,27477,9,756.99,753.53,20.97 +sub,gmp,1024,1,75739,9,262.07,258.94,19.78 +sub,gmpz,1024,1,75680,9,267.12,258.97,20.14 +shl,auto,1,13,1584462,9,12.32,12.29,19.89 +shl,inplace,1,13,3009395,9,3.37,3.34,20.32 +shl,kernel,1,13,8055683,9,2.48,2.45,19.92 +shl,kernelip,1,13,8932615,9,1.74,1.66,31.03 +shl,floor,1,13,1878466,9,10.69,10.40,19.98 +shl,gmp,1,13,16121314,9,1.24,1.24,20.00 +shl,gmpz,1,13,10075787,9,1.99,1.98,20.21 +shl,auto,4,13,1553593,9,13.02,12.79,19.95 +shl,inplace,4,13,1902830,9,5.46,5.13,20.70 +shl,kernel,4,13,5373345,9,3.72,3.72,20.01 +shl,kernelip,4,13,2982082,9,3.37,3.33,20.07 +shl,floor,4,13,1581492,9,13.15,12.69,20.77 +shl,gmp,4,13,10079587,9,1.99,1.97,20.10 +shl,gmpz,4,13,7306871,9,2.73,2.72,19.95 +shl,auto,16,13,1240599,9,15.05,14.93,19.04 +shl,inplace,16,13,1456836,9,6.89,6.84,20.27 +shl,kernel,16,13,4884518,9,4.09,4.08,20.04 +shl,kernelip,16,13,1448841,9,6.81,6.78,19.87 +shl,floor,16,13,1687943,9,11.97,11.84,20.17 +shl,gmp,16,13,5724583,9,3.48,3.47,19.94 +shl,gmpz,16,13,3893134,9,5.18,5.16,20.31 +shl,auto,256,13,486007,9,41.08,40.90,20.00 +shl,inplace,256,13,222737,9,45.00,44.76,20.04 +shl,kernel,256,13,407517,9,49.13,48.90,20.06 +shl,kernelip,256,13,206017,9,48.68,48.56,20.06 +shl,floor,256,13,348131,9,57.14,56.63,19.87 +shl,gmp,256,13,543826,9,36.94,36.88,20.11 +shl,gmpz,256,13,528128,9,37.89,37.77,20.03 +shl,auto,2000,13,75179,9,257.73,242.07,19.71 +shl,inplace,2000,13,28901,9,346.46,344.20,20.03 +shl,kernel,2000,13,51717,9,386.83,384.05,19.98 +shl,kernelip,2000,13,26578,9,376.57,375.62,20.05 +shl,floor,2000,13,49422,9,403.66,401.07,19.97 +shl,gmp,2000,13,21064,9,1604.78,1276.23,25.50 +shl,gmpz,2000,13,21854,9,2069.55,1060.56,24.95 +shl,auto,2000,77,68468,9,492.83,288.89,35.38 +shl,inplace,2000,77,41620,9,233.60,222.03,19.30 +shl,kernel,2000,77,37837,9,534.40,527.68,20.24 +shl,kernelip,2000,77,19248,9,520.48,514.89,20.04 +shl,floor,2000,77,36583,9,545.49,543.96,19.99 +shl,gmp,2000,77,68975,9,293.40,288.12,20.73 +shl,gmpz,2000,77,68932,9,288.95,286.97,19.92 +shr,auto,1,13,2980880,9,6.70,6.68,20.03 +shr,inplace,1,13,3250432,9,3.08,3.05,19.97 +shr,kernel,1,13,8969732,9,2.25,2.22,20.15 +shr,floor,1,13,8037644,9,2.48,2.47,20.19 +shr,gmp,1,13,20000001,9,1.00,0.99,20.11 +shr,gmpz,1,13,10052442,9,1.98,1.98,19.97 +shr,auto,4,13,1426968,9,13.57,13.49,19.68 +shr,inplace,4,13,2038606,9,5.02,4.44,19.98 +shr,kernel,4,13,5350273,9,3.73,3.72,20.00 +shr,floor,4,13,1615782,9,12.40,12.19,20.12 +shr,gmp,4,13,11503567,9,1.74,1.73,20.00 +shr,gmpz,4,13,7314166,9,2.73,2.72,19.97 +shr,auto,16,13,1133428,9,17.79,17.65,20.33 +shr,inplace,16,13,1629216,9,6.11,6.10,19.95 +shr,kernel,16,13,4779799,9,4.17,4.16,19.96 +shr,floor,16,13,1531219,9,13.17,12.69,20.03 +shr,gmp,16,13,6186604,9,3.23,3.22,19.97 +shr,gmpz,16,13,4719718,9,4.24,4.23,20.01 +shr,auto,256,13,476771,9,42.56,42.01,20.59 +shr,inplace,256,13,223337,9,44.67,44.35,19.95 +shr,kernel,256,13,298934,9,66.70,66.30,19.92 +shr,floor,256,13,265252,9,75.33,74.71,19.98 +shr,gmp,256,13,545023,9,36.66,36.55,19.99 +shr,gmpz,256,13,524854,9,38.04,38.00,19.97 +shr,auto,2000,13,84772,9,287.90,229.28,21.88 +shr,inplace,2000,13,28954,9,345.22,344.21,20.00 +shr,kernel,2000,13,39111,9,511.43,506.99,20.01 +shr,floor,2000,13,38122,9,523.34,518.90,19.96 +shr,gmp,2000,13,68170,9,295.55,290.31,20.13 +shr,gmpz,2000,13,69072,9,298.19,287.32,20.85 +shr,auto,2000,77,84982,9,286.55,246.13,21.22 +shr,inplace,2000,77,50912,9,195.50,194.99,19.90 +shr,kernel,2000,77,38836,9,517.07,514.85,20.12 +shr,floor,2000,77,36513,9,525.89,522.16,19.23 +shr,gmp,2000,77,69111,9,290.17,288.93,20.08 +shr,gmpz,2000,77,68471,9,286.34,285.27,19.61 +mul,auto,1,1,1454518,9,14.04,13.71,20.40 +mul,gmp,1,1,5290593,9,3.74,3.72,19.80 +mul,gmpz,1,1,7301097,9,2.74,2.73,20.01 +mul,auto,2,2,1083924,9,18.40,18.24,19.91 +mul,kernel,2,2,3238532,9,6.32,6.10,20.28 +mul,floor,2,2,1439126,9,14.66,13.95,21.01 +mul,gmp,2,2,4479366,9,4.72,4.52,21.05 +mul,gmpz,2,2,3211773,9,6.23,6.21,20.04 +mul,auto,3,3,1015292,9,19.56,19.22,20.00 +mul,kernel,3,3,2442276,9,8.08,7.92,19.69 +mul,floor,3,3,1186792,9,16.70,16.40,19.80 +mul,gmp,3,3,3219645,9,6.07,6.04,19.59 +mul,gmpz,3,3,2367072,9,8.04,7.86,19.48 +mul,auto,4,4,925302,9,21.59,21.34,20.01 +mul,kernel,4,4,1805768,9,11.06,11.00,20.01 +mul,floor,4,4,1181599,9,16.91,16.87,20.05 +mul,gmp,4,4,2232459,9,8.96,8.95,20.15 +mul,gmpz,4,4,1827527,9,10.95,10.88,20.03 +mul,auto,6,6,737042,9,27.18,27.08,20.06 +mul,kernel,6,6,1021143,9,19.25,19.16,19.72 +mul,floor,6,6,794830,9,23.98,23.86,19.42 +mul,gmp,6,6,1391454,9,14.43,14.36,20.10 +mul,gmpz,6,6,1039976,9,18.78,18.54,19.68 +mul,auto,8,8,574094,9,35.18,34.67,20.24 +mul,kernel,8,8,872469,9,23.04,22.93,20.12 +mul,floor,8,8,659995,9,30.40,30.26,20.07 +mul,gmp,8,8,878449,9,22.67,22.42,20.32 +mul,gmpz,8,8,764575,9,26.90,24.25,20.23 +mul,auto,12,12,373373,9,53.82,53.50,20.08 +mul,kernel,12,12,484902,9,41.35,41.26,20.08 +mul,floor,12,12,402965,9,49.36,49.06,19.87 +mul,gmp,12,12,452187,9,44.22,44.12,19.99 +mul,gmpz,12,12,429230,9,46.66,46.57,20.03 +mul,auto,16,16,242078,9,82.28,82.16,19.93 +mul,kernel,16,16,287565,9,69.77,69.38,20.05 +mul,floor,16,16,254564,9,78.47,77.96,19.97 +mul,gmp,16,16,262351,9,76.21,75.93,20.01 +mul,gmpz,16,16,255305,9,77.92,77.62,19.99 +mul,auto,32,32,71003,9,281.92,280.17,20.03 +mul,kernel,32,32,77418,9,258.22,257.31,19.98 +mul,floor,32,32,71911,9,279.14,276.51,20.05 +mul,gmp,32,32,77685,9,259.31,255.86,20.15 +mul,gmpz,32,32,77921,9,256.45,255.60,20.20 +mul,auto,64,64,19525,9,1008.68,1004.75,19.69 +mul,kernel,64,64,20301,9,982.72,980.11,19.97 +mul,floor,64,64,19818,9,1010.92,1006.36,20.05 +mul,gmp,64,64,26015,9,772.56,770.64,20.11 +mul,gmpz,64,64,25883,9,775.01,772.75,20.07 +mul,auto,128,128,5613,9,3582.29,3559.42,20.16 +mul,kernel,128,128,5574,9,3589.52,3579.66,20.05 +mul,floor,128,128,5573,9,3594.34,3588.34,20.25 +mul,gmp,128,128,7506,9,2655.80,2642.92,19.95 +mul,gmpz,128,128,6619,9,3009.43,2999.09,19.96 +mul,auto,256,256,1661,9,12035.97,12015.98,20.01 +mul,kernel,256,256,1687,9,11857.91,11846.72,20.01 +mul,floor,256,256,1695,9,11776.62,11730.58,19.98 +mul,gmp,256,256,2549,9,7830.15,7814.29,19.97 +mul,gmpz,256,256,2557,9,7851.26,7831.31,20.08 +mul,auto,512,512,544,9,36915.36,36815.56,20.17 +mul,kernel,512,512,545,9,36939.83,36786.93,20.14 +mul,floor,512,512,542,9,36982.86,36796.28,20.04 +mul,gmp,512,512,1049,9,19198.16,19000.91,20.09 +mul,gmpz,512,512,1051,9,19011.66,18970.50,20.00 +mul,auto,1000,1000,189,9,106932.32,106513.23,20.20 +mul,kernel,1000,1000,188,9,106815.82,106245.13,20.06 +mul,floor,1000,1000,187,9,106664.66,106211.45,19.95 +mul,gmp,1000,1000,364,9,55488.78,54887.48,20.17 +mul,gmpz,1000,1000,363,9,55124.77,54639.46,20.02 +mul,auto,2000,2000,67,9,301390.54,300758.09,20.20 +mul,kernel,2000,2000,67,9,301696.51,298480.73,20.19 +mul,floor,2000,2000,67,9,302231.34,299708.33,20.24 +mul,gmp,2000,2000,135,9,148240.13,147779.32,20.01 +mul,gmpz,2000,2000,135,9,148754.93,148078.40,20.08 +mul,auto,2000,100,430,9,46293.02,46189.53,19.91 +mul,kernel,2000,100,429,9,46706.20,46465.42,20.06 +mul,floor,2000,100,429,9,46697.94,46495.05,20.05 +mul,gmp,2000,100,568,9,35218.75,35090.15,20.02 +mul,gmpz,2000,100,576,9,34675.71,34612.41,19.99 +sqr,auto,4,4,936849,9,21.42,21.33,20.09 +sqr,kernel,4,4,1766588,9,11.27,11.09,19.85 +sqr,floor,4,4,1227304,9,16.20,16.14,20.08 +sqr,gmp,4,4,2871787,9,6.96,6.94,20.43 +sqr,gmpz,4,4,2003715,9,9.80,9.69,19.74 +sqr,auto,16,16,261379,9,75.79,75.61,19.83 +sqr,kernel,16,16,327529,9,60.99,60.62,19.97 +sqr,floor,16,16,289535,9,71.84,69.18,20.68 +sqr,gmp,16,16,321509,9,62.01,60.96,19.91 +sqr,gmpz,16,16,303474,9,65.93,65.19,19.96 +sqr,auto,64,64,33285,9,601.29,599.16,20.05 +sqr,kernel,64,64,34385,9,585.70,579.67,20.07 +sqr,floor,64,64,33124,9,600.10,597.49,19.91 +sqr,gmp,64,64,29163,9,674.91,667.76,19.83 +sqr,gmpz,64,64,29902,9,674.11,672.89,20.16 +sqr,auto,512,512,825,9,24334.95,24179.80,20.06 +sqr,kernel,512,512,821,9,24347.19,24235.74,20.01 +sqr,floor,512,512,815,9,24392.38,24242.89,19.90 +sqr,gmp,512,512,1215,9,16472.33,16318.83,19.99 +sqr,gmpz,512,512,1018,9,19663.02,19420.39,20.02 +sqr,auto,2000,2000,90,9,223293.98,222722.22,20.12 +sqr,kernel,2000,2000,90,9,223048.14,222559.72,20.08 +sqr,floor,2000,2000,90,9,223307.41,222121.76,20.11 +sqr,gmp,2000,2000,167,9,120435.88,119396.71,20.12 +sqr,gmpz,2000,2000,166,9,122026.86,120425.45,20.22 +divrem,auto,2,1,933122,9,21.42,21.34,20.00 +divrem,kernel,2,1,3183601,9,6.38,6.27,20.33 +divrem,floor,2,1,1423233,9,13.91,13.70,19.84 +divrem,gmp,2,1,3962932,9,5.06,5.00,20.02 +divrem,gmpz,2,1,2292656,9,8.81,8.76,20.29 +divrem,auto,8,4,250298,9,79.72,79.01,19.93 +divrem,kernel,8,4,378751,9,52.87,52.01,20.05 +divrem,floor,8,4,304915,9,65.37,64.50,19.92 +divrem,gmp,8,4,481696,9,41.73,41.26,20.08 +divrem,gmpz,8,4,450680,9,44.45,44.11,20.00 +divrem,auto,32,16,46226,9,426.06,418.56,19.69 +divrem,kernel,32,16,50766,9,390.43,383.86,19.85 +divrem,floor,32,16,49135,9,410.21,397.67,20.07 +divrem,gmp,32,16,95042,9,210.22,207.02,20.07 +divrem,gmpz,32,16,93585,9,215.26,203.99,20.01 +divrem,auto,128,64,5352,9,3767.18,3656.21,20.14 +divrem,kernel,128,64,5469,9,3565.38,3519.48,19.58 +divrem,floor,128,64,5468,9,3657.01,3532.09,19.90 +divrem,gmp,128,64,11331,9,1769.72,1764.07,20.07 +divrem,gmpz,128,64,11305,9,1769.33,1759.73,20.04 +divrem,auto,512,256,725,9,27725.69,27510.29,20.11 +divrem,kernel,512,256,738,9,27331.13,27140.81,20.20 +divrem,floor,512,256,732,9,27286.83,27112.31,19.96 +divrem,gmp,512,256,1206,9,16642.00,16554.80,20.14 +divrem,gmpz,512,256,1194,9,16684.01,16433.87,19.84 +divrem,auto,2000,1000,87,9,232656.13,231856.32,20.25 +divrem,kernel,2000,1000,87,9,232449.23,231496.64,20.22 +divrem,floor,2000,1000,87,9,232791.18,231706.43,20.31 +divrem,gmp,2000,1000,147,9,136822.56,135251.70,20.08 +divrem,gmpz,2000,1000,147,9,134691.33,133630.95,19.99 +divrem,auto,4000,2000,29,9,690008.62,688683.90,20.02 +divrem,kernel,4000,2000,29,9,688333.31,683339.10,19.97 +divrem,floor,4000,2000,30,9,688027.80,685293.03,20.65 +divrem,gmp,4000,2000,59,9,341074.15,339056.51,20.13 +divrem,gmpz,4000,2000,58,9,343826.88,342929.60,19.96 +divrem,auto,2000,100,211,9,94767.57,94604.27,20.00 +divrem,kernel,2000,100,211,9,95284.17,94145.54,20.10 +divrem,floor,2000,100,211,9,94707.55,94243.29,19.97 +divrem,gmp,2000,100,291,9,68793.96,68254.44,20.01 +divrem,gmpz,2000,100,292,9,69060.36,68527.40,20.24 +divrem,auto,65536,1,88,9,246067.24,225897.26,21.11 +divrem,kernel,65536,1,88,9,228148.20,224778.41,20.04 +divrem,floor,65536,1,85,9,231956.38,227919.12,19.84 +divrem,gmp,65536,1,118,9,170466.10,166066.74,20.14 +divrem,gmpz,65536,1,118,9,170632.42,165449.15,20.05 +tochars,auto,1,10,3325424,9,5.99,5.98,19.93 +tochars,kernel,1,10,575788,9,34.84,34.11,19.98 +tochars,gmp,1,10,1203407,9,16.06,15.76,19.33 +tochars,gmpz,1,10,824500,9,24.30,24.23,20.07 +tochars,auto,4,10,219675,9,91.28,91.00,20.08 +tochars,kernel,4,10,194035,9,103.00,102.19,20.03 +tochars,gmp,4,10,258841,9,77.17,76.21,20.00 +tochars,gmpz,4,10,203052,9,97.39,96.71,19.80 +tochars,auto,16,10,23448,9,836.36,816.29,19.56 +tochars,kernel,16,10,27555,9,741.38,727.15,20.57 +tochars,gmp,16,10,39062,9,510.47,497.13,19.84 +tochars,gmpz,16,10,33045,9,602.56,591.62,19.90 +tochars,auto,64,10,4175,9,4774.08,4634.55,19.90 +tochars,kernel,64,10,4381,9,4502.63,4430.71,19.72 +tochars,gmp,64,10,7056,9,2834.24,2793.20,19.97 +tochars,gmpz,64,10,6347,9,3159.29,3102.04,20.05 +tochars,auto,256,10,605,9,33745.11,33523.21,20.46 +tochars,kernel,256,10,616,9,32888.12,32140.29,22.02 +tochars,gmp,256,10,1024,9,19217.98,18814.09,19.71 +tochars,gmpz,256,10,977,9,20440.38,20225.82,19.94 +tochars,auto,2000,10,30,9,680558.33,673829.17,20.43 +tochars,kernel,2000,10,30,9,669844.47,660640.27,20.08 +tochars,gmp,2000,10,50,9,404277.50,402646.68,20.23 +tochars,gmpz,2000,10,49,9,415803.57,414097.80,20.38 +tochars,auto,16,16,241755,9,86.74,83.21,20.81 +tochars,gmp,16,16,251562,9,79.34,78.61,20.02 +tochars,gmpz,16,16,119057,9,160.77,156.34,19.06 +tochars,auto,2000,16,2035,9,9920.07,9693.20,20.30 +tochars,gmp,2000,16,2176,9,9434.76,9122.59,20.52 +tochars,gmpz,2000,16,1146,9,17070.61,16857.73,19.67 +fromchars,auto,4,10,213813,9,93.91,93.05,20.14 +fromchars,kernel,4,10,615079,9,32.61,32.16,20.03 +fromchars,gmp,4,10,642525,9,31.15,30.76,20.04 +fromchars,gmpz,4,10,261518,9,75.66,74.59,19.93 +fromchars,auto,16,10,51925,9,386.92,379.96,20.03 +fromchars,kernel,16,10,103008,9,192.78,186.03,19.80 +fromchars,gmp,16,10,140157,9,144.35,139.88,20.09 +fromchars,gmpz,16,10,62797,9,328.62,319.23,20.48 +fromchars,auto,64,10,9121,9,2191.79,2183.70,20.00 +fromchars,kernel,64,10,10698,9,1852.83,1824.02,19.83 +fromchars,gmp,64,10,20829,9,954.83,943.38,19.88 +fromchars,gmpz,64,10,12379,9,1601.02,1585.21,19.81 +fromchars,auto,256,10,1448,9,13796.16,13777.19,20.03 +fromchars,kernel,256,10,1696,9,11653.23,11553.78,19.75 +fromchars,gmp,256,10,2514,9,7954.07,7921.52,20.00 +fromchars,gmpz,256,10,1830,9,10758.47,10594.56,19.75 +fromchars,auto,2000,10,67,9,302790.42,301310.31,20.29 +fromchars,kernel,2000,10,71,9,289223.00,285057.51,20.80 +fromchars,gmp,2000,10,109,9,187415.91,186014.15,20.48 +fromchars,gmpz,2000,10,96,9,208323.35,204031.69,20.14 diff --git a/tests/beman/big_int/perf/item1/macr3_new64_seed2b.csv b/tests/beman/big_int/perf/item1/macr3_new64_seed2b.csv new file mode 100644 index 00000000..cafb0dde --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_new64_seed2b.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T18:08:14Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,3220040,9,6.25,5.82,20.12 +add,inplace,1,1,5294307,9,1.87,1.86,19.82 +add,kernel,1,1,17483228,9,1.15,1.14,20.14 +add,floor,1,1,2174271,9,9.44,9.06,20.48 +add,gmp,1,1,13398081,9,1.50,1.49,20.04 +add,gmpz,1,1,6695621,9,2.99,2.98,21.39 +add,auto,2,2,1290652,9,15.99,15.54,20.64 +add,inplace,2,2,2427279,9,4.11,4.02,19.94 +add,kernel,2,2,14392615,9,1.39,1.39,20.10 +add,floor,2,2,2003606,9,9.78,9.73,19.69 +add,gmp,2,2,10125181,9,2.00,1.99,20.24 +add,gmpz,2,2,6179758,9,3.01,2.99,23.25 +add,auto,4,4,1386617,9,14.28,14.18,19.93 +add,inplace,4,4,2663512,9,3.75,3.73,20.28 +add,kernel,4,4,10202851,9,1.95,1.93,19.89 +add,floor,4,4,1913887,9,10.25,10.22,20.00 +add,gmp,4,4,11473870,9,1.75,1.74,20.09 +add,gmpz,4,4,6157691,9,3.84,3.25,23.60 +add,auto,8,8,1313796,9,15.56,15.15,20.44 +add,inplace,8,8,2419620,9,4.24,4.12,20.42 +add,kernel,8,8,5720421,9,3.49,3.45,19.93 +add,floor,8,8,1623065,9,12.00,11.95,19.82 +add,gmp,8,8,8918249,9,2.25,2.24,20.05 +add,gmpz,8,8,4886404,9,4.32,4.20,21.09 +add,auto,16,16,1149038,9,17.52,17.39,20.19 +add,inplace,16,16,1747383,9,5.73,5.72,20.05 +add,kernel,16,16,2638106,9,7.59,7.48,20.00 +add,floor,16,16,1432275,9,13.97,13.93,20.19 +add,gmp,16,16,6167982,9,3.25,3.24,20.03 +add,gmpz,16,16,4510045,9,4.52,4.03,19.87 +add,auto,64,64,531053,9,37.87,37.59,20.11 +add,inplace,64,64,498194,9,20.02,19.92,19.93 +add,kernel,64,64,401457,9,49.50,48.29,19.77 +add,floor,64,64,328508,9,60.79,60.24,19.97 +add,gmp,64,64,1791136,9,11.11,10.97,19.91 +add,gmpz,64,64,1501957,9,13.41,13.15,20.10 +add,auto,256,256,182556,9,109.55,107.59,19.99 +add,inplace,256,256,98440,9,101.42,95.85,19.81 +add,kernel,256,256,84005,9,237.03,230.53,19.82 +add,floor,256,256,80179,9,248.58,245.09,19.97 +add,gmp,256,256,349406,9,57.69,57.14,20.13 +add,gmpz,256,256,344059,9,58.24,57.44,20.10 +add,auto,1024,1024,44109,9,451.20,436.64,19.83 +add,inplace,1024,1024,22877,9,438.49,427.95,19.97 +add,kernel,1024,1024,20627,9,982.11,943.34,20.15 +add,floor,1024,1024,19957,9,991.86,950.18,19.66 +add,gmp,1024,1024,78996,9,252.58,249.30,19.92 +add,gmpz,1024,1024,78882,9,252.71,250.17,19.92 +add,auto,2000,2000,22689,9,875.99,855.73,19.83 +add,inplace,2000,2000,11647,9,861.68,848.53,20.03 +add,kernel,2000,2000,10330,9,1942.30,1914.85,20.05 +add,floor,2000,2000,10354,9,1937.46,1904.35,20.00 +add,gmp,2000,2000,40328,9,496.85,491.46,20.01 +add,gmpz,2000,2000,40157,9,497.27,490.36,19.99 +add,auto,1024,1,217006,9,113.53,106.10,24.33 +add,inplace,1024,1,3214706,9,3.11,3.08,20.00 +add,kernel,1024,1,27225,9,745.53,731.97,20.24 +add,floor,1024,1,25984,9,760.08,735.78,19.67 +add,gmp,1024,1,75940,9,263.61,260.29,19.98 +add,gmpz,1024,1,74653,9,267.74,263.10,19.95 +sub,auto,1,1,3816071,9,5.71,5.24,21.20 +sub,inplace,1,1,5010591,9,1.99,1.99,20.03 +sub,kernel,1,1,18808585,9,1.05,1.04,19.82 +sub,floor,1,1,11510336,9,1.76,1.74,20.38 +sub,gmp,1,1,12898990,9,1.50,1.49,19.33 +sub,gmpz,1,1,8050843,9,2.49,2.48,20.07 +sub,auto,2,2,1341790,9,14.94,14.33,19.98 +sub,inplace,2,2,2635232,9,3.86,3.66,20.27 +sub,kernel,2,2,14282101,9,1.40,1.39,19.94 +sub,floor,2,2,2114725,9,9.26,9.22,19.77 +sub,gmp,2,2,9971294,9,1.99,1.97,19.88 +sub,gmpz,2,2,7274971,9,2.99,2.74,21.46 +sub,auto,4,4,1330082,9,14.30,14.26,19.06 +sub,inplace,4,4,2693496,9,3.86,3.62,20.65 +sub,kernel,4,4,10115062,9,2.00,1.97,20.73 +sub,floor,4,4,1954929,9,9.99,9.82,19.60 +sub,gmp,4,4,11463256,9,1.75,1.74,20.03 +sub,gmpz,4,4,7294207,9,2.74,2.73,20.01 +sub,auto,8,8,1231724,9,16.21,16.10,20.01 +sub,inplace,8,8,2360258,9,4.36,4.24,20.79 +sub,kernel,8,8,5705316,9,3.51,3.49,20.02 +sub,floor,8,8,1721754,9,11.49,11.22,20.09 +sub,gmp,8,8,8933181,9,2.24,2.23,19.99 +sub,gmpz,8,8,6189153,9,3.25,3.23,20.10 +sub,auto,16,16,1096008,9,18.08,17.68,19.71 +sub,inplace,16,16,1830305,9,5.42,5.35,19.85 +sub,kernel,16,16,2600777,9,7.71,7.69,20.04 +sub,floor,16,16,1342241,9,14.97,14.90,20.18 +sub,gmp,16,16,6594182,9,3.23,2.93,20.90 +sub,gmpz,16,16,4545167,9,4.41,4.38,20.05 +sub,auto,64,64,527911,9,36.06,36.00,19.11 +sub,inplace,64,64,502058,9,19.92,19.67,19.99 +sub,kernel,64,64,371196,9,53.62,52.43,19.86 +sub,floor,64,64,328858,9,61.09,60.45,20.11 +sub,gmp,64,64,1756443,9,11.08,11.03,19.51 +sub,gmpz,64,64,1481620,9,13.44,13.36,20.00 +sub,auto,256,256,175035,9,111.74,110.45,19.69 +sub,inplace,256,256,97686,9,101.60,100.88,19.84 +sub,kernel,256,256,83356,9,238.36,233.72,19.80 +sub,floor,256,256,80862,9,245.98,238.93,19.77 +sub,gmp,256,256,351837,9,57.42,57.36,20.25 +sub,gmpz,256,256,344452,9,58.03,57.41,20.00 +sub,auto,1024,1024,44181,9,455.25,441.01,20.09 +sub,inplace,1024,1024,22843,9,436.93,427.59,19.90 +sub,kernel,1024,1024,19820,9,984.96,974.65,19.56 +sub,floor,1024,1024,20450,9,987.38,963.34,20.07 +sub,gmp,1024,1024,78432,9,252.64,251.04,19.82 +sub,gmpz,1024,1024,78844,9,252.10,249.89,19.87 +sub,auto,2000,2000,22929,9,890.60,875.86,20.47 +sub,inplace,2000,2000,11579,9,855.58,826.87,19.75 +sub,kernel,2000,2000,10249,9,1934.60,1864.35,19.68 +sub,floor,2000,2000,10399,9,1954.75,1910.96,20.28 +sub,gmp,2000,2000,40271,9,495.87,487.83,19.92 +sub,gmpz,2000,2000,40126,9,498.84,493.11,20.00 +sub,auto,1024,1,216491,9,106.03,95.81,22.74 +sub,inplace,1024,1,3053127,9,3.30,3.25,20.12 +sub,kernel,1024,1,27044,9,748.48,711.10,20.30 +sub,floor,1024,1,26029,9,765.60,734.73,19.83 +sub,gmp,1024,1,76856,9,266.71,258.35,20.43 +sub,gmpz,1024,1,74725,9,267.59,260.28,19.89 +shl,auto,1,13,1577800,9,12.18,11.97,19.24 +shl,inplace,1,13,2910249,9,3.46,3.38,20.15 +shl,kernel,1,13,7918002,9,2.52,2.49,19.87 +shl,kernelip,1,13,8936705,9,1.45,1.13,26.31 +shl,floor,1,13,1787891,9,11.19,10.48,19.90 +shl,gmp,1,13,15939357,9,1.24,1.24,19.81 +shl,gmpz,1,13,9975388,9,2.00,1.99,19.91 +shl,auto,4,13,1541212,9,12.94,12.86,19.68 +shl,inplace,4,13,1955920,9,5.52,5.21,21.35 +shl,kernel,4,13,5303893,9,3.73,3.72,19.79 +shl,kernelip,4,13,3040496,9,3.37,3.32,20.49 +shl,floor,4,13,1484476,9,12.95,12.76,19.29 +shl,gmp,4,13,10004146,9,1.99,1.99,20.05 +shl,gmpz,4,13,7292406,9,2.75,2.74,20.22 +shl,auto,16,13,1282635,9,15.62,15.22,20.03 +shl,inplace,16,13,1457183,9,6.91,6.85,20.33 +shl,kernel,16,13,4877088,9,4.11,4.08,20.05 +shl,kernelip,16,13,1444732,9,6.83,6.74,20.01 +shl,floor,16,13,1636814,9,12.29,12.25,20.21 +shl,gmp,16,13,5720289,9,3.49,3.48,19.93 +shl,gmpz,16,13,3871474,9,5.14,5.03,19.86 +shl,auto,256,13,489098,9,41.36,40.94,20.20 +shl,inplace,256,13,220919,9,45.14,45.07,20.08 +shl,kernel,256,13,405714,9,49.74,49.54,20.23 +shl,kernelip,256,13,205796,9,48.91,48.76,20.15 +shl,floor,256,13,349725,9,57.10,56.48,19.96 +shl,gmp,256,13,541507,9,37.10,36.92,20.08 +shl,gmpz,256,13,525902,9,37.94,37.87,19.96 +shl,auto,2000,13,73735,9,264.19,249.00,20.16 +shl,inplace,2000,13,28840,9,349.20,346.73,20.26 +shl,kernel,2000,13,52029,9,385.65,384.96,20.13 +shl,kernelip,2000,13,26465,9,377.50,375.70,19.98 +shl,floor,2000,13,49597,9,402.29,400.18,19.98 +shl,gmp,2000,13,55988,9,1598.85,706.79,88.58 +shl,gmpz,2000,13,22053,9,2454.36,1312.50,27.32 +shl,auto,2000,77,67782,9,466.17,343.00,29.32 +shl,inplace,2000,77,45230,9,234.91,226.28,21.12 +shl,kernel,2000,77,37519,9,530.62,527.40,19.91 +shl,kernelip,2000,77,19248,9,522.17,511.29,20.06 +shl,floor,2000,77,36808,9,548.35,543.17,20.17 +shl,gmp,2000,77,67531,9,289.30,287.64,19.62 +shl,gmpz,2000,77,69453,9,290.21,288.12,20.22 +shr,auto,1,13,2862782,9,6.52,6.46,18.99 +shr,inplace,1,13,3212507,9,3.09,3.07,19.87 +shr,kernel,1,13,8881055,9,2.24,2.23,19.89 +shr,floor,1,13,8027334,9,2.49,2.44,20.06 +shr,gmp,1,13,20000001,9,0.99,0.99,19.91 +shr,gmpz,1,13,9977243,9,1.99,1.99,19.89 +shr,auto,4,13,1417049,9,14.02,13.85,19.96 +shr,inplace,4,13,2277643,9,4.74,4.55,20.94 +shr,kernel,4,13,5352521,9,3.74,3.73,20.02 +shr,floor,4,13,1595526,9,12.20,11.89,19.43 +shr,gmp,4,13,11461193,9,1.76,1.74,20.06 +shr,gmpz,4,13,7280858,9,2.75,2.74,20.00 +shr,auto,16,13,1102117,9,18.13,17.90,19.94 +shr,inplace,16,13,1636028,9,6.14,6.12,20.10 +shr,kernel,16,13,4888543,9,4.09,4.08,20.02 +shr,floor,16,13,1546943,9,13.31,12.91,20.52 +shr,gmp,16,13,6175270,9,3.23,3.23,19.98 +shr,gmpz,16,13,4713377,9,4.26,4.24,20.64 +shr,auto,256,13,472117,9,42.55,42.28,20.22 +shr,inplace,256,13,222430,9,44.84,44.71,19.97 +shr,kernel,256,13,299439,9,66.88,66.71,20.02 +shr,floor,256,13,264902,9,75.45,75.24,20.03 +shr,gmp,256,13,543715,9,36.79,36.67,20.02 +shr,gmpz,256,13,525943,9,38.15,38.04,20.07 +shr,auto,2000,13,86554,9,279.29,233.59,23.10 +shr,inplace,2000,13,28826,9,346.73,345.76,20.00 +shr,kernel,2000,13,38982,9,513.45,509.10,19.99 +shr,floor,2000,13,38074,9,527.07,523.78,20.06 +shr,gmp,2000,13,68205,9,315.49,303.08,21.23 +shr,gmpz,2000,13,62605,9,304.31,287.62,19.32 +shr,auto,2000,77,83231,9,257.70,227.97,21.01 +shr,inplace,2000,77,50895,9,198.06,196.29,20.12 +shr,kernel,2000,77,38569,9,517.74,514.53,19.96 +shr,floor,2000,77,38010,9,529.34,523.20,20.10 +shr,gmp,2000,77,68631,9,293.44,289.46,20.29 +shr,gmpz,2000,77,69607,9,288.78,286.34,20.26 +mul,auto,1,1,1383824,9,14.55,14.37,20.13 +mul,gmp,1,1,5350302,9,3.74,3.72,20.05 +mul,gmpz,1,1,7232939,9,2.76,2.74,19.95 +mul,auto,2,2,1105598,9,18.07,17.66,20.14 +mul,kernel,2,2,3227597,9,6.14,6.11,19.90 +mul,floor,2,2,1403392,9,14.20,14.15,20.15 +mul,gmp,2,2,4316435,9,4.49,4.47,19.53 +mul,gmpz,2,2,3124940,9,6.88,6.23,20.92 +mul,auto,3,3,965498,9,20.46,19.88,19.82 +mul,kernel,3,3,2509616,9,8.00,7.95,20.08 +mul,floor,3,3,1140299,9,17.47,17.23,19.94 +mul,gmp,3,3,3275740,9,6.09,6.05,19.99 +mul,gmpz,3,3,1963848,9,10.77,10.58,21.11 +mul,auto,4,4,957271,9,21.64,20.86,20.56 +mul,kernel,4,4,1791387,9,11.14,10.56,19.76 +mul,floor,4,4,1183817,9,17.17,16.86,20.24 +mul,gmp,4,4,2226357,9,9.00,8.97,20.05 +mul,gmpz,4,4,1754954,9,11.19,10.93,19.50 +mul,auto,6,6,742095,9,27.28,26.94,20.33 +mul,kernel,6,6,1034991,9,19.41,19.28,20.09 +mul,floor,6,6,826096,9,24.50,23.78,20.10 +mul,gmp,6,6,1384799,9,14.44,14.25,20.05 +mul,gmpz,6,6,1148968,9,17.77,17.34,19.66 +mul,auto,8,8,572273,9,35.07,34.79,20.14 +mul,kernel,8,8,867333,9,23.00,22.94,20.00 +mul,floor,8,8,657267,9,30.43,30.36,20.04 +mul,gmp,8,8,880457,9,22.77,22.70,20.22 +mul,gmpz,8,8,816111,9,24.52,24.47,20.09 +mul,auto,12,12,368661,9,54.06,53.55,19.87 +mul,kernel,12,12,483743,9,41.46,41.25,20.05 +mul,floor,12,12,403518,9,49.62,49.37,20.04 +mul,gmp,12,12,449424,9,44.33,44.20,19.93 +mul,gmpz,12,12,426516,9,46.78,46.66,19.95 +mul,auto,16,16,237972,9,82.70,82.51,19.68 +mul,kernel,16,16,285258,9,69.75,69.58,19.92 +mul,floor,16,16,239077,9,83.95,83.53,20.06 +mul,gmp,16,16,258838,9,77.93,77.33,20.16 +mul,gmpz,16,16,253161,9,79.39,79.14,20.09 +mul,auto,32,32,71338,9,282.76,280.72,20.20 +mul,kernel,32,32,77228,9,259.20,257.80,20.01 +mul,floor,32,32,71844,9,280.65,278.43,20.15 +mul,gmp,32,32,77351,9,256.79,255.35,19.87 +mul,gmpz,32,32,77656,9,257.88,256.67,20.04 +mul,auto,64,64,19293,9,1013.03,1008.82,19.61 +mul,kernel,64,64,20004,9,991.92,989.00,19.87 +mul,floor,64,64,19660,9,1015.04,1011.43,19.95 +mul,gmp,64,64,25750,9,775.61,772.17,20.00 +mul,gmpz,64,64,25529,9,778.83,774.88,19.88 +mul,auto,128,128,5573,9,3592.67,3579.70,20.24 +mul,kernel,128,128,5438,9,3680.00,3635.22,20.01 +mul,floor,128,128,5412,9,3627.84,3599.48,19.98 +mul,gmp,128,128,7496,9,2656.93,2642.05,19.96 +mul,gmpz,128,128,7507,9,2670.80,2660.15,20.08 +mul,auto,256,256,1663,9,12013.93,11904.36,19.96 +mul,kernel,256,256,1681,9,11814.35,11788.84,19.86 +mul,floor,256,256,1683,9,11850.84,11809.89,19.99 +mul,gmp,256,256,1935,9,10315.18,10249.03,19.94 +mul,gmpz,256,256,2558,9,7883.27,7851.17,20.25 +mul,auto,512,512,541,9,37059.77,36992.38,20.05 +mul,kernel,512,512,533,9,37528.14,37343.73,20.00 +mul,floor,512,512,534,9,37421.97,37387.95,19.99 +mul,gmp,512,512,937,9,21839.60,21457.00,20.38 +mul,gmpz,512,512,1046,9,19180.73,19026.49,20.07 +mul,auto,1000,1000,187,9,106967.03,106440.06,20.01 +mul,kernel,1000,1000,182,9,109256.64,107733.75,19.86 +mul,floor,1000,1000,183,9,108007.06,107048.96,19.77 +mul,gmp,1000,1000,359,9,55305.25,55164.00,19.85 +mul,gmpz,1000,1000,361,9,55463.64,55112.19,20.01 +mul,auto,2000,2000,67,9,302641.16,301634.94,20.28 +mul,kernel,2000,2000,67,9,303082.09,300649.87,20.31 +mul,floor,2000,2000,67,9,303388.69,301069.66,20.32 +mul,gmp,2000,2000,134,9,148798.51,148349.50,19.94 +mul,gmpz,2000,2000,134,9,149074.63,148463.62,19.97 +mul,auto,2000,100,432,9,46485.73,46283.66,20.09 +mul,kernel,2000,100,429,9,46778.65,46598.48,20.08 +mul,floor,2000,100,427,9,46794.89,46589.87,19.99 +mul,gmp,2000,100,571,9,35243.80,35107.34,20.12 +mul,gmpz,2000,100,575,9,34754.27,34595.51,19.96 +sqr,auto,4,4,928782,9,21.91,21.54,20.31 +sqr,kernel,4,4,1770108,9,11.35,11.30,20.11 +sqr,floor,4,4,1235171,9,16.28,16.19,20.17 +sqr,gmp,4,4,2867505,9,6.97,6.72,19.80 +sqr,gmpz,4,4,2059348,9,9.72,9.43,19.96 +sqr,auto,16,16,265116,9,75.91,75.30,20.14 +sqr,kernel,16,16,327524,9,62.53,61.38,20.53 +sqr,floor,16,16,278239,9,70.49,69.51,19.57 +sqr,gmp,16,16,320802,9,62.32,62.14,20.01 +sqr,gmpz,16,16,304247,9,65.98,65.39,20.06 +sqr,auto,64,64,33043,9,601.48,599.91,19.89 +sqr,kernel,64,64,34253,9,583.11,581.24,19.97 +sqr,floor,64,64,33210,9,601.06,600.08,19.97 +sqr,gmp,64,64,29578,9,672.50,665.16,19.88 +sqr,gmpz,64,64,29831,9,677.06,668.47,20.19 +sqr,auto,512,512,816,9,24399.56,24374.44,19.92 +sqr,kernel,512,512,820,9,24528.51,24459.15,20.13 +sqr,floor,512,512,818,9,24486.50,24458.44,20.05 +sqr,gmp,512,512,1214,9,16556.12,16441.28,20.13 +sqr,gmpz,512,512,1015,9,19748.36,19506.32,20.04 +sqr,auto,2000,2000,90,9,224235.18,223577.31,20.19 +sqr,kernel,2000,2000,90,9,225762.97,224012.50,20.29 +sqr,floor,2000,2000,90,9,224481.49,223245.83,20.22 +sqr,gmp,2000,2000,166,9,120843.63,120696.54,20.06 +sqr,gmpz,2000,2000,166,9,121255.77,120708.58,20.14 +divrem,auto,2,1,929109,9,21.34,20.58,19.66 +divrem,kernel,2,1,3176592,9,6.45,6.32,20.50 +divrem,floor,2,1,1428157,9,14.00,13.69,19.99 +divrem,gmp,2,1,3964936,9,5.05,5.02,20.02 +divrem,gmpz,2,1,2294131,9,8.67,8.66,19.92 +divrem,auto,8,4,247080,9,80.13,79.40,19.78 +divrem,kernel,8,4,380119,9,51.53,51.03,19.57 +divrem,floor,8,4,305208,9,65.50,65.24,20.02 +divrem,gmp,8,4,477489,9,41.75,41.50,19.92 +divrem,gmpz,8,4,449299,9,44.19,44.07,19.87 +divrem,auto,32,16,45479,9,431.92,419.90,19.60 +divrem,kernel,32,16,49854,9,395.69,382.24,19.58 +divrem,floor,32,16,49613,9,410.88,404.33,20.43 +divrem,gmp,32,16,97438,9,205.44,203.18,19.98 +divrem,gmpz,32,16,95716,9,208.30,203.73,19.90 +divrem,auto,128,64,5385,9,3755.57,3664.56,20.17 +divrem,kernel,128,64,5493,9,3638.08,3542.71,19.92 +divrem,floor,128,64,5439,9,3675.69,3597.28,19.93 +divrem,gmp,128,64,11303,9,1770.65,1754.48,20.01 +divrem,gmpz,128,64,11320,9,1773.37,1762.64,20.06 +divrem,auto,512,256,727,9,27547.23,27427.39,20.02 +divrem,kernel,512,256,732,9,27474.95,27250.34,20.27 +divrem,floor,512,256,730,9,27711.59,27266.72,20.20 +divrem,gmp,512,256,1212,9,16558.10,16517.71,20.10 +divrem,gmpz,512,256,1206,9,16594.91,16459.85,19.99 +divrem,auto,2000,1000,87,9,233298.37,232497.13,20.30 +divrem,kernel,2000,1000,87,9,233320.89,232793.57,20.31 +divrem,floor,2000,1000,86,9,233266.48,232482.56,20.06 +divrem,gmp,2000,1000,148,9,136637.67,135657.09,20.21 +divrem,gmpz,2000,1000,148,9,135120.21,134456.65,19.99 +divrem,auto,4000,2000,29,9,692755.76,690298.86,20.10 +divrem,kernel,4000,2000,29,9,693310.34,690734.21,20.12 +divrem,floor,4000,2000,29,9,692023.00,684747.14,20.05 +divrem,gmp,4000,2000,59,9,344519.07,343896.19,20.33 +divrem,gmpz,4000,2000,59,9,345750.69,343694.20,20.45 +divrem,auto,2000,100,210,9,95654.96,94821.43,20.13 +divrem,kernel,2000,100,210,9,95213.89,94380.75,19.98 +divrem,floor,2000,100,211,9,94647.12,94327.80,19.97 +divrem,gmp,2000,100,289,9,69060.55,68859.57,19.96 +divrem,gmpz,2000,100,290,9,69107.18,68751.44,20.03 +divrem,auto,65536,1,85,9,233123.04,228339.22,19.85 +divrem,kernel,65536,1,85,9,234351.47,228975.99,20.04 +divrem,floor,65536,1,85,9,233152.94,226534.81,19.92 +divrem,gmp,65536,1,115,9,173247.47,170660.87,19.94 +divrem,gmpz,65536,1,117,9,171938.74,168652.42,20.12 +tochars,auto,1,10,3326495,9,6.02,6.00,20.07 +tochars,kernel,1,10,572585,9,34.95,33.62,19.91 +tochars,gmp,1,10,1190282,9,16.49,16.14,19.57 +tochars,gmpz,1,10,824295,9,24.15,24.09,19.93 +tochars,auto,4,10,220901,9,91.27,90.94,20.18 +tochars,kernel,4,10,196150,9,103.60,101.44,20.24 +tochars,gmp,4,10,255632,9,77.42,76.62,19.76 +tochars,gmpz,4,10,205072,9,97.35,96.55,19.94 +tochars,auto,16,10,23807,9,843.43,818.04,20.01 +tochars,kernel,16,10,26927,9,741.95,723.57,19.89 +tochars,gmp,16,10,40278,9,512.85,502.43,20.63 +tochars,gmpz,16,10,32773,9,609.68,594.27,19.92 +tochars,auto,64,10,4183,9,4824.41,4804.34,20.21 +tochars,kernel,64,10,4416,9,4565.26,4392.66,20.07 +tochars,gmp,64,10,7033,9,2848.28,2821.32,20.02 +tochars,gmpz,64,10,6407,9,3162.97,3101.98,20.25 +tochars,auto,256,10,593,9,33892.64,33291.74,20.02 +tochars,kernel,256,10,608,9,32724.71,32193.87,19.90 +tochars,gmp,256,10,1050,9,19236.51,18742.10,20.18 +tochars,gmpz,256,10,983,9,20675.61,20276.75,20.22 +tochars,auto,2000,10,30,9,676706.93,668573.63,20.29 +tochars,kernel,2000,10,30,9,667775.00,661941.67,20.04 +tochars,gmp,2000,10,51,9,402294.12,399354.57,20.52 +tochars,gmpz,2000,10,49,9,416162.41,414733.00,20.41 +tochars,auto,16,16,244594,9,83.96,81.73,20.56 +tochars,gmp,16,16,252213,9,81.33,80.44,20.54 +tochars,gmpz,16,16,126675,9,162.27,159.29,20.51 +tochars,auto,2000,16,1994,9,9561.79,9453.13,19.52 +tochars,gmp,2000,16,2141,9,9056.11,9019.33,19.62 +tochars,gmpz,2000,16,1181,9,17395.25,17029.39,20.68 +fromchars,auto,4,10,217689,9,92.54,91.07,20.06 +fromchars,kernel,4,10,612619,9,32.76,32.36,20.06 +fromchars,gmp,4,10,631442,9,31.81,31.03,20.09 +fromchars,gmpz,4,10,261777,9,76.61,74.95,20.22 +fromchars,auto,16,10,52652,9,383.66,376.90,20.18 +fromchars,kernel,16,10,103596,9,192.77,191.34,19.97 +fromchars,gmp,16,10,140809,9,141.95,140.38,19.96 +fromchars,gmpz,16,10,64412,9,315.46,312.71,20.32 +fromchars,auto,64,10,9170,9,2194.97,2168.60,20.14 +fromchars,kernel,64,10,10711,9,1863.92,1826.18,19.97 +fromchars,gmp,64,10,20870,9,955.48,947.05,19.94 +fromchars,gmpz,64,10,12468,9,1605.32,1580.56,20.00 +fromchars,auto,256,10,1445,9,13839.79,13790.31,19.98 +fromchars,kernel,256,10,1728,9,11585.99,11525.80,20.03 +fromchars,gmp,256,10,2516,9,7952.93,7931.57,20.15 +fromchars,gmpz,256,10,1889,9,10716.34,10449.55,20.23 +fromchars,auto,2000,10,67,9,301131.84,300033.58,20.18 +fromchars,kernel,2000,10,71,9,283683.69,282457.17,20.14 +fromchars,gmp,2000,10,109,9,184172.78,183126.91,20.07 +fromchars,gmpz,2000,10,99,9,203531.57,202993.26,20.18 diff --git a/tests/beman/big_int/perf/item1/macr3_new64_spot_seed1.csv b/tests/beman/big_int/perf/item1/macr3_new64_spot_seed1.csv new file mode 100644 index 00000000..29ed960d --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_new64_spot_seed1.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,2746,3,7261.82,7243.31,19.96 +add,inplace,16384,16384,1400,3,7148.73,7060.13,19.94 +add,kernel,16384,16384,1231,3,16518.99,16461.45,20.36 +add,floor,16384,16384,1236,3,16287.08,16244.51,20.12 +add,gmp,16384,16384,4820,3,4106.96,4101.14,19.80 +add,gmpz,16384,16384,4875,3,4149.47,4130.52,20.23 +mul,auto,2000,2000,66,3,311979.80,307366.80,20.50 +mul,kernel,2000,2000,67,3,303192.78,302820.27,20.31 +mul,floor,2000,2000,66,3,303874.38,303398.36,20.06 +mul,gmp,2000,2000,135,3,149217.59,148866.98,20.16 +mul,gmpz,2000,2000,135,3,149016.67,148678.70,20.12 +mul,auto,16384,16384,4,3,5549968.75,5535156.25,22.18 +mul,kernel,16384,16384,4,3,5433302.25,5425093.75,21.73 +mul,floor,16384,16384,4,3,5476406.25,5473948.00,21.95 +mul,gmp,16384,16384,13,3,1607557.69,1579541.62,20.82 +mul,gmpz,16384,16384,13,3,1607378.23,1600891.00,20.87 +divrem,auto,4096,2048,28,3,706238.11,703937.50,19.76 +divrem,kernel,4096,2048,27,3,707334.89,705069.44,19.32 +divrem,floor,4096,2048,29,3,707311.79,704669.52,20.49 +divrem,gmp,4096,2048,56,3,360150.29,358865.32,20.21 +divrem,gmpz,4096,2048,56,3,359682.29,359495.54,20.14 +tochars,auto,10000,10,3,3,8419625.00,8244180.33,25.15 +tochars,kernel,10000,10,3,3,8263888.67,8238055.33,25.36 +tochars,gmp,10000,10,5,3,4156891.60,4145016.60,21.06 +tochars,gmpz,10000,10,5,3,4193258.40,4187950.00,20.98 +fromchars,auto,10000,10,5,3,4189750.00,4187458.40,20.95 +fromchars,kernel,10000,10,5,3,4135500.00,4111158.40,20.69 +fromchars,gmp,10000,10,12,3,1776934.00,1768062.50,21.33 +fromchars,gmpz,10000,10,11,3,1863568.18,1857958.27,20.49 diff --git a/tests/beman/big_int/perf/item1/macr3_new64_spot_seed2.csv b/tests/beman/big_int/perf/item1/macr3_new64_spot_seed2.csv new file mode 100644 index 00000000..941804ba --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_new64_spot_seed2.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,2747,3,7347.33,7313.31,20.18 +add,inplace,16384,16384,1394,3,7283.67,7139.33,20.18 +add,kernel,16384,16384,1207,3,16317.35,16295.60,19.70 +add,floor,16384,16384,1212,3,16670.69,16646.69,20.20 +add,gmp,16384,16384,4779,3,4147.53,4145.72,19.86 +add,gmpz,16384,16384,4799,3,4173.32,4157.70,20.03 +mul,auto,2000,2000,65,3,310872.43,310424.35,20.22 +mul,kernel,2000,2000,65,3,308611.54,303816.03,19.96 +mul,floor,2000,2000,65,3,309337.18,304644.23,20.01 +mul,gmp,2000,2000,131,3,151176.85,150595.42,19.85 +mul,gmpz,2000,2000,133,3,151748.12,148501.88,20.05 +mul,auto,16384,16384,4,3,5495854.00,5431593.75,21.90 +mul,kernel,16384,16384,4,3,5464968.75,5378385.50,21.92 +mul,floor,16384,16384,4,3,5422000.00,5316020.75,21.58 +mul,gmp,16384,16384,13,3,1608455.15,1593035.31,20.98 +mul,gmpz,16384,16384,13,3,1590798.08,1584310.92,20.71 +divrem,auto,4096,2048,29,3,707892.24,701254.31,20.49 +divrem,kernel,4096,2048,29,3,704919.55,703343.41,20.45 +divrem,floor,4096,2048,29,3,704048.83,700988.52,20.63 +divrem,gmp,4096,2048,57,3,356891.07,356211.98,20.34 +divrem,gmpz,4096,2048,57,3,357090.63,357019.00,20.37 +tochars,auto,10000,10,3,3,8265375.00,8255875.00,24.81 +tochars,kernel,10000,10,3,3,8231111.00,8222069.67,24.69 +tochars,gmp,10000,10,5,3,4173400.00,4106283.40,20.81 +tochars,gmpz,10000,10,5,3,4197433.20,4161416.60,21.02 +fromchars,auto,10000,10,5,3,4188775.00,4186433.40,20.94 +fromchars,kernel,10000,10,5,3,4099058.20,4076975.00,20.50 +fromchars,gmp,10000,10,12,3,1763572.92,1762107.58,21.19 +fromchars,gmpz,10000,10,11,3,1882363.64,1875553.00,20.76 diff --git a/tests/beman/big_int/perf/item1/macr3_new64a_seed1a.csv b/tests/beman/big_int/perf/item1/macr3_new64a_seed1a.csv new file mode 100644 index 00000000..569df029 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_new64a_seed1a.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T17:55:07Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64a seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2622931,9,7.75,7.44,20.08 +add,inplace,1,1,2778260,9,3.60,3.48,19.97 +add,kernel,1,1,17525664,9,1.14,1.14,20.03 +add,floor,1,1,2238739,9,9.20,8.93,20.74 +add,gmp,1,1,13411840,9,1.49,1.47,19.94 +add,gmpz,1,1,6743383,9,2.98,2.96,20.06 +add,auto,2,2,1341740,9,15.42,14.94,20.55 +add,inplace,2,2,2601408,9,3.84,3.84,19.91 +add,kernel,2,2,14413941,9,1.39,1.39,20.09 +add,floor,2,2,2121761,9,9.94,9.59,21.26 +add,gmp,2,2,10081385,9,1.99,1.94,19.99 +add,gmpz,2,2,5886317,9,3.31,3.18,21.29 +add,auto,4,4,1391548,9,14.45,14.36,20.21 +add,inplace,4,4,2875388,9,3.36,3.34,19.61 +add,kernel,4,4,10515595,9,1.92,1.90,20.12 +add,floor,4,4,1913941,9,10.24,10.17,19.73 +add,gmp,4,4,11498261,9,1.74,1.73,20.12 +add,gmpz,4,4,6080564,9,4.18,3.23,24.26 +add,auto,8,8,1332307,9,14.73,14.50,19.77 +add,inplace,8,8,2484235,9,3.88,3.86,19.54 +add,kernel,8,8,5712577,9,3.51,3.48,20.08 +add,floor,8,8,1717908,9,11.93,11.67,20.52 +add,gmp,8,8,8952927,9,2.26,2.23,20.16 +add,gmpz,8,8,5184199,9,3.81,3.76,19.85 +add,auto,16,16,1258669,9,16.60,15.91,20.77 +add,inplace,16,16,1790902,9,5.71,5.59,20.41 +add,kernel,16,16,2632193,9,7.57,7.52,19.89 +add,floor,16,16,1439819,9,13.54,13.40,19.54 +add,gmp,16,16,6204678,9,3.23,3.22,20.03 +add,gmpz,16,16,4471381,9,4.47,4.46,20.07 +add,auto,64,64,498872,9,39.61,37.81,19.41 +add,inplace,64,64,501234,9,19.95,19.83,20.00 +add,kernel,64,64,420712,9,48.74,48.43,20.49 +add,floor,64,64,332568,9,60.61,59.12,20.09 +add,gmp,64,64,1813562,9,11.10,11.09,20.17 +add,gmpz,64,64,1506686,9,13.38,13.06,20.28 +add,auto,256,256,181779,9,109.60,106.55,19.97 +add,inplace,256,256,99885,9,100.13,98.24,19.98 +add,kernel,256,256,88080,9,232.45,224.29,20.39 +add,floor,256,256,83975,9,248.55,235.64,20.94 +add,gmp,256,256,349517,9,57.13,56.16,19.95 +add,gmpz,256,256,344330,9,57.80,56.90,19.93 +add,auto,1024,1024,44901,9,445.95,442.99,20.19 +add,inplace,1024,1024,23094,9,432.15,420.19,19.82 +add,kernel,1024,1024,20773,9,959.69,929.65,19.85 +add,floor,1024,1024,20226,9,977.42,956.78,19.73 +add,gmp,1024,1024,79726,9,251.41,247.98,20.00 +add,gmpz,1024,1024,79053,9,253.11,247.54,19.91 +add,auto,2000,2000,21761,9,882.27,868.51,19.31 +add,inplace,2000,2000,11782,9,851.57,841.73,20.08 +add,kernel,2000,2000,10660,9,1905.99,1843.58,20.22 +add,floor,2000,2000,10294,9,2040.46,1915.61,20.79 +add,gmp,2000,2000,39802,9,497.13,490.53,19.77 +add,gmpz,2000,2000,41017,9,498.40,494.79,20.52 +add,auto,1024,1,178573,9,120.33,108.93,22.82 +add,inplace,1024,1,3318167,9,2.99,2.97,19.85 +add,kernel,1024,1,27191,9,735.32,731.87,19.96 +add,floor,1024,1,26474,9,758.27,754.04,20.24 +add,gmp,1024,1,77162,9,261.94,256.04,20.12 +add,gmpz,1024,1,76300,9,264.61,258.79,20.13 +sub,auto,1,1,2444876,9,8.20,7.71,19.88 +sub,inplace,1,1,2769381,9,3.49,3.40,19.42 +sub,kernel,1,1,18645605,9,1.07,1.07,19.92 +sub,floor,1,1,11521501,9,1.74,1.73,20.03 +sub,gmp,1,1,13285953,9,1.49,1.48,19.85 +sub,gmpz,1,1,8035021,9,2.48,2.47,19.96 +sub,auto,2,2,1363399,9,14.81,14.27,20.04 +sub,inplace,2,2,2701516,9,3.47,3.46,18.77 +sub,kernel,2,2,14133125,9,1.42,1.41,20.04 +sub,floor,2,2,2109319,9,11.81,9.28,23.73 +sub,gmp,2,2,10016009,9,1.99,1.80,19.67 +sub,gmpz,2,2,7317448,9,2.75,2.74,20.94 +sub,auto,4,4,1398261,9,14.29,14.20,19.97 +sub,inplace,4,4,2857576,9,3.60,3.47,20.50 +sub,kernel,4,4,10198279,9,1.96,1.95,19.97 +sub,floor,4,4,1855030,9,10.44,10.19,19.34 +sub,gmp,4,4,11551034,9,1.74,1.73,20.08 +sub,gmpz,4,4,6963754,9,2.73,2.73,19.19 +sub,auto,8,8,1293491,9,17.83,15.53,22.22 +sub,inplace,8,8,2442082,9,4.10,4.10,20.11 +sub,kernel,8,8,5732542,9,3.50,3.47,20.07 +sub,floor,8,8,1712974,9,11.46,11.41,19.69 +sub,gmp,8,8,8922203,9,2.24,2.23,19.98 +sub,gmpz,8,8,6185735,9,3.23,3.22,19.97 +sub,auto,16,16,1137473,9,17.34,17.29,19.83 +sub,inplace,16,16,1917067,9,5.22,5.13,19.96 +sub,kernel,16,16,2608228,9,7.66,7.62,19.99 +sub,floor,16,16,1365484,9,14.65,14.44,20.02 +sub,gmp,16,16,6196120,9,3.18,3.14,19.65 +sub,gmpz,16,16,4729475,9,4.24,4.23,20.05 +sub,auto,64,64,554296,9,35.85,35.67,19.93 +sub,inplace,64,64,501928,9,20.14,19.86,20.26 +sub,kernel,64,64,408365,9,49.09,48.15,20.06 +sub,floor,64,64,329946,9,59.89,59.19,19.75 +sub,gmp,64,64,1773842,9,11.22,11.06,19.86 +sub,gmpz,64,64,1446125,9,13.86,13.67,19.98 +sub,auto,256,256,181128,9,110.60,109.23,20.02 +sub,inplace,256,256,98732,9,99.92,98.55,19.77 +sub,kernel,256,256,84631,9,236.19,225.62,20.04 +sub,floor,256,256,81955,9,243.36,236.87,19.88 +sub,gmp,256,256,350140,9,57.11,56.10,19.96 +sub,gmpz,256,256,342913,9,57.80,56.93,19.78 +sub,auto,1024,1024,44211,9,451.83,433.83,20.14 +sub,inplace,1024,1024,23308,9,430.65,428.61,20.08 +sub,kernel,1024,1024,20660,9,964.55,963.46,19.94 +sub,floor,1024,1024,20466,9,1004.55,975.88,20.50 +sub,gmp,1024,1024,80853,9,251.50,246.75,20.30 +sub,gmpz,1024,1024,78841,9,253.46,247.43,19.91 +sub,auto,2000,2000,22945,9,872.43,843.36,19.92 +sub,inplace,2000,2000,11850,9,846.69,827.14,20.00 +sub,kernel,2000,2000,10516,9,1899.07,1836.72,19.85 +sub,floor,2000,2000,10470,9,1907.35,1856.18,19.93 +sub,gmp,2000,2000,40463,9,494.51,487.30,19.98 +sub,gmpz,2000,2000,39240,9,499.03,489.55,19.55 +sub,auto,1024,1,156656,9,140.72,119.06,21.87 +sub,inplace,1024,1,3217190,9,3.11,3.10,20.15 +sub,kernel,1024,1,27270,9,728.23,708.42,19.78 +sub,floor,1024,1,25751,9,745.43,718.53,19.09 +sub,gmp,1024,1,76224,9,260.66,255.88,19.95 +sub,gmpz,1024,1,74550,9,265.81,262.23,19.85 +shl,auto,1,13,1597603,9,12.31,12.22,19.74 +shl,inplace,1,13,3871009,9,2.52,2.48,19.57 +shl,kernel,1,13,8928350,9,2.24,2.23,20.04 +shl,kernelip,1,13,5529527,9,1.78,1.77,19.72 +shl,floor,1,13,1861027,9,11.10,10.92,20.74 +shl,gmp,1,13,16027655,9,1.25,1.23,20.11 +shl,gmpz,1,13,10047398,9,1.99,1.98,20.01 +shl,auto,4,13,1484906,9,13.11,12.81,19.42 +shl,inplace,4,13,2591272,9,3.82,3.69,19.74 +shl,kernel,4,13,5420675,9,3.72,3.72,20.18 +shl,kernelip,4,13,2953464,9,3.36,3.30,19.78 +shl,floor,4,13,1498263,9,13.56,13.12,20.25 +shl,gmp,4,13,9948882,9,1.99,1.99,19.82 +shl,gmpz,4,13,7311011,9,2.73,2.72,20.04 +shl,auto,16,13,1214254,9,15.46,15.12,19.02 +shl,inplace,16,13,1883830,9,5.34,5.32,20.21 +shl,kernel,16,13,4819372,9,4.15,4.15,20.01 +shl,kernelip,16,13,1431669,9,6.82,6.56,19.42 +shl,floor,16,13,1701649,9,12.40,11.76,20.95 +shl,gmp,16,13,5726298,9,3.48,3.47,20.12 +shl,gmpz,16,13,3693971,9,5.29,5.21,19.48 +shl,auto,256,13,464159,9,42.17,41.75,19.64 +shl,inplace,256,13,334636,9,29.94,29.78,20.04 +shl,kernel,256,13,406036,9,49.25,49.08,20.04 +shl,kernelip,256,13,204451,9,48.97,48.61,19.99 +shl,floor,256,13,342699,9,58.18,57.35,19.94 +shl,gmp,256,13,541538,9,37.03,36.95,20.08 +shl,gmpz,256,13,518574,9,38.01,37.82,19.74 +shl,auto,2000,13,89601,9,252.12,219.31,22.36 +shl,inplace,2000,13,51009,9,195.82,195.26,19.97 +shl,kernel,2000,13,51991,9,383.21,380.51,19.91 +shl,kernelip,2000,13,26594,9,376.87,376.10,20.06 +shl,floor,2000,13,49232,9,399.06,396.35,19.68 +shl,gmp,2000,13,15474,9,2338.46,1396.71,28.54 +shl,gmpz,2000,13,21784,9,1824.81,1121.41,37.12 +shl,auto,2000,77,65525,9,496.50,293.34,33.93 +shl,inplace,2000,77,43540,9,228.94,227.58,19.92 +shl,kernel,2000,77,37817,9,528.73,524.50,19.97 +shl,kernelip,2000,77,19211,9,521.38,513.87,20.23 +shl,floor,2000,77,37144,9,538.12,536.49,19.99 +shl,gmp,2000,77,69046,9,288.49,287.55,19.97 +shl,gmpz,2000,77,64435,9,294.55,287.04,19.17 +shr,auto,1,13,3097108,9,6.62,6.28,20.59 +shr,inplace,1,13,3391792,9,3.34,2.81,21.42 +shr,kernel,1,13,10055250,9,2.24,1.99,19.67 +shr,floor,1,13,8721573,9,2.24,2.23,20.00 +shr,gmp,1,13,20000001,9,0.99,0.99,19.87 +shr,gmpz,1,13,10079872,9,1.99,1.98,20.03 +shr,auto,4,13,1398919,9,14.24,13.70,19.65 +shr,inplace,4,13,2730657,9,3.58,3.54,19.78 +shr,kernel,4,13,5368848,9,3.57,3.53,19.39 +shr,floor,4,13,1681183,9,11.85,11.67,20.11 +shr,gmp,4,13,11583621,9,1.74,1.73,20.13 +shr,gmpz,4,13,7328525,9,2.73,2.71,20.02 +shr,auto,16,13,1130594,9,17.96,17.64,20.29 +shr,inplace,16,13,1931595,9,5.27,5.18,20.31 +shr,kernel,16,13,4868440,9,4.08,4.07,19.90 +shr,floor,16,13,1557556,9,12.74,12.65,19.95 +shr,gmp,16,13,6198120,9,3.23,3.22,20.04 +shr,gmpz,16,13,4730411,9,4.23,4.22,20.04 +shr,auto,256,13,443803,9,42.07,42.00,19.06 +shr,inplace,256,13,331089,9,30.29,30.08,20.05 +shr,kernel,256,13,301170,9,66.51,66.24,20.03 +shr,floor,256,13,265916,9,75.32,74.83,20.02 +shr,gmp,256,13,542164,9,36.72,36.65,19.91 +shr,gmpz,256,13,525738,9,38.10,37.96,20.02 +shr,auto,2000,13,71542,9,276.00,258.65,19.79 +shr,inplace,2000,13,50797,9,196.05,195.68,19.93 +shr,kernel,2000,13,39165,9,510.91,503.66,19.99 +shr,floor,2000,13,38130,9,523.43,519.76,19.93 +shr,gmp,2000,13,64678,9,311.03,298.19,20.41 +shr,gmpz,2000,13,68170,9,309.19,288.22,21.47 +shr,auto,2000,77,92397,9,250.99,236.31,21.62 +shr,inplace,2000,77,50898,9,195.61,195.15,19.92 +shr,kernel,2000,77,38011,9,524.99,510.61,19.83 +shr,floor,2000,77,38056,9,525.77,514.36,19.99 +shr,gmp,2000,77,69017,9,290.27,289.17,20.10 +shr,gmpz,2000,77,69814,9,286.57,285.43,20.17 +mul,auto,1,1,1412935,9,13.98,13.74,19.85 +mul,gmp,1,1,5370145,9,3.73,3.71,20.21 +mul,gmpz,1,1,7268554,9,2.73,2.73,19.88 +mul,auto,2,2,1102310,9,18.49,17.74,20.14 +mul,kernel,2,2,3127645,9,6.19,6.14,19.52 +mul,floor,2,2,1389615,9,14.42,14.34,20.08 +mul,gmp,2,2,4430591,9,4.54,4.48,20.42 +mul,gmpz,2,2,3066265,9,6.71,6.50,20.47 +mul,auto,3,3,1066931,9,19.07,18.79,20.48 +mul,kernel,3,3,2515884,9,7.95,7.93,20.03 +mul,floor,3,3,1218028,9,16.61,16.34,20.16 +mul,gmp,3,3,3215656,9,6.21,6.19,19.97 +mul,gmpz,3,3,2360875,9,7.93,7.85,19.30 +mul,auto,4,4,944864,9,21.20,21.11,20.09 +mul,kernel,4,4,1811709,9,11.02,10.92,19.96 +mul,floor,4,4,1162606,9,16.92,16.65,19.60 +mul,gmp,4,4,2474405,9,9.05,7.92,22.17 +mul,gmpz,4,4,2056423,9,10.92,9.71,19.83 +mul,auto,6,6,713820,9,27.10,27.04,19.37 +mul,kernel,6,6,1046724,9,19.17,19.02,20.09 +mul,floor,6,6,828574,9,24.18,23.65,20.38 +mul,gmp,6,6,1297913,9,14.66,14.26,19.23 +mul,gmpz,6,6,1041156,9,18.34,17.54,19.19 +mul,auto,8,8,577215,9,35.19,34.50,20.24 +mul,kernel,8,8,872908,9,22.97,22.92,20.06 +mul,floor,8,8,659783,9,30.25,30.12,19.98 +mul,gmp,8,8,889556,9,22.53,22.36,20.03 +mul,gmpz,8,8,818747,9,26.37,24.48,21.34 +mul,auto,12,12,372712,9,53.78,53.39,20.05 +mul,kernel,12,12,486097,9,41.76,41.11,20.23 +mul,floor,12,12,406500,9,49.41,49.27,20.12 +mul,gmp,12,12,452093,9,44.05,43.97,19.92 +mul,gmpz,12,12,428390,9,46.70,46.63,20.02 +mul,auto,16,16,240505,9,82.79,82.33,19.98 +mul,kernel,16,16,288103,9,69.41,69.34,20.00 +mul,floor,16,16,254224,9,78.64,78.48,20.00 +mul,gmp,16,16,260777,9,76.26,76.11,19.89 +mul,gmpz,16,16,253886,9,78.67,77.85,19.95 +mul,auto,32,32,70871,9,281.68,279.07,19.93 +mul,kernel,32,32,77215,9,258.52,257.56,19.98 +mul,floor,32,32,71901,9,278.89,277.45,20.07 +mul,gmp,32,32,74009,9,268.77,268.12,19.92 +mul,gmpz,32,32,72101,9,271.63,269.60,19.67 +mul,auto,64,64,19287,9,1007.16,1003.86,19.42 +mul,kernel,64,64,20369,9,985.12,983.27,20.07 +mul,floor,64,64,19808,9,1009.13,1004.65,20.01 +mul,gmp,64,64,25897,9,771.98,769.82,20.04 +mul,gmpz,64,64,25793,9,784.87,774.44,20.21 +mul,auto,128,128,5510,9,3634.22,3612.93,20.03 +mul,kernel,128,128,5594,9,3575.53,3570.77,20.02 +mul,floor,128,128,5571,9,3592.27,3587.48,20.03 +mul,gmp,128,128,7602,9,2634.87,2619.55,20.03 +mul,gmpz,128,128,6671,9,3000.02,2993.42,20.02 +mul,auto,256,256,1704,9,11756.82,11730.83,20.05 +mul,kernel,256,256,1701,9,11807.37,11745.10,20.10 +mul,floor,256,256,1676,9,11770.24,11744.46,19.74 +mul,gmp,256,256,1933,9,10324.58,10156.66,19.91 +mul,gmpz,256,256,1937,9,10330.11,10220.27,20.03 +mul,auto,512,512,543,9,36888.27,36679.02,20.08 +mul,kernel,512,512,537,9,37381.36,37153.63,20.07 +mul,floor,512,512,535,9,37413.71,37066.20,19.98 +mul,gmp,512,512,938,9,21353.81,21167.20,20.00 +mul,gmpz,512,512,941,9,21332.98,21192.70,20.07 +mul,auto,1000,1000,187,9,106631.02,105921.12,20.05 +mul,kernel,1000,1000,188,9,106728.28,106331.34,20.07 +mul,floor,1000,1000,188,9,106790.34,105834.22,20.05 +mul,gmp,1000,1000,363,9,55153.12,54923.78,20.03 +mul,gmpz,1000,1000,363,9,55244.49,55207.07,20.06 +mul,auto,2000,2000,67,9,301468.91,298623.76,20.16 +mul,kernel,2000,2000,67,9,301968.91,301474.51,20.24 +mul,floor,2000,2000,67,9,301999.37,298326.49,20.54 +mul,gmp,2000,2000,136,9,150046.88,148077.82,20.47 +mul,gmpz,2000,2000,128,9,155705.08,154623.70,19.93 +mul,auto,2000,100,432,9,46298.23,46215.18,20.02 +mul,kernel,2000,100,431,9,46599.09,46517.98,20.12 +mul,floor,2000,100,429,9,46847.42,46654.82,20.10 +mul,gmp,2000,100,569,9,35109.18,34880.12,19.97 +mul,gmpz,2000,100,578,9,34686.56,34555.72,20.08 +sqr,auto,4,4,937594,9,21.72,21.10,20.28 +sqr,kernel,4,4,1775016,9,11.39,11.24,20.20 +sqr,floor,4,4,1213510,9,16.42,16.17,19.95 +sqr,gmp,4,4,2827913,9,7.08,7.01,19.99 +sqr,gmpz,4,4,2040456,9,9.84,9.28,19.89 +sqr,auto,16,16,263205,9,75.23,74.64,19.82 +sqr,kernel,16,16,308249,9,64.73,63.54,19.98 +sqr,floor,16,16,277129,9,72.07,70.67,19.89 +sqr,gmp,16,16,316782,9,61.59,60.30,19.46 +sqr,gmpz,16,16,300433,9,65.82,65.25,19.80 +sqr,auto,64,64,33146,9,600.85,596.89,19.91 +sqr,kernel,64,64,33912,9,582.34,579.32,19.76 +sqr,floor,64,64,33289,9,601.66,599.11,20.02 +sqr,gmp,64,64,29579,9,674.83,663.48,19.95 +sqr,gmpz,64,64,29559,9,675.95,661.81,19.88 +sqr,auto,512,512,823,9,24301.39,24161.70,19.99 +sqr,kernel,512,512,822,9,24341.60,24226.89,20.00 +sqr,floor,512,512,823,9,24393.58,24264.99,20.07 +sqr,gmp,512,512,1213,9,16491.86,16381.32,20.04 +sqr,gmpz,512,512,1037,9,19701.14,19243.09,20.41 +sqr,auto,2000,2000,90,9,223192.13,222577.78,20.10 +sqr,kernel,2000,2000,90,9,223457.88,221910.64,20.11 +sqr,floor,2000,2000,90,9,223245.37,221285.64,20.07 +sqr,gmp,2000,2000,167,9,120241.52,119487.78,20.09 +sqr,gmpz,2000,2000,167,9,120733.53,118680.89,20.12 +divrem,auto,2,1,663041,9,28.32,27.84,19.14 +divrem,kernel,2,1,3529058,9,5.73,5.71,20.34 +divrem,floor,2,1,1461510,9,13.24,13.17,19.45 +divrem,gmp,2,1,3993888,9,5.04,4.99,20.10 +divrem,gmpz,2,1,2296191,9,8.67,8.64,19.95 +divrem,auto,8,4,285096,9,70.61,69.94,20.17 +divrem,kernel,8,4,488136,9,41.16,40.26,20.03 +divrem,floor,8,4,353415,9,56.55,56.16,20.02 +divrem,gmp,8,4,496636,9,39.85,38.93,19.71 +divrem,gmpz,8,4,464315,9,42.95,42.39,19.94 +divrem,auto,32,16,45270,9,425.80,420.15,19.42 +divrem,kernel,32,16,50892,9,393.87,393.41,20.05 +divrem,floor,32,16,48698,9,411.38,409.33,20.02 +divrem,gmp,32,16,95088,9,207.43,206.94,19.74 +divrem,gmpz,32,16,95529,9,210.11,209.69,20.08 +divrem,auto,128,64,5411,9,3689.78,3685.59,19.98 +divrem,kernel,128,64,5529,9,3593.30,3589.99,19.88 +divrem,floor,128,64,5500,9,3682.70,3635.06,20.19 +divrem,gmp,128,64,11123,9,1777.97,1751.87,19.73 +divrem,gmpz,128,64,11343,9,1783.38,1769.29,20.22 +divrem,auto,512,256,674,9,29665.43,29260.88,19.96 +divrem,kernel,512,256,680,9,29506.37,29023.22,20.03 +divrem,floor,512,256,679,9,29486.01,29422.74,20.10 +divrem,gmp,512,256,1190,9,16417.26,16232.07,19.64 +divrem,gmpz,512,256,1227,9,16394.39,16251.46,20.07 +divrem,auto,2000,1000,87,9,232304.11,230847.22,20.24 +divrem,kernel,2000,1000,87,9,232261.98,230844.34,20.20 +divrem,floor,2000,1000,87,9,231764.85,229059.86,20.20 +divrem,gmp,2000,1000,147,9,135800.17,134786.84,19.96 +divrem,gmpz,2000,1000,149,9,135195.19,134352.63,20.14 +divrem,auto,4000,2000,30,9,685945.83,678979.17,20.56 +divrem,kernel,4000,2000,30,9,684818.03,681259.73,20.54 +divrem,floor,4000,2000,30,9,685579.17,680188.90,20.56 +divrem,gmp,4000,2000,59,9,342706.93,341479.53,20.25 +divrem,gmpz,4000,2000,59,9,342844.63,341140.54,20.28 +divrem,auto,2000,100,213,9,93943.27,93722.62,20.02 +divrem,kernel,2000,100,214,9,93693.73,92961.84,20.04 +divrem,floor,2000,100,214,9,93691.20,93411.21,20.08 +divrem,gmp,2000,100,290,9,69302.01,68905.17,20.09 +divrem,gmpz,2000,100,289,9,69358.71,69128.89,20.04 +divrem,auto,65536,1,89,9,228486.42,227506.09,20.35 +divrem,kernel,65536,1,89,9,226104.40,223454.58,20.08 +divrem,floor,65536,1,89,9,224559.93,223131.56,20.11 +divrem,gmp,65536,1,118,9,169389.83,166123.59,19.94 +divrem,gmpz,65536,1,122,9,168147.89,165631.15,20.48 +tochars,auto,1,10,3309785,9,5.97,5.96,19.75 +tochars,kernel,1,10,602489,9,33.11,32.00,19.83 +tochars,gmp,1,10,1176822,9,16.95,16.62,20.04 +tochars,gmpz,1,10,778359,9,25.50,25.13,19.83 +tochars,auto,4,10,259055,9,77.34,76.71,20.02 +tochars,kernel,4,10,198537,9,101.00,98.79,20.07 +tochars,gmp,4,10,272113,9,72.96,71.94,19.87 +tochars,gmpz,4,10,201297,9,96.75,95.96,19.51 +tochars,auto,16,10,24161,9,826.43,804.24,19.92 +tochars,kernel,16,10,27320,9,735.21,714.39,19.97 +tochars,gmp,16,10,39786,9,503.95,488.21,20.04 +tochars,gmpz,16,10,33629,9,600.36,592.48,20.18 +tochars,auto,64,10,4244,9,4678.18,4553.21,19.78 +tochars,kernel,64,10,4493,9,4447.17,4282.54,19.97 +tochars,gmp,64,10,7068,9,2865.64,2835.95,20.19 +tochars,gmpz,64,10,6368,9,3116.01,3047.69,19.78 +tochars,auto,256,10,597,9,33721.73,33194.30,20.08 +tochars,kernel,256,10,616,9,32632.04,31867.49,20.01 +tochars,gmp,256,10,1064,9,18892.47,18707.71,20.17 +tochars,gmpz,256,10,985,9,20350.76,20031.51,20.05 +tochars,auto,2000,10,30,9,676658.33,664076.40,20.25 +tochars,kernel,2000,10,30,9,667605.53,658611.10,20.00 +tochars,gmp,2000,10,50,9,403957.50,400851.66,20.16 +tochars,gmpz,2000,10,49,9,416727.90,412519.55,20.42 +tochars,auto,16,16,241886,9,83.75,82.65,20.39 +tochars,gmp,16,16,249624,9,79.23,77.53,19.76 +tochars,gmpz,16,16,125483,9,160.19,156.13,20.03 +tochars,auto,2000,16,2117,9,9935.56,9424.19,20.74 +tochars,gmp,2000,16,2232,9,8933.95,8685.78,19.90 +tochars,gmpz,2000,16,1226,9,16691.51,16432.91,20.57 +fromchars,auto,4,10,218270,9,93.16,91.56,19.49 +fromchars,kernel,4,10,625612,9,32.64,31.90,20.43 +fromchars,gmp,4,10,631543,9,31.57,29.98,19.92 +fromchars,gmpz,4,10,256493,9,77.19,75.30,19.69 +fromchars,auto,16,10,49805,9,404.46,390.02,20.06 +fromchars,kernel,16,10,104344,9,190.24,185.74,19.82 +fromchars,gmp,16,10,140867,9,140.19,136.53,19.75 +fromchars,gmpz,16,10,62411,9,317.35,314.58,19.78 +fromchars,auto,64,10,9159,9,2181.03,2128.70,19.90 +fromchars,kernel,64,10,10908,9,1844.48,1787.56,20.07 +fromchars,gmp,64,10,20974,9,954.39,934.40,19.99 +fromchars,gmpz,64,10,12486,9,1596.00,1575.43,19.92 +fromchars,auto,256,10,1452,9,13807.36,13660.64,20.04 +fromchars,kernel,256,10,1739,9,11531.75,11486.18,20.05 +fromchars,gmp,256,10,2494,9,7915.13,7884.52,19.81 +fromchars,gmpz,256,10,1906,9,10467.38,10426.50,19.96 +fromchars,auto,2000,10,67,9,300424.13,298894.90,20.14 +fromchars,kernel,2000,10,71,9,282461.27,281526.41,20.07 +fromchars,gmp,2000,10,109,9,183814.22,182728.60,20.04 +fromchars,gmpz,2000,10,98,9,203450.26,201873.72,19.92 diff --git a/tests/beman/big_int/perf/item1/macr3_new64a_seed1b.csv b/tests/beman/big_int/perf/item1/macr3_new64a_seed1b.csv new file mode 100644 index 00000000..d4ae6a05 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_new64a_seed1b.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T18:00:03Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64a seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2665728,9,7.51,7.45,20.21 +add,inplace,1,1,2766448,9,3.61,3.59,20.11 +add,kernel,1,1,17335081,9,1.14,1.14,19.82 +add,floor,1,1,2178678,9,9.47,9.05,20.56 +add,gmp,1,1,13385985,9,1.49,1.48,19.93 +add,gmpz,1,1,6707087,9,2.98,2.97,20.83 +add,auto,2,2,1284925,9,15.37,15.29,19.83 +add,inplace,2,2,2597912,9,3.85,3.84,20.03 +add,kernel,2,2,14330040,9,1.39,1.39,19.94 +add,floor,2,2,1984445,9,9.45,9.42,18.84 +add,gmp,2,2,11497652,9,1.98,1.74,19.78 +add,gmpz,2,2,6186733,9,3.29,3.23,26.90 +add,auto,4,4,1432708,9,13.96,13.92,20.16 +add,inplace,4,4,2765830,9,3.64,3.62,20.11 +add,kernel,4,4,10444636,9,1.91,1.90,19.94 +add,floor,4,4,1961237,9,10.42,10.16,20.39 +add,gmp,4,4,11512947,9,1.73,1.73,19.98 +add,gmpz,4,4,3676752,9,5.95,5.67,20.58 +add,auto,8,8,1285818,9,15.49,15.20,19.90 +add,inplace,8,8,2431476,9,4.48,4.10,21.19 +add,kernel,8,8,5690929,9,3.49,3.43,19.92 +add,floor,8,8,1678159,9,12.25,11.92,20.47 +add,gmp,8,8,8940027,9,2.24,2.23,20.03 +add,gmpz,8,8,5093646,9,3.84,3.82,19.61 +add,auto,16,16,1149574,9,16.84,16.57,19.39 +add,inplace,16,16,1767630,9,5.60,5.58,20.11 +add,kernel,16,16,2647420,9,7.55,7.48,19.98 +add,floor,16,16,1439461,9,13.47,13.43,19.58 +add,gmp,16,16,6203066,9,3.23,2.91,19.52 +add,gmpz,16,16,4445359,9,4.74,4.48,20.61 +add,auto,64,64,507710,9,38.43,38.08,19.76 +add,inplace,64,64,501860,9,19.96,19.81,20.03 +add,kernel,64,64,405360,9,49.33,48.80,20.02 +add,floor,64,64,327946,9,60.95,59.81,19.95 +add,gmp,64,64,1816347,9,11.08,11.04,20.14 +add,gmpz,64,64,1549504,9,12.98,12.88,20.11 +add,auto,256,256,182117,9,110.26,107.57,20.07 +add,inplace,256,256,98339,9,100.90,98.93,19.83 +add,kernel,256,256,86461,9,236.05,232.24,20.33 +add,floor,256,256,81293,9,245.72,241.73,19.92 +add,gmp,256,256,349915,9,57.17,56.54,19.98 +add,gmpz,256,256,285837,9,69.09,67.80,19.71 +add,auto,1024,1024,45334,9,448.13,439.44,20.29 +add,inplace,1024,1024,22920,9,436.37,424.22,19.95 +add,kernel,1024,1024,20678,9,969.16,947.41,20.01 +add,floor,1024,1024,20287,9,984.46,960.96,19.88 +add,gmp,1024,1024,79395,9,251.29,249.72,19.93 +add,gmpz,1024,1024,79003,9,253.09,247.64,19.94 +add,auto,2000,2000,22848,9,877.35,868.61,20.02 +add,inplace,2000,2000,11698,9,858.41,825.03,19.97 +add,kernel,2000,2000,10389,9,1911.43,1851.44,19.75 +add,floor,2000,2000,10378,9,1929.79,1888.18,20.02 +add,gmp,2000,2000,40325,9,494.83,489.77,19.94 +add,gmpz,2000,2000,40386,9,496.47,493.42,20.15 +add,auto,1024,1,212425,9,121.68,96.72,25.75 +add,inplace,1024,1,3356103,9,2.98,2.97,20.01 +add,kernel,1024,1,26800,9,734.98,718.47,19.59 +add,floor,1024,1,26245,9,763.19,747.61,20.00 +add,gmp,1024,1,76671,9,262.42,258.47,20.09 +add,gmpz,1024,1,75111,9,266.09,261.15,19.91 +sub,auto,1,1,2460439,9,8.19,8.17,20.16 +sub,inplace,1,1,2950592,9,3.38,3.35,20.23 +sub,kernel,1,1,19159915,9,1.04,1.04,20.01 +sub,floor,1,1,11476292,9,1.74,1.73,19.94 +sub,gmp,1,1,13471784,9,1.49,1.49,20.28 +sub,gmpz,1,1,8063748,9,2.48,2.48,20.06 +sub,auto,2,2,1347554,9,14.85,14.59,20.16 +sub,inplace,2,2,2886888,9,3.47,3.47,20.06 +sub,kernel,2,2,14135782,9,1.41,1.41,20.01 +sub,floor,2,2,2082074,9,9.44,9.40,19.70 +sub,gmp,2,2,10091308,9,1.99,1.96,20.02 +sub,gmpz,2,2,6712754,9,2.99,2.98,20.15 +sub,auto,4,4,1397994,9,14.54,14.29,20.36 +sub,inplace,4,4,2777774,9,3.61,3.58,20.34 +sub,kernel,4,4,9861325,9,1.97,1.95,19.70 +sub,floor,4,4,1960222,9,10.13,9.93,20.13 +sub,gmp,4,4,10896475,9,1.85,1.81,20.06 +sub,gmpz,4,4,6879187,9,2.90,2.73,19.53 +sub,auto,8,8,1281304,9,15.62,15.41,20.04 +sub,inplace,8,8,2469243,9,4.09,4.03,20.13 +sub,kernel,8,8,5756676,9,3.48,3.47,20.04 +sub,floor,8,8,1644296,9,11.87,11.64,19.53 +sub,gmp,8,8,8926960,9,2.23,2.23,19.92 +sub,gmpz,8,8,6206761,9,3.23,3.22,20.02 +sub,auto,16,16,1105906,9,17.68,17.57,19.74 +sub,inplace,16,16,1955226,9,5.21,5.12,20.33 +sub,kernel,16,16,2613762,9,7.66,7.64,20.03 +sub,floor,16,16,1339346,9,15.10,14.87,20.13 +sub,gmp,16,16,6569717,9,3.23,3.02,20.98 +sub,gmpz,16,16,4731892,9,4.34,4.23,20.46 +sub,auto,64,64,541636,9,36.92,36.77,20.00 +sub,inplace,64,64,487994,9,20.39,20.35,19.93 +sub,kernel,64,64,405406,9,50.31,49.78,20.40 +sub,floor,64,64,334838,9,60.33,59.62,20.20 +sub,gmp,64,64,1759220,9,11.40,11.21,20.01 +sub,gmpz,64,64,1488375,9,13.39,13.26,19.91 +sub,auto,256,256,180670,9,110.70,109.22,19.95 +sub,inplace,256,256,98762,9,100.95,98.86,19.90 +sub,kernel,256,256,81149,9,236.48,229.67,19.13 +sub,floor,256,256,80813,9,246.29,239.34,19.82 +sub,gmp,256,256,349532,9,57.05,56.84,20.00 +sub,gmpz,256,256,345898,9,58.01,57.06,20.08 +sub,auto,1024,1024,43458,9,449.10,441.97,19.54 +sub,inplace,1024,1024,22875,9,434.51,425.31,19.80 +sub,kernel,1024,1024,20892,9,970.81,943.74,20.19 +sub,floor,1024,1024,19547,9,992.77,960.26,19.57 +sub,gmp,1024,1024,79519,9,251.93,248.68,20.02 +sub,gmpz,1024,1024,80027,9,253.33,247.69,20.24 +sub,auto,2000,2000,22526,9,879.02,857.31,19.75 +sub,inplace,2000,2000,11630,9,851.70,835.77,19.77 +sub,kernel,2000,2000,10386,9,1907.65,1856.89,19.79 +sub,floor,2000,2000,10404,9,1930.03,1878.38,20.02 +sub,gmp,2000,2000,40417,9,494.40,487.60,19.96 +sub,gmpz,2000,2000,39550,9,501.06,488.10,19.74 +sub,auto,1024,1,162013,9,135.37,131.16,21.87 +sub,inplace,1024,1,3099914,9,3.22,3.20,19.96 +sub,kernel,1024,1,27081,9,738.03,734.02,19.97 +sub,floor,1024,1,26674,9,751.89,735.85,20.05 +sub,gmp,1024,1,76705,9,262.96,259.20,20.21 +sub,gmpz,1024,1,75126,9,266.40,259.69,19.97 +shl,auto,1,13,1706097,9,12.09,11.70,20.45 +shl,inplace,1,13,4037373,9,2.48,2.48,20.03 +shl,kernel,1,13,8980182,9,2.23,2.23,20.07 +shl,kernelip,1,13,8954530,9,1.76,1.17,25.35 +shl,floor,1,13,1874826,9,10.43,10.40,19.76 +shl,gmp,1,13,16123048,9,1.24,1.24,19.99 +shl,gmpz,1,13,10067142,9,1.98,1.98,19.99 +shl,auto,4,13,1557257,9,12.59,12.48,20.08 +shl,inplace,4,13,2627463,9,3.82,3.74,20.24 +shl,kernel,4,13,5357698,9,3.71,3.70,19.91 +shl,kernelip,4,13,2955751,9,3.38,3.34,19.96 +shl,floor,4,13,1529326,9,12.91,12.87,19.78 +shl,gmp,4,13,10095704,9,1.98,1.98,20.03 +shl,gmpz,4,13,7314974,9,2.73,2.72,19.96 +shl,auto,16,13,1309815,9,15.44,15.15,20.53 +shl,inplace,16,13,1870903,9,5.34,5.29,19.94 +shl,kernel,16,13,4834667,9,4.14,4.14,20.05 +shl,kernelip,16,13,1352264,9,6.80,6.71,18.35 +shl,floor,16,13,1641761,9,12.21,12.15,20.19 +shl,gmp,16,13,5709872,9,3.53,3.47,20.21 +shl,gmpz,16,13,3748741,9,5.18,5.06,19.43 +shl,auto,256,13,457808,9,41.12,40.83,19.30 +shl,inplace,256,13,336682,9,30.06,29.73,20.18 +shl,kernel,256,13,409005,9,48.96,48.88,20.04 +shl,kernelip,256,13,204731,9,48.62,48.33,19.89 +shl,floor,256,13,359913,9,57.79,56.86,20.85 +shl,gmp,256,13,536798,9,36.97,36.89,19.90 +shl,gmpz,256,13,520053,9,37.86,37.74,19.70 +shl,auto,2000,13,91128,9,258.99,231.22,20.29 +shl,inplace,2000,13,51153,9,195.73,195.41,20.02 +shl,kernel,2000,13,52215,9,382.20,380.95,19.95 +shl,kernelip,2000,13,26542,9,375.68,375.31,19.94 +shl,floor,2000,13,50101,9,398.85,396.94,19.98 +shl,gmp,2000,13,32795,9,1530.42,600.22,27.72 +shl,gmpz,2000,13,17847,9,1578.88,1078.77,25.73 +shl,auto,2000,77,68675,9,365.34,291.57,26.81 +shl,inplace,2000,77,43995,9,229.21,227.63,20.20 +shl,kernel,2000,77,37689,9,530.63,523.62,19.99 +shl,kernelip,2000,77,19019,9,525.80,519.37,20.01 +shl,floor,2000,77,37224,9,541.39,538.80,20.23 +shl,gmp,2000,77,68914,9,288.73,286.96,19.97 +shl,gmpz,2000,77,69215,9,289.38,287.28,20.06 +shr,auto,1,13,2876177,9,7.06,6.88,20.23 +shr,inplace,1,13,3152440,9,3.35,3.30,21.08 +shr,kernel,1,13,8665166,9,2.29,2.27,19.81 +shr,floor,1,13,8061109,9,2.53,2.48,20.33 +shr,gmp,1,13,20000001,9,1.00,0.99,20.10 +shr,gmpz,1,13,10023347,9,2.03,2.00,20.32 +shr,auto,4,13,1437188,9,14.63,14.36,21.08 +shr,inplace,4,13,2847898,9,3.75,3.63,21.86 +shr,kernel,4,13,5257896,9,3.85,3.74,20.19 +shr,floor,4,13,1731558,9,12.43,12.24,21.54 +shr,gmp,4,13,11203743,9,1.79,1.76,20.06 +shr,gmpz,4,13,7061561,9,2.84,2.75,19.96 +shr,auto,16,13,1035579,9,18.98,18.63,19.64 +shr,inplace,16,13,1880942,9,5.43,5.34,20.40 +shr,kernel,16,13,4633022,9,4.27,4.15,19.69 +shr,floor,16,13,1512184,9,13.53,13.03,20.45 +shr,gmp,16,13,6000717,9,3.32,3.26,19.93 +shr,gmpz,16,13,4628454,9,4.35,4.30,20.12 +shr,auto,256,13,441121,9,43.15,42.87,19.10 +shr,inplace,256,13,316153,9,31.26,30.57,19.71 +shr,kernel,256,13,288875,9,67.75,67.20,19.65 +shr,floor,256,13,262033,9,76.85,75.67,20.12 +shr,gmp,256,13,523721,9,37.73,37.29,19.78 +shr,gmpz,256,13,501440,9,38.72,37.98,19.61 +shr,auto,2000,13,82057,9,230.59,227.99,18.95 +shr,inplace,2000,13,50492,9,199.62,196.19,20.08 +shr,kernel,2000,13,38108,9,525.90,517.81,20.00 +shr,floor,2000,13,36738,9,543.52,533.57,19.93 +shr,gmp,2000,13,67408,9,301.13,295.36,20.27 +shr,gmpz,2000,13,68197,9,292.93,286.17,19.93 +shr,auto,2000,77,84872,9,234.07,228.45,20.04 +shr,inplace,2000,77,49965,9,202.01,200.78,20.23 +shr,kernel,2000,77,38046,9,528.46,520.60,20.07 +shr,floor,2000,77,37199,9,539.36,534.00,20.05 +shr,gmp,2000,77,68275,9,297.50,293.43,20.31 +shr,gmpz,2000,77,68965,9,292.24,289.18,20.22 +mul,auto,1,1,1375743,9,14.97,14.73,18.88 +mul,gmp,1,1,5188973,9,3.82,3.75,19.71 +mul,gmpz,1,1,7125828,9,2.81,2.77,20.04 +mul,auto,2,2,1055281,9,18.99,18.64,20.12 +mul,kernel,2,2,3171133,9,6.42,6.16,20.23 +mul,floor,2,2,1287574,9,14.90,14.63,19.34 +mul,gmp,2,2,4697771,9,4.82,4.30,22.04 +mul,gmpz,2,2,3258111,9,6.36,6.04,20.79 +mul,auto,3,3,988646,9,20.14,19.60,19.90 +mul,kernel,3,3,2423377,9,8.25,8.17,20.12 +mul,floor,3,3,1221100,9,16.60,16.11,20.04 +mul,gmp,3,3,3307123,9,6.13,6.04,20.29 +mul,gmpz,3,3,2455626,9,9.12,8.56,22.15 +mul,auto,4,4,933994,9,21.34,20.99,19.97 +mul,kernel,4,4,1796677,9,11.27,11.10,20.28 +mul,floor,4,4,1169073,9,17.18,17.00,20.06 +mul,gmp,4,4,2406574,9,8.66,8.27,21.38 +mul,gmpz,4,4,1975308,9,11.64,10.25,22.70 +mul,auto,6,6,703773,9,28.36,27.79,19.90 +mul,kernel,6,6,1021710,9,19.48,18.96,19.84 +mul,floor,6,6,838967,9,24.51,24.09,20.91 +mul,gmp,6,6,1300311,9,15.07,14.75,19.61 +mul,gmpz,6,6,1047937,9,18.86,18.19,19.72 +mul,auto,8,8,559970,9,35.65,35.05,19.93 +mul,kernel,8,8,852707,9,23.47,22.83,20.08 +mul,floor,8,8,661186,9,30.63,30.33,20.62 +mul,gmp,8,8,867652,9,22.43,22.12,20.18 +mul,gmpz,8,8,758355,9,28.87,25.03,20.82 +mul,auto,12,12,371538,9,53.97,53.76,20.07 +mul,kernel,12,12,491021,9,40.81,40.70,20.07 +mul,floor,12,12,403983,9,49.48,49.00,19.97 +mul,gmp,12,12,451114,9,44.33,44.16,20.01 +mul,gmpz,12,12,427717,9,46.86,46.63,20.05 +mul,auto,16,16,242551,9,82.73,82.59,20.18 +mul,kernel,16,16,283475,9,69.78,69.61,19.81 +mul,floor,16,16,247362,9,79.87,78.40,19.73 +mul,gmp,16,16,250622,9,77.82,76.36,19.64 +mul,gmpz,16,16,249694,9,79.37,78.04,19.78 +mul,auto,32,32,70012,9,284.10,280.32,19.96 +mul,kernel,32,32,75434,9,260.43,258.93,19.68 +mul,floor,32,32,69707,9,287.42,284.60,20.01 +mul,gmp,32,32,71274,9,277.74,273.20,19.74 +mul,gmpz,32,32,72010,9,282.99,276.36,20.26 +mul,auto,64,64,19964,9,1019.47,1004.94,20.30 +mul,kernel,64,64,20134,9,1007.27,998.45,20.29 +mul,floor,64,64,18838,9,1053.00,1026.81,19.77 +mul,gmp,64,64,25018,9,782.96,776.83,19.79 +mul,gmpz,64,64,25283,9,793.69,788.36,20.15 +mul,auto,128,128,5560,9,3664.73,3614.85,20.37 +mul,kernel,128,128,5321,9,3672.22,3591.49,19.49 +mul,floor,128,128,5483,9,3615.84,3593.13,19.80 +mul,gmp,128,128,7597,9,2630.67,2619.94,20.02 +mul,gmpz,128,128,6650,9,3018.73,2997.53,20.15 +mul,auto,256,256,1638,9,11944.29,11790.93,19.56 +mul,kernel,256,256,1628,9,11885.11,11781.35,19.40 +mul,floor,256,256,1659,9,12010.00,11911.12,19.95 +mul,gmp,256,256,2527,9,7956.72,7885.98,20.13 +mul,gmpz,256,256,2484,9,8072.33,7878.89,19.99 +mul,auto,512,512,533,9,38102.56,37203.17,20.26 +mul,kernel,512,512,520,9,38723.00,37810.66,20.16 +mul,floor,512,512,518,9,38567.17,37891.09,20.01 +mul,gmp,512,512,1020,9,19634.64,19295.38,20.01 +mul,gmpz,512,512,1020,9,19477.82,19257.31,19.87 +mul,auto,1000,1000,178,9,112416.90,108287.92,19.93 +mul,kernel,1000,1000,177,9,110946.56,107622.18,19.65 +mul,floor,1000,1000,188,9,106761.09,106319.37,20.08 +mul,gmp,1000,1000,365,9,55691.10,54804.79,20.33 +mul,gmpz,1000,1000,352,9,56733.90,56067.12,20.08 +mul,auto,2000,2000,65,9,307447.43,304442.95,20.03 +mul,kernel,2000,2000,65,9,303373.08,301106.42,19.84 +mul,floor,2000,2000,66,9,307527.77,301585.86,20.31 +mul,gmp,2000,2000,135,9,151243.21,147708.33,20.37 +mul,gmpz,2000,2000,131,9,152498.73,149911.26,19.94 +mul,auto,2000,100,419,9,47704.46,46820.70,19.97 +mul,kernel,2000,100,417,9,47922.86,47369.30,20.00 +mul,floor,2000,100,409,9,47387.33,46800.63,19.46 +mul,gmp,2000,100,563,9,35729.20,35476.47,20.13 +mul,gmpz,2000,100,565,9,35357.60,35120.06,20.02 +sqr,auto,4,4,926814,9,22.02,21.82,19.82 +sqr,kernel,4,4,1679294,9,11.52,11.23,19.32 +sqr,floor,4,4,1217440,9,16.89,16.53,20.53 +sqr,gmp,4,4,2829008,9,7.14,7.02,20.19 +sqr,gmpz,4,4,2093417,9,9.93,9.54,20.78 +sqr,auto,16,16,263671,9,77.89,76.03,20.59 +sqr,kernel,16,16,297704,9,65.44,64.38,19.53 +sqr,floor,16,16,275484,9,73.81,73.09,20.39 +sqr,gmp,16,16,311183,9,63.96,62.25,19.84 +sqr,gmpz,16,16,291083,9,67.94,67.19,19.77 +sqr,auto,64,64,32696,9,613.37,609.26,20.09 +sqr,kernel,64,64,33595,9,595.31,583.78,19.96 +sqr,floor,64,64,32533,9,614.79,604.06,19.98 +sqr,gmp,64,64,29306,9,691.95,673.79,20.22 +sqr,gmpz,64,64,28424,9,693.29,674.72,19.64 +sqr,auto,512,512,798,9,24675.80,24236.16,19.71 +sqr,kernel,512,512,815,9,24353.94,24289.37,19.84 +sqr,floor,512,512,815,9,24445.04,24327.61,20.12 +sqr,gmp,512,512,1079,9,18348.24,18273.52,19.95 +sqr,gmpz,512,512,1013,9,19696.82,19558.12,19.95 +sqr,auto,2000,2000,90,9,225007.88,222518.99,20.24 +sqr,kernel,2000,2000,89,9,224024.82,222022.00,19.99 +sqr,floor,2000,2000,89,9,222369.38,221757.49,19.81 +sqr,gmp,2000,2000,167,9,120302.14,120082.59,20.09 +sqr,gmpz,2000,2000,168,9,120279.76,119522.07,20.20 +divrem,auto,2,1,648634,9,28.44,28.32,18.79 +divrem,kernel,2,1,3567204,9,5.70,5.68,20.34 +divrem,floor,2,1,1484320,9,13.54,13.43,20.26 +divrem,gmp,2,1,3942162,9,5.03,4.99,19.83 +divrem,gmpz,2,1,2305239,9,8.66,8.63,19.98 +divrem,auto,8,4,286522,9,70.65,69.62,20.26 +divrem,kernel,8,4,469366,9,41.08,40.38,19.37 +divrem,floor,8,4,355496,9,56.16,55.85,19.95 +divrem,gmp,8,4,501000,9,39.70,39.22,19.85 +divrem,gmpz,8,4,457204,9,44.06,43.27,20.14 +divrem,auto,32,16,46552,9,446.15,428.91,20.64 +divrem,kernel,32,16,49485,9,409.80,386.21,20.09 +divrem,floor,32,16,47458,9,419.36,407.10,19.91 +divrem,gmp,32,16,91604,9,213.67,210.36,19.61 +divrem,gmpz,32,16,94236,9,217.01,212.22,20.46 +divrem,auto,128,64,5378,9,3735.74,3598.60,20.03 +divrem,kernel,128,64,5388,9,3679.12,3554.87,19.71 +divrem,floor,128,64,5233,9,3735.99,3639.42,19.50 +divrem,gmp,128,64,10698,9,1812.18,1784.30,19.35 +divrem,gmpz,128,64,10958,9,1789.80,1774.35,19.68 +divrem,auto,512,256,673,9,29643.95,29596.83,20.01 +divrem,kernel,512,256,673,9,30141.84,29840.14,20.29 +divrem,floor,512,256,664,9,30695.09,29823.17,20.29 +divrem,gmp,512,256,1198,9,16883.49,16663.33,20.24 +divrem,gmpz,512,256,1179,9,16691.30,16501.06,19.71 +divrem,auto,2000,1000,85,9,240047.06,231665.19,20.27 +divrem,kernel,2000,1000,84,9,239125.50,231971.73,20.00 +divrem,floor,2000,1000,86,9,238120.16,232345.44,20.46 +divrem,gmp,2000,1000,137,9,143666.97,138032.85,19.61 +divrem,gmpz,2000,1000,139,9,143475.12,141506.29,19.91 +divrem,auto,4000,2000,28,9,720784.25,705409.21,20.15 +divrem,kernel,4000,2000,29,9,718774.41,702285.90,20.79 +divrem,floor,4000,2000,29,9,702472.72,689534.48,20.33 +divrem,gmp,4000,2000,59,9,353187.15,346123.58,20.76 +divrem,gmpz,4000,2000,57,9,354307.02,345883.77,20.12 +divrem,auto,2000,100,208,9,96839.34,93869.79,20.08 +divrem,kernel,2000,100,214,9,93540.30,93065.03,20.10 +divrem,floor,2000,100,214,9,93522.20,93225.08,20.01 +divrem,gmp,2000,100,278,9,71301.26,70160.97,19.80 +divrem,gmpz,2000,100,281,9,70747.33,69088.22,19.82 +divrem,auto,65536,1,86,9,230894.38,227541.66,19.94 +divrem,kernel,65536,1,88,9,229508.05,226364.59,20.94 +divrem,floor,65536,1,85,9,232107.85,224594.12,19.75 +divrem,gmp,65536,1,117,9,174600.79,169884.26,20.57 +divrem,gmpz,65536,1,117,9,175418.44,171574.79,20.96 +tochars,auto,1,10,3256201,9,6.14,6.06,19.94 +tochars,kernel,1,10,604910,9,34.34,33.10,20.75 +tochars,gmp,1,10,1163046,9,17.08,16.77,19.90 +tochars,gmpz,1,10,780314,9,25.96,25.75,20.28 +tochars,auto,4,10,250980,9,78.81,77.82,19.79 +tochars,kernel,4,10,194495,9,102.84,101.46,19.97 +tochars,gmp,4,10,275460,9,74.94,72.49,20.59 +tochars,gmpz,4,10,206336,9,95.41,94.30,19.70 +tochars,auto,16,10,24103,9,854.76,844.72,20.58 +tochars,kernel,16,10,26259,9,737.61,734.11,19.39 +tochars,gmp,16,10,40206,9,506.86,499.57,20.64 +tochars,gmpz,16,10,32826,9,612.34,588.38,20.04 +tochars,auto,64,10,4102,9,4876.23,4672.09,19.86 +tochars,kernel,64,10,4316,9,4633.19,4500.18,19.86 +tochars,gmp,64,10,6789,9,2909.35,2881.30,19.81 +tochars,gmpz,64,10,6091,9,3220.39,3139.93,19.65 +tochars,auto,256,10,573,9,34767.82,33770.58,19.85 +tochars,kernel,256,10,607,9,34454.76,33874.18,20.94 +tochars,gmp,256,10,1012,9,20065.34,19847.87,20.32 +tochars,gmpz,256,10,936,9,20915.69,20528.85,19.55 +tochars,auto,2000,10,29,9,695356.31,685107.76,20.16 +tochars,kernel,2000,10,30,9,689572.23,672838.90,20.68 +tochars,gmp,2000,10,49,9,414263.61,405369.90,20.29 +tochars,gmpz,2000,10,47,9,426385.64,417759.77,19.98 +tochars,auto,16,16,235154,9,84.20,82.87,19.85 +tochars,gmp,16,16,246536,9,81.25,79.07,20.05 +tochars,gmpz,16,16,122442,9,164.17,162.57,20.14 +tochars,auto,2000,16,2051,9,9609.78,9470.36,19.74 +tochars,gmp,2000,16,2134,9,9286.04,9120.33,19.74 +tochars,gmpz,2000,16,1128,9,17690.60,16720.52,19.71 +fromchars,auto,4,10,220512,9,93.03,90.14,20.41 +fromchars,kernel,4,10,602159,9,32.92,32.26,19.84 +fromchars,gmp,4,10,632712,9,31.75,30.60,20.15 +fromchars,gmpz,4,10,260896,9,77.38,75.31,20.19 +fromchars,auto,16,10,50980,9,392.42,388.38,19.98 +fromchars,kernel,16,10,102782,9,195.83,189.11,20.06 +fromchars,gmp,16,10,137376,9,145.75,143.88,20.04 +fromchars,gmpz,16,10,61230,9,323.37,319.00,19.84 +fromchars,auto,64,10,9070,9,2222.11,2195.94,20.17 +fromchars,kernel,64,10,10614,9,1885.60,1856.08,20.03 +fromchars,gmp,64,10,20901,9,959.73,952.40,20.04 +fromchars,gmpz,64,10,12444,9,1603.81,1590.57,19.95 +fromchars,auto,256,10,1451,9,13778.57,13717.26,19.98 +fromchars,kernel,256,10,1714,9,11528.42,11510.77,19.77 +fromchars,gmp,256,10,2494,9,8007.82,7962.53,19.98 +fromchars,gmpz,256,10,1906,9,10912.97,10810.14,20.89 +fromchars,auto,2000,10,67,9,301202.73,300334.58,20.26 +fromchars,kernel,2000,10,71,9,282581.58,281684.86,20.06 +fromchars,gmp,2000,10,108,9,184382.71,183391.98,19.90 +fromchars,gmpz,2000,10,99,9,203618.69,202350.60,20.13 diff --git a/tests/beman/big_int/perf/item1/macr3_new64a_seed2a.csv b/tests/beman/big_int/perf/item1/macr3_new64a_seed2a.csv new file mode 100644 index 00000000..8aaecceb --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_new64a_seed2a.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T18:04:58Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64a seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2643966,9,7.37,7.29,19.62 +add,inplace,1,1,2916936,9,3.21,3.10,19.02 +add,kernel,1,1,17203866,9,1.15,1.15,19.77 +add,floor,1,1,2005480,9,9.83,9.65,19.87 +add,gmp,1,1,13053229,9,1.53,1.49,19.95 +add,gmpz,1,1,6405958,9,3.09,3.05,20.30 +add,auto,2,2,1276192,9,15.82,15.37,20.23 +add,inplace,2,2,2548824,9,4.11,3.88,20.96 +add,kernel,2,2,13303546,9,1.43,1.41,19.01 +add,floor,2,2,2007628,9,10.09,9.73,20.12 +add,gmp,2,2,11210223,9,2.00,1.93,22.41 +add,gmpz,2,2,6683307,9,3.25,3.23,25.58 +add,auto,4,4,1381191,9,14.56,14.00,20.40 +add,inplace,4,4,2757731,9,3.48,3.44,19.31 +add,kernel,4,4,10019867,9,1.96,1.93,19.75 +add,floor,4,4,1892500,9,10.88,10.47,20.51 +add,gmp,4,4,11384394,9,1.77,1.75,20.38 +add,gmpz,4,4,3649714,9,6.04,5.30,20.98 +add,auto,8,8,1278917,9,15.65,15.45,20.05 +add,inplace,8,8,2510817,9,3.97,3.90,19.97 +add,kernel,8,8,5634981,9,3.49,3.48,19.70 +add,floor,8,8,1705858,9,11.97,11.75,20.53 +add,gmp,8,8,8940933,9,2.23,2.23,19.98 +add,gmpz,8,8,4384673,9,4.89,4.83,21.53 +add,auto,16,16,1164743,9,16.94,16.89,19.78 +add,inplace,16,16,1779265,9,5.72,5.62,20.35 +add,kernel,16,16,2654108,9,7.55,7.52,20.03 +add,floor,16,16,1375616,9,13.94,13.88,19.48 +add,gmp,16,16,6127513,9,3.26,3.23,19.97 +add,gmpz,16,16,4469310,9,4.49,4.47,20.07 +add,auto,64,64,524311,9,38.05,37.86,19.94 +add,inplace,64,64,498039,9,19.96,19.74,19.87 +add,kernel,64,64,402715,9,49.61,47.91,19.77 +add,floor,64,64,327241,9,60.87,60.29,19.91 +add,gmp,64,64,1795682,9,11.12,11.03,19.95 +add,gmpz,64,64,1548031,9,12.98,12.94,20.10 +add,auto,256,256,182620,9,109.36,108.88,19.97 +add,inplace,256,256,100703,9,101.29,98.52,20.33 +add,kernel,256,256,84119,9,236.89,232.83,19.86 +add,floor,256,256,79824,9,249.16,241.58,19.77 +add,gmp,256,256,351117,9,57.12,57.04,20.07 +add,gmpz,256,256,342664,9,58.01,57.34,19.87 +add,auto,1024,1024,44175,9,453.04,444.90,20.09 +add,inplace,1024,1024,22904,9,438.95,432.19,20.10 +add,kernel,1024,1024,20605,9,982.89,958.28,20.16 +add,floor,1024,1024,20083,9,997.93,967.34,20.00 +add,gmp,1024,1024,79239,9,252.62,250.51,20.03 +add,gmpz,1024,1024,80225,9,252.57,248.39,20.19 +add,auto,2000,2000,23569,9,908.38,861.33,21.26 +add,inplace,2000,2000,11583,9,861.96,827.75,19.82 +add,kernel,2000,2000,10175,9,1991.98,1871.95,20.02 +add,floor,2000,2000,10199,9,1963.51,1920.69,19.95 +add,gmp,2000,2000,40305,9,495.01,487.76,19.93 +add,gmpz,2000,2000,40152,9,497.21,488.73,19.91 +add,auto,1024,1,206429,9,110.22,104.47,21.38 +add,inplace,1024,1,3366677,9,2.98,2.97,20.06 +add,kernel,1024,1,26864,9,744.74,730.14,19.98 +add,floor,1024,1,26030,9,780.27,727.23,20.15 +add,gmp,1024,1,75454,9,263.91,262.31,20.10 +add,gmpz,1024,1,75953,9,266.63,263.68,20.22 +sub,auto,1,1,2587227,9,7.57,7.44,19.62 +sub,inplace,1,1,2980374,9,3.61,3.35,21.13 +sub,kernel,1,1,19127433,9,1.05,1.05,20.06 +sub,floor,1,1,11459126,9,1.74,1.74,19.99 +sub,gmp,1,1,13194933,9,1.49,1.48,19.67 +sub,gmpz,1,1,7958748,9,2.49,2.48,19.90 +sub,auto,2,2,1384251,9,14.89,13.97,20.48 +sub,inplace,2,2,2837731,9,3.49,3.48,19.80 +sub,kernel,2,2,14127808,9,1.42,1.42,20.05 +sub,floor,2,2,2162899,9,9.49,9.43,20.69 +sub,gmp,2,2,11386299,9,1.97,1.74,21.13 +sub,gmpz,2,2,6653127,9,2.99,2.97,19.89 +sub,auto,4,4,1302229,9,16.67,15.87,21.65 +sub,inplace,4,4,2822251,9,3.48,3.48,19.81 +sub,kernel,4,4,10232063,9,1.95,1.94,19.98 +sub,floor,4,4,1953513,9,9.99,9.95,19.75 +sub,gmp,4,4,11470702,9,1.74,1.74,20.00 +sub,gmpz,4,4,7270894,9,2.74,2.74,19.94 +sub,auto,8,8,1260211,9,15.57,15.47,19.91 +sub,inplace,8,8,2417284,9,4.12,4.11,20.03 +sub,kernel,8,8,5677095,9,3.51,3.49,19.96 +sub,floor,8,8,1708570,9,11.44,11.40,19.73 +sub,gmp,8,8,8953540,9,2.24,2.24,20.11 +sub,gmpz,8,8,6171929,9,3.24,3.22,20.02 +sub,auto,16,16,1104386,9,17.84,17.15,19.71 +sub,inplace,16,16,1906056,9,5.26,5.24,20.18 +sub,kernel,16,16,2577865,9,7.75,7.70,19.98 +sub,floor,16,16,1289747,9,15.64,15.21,20.05 +sub,gmp,16,16,6506621,9,3.21,3.02,20.62 +sub,gmpz,16,16,4699847,9,4.25,4.24,19.99 +sub,auto,64,64,560276,9,35.95,35.80,20.14 +sub,inplace,64,64,501577,9,20.06,19.97,20.12 +sub,kernel,64,64,413216,9,49.46,48.53,20.44 +sub,floor,64,64,331037,9,60.42,59.78,19.97 +sub,gmp,64,64,1725703,9,11.63,11.46,20.06 +sub,gmpz,64,64,1446890,9,14.10,13.91,20.38 +sub,auto,256,256,180050,9,111.41,110.13,20.04 +sub,inplace,256,256,98266,9,101.32,97.69,19.76 +sub,kernel,256,256,85215,9,243.77,238.03,20.64 +sub,floor,256,256,78181,9,254.43,239.66,19.62 +sub,gmp,256,256,348288,9,57.33,56.72,19.97 +sub,gmpz,256,256,344094,9,58.08,56.45,19.91 +sub,auto,1024,1024,43880,9,454.63,441.27,19.77 +sub,inplace,1024,1024,22856,9,438.00,425.65,19.92 +sub,kernel,1024,1024,20462,9,983.92,952.17,20.06 +sub,floor,1024,1024,20192,9,992.58,963.83,19.96 +sub,gmp,1024,1024,79037,9,252.24,246.06,19.97 +sub,gmpz,1024,1024,78796,9,254.88,251.61,20.04 +sub,auto,2000,2000,22510,9,897.78,870.99,20.15 +sub,inplace,2000,2000,11448,9,860.12,839.89,19.62 +sub,kernel,2000,2000,10248,9,1931.67,1865.91,19.64 +sub,floor,2000,2000,10607,9,1997.08,1937.18,21.09 +sub,gmp,2000,2000,40214,9,497.10,491.28,19.95 +sub,gmpz,2000,2000,40833,9,497.97,489.65,20.27 +sub,auto,1024,1,195213,9,106.08,99.42,20.93 +sub,inplace,1024,1,3349816,9,2.99,2.98,20.05 +sub,kernel,1024,1,26509,9,744.98,725.02,19.64 +sub,floor,1024,1,26368,9,760.35,744.11,19.95 +sub,gmp,1024,1,75690,9,264.21,253.01,19.89 +sub,gmpz,1024,1,76233,9,267.02,264.50,20.34 +shl,auto,1,13,1608817,9,12.22,12.06,19.63 +shl,inplace,1,13,3710200,9,2.50,2.48,18.79 +shl,kernel,1,13,8916878,9,2.24,2.23,19.98 +shl,kernelip,1,13,8912019,9,1.78,1.12,23.04 +shl,floor,1,13,1953620,9,11.23,10.78,21.95 +shl,gmp,1,13,15988640,9,1.25,1.24,20.02 +shl,gmpz,1,13,10056109,9,2.00,1.99,20.15 +shl,auto,4,13,1541816,9,13.12,12.74,20.17 +shl,inplace,4,13,2648142,9,3.85,3.72,20.54 +shl,kernel,4,13,5341963,9,3.73,3.72,20.00 +shl,kernelip,4,13,2953782,9,3.42,3.33,20.27 +shl,floor,4,13,1542162,9,12.84,12.67,19.82 +shl,gmp,4,13,10023994,9,2.00,1.98,20.42 +shl,gmpz,4,13,7231121,9,2.75,2.73,19.86 +shl,auto,16,13,1212018,9,15.85,15.34,19.18 +shl,inplace,16,13,1871704,9,5.30,5.28,19.93 +shl,kernel,16,13,4909926,9,4.07,4.06,20.02 +shl,kernelip,16,13,1343369,9,6.85,6.78,18.40 +shl,floor,16,13,1602334,9,12.45,12.22,19.88 +shl,gmp,16,13,5732114,9,3.48,3.48,19.99 +shl,gmpz,16,13,3830383,9,5.16,5.10,19.74 +shl,auto,256,13,456491,9,41.45,41.28,18.98 +shl,inplace,256,13,334478,9,29.94,29.86,20.05 +shl,kernel,256,13,405593,9,49.18,49.10,19.97 +shl,kernelip,256,13,203515,9,48.82,48.34,19.88 +shl,floor,256,13,349584,9,57.44,57.21,20.10 +shl,gmp,256,13,540572,9,36.97,36.83,20.00 +shl,gmpz,256,13,522223,9,37.97,37.73,19.90 +shl,auto,2000,13,85874,9,251.12,227.75,20.93 +shl,inplace,2000,13,51275,9,196.12,195.59,20.17 +shl,kernel,2000,13,51972,9,384.21,382.22,19.99 +shl,kernelip,2000,13,26482,9,377.40,374.70,19.98 +shl,floor,2000,13,49434,9,412.77,402.77,20.31 +shl,gmp,2000,13,42058,9,1656.51,553.43,64.30 +shl,gmpz,2000,13,9742,9,2657.95,2053.60,22.74 +shl,auto,2000,77,68297,9,496.30,293.27,30.07 +shl,inplace,2000,77,43008,9,229.65,227.98,19.74 +shl,kernel,2000,77,37745,9,524.59,521.99,19.82 +shl,kernelip,2000,77,19370,9,521.90,510.90,20.17 +shl,floor,2000,77,36923,9,541.74,539.93,20.01 +shl,gmp,2000,77,68723,9,294.57,289.28,20.45 +shl,gmpz,2000,77,69403,9,289.98,287.32,20.25 +shr,auto,1,13,2864652,9,6.87,6.67,19.68 +shr,inplace,1,13,3670740,9,3.31,2.98,23.57 +shr,kernel,1,13,8868306,9,2.25,2.24,19.93 +shr,floor,1,13,8123490,9,2.50,2.49,19.91 +shr,gmp,1,13,20000001,9,1.00,0.99,20.01 +shr,gmpz,1,13,10044900,9,1.99,1.99,20.03 +shr,auto,4,13,1388406,9,14.26,13.84,19.75 +shr,inplace,4,13,2637483,9,3.66,3.57,19.57 +shr,kernel,4,13,5309020,9,3.77,3.74,20.22 +shr,floor,4,13,1669006,9,12.06,11.69,20.06 +shr,gmp,4,13,11357771,9,1.74,1.74,19.82 +shr,gmpz,4,13,7267340,9,2.74,2.74,19.92 +shr,auto,16,13,1095740,9,18.46,18.21,20.32 +shr,inplace,16,13,1921047,9,5.25,5.19,20.13 +shr,kernel,16,13,4779312,9,4.17,4.17,19.96 +shr,floor,16,13,1576078,9,12.95,12.92,20.57 +shr,gmp,16,13,6169024,9,3.24,3.24,20.06 +shr,gmpz,16,13,4672898,9,4.26,4.23,20.08 +shr,auto,256,13,453951,9,43.09,42.55,19.70 +shr,inplace,256,13,330437,9,30.38,30.28,20.09 +shr,kernel,256,13,299256,9,66.92,66.58,20.02 +shr,floor,256,13,264492,9,75.61,75.01,19.99 +shr,gmp,256,13,542005,9,36.87,36.68,19.97 +shr,gmpz,256,13,518971,9,38.16,38.02,19.88 +shr,auto,2000,13,87077,9,274.36,250.70,22.47 +shr,inplace,2000,13,50680,9,196.50,196.02,19.92 +shr,kernel,2000,13,39119,9,512.01,509.29,20.02 +shr,floor,2000,13,37963,9,525.64,523.66,19.97 +shr,gmp,2000,13,68778,9,306.54,291.70,19.73 +shr,gmpz,2000,13,64141,9,320.28,297.65,20.91 +shr,auto,2000,77,87086,9,268.41,236.88,22.55 +shr,inplace,2000,77,50850,9,196.55,195.49,19.96 +shr,kernel,2000,77,38605,9,517.82,516.87,20.01 +shr,floor,2000,77,38033,9,527.87,520.98,20.05 +shr,gmp,2000,77,69350,9,296.83,291.01,20.61 +shr,gmpz,2000,77,69241,9,288.48,286.10,20.05 +mul,auto,1,1,1395631,9,14.85,14.05,20.47 +mul,gmp,1,1,5346068,9,3.74,3.72,19.98 +mul,gmpz,1,1,7287115,9,2.75,2.74,20.18 +mul,auto,2,2,1084764,9,18.66,18.36,20.28 +mul,kernel,2,2,3237307,9,6.40,6.31,20.67 +mul,floor,2,2,1346610,9,14.94,14.67,20.02 +mul,gmp,2,2,4190304,9,4.74,4.71,19.84 +mul,gmpz,2,2,2917102,9,6.81,6.75,19.92 +mul,auto,3,3,1021662,9,20.14,19.54,20.60 +mul,kernel,3,3,2439269,9,8.21,7.98,19.86 +mul,floor,3,3,1176189,9,17.89,16.71,20.66 +mul,gmp,3,3,3178912,9,6.24,6.23,19.84 +mul,gmpz,3,3,2271099,9,9.01,8.55,20.55 +mul,auto,4,4,941244,9,21.22,21.00,20.05 +mul,kernel,4,4,1782171,9,11.16,11.02,19.86 +mul,floor,4,4,1194911,9,16.75,16.68,20.03 +mul,gmp,4,4,2445031,9,8.16,8.10,20.46 +mul,gmpz,4,4,1852659,9,10.67,9.76,19.73 +mul,auto,6,6,734042,9,26.92,26.74,19.81 +mul,kernel,6,6,1030883,9,19.38,19.28,20.00 +mul,floor,6,6,834578,9,24.56,24.13,20.52 +mul,gmp,6,6,1291542,9,15.40,14.73,19.84 +mul,gmpz,6,6,1056563,9,17.52,17.47,18.67 +mul,auto,8,8,570515,9,34.76,34.65,19.89 +mul,kernel,8,8,867957,9,23.02,22.93,20.18 +mul,floor,8,8,644248,9,30.67,30.40,19.76 +mul,gmp,8,8,810642,9,24.93,22.94,19.93 +mul,gmpz,8,8,814453,9,24.62,24.45,20.56 +mul,auto,12,12,370780,9,54.14,53.86,20.08 +mul,kernel,12,12,483524,9,41.46,41.33,20.05 +mul,floor,12,12,402815,9,49.63,49.22,20.02 +mul,gmp,12,12,448952,9,44.39,44.21,19.92 +mul,gmpz,12,12,424804,9,46.78,46.65,19.95 +mul,auto,16,16,239561,9,82.61,82.15,19.84 +mul,kernel,16,16,283623,9,69.51,69.16,19.74 +mul,floor,16,16,254257,9,78.78,78.31,20.02 +mul,gmp,16,16,258696,9,77.55,77.27,20.07 +mul,gmpz,16,16,252553,9,79.18,79.02,20.02 +mul,auto,32,32,71188,9,281.51,280.33,20.08 +mul,kernel,32,32,77211,9,260.10,259.76,20.10 +mul,floor,32,32,71545,9,280.53,279.53,20.42 +mul,gmp,32,32,77515,9,258.52,257.93,20.04 +mul,gmpz,32,32,76326,9,260.96,260.50,19.94 +mul,auto,64,64,19860,9,1009.37,1004.33,20.03 +mul,kernel,64,64,20246,9,986.25,982.66,19.99 +mul,floor,64,64,19679,9,1014.23,1008.28,19.94 +mul,gmp,64,64,25535,9,775.39,770.50,19.81 +mul,gmpz,64,64,25650,9,778.73,776.07,20.06 +mul,auto,128,128,5579,9,3591.68,3579.49,20.06 +mul,kernel,128,128,5456,9,3597.11,3585.23,19.65 +mul,floor,128,128,5549,9,3611.62,3599.07,20.09 +mul,gmp,128,128,7533,9,2670.32,2641.93,20.08 +mul,gmpz,128,128,7530,9,2666.73,2640.43,20.06 +mul,auto,256,256,1689,9,11792.78,11753.11,19.92 +mul,kernel,256,256,1698,9,11803.37,11762.66,20.04 +mul,floor,256,256,1657,9,11857.75,11784.55,19.67 +mul,gmp,256,256,2548,9,7848.39,7812.55,20.00 +mul,gmpz,256,256,2555,9,7862.46,7821.38,20.10 +mul,auto,512,512,540,9,36957.87,36817.82,19.98 +mul,kernel,512,512,540,9,37091.67,36888.66,20.05 +mul,floor,512,512,541,9,37139.87,36979.51,20.10 +mul,gmp,512,512,1048,9,19085.96,19027.19,20.01 +mul,gmpz,512,512,1034,9,19278.73,19017.93,19.88 +mul,auto,1000,1000,184,9,107241.40,106777.85,19.74 +mul,kernel,1000,1000,189,9,106972.66,106805.11,20.24 +mul,floor,1000,1000,187,9,107481.73,106966.13,20.08 +mul,gmp,1000,1000,365,9,55352.51,55192.35,20.23 +mul,gmpz,1000,1000,362,9,55384.09,55140.19,20.03 +mul,auto,2000,2000,66,9,302117.42,300602.91,20.02 +mul,kernel,2000,2000,66,9,303398.36,302782.83,20.05 +mul,floor,2000,2000,67,9,302837.07,300110.07,20.30 +mul,gmp,2000,2000,135,9,149224.69,149152.78,20.18 +mul,gmpz,2000,2000,134,9,149412.00,148604.16,20.02 +mul,auto,2000,100,427,9,46529.57,46442.43,19.89 +mul,kernel,2000,100,427,9,46744.93,46531.62,19.99 +mul,floor,2000,100,423,9,47080.87,46689.82,19.95 +mul,gmp,2000,100,568,9,35282.94,35108.86,20.03 +mul,gmpz,2000,100,569,9,34934.75,34831.58,19.88 +sqr,auto,4,4,927023,9,21.87,21.53,20.26 +sqr,kernel,4,4,1761921,9,11.27,11.24,19.88 +sqr,floor,4,4,1204969,9,16.70,16.26,20.90 +sqr,gmp,4,4,2932509,9,6.99,6.95,20.51 +sqr,gmpz,4,4,2102463,9,9.69,9.69,20.40 +sqr,auto,16,16,266514,9,75.06,74.67,20.00 +sqr,kernel,16,16,313195,9,63.93,63.68,20.02 +sqr,floor,16,16,278337,9,72.35,72.25,20.16 +sqr,gmp,16,16,317523,9,62.78,62.06,19.96 +sqr,gmpz,16,16,304594,9,65.88,64.37,20.02 +sqr,auto,64,64,33168,9,600.69,599.62,19.97 +sqr,kernel,64,64,34411,9,581.93,580.55,20.03 +sqr,floor,64,64,33161,9,600.71,599.46,19.97 +sqr,gmp,64,64,29683,9,671.58,666.31,19.96 +sqr,gmpz,64,64,29901,9,676.07,650.69,20.06 +sqr,auto,512,512,819,9,24474.77,24405.68,20.04 +sqr,kernel,512,512,817,9,24537.79,24405.34,20.04 +sqr,floor,512,512,811,9,24447.70,24364.57,19.83 +sqr,gmp,512,512,1121,9,18419.01,18196.63,20.59 +sqr,gmpz,512,512,1010,9,19691.17,19482.14,19.86 +sqr,auto,2000,2000,90,9,225002.31,224449.07,20.27 +sqr,kernel,2000,2000,90,9,223557.87,222279.17,20.15 +sqr,floor,2000,2000,90,9,223775.47,222531.02,20.16 +sqr,gmp,2000,2000,166,9,120807.48,118911.40,20.04 +sqr,gmpz,2000,2000,166,9,120966.61,119929.47,20.08 +divrem,auto,2,1,924135,9,21.47,21.32,19.87 +divrem,kernel,2,1,3148248,9,6.36,6.29,20.13 +divrem,floor,2,1,1449091,9,14.24,13.69,20.62 +divrem,gmp,2,1,3983749,9,5.03,5.02,20.06 +divrem,gmpz,2,1,2297393,9,8.75,8.69,20.09 +divrem,auto,8,4,251093,9,79.73,79.05,20.04 +divrem,kernel,8,4,387809,9,51.43,50.64,20.07 +divrem,floor,8,4,307403,9,65.29,64.96,20.07 +divrem,gmp,8,4,479811,9,41.86,41.20,20.04 +divrem,gmpz,8,4,447859,9,44.38,44.07,19.87 +divrem,auto,32,16,46419,9,435.48,425.42,20.11 +divrem,kernel,32,16,49996,9,400.93,379.75,19.82 +divrem,floor,32,16,48214,9,414.29,395.41,19.82 +divrem,gmp,32,16,97156,9,207.57,204.90,20.11 +divrem,gmpz,32,16,95710,9,208.89,204.33,19.94 +divrem,auto,128,64,5398,9,3735.41,3624.27,20.07 +divrem,kernel,128,64,5579,9,3642.58,3569.80,20.25 +divrem,floor,128,64,5438,9,3668.63,3596.10,19.85 +divrem,gmp,128,64,11252,9,1774.01,1764.62,19.97 +divrem,gmpz,128,64,11274,9,1775.96,1763.41,20.02 +divrem,auto,512,256,729,9,27538.81,27238.68,20.09 +divrem,kernel,512,256,731,9,27333.50,26982.27,19.94 +divrem,floor,512,256,730,9,27401.20,27266.95,20.01 +divrem,gmp,512,256,1210,9,16508.75,16454.03,19.97 +divrem,gmpz,512,256,1208,9,16548.15,16500.86,20.00 +divrem,auto,2000,1000,86,9,233746.13,232938.47,20.09 +divrem,kernel,2000,1000,86,9,232952.52,231691.86,20.04 +divrem,floor,2000,1000,86,9,232828.49,231108.53,20.10 +divrem,gmp,2000,1000,148,9,136662.45,135908.78,20.23 +divrem,gmpz,2000,1000,147,9,135930.56,134989.80,19.98 +divrem,auto,4000,2000,29,9,691307.45,688517.24,20.09 +divrem,kernel,4000,2000,30,9,689419.43,686162.50,20.68 +divrem,floor,4000,2000,30,9,693409.73,687466.67,20.76 +divrem,gmp,4000,2000,58,9,342773.71,341159.48,19.88 +divrem,gmpz,4000,2000,59,9,345980.22,343030.37,20.39 +divrem,auto,2000,100,211,9,95527.45,94669.43,20.12 +divrem,kernel,2000,100,212,9,95052.08,94014.74,20.29 +divrem,floor,2000,100,212,9,94602.79,94292.06,20.08 +divrem,gmp,2000,100,290,9,68969.25,68545.55,19.99 +divrem,gmpz,2000,100,290,9,68967.24,68589.37,20.02 +divrem,auto,65536,1,86,9,231581.40,226348.35,19.89 +divrem,kernel,65536,1,87,9,232486.59,230213.11,20.25 +divrem,floor,65536,1,86,9,245740.31,231500.48,21.12 +divrem,gmp,65536,1,114,9,169774.85,166908.62,19.38 +divrem,gmpz,65536,1,117,9,172501.43,171486.47,20.18 +tochars,auto,1,10,3321308,9,6.02,5.99,19.99 +tochars,kernel,1,10,571752,9,34.86,34.17,19.86 +tochars,gmp,1,10,1237706,9,16.18,16.07,20.27 +tochars,gmpz,1,10,820017,9,24.16,24.06,19.86 +tochars,auto,4,10,218309,9,91.90,91.17,20.32 +tochars,kernel,4,10,187774,9,103.44,98.77,19.35 +tochars,gmp,4,10,260237,9,77.10,76.52,20.07 +tochars,gmpz,4,10,202796,9,97.26,96.34,19.71 +tochars,auto,16,10,23704,9,855.34,848.08,20.33 +tochars,kernel,16,10,27437,9,749.61,738.00,20.51 +tochars,gmp,16,10,39292,9,512.13,504.35,20.11 +tochars,gmpz,16,10,32856,9,605.19,589.17,19.84 +tochars,auto,64,10,4210,9,4711.69,4659.02,19.86 +tochars,kernel,64,10,4381,9,4532.50,4426.01,19.78 +tochars,gmp,64,10,7079,9,2844.75,2799.72,20.10 +tochars,gmpz,64,10,6312,9,3158.59,3108.97,19.93 +tochars,auto,256,10,592,9,33929.97,33171.73,20.04 +tochars,kernel,256,10,606,9,32866.61,32262.10,19.85 +tochars,gmp,256,10,1051,9,18996.91,18671.62,19.95 +tochars,gmpz,256,10,972,9,20427.38,20026.11,19.84 +tochars,auto,2000,10,30,9,677865.30,671250.00,20.32 +tochars,kernel,2000,10,30,9,667761.13,663175.00,20.01 +tochars,gmp,2000,10,50,9,402904.16,401577.50,20.19 +tochars,gmpz,2000,10,49,9,415471.10,413571.43,20.39 +tochars,auto,16,16,234297,9,82.29,81.67,19.54 +tochars,gmp,16,16,250657,9,81.28,78.40,20.33 +tochars,gmpz,16,16,125878,9,158.82,156.94,19.96 +tochars,auto,2000,16,2112,9,9476.78,9429.63,20.26 +tochars,gmp,2000,16,2213,9,9020.41,8883.36,19.88 +tochars,gmpz,2000,16,1216,9,16868.52,16506.65,20.46 +fromchars,auto,4,10,222149,9,91.36,90.39,20.28 +fromchars,kernel,4,10,614485,9,32.62,32.32,20.12 +fromchars,gmp,4,10,629697,9,32.40,31.21,20.38 +fromchars,gmpz,4,10,261266,9,74.22,74.07,19.48 +fromchars,auto,16,10,51212,9,402.89,398.18,20.60 +fromchars,kernel,16,10,105533,9,193.33,190.09,20.35 +fromchars,gmp,16,10,144159,9,141.38,140.29,20.47 +fromchars,gmpz,16,10,62819,9,319.43,317.89,20.10 +fromchars,auto,64,10,9135,9,2181.01,2150.60,19.91 +fromchars,kernel,64,10,10865,9,1857.15,1818.19,20.12 +fromchars,gmp,64,10,21017,9,952.92,944.83,20.03 +fromchars,gmpz,64,10,12445,9,1609.16,1599.55,20.01 +fromchars,auto,256,10,1443,9,13821.29,13762.30,20.04 +fromchars,kernel,256,10,1731,9,11592.67,11532.28,20.05 +fromchars,gmp,256,10,2517,9,8011.59,7954.81,20.16 +fromchars,gmpz,256,10,1889,9,10543.43,10500.18,20.30 +fromchars,auto,2000,10,67,9,301569.03,300481.97,20.23 +fromchars,kernel,2000,10,71,9,283669.01,282501.18,20.14 +fromchars,gmp,2000,10,109,9,184273.31,183151.38,20.06 +fromchars,gmpz,2000,10,99,9,203138.46,202977.69,20.18 diff --git a/tests/beman/big_int/perf/item1/macr3_new64a_seed2b.csv b/tests/beman/big_int/perf/item1/macr3_new64a_seed2b.csv new file mode 100644 index 00000000..ba675b63 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr3_new64a_seed2b.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T18:09:53Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64a seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2648971,9,7.46,7.14,19.75 +add,inplace,1,1,2991110,9,3.37,3.26,20.31 +add,kernel,1,1,17391561,9,1.15,1.14,19.94 +add,floor,1,1,2056277,9,9.38,9.21,19.48 +add,gmp,1,1,13250702,9,1.50,1.49,19.85 +add,gmpz,1,1,6702348,9,3.02,2.97,20.16 +add,auto,2,2,1267786,9,15.03,14.94,19.40 +add,inplace,2,2,2592620,9,3.86,3.84,20.07 +add,kernel,2,2,14018926,9,1.42,1.41,19.84 +add,floor,2,2,1985915,9,9.68,9.43,19.37 +add,gmp,2,2,11387299,9,1.96,1.74,21.18 +add,gmpz,2,2,6047827,9,3.33,2.99,23.71 +add,auto,4,4,1399555,9,14.11,14.03,19.84 +add,inplace,4,4,2798064,9,3.53,3.35,19.56 +add,kernel,4,4,10363036,9,1.93,1.92,19.97 +add,floor,4,4,1964039,9,10.23,10.18,20.30 +add,gmp,4,4,11413468,9,1.74,1.74,19.87 +add,gmpz,4,4,5484983,9,3.67,3.50,19.53 +add,auto,8,8,1299595,9,15.51,15.02,20.12 +add,inplace,8,8,2423204,9,4.13,4.12,20.07 +add,kernel,8,8,5755406,9,3.50,3.47,20.14 +add,floor,8,8,1705635,9,11.88,11.70,20.34 +add,gmp,8,8,8914787,9,2.24,2.24,20.15 +add,gmpz,8,8,4703930,9,4.61,4.09,21.62 +add,auto,16,16,1118917,9,17.20,16.82,19.25 +add,inplace,16,16,1769809,9,5.66,5.62,20.08 +add,kernel,16,16,2633126,9,7.57,7.55,19.95 +add,floor,16,16,1389082,9,14.30,14.17,20.00 +add,gmp,16,16,6122678,9,3.24,3.22,19.90 +add,gmpz,16,16,4459329,9,4.50,4.49,20.18 +add,auto,64,64,502315,9,38.17,38.03,19.31 +add,inplace,64,64,499107,9,20.01,19.94,19.98 +add,kernel,64,64,400443,9,49.58,48.46,19.74 +add,floor,64,64,326347,9,60.77,60.03,19.82 +add,gmp,64,64,1794629,9,11.17,11.12,20.05 +add,gmpz,64,64,1489361,9,13.44,13.24,20.00 +add,auto,256,256,182604,9,109.79,107.61,19.96 +add,inplace,256,256,98258,9,101.41,99.40,19.90 +add,kernel,256,256,85950,9,238.17,233.47,20.42 +add,floor,256,256,79514,9,245.59,238.29,19.55 +add,gmp,256,256,349021,9,57.30,56.56,19.95 +add,gmpz,256,256,345086,9,57.95,57.51,20.00 +add,auto,1024,1024,43878,9,452.32,439.73,19.76 +add,inplace,1024,1024,22862,9,435.37,425.25,19.80 +add,kernel,1024,1024,20820,9,993.18,964.50,20.73 +add,floor,1024,1024,20069,9,987.15,963.38,19.72 +add,gmp,1024,1024,79155,9,251.76,248.45,19.88 +add,gmpz,1024,1024,79268,9,253.66,250.92,20.08 +add,auto,2000,2000,22555,9,885.66,861.10,19.96 +add,inplace,2000,2000,11818,9,859.07,836.59,20.30 +add,kernel,2000,2000,10233,9,1935.02,1924.50,20.05 +add,floor,2000,2000,10240,9,1957.05,1920.19,20.11 +add,gmp,2000,2000,39701,9,495.63,492.53,19.69 +add,gmpz,2000,2000,40113,9,497.84,486.50,19.89 +add,auto,1024,1,213993,9,118.43,102.43,24.84 +add,inplace,1024,1,3344512,9,2.98,2.97,20.01 +add,kernel,1024,1,26943,9,749.85,717.16,20.02 +add,floor,1024,1,26662,9,765.81,731.67,20.34 +add,gmp,1024,1,74732,9,265.09,260.71,19.76 +add,gmpz,1024,1,74908,9,266.92,260.84,19.92 +sub,auto,1,1,2729844,9,8.20,7.23,19.86 +sub,inplace,1,1,2879220,9,3.49,3.47,20.28 +sub,kernel,1,1,19080276,9,1.05,1.04,19.99 +sub,floor,1,1,11500473,9,1.74,1.74,20.06 +sub,gmp,1,1,13441457,9,1.50,1.49,20.12 +sub,gmpz,1,1,8019305,9,2.52,2.49,20.19 +sub,auto,2,2,1372382,9,14.43,14.03,19.73 +sub,inplace,2,2,2868495,9,3.48,3.48,20.01 +sub,kernel,2,2,14100811,9,1.42,1.42,20.11 +sub,floor,2,2,2102632,9,9.69,9.44,20.47 +sub,gmp,2,2,9674181,9,1.99,1.98,19.26 +sub,gmpz,2,2,6695379,9,2.99,2.98,20.05 +sub,auto,4,4,1364912,9,14.61,14.26,19.81 +sub,inplace,4,4,2768387,9,3.50,3.48,19.59 +sub,kernel,4,4,10259235,9,1.95,1.94,20.00 +sub,floor,4,4,1962867,9,10.20,9.92,20.15 +sub,gmp,4,4,11449204,9,1.74,1.74,19.97 +sub,gmpz,4,4,7290063,9,2.74,2.73,19.98 +sub,auto,8,8,1292236,9,15.50,15.31,20.08 +sub,inplace,8,8,2456228,9,4.11,4.04,20.16 +sub,kernel,8,8,5660673,9,3.50,3.48,19.83 +sub,floor,8,8,1740142,9,11.44,11.20,19.92 +sub,gmp,8,8,8928617,9,2.24,2.24,20.00 +sub,gmpz,8,8,6160375,9,3.24,3.23,19.98 +sub,auto,16,16,1124822,9,17.56,17.15,19.69 +sub,inplace,16,16,1919852,9,5.29,5.23,20.26 +sub,kernel,16,16,2602047,9,7.72,7.68,20.08 +sub,floor,16,16,1317110,9,16.15,15.10,20.82 +sub,gmp,16,16,6183226,9,3.24,3.22,20.06 +sub,gmpz,16,16,4484875,9,4.23,4.22,18.99 +sub,auto,64,64,528168,9,37.51,35.90,19.66 +sub,inplace,64,64,493896,9,19.90,19.72,19.76 +sub,kernel,64,64,405842,9,50.09,49.89,20.38 +sub,floor,64,64,334213,9,59.96,59.35,20.03 +sub,gmp,64,64,1794064,9,11.15,11.10,20.03 +sub,gmpz,64,64,1496244,9,13.47,13.37,20.13 +sub,auto,256,256,179560,9,110.67,109.32,19.85 +sub,inplace,256,256,98600,9,101.33,98.51,19.89 +sub,kernel,256,256,83527,9,237.91,233.71,19.81 +sub,floor,256,256,80424,9,249.33,247.36,20.04 +sub,gmp,256,256,352627,9,56.92,56.02,20.07 +sub,gmpz,256,256,347660,9,57.46,56.76,19.96 +sub,auto,1024,1024,45429,9,455.42,440.90,20.50 +sub,inplace,1024,1024,22788,9,437.50,434.07,19.93 +sub,kernel,1024,1024,20532,9,979.70,950.80,20.08 +sub,floor,1024,1024,20773,9,994.06,976.81,20.54 +sub,gmp,1024,1024,79430,9,254.28,249.70,20.16 +sub,gmpz,1024,1024,78711,9,254.06,250.27,19.96 +sub,auto,2000,2000,22901,9,886.25,859.15,20.12 +sub,inplace,2000,2000,11563,9,863.35,849.03,19.98 +sub,kernel,2000,2000,10330,9,1943.44,1926.61,20.07 +sub,floor,2000,2000,10004,9,1952.05,1876.36,19.43 +sub,gmp,2000,2000,40355,9,496.16,491.17,20.00 +sub,gmpz,2000,2000,40198,9,498.14,492.28,20.01 +sub,auto,1024,1,187070,9,105.67,98.36,19.89 +sub,inplace,1024,1,3353149,9,3.00,2.98,20.07 +sub,kernel,1024,1,26961,9,752.27,735.73,20.29 +sub,floor,1024,1,26341,9,762.51,745.73,20.04 +sub,gmp,1024,1,74511,9,263.96,260.21,19.65 +sub,gmpz,1024,1,74660,9,267.62,262.23,19.92 +shl,auto,1,13,1616452,9,12.41,12.15,19.46 +shl,inplace,1,13,4004482,9,2.50,2.49,20.02 +shl,kernel,1,13,8911659,9,2.24,2.24,19.99 +shl,kernelip,1,13,8975319,9,1.40,1.12,25.87 +shl,floor,1,13,1915170,9,10.76,10.50,20.77 +shl,gmp,1,13,16078521,9,1.25,1.24,20.08 +shl,gmpz,1,13,10050772,9,1.99,1.98,20.09 +shl,auto,4,13,1523224,9,12.98,12.85,19.89 +shl,inplace,4,13,2642704,9,3.83,3.77,20.25 +shl,kernel,4,13,5355050,9,3.74,3.72,20.03 +shl,kernelip,4,13,2954647,9,3.39,3.37,20.02 +shl,floor,4,13,1586959,9,13.68,12.83,23.94 +shl,gmp,4,13,10020108,9,2.01,1.99,20.50 +shl,gmpz,4,13,7296292,9,2.75,2.73,20.05 +shl,auto,16,13,1307568,9,15.90,15.33,21.11 +shl,inplace,16,13,1882260,9,5.29,5.27,19.92 +shl,kernel,16,13,4929677,9,4.06,4.05,20.03 +shl,kernelip,16,13,1351083,9,6.83,6.79,18.47 +shl,floor,16,13,1655375,9,11.97,11.72,19.89 +shl,gmp,16,13,5742926,9,3.49,3.47,20.04 +shl,gmpz,16,13,3823590,9,5.12,5.08,19.57 +shl,auto,256,13,479760,9,41.59,41.15,19.99 +shl,inplace,256,13,335869,9,29.85,29.72,20.05 +shl,kernel,256,13,404878,9,49.08,48.98,19.91 +shl,kernelip,256,13,204499,9,48.80,48.67,19.97 +shl,floor,256,13,346674,9,57.62,57.44,19.99 +shl,gmp,256,13,540327,9,36.97,36.92,20.00 +shl,gmpz,256,13,512435,9,38.79,38.54,19.89 +shl,auto,2000,13,78280,9,258.93,242.65,20.01 +shl,inplace,2000,13,50531,9,196.55,195.78,19.92 +shl,kernel,2000,13,52098,9,383.95,382.81,20.16 +shl,kernelip,2000,13,26195,9,377.64,374.93,19.91 +shl,floor,2000,13,49841,9,399.75,396.21,19.91 +shl,gmp,2000,13,38770,9,1414.68,755.06,61.62 +shl,gmpz,2000,13,23504,9,2540.19,1316.62,44.59 +shl,auto,2000,77,64973,9,377.73,279.26,27.24 +shl,inplace,2000,77,43602,9,228.07,227.55,19.90 +shl,kernel,2000,77,37388,9,531.99,527.05,19.85 +shl,kernelip,2000,77,19132,9,521.20,515.30,19.92 +shl,floor,2000,77,37032,9,538.60,537.78,19.97 +shl,gmp,2000,77,68862,9,299.30,288.16,20.47 +shl,gmpz,2000,77,64543,9,292.46,287.90,18.93 +shr,auto,1,13,2878702,9,6.91,6.74,19.78 +shr,inplace,1,13,2954596,9,3.34,3.32,19.72 +shr,kernel,1,13,8948110,9,2.24,2.23,20.09 +shr,floor,1,13,7977763,9,2.49,2.47,20.00 +shr,gmp,1,13,20000001,9,1.00,0.99,19.93 +shr,gmpz,1,13,10034851,9,1.99,1.99,20.29 +shr,auto,4,13,1436878,9,13.61,13.48,19.65 +shr,inplace,4,13,2686192,9,3.87,3.73,20.93 +shr,kernel,4,13,5357397,9,3.75,3.73,20.25 +shr,floor,4,13,1671307,9,12.01,11.44,20.05 +shr,gmp,4,13,11480606,9,1.78,1.75,20.45 +shr,gmpz,4,13,7089979,9,2.84,2.77,20.04 +shr,auto,16,13,1053622,9,19.20,19.01,20.33 +shr,inplace,16,13,1868860,9,5.35,5.22,19.94 +shr,kernel,16,13,4874048,9,4.10,4.09,19.99 +shr,floor,16,13,1460402,9,13.00,12.86,19.05 +shr,gmp,16,13,6166080,9,3.24,3.23,19.97 +shr,gmpz,16,13,4700003,9,4.25,4.24,20.02 +shr,auto,256,13,472801,9,42.22,41.87,20.00 +shr,inplace,256,13,323639,9,30.45,30.23,19.77 +shr,kernel,256,13,296560,9,67.16,66.56,19.97 +shr,floor,256,13,263596,9,75.71,75.24,19.96 +shr,gmp,256,13,530488,9,37.61,37.49,19.94 +shr,gmpz,256,13,524791,9,38.16,38.07,20.03 +shr,auto,2000,13,74294,9,290.17,243.06,20.11 +shr,inplace,2000,13,50724,9,197.15,195.80,19.99 +shr,kernel,2000,13,38638,9,513.47,511.31,19.84 +shr,floor,2000,13,38425,9,526.60,524.88,20.34 +shr,gmp,2000,13,65885,9,296.06,290.37,19.77 +shr,gmpz,2000,13,64996,9,305.89,293.25,20.22 +shr,auto,2000,77,83688,9,264.93,243.96,22.52 +shr,inplace,2000,77,50875,9,196.21,195.57,19.95 +shr,kernel,2000,77,38530,9,516.92,514.83,19.90 +shr,floor,2000,77,36751,9,528.31,525.85,19.41 +shr,gmp,2000,77,68436,9,301.13,290.94,20.70 +shr,gmpz,2000,77,69765,9,289.50,285.66,20.30 +mul,auto,1,1,1420040,9,14.64,14.11,20.69 +mul,gmp,1,1,5376462,9,3.73,3.72,20.09 +mul,gmpz,1,1,7289295,9,2.75,2.73,20.03 +mul,auto,2,2,1056327,9,18.97,18.60,19.96 +mul,kernel,2,2,3250199,9,6.27,6.09,20.45 +mul,floor,2,2,1389255,9,14.27,14.15,19.89 +mul,gmp,2,2,4315738,9,4.55,4.47,19.69 +mul,gmpz,2,2,3071369,9,6.72,6.53,20.46 +mul,auto,3,3,983577,9,20.31,19.61,19.95 +mul,kernel,3,3,2413194,9,8.21,8.18,20.16 +mul,floor,3,3,1143563,9,18.70,18.13,21.31 +mul,gmp,3,3,3034597,9,6.44,6.26,19.82 +mul,gmpz,3,3,2298325,9,8.79,8.01,20.89 +mul,auto,4,4,905031,9,22.17,21.83,20.18 +mul,kernel,4,4,1758222,9,11.74,11.23,20.69 +mul,floor,4,4,1134126,9,17.60,17.29,20.04 +mul,gmp,4,4,2177084,9,9.48,9.21,20.55 +mul,gmpz,4,4,1904159,9,9.98,9.94,19.06 +mul,auto,6,6,709021,9,28.07,27.35,19.87 +mul,kernel,6,6,1043732,9,19.20,18.96,20.16 +mul,floor,6,6,826608,9,25.33,24.40,20.80 +mul,gmp,6,6,1339037,9,14.67,14.60,19.69 +mul,gmpz,6,6,1011986,9,20.02,18.68,19.88 +mul,auto,8,8,568735,9,35.57,35.22,20.24 +mul,kernel,8,8,855536,9,23.40,23.10,19.98 +mul,floor,8,8,641818,9,31.57,30.57,20.29 +mul,gmp,8,8,865111,9,23.70,22.40,20.86 +mul,gmpz,8,8,809773,9,26.05,24.44,21.03 +mul,auto,12,12,354195,9,53.95,53.63,19.17 +mul,kernel,12,12,485514,9,40.88,40.76,19.85 +mul,floor,12,12,396362,9,49.70,49.63,19.73 +mul,gmp,12,12,455438,9,44.10,43.95,20.10 +mul,gmpz,12,12,425974,9,46.74,46.62,19.93 +mul,auto,16,16,237011,9,83.49,82.53,19.99 +mul,kernel,16,16,287380,9,69.87,69.55,20.10 +mul,floor,16,16,253848,9,78.76,78.62,20.03 +mul,gmp,16,16,255333,9,76.71,76.08,19.64 +mul,gmpz,16,16,254778,9,78.92,77.93,20.07 +mul,auto,32,32,71034,9,280.92,280.03,20.00 +mul,kernel,32,32,77536,9,258.64,257.59,20.05 +mul,floor,32,32,71835,9,278.87,277.26,20.02 +mul,gmp,32,32,77407,9,257.90,257.16,19.99 +mul,gmpz,32,32,77548,9,261.81,257.86,20.24 +mul,auto,64,64,19738,9,1009.36,1006.26,19.92 +mul,kernel,64,64,20359,9,985.96,978.68,20.05 +mul,floor,64,64,19740,9,1010.94,1007.80,20.07 +mul,gmp,64,64,25836,9,774.48,770.17,20.00 +mul,gmpz,64,64,25564,9,778.11,777.43,19.91 +mul,auto,128,128,5580,9,3585.45,3573.23,20.02 +mul,kernel,128,128,5570,9,3593.06,3575.07,20.10 +mul,floor,128,128,5555,9,3602.57,3592.03,20.06 +mul,gmp,128,128,7258,9,2682.33,2650.04,19.59 +mul,gmpz,128,128,6551,9,3031.01,3013.19,19.85 +mul,auto,256,256,1638,9,12200.02,12074.00,19.97 +mul,kernel,256,256,1697,9,11801.44,11751.64,20.02 +mul,floor,256,256,1690,9,11846.10,11777.86,20.01 +mul,gmp,256,256,2544,9,7856.35,7831.01,20.00 +mul,gmpz,256,256,2536,9,7901.11,7865.27,20.03 +mul,auto,512,512,543,9,36996.62,36903.31,20.08 +mul,kernel,512,512,542,9,37259.30,37028.29,20.19 +mul,floor,512,512,540,9,36965.05,36856.40,19.96 +mul,gmp,512,512,1051,9,19069.77,18999.01,20.04 +mul,gmpz,512,512,1052,9,19049.83,19017.82,20.05 +mul,auto,1000,1000,187,9,107123.21,106701.42,20.08 +mul,kernel,1000,1000,187,9,106922.90,106503.57,20.00 +mul,floor,1000,1000,187,9,107074.64,106801.25,20.02 +mul,gmp,1000,1000,362,9,55303.87,55110.96,20.05 +mul,gmpz,1000,1000,359,9,55518.80,55115.83,19.91 +mul,auto,2000,2000,66,9,302437.50,301523.36,19.96 +mul,kernel,2000,2000,67,9,302702.12,301568.40,20.28 +mul,floor,2000,2000,64,9,302202.47,301736.33,19.37 +mul,gmp,2000,2000,134,9,149146.46,148533.27,19.98 +mul,gmpz,2000,2000,133,9,149290.10,148481.83,19.84 +mul,auto,2000,100,429,9,46474.55,46334.01,19.95 +mul,kernel,2000,100,427,9,46924.08,46605.97,20.02 +mul,floor,2000,100,427,9,46958.63,46639.74,20.04 +mul,gmp,2000,100,565,9,35269.32,35108.26,19.94 +mul,gmpz,2000,100,577,9,34866.05,34741.48,20.10 +sqr,auto,4,4,940699,9,28.95,21.15,25.28 +sqr,kernel,4,4,1768631,9,11.35,11.27,20.08 +sqr,floor,4,4,1215933,9,20.76,16.69,24.53 +sqr,gmp,4,4,2910655,9,6.46,6.23,18.71 +sqr,gmpz,4,4,2120762,9,9.47,9.42,20.17 +sqr,auto,16,16,264128,9,75.77,74.99,20.37 +sqr,kernel,16,16,313770,9,63.76,63.53,20.01 +sqr,floor,16,16,277121,9,68.86,68.50,19.85 +sqr,gmp,16,16,322182,9,62.82,61.98,20.17 +sqr,gmpz,16,16,303745,9,66.75,65.97,20.26 +sqr,auto,64,64,33250,9,600.87,599.75,19.97 +sqr,kernel,64,64,34382,9,583.39,580.23,20.15 +sqr,floor,64,64,33014,9,604.23,602.12,19.94 +sqr,gmp,64,64,29511,9,677.04,668.78,19.98 +sqr,gmpz,64,64,30172,9,674.13,654.22,20.25 +sqr,auto,512,512,813,9,24634.94,24531.57,20.02 +sqr,kernel,512,512,806,9,24602.00,24403.59,19.80 +sqr,floor,512,512,819,9,24471.56,24413.11,20.05 +sqr,gmp,512,512,1091,9,18248.55,18184.85,19.95 +sqr,gmpz,512,512,1015,9,19704.64,19651.93,20.05 +sqr,auto,2000,2000,90,9,223724.07,223058.80,20.14 +sqr,kernel,2000,2000,90,9,223643.06,223229.17,20.15 +sqr,floor,2000,2000,89,9,224334.73,223404.03,19.96 +sqr,gmp,2000,2000,166,9,120898.34,120252.51,20.07 +sqr,gmpz,2000,2000,165,9,120839.14,120409.09,19.95 +divrem,auto,2,1,947351,9,21.57,21.36,20.43 +divrem,kernel,2,1,3206472,9,6.37,6.32,20.39 +divrem,floor,2,1,1434288,9,13.88,13.64,19.86 +divrem,gmp,2,1,3979415,9,5.02,5.01,20.00 +divrem,gmpz,2,1,2296562,9,8.70,8.65,19.99 +divrem,auto,8,4,245412,9,90.38,81.82,21.69 +divrem,kernel,8,4,380503,9,52.63,51.51,19.92 +divrem,floor,8,4,306372,9,65.70,65.41,20.27 +divrem,gmp,8,4,481842,9,41.81,41.26,20.14 +divrem,gmpz,8,4,452286,9,44.28,43.86,20.01 +divrem,auto,32,16,45490,9,438.10,422.51,19.78 +divrem,kernel,32,16,49905,9,401.88,388.68,19.97 +divrem,floor,32,16,48561,9,421.22,412.52,20.39 +divrem,gmp,32,16,98104,9,206.81,205.09,20.24 +divrem,gmpz,32,16,95997,9,208.84,207.36,20.02 +divrem,auto,128,64,5383,9,3732.55,3650.02,20.06 +divrem,kernel,128,64,5568,9,3632.79,3537.13,20.16 +divrem,floor,128,64,5430,9,3696.98,3682.83,20.07 +divrem,gmp,128,64,11246,9,1772.29,1760.36,19.93 +divrem,gmpz,128,64,11325,9,1770.39,1758.22,20.04 +divrem,auto,512,256,726,9,27505.34,27441.40,19.98 +divrem,kernel,512,256,732,9,27379.72,27266.39,20.04 +divrem,floor,512,256,733,9,27287.91,27159.05,20.02 +divrem,gmp,512,256,1217,9,16504.11,16425.06,20.09 +divrem,gmpz,512,256,1205,9,16561.03,16441.29,19.95 +divrem,auto,2000,1000,86,9,234737.41,232430.23,20.18 +divrem,kernel,2000,1000,85,9,233273.04,231982.84,19.84 +divrem,floor,2000,1000,86,9,232905.03,232397.78,20.03 +divrem,gmp,2000,1000,147,9,136973.35,135830.78,20.14 +divrem,gmpz,2000,1000,149,9,134433.72,133705.26,20.03 +divrem,auto,4000,2000,29,9,693178.17,689853.45,20.22 +divrem,kernel,4000,2000,29,9,689922.41,687727.00,20.01 +divrem,floor,4000,2000,29,9,690385.03,684235.62,20.02 +divrem,gmp,4000,2000,58,9,345581.90,343604.16,20.08 +divrem,gmpz,4000,2000,58,9,344729.17,342530.17,19.99 +divrem,auto,2000,100,212,9,94611.44,94247.05,20.06 +divrem,kernel,2000,100,212,9,94272.60,93996.46,19.99 +divrem,floor,2000,100,213,9,94007.04,93886.74,20.04 +divrem,gmp,2000,100,291,9,69168.96,69047.11,20.15 +divrem,gmpz,2000,100,290,9,68873.71,68678.16,19.98 +divrem,auto,65536,1,86,9,234640.50,226932.65,20.07 +divrem,kernel,65536,1,86,9,232874.51,228192.83,20.03 +divrem,floor,65536,1,85,9,234265.19,228735.79,19.84 +divrem,gmp,65536,1,115,9,174809.42,166948.91,19.89 +divrem,gmpz,65536,1,114,9,172184.57,167695.54,19.56 +tochars,auto,1,10,3320584,9,6.00,5.99,19.94 +tochars,kernel,1,10,583919,9,34.93,34.76,20.42 +tochars,gmp,1,10,1202194,9,16.16,15.87,19.42 +tochars,gmpz,1,10,826730,9,24.30,24.15,20.14 +tochars,auto,4,10,220118,9,91.02,90.32,20.13 +tochars,kernel,4,10,189875,9,103.80,102.24,19.74 +tochars,gmp,4,10,258866,9,76.94,76.51,19.93 +tochars,gmpz,4,10,198306,9,101.26,100.16,20.05 +tochars,auto,16,10,23728,9,841.03,818.74,20.40 +tochars,kernel,16,10,26637,9,752.15,735.83,20.00 +tochars,gmp,16,10,39037,9,513.15,500.95,19.98 +tochars,gmpz,16,10,33244,9,609.02,588.79,20.14 +tochars,auto,64,10,4142,9,4799.24,4700.35,19.86 +tochars,kernel,64,10,4392,9,4582.03,4406.92,20.07 +tochars,gmp,64,10,7072,9,2846.43,2821.05,20.10 +tochars,gmpz,64,10,6331,9,3160.57,3146.45,20.01 +tochars,auto,256,10,590,9,34022.67,33725.71,20.04 +tochars,kernel,256,10,608,9,32889.53,32313.80,19.96 +tochars,gmp,256,10,1054,9,19072.78,18882.16,20.09 +tochars,gmpz,256,10,986,9,20424.99,20276.07,20.12 +tochars,auto,2000,10,30,9,675793.03,671218.03,20.29 +tochars,kernel,2000,10,31,9,668008.06,665725.81,20.71 +tochars,gmp,2000,10,50,9,407475.00,401260.00,20.32 +tochars,gmpz,2000,10,49,9,416176.88,414533.16,20.41 +tochars,auto,16,16,243187,9,82.83,82.20,20.30 +tochars,gmp,16,16,241518,9,81.51,79.23,19.57 +tochars,gmpz,16,16,125111,9,162.14,159.79,20.39 +tochars,auto,2000,16,2104,9,9698.15,9443.88,20.35 +tochars,gmp,2000,16,2191,9,9460.39,9117.11,20.56 +tochars,gmpz,2000,16,1161,9,16838.39,16467.74,19.55 +fromchars,auto,4,10,202917,9,91.79,90.93,18.82 +fromchars,kernel,4,10,610219,9,32.90,32.41,20.01 +fromchars,gmp,4,10,628526,9,31.88,31.71,20.11 +fromchars,gmpz,4,10,255202,9,77.16,76.02,19.65 +fromchars,auto,16,10,50067,9,396.27,389.06,19.82 +fromchars,kernel,16,10,103850,9,192.65,188.87,19.97 +fromchars,gmp,16,10,139658,9,142.00,140.83,19.88 +fromchars,gmpz,16,10,62411,9,316.21,314.01,19.73 +fromchars,auto,64,10,9121,9,2190.22,2165.90,19.97 +fromchars,kernel,64,10,10255,9,1922.67,1908.87,19.72 +fromchars,gmp,64,10,20747,9,953.96,945.76,19.81 +fromchars,gmpz,64,10,12463,9,1606.11,1600.34,20.03 +fromchars,auto,256,10,1447,9,13834.20,13816.75,20.04 +fromchars,kernel,256,10,1730,9,11539.28,11467.34,19.99 +fromchars,gmp,256,10,2254,9,8394.61,8362.45,19.01 +fromchars,gmpz,256,10,1875,9,10696.16,10647.38,20.14 +fromchars,auto,2000,10,67,9,300888.69,300291.04,20.17 +fromchars,kernel,2000,10,71,9,283462.44,282553.41,20.14 +fromchars,gmp,2000,10,109,9,184229.36,183858.17,20.09 +fromchars,gmpz,2000,10,99,9,204136.36,203458.33,20.23 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_base64_run1.csv b/tests/beman/big_int/perf/item1/x64_vshift_base64_run1.csv new file mode 100644 index 00000000..2a14004b --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_base64_run1.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1212583,9,16.47,16.36,19.96 +shl,inplace,1,13,2442254,9,4.06,4.03,19.86 +shl,kernel,1,13,9674426,9,2.08,2.06,20.08 +shl,auto,4,13,1070722,9,18.59,18.53,19.96 +shl,inplace,4,13,1933496,9,5.16,5.15,20.00 +shl,kernel,4,13,5904331,9,3.39,3.37,20.07 +shl,auto,16,13,810068,9,24.68,24.43,19.97 +shl,inplace,16,13,1087699,9,9.16,9.15,19.95 +shl,kernel,16,13,2691284,9,7.47,7.43,20.13 +shl,auto,256,13,149704,9,133.92,133.00,20.14 +shl,inplace,256,13,107075,9,93.12,92.93,19.94 +shl,kernel,256,13,214256,9,93.45,93.07,20.01 +shl,auto,2000,13,21763,9,916.21,914.65,19.94 +shl,inplace,2000,13,15158,9,657.14,656.11,19.93 +shl,kernel,2000,13,27759,9,718.21,718.09,19.94 +shl,auto,2000,77,18854,9,1063.60,1060.19,20.06 +shl,inplace,2000,77,13049,9,765.77,765.07,20.00 +shl,kernel,2000,77,23535,9,851.05,849.71,20.03 +shl,auto,131072,13,205,3,98193.28,97964.54,20.13 +shl,inplace,131072,13,230,3,43553.83,43490.17,20.03 +shl,kernel,131072,13,277,3,72250.91,72239.19,20.01 +shr,auto,1,13,1979168,9,10.13,10.03,20.14 +shr,inplace,1,13,2735852,9,3.66,3.59,19.95 +shr,kernel,1,13,11751860,9,1.70,1.70,20.00 +shr,auto,4,13,955338,9,20.94,20.87,20.00 +shr,inplace,4,13,2127183,9,4.71,4.67,20.09 +shr,kernel,4,13,5812222,9,3.45,3.45,20.08 +shr,auto,16,13,776527,9,25.78,25.74,20.04 +shr,inplace,16,13,1146537,9,8.73,8.69,20.03 +shr,kernel,16,13,2455592,9,8.14,8.08,19.96 +shr,auto,256,13,146559,9,136.11,135.91,19.94 +shr,inplace,256,13,106843,9,93.71,93.49,20.02 +shr,kernel,256,13,181219,9,110.44,109.98,20.00 +shr,auto,2000,13,21015,9,949.69,948.80,19.96 +shr,inplace,2000,13,15201,9,657.15,656.23,19.99 +shr,kernel,2000,13,24633,9,811.92,811.91,20.00 +shr,auto,2000,77,18408,9,1085.91,1085.64,20.02 +shr,inplace,2000,77,13042,9,766.47,766.21,20.04 +shr,kernel,2000,77,24082,9,830.33,830.30,20.02 +shr,auto,131072,13,203,3,98933.21,98926.77,20.08 +shr,inplace,131072,13,229,3,43515.12,43412.33,20.01 +shr,kernel,131072,13,263,3,76088.66,76088.47,20.01 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_base64_run2.csv b/tests/beman/big_int/perf/item1/x64_vshift_base64_run2.csv new file mode 100644 index 00000000..71c65b9d --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_base64_run2.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1197081,9,16.76,16.68,20.06 +shl,inplace,1,13,2451913,9,4.08,4.05,19.98 +shl,kernel,1,13,9626445,9,2.08,2.07,20.00 +shl,auto,4,13,1069065,9,18.70,18.57,19.98 +shl,inplace,4,13,1937063,9,5.18,5.12,20.08 +shl,kernel,4,13,5934038,9,3.39,3.37,20.12 +shl,auto,16,13,818084,9,24.54,24.47,20.07 +shl,inplace,16,13,1067508,9,9.16,9.12,19.61 +shl,kernel,16,13,2674830,9,7.51,7.44,20.05 +shl,auto,256,13,150596,9,133.28,131.87,20.08 +shl,inplace,256,13,107429,9,92.99,92.81,19.99 +shl,kernel,256,13,213569,9,93.73,93.58,20.03 +shl,auto,2000,13,21742,9,918.36,917.01,19.97 +shl,inplace,2000,13,15186,9,656.46,655.92,19.94 +shl,kernel,2000,13,27794,9,719.22,718.76,20.01 +shl,auto,2000,77,18748,9,1062.89,1060.47,19.94 +shl,inplace,2000,77,13062,9,765.66,765.13,20.00 +shl,kernel,2000,77,23337,9,857.40,853.32,19.98 +shl,auto,131072,13,205,3,97977.28,97959.13,20.09 +shl,inplace,131072,13,231,3,43702.57,43545.87,20.24 +shl,kernel,131072,13,277,3,72261.65,72252.35,20.02 +shr,auto,1,13,1967294,9,10.07,10.05,19.86 +shr,inplace,1,13,2728571,9,3.65,3.61,19.94 +shr,kernel,1,13,11752507,9,1.70,1.70,20.00 +shr,auto,4,13,951357,9,21.06,20.98,20.04 +shr,inplace,4,13,2118785,9,4.70,4.65,19.98 +shr,kernel,4,13,5781339,9,3.46,3.45,20.01 +shr,auto,16,13,777953,9,25.78,25.67,20.06 +shr,inplace,16,13,1148372,9,8.72,8.66,20.02 +shr,kernel,16,13,2478908,9,8.09,8.04,20.06 +shr,auto,256,13,144359,9,136.61,136.13,19.73 +shr,inplace,256,13,106740,9,93.75,93.55,20.02 +shr,kernel,256,13,181794,9,110.21,109.96,20.05 +shr,auto,2000,13,21016,9,952.79,951.14,20.02 +shr,inplace,2000,13,15238,9,656.39,656.24,20.02 +shr,kernel,2000,13,24633,9,811.90,811.88,20.00 +shr,auto,2000,77,18382,9,1087.98,1087.67,20.00 +shr,inplace,2000,77,13058,9,765.54,765.02,20.00 +shr,kernel,2000,77,24012,9,831.59,831.52,19.99 +shr,auto,131072,13,203,3,98985.81,98960.57,20.09 +shr,inplace,131072,13,231,3,43496.05,43417.21,20.10 +shr,kernel,131072,13,263,3,76236.09,76234.58,20.05 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_base64_run3.csv b/tests/beman/big_int/perf/item1/x64_vshift_base64_run3.csv new file mode 100644 index 00000000..282352c1 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_base64_run3.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1197422,9,16.74,16.70,20.05 +shl,inplace,1,13,2472384,9,4.07,4.03,20.11 +shl,kernel,1,13,9626311,9,2.08,2.07,20.03 +shl,auto,4,13,1065596,9,18.62,18.48,19.84 +shl,inplace,4,13,1928173,9,5.16,5.12,19.92 +shl,kernel,4,13,5906777,9,3.38,3.37,19.99 +shl,auto,16,13,820467,9,24.52,24.34,20.11 +shl,inplace,16,13,1092472,9,9.16,9.14,20.03 +shl,kernel,16,13,2688595,9,7.46,7.45,20.09 +shl,auto,256,13,148733,9,134.29,133.16,20.00 +shl,inplace,256,13,107675,9,93.05,92.84,20.05 +shl,kernel,256,13,214260,9,93.47,93.10,20.08 +shl,auto,2000,13,21728,9,917.53,915.91,19.94 +shl,inplace,2000,13,15228,9,656.70,655.80,20.01 +shl,kernel,2000,13,27806,9,718.92,718.85,19.99 +shl,auto,2000,77,18879,9,1063.41,1061.85,20.09 +shl,inplace,2000,77,13028,9,765.49,765.23,19.96 +shl,kernel,2000,77,23491,9,852.05,849.63,20.01 +shl,auto,131072,13,205,3,97922.73,97773.30,20.07 +shl,inplace,131072,13,231,3,43378.31,43376.60,20.04 +shl,kernel,131072,13,277,3,72272.21,72265.99,20.03 +shr,auto,1,13,1990684,9,10.12,9.98,20.13 +shr,inplace,1,13,2703425,9,3.64,3.59,19.65 +shr,kernel,1,13,11754047,9,1.70,1.70,20.00 +shr,auto,4,13,962924,9,20.91,20.83,20.17 +shr,inplace,4,13,2128635,9,4.72,4.62,20.09 +shr,kernel,4,13,5796931,9,3.45,3.44,20.04 +shr,auto,16,13,775229,9,25.80,25.72,20.00 +shr,inplace,16,13,1141717,9,8.72,8.68,19.89 +shr,kernel,16,13,2475419,9,8.11,8.01,20.07 +shr,auto,256,13,146028,9,136.98,136.38,20.01 +shr,inplace,256,13,106714,9,93.64,93.57,19.99 +shr,kernel,256,13,181876,9,109.97,109.90,20.00 +shr,auto,2000,13,21089,9,949.92,948.85,20.06 +shr,inplace,2000,13,15237,9,657.22,656.35,20.03 +shr,kernel,2000,13,24635,9,811.75,811.74,20.02 +shr,auto,2000,77,18410,9,1086.85,1086.49,20.01 +shr,inplace,2000,77,13063,9,764.91,764.60,19.99 +shr,kernel,2000,77,23985,9,832.62,832.52,19.99 +shr,auto,131072,13,203,3,98844.51,98843.48,20.07 +shr,inplace,131072,13,230,3,43536.70,43428.02,20.02 +shr,kernel,131072,13,263,3,76087.11,76081.78,20.04 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_new64_run1.csv b/tests/beman/big_int/perf/item1/x64_vshift_new64_run1.csv new file mode 100644 index 00000000..4a878c12 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_new64_run1.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1602238,9,12.52,12.46,20.11 +shl,inplace,1,13,2387491,9,4.19,4.17,20.00 +shl,kernel,1,13,9626375,9,2.08,2.05,19.97 +shl,auto,4,13,1495001,9,13.45,13.39,20.13 +shl,inplace,4,13,1909864,9,5.24,5.22,20.01 +shl,kernel,4,13,5684448,9,3.47,3.40,19.96 +shl,auto,16,13,1171604,9,17.07,17.03,20.02 +shl,inplace,16,13,1083405,9,9.26,9.23,20.05 +shl,kernel,16,13,2493540,9,8.04,8.01,20.03 +shl,auto,256,13,163855,9,122.03,121.95,20.00 +shl,inplace,256,13,100657,9,99.32,99.22,20.02 +shl,kernel,256,13,213834,9,93.56,93.44,20.01 +shl,auto,2000,13,25889,9,772.75,772.51,20.01 +shl,inplace,2000,13,13950,9,717.01,716.87,20.05 +shl,kernel,2000,13,27874,9,717.57,717.49,20.02 +shl,auto,2000,77,25822,9,774.60,774.47,20.01 +shl,inplace,2000,77,13463,9,742.07,740.27,19.98 +shl,kernel,2000,77,23421,9,853.96,851.14,19.99 +shl,auto,131072,13,403,3,49725.22,49721.73,20.04 +shl,inplace,131072,13,215,3,46654.90,46652.15,20.06 +shl,kernel,131072,13,278,3,72178.28,72165.31,20.06 +shr,auto,1,13,2445052,9,8.19,8.19,20.03 +shr,inplace,1,13,2577593,9,3.87,3.84,20.13 +shr,kernel,1,13,11752194,9,1.70,1.70,20.01 +shr,auto,4,13,1253455,9,15.98,15.96,20.04 +shr,inplace,4,13,2021663,9,4.95,4.95,20.02 +shr,kernel,4,13,5813961,9,3.46,3.46,20.14 +shr,auto,16,13,1001036,9,19.99,19.91,20.02 +shr,inplace,16,13,1106749,9,9.00,8.95,19.94 +shr,kernel,16,13,2391031,9,8.33,8.31,19.93 +shr,auto,256,13,159983,9,124.95,124.87,20.46 +shr,inplace,256,13,100824,9,99.08,99.05,20.04 +shr,kernel,256,13,182017,9,110.04,109.84,20.04 +shr,auto,2000,13,26722,9,748.79,748.20,20.02 +shr,inplace,2000,13,13956,9,716.45,716.41,20.00 +shr,kernel,2000,13,24627,9,811.98,811.95,20.00 +shr,auto,2000,77,26726,9,748.97,748.58,20.03 +shr,inplace,2000,77,13487,9,740.83,738.18,19.97 +shr,kernel,2000,77,24081,9,830.57,830.51,20.00 +shr,auto,131072,13,414,3,48304.43,48296.61,20.00 +shr,inplace,131072,13,215,3,46701.23,46694.73,20.09 +shr,kernel,131072,13,263,3,76086.20,76068.17,20.02 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_new64_run2.csv b/tests/beman/big_int/perf/item1/x64_vshift_new64_run2.csv new file mode 100644 index 00000000..0949a697 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_new64_run2.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1603711,9,12.51,12.39,20.08 +shl,inplace,1,13,2380836,9,4.19,4.17,19.94 +shl,kernel,1,13,9585442,9,2.08,2.08,19.92 +shl,auto,4,13,1510541,9,13.38,13.27,20.25 +shl,inplace,4,13,1914885,9,5.24,5.23,20.06 +shl,kernel,4,13,5723554,9,3.44,3.42,19.84 +shl,auto,16,13,1170684,9,17.03,16.90,19.97 +shl,inplace,16,13,1082675,9,9.24,9.23,20.03 +shl,kernel,16,13,2636474,9,7.59,7.50,20.03 +shl,auto,256,13,163395,9,122.11,121.95,19.98 +shl,inplace,256,13,100681,9,99.30,99.20,20.00 +shl,kernel,256,13,213683,9,93.63,93.50,20.00 +shl,auto,2000,13,25888,9,772.82,772.55,20.02 +shl,inplace,2000,13,13951,9,716.89,716.74,20.01 +shl,kernel,2000,13,27812,9,719.66,719.13,20.03 +shl,auto,2000,77,25812,9,774.60,774.50,20.01 +shl,inplace,2000,77,13481,9,741.42,740.37,19.99 +shl,kernel,2000,77,23481,9,851.94,850.96,20.01 +shl,auto,131072,13,398,3,49722.15,49720.79,19.79 +shl,inplace,131072,13,215,3,46743.24,46690.56,20.15 +shl,kernel,131072,13,278,3,72200.14,72177.27,20.08 +shr,auto,1,13,2438409,9,8.19,8.19,19.98 +shr,inplace,1,13,2595721,9,3.89,3.83,20.21 +shr,kernel,1,13,11754048,9,1.70,1.70,20.01 +shr,auto,4,13,1246250,9,16.15,16.06,20.17 +shr,inplace,4,13,2027220,9,4.94,4.93,20.02 +shr,kernel,4,13,5796694,9,3.46,3.46,20.09 +shr,auto,16,13,996966,9,20.09,19.98,20.05 +shr,inplace,16,13,1127040,9,8.88,8.87,20.03 +shr,kernel,16,13,2375437,9,8.36,8.34,19.87 +shr,auto,256,13,159692,9,125.73,125.47,20.13 +shr,inplace,256,13,100918,9,99.09,98.99,20.00 +shr,kernel,256,13,182060,9,110.03,109.80,20.04 +shr,auto,2000,13,26622,9,751.85,749.96,20.02 +shr,inplace,2000,13,13893,9,716.48,716.37,19.92 +shr,kernel,2000,13,24618,9,812.25,812.23,20.00 +shr,auto,2000,77,25882,9,757.63,755.13,19.61 +shr,inplace,2000,77,13494,9,740.71,738.98,19.98 +shr,kernel,2000,77,24066,9,831.06,831.02,20.00 +shr,auto,131072,13,415,3,48284.48,48283.94,20.04 +shr,inplace,131072,13,215,3,46679.53,46661.05,20.07 +shr,kernel,131072,13,263,3,76237.49,76234.46,20.05 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_new64_run3.csv b/tests/beman/big_int/perf/item1/x64_vshift_new64_run3.csv new file mode 100644 index 00000000..1436be10 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_new64_run3.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1591457,9,12.56,12.45,20.01 +shl,inplace,1,13,2391228,9,4.19,4.17,20.01 +shl,kernel,1,13,9626487,9,2.08,2.07,20.00 +shl,auto,4,13,1507508,9,13.42,13.35,20.23 +shl,inplace,4,13,1909649,9,5.24,5.23,20.01 +shl,kernel,4,13,5894516,9,3.43,3.39,20.32 +shl,auto,16,13,1162920,9,17.11,17.05,19.90 +shl,inplace,16,13,1081102,9,9.23,9.21,19.97 +shl,kernel,16,13,2601463,9,7.57,7.52,19.71 +shl,auto,256,13,163803,9,121.81,121.68,19.96 +shl,inplace,256,13,100723,9,99.33,99.16,20.01 +shl,kernel,256,13,213341,9,93.50,93.40,19.95 +shl,auto,2000,13,25884,9,772.68,772.45,20.00 +shl,inplace,2000,13,13948,9,716.86,716.79,20.02 +shl,kernel,2000,13,27748,9,718.69,718.45,19.95 +shl,auto,2000,77,25811,9,774.62,774.30,20.01 +shl,inplace,2000,77,13492,9,741.66,741.33,20.01 +shl,kernel,2000,77,23455,9,851.90,850.86,19.98 +shl,auto,131072,13,402,3,49746.96,49744.05,20.00 +shl,inplace,131072,13,215,3,46688.97,46685.92,20.08 +shl,kernel,131072,13,277,3,72301.10,72272.19,20.07 +shr,auto,1,13,2441860,9,8.19,8.19,20.02 +shr,inplace,1,13,2567119,9,3.94,3.87,20.17 +shr,kernel,1,13,11740613,9,1.70,1.70,20.06 +shr,auto,4,13,1245524,9,16.06,15.93,19.97 +shr,inplace,4,13,2027072,9,4.93,4.93,20.01 +shr,kernel,4,13,5766468,9,3.47,3.47,20.00 +shr,auto,16,13,1004806,9,19.93,19.91,20.02 +shr,inplace,16,13,1124803,9,8.89,8.87,20.01 +shr,kernel,16,13,2406055,9,8.32,8.31,20.07 +shr,auto,256,13,160371,9,124.83,124.73,20.03 +shr,inplace,256,13,100859,9,99.08,99.01,19.99 +shr,kernel,256,13,181902,9,109.95,109.87,20.02 +shr,auto,2000,13,26680,9,748.99,748.72,20.04 +shr,inplace,2000,13,13953,9,716.56,716.50,20.00 +shr,kernel,2000,13,24628,9,812.11,812.09,20.02 +shr,auto,2000,77,26706,9,749.55,749.08,20.02 +shr,inplace,2000,77,13505,9,742.60,740.17,20.06 +shr,kernel,2000,77,24111,9,829.57,829.51,20.02 +shr,auto,131072,13,414,3,48306.20,48297.99,20.00 +shr,inplace,131072,13,214,3,46742.96,46739.73,20.01 +shr,kernel,131072,13,263,3,76854.29,76163.44,20.17 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v1_run1.csv b/tests/beman/big_int/perf/item1/x64_vshift_v1_run1.csv new file mode 100644 index 00000000..9e6b99a7 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_v1_run1.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1605344,9,12.50,12.35,20.07 +shl,inplace,1,13,2755069,9,3.62,3.61,19.97 +shl,kernel,1,13,9626547,9,2.08,2.08,20.00 +shl,auto,4,13,1503092,9,13.40,13.32,20.18 +shl,inplace,4,13,2201142,9,4.55,4.53,20.03 +shl,kernel,4,13,6049051,9,3.31,3.31,20.06 +shl,auto,16,13,1180401,9,16.98,16.91,20.04 +shl,inplace,16,13,1085924,9,9.08,9.03,19.70 +shl,kernel,16,13,2681463,9,7.46,7.45,20.02 +shl,auto,256,13,161885,9,122.37,122.15,19.85 +shl,inplace,256,13,97715,9,102.10,101.80,19.94 +shl,kernel,256,13,214169,9,93.34,93.21,20.00 +shl,auto,2000,13,25856,9,773.42,772.93,20.00 +shl,inplace,2000,13,13550,9,739.20,738.36,20.04 +shl,kernel,2000,13,27774,9,719.01,718.75,19.97 +shl,auto,2000,77,25812,9,775.05,774.65,20.01 +shl,inplace,2000,77,13544,9,740.33,737.00,20.08 +shl,kernel,2000,77,23418,9,853.38,850.65,19.98 +shl,auto,131072,13,402,3,49726.31,49724.18,19.99 +shl,inplace,131072,13,208,3,48259.05,48231.34,20.09 +shl,kernel,131072,13,277,3,72243.32,72237.42,20.01 +shr,auto,1,13,2441693,9,8.20,8.19,20.02 +shr,inplace,1,13,3050536,9,3.32,3.24,20.18 +shr,kernel,1,13,11755109,9,1.70,1.70,20.01 +shr,auto,4,13,1253881,9,16.03,15.98,20.10 +shr,inplace,4,13,2329746,9,4.33,4.29,20.16 +shr,kernel,4,13,5739315,9,3.47,3.46,19.94 +shr,auto,16,13,1004990,9,19.91,19.89,20.01 +shr,inplace,16,13,1153260,9,8.67,8.61,19.99 +shr,kernel,16,13,2301051,9,8.69,8.69,20.05 +shr,auto,256,13,160149,9,125.18,124.70,20.04 +shr,inplace,256,13,98373,9,101.65,101.56,20.00 +shr,kernel,256,13,181347,9,110.37,110.27,20.02 +shr,auto,2000,13,26681,9,749.65,748.54,20.00 +shr,inplace,2000,13,13542,9,736.69,735.76,19.97 +shr,kernel,2000,13,24621,9,812.36,812.28,20.01 +shr,auto,2000,77,26702,9,749.61,748.57,20.02 +shr,inplace,2000,77,13581,9,739.27,736.44,20.08 +shr,kernel,2000,77,24085,9,830.42,830.37,20.00 +shr,auto,131072,13,414,3,48328.01,48317.12,20.02 +shr,inplace,131072,13,208,3,48496.79,48300.52,20.15 +shr,kernel,131072,13,263,3,76186.38,76186.06,20.06 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v1_run2.csv b/tests/beman/big_int/perf/item1/x64_vshift_v1_run2.csv new file mode 100644 index 00000000..0aa91211 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_v1_run2.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1610617,9,12.58,12.47,20.22 +shl,inplace,1,13,2748786,9,3.63,3.62,19.97 +shl,kernel,1,13,9626387,9,2.08,2.08,20.00 +shl,auto,4,13,1491203,9,13.44,13.34,20.03 +shl,inplace,4,13,2181407,9,4.55,4.54,19.89 +shl,kernel,4,13,5782595,9,3.45,3.42,19.97 +shl,auto,16,13,1179538,9,17.00,16.94,20.05 +shl,inplace,16,13,1108267,9,9.09,9.00,20.16 +shl,kernel,16,13,2693217,9,7.46,7.44,20.09 +shl,auto,256,13,162743,9,121.94,121.85,19.85 +shl,inplace,256,13,98107,9,102.16,101.82,20.04 +shl,kernel,256,13,211861,9,94.45,94.24,20.01 +shl,auto,2000,13,25868,9,773.37,773.00,20.05 +shl,inplace,2000,13,13531,9,738.99,735.17,19.98 +shl,kernel,2000,13,27802,9,718.92,718.77,19.99 +shl,auto,2000,77,25819,9,774.68,774.29,20.00 +shl,inplace,2000,77,13522,9,737.35,736.17,19.96 +shl,kernel,2000,77,23468,9,851.43,849.91,19.98 +shl,auto,131072,13,403,3,49751.88,49748.33,20.05 +shl,inplace,131072,13,208,3,48260.24,48210.62,20.10 +shl,kernel,131072,13,278,3,72127.40,72126.72,20.05 +shr,auto,1,13,2435315,9,8.20,8.18,19.97 +shr,inplace,1,13,3036299,9,3.26,3.24,19.84 +shr,kernel,1,13,11755186,9,1.70,1.70,20.03 +shr,auto,4,13,1247624,9,16.04,16.00,20.03 +shr,inplace,4,13,2304275,9,4.33,4.28,19.99 +shr,kernel,4,13,5756450,9,3.46,3.45,19.94 +shr,auto,16,13,999565,9,20.03,20.00,20.03 +shr,inplace,16,13,1158772,9,8.66,8.64,20.08 +shr,kernel,16,13,2373929,9,8.37,8.35,19.88 +shr,auto,256,13,160262,9,124.82,124.31,20.01 +shr,inplace,256,13,98457,9,101.74,101.52,20.05 +shr,kernel,256,13,180236,9,110.65,110.50,19.95 +shr,auto,2000,13,26731,9,749.19,748.66,20.02 +shr,inplace,2000,13,13556,9,737.66,735.96,20.00 +shr,kernel,2000,13,24628,9,812.13,812.05,20.00 +shr,auto,2000,77,26560,9,753.55,752.99,20.02 +shr,inplace,2000,77,13545,9,737.60,735.90,19.99 +shr,kernel,2000,77,24094,9,829.41,829.36,19.99 +shr,auto,131072,13,414,3,48304.35,48301.36,20.00 +shr,inplace,131072,13,208,3,48481.13,48414.94,20.26 +shr,kernel,131072,13,263,3,76227.84,76226.26,20.05 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v1_run3.csv b/tests/beman/big_int/perf/item1/x64_vshift_v1_run3.csv new file mode 100644 index 00000000..7781b0a4 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_v1_run3.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1569142,9,12.56,12.43,19.72 +shl,inplace,1,13,2764436,9,3.63,3.62,20.10 +shl,kernel,1,13,9626530,9,2.08,2.08,20.01 +shl,auto,4,13,1500245,9,13.44,13.36,20.15 +shl,inplace,4,13,1991354,9,5.02,4.99,20.10 +shl,kernel,4,13,5772712,9,3.46,3.43,19.95 +shl,auto,16,13,1184111,9,17.02,16.94,20.17 +shl,inplace,16,13,1087725,9,9.11,9.05,19.86 +shl,kernel,16,13,2671512,9,7.46,7.44,19.93 +shl,auto,256,13,163281,9,122.25,122.14,19.96 +shl,inplace,256,13,97215,9,102.57,102.04,19.92 +shl,kernel,256,13,213983,9,93.44,93.12,19.98 +shl,auto,2000,13,25803,9,785.34,772.80,20.19 +shl,inplace,2000,13,13513,9,738.60,735.71,20.00 +shl,kernel,2000,13,27839,9,718.50,718.21,20.01 +shl,auto,2000,77,25802,9,775.00,774.66,20.00 +shl,inplace,2000,77,13539,9,739.01,736.04,20.06 +shl,kernel,2000,77,23337,9,855.19,852.65,19.95 +shl,auto,131072,13,402,3,49770.80,49770.25,20.02 +shl,inplace,131072,13,208,3,48403.35,48372.80,20.15 +shl,kernel,131072,13,277,3,72325.30,72318.99,20.03 +shr,auto,1,13,2439952,9,8.19,8.18,19.99 +shr,inplace,1,13,3066328,9,3.28,3.23,20.17 +shr,kernel,1,13,11693307,9,1.70,1.70,19.94 +shr,auto,4,13,1240725,9,16.11,16.06,20.00 +shr,inplace,4,13,2299100,9,4.33,4.30,19.90 +shr,kernel,4,13,5734050,9,3.47,3.46,19.96 +shr,auto,16,13,996368,9,20.03,20.02,19.98 +shr,inplace,16,13,1158340,9,8.66,8.63,20.08 +shr,kernel,16,13,2390653,9,8.36,8.35,20.02 +shr,auto,256,13,159822,9,125.37,124.93,20.03 +shr,inplace,256,13,98484,9,101.64,101.52,20.05 +shr,kernel,256,13,180794,9,110.51,110.38,19.97 +shr,auto,2000,13,26702,9,749.58,748.97,20.01 +shr,inplace,2000,13,13576,9,737.36,735.92,20.08 +shr,kernel,2000,13,24622,9,812.13,812.01,20.01 +shr,auto,2000,77,26678,9,750.01,749.67,20.01 +shr,inplace,2000,77,13528,9,739.33,737.01,20.00 +shr,kernel,2000,77,24093,9,829.28,829.23,19.98 +shr,auto,131072,13,413,3,48444.86,48319.30,20.00 +shr,inplace,131072,13,208,3,48223.56,48187.90,20.08 +shr,kernel,131072,13,263,3,76072.69,76069.30,20.01 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v2_run1.csv b/tests/beman/big_int/perf/item1/x64_vshift_v2_run1.csv new file mode 100644 index 00000000..23bda094 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_v2_run1.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1584790,9,12.58,12.45,19.97 +shl,inplace,1,13,2896333,9,3.44,3.43,19.95 +shl,kernel,1,13,9624319,9,2.08,2.08,20.04 +shl,auto,4,13,1503123,9,13.41,13.35,20.14 +shl,inplace,4,13,2272262,9,4.36,4.32,19.86 +shl,kernel,4,13,5838995,9,3.45,3.41,20.12 +shl,auto,16,13,1196896,9,16.73,16.71,20.04 +shl,inplace,16,13,1192344,9,8.40,8.36,20.05 +shl,kernel,16,13,2683444,9,7.46,7.44,20.03 +shl,auto,256,13,163646,9,122.04,121.84,19.97 +shl,inplace,256,13,101029,9,98.73,98.61,19.96 +shl,kernel,256,13,213543,9,93.95,93.83,20.06 +shl,auto,2000,13,25848,9,773.57,773.44,20.01 +shl,inplace,2000,13,14027,9,712.51,712.38,19.99 +shl,kernel,2000,13,27728,9,719.01,718.81,19.94 +shl,auto,2000,77,25827,9,774.54,774.41,20.02 +shl,inplace,2000,77,14034,9,712.58,712.32,20.00 +shl,kernel,2000,77,23536,9,852.91,849.91,20.07 +shl,auto,131072,13,401,3,49864.19,49859.68,20.00 +shl,inplace,131072,13,215,3,46915.22,46570.61,20.16 +shl,kernel,131072,13,277,3,72165.39,72161.54,19.99 +shr,auto,1,13,2395400,9,8.35,8.35,20.05 +shr,inplace,1,13,3327060,9,3.00,2.99,20.03 +shr,kernel,1,13,11755128,9,1.70,1.70,20.01 +shr,auto,4,13,1265315,9,15.84,15.80,20.06 +shr,inplace,4,13,2430668,9,4.10,4.08,19.99 +shr,kernel,4,13,5778908,9,3.47,3.46,20.06 +shr,auto,16,13,988854,9,20.25,20.20,20.02 +shr,inplace,16,13,1254654,9,8.01,7.99,20.15 +shr,kernel,16,13,2330092,9,8.58,8.53,19.98 +shr,auto,256,13,149617,9,133.63,133.57,20.00 +shr,inplace,256,13,101189,9,98.61,98.51,19.96 +shr,kernel,256,13,181348,9,110.39,110.28,20.02 +shr,auto,2000,13,25387,9,787.97,787.14,20.03 +shr,inplace,2000,13,14059,9,711.55,711.27,20.01 +shr,kernel,2000,13,24632,9,811.92,811.85,20.00 +shr,auto,2000,77,25307,9,790.02,789.80,20.00 +shr,inplace,2000,77,14000,9,712.12,711.92,19.96 +shr,kernel,2000,77,24079,9,830.58,830.52,20.04 +shr,auto,131072,13,398,3,50322.43,50308.85,20.03 +shr,inplace,131072,13,215,3,46561.42,46559.43,20.02 +shr,kernel,131072,13,263,3,76048.32,76047.04,20.00 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v2_run2.csv b/tests/beman/big_int/perf/item1/x64_vshift_v2_run2.csv new file mode 100644 index 00000000..301ab50a --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_v2_run2.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1595065,9,12.56,12.44,20.04 +shl,inplace,1,13,2901092,9,3.44,3.43,19.97 +shl,kernel,1,13,9625072,9,2.08,2.08,20.00 +shl,auto,4,13,1501801,9,13.39,13.36,20.13 +shl,inplace,4,13,2294814,9,4.32,4.30,19.83 +shl,kernel,4,13,5793487,9,3.45,3.43,19.98 +shl,auto,16,13,1195311,9,16.72,16.68,20.03 +shl,inplace,16,13,1183962,9,8.41,8.37,19.90 +shl,kernel,16,13,2567761,9,7.82,7.79,20.09 +shl,auto,256,13,163888,9,122.03,121.93,20.02 +shl,inplace,256,13,101261,9,98.67,98.58,19.99 +shl,kernel,256,13,214006,9,93.44,93.16,19.99 +shl,auto,2000,13,25854,9,773.70,773.50,20.01 +shl,inplace,2000,13,14035,9,712.61,712.23,20.00 +shl,kernel,2000,13,27827,9,717.96,717.84,19.98 +shl,auto,2000,77,25828,9,774.62,774.46,20.01 +shl,inplace,2000,77,14038,9,712.51,712.39,20.01 +shl,kernel,2000,77,23487,9,852.72,849.92,20.01 +shl,auto,131072,13,401,3,49875.00,49864.40,20.00 +shl,inplace,131072,13,215,3,46565.61,46562.81,20.02 +shl,kernel,131072,13,277,3,72309.63,72301.79,20.03 +shr,auto,1,13,2398460,9,8.35,8.34,20.05 +shr,inplace,1,13,3268428,9,3.02,3.01,19.81 +shr,kernel,1,13,11753617,9,1.70,1.70,20.02 +shr,auto,4,13,1270708,9,15.86,15.79,20.15 +shr,inplace,4,13,2431244,9,4.11,4.09,20.00 +shr,kernel,4,13,5788934,9,3.46,3.46,20.08 +shr,auto,16,13,990216,9,20.24,20.20,20.05 +shr,inplace,16,13,1258359,9,8.00,7.96,20.14 +shr,kernel,16,13,2383862,9,8.37,8.35,19.97 +shr,auto,256,13,150203,9,133.19,133.07,20.02 +shr,inplace,256,13,102059,9,98.22,98.03,20.09 +shr,kernel,256,13,181093,9,110.43,110.31,20.01 +shr,auto,2000,13,25373,9,787.82,787.21,20.00 +shr,inplace,2000,13,14052,9,711.86,711.48,20.01 +shr,kernel,2000,13,24633,9,811.93,811.87,20.00 +shr,auto,2000,77,25338,9,789.74,789.31,20.01 +shr,inplace,2000,77,14010,9,714.08,713.79,20.01 +shr,kernel,2000,77,24071,9,831.04,830.89,20.01 +shr,auto,131072,13,398,3,50332.30,50321.12,20.04 +shr,inplace,131072,13,215,3,46905.10,46543.47,20.16 +shr,kernel,131072,13,263,3,76120.43,76117.83,20.03 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v2_run3.csv b/tests/beman/big_int/perf/item1/x64_vshift_v2_run3.csv new file mode 100644 index 00000000..60fe317a --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_v2_run3.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1595931,9,12.53,12.41,19.99 +shl,inplace,1,13,2922042,9,3.42,3.41,20.01 +shl,kernel,1,13,9626512,9,2.08,2.07,19.99 +shl,auto,4,13,1511110,9,13.36,13.26,20.16 +shl,inplace,4,13,2300337,9,4.31,4.29,19.82 +shl,kernel,4,13,5798258,9,3.46,3.42,20.04 +shl,auto,16,13,1201102,9,16.70,16.63,20.05 +shl,inplace,16,13,1186461,9,8.44,8.35,20.06 +shl,kernel,16,13,2691620,9,7.46,7.45,20.08 +shl,auto,256,13,164209,9,121.85,121.70,20.01 +shl,inplace,256,13,101149,9,98.78,98.58,20.07 +shl,kernel,256,13,214113,9,93.44,93.30,20.03 +shl,auto,2000,13,25867,9,773.33,773.12,20.01 +shl,inplace,2000,13,14032,9,712.55,712.26,20.00 +shl,kernel,2000,13,27691,9,718.04,717.97,19.90 +shl,auto,2000,77,25829,9,774.28,774.13,20.02 +shl,inplace,2000,77,14035,9,712.36,712.09,20.00 +shl,kernel,2000,77,23404,9,852.20,848.88,19.94 +shl,auto,131072,13,402,3,49863.03,49860.41,20.05 +shl,inplace,131072,13,215,3,46560.96,46558.16,20.02 +shl,kernel,131072,13,277,3,72321.32,72303.60,20.05 +shr,auto,1,13,2394029,9,8.35,8.34,20.00 +shr,inplace,1,13,3281846,9,3.05,3.02,19.94 +shr,kernel,1,13,11755631,9,1.70,1.70,20.02 +shr,auto,4,13,1263017,9,15.85,15.81,20.03 +shr,inplace,4,13,2429467,9,4.12,4.10,20.01 +shr,kernel,4,13,5764147,9,3.47,3.47,20.01 +shr,auto,16,13,988679,9,20.24,20.19,20.02 +shr,inplace,16,13,1247349,9,8.00,7.93,20.00 +shr,kernel,16,13,2383745,9,8.39,8.37,20.02 +shr,auto,256,13,149779,9,133.62,133.30,20.01 +shr,inplace,256,13,101743,9,98.31,97.97,20.02 +shr,kernel,256,13,181241,9,110.38,110.23,20.01 +shr,auto,2000,13,25376,9,788.17,787.27,20.00 +shr,inplace,2000,13,14028,9,711.50,711.08,19.96 +shr,kernel,2000,13,24618,9,812.32,812.29,20.02 +shr,auto,2000,77,25293,9,790.38,789.57,20.00 +shr,inplace,2000,77,14038,9,712.05,711.91,20.00 +shr,kernel,2000,77,24093,9,830.10,830.08,20.01 +shr,auto,131072,13,398,3,50321.17,50306.54,20.03 +shr,inplace,131072,13,215,3,46567.50,46563.40,20.03 +shr,kernel,131072,13,263,3,76270.68,76269.11,20.08 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v3_run1.csv b/tests/beman/big_int/perf/item1/x64_vshift_v3_run1.csv new file mode 100644 index 00000000..96e0e398 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_v3_run1.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1613625,9,12.63,12.53,20.35 +shl,inplace,1,13,2920594,9,3.44,3.42,20.09 +shl,kernel,1,13,9626368,9,2.08,2.08,20.01 +shl,auto,4,13,1505955,9,13.37,13.33,20.14 +shl,inplace,4,13,2288866,9,4.39,4.36,20.12 +shl,kernel,4,13,5788796,9,3.45,3.42,19.97 +shl,auto,16,13,1191934,9,16.75,16.73,19.98 +shl,inplace,16,13,1190701,9,8.43,8.38,20.09 +shl,kernel,16,13,2683856,9,7.46,7.45,20.03 +shl,auto,256,13,163975,9,121.89,121.69,20.00 +shl,inplace,256,13,101228,9,98.69,98.55,19.97 +shl,kernel,256,13,212960,9,93.99,93.91,20.02 +shl,auto,2000,13,25859,9,773.69,773.33,20.01 +shl,inplace,2000,13,14035,9,712.77,712.51,20.02 +shl,kernel,2000,13,27817,9,719.08,718.77,20.02 +shl,auto,2000,77,25827,9,774.47,774.32,20.01 +shl,inplace,2000,77,14031,9,712.49,712.26,20.00 +shl,kernel,2000,77,23364,9,851.80,850.08,19.90 +shl,auto,131072,13,401,3,49854.99,49851.96,20.02 +shl,inplace,131072,13,215,3,46541.56,46538.81,20.01 +shl,kernel,131072,13,277,3,72281.85,72277.82,20.02 +shr,auto,1,13,2395228,9,8.35,8.34,19.99 +shr,inplace,1,13,3337811,9,3.03,3.00,20.18 +shr,kernel,1,13,11755641,9,1.70,1.70,20.01 +shr,auto,4,13,1242391,9,16.15,15.81,19.98 +shr,inplace,4,13,2445361,9,4.10,4.08,20.10 +shr,kernel,4,13,5780801,9,3.46,3.44,19.97 +shr,auto,16,13,988112,9,20.26,20.21,20.04 +shr,inplace,16,13,1241915,9,8.00,7.96,19.91 +shr,kernel,16,13,2301797,9,8.69,8.36,19.83 +shr,auto,256,13,150062,9,133.76,133.48,20.21 +shr,inplace,256,13,101856,9,98.25,98.16,20.03 +shr,kernel,256,13,181294,9,110.38,110.32,20.07 +shr,auto,2000,13,25381,9,788.39,788.01,20.02 +shr,inplace,2000,13,14049,9,711.67,711.33,20.00 +shr,kernel,2000,13,24523,9,811.92,811.86,19.91 +shr,auto,2000,77,25320,9,790.04,789.80,20.01 +shr,inplace,2000,77,14042,9,712.13,711.90,20.00 +shr,kernel,2000,77,23930,9,830.69,830.63,19.88 +shr,auto,131072,13,398,3,50309.94,50299.98,20.03 +shr,inplace,131072,13,215,3,46607.60,46557.56,20.04 +shr,kernel,131072,13,262,3,76160.78,76158.74,19.98 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v3_run2.csv b/tests/beman/big_int/perf/item1/x64_vshift_v3_run2.csv new file mode 100644 index 00000000..2048b21c --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_v3_run2.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1583657,9,12.64,12.52,20.03 +shl,inplace,1,13,2909128,9,3.44,3.42,20.00 +shl,kernel,1,13,9626486,9,2.08,2.08,20.00 +shl,auto,4,13,1504026,9,13.41,13.32,20.14 +shl,inplace,4,13,2315447,9,4.32,4.29,20.01 +shl,kernel,4,13,5782453,9,3.46,3.43,19.98 +shl,auto,16,13,1197078,9,16.73,16.70,20.02 +shl,inplace,16,13,1190455,9,8.41,8.37,20.03 +shl,kernel,16,13,2554356,9,7.82,7.76,19.96 +shl,auto,256,13,163785,9,121.89,121.79,19.97 +shl,inplace,256,13,101249,9,98.69,98.58,19.99 +shl,kernel,256,13,213118,9,93.40,93.28,19.94 +shl,auto,2000,13,25860,9,773.53,773.35,20.00 +shl,inplace,2000,13,14034,9,712.62,712.37,20.00 +shl,kernel,2000,13,27849,9,718.32,717.89,20.03 +shl,auto,2000,77,25823,9,774.48,774.25,20.00 +shl,inplace,2000,77,14029,9,712.97,712.70,20.01 +shl,kernel,2000,77,23526,9,852.30,850.10,20.09 +shl,auto,131072,13,401,3,49879.59,49875.44,20.00 +shl,inplace,131072,13,215,3,46564.65,46559.91,20.02 +shl,kernel,131072,13,277,3,72241.65,72232.62,20.01 +shr,auto,1,13,2396248,9,8.35,8.34,20.02 +shr,inplace,1,13,3321969,9,3.02,2.99,20.07 +shr,kernel,1,13,11673271,9,1.70,1.70,19.88 +shr,auto,4,13,1270762,9,15.83,15.76,20.11 +shr,inplace,4,13,2437400,9,4.11,4.09,20.02 +shr,kernel,4,13,5772484,9,3.47,3.46,20.05 +shr,auto,16,13,988392,9,20.25,20.20,20.02 +shr,inplace,16,13,1246424,9,8.01,7.97,19.96 +shr,kernel,16,13,2391499,9,8.36,8.35,20.01 +shr,auto,256,13,149802,9,133.65,133.44,20.02 +shr,inplace,256,13,101816,9,98.34,98.25,20.03 +shr,kernel,256,13,181104,9,110.36,110.29,20.00 +shr,auto,2000,13,25399,9,787.84,787.44,20.01 +shr,inplace,2000,13,14046,9,711.97,711.41,20.00 +shr,kernel,2000,13,24634,9,812.03,811.86,20.07 +shr,auto,2000,77,25400,9,787.07,786.18,20.02 +shr,inplace,2000,77,14015,9,712.20,711.97,19.97 +shr,kernel,2000,77,24081,9,830.61,830.54,20.01 +shr,auto,131072,13,398,3,50313.51,50299.43,20.03 +shr,inplace,131072,13,215,3,46537.32,46536.81,20.01 +shr,kernel,131072,13,263,3,76147.46,76132.98,20.05 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v3_run3.csv b/tests/beman/big_int/perf/item1/x64_vshift_v3_run3.csv new file mode 100644 index 00000000..ecae7be0 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64_vshift_v3_run3.csv @@ -0,0 +1,43 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1586159,9,12.59,12.53,20.02 +shl,inplace,1,13,2900663,9,3.45,3.43,20.01 +shl,kernel,1,13,9672489,9,2.08,2.08,20.10 +shl,auto,4,13,1493808,9,13.41,13.37,20.03 +shl,inplace,4,13,2316444,9,4.33,4.32,20.13 +shl,kernel,4,13,5801045,9,3.46,3.43,20.09 +shl,auto,16,13,1192872,9,16.78,16.70,20.04 +shl,inplace,16,13,1192365,9,8.42,8.36,20.07 +shl,kernel,16,13,2676274,9,7.47,7.45,19.98 +shl,auto,256,13,163719,9,121.72,121.47,19.93 +shl,inplace,256,13,101400,9,98.71,98.56,20.02 +shl,kernel,256,13,214157,9,93.42,93.32,20.01 +shl,auto,2000,13,25860,9,773.52,773.29,20.01 +shl,inplace,2000,13,14036,9,712.63,712.53,20.01 +shl,kernel,2000,13,27823,9,718.95,718.77,20.05 +shl,auto,2000,77,25839,9,774.28,774.13,20.01 +shl,inplace,2000,77,14037,9,712.48,712.24,20.01 +shl,kernel,2000,77,23467,9,851.48,851.31,19.98 +shl,auto,131072,13,401,3,49877.81,49855.59,20.02 +shl,inplace,131072,13,215,3,46554.86,46554.11,20.06 +shl,kernel,131072,13,277,3,72302.95,72297.44,20.03 +shr,auto,1,13,2395967,9,8.35,8.34,20.01 +shr,inplace,1,13,3343782,9,3.03,3.02,20.28 +shr,kernel,1,13,11756115,9,1.70,1.70,20.04 +shr,auto,4,13,1259608,9,15.84,15.79,19.95 +shr,inplace,4,13,2438857,9,4.13,4.11,20.12 +shr,kernel,4,13,5723886,9,3.47,3.47,19.87 +shr,auto,16,13,985887,9,20.25,20.21,19.97 +shr,inplace,16,13,1245236,9,8.00,7.97,19.96 +shr,kernel,16,13,2301402,9,8.70,8.69,20.02 +shr,auto,256,13,149668,9,133.70,133.49,20.01 +shr,inplace,256,13,101745,9,98.36,98.17,20.01 +shr,kernel,256,13,181291,9,110.43,110.31,20.02 +shr,auto,2000,13,25375,9,788.00,787.49,20.00 +shr,inplace,2000,13,14049,9,711.60,711.35,20.00 +shr,kernel,2000,13,24489,9,816.70,816.61,20.00 +shr,auto,2000,77,25329,9,790.35,789.75,20.04 +shr,inplace,2000,77,14047,9,712.09,711.83,20.01 +shr,kernel,2000,77,24081,9,830.63,830.52,20.00 +shr,auto,131072,13,398,3,50435.84,50321.49,20.07 +shr,inplace,131072,13,215,3,46580.59,46577.71,20.03 +shr,kernel,131072,13,263,3,76377.25,76333.08,20.12 diff --git a/tests/beman/big_int/perf/item1/x64r3_base64_seed1a.csv b/tests/beman/big_int/perf/item1/x64r3_base64_seed1a.csv new file mode 100644 index 00000000..0a7f3cec --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_base64_seed1a.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T17:51:51Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2460101,9,8.22,8.19,20.25 +add,inplace,1,1,2409595,9,4.15,4.14,20.03 +add,kernel,1,1,10587848,9,1.89,1.89,20.00 +add,floor,1,1,2021535,9,9.87,9.82,19.96 +add,gmp,1,1,8821834,9,2.27,2.27,20.00 +add,gmpz,1,1,4812977,9,4.16,4.16,20.02 +add,auto,2,2,1120287,9,17.89,17.86,20.06 +add,inplace,2,2,1661605,9,5.93,5.85,19.70 +add,kernel,2,2,8340684,9,2.37,2.34,19.74 +add,floor,2,2,1948119,9,10.21,10.20,19.91 +add,gmp,2,2,8809787,9,2.27,2.27,20.03 +add,gmpz,2,2,4771845,9,4.20,4.19,20.03 +add,auto,4,4,1106345,9,18.09,18.01,20.00 +add,inplace,4,4,1774849,9,5.66,5.63,20.07 +add,kernel,4,4,6305711,9,3.13,3.09,19.76 +add,floor,4,4,1822571,9,10.98,10.97,20.03 +add,gmp,4,4,7857753,9,2.54,2.54,20.03 +add,gmpz,4,4,4516815,9,4.43,4.43,20.01 +add,auto,8,8,1029454,9,19.40,19.35,19.98 +add,inplace,8,8,1351194,9,7.40,7.38,19.97 +add,kernel,8,8,4328385,9,4.63,4.61,20.07 +add,floor,8,8,1598288,9,12.51,12.51,20.01 +add,gmp,8,8,4342707,9,4.61,4.60,20.00 +add,gmpz,8,8,4219322,9,4.77,4.74,20.16 +add,auto,16,16,786235,9,25.15,25.12,19.80 +add,inplace,16,16,844213,9,11.78,11.75,19.94 +add,kernel,16,16,2606697,9,7.65,7.64,19.96 +add,floor,16,16,1280653,9,15.59,15.59,19.97 +add,gmp,16,16,3642455,9,5.50,5.48,20.03 +add,gmpz,16,16,3061613,9,6.56,6.55,20.09 +add,auto,64,64,311614,9,63.63,63.30,19.83 +add,inplace,64,64,256332,9,38.91,38.75,19.93 +add,kernel,64,64,603273,9,33.19,33.16,20.03 +add,floor,64,64,485165,9,41.29,40.77,20.03 +add,gmp,64,64,1290619,9,15.45,15.45,19.95 +add,gmpz,64,64,1212631,9,16.49,16.46,19.99 +add,auto,256,256,89257,9,223.80,223.72,19.98 +add,inplace,256,256,68436,9,146.07,146.02,20.01 +add,kernel,256,256,140178,9,142.56,142.54,19.99 +add,floor,256,256,126030,9,158.75,158.62,20.01 +add,gmp,256,256,255648,9,78.24,78.23,20.02 +add,gmpz,256,256,251606,9,79.49,79.40,19.99 +add,auto,1024,1024,23769,9,841.69,841.53,20.02 +add,inplace,1024,1024,17155,9,582.94,582.85,20.00 +add,kernel,1024,1024,34571,9,578.48,578.38,20.00 +add,floor,1024,1024,33640,9,594.33,594.08,20.00 +add,gmp,1024,1024,51141,9,391.11,391.09,20.02 +add,gmpz,1024,1024,51015,9,392.05,392.02,20.02 +add,auto,2000,2000,11614,9,1721.96,1721.70,20.03 +add,inplace,2000,2000,8791,9,1135.59,1135.54,19.97 +add,kernel,2000,2000,17539,9,1133.33,1133.23,19.88 +add,floor,2000,2000,17375,9,1150.94,1150.77,20.00 +add,gmp,2000,2000,42553,9,470.04,470.00,20.02 +add,gmpz,2000,2000,41457,9,482.36,480.84,19.99 +add,auto,1024,1,71249,9,280.68,280.32,20.00 +add,inplace,1024,1,17250,9,579.78,579.70,20.00 +add,kernel,1024,1,34618,9,577.70,577.69,20.07 +add,floor,1024,1,33697,9,593.58,593.51,20.01 +add,gmp,1024,1,85989,9,232.64,232.53,20.00 +add,gmpz,1024,1,85488,9,233.98,233.54,20.01 +sub,auto,1,1,2197405,9,9.13,9.08,20.11 +sub,inplace,1,1,2474257,9,4.04,4.02,20.02 +sub,kernel,1,1,13236342,9,1.51,1.51,20.00 +sub,floor,1,1,10589090,9,1.90,1.89,20.11 +sub,gmp,1,1,8779101,9,2.27,2.27,19.91 +sub,gmpz,1,1,4585179,9,4.34,4.34,19.93 +sub,auto,2,2,1040723,9,19.17,19.12,19.98 +sub,inplace,2,2,2134251,9,4.67,4.66,19.95 +sub,kernel,2,2,9544077,9,2.08,2.08,19.88 +sub,floor,2,2,1997601,9,10.01,10.01,20.00 +sub,gmp,2,2,8809804,9,2.27,2.27,19.97 +sub,gmpz,2,2,4563998,9,4.39,4.37,20.03 +sub,auto,4,4,1062911,9,18.93,18.81,20.08 +sub,inplace,4,4,1827269,9,5.48,5.47,20.08 +sub,kernel,4,4,6923261,9,2.88,2.84,19.93 +sub,floor,4,4,1853232,9,10.80,10.79,20.03 +sub,gmp,4,4,7903019,9,2.52,2.51,19.93 +sub,gmpz,4,4,4277822,9,4.64,4.63,19.87 +sub,auto,8,8,974306,9,20.55,20.46,20.04 +sub,inplace,8,8,1375938,9,7.26,7.25,19.98 +sub,kernel,8,8,4522663,9,4.43,4.40,20.04 +sub,floor,8,8,1612661,9,12.40,12.38,20.01 +sub,gmp,8,8,5427273,9,3.68,3.68,19.99 +sub,gmpz,8,8,3906320,9,5.07,5.02,19.77 +sub,auto,16,16,777836,9,25.91,25.65,20.14 +sub,inplace,16,16,934188,9,10.71,10.69,20.01 +sub,kernel,16,16,2492311,9,8.03,8.03,20.01 +sub,floor,16,16,1290962,9,15.46,15.44,19.96 +sub,gmp,16,16,3613794,9,5.50,5.50,19.88 +sub,gmpz,16,16,2942348,9,6.82,6.80,20.11 +sub,auto,64,64,299617,9,66.77,66.62,20.01 +sub,inplace,64,64,263155,9,37.27,36.93,19.66 +sub,kernel,64,64,605109,9,32.93,32.88,19.92 +sub,floor,64,64,474519,9,41.95,41.70,19.91 +sub,gmp,64,64,1292652,9,15.45,15.45,19.97 +sub,gmpz,64,64,1194286,9,16.75,16.71,20.00 +sub,auto,256,256,89091,9,224.53,224.14,20.01 +sub,inplace,256,256,68717,9,145.49,145.30,20.04 +sub,kernel,256,256,140008,9,142.84,142.78,20.00 +sub,floor,256,256,126350,9,158.44,158.17,20.02 +sub,gmp,256,256,255657,9,78.23,78.22,20.00 +sub,gmpz,256,256,249493,9,80.20,80.05,20.01 +sub,auto,1024,1024,23729,9,842.55,842.27,19.99 +sub,inplace,1024,1024,17173,9,582.34,582.29,20.00 +sub,kernel,1024,1024,34592,9,578.19,578.12,20.00 +sub,floor,1024,1024,33623,9,594.56,593.85,19.99 +sub,gmp,1024,1024,51301,9,389.87,389.85,20.05 +sub,gmpz,1024,1024,50919,9,392.77,392.73,20.00 +sub,auto,2000,2000,11476,9,1742.51,1742.19,20.01 +sub,inplace,2000,2000,8818,9,1134.14,1133.86,20.02 +sub,kernel,2000,2000,17647,9,1133.38,1133.37,20.01 +sub,floor,2000,2000,17380,9,1150.50,1150.13,20.00 +sub,gmp,2000,2000,43725,9,457.41,457.41,20.00 +sub,gmpz,2000,2000,41567,9,481.11,479.52,19.99 +sub,auto,1024,1,70388,9,283.98,283.37,19.99 +sub,inplace,1024,1,17210,9,581.05,580.91,20.00 +sub,kernel,1024,1,34675,9,576.78,576.76,20.00 +sub,floor,1024,1,33721,9,593.31,593.08,20.01 +sub,gmp,1024,1,85558,9,233.82,233.69,20.01 +sub,gmpz,1024,1,85455,9,234.04,233.74,20.00 +shl,auto,1,13,1202983,9,16.92,16.71,20.35 +shl,inplace,1,13,2402133,9,4.13,4.10,19.82 +shl,kernel,1,13,9626189,9,2.08,2.06,19.95 +shl,kernelip,1,13,5746809,9,1.76,1.72,20.21 +shl,floor,1,13,2077422,9,9.82,9.82,20.41 +shl,gmp,1,13,9488127,9,1.93,1.92,18.27 +shl,gmpz,1,13,5771536,9,3.47,3.47,20.01 +shl,auto,4,13,1070341,9,18.71,18.49,19.98 +shl,inplace,4,13,1901316,9,5.26,5.24,20.02 +shl,kernel,4,13,5811299,9,3.47,3.44,20.16 +shl,kernelip,4,13,3349191,9,2.99,2.97,20.04 +shl,floor,4,13,1726034,9,11.24,11.21,19.41 +shl,gmp,4,13,7991632,9,2.31,2.31,18.48 +shl,gmpz,4,13,4946569,9,4.04,4.04,20.00 +shl,auto,16,13,815259,9,24.55,24.30,19.97 +shl,inplace,16,13,1065187,9,9.36,9.34,19.95 +shl,kernel,16,13,2615923,9,7.65,7.62,20.00 +shl,kernelip,16,13,1372585,9,7.27,7.21,19.99 +shl,floor,16,13,1260485,9,15.43,15.37,19.44 +shl,gmp,16,13,4895407,9,4.05,4.05,19.96 +shl,gmpz,16,13,3062940,9,6.43,6.41,19.72 +shl,auto,256,13,147008,9,136.11,135.87,20.02 +shl,inplace,256,13,106971,9,93.04,92.79,19.90 +shl,kernel,256,13,210532,9,95.16,94.83,20.03 +shl,kernelip,256,13,102274,9,97.77,97.70,20.01 +shl,floor,256,13,174444,9,116.65,116.42,20.35 +shl,gmp,256,13,423370,9,47.75,47.58,20.21 +shl,gmpz,256,13,394384,9,50.55,50.32,19.96 +shl,auto,2000,13,21812,9,917.46,915.72,20.01 +shl,inplace,2000,13,15231,9,656.91,656.28,20.02 +shl,kernel,2000,13,27836,9,718.43,718.24,20.00 +shl,kernelip,2000,13,13980,9,715.34,715.31,20.00 +shl,floor,2000,13,27244,9,737.70,737.51,20.10 +shl,gmp,2000,13,59645,9,335.48,335.38,20.02 +shl,gmpz,2000,13,59069,9,339.10,338.58,20.04 +shl,auto,2000,77,18773,9,1066.03,1064.68,20.02 +shl,inplace,2000,77,13079,9,764.63,764.15,20.06 +shl,kernel,2000,77,23480,9,850.38,848.80,19.96 +shl,kernelip,2000,77,12158,9,822.56,822.24,20.01 +shl,floor,2000,77,22968,9,871.94,870.96,20.03 +shl,gmp,2000,77,58714,9,341.49,339.91,20.04 +shl,gmpz,2000,77,57932,9,345.16,344.45,19.99 +shr,auto,1,13,1954037,9,10.29,10.18,20.09 +shr,inplace,1,13,2739414,9,3.63,3.60,19.94 +shr,kernel,1,13,11751893,9,1.70,1.70,20.01 +shr,floor,1,13,8809961,9,2.27,2.27,20.01 +shr,gmp,1,13,10417284,9,1.92,1.92,20.05 +shr,gmpz,1,13,6109564,9,3.27,3.27,20.01 +shr,auto,4,13,952412,9,20.98,20.86,19.98 +shr,inplace,4,13,2103064,9,4.79,4.74,20.13 +shr,kernel,4,13,5775015,9,3.47,3.46,20.06 +shr,floor,4,13,1673340,9,11.97,11.94,20.03 +shr,gmp,4,13,8656928,9,2.33,2.31,20.20 +shr,gmpz,4,13,5034992,9,3.96,3.94,19.93 +shr,auto,16,13,775228,9,25.79,25.70,20.01 +shr,inplace,16,13,1114266,9,8.98,8.94,20.01 +shr,kernel,16,13,2388443,9,8.20,8.12,19.58 +shr,floor,16,13,1169430,9,17.15,17.10,20.05 +shr,gmp,16,13,4253359,9,4.72,4.70,20.06 +shr,gmpz,16,13,2711729,9,7.27,7.26,19.90 +shr,auto,256,13,143010,9,139.70,139.53,19.98 +shr,inplace,256,13,106693,9,93.79,93.63,20.02 +shr,kernel,256,13,181584,9,110.29,110.20,20.04 +shr,floor,256,13,151975,9,131.56,130.99,19.97 +shr,gmp,256,13,403968,9,49.48,49.40,19.99 +shr,gmpz,256,13,391861,9,51.05,50.82,20.00 +shr,auto,2000,13,21039,9,949.78,948.54,19.99 +shr,inplace,2000,13,15211,9,657.43,656.61,20.00 +shr,kernel,2000,13,24637,9,811.80,811.78,20.00 +shr,floor,2000,13,24038,9,832.66,832.22,20.06 +shr,gmp,2000,13,59216,9,336.49,335.87,19.96 +shr,gmpz,2000,13,58942,9,339.85,338.80,20.03 +shr,auto,2000,77,18330,9,1083.21,1082.18,19.86 +shr,inplace,2000,77,13072,9,765.29,764.60,20.01 +shr,kernel,2000,77,24152,9,828.18,828.10,20.01 +shr,floor,2000,77,23513,9,850.48,850.24,20.00 +shr,gmp,2000,77,59535,9,336.49,335.92,20.03 +shr,gmpz,2000,77,58853,9,340.81,339.81,20.10 +mul,auto,1,1,990501,9,19.44,19.40,19.26 +mul,gmp,1,1,5870967,9,3.39,3.36,19.86 +mul,gmpz,1,1,4937274,9,4.04,4.04,19.95 +mul,auto,2,2,706674,9,28.38,28.06,20.07 +mul,kernel,2,2,2805749,9,7.60,7.57,21.31 +mul,floor,2,2,1329662,9,15.10,15.00,20.12 +mul,gmp,2,2,5243724,9,3.84,3.81,20.11 +mul,gmpz,2,2,3247928,9,6.13,6.10,19.94 +mul,auto,3,3,675788,9,29.62,29.47,20.02 +mul,kernel,3,3,2356104,9,9.02,9.00,21.27 +mul,floor,3,3,1210835,9,16.62,16.53,20.14 +mul,gmp,3,3,2536380,9,7.98,7.81,20.14 +mul,gmpz,3,3,1989218,9,10.03,10.01,19.96 +mul,auto,4,4,625401,9,31.90,31.76,19.96 +mul,kernel,4,4,1892713,9,11.11,11.09,21.03 +mul,floor,4,4,1087967,9,18.57,18.41,20.20 +mul,gmp,4,4,2058088,9,9.71,9.68,20.00 +mul,gmpz,4,4,1631186,9,12.27,12.21,19.99 +mul,auto,6,6,474442,9,42.00,41.71,19.92 +mul,kernel,6,6,1193195,9,17.49,17.48,20.90 +mul,floor,6,6,807435,9,24.69,24.58,19.93 +mul,gmp,6,6,1250040,9,15.96,15.95,19.97 +mul,gmpz,6,6,1099149,9,18.21,18.18,20.01 +mul,auto,8,8,422159,9,47.38,47.26,20.02 +mul,kernel,8,8,779281,9,25.59,25.45,19.99 +mul,floor,8,8,607785,9,32.63,32.54,19.84 +mul,gmp,8,8,729707,9,27.17,26.98,19.82 +mul,gmpz,8,8,678124,9,29.36,29.14,19.95 +mul,auto,12,12,283710,9,70.53,70.46,20.02 +mul,kernel,12,12,421844,9,47.97,47.91,20.23 +mul,floor,12,12,364608,9,55.03,54.96,20.07 +mul,gmp,12,12,405080,9,49.27,49.04,19.95 +mul,gmpz,12,12,387763,9,51.61,51.51,20.02 +mul,auto,16,16,192763,9,103.83,103.69,20.01 +mul,kernel,16,16,250134,9,80.63,80.57,20.16 +mul,floor,16,16,229373,9,87.39,87.28,20.05 +mul,gmp,16,16,243959,9,82.04,81.88,20.02 +mul,gmpz,16,16,237223,9,84.34,84.17,20.00 +mul,auto,32,32,94558,9,211.51,210.92,19.99 +mul,kernel,32,32,104215,9,188.09,187.90,19.61 +mul,floor,32,32,98990,9,202.15,201.61,20.03 +mul,gmp,32,32,73337,9,272.71,272.62,20.02 +mul,gmpz,32,32,72465,9,275.85,275.35,19.98 +mul,auto,64,64,37575,9,531.60,530.58,19.99 +mul,kernel,64,64,41396,9,481.01,480.55,19.92 +mul,floor,64,64,40795,9,490.81,490.16,20.03 +mul,gmp,64,64,22730,9,879.97,879.78,20.01 +mul,gmpz,64,64,21959,9,909.46,907.82,19.98 +mul,auto,128,128,11519,9,1737.01,1735.08,20.01 +mul,kernel,128,128,11576,9,1722.58,1720.48,19.95 +mul,floor,128,128,11647,9,1717.26,1713.69,20.00 +mul,gmp,128,128,7246,9,2760.23,2759.55,20.01 +mul,gmpz,128,128,7250,9,2757.95,2756.55,19.99 +mul,auto,256,256,3205,9,6244.70,6237.72,20.01 +mul,kernel,256,256,3214,9,6252.70,6169.31,20.05 +mul,floor,256,256,3177,9,6279.19,6232.55,19.97 +mul,gmp,256,256,2522,9,7923.70,7922.12,19.99 +mul,gmpz,256,256,2519,9,7935.03,7897.71,19.98 +mul,auto,512,512,1041,9,19226.39,19187.81,20.04 +mul,kernel,512,512,1047,9,19109.63,19097.02,20.03 +mul,floor,512,512,1045,9,19161.84,19124.87,20.02 +mul,gmp,512,512,940,9,21231.74,21090.78,19.94 +mul,gmpz,512,512,946,9,21096.27,21056.00,19.97 +mul,auto,1000,1000,335,9,59878.43,59824.04,20.06 +mul,kernel,1000,1000,337,9,59508.14,59462.10,20.07 +mul,floor,1000,1000,335,9,59629.41,59587.41,19.98 +mul,gmp,1000,1000,366,9,54541.17,54082.51,19.96 +mul,gmpz,1000,1000,374,9,53633.90,53490.49,20.05 +mul,auto,2000,2000,113,9,177065.12,176955.01,20.04 +mul,kernel,2000,2000,114,9,176273.05,176194.25,20.10 +mul,floor,2000,2000,114,9,176055.41,175914.75,20.07 +mul,gmp,2000,2000,136,9,145574.85,144662.31,19.80 +mul,gmpz,2000,2000,139,9,144579.08,144507.35,20.09 +mul,auto,2000,100,1115,9,17945.04,17938.23,20.01 +mul,kernel,2000,100,1096,9,17804.29,17673.96,19.56 +mul,floor,2000,100,1119,9,17810.83,17677.79,19.92 +mul,gmp,2000,100,551,9,36362.85,36316.31,20.04 +mul,gmpz,2000,100,551,9,36311.42,36253.84,20.02 +sqr,auto,4,4,601003,9,33.24,33.17,20.00 +sqr,kernel,4,4,2184937,9,9.07,9.04,19.83 +sqr,floor,4,4,1208125,9,16.90,16.89,20.43 +sqr,gmp,4,4,3424692,9,5.79,5.76,19.86 +sqr,gmpz,4,4,2267802,9,8.83,8.76,20.09 +sqr,auto,16,16,249427,9,80.25,80.09,20.02 +sqr,kernel,16,16,342088,9,58.51,58.48,20.03 +sqr,floor,16,16,316720,9,62.76,62.73,19.90 +sqr,gmp,16,16,393783,9,50.76,50.50,19.99 +sqr,gmpz,16,16,377735,9,52.91,52.43,19.96 +sqr,auto,64,64,66568,9,301.32,300.27,20.05 +sqr,kernel,64,64,73504,9,272.02,271.82,20.00 +sqr,floor,64,64,72089,9,282.37,282.08,20.38 +sqr,gmp,64,64,35668,9,560.49,560.37,20.00 +sqr,gmpz,64,64,35623,9,561.38,561.16,20.01 +sqr,auto,512,512,1880,9,10626.25,10619.57,19.98 +sqr,kernel,512,512,1899,9,10536.88,10532.74,20.01 +sqr,floor,512,512,1896,9,10551.45,10543.75,20.01 +sqr,gmp,512,512,1297,9,15337.80,15170.00,19.87 +sqr,gmpz,512,512,1324,9,15108.28,15102.17,20.00 +sqr,auto,2000,2000,199,9,100490.97,100304.38,19.99 +sqr,kernel,2000,2000,201,9,99492.16,99360.77,20.00 +sqr,floor,2000,2000,201,9,99351.19,99317.83,19.98 +sqr,gmp,2000,2000,196,9,100759.27,100570.11,19.80 +sqr,gmpz,2000,2000,199,9,100640.55,100594.22,20.03 +divrem,auto,2,1,468837,9,42.68,42.53,20.01 +divrem,kernel,2,1,3651768,9,5.50,5.47,20.12 +divrem,floor,2,1,1569639,9,12.78,12.75,20.06 +divrem,gmp,2,1,2304802,9,8.68,8.67,20.02 +divrem,gmpz,2,1,1496166,9,13.36,13.30,19.98 +divrem,auto,8,4,185482,9,107.69,107.38,19.98 +divrem,kernel,8,4,472664,9,42.43,42.07,20.06 +divrem,floor,8,4,361313,9,54.71,54.52,19.77 +divrem,gmp,8,4,498233,9,39.95,39.67,19.91 +divrem,gmpz,8,4,480642,9,41.53,41.26,19.97 +divrem,auto,32,16,53716,9,372.35,371.64,20.01 +divrem,kernel,32,16,69088,9,289.34,288.92,20.00 +divrem,floor,32,16,65942,9,303.58,302.70,20.01 +divrem,gmp,32,16,103675,9,192.72,192.28,19.98 +divrem,gmpz,32,16,102663,9,195.21,194.38,20.04 +divrem,auto,128,64,5974,9,3385.25,3358.28,20.22 +divrem,kernel,128,64,6186,9,3235.59,3231.28,20.03 +divrem,floor,128,64,5958,9,3361.12,3342.95,20.01 +divrem,gmp,128,64,11623,9,1719.39,1718.62,19.98 +divrem,gmpz,128,64,11608,9,1722.88,1722.30,20.00 +divrem,auto,512,256,672,9,29781.01,29776.47,20.02 +divrem,kernel,512,256,672,9,29623.25,29607.88,19.91 +divrem,floor,512,256,678,9,29520.14,29514.41,20.01 +divrem,gmp,512,256,1227,9,16284.97,16280.53,19.98 +divrem,gmpz,512,256,1227,9,16311.46,16310.75,20.02 +divrem,auto,2000,1000,109,9,184999.72,184936.98,20.17 +divrem,kernel,2000,1000,109,9,183755.50,183694.95,20.04 +divrem,floor,2000,1000,109,9,183741.23,183695.15,20.03 +divrem,gmp,2000,1000,145,9,137761.54,137722.26,19.98 +divrem,gmpz,2000,1000,146,9,137830.84,137780.84,20.13 +divrem,auto,4000,2000,42,9,478977.88,478881.19,20.12 +divrem,kernel,4000,2000,42,9,477096.81,476672.33,20.04 +divrem,floor,4000,2000,42,9,476611.29,476444.55,20.04 +divrem,gmp,4000,2000,59,9,340295.25,339231.02,20.08 +divrem,gmpz,4000,2000,59,9,339517.83,338661.95,20.03 +divrem,auto,2000,100,137,9,146715.70,146446.01,20.10 +divrem,kernel,2000,100,139,9,144471.48,144356.91,20.08 +divrem,floor,2000,100,135,9,148004.76,147374.54,20.00 +divrem,gmp,2000,100,276,9,72568.99,72542.32,20.04 +divrem,gmpz,2000,100,275,9,72948.52,72870.40,20.10 +divrem,auto,65536,1,103,9,194306.22,188065.51,19.89 +divrem,kernel,65536,1,120,9,167188.84,167088.84,20.06 +divrem,floor,65536,1,114,9,174742.37,174633.34,19.92 +divrem,gmp,65536,1,136,9,148095.46,148090.51,20.14 +divrem,gmpz,65536,1,136,9,148114.25,148107.36,20.15 +tochars,auto,1,10,1355384,9,14.75,14.74,20.03 +tochars,kernel,1,10,321427,9,62.10,62.01,19.97 +tochars,gmp,1,10,966714,9,20.66,20.48,19.97 +tochars,gmpz,1,10,593817,9,33.80,33.66,20.07 +tochars,auto,4,10,156285,9,127.59,127.15,19.96 +tochars,kernel,4,10,109751,9,181.24,178.74,19.86 +tochars,gmp,4,10,292207,9,68.43,68.38,19.99 +tochars,gmpz,4,10,209613,9,95.48,95.29,20.02 +tochars,auto,16,10,17125,9,1172.01,1168.17,20.06 +tochars,kernel,16,10,19144,9,1045.16,1037.03,20.05 +tochars,gmp,16,10,39561,9,505.38,505.21,20.00 +tochars,gmpz,16,10,33877,9,590.66,588.55,20.00 +tochars,auto,64,10,3547,9,5622.82,5614.00,19.95 +tochars,kernel,64,10,3813,9,5245.85,5235.32,20.00 +tochars,gmp,64,10,7499,9,2669.13,2665.03,20.02 +tochars,gmpz,64,10,6751,9,2962.23,2959.32,20.00 +tochars,auto,256,10,555,9,36037.45,36030.16,20.00 +tochars,kernel,256,10,579,9,34571.94,34558.92,20.02 +tochars,gmp,256,10,1076,9,18578.48,18561.61,20.03 +tochars,gmpz,256,10,1016,9,19682.64,19671.74,20.00 +tochars,auto,2000,10,33,9,606607.24,606463.03,20.05 +tochars,kernel,2000,10,35,9,584206.80,583924.63,20.46 +tochars,gmp,2000,10,50,9,401055.76,400707.24,20.06 +tochars,gmpz,2000,10,49,9,410112.08,409753.63,20.10 +tochars,auto,16,16,169910,9,117.72,117.55,20.00 +tochars,gmp,16,16,201793,9,99.12,99.00,20.09 +tochars,gmpz,16,16,126880,9,157.67,157.60,20.04 +tochars,auto,2000,16,1469,9,13622.05,13621.39,20.02 +tochars,gmp,2000,16,1801,9,11111.34,11110.04,20.01 +tochars,gmpz,2000,16,1116,9,17933.10,17929.06,20.01 +fromchars,auto,4,10,106245,9,189.10,188.07,20.14 +fromchars,kernel,4,10,533690,9,37.55,37.44,20.03 +fromchars,gmp,4,10,641592,9,31.29,31.19,20.08 +fromchars,gmpz,4,10,299003,9,67.24,66.81,20.10 +fromchars,auto,16,10,48343,9,421.81,418.50,20.37 +fromchars,kernel,16,10,91475,9,218.18,215.64,20.08 +fromchars,gmp,16,10,159396,9,124.77,124.25,19.89 +fromchars,gmpz,16,10,77491,9,259.33,258.17,20.11 +fromchars,auto,64,10,7088,9,2780.36,2636.71,19.76 +fromchars,kernel,64,10,10182,9,2191.76,2084.91,21.01 +fromchars,gmp,64,10,22330,9,894.67,893.50,19.99 +fromchars,gmpz,64,10,14644,9,1369.22,1365.52,20.08 +fromchars,auto,256,10,673,9,29151.19,28738.68,19.58 +fromchars,kernel,256,10,786,9,25644.55,25364.22,20.25 +fromchars,gmp,256,10,2495,9,8028.25,8018.71,20.03 +fromchars,gmpz,256,10,2010,9,9941.79,9905.97,20.00 +fromchars,auto,2000,10,47,9,429789.98,429653.60,20.20 +fromchars,kernel,2000,10,49,9,408531.73,408436.82,20.02 +fromchars,gmp,2000,10,108,9,184397.46,183113.28,19.92 +fromchars,gmpz,2000,10,101,9,198050.92,197815.81,20.02 diff --git a/tests/beman/big_int/perf/item1/x64r3_base64_seed1b.csv b/tests/beman/big_int/perf/item1/x64r3_base64_seed1b.csv new file mode 100644 index 00000000..ae7aa1ac --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_base64_seed1b.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T17:56:38Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2386763,9,8.23,8.16,19.68 +add,inplace,1,1,2414805,9,4.15,4.12,20.04 +add,kernel,1,1,10589068,9,1.89,1.89,20.04 +add,floor,1,1,2018017,9,9.90,9.83,19.97 +add,gmp,1,1,8824060,9,2.27,2.27,20.00 +add,gmpz,1,1,4813065,9,4.16,4.16,20.01 +add,auto,2,2,1121804,9,17.83,17.80,20.02 +add,inplace,2,2,1665551,9,5.93,5.89,19.76 +add,kernel,2,2,8463813,9,2.37,2.34,20.13 +add,floor,2,2,1958202,9,10.25,10.20,20.07 +add,gmp,2,2,8824054,9,2.27,2.27,20.00 +add,gmpz,2,2,4813097,9,4.16,4.16,20.00 +add,auto,4,4,1100845,9,18.08,18.00,19.92 +add,inplace,4,4,1767269,9,5.64,5.62,19.95 +add,kernel,4,4,6477194,9,3.07,3.02,19.96 +add,floor,4,4,1810943,9,10.99,10.97,19.93 +add,gmp,4,4,7956522,9,2.51,2.50,19.94 +add,gmpz,4,4,4552375,9,4.39,4.37,19.98 +add,auto,8,8,1044237,9,19.18,19.10,20.02 +add,inplace,8,8,1354714,9,7.38,7.35,19.99 +add,kernel,8,8,4170485,9,4.56,4.54,19.11 +add,floor,8,8,1596905,9,12.51,12.47,20.01 +add,gmp,8,8,5423634,9,3.69,3.69,20.00 +add,gmpz,8,8,4249638,9,4.69,4.68,19.94 +add,auto,16,16,785905,9,25.67,25.41,20.14 +add,inplace,16,16,852217,9,11.79,11.72,20.11 +add,kernel,16,16,2642029,9,7.56,7.56,19.97 +add,floor,16,16,1283952,9,15.59,15.56,20.02 +add,gmp,16,16,3540165,9,5.64,5.63,20.00 +add,gmpz,16,16,2564242,9,7.78,7.76,19.95 +add,auto,64,64,313974,9,63.75,63.29,20.00 +add,inplace,64,64,257349,9,38.83,38.76,20.00 +add,kernel,64,64,586045,9,34.16,34.07,20.04 +add,floor,64,64,484132,9,41.11,40.37,19.89 +add,gmp,64,64,1294648,9,15.45,15.45,20.00 +add,gmpz,64,64,1212724,9,16.49,16.46,20.00 +add,auto,256,256,89296,9,223.95,223.90,20.00 +add,inplace,256,256,68204,9,146.63,146.52,20.00 +add,kernel,256,256,140299,9,142.56,142.52,20.00 +add,floor,256,256,125919,9,158.87,158.80,20.01 +add,gmp,256,256,255643,9,78.23,78.23,20.00 +add,gmpz,256,256,251602,9,79.50,79.39,20.01 +add,auto,1024,1024,23740,9,842.50,842.29,20.01 +add,inplace,1024,1024,17143,9,583.33,583.26,20.00 +add,kernel,1024,1024,34529,9,579.26,579.16,20.00 +add,floor,1024,1024,33107,9,594.44,594.22,19.69 +add,gmp,1024,1024,51229,9,390.41,390.40,20.00 +add,gmpz,1024,1024,51106,9,391.36,391.34,20.00 +add,auto,2000,2000,11607,9,1723.24,1722.94,20.00 +add,inplace,2000,2000,8806,9,1135.71,1135.65,20.01 +add,kernel,2000,2000,17653,9,1132.96,1132.90,20.00 +add,floor,2000,2000,17378,9,1150.78,1150.61,20.00 +add,gmp,2000,2000,41667,9,478.63,478.59,19.94 +add,gmpz,2000,2000,40900,9,489.04,487.66,20.03 +add,auto,1024,1,71154,9,281.49,281.12,20.03 +add,inplace,1024,1,17216,9,580.45,580.43,19.99 +add,kernel,1024,1,34621,9,577.69,577.68,20.00 +add,floor,1024,1,33690,9,593.71,593.67,20.01 +add,gmp,1024,1,85770,9,233.20,232.27,19.99 +add,gmpz,1024,1,85498,9,233.99,233.58,20.01 +sub,auto,1,1,2214586,9,9.03,8.96,20.00 +sub,inplace,1,1,2503103,9,3.98,3.97,19.97 +sub,kernel,1,1,13236401,9,1.51,1.51,20.01 +sub,floor,1,1,10484933,9,1.90,1.89,19.90 +sub,gmp,1,1,8822116,9,2.27,2.27,20.00 +sub,gmpz,1,1,4585444,9,4.34,4.34,19.98 +sub,auto,2,2,1042877,9,19.08,18.99,19.89 +sub,inplace,2,2,2145551,9,4.64,4.62,19.93 +sub,kernel,2,2,9503830,9,2.09,2.08,19.88 +sub,floor,2,2,2007897,9,10.01,9.99,20.11 +sub,gmp,2,2,8824151,9,2.27,2.27,20.00 +sub,gmpz,2,2,4603797,9,4.35,4.34,20.06 +sub,auto,4,4,1040400,9,19.12,19.06,19.94 +sub,inplace,4,4,1821190,9,5.48,5.45,19.95 +sub,kernel,4,4,6862841,9,2.90,2.84,19.88 +sub,floor,4,4,1863427,9,10.78,10.74,20.08 +sub,gmp,4,4,8042636,9,2.49,2.49,20.01 +sub,gmpz,4,4,4299117,9,4.60,4.59,19.79 +sub,auto,8,8,964012,9,20.65,20.48,19.93 +sub,inplace,8,8,1377096,9,7.24,7.21,19.92 +sub,kernel,8,8,4540408,9,4.37,4.36,19.90 +sub,floor,8,8,1614127,9,12.43,12.40,20.06 +sub,gmp,8,8,5395454,9,3.68,3.68,19.88 +sub,gmpz,8,8,4025572,9,5.00,4.98,20.16 +sub,auto,16,16,779609,9,25.65,25.51,20.02 +sub,inplace,16,16,937961,9,10.63,10.61,19.95 +sub,kernel,16,16,2492457,9,8.03,8.02,20.01 +sub,floor,16,16,1298379,9,15.42,15.39,20.02 +sub,gmp,16,16,3147508,9,6.35,6.35,20.00 +sub,gmpz,16,16,2937799,9,6.79,6.63,19.93 +sub,auto,64,64,304811,9,65.62,65.53,20.01 +sub,inplace,64,64,266691,9,37.48,37.13,19.98 +sub,kernel,64,64,606959,9,32.90,32.70,19.96 +sub,floor,64,64,470535,9,42.48,42.44,20.02 +sub,gmp,64,64,1294689,9,15.45,15.45,20.04 +sub,gmpz,64,64,1192951,9,16.74,16.71,20.01 +sub,auto,256,256,89505,9,223.59,223.45,20.01 +sub,inplace,256,256,68780,9,145.39,145.34,20.00 +sub,kernel,256,256,140013,9,142.83,142.81,20.01 +sub,floor,256,256,126177,9,158.40,158.29,19.99 +sub,gmp,256,256,255664,9,78.23,78.22,20.00 +sub,gmpz,256,256,250511,9,79.86,79.82,20.00 +sub,auto,1024,1024,23755,9,841.96,841.84,20.00 +sub,inplace,1024,1024,17196,9,581.55,581.49,20.00 +sub,kernel,1024,1024,34498,9,578.84,578.78,19.97 +sub,floor,1024,1024,33638,9,594.57,594.31,20.00 +sub,gmp,1024,1024,51304,9,389.84,389.83,20.00 +sub,gmpz,1024,1024,51124,9,391.20,391.17,20.00 +sub,auto,2000,2000,11482,9,1741.79,1741.55,20.00 +sub,inplace,2000,2000,8818,9,1134.21,1133.87,20.01 +sub,kernel,2000,2000,17655,9,1132.07,1132.06,19.99 +sub,floor,2000,2000,17402,9,1153.85,1149.21,20.13 +sub,gmp,2000,2000,41956,9,475.87,475.86,19.97 +sub,gmpz,2000,2000,40488,9,492.46,491.06,19.93 +sub,auto,1024,1,70542,9,282.91,282.62,19.97 +sub,inplace,1024,1,17252,9,579.72,579.64,20.03 +sub,kernel,1024,1,34618,9,577.74,577.73,20.00 +sub,floor,1024,1,33727,9,593.12,592.96,20.00 +sub,gmp,1024,1,85553,9,233.86,233.82,20.01 +sub,gmpz,1024,1,85465,9,234.11,233.40,20.02 +shl,auto,1,13,1198515,9,16.78,16.72,20.12 +shl,inplace,1,13,2452956,9,4.09,4.06,20.04 +shl,kernel,1,13,9432507,9,2.12,2.12,19.99 +shl,kernelip,1,13,5881844,9,1.76,1.70,20.62 +shl,floor,1,13,2076551,9,9.82,9.82,20.40 +shl,gmp,1,13,9626809,9,1.90,1.90,18.30 +shl,gmpz,1,13,5771528,9,3.47,3.47,20.00 +shl,auto,4,13,1075749,9,18.60,18.52,20.03 +shl,inplace,4,13,1919294,9,5.21,5.19,19.98 +shl,kernel,4,13,5653667,9,3.47,3.44,19.64 +shl,kernelip,4,13,3317560,9,3.00,2.97,19.90 +shl,floor,4,13,1722461,9,11.19,11.18,19.27 +shl,gmp,4,13,7991535,9,2.40,2.33,19.19 +shl,gmpz,4,13,4924987,9,4.04,4.04,19.92 +shl,auto,16,13,817680,9,24.57,24.49,20.11 +shl,inplace,16,13,1082825,9,9.18,9.15,19.89 +shl,kernel,16,13,2688842,9,7.45,7.44,20.07 +shl,kernelip,16,13,1390947,9,7.18,7.11,19.98 +shl,floor,16,13,1252967,9,15.22,15.21,19.08 +shl,gmp,16,13,4929157,9,4.05,4.05,20.01 +shl,gmpz,16,13,3439581,9,5.82,5.81,20.04 +shl,auto,256,13,146779,9,134.40,133.41,19.77 +shl,inplace,256,13,107253,9,93.05,92.75,19.97 +shl,kernel,256,13,214374,9,93.60,93.43,20.09 +shl,kernelip,256,13,102253,9,97.77,97.71,20.04 +shl,floor,256,13,178163,9,116.38,116.24,20.74 +shl,gmp,256,13,424043,9,47.24,46.98,20.06 +shl,gmpz,256,13,395872,9,50.38,50.02,19.92 +shl,auto,2000,13,21865,9,915.14,914.76,20.03 +shl,inplace,2000,13,15224,9,657.39,655.93,20.02 +shl,kernel,2000,13,27776,9,720.57,719.84,20.02 +shl,kernelip,2000,13,13980,9,715.35,715.30,20.00 +shl,floor,2000,13,27163,9,739.56,739.32,20.09 +shl,gmp,2000,13,59454,9,335.51,335.36,19.95 +shl,gmpz,2000,13,59105,9,338.53,338.42,20.01 +shl,auto,2000,77,18751,9,1066.28,1063.41,20.01 +shl,inplace,2000,77,13086,9,764.23,764.05,20.02 +shl,kernel,2000,77,23557,9,849.37,848.28,20.01 +shl,kernelip,2000,77,12157,9,822.60,822.35,20.01 +shl,floor,2000,77,23004,9,871.56,870.56,20.06 +shl,gmp,2000,77,59221,9,337.73,337.72,20.02 +shl,gmpz,2000,77,59009,9,339.51,339.17,20.08 +shr,auto,1,13,1943912,9,10.23,10.19,19.92 +shr,inplace,1,13,2744357,9,3.66,3.59,20.02 +shr,kernel,1,13,11752351,9,1.70,1.70,20.00 +shr,floor,1,13,8824237,9,2.27,2.27,20.03 +shr,gmp,1,13,10587555,9,1.89,1.89,20.07 +shr,gmpz,1,13,6108370,9,3.27,3.27,19.99 +shr,auto,4,13,951050,9,20.99,20.94,19.98 +shr,inplace,4,13,2085903,9,4.77,4.72,19.86 +shr,kernel,4,13,5756219,9,3.47,3.46,19.99 +shr,floor,4,13,1671120,9,11.96,11.95,20.00 +shr,gmp,4,13,8513211,9,2.32,2.31,19.79 +shr,gmpz,4,13,5034768,9,3.97,3.96,20.00 +shr,auto,16,13,773519,9,25.81,25.69,19.96 +shr,inplace,16,13,1138406,9,8.80,8.74,20.02 +shr,kernel,16,13,2449639,9,8.22,8.13,20.16 +shr,floor,16,13,1174099,9,17.06,16.98,20.03 +shr,gmp,16,13,4652617,9,4.30,4.30,20.02 +shr,gmpz,16,13,3101427,9,6.33,6.19,19.69 +shr,auto,256,13,144132,9,138.77,138.39,20.02 +shr,inplace,256,13,106722,9,93.78,93.58,20.03 +shr,kernel,256,13,181802,9,110.08,109.96,20.03 +shr,floor,256,13,152231,9,131.17,130.76,19.97 +shr,gmp,256,13,416304,9,48.05,47.89,20.01 +shr,gmpz,256,13,394963,9,50.66,50.59,20.01 +shr,auto,2000,13,21049,9,950.02,949.00,20.00 +shr,inplace,2000,13,15222,9,656.78,656.53,20.00 +shr,kernel,2000,13,24637,9,811.88,811.83,20.01 +shr,floor,2000,13,24054,9,831.50,831.41,20.00 +shr,gmp,2000,13,59568,9,335.96,335.84,20.01 +shr,gmpz,2000,13,58780,9,338.96,338.83,19.93 +shr,auto,2000,77,18440,9,1085.26,1084.25,20.01 +shr,inplace,2000,77,13075,9,764.99,764.77,20.01 +shr,kernel,2000,77,24094,9,830.12,830.08,20.05 +shr,floor,2000,77,23397,9,854.27,852.90,19.99 +shr,gmp,2000,77,59535,9,335.93,335.90,20.00 +shr,gmpz,2000,77,58943,9,339.25,339.13,20.05 +mul,auto,1,1,1029140,9,19.44,19.40,20.02 +mul,gmp,1,1,5734629,9,3.47,3.43,19.86 +mul,gmpz,1,1,4990755,9,4.02,4.01,20.05 +mul,auto,2,2,706694,9,28.26,28.12,19.97 +mul,kernel,2,2,2805542,9,7.58,7.56,21.30 +mul,floor,2,2,1324462,9,15.27,15.18,20.24 +mul,gmp,2,2,5202491,9,3.85,3.85,20.04 +mul,gmpz,2,2,3240526,9,6.19,6.12,20.03 +mul,auto,3,3,668170,9,29.99,29.91,20.09 +mul,kernel,3,3,2348861,9,9.02,9.00,21.21 +mul,floor,3,3,1197571,9,16.80,16.73,20.14 +mul,gmp,3,3,2567449,9,7.83,7.75,20.08 +mul,gmpz,3,3,1996781,9,9.99,9.96,19.96 +mul,auto,4,4,623827,9,32.07,31.96,20.03 +mul,kernel,4,4,1879555,9,11.10,11.06,20.84 +mul,floor,4,4,1090096,9,18.59,18.51,20.27 +mul,gmp,4,4,2065585,9,9.68,9.67,20.02 +mul,gmpz,4,4,1644784,9,12.17,12.12,20.01 +mul,auto,6,6,471426,9,42.13,41.93,19.87 +mul,kernel,6,6,1197284,9,17.49,17.47,20.95 +mul,floor,6,6,797675,9,24.72,24.62,19.72 +mul,gmp,6,6,1262058,9,15.91,15.85,20.07 +mul,gmpz,6,6,1097355,9,18.21,18.19,20.02 +mul,auto,8,8,416128,9,47.80,47.52,19.87 +mul,kernel,8,8,807714,9,25.46,25.43,20.57 +mul,floor,8,8,613440,9,32.60,32.43,20.02 +mul,gmp,8,8,736879,9,27.21,27.03,20.05 +mul,gmpz,8,8,684349,9,28.84,28.67,19.86 +mul,auto,12,12,283879,9,70.45,70.28,20.00 +mul,kernel,12,12,425229,9,47.76,47.49,20.31 +mul,floor,12,12,364086,9,54.93,54.88,20.00 +mul,gmp,12,12,411892,9,48.62,48.55,20.03 +mul,gmpz,12,12,394153,9,50.76,50.74,20.03 +mul,auto,16,16,196050,9,102.06,101.90,20.02 +mul,kernel,16,16,252262,9,79.70,79.34,20.10 +mul,floor,16,16,231252,9,86.81,86.57,20.08 +mul,gmp,16,16,244305,9,81.87,81.86,20.00 +mul,gmpz,16,16,238006,9,84.05,84.02,20.01 +mul,auto,32,32,94931,9,211.44,210.77,20.07 +mul,kernel,32,32,103053,9,200.47,200.17,20.67 +mul,floor,32,32,98471,9,203.39,203.12,20.03 +mul,gmp,32,32,73337,9,270.99,269.65,19.89 +mul,gmpz,32,32,73706,9,270.79,270.27,19.97 +mul,auto,64,64,38785,9,515.31,514.81,19.99 +mul,kernel,64,64,40916,9,486.74,485.60,19.91 +mul,floor,64,64,40253,9,497.24,496.22,20.02 +mul,gmp,64,64,22770,9,878.30,875.64,20.00 +mul,gmpz,64,64,22917,9,872.86,870.73,20.01 +mul,auto,128,128,11608,9,1720.72,1719.35,19.98 +mul,kernel,128,128,11721,9,1705.80,1702.66,19.99 +mul,floor,128,128,11665,9,1717.02,1715.64,20.03 +mul,gmp,128,128,7224,9,2767.29,2758.76,19.98 +mul,gmpz,128,128,7289,9,2737.40,2726.60,19.94 +mul,auto,256,256,3212,9,6225.22,6219.68,20.00 +mul,kernel,256,256,3240,9,6172.90,6153.50,20.04 +mul,floor,256,256,3236,9,6174.29,6165.63,19.98 +mul,gmp,256,256,2530,9,7891.61,7813.72,19.91 +mul,gmpz,256,256,2558,9,7767.54,7763.97,19.89 +mul,auto,512,512,1031,9,19379.09,19359.12,20.00 +mul,kernel,512,512,1038,9,19174.00,19153.74,19.90 +mul,floor,512,512,1038,9,19300.68,19284.94,20.04 +mul,gmp,512,512,945,9,20891.14,20834.01,19.78 +mul,gmpz,512,512,957,9,20916.72,20910.63,20.09 +mul,auto,1000,1000,334,9,59962.75,59854.48,20.04 +mul,kernel,1000,1000,338,9,59424.24,59360.99,20.09 +mul,floor,1000,1000,336,9,59487.65,59417.88,19.99 +mul,gmp,1000,1000,368,9,54129.82,54109.67,19.96 +mul,gmpz,1000,1000,372,9,53805.10,53772.68,20.02 +mul,auto,2000,2000,113,9,177115.44,177035.62,20.01 +mul,kernel,2000,2000,114,9,176487.83,176271.44,20.12 +mul,floor,2000,2000,114,9,176504.29,176464.22,20.12 +mul,gmp,2000,2000,139,9,144326.97,144295.14,20.07 +mul,gmpz,2000,2000,139,9,144182.29,144114.86,20.08 +mul,auto,2000,100,1120,9,17868.01,17856.46,20.01 +mul,kernel,2000,100,1133,9,17657.08,17653.99,20.00 +mul,floor,2000,100,1131,9,17688.49,17681.76,20.03 +mul,gmp,2000,100,550,9,36329.62,36124.79,19.97 +mul,gmpz,2000,100,558,9,35731.70,35643.15,19.95 +sqr,auto,4,4,599752,9,33.29,33.18,19.96 +sqr,kernel,4,4,2209581,9,9.09,9.06,20.15 +sqr,floor,4,4,1209410,9,16.91,16.90,20.46 +sqr,gmp,4,4,3438888,9,5.82,5.77,20.03 +sqr,gmpz,4,4,2276007,9,8.81,8.78,20.06 +sqr,auto,16,16,250371,9,79.91,79.78,20.02 +sqr,kernel,16,16,355697,9,56.23,56.16,20.02 +sqr,floor,16,16,320025,9,62.48,62.42,20.01 +sqr,gmp,16,16,393699,9,49.94,49.81,19.72 +sqr,gmpz,16,16,380814,9,52.16,52.12,19.88 +sqr,auto,64,64,65915,9,303.31,302.58,19.99 +sqr,kernel,64,64,74190,9,269.47,269.33,20.00 +sqr,floor,64,64,72817,9,279.77,279.37,20.38 +sqr,gmp,64,64,35298,9,566.20,563.03,19.95 +sqr,gmpz,64,64,35436,9,561.12,558.41,19.88 +sqr,auto,512,512,1887,9,10603.75,10590.45,20.01 +sqr,kernel,512,512,1895,9,10567.13,10562.20,20.03 +sqr,floor,512,512,1889,9,10581.91,10570.74,20.01 +sqr,gmp,512,512,1317,9,15122.32,15112.47,19.92 +sqr,gmpz,512,512,1326,9,15091.04,15087.07,20.02 +sqr,auto,2000,2000,201,9,99935.43,99921.27,20.09 +sqr,kernel,2000,2000,202,9,99413.92,99400.75,20.08 +sqr,floor,2000,2000,202,9,99437.28,98076.75,20.00 +sqr,gmp,2000,2000,198,9,100880.99,100818.23,19.97 +sqr,gmpz,2000,2000,199,9,100892.93,100840.88,20.09 +divrem,auto,2,1,470823,9,42.73,42.37,20.08 +divrem,kernel,2,1,3613456,9,5.50,5.43,19.87 +divrem,floor,2,1,1570391,9,12.77,12.75,20.07 +divrem,gmp,2,1,2306144,9,8.69,8.67,20.03 +divrem,gmpz,2,1,1519869,9,13.18,13.17,20.05 +divrem,auto,8,4,185326,9,107.43,107.16,19.91 +divrem,kernel,8,4,495861,9,40.42,40.18,20.09 +divrem,floor,8,4,365025,9,55.48,55.32,20.25 +divrem,gmp,8,4,499629,9,40.01,39.79,19.98 +divrem,gmpz,8,4,482169,9,41.52,41.41,20.06 +divrem,auto,32,16,53765,9,369.07,368.21,19.84 +divrem,kernel,32,16,69660,9,286.88,286.33,19.98 +divrem,floor,32,16,65702,9,303.80,303.54,19.96 +divrem,gmp,32,16,102820,9,194.92,194.42,20.04 +divrem,gmpz,32,16,102895,9,193.77,193.33,19.94 +divrem,auto,128,64,5971,9,3340.13,3338.33,19.95 +divrem,kernel,128,64,6253,9,3203.79,3194.20,20.04 +divrem,floor,128,64,6215,9,3225.64,3215.85,20.05 +divrem,gmp,128,64,11622,9,1717.90,1717.09,19.97 +divrem,gmpz,128,64,11574,9,1722.43,1721.81,19.94 +divrem,auto,512,256,671,9,29829.13,29807.98,20.01 +divrem,kernel,512,256,678,9,29452.47,29441.62,19.97 +divrem,floor,512,256,670,9,29889.07,29881.67,20.03 +divrem,gmp,512,256,1234,9,16221.69,16219.18,20.02 +divrem,gmpz,512,256,1235,9,16199.22,16196.45,20.01 +divrem,auto,2000,1000,109,9,185157.94,185042.73,20.19 +divrem,kernel,2000,1000,108,9,184320.98,184201.76,19.96 +divrem,floor,2000,1000,109,9,184020.72,183955.54,20.06 +divrem,gmp,2000,1000,146,9,137716.92,137689.68,20.12 +divrem,gmpz,2000,1000,146,9,137779.55,137751.43,20.12 +divrem,auto,4000,2000,42,9,476000.26,475883.43,20.00 +divrem,kernel,4000,2000,43,9,473213.95,472978.28,20.36 +divrem,floor,4000,2000,43,9,473338.16,472989.95,20.36 +divrem,gmp,4000,2000,59,9,338023.95,336041.69,19.93 +divrem,gmpz,4000,2000,60,9,335917.05,334521.37,20.16 +divrem,auto,2000,100,138,9,145434.80,145285.70,20.08 +divrem,kernel,2000,100,140,9,143211.36,142656.73,20.04 +divrem,floor,2000,100,140,9,143302.54,142762.41,20.05 +divrem,gmp,2000,100,276,9,72563.10,72498.11,20.02 +divrem,gmpz,2000,100,276,9,72555.19,72516.45,20.03 +divrem,auto,65536,1,103,9,193517.06,193091.90,19.93 +divrem,kernel,65536,1,120,9,167046.21,166822.73,20.05 +divrem,floor,65536,1,115,9,174784.26,174449.95,20.14 +divrem,gmp,65536,1,136,9,148107.17,148100.43,20.15 +divrem,gmpz,65536,1,136,9,148120.79,148114.96,20.15 +tochars,auto,1,10,1356261,9,14.77,14.74,20.08 +tochars,kernel,1,10,321943,9,62.16,62.03,20.01 +tochars,gmp,1,10,967856,9,20.66,20.47,19.99 +tochars,gmpz,1,10,593470,9,33.83,33.61,20.06 +tochars,auto,4,10,156487,9,127.79,127.04,20.01 +tochars,kernel,4,10,110993,9,180.71,178.88,20.05 +tochars,gmp,4,10,291454,9,68.65,68.61,20.02 +tochars,gmpz,4,10,209595,9,95.54,95.41,20.02 +tochars,auto,16,10,17102,9,1170.87,1168.85,20.02 +tochars,kernel,16,10,19215,9,1040.55,1036.35,19.99 +tochars,gmp,16,10,39703,9,503.75,503.62,20.00 +tochars,gmpz,16,10,33926,9,590.25,588.41,20.02 +tochars,auto,64,10,3553,9,5622.13,5604.63,19.96 +tochars,kernel,64,10,3818,9,5238.01,5237.18,20.00 +tochars,gmp,64,10,7458,9,2681.80,2675.74,20.05 +tochars,gmpz,64,10,6747,9,2963.53,2957.49,19.99 +tochars,auto,256,10,559,9,35867.11,35852.09,20.05 +tochars,kernel,256,10,579,9,34587.33,34548.90,20.02 +tochars,gmp,256,10,1077,9,18575.51,18550.80,20.01 +tochars,gmpz,256,10,1016,9,19663.29,19653.45,19.98 +tochars,auto,2000,10,33,9,608223.70,607781.91,20.08 +tochars,kernel,2000,10,35,9,583860.26,583597.43,20.43 +tochars,gmp,2000,10,50,9,400810.50,400387.08,20.06 +tochars,gmpz,2000,10,49,9,409241.24,408889.71,20.09 +tochars,auto,16,16,168416,9,117.83,117.50,19.83 +tochars,gmp,16,16,201790,9,99.10,99.04,20.00 +tochars,gmpz,16,16,126181,9,158.56,158.51,20.01 +tochars,auto,2000,16,1469,9,13621.58,13619.98,20.01 +tochars,gmp,2000,16,1794,9,11113.93,11110.85,19.94 +tochars,gmpz,2000,16,1117,9,17925.04,17922.40,20.03 +fromchars,auto,4,10,106170,9,188.47,187.43,20.02 +fromchars,kernel,4,10,533540,9,37.50,37.42,20.01 +fromchars,gmp,4,10,639402,9,31.34,31.23,20.07 +fromchars,gmpz,4,10,301944,9,66.25,66.09,20.02 +fromchars,auto,16,10,47506,9,421.31,417.35,19.98 +fromchars,kernel,16,10,94506,9,216.52,213.62,20.63 +fromchars,gmp,16,10,160673,9,124.82,124.51,20.06 +fromchars,gmpz,16,10,77483,9,257.02,256.51,19.96 +fromchars,auto,64,10,7189,9,2815.18,2714.94,20.24 +fromchars,kernel,64,10,9954,9,2110.02,2038.31,21.11 +fromchars,gmp,64,10,22651,9,884.54,883.13,20.03 +fromchars,gmpz,64,10,14639,9,1366.91,1366.02,20.02 +fromchars,auto,256,10,718,9,28675.05,28235.67,20.71 +fromchars,kernel,256,10,790,9,26417.96,25688.08,20.82 +fromchars,gmp,256,10,2507,9,7976.75,7969.56,20.00 +fromchars,gmpz,256,10,2016,9,9916.89,9911.67,20.00 +fromchars,auto,2000,10,47,9,429679.91,428759.47,20.19 +fromchars,kernel,2000,10,49,9,409146.39,408981.31,20.09 +fromchars,gmp,2000,10,109,9,182842.78,182724.99,19.94 +fromchars,gmpz,2000,10,102,9,197805.98,197698.41,20.18 diff --git a/tests/beman/big_int/perf/item1/x64r3_base64_seed2a.csv b/tests/beman/big_int/perf/item1/x64r3_base64_seed2a.csv new file mode 100644 index 00000000..ae6f60b3 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_base64_seed2a.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T18:01:25Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2381398,9,8.25,8.21,19.70 +add,inplace,1,1,2448503,9,4.11,4.08,20.16 +add,kernel,1,1,10583839,9,1.89,1.89,19.99 +add,floor,1,1,2020794,9,9.85,9.82,19.93 +add,gmp,1,1,8824198,9,2.27,2.27,20.00 +add,gmpz,1,1,4813028,9,4.16,4.16,20.01 +add,auto,2,2,1122973,9,17.81,17.78,20.02 +add,inplace,2,2,1715581,9,5.85,5.82,20.16 +add,kernel,2,2,8481188,9,2.38,2.31,20.04 +add,floor,2,2,1985389,9,10.21,10.13,20.25 +add,gmp,2,2,8824274,9,2.27,2.27,20.01 +add,gmpz,2,2,4813180,9,4.16,4.16,20.00 +add,auto,4,4,1106880,9,18.01,17.93,19.94 +add,inplace,4,4,1785214,9,5.59,5.56,19.96 +add,kernel,4,4,6443033,9,3.07,3.02,19.86 +add,floor,4,4,1823593,9,10.96,10.95,19.99 +add,gmp,4,4,8002814,9,2.50,2.50,19.99 +add,gmpz,4,4,4519109,9,4.36,4.34,19.69 +add,auto,8,8,1037921,9,19.30,19.22,20.03 +add,inplace,8,8,1358408,9,7.32,7.28,19.87 +add,kernel,8,8,4322354,9,4.70,4.53,20.34 +add,floor,8,8,1607329,9,12.45,12.43,20.02 +add,gmp,8,8,5425259,9,3.69,3.69,20.00 +add,gmpz,8,8,4271702,9,4.67,4.65,19.94 +add,auto,16,16,790078,9,25.29,24.99,19.99 +add,inplace,16,16,827232,9,12.00,11.95,19.90 +add,kernel,16,16,2646835,9,7.56,7.56,20.01 +add,floor,16,16,1299636,9,15.38,15.35,20.01 +add,gmp,16,16,3632766,9,5.50,5.49,19.98 +add,gmpz,16,16,3079290,9,6.52,6.50,20.11 +add,auto,64,64,313164,9,63.74,63.42,19.95 +add,inplace,64,64,257730,9,39.04,38.93,20.12 +add,kernel,64,64,600316,9,33.28,33.03,19.97 +add,floor,64,64,478106,9,42.08,41.84,20.19 +add,gmp,64,64,1286490,9,15.45,15.45,19.88 +add,gmpz,64,64,1212747,9,16.49,16.46,19.99 +add,auto,256,256,89272,9,224.04,223.80,20.00 +add,inplace,256,256,68675,9,145.53,145.48,19.99 +add,kernel,256,256,140144,9,142.50,142.47,19.97 +add,floor,256,256,126201,9,158.78,158.58,20.03 +add,gmp,256,256,255009,9,78.42,78.41,20.00 +add,gmpz,256,256,251713,9,79.46,79.35,19.99 +add,auto,1024,1024,23712,9,842.11,841.92,19.97 +add,inplace,1024,1024,17149,9,583.10,582.95,20.01 +add,kernel,1024,1024,34575,9,578.44,578.38,20.01 +add,floor,1024,1024,33664,9,594.17,594.06,20.00 +add,gmp,1024,1024,33646,9,594.43,594.41,20.00 +add,gmpz,1024,1024,33589,9,595.43,595.39,20.00 +add,auto,2000,2000,11619,9,1721.28,1721.15,20.00 +add,inplace,2000,2000,8819,9,1133.94,1133.85,20.00 +add,kernel,2000,2000,17673,9,1131.72,1131.65,20.06 +add,floor,2000,2000,17435,9,1147.27,1147.12,20.00 +add,gmp,2000,2000,42223,9,473.59,473.56,20.00 +add,gmpz,2000,2000,42573,9,469.80,467.85,19.98 +add,auto,1024,1,71188,9,281.12,280.96,20.02 +add,inplace,1024,1,17249,9,579.77,579.70,20.00 +add,kernel,1024,1,34622,9,577.69,577.68,20.01 +add,floor,1024,1,33703,9,593.54,593.35,20.00 +add,gmp,1024,1,85997,9,232.63,232.56,20.05 +add,gmpz,1024,1,85025,9,233.94,233.59,19.89 +sub,auto,1,1,2240675,9,8.97,8.94,20.11 +sub,inplace,1,1,2509796,9,3.97,3.97,19.95 +sub,kernel,1,1,13236355,9,1.51,1.51,20.00 +sub,floor,1,1,10540651,9,1.90,1.89,20.01 +sub,gmp,1,1,8794428,9,2.27,2.27,19.94 +sub,gmpz,1,1,4602659,9,4.34,4.34,20.05 +sub,auto,2,2,1066212,9,18.93,18.87,20.21 +sub,inplace,2,2,2182806,9,4.61,4.58,20.11 +sub,kernel,2,2,9426181,9,2.10,2.08,19.76 +sub,floor,2,2,2015299,9,9.96,9.92,20.07 +sub,gmp,2,2,8824238,9,2.27,2.27,20.13 +sub,gmpz,2,2,4324193,9,4.37,4.36,19.15 +sub,auto,4,4,1054509,9,18.95,18.89,20.00 +sub,inplace,4,4,1835979,9,5.44,5.40,19.94 +sub,kernel,4,4,6926693,9,2.86,2.83,19.76 +sub,floor,4,4,1878978,9,10.72,10.70,20.16 +sub,gmp,4,4,8042932,9,2.49,2.49,20.03 +sub,gmpz,4,4,4390486,9,4.58,4.55,20.10 +sub,auto,8,8,947970,9,20.65,20.30,19.47 +sub,inplace,8,8,1386074,9,7.21,7.16,19.95 +sub,kernel,8,8,4582157,9,4.36,4.36,20.01 +sub,floor,8,8,1624540,9,12.37,12.32,20.08 +sub,gmp,8,8,5430175,9,3.68,3.68,20.00 +sub,gmpz,8,8,4054862,9,4.96,4.94,20.20 +sub,auto,16,16,769383,9,25.64,25.24,19.69 +sub,inplace,16,16,946106,9,10.56,10.53,19.98 +sub,kernel,16,16,2482935,9,8.05,8.05,20.00 +sub,floor,16,16,1294157,9,15.50,15.48,20.09 +sub,gmp,16,16,3346755,9,5.97,5.97,19.99 +sub,gmpz,16,16,2944608,9,6.80,6.75,20.00 +sub,auto,64,64,303083,9,66.11,66.01,20.04 +sub,inplace,64,64,264527,9,38.11,37.32,20.08 +sub,kernel,64,64,607322,9,32.92,32.90,19.99 +sub,floor,64,64,473126,9,42.15,42.07,19.94 +sub,gmp,64,64,1294499,9,15.45,15.45,20.00 +sub,gmpz,64,64,1194650,9,16.74,16.71,19.99 +sub,auto,256,256,89478,9,223.54,223.40,20.02 +sub,inplace,256,256,68769,9,145.40,145.36,20.00 +sub,kernel,256,256,139960,9,142.85,142.81,20.00 +sub,floor,256,256,126109,9,158.46,158.13,20.03 +sub,gmp,256,256,255654,9,78.23,78.22,20.02 +sub,gmpz,256,256,250270,9,79.85,79.74,19.98 +sub,auto,1024,1024,23755,9,841.83,841.71,20.00 +sub,inplace,1024,1024,17197,9,581.53,581.50,20.00 +sub,kernel,1024,1024,34588,9,578.17,578.12,20.01 +sub,floor,1024,1024,33661,9,594.08,593.81,20.00 +sub,gmp,1024,1024,51244,9,390.30,390.29,20.00 +sub,gmpz,1024,1024,51075,9,391.58,391.55,20.01 +sub,auto,2000,2000,11486,9,1741.79,1741.71,20.03 +sub,inplace,2000,2000,8819,9,1134.16,1133.93,20.01 +sub,kernel,2000,2000,17656,9,1132.72,1132.69,20.00 +sub,floor,2000,2000,17395,9,1150.05,1149.75,20.00 +sub,gmp,2000,2000,44066,9,453.87,453.86,20.00 +sub,gmpz,2000,2000,41066,9,487.19,485.90,20.00 +sub,auto,1024,1,70634,9,283.30,282.72,20.01 +sub,inplace,1024,1,17191,9,579.83,579.79,19.94 +sub,kernel,1024,1,34676,9,576.77,576.77,20.05 +sub,floor,1024,1,33725,9,593.10,593.03,20.02 +sub,gmp,1024,1,85917,9,232.83,232.66,20.00 +sub,gmpz,1024,1,85513,9,233.93,233.57,20.00 +shl,auto,1,13,1223516,9,16.74,16.49,20.42 +shl,inplace,1,13,2473930,9,4.08,4.06,20.21 +shl,kernel,1,13,9626059,9,2.08,2.08,20.01 +shl,kernelip,1,13,5672310,9,1.75,1.72,19.82 +shl,floor,1,13,2093678,9,9.85,9.83,20.62 +shl,gmp,1,13,9610359,9,1.89,1.89,18.15 +shl,gmpz,1,13,5708969,9,3.46,3.46,19.78 +shl,auto,4,13,1069217,9,18.66,18.56,19.95 +shl,inplace,4,13,1923850,9,5.18,5.13,19.92 +shl,kernel,4,13,5812518,9,3.44,3.44,20.01 +shl,kernelip,4,13,3443273,9,2.94,2.90,20.26 +shl,floor,4,13,1728491,9,11.35,11.29,19.61 +shl,gmp,4,13,7991573,9,2.31,2.31,18.46 +shl,gmpz,4,13,4947052,9,4.04,4.04,20.04 +shl,auto,16,13,808733,9,24.46,24.43,19.81 +shl,inplace,16,13,1084845,9,9.18,9.17,19.93 +shl,kernel,16,13,2663102,9,7.45,7.44,19.87 +shl,kernelip,16,13,1412730,9,6.92,6.90,19.56 +shl,floor,16,13,1252933,9,15.22,15.21,19.08 +shl,gmp,16,13,4562943,9,4.33,4.32,19.78 +shl,gmpz,16,13,3326879,9,5.96,5.94,19.85 +shl,auto,256,13,150010,9,135.88,133.46,20.32 +shl,inplace,256,13,107375,9,93.08,92.87,20.00 +shl,kernel,256,13,215037,9,93.17,92.97,20.04 +shl,kernelip,256,13,102285,9,97.72,97.53,19.99 +shl,floor,256,13,176132,9,116.61,116.47,20.54 +shl,gmp,256,13,424250,9,47.35,47.22,20.09 +shl,gmpz,256,13,398950,9,50.23,50.01,20.06 +shl,auto,2000,13,21779,9,918.28,917.47,20.01 +shl,inplace,2000,13,15238,9,658.05,656.65,20.08 +shl,kernel,2000,13,27760,9,720.86,720.11,20.04 +shl,kernelip,2000,13,13980,9,715.35,715.30,20.00 +shl,floor,2000,13,27158,9,739.40,738.91,20.09 +shl,gmp,2000,13,59638,9,335.42,335.30,20.00 +shl,gmpz,2000,13,59074,9,338.52,338.19,20.00 +shl,auto,2000,77,18794,9,1065.66,1064.35,20.02 +shl,inplace,2000,77,13073,9,765.08,764.64,20.01 +shl,kernel,2000,77,23486,9,851.62,849.21,19.99 +shl,kernelip,2000,77,12159,9,822.53,822.13,20.05 +shl,floor,2000,77,22921,9,873.35,870.74,20.01 +shl,gmp,2000,77,59185,9,337.73,337.72,19.99 +shl,gmpz,2000,77,59099,9,338.43,338.38,20.01 +shr,auto,1,13,1960124,9,10.10,10.03,19.80 +shr,inplace,1,13,2705985,9,3.67,3.60,19.83 +shr,kernel,1,13,11752121,9,1.70,1.70,20.00 +shr,floor,1,13,8358001,9,2.39,2.39,20.01 +shr,gmp,1,13,10588173,9,1.89,1.89,20.07 +shr,gmpz,1,13,6110652,9,3.27,3.27,20.03 +shr,auto,4,13,950548,9,20.98,20.89,19.97 +shr,inplace,4,13,2093850,9,4.70,4.66,19.69 +shr,kernel,4,13,5738815,9,3.47,3.46,19.92 +shr,floor,4,13,1673323,9,11.96,11.94,20.02 +shr,gmp,4,13,8590249,9,2.32,2.31,19.94 +shr,gmpz,4,13,5025551,9,3.98,3.95,19.97 +shr,auto,16,13,776379,9,25.82,25.71,20.04 +shr,inplace,16,13,1143193,9,8.72,8.69,19.93 +shr,kernel,16,13,2449594,9,8.11,8.09,19.87 +shr,floor,16,13,1173181,9,17.04,16.97,19.98 +shr,gmp,16,13,4650148,9,4.30,4.30,20.01 +shr,gmpz,16,13,3227632,9,6.20,6.15,20.08 +shr,auto,256,13,146129,9,136.65,136.48,19.99 +shr,inplace,256,13,106489,9,93.70,93.62,19.96 +shr,kernel,256,13,181124,9,110.39,110.15,19.99 +shr,floor,256,13,151012,9,131.08,130.90,19.81 +shr,gmp,256,13,415333,9,48.08,47.91,19.96 +shr,gmpz,256,13,393754,9,50.70,50.55,19.95 +shr,auto,2000,13,21036,9,950.30,949.27,20.00 +shr,inplace,2000,13,15223,9,656.81,656.55,20.01 +shr,kernel,2000,13,24559,9,812.17,811.79,20.03 +shr,floor,2000,13,23911,9,832.53,832.11,19.92 +shr,gmp,2000,13,59539,9,336.02,335.79,20.02 +shr,gmpz,2000,13,59020,9,338.88,338.78,20.02 +shr,auto,2000,77,18448,9,1084.17,1083.44,20.00 +shr,inplace,2000,77,13068,9,764.79,764.42,19.99 +shr,kernel,2000,77,24151,9,828.15,828.12,20.00 +shr,floor,2000,77,23503,9,850.99,850.46,20.01 +shr,gmp,2000,77,59493,9,335.94,335.92,20.00 +shr,gmpz,2000,77,58940,9,339.31,339.12,20.00 +mul,auto,1,1,1030208,9,19.37,19.25,19.96 +mul,gmp,1,1,5898281,9,3.38,3.36,19.98 +mul,gmpz,1,1,5041429,9,3.97,3.97,20.02 +mul,auto,2,2,700245,9,28.23,28.08,19.77 +mul,kernel,2,2,2836798,9,7.59,7.54,21.52 +mul,floor,2,2,1329744,9,15.40,15.20,20.47 +mul,gmp,2,2,5249322,9,3.82,3.80,20.03 +mul,gmpz,2,2,3271698,9,6.10,6.07,19.98 +mul,auto,3,3,677316,9,29.67,29.49,20.09 +mul,kernel,3,3,2349037,9,9.03,9.00,21.19 +mul,floor,3,3,1212843,9,16.64,16.43,20.17 +mul,gmp,3,3,2573912,9,7.81,7.74,20.11 +mul,gmpz,3,3,2009423,9,9.92,9.90,19.94 +mul,auto,4,4,617143,9,32.18,32.00,19.88 +mul,kernel,4,4,1897414,9,11.11,11.10,21.09 +mul,floor,4,4,1085971,9,18.78,18.66,20.40 +mul,gmp,4,4,1898471,9,10.57,10.48,20.07 +mul,gmpz,4,4,1651541,9,12.18,12.10,20.12 +mul,auto,6,6,474209,9,42.14,41.96,19.98 +mul,kernel,6,6,1196207,9,18.70,18.67,22.40 +mul,floor,6,6,806967,9,24.76,24.67,19.98 +mul,gmp,6,6,1271674,9,15.71,15.63,19.97 +mul,gmpz,6,6,971386,9,20.63,20.61,20.03 +mul,auto,8,8,420054,9,47.61,47.48,19.99 +mul,kernel,8,8,809763,9,25.60,25.40,20.76 +mul,floor,8,8,602953,9,32.74,32.65,19.75 +mul,gmp,8,8,739723,9,27.24,27.00,20.14 +mul,gmpz,8,8,694409,9,28.87,28.75,20.06 +mul,auto,12,12,285017,9,70.00,69.80,19.94 +mul,kernel,12,12,421226,9,47.88,47.77,20.18 +mul,floor,12,12,359923,9,55.84,55.72,20.10 +mul,gmp,12,12,402862,9,49.65,49.64,20.02 +mul,gmpz,12,12,394088,9,50.76,50.73,20.01 +mul,auto,16,16,198324,9,100.93,100.65,20.02 +mul,kernel,16,16,256157,9,78.94,78.77,20.29 +mul,floor,16,16,233569,9,86.00,85.44,20.09 +mul,gmp,16,16,244222,9,81.88,81.85,20.00 +mul,gmpz,16,16,237939,9,84.06,84.03,20.00 +mul,auto,32,32,93750,9,213.47,212.99,20.02 +mul,kernel,32,32,106446,9,187.08,186.51,19.91 +mul,floor,32,32,100582,9,198.29,197.82,19.95 +mul,gmp,32,32,73349,9,268.78,267.89,19.77 +mul,gmpz,32,32,74141,9,269.72,269.66,20.00 +mul,auto,64,64,36440,9,547.63,547.01,19.96 +mul,kernel,64,64,40876,9,481.40,480.82,19.68 +mul,floor,64,64,40350,9,496.04,495.63,20.02 +mul,gmp,64,64,22625,9,874.36,868.32,19.80 +mul,gmpz,64,64,23188,9,862.76,861.55,20.01 +mul,auto,128,128,11650,9,1716.62,1715.49,20.04 +mul,kernel,128,128,11490,9,1741.89,1739.87,20.02 +mul,floor,128,128,11429,9,1749.50,1747.76,20.00 +mul,gmp,128,128,7241,9,2735.86,2726.65,19.89 +mul,gmpz,128,128,7385,9,2708.02,2706.93,20.06 +mul,auto,256,256,3220,9,6212.26,6209.35,20.00 +mul,kernel,256,256,3203,9,6155.24,6150.75,19.73 +mul,floor,256,256,3208,9,6232.13,6228.60,19.99 +mul,gmp,256,256,2530,9,7848.64,7757.73,19.83 +mul,gmpz,256,256,2574,9,7767.88,7762.70,20.00 +mul,auto,512,512,1040,9,19247.65,19229.18,20.03 +mul,kernel,512,512,1045,9,19160.88,19132.64,20.07 +mul,floor,512,512,1043,9,19194.78,19165.02,20.02 +mul,gmp,512,512,946,9,20938.44,20932.93,19.82 +mul,gmpz,512,512,958,9,20882.65,20876.89,20.01 +mul,auto,1000,1000,335,9,59745.09,59699.86,20.02 +mul,kernel,1000,1000,337,9,59522.41,59497.56,20.06 +mul,floor,1000,1000,337,9,59619.56,59510.06,20.08 +mul,gmp,1000,1000,375,9,53321.38,53313.86,20.01 +mul,gmpz,1000,1000,375,9,53383.14,53345.89,20.03 +mul,auto,2000,2000,113,9,177080.12,176870.63,20.02 +mul,kernel,2000,2000,113,9,176224.81,176044.87,19.91 +mul,floor,2000,2000,114,9,176195.23,176021.59,20.09 +mul,gmp,2000,2000,139,9,144055.47,144031.49,20.03 +mul,gmpz,2000,2000,139,9,144221.55,144160.95,20.05 +mul,auto,2000,100,1122,9,17837.84,17832.09,20.02 +mul,kernel,2000,100,1131,9,17658.29,17649.93,19.97 +mul,floor,2000,100,1130,9,17708.14,17703.98,20.01 +mul,gmp,2000,100,546,9,36248.23,36083.62,19.81 +mul,gmpz,2000,100,558,9,35889.08,35832.80,20.03 +sqr,auto,4,4,583280,9,34.17,33.30,19.79 +sqr,kernel,4,4,2189150,9,9.07,9.05,19.87 +sqr,floor,4,4,1208110,9,16.92,16.91,20.45 +sqr,gmp,4,4,3430145,9,5.80,5.78,19.97 +sqr,gmpz,4,4,2264239,9,8.85,8.80,20.05 +sqr,auto,16,16,229076,9,87.26,87.16,19.99 +sqr,kernel,16,16,355711,9,56.22,56.20,20.06 +sqr,floor,16,16,320714,9,63.16,63.09,20.28 +sqr,gmp,16,16,391032,9,50.42,50.35,19.76 +sqr,gmpz,16,16,374047,9,53.50,53.47,20.01 +sqr,auto,64,64,66666,9,298.75,298.32,19.92 +sqr,kernel,64,64,70503,9,284.11,283.69,20.03 +sqr,floor,64,64,68778,9,299.10,298.28,20.57 +sqr,gmp,64,64,35567,9,560.42,556.00,19.92 +sqr,gmpz,64,64,35820,9,553.96,553.20,19.85 +sqr,auto,512,512,1866,9,10653.34,10644.54,19.88 +sqr,kernel,512,512,1896,9,10558.37,10550.04,20.03 +sqr,floor,512,512,1891,9,10559.54,10554.32,19.97 +sqr,gmp,512,512,1328,9,15064.17,15057.55,20.01 +sqr,gmpz,512,512,1323,9,15122.79,15117.44,20.01 +sqr,auto,2000,2000,201,9,99939.73,99891.97,20.10 +sqr,kernel,2000,2000,202,9,99168.69,99152.25,20.03 +sqr,floor,2000,2000,202,9,99221.29,99021.43,20.04 +sqr,gmp,2000,2000,199,9,100650.09,100584.17,20.08 +sqr,gmpz,2000,2000,199,9,100660.40,100592.80,20.06 +divrem,auto,2,1,491786,9,40.60,40.44,19.98 +divrem,kernel,2,1,3646067,9,5.45,5.40,19.88 +divrem,floor,2,1,1567900,9,12.76,12.74,20.02 +divrem,gmp,2,1,2980726,9,6.70,6.69,19.97 +divrem,gmpz,2,1,1714845,9,11.70,11.66,20.06 +divrem,auto,8,4,168692,9,118.35,118.06,19.98 +divrem,kernel,8,4,404331,9,49.22,48.94,19.91 +divrem,floor,8,4,309187,9,64.34,63.73,19.88 +divrem,gmp,8,4,453465,9,43.94,43.77,19.95 +divrem,gmpz,8,4,432725,9,46.03,45.89,19.92 +divrem,auto,32,16,54110,9,369.60,369.14,20.02 +divrem,kernel,32,16,69585,9,286.95,286.77,19.99 +divrem,floor,32,16,66024,9,302.78,302.28,19.99 +divrem,gmp,32,16,105430,9,189.92,189.33,20.02 +divrem,gmpz,32,16,103980,9,193.09,191.88,20.06 +divrem,auto,128,64,5985,9,3342.05,3340.93,20.01 +divrem,kernel,128,64,6264,9,3193.41,3192.19,20.03 +divrem,floor,128,64,6019,9,3324.73,3322.18,20.02 +divrem,gmp,128,64,11632,9,1719.92,1719.13,20.02 +divrem,gmpz,128,64,11610,9,1722.86,1722.29,20.00 +divrem,auto,512,256,687,9,29280.01,29232.20,20.11 +divrem,kernel,512,256,683,9,29335.31,29275.40,20.03 +divrem,floor,512,256,690,9,29011.85,29001.91,20.02 +divrem,gmp,512,256,1231,9,16250.60,16246.13,20.01 +divrem,gmpz,512,256,1224,9,16341.86,16336.08,20.00 +divrem,auto,2000,1000,109,9,185513.04,185092.02,20.22 +divrem,kernel,2000,1000,109,9,184186.40,184108.03,20.08 +divrem,floor,2000,1000,109,9,184284.67,184248.74,20.09 +divrem,gmp,2000,1000,145,9,138118.32,138089.78,20.03 +divrem,gmpz,2000,1000,145,9,138168.41,138150.78,20.05 +divrem,auto,4000,2000,42,9,478260.02,478033.19,20.10 +divrem,kernel,4000,2000,42,9,478218.76,478051.79,20.13 +divrem,floor,4000,2000,43,9,475879.19,475743.26,20.49 +divrem,gmp,4000,2000,60,9,334263.42,333396.87,20.09 +divrem,gmpz,4000,2000,60,9,333764.55,333110.97,20.02 +divrem,auto,2000,100,140,9,143873.17,143237.19,20.13 +divrem,kernel,2000,100,141,9,141991.99,141828.00,20.03 +divrem,floor,2000,100,142,9,142148.69,141363.97,20.19 +divrem,gmp,2000,100,279,9,71862.71,71825.39,20.05 +divrem,gmpz,2000,100,278,9,71967.62,71943.56,20.02 +divrem,auto,65536,1,103,9,193867.29,193273.09,19.96 +divrem,kernel,65536,1,120,9,167106.91,166952.17,20.07 +divrem,floor,65536,1,115,9,174753.16,174268.59,20.09 +divrem,gmp,65536,1,136,9,148101.89,148092.88,20.15 +divrem,gmpz,65536,1,136,9,148111.58,148099.72,20.14 +tochars,auto,1,10,1374834,9,14.56,14.54,20.05 +tochars,kernel,1,10,311200,9,64.23,64.14,20.00 +tochars,gmp,1,10,1016486,9,19.65,19.47,20.00 +tochars,gmpz,1,10,576260,9,33.83,33.75,19.50 +tochars,auto,4,10,142678,9,140.34,140.01,20.04 +tochars,kernel,4,10,111051,9,180.69,179.07,20.06 +tochars,gmp,4,10,279363,9,71.59,71.54,20.01 +tochars,gmpz,4,10,202808,9,98.66,98.55,20.01 +tochars,auto,16,10,17111,9,1169.86,1168.47,20.02 +tochars,kernel,16,10,19324,9,1037.56,1035.43,20.06 +tochars,gmp,16,10,39639,9,503.59,503.49,19.97 +tochars,gmpz,16,10,33928,9,589.59,587.02,19.99 +tochars,auto,64,10,3561,9,5620.71,5618.98,20.02 +tochars,kernel,64,10,3818,9,5245.38,5235.63,20.03 +tochars,gmp,64,10,7525,9,2662.62,2659.41,20.04 +tochars,gmpz,64,10,6778,9,2949.18,2946.42,19.99 +tochars,auto,256,10,559,9,35837.64,35818.06,20.03 +tochars,kernel,256,10,579,9,34599.82,34567.09,20.03 +tochars,gmp,256,10,1076,9,18611.66,18595.03,20.03 +tochars,gmpz,256,10,1016,9,19686.65,19668.66,20.06 +tochars,auto,2000,10,33,9,609112.79,608780.42,20.13 +tochars,kernel,2000,10,35,9,584798.20,584402.00,20.47 +tochars,gmp,2000,10,51,9,399771.24,399494.51,20.39 +tochars,gmpz,2000,10,49,9,408221.88,408058.18,20.01 +tochars,auto,16,16,163271,9,122.46,122.15,20.00 +tochars,gmp,16,16,208447,9,96.09,95.91,20.06 +tochars,gmpz,16,16,127382,9,156.87,156.69,19.98 +tochars,auto,2000,16,1465,9,13618.13,13615.66,19.95 +tochars,gmp,2000,16,1801,9,11112.48,11110.57,20.04 +tochars,gmpz,2000,16,1116,9,17926.70,17924.78,20.01 +fromchars,auto,4,10,100159,9,199.01,198.26,19.95 +fromchars,kernel,4,10,519400,9,38.75,38.58,20.12 +fromchars,gmp,4,10,625415,9,31.99,31.95,20.01 +fromchars,gmpz,4,10,289937,9,69.10,68.96,20.04 +fromchars,auto,16,10,46784,9,421.73,418.94,19.71 +fromchars,kernel,16,10,91809,9,220.06,214.44,20.16 +fromchars,gmp,16,10,161977,9,123.51,123.39,20.06 +fromchars,gmpz,16,10,78485,9,254.70,254.52,20.05 +fromchars,auto,64,10,7219,9,2800.57,2680.65,20.24 +fromchars,kernel,64,10,9557,9,2130.25,2013.58,20.35 +fromchars,gmp,64,10,21911,9,912.31,911.31,19.99 +fromchars,gmpz,64,10,14189,9,1409.42,1408.60,20.01 +fromchars,auto,256,10,724,9,28049.70,27655.11,20.31 +fromchars,kernel,256,10,789,9,25734.21,25343.37,20.38 +fromchars,gmp,256,10,2472,9,8093.38,8082.46,20.02 +fromchars,gmpz,256,10,2000,9,9998.69,9995.67,20.00 +fromchars,auto,2000,10,48,9,425656.81,423590.75,20.43 +fromchars,kernel,2000,10,49,9,408122.57,407482.86,20.00 +fromchars,gmp,2000,10,110,9,182485.57,182394.81,20.08 +fromchars,gmpz,2000,10,102,9,197755.04,197723.30,20.17 diff --git a/tests/beman/big_int/perf/item1/x64r3_base64_seed2b.csv b/tests/beman/big_int/perf/item1/x64r3_base64_seed2b.csv new file mode 100644 index 00000000..80ab778c --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_base64_seed2b.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T18:06:11Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2387996,9,8.20,8.18,19.62 +add,inplace,1,1,2424857,9,4.10,4.09,19.90 +add,kernel,1,1,10589098,9,1.89,1.89,20.00 +add,floor,1,1,2037924,9,9.81,9.79,20.03 +add,gmp,1,1,8822598,9,2.27,2.27,20.00 +add,gmpz,1,1,4791446,9,4.16,4.16,19.96 +add,auto,2,2,1123317,9,17.89,17.77,20.11 +add,inplace,2,2,1710963,9,5.85,5.77,20.02 +add,kernel,2,2,8490091,9,2.36,2.34,20.07 +add,floor,2,2,1957175,9,10.19,10.13,19.95 +add,gmp,2,2,8824003,9,2.27,2.27,20.00 +add,gmpz,2,2,4813025,9,4.16,4.16,20.00 +add,auto,4,4,1113620,9,17.94,17.88,19.98 +add,inplace,4,4,1784113,9,5.59,5.57,19.94 +add,kernel,4,4,6453401,9,3.06,3.03,19.83 +add,floor,4,4,1835404,9,10.95,10.91,20.09 +add,gmp,4,4,8009318,9,2.50,2.50,20.00 +add,gmpz,4,4,4597204,9,4.34,4.34,19.98 +add,auto,8,8,1044745,9,19.26,19.14,20.28 +add,inplace,8,8,1369229,9,7.30,7.27,19.99 +add,kernel,8,8,4360536,9,4.63,4.54,20.31 +add,floor,8,8,1607769,9,12.50,12.42,20.08 +add,gmp,8,8,5425615,9,3.69,3.69,20.05 +add,gmpz,8,8,4303077,9,4.66,4.64,20.04 +add,auto,16,16,810163,9,25.32,25.11,20.49 +add,inplace,16,16,832624,9,11.90,11.88,19.86 +add,kernel,16,16,2645915,9,7.56,7.56,20.01 +add,floor,16,16,1299297,9,15.41,15.36,20.04 +add,gmp,16,16,2921277,9,6.85,6.84,20.01 +add,gmpz,16,16,3065987,9,6.51,6.49,20.00 +add,auto,64,64,312848,9,63.47,63.13,19.86 +add,inplace,64,64,257268,9,38.86,38.81,20.00 +add,kernel,64,64,602613,9,33.21,33.18,20.03 +add,floor,64,64,486151,9,41.28,40.92,20.08 +add,gmp,64,64,1294763,9,15.45,15.45,20.00 +add,gmpz,64,64,1212627,9,16.49,16.46,19.99 +add,auto,256,256,89571,9,223.44,223.28,20.04 +add,inplace,256,256,68677,9,145.59,145.55,20.00 +add,kernel,256,256,140273,9,142.56,142.53,20.05 +add,floor,256,256,126002,9,158.77,158.52,20.02 +add,gmp,256,256,255641,9,78.23,78.23,20.00 +add,gmpz,256,256,251685,9,79.46,79.36,19.99 +add,auto,1024,1024,23760,9,841.59,841.45,20.00 +add,inplace,1024,1024,17158,9,582.99,582.85,20.01 +add,kernel,1024,1024,34571,9,578.42,578.41,20.00 +add,floor,1024,1024,33657,9,594.19,594.04,20.00 +add,gmp,1024,1024,51229,9,390.41,390.40,20.00 +add,gmpz,1024,1024,51105,9,391.36,391.34,20.01 +add,auto,2000,2000,11625,9,1720.69,1720.51,20.00 +add,inplace,2000,2000,8820,9,1133.94,1133.92,20.00 +add,kernel,2000,2000,17651,9,1133.16,1133.08,20.02 +add,floor,2000,2000,17393,9,1150.21,1149.85,20.01 +add,gmp,2000,2000,42951,9,463.55,463.52,19.91 +add,gmpz,2000,2000,41361,9,483.50,481.96,20.00 +add,auto,1024,1,71270,9,280.48,280.02,19.99 +add,inplace,1024,1,17201,9,579.77,579.68,20.00 +add,kernel,1024,1,34403,9,577.70,577.66,19.87 +add,floor,1024,1,33707,9,593.56,593.37,20.01 +add,gmp,1024,1,85977,9,232.64,232.57,20.00 +add,gmpz,1024,1,85432,9,234.15,233.75,20.02 +sub,auto,1,1,2224394,9,9.01,8.92,20.05 +sub,inplace,1,1,2521164,9,3.97,3.97,20.03 +sub,kernel,1,1,13236213,9,1.51,1.51,20.00 +sub,floor,1,1,10541215,9,1.90,1.89,20.07 +sub,gmp,1,1,8824143,9,2.27,2.27,20.00 +sub,gmpz,1,1,4603802,9,4.34,4.34,20.05 +sub,auto,2,2,1058712,9,19.29,18.96,20.37 +sub,inplace,2,2,2179572,9,4.62,4.58,20.11 +sub,kernel,2,2,9626246,9,2.09,2.08,20.10 +sub,floor,2,2,2015338,9,9.99,9.94,20.16 +sub,gmp,2,2,8758598,9,2.27,2.27,19.86 +sub,gmpz,2,2,4603796,9,4.35,4.34,20.05 +sub,auto,4,4,1040951,9,19.21,18.83,19.92 +sub,inplace,4,4,1836367,9,5.42,5.41,19.94 +sub,kernel,4,4,7016830,9,2.86,2.83,20.12 +sub,floor,4,4,1874542,9,10.76,10.66,20.12 +sub,gmp,4,4,8045538,9,2.49,2.49,20.03 +sub,gmpz,4,4,4325222,9,4.66,4.62,20.14 +sub,auto,8,8,969633,9,20.58,20.46,19.94 +sub,inplace,8,8,1385596,9,7.17,7.16,19.90 +sub,kernel,8,8,4589758,9,4.37,4.35,20.05 +sub,floor,8,8,1628363,9,12.37,12.31,20.13 +sub,gmp,8,8,5437275,9,3.68,3.68,20.04 +sub,gmpz,8,8,4019672,9,4.96,4.94,19.95 +sub,auto,16,16,783361,9,25.76,25.24,20.16 +sub,inplace,16,16,941215,9,10.55,10.52,19.88 +sub,kernel,16,16,2492892,9,8.02,8.02,20.03 +sub,floor,16,16,1313194,9,15.27,15.26,20.08 +sub,gmp,16,16,3634124,9,5.50,5.50,20.07 +sub,gmpz,16,16,2944036,9,6.79,6.77,20.01 +sub,auto,64,64,304154,9,65.67,65.60,19.97 +sub,inplace,64,64,263928,9,37.85,37.78,19.99 +sub,kernel,64,64,607489,9,32.91,32.89,19.99 +sub,floor,64,64,474881,9,42.13,42.07,20.00 +sub,gmp,64,64,1294743,9,15.45,15.45,20.00 +sub,gmpz,64,64,1191080,9,16.74,16.71,19.94 +sub,auto,256,256,89287,9,224.16,223.99,20.03 +sub,inplace,256,256,68777,9,145.42,145.37,20.00 +sub,kernel,256,256,139989,9,142.84,142.80,20.00 +sub,floor,256,256,126150,9,158.59,158.46,20.01 +sub,gmp,256,256,255618,9,78.23,78.22,20.00 +sub,gmpz,256,256,250525,9,79.87,79.82,20.01 +sub,auto,1024,1024,23717,9,843.14,842.90,20.00 +sub,inplace,1024,1024,17197,9,581.51,581.44,20.00 +sub,kernel,1024,1024,34529,9,578.24,578.22,19.97 +sub,floor,1024,1024,33666,9,594.22,593.95,20.03 +sub,gmp,1024,1024,21188,9,944.29,943.98,20.04 +sub,gmpz,1024,1024,21081,9,948.93,948.57,20.00 +sub,auto,2000,2000,11483,9,1741.81,1741.68,20.00 +sub,inplace,2000,2000,8818,9,1134.19,1134.01,20.02 +sub,kernel,2000,2000,17647,9,1131.67,1131.60,19.97 +sub,floor,2000,2000,17428,9,1147.15,1147.05,19.99 +sub,gmp,2000,2000,41810,9,478.19,478.12,19.99 +sub,gmpz,2000,2000,40523,9,492.22,490.82,20.01 +sub,auto,1024,1,70498,9,283.49,282.93,19.99 +sub,inplace,1024,1,17251,9,579.72,579.64,20.02 +sub,kernel,1024,1,34618,9,577.75,577.73,20.00 +sub,floor,1024,1,33716,9,593.21,593.09,20.00 +sub,gmp,1024,1,85585,9,233.47,233.42,19.98 +sub,gmpz,1024,1,85354,9,234.23,233.90,19.99 +shl,auto,1,13,1207837,9,16.70,16.55,20.19 +shl,inplace,1,13,2454978,9,4.07,4.04,20.01 +shl,kernel,1,13,9637685,9,2.08,2.07,20.01 +shl,kernelip,1,13,5885913,9,1.74,1.71,20.55 +shl,floor,1,13,2084293,9,9.82,9.81,20.47 +shl,gmp,1,13,9624830,9,1.89,1.89,18.19 +shl,gmpz,1,13,5771607,9,3.47,3.46,20.00 +shl,auto,4,13,1062291,9,18.76,18.56,19.90 +shl,inplace,4,13,1930584,9,5.17,5.13,19.94 +shl,kernel,4,13,5815427,9,3.46,3.44,20.11 +shl,kernelip,4,13,3340545,9,2.95,2.90,19.65 +shl,floor,4,13,1714412,9,11.33,11.32,19.45 +shl,gmp,4,13,7991444,9,2.31,2.31,18.46 +shl,gmpz,4,13,4904331,9,4.08,4.08,20.02 +shl,auto,16,13,806072,9,24.98,24.58,20.08 +shl,inplace,16,13,1091710,9,9.17,9.15,20.02 +shl,kernel,16,13,2570501,9,7.78,7.77,20.03 +shl,kernelip,16,13,1412311,9,7.09,6.95,19.94 +shl,floor,16,13,1255572,9,15.22,15.21,19.20 +shl,gmp,16,13,4926520,9,4.05,4.05,20.03 +shl,gmpz,16,13,3442381,9,5.82,5.81,20.05 +shl,auto,256,13,145198,9,134.95,132.38,19.59 +shl,inplace,256,13,107089,9,93.02,92.74,19.92 +shl,kernel,256,13,214715,9,93.15,93.09,20.01 +shl,kernelip,256,13,102352,9,97.72,97.63,20.00 +shl,floor,256,13,178101,9,116.76,116.66,20.79 +shl,gmp,256,13,423545,9,47.31,47.13,20.03 +shl,gmpz,256,13,398786,9,50.32,50.02,20.05 +shl,auto,2000,13,21802,9,916.94,914.99,19.98 +shl,inplace,2000,13,15188,9,657.29,656.27,19.97 +shl,kernel,2000,13,27780,9,720.08,719.92,20.01 +shl,kernelip,2000,13,13980,9,715.35,715.31,20.01 +shl,floor,2000,13,27168,9,739.98,739.79,20.10 +shl,gmp,2000,13,59365,9,335.51,335.38,19.92 +shl,gmpz,2000,13,58776,9,338.52,338.35,19.90 +shl,auto,2000,77,18811,9,1065.41,1063.95,20.05 +shl,inplace,2000,77,13062,9,766.37,765.68,20.05 +shl,kernel,2000,77,23564,9,849.32,848.68,20.02 +shl,kernelip,2000,77,12164,9,822.30,822.02,20.01 +shl,floor,2000,77,22925,9,874.20,871.03,20.02 +shl,gmp,2000,77,59188,9,337.73,337.72,20.01 +shl,gmpz,2000,77,59109,9,338.40,338.35,20.00 +shr,auto,1,13,1973793,9,10.10,10.06,19.95 +shr,inplace,1,13,2767179,9,3.61,3.58,19.99 +shr,kernel,1,13,11735178,9,1.70,1.70,19.97 +shr,floor,1,13,8824200,9,2.27,2.27,20.00 +shr,gmp,1,13,10588587,9,1.89,1.89,20.00 +shr,gmpz,1,13,6110104,9,3.27,3.27,20.01 +shr,auto,4,13,951231,9,21.00,20.90,19.98 +shr,inplace,4,13,2092694,9,4.68,4.59,19.61 +shr,kernel,4,13,5775688,9,3.47,3.46,20.06 +shr,floor,4,13,1673062,9,11.97,11.94,20.06 +shr,gmp,4,13,8655420,9,2.33,2.32,20.19 +shr,gmpz,4,13,5049574,9,3.96,3.94,20.01 +shr,auto,16,13,773196,9,25.80,25.73,19.96 +shr,inplace,16,13,1143486,9,8.71,8.67,19.92 +shr,kernel,16,13,2446214,9,8.11,8.03,19.83 +shr,floor,16,13,1172384,9,17.02,16.98,19.96 +shr,gmp,16,13,4652749,9,4.30,4.30,20.03 +shr,gmpz,16,13,3073857,9,6.20,6.16,19.22 +shr,auto,256,13,145414,9,137.10,136.75,19.94 +shr,inplace,256,13,106633,9,93.76,93.43,19.99 +shr,kernel,256,13,181130,9,110.00,109.92,19.93 +shr,floor,256,13,152437,9,131.34,131.09,20.01 +shr,gmp,256,13,414373,9,48.09,47.90,19.92 +shr,gmpz,256,13,394450,9,50.66,50.55,19.98 +shr,auto,2000,13,21021,9,949.64,949.01,19.99 +shr,inplace,2000,13,15231,9,656.85,656.50,20.01 +shr,kernel,2000,13,24636,9,811.81,811.79,20.03 +shr,floor,2000,13,24026,9,832.67,832.32,20.01 +shr,gmp,2000,13,59529,9,335.97,335.84,20.00 +shr,gmpz,2000,13,59011,9,338.87,338.72,20.00 +shr,auto,2000,77,18460,9,1082.81,1082.24,19.99 +shr,inplace,2000,77,13079,9,764.58,764.29,20.00 +shr,kernel,2000,77,24144,9,828.40,828.34,20.00 +shr,floor,2000,77,23523,9,850.63,850.38,20.01 +shr,gmp,2000,77,59528,9,335.93,335.91,20.00 +shr,gmpz,2000,77,58956,9,339.24,339.20,20.00 +mul,auto,1,1,1039451,9,19.19,19.14,19.95 +mul,gmp,1,1,5891065,9,3.39,3.38,19.99 +mul,gmpz,1,1,5033529,9,3.97,3.97,19.99 +mul,auto,2,2,718415,9,27.91,27.81,20.07 +mul,kernel,2,2,2815099,9,7.61,7.56,21.41 +mul,floor,2,2,1333390,9,15.07,14.96,20.08 +mul,gmp,2,2,5235920,9,3.83,3.81,20.04 +mul,gmpz,2,2,3262002,9,6.13,6.09,19.99 +mul,auto,3,3,675119,9,29.70,29.53,20.05 +mul,kernel,3,3,2339584,9,9.02,9.00,21.11 +mul,floor,3,3,1220773,9,16.59,16.41,20.26 +mul,gmp,3,3,2546003,9,7.85,7.72,19.97 +mul,gmpz,3,3,1998786,9,10.01,9.98,20.01 +mul,auto,4,4,630228,9,31.83,31.55,20.06 +mul,kernel,4,4,1891113,9,11.13,11.07,21.04 +mul,floor,4,4,1082561,9,18.54,18.40,20.07 +mul,gmp,4,4,2062918,9,9.64,9.58,19.88 +mul,gmpz,4,4,1653116,9,12.13,12.11,20.08 +mul,auto,6,6,477854,9,41.90,41.78,20.02 +mul,kernel,6,6,1195121,9,17.48,17.47,20.90 +mul,floor,6,6,806073,9,24.70,24.65,19.93 +mul,gmp,6,6,1273029,9,15.67,15.65,19.97 +mul,gmpz,6,6,1107404,9,18.03,17.96,19.97 +mul,auto,8,8,420366,9,47.27,47.14,19.89 +mul,kernel,8,8,810274,9,25.48,25.40,20.68 +mul,floor,8,8,608944,9,32.60,32.45,19.86 +mul,gmp,8,8,735682,9,27.14,27.00,19.97 +mul,gmpz,8,8,692814,9,28.82,28.51,20.03 +mul,auto,12,12,286772,9,70.05,69.66,20.07 +mul,kernel,12,12,425591,9,47.56,47.31,20.21 +mul,floor,12,12,366176,9,54.87,54.69,20.09 +mul,gmp,12,12,411946,9,48.56,48.53,20.01 +mul,gmpz,12,12,394067,9,50.76,50.75,20.00 +mul,auto,16,16,196518,9,101.57,101.41,19.97 +mul,kernel,16,16,255974,9,78.96,78.79,20.22 +mul,floor,16,16,233172,9,86.05,85.59,20.05 +mul,gmp,16,16,244279,9,81.89,81.88,20.01 +mul,gmpz,16,16,237837,9,84.06,84.03,20.00 +mul,auto,32,32,93890,9,213.09,212.69,20.01 +mul,kernel,32,32,107590,9,187.03,186.43,20.19 +mul,floor,32,32,101897,9,196.51,195.77,20.03 +mul,gmp,32,32,73072,9,270.22,268.49,19.79 +mul,gmpz,32,32,73696,9,271.08,270.92,19.98 +mul,auto,64,64,38650,9,517.30,516.47,20.00 +mul,kernel,64,64,41419,9,484.55,483.79,20.12 +mul,floor,64,64,40719,9,490.60,490.34,19.99 +mul,gmp,64,64,22905,9,869.09,862.08,19.89 +mul,gmpz,64,64,23268,9,858.25,857.85,19.98 +mul,auto,128,128,11580,9,1726.56,1725.57,20.01 +mul,kernel,128,128,11812,9,1698.80,1696.43,20.07 +mul,floor,128,128,11759,9,1701.60,1700.50,20.01 +mul,gmp,128,128,7180,9,2768.13,2750.13,19.87 +mul,gmpz,128,128,7305,9,2719.69,2717.84,19.87 +mul,auto,256,256,3204,9,6237.72,6235.92,19.99 +mul,kernel,256,256,3252,9,6164.94,6161.10,20.07 +mul,floor,256,256,3243,9,6164.99,6161.21,19.99 +mul,gmp,256,256,2504,9,7901.31,7830.60,19.83 +mul,gmpz,256,256,2553,9,7809.47,7805.78,19.94 +mul,auto,512,512,1026,9,19400.17,19369.30,19.92 +mul,kernel,512,512,1041,9,19244.47,19228.01,20.04 +mul,floor,512,512,1039,9,19248.86,19236.27,20.01 +mul,gmp,512,512,945,9,20971.00,20964.31,19.83 +mul,gmpz,512,512,960,9,20836.70,20824.39,20.00 +mul,auto,1000,1000,334,9,59930.25,59818.62,20.02 +mul,kernel,1000,1000,337,9,59559.12,59496.17,20.07 +mul,floor,1000,1000,337,9,59501.96,59443.07,20.05 +mul,gmp,1000,1000,372,9,53557.98,53549.15,19.92 +mul,gmpz,1000,1000,375,9,53364.86,53349.59,20.01 +mul,auto,2000,2000,114,9,176820.36,176705.29,20.16 +mul,kernel,2000,2000,113,9,177691.74,177461.63,20.08 +mul,floor,2000,2000,113,9,177545.32,177408.57,20.07 +mul,gmp,2000,2000,139,9,144100.32,144078.65,20.04 +mul,gmpz,2000,2000,139,9,144190.43,144106.89,20.04 +mul,auto,2000,100,1122,9,17832.22,17827.95,20.02 +mul,kernel,2000,100,1133,9,17660.35,17653.35,20.01 +mul,floor,2000,100,1132,9,17682.28,17674.43,20.03 +mul,gmp,2000,100,547,9,36254.18,35947.20,19.85 +mul,gmpz,2000,100,557,9,35947.20,35818.69,20.01 +sqr,auto,4,4,598669,9,33.30,33.17,19.95 +sqr,kernel,4,4,2197805,9,9.11,9.07,20.03 +sqr,floor,4,4,1205910,9,16.92,16.90,20.40 +sqr,gmp,4,4,3428166,9,5.83,5.79,20.02 +sqr,gmpz,4,4,2240482,9,8.83,8.78,19.80 +sqr,auto,16,16,251289,9,79.56,79.42,20.00 +sqr,kernel,16,16,355855,9,56.22,56.14,20.01 +sqr,floor,16,16,320351,9,62.42,62.38,20.00 +sqr,gmp,16,16,396441,9,49.84,49.77,19.78 +sqr,gmpz,16,16,383935,9,52.09,52.08,20.01 +sqr,auto,64,64,66248,9,301.69,301.21,19.99 +sqr,kernel,64,64,74184,9,269.49,269.23,20.02 +sqr,floor,64,64,72511,9,280.16,279.48,20.33 +sqr,gmp,64,64,35679,9,559.58,557.07,19.95 +sqr,gmpz,64,64,36110,9,552.57,551.17,19.95 +sqr,auto,512,512,1880,9,10628.86,10619.06,19.98 +sqr,kernel,512,512,1884,9,10619.70,10604.28,20.01 +sqr,floor,512,512,1891,9,10585.77,10574.18,20.02 +sqr,gmp,512,512,1326,9,15077.99,15070.25,20.01 +sqr,gmpz,512,512,1327,9,15072.12,15066.99,20.01 +sqr,auto,2000,2000,203,9,98578.09,98547.48,20.02 +sqr,kernel,2000,2000,204,9,98156.43,98077.76,20.03 +sqr,floor,2000,2000,204,9,98275.50,98254.48,20.05 +sqr,gmp,2000,2000,199,9,100587.33,100521.71,20.02 +sqr,gmpz,2000,2000,199,9,100585.44,100523.41,20.02 +divrem,auto,2,1,491595,9,40.63,40.45,19.96 +divrem,kernel,2,1,3620301,9,5.44,5.43,19.73 +divrem,floor,2,1,1567816,9,12.77,12.75,20.02 +divrem,gmp,2,1,2985763,9,6.70,6.69,20.05 +divrem,gmpz,2,1,1716585,9,11.61,11.56,19.93 +divrem,auto,8,4,170082,9,117.38,116.73,19.97 +divrem,kernel,8,4,395233,9,50.76,50.62,20.06 +divrem,floor,8,4,307042,9,64.72,64.37,19.88 +divrem,gmp,8,4,456601,9,43.66,43.51,19.93 +divrem,gmpz,8,4,435352,9,46.03,45.79,20.05 +divrem,auto,32,16,53587,9,372.72,371.84,19.98 +divrem,kernel,32,16,69090,9,291.03,290.57,20.10 +divrem,floor,32,16,65766,9,303.98,303.83,20.00 +divrem,gmp,32,16,105298,9,190.53,190.21,20.07 +divrem,gmpz,32,16,103187,9,193.76,193.13,19.99 +divrem,auto,128,64,5985,9,3342.24,3341.52,20.00 +divrem,kernel,128,64,6256,9,3198.33,3197.07,20.02 +divrem,floor,128,64,6231,9,3209.92,3206.56,20.01 +divrem,gmp,128,64,11627,9,1719.47,1718.62,20.00 +divrem,gmpz,128,64,11612,9,1722.72,1721.76,20.04 +divrem,auto,512,256,685,9,29336.20,29309.22,20.11 +divrem,kernel,512,256,693,9,28866.30,28860.08,20.01 +divrem,floor,512,256,690,9,28992.49,28983.89,20.01 +divrem,gmp,512,256,1230,9,16258.22,16253.48,20.01 +divrem,gmpz,512,256,1229,9,16280.29,16276.74,20.01 +divrem,auto,2000,1000,108,9,185479.68,184796.63,20.02 +divrem,kernel,2000,1000,109,9,184558.23,184463.45,20.13 +divrem,floor,2000,1000,109,9,184452.06,184409.70,20.11 +divrem,gmp,2000,1000,145,9,138090.11,138050.40,20.02 +divrem,gmpz,2000,1000,145,9,138022.53,137992.37,20.01 +divrem,auto,4000,2000,42,9,478703.57,478441.10,20.11 +divrem,kernel,4000,2000,43,9,473096.00,472899.09,20.36 +divrem,floor,4000,2000,43,9,472199.00,472027.47,20.31 +divrem,gmp,4000,2000,60,9,333010.05,331558.02,19.98 +divrem,gmpz,4000,2000,61,9,332909.85,332439.51,20.31 +divrem,auto,2000,100,139,9,143770.04,143207.14,20.00 +divrem,kernel,2000,100,138,9,145378.46,144787.87,20.07 +divrem,floor,2000,100,140,9,142053.14,141345.92,19.88 +divrem,gmp,2000,100,276,9,72564.33,72536.06,20.03 +divrem,gmpz,2000,100,278,9,71983.24,71968.71,20.01 +divrem,auto,65536,1,103,9,193575.36,193136.25,19.93 +divrem,kernel,65536,1,120,9,167139.73,166849.07,20.05 +divrem,floor,65536,1,115,9,174610.75,174532.10,20.09 +divrem,gmp,65536,1,135,9,148100.30,148094.67,19.99 +divrem,gmpz,65536,1,136,9,148107.45,148101.24,20.14 +tochars,auto,1,10,1370647,9,14.62,14.55,20.03 +tochars,kernel,1,10,312078,9,64.25,63.94,20.04 +tochars,gmp,1,10,994385,9,20.06,19.91,19.94 +tochars,gmpz,1,10,582900,9,34.29,34.23,19.99 +tochars,auto,4,10,122160,9,163.47,162.81,19.98 +tochars,kernel,4,10,110343,9,181.47,179.88,20.02 +tochars,gmp,4,10,279275,9,71.62,71.59,20.01 +tochars,gmpz,4,10,202706,9,98.65,98.52,20.00 +tochars,auto,16,10,16954,9,1180.16,1176.64,20.02 +tochars,kernel,16,10,19274,9,1036.47,1034.01,19.98 +tochars,gmp,16,10,39762,9,503.13,502.92,20.01 +tochars,gmpz,16,10,33833,9,589.74,586.97,19.94 +tochars,auto,64,10,3562,9,5623.40,5618.01,20.03 +tochars,kernel,64,10,3810,9,5244.75,5237.66,19.98 +tochars,gmp,64,10,7519,9,2661.97,2658.93,20.02 +tochars,gmpz,64,10,6794,9,2947.78,2945.02,20.03 +tochars,auto,256,10,558,9,35879.65,35863.90,20.09 +tochars,kernel,256,10,579,9,34592.11,34568.03,20.03 +tochars,gmp,256,10,1076,9,18590.38,18577.93,20.02 +tochars,gmpz,256,10,1019,9,19648.49,19617.68,20.02 +tochars,auto,2000,10,33,9,609843.67,609265.33,20.13 +tochars,kernel,2000,10,35,9,584418.23,583824.63,20.45 +tochars,gmp,2000,10,50,9,399474.30,399260.12,19.98 +tochars,gmpz,2000,10,49,9,408981.69,408486.35,20.12 +tochars,auto,16,16,162052,9,122.34,122.10,19.83 +tochars,gmp,16,16,207081,9,96.73,96.55,20.03 +tochars,gmpz,16,16,128283,9,155.86,155.71,19.99 +tochars,auto,2000,16,1454,9,13611.90,13611.20,19.79 +tochars,gmp,2000,16,1800,9,11111.45,11110.50,20.03 +tochars,gmpz,2000,16,1116,9,17926.92,17921.20,20.03 +fromchars,auto,4,10,99594,9,199.97,199.29,19.90 +fromchars,kernel,4,10,447870,9,44.60,44.47,19.98 +fromchars,gmp,4,10,623006,9,31.98,31.92,19.92 +fromchars,gmpz,4,10,289038,9,69.21,69.11,20.05 +fromchars,auto,16,10,47194,9,423.15,419.06,19.97 +fromchars,kernel,16,10,91782,9,214.14,210.88,19.74 +fromchars,gmp,16,10,162459,9,123.30,123.07,20.03 +fromchars,gmpz,16,10,75214,9,267.49,265.60,20.12 +fromchars,auto,64,10,7203,9,2775.57,2679.77,19.98 +fromchars,kernel,64,10,10124,9,2115.40,1969.90,20.97 +fromchars,gmp,64,10,22879,9,870.43,870.19,19.92 +fromchars,gmpz,64,10,14324,9,1355.37,1354.35,19.45 +fromchars,auto,256,10,693,9,28452.83,27661.88,19.71 +fromchars,kernel,256,10,764,9,25391.54,24963.82,19.59 +fromchars,gmp,256,10,2478,9,8064.47,8056.40,19.98 +fromchars,gmpz,256,10,2008,9,9968.97,9962.93,20.02 +fromchars,auto,2000,10,47,9,428686.32,427264.47,20.14 +fromchars,kernel,2000,10,49,9,408811.71,408714.63,20.06 +fromchars,gmp,2000,10,110,9,183303.92,183244.52,20.16 +fromchars,gmpz,2000,10,101,9,198215.80,198144.24,20.02 diff --git a/tests/beman/big_int/perf/item1/x64r3_base64_spot_seed1.csv b/tests/beman/big_int/perf/item1/x64r3_base64_spot_seed1.csv new file mode 100644 index 00000000..72c07568 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_base64_spot_seed1.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,1353,3,14784.58,14784.33,20.00 +add,inplace,16384,16384,1076,3,9330.72,9298.38,20.06 +add,kernel,16384,16384,2152,3,9295.45,9295.09,20.00 +add,floor,16384,16384,2147,3,9317.86,9315.43,20.01 +add,gmp,16384,16384,2870,3,6970.37,6969.86,20.00 +add,gmpz,16384,16384,2545,3,7862.25,7861.06,20.01 +mul,auto,2000,2000,114,3,176940.58,176911.43,20.17 +mul,kernel,2000,2000,114,3,176232.07,176157.55,20.10 +mul,floor,2000,2000,114,3,176336.03,176141.85,20.10 +mul,gmp,2000,2000,139,3,144476.17,144466.93,20.08 +mul,gmpz,2000,2000,138,3,144578.78,144570.24,19.95 +mul,auto,16384,16384,6,3,3783414.67,3773853.83,22.68 +mul,kernel,16384,16384,6,3,3776078.00,3774677.50,22.66 +mul,floor,16384,16384,6,3,3783033.33,3783005.67,22.71 +mul,gmp,16384,16384,12,3,1765017.50,1764822.50,21.18 +mul,gmpz,16384,16384,11,3,1837808.09,1765515.45,19.96 +divrem,auto,4096,2048,41,3,498866.27,498793.37,20.45 +divrem,kernel,4096,2048,40,3,500623.72,500554.42,20.02 +divrem,floor,4096,2048,41,3,499045.85,498761.59,20.46 +divrem,gmp,4096,2048,55,3,368541.29,368300.78,20.28 +divrem,gmpz,4096,2048,55,3,368662.38,368024.84,20.36 +tochars,auto,10000,10,4,3,5872295.00,5855578.00,23.51 +tochars,kernel,10000,10,4,3,5819560.75,5813242.75,23.29 +tochars,gmp,10000,10,5,3,4182745.00,4179139.00,20.91 +tochars,gmpz,10000,10,5,3,4222820.00,4219535.80,21.11 +fromchars,auto,10000,10,6,3,3668094.00,3657601.33,22.01 +fromchars,kernel,10000,10,6,3,3586443.83,3585116.17,21.54 +fromchars,gmp,10000,10,11,3,1931512.73,1930175.36,21.24 +fromchars,gmpz,10000,10,10,3,2007044.20,2006718.10,20.07 diff --git a/tests/beman/big_int/perf/item1/x64r3_base64_spot_seed2.csv b/tests/beman/big_int/perf/item1/x64r3_base64_spot_seed2.csv new file mode 100644 index 00000000..78d4265f --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_base64_spot_seed2.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,1349,3,14835.79,14833.96,20.02 +add,inplace,16384,16384,1076,3,9299.46,9299.04,20.01 +add,kernel,16384,16384,2148,3,9313.04,9312.95,20.00 +add,floor,16384,16384,2144,3,9329.65,9328.90,20.00 +add,gmp,16384,16384,2914,3,6865.18,6864.82,20.01 +add,gmpz,16384,16384,2913,3,6867.27,6867.03,20.01 +mul,auto,2000,2000,113,3,177686.62,177631.35,20.08 +mul,kernel,2000,2000,114,3,176442.57,176421.61,20.12 +mul,floor,2000,2000,114,3,176522.79,176385.67,20.13 +mul,gmp,2000,2000,139,3,144096.81,144095.42,20.03 +mul,gmpz,2000,2000,139,3,144267.42,144213.35,20.06 +mul,auto,16384,16384,6,3,3773047.00,3764158.33,22.62 +mul,kernel,16384,16384,6,3,3780110.83,3778739.17,22.69 +mul,floor,16384,16384,6,3,3782571.33,3775308.67,22.69 +mul,gmp,16384,16384,12,3,1779289.42,1760679.50,21.48 +mul,gmpz,16384,16384,12,3,1761074.42,1761063.25,21.15 +divrem,auto,4096,2048,41,3,499201.37,499073.05,20.47 +divrem,kernel,4096,2048,41,3,495269.10,495260.95,20.31 +divrem,floor,4096,2048,41,3,495147.56,495086.98,20.30 +divrem,gmp,4096,2048,54,3,372207.54,371211.26,20.08 +divrem,gmpz,4096,2048,55,3,369766.22,369581.00,20.34 +tochars,auto,10000,10,4,3,5857197.25,5855941.25,23.44 +tochars,kernel,10000,10,4,3,5868474.25,5867433.00,23.57 +tochars,gmp,10000,10,5,3,4189936.00,4185225.00,20.98 +tochars,gmpz,10000,10,5,3,4229456.60,4227716.80,21.15 +fromchars,auto,10000,10,6,3,3672223.83,3664871.17,22.02 +fromchars,kernel,10000,10,6,3,3590244.83,3585550.17,21.54 +fromchars,gmp,10000,10,11,3,1933851.18,1932935.36,21.27 +fromchars,gmpz,10000,10,10,3,2010423.80,2010307.30,20.15 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64_seed1a.csv b/tests/beman/big_int/perf/item1/x64r3_new64_seed1a.csv new file mode 100644 index 00000000..d608d700 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_new64_seed1a.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T17:53:27Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,3643588,9,5.47,5.40,19.90 +add,inplace,1,1,3883833,9,2.58,2.56,20.01 +add,kernel,1,1,10453734,9,1.94,1.91,20.30 +add,floor,1,1,2035530,9,9.83,9.82,20.02 +add,gmp,1,1,8823983,9,2.27,2.27,20.02 +add,gmpz,1,1,4812960,9,4.16,4.16,20.00 +add,auto,2,2,1254879,9,16.03,15.94,20.11 +add,inplace,2,2,1530416,9,6.42,6.23,19.72 +add,kernel,2,2,8704192,9,2.38,2.32,20.68 +add,floor,2,2,1959242,9,10.21,10.20,20.03 +add,gmp,2,2,8824261,9,2.27,2.27,20.01 +add,gmpz,2,2,4773711,9,4.21,4.18,20.07 +add,auto,4,4,1290254,9,15.57,15.44,20.06 +add,inplace,4,4,1680081,9,5.80,5.69,19.41 +add,kernel,4,4,6491531,9,3.06,3.03,19.89 +add,floor,4,4,1819885,9,10.98,10.97,20.00 +add,gmp,4,4,7989761,9,2.51,2.50,20.09 +add,gmpz,4,4,4509221,9,4.42,4.41,19.94 +add,auto,8,8,1177797,9,17.05,16.97,20.10 +add,inplace,8,8,1367267,9,7.45,7.33,20.39 +add,kernel,8,8,4394631,9,4.55,4.53,20.00 +add,floor,8,8,1598254,9,12.51,12.51,20.00 +add,gmp,8,8,4777311,9,4.18,4.18,19.97 +add,gmpz,8,8,4238922,9,4.72,4.71,20.02 +add,auto,16,16,943830,9,21.22,21.19,20.03 +add,inplace,16,16,886860,9,11.28,11.19,20.00 +add,kernel,16,16,2638970,9,7.58,7.57,20.01 +add,floor,16,16,1282575,9,15.59,15.59,20.00 +add,gmp,16,16,3633213,9,5.50,5.50,20.00 +add,gmpz,16,16,3078278,9,6.53,6.52,20.11 +add,auto,64,64,434300,9,46.17,45.89,20.04 +add,inplace,64,64,280324,9,35.66,35.39,20.01 +add,kernel,64,64,605231,9,32.92,32.76,19.92 +add,floor,64,64,481889,9,40.52,39.75,19.47 +add,gmp,64,64,1294508,9,15.45,15.45,20.00 +add,gmpz,64,64,1212443,9,16.49,16.46,19.98 +add,auto,256,256,122291,9,163.84,163.56,20.05 +add,inplace,256,256,68834,9,144.73,144.69,19.93 +add,kernel,256,256,140372,9,142.27,142.20,19.99 +add,floor,256,256,125913,9,158.51,158.25,19.97 +add,gmp,256,256,255715,9,78.22,78.21,20.00 +add,gmpz,256,256,251406,9,79.49,79.40,20.03 +add,auto,1024,1024,33389,9,599.09,598.93,20.01 +add,inplace,1024,1024,17209,9,581.01,580.90,20.00 +add,kernel,1024,1024,34602,9,577.76,577.62,19.99 +add,floor,1024,1024,33682,9,593.89,593.64,20.00 +add,gmp,1024,1024,51218,9,390.50,390.49,20.00 +add,gmpz,1024,1024,51105,9,391.35,391.33,20.01 +add,auto,2000,2000,17327,9,1154.36,1154.19,20.00 +add,inplace,2000,2000,8817,9,1133.42,1133.36,19.99 +add,kernel,2000,2000,17677,9,1131.45,1131.41,20.01 +add,floor,2000,2000,17436,9,1147.20,1146.87,20.01 +add,gmp,2000,2000,42261,9,473.17,473.13,20.00 +add,gmpz,2000,2000,42598,9,469.51,467.53,20.01 +add,auto,1024,1,79383,9,251.67,251.32,19.97 +add,inplace,1024,1,2066466,9,5.01,4.97,20.71 +add,kernel,1024,1,33278,9,598.84,582.86,19.83 +add,floor,1024,1,32375,9,617.73,617.16,20.00 +add,gmp,1024,1,82585,9,242.34,236.25,19.93 +add,gmpz,1024,1,78647,9,244.30,243.37,19.28 +sub,auto,1,1,3475777,9,6.16,5.90,21.43 +sub,inplace,1,1,3995482,9,2.61,2.51,20.85 +sub,kernel,1,1,12378278,9,1.55,1.55,19.53 +sub,floor,1,1,9583355,9,2.05,2.03,19.76 +sub,gmp,1,1,8824005,9,2.27,2.27,20.00 +sub,gmpz,1,1,4536467,9,4.40,4.39,19.96 +sub,auto,2,2,1261519,9,15.84,15.79,20.01 +sub,inplace,2,2,2032972,9,4.93,4.89,20.12 +sub,kernel,2,2,9134024,9,2.22,2.19,20.31 +sub,floor,2,2,1965873,9,10.23,10.14,20.07 +sub,gmp,2,2,8434438,9,2.37,2.33,19.94 +sub,gmpz,2,2,4463280,9,4.48,4.47,19.99 +sub,auto,4,4,1176614,9,17.05,16.88,20.05 +sub,inplace,4,4,1695053,9,5.94,5.88,20.17 +sub,kernel,4,4,6776179,9,2.94,2.92,19.92 +sub,floor,4,4,1816524,9,11.04,10.88,20.02 +sub,gmp,4,4,7683874,9,2.60,2.59,20.02 +sub,gmpz,4,4,4226582,9,4.75,4.73,20.06 +sub,auto,8,8,1067948,9,18.73,18.70,20.01 +sub,inplace,8,8,1315147,9,7.60,7.48,19.98 +sub,kernel,8,8,4346301,9,4.58,4.56,19.89 +sub,floor,8,8,1594898,9,12.53,12.52,19.99 +sub,gmp,8,8,5195100,9,3.83,3.82,19.91 +sub,gmpz,8,8,3869175,9,5.16,5.15,19.98 +sub,auto,16,16,911605,9,21.92,21.91,19.99 +sub,inplace,16,16,953804,9,10.47,10.44,19.97 +sub,kernel,16,16,2569278,9,7.79,7.79,20.03 +sub,floor,16,16,1266855,9,15.78,15.77,19.99 +sub,gmp,16,16,3496294,9,5.69,5.67,19.89 +sub,gmpz,16,16,2862065,9,6.99,6.92,20.00 +sub,auto,64,64,434743,9,47.85,46.34,20.79 +sub,inplace,64,64,277396,9,34.77,34.51,19.39 +sub,kernel,64,64,608421,9,32.70,32.68,19.90 +sub,floor,64,64,475003,9,42.20,42.16,20.07 +sub,gmp,64,64,1294739,9,15.45,15.45,20.00 +sub,gmpz,64,64,1194432,9,16.75,16.74,20.01 +sub,auto,256,256,123112,9,162.57,162.52,20.01 +sub,inplace,256,256,69276,9,144.37,144.35,20.00 +sub,kernel,256,256,139429,9,143.44,143.43,20.00 +sub,floor,256,256,126410,9,158.35,158.11,20.02 +sub,gmp,256,256,255610,9,78.24,78.24,20.00 +sub,gmpz,256,256,250491,9,79.85,79.73,20.00 +sub,auto,1024,1024,33252,9,598.20,597.79,19.91 +sub,inplace,1024,1024,17246,9,579.87,579.85,20.00 +sub,kernel,1024,1024,34617,9,577.77,577.75,20.03 +sub,floor,1024,1024,33672,9,594.07,593.72,20.00 +sub,gmp,1024,1024,51314,9,389.75,389.75,20.00 +sub,gmpz,1024,1024,51128,9,391.21,391.17,20.00 +sub,auto,2000,2000,17083,9,1154.25,1153.94,19.75 +sub,inplace,2000,2000,8836,9,1131.82,1131.77,20.03 +sub,kernel,2000,2000,17664,9,1132.05,1132.01,20.00 +sub,floor,2000,2000,17285,9,1149.99,1149.79,19.88 +sub,gmp,2000,2000,42908,9,466.14,466.12,20.00 +sub,gmpz,2000,2000,42277,9,472.98,471.29,19.98 +sub,auto,1024,1,79462,9,251.69,251.38,19.99 +sub,inplace,1024,1,2315853,9,4.32,4.26,20.00 +sub,kernel,1024,1,34693,9,576.50,576.49,20.00 +sub,floor,1024,1,33698,9,593.25,593.07,19.99 +sub,gmp,1024,1,85526,9,233.84,233.58,20.01 +sub,gmpz,1024,1,85444,9,234.16,233.74,20.02 +shl,auto,1,13,1587415,9,12.50,12.46,19.88 +shl,inplace,1,13,2318311,9,4.26,4.25,19.76 +shl,kernel,1,13,9624782,9,2.08,2.07,19.96 +shl,kernelip,1,13,5755111,9,1.75,1.71,20.14 +shl,floor,1,13,2077715,9,9.83,9.82,20.47 +shl,gmp,1,13,8712049,9,2.08,2.08,18.12 +shl,gmpz,1,13,6106053,9,3.27,3.27,20.00 +shl,auto,4,13,1470039,9,13.45,13.39,19.84 +shl,inplace,4,13,1870422,9,5.33,5.32,19.95 +shl,kernel,4,13,5646552,9,3.48,3.44,19.75 +shl,kernelip,4,13,3404467,9,2.94,2.93,20.01 +shl,floor,4,13,1775705,9,11.21,11.18,19.90 +shl,gmp,4,13,7991471,9,2.51,2.50,20.06 +shl,gmpz,4,13,4935823,9,4.04,4.04,19.97 +shl,auto,16,13,1175652,9,17.09,17.03,20.09 +shl,inplace,16,13,1071818,9,9.34,9.31,20.02 +shl,kernel,16,13,2644025,9,7.56,7.51,20.07 +shl,kernelip,16,13,1392344,9,7.17,7.15,19.97 +shl,floor,16,13,1343830,9,15.21,15.21,20.45 +shl,gmp,16,13,4873284,9,4.17,4.10,20.39 +shl,gmpz,16,13,3447725,9,5.81,5.80,20.05 +shl,auto,256,13,163795,9,121.91,121.79,20.01 +shl,inplace,256,13,100776,9,99.29,99.19,20.01 +shl,kernel,256,13,211877,9,94.85,94.61,20.10 +shl,kernelip,256,13,103049,9,96.87,96.83,19.97 +shl,floor,256,13,178168,9,114.62,113.68,20.40 +shl,gmp,256,13,423862,9,47.19,47.12,20.01 +shl,gmpz,256,13,401268,9,49.84,49.75,20.00 +shl,auto,2000,13,25889,9,772.77,772.40,20.00 +shl,inplace,2000,13,13949,9,716.86,716.75,20.04 +shl,kernel,2000,13,27788,9,719.80,719.68,20.01 +shl,kernelip,2000,13,13996,9,714.50,714.41,20.00 +shl,floor,2000,13,27140,9,740.52,738.97,20.12 +shl,gmp,2000,13,59441,9,335.47,335.37,19.94 +shl,gmpz,2000,13,59146,9,338.14,337.99,20.00 +shl,auto,2000,77,25831,9,774.42,774.28,20.01 +shl,inplace,2000,77,13487,9,741.10,740.46,19.99 +shl,kernel,2000,77,23461,9,853.00,850.08,20.01 +shl,kernelip,2000,77,12165,9,822.17,822.01,20.02 +shl,floor,2000,77,22969,9,873.03,871.74,20.06 +shl,gmp,2000,77,59246,9,338.10,337.54,20.05 +shl,gmpz,2000,77,58744,9,340.23,339.46,20.00 +shr,auto,1,13,2440620,9,8.21,8.19,20.04 +shr,inplace,1,13,2535872,9,3.97,3.91,20.13 +shr,kernel,1,13,11746026,9,1.70,1.70,19.99 +shr,floor,1,13,8824092,9,2.27,2.27,20.00 +shr,gmp,1,13,10558061,9,1.90,1.89,20.09 +shr,gmpz,1,13,5771441,9,3.47,3.47,20.04 +shr,auto,4,13,1253452,9,16.03,15.94,20.08 +shr,inplace,4,13,1985861,9,5.03,5.02,20.00 +shr,kernel,4,13,5771315,9,3.47,3.47,20.04 +shr,floor,4,13,1674664,9,11.96,11.95,20.04 +shr,gmp,4,13,8590352,9,2.32,2.31,19.93 +shr,gmpz,4,13,5039694,9,3.96,3.94,19.99 +shr,auto,16,13,1005970,9,19.91,19.89,20.07 +shr,inplace,16,13,1113088,9,9.00,8.96,20.02 +shr,kernel,16,13,2361120,9,8.47,8.47,20.02 +shr,floor,16,13,1174938,9,17.04,16.99,20.01 +shr,gmp,16,13,4655612,9,4.30,4.30,20.07 +shr,gmpz,16,13,3223759,9,6.26,6.16,20.24 +shr,auto,256,13,159634,9,125.00,124.92,19.96 +shr,inplace,256,13,100846,9,99.08,99.03,19.98 +shr,kernel,256,13,181906,9,110.10,109.84,20.07 +shr,floor,256,13,152637,9,130.95,130.75,20.05 +shr,gmp,256,13,415335,9,48.11,47.76,19.97 +shr,gmpz,256,13,394090,9,50.71,50.56,19.99 +shr,auto,2000,13,26675,9,749.44,748.95,20.00 +shr,inplace,2000,13,13952,9,716.53,716.42,19.99 +shr,kernel,2000,13,24618,9,812.49,812.45,20.01 +shr,floor,2000,13,24013,9,833.00,832.72,20.00 +shr,gmp,2000,13,59535,9,335.93,335.63,20.00 +shr,gmpz,2000,13,58997,9,339.47,339.06,20.07 +shr,auto,2000,77,26686,9,749.52,749.00,20.00 +shr,inplace,2000,77,13496,9,740.05,738.15,19.97 +shr,kernel,2000,77,24094,9,830.10,830.09,20.00 +shr,floor,2000,77,23433,9,853.50,852.98,20.01 +shr,gmp,2000,77,59534,9,335.94,335.91,20.00 +shr,gmpz,2000,77,58981,9,338.99,338.91,20.00 +mul,auto,1,1,1200719,9,16.68,16.55,20.04 +mul,gmp,1,1,5650371,9,3.52,3.46,19.85 +mul,gmpz,1,1,4958617,9,4.03,4.02,19.99 +mul,auto,2,2,1051799,9,18.92,18.88,19.89 +mul,kernel,2,2,2779955,9,7.55,7.53,21.01 +mul,floor,2,2,1346941,9,14.98,14.91,20.19 +mul,gmp,2,2,5173792,9,3.85,3.84,20.00 +mul,gmpz,2,2,3169278,9,6.21,6.17,19.68 +mul,auto,3,3,982255,9,20.34,20.30,19.99 +mul,kernel,3,3,2135802,9,8.94,8.91,19.11 +mul,floor,3,3,1173006,9,16.54,16.44,19.39 +mul,gmp,3,3,2574089,9,7.80,7.77,20.09 +mul,gmpz,3,3,1851952,9,10.65,10.54,19.75 +mul,auto,4,4,890184,9,22.52,22.33,20.02 +mul,kernel,4,4,1920557,9,10.90,10.89,20.95 +mul,floor,4,4,1101060,9,18.22,18.13,20.06 +mul,gmp,4,4,2062707,9,9.68,9.65,19.98 +mul,gmpz,4,4,1638114,9,12.16,12.12,19.93 +mul,auto,6,6,713501,9,28.04,28.03,20.01 +mul,kernel,6,6,1121024,9,18.44,18.42,20.67 +mul,floor,6,6,784260,9,25.28,25.23,19.82 +mul,gmp,6,6,1252576,9,15.97,15.95,20.02 +mul,gmpz,6,6,1095363,9,18.22,18.19,19.96 +mul,auto,8,8,553633,9,36.11,36.06,20.05 +mul,kernel,8,8,809639,9,25.46,25.40,20.61 +mul,floor,8,8,615947,9,32.21,32.18,19.86 +mul,gmp,8,8,739306,9,27.05,26.90,20.01 +mul,gmpz,8,8,686982,9,28.91,28.74,19.88 +mul,auto,12,12,345174,9,57.93,57.70,19.99 +mul,kernel,12,12,422048,9,48.14,48.05,20.31 +mul,floor,12,12,363653,9,55.02,54.98,20.02 +mul,gmp,12,12,408084,9,48.98,48.79,19.98 +mul,gmpz,12,12,388286,9,51.21,51.01,19.87 +mul,auto,16,16,224843,9,88.80,88.50,19.98 +mul,kernel,16,16,253221,9,79.64,79.28,20.16 +mul,floor,16,16,230637,9,86.82,86.51,20.03 +mul,gmp,16,16,244175,9,81.89,81.86,20.01 +mul,gmpz,16,16,237901,9,84.05,84.02,20.00 +mul,auto,32,32,99726,9,199.76,199.47,19.94 +mul,kernel,32,32,106886,9,187.12,186.87,20.00 +mul,floor,32,32,101691,9,196.70,196.22,20.02 +mul,gmp,32,32,73308,9,272.77,271.80,19.99 +mul,gmpz,32,32,73032,9,273.48,272.69,20.00 +mul,auto,64,64,40492,9,493.70,493.48,20.01 +mul,kernel,64,64,41065,9,488.25,487.96,20.05 +mul,floor,64,64,40479,9,493.20,492.78,19.98 +mul,gmp,64,64,22827,9,875.70,875.43,19.99 +mul,gmpz,64,64,22833,9,875.20,869.11,19.96 +mul,auto,128,128,11612,9,1717.40,1711.53,19.94 +mul,kernel,128,128,11586,9,1720.01,1716.90,19.94 +mul,floor,128,128,11514,9,1736.73,1734.89,20.00 +mul,gmp,128,128,7211,9,2773.35,2772.80,20.02 +mul,gmpz,128,128,7218,9,2761.00,2751.08,19.91 +mul,auto,256,256,3241,9,6172.71,6169.25,20.00 +mul,kernel,256,256,3232,9,6203.81,6181.77,20.04 +mul,floor,256,256,3162,9,6299.81,6257.73,19.90 +mul,gmp,256,256,2501,9,7995.78,7984.67,20.00 +mul,gmpz,256,256,2491,9,7942.26,7912.17,19.78 +mul,auto,512,512,1034,9,19346.30,19339.68,20.01 +mul,kernel,512,512,1041,9,19187.58,19179.57,20.02 +mul,floor,512,512,1042,9,19217.76,19199.16,20.03 +mul,gmp,512,512,936,9,21189.63,21049.48,19.85 +mul,gmpz,512,512,955,9,20867.51,20822.30,19.93 +mul,auto,1000,1000,336,9,59670.76,59621.54,20.05 +mul,kernel,1000,1000,337,9,59559.42,59523.47,20.08 +mul,floor,1000,1000,336,9,59527.20,59497.23,20.00 +mul,gmp,1000,1000,369,9,53915.88,53620.49,19.90 +mul,gmpz,1000,1000,375,9,53428.19,53394.76,20.04 +mul,auto,2000,2000,113,9,176816.95,176744.08,19.98 +mul,kernel,2000,2000,112,9,177081.14,176947.52,19.84 +mul,floor,2000,2000,114,9,177058.78,176883.96,20.18 +mul,gmp,2000,2000,138,9,144460.11,144441.09,19.94 +mul,gmpz,2000,2000,139,9,144578.79,144515.27,20.10 +mul,auto,2000,100,1134,9,17643.33,17640.86,20.01 +mul,kernel,2000,100,1133,9,17742.41,17645.87,20.12 +mul,floor,2000,100,1118,9,17962.63,17799.88,20.08 +mul,gmp,2000,100,550,9,36341.19,36228.83,20.02 +mul,gmpz,2000,100,554,9,35926.25,35729.00,19.90 +sqr,auto,4,4,880390,9,22.33,22.13,19.63 +sqr,kernel,4,4,2021340,9,9.95,9.82,20.09 +sqr,floor,4,4,1221284,9,16.77,16.74,20.48 +sqr,gmp,4,4,3359524,9,5.88,5.86,19.77 +sqr,gmpz,4,4,2262128,9,8.86,8.72,20.04 +sqr,auto,16,16,301017,9,66.51,66.29,20.01 +sqr,kernel,16,16,349790,9,57.17,57.15,20.02 +sqr,floor,16,16,319948,9,62.72,62.62,20.07 +sqr,gmp,16,16,393695,9,50.63,50.25,19.91 +sqr,gmpz,16,16,380889,9,52.50,52.36,20.01 +sqr,auto,64,64,67895,9,294.27,293.84,19.97 +sqr,kernel,64,64,72978,9,273.90,273.21,19.99 +sqr,floor,64,64,71500,9,281.75,281.13,20.14 +sqr,gmp,64,64,35682,9,560.60,560.11,20.01 +sqr,gmpz,64,64,35632,9,561.47,557.75,20.01 +sqr,auto,512,512,1885,9,10614.26,10605.80,20.02 +sqr,kernel,512,512,1898,9,10554.10,10543.38,20.03 +sqr,floor,512,512,1893,9,10559.76,10549.94,19.99 +sqr,gmp,512,512,1305,9,15107.73,15075.41,19.72 +sqr,gmpz,512,512,1322,9,15133.31,15129.53,20.01 +sqr,auto,2000,2000,200,9,100476.68,100443.32,20.10 +sqr,kernel,2000,2000,200,9,99604.27,99553.82,19.95 +sqr,floor,2000,2000,201,9,99628.18,99584.37,20.03 +sqr,gmp,2000,2000,199,9,100635.58,100559.77,20.06 +sqr,gmpz,2000,2000,199,9,100661.50,100548.70,20.04 +divrem,auto,2,1,492235,9,40.56,40.49,19.97 +divrem,kernel,2,1,3573976,9,5.64,5.59,20.33 +divrem,floor,2,1,1563757,9,12.79,12.76,20.03 +divrem,gmp,2,1,2302732,9,8.68,8.67,20.00 +divrem,gmpz,2,1,1514291,9,13.21,13.20,20.02 +divrem,auto,8,4,226608,9,88.47,87.87,20.08 +divrem,kernel,8,4,461891,9,43.24,43.08,20.00 +divrem,floor,8,4,325011,9,62.26,61.21,20.24 +divrem,gmp,8,4,499258,9,40.02,39.75,19.95 +divrem,gmpz,8,4,480819,9,41.47,41.40,19.97 +divrem,auto,32,16,57543,9,344.83,342.63,19.85 +divrem,kernel,32,16,67926,9,292.35,291.08,19.86 +divrem,floor,32,16,64730,9,307.23,305.36,19.87 +divrem,gmp,32,16,104599,9,191.82,190.58,20.05 +divrem,gmpz,32,16,103080,9,194.49,193.67,20.06 +divrem,auto,128,64,5792,9,3450.93,3446.94,20.00 +divrem,kernel,128,64,5994,9,3346.97,3336.84,20.06 +divrem,floor,128,64,5913,9,3378.52,3370.72,19.99 +divrem,gmp,128,64,11642,9,1719.42,1718.22,20.02 +divrem,gmpz,128,64,11596,9,1725.92,1724.88,20.02 +divrem,auto,512,256,664,9,30140.93,30104.84,20.01 +divrem,kernel,512,256,671,9,29811.82,29777.53,20.01 +divrem,floor,512,256,669,9,29945.57,29906.97,20.04 +divrem,gmp,512,256,1203,9,16257.49,16250.06,19.58 +divrem,gmpz,512,256,1225,9,16338.53,16333.87,20.03 +divrem,auto,2000,1000,108,9,186027.10,185835.95,20.09 +divrem,kernel,2000,1000,108,9,185280.84,185157.16,20.01 +divrem,floor,2000,1000,108,9,185626.46,185569.84,20.06 +divrem,gmp,2000,1000,145,9,137913.14,137811.79,20.01 +divrem,gmpz,2000,1000,146,9,137838.39,137808.02,20.14 +divrem,auto,4000,2000,42,9,477718.36,477152.05,20.07 +divrem,kernel,4000,2000,42,9,477943.33,477708.60,20.07 +divrem,floor,4000,2000,42,9,478968.69,478794.98,20.12 +divrem,gmp,4000,2000,59,9,339963.07,338966.22,20.06 +divrem,gmpz,4000,2000,59,9,338980.19,337126.64,19.99 +divrem,auto,2000,100,136,9,147406.85,146953.04,20.06 +divrem,kernel,2000,100,138,9,145605.35,145057.78,20.09 +divrem,floor,2000,100,137,9,145848.26,145313.37,19.97 +divrem,gmp,2000,100,276,9,72615.89,72595.00,20.04 +divrem,gmpz,2000,100,276,9,72577.51,72541.49,20.09 +divrem,auto,65536,1,119,9,168976.73,168302.01,20.11 +divrem,kernel,65536,1,120,9,166975.53,166753.27,20.04 +divrem,floor,65536,1,120,9,167441.31,166934.28,20.09 +divrem,gmp,65536,1,136,9,148099.60,148092.46,20.16 +divrem,gmpz,65536,1,136,9,148103.93,148094.42,20.15 +tochars,auto,1,10,1334312,9,15.01,14.97,20.03 +tochars,kernel,1,10,321985,9,62.02,61.95,19.98 +tochars,gmp,1,10,964748,9,20.64,20.58,19.96 +tochars,gmpz,1,10,591561,9,33.86,33.71,20.02 +tochars,auto,4,10,158380,9,126.33,125.79,20.02 +tochars,kernel,4,10,110778,9,181.18,179.60,20.05 +tochars,gmp,4,10,290419,9,68.90,68.84,20.01 +tochars,gmpz,4,10,207326,9,96.47,96.38,20.00 +tochars,auto,16,10,17076,9,1169.98,1166.75,19.97 +tochars,kernel,16,10,19374,9,1032.22,1029.78,20.01 +tochars,gmp,16,10,39707,9,503.76,503.63,20.00 +tochars,gmpz,16,10,33915,9,591.20,588.80,20.07 +tochars,auto,64,10,3519,9,5696.48,5692.25,20.04 +tochars,kernel,64,10,3761,9,5322.01,5312.00,20.01 +tochars,gmp,64,10,7453,9,2681.87,2677.97,19.99 +tochars,gmpz,64,10,6694,9,2964.41,2961.52,19.85 +tochars,auto,256,10,541,9,37034.57,37015.13,20.06 +tochars,kernel,256,10,563,9,35475.75,35449.18,20.01 +tochars,gmp,256,10,1077,9,18583.68,18571.04,20.02 +tochars,gmpz,256,10,1017,9,19672.81,19660.20,20.01 +tochars,auto,2000,10,33,9,619495.58,619338.27,20.46 +tochars,kernel,2000,10,34,9,596405.06,595935.74,20.28 +tochars,gmp,2000,10,50,9,402684.30,402357.38,20.25 +tochars,gmpz,2000,10,49,9,409860.33,409678.18,20.08 +tochars,auto,16,16,182443,9,108.51,107.87,19.81 +tochars,gmp,16,16,201184,9,99.43,99.15,20.00 +tochars,gmpz,16,16,126055,9,158.54,158.36,20.01 +tochars,auto,2000,16,1670,9,11933.93,11931.18,19.98 +tochars,gmp,2000,16,1801,9,11111.16,11109.93,20.04 +tochars,gmpz,2000,16,1116,9,17928.46,17924.78,20.01 +fromchars,auto,4,10,167300,9,119.68,119.52,20.09 +fromchars,kernel,4,10,533168,9,37.46,37.27,19.98 +fromchars,gmp,4,10,635453,9,31.26,31.21,19.89 +fromchars,gmpz,4,10,301151,9,66.57,66.29,20.05 +fromchars,auto,16,10,46561,9,424.70,417.81,19.76 +fromchars,kernel,16,10,103774,9,200.57,186.43,20.70 +fromchars,gmp,16,10,161238,9,124.84,124.17,20.11 +fromchars,gmpz,16,10,77632,9,256.45,255.56,19.92 +fromchars,auto,64,10,7404,9,2916.09,2703.90,21.61 +fromchars,kernel,64,10,10539,9,1859.31,1710.73,19.47 +fromchars,gmp,64,10,22961,9,871.02,870.39,20.02 +fromchars,gmpz,64,10,14650,9,1365.31,1363.90,20.01 +fromchars,auto,256,10,798,9,27466.31,24915.60,21.22 +fromchars,kernel,256,10,929,9,25644.93,22770.09,21.92 +fromchars,gmp,256,10,2477,9,8010.97,8003.20,19.88 +fromchars,gmpz,256,10,2008,9,9989.10,9953.05,20.07 +fromchars,auto,2000,10,52,9,385689.67,385482.23,20.07 +fromchars,kernel,2000,10,56,9,362427.32,362388.29,20.30 +fromchars,gmp,2000,10,109,9,183501.17,183189.60,20.00 +fromchars,gmpz,2000,10,101,9,198189.46,198118.40,20.04 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64_seed1b.csv b/tests/beman/big_int/perf/item1/x64r3_new64_seed1b.csv new file mode 100644 index 00000000..8dafb255 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_new64_seed1b.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T17:58:14Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,3703470,9,5.40,5.36,20.00 +add,inplace,1,1,3919967,9,2.56,2.55,20.09 +add,kernel,1,1,10297942,9,1.92,1.89,19.76 +add,floor,1,1,2037802,9,9.82,9.82,20.01 +add,gmp,1,1,8824158,9,2.27,2.27,20.01 +add,gmpz,1,1,4812987,9,4.16,4.16,20.03 +add,auto,2,2,1256847,9,15.93,15.85,20.03 +add,inplace,2,2,1565111,9,6.22,6.03,19.61 +add,kernel,2,2,8483138,9,2.37,2.32,20.14 +add,floor,2,2,1964317,9,10.22,10.20,20.07 +add,gmp,2,2,8824120,9,2.27,2.27,20.00 +add,gmpz,2,2,4812030,9,4.16,4.16,20.00 +add,auto,4,4,1277078,9,15.49,15.45,19.80 +add,inplace,4,4,1757570,9,5.72,5.67,20.09 +add,kernel,4,4,6548712,9,3.04,3.02,19.88 +add,floor,4,4,1823299,9,10.97,10.97,20.02 +add,gmp,4,4,7920005,9,2.53,2.52,20.00 +add,gmpz,4,4,4563224,9,4.39,4.37,20.05 +add,auto,8,8,1178114,9,17.08,16.91,20.09 +add,inplace,8,8,1346010,9,7.26,7.15,19.61 +add,kernel,8,8,4392052,9,4.53,4.53,19.94 +add,floor,8,8,1599045,9,12.51,12.49,20.00 +add,gmp,8,8,5428298,9,3.68,3.68,19.99 +add,gmpz,8,8,4254451,9,4.69,4.68,20.01 +add,auto,16,16,948535,9,21.14,21.09,20.05 +add,inplace,16,16,892790,9,11.20,11.15,20.00 +add,kernel,16,16,2641220,9,7.57,7.57,20.02 +add,floor,16,16,1283531,9,15.58,15.56,20.00 +add,gmp,16,16,3544729,9,5.65,5.64,20.02 +add,gmpz,16,16,3067332,9,6.53,6.49,20.01 +add,auto,64,64,432916,9,46.31,46.12,20.10 +add,inplace,64,64,275168,9,36.50,36.25,20.08 +add,kernel,64,64,609386,9,32.80,32.58,19.97 +add,floor,64,64,496172,9,39.88,39.31,19.81 +add,gmp,64,64,1250209,9,15.95,15.94,19.95 +add,gmpz,64,64,1212732,9,16.49,16.46,19.99 +add,auto,256,256,122183,9,163.59,163.45,20.00 +add,inplace,256,256,69123,9,144.74,144.59,20.01 +add,kernel,256,256,140497,9,142.25,142.12,20.01 +add,floor,256,256,126214,9,158.56,158.40,20.01 +add,gmp,256,256,255660,9,78.22,78.21,20.00 +add,gmpz,256,256,251622,9,79.51,79.41,20.01 +add,auto,1024,1024,33397,9,599.02,598.79,20.01 +add,inplace,1024,1024,17215,9,581.03,580.89,20.01 +add,kernel,1024,1024,34616,9,577.81,577.64,20.00 +add,floor,1024,1024,33674,9,593.98,593.83,20.00 +add,gmp,1024,1024,51195,9,390.68,390.67,20.01 +add,gmpz,1024,1024,51071,9,391.56,391.55,20.01 +add,auto,2000,2000,17327,9,1154.27,1154.15,20.00 +add,inplace,2000,2000,8827,9,1132.86,1132.80,20.00 +add,kernel,2000,2000,17606,9,1132.57,1132.50,19.95 +add,floor,2000,2000,17398,9,1149.36,1149.19,20.00 +add,gmp,2000,2000,41132,9,481.77,481.73,19.82 +add,gmpz,2000,2000,41308,9,484.16,482.57,19.99 +add,auto,1024,1,79431,9,251.56,251.29,19.98 +add,inplace,1024,1,2059690,9,4.85,4.82,19.97 +add,kernel,1024,1,34637,9,577.43,577.42,20.00 +add,floor,1024,1,33713,9,593.29,593.24,20.00 +add,gmp,1024,1,85684,9,233.22,232.23,19.98 +add,gmpz,1024,1,85404,9,234.17,233.90,19.99 +sub,auto,1,1,3637458,9,5.46,5.40,19.91 +sub,inplace,1,1,4029744,9,2.47,2.46,19.90 +sub,kernel,1,1,13236105,9,1.51,1.51,20.01 +sub,floor,1,1,9854872,9,2.03,2.03,20.12 +sub,gmp,1,1,8824191,9,2.27,2.27,20.02 +sub,gmpz,1,1,4603805,9,4.34,4.34,20.03 +sub,auto,2,2,1279637,9,15.68,15.64,20.08 +sub,inplace,2,2,2063684,9,4.82,4.78,19.97 +sub,kernel,2,2,9451561,9,2.12,2.09,19.98 +sub,floor,2,2,2042611,9,9.84,9.81,20.11 +sub,gmp,2,2,8824171,9,2.27,2.27,20.00 +sub,gmpz,2,2,4588767,9,4.34,4.34,19.97 +sub,auto,4,4,1208873,9,16.59,16.57,20.08 +sub,inplace,4,4,1747803,9,5.67,5.62,19.84 +sub,kernel,4,4,7052894,9,2.84,2.84,20.00 +sub,floor,4,4,1882922,9,10.64,10.61,20.07 +sub,gmp,4,4,7997656,9,2.50,2.50,19.99 +sub,gmpz,4,4,4338968,9,4.60,4.59,19.97 +sub,auto,8,8,1099479,9,18.20,18.17,20.01 +sub,inplace,8,8,1384607,9,7.26,7.12,20.11 +sub,kernel,8,8,4531445,9,4.36,4.35,19.84 +sub,floor,8,8,1634026,9,12.25,12.21,20.02 +sub,gmp,8,8,5424859,9,3.69,3.69,20.01 +sub,gmpz,8,8,4017598,9,4.98,4.96,20.00 +sub,auto,16,16,949060,9,21.09,21.04,20.02 +sub,inplace,16,16,995466,9,10.04,10.01,19.99 +sub,kernel,16,16,2676904,9,7.47,7.47,20.00 +sub,floor,16,16,1306660,9,15.42,15.32,20.14 +sub,gmp,16,16,3636895,9,5.50,5.49,20.01 +sub,gmpz,16,16,2941252,9,6.80,6.79,20.00 +sub,auto,64,64,441037,9,45.35,45.29,20.01 +sub,inplace,64,64,287182,9,34.60,34.44,19.89 +sub,kernel,64,64,611481,9,32.70,32.70,20.00 +sub,floor,64,64,472498,9,42.33,42.28,20.02 +sub,gmp,64,64,1294510,9,15.45,15.45,20.00 +sub,gmpz,64,64,1145379,9,17.46,17.45,20.00 +sub,auto,256,256,123003,9,162.58,162.50,20.03 +sub,inplace,256,256,69277,9,144.38,144.35,20.01 +sub,kernel,256,256,140378,9,142.45,142.44,20.00 +sub,floor,256,256,126344,9,158.37,158.22,20.01 +sub,gmp,256,256,255609,9,78.24,78.24,20.00 +sub,gmpz,256,256,250354,9,79.88,79.74,20.01 +sub,auto,1024,1024,33393,9,599.09,598.56,20.02 +sub,inplace,1024,1024,17246,9,579.87,579.85,20.01 +sub,kernel,1024,1024,34461,9,577.76,577.76,19.91 +sub,floor,1024,1024,33314,9,594.99,594.72,19.83 +sub,gmp,1024,1024,51299,9,389.87,389.86,20.01 +sub,gmpz,1024,1024,51131,9,391.20,391.17,20.00 +sub,auto,2000,2000,17336,9,1153.99,1153.62,20.01 +sub,inplace,2000,2000,8826,9,1133.09,1133.07,20.00 +sub,kernel,2000,2000,17675,9,1131.49,1131.46,20.00 +sub,floor,2000,2000,17416,9,1148.68,1148.25,20.02 +sub,gmp,2000,2000,41981,9,476.45,476.41,20.00 +sub,gmpz,2000,2000,41181,9,485.78,484.39,20.04 +sub,auto,1024,1,79349,9,252.28,251.84,20.02 +sub,inplace,1024,1,2328146,9,4.33,4.28,20.12 +sub,kernel,1024,1,34687,9,576.50,576.49,20.00 +sub,floor,1024,1,33702,9,593.55,593.42,20.00 +sub,gmp,1024,1,85544,9,233.83,233.73,20.00 +sub,gmpz,1024,1,85270,9,234.57,234.16,20.00 +shl,auto,1,13,1563414,9,12.89,12.69,20.15 +shl,inplace,1,13,2375612,9,4.21,4.21,20.03 +shl,kernel,1,13,9626461,9,2.08,2.07,20.01 +shl,kernelip,1,13,5590441,9,1.75,1.70,19.50 +shl,floor,1,13,2079570,9,9.82,9.82,20.43 +shl,gmp,1,13,9624966,9,2.08,2.08,20.00 +shl,gmpz,1,13,6077103,9,3.28,3.27,19.94 +shl,auto,4,13,1470116,9,13.58,13.51,19.98 +shl,inplace,4,13,1881083,9,5.28,5.24,19.88 +shl,kernel,4,13,5781364,9,3.50,3.48,20.30 +shl,kernelip,4,13,3429605,9,2.92,2.90,19.99 +shl,floor,4,13,1775640,9,11.19,11.18,19.87 +shl,gmp,4,13,7991404,9,2.50,2.50,20.01 +shl,gmpz,4,13,4946919,9,4.04,4.04,20.02 +shl,auto,16,13,1153195,9,17.27,17.21,19.93 +shl,inplace,16,13,1078380,9,9.26,9.23,19.97 +shl,kernel,16,13,2648122,9,7.56,7.49,20.05 +shl,kernelip,16,13,1399063,9,7.18,7.15,20.08 +shl,floor,16,13,1347716,9,15.22,15.21,20.54 +shl,gmp,16,13,4147301,9,4.80,4.79,19.90 +shl,gmpz,16,13,3378760,9,5.92,5.92,20.01 +shl,auto,256,13,163636,9,122.13,122.05,19.99 +shl,inplace,256,13,100320,9,99.68,99.62,20.00 +shl,kernel,256,13,213757,9,93.60,93.40,20.00 +shl,kernelip,256,13,103253,9,96.90,96.86,20.02 +shl,floor,256,13,179724,9,114.70,114.57,20.62 +shl,gmp,256,13,424388,9,47.23,47.12,20.24 +shl,gmpz,256,13,389496,9,51.28,51.20,19.98 +shl,auto,2000,13,25840,9,772.56,772.45,19.97 +shl,inplace,2000,13,13945,9,716.92,716.87,20.01 +shl,kernel,2000,13,27849,9,718.86,718.14,20.02 +shl,kernelip,2000,13,13997,9,714.45,714.40,20.00 +shl,floor,2000,13,27143,9,738.19,737.77,20.04 +shl,gmp,2000,13,59513,9,336.06,335.47,20.01 +shl,gmpz,2000,13,58992,9,339.25,338.98,20.04 +shl,auto,2000,77,25825,9,774.72,774.47,20.01 +shl,inplace,2000,77,13485,9,741.56,741.06,20.04 +shl,kernel,2000,77,23511,9,850.87,850.30,20.01 +shl,kernelip,2000,77,12166,9,822.02,822.01,20.00 +shl,floor,2000,77,22973,9,872.66,870.75,20.04 +shl,gmp,2000,77,59287,9,337.65,337.53,20.02 +shl,gmpz,2000,77,59126,9,338.24,338.20,20.01 +shr,auto,1,13,2441129,9,8.20,8.19,20.01 +shr,inplace,1,13,2548829,9,3.88,3.87,19.89 +shr,kernel,1,13,11750169,9,1.70,1.70,20.00 +shr,floor,1,13,8824217,9,2.27,2.27,20.00 +shr,gmp,1,13,10588866,9,1.89,1.89,20.03 +shr,gmpz,1,13,5771292,9,3.47,3.47,20.00 +shr,auto,4,13,1254434,9,15.97,15.93,20.02 +shr,inplace,4,13,1998600,9,4.98,4.96,19.93 +shr,kernel,4,13,5771246,9,3.47,3.47,20.01 +shr,floor,4,13,1670080,9,11.98,11.95,20.02 +shr,gmp,4,13,8438174,9,2.36,2.31,19.83 +shr,gmpz,4,13,5045990,9,3.97,3.96,20.07 +shr,auto,16,13,1004167,9,19.90,19.88,19.98 +shr,inplace,16,13,1123737,9,8.91,8.89,20.04 +shr,kernel,16,13,2370054,9,8.43,8.39,19.97 +shr,floor,16,13,1163079,9,17.21,17.19,20.04 +shr,gmp,16,13,4559360,9,4.35,4.35,19.91 +shr,gmpz,16,13,3231923,9,6.24,6.14,20.22 +shr,auto,256,13,155483,9,128.87,128.53,20.05 +shr,inplace,256,13,100892,9,99.07,99.01,19.99 +shr,kernel,256,13,181736,9,110.06,109.85,20.00 +shr,floor,256,13,152443,9,131.15,130.93,19.99 +shr,gmp,256,13,410880,9,48.66,48.60,20.02 +shr,gmpz,256,13,394088,9,50.78,50.66,20.01 +shr,auto,2000,13,26713,9,749.20,748.66,20.02 +shr,inplace,2000,13,13957,9,716.50,716.47,20.00 +shr,kernel,2000,13,24296,9,812.11,812.06,19.73 +shr,floor,2000,13,24014,9,832.61,832.38,20.01 +shr,gmp,2000,13,59559,9,336.07,335.87,20.04 +shr,gmpz,2000,13,58985,9,338.97,338.88,19.99 +shr,auto,2000,77,26655,9,749.30,748.93,19.98 +shr,inplace,2000,77,13507,9,740.10,738.44,19.99 +shr,kernel,2000,77,24152,9,828.13,828.10,20.00 +shr,floor,2000,77,23510,9,850.79,850.47,20.01 +shr,gmp,2000,77,59540,9,335.95,335.92,20.06 +shr,gmpz,2000,77,58695,9,339.17,339.10,19.91 +mul,auto,1,1,1209121,9,16.44,16.39,19.92 +mul,gmp,1,1,5934482,9,3.38,3.34,20.05 +mul,gmpz,1,1,5042296,9,3.99,3.98,20.10 +mul,auto,2,2,1058631,9,18.89,18.84,20.00 +mul,kernel,2,2,2786237,9,7.54,7.53,21.08 +mul,floor,2,2,1363437,9,14.85,14.78,20.28 +mul,gmp,2,2,5211894,9,3.85,3.83,20.05 +mul,gmpz,2,2,3276195,9,6.14,6.10,20.09 +mul,auto,3,3,984115,9,20.31,20.24,19.98 +mul,kernel,3,3,2332515,9,8.93,8.92,20.84 +mul,floor,3,3,1246517,9,16.24,16.15,20.27 +mul,gmp,3,3,2551972,9,7.77,7.70,19.81 +mul,gmpz,3,3,1998907,9,10.00,9.98,19.99 +mul,auto,4,4,897423,9,22.42,22.29,20.12 +mul,kernel,4,4,1926987,9,10.90,10.89,21.06 +mul,floor,4,4,1102319,9,18.15,18.12,20.04 +mul,gmp,4,4,2058944,9,9.72,9.67,20.00 +mul,gmpz,4,4,1640771,9,12.20,12.17,20.03 +mul,auto,6,6,711183,9,28.01,27.92,19.93 +mul,kernel,6,6,1213674,9,17.17,17.15,20.84 +mul,floor,6,6,821408,9,24.34,24.32,20.01 +mul,gmp,6,6,1173600,9,17.00,16.96,19.95 +mul,gmpz,6,6,1099580,9,18.12,18.04,19.93 +mul,auto,8,8,551837,9,36.23,35.99,20.01 +mul,kernel,8,8,811683,9,25.43,25.35,20.63 +mul,floor,8,8,609387,9,32.42,32.38,19.78 +mul,gmp,8,8,741516,9,27.02,26.87,20.03 +mul,gmpz,8,8,670699,9,29.57,28.93,19.87 +mul,auto,12,12,348420,9,57.64,57.48,20.08 +mul,kernel,12,12,421272,9,48.22,48.04,20.32 +mul,floor,12,12,365760,9,54.78,54.71,20.06 +mul,gmp,12,12,411710,9,48.57,48.55,20.02 +mul,gmpz,12,12,387320,9,51.64,51.62,20.00 +mul,auto,16,16,226266,9,88.46,88.43,20.02 +mul,kernel,16,16,253211,9,79.56,79.46,20.16 +mul,floor,16,16,230632,9,86.81,86.66,20.03 +mul,gmp,16,16,244273,9,81.93,81.88,20.02 +mul,gmpz,16,16,238002,9,84.08,84.05,20.02 +mul,auto,32,32,98856,9,201.63,201.16,19.94 +mul,kernel,32,32,107922,9,186.37,186.11,20.14 +mul,floor,32,32,101389,9,196.23,195.95,19.93 +mul,gmp,32,32,73320,9,271.17,268.44,19.84 +mul,gmpz,32,32,73368,9,270.36,269.90,19.83 +mul,auto,64,64,40313,9,496.23,495.47,20.02 +mul,kernel,64,64,39689,9,502.18,501.65,19.93 +mul,floor,64,64,39088,9,509.81,509.14,19.93 +mul,gmp,64,64,22200,9,891.23,885.05,19.79 +mul,gmpz,64,64,23048,9,866.31,865.03,20.02 +mul,auto,128,128,11658,9,1718.55,1714.90,20.10 +mul,kernel,128,128,11774,9,1723.15,1720.64,20.30 +mul,floor,128,128,11696,9,1708.70,1707.83,19.99 +mul,gmp,128,128,7247,9,2753.26,2720.48,19.91 +mul,gmpz,128,128,7348,9,2711.85,2708.65,19.93 +mul,auto,256,256,3213,9,6224.37,6220.68,20.00 +mul,kernel,256,256,3247,9,6197.98,6193.74,20.12 +mul,floor,256,256,3241,9,6170.93,6168.12,20.00 +mul,gmp,256,256,2538,9,7835.64,7743.36,19.86 +mul,gmpz,256,256,2568,9,7793.01,7787.31,20.01 +mul,auto,512,512,1028,9,19468.30,19459.54,20.02 +mul,kernel,512,512,1041,9,19267.73,19242.00,20.06 +mul,floor,512,512,1038,9,19262.38,19246.35,20.00 +mul,gmp,512,512,952,9,20835.66,20800.14,19.85 +mul,gmpz,512,512,961,9,20827.39,20815.86,20.02 +mul,auto,1000,1000,336,9,59666.02,59605.26,20.10 +mul,kernel,1000,1000,336,9,59565.92,59526.24,20.06 +mul,floor,1000,1000,335,9,59539.86,59485.24,19.95 +mul,gmp,1000,1000,373,9,53276.92,53263.48,19.89 +mul,gmpz,1000,1000,375,9,53358.82,53330.05,20.01 +mul,auto,2000,2000,114,9,176731.70,176561.92,20.15 +mul,kernel,2000,2000,113,9,177297.03,176984.04,20.04 +mul,floor,2000,2000,114,9,176930.11,176798.65,20.17 +mul,gmp,2000,2000,138,9,145161.09,145141.39,20.04 +mul,gmpz,2000,2000,139,9,144185.06,144098.92,20.04 +mul,auto,2000,100,1135,9,17634.10,17628.85,20.05 +mul,kernel,2000,100,1130,9,17730.26,17723.87,20.03 +mul,floor,2000,100,1131,9,17696.89,17691.90,20.05 +mul,gmp,2000,100,551,9,36187.38,35831.21,19.90 +mul,gmpz,2000,100,555,9,35734.04,35664.05,19.83 +sqr,auto,4,4,896228,9,22.24,22.15,19.95 +sqr,kernel,4,4,2011081,9,9.90,9.74,19.86 +sqr,floor,4,4,1221775,9,16.77,16.75,20.48 +sqr,gmp,4,4,3443012,9,5.83,5.78,20.08 +sqr,gmpz,4,4,2259096,9,8.83,8.73,19.97 +sqr,auto,16,16,284524,9,70.32,70.25,20.01 +sqr,kernel,16,16,336444,9,59.40,59.36,19.99 +sqr,floor,16,16,309258,9,65.63,65.57,20.31 +sqr,gmp,16,16,392223,9,50.33,50.31,19.77 +sqr,gmpz,16,16,384056,9,52.08,52.07,20.00 +sqr,auto,64,64,70671,9,282.11,281.37,19.94 +sqr,kernel,64,64,72398,9,276.60,276.14,20.04 +sqr,floor,64,64,70636,9,279.36,278.98,19.74 +sqr,gmp,64,64,35668,9,558.91,556.75,19.94 +sqr,gmpz,64,64,35978,9,554.05,552.16,19.94 +sqr,auto,512,512,1873,9,10682.43,10678.18,20.04 +sqr,kernel,512,512,1893,9,10563.30,10558.69,20.00 +sqr,floor,512,512,1887,9,10599.45,10590.15,20.00 +sqr,gmp,512,512,1325,9,15080.21,15073.45,19.98 +sqr,gmpz,512,512,1326,9,15077.03,15066.72,20.04 +sqr,auto,2000,2000,198,9,100462.64,100010.69,19.91 +sqr,kernel,2000,2000,203,9,98890.63,98624.14,20.07 +sqr,floor,2000,2000,204,9,98257.14,98236.59,20.05 +sqr,gmp,2000,2000,199,9,100581.42,100518.27,20.02 +sqr,gmpz,2000,2000,199,9,100588.07,100530.73,20.01 +divrem,auto,2,1,490915,9,40.67,40.62,19.97 +divrem,kernel,2,1,3550524,9,5.73,5.56,20.36 +divrem,floor,2,1,1564228,9,12.82,12.80,20.06 +divrem,gmp,2,1,2299545,9,8.69,8.67,19.97 +divrem,gmpz,2,1,1518176,9,13.20,13.18,20.06 +divrem,auto,8,4,226965,9,88.61,88.32,20.11 +divrem,kernel,8,4,440042,9,45.25,44.80,19.99 +divrem,floor,8,4,301609,9,62.68,61.51,18.88 +divrem,gmp,8,4,499524,9,40.16,39.90,20.04 +divrem,gmpz,8,4,479672,9,41.80,41.62,20.05 +divrem,auto,32,16,57605,9,342.36,340.69,19.78 +divrem,kernel,32,16,69689,9,287.71,286.54,20.10 +divrem,floor,32,16,65065,9,306.21,304.77,19.95 +divrem,gmp,32,16,104632,9,191.45,190.55,20.03 +divrem,gmpz,32,16,103295,9,194.05,193.37,20.04 +divrem,auto,128,64,5723,9,3496.08,3489.82,20.01 +divrem,kernel,128,64,5966,9,3339.39,3328.28,19.91 +divrem,floor,128,64,5976,9,3349.92,3341.09,20.02 +divrem,gmp,128,64,11569,9,1729.48,1727.81,20.01 +divrem,gmpz,128,64,11557,9,1730.89,1729.40,20.00 +divrem,auto,512,256,665,9,30157.38,30118.82,20.08 +divrem,kernel,512,256,671,9,29813.71,29738.86,20.00 +divrem,floor,512,256,669,9,29924.97,29870.69,20.03 +divrem,gmp,512,256,1225,9,16321.59,16319.42,19.99 +divrem,gmpz,512,256,1224,9,16343.45,16342.24,20.02 +divrem,auto,2000,1000,108,9,186753.49,186590.49,20.17 +divrem,kernel,2000,1000,108,9,185417.46,185262.08,20.03 +divrem,floor,2000,1000,108,9,185584.86,185484.21,20.05 +divrem,gmp,2000,1000,145,9,137933.79,137889.57,20.03 +divrem,gmpz,2000,1000,146,9,137827.40,137797.63,20.12 +divrem,auto,4000,2000,42,9,479449.57,479269.62,20.14 +divrem,kernel,4000,2000,42,9,479139.33,478966.95,20.12 +divrem,floor,4000,2000,42,9,477316.50,477226.36,20.06 +divrem,gmp,4000,2000,60,9,336729.68,335637.03,20.21 +divrem,gmpz,4000,2000,60,9,335277.03,334856.47,20.13 +divrem,auto,2000,100,138,9,145608.47,145116.06,20.09 +divrem,kernel,2000,100,139,9,144603.18,144337.61,20.11 +divrem,floor,2000,100,139,9,144540.06,144248.25,20.12 +divrem,gmp,2000,100,276,9,72682.72,72654.34,20.06 +divrem,gmpz,2000,100,276,9,72694.53,72653.36,20.06 +divrem,auto,65536,1,119,9,168653.25,168208.69,20.07 +divrem,kernel,65536,1,120,9,166903.51,166849.47,20.03 +divrem,floor,65536,1,119,9,169234.39,168972.40,20.14 +divrem,gmp,65536,1,136,9,148095.88,148089.09,20.14 +divrem,gmpz,65536,1,136,9,148109.55,148098.71,20.19 +tochars,auto,1,10,1326324,9,15.00,14.98,19.89 +tochars,kernel,1,10,322090,9,62.01,61.94,19.98 +tochars,gmp,1,10,967722,9,20.73,20.59,20.07 +tochars,gmpz,1,10,586206,9,34.23,34.05,20.05 +tochars,auto,4,10,157667,9,126.31,125.66,19.93 +tochars,kernel,4,10,111346,9,179.95,177.78,20.00 +tochars,gmp,4,10,292383,9,68.42,68.37,20.00 +tochars,gmpz,4,10,209606,9,95.44,95.29,20.03 +tochars,auto,16,10,16975,9,1172.74,1168.15,19.90 +tochars,kernel,16,10,19379,9,1033.64,1031.80,20.03 +tochars,gmp,16,10,39715,9,503.82,503.58,20.01 +tochars,gmpz,16,10,33949,9,591.21,590.00,20.08 +tochars,auto,64,10,3515,9,5694.22,5690.30,20.02 +tochars,kernel,64,10,3735,9,5355.78,5347.74,20.01 +tochars,gmp,64,10,7491,9,2673.30,2669.89,20.04 +tochars,gmpz,64,10,6755,9,2961.72,2958.55,20.01 +tochars,auto,256,10,542,9,36945.73,36930.03,20.08 +tochars,kernel,256,10,562,9,35611.96,35592.53,20.02 +tochars,gmp,256,10,1078,9,18574.03,18553.55,20.02 +tochars,gmpz,256,10,1016,9,19666.36,19654.64,19.98 +tochars,auto,2000,10,33,9,619673.00,618957.64,20.45 +tochars,kernel,2000,10,34,9,596596.09,596407.29,20.29 +tochars,gmp,2000,10,50,9,400932.38,400742.56,20.05 +tochars,gmpz,2000,10,49,9,409754.98,409587.51,20.09 +tochars,auto,16,16,188942,9,105.77,105.49,20.02 +tochars,gmp,16,16,199927,9,99.92,99.75,20.03 +tochars,gmpz,16,16,126212,9,158.55,158.48,20.01 +tochars,auto,2000,16,1677,9,11930.42,11927.84,20.05 +tochars,gmp,2000,16,1799,9,11111.61,11110.62,19.99 +tochars,gmpz,2000,16,1116,9,17927.07,17924.60,20.01 +fromchars,auto,4,10,176124,9,113.47,113.27,19.98 +fromchars,kernel,4,10,541527,9,36.98,36.82,20.03 +fromchars,gmp,4,10,631960,9,31.30,31.17,19.86 +fromchars,gmpz,4,10,299718,9,66.72,66.55,20.02 +fromchars,auto,16,10,46521,9,429.77,421.03,19.92 +fromchars,kernel,16,10,101149,9,196.02,189.68,19.76 +fromchars,gmp,16,10,160119,9,124.70,124.47,19.98 +fromchars,gmpz,16,10,77605,9,256.86,256.30,19.96 +fromchars,auto,64,10,7181,9,2868.21,2667.32,20.56 +fromchars,kernel,64,10,11638,9,1774.51,1694.17,21.36 +fromchars,gmp,64,10,22869,9,874.67,874.30,20.01 +fromchars,gmpz,64,10,14681,9,1361.81,1360.97,19.99 +fromchars,auto,256,10,715,9,28611.08,26165.38,20.44 +fromchars,kernel,256,10,878,9,24089.06,23442.37,21.21 +fromchars,gmp,256,10,2501,9,7997.19,7993.83,20.01 +fromchars,gmpz,256,10,2012,9,9940.11,9936.66,20.00 +fromchars,auto,2000,10,52,9,385648.46,385284.85,20.05 +fromchars,kernel,2000,10,56,9,362450.00,362399.45,20.30 +fromchars,gmp,2000,10,110,9,182728.86,182651.03,20.11 +fromchars,gmpz,2000,10,100,9,197770.44,197706.21,19.81 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64_seed2a.csv b/tests/beman/big_int/perf/item1/x64r3_new64_seed2a.csv new file mode 100644 index 00000000..94a5f581 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_new64_seed2a.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T18:03:00Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,3723911,9,5.34,5.30,19.89 +add,inplace,1,1,3914764,9,2.55,2.55,19.97 +add,kernel,1,1,10421407,9,1.94,1.89,20.17 +add,floor,1,1,2053459,9,9.82,9.75,20.15 +add,gmp,1,1,8786008,9,2.27,2.27,19.94 +add,gmpz,1,1,4802647,9,4.16,4.16,19.96 +add,auto,2,2,1272564,9,15.82,15.80,20.14 +add,inplace,2,2,1630635,9,6.11,6.01,20.32 +add,kernel,2,2,8398455,9,2.39,2.30,20.03 +add,floor,2,2,1981155,9,10.16,10.10,20.14 +add,gmp,2,2,8824374,9,2.27,2.27,20.00 +add,gmpz,2,2,4749118,9,4.16,4.16,19.75 +add,auto,4,4,1309358,9,15.34,15.17,20.07 +add,inplace,4,4,1717758,9,5.71,5.66,19.63 +add,kernel,4,4,6598478,9,3.05,3.02,20.13 +add,floor,4,4,1836665,9,10.91,10.86,20.02 +add,gmp,4,4,8040969,9,2.49,2.49,20.00 +add,gmpz,4,4,4603931,9,4.34,4.34,20.01 +add,auto,8,8,1192767,9,16.79,16.74,20.04 +add,inplace,8,8,1392806,9,7.31,7.18,20.44 +add,kernel,8,8,4411999,9,4.53,4.53,20.04 +add,floor,8,8,1574916,9,12.65,12.36,19.82 +add,gmp,8,8,5393530,9,3.68,3.68,19.87 +add,gmpz,8,8,4286448,9,4.66,4.64,19.99 +add,auto,16,16,949004,9,20.94,20.89,19.89 +add,inplace,16,16,892957,9,11.20,11.17,20.00 +add,kernel,16,16,2646976,9,7.56,7.56,20.00 +add,floor,16,16,1300869,9,15.38,15.32,20.02 +add,gmp,16,16,3632926,9,5.50,5.50,20.00 +add,gmpz,16,16,2591933,9,7.73,7.72,20.03 +add,auto,64,64,425588,9,47.08,46.88,20.02 +add,inplace,64,64,277481,9,35.67,35.45,19.78 +add,kernel,64,64,612374,9,32.82,32.61,20.09 +add,floor,64,64,478339,9,41.76,40.77,19.85 +add,gmp,64,64,1294474,9,15.45,15.45,20.00 +add,gmpz,64,64,1212753,9,16.49,16.46,20.05 +add,auto,256,256,123245,9,162.22,162.09,20.00 +add,inplace,256,256,69129,9,144.67,144.63,20.01 +add,kernel,256,256,140629,9,142.32,142.22,20.02 +add,floor,256,256,125822,9,158.79,158.63,19.98 +add,gmp,256,256,255678,9,78.22,78.21,20.00 +add,gmpz,256,256,251322,9,79.55,79.44,20.05 +add,auto,1024,1024,33389,9,599.01,598.91,20.01 +add,inplace,1024,1024,17215,9,580.93,580.88,20.00 +add,kernel,1024,1024,34604,9,577.90,577.80,20.00 +add,floor,1024,1024,33668,9,594.07,593.88,20.00 +add,gmp,1024,1024,51214,9,390.51,390.50,20.01 +add,gmpz,1024,1024,51103,9,391.36,391.33,20.00 +add,auto,2000,2000,17353,9,1152.41,1152.19,20.00 +add,inplace,2000,2000,8834,9,1132.00,1131.96,20.00 +add,kernel,2000,2000,17676,9,1131.55,1131.51,20.01 +add,floor,2000,2000,17401,9,1149.53,1149.29,20.02 +add,gmp,2000,2000,42108,9,474.82,474.81,20.05 +add,gmpz,2000,2000,41116,9,484.31,482.92,19.92 +add,auto,1024,1,79452,9,251.79,251.72,20.03 +add,inplace,1024,1,2074200,9,4.83,4.82,20.03 +add,kernel,1024,1,34636,9,577.39,577.37,20.00 +add,floor,1024,1,33714,9,593.36,593.20,20.01 +add,gmp,1024,1,85931,9,232.71,232.60,20.00 +add,gmpz,1024,1,85429,9,234.13,233.66,20.00 +sub,auto,1,1,3632617,9,5.49,5.47,19.95 +sub,inplace,1,1,4051784,9,2.46,2.46,20.00 +sub,kernel,1,1,13236393,9,1.51,1.51,20.00 +sub,floor,1,1,9684125,9,2.06,2.04,19.96 +sub,gmp,1,1,8822796,9,2.27,2.27,20.01 +sub,gmpz,1,1,4603807,9,4.34,4.34,20.00 +sub,auto,2,2,1286018,9,15.65,15.50,20.10 +sub,inplace,2,2,2082257,9,4.84,4.76,20.24 +sub,kernel,2,2,9464967,9,2.11,2.09,19.96 +sub,floor,2,2,2016268,9,9.84,9.78,19.82 +sub,gmp,2,2,8824302,9,2.27,2.27,20.02 +sub,gmpz,2,2,4599960,9,4.34,4.34,20.01 +sub,auto,4,4,1219376,9,16.41,16.31,20.00 +sub,inplace,4,4,1802685,9,5.62,5.50,20.18 +sub,kernel,4,4,7052509,9,2.84,2.83,20.01 +sub,floor,4,4,1888470,9,10.63,10.58,20.07 +sub,gmp,4,4,7227612,9,2.77,2.77,20.02 +sub,gmpz,4,4,4392433,9,4.56,4.54,20.05 +sub,auto,8,8,1111619,9,18.00,17.94,20.01 +sub,inplace,8,8,1365663,9,7.39,7.10,20.11 +sub,kernel,8,8,4586262,9,4.36,4.36,20.00 +sub,floor,8,8,1647077,9,12.18,12.11,20.06 +sub,gmp,8,8,5425222,9,3.69,3.69,20.02 +sub,gmpz,8,8,4028140,9,4.96,4.93,19.96 +sub,auto,16,16,955037,9,21.00,20.93,20.05 +sub,inplace,16,16,996240,9,10.04,10.02,20.05 +sub,kernel,16,16,2679396,9,7.46,7.46,20.01 +sub,floor,16,16,1321363,9,15.22,15.14,20.10 +sub,gmp,16,16,3636656,9,5.49,5.49,19.98 +sub,gmpz,16,16,2953998,9,6.80,6.77,20.08 +sub,auto,64,64,440853,9,45.31,45.20,19.98 +sub,inplace,64,64,287962,9,34.52,34.41,19.90 +sub,kernel,64,64,611441,9,32.70,32.70,20.01 +sub,floor,64,64,472369,9,42.36,42.29,20.02 +sub,gmp,64,64,1294780,9,15.45,15.45,20.01 +sub,gmpz,64,64,1189650,9,16.81,16.77,19.99 +sub,auto,256,256,123211,9,162.51,162.33,20.03 +sub,inplace,256,256,69254,9,144.36,144.34,20.01 +sub,kernel,256,256,140405,9,142.46,142.44,20.01 +sub,floor,256,256,126318,9,158.45,158.38,20.02 +sub,gmp,256,256,255571,9,78.24,78.22,20.00 +sub,gmpz,256,256,250430,9,79.84,79.75,20.00 +sub,auto,1024,1024,33455,9,598.06,597.77,20.02 +sub,inplace,1024,1024,17246,9,579.85,579.84,20.02 +sub,kernel,1024,1024,34587,9,577.76,577.75,19.98 +sub,floor,1024,1024,33422,9,593.71,593.54,19.86 +sub,gmp,1024,1024,51300,9,389.86,389.86,20.00 +sub,gmpz,1024,1024,51126,9,391.20,391.18,20.01 +sub,auto,2000,2000,17310,9,1153.73,1153.04,19.98 +sub,inplace,2000,2000,8829,9,1132.72,1132.69,20.00 +sub,kernel,2000,2000,17677,9,1131.47,1131.44,20.01 +sub,floor,2000,2000,17436,9,1147.29,1147.03,20.02 +sub,gmp,2000,2000,41595,9,480.85,480.82,20.01 +sub,gmpz,2000,2000,41025,9,487.65,486.17,20.00 +sub,auto,1024,1,79291,9,252.25,252.08,20.00 +sub,inplace,1024,1,2095503,9,4.74,4.72,19.90 +sub,kernel,1024,1,34692,9,576.50,576.49,20.01 +sub,floor,1024,1,33732,9,592.83,592.53,20.00 +sub,gmp,1024,1,85914,9,232.76,232.74,20.04 +sub,gmpz,1024,1,85486,9,233.91,233.54,20.01 +shl,auto,1,13,1612258,9,12.53,12.43,20.20 +shl,inplace,1,13,2388853,9,4.19,4.17,20.04 +shl,kernel,1,13,9626494,9,2.08,2.07,19.99 +shl,kernelip,1,13,5677625,9,1.74,1.72,19.78 +shl,floor,1,13,2080933,9,9.84,9.82,20.47 +shl,gmp,1,13,9625750,9,2.08,2.08,20.00 +shl,gmpz,1,13,6110912,9,3.27,3.27,20.00 +shl,auto,4,13,1465860,9,13.46,13.40,19.76 +shl,inplace,4,13,1906041,9,5.26,5.24,20.07 +shl,kernel,4,13,5715069,9,3.51,3.44,20.00 +shl,kernelip,4,13,3457221,9,2.91,2.88,20.09 +shl,floor,4,13,1761157,9,11.19,11.18,19.71 +shl,gmp,4,13,7966923,9,2.50,2.50,19.94 +shl,gmpz,4,13,4946982,9,4.04,4.04,20.01 +shl,auto,16,13,1175011,9,17.05,16.94,20.02 +shl,inplace,16,13,1082136,9,9.23,9.21,20.05 +shl,kernel,16,13,2491121,9,7.97,7.92,19.87 +shl,kernelip,16,13,1390385,9,7.17,7.15,19.95 +shl,floor,16,13,1323640,9,15.22,15.21,20.15 +shl,gmp,16,13,4564926,9,4.39,4.37,20.08 +shl,gmpz,16,13,3446362,9,5.83,5.80,20.11 +shl,auto,256,13,163486,9,122.01,121.79,19.94 +shl,inplace,256,13,100708,9,99.26,99.20,20.00 +shl,kernel,256,13,213818,9,93.58,93.38,20.01 +shl,kernelip,256,13,103161,9,96.91,96.82,20.00 +shl,floor,256,13,179437,9,113.37,113.31,20.35 +shl,gmp,256,13,423365,9,47.16,47.11,19.97 +shl,gmpz,256,13,402484,9,49.70,49.61,20.02 +shl,auto,2000,13,25884,9,772.65,772.41,20.00 +shl,inplace,2000,13,13952,9,716.89,716.76,20.02 +shl,kernel,2000,13,27705,9,719.79,719.71,19.95 +shl,kernelip,2000,13,13997,9,714.42,714.39,20.05 +shl,floor,2000,13,27167,9,739.70,739.21,20.10 +shl,gmp,2000,13,59623,9,335.39,335.35,20.01 +shl,gmpz,2000,13,59189,9,338.06,337.77,20.02 +shl,auto,2000,77,25815,9,774.73,774.37,20.00 +shl,inplace,2000,77,13490,9,741.55,740.60,20.00 +shl,kernel,2000,77,23485,9,851.82,850.05,20.01 +shl,kernelip,2000,77,12166,9,822.05,822.03,20.01 +shl,floor,2000,77,22946,9,872.29,871.50,20.02 +shl,gmp,2000,77,59286,9,337.54,337.53,20.04 +shl,gmpz,2000,77,59130,9,338.23,338.19,20.00 +shr,auto,1,13,2441094,9,8.19,8.19,20.00 +shr,inplace,1,13,2528012,9,3.88,3.83,19.67 +shr,kernel,1,13,11748027,9,1.70,1.70,20.00 +shr,floor,1,13,8823789,9,2.27,2.27,20.00 +shr,gmp,1,13,10588844,9,1.89,1.89,20.00 +shr,gmpz,1,13,5774635,9,3.47,3.46,20.02 +shr,auto,4,13,1214781,9,16.49,16.45,20.08 +shr,inplace,4,13,2007845,9,4.94,4.93,19.85 +shr,kernel,4,13,5771158,9,3.47,3.47,20.03 +shr,floor,4,13,1672744,9,11.97,11.95,20.03 +shr,gmp,4,13,8657264,9,2.33,2.31,20.20 +shr,gmpz,4,13,5062466,9,3.98,3.96,20.17 +shr,auto,16,13,990052,9,20.23,20.18,20.03 +shr,inplace,16,13,1102139,9,9.08,9.07,20.00 +shr,kernel,16,13,2246548,9,8.89,8.83,19.97 +shr,floor,16,13,1171605,9,17.00,16.96,19.95 +shr,gmp,16,13,4655640,9,4.30,4.30,20.05 +shr,gmpz,16,13,3209033,9,6.28,6.24,20.38 +shr,auto,256,13,159555,9,124.81,124.71,19.92 +shr,inplace,256,13,100930,9,99.09,99.05,20.00 +shr,kernel,256,13,181448,9,110.02,109.89,19.97 +shr,floor,256,13,152782,9,130.90,130.71,20.00 +shr,gmp,256,13,414937,9,47.92,47.87,19.92 +shr,gmpz,256,13,387342,9,50.76,50.58,19.66 +shr,auto,2000,13,26665,9,750.07,749.20,20.02 +shr,inplace,2000,13,13958,9,716.47,716.41,20.00 +shr,kernel,2000,13,24621,9,812.25,812.23,20.00 +shr,floor,2000,13,24014,9,832.64,832.31,20.00 +shr,gmp,2000,13,59541,9,335.95,335.84,20.00 +shr,gmpz,2000,13,58988,9,338.99,338.78,20.01 +shr,auto,2000,77,26690,9,749.35,749.04,20.00 +shr,inplace,2000,77,13493,9,740.20,738.48,19.97 +shr,kernel,2000,77,24094,9,830.10,830.08,20.00 +shr,floor,2000,77,23480,9,851.86,851.19,20.00 +shr,gmp,2000,77,59536,9,335.93,335.90,20.00 +shr,gmpz,2000,77,58990,9,339.08,338.97,20.00 +mul,auto,1,1,1209046,9,16.54,16.46,20.00 +mul,gmp,1,1,5912548,9,3.37,3.32,19.91 +mul,gmpz,1,1,5041071,9,3.97,3.97,20.02 +mul,auto,2,2,1061827,9,18.87,18.75,20.05 +mul,kernel,2,2,2714101,9,7.58,7.55,20.56 +mul,floor,2,2,1350017,9,14.95,14.86,20.19 +mul,gmp,2,2,5203831,9,3.82,3.79,19.85 +mul,gmpz,2,2,3251642,9,6.10,6.07,19.84 +mul,auto,3,3,985959,9,20.13,20.10,19.87 +mul,kernel,3,3,2333180,9,8.95,8.92,20.87 +mul,floor,3,3,1240639,9,16.22,16.13,20.15 +mul,gmp,3,3,2600176,9,7.73,7.69,20.14 +mul,gmpz,3,3,2005051,9,9.98,9.95,20.03 +mul,auto,4,4,894927,9,22.43,22.29,20.08 +mul,kernel,4,4,1881028,9,13.20,13.14,24.83 +mul,floor,4,4,1091044,9,18.29,18.26,19.98 +mul,gmp,4,4,2061814,9,9.66,9.63,19.93 +mul,gmpz,4,4,1464243,9,13.66,13.64,20.00 +mul,auto,6,6,716705,9,27.95,27.78,20.02 +mul,kernel,6,6,1214286,9,17.20,17.19,20.91 +mul,floor,6,6,815595,9,24.39,24.36,19.90 +mul,gmp,6,6,1271120,9,15.71,15.65,20.00 +mul,gmpz,6,6,1106150,9,18.03,17.92,19.94 +mul,auto,8,8,557184,9,35.81,35.62,19.95 +mul,kernel,8,8,808182,9,26.48,26.30,21.39 +mul,floor,8,8,612476,9,32.71,32.68,20.03 +mul,gmp,8,8,738532,9,27.12,27.03,20.03 +mul,gmpz,8,8,703270,9,28.17,27.82,19.89 +mul,auto,12,12,350688,9,56.95,56.90,19.98 +mul,kernel,12,12,423660,9,47.63,47.37,20.17 +mul,floor,12,12,364270,9,54.83,54.72,19.97 +mul,gmp,12,12,411839,9,48.56,48.54,20.00 +mul,gmpz,12,12,393058,9,50.88,50.86,20.00 +mul,auto,16,16,223692,9,89.30,89.26,19.98 +mul,kernel,16,16,256052,9,78.94,78.84,20.22 +mul,floor,16,16,232778,9,85.90,85.51,20.00 +mul,gmp,16,16,244197,9,81.90,81.87,20.09 +mul,gmpz,16,16,234982,9,85.09,85.03,20.00 +mul,auto,32,32,94551,9,211.32,211.07,19.99 +mul,kernel,32,32,107101,9,187.23,186.84,20.05 +mul,floor,32,32,100901,9,197.39,196.91,19.92 +mul,gmp,32,32,73374,9,269.11,267.58,19.74 +mul,gmpz,32,32,74117,9,269.75,269.67,19.99 +mul,auto,64,64,40274,9,496.21,495.75,19.99 +mul,kernel,64,64,41374,9,484.65,484.44,20.05 +mul,floor,64,64,40654,9,491.82,491.47,20.00 +mul,gmp,64,64,22913,9,868.56,863.31,19.91 +mul,gmpz,64,64,23206,9,858.95,858.79,19.95 +mul,auto,128,128,11659,9,1715.86,1715.38,20.02 +mul,kernel,128,128,11836,9,1690.64,1688.50,20.01 +mul,floor,128,128,11754,9,1700.12,1699.63,19.99 +mul,gmp,128,128,7202,9,2766.55,2743.76,19.90 +mul,gmpz,128,128,7304,9,2733.19,2731.50,19.97 +mul,auto,256,256,3166,9,6178.06,6176.44,19.58 +mul,kernel,256,256,3245,9,6159.62,6155.56,20.03 +mul,floor,256,256,3236,9,6177.04,6174.29,19.99 +mul,gmp,256,256,2512,9,7862.20,7814.06,19.79 +mul,gmpz,256,256,2548,9,7851.45,7848.42,20.01 +mul,auto,512,512,1043,9,19208.72,19199.31,20.06 +mul,kernel,512,512,1044,9,19196.54,19180.62,20.04 +mul,floor,512,512,1043,9,19179.96,19167.71,20.01 +mul,gmp,512,512,951,9,20816.84,20812.45,19.84 +mul,gmpz,512,512,956,9,20920.07,20907.65,20.01 +mul,auto,1000,1000,334,9,60054.94,59974.10,20.06 +mul,kernel,1000,1000,336,9,59695.88,59647.53,20.06 +mul,floor,1000,1000,336,9,59558.98,59445.74,20.01 +mul,gmp,1000,1000,374,9,53314.01,53302.87,19.94 +mul,gmpz,1000,1000,375,9,53447.07,53416.15,20.04 +mul,auto,2000,2000,113,9,177424.06,177284.86,20.06 +mul,kernel,2000,2000,113,9,177041.12,176788.28,20.04 +mul,floor,2000,2000,114,9,176518.99,176441.25,20.14 +mul,gmp,2000,2000,139,9,144205.34,144134.57,20.04 +mul,gmpz,2000,2000,139,9,144322.16,144272.15,20.06 +mul,auto,2000,100,1134,9,17643.77,17639.34,20.01 +mul,kernel,2000,100,1133,9,17662.59,17656.57,20.02 +mul,floor,2000,100,1132,9,17677.44,17671.24,20.01 +mul,gmp,2000,100,546,9,36249.71,36073.50,19.83 +mul,gmpz,2000,100,558,9,35953.15,35854.99,20.05 +sqr,auto,4,4,901928,9,22.21,22.13,20.09 +sqr,kernel,4,4,2018133,9,9.94,9.83,20.08 +sqr,floor,4,4,1217137,9,16.78,16.78,20.43 +sqr,gmp,4,4,3418061,9,5.82,5.80,19.93 +sqr,gmpz,4,4,2220138,9,9.14,9.08,20.31 +sqr,auto,16,16,293023,9,68.12,68.07,19.97 +sqr,kernel,16,16,342061,9,58.51,58.41,20.01 +sqr,floor,16,16,299132,9,63.47,63.43,19.00 +sqr,gmp,16,16,395427,9,49.90,49.79,19.81 +sqr,gmpz,16,16,382134,9,52.10,52.07,19.91 +sqr,auto,64,64,69895,9,286.20,285.56,20.01 +sqr,kernel,64,64,73621,9,272.06,271.49,20.03 +sqr,floor,64,64,71848,9,278.70,277.42,20.03 +sqr,gmp,64,64,35696,9,556.22,550.62,19.85 +sqr,gmpz,64,64,35473,9,557.05,556.46,19.76 +sqr,auto,512,512,1893,9,10573.94,10568.86,20.02 +sqr,kernel,512,512,1892,9,10570.88,10566.78,20.00 +sqr,floor,512,512,1780,9,11217.50,11205.54,19.98 +sqr,gmp,512,512,1323,9,15126.31,15117.85,20.02 +sqr,gmpz,512,512,1328,9,15065.40,15057.15,20.05 +sqr,auto,2000,2000,205,9,97771.25,97758.96,20.05 +sqr,kernel,2000,2000,205,9,97740.72,97680.98,20.04 +sqr,floor,2000,2000,205,9,97779.16,97734.35,20.05 +sqr,gmp,2000,2000,199,9,100562.65,100488.54,20.01 +sqr,gmpz,2000,2000,199,9,100559.18,100499.06,20.02 +divrem,auto,2,1,638194,9,31.05,30.94,19.86 +divrem,kernel,2,1,3515822,9,5.69,5.55,20.01 +divrem,floor,2,1,1561599,9,12.80,12.75,20.00 +divrem,gmp,2,1,2987843,9,6.70,6.69,20.02 +divrem,gmpz,2,1,1727219,9,11.56,11.53,19.98 +divrem,auto,8,4,200064,9,100.13,99.94,20.05 +divrem,kernel,8,4,361244,9,55.40,55.10,20.13 +divrem,floor,8,4,263869,9,74.45,73.98,19.67 +divrem,gmp,8,4,457275,9,43.73,43.50,20.00 +divrem,gmpz,8,4,432050,9,46.06,45.91,19.92 +divrem,auto,32,16,58735,9,342.38,337.35,20.12 +divrem,kernel,32,16,69559,9,288.00,286.15,20.03 +divrem,floor,32,16,65209,9,308.86,307.09,20.15 +divrem,gmp,32,16,105891,9,189.36,188.85,20.05 +divrem,gmpz,32,16,104442,9,191.97,191.16,20.05 +divrem,auto,128,64,5824,9,3439.89,3435.32,20.03 +divrem,kernel,128,64,5920,9,3379.87,3374.76,20.05 +divrem,floor,128,64,5866,9,3399.76,3398.14,19.98 +divrem,gmp,128,64,11639,9,1718.81,1717.86,20.01 +divrem,gmpz,128,64,11612,9,1722.59,1721.45,20.01 +divrem,auto,512,256,685,9,29476.72,29365.36,20.19 +divrem,kernel,512,256,685,9,29228.00,29160.54,20.02 +divrem,floor,512,256,682,9,29336.84,29311.68,20.02 +divrem,gmp,512,256,1230,9,16262.94,16257.54,20.00 +divrem,gmpz,512,256,1232,9,16236.24,16232.24,20.00 +divrem,auto,2000,1000,108,9,186794.72,186289.39,20.17 +divrem,kernel,2000,1000,108,9,186649.17,186439.09,20.23 +divrem,floor,2000,1000,107,9,188070.20,187931.15,20.13 +divrem,gmp,2000,1000,145,9,138119.28,138075.79,20.03 +divrem,gmpz,2000,1000,145,9,138140.75,138119.05,20.03 +divrem,auto,4000,2000,43,9,476652.84,476266.72,20.50 +divrem,kernel,4000,2000,42,9,478440.05,478253.71,20.10 +divrem,floor,4000,2000,42,9,478139.17,478087.02,20.09 +divrem,gmp,4000,2000,60,9,333266.35,332479.28,20.08 +divrem,gmpz,4000,2000,61,9,333314.51,332983.10,20.34 +divrem,auto,2000,100,139,9,144334.24,143631.98,20.06 +divrem,kernel,2000,100,139,9,143566.42,143213.91,19.98 +divrem,floor,2000,100,140,9,142981.06,142916.53,20.04 +divrem,gmp,2000,100,278,9,72047.45,72034.13,20.04 +divrem,gmpz,2000,100,278,9,72119.43,72104.07,20.05 +divrem,auto,65536,1,119,9,168694.72,168217.84,20.08 +divrem,kernel,65536,1,120,9,166924.63,166779.73,20.03 +divrem,floor,65536,1,120,9,167429.69,167087.44,20.09 +divrem,gmp,65536,1,136,9,148104.64,148099.69,20.15 +divrem,gmpz,65536,1,136,9,148116.47,148105.24,20.14 +tochars,auto,1,10,1355736,9,14.73,14.73,19.99 +tochars,kernel,1,10,313805,9,63.76,63.72,20.02 +tochars,gmp,1,10,1013145,9,19.68,19.62,19.94 +tochars,gmpz,1,10,589885,9,33.85,33.68,19.97 +tochars,auto,4,10,136501,9,146.17,142.64,19.89 +tochars,kernel,4,10,111570,9,180.63,179.58,20.17 +tochars,gmp,4,10,279381,9,71.56,71.51,19.99 +tochars,gmpz,4,10,202256,9,98.74,98.64,19.98 +tochars,auto,16,10,17140,9,1163.69,1158.52,19.94 +tochars,kernel,16,10,19344,9,1030.72,1029.15,19.95 +tochars,gmp,16,10,39715,9,503.65,503.53,20.00 +tochars,gmpz,16,10,33971,9,589.65,587.33,20.02 +tochars,auto,64,10,3515,9,5693.90,5679.78,20.03 +tochars,kernel,64,10,3758,9,5337.86,5330.92,20.08 +tochars,gmp,64,10,7530,9,2657.06,2652.27,20.01 +tochars,gmpz,64,10,6791,9,2945.97,2943.72,20.02 +tochars,auto,256,10,540,9,37050.67,37043.52,20.01 +tochars,kernel,256,10,563,9,35569.42,35549.32,20.03 +tochars,gmp,256,10,1080,9,18555.92,18538.51,20.05 +tochars,gmpz,256,10,1018,9,19658.96,19643.50,20.01 +tochars,auto,2000,10,33,9,621612.36,621229.94,20.52 +tochars,kernel,2000,10,34,9,598569.21,598492.03,20.40 +tochars,gmp,2000,10,50,9,400844.56,400543.90,20.07 +tochars,gmpz,2000,10,49,9,408430.39,408228.33,20.02 +tochars,auto,16,16,190126,9,103.73,103.34,19.76 +tochars,gmp,16,16,207472,9,96.23,96.14,19.98 +tochars,gmpz,16,16,127490,9,156.93,156.72,20.00 +tochars,auto,2000,16,1670,9,11938.07,11937.22,19.95 +tochars,gmp,2000,16,1800,9,11111.52,11110.56,20.01 +tochars,gmpz,2000,16,1116,9,17929.36,17926.69,20.02 +fromchars,auto,4,10,173167,9,115.47,115.07,20.00 +fromchars,kernel,4,10,518581,9,38.60,38.19,20.00 +fromchars,gmp,4,10,624449,9,32.00,31.96,20.01 +fromchars,gmpz,4,10,287280,9,69.03,68.78,19.82 +fromchars,auto,16,10,47976,9,421.53,419.67,20.25 +fromchars,kernel,16,10,102816,9,199.35,194.22,20.55 +fromchars,gmp,16,10,162453,9,123.18,122.83,20.01 +fromchars,gmpz,16,10,68688,9,291.46,290.11,20.04 +fromchars,auto,64,10,7272,9,2836.33,2772.39,20.79 +fromchars,kernel,64,10,11440,9,1811.07,1699.50,20.82 +fromchars,gmp,64,10,21272,9,939.26,938.49,19.98 +fromchars,gmpz,64,10,14041,9,1423.93,1422.63,20.01 +fromchars,auto,256,10,819,9,27598.24,26234.97,22.57 +fromchars,kernel,256,10,844,9,24158.60,21412.20,20.80 +fromchars,gmp,256,10,2499,9,8015.89,8004.67,20.03 +fromchars,gmpz,256,10,2010,9,9952.60,9940.25,20.01 +fromchars,auto,2000,10,52,9,385854.73,385356.38,20.07 +fromchars,kernel,2000,10,56,9,363042.38,362981.98,20.34 +fromchars,gmp,2000,10,110,9,182303.46,182261.16,20.05 +fromchars,gmpz,2000,10,102,9,197407.15,197383.46,20.14 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64_seed2b.csv b/tests/beman/big_int/perf/item1/x64r3_new64_seed2b.csv new file mode 100644 index 00000000..c333528d --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_new64_seed2b.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T18:07:47Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,3577047,9,5.35,5.32,19.13 +add,inplace,1,1,3921704,9,2.56,2.55,20.08 +add,kernel,1,1,10430436,9,1.93,1.90,20.12 +add,floor,1,1,2035677,9,9.82,9.78,19.99 +add,gmp,1,1,8823398,9,2.27,2.27,20.02 +add,gmpz,1,1,4813001,9,4.16,4.16,20.00 +add,auto,2,2,1267695,9,15.83,15.78,20.10 +add,inplace,2,2,1633467,9,6.26,6.02,20.41 +add,kernel,2,2,8368911,9,2.39,2.30,19.96 +add,floor,2,2,1980836,9,10.18,10.15,20.17 +add,gmp,2,2,8823660,9,2.27,2.27,20.02 +add,gmpz,2,2,4813109,9,4.16,4.16,20.00 +add,auto,4,4,1306219,9,15.35,15.29,20.07 +add,inplace,4,4,1763229,9,5.70,5.64,20.12 +add,kernel,4,4,6598532,9,3.05,3.02,20.11 +add,floor,4,4,1830063,9,10.92,10.87,20.00 +add,gmp,4,4,8042193,9,2.49,2.49,20.01 +add,gmpz,4,4,4595181,9,4.34,4.34,19.98 +add,auto,8,8,1195411,9,16.83,16.77,20.10 +add,inplace,8,8,1383999,9,7.33,7.21,20.43 +add,kernel,8,8,4378986,9,4.53,4.53,19.85 +add,floor,8,8,1610842,9,12.46,12.40,20.05 +add,gmp,8,8,5440624,9,3.68,3.68,20.03 +add,gmpz,8,8,4260457,9,4.66,4.63,19.83 +add,auto,16,16,946810,9,20.98,20.89,19.85 +add,inplace,16,16,893259,9,11.20,11.17,20.01 +add,kernel,16,16,2647252,9,7.56,7.55,20.03 +add,floor,16,16,1297957,9,15.42,15.37,20.00 +add,gmp,16,16,3626203,9,5.50,5.50,19.95 +add,gmpz,16,16,3075764,9,6.51,6.48,20.04 +add,auto,64,64,435056,9,46.16,45.80,20.07 +add,inplace,64,64,276720,9,35.83,35.42,19.82 +add,kernel,64,64,597039,9,33.58,33.44,20.04 +add,floor,64,64,475025,9,41.84,41.75,19.87 +add,gmp,64,64,1294650,9,15.45,15.45,20.00 +add,gmpz,64,64,1212870,9,16.49,16.46,19.99 +add,auto,256,256,123423,9,162.19,161.91,20.02 +add,inplace,256,256,69184,9,144.56,144.53,20.00 +add,kernel,256,256,140593,9,142.32,142.19,20.01 +add,floor,256,256,126526,9,158.25,158.15,20.03 +add,gmp,256,256,255675,9,78.22,78.21,20.03 +add,gmpz,256,256,251597,9,79.47,79.38,20.01 +add,auto,1024,1024,33357,9,599.67,599.52,20.00 +add,inplace,1024,1024,17167,9,581.56,581.50,19.97 +add,kernel,1024,1024,34628,9,577.71,577.58,20.01 +add,floor,1024,1024,33679,9,594.03,593.73,20.01 +add,gmp,1024,1024,51217,9,390.51,390.50,20.00 +add,gmpz,1024,1024,51093,9,391.44,391.43,20.01 +add,auto,2000,2000,17361,9,1152.15,1152.08,20.01 +add,inplace,2000,2000,8826,9,1132.04,1131.93,19.99 +add,kernel,2000,2000,17670,9,1131.81,1131.76,20.00 +add,floor,2000,2000,17378,9,1150.61,1150.29,20.00 +add,gmp,2000,2000,43712,9,457.55,457.54,20.00 +add,gmpz,2000,2000,41790,9,478.53,476.94,19.99 +add,auto,1024,1,79434,9,251.91,251.47,20.01 +add,inplace,1024,1,2072297,9,4.83,4.82,20.07 +add,kernel,1024,1,34636,9,577.39,577.36,20.00 +add,floor,1024,1,33692,9,593.60,593.50,20.05 +add,gmp,1024,1,85939,9,232.75,232.35,20.03 +add,gmpz,1024,1,85469,9,234.04,233.74,20.00 +sub,auto,1,1,3607642,9,5.45,5.37,19.69 +sub,inplace,1,1,3992721,9,2.46,2.46,19.66 +sub,kernel,1,1,13236344,9,1.51,1.51,20.00 +sub,floor,1,1,9820298,9,2.05,2.00,19.98 +sub,gmp,1,1,8823989,9,2.27,2.27,20.01 +sub,gmpz,1,1,4603741,9,4.34,4.34,20.02 +sub,auto,2,2,1282193,9,15.62,15.54,20.05 +sub,inplace,2,2,2048372,9,4.83,4.78,19.91 +sub,kernel,2,2,9518725,9,2.12,2.10,20.20 +sub,floor,2,2,2051190,9,9.84,9.77,20.15 +sub,gmp,2,2,8824305,9,2.27,2.27,20.00 +sub,gmpz,2,2,4603556,9,4.34,4.34,20.06 +sub,auto,4,4,1219577,9,16.43,16.38,20.04 +sub,inplace,4,4,1767929,9,5.61,5.51,19.81 +sub,kernel,4,4,7004924,9,2.84,2.83,19.88 +sub,floor,4,4,1909653,9,10.57,10.54,20.21 +sub,gmp,4,4,8007005,9,2.50,2.50,19.99 +sub,gmpz,4,4,4397969,9,4.55,4.54,20.05 +sub,auto,8,8,1114372,9,18.00,17.96,20.06 +sub,inplace,8,8,1382201,9,7.10,7.04,19.62 +sub,kernel,8,8,4590274,9,4.36,4.36,20.04 +sub,floor,8,8,1645925,9,12.18,12.14,20.04 +sub,gmp,8,8,5423417,9,3.69,3.69,20.01 +sub,gmpz,8,8,4039996,9,4.95,4.93,20.00 +sub,auto,16,16,953025,9,21.00,20.92,20.00 +sub,inplace,16,16,997805,9,10.04,10.02,20.03 +sub,kernel,16,16,2679304,9,7.46,7.46,20.00 +sub,floor,16,16,1325839,9,15.20,15.16,20.16 +sub,gmp,16,16,3637705,9,5.50,5.49,19.99 +sub,gmpz,16,16,2946389,9,6.80,6.77,20.05 +sub,auto,64,64,439726,9,45.15,45.07,19.95 +sub,inplace,64,64,286346,9,34.55,34.16,19.80 +sub,kernel,64,64,611637,9,32.70,32.69,20.00 +sub,floor,64,64,474746,9,42.19,42.09,20.03 +sub,gmp,64,64,1294771,9,15.45,15.45,20.00 +sub,gmpz,64,64,1194635,9,16.74,16.71,19.99 +sub,auto,256,256,123073,9,162.63,162.50,20.02 +sub,inplace,256,256,69277,9,144.36,144.34,20.01 +sub,kernel,256,256,140406,9,142.45,142.44,20.01 +sub,floor,256,256,126436,9,158.52,158.33,20.04 +sub,gmp,256,256,255595,9,78.25,78.24,20.00 +sub,gmpz,256,256,250458,9,79.87,79.75,20.00 +sub,auto,1024,1024,33459,9,598.33,597.77,20.02 +sub,inplace,1024,1024,17227,9,580.54,580.52,20.00 +sub,kernel,1024,1024,34616,9,577.77,577.76,20.01 +sub,floor,1024,1024,33660,9,594.18,594.05,20.01 +sub,gmp,1024,1024,51304,9,389.79,389.78,20.00 +sub,gmpz,1024,1024,51012,9,392.06,392.04,20.01 +sub,auto,2000,2000,17319,9,1154.83,1154.57,20.01 +sub,inplace,2000,2000,8836,9,1131.82,1131.78,20.02 +sub,kernel,2000,2000,17659,9,1132.59,1132.55,20.00 +sub,floor,2000,2000,17397,9,1149.97,1149.74,20.01 +sub,gmp,2000,2000,41766,9,478.89,478.87,20.00 +sub,gmpz,2000,2000,40802,9,490.19,488.82,19.99 +sub,auto,1024,1,79279,9,252.29,251.90,20.00 +sub,inplace,1024,1,2119759,9,4.74,4.71,20.14 +sub,kernel,1024,1,34693,9,576.50,576.49,20.00 +sub,floor,1024,1,33721,9,593.21,593.01,20.00 +sub,gmp,1024,1,85537,9,233.08,233.02,19.94 +sub,gmpz,1024,1,85649,9,233.96,233.51,20.04 +shl,auto,1,13,1603179,9,12.51,12.40,20.05 +shl,inplace,1,13,2386434,9,4.19,4.18,20.02 +shl,kernel,1,13,9553877,9,2.08,2.06,19.81 +shl,kernelip,1,13,5802986,9,1.75,1.72,20.30 +shl,floor,1,13,2078823,9,9.83,9.82,20.46 +shl,gmp,1,13,9626105,9,2.24,2.08,21.38 +shl,gmpz,1,13,6111055,9,3.27,3.27,20.01 +shl,auto,4,13,1484647,9,13.51,13.40,20.06 +shl,inplace,4,13,1885438,9,5.26,5.22,19.85 +shl,kernel,4,13,5530834,9,3.48,3.46,19.33 +shl,kernelip,4,13,3439395,9,2.90,2.89,20.00 +shl,floor,4,13,1775779,9,11.20,11.18,19.88 +shl,gmp,4,13,7991494,9,2.50,2.50,20.03 +shl,gmpz,4,13,4946257,9,4.04,4.04,20.00 +shl,auto,16,13,1170586,9,17.16,17.02,20.06 +shl,inplace,16,13,1084001,9,9.25,9.23,20.05 +shl,kernel,16,13,2648764,9,7.58,7.49,20.02 +shl,kernelip,16,13,1397422,9,7.16,7.12,20.00 +shl,floor,16,13,1344401,9,15.21,15.21,20.45 +shl,gmp,16,13,4812046,9,4.16,4.14,20.00 +shl,gmpz,16,13,3446148,9,5.80,5.80,20.04 +shl,auto,256,13,162560,9,121.93,121.75,19.81 +shl,inplace,256,13,100859,9,99.30,99.21,20.03 +shl,kernel,256,13,212278,9,94.19,94.15,20.01 +shl,kernelip,256,13,103242,9,96.92,96.83,20.02 +shl,floor,256,13,179389,9,114.61,114.26,20.56 +shl,gmp,256,13,424108,9,47.20,47.09,20.02 +shl,gmpz,256,13,394969,9,50.60,50.55,19.99 +shl,auto,2000,13,25884,9,773.04,772.61,20.04 +shl,inplace,2000,13,13951,9,716.84,716.77,20.00 +shl,kernel,2000,13,27715,9,719.54,719.27,19.94 +shl,kernelip,2000,13,13996,9,714.41,714.38,20.00 +shl,floor,2000,13,27130,9,738.84,738.59,20.06 +shl,gmp,2000,13,59629,9,335.46,335.36,20.01 +shl,gmpz,2000,13,59148,9,338.06,337.85,20.00 +shl,auto,2000,77,25774,9,774.47,774.33,19.96 +shl,inplace,2000,77,13486,9,741.62,739.84,20.04 +shl,kernel,2000,77,23431,9,852.52,850.31,19.97 +shl,kernelip,2000,77,12163,9,822.02,822.00,20.00 +shl,floor,2000,77,22965,9,872.53,870.60,20.06 +shl,gmp,2000,77,59273,9,337.55,337.53,20.01 +shl,gmpz,2000,77,59135,9,338.22,338.19,20.01 +shr,auto,1,13,2441463,9,8.19,8.18,20.00 +shr,inplace,1,13,2545431,9,3.87,3.86,19.81 +shr,kernel,1,13,11750523,9,1.70,1.70,20.00 +shr,floor,1,13,8824048,9,2.27,2.27,20.02 +shr,gmp,1,13,10588923,9,1.89,1.89,20.00 +shr,gmpz,1,13,5787687,9,3.46,3.46,20.05 +shr,auto,4,13,1241607,9,16.05,16.02,19.94 +shr,inplace,4,13,1970774,9,5.06,5.05,19.96 +shr,kernel,4,13,5694902,9,3.51,3.51,20.00 +shr,floor,4,13,1503973,9,13.14,12.51,19.64 +shr,gmp,4,13,7252141,9,2.75,2.75,19.97 +shr,gmpz,4,13,4090978,9,4.91,4.78,20.15 +shr,auto,16,13,1000756,9,20.02,19.99,20.03 +shr,inplace,16,13,1126681,9,8.91,8.88,20.07 +shr,kernel,16,13,2262378,9,8.92,8.87,20.18 +shr,floor,16,13,1167292,9,17.13,17.05,20.00 +shr,gmp,16,13,4632687,9,4.32,4.32,20.00 +shr,gmpz,16,13,2946458,9,6.77,6.75,19.98 +shr,auto,256,13,159883,9,125.07,125.00,20.00 +shr,inplace,256,13,100953,9,99.11,99.01,20.02 +shr,kernel,256,13,181782,9,110.03,109.84,20.04 +shr,floor,256,13,150985,9,131.06,130.93,19.81 +shr,gmp,256,13,416223,9,48.10,47.95,20.04 +shr,gmpz,256,13,396290,9,50.77,50.33,20.09 +shr,auto,2000,13,26694,9,749.36,748.68,20.00 +shr,inplace,2000,13,13914,9,718.89,716.45,20.02 +shr,kernel,2000,13,24624,9,812.35,812.22,20.04 +shr,floor,2000,13,24004,9,833.62,832.17,20.07 +shr,gmp,2000,13,59524,9,336.09,335.89,20.02 +shr,gmpz,2000,13,58978,9,339.03,338.99,20.00 +shr,auto,2000,77,26575,9,749.38,749.09,19.92 +shr,inplace,2000,77,13505,9,740.96,739.32,20.01 +shr,kernel,2000,77,24095,9,830.10,830.08,20.02 +shr,floor,2000,77,23478,9,851.98,851.60,20.01 +shr,gmp,2000,77,59534,9,335.93,335.90,20.01 +shr,gmpz,2000,77,58994,9,339.05,338.88,20.00 +mul,auto,1,1,1173119,9,17.10,16.99,20.06 +mul,gmp,1,1,5967497,9,3.40,3.36,20.24 +mul,gmpz,1,1,5042338,9,3.97,3.97,20.01 +mul,auto,2,2,1056194,9,18.88,18.82,19.97 +mul,kernel,2,2,2707977,9,7.57,7.55,20.50 +mul,floor,2,2,1332804,9,15.21,15.16,20.28 +mul,gmp,2,2,5225958,9,3.82,3.80,19.95 +mul,gmpz,2,2,3275568,9,6.11,6.08,20.00 +mul,auto,3,3,982858,9,20.27,20.22,19.95 +mul,kernel,3,3,2247271,9,8.93,8.91,20.06 +mul,floor,3,3,1191248,9,16.83,16.77,20.06 +mul,gmp,3,3,2568668,9,7.75,7.72,19.90 +mul,gmpz,3,3,2018479,9,9.92,9.88,20.03 +mul,auto,4,4,893986,9,22.26,22.24,19.93 +mul,kernel,4,4,1928222,9,10.91,10.89,21.02 +mul,floor,4,4,1081254,9,18.42,18.30,19.92 +mul,gmp,4,4,2071836,9,9.65,9.60,20.00 +mul,gmpz,4,4,1655692,9,12.11,12.04,20.05 +mul,auto,6,6,717007,9,27.82,27.70,19.96 +mul,kernel,6,6,1216350,9,17.16,17.13,20.88 +mul,floor,6,6,812417,9,24.51,24.49,19.95 +mul,gmp,6,6,1170812,9,17.06,17.01,19.95 +mul,gmpz,6,6,1100983,9,18.14,18.11,19.97 +mul,auto,8,8,560496,9,35.66,35.42,19.98 +mul,kernel,8,8,810385,9,25.28,25.14,20.51 +mul,floor,8,8,608691,9,32.78,32.66,19.97 +mul,gmp,8,8,740277,9,26.97,26.89,19.98 +mul,gmpz,8,8,686900,9,29.01,28.68,19.88 +mul,auto,12,12,350075,9,57.15,57.08,20.01 +mul,kernel,12,12,427759,9,47.50,47.32,20.32 +mul,floor,12,12,359364,9,55.84,55.66,20.05 +mul,gmp,12,12,411195,9,48.56,48.54,19.99 +mul,gmpz,12,12,393960,9,50.75,50.73,19.99 +mul,auto,16,16,226282,9,88.40,88.36,20.01 +mul,kernel,16,16,256426,9,78.59,78.52,20.18 +mul,floor,16,16,229393,9,87.58,87.43,20.11 +mul,gmp,16,16,244219,9,81.91,81.84,20.00 +mul,gmpz,16,16,237980,9,84.06,84.03,20.01 +mul,auto,32,32,95147,9,209.91,209.62,19.98 +mul,kernel,32,32,107047,9,186.55,186.45,19.99 +mul,floor,32,32,102204,9,196.07,195.30,20.02 +mul,gmp,32,32,72602,9,271.89,270.70,19.82 +mul,gmpz,32,32,73744,9,270.69,270.59,19.96 +mul,auto,64,64,40152,9,497.87,497.63,20.00 +mul,kernel,64,64,41025,9,485.10,484.55,19.92 +mul,floor,64,64,40656,9,491.23,490.60,19.97 +mul,gmp,64,64,22794,9,870.47,858.90,19.78 +mul,gmpz,64,64,23326,9,858.18,857.47,20.02 +mul,auto,128,128,11641,9,1719.09,1715.69,20.03 +mul,kernel,128,128,11824,9,1691.80,1689.20,20.00 +mul,floor,128,128,11761,9,1699.55,1698.41,19.99 +mul,gmp,128,128,7202,9,2759.94,2735.36,19.85 +mul,gmpz,128,128,7317,9,2732.97,2731.78,20.00 +mul,auto,256,256,3236,9,6174.79,6173.44,19.99 +mul,kernel,256,256,3250,9,6147.58,6144.56,19.98 +mul,floor,256,256,3236,9,6168.85,6166.11,19.96 +mul,gmp,256,256,2512,9,7885.20,7811.98,19.80 +mul,gmpz,256,256,2543,9,7856.20,7851.86,19.98 +mul,auto,512,512,1025,9,19205.85,19195.62,19.70 +mul,kernel,512,512,1046,9,19184.28,19171.67,20.07 +mul,floor,512,512,1043,9,19186.93,19171.79,20.01 +mul,gmp,512,512,952,9,20792.79,20788.22,19.81 +mul,gmpz,512,512,957,9,20902.30,20893.51,20.01 +mul,auto,1000,1000,334,9,60052.82,59942.66,20.05 +mul,kernel,1000,1000,336,9,59770.95,59739.82,20.08 +mul,floor,1000,1000,336,9,59649.54,59571.83,20.04 +mul,gmp,1000,1000,373,9,53371.11,53358.96,19.92 +mul,gmpz,1000,1000,374,9,53535.73,53504.12,20.03 +mul,auto,2000,2000,113,9,177030.50,176902.36,20.01 +mul,kernel,2000,2000,114,9,176932.86,176815.11,20.17 +mul,floor,2000,2000,114,9,176475.61,176333.16,20.12 +mul,gmp,2000,2000,139,9,144051.29,144036.38,20.03 +mul,gmpz,2000,2000,139,9,144121.03,144038.63,20.03 +mul,auto,2000,100,1133,9,17657.84,17653.95,20.01 +mul,kernel,2000,100,1132,9,17655.76,17651.87,20.03 +mul,floor,2000,100,1132,9,17669.94,17665.70,20.02 +mul,gmp,2000,100,546,9,36271.44,36028.86,19.82 +mul,gmpz,2000,100,556,9,35987.60,35857.05,20.00 +sqr,auto,4,4,898995,9,22.20,22.11,20.01 +sqr,kernel,4,4,2004100,9,9.92,9.75,19.81 +sqr,floor,4,4,1180255,9,16.79,16.76,19.82 +sqr,gmp,4,4,3433463,9,5.81,5.79,20.01 +sqr,gmpz,4,4,2273598,9,8.83,8.78,20.12 +sqr,auto,16,16,301575,9,66.32,66.20,20.00 +sqr,kernel,16,16,357147,9,56.09,56.02,20.06 +sqr,floor,16,16,320643,9,62.43,62.39,20.02 +sqr,gmp,16,16,398122,9,49.83,49.81,19.85 +sqr,gmpz,16,16,383936,9,52.08,52.06,20.00 +sqr,auto,64,64,70796,9,282.52,282.13,20.01 +sqr,kernel,64,64,72176,9,277.21,276.68,20.00 +sqr,floor,64,64,71661,9,282.53,281.79,20.24 +sqr,gmp,64,64,35749,9,555.20,549.92,19.89 +sqr,gmpz,64,64,36162,9,551.04,550.94,19.93 +sqr,auto,512,512,1892,9,10567.05,10560.98,20.00 +sqr,kernel,512,512,1890,9,10584.92,10577.92,20.01 +sqr,floor,512,512,1883,9,10619.83,10614.94,20.00 +sqr,gmp,512,512,1331,9,15038.02,15033.59,20.02 +sqr,gmpz,512,512,1331,9,15037.01,15029.12,20.01 +sqr,auto,2000,2000,204,9,98183.77,98175.46,20.03 +sqr,kernel,2000,2000,204,9,98167.33,98117.55,20.03 +sqr,floor,2000,2000,204,9,98253.94,98208.76,20.04 +sqr,gmp,2000,2000,199,9,100635.62,100587.59,20.03 +sqr,gmpz,2000,2000,199,9,100608.89,100568.23,20.02 +divrem,auto,2,1,614468,9,32.52,32.38,20.01 +divrem,kernel,2,1,3501342,9,5.66,5.48,19.71 +divrem,floor,2,1,1558013,9,12.81,12.78,19.97 +divrem,gmp,2,1,2983669,9,6.70,6.70,20.00 +divrem,gmpz,2,1,1725041,9,11.60,11.54,20.02 +divrem,auto,8,4,201575,9,99.04,98.16,19.94 +divrem,kernel,8,4,347047,9,57.29,56.67,19.88 +divrem,floor,8,4,277626,9,71.51,71.31,19.88 +divrem,gmp,8,4,458645,9,43.79,43.72,20.10 +divrem,gmpz,8,4,420666,9,47.43,47.25,19.95 +divrem,auto,32,16,58747,9,339.31,335.26,19.91 +divrem,kernel,32,16,70144,9,285.03,283.82,19.99 +divrem,floor,32,16,66215,9,302.27,301.31,20.04 +divrem,gmp,32,16,105531,9,189.62,188.78,20.00 +divrem,gmpz,32,16,103490,9,193.59,192.61,20.04 +divrem,auto,128,64,5821,9,3441.75,3433.00,20.04 +divrem,kernel,128,64,6005,9,3332.20,3330.56,20.02 +divrem,floor,128,64,5983,9,3347.31,3339.66,20.02 +divrem,gmp,128,64,11631,9,1720.05,1718.73,20.01 +divrem,gmpz,128,64,11600,9,1724.30,1723.50,20.01 +divrem,auto,512,256,679,9,29493.88,29435.07,20.03 +divrem,kernel,512,256,682,9,29370.01,29336.88,20.07 +divrem,floor,512,256,682,9,29353.82,29319.43,20.03 +divrem,gmp,512,256,1232,9,16232.90,16226.93,20.00 +divrem,gmpz,512,256,1236,9,16190.97,16186.41,20.02 +divrem,auto,2000,1000,108,9,186840.69,186275.31,20.17 +divrem,kernel,2000,1000,108,9,186048.68,185803.25,20.10 +divrem,floor,2000,1000,108,9,186283.78,185985.70,20.12 +divrem,gmp,2000,1000,145,9,138003.46,137958.75,20.02 +divrem,gmpz,2000,1000,145,9,137974.21,137945.08,20.01 +divrem,auto,4000,2000,42,9,477535.88,477269.60,20.06 +divrem,kernel,4000,2000,42,9,476384.98,475947.02,20.01 +divrem,floor,4000,2000,42,9,476778.90,476474.64,20.03 +divrem,gmp,4000,2000,60,9,334009.12,332808.88,20.04 +divrem,gmpz,4000,2000,60,9,333192.87,332781.00,20.00 +divrem,auto,2000,100,139,9,144182.16,143873.96,20.04 +divrem,kernel,2000,100,140,9,143385.56,142992.33,20.08 +divrem,floor,2000,100,140,9,143094.35,142856.66,20.05 +divrem,gmp,2000,100,272,9,72001.97,71985.45,19.60 +divrem,gmpz,2000,100,278,9,71981.56,71966.94,20.01 +divrem,auto,65536,1,119,9,168984.07,168310.11,20.09 +divrem,kernel,65536,1,120,9,166968.46,166848.10,20.05 +divrem,floor,65536,1,120,9,167327.78,166866.08,20.07 +divrem,gmp,65536,1,136,9,148095.71,148092.93,20.15 +divrem,gmpz,65536,1,136,9,148111.24,148102.01,20.15 +tochars,auto,1,10,1357390,9,14.74,14.73,20.04 +tochars,kernel,1,10,314244,9,63.74,63.63,20.03 +tochars,gmp,1,10,1012663,9,19.65,19.51,19.89 +tochars,gmpz,1,10,592281,9,33.79,33.69,20.06 +tochars,auto,4,10,145796,9,137.74,136.97,20.07 +tochars,kernel,4,10,109558,9,181.60,180.07,19.89 +tochars,gmp,4,10,278716,9,71.77,71.74,20.02 +tochars,gmpz,4,10,202113,9,98.77,98.70,19.97 +tochars,auto,16,10,17135,9,1166.13,1161.29,19.98 +tochars,kernel,16,10,19261,9,1033.24,1030.61,19.93 +tochars,gmp,16,10,39738,9,503.07,502.94,20.00 +tochars,gmpz,16,10,33829,9,589.31,587.68,19.96 +tochars,auto,64,10,3508,9,5697.18,5694.96,19.99 +tochars,kernel,64,10,3751,9,5327.97,5323.33,19.99 +tochars,gmp,64,10,7531,9,2658.42,2653.99,20.03 +tochars,gmpz,64,10,6791,9,2948.60,2945.23,20.03 +tochars,auto,256,10,539,9,36914.01,36862.59,19.92 +tochars,kernel,256,10,564,9,35488.09,35460.92,20.02 +tochars,gmp,256,10,1055,9,18589.93,18566.66,19.62 +tochars,gmpz,256,10,1016,9,19684.63,19664.20,20.00 +tochars,auto,2000,10,33,9,623341.88,622651.94,20.57 +tochars,kernel,2000,10,34,9,598492.94,598168.12,20.35 +tochars,gmp,2000,10,50,9,400019.86,399802.06,20.00 +tochars,gmpz,2000,10,49,9,408708.10,408537.04,20.03 +tochars,auto,16,16,192800,9,103.35,103.19,19.93 +tochars,gmp,16,16,203772,9,98.17,98.09,20.00 +tochars,gmpz,16,16,127484,9,156.96,156.73,20.05 +tochars,auto,2000,16,1656,9,11925.94,11924.49,19.75 +tochars,gmp,2000,16,1801,9,11111.26,11110.65,20.02 +tochars,gmpz,2000,16,1116,9,17928.43,17924.46,20.01 +fromchars,auto,4,10,173263,9,115.79,115.40,20.10 +fromchars,kernel,4,10,523191,9,38.56,38.46,20.19 +fromchars,gmp,4,10,626621,9,32.00,31.93,20.05 +fromchars,gmpz,4,10,288103,9,69.35,69.02,19.99 +fromchars,auto,16,10,47810,9,425.70,416.99,20.28 +fromchars,kernel,16,10,98722,9,200.83,192.05,19.78 +fromchars,gmp,16,10,162246,9,123.34,123.15,20.01 +fromchars,gmpz,16,10,78503,9,254.87,254.57,20.04 +fromchars,auto,64,10,7077,9,2749.33,2637.69,19.64 +fromchars,kernel,64,10,12017,9,1803.39,1574.96,22.08 +fromchars,gmp,64,10,22071,9,906.67,905.99,20.01 +fromchars,gmpz,64,10,14558,9,1374.30,1372.40,20.01 +fromchars,auto,256,10,780,9,28241.78,25861.71,21.05 +fromchars,kernel,256,10,874,9,24702.66,23384.15,21.56 +fromchars,gmp,256,10,2484,9,8033.81,8030.30,19.96 +fromchars,gmpz,256,10,2000,9,10000.92,9996.04,20.00 +fromchars,auto,2000,10,52,9,385442.77,385206.52,20.05 +fromchars,kernel,2000,10,56,9,362677.02,362558.41,20.33 +fromchars,gmp,2000,10,110,9,182724.77,182639.17,20.12 +fromchars,gmpz,2000,10,102,9,197874.20,197827.13,20.18 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64_spot_seed1.csv b/tests/beman/big_int/perf/item1/x64r3_new64_spot_seed1.csv new file mode 100644 index 00000000..c0f602a4 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_new64_spot_seed1.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,2144,3,9329.80,9329.19,20.00 +add,inplace,16384,16384,1077,3,9291.75,9291.14,20.04 +add,kernel,16384,16384,2152,3,9293.82,9293.61,20.00 +add,floor,16384,16384,2148,3,9314.66,9314.60,20.01 +add,gmp,16384,16384,2881,3,6945.29,6944.91,20.01 +add,gmpz,16384,16384,2893,3,6860.43,6860.09,19.86 +mul,auto,2000,2000,113,3,179055.24,177176.49,20.16 +mul,kernel,2000,2000,114,3,176701.90,176687.54,20.15 +mul,floor,2000,2000,114,3,176650.15,176486.77,20.14 +mul,gmp,2000,2000,139,3,144276.09,144268.36,20.06 +mul,gmpz,2000,2000,139,3,144173.74,144115.35,20.04 +mul,auto,16384,16384,6,3,3766476.00,3766148.67,22.61 +mul,kernel,16384,16384,6,3,3781961.33,3779006.50,22.73 +mul,floor,16384,16384,6,3,3794757.50,3793529.50,22.79 +mul,gmp,16384,16384,12,3,1774134.50,1771316.17,21.28 +mul,gmpz,16384,16384,12,3,1814579.67,1814217.75,21.78 +divrem,auto,4096,2048,41,3,498066.44,497803.59,20.42 +divrem,kernel,4096,2048,41,3,496244.41,496212.00,20.35 +divrem,floor,4096,2048,41,3,496228.83,496055.51,20.34 +divrem,gmp,4096,2048,54,3,369301.74,369054.00,20.00 +divrem,gmpz,4096,2048,55,3,368368.25,367991.47,20.25 +tochars,auto,10000,10,4,3,5976527.25,5952167.50,23.93 +tochars,kernel,10000,10,4,3,5926680.25,5923800.75,23.71 +tochars,gmp,10000,10,5,3,4184725.80,4183034.60,20.92 +tochars,gmpz,10000,10,5,3,4222464.20,4217894.20,21.11 +fromchars,auto,10000,10,6,3,3474352.83,3472772.17,20.85 +fromchars,kernel,10000,10,6,3,3359406.50,3357105.00,20.15 +fromchars,gmp,10000,10,11,3,1933487.18,1931693.82,21.26 +fromchars,gmpz,10000,10,10,3,2007158.70,2006656.40,20.07 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64_spot_seed2.csv b/tests/beman/big_int/perf/item1/x64r3_new64_spot_seed2.csv new file mode 100644 index 00000000..73a6769e --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_new64_spot_seed2.csv @@ -0,0 +1,31 @@ +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,16384,16384,2144,3,9329.67,9329.50,20.00 +add,inplace,16384,16384,1075,3,9291.73,9291.62,19.99 +add,kernel,16384,16384,2152,3,9293.32,9293.02,20.01 +add,floor,16384,16384,2147,3,9316.42,9316.23,20.00 +add,gmp,16384,16384,2887,3,6928.55,6927.34,20.00 +add,gmpz,16384,16384,2884,3,6935.64,6935.29,20.00 +mul,auto,2000,2000,113,3,176661.13,176657.92,19.97 +mul,kernel,2000,2000,114,3,176779.55,176751.55,20.15 +mul,floor,2000,2000,114,3,176584.38,176484.81,20.13 +mul,gmp,2000,2000,139,3,144195.17,144186.34,20.04 +mul,gmpz,2000,2000,139,3,144900.69,144168.84,20.15 +mul,auto,16384,16384,6,3,3792455.83,3783313.67,22.74 +mul,kernel,16384,16384,6,3,3794410.00,3794187.50,22.77 +mul,floor,16384,16384,6,3,3792077.17,3788301.17,22.75 +mul,gmp,16384,16384,12,3,1763534.08,1762809.08,21.16 +mul,gmpz,16384,16384,12,3,1763792.83,1763491.92,21.17 +divrem,auto,4096,2048,41,3,498887.49,497503.85,20.46 +divrem,kernel,4096,2048,41,3,494892.93,494711.12,20.29 +divrem,floor,4096,2048,41,3,494773.02,494563.73,20.28 +divrem,gmp,4096,2048,55,3,369379.02,369046.56,20.31 +divrem,gmpz,4096,2048,55,3,369045.49,368691.65,20.29 +tochars,auto,10000,10,4,3,5945137.00,5941633.25,23.80 +tochars,kernel,10000,10,4,3,5914946.50,5895661.75,23.64 +tochars,gmp,10000,10,5,3,4186712.60,4185394.80,21.06 +tochars,gmpz,10000,10,5,3,4225421.00,4221150.00,21.14 +fromchars,auto,10000,10,6,3,3477433.17,3474003.00,20.91 +fromchars,kernel,10000,10,6,3,3365123.83,3359244.83,20.26 +fromchars,gmp,10000,10,11,3,1932320.18,1932008.91,21.26 +fromchars,gmpz,10000,10,10,3,2004834.50,2004749.70,20.05 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64a_seed1a.csv b/tests/beman/big_int/perf/item1/x64r3_new64a_seed1a.csv new file mode 100644 index 00000000..21a941c0 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_new64a_seed1a.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T17:55:02Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64a seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2967090,9,6.73,6.66,19.97 +add,inplace,1,1,2035959,9,4.91,4.91,20.00 +add,kernel,1,1,10390530,9,1.92,1.89,19.93 +add,floor,1,1,2035044,9,9.83,9.82,19.99 +add,gmp,1,1,8810824,9,2.27,2.27,19.97 +add,gmpz,1,1,4813082,9,4.16,4.16,20.01 +add,auto,2,2,1259173,9,15.91,15.89,20.04 +add,inplace,2,2,1658871,9,6.21,6.11,20.56 +add,kernel,2,2,8349818,9,2.38,2.34,20.01 +add,floor,2,2,1952967,9,10.29,10.22,20.10 +add,gmp,2,2,8824180,9,2.27,2.27,20.05 +add,gmpz,2,2,4813198,9,4.16,4.16,20.05 +add,auto,4,4,1298091,9,15.41,15.41,20.01 +add,inplace,4,4,1749186,9,5.72,5.71,20.01 +add,kernel,4,4,6560176,9,3.06,3.03,20.09 +add,floor,4,4,1802134,9,11.10,10.99,20.02 +add,gmp,4,4,7976811,9,2.51,2.50,20.02 +add,gmpz,4,4,4520677,9,4.42,4.40,19.99 +add,auto,8,8,1190045,9,16.75,16.75,19.94 +add,inplace,8,8,1416722,9,7.07,7.06,20.04 +add,kernel,8,8,4346276,9,4.58,4.55,19.92 +add,floor,8,8,1585120,9,12.60,12.52,20.03 +add,gmp,8,8,5440092,9,3.68,3.68,20.01 +add,gmpz,8,8,4212103,9,4.74,4.73,20.00 +add,auto,16,16,954273,9,20.91,20.88,19.96 +add,inplace,16,16,844166,9,11.89,11.81,20.06 +add,kernel,16,16,2612332,9,7.62,7.59,19.89 +add,floor,16,16,1282509,9,15.60,15.59,20.02 +add,gmp,16,16,3633882,9,5.50,5.50,20.00 +add,gmpz,16,16,3044348,9,6.51,6.50,19.86 +add,auto,64,64,339886,9,57.75,57.67,19.63 +add,inplace,64,64,208070,9,48.07,48.06,20.01 +add,kernel,64,64,610300,9,32.79,32.65,20.04 +add,floor,64,64,470456,9,42.08,41.20,19.83 +add,gmp,64,64,1286517,9,15.55,15.54,20.00 +add,gmpz,64,64,1212719,9,16.49,16.46,19.99 +add,auto,256,256,93590,9,213.73,213.64,20.01 +add,inplace,256,256,50876,9,196.45,196.39,19.99 +add,kernel,256,256,140479,9,142.34,142.10,20.00 +add,floor,256,256,125485,9,159.29,159.20,19.99 +add,gmp,256,256,255689,9,78.32,78.22,20.03 +add,gmpz,256,256,251618,9,79.49,79.40,20.00 +add,auto,1024,1024,24986,9,800.30,800.19,20.00 +add,inplace,1024,1024,12659,9,790.10,789.89,20.05 +add,kernel,1024,1024,34601,9,577.88,577.74,20.01 +add,floor,1024,1024,33629,9,594.66,594.54,20.04 +add,gmp,1024,1024,51210,9,390.52,390.46,20.02 +add,gmpz,1024,1024,51103,9,391.36,391.32,20.00 +add,auto,2000,2000,13018,9,1536.38,1536.11,20.02 +add,inplace,2000,2000,6575,9,1521.07,1520.85,20.03 +add,kernel,2000,2000,17660,9,1132.57,1132.51,20.00 +add,floor,2000,2000,17391,9,1150.24,1149.98,20.00 +add,gmp,2000,2000,41885,9,477.52,477.48,20.02 +add,gmpz,2000,2000,41934,9,476.93,475.17,19.98 +add,auto,1024,1,79200,9,252.26,252.10,19.98 +add,inplace,1024,1,1949952,9,5.10,5.10,19.92 +add,kernel,1024,1,34639,9,577.41,577.39,20.00 +add,floor,1024,1,33677,9,593.89,593.81,20.02 +add,gmp,1024,1,85951,9,232.69,232.62,20.01 +add,gmpz,1024,1,85480,9,233.99,233.43,19.99 +sub,auto,1,1,2567081,9,7.76,7.74,19.96 +sub,inplace,1,1,2144988,9,4.68,4.67,20.08 +sub,kernel,1,1,13233754,9,1.51,1.51,20.00 +sub,floor,1,1,10588972,9,1.89,1.89,20.00 +sub,gmp,1,1,8824212,9,2.27,2.27,20.01 +sub,gmpz,1,1,4603706,9,4.35,4.34,20.06 +sub,auto,2,2,1261834,9,15.84,15.81,20.02 +sub,inplace,2,2,1954185,9,5.14,5.10,20.12 +sub,kernel,2,2,9427173,9,2.11,2.10,19.91 +sub,floor,2,2,1997592,9,10.01,10.01,20.03 +sub,gmp,2,2,8824108,9,2.27,2.27,20.03 +sub,gmpz,2,2,4603821,9,4.35,4.34,20.04 +sub,auto,4,4,1205969,9,16.57,16.57,19.99 +sub,inplace,4,4,1773806,9,5.60,5.59,19.87 +sub,kernel,4,4,7052914,9,2.84,2.84,20.00 +sub,floor,4,4,1853499,9,10.80,10.79,20.03 +sub,gmp,4,4,7945905,9,2.52,2.51,20.05 +sub,gmpz,4,4,4329947,9,4.65,4.63,20.13 +sub,auto,8,8,1115468,9,17.93,17.92,20.00 +sub,inplace,8,8,1442139,9,6.94,6.93,20.00 +sub,kernel,8,8,4570997,9,4.37,4.36,19.98 +sub,floor,8,8,1611378,9,12.42,12.40,20.01 +sub,gmp,8,8,5416969,9,3.69,3.69,19.98 +sub,gmpz,8,8,4010719,9,5.01,5.00,20.09 +sub,auto,16,16,945849,9,21.26,21.14,20.10 +sub,inplace,16,16,865387,9,11.52,11.46,19.93 +sub,kernel,16,16,2493839,9,8.02,8.02,20.00 +sub,floor,16,16,1294636,9,15.47,15.46,20.02 +sub,gmp,16,16,3563208,9,5.61,5.60,19.99 +sub,gmpz,16,16,2757198,9,7.27,7.20,20.05 +sub,auto,64,64,340876,9,58.67,58.59,20.00 +sub,inplace,64,64,210127,9,47.60,47.58,20.01 +sub,kernel,64,64,595438,9,33.59,33.39,19.99 +sub,floor,64,64,464002,9,42.15,42.09,19.57 +sub,gmp,64,64,1287511,9,15.52,15.52,19.99 +sub,gmpz,64,64,1194484,9,16.74,16.71,20.00 +sub,auto,256,256,92612,9,215.88,215.84,20.00 +sub,inplace,256,256,50926,9,196.35,196.32,20.00 +sub,kernel,256,256,140404,9,142.46,142.43,20.00 +sub,floor,256,256,126431,9,158.11,158.02,20.00 +sub,gmp,256,256,255598,9,78.25,78.24,20.01 +sub,gmpz,256,256,250541,9,79.88,79.80,20.03 +sub,auto,1024,1024,24747,9,808.32,808.24,20.01 +sub,inplace,1024,1024,12634,9,791.60,791.45,20.00 +sub,kernel,1024,1024,34617,9,577.76,577.75,20.00 +sub,floor,1024,1024,33676,9,593.86,593.71,20.00 +sub,gmp,1024,1024,51314,9,389.75,389.75,20.00 +sub,gmpz,1024,1024,51123,9,391.21,391.16,20.00 +sub,auto,2000,2000,12909,9,1549.46,1549.27,20.00 +sub,inplace,2000,2000,6579,9,1519.94,1519.90,20.05 +sub,kernel,2000,2000,17681,9,1131.15,1131.09,20.01 +sub,floor,2000,2000,17409,9,1149.19,1148.72,20.01 +sub,gmp,2000,2000,44107,9,453.46,453.44,20.00 +sub,gmpz,2000,2000,42051,9,475.61,473.90,20.00 +sub,auto,1024,1,79039,9,253.04,252.53,20.00 +sub,inplace,1024,1,2144015,9,4.65,4.65,19.95 +sub,kernel,1024,1,34670,9,576.50,576.49,19.99 +sub,floor,1024,1,33740,9,592.65,592.52,20.00 +sub,gmp,1024,1,85530,9,233.87,233.71,20.01 +sub,gmpz,1024,1,85424,9,234.14,233.75,20.03 +shl,auto,1,13,1578917,9,12.69,12.55,20.03 +shl,inplace,1,13,2700416,9,3.68,3.67,19.90 +shl,kernel,1,13,9626405,9,2.08,2.07,19.98 +shl,kernelip,1,13,5722147,9,1.75,1.71,19.92 +shl,floor,1,13,2077739,9,9.83,9.82,20.41 +shl,gmp,1,13,9581726,9,2.08,2.08,19.96 +shl,gmpz,1,13,6110897,9,3.27,3.27,20.06 +shl,auto,4,13,1481394,9,13.48,13.43,19.99 +shl,inplace,4,13,2164052,9,4.63,4.62,20.04 +shl,kernel,4,13,5782151,9,3.49,3.43,20.14 +shl,kernelip,4,13,3369268,9,2.97,2.93,19.97 +shl,floor,4,13,1761473,9,11.20,11.18,19.75 +shl,gmp,4,13,7991240,9,2.50,2.50,20.00 +shl,gmpz,4,13,4946821,9,4.04,4.04,20.04 +shl,auto,16,13,1161843,9,17.12,17.06,19.89 +shl,inplace,16,13,1084279,9,9.20,9.06,19.96 +shl,kernel,16,13,2676291,9,7.45,7.44,19.94 +shl,kernelip,16,13,1397062,9,7.15,7.08,19.99 +shl,floor,16,13,1344463,9,15.21,15.21,20.46 +shl,gmp,16,13,4816501,9,4.16,4.14,20.08 +shl,gmpz,16,13,3404528,9,5.83,5.82,19.86 +shl,auto,256,13,164141,9,121.77,121.66,20.00 +shl,inplace,256,13,97818,9,102.19,101.89,20.03 +shl,kernel,256,13,213282,9,94.44,94.06,20.15 +shl,kernelip,256,13,102707,9,97.40,97.22,20.00 +shl,floor,256,13,179590,9,116.44,116.38,20.92 +shl,gmp,256,13,424303,9,47.15,47.12,20.01 +shl,gmpz,256,13,400199,9,49.70,49.54,19.90 +shl,auto,2000,13,25885,9,772.76,772.51,20.00 +shl,inplace,2000,13,13508,9,740.76,738.72,20.00 +shl,kernel,2000,13,27782,9,720.16,719.82,20.04 +shl,kernelip,2000,13,13985,9,715.32,714.93,20.02 +shl,floor,2000,13,27171,9,739.67,739.19,20.11 +shl,gmp,2000,13,59630,9,335.49,335.36,20.01 +shl,gmpz,2000,13,58761,9,338.08,337.85,19.87 +shl,auto,2000,77,25811,9,774.74,774.54,20.01 +shl,inplace,2000,77,13487,9,741.59,739.86,20.01 +shl,kernel,2000,77,23555,9,851.08,848.18,20.02 +shl,kernelip,2000,77,12166,9,822.02,822.00,20.00 +shl,floor,2000,77,22971,9,873.83,870.74,20.08 +shl,gmp,2000,77,59284,9,337.74,337.53,20.06 +shl,gmpz,2000,77,58753,9,339.77,338.69,19.97 +shr,auto,1,13,2440769,9,8.19,8.19,20.00 +shr,inplace,1,13,3049475,9,3.30,3.27,20.15 +shr,kernel,1,13,11755992,9,1.70,1.70,20.02 +shr,floor,1,13,8809223,9,2.27,2.27,19.97 +shr,gmp,1,13,10479164,9,1.92,1.90,20.07 +shr,gmpz,1,13,5771415,9,3.47,3.47,20.00 +shr,auto,4,13,1240537,9,16.05,16.00,19.94 +shr,inplace,4,13,2255666,9,4.37,4.34,19.70 +shr,kernel,4,13,5771249,9,3.49,3.47,20.12 +shr,floor,4,13,1799609,9,11.13,11.12,20.03 +shr,gmp,4,13,8396765,9,2.31,2.31,19.45 +shr,gmpz,4,13,5049402,9,3.96,3.96,20.04 +shr,auto,16,13,1003989,9,19.91,19.90,20.00 +shr,inplace,16,13,1135523,9,8.79,8.69,19.92 +shr,kernel,16,13,2301735,9,8.48,8.47,19.54 +shr,floor,16,13,1293396,9,15.44,15.34,19.98 +shr,gmp,16,13,4634787,9,4.32,4.31,20.06 +shr,gmpz,16,13,3199932,9,6.27,6.20,20.23 +shr,auto,256,13,158927,9,125.70,125.55,19.98 +shr,inplace,256,13,98341,9,101.68,101.59,20.00 +shr,kernel,256,13,180370,9,110.40,110.21,19.91 +shr,floor,256,13,153487,9,130.33,130.12,20.00 +shr,gmp,256,13,416001,9,47.62,47.48,19.83 +shr,gmpz,256,13,395816,9,50.71,50.62,20.07 +shr,auto,2000,13,26694,9,749.94,749.18,20.03 +shr,inplace,2000,13,13507,9,740.17,737.82,19.99 +shr,kernel,2000,13,24621,9,812.33,812.28,20.00 +shr,floor,2000,13,24039,9,832.20,831.65,20.01 +shr,gmp,2000,13,59540,9,335.63,335.58,19.98 +shr,gmpz,2000,13,59001,9,339.02,338.88,20.00 +shr,auto,2000,77,26660,9,750.94,750.07,20.07 +shr,inplace,2000,77,13498,9,740.90,740.59,20.01 +shr,kernel,2000,77,24094,9,830.10,830.09,20.00 +shr,floor,2000,77,23470,9,851.55,851.26,19.99 +shr,gmp,2000,77,59525,9,336.35,336.13,20.02 +shr,gmpz,2000,77,58983,9,339.07,338.98,20.01 +mul,auto,1,1,1224548,9,16.32,16.30,19.99 +mul,gmp,1,1,5895922,9,3.38,3.36,19.91 +mul,gmpz,1,1,4961964,9,4.03,4.02,19.98 +mul,auto,2,2,1040224,9,18.95,18.87,19.72 +mul,kernel,2,2,2833549,9,7.57,7.53,21.48 +mul,floor,2,2,1357527,9,14.99,14.92,20.33 +mul,gmp,2,2,5166436,9,3.85,3.82,19.89 +mul,gmpz,2,2,3263442,9,6.15,6.11,20.08 +mul,auto,3,3,987374,9,20.27,20.24,20.04 +mul,kernel,3,3,2395178,9,8.93,8.91,21.41 +mul,floor,3,3,1216355,9,16.66,16.57,20.25 +mul,gmp,3,3,2507578,9,7.92,7.85,19.88 +mul,gmpz,3,3,1995266,9,10.00,9.98,19.97 +mul,auto,4,4,885157,9,22.40,22.30,19.82 +mul,kernel,4,4,1924970,9,10.90,10.88,21.02 +mul,floor,4,4,1101214,9,18.37,18.25,20.21 +mul,gmp,4,4,2056730,9,9.71,9.69,19.96 +mul,gmpz,4,4,1539827,9,12.99,12.97,20.00 +mul,auto,6,6,712283,9,28.11,28.07,20.03 +mul,kernel,6,6,1215033,9,17.16,17.14,20.88 +mul,floor,6,6,807525,9,24.50,24.47,19.84 +mul,gmp,6,6,1252696,9,15.97,15.91,19.99 +mul,gmpz,6,6,1096473,9,18.25,18.20,20.00 +mul,auto,8,8,550745,9,36.18,36.00,19.92 +mul,kernel,8,8,807296,9,25.41,25.34,20.54 +mul,floor,8,8,619716,9,32.50,32.36,20.14 +mul,gmp,8,8,739008,9,26.95,26.85,19.92 +mul,gmpz,8,8,694584,9,29.07,28.61,20.19 +mul,auto,12,12,340882,9,58.49,58.26,19.93 +mul,kernel,12,12,421043,9,48.05,48.00,20.23 +mul,floor,12,12,363588,9,54.82,54.78,19.94 +mul,gmp,12,12,410060,9,48.82,48.60,20.00 +mul,gmpz,12,12,390428,9,50.91,50.90,19.91 +mul,auto,16,16,225316,9,88.81,88.63,20.02 +mul,kernel,16,16,253221,9,79.43,79.22,20.11 +mul,floor,16,16,230397,9,86.96,86.55,20.03 +mul,gmp,16,16,243912,9,81.90,81.85,19.98 +mul,gmpz,16,16,238023,9,84.07,84.03,20.01 +mul,auto,32,32,95369,9,209.18,208.78,19.95 +mul,kernel,32,32,99346,9,207.85,207.56,20.68 +mul,floor,32,32,94509,9,212.03,211.39,20.05 +mul,gmp,32,32,68763,9,287.23,286.03,19.78 +mul,gmpz,32,32,72932,9,273.02,272.03,19.91 +mul,auto,64,64,40414,9,494.98,494.54,20.01 +mul,kernel,64,64,41165,9,489.93,488.03,20.21 +mul,floor,64,64,40782,9,491.03,490.47,20.02 +mul,gmp,64,64,22824,9,876.25,875.59,20.00 +mul,gmpz,64,64,22807,9,875.01,868.70,19.93 +mul,auto,128,128,11575,9,1727.23,1724.17,19.99 +mul,kernel,128,128,11780,9,1695.97,1694.18,19.98 +mul,floor,128,128,11701,9,1708.47,1705.25,19.99 +mul,gmp,128,128,7242,9,2761.63,2758.77,20.00 +mul,gmpz,128,128,7293,9,2742.66,2727.33,20.01 +mul,auto,256,256,3236,9,6180.33,6176.90,20.00 +mul,kernel,256,256,3237,9,6166.98,6160.77,19.98 +mul,floor,256,256,3234,9,6263.65,6208.95,20.27 +mul,gmp,256,256,2518,9,7935.02,7920.55,19.98 +mul,gmpz,256,256,2546,9,7853.83,7819.33,19.98 +mul,auto,512,512,1029,9,19423.36,19405.31,20.00 +mul,kernel,512,512,1026,9,19289.41,19273.72,19.79 +mul,floor,512,512,1025,9,19530.94,19512.64,20.02 +mul,gmp,512,512,941,9,21085.64,20854.14,19.84 +mul,gmpz,512,512,959,9,20879.75,20869.01,20.03 +mul,auto,1000,1000,336,9,59526.43,59490.43,20.01 +mul,kernel,1000,1000,335,9,59938.68,59867.51,20.08 +mul,floor,1000,1000,334,9,59935.16,59877.40,20.03 +mul,gmp,1000,1000,369,9,53504.28,53259.88,19.74 +mul,gmpz,1000,1000,376,9,53301.96,53275.08,20.04 +mul,auto,2000,2000,114,9,176591.39,176491.97,20.13 +mul,kernel,2000,2000,113,9,177249.66,177017.07,20.03 +mul,floor,2000,2000,114,9,177010.55,176759.54,20.18 +mul,gmp,2000,2000,138,9,144034.86,144016.25,19.89 +mul,gmpz,2000,2000,139,9,144027.09,143962.30,20.02 +mul,auto,2000,100,1134,9,17634.95,17630.49,20.00 +mul,kernel,2000,100,1133,9,17834.70,17649.84,20.21 +mul,floor,2000,100,1126,9,17954.62,17738.56,20.17 +mul,gmp,2000,100,549,9,36369.51,36346.55,19.98 +mul,gmpz,2000,100,550,9,36236.50,36136.84,19.97 +sqr,auto,4,4,895656,9,22.19,22.13,19.89 +sqr,kernel,4,4,2003879,9,9.94,9.75,19.93 +sqr,floor,4,4,1215976,9,16.78,16.75,20.41 +sqr,gmp,4,4,3425135,9,5.80,5.78,19.89 +sqr,gmpz,4,4,2286989,9,8.88,8.80,20.34 +sqr,auto,16,16,300405,9,66.50,66.41,19.98 +sqr,kernel,16,16,356110,9,56.16,56.11,20.01 +sqr,floor,16,16,319929,9,63.52,63.47,20.32 +sqr,gmp,16,16,393976,9,50.61,50.14,19.91 +sqr,gmpz,16,16,371224,9,53.98,53.78,20.02 +sqr,auto,64,64,71945,9,277.63,277.18,19.99 +sqr,kernel,64,64,73118,9,273.55,273.32,20.00 +sqr,floor,64,64,71321,9,278.25,276.90,19.85 +sqr,gmp,64,64,35331,9,566.28,565.73,20.01 +sqr,gmpz,64,64,35641,9,557.87,555.84,19.91 +sqr,auto,512,512,1895,9,10554.41,10552.77,20.01 +sqr,kernel,512,512,1892,9,10589.22,10571.12,20.07 +sqr,floor,512,512,1891,9,10614.15,10597.74,20.07 +sqr,gmp,512,512,1306,9,15093.07,15077.28,19.75 +sqr,gmpz,512,512,1324,9,15097.67,15095.02,19.99 +sqr,auto,2000,2000,204,9,97919.68,97895.16,19.98 +sqr,kernel,2000,2000,204,9,98206.93,98148.01,20.04 +sqr,floor,2000,2000,205,9,97947.45,97899.36,20.08 +sqr,gmp,2000,2000,197,9,100644.94,100555.42,19.83 +sqr,gmpz,2000,2000,199,9,100602.37,100585.30,20.04 +divrem,auto,2,1,508571,9,39.24,39.16,19.96 +divrem,kernel,2,1,3432161,9,5.70,5.44,19.50 +divrem,floor,2,1,1559233,9,12.77,12.73,19.90 +divrem,gmp,2,1,2306334,9,8.68,8.67,20.02 +divrem,gmpz,2,1,1466526,9,13.68,13.60,20.06 +divrem,auto,8,4,231144,9,87.33,86.98,20.19 +divrem,kernel,8,4,463076,9,42.76,42.61,19.81 +divrem,floor,8,4,324151,9,62.43,61.84,20.24 +divrem,gmp,8,4,489090,9,41.02,40.87,20.07 +divrem,gmpz,8,4,479534,9,41.88,41.60,20.06 +divrem,auto,32,16,58617,9,340.26,339.40,19.96 +divrem,kernel,32,16,68890,9,289.26,288.83,19.93 +divrem,floor,32,16,65649,9,305.13,304.50,20.05 +divrem,gmp,32,16,104715,9,191.31,190.79,20.04 +divrem,gmpz,32,16,102640,9,195.12,194.32,20.02 +divrem,auto,128,64,6052,9,3307.64,3292.29,20.01 +divrem,kernel,128,64,6243,9,3218.12,3212.30,20.10 +divrem,floor,128,64,6173,9,3246.14,3234.99,20.03 +divrem,gmp,128,64,11628,9,1719.91,1718.60,20.01 +divrem,gmpz,128,64,11590,9,1723.23,1722.97,19.97 +divrem,auto,512,256,670,9,29667.54,29655.00,19.88 +divrem,kernel,512,256,679,9,29453.04,29430.13,20.00 +divrem,floor,512,256,678,9,29494.28,29478.68,20.00 +divrem,gmp,512,256,1231,9,16240.94,16238.87,19.99 +divrem,gmpz,512,256,1236,9,16187.11,16183.04,20.08 +divrem,auto,2000,1000,109,9,184977.00,184926.30,20.19 +divrem,kernel,2000,1000,108,9,185697.87,185564.46,20.07 +divrem,floor,2000,1000,109,9,184470.67,184293.19,20.12 +divrem,gmp,2000,1000,146,9,137819.51,137771.90,20.12 +divrem,gmpz,2000,1000,146,9,137899.75,137873.03,20.13 +divrem,auto,4000,2000,43,9,475845.93,475648.09,20.46 +divrem,kernel,4000,2000,43,9,474159.30,473951.79,20.39 +divrem,floor,4000,2000,43,9,473725.58,473641.95,20.37 +divrem,gmp,4000,2000,59,9,338293.32,337280.31,19.97 +divrem,gmpz,4000,2000,60,9,337143.95,336193.98,20.24 +divrem,auto,2000,100,139,9,144590.04,144112.33,20.11 +divrem,kernel,2000,100,137,9,146162.98,145493.50,20.02 +divrem,floor,2000,100,138,9,145364.18,145113.88,20.08 +divrem,gmp,2000,100,276,9,72693.22,72648.03,20.06 +divrem,gmpz,2000,100,276,9,72571.91,72542.45,20.03 +divrem,auto,65536,1,115,9,174373.44,174170.99,20.08 +divrem,kernel,65536,1,120,9,167086.28,166906.01,20.07 +divrem,floor,65536,1,120,9,167722.40,167271.92,20.12 +divrem,gmp,65536,1,136,9,148102.05,148096.75,20.14 +divrem,gmpz,65536,1,136,9,148110.09,148102.89,20.14 +tochars,auto,1,10,1317402,9,15.03,14.99,19.83 +tochars,kernel,1,10,322544,9,62.00,61.93,20.00 +tochars,gmp,1,10,961438,9,20.64,20.46,19.82 +tochars,gmpz,1,10,594824,9,33.77,33.65,20.10 +tochars,auto,4,10,155788,9,127.88,127.13,19.95 +tochars,kernel,4,10,107799,9,185.46,183.34,19.99 +tochars,gmp,4,10,292486,9,68.41,68.38,20.01 +tochars,gmpz,4,10,209654,9,95.45,95.29,20.01 +tochars,auto,16,10,16999,9,1169.01,1163.99,19.88 +tochars,kernel,16,10,19307,9,1030.31,1027.29,19.89 +tochars,gmp,16,10,39648,9,504.38,504.26,20.00 +tochars,gmpz,16,10,33975,9,591.98,589.65,20.10 +tochars,auto,64,10,3557,9,5614.82,5606.93,20.01 +tochars,kernel,64,10,3826,9,5227.94,5220.40,20.02 +tochars,gmp,64,10,7493,9,2670.32,2667.28,20.02 +tochars,gmpz,64,10,6755,9,2961.38,2956.03,20.00 +tochars,auto,256,10,556,9,36044.67,36027.56,20.04 +tochars,kernel,256,10,579,9,34596.69,34572.52,20.03 +tochars,gmp,256,10,1077,9,18595.42,18584.37,20.03 +tochars,gmpz,256,10,1017,9,19664.90,19649.38,20.00 +tochars,auto,2000,10,33,9,608568.36,608119.55,20.09 +tochars,kernel,2000,10,35,9,585880.17,585724.97,20.51 +tochars,gmp,2000,10,49,9,401473.59,401367.43,19.68 +tochars,gmpz,2000,10,49,9,410183.49,409930.14,20.11 +tochars,auto,16,16,185152,9,105.35,105.25,19.51 +tochars,gmp,16,16,201319,9,99.38,99.22,20.01 +tochars,gmpz,16,16,125487,9,158.52,158.48,19.90 +tochars,auto,2000,16,1677,9,11932.67,11931.58,20.12 +tochars,gmp,2000,16,1799,9,11120.43,11118.87,20.02 +tochars,gmpz,2000,16,1116,9,17923.73,17922.21,20.08 +fromchars,auto,4,10,172610,9,115.12,114.52,19.91 +fromchars,kernel,4,10,531247,9,37.54,37.43,19.93 +fromchars,gmp,4,10,639249,9,31.30,31.17,20.02 +fromchars,gmpz,4,10,302523,9,66.42,66.18,20.12 +fromchars,auto,16,10,46269,9,433.34,427.77,20.01 +fromchars,kernel,16,10,94804,9,215.47,211.74,20.50 +fromchars,gmp,16,10,160509,9,124.67,124.26,20.03 +fromchars,gmpz,16,10,77749,9,257.77,257.00,20.05 +fromchars,auto,64,10,6478,9,3154.48,3050.65,20.52 +fromchars,kernel,64,10,9371,9,2436.66,2269.71,21.92 +fromchars,gmp,64,10,22349,9,897.06,895.98,20.06 +fromchars,gmpz,64,10,14544,9,1372.52,1371.20,19.97 +fromchars,auto,256,10,677,9,31239.47,29242.84,21.25 +fromchars,kernel,256,10,688,9,30415.04,29192.92,21.30 +fromchars,gmp,256,10,2500,9,8001.93,7997.93,20.00 +fromchars,gmpz,256,10,2013,9,9938.38,9930.41,20.05 +fromchars,auto,2000,10,47,9,428831.85,428664.15,20.17 +fromchars,kernel,2000,10,50,9,405472.10,405375.00,20.29 +fromchars,gmp,2000,10,109,9,182872.49,182796.21,19.96 +fromchars,gmpz,2000,10,102,9,197703.54,197584.77,20.18 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64a_seed1b.csv b/tests/beman/big_int/perf/item1/x64r3_new64a_seed1b.csv new file mode 100644 index 00000000..0ab8028a --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_new64a_seed1b.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T17:59:49Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64a seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2964446,9,6.65,6.58,19.74 +add,inplace,1,1,2036122,9,4.91,4.91,20.00 +add,kernel,1,1,10310792,9,1.93,1.89,19.85 +add,floor,1,1,2046566,9,9.81,9.77,20.06 +add,gmp,1,1,8824158,9,2.27,2.27,20.00 +add,gmpz,1,1,4808898,9,4.16,4.16,19.98 +add,auto,2,2,1261693,9,15.83,15.74,19.95 +add,inplace,2,2,1602218,9,6.05,5.94,19.44 +add,kernel,2,2,8443196,9,2.36,2.30,19.96 +add,floor,2,2,1954529,9,10.25,10.20,20.08 +add,gmp,2,2,8818885,9,2.27,2.27,19.99 +add,gmpz,2,2,4802673,9,4.16,4.16,19.96 +add,auto,4,4,1293066,9,15.45,15.43,19.99 +add,inplace,4,4,1752313,9,5.73,5.70,20.09 +add,kernel,4,4,6574562,9,3.07,3.02,20.16 +add,floor,4,4,1794089,9,11.12,11.01,20.04 +add,gmp,4,4,7978964,9,2.49,2.49,19.86 +add,gmpz,4,4,4588719,9,4.35,4.34,20.00 +add,auto,8,8,1193828,9,16.75,16.75,20.03 +add,inplace,8,8,1410273,9,7.07,7.06,19.93 +add,kernel,8,8,4404686,9,4.53,4.53,19.98 +add,floor,8,8,1573103,9,12.61,12.53,19.84 +add,gmp,8,8,5440982,9,3.68,3.67,20.02 +add,gmpz,8,8,4312977,9,4.65,4.64,20.09 +add,auto,16,16,951721,9,21.04,20.99,20.02 +add,inplace,16,16,845007,9,11.85,11.71,19.98 +add,kernel,16,16,2646802,9,7.56,7.56,20.02 +add,floor,16,16,1293009,9,15.57,15.52,20.13 +add,gmp,16,16,3634550,9,5.50,5.50,19.99 +add,gmpz,16,16,3074272,9,6.52,6.49,20.06 +add,auto,64,64,341829,9,58.51,58.46,20.00 +add,inplace,64,64,205586,9,48.62,48.60,19.99 +add,kernel,64,64,607346,9,32.81,32.61,19.94 +add,floor,64,64,476873,9,41.77,41.08,19.89 +add,gmp,64,64,1294694,9,15.45,15.45,20.01 +add,gmpz,64,64,1157954,9,17.27,17.26,20.00 +add,auto,256,256,93522,9,213.75,213.64,19.99 +add,inplace,256,256,50928,9,196.49,196.27,20.02 +add,kernel,256,256,140547,9,142.36,142.10,20.00 +add,floor,256,256,125194,9,160.02,159.65,20.03 +add,gmp,256,256,255666,9,78.22,78.22,20.00 +add,gmpz,256,256,251535,9,79.50,79.40,19.99 +add,auto,1024,1024,25006,9,800.06,799.93,20.02 +add,inplace,1024,1024,12641,9,790.12,789.97,19.98 +add,kernel,1024,1024,34614,9,577.93,577.65,20.00 +add,floor,1024,1024,33356,9,595.21,594.86,20.12 +add,gmp,1024,1024,51068,9,391.39,391.38,19.99 +add,gmpz,1024,1024,51016,9,392.04,392.02,20.00 +add,auto,2000,2000,13028,9,1535.54,1535.35,20.04 +add,inplace,2000,2000,6562,9,1521.69,1521.50,20.00 +add,kernel,2000,2000,17676,9,1131.49,1131.43,20.00 +add,floor,2000,2000,17392,9,1149.64,1149.38,20.00 +add,gmp,2000,2000,41853,9,477.88,477.85,20.01 +add,gmpz,2000,2000,41352,9,483.61,482.00,19.98 +add,auto,1024,1,79260,9,252.24,251.89,19.99 +add,inplace,1024,1,1960766,9,5.10,5.10,20.02 +add,kernel,1024,1,34638,9,577.41,577.39,20.00 +add,floor,1024,1,33660,9,594.23,593.99,20.00 +add,gmp,1024,1,85772,9,233.04,232.66,19.98 +add,gmpz,1024,1,85469,9,234.01,233.55,19.99 +sub,auto,1,1,2582425,9,7.76,7.74,20.06 +sub,inplace,1,1,2136025,9,4.68,4.65,19.98 +sub,kernel,1,1,13233614,9,1.51,1.51,20.00 +sub,floor,1,1,10586132,9,1.89,1.89,20.00 +sub,gmp,1,1,8824034,9,2.27,2.27,20.00 +sub,gmpz,1,1,4585374,9,4.37,4.34,20.04 +sub,auto,2,2,1278989,9,15.69,15.60,20.06 +sub,inplace,2,2,1961030,9,5.11,5.10,20.04 +sub,kernel,2,2,9385710,9,2.12,2.10,19.90 +sub,floor,2,2,2002751,9,9.99,9.95,20.00 +sub,gmp,2,2,8824135,9,2.27,2.27,20.00 +sub,gmpz,2,2,4540744,9,4.34,4.34,19.74 +sub,auto,4,4,1207436,9,16.56,16.56,20.00 +sub,inplace,4,4,1788619,9,5.60,5.59,20.03 +sub,kernel,4,4,7050802,9,2.84,2.83,19.99 +sub,floor,4,4,1868867,9,10.75,10.72,20.08 +sub,gmp,4,4,8009126,9,2.50,2.50,20.00 +sub,gmpz,4,4,4366767,9,4.57,4.55,19.95 +sub,auto,8,8,1112638,9,17.98,17.96,20.00 +sub,inplace,8,8,1442180,9,6.93,6.93,20.00 +sub,kernel,8,8,4575465,9,4.36,4.36,19.98 +sub,floor,8,8,1619682,9,12.38,12.35,20.09 +sub,gmp,8,8,5424694,9,3.69,3.69,20.04 +sub,gmpz,8,8,4059855,9,4.95,4.94,20.10 +sub,auto,16,16,954370,9,20.89,20.81,19.95 +sub,inplace,16,16,902381,9,11.10,11.00,20.02 +sub,kernel,16,16,2493732,9,8.02,8.02,20.01 +sub,floor,16,16,1303668,9,15.32,15.22,19.96 +sub,gmp,16,16,3438558,9,5.81,5.81,20.00 +sub,gmpz,16,16,2930847,9,6.79,6.73,19.88 +sub,auto,64,64,340784,9,58.72,58.67,20.01 +sub,inplace,64,64,212321,9,47.09,47.08,20.00 +sub,kernel,64,64,611286,9,32.72,32.71,20.01 +sub,floor,64,64,473631,9,42.11,41.64,19.93 +sub,gmp,64,64,1282647,9,15.59,15.59,20.00 +sub,gmpz,64,64,1194684,9,16.74,16.71,20.00 +sub,auto,256,256,92725,9,215.90,215.79,20.02 +sub,inplace,256,256,51053,9,195.91,195.86,20.00 +sub,kernel,256,256,140407,9,142.87,142.44,20.07 +sub,floor,256,256,126380,9,158.14,157.89,19.98 +sub,gmp,256,256,255607,9,78.25,78.24,20.00 +sub,gmpz,256,256,250383,9,79.84,79.75,20.00 +sub,auto,1024,1024,24744,9,808.30,808.20,20.01 +sub,inplace,1024,1024,12634,9,791.54,791.50,20.00 +sub,kernel,1024,1024,34613,9,577.76,577.75,20.00 +sub,floor,1024,1024,33686,9,593.87,593.76,20.02 +sub,gmp,1024,1024,51314,9,389.77,389.75,20.05 +sub,gmpz,1024,1024,51123,9,391.21,391.18,20.00 +sub,auto,2000,2000,12917,9,1548.32,1548.15,20.00 +sub,inplace,2000,2000,6579,9,1519.97,1519.91,20.01 +sub,kernel,2000,2000,17661,9,1132.45,1132.42,20.00 +sub,floor,2000,2000,17411,9,1149.06,1148.83,20.01 +sub,gmp,2000,2000,42455,9,471.00,470.99,20.00 +sub,gmpz,2000,2000,41871,9,477.61,475.81,19.97 +sub,auto,1024,1,79072,9,252.80,252.67,19.99 +sub,inplace,1024,1,2150214,9,4.66,4.64,20.05 +sub,kernel,1024,1,34682,9,576.49,576.49,19.99 +sub,floor,1024,1,33744,9,592.62,592.50,20.00 +sub,gmp,1024,1,85718,9,233.45,233.04,20.01 +sub,gmpz,1024,1,85398,9,234.06,233.71,19.99 +shl,auto,1,13,1586041,9,12.72,12.54,20.16 +shl,inplace,1,13,2730442,9,3.67,3.66,20.05 +shl,kernel,1,13,9626531,9,2.08,2.07,19.96 +shl,kernelip,1,13,5826739,9,1.75,1.72,20.39 +shl,floor,1,13,2078060,9,9.88,9.85,20.55 +shl,gmp,1,13,9626441,9,2.08,2.08,20.01 +shl,gmpz,1,13,6048998,9,3.31,3.30,20.01 +shl,auto,4,13,1487467,9,13.45,13.41,20.02 +shl,inplace,4,13,2162594,9,4.62,4.61,20.01 +shl,kernel,4,13,4762717,9,4.17,4.14,19.97 +shl,kernelip,4,13,3323416,9,2.94,2.92,19.59 +shl,floor,4,13,1775708,9,11.26,11.23,20.07 +shl,gmp,4,13,7921389,9,2.50,2.50,19.84 +shl,gmpz,4,13,4933622,9,4.04,4.04,19.97 +shl,auto,16,13,1173368,9,17.05,17.01,20.01 +shl,inplace,16,13,1078400,9,9.10,8.99,19.63 +shl,kernel,16,13,2673299,9,7.45,7.43,19.92 +shl,kernelip,16,13,1423547,9,7.15,7.04,20.32 +shl,floor,16,13,1345542,9,15.41,15.37,20.82 +shl,gmp,16,13,4807649,9,4.18,4.15,20.11 +shl,gmpz,16,13,3439461,9,5.84,5.81,20.16 +shl,auto,256,13,163679,9,122.10,122.00,19.99 +shl,inplace,256,13,97959,9,102.27,102.09,20.03 +shl,kernel,256,13,214403,9,93.45,93.36,20.04 +shl,kernelip,256,13,102472,9,97.44,97.23,19.97 +shl,floor,256,13,179735,9,116.57,116.45,20.95 +shl,gmp,256,13,424180,9,47.13,47.10,19.99 +shl,gmpz,256,13,400041,9,49.72,49.55,19.89 +shl,auto,2000,13,25888,9,772.31,772.05,20.02 +shl,inplace,2000,13,13498,9,740.89,738.24,20.01 +shl,kernel,2000,13,27841,9,718.72,718.41,20.01 +shl,kernelip,2000,13,13982,9,715.24,715.15,20.00 +shl,floor,2000,13,27130,9,738.72,738.21,20.04 +shl,gmp,2000,13,59622,9,335.40,335.32,20.00 +shl,gmpz,2000,13,59156,9,338.07,337.83,20.00 +shl,auto,2000,77,25805,9,774.85,774.65,19.99 +shl,inplace,2000,77,13446,9,741.51,741.25,19.96 +shl,kernel,2000,77,23495,9,850.73,848.68,20.00 +shl,kernelip,2000,77,12165,9,822.09,822.03,20.02 +shl,floor,2000,77,22894,9,871.81,870.84,19.96 +shl,gmp,2000,77,59285,9,337.58,337.53,20.02 +shl,gmpz,2000,77,59131,9,338.23,338.20,20.01 +shr,auto,1,13,2439731,9,8.19,8.19,19.99 +shr,inplace,1,13,3049792,9,3.30,3.27,20.13 +shr,kernel,1,13,11755382,9,1.70,1.70,20.05 +shr,floor,1,13,8810180,9,2.27,2.27,20.00 +shr,gmp,1,13,10588825,9,1.89,1.89,20.02 +shr,gmpz,1,13,5771447,9,3.47,3.46,20.01 +shr,auto,4,13,1235547,9,16.20,16.10,20.01 +shr,inplace,4,13,2291237,9,4.33,4.32,19.86 +shr,kernel,4,13,5673403,9,3.51,3.47,19.93 +shr,floor,4,13,1793579,9,11.13,11.06,19.95 +shr,gmp,4,13,8524308,9,2.35,2.33,19.98 +shr,gmpz,4,13,5071943,9,3.97,3.95,20.12 +shr,auto,16,13,1005314,9,19.92,19.89,20.02 +shr,inplace,16,13,1150778,9,8.64,8.62,19.91 +shr,kernel,16,13,2374946,9,8.44,8.41,20.03 +shr,floor,16,13,1292133,9,15.49,15.40,20.00 +shr,gmp,16,13,4636025,9,4.32,4.31,20.04 +shr,gmpz,16,13,3207871,9,6.23,6.18,20.16 +shr,auto,256,13,160404,9,124.46,124.17,19.95 +shr,inplace,256,13,96074,9,101.71,101.57,19.55 +shr,kernel,256,13,181316,9,110.45,110.28,20.03 +shr,floor,256,13,153432,9,130.32,130.26,19.99 +shr,gmp,256,13,421732,9,47.53,47.39,20.05 +shr,gmpz,256,13,394236,9,50.66,50.46,19.97 +shr,auto,2000,13,26652,9,750.55,749.79,20.00 +shr,inplace,2000,13,13541,9,740.22,739.01,20.05 +shr,kernel,2000,13,24632,9,811.94,811.90,20.00 +shr,floor,2000,13,24062,9,831.15,831.08,20.01 +shr,gmp,2000,13,59591,9,335.61,335.54,20.00 +shr,gmpz,2000,13,59010,9,339.02,338.85,20.01 +shr,auto,2000,77,26724,9,748.97,748.20,20.02 +shr,inplace,2000,77,13566,9,740.75,740.42,20.10 +shr,kernel,2000,77,24149,9,828.17,828.14,20.00 +shr,floor,2000,77,23485,9,851.79,851.43,20.01 +shr,gmp,2000,77,59499,9,336.22,336.08,20.01 +shr,gmpz,2000,77,58775,9,340.32,340.16,20.00 +mul,auto,1,1,1223675,9,16.33,16.33,20.04 +mul,gmp,1,1,5688328,9,3.47,3.44,19.75 +mul,gmpz,1,1,5042239,9,3.97,3.97,20.04 +mul,auto,2,2,1058846,9,18.94,18.88,20.09 +mul,kernel,2,2,2809510,9,7.58,7.56,21.32 +mul,floor,2,2,1349495,9,14.98,14.89,20.25 +mul,gmp,2,2,5026608,9,3.96,3.94,19.91 +mul,gmpz,2,2,3260124,9,6.13,6.10,19.98 +mul,auto,3,3,974980,9,20.26,20.22,19.76 +mul,kernel,3,3,2382034,9,8.93,8.91,21.33 +mul,floor,3,3,1234021,9,16.39,16.33,20.23 +mul,gmp,3,3,2547055,9,7.80,7.72,19.85 +mul,gmpz,3,3,2002838,9,10.02,9.98,20.07 +mul,auto,4,4,889479,9,22.48,22.35,20.02 +mul,kernel,4,4,1836067,9,11.51,11.41,21.12 +mul,floor,4,4,1083743,9,18.65,18.57,20.22 +mul,gmp,4,4,1959644,9,10.20,10.14,19.99 +mul,gmpz,4,4,1564012,9,12.75,12.69,19.93 +mul,auto,6,6,716867,9,27.92,27.81,20.01 +mul,kernel,6,6,1216384,9,17.17,17.15,20.90 +mul,floor,6,6,819872,9,24.37,24.32,19.99 +mul,gmp,6,6,1269606,9,15.74,15.67,19.98 +mul,gmpz,6,6,1019490,9,19.65,19.58,20.04 +mul,auto,8,8,558786,9,35.83,35.71,20.03 +mul,kernel,8,8,791027,9,25.52,25.35,20.18 +mul,floor,8,8,604202,9,33.24,33.14,20.10 +mul,gmp,8,8,744507,9,26.96,26.64,20.06 +mul,gmpz,8,8,692043,9,28.81,28.67,19.94 +mul,auto,12,12,347131,9,57.64,57.58,20.01 +mul,kernel,12,12,424526,9,47.56,47.46,20.20 +mul,floor,12,12,367639,9,54.57,54.42,20.07 +mul,gmp,12,12,406829,9,49.16,49.13,20.01 +mul,gmpz,12,12,393638,9,50.78,50.76,20.08 +mul,auto,16,16,225734,9,88.65,88.58,20.03 +mul,kernel,16,16,253698,9,79.46,79.31,20.16 +mul,floor,16,16,232304,9,86.53,86.33,20.16 +mul,gmp,16,16,241678,9,82.75,82.72,20.02 +mul,gmpz,16,16,235361,9,84.98,84.94,20.00 +mul,auto,32,32,100177,9,199.52,199.04,20.00 +mul,kernel,32,32,107030,9,188.38,187.95,20.18 +mul,floor,32,32,101218,9,197.56,196.71,19.97 +mul,gmp,32,32,73277,9,269.46,267.72,19.77 +mul,gmpz,32,32,74065,9,270.02,269.97,20.00 +mul,auto,64,64,40027,9,498.23,495.17,19.92 +mul,kernel,64,64,41422,9,483.88,481.70,20.05 +mul,floor,64,64,40467,9,492.20,490.55,19.92 +mul,gmp,64,64,22310,9,887.01,881.20,19.82 +mul,gmpz,64,64,22994,9,867.49,864.45,19.94 +mul,auto,128,128,11619,9,1717.53,1715.74,19.97 +mul,kernel,128,128,11820,9,1693.61,1692.03,20.06 +mul,floor,128,128,11746,9,1706.53,1702.57,20.10 +mul,gmp,128,128,7234,9,2737.62,2726.13,19.84 +mul,gmpz,128,128,7213,9,2769.35,2766.34,19.99 +mul,auto,256,256,3235,9,6176.66,6170.37,19.98 +mul,kernel,256,256,3255,9,6146.88,6131.20,20.02 +mul,floor,256,256,3254,9,6152.33,6146.34,20.02 +mul,gmp,256,256,2526,9,7809.66,7757.34,19.76 +mul,gmpz,256,256,2581,9,7731.96,7725.21,19.97 +mul,auto,512,512,1044,9,19160.53,19152.54,20.03 +mul,kernel,512,512,1043,9,19236.46,19223.01,20.06 +mul,floor,512,512,1041,9,19214.12,19201.91,20.01 +mul,gmp,512,512,952,9,20814.43,20782.41,19.82 +mul,gmpz,512,512,964,9,20784.90,20767.85,20.06 +mul,auto,1000,1000,335,9,59843.07,59795.49,20.06 +mul,kernel,1000,1000,337,9,59513.10,59467.26,20.06 +mul,floor,1000,1000,334,9,59631.03,59620.13,19.92 +mul,gmp,1000,1000,373,9,53341.36,53327.01,19.96 +mul,gmpz,1000,1000,375,9,53470.43,53444.86,20.05 +mul,auto,2000,2000,113,9,177105.39,177065.04,20.02 +mul,kernel,2000,2000,114,9,176102.89,175949.34,20.07 +mul,floor,2000,2000,114,9,176521.53,176360.92,20.12 +mul,gmp,2000,2000,139,9,143999.49,143971.20,20.02 +mul,gmpz,2000,2000,139,9,144072.75,143981.53,20.03 +mul,auto,2000,100,1134,9,17650.25,17645.95,20.02 +mul,kernel,2000,100,1133,9,17675.11,17666.49,20.03 +mul,floor,2000,100,1132,9,17675.38,17669.09,20.01 +mul,gmp,2000,100,547,9,36166.19,36032.16,19.83 +mul,gmpz,2000,100,555,9,36041.88,36025.75,20.01 +sqr,auto,4,4,902287,9,22.16,22.07,19.99 +sqr,kernel,4,4,2020126,9,9.94,9.86,20.10 +sqr,floor,4,4,1205589,9,16.81,16.78,20.26 +sqr,gmp,4,4,3442933,9,5.81,5.78,20.01 +sqr,gmpz,4,4,2274288,9,8.84,8.75,20.13 +sqr,auto,16,16,301439,9,66.41,66.29,20.03 +sqr,kernel,16,16,356968,9,56.05,56.01,20.01 +sqr,floor,16,16,320554,9,62.43,62.36,20.02 +sqr,gmp,16,16,395586,9,49.83,49.78,19.73 +sqr,gmpz,16,16,383971,9,52.11,52.08,20.01 +sqr,auto,64,64,71805,9,277.33,276.34,19.90 +sqr,kernel,64,64,72669,9,275.39,275.12,20.01 +sqr,floor,64,64,70627,9,283.48,282.33,20.01 +sqr,gmp,64,64,35707,9,559.32,553.25,19.90 +sqr,gmpz,64,64,36186,9,552.26,551.23,19.99 +sqr,auto,512,512,1896,9,10558.87,10552.94,20.03 +sqr,kernel,512,512,1894,9,10560.98,10551.45,20.00 +sqr,floor,512,512,1893,9,10591.83,10584.11,20.05 +sqr,gmp,512,512,1323,9,15126.49,15118.11,20.03 +sqr,gmpz,512,512,1325,9,15101.53,15094.32,20.01 +sqr,auto,2000,2000,204,9,98426.27,98393.88,20.08 +sqr,kernel,2000,2000,204,9,98482.74,98391.67,20.14 +sqr,floor,2000,2000,204,9,98327.17,98307.09,20.08 +sqr,gmp,2000,2000,199,9,100611.54,100575.95,20.02 +sqr,gmpz,2000,2000,199,9,100630.21,100581.59,20.02 +divrem,auto,2,1,505528,9,39.47,39.25,19.92 +divrem,kernel,2,1,3505453,9,5.72,5.58,20.07 +divrem,floor,2,1,1552477,9,12.90,12.87,20.04 +divrem,gmp,2,1,2302376,9,8.68,8.67,19.98 +divrem,gmpz,2,1,1516757,9,13.17,13.15,19.98 +divrem,auto,8,4,232283,9,87.00,86.56,20.21 +divrem,kernel,8,4,468974,9,42.82,42.52,20.05 +divrem,floor,8,4,309930,9,64.64,64.37,20.06 +divrem,gmp,8,4,502427,9,40.10,40.04,20.17 +divrem,gmpz,8,4,478947,9,41.54,41.37,19.92 +divrem,auto,32,16,58766,9,341.50,340.77,20.07 +divrem,kernel,32,16,68985,9,288.98,288.85,19.96 +divrem,floor,32,16,65546,9,305.26,304.06,19.99 +divrem,gmp,32,16,102722,9,191.60,191.11,19.73 +divrem,gmpz,32,16,100076,9,200.63,199.05,20.05 +divrem,auto,128,64,6072,9,3293.97,3291.08,20.01 +divrem,kernel,128,64,6060,9,3302.53,3300.28,20.02 +divrem,floor,128,64,6242,9,3208.45,3203.73,20.03 +divrem,gmp,128,64,11562,9,1729.88,1728.56,20.00 +divrem,gmpz,128,64,11610,9,1722.07,1721.21,19.99 +divrem,auto,512,256,683,9,29685.31,29399.42,20.23 +divrem,kernel,512,256,675,9,29618.81,29615.11,19.99 +divrem,floor,512,256,669,9,29896.67,29879.14,20.00 +divrem,gmp,512,256,1230,9,16267.05,16264.68,20.01 +divrem,gmpz,512,256,1227,9,16303.74,16301.47,20.00 +divrem,auto,2000,1000,108,9,185632.79,185505.42,20.05 +divrem,kernel,2000,1000,109,9,183912.63,183864.06,20.07 +divrem,floor,2000,1000,109,9,184042.07,183958.39,20.07 +divrem,gmp,2000,1000,146,9,137794.93,137776.38,20.13 +divrem,gmpz,2000,1000,146,9,137782.92,137757.03,20.18 +divrem,auto,4000,2000,43,9,474942.05,474821.88,20.43 +divrem,kernel,4000,2000,42,9,474623.52,474298.45,19.95 +divrem,floor,4000,2000,42,9,479127.17,477166.12,20.10 +divrem,gmp,4000,2000,59,9,335421.78,333823.07,19.81 +divrem,gmpz,4000,2000,60,9,334573.93,334159.75,20.08 +divrem,auto,2000,100,141,9,143011.59,142810.28,20.17 +divrem,kernel,2000,100,141,9,142625.72,142284.67,20.12 +divrem,floor,2000,100,141,9,142607.39,142258.40,20.12 +divrem,gmp,2000,100,276,9,72623.04,72586.46,20.06 +divrem,gmpz,2000,100,275,9,72742.10,72726.37,20.01 +divrem,auto,65536,1,116,9,173737.63,173227.72,20.15 +divrem,kernel,65536,1,120,9,167315.89,167187.48,20.09 +divrem,floor,65536,1,119,9,168848.58,168511.95,20.09 +divrem,gmp,65536,1,136,9,148101.05,148091.52,20.16 +divrem,gmpz,65536,1,136,9,148115.32,148107.93,20.15 +tochars,auto,1,10,1327387,9,15.03,14.99,19.95 +tochars,kernel,1,10,322261,9,62.04,61.89,20.02 +tochars,gmp,1,10,965523,9,20.71,20.63,20.02 +tochars,gmpz,1,10,587832,9,33.97,33.84,19.96 +tochars,auto,4,10,155385,9,128.65,127.66,19.97 +tochars,kernel,4,10,110060,9,182.80,180.29,20.10 +tochars,gmp,4,10,287493,9,69.58,69.49,20.00 +tochars,gmpz,4,10,208827,9,95.80,95.71,20.01 +tochars,auto,16,10,17141,9,1168.63,1161.13,20.02 +tochars,kernel,16,10,19310,9,1031.29,1028.98,19.95 +tochars,gmp,16,10,39542,9,505.76,505.58,20.01 +tochars,gmpz,16,10,33884,9,590.66,588.35,20.04 +tochars,auto,64,10,3560,9,5615.18,5603.18,19.99 +tochars,kernel,64,10,3825,9,5228.96,5217.13,20.00 +tochars,gmp,64,10,7463,9,2681.18,2677.12,20.02 +tochars,gmpz,64,10,6744,9,2965.84,2963.93,20.01 +tochars,auto,256,10,558,9,35851.03,35842.40,20.01 +tochars,kernel,256,10,579,9,34534.57,34511.50,20.00 +tochars,gmp,256,10,1078,9,18570.43,18538.99,20.03 +tochars,gmpz,256,10,1017,9,19664.08,19658.65,20.01 +tochars,auto,2000,10,33,9,607493.64,607102.30,20.06 +tochars,kernel,2000,10,35,9,584360.80,584029.40,20.45 +tochars,gmp,2000,10,50,9,400672.16,400516.20,20.04 +tochars,gmpz,2000,10,49,9,409127.20,408867.00,20.05 +tochars,auto,16,16,189827,9,105.40,105.20,20.07 +tochars,gmp,16,16,201399,9,99.27,99.14,20.00 +tochars,gmpz,16,16,126163,9,158.65,158.50,20.03 +tochars,auto,2000,16,1678,9,11921.22,11919.25,20.00 +tochars,gmp,2000,16,1801,9,11110.96,11110.62,20.01 +tochars,gmpz,2000,16,1117,9,17922.99,17920.66,20.02 +fromchars,auto,4,10,173565,9,115.22,114.55,20.03 +fromchars,kernel,4,10,531771,9,37.56,37.48,19.99 +fromchars,gmp,4,10,637458,9,31.28,31.06,19.90 +fromchars,gmpz,4,10,301616,9,66.36,66.17,20.03 +fromchars,auto,16,10,45988,9,433.45,431.48,19.97 +fromchars,kernel,16,10,93395,9,215.49,211.83,20.15 +fromchars,gmp,16,10,159894,9,124.83,124.32,19.96 +fromchars,gmpz,16,10,77191,9,257.87,257.11,19.93 +fromchars,auto,64,10,6625,9,3082.05,2986.03,20.48 +fromchars,kernel,64,10,9584,9,2402.41,2111.41,22.05 +fromchars,gmp,64,10,22736,9,879.40,878.49,20.00 +fromchars,gmpz,64,10,14770,9,1354.25,1352.94,20.01 +fromchars,auto,256,10,651,9,30439.83,28278.63,19.77 +fromchars,kernel,256,10,780,9,29381.36,27595.75,22.89 +fromchars,gmp,256,10,2489,9,8020.65,8008.72,19.97 +fromchars,gmpz,256,10,2004,9,9991.62,9984.55,20.04 +fromchars,auto,2000,10,48,9,426913.12,426109.21,20.50 +fromchars,kernel,2000,10,50,9,405652.10,405240.04,20.29 +fromchars,gmp,2000,10,110,9,182675.95,182644.75,20.09 +fromchars,gmpz,2000,10,102,9,197879.96,197847.51,20.20 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64a_seed2a.csv b/tests/beman/big_int/perf/item1/x64r3_new64a_seed2a.csv new file mode 100644 index 00000000..477300bd --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_new64a_seed2a.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T18:04:36Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64a seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2978951,9,6.62,6.55,19.72 +add,inplace,1,1,2036082,9,4.91,4.89,19.99 +add,kernel,1,1,10300526,9,1.93,1.90,19.91 +add,floor,1,1,2053807,9,9.79,9.74,20.08 +add,gmp,1,1,8824143,9,2.27,2.27,20.07 +add,gmpz,1,1,4813035,9,4.16,4.16,20.02 +add,auto,2,2,1270530,9,15.81,15.72,20.09 +add,inplace,2,2,1670035,9,6.05,5.91,20.28 +add,kernel,2,2,8429094,9,2.39,2.31,20.09 +add,floor,2,2,1963084,9,10.26,10.21,20.15 +add,gmp,2,2,8824206,9,2.27,2.27,20.00 +add,gmpz,2,2,4813063,9,4.16,4.16,20.00 +add,auto,4,4,1297942,9,15.41,15.40,20.02 +add,inplace,4,4,1753317,9,5.72,5.70,20.05 +add,kernel,4,4,6579025,9,3.07,3.04,20.19 +add,floor,4,4,1823311,9,11.12,10.97,20.23 +add,gmp,4,4,8018441,9,2.49,2.49,19.94 +add,gmpz,4,4,4594246,9,4.35,4.34,19.98 +add,auto,8,8,1193545,9,16.75,16.75,20.01 +add,inplace,8,8,1411680,9,7.09,7.07,20.02 +add,kernel,8,8,4412053,9,4.53,4.53,20.04 +add,floor,8,8,1602266,9,12.52,12.39,20.03 +add,gmp,8,8,5434667,9,3.68,3.68,20.00 +add,gmpz,8,8,4305215,9,4.66,4.65,20.07 +add,auto,16,16,911350,9,21.96,21.90,20.01 +add,inplace,16,16,754337,9,13.23,13.20,20.00 +add,kernel,16,16,2647203,9,7.56,7.55,20.00 +add,floor,16,16,1307240,9,15.39,15.35,20.12 +add,gmp,16,16,3634431,9,5.50,5.50,19.99 +add,gmpz,16,16,3069645,9,6.54,6.51,20.10 +add,auto,64,64,347732,9,57.61,57.51,20.07 +add,inplace,64,64,208064,9,48.07,48.05,20.00 +add,kernel,64,64,604578,9,32.74,32.62,19.81 +add,floor,64,64,480831,9,41.85,41.25,20.11 +add,gmp,64,64,1294686,9,15.45,15.45,20.00 +add,gmpz,64,64,1211907,9,16.49,16.46,19.97 +add,auto,256,256,93800,9,213.21,213.15,20.00 +add,inplace,256,256,51109,9,195.68,195.65,20.09 +add,kernel,256,256,140374,9,142.39,142.15,19.99 +add,floor,256,256,125571,9,159.35,159.20,20.01 +add,gmp,256,256,255693,9,78.24,78.22,20.02 +add,gmpz,256,256,251719,9,79.46,79.36,20.00 +add,auto,1024,1024,24991,9,800.27,800.22,20.00 +add,inplace,1024,1024,12659,9,790.14,790.02,20.03 +add,kernel,1024,1024,34607,9,577.82,577.55,20.00 +add,floor,1024,1024,33636,9,594.54,594.41,20.00 +add,gmp,1024,1024,51214,9,390.51,390.45,20.00 +add,gmpz,1024,1024,51104,9,391.36,391.34,20.02 +add,auto,2000,2000,13031,9,1534.80,1534.65,20.01 +add,inplace,2000,2000,6578,9,1520.05,1520.01,20.00 +add,kernel,2000,2000,17665,9,1132.31,1132.25,20.01 +add,floor,2000,2000,17384,9,1150.56,1150.03,20.01 +add,gmp,2000,2000,44022,9,454.38,454.32,20.01 +add,gmpz,2000,2000,42408,9,471.57,469.80,19.97 +add,auto,1024,1,78283,9,252.43,252.01,19.80 +add,inplace,1024,1,1962045,9,5.10,5.09,20.01 +add,kernel,1024,1,34603,9,577.40,577.38,19.99 +add,floor,1024,1,33674,9,593.89,593.82,20.00 +add,gmp,1024,1,85883,9,232.69,232.64,19.98 +add,gmpz,1024,1,85479,9,233.95,233.55,19.99 +sub,auto,1,1,2577575,9,7.76,7.74,20.01 +sub,inplace,1,1,2138063,9,4.69,4.67,20.04 +sub,kernel,1,1,13236403,9,1.51,1.51,20.03 +sub,floor,1,1,10588884,9,1.89,1.89,20.01 +sub,gmp,1,1,8822803,9,2.27,2.27,20.03 +sub,gmpz,1,1,4600464,9,4.34,4.34,20.00 +sub,auto,2,2,1279620,9,15.67,15.60,20.07 +sub,inplace,2,2,1953301,9,5.09,5.08,19.91 +sub,kernel,2,2,9449646,9,2.10,2.08,19.88 +sub,floor,2,2,2027427,9,9.95,9.90,20.17 +sub,gmp,2,2,8823272,9,2.27,2.27,20.05 +sub,gmpz,2,2,4603805,9,4.34,4.34,20.04 +sub,auto,4,4,1202434,9,16.57,16.56,19.95 +sub,inplace,4,4,1787423,9,5.59,5.59,20.02 +sub,kernel,4,4,7054382,9,2.84,2.83,20.02 +sub,floor,4,4,1877854,9,10.72,10.70,20.14 +sub,gmp,4,4,8012237,9,2.50,2.50,20.01 +sub,gmpz,4,4,4321323,9,4.57,4.53,19.74 +sub,auto,8,8,1109854,9,17.97,17.96,19.95 +sub,inplace,8,8,1436644,9,6.95,6.95,19.98 +sub,kernel,8,8,4516504,9,4.36,4.36,19.72 +sub,floor,8,8,1639261,9,12.26,12.23,20.09 +sub,gmp,8,8,5425181,9,3.69,3.69,20.00 +sub,gmpz,8,8,4041305,9,4.96,4.93,20.04 +sub,auto,16,16,927523,9,21.59,21.44,20.04 +sub,inplace,16,16,913665,9,11.01,10.92,20.12 +sub,kernel,16,16,2677618,9,7.46,7.46,19.99 +sub,floor,16,16,1277530,9,15.34,15.22,19.59 +sub,gmp,16,16,2950945,9,6.78,6.78,20.01 +sub,gmpz,16,16,2937610,9,6.80,6.78,19.98 +sub,auto,64,64,336935,9,59.24,59.11,19.95 +sub,inplace,64,64,212335,9,47.10,47.08,20.00 +sub,kernel,64,64,611590,9,32.70,32.69,20.00 +sub,floor,64,64,469796,9,42.67,42.57,20.04 +sub,gmp,64,64,1294741,9,15.45,15.45,20.00 +sub,gmpz,64,64,1194452,9,16.74,16.71,20.03 +sub,auto,256,256,92640,9,215.89,215.85,20.00 +sub,inplace,256,256,50801,9,195.89,195.84,19.91 +sub,kernel,256,256,140414,9,142.47,142.44,20.01 +sub,floor,256,256,126241,9,158.33,158.09,20.00 +sub,gmp,256,256,255612,9,78.25,78.24,20.01 +sub,gmpz,256,256,250404,9,79.88,79.83,20.01 +sub,auto,1024,1024,22935,9,871.56,871.12,19.99 +sub,inplace,1024,1024,10911,9,927.37,915.91,20.26 +sub,kernel,1024,1024,34616,9,577.77,577.75,20.01 +sub,floor,1024,1024,33675,9,593.89,593.75,20.01 +sub,gmp,1024,1024,51247,9,390.21,390.20,20.00 +sub,gmpz,1024,1024,51036,9,391.80,391.75,20.07 +sub,auto,2000,2000,12910,9,1549.22,1549.04,20.02 +sub,inplace,2000,2000,6579,9,1520.00,1519.94,20.00 +sub,kernel,2000,2000,17670,9,1131.85,1131.81,20.00 +sub,floor,2000,2000,17405,9,1148.98,1148.73,20.00 +sub,gmp,2000,2000,41605,9,479.17,479.15,19.94 +sub,gmpz,2000,2000,41310,9,484.10,482.73,20.01 +sub,auto,1024,1,79006,9,253.12,252.66,19.99 +sub,inplace,1024,1,2052317,9,4.88,4.87,20.11 +sub,kernel,1024,1,34691,9,576.51,576.50,20.00 +sub,floor,1024,1,33746,9,592.68,592.56,20.01 +sub,gmp,1024,1,85926,9,232.76,232.73,20.00 +sub,gmpz,1024,1,85488,9,233.91,233.49,19.99 +shl,auto,1,13,1606746,9,12.61,12.49,20.28 +shl,inplace,1,13,2727876,9,3.67,3.65,20.01 +shl,kernel,1,13,9674667,9,2.08,2.07,20.07 +shl,kernelip,1,13,5666556,9,1.74,1.70,19.76 +shl,floor,1,13,2079145,9,9.82,9.81,20.43 +shl,gmp,1,13,9625974,9,2.08,2.08,20.01 +shl,gmpz,1,13,6110876,9,3.27,3.27,20.02 +shl,auto,4,13,1486851,9,13.45,13.40,20.00 +shl,inplace,4,13,2164470,9,4.61,4.60,19.97 +shl,kernel,4,13,5654042,9,3.51,3.49,19.87 +shl,kernelip,4,13,3383201,9,2.94,2.92,19.94 +shl,floor,4,13,1774940,9,11.21,11.19,19.90 +shl,gmp,4,13,7988309,9,2.50,2.50,19.99 +shl,gmpz,4,13,4935714,9,4.04,4.04,19.98 +shl,auto,16,13,1172991,9,17.07,17.00,20.01 +shl,inplace,16,13,1098985,9,9.08,8.97,19.99 +shl,kernel,16,13,2671536,9,7.49,7.49,20.01 +shl,kernelip,16,13,1396881,9,7.11,7.02,19.83 +shl,floor,16,13,1337224,9,15.21,15.21,20.39 +shl,gmp,16,13,4806594,9,4.15,4.14,19.97 +shl,gmpz,16,13,3428214,9,5.82,5.81,20.00 +shl,auto,256,13,163730,9,122.14,121.97,20.00 +shl,inplace,256,13,97475,9,102.75,102.71,20.04 +shl,kernel,256,13,213754,9,93.41,93.34,19.97 +shl,kernelip,256,13,102632,9,97.42,97.23,19.99 +shl,floor,256,13,179528,9,116.48,116.38,20.91 +shl,gmp,256,13,424362,9,47.22,47.11,20.03 +shl,gmpz,256,13,397844,9,49.94,49.84,19.87 +shl,auto,2000,13,25723,9,772.66,772.39,19.88 +shl,inplace,2000,13,13557,9,740.65,737.00,20.07 +shl,kernel,2000,13,27834,9,718.59,718.49,20.02 +shl,kernelip,2000,13,13986,9,715.24,715.11,20.01 +shl,floor,2000,13,27135,9,739.11,738.64,20.06 +shl,gmp,2000,13,59629,9,335.38,335.33,20.03 +shl,gmpz,2000,13,59177,9,338.02,337.71,20.02 +shl,auto,2000,77,25813,9,774.85,774.68,20.05 +shl,inplace,2000,77,13489,9,741.55,740.69,20.00 +shl,kernel,2000,77,23533,9,850.97,848.34,20.02 +shl,kernelip,2000,77,12166,9,822.04,822.01,20.01 +shl,floor,2000,77,22958,9,872.55,871.88,20.04 +shl,gmp,2000,77,59286,9,337.55,337.53,20.01 +shl,gmpz,2000,77,59049,9,338.81,338.64,20.03 +shr,auto,1,13,2435139,9,8.19,8.18,19.95 +shr,inplace,1,13,3002954,9,3.30,3.26,19.82 +shr,kernel,1,13,11756892,9,1.70,1.70,20.04 +shr,floor,1,13,8823122,9,2.27,2.27,20.00 +shr,gmp,1,13,10588892,9,1.89,1.89,20.05 +shr,gmpz,1,13,5771528,9,3.47,3.46,20.00 +shr,auto,4,13,1247189,9,16.03,15.98,20.00 +shr,inplace,4,13,2286062,9,4.38,4.34,20.01 +shr,kernel,4,13,5700916,9,3.49,3.47,19.85 +shr,floor,4,13,1780707,9,11.23,11.19,20.00 +shr,gmp,4,13,8656280,9,2.32,2.31,20.15 +shr,gmpz,4,13,5027927,9,3.98,3.95,20.03 +shr,auto,16,13,1005413,9,19.93,19.91,20.08 +shr,inplace,16,13,1153254,9,8.66,8.63,19.99 +shr,kernel,16,13,2368385,9,8.43,8.40,19.98 +shr,floor,16,13,1289178,9,15.60,15.42,20.08 +shr,gmp,16,13,4660104,9,4.29,4.29,20.11 +shr,gmpz,16,13,3129106,9,6.24,6.16,19.58 +shr,auto,256,13,159094,9,125.48,125.43,19.99 +shr,inplace,256,13,98516,9,101.63,101.42,20.02 +shr,kernel,256,13,181338,9,110.42,110.27,20.03 +shr,floor,256,13,153496,9,130.31,130.13,20.01 +shr,gmp,256,13,415437,9,48.00,47.78,19.95 +shr,gmpz,256,13,393864,9,50.63,50.42,19.94 +shr,auto,2000,13,26504,9,750.32,749.79,19.95 +shr,inplace,2000,13,13529,9,739.96,736.44,20.01 +shr,kernel,2000,13,24617,9,812.64,812.41,20.01 +shr,floor,2000,13,24044,9,832.10,831.77,20.01 +shr,gmp,2000,13,59583,9,335.62,335.51,20.02 +shr,gmpz,2000,13,58999,9,338.97,338.90,20.00 +shr,auto,2000,77,26656,9,750.74,750.10,20.03 +shr,inplace,2000,77,13514,9,739.87,738.63,20.00 +shr,kernel,2000,77,24117,9,829.38,829.26,20.01 +shr,floor,2000,77,23488,9,850.51,850.22,19.98 +shr,gmp,2000,77,59467,9,336.30,336.09,20.00 +shr,gmpz,2000,77,58985,9,339.04,338.97,20.00 +mul,auto,1,1,1226032,9,16.35,16.31,20.03 +mul,gmp,1,1,5950666,9,3.34,3.28,19.89 +mul,gmpz,1,1,5042274,9,3.97,3.97,20.04 +mul,auto,2,2,1064801,9,18.88,18.70,20.10 +mul,kernel,2,2,2753669,9,7.63,7.58,21.01 +mul,floor,2,2,1339569,9,15.19,15.10,20.35 +mul,gmp,2,2,5217217,9,3.83,3.82,19.98 +mul,gmpz,2,2,3269332,9,6.11,6.06,19.98 +mul,auto,3,3,981898,9,20.30,20.17,19.95 +mul,kernel,3,3,2238111,9,9.24,9.14,20.67 +mul,floor,3,3,1214046,9,16.64,16.59,20.21 +mul,gmp,3,3,2538155,9,7.80,7.71,19.77 +mul,gmpz,3,3,2004208,9,9.99,9.96,20.02 +mul,auto,4,4,893640,9,22.43,22.27,20.03 +mul,kernel,4,4,1931467,9,10.91,10.90,21.11 +mul,floor,4,4,1104836,9,18.32,18.28,20.29 +mul,gmp,4,4,2066044,9,9.67,9.66,19.99 +mul,gmpz,4,4,1649464,9,12.16,12.12,20.08 +mul,auto,6,6,714870,9,27.89,27.76,19.92 +mul,kernel,6,6,1216657,9,17.15,17.14,20.88 +mul,floor,6,6,820016,9,24.40,24.37,20.02 +mul,gmp,6,6,1264344,9,15.77,15.67,19.96 +mul,gmpz,6,6,1110946,9,18.05,17.89,20.05 +mul,auto,8,8,553607,9,35.66,35.44,19.74 +mul,kernel,8,8,808064,9,25.48,25.31,20.58 +mul,floor,8,8,613814,9,32.53,32.47,19.98 +mul,gmp,8,8,736045,9,27.01,26.95,19.88 +mul,gmpz,8,8,695250,9,29.00,28.74,20.16 +mul,auto,12,12,346515,9,57.75,57.73,20.02 +mul,kernel,12,12,426321,9,48.54,48.42,20.71 +mul,floor,12,12,362891,9,54.97,54.68,19.94 +mul,gmp,12,12,411875,9,48.57,48.55,20.02 +mul,gmpz,12,12,384696,9,52.00,51.98,20.02 +mul,auto,16,16,225619,9,88.50,88.45,19.97 +mul,kernel,16,16,252942,9,79.25,79.15,20.05 +mul,floor,16,16,230449,9,87.33,86.88,20.11 +mul,gmp,16,16,244186,9,81.91,81.87,20.01 +mul,gmpz,16,16,237960,9,84.07,84.03,20.01 +mul,auto,32,32,99881,9,199.59,199.14,19.94 +mul,kernel,32,32,107190,9,188.62,188.53,20.23 +mul,floor,32,32,102022,9,196.44,195.85,20.04 +mul,gmp,32,32,73315,9,270.27,268.59,19.84 +mul,gmpz,32,32,73917,9,269.74,269.72,19.95 +mul,auto,64,64,40294,9,495.25,494.48,19.96 +mul,kernel,64,64,39732,9,491.89,490.62,19.54 +mul,floor,64,64,39364,9,508.14,507.67,20.02 +mul,gmp,64,64,22902,9,869.20,860.55,19.89 +mul,gmpz,64,64,23226,9,861.27,859.57,20.01 +mul,auto,128,128,11560,9,1726.86,1725.05,19.99 +mul,kernel,128,128,11432,9,1716.73,1713.92,19.62 +mul,floor,128,128,11354,9,1759.24,1757.55,19.98 +mul,gmp,128,128,7230,9,2757.05,2723.18,19.88 +mul,gmpz,128,128,7366,9,2715.27,2714.64,20.03 +mul,auto,256,256,3214,9,6200.68,6195.02,19.93 +mul,kernel,256,256,3236,9,6142.48,6135.32,19.93 +mul,floor,256,256,3228,9,6196.55,6187.80,20.02 +mul,gmp,256,256,2496,9,7925.19,7880.44,19.80 +mul,gmpz,256,256,2547,9,7853.41,7848.69,20.00 +mul,auto,512,512,1041,9,19196.84,19184.14,20.00 +mul,kernel,512,512,1046,9,19129.71,19110.77,20.01 +mul,floor,512,512,1045,9,19164.72,19139.82,20.02 +mul,gmp,512,512,954,9,20851.78,20828.22,19.93 +mul,gmpz,512,512,959,9,20846.04,20836.45,19.99 +mul,auto,1000,1000,336,9,59647.14,59533.43,20.06 +mul,kernel,1000,1000,335,9,59733.90,59651.04,20.02 +mul,floor,1000,1000,336,9,59671.33,59620.19,20.05 +mul,gmp,1000,1000,373,9,53491.57,53480.07,19.96 +mul,gmpz,1000,1000,374,9,53556.80,53532.65,20.03 +mul,auto,2000,2000,114,9,176860.41,176707.64,20.17 +mul,kernel,2000,2000,114,9,176342.11,176196.44,20.13 +mul,floor,2000,2000,114,9,176213.56,176039.79,20.09 +mul,gmp,2000,2000,139,9,144188.32,144123.40,20.10 +mul,gmpz,2000,2000,139,9,144222.81,144155.16,20.05 +mul,auto,2000,100,1133,9,17656.69,17650.02,20.00 +mul,kernel,2000,100,1128,9,17702.67,17700.07,19.97 +mul,floor,2000,100,1127,9,17752.62,17749.51,20.01 +mul,gmp,2000,100,548,9,36165.78,35896.66,19.82 +mul,gmpz,2000,100,559,9,35875.11,35782.18,20.06 +sqr,auto,4,4,887101,9,22.21,22.11,19.69 +sqr,kernel,4,4,2015843,9,9.98,9.84,20.08 +sqr,floor,4,4,1219206,9,16.78,16.75,20.48 +sqr,gmp,4,4,3033936,9,6.55,6.53,19.87 +sqr,gmpz,4,4,2157459,9,9.41,9.29,20.30 +sqr,auto,16,16,294035,9,68.03,67.95,20.01 +sqr,kernel,16,16,356933,9,56.10,56.01,20.02 +sqr,floor,16,16,320275,9,64.86,64.69,20.77 +sqr,gmp,16,16,395445,9,49.85,49.80,19.75 +sqr,gmpz,16,16,383125,9,52.18,52.15,20.01 +sqr,auto,64,64,71550,9,274.85,274.46,19.68 +sqr,kernel,64,64,65718,9,304.29,303.85,20.00 +sqr,floor,64,64,65269,9,305.08,304.50,19.91 +sqr,gmp,64,64,35514,9,559.55,555.50,19.87 +sqr,gmpz,64,64,35864,9,555.52,553.39,19.93 +sqr,auto,512,512,1890,9,10558.87,10553.37,19.96 +sqr,kernel,512,512,1898,9,10533.04,10524.79,19.99 +sqr,floor,512,512,1893,9,10570.49,10567.14,20.01 +sqr,gmp,512,512,1330,9,15039.42,15028.77,20.01 +sqr,gmpz,512,512,1327,9,15067.84,15063.54,20.00 +sqr,auto,2000,2000,204,9,98077.00,98020.49,20.01 +sqr,kernel,2000,2000,205,9,97633.24,97589.05,20.01 +sqr,floor,2000,2000,204,9,98142.90,98105.17,20.05 +sqr,gmp,2000,2000,199,9,100645.78,100578.46,20.03 +sqr,gmpz,2000,2000,199,9,100599.17,100542.67,20.03 +divrem,auto,2,1,638045,9,31.59,31.50,20.19 +divrem,kernel,2,1,3558055,9,5.75,5.58,20.56 +divrem,floor,2,1,1569700,9,12.79,12.75,20.09 +divrem,gmp,2,1,2985603,9,6.70,6.70,20.01 +divrem,gmpz,2,1,1707975,9,11.75,11.70,20.06 +divrem,auto,8,4,206779,9,97.64,97.11,20.19 +divrem,kernel,8,4,348109,9,57.10,56.79,19.92 +divrem,floor,8,4,272675,9,74.14,73.76,20.21 +divrem,gmp,8,4,457425,9,43.77,43.53,20.03 +divrem,gmpz,8,4,418120,9,47.95,47.89,20.05 +divrem,auto,32,16,58593,9,339.12,338.24,19.87 +divrem,kernel,32,16,69263,9,289.31,288.74,20.05 +divrem,floor,32,16,65601,9,305.24,304.96,20.04 +divrem,gmp,32,16,105559,9,189.20,188.53,19.97 +divrem,gmpz,32,16,104088,9,192.46,191.52,20.02 +divrem,auto,128,64,5861,9,3409.06,3407.15,19.98 +divrem,kernel,128,64,5893,9,3394.47,3393.32,20.03 +divrem,floor,128,64,6220,9,3216.79,3216.04,20.02 +divrem,gmp,128,64,11645,9,1718.75,1717.21,20.06 +divrem,gmpz,128,64,11579,9,1721.79,1721.66,19.94 +divrem,auto,512,256,691,9,29155.29,29101.96,20.15 +divrem,kernel,512,256,682,9,29360.82,29346.65,20.03 +divrem,floor,512,256,681,9,29395.38,29376.73,20.02 +divrem,gmp,512,256,1231,9,16261.26,16256.19,20.02 +divrem,gmpz,512,256,1229,9,16272.57,16269.38,20.01 +divrem,auto,2000,1000,109,9,185658.99,185229.87,20.24 +divrem,kernel,2000,1000,109,9,184585.21,184452.82,20.13 +divrem,floor,2000,1000,109,9,184623.49,184528.36,20.12 +divrem,gmp,2000,1000,145,9,138180.45,138156.04,20.04 +divrem,gmpz,2000,1000,145,9,138049.69,138038.47,20.03 +divrem,auto,4000,2000,43,9,474346.35,473612.56,20.39 +divrem,kernel,4000,2000,43,9,474294.79,474143.63,20.39 +divrem,floor,4000,2000,42,9,476518.21,476370.10,20.03 +divrem,gmp,4000,2000,60,9,333725.30,332526.40,20.01 +divrem,gmpz,4000,2000,61,9,332844.51,332746.00,20.31 +divrem,auto,2000,100,140,9,142430.36,142313.34,19.96 +divrem,kernel,2000,100,141,9,141728.69,141160.52,20.00 +divrem,floor,2000,100,142,9,141371.90,141208.99,20.10 +divrem,gmp,2000,100,277,9,72364.08,72328.51,20.05 +divrem,gmpz,2000,100,278,9,72093.95,72081.37,20.06 +divrem,auto,65536,1,115,9,174187.94,174110.66,20.04 +divrem,kernel,65536,1,120,9,167197.21,166997.86,20.07 +divrem,floor,65536,1,119,9,167743.85,167429.68,19.96 +divrem,gmp,65536,1,136,9,148098.83,148094.18,20.15 +divrem,gmpz,65536,1,136,9,148121.62,148112.24,20.15 +tochars,auto,1,10,1357324,9,14.80,14.74,20.08 +tochars,kernel,1,10,313741,9,63.79,63.71,20.02 +tochars,gmp,1,10,1010039,9,19.61,19.49,19.81 +tochars,gmpz,1,10,591240,9,33.97,33.78,20.08 +tochars,auto,4,10,141218,9,140.21,139.86,19.85 +tochars,kernel,4,10,109569,9,182.17,180.82,19.99 +tochars,gmp,4,10,266842,9,74.95,74.86,20.04 +tochars,gmpz,4,10,201457,9,99.17,98.94,20.02 +tochars,auto,16,10,17145,9,1167.69,1164.14,20.02 +tochars,kernel,16,10,19527,9,1033.14,1028.42,20.18 +tochars,gmp,16,10,39619,9,503.09,502.94,19.93 +tochars,gmpz,16,10,33847,9,589.61,588.00,19.96 +tochars,auto,64,10,3564,9,5613.13,5605.74,20.02 +tochars,kernel,64,10,3816,9,5246.87,5234.91,20.01 +tochars,gmp,64,10,7529,9,2657.68,2654.63,20.05 +tochars,gmpz,64,10,6770,9,2949.29,2946.83,19.98 +tochars,auto,256,10,558,9,35891.24,35859.90,20.05 +tochars,kernel,256,10,577,9,34736.77,34704.50,20.04 +tochars,gmp,256,10,1078,9,18547.03,18530.25,19.99 +tochars,gmpz,256,10,1016,9,19660.90,19644.57,19.97 +tochars,auto,2000,10,33,9,609489.61,609211.36,20.12 +tochars,kernel,2000,10,34,9,585338.26,585016.09,19.90 +tochars,gmp,2000,10,51,9,399868.90,399466.12,20.39 +tochars,gmpz,2000,10,49,9,408373.57,408181.27,20.04 +tochars,auto,16,16,192160,9,103.32,103.07,19.86 +tochars,gmp,16,16,208058,9,96.14,96.05,20.01 +tochars,gmpz,16,16,127991,9,155.90,155.53,19.95 +tochars,auto,2000,16,1678,9,11919.39,11917.82,20.01 +tochars,gmp,2000,16,1801,9,11111.72,11110.12,20.01 +tochars,gmpz,2000,16,1116,9,17924.19,17921.44,20.00 +fromchars,auto,4,10,170801,9,116.14,115.86,19.85 +fromchars,kernel,4,10,517381,9,38.90,38.78,20.12 +fromchars,gmp,4,10,625297,9,32.14,32.00,20.10 +fromchars,gmpz,4,10,289560,9,69.82,69.06,20.16 +fromchars,auto,16,10,46706,9,430.80,426.69,20.11 +fromchars,kernel,16,10,92560,9,218.76,211.17,20.17 +fromchars,gmp,16,10,161241,9,124.01,123.86,19.98 +fromchars,gmpz,16,10,78617,9,254.55,254.13,20.05 +fromchars,auto,64,10,6856,9,3169.44,2850.27,21.39 +fromchars,kernel,64,10,9356,9,2398.25,2207.33,21.57 +fromchars,gmp,64,10,22149,9,903.29,902.80,20.01 +fromchars,gmpz,64,10,14346,9,1390.87,1389.81,19.96 +fromchars,auto,256,10,640,9,31831.81,29968.17,20.28 +fromchars,kernel,256,10,728,9,29584.46,26379.06,20.29 +fromchars,gmp,256,10,2447,9,8169.62,8161.94,20.00 +fromchars,gmpz,256,10,1994,9,10032.50,10025.73,20.00 +fromchars,auto,2000,10,48,9,427271.50,426671.75,20.51 +fromchars,kernel,2000,10,50,9,405808.84,405734.02,20.31 +fromchars,gmp,2000,10,110,9,182547.48,182417.65,20.08 +fromchars,gmpz,2000,10,102,9,197317.05,197274.28,20.13 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64a_seed2b.csv b/tests/beman/big_int/perf/item1/x64r3_new64a_seed2b.csv new file mode 100644 index 00000000..0bd94e5e --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r3_new64a_seed2b.csv @@ -0,0 +1,400 @@ +# gap_sweep date 2026-10-06T18:09:23Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64a seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2999362,9,6.70,6.55,20.09 +add,inplace,1,1,2035934,9,4.91,4.91,20.00 +add,kernel,1,1,10398907,9,1.92,1.90,20.09 +add,floor,1,1,2045496,9,9.82,9.79,20.07 +add,gmp,1,1,8824186,9,2.27,2.27,20.02 +add,gmpz,1,1,4812991,9,4.16,4.16,20.01 +add,auto,2,2,1256718,9,15.89,15.82,19.98 +add,inplace,2,2,1645573,9,6.03,5.95,19.89 +add,kernel,2,2,8225091,9,2.43,2.32,20.03 +add,floor,2,2,1956301,9,10.30,10.21,20.15 +add,gmp,2,2,8824030,9,2.27,2.27,20.00 +add,gmpz,2,2,4813158,9,4.16,4.16,20.00 +add,auto,4,4,1293666,9,15.41,15.41,19.94 +add,inplace,4,4,1743605,9,5.72,5.71,19.97 +add,kernel,4,4,6426391,9,3.05,3.02,19.59 +add,floor,4,4,1781820,9,11.15,11.09,19.87 +add,gmp,4,4,7933827,9,2.52,2.52,20.02 +add,gmpz,4,4,4596324,9,4.35,4.35,20.05 +add,auto,8,8,1193687,9,16.75,16.75,20.00 +add,inplace,8,8,1413567,9,7.09,7.07,20.04 +add,kernel,8,8,4395164,9,4.53,4.53,19.94 +add,floor,8,8,1608327,9,12.55,12.51,20.19 +add,gmp,8,8,5436300,9,3.68,3.67,20.00 +add,gmpz,8,8,4282535,9,4.66,4.64,19.95 +add,auto,16,16,956067,9,20.98,20.94,20.06 +add,inplace,16,16,849935,9,11.84,11.70,20.11 +add,kernel,16,16,2647191,9,7.56,7.55,20.02 +add,floor,16,16,1288806,9,15.53,15.46,20.01 +add,gmp,16,16,3541958,9,5.65,5.64,20.01 +add,gmpz,16,16,3073153,9,6.54,6.50,20.06 +add,auto,64,64,345492,9,57.79,57.74,19.97 +add,inplace,64,64,208113,9,48.07,48.06,20.01 +add,kernel,64,64,609086,9,32.86,32.57,20.01 +add,floor,64,64,451997,9,44.28,44.13,20.01 +add,gmp,64,64,1294672,9,15.45,15.42,20.00 +add,gmpz,64,64,1212861,9,16.49,16.46,19.99 +add,auto,256,256,93985,9,213.02,212.72,20.04 +add,inplace,256,256,51103,9,195.69,195.63,20.00 +add,kernel,256,256,140790,9,142.22,142.10,20.03 +add,floor,256,256,125678,9,159.13,159.02,20.00 +add,gmp,256,256,251606,9,79.50,79.48,20.04 +add,gmpz,256,256,251570,9,79.51,79.40,20.00 +add,auto,1024,1024,24724,9,800.17,800.07,19.84 +add,inplace,1024,1024,12654,9,790.17,790.02,20.00 +add,kernel,1024,1024,34621,9,577.88,577.74,20.01 +add,floor,1024,1024,33623,9,594.84,594.73,20.00 +add,gmp,1024,1024,50980,9,391.93,391.67,19.98 +add,gmpz,1024,1024,50892,9,393.01,392.98,20.01 +add,auto,2000,2000,13033,9,1534.64,1534.50,20.00 +add,inplace,2000,2000,6576,9,1520.88,1520.81,20.01 +add,kernel,2000,2000,17679,9,1131.33,1131.30,20.02 +add,floor,2000,2000,17380,9,1150.91,1150.53,20.02 +add,gmp,2000,2000,42404,9,471.79,471.65,20.02 +add,gmpz,2000,2000,43250,9,462.43,460.43,20.00 +add,auto,1024,1,79279,9,252.37,251.97,20.01 +add,inplace,1024,1,1961380,9,5.10,5.09,20.02 +add,kernel,1024,1,34637,9,577.44,577.42,20.00 +add,floor,1024,1,33674,9,593.93,593.82,20.00 +add,gmp,1024,1,85909,9,232.88,232.78,20.02 +add,gmpz,1024,1,85470,9,234.15,234.03,20.03 +sub,auto,1,1,2545053,9,7.75,7.74,19.78 +sub,inplace,1,1,2156824,9,4.68,4.67,20.18 +sub,kernel,1,1,13231398,9,1.51,1.51,19.99 +sub,floor,1,1,10588937,9,1.89,1.89,20.02 +sub,gmp,1,1,8824172,9,2.27,2.27,20.00 +sub,gmpz,1,1,4603812,9,4.34,4.34,20.00 +sub,auto,2,2,1276109,9,15.78,15.68,20.16 +sub,inplace,2,2,1937183,9,5.11,5.10,19.85 +sub,kernel,2,2,9529523,9,2.11,2.10,20.22 +sub,floor,2,2,2019922,9,10.00,9.93,20.16 +sub,gmp,2,2,8824215,9,2.27,2.27,20.01 +sub,gmpz,2,2,4602675,9,4.34,4.34,20.03 +sub,auto,4,4,1206252,9,16.59,16.58,20.02 +sub,inplace,4,4,1788161,9,5.59,5.59,20.04 +sub,kernel,4,4,7052696,9,2.84,2.84,20.00 +sub,floor,4,4,1872212,9,10.75,10.69,20.14 +sub,gmp,4,4,8008491,9,2.50,2.50,20.00 +sub,gmpz,4,4,4369845,9,4.57,4.56,20.00 +sub,auto,8,8,1113467,9,17.97,17.96,20.01 +sub,inplace,8,8,1438439,9,6.95,6.95,20.01 +sub,kernel,8,8,4591462,9,4.36,4.35,20.04 +sub,floor,8,8,1628391,9,12.35,12.30,20.10 +sub,gmp,8,8,5425394,9,3.69,3.69,20.01 +sub,gmpz,8,8,4021691,9,4.97,4.95,19.99 +sub,auto,16,16,951489,9,21.01,20.86,19.97 +sub,inplace,16,16,911433,9,11.01,10.96,20.07 +sub,kernel,16,16,2662977,9,7.51,7.51,20.01 +sub,floor,16,16,1307183,9,15.35,15.30,20.08 +sub,gmp,16,16,3339667,9,5.99,5.98,20.00 +sub,gmpz,16,16,2960042,9,6.80,6.76,20.11 +sub,auto,64,64,341047,9,58.60,58.55,19.98 +sub,inplace,64,64,212327,9,47.10,47.08,20.08 +sub,kernel,64,64,611723,9,32.71,32.70,20.03 +sub,floor,64,64,465091,9,42.93,42.88,19.99 +sub,gmp,64,64,1286482,9,15.55,15.55,20.00 +sub,gmpz,64,64,1136309,9,17.60,17.58,20.00 +sub,auto,256,256,92648,9,215.90,215.72,20.00 +sub,inplace,256,256,51052,9,195.88,195.79,20.01 +sub,kernel,256,256,140305,9,142.46,142.44,20.00 +sub,floor,256,256,126482,9,158.20,158.09,20.01 +sub,gmp,256,256,255608,9,78.24,78.24,20.00 +sub,gmpz,256,256,250487,9,79.84,79.74,20.00 +sub,auto,1024,1024,24732,9,808.66,808.43,20.01 +sub,inplace,1024,1024,12635,9,791.51,791.47,20.02 +sub,kernel,1024,1024,34617,9,577.76,577.75,20.00 +sub,floor,1024,1024,33686,9,593.85,593.77,20.01 +sub,gmp,1024,1024,51314,9,389.77,389.75,20.01 +sub,gmpz,1024,1024,51125,9,391.20,391.15,20.00 +sub,auto,2000,2000,12913,9,1549.03,1548.82,20.04 +sub,inplace,2000,2000,6566,9,1519.99,1519.93,19.98 +sub,kernel,2000,2000,17675,9,1131.59,1131.50,20.02 +sub,floor,2000,2000,17418,9,1148.56,1148.17,20.01 +sub,gmp,2000,2000,41518,9,481.68,481.65,20.00 +sub,gmpz,2000,2000,41301,9,484.44,483.07,19.99 +sub,auto,1024,1,78974,9,252.95,252.57,19.98 +sub,inplace,1024,1,2049547,9,4.89,4.87,20.08 +sub,kernel,1024,1,34688,9,576.49,576.49,20.00 +sub,floor,1024,1,33648,9,594.21,593.99,19.99 +sub,gmp,1024,1,85906,9,232.82,232.78,20.00 +sub,gmpz,1024,1,85429,9,234.06,233.66,19.99 +shl,auto,1,13,1605653,9,12.61,12.48,20.25 +shl,inplace,1,13,2733692,9,3.67,3.65,20.03 +shl,kernel,1,13,9674415,9,2.07,2.05,20.01 +shl,kernelip,1,13,5752051,9,1.75,1.72,20.15 +shl,floor,1,13,2069336,9,9.83,9.82,20.35 +shl,gmp,1,13,9625814,9,2.08,2.08,20.02 +shl,gmpz,1,13,6110898,9,3.27,3.27,20.00 +shl,auto,4,13,1489878,9,13.41,13.37,20.00 +shl,inplace,4,13,2163241,9,4.62,4.61,20.00 +shl,kernel,4,13,5724717,9,3.51,3.48,20.07 +shl,kernelip,4,13,3416069,9,2.94,2.91,20.08 +shl,floor,4,13,1775196,9,11.21,11.19,19.91 +shl,gmp,4,13,7865231,9,2.50,2.50,19.69 +shl,gmpz,4,13,4920409,9,4.04,4.04,19.91 +shl,auto,16,13,1178854,9,17.04,16.99,20.10 +shl,inplace,16,13,1083379,9,9.08,8.98,19.67 +shl,kernel,16,13,2663697,9,7.49,7.47,19.96 +shl,kernelip,16,13,1433324,9,7.12,7.00,20.40 +shl,floor,16,13,1334896,9,15.24,15.23,20.36 +shl,gmp,16,13,4819799,9,4.19,4.14,20.16 +shl,gmpz,16,13,3431573,9,5.84,5.81,20.06 +shl,auto,256,13,163922,9,122.24,122.07,20.10 +shl,inplace,256,13,96818,9,102.71,102.28,19.88 +shl,kernel,256,13,214168,9,93.37,93.25,19.99 +shl,kernelip,256,13,102614,9,97.43,97.29,19.99 +shl,floor,256,13,179537,9,116.45,116.38,20.92 +shl,gmp,256,13,423810,9,47.22,47.17,20.01 +shl,gmpz,256,13,394928,9,50.69,50.47,20.01 +shl,auto,2000,13,25892,9,772.64,772.22,20.01 +shl,inplace,2000,13,13486,9,740.74,738.78,19.96 +shl,kernel,2000,13,27779,9,718.54,718.36,19.98 +shl,kernelip,2000,13,13983,9,715.24,715.17,20.00 +shl,floor,2000,13,27183,9,739.01,738.36,20.10 +shl,gmp,2000,13,59611,9,335.60,335.48,20.00 +shl,gmpz,2000,13,59195,9,338.04,337.84,20.01 +shl,auto,2000,77,25805,9,775.06,774.83,20.00 +shl,inplace,2000,77,13485,9,741.51,741.37,20.00 +shl,kernel,2000,77,23477,9,849.53,848.50,19.95 +shl,kernelip,2000,77,12166,9,822.03,822.02,20.06 +shl,floor,2000,77,22960,9,872.06,870.67,20.02 +shl,gmp,2000,77,59287,9,337.53,337.53,20.01 +shl,gmpz,2000,77,58954,9,338.44,338.18,19.96 +shr,auto,1,13,2439368,9,8.19,8.19,20.00 +shr,inplace,1,13,3089975,9,3.28,3.25,20.28 +shr,kernel,1,13,11756393,9,1.70,1.70,20.00 +shr,floor,1,13,8824230,9,2.27,2.27,20.01 +shr,gmp,1,13,10589014,9,1.89,1.89,20.03 +shr,gmpz,1,13,5771095,9,3.47,3.46,20.00 +shr,auto,4,13,1252128,9,16.08,16.00,20.20 +shr,inplace,4,13,2291154,9,4.36,4.34,20.01 +shr,kernel,4,13,5630194,9,3.49,3.47,19.65 +shr,floor,4,13,1801205,9,11.13,11.06,20.05 +shr,gmp,4,13,8656692,9,2.35,2.32,20.32 +shr,gmpz,4,13,5083916,9,3.97,3.95,20.18 +shr,auto,16,13,1002174,9,19.93,19.90,20.01 +shr,inplace,16,13,1148790,9,8.66,8.63,19.91 +shr,kernel,16,13,2366677,9,8.46,8.44,20.03 +shr,floor,16,13,1301350,9,15.43,15.35,20.08 +shr,gmp,16,13,4635188,9,4.31,4.31,20.00 +shr,gmpz,16,13,3210771,9,6.31,6.23,20.47 +shr,auto,256,13,146685,9,136.55,136.04,20.03 +shr,inplace,256,13,98427,9,101.68,101.60,20.03 +shr,kernel,256,13,181323,9,110.33,110.27,20.01 +shr,floor,256,13,153267,9,130.40,130.32,19.99 +shr,gmp,256,13,419560,9,47.89,47.52,20.08 +shr,gmpz,256,13,396510,9,50.61,50.51,20.07 +shr,auto,2000,13,26690,9,750.53,749.68,20.04 +shr,inplace,2000,13,13546,9,739.50,738.63,20.04 +shr,kernel,2000,13,24634,9,811.93,811.91,20.00 +shr,floor,2000,13,23898,9,832.25,831.94,19.89 +shr,gmp,2000,13,59579,9,335.67,335.55,20.00 +shr,gmpz,2000,13,58782,9,340.31,340.09,20.08 +shr,auto,2000,77,26540,9,750.93,750.48,19.94 +shr,inplace,2000,77,13512,9,740.03,739.74,20.00 +shr,kernel,2000,77,24094,9,830.12,830.09,20.01 +shr,floor,2000,77,23442,9,853.28,852.98,20.00 +shr,gmp,2000,77,59439,9,336.22,336.03,19.98 +shr,gmpz,2000,77,58982,9,339.03,338.99,20.00 +mul,auto,1,1,1204777,9,16.57,16.50,19.96 +mul,gmp,1,1,5943135,9,3.37,3.34,20.03 +mul,gmpz,1,1,5042269,9,3.97,3.97,20.04 +mul,auto,2,2,1058002,9,18.92,18.82,19.99 +mul,kernel,2,2,2831841,9,7.60,7.56,21.54 +mul,floor,2,2,1350883,9,14.98,14.85,20.23 +mul,gmp,2,2,5210937,9,3.83,3.81,19.94 +mul,gmpz,2,2,3271108,9,6.10,6.07,19.98 +mul,auto,3,3,990441,9,20.21,20.16,20.01 +mul,kernel,3,3,2398985,9,8.96,8.91,21.54 +mul,floor,3,3,1236122,9,16.44,16.33,20.29 +mul,gmp,3,3,2563600,9,7.83,7.76,20.18 +mul,gmpz,3,3,1997579,9,10.00,9.96,19.98 +mul,auto,4,4,901198,9,22.35,22.17,20.14 +mul,kernel,4,4,1925812,9,11.37,11.33,21.91 +mul,floor,4,4,1113159,9,18.28,18.17,20.33 +mul,gmp,4,4,2064684,9,9.68,9.66,20.00 +mul,gmpz,4,4,1640829,9,12.20,12.16,20.03 +mul,auto,6,6,715267,9,27.91,27.80,19.95 +mul,kernel,6,6,1216664,9,17.19,17.14,20.90 +mul,floor,6,6,822020,9,24.37,24.33,20.04 +mul,gmp,6,6,1268148,9,15.71,15.68,19.93 +mul,gmpz,6,6,1102860,9,18.03,17.96,19.93 +mul,auto,8,8,560276,9,35.68,35.43,19.97 +mul,kernel,8,8,810240,9,25.47,25.21,20.63 +mul,floor,8,8,615215,9,32.38,32.27,19.92 +mul,gmp,8,8,739779,9,27.10,26.94,20.07 +mul,gmpz,8,8,694643,9,29.02,28.73,20.19 +mul,auto,12,12,346876,9,57.72,57.69,20.02 +mul,kernel,12,12,426535,9,47.36,47.26,20.21 +mul,floor,12,12,369153,9,54.59,54.43,20.15 +mul,gmp,12,12,402770,9,49.66,49.64,20.00 +mul,gmpz,12,12,393990,9,50.75,50.75,20.00 +mul,auto,16,16,226041,9,88.38,88.34,19.98 +mul,kernel,16,16,256005,9,78.59,78.53,20.12 +mul,floor,16,16,232110,9,86.39,86.24,20.07 +mul,gmp,16,16,240761,9,82.83,82.81,19.94 +mul,gmpz,16,16,215183,9,92.63,91.75,19.92 +mul,auto,32,32,99515,9,200.65,200.18,19.99 +mul,kernel,32,32,107109,9,188.56,188.15,20.22 +mul,floor,32,32,101922,9,195.90,195.00,19.97 +mul,gmp,32,32,71242,9,276.41,275.61,19.70 +mul,gmpz,32,32,68982,9,289.94,289.86,20.05 +mul,auto,64,64,40522,9,492.35,490.93,19.95 +mul,kernel,64,64,41641,9,484.28,482.73,20.16 +mul,floor,64,64,40883,9,489.17,488.98,20.00 +mul,gmp,64,64,22909,9,864.58,860.44,19.83 +mul,gmpz,64,64,23275,9,859.42,857.97,20.01 +mul,auto,128,128,11610,9,1722.19,1721.51,20.00 +mul,kernel,128,128,11815,9,1697.97,1695.59,20.06 +mul,floor,128,128,11748,9,1703.51,1701.44,20.02 +mul,gmp,128,128,7198,9,2761.78,2739.24,19.88 +mul,gmpz,128,128,7349,9,2710.67,2709.53,19.93 +mul,auto,256,256,3221,9,6212.35,6207.67,20.01 +mul,kernel,256,256,3252,9,6163.70,6160.10,20.07 +mul,floor,256,256,3247,9,6161.59,6158.75,20.01 +mul,gmp,256,256,2513,9,7864.35,7826.28,19.82 +mul,gmpz,256,256,2564,9,7798.91,7794.28,20.00 +mul,auto,512,512,1034,9,19369.37,19362.41,20.05 +mul,kernel,512,512,1038,9,19354.03,19336.87,20.14 +mul,floor,512,512,1037,9,19314.78,19307.31,20.04 +mul,gmp,512,512,948,9,20883.51,20878.26,19.81 +mul,gmpz,512,512,960,9,20845.17,20830.48,20.05 +mul,auto,1000,1000,335,9,59750.78,59713.01,20.02 +mul,kernel,1000,1000,337,9,59539.75,59496.04,20.07 +mul,floor,1000,1000,337,9,59550.21,59503.48,20.07 +mul,gmp,1000,1000,371,9,53522.63,53514.37,19.87 +mul,gmpz,1000,1000,375,9,53404.12,53386.70,20.05 +mul,auto,2000,2000,114,9,176347.90,176188.49,20.11 +mul,kernel,2000,2000,113,9,177652.98,177591.73,20.08 +mul,floor,2000,2000,113,9,177509.90,177367.21,20.06 +mul,gmp,2000,2000,139,9,144056.35,144044.20,20.03 +mul,gmpz,2000,2000,139,9,144173.60,144099.44,20.04 +mul,auto,2000,100,1133,9,17662.92,17659.45,20.01 +mul,kernel,2000,100,1132,9,17672.75,17668.19,20.01 +mul,floor,2000,100,1132,9,17682.62,17678.88,20.03 +mul,gmp,2000,100,547,9,36228.31,36076.04,19.91 +mul,gmpz,2000,100,556,9,35920.65,35900.76,19.97 +sqr,auto,4,4,895757,9,22.31,22.21,19.96 +sqr,kernel,4,4,2013807,9,9.93,9.86,20.02 +sqr,floor,4,4,1218222,9,16.78,16.75,20.44 +sqr,gmp,4,4,3438067,9,5.82,5.78,20.00 +sqr,gmpz,4,4,2264127,9,8.82,8.75,19.98 +sqr,auto,16,16,301858,9,66.34,66.32,20.03 +sqr,kernel,16,16,349522,9,57.19,57.15,19.99 +sqr,floor,16,16,319742,9,63.33,63.26,20.28 +sqr,gmp,16,16,397464,9,49.83,49.79,19.85 +sqr,gmpz,16,16,383625,9,52.09,52.06,19.98 +sqr,auto,64,64,71923,9,277.87,277.39,19.99 +sqr,kernel,64,64,73087,9,273.14,272.83,19.96 +sqr,floor,64,64,71408,9,277.88,276.59,19.85 +sqr,gmp,64,64,35703,9,555.35,551.00,19.84 +sqr,gmpz,64,64,36272,9,551.30,550.63,20.05 +sqr,auto,512,512,1890,9,10585.15,10572.53,20.02 +sqr,kernel,512,512,1889,9,10590.42,10586.56,20.01 +sqr,floor,512,512,1888,9,10589.36,10583.20,19.99 +sqr,gmp,512,512,1323,9,15099.82,15082.86,19.99 +sqr,gmpz,512,512,1326,9,15101.96,15088.36,20.02 +sqr,auto,2000,2000,200,9,100478.60,100149.88,20.09 +sqr,kernel,2000,2000,203,9,98626.55,98606.61,20.03 +sqr,floor,2000,2000,203,9,98760.94,98722.80,20.05 +sqr,gmp,2000,2000,199,9,100606.39,100571.65,20.04 +sqr,gmpz,2000,2000,199,9,100646.45,100585.96,20.03 +divrem,auto,2,1,637761,9,31.35,31.28,20.01 +divrem,kernel,2,1,3421178,9,5.72,5.56,19.45 +divrem,floor,2,1,1564195,9,12.77,12.75,19.98 +divrem,gmp,2,1,2985091,9,6.70,6.70,20.00 +divrem,gmpz,2,1,1725579,9,11.63,11.55,20.04 +divrem,auto,8,4,207662,9,97.13,96.69,20.17 +divrem,kernel,8,4,373838,9,53.58,53.36,20.05 +divrem,floor,8,4,277634,9,72.11,71.80,20.03 +divrem,gmp,8,4,456481,9,43.70,43.52,19.95 +divrem,gmpz,8,4,433976,9,45.99,45.94,19.98 +divrem,auto,32,16,58937,9,339.02,338.75,19.99 +divrem,kernel,32,16,68981,9,288.94,288.56,19.96 +divrem,floor,32,16,64858,9,307.56,306.67,19.96 +divrem,gmp,32,16,104548,9,191.22,190.37,19.98 +divrem,gmpz,32,16,103927,9,192.55,192.15,20.03 +divrem,auto,128,64,6061,9,3295.08,3293.44,19.98 +divrem,kernel,128,64,6256,9,3201.38,3196.64,20.04 +divrem,floor,128,64,6238,9,3210.61,3207.45,20.02 +divrem,gmp,128,64,11390,9,1755.21,1754.18,20.00 +divrem,gmpz,128,64,11394,9,1754.56,1754.01,20.00 +divrem,auto,512,256,685,9,29396.27,29293.44,20.12 +divrem,kernel,512,256,690,9,28971.96,28949.60,19.99 +divrem,floor,512,256,690,9,28990.86,28961.93,20.01 +divrem,gmp,512,256,1228,9,16222.78,16217.50,19.97 +divrem,gmpz,512,256,1235,9,16202.95,16200.60,20.01 +divrem,auto,2000,1000,109,9,185168.46,184921.06,20.18 +divrem,kernel,2000,1000,109,9,184850.28,184737.40,20.17 +divrem,floor,2000,1000,108,9,184945.93,184825.68,19.97 +divrem,gmp,2000,1000,145,9,137992.93,137979.06,20.01 +divrem,gmpz,2000,1000,145,9,138175.48,138157.34,20.04 +divrem,auto,4000,2000,43,9,476876.44,476357.28,20.50 +divrem,kernel,4000,2000,43,9,473364.37,473293.70,20.36 +divrem,floor,4000,2000,43,9,473370.14,473106.88,20.38 +divrem,gmp,4000,2000,60,9,333426.13,332441.55,20.01 +divrem,gmpz,4000,2000,61,9,332181.02,331984.08,20.27 +divrem,auto,2000,100,141,9,142081.74,141685.47,20.03 +divrem,kernel,2000,100,141,9,141923.83,141666.28,20.01 +divrem,floor,2000,100,142,9,141263.35,141090.37,20.08 +divrem,gmp,2000,100,276,9,72645.63,72626.40,20.06 +divrem,gmpz,2000,100,277,9,72275.98,72243.77,20.11 +divrem,auto,65536,1,115,9,174548.60,174346.45,20.08 +divrem,kernel,65536,1,120,9,167482.71,167255.02,20.10 +divrem,floor,65536,1,120,9,168242.05,168026.77,20.18 +divrem,gmp,65536,1,136,9,148102.46,148093.07,20.14 +divrem,gmpz,65536,1,135,9,148110.86,148100.36,20.00 +tochars,auto,1,10,1350322,9,14.75,14.73,19.95 +tochars,kernel,1,10,313605,9,63.80,63.69,20.00 +tochars,gmp,1,10,1007234,9,19.88,19.80,20.02 +tochars,gmpz,1,10,586825,9,33.93,33.72,19.89 +tochars,auto,4,10,142718,9,140.10,138.05,19.99 +tochars,kernel,4,10,110059,9,182.28,181.56,20.06 +tochars,gmp,4,10,279992,9,71.45,71.35,20.00 +tochars,gmpz,4,10,202847,9,98.61,98.54,20.01 +tochars,auto,16,10,17174,9,1168.35,1162.17,20.06 +tochars,kernel,16,10,19329,9,1028.02,1025.65,19.89 +tochars,gmp,16,10,39762,9,503.12,503.01,20.01 +tochars,gmpz,16,10,33757,9,592.14,588.66,20.04 +tochars,auto,64,10,3554,9,5627.73,5620.50,20.00 +tochars,kernel,64,10,3814,9,5238.68,5234.47,19.98 +tochars,gmp,64,10,7517,9,2656.93,2653.44,19.98 +tochars,gmpz,64,10,6794,9,2946.06,2943.46,20.02 +tochars,auto,256,10,556,9,36045.62,36016.91,20.04 +tochars,kernel,256,10,576,9,34727.76,34625.93,20.00 +tochars,gmp,256,10,1076,9,18588.26,18580.65,20.00 +tochars,gmpz,256,10,1017,9,19673.05,19643.39,20.01 +tochars,auto,2000,10,33,9,609583.64,609383.03,20.12 +tochars,kernel,2000,10,35,9,587731.89,587391.09,20.57 +tochars,gmp,2000,10,51,9,400063.45,399851.27,20.40 +tochars,gmpz,2000,10,49,9,409462.82,409087.84,20.07 +tochars,auto,16,16,193389,9,103.30,103.22,19.98 +tochars,gmp,16,16,205924,9,97.30,96.51,20.02 +tochars,gmpz,16,16,127599,9,156.73,156.60,20.00 +tochars,auto,2000,16,1677,9,11931.35,11929.93,20.01 +tochars,gmp,2000,16,1800,9,11111.16,11110.37,20.01 +tochars,gmpz,2000,16,1116,9,17925.95,17920.67,20.01 +fromchars,auto,4,10,172616,9,116.39,115.89,20.08 +fromchars,kernel,4,10,515595,9,38.72,38.68,20.01 +fromchars,gmp,4,10,623953,9,31.99,31.92,19.98 +fromchars,gmpz,4,10,282312,9,69.16,69.06,19.55 +fromchars,auto,16,10,46301,9,430.00,427.56,19.96 +fromchars,kernel,16,10,93057,9,217.19,211.35,20.16 +fromchars,gmp,16,10,161908,9,123.60,123.50,20.01 +fromchars,gmpz,16,10,78627,9,255.96,254.23,20.11 +fromchars,auto,64,10,7214,9,3046.76,2975.37,21.65 +fromchars,kernel,64,10,8600,9,2324.29,2234.86,20.14 +fromchars,gmp,64,10,21966,9,912.03,910.29,20.03 +fromchars,gmpz,64,10,14210,9,1409.19,1407.81,20.04 +fromchars,auto,256,10,637,9,31228.55,29594.66,19.80 +fromchars,kernel,256,10,638,9,29694.91,28325.09,19.34 +fromchars,gmp,256,10,2482,9,8076.05,8070.30,20.10 +fromchars,gmpz,256,10,1992,9,10011.13,9990.94,19.95 +fromchars,auto,2000,10,48,9,426609.29,424902.50,20.47 +fromchars,kernel,2000,10,50,9,405536.58,405324.58,20.29 +fromchars,gmp,2000,10,110,9,182606.07,182537.25,20.10 +fromchars,gmpz,2000,10,102,9,197611.50,197555.64,20.17 diff --git a/tests/beman/big_int/perf/item1_frontend_results.md b/tests/beman/big_int/perf/item1_frontend_results.md index 5e68ebdf..02a4c838 100644 --- a/tests/beman/big_int/perf/item1_frontend_results.md +++ b/tests/beman/big_int/perf/item1_frontend_results.md @@ -8,7 +8,7 @@ SPDX-License-Identifier: BSL-1.0 Item 1 of [`gmp_gap_analysis.md`](gmp_gap_analysis.md) section 6 targeted the 13-18 ns that `+ - << >>` add on top of the span kernel at <= 16 limbs, the ~21 ns for small `*`, and the 37-66 ns for small divrem. This document records what changed, how it was measured, and where the targets were and were not met. Numbers are nanoseconds per operation unless noted; -"before" is the library at cf1cf54 and "after" is `opt_1` at 9145b4e, both measured with the same harness (`shape_sweep.cpp`, +"before" is the library at cf1cf54 and "after" is `opt_1` at d689f75, both measured with the same harness (`shape_sweep.cpp`, with the `floor` row added). The inline-capacity decision is left to the reader: the study in section 7 reports costs and benefits without recommending a default. @@ -22,12 +22,13 @@ benefits without recommending a default. value-initialisation at run time (a debug build poison-fills new blocks, a constant evaluation value-initialises). The multiply and divide dispatchers no longer require a pre-zeroed result; the zero-fill moved into the tiers that need it, so the basecase no longer pays two fills. `clear_inline_tail` keeps the "inline limbs above the count are zero" invariant. -- **add and sub.** `add_in_place` and `add_into` use the tail-aware `add_n_tail`/`sub_n_tail` (4-way unrolled, stops once the +- **add and sub.** `add_in_place` and `add_into` use the tail-aware `add_n_tail`/`sub_n_tail` (a plain loop under GCC, 4-way unrolled under clang and MSVC; both stop once the carry or borrow dies), grow only for the carry limb, set sign and size once, and write the result with direct stores into - `storage_for_overwrite` storage: no zero re-scan, no one-step trim. + `storage_for_overwrite` storage: no zero re-scan, no one-step trim. Single-limb operands take a fast path. - **Shifts.** `c = a << s` and `c = a >> s` build the result from the source in one pass (`lshift_copy`/`rshift_copy`) into an exactly sized buffer; `<<=` and `>>=` shift in one in-place pass without reserving a spare limb the value does not need - (so `1 << 127` stays inline in a 128-bit `basic_big_int`). Negative right shifts keep floor rounding by detecting + (so `1 << 127` stays inline in a 128-bit `basic_big_int`). A later change routes in-place pure bit shifts to the older + `shift_left_n`/`shift_right_n`; its effect is discussed in sections 3.6 and 3.8. Negative right shifts keep floor rounding by detecting discarded bits during the pass. - **Multiply.** `multiply_into` writes into `storage_for_overwrite` storage and drops the fill and the zero re-scan. `*=` keeps the allocator and capacity (one-limb rhs in place, small products through a stack buffer, larger ones into a fresh @@ -67,147 +68,160 @@ benefits without recommending a default. ## 3. Before and after -Cells read `before -> after`. `auto/gmpz` is the user-visible gap to GMP (above 1 means `big_int` is slower). +Cells read `before -> after`. `auto/gmpz` is the user-visible gap to GMP (above 1 means `big_int` is slower). The tables are +the re-measurement on `opt_1` at d689f75 (the add/sub, shift and single-limb follow-ups and the mul-add fix included); +an earlier measurement of 9145b4e is described in section 3.6. Rows are the median of four runs per binary +(`macr3_*`, `x64r3_*` CSVs). ### 3.1 x64 (g++-14, -march=native), small band | op | shape | auto ns | inplace ns | auto - floor ns | auto/gmpz | auto - kernel ns | |---|---|---:|---:|---:|---:|---:| -| add | 1x1 | 8.2 -> 6.7 | 4.1 -> 4.9 | -1.6 -> -3.1 | 1.98 -> 1.61 | 6.3 -> 4.8 | -| add | 2x2 | 17.8 -> 15.9 | 5.9 -> 6.1 | 7.6 -> 5.6 | 4.28 -> 3.80 | 15.5 -> 13.5 | -| add | 4x4 | 18.1 -> 15.4 | 5.6 -> 5.7 | 7.2 -> 4.3 | 4.11 -> 3.50 | 15.1 -> 12.3 | -| add | 8x8 | 19.4 -> 16.8 | 7.4 -> 7.1 | 6.9 -> 4.2 | 4.12 -> 3.57 | 14.8 -> 12.2 | -| add | 16x16 | 25.4 -> 20.9 | 11.8 -> 11.9 | 9.8 -> 5.3 | 3.86 -> 3.21 | 17.8 -> 13.4 | -| sub | 1x1 | 9.1 -> 7.8 | 4.0 -> 4.7 | 7.2 -> 5.9 | 2.09 -> 1.79 | 7.6 -> 6.3 | -| sub | 2x2 | 19.1 -> 15.8 | 4.6 -> 5.1 | 9.1 -> 5.8 | 4.40 -> 3.63 | 17.0 -> 13.7 | -| sub | 4x4 | 18.9 -> 16.6 | 5.5 -> 5.6 | 8.2 -> 5.8 | 4.08 -> 3.61 | 16.1 -> 13.7 | -| sub | 8x8 | 20.6 -> 18.0 | 7.2 -> 7.0 | 8.2 -> 5.6 | 4.11 -> 3.51 | 16.2 -> 13.6 | -| sub | 16x16 | 25.8 -> 21.1 | 10.7 -> 11.2 | 10.4 -> 5.7 | 3.76 -> 3.09 | 17.7 -> 13.0 | -| shl | 1x13 | 16.8 -> 12.6 | 4.1 -> 3.7 | 7.0 -> 2.8 | 4.83 -> 3.87 | 14.7 -> 10.6 | -| shl | 4x13 | 18.7 -> 13.5 | 5.2 -> 4.6 | 7.5 -> 2.3 | 4.63 -> 3.34 | 15.2 -> 10.0 | -| shl | 16x13 | 24.5 -> 17.1 | 9.3 -> 9.1 | 9.3 -> 1.9 | 4.21 -> 2.94 | 17.0 -> 9.6 | -| shr | 1x13 | 10.2 -> 8.2 | 3.7 -> 3.3 | 7.9 -> 5.9 | 3.12 -> 2.36 | 8.5 -> 6.5 | -| shr | 4x13 | 21.1 -> 16.1 | 4.7 -> 4.6 | 9.0 -> 5.0 | 5.31 -> 3.82 | 17.6 -> 12.6 | -| shr | 16x13 | 26.1 -> 20.0 | 8.8 -> 8.7 | 9.0 -> 4.4 | 4.18 -> 3.16 | 17.9 -> 11.1 | -| mul | 2x2 | 27.9 -> 18.9 | - | 12.6 -> 3.9 | 4.54 -> 3.08 | 20.3 -> 11.3 | -| mul | 3x3 | 29.6 -> 20.2 | - | 12.9 -> 3.8 | 2.96 -> 2.03 | 20.6 -> 11.3 | -| mul | 4x4 | 32.0 -> 22.3 | - | 13.3 -> 4.1 | 2.62 -> 1.83 | 20.9 -> 11.4 | -| mul | 6x6 | 41.9 -> 28.0 | - | 17.0 -> 3.6 | 2.30 -> 1.54 | 24.4 -> 10.9 | -| mul | 8x8 | 47.2 -> 35.9 | - | 14.3 -> 3.5 | 1.63 -> 1.24 | 21.6 -> 10.5 | -| mul | 12x12 | 70.2 -> 57.9 | - | 14.4 -> 3.1 | 1.38 -> 1.14 | 22.4 -> 10.1 | -| mul | 16x16 | 101.8 -> 88.5 | - | 14.8 -> 2.2 | 1.21 -> 1.05 | 22.1 -> 9.4 | -| sqr | 4x4 | 33.4 -> 22.2 | - | 16.5 -> 5.4 | 3.78 -> 2.51 | 24.3 -> 12.2 | -| sqr | 16x16 | 79.7 -> 66.4 | - | 15.9 -> 3.7 | 1.51 -> 1.26 | 23.4 -> 9.1 | -| divrem | 2x1 | 41.6 -> 35.4 | - | 28.8 -> 22.6 | 3.33 -> 2.84 | 36.1 -> 29.7 | -| divrem | 8x4 | 112.8 -> 94.7 | - | 53.0 -> 27.1 | 2.53 -> 2.07 | 67.7 -> 43.8 | -| divrem | 32x16 | 372.0 -> 340.2 | - | 67.6 -> 34.2 | 1.92 -> 1.73 | 82.6 -> 49.7 | -| fromchars | 4x10 | 195.2 -> 116.1 | - | - | 2.86 -> 1.68 | 154.2 -> 77.3 | -| fromchars | 16x10 | 420.1 -> 433.5 | - | - | 1.63 -> 1.68 | 209.5 -> 217.6 | +| add | 1x1 | 8.2 -> 5.4 | 4.1 -> 2.6 | -1.6 -> -4.4 | 1.98 -> 1.29 | 6.3 -> 3.4 | +| add | 2x2 | 17.9 -> 15.9 | 5.9 -> 6.2 | 7.6 -> 5.7 | 4.29 -> 3.82 | 15.5 -> 13.5 | +| add | 4x4 | 18.0 -> 15.4 | 5.6 -> 5.7 | 7.1 -> 4.5 | 4.12 -> 3.53 | 15.0 -> 12.4 | +| add | 8x8 | 19.3 -> 16.9 | 7.3 -> 7.3 | 6.8 -> 4.4 | 4.12 -> 3.62 | 14.7 -> 12.4 | +| add | 16x16 | 25.3 -> 21.1 | 11.8 -> 11.2 | 9.8 -> 5.6 | 3.87 -> 3.23 | 17.7 -> 13.5 | +| sub | 1x1 | 9.0 -> 5.5 | 4.0 -> 2.5 | 7.1 -> 3.4 | 2.08 -> 1.26 | 7.5 -> 4.0 | +| sub | 2x2 | 19.1 -> 15.7 | 4.6 -> 4.8 | 9.1 -> 5.8 | 4.39 -> 3.61 | 17.0 -> 13.5 | +| sub | 4x4 | 19.0 -> 16.5 | 5.5 -> 5.6 | 8.3 -> 5.9 | 4.12 -> 3.60 | 16.2 -> 13.7 | +| sub | 8x8 | 20.6 -> 18.1 | 7.2 -> 7.3 | 8.2 -> 5.9 | 4.14 -> 3.64 | 16.2 -> 13.7 | +| sub | 16x16 | 25.7 -> 21.0 | 10.6 -> 10.0 | 10.3 -> 5.7 | 3.78 -> 3.09 | 17.7 -> 13.6 | +| shl | 1x13 | 16.8 -> 12.5 | 4.1 -> 4.2 | 6.9 -> 2.7 | 4.83 -> 3.83 | 14.7 -> 10.4 | +| shl | 4x13 | 18.7 -> 13.5 | 5.2 -> 5.3 | 7.4 -> 2.3 | 4.63 -> 3.34 | 15.2 -> 10.0 | +| shl | 16x13 | 24.6 -> 17.1 | 9.2 -> 9.3 | 9.3 -> 1.9 | 4.17 -> 2.94 | 17.0 -> 9.6 | +| shr | 1x13 | 10.2 -> 8.2 | 3.6 -> 3.9 | 7.9 -> 5.9 | 3.11 -> 2.36 | 8.5 -> 6.5 | +| shr | 4x13 | 21.0 -> 16.0 | 4.7 -> 5.0 | 9.0 -> 4.1 | 5.29 -> 4.04 | 17.5 -> 12.6 | +| shr | 16x13 | 25.8 -> 20.0 | 8.8 -> 9.0 | 8.8 -> 2.9 | 4.12 -> 3.18 | 17.6 -> 11.3 | +| mul | 2x2 | 28.2 -> 18.9 | - | 13.1 -> 3.9 | 4.61 -> 3.08 | 20.7 -> 11.3 | +| mul | 3x3 | 29.7 -> 20.3 | - | 13.1 -> 3.9 | 2.97 -> 2.03 | 20.7 -> 11.4 | +| mul | 4x4 | 32.0 -> 22.4 | - | 13.4 -> 4.2 | 2.63 -> 1.84 | 20.9 -> 11.5 | +| mul | 6x6 | 42.1 -> 28.0 | - | 17.4 -> 3.5 | 2.31 -> 1.54 | 24.6 -> 10.8 | +| mul | 8x8 | 47.5 -> 36.0 | - | 14.9 -> 3.4 | 1.65 -> 1.24 | 22.0 -> 10.5 | +| mul | 12x12 | 70.2 -> 57.4 | - | 15.3 -> 2.5 | 1.38 -> 1.12 | 22.4 -> 9.5 | +| mul | 16x16 | 101.8 -> 88.6 | - | 15.4 -> 1.8 | 1.21 -> 1.05 | 22.5 -> 9.4 | +| sqr | 4x4 | 33.3 -> 22.2 | - | 16.4 -> 5.5 | 3.77 -> 2.51 | 24.2 -> 12.3 | +| sqr | 16x16 | 80.1 -> 67.3 | - | 17.5 -> 4.2 | 1.52 -> 1.29 | 23.9 -> 9.5 | +| divrem | 2x1 | 41.7 -> 36.2 | - | 28.9 -> 23.4 | 3.34 -> 2.92 | 36.2 -> 30.5 | +| divrem | 8x4 | 112.7 -> 94.1 | - | 52.9 -> 26.3 | 2.57 -> 2.13 | 67.0 -> 43.8 | +| divrem | 32x16 | 370.9 -> 342.2 | - | 67.4 -> 36.1 | 1.91 -> 1.77 | 82.4 -> 53.9 | +| fromchars | 4x10 | 194.1 -> 115.6 | - | - | 2.85 -> 1.70 | 155.9 -> 77.6 | +| fromchars | 16x10 | 421.8 -> 425.2 | - | - | 1.63 -> 1.66 | 204.4 -> 225.2 | +| tochars | 4x10 | 134.1 -> 132.0 | - | - | 1.38 -> 1.35 | -46.9 -> -48.9 | +| tochars | 16x10 | 1171.4 -> 1168.1 | - | - | 1.99 -> 1.98 | 132.4 -> 135.3 | ### 3.2 M4 (appleclang), small band | op | shape | auto ns | inplace ns | auto - floor ns | auto/gmpz | auto - kernel ns | |---|---|---:|---:|---:|---:|---:| -| add | 1x1 | 6.8 -> 7.7 | 3.2 -> 3.5 | -2.7 -> -1.7 | 2.07 -> 2.58 | 5.7 -> 6.5 | -| add | 2x2 | 14.6 -> 15.2 | 3.8 -> 3.9 | 5.0 -> 5.6 | 2.84 -> 4.58 | 13.2 -> 13.8 | -| add | 4x4 | 15.2 -> 14.3 | 3.7 -> 3.5 | 4.8 -> 4.1 | 3.20 -> 2.82 | 13.3 -> 12.4 | -| add | 8x8 | 15.6 -> 15.1 | 5.0 -> 4.0 | 3.6 -> 3.1 | 3.02 -> 3.39 | 12.1 -> 11.7 | -| add | 16x16 | 16.3 -> 16.9 | 9.6 -> 5.6 | 2.7 -> 3.2 | 3.63 -> 3.96 | 8.8 -> 9.3 | -| sub | 1x1 | 7.6 -> 8.0 | 3.4 -> 3.5 | 5.8 -> 6.3 | 2.57 -> 3.23 | 6.5 -> 7.0 | -| sub | 2x2 | 15.0 -> 14.7 | 3.3 -> 3.5 | 5.6 -> 5.3 | 4.63 -> 5.14 | 13.6 -> 13.3 | -| sub | 4x4 | 15.9 -> 14.7 | 3.7 -> 3.6 | 5.8 -> 4.3 | 5.33 -> 5.38 | 14.0 -> 12.8 | -| sub | 8x8 | 16.2 -> 15.6 | 5.2 -> 4.1 | 4.8 -> 3.8 | 4.66 -> 4.83 | 12.7 -> 12.1 | -| sub | 16x16 | 18.1 -> 17.5 | 11.0 -> 5.2 | 3.1 -> 2.4 | 4.24 -> 4.07 | 10.4 -> 9.8 | -| shl | 1x13 | 16.8 -> 12.4 | 2.3 -> 2.5 | 5.5 -> 1.4 | 8.46 -> 6.24 | 14.5 -> 10.2 | -| shl | 4x13 | 19.2 -> 13.0 | 3.6 -> 3.8 | 6.3 -> -0.1 | 7.02 -> 4.77 | 15.4 -> 9.3 | -| shl | 16x13 | 21.4 -> 16.2 | 5.8 -> 5.3 | 9.4 -> 3.9 | 4.29 -> 3.15 | 17.3 -> 12.0 | -| shr | 1x13 | 9.4 -> 6.6 | 2.3 -> 3.3 | 6.9 -> 4.1 | 4.74 -> 3.32 | 7.2 -> 4.4 | -| shr | 4x13 | 18.2 -> 14.0 | 3.2 -> 3.7 | 6.3 -> 2.0 | 6.67 -> 5.13 | 14.5 -> 10.3 | -| shr | 16x13 | 21.0 -> 18.4 | 5.1 -> 5.2 | 7.9 -> 5.4 | 4.97 -> 4.34 | 16.9 -> 14.2 | -| mul | 2x2 | 30.5 -> 18.6 | - | 15.8 -> 4.0 | 4.59 -> 2.74 | 24.0 -> 12.2 | -| mul | 3x3 | 30.4 -> 19.5 | - | 13.2 -> 2.8 | 3.69 -> 2.27 | 21.9 -> 11.3 | -| mul | 4x4 | 29.5 -> 21.6 | - | 12.5 -> 4.8 | 2.70 -> 2.04 | 18.3 -> 10.5 | -| mul | 6x6 | 33.0 -> 27.3 | - | 9.2 -> 3.6 | 1.77 -> 1.47 | 13.9 -> 8.4 | -| mul | 8x8 | 41.5 -> 34.8 | - | 11.1 -> 4.3 | 1.56 -> 1.29 | 18.6 -> 11.9 | -| mul | 12x12 | 61.8 -> 54.0 | - | 12.7 -> 4.5 | 1.33 -> 1.16 | 20.8 -> 12.9 | -| mul | 16x16 | 94.9 -> 82.7 | - | 16.3 -> 4.2 | 1.20 -> 1.05 | 25.2 -> 13.2 | -| sqr | 4x4 | 29.7 -> 21.6 | - | 13.4 -> 5.2 | 3.14 -> 2.27 | 18.1 -> 10.4 | -| sqr | 16x16 | 89.8 -> 75.3 | - | 18.0 -> 2.9 | 1.36 -> 1.14 | 27.6 -> 11.5 | -| divrem | 2x1 | 31.7 -> 24.8 | - | 17.8 -> 11.3 | 3.60 -> 2.86 | 25.7 -> 18.8 | -| divrem | 8x4 | 96.4 -> 75.8 | - | 35.5 -> 14.9 | 2.21 -> 1.73 | 50.1 -> 29.0 | -| divrem | 32x16 | 479.3 -> 432.2 | - | 69.3 -> 21.1 | 2.29 -> 2.06 | 87.6 -> 37.8 | -| fromchars | 4x10 | 92.8 -> 91.6 | - | - | 1.22 -> 1.18 | 60.0 -> 58.9 | -| fromchars | 16x10 | 397.2 -> 397.8 | - | - | 1.25 -> 1.25 | 203.7 -> 205.8 | +| add | 1x1 | 6.9 -> 5.9 | 3.2 -> 1.9 | -2.5 -> -3.7 | 2.26 -> 1.97 | 5.8 -> 4.7 | +| add | 2x2 | 14.8 -> 15.9 | 3.8 -> 4.1 | 4.9 -> 6.3 | 2.52 -> 4.90 | 13.4 -> 14.5 | +| add | 4x4 | 15.4 -> 14.6 | 3.7 -> 3.8 | 4.5 -> 4.2 | 3.19 -> 3.57 | 13.4 -> 12.6 | +| add | 8x8 | 15.8 -> 15.6 | 5.1 -> 4.3 | 3.9 -> 3.6 | 3.02 -> 3.56 | 12.3 -> 12.1 | +| add | 16x16 | 16.4 -> 17.7 | 9.8 -> 5.7 | 2.2 -> 3.7 | 3.62 -> 3.95 | 8.8 -> 10.1 | +| sub | 1x1 | 7.6 -> 5.7 | 3.4 -> 2.0 | 5.8 -> 4.0 | 2.76 -> 2.30 | 6.5 -> 4.7 | +| sub | 2x2 | 15.0 -> 14.7 | 3.3 -> 3.8 | 5.5 -> 5.4 | 4.64 -> 5.14 | 13.6 -> 13.3 | +| sub | 4x4 | 15.8 -> 15.1 | 3.9 -> 4.0 | 5.8 -> 5.2 | 5.31 -> 5.52 | 13.9 -> 13.2 | +| sub | 8x8 | 16.3 -> 15.7 | 5.0 -> 4.4 | 4.6 -> 4.3 | 4.65 -> 4.86 | 12.7 -> 12.2 | +| sub | 16x16 | 18.4 -> 18.1 | 10.9 -> 5.4 | 3.0 -> 3.0 | 4.22 -> 4.13 | 10.7 -> 10.3 | +| shl | 1x13 | 16.9 -> 12.3 | 2.3 -> 3.4 | 5.9 -> 1.4 | 8.50 -> 6.17 | 14.7 -> 9.8 | +| shl | 4x13 | 19.1 -> 13.1 | 3.6 -> 5.5 | 6.1 -> 0.0 | 6.95 -> 4.79 | 15.4 -> 9.4 | +| shl | 16x13 | 21.7 -> 15.5 | 5.8 -> 6.9 | 9.6 -> 3.3 | 4.31 -> 2.99 | 17.6 -> 11.4 | +| shr | 1x13 | 9.1 -> 6.6 | 2.3 -> 3.1 | 6.6 -> 4.1 | 4.58 -> 3.32 | 6.9 -> 4.4 | +| shr | 4x13 | 18.4 -> 14.1 | 3.3 -> 4.7 | 6.2 -> 1.8 | 6.70 -> 5.15 | 14.6 -> 10.4 | +| shr | 16x13 | 21.3 -> 18.0 | 5.1 -> 6.1 | 8.2 -> 4.8 | 5.02 -> 4.24 | 17.1 -> 13.9 | +| mul | 2x2 | 28.1 -> 18.2 | - | 13.4 -> 3.7 | 4.29 -> 2.81 | 21.5 -> 11.9 | +| mul | 3x3 | 30.1 -> 20.0 | - | 13.2 -> 3.0 | 3.57 -> 1.91 | 21.8 -> 11.9 | +| mul | 4x4 | 29.7 -> 21.6 | - | 12.6 -> 4.8 | 2.87 -> 1.97 | 18.5 -> 10.6 | +| mul | 6x6 | 33.0 -> 27.2 | - | 9.2 -> 2.9 | 1.76 -> 1.46 | 13.9 -> 7.9 | +| mul | 8x8 | 41.9 -> 35.1 | - | 11.0 -> 4.7 | 1.56 -> 1.41 | 18.7 -> 12.1 | +| mul | 12x12 | 61.8 -> 53.8 | - | 12.0 -> 4.3 | 1.33 -> 1.15 | 20.3 -> 12.4 | +| mul | 16x16 | 94.8 -> 82.4 | - | 15.7 -> 4.0 | 1.20 -> 1.05 | 24.9 -> 12.8 | +| sqr | 4x4 | 29.6 -> 21.6 | - | 13.2 -> 5.3 | 3.14 -> 2.22 | 18.2 -> 10.3 | +| sqr | 16x16 | 88.9 -> 75.8 | - | 18.3 -> 4.0 | 1.35 -> 1.15 | 26.7 -> 13.9 | +| divrem | 2x1 | 31.1 -> 25.2 | - | 17.3 -> 11.5 | 3.53 -> 2.89 | 25.1 -> 19.2 | +| divrem | 8x4 | 96.0 -> 75.4 | - | 34.8 -> 14.6 | 2.20 -> 1.72 | 49.8 -> 28.8 | +| divrem | 32x16 | 481.3 -> 432.0 | - | 63.6 -> 21.3 | 2.28 -> 2.05 | 79.1 -> 39.6 | +| fromchars | 4x10 | 91.2 -> 91.9 | - | - | 1.19 -> 1.20 | 58.6 -> 58.9 | +| fromchars | 16x10 | 399.5 -> 394.3 | - | - | 1.26 -> 1.25 | 206.1 -> 201.8 | +| tochars | 4x10 | 84.0 -> 84.4 | - | - | 0.86 -> 0.88 | -19.0 -> -17.8 | +| tochars | 16x10 | 828.8 -> 841.7 | - | - | 1.37 -> 1.40 | 88.0 -> 103.1 | ### 3.3 x64, medium band | op | shape | auto ns | inplace ns | auto - floor ns | auto/gmpz | auto - kernel ns | |---|---|---:|---:|---:|---:|---:| -| add | 64x64 | 63.6 -> 57.6 | 39.1 -> 48.1 | 22.3 -> 15.8 | 3.86 -> 3.49 | 30.4 -> 24.7 | -| add | 256x256 | 223.8 -> 213.5 | 145.9 -> 196.1 | 65.0 -> 54.3 | 2.81 -> 2.69 | 81.3 -> 71.1 | -| add | 1024x1024 | 841.5 -> 800.1 | 583.0 -> 790.1 | 247.3 -> 205.5 | 2.15 -> 2.04 | 263.0 -> 222.4 | -| add | 2000x2000 | 1721.2 -> 1535.4 | 1134.9 -> 1520.5 | 571.6 -> 384.7 | 3.59 -> 3.19 | 588.5 -> 403.3 | -| sub | 64x64 | 66.5 -> 58.8 | 37.9 -> 47.1 | 24.4 -> 16.5 | 3.97 -> 3.51 | 33.6 -> 26.1 | -| sub | 1024x1024 | 841.5 -> 808.6 | 581.7 -> 791.5 | 247.4 -> 214.7 | 2.15 -> 2.07 | 263.4 -> 230.8 | -| shl | 256x13 | 135.5 -> 122.0 | 93.1 -> 102.2 | 19.0 -> 5.5 | 2.69 -> 2.45 | 41.1 -> 28.2 | -| shl | 2000x13 | 916.5 -> 772.8 | 657.2 -> 740.9 | 176.7 -> 33.6 | 2.71 -> 2.29 | 196.5 -> 53.1 | -| shl | 2000x77 | 1065.3 -> 774.8 | 764.5 -> 741.5 | 193.2 -> -97.1 | 3.13 -> 2.29 | 215.4 -> -75.6 | -| shr | 256x13 | 138.6 -> 125.5 | 93.8 -> 101.7 | 7.3 -> -4.9 | 2.73 -> 2.47 | 28.4 -> 15.0 | -| shr | 2000x13 | 949.4 -> 750.3 | 657.2 -> 738.7 | 117.2 -> -81.7 | 2.80 -> 2.21 | 137.6 -> -61.8 | -| shr | 2000x77 | 1084.2 -> 750.6 | 764.9 -> 740.1 | 232.6 -> -102.0 | 3.20 -> 2.21 | 254.9 -> -79.6 | -| mul | 32x32 | 212.8 -> 200.5 | - | 12.8 -> 0.2 | 0.77 -> 0.74 | 24.1 -> 6.2 | -| mul | 64x64 | 517.4 -> 498.3 | - | 24.8 -> 3.6 | 0.60 -> 0.57 | 30.8 -> 12.8 | -| mul | 256x256 | 6254.4 -> 6185.1 | - | 18.2 -> 4.9 | 0.80 -> 0.79 | 81.2 -> 15.4 | -| mul | 1000x1000 | 59840.1 -> 59737.0 | - | 418.4 -> 167.6 | 1.11 -> 1.11 | 378.1 -> 250.3 | -| mul | 2000x2000 | 177078.2 -> 176669.1 | - | 698.5 -> 219.4 | 1.23 -> 1.23 | 778.0 -> 253.8 | -| mul | 2000x100 | 17857.2 -> 17640.0 | - | 23.0 -> -55.9 | 0.50 -> 0.49 | 192.1 -> -20.1 | -| sqr | 64x64 | 302.6 -> 276.1 | - | 22.7 -> -9.7 | 0.54 -> 0.50 | 32.9 -> -4.1 | -| sqr | 512x512 | 10629.4 -> 10582.1 | - | 63.0 -> -13.5 | 0.71 -> 0.70 | 89.1 -> 22.9 | -| sqr | 2000x2000 | 100001.6 -> 98205.6 | - | 1537.8 -> 79.5 | 0.99 -> 0.98 | 801.6 -> 16.8 | -| divrem | 128x64 | 3364.7 -> 3311.6 | - | 125.0 -> 47.5 | 1.94 -> 1.92 | 120.4 -> 84.6 | -| divrem | 512x256 | 29529.0 -> 29508.4 | - | 289.9 -> 287.0 | 1.81 -> 1.82 | 225.1 -> 342.1 | -| divrem | 2000x1000 | 185683.5 -> 185240.7 | - | 1297.0 -> -229.8 | 1.35 -> 1.34 | 1096.5 -> 20.4 | -| divrem | 4000x2000 | 478299.8 -> 474978.9 | - | 3602.0 -> -216.3 | 1.42 -> 1.41 | 4662.0 -> -563.2 | -| divrem | 2000x100 | 145266.8 -> 144972.4 | - | 870.1 -> 2397.5 | 2.00 -> 2.01 | 747.3 -> 845.4 | -| divrem | 65536x1 | 193782.3 -> 174417.1 | - | 19066.6 -> 6342.3 | 1.31 -> 1.18 | 26686.7 -> 7091.7 | -| fromchars | 64x10 | 2777.3 -> 3094.7 | - | - | 2.00 -> 2.22 | 644.3 -> 660.9 | -| fromchars | 256x10 | 28412.5 -> 30825.9 | - | - | 2.84 -> 3.10 | 2681.4 -> 1265.8 | -| fromchars | 2000x10 | 429598.0 -> 427566.8 | - | - | 2.17 -> 2.16 | 20495.5 -> 21856.1 | +| add | 64x64 | 63.7 -> 46.2 | 38.9 -> 35.8 | 22.4 -> 5.1 | 3.86 -> 2.80 | 30.4 -> 13.4 | +| add | 256x256 | 223.9 -> 162.9 | 145.8 -> 144.7 | 65.1 -> 4.4 | 2.82 -> 2.05 | 81.3 -> 20.6 | +| add | 1024x1024 | 841.9 -> 599.1 | 583.0 -> 581.0 | 247.6 -> 5.1 | 2.15 -> 1.53 | 263.4 -> 21.3 | +| add | 2000x2000 | 1721.6 -> 1153.3 | 1134.8 -> 1132.4 | 571.1 -> 3.9 | 3.56 -> 2.40 | 588.6 -> 21.7 | +| sub | 64x64 | 65.9 -> 45.3 | 37.7 -> 34.6 | 23.8 -> 3.1 | 3.94 -> 2.70 | 33.0 -> 12.6 | +| sub | 1024x1024 | 842.3 -> 598.3 | 581.5 -> 579.9 | 247.9 -> 4.1 | 2.15 -> 1.53 | 264.0 -> 20.5 | +| shl | 256x13 | 135.4 -> 122.0 | 93.0 -> 99.3 | 18.8 -> 7.4 | 2.69 -> 2.43 | 42.0 -> 28.1 | +| shl | 2000x13 | 917.2 -> 772.7 | 657.3 -> 716.9 | 177.7 -> 33.4 | 2.71 -> 2.29 | 196.9 -> 53.0 | +| shl | 2000x77 | 1065.8 -> 774.6 | 764.9 -> 741.6 | 193.2 -> -98.0 | 3.14 -> 2.29 | 216.0 -> -77.6 | +| shr | 256x13 | 137.9 -> 125.0 | 93.8 -> 99.1 | 6.7 -> -6.0 | 2.72 -> 2.46 | 27.8 -> 15.0 | +| shr | 2000x13 | 949.9 -> 749.4 | 656.8 -> 716.5 | 117.3 -> -83.4 | 2.80 -> 2.21 | 138.1 -> -62.9 | +| shr | 2000x77 | 1083.7 -> 749.4 | 764.9 -> 740.2 | 232.9 -> -102.6 | 3.19 -> 2.21 | 255.4 -> -80.7 | +| mul | 32x32 | 212.3 -> 205.8 | - | 12.1 -> 9.3 | 0.78 -> 0.76 | 24.7 -> 18.9 | +| mul | 64x64 | 524.5 -> 496.2 | - | 31.0 -> 3.7 | 0.60 -> 0.58 | 41.5 -> 9.5 | +| mul | 256x256 | 6231.5 -> 6176.4 | - | 28.3 -> 2.4 | 0.80 -> 0.79 | 62.6 -> -2.4 | +| mul | 1000x1000 | 59904.3 -> 59861.8 | - | 343.6 -> 312.4 | 1.12 -> 1.12 | 389.1 -> 230.9 | +| mul | 2000x2000 | 177072.6 -> 176923.7 | - | 722.9 -> 199.2 | 1.23 -> 1.23 | 692.2 -> -137.4 | +| mul | 2000x100 | 17852.9 -> 17643.6 | - | 154.6 -> -43.6 | 0.50 -> 0.49 | 193.6 -> -52.9 | +| sqr | 64x64 | 301.5 -> 284.4 | - | 20.2 -> 3.8 | 0.54 -> 0.51 | 30.8 -> 9.1 | +| sqr | 512x512 | 10627.6 -> 10594.1 | - | 56.8 -> -15.5 | 0.70 -> 0.70 | 64.8 -> 27.0 | +| sqr | 2000x2000 | 99937.6 -> 99323.2 | - | 651.3 -> 1067.7 | 0.99 -> 0.99 | 646.3 -> 794.2 | +| divrem | 128x64 | 3342.1 -> 3446.3 | - | 67.0 -> 82.1 | 1.94 -> 2.00 | 141.1 -> 103.2 | +| divrem | 512x256 | 29558.6 -> 29817.4 | - | 292.6 -> 178.0 | 1.81 -> 1.83 | 164.7 -> 226.5 | +| divrem | 2000x1000 | 185318.8 -> 186774.1 | - | 1166.1 -> 819.0 | 1.34 -> 1.35 | 1065.1 -> 1041.0 | +| divrem | 4000x2000 | 478481.8 -> 477627.1 | - | 3873.1 -> -100.7 | 1.43 -> 1.43 | 3326.4 -> -564.6 | +| divrem | 2000x100 | 144654.0 -> 144971.4 | - | 1928.4 -> 1154.1 | 2.00 -> 2.00 | 812.6 -> 886.6 | +| divrem | 65536x1 | 193721.3 -> 168835.7 | - | 18973.6 -> 1400.2 | 1.31 -> 1.14 | 26598.0 -> 1889.2 | +| fromchars | 64x10 | 2790.5 -> 2852.3 | - | - | 2.04 -> 2.08 | 667.6 -> 1045.0 | +| fromchars | 256x10 | 28563.9 -> 27920.0 | - | - | 2.87 -> 2.80 | 2874.6 -> 3489.4 | +| fromchars | 2000x10 | 429183.1 -> 385669.1 | - | - | 2.17 -> 1.95 | 20511.4 -> 23105.6 | +| tochars | 64x10 | 5622.5 -> 5695.4 | - | - | 1.90 -> 1.93 | 377.4 -> 362.4 | +| tochars | 256x10 | 35873.4 -> 36990.2 | - | - | 1.82 -> 1.88 | 1283.7 -> 1461.4 | +| tochars | 2000x10 | 608668.2 -> 620642.7 | - | - | 1.49 -> 1.52 | 24355.7 -> 23098.2 | ### 3.4 M4, medium band | op | shape | auto ns | inplace ns | auto - floor ns | auto/gmpz | auto - kernel ns | |---|---|---:|---:|---:|---:|---:| -| add | 64x64 | 54.5 -> 38.2 | 51.3 -> 20.0 | -7.4 -> -22.6 | 4.22 -> 2.90 | 5.3 -> -11.0 | -| add | 256x256 | 147.1 -> 109.9 | 239.5 -> 100.9 | -98.2 -> -136.3 | 2.54 -> 1.90 | -88.3 -> -124.8 | -| add | 1024x1024 | 551.5 -> 450.1 | 985.4 -> 433.6 | -433.4 -> -539.9 | 2.18 -> 1.78 | -416.4 -> -520.8 | -| add | 2000x2000 | 1126.7 -> 886.7 | 1935.7 -> 854.2 | -809.8 -> -1046.7 | 2.27 -> 1.78 | -788.3 -> -1030.2 | -| sub | 64x64 | 40.9 -> 35.9 | 50.9 -> 19.9 | -19.5 -> -24.3 | 2.96 -> 2.59 | -8.5 -> -13.6 | -| sub | 1024x1024 | 547.5 -> 453.1 | 985.9 -> 434.5 | -428.7 -> -524.8 | 2.16 -> 1.79 | -422.4 -> -522.7 | -| shl | 256x13 | 85.9 -> 41.3 | 36.4 -> 29.8 | 28.2 -> -16.1 | 2.27 -> 1.09 | 36.7 -> -7.8 | -| shl | 2000x13 | 638.6 -> 262.4 | 283.2 -> 196.5 | 238.0 -> -138.1 | 0.29 -> 0.13 | 255.1 -> -121.1 | -| shl | 2000x77 | 790.7 -> 458.6 | 424.8 -> 228.8 | 248.5 -> -81.0 | 2.73 -> 1.59 | 262.7 -> -70.9 | -| shr | 256x13 | 87.3 -> 42.6 | 36.0 -> 30.4 | 11.6 -> -32.7 | 2.29 -> 1.12 | 20.9 -> -23.9 | -| shr | 2000x13 | 706.8 -> 255.1 | 283.0 -> 196.3 | 182.0 -> -270.0 | 2.36 -> 0.86 | 194.1 -> -258.7 | -| shr | 2000x77 | 1057.9 -> 276.4 | 420.0 -> 195.8 | 532.0 -> -249.9 | 3.65 -> 0.95 | 540.9 -> -240.3 | -| mul | 32x32 | 298.2 -> 281.8 | - | 18.6 -> 3.1 | 1.12 -> 1.06 | 39.5 -> 23.4 | -| mul | 64x64 | 1037.9 -> 1008.6 | - | 24.8 -> -0.7 | 1.33 -> 1.29 | 55.2 -> 24.5 | -| mul | 256x256 | 11853.3 -> 11814.0 | - | 94.2 -> 26.0 | 1.51 -> 1.50 | 98.6 -> 27.0 | -| mul | 1000x1000 | 107142.3 -> 106691.9 | - | 289.0 -> -192.8 | 1.94 -> 1.93 | 374.3 -> -156.5 | -| mul | 2000x2000 | 302134.9 -> 301592.0 | - | 128.7 -> -681.6 | 2.04 -> 2.03 | 759.9 -> -99.5 | -| mul | 2000x100 | 46964.9 -> 46319.6 | - | 189.0 -> -476.9 | 1.35 -> 1.33 | 170.0 -> -377.5 | -| sqr | 64x64 | 626.4 -> 600.0 | - | 26.4 -> 1.6 | 0.93 -> 0.89 | 43.0 -> 19.3 | -| sqr | 512x512 | 24592.6 -> 24374.4 | - | 257.1 -> 26.4 | 1.25 -> 1.24 | 206.7 -> 17.9 | -| sqr | 2000x2000 | 224138.1 -> 223342.4 | - | 1273.4 -> 81.0 | 1.86 -> 1.85 | 1332.5 -> -404.5 | -| divrem | 128x64 | 3731.8 -> 3691.2 | - | 111.5 -> 47.5 | 2.10 -> 2.08 | 121.0 -> 89.4 | -| divrem | 512x256 | 28589.6 -> 28613.1 | - | 241.5 -> 234.6 | 1.74 -> 1.74 | 262.6 -> 236.7 | -| divrem | 2000x1000 | 232543.6 -> 232354.6 | - | 820.3 -> 397.1 | 1.73 -> 1.73 | 1102.5 -> 5.9 | -| divrem | 4000x2000 | 687816.7 -> 688042.4 | - | 1309.8 -> 565.7 | 2.00 -> 2.00 | -317.3 -> 1268.1 | -| divrem | 2000x100 | 95254.0 -> 94399.0 | - | 1331.8 -> 434.9 | 1.38 -> 1.37 | 1083.7 -> 362.2 | -| divrem | 65536x1 | 241855.9 -> 229283.2 | - | 12147.0 -> -1278.5 | 1.43 -> 1.34 | 15073.8 -> -605.0 | -| fromchars | 64x10 | 2195.2 -> 2182.2 | - | - | 1.37 -> 1.36 | 339.6 -> 326.3 | -| fromchars | 256x10 | 13831.3 -> 13791.9 | - | - | 1.31 -> 1.28 | 2271.7 -> 2254.6 | -| fromchars | 2000x10 | 300314.1 -> 300086.8 | - | - | 1.47 -> 1.48 | 17698.1 -> 17469.0 | +| add | 64x64 | 54.7 -> 37.9 | 51.6 -> 20.0 | -6.4 -> -23.0 | 4.21 -> 2.84 | 5.8 -> -11.2 | +| add | 256x256 | 148.8 -> 109.8 | 240.0 -> 101.2 | -99.1 -> -136.9 | 2.57 -> 1.89 | -85.2 -> -126.7 | +| add | 1024x1024 | 564.9 -> 450.3 | 989.7 -> 437.1 | -423.8 -> -537.8 | 2.23 -> 1.78 | -418.7 -> -527.5 | +| add | 2000x2000 | 1132.3 -> 877.0 | 1948.4 -> 858.2 | -812.1 -> -1054.3 | 2.27 -> 1.76 | -797.7 -> -1050.8 | +| sub | 64x64 | 41.2 -> 36.1 | 51.2 -> 19.8 | -19.0 -> -25.1 | 2.97 -> 2.68 | -8.6 -> -17.3 | +| sub | 1024x1024 | 562.3 -> 454.6 | 988.4 -> 435.0 | -424.5 -> -532.1 | 2.21 -> 1.80 | -416.2 -> -524.8 | +| shl | 256x13 | 86.1 -> 41.2 | 36.6 -> 45.1 | 28.4 -> -15.9 | 2.27 -> 1.09 | 36.8 -> -8.0 | +| shl | 2000x13 | 653.2 -> 261.0 | 284.3 -> 347.8 | 250.6 -> -141.2 | 0.32 -> 0.12 | 268.9 -> -125.3 | +| shl | 2000x77 | 818.5 -> 450.3 | 426.3 -> 233.4 | 277.3 -> -96.6 | 2.81 -> 1.56 | 287.6 -> -79.8 | +| shr | 256x13 | 87.8 -> 42.6 | 36.0 -> 44.8 | 11.6 -> -32.8 | 2.30 -> 1.12 | 21.3 -> -24.2 | +| shr | 2000x13 | 698.0 -> 271.2 | 283.2 -> 347.5 | 171.3 -> -255.8 | 2.33 -> 0.90 | 179.5 -> -241.6 | +| shr | 2000x77 | 1040.9 -> 280.7 | 421.2 -> 195.9 | 506.5 -> -247.6 | 3.59 -> 0.98 | 522.6 -> -236.7 | +| mul | 32x32 | 298.7 -> 281.4 | - | 17.5 -> 2.3 | 1.12 -> 1.07 | 39.3 -> 23.1 | +| mul | 64x64 | 1039.3 -> 1007.8 | - | 23.9 -> -2.6 | 1.34 -> 1.30 | 53.3 -> 22.9 | +| mul | 256x256 | 11896.3 -> 12025.0 | - | 102.9 -> 238.8 | 1.51 -> 1.53 | 138.2 -> 229.3 | +| mul | 1000x1000 | 107250.2 -> 106887.8 | - | 178.5 -> -283.6 | 1.94 -> 1.94 | 80.4 -> 117.0 | +| mul | 2000x2000 | 302932.5 -> 301689.0 | - | -292.8 -> -722.3 | 2.03 -> 2.03 | 668.5 -> -700.3 | +| mul | 2000x100 | 47136.3 -> 46406.5 | - | 294.5 -> -291.4 | 1.35 -> 1.34 | 280.3 -> -261.8 | +| sqr | 64x64 | 626.4 -> 600.5 | - | 24.4 -> 0.7 | 0.93 -> 0.89 | 41.3 -> 18.3 | +| sqr | 512x512 | 24695.3 -> 24317.0 | - | 276.0 -> -72.0 | 1.25 -> 1.18 | 327.2 -> -27.6 | +| sqr | 2000x2000 | 224588.0 -> 223255.6 | - | 967.2 -> -545.5 | 1.85 -> 1.84 | 895.4 -> 31.3 | +| divrem | 128x64 | 3762.2 -> 3733.0 | - | 93.6 -> 75.2 | 2.12 -> 2.10 | 141.9 -> 143.5 | +| divrem | 512x256 | 28815.2 -> 28675.6 | - | 417.8 -> 72.8 | 1.75 -> 1.74 | 466.0 -> 215.7 | +| divrem | 2000x1000 | 234126.7 -> 232426.2 | - | 1975.2 -> 102.0 | 1.73 -> 1.73 | 1606.5 -> 322.1 | +| divrem | 4000x2000 | 695982.0 -> 691382.2 | - | 3426.0 -> 4024.5 | 2.00 -> 2.01 | 3967.5 -> 4357.2 | +| divrem | 2000x100 | 95716.3 -> 94547.3 | - | 1235.2 -> 259.8 | 1.38 -> 1.36 | 1567.7 -> 5.9 | +| divrem | 65536x1 | 246390.5 -> 231899.7 | - | 17772.4 -> -655.0 | 1.44 -> 1.35 | 16128.0 -> 1720.2 | +| fromchars | 64x10 | 2198.3 -> 2187.2 | - | - | 1.37 -> 1.36 | 338.6 -> 330.9 | +| fromchars | 256x10 | 13836.4 -> 13804.5 | - | - | 1.28 -> 1.29 | 2272.2 -> 2257.5 | +| fromchars | 2000x10 | 300171.0 -> 300852.0 | - | - | 1.47 -> 1.48 | 17382.0 -> 17573.8 | +| tochars | 64x10 | 4746.0 -> 4744.5 | - | - | 1.50 -> 1.50 | 250.2 -> 220.3 | +| tochars | 256x10 | 33794.6 -> 33818.9 | - | - | 1.66 -> 1.66 | 858.7 -> 1075.2 | +| tochars | 2000x10 | 679612.5 -> 676793.1 | - | - | 1.63 -> 1.63 | 11123.6 -> 7941.4 | ### 3.5 Large-band spot checks @@ -215,60 +229,200 @@ x64: | op | shape | auto ns | kernel ns | gmpz ns | auto/gmpz | change in auto | |---|---|---:|---:|---:|---:|---:| -| add | 16384x16384 | 14883 -> 12435 | 9301 -> 9298 | 7410 | 2.01 -> 1.68 | -16.4% | -| divrem | 4096x2048 | 498654 -> 498767 | 497775 -> 498832 | 367635 | 1.36 -> 1.36 | +0.0% | -| fromchars | 10000x10 | 3670138 -> 3651386 | 3586031 -> 3567768 | 2006859 | 1.83 -> 1.82 | -0.5% | -| mul | 2000x2000 | 177038 -> 177290 | 176452 -> 176534 | 144170 | 1.23 -> 1.23 | +0.1% | -| mul | 16384x16384 | 3784524 -> 3774169 | 3790346 -> 3781385 | 1783926 | 2.12 -> 2.12 | -0.3% | -| tochars | 10000x10 | 5890002 -> 5879016 | 5823308 -> 5846315 | 4221163 | 1.40 -> 1.39 | -0.2% | +| add | 16384x16384 | 14810 -> 9330 | 9304 -> 9294 | 6898 | 2.15 -> 1.35 | -37.0% | +| divrem | 4096x2048 | 499034 -> 498477 | 497946 -> 495569 | 368707 | 1.35 -> 1.35 | -0.1% | +| fromchars | 10000x10 | 3670159 -> 3475893 | 3588344 -> 3362265 | 2005997 | 1.83 -> 1.73 | -5.3% | +| mul | 2000x2000 | 177314 -> 177858 | 176337 -> 176741 | 144537 | 1.23 -> 1.23 | +0.3% | +| mul | 16384x16384 | 3778231 -> 3779466 | 3778094 -> 3788186 | 1789186 | 2.11 -> 2.11 | +0.0% | +| tochars | 10000x10 | 5864746 -> 5960832 | 5844018 -> 5920813 | 4223943 | 1.39 -> 1.41 | +1.6% | M4: | op | shape | auto ns | kernel ns | gmpz ns | auto/gmpz | change in auto | |---|---|---:|---:|---:|---:|---:| -| add | 16384x16384 | 9473 -> 7267 | 15838 -> 15813 | 4102 | 2.31 -> 1.77 | -23.3% | -| divrem | 4096x2048 | 703037 -> 708499 | 702306 -> 702139 | 358229 | 1.96 -> 1.98 | +0.8% | -| fromchars | 10000x10 | 4331417 -> 4171163 | 4095996 -> 4088150 | 1857816 | 2.33 -> 2.25 | -3.7% | -| mul | 2000x2000 | 302942 -> 301376 | 301403 -> 303536 | 148256 | 2.04 -> 2.03 | -0.5% | -| mul | 16384x16384 | 5400760 -> 5353474 | 5359177 -> 5393000 | 1567599 | 3.45 -> 3.42 | -0.9% | -| tochars | 10000x10 | 8247452 -> 8240938 | 8206028 -> 8216750 | 4180900 | 1.97 -> 1.97 | -0.1% | - -Observations that matter for reading the tables: - -- Small `auto` on x64 improved by 1.5-4.5 ns for add and sub, 2-7 ns for shifts, 9-14 ns for mul/sqr and 6-32 ns for divrem - (2x1 to 32x16). On M4 the add/sub rows at 1-16 limbs are within noise of the baseline, apart from a small consistent - loss at the smallest shapes (add 1x1 6.8 -> 7.7 ns, 2x2 14.6 -> 15.2; its allocator pair is cheap, a floor only 3-6 ns above - the kernel, so there was little to remove); M4 shifts improved by 3-6 ns, mul/sqr by 6-15 ns and divrem by 7-47 ns. -- Medium and large `auto` rows move by their copy and zero-fill savings only: add 16384 -16% (x64) and -23% (M4), shifts at - 2000 limbs -16..-31% (x64) and -42..-74% (M4), mul and divrem above ~256 limbs within +-1.5% (divrem 65536x1 -10% on x64). -- **Regressions, all reproducible (4 of 4 runs):** - - x64 `inplace` (`c += b; c -= b`) at >= 64 limbs is slower: add 64x64 39.1 -> 48.1 ns, 256x256 145.9 -> 196.1, - 1024x1024 583.0 -> 790.1 (+35%), 2000x2000 1134.9 -> 1520.5; sub the same; the 256x13 and 2000x13 shift pairs 93 -> 102 (+10%) and 657 -> 741 (+13%); the smallest `inplace` rows are 0.5-0.8 ns - slower too (add 1x1 4.1 -> 4.9, sub 1x1 4.0 -> 4.7). - `auto` improved but `inplace` did not: `add_n_tail` on x64 does not reach the ADX-assisted speed of - `add_unsigned_spans` (the unchanged `kernel` row is 578 ns at 1024x1024, the new in-place pair is 790). On M4 the same - rows improved by 2.3x (985 -> 434 ns at 1024x1024). - - x64 `fromchars` (decimal) at 64 and 256 limbs-worth of digits: 64x10 2777 -> 3095 ns (+11%), 256x10 28412 -> 30826 - (+8.5%), 16x10 420 -> 434 (+3%); 4x10 improved 195 -> 116. The `kernel` row moves the same way (256x10 25.7k -> - 29.6k), 2000x10 and the M4 are unchanged. With `mul_header_basecase_enabled = false` the x64 rows return to the - baseline (64x10 2800 / 2870 ns base / shortcut-off, 3050 with the shortcut), while direct mul shapes (40x2 .. 133x31) - show no slowdown. `digits_to_limbs` is a header template compiled into the harness TU (a perf profile is 99.9% in that - one function), so this looks like an inlining/code-generation interaction in GCC 14 rather than an algorithmic change; it - was not isolated further. +| add | 16384x16384 | 9474 -> 7305 | 16179 -> 16418 | 4161 | 2.28 -> 1.76 | -22.9% | +| divrem | 4096x2048 | 706592 -> 707065 | 704150 -> 706127 | 358386 | 1.97 -> 1.97 | +0.1% | +| fromchars | 10000x10 | 4198921 -> 4189262 | 4137033 -> 4117279 | 1872966 | 2.24 -> 2.24 | -0.2% | +| mul | 2000x2000 | 303919 -> 311426 | 304464 -> 305902 | 150382 | 2.02 -> 2.07 | +2.5% | +| mul | 16384x16384 | 5443656 -> 5522911 | 5447302 -> 5449136 | 1599088 | 3.40 -> 3.45 | +1.5% | +| tochars | 10000x10 | 8278333 -> 8342500 | 8238222 -> 8247500 | 4195346 | 1.97 -> 1.99 | +0.8% | + +### 3.6 Reading the tables, regressions, and the history of the two measurements + +- Small `auto` on x64 improved by 2-4.5 ns for add/sub at 2-16 limbs (1x1: 8.2 -> 5.4 add, 9.0 -> 5.5 sub with the 1x1 fast + path), 2-7 ns for shifts, 9-14 ns for mul/sqr and 5-35 ns for divrem. On M4, add/sub at 2-16 limbs are within about + +-1.3 ns of the baseline (add 2x2 14.8 -> 15.9, 16x16 16.4 -> 17.7; its allocator pair is cheap, a floor only 3-6 ns above + the kernel, so there was little to remove; add/sub 1x1 improved 6.9 -> 5.9 / 7.6 -> 5.7); M4 shifts improved by 3-6 ns, + mul/sqr by 6-15 ns and divrem by 7-47 ns. +- Medium and large `auto`: x64 add/sub went from -5% at 64 limbs to -29% at 1024-2000 (add 1024x1024 842 -> 599 ns, 2000x2000 + 1722 -> 1153), with `auto - floor` down to 4-5 ns; add 16384 is -37% (x64) and -23% (M4). Shifts at 2000 limbs -16..-31% + (x64) and -42..-74% (M4); mul and divrem above ~256 limbs within +-1.5% except M4 mul 2000x2000 +2.5% and divrem 65536x1 + -10% (x64). +- **x64 `+=`/`-=` regression from the first measurement is fixed.** At 9145b4e add `inplace` 1024x1024 was 583 -> 790 ns + (+35%) because `add_n_tail` did not reach the speed of `add_unsigned_spans` on x64; the follow-up loop shape (a plain loop + under GCC, the 4-way one under clang) brings it to 581 ns, the baseline. +- **Decimal `fromchars` regression is fixed** (it was +8-11% at 64-256 limbs-worth of digits at 9145b4e); see section 3.7 + for the cause. Now x64 `auto` 64x10 2791 -> 2852 ns (+2%), 256x10 28564 -> 27920 (-2%), 2000x10 429k -> 386k (-10%), + 16x10 +0.8%; 10000x10 is -5.3%. M4 is unchanged (<= +-1%). +- **Still open: in-place shifts (`c <<= s; c >>= s`, per op).** After the follow-up that routes whole-limb-free in-place + shifts to `shift_left_n`/`shift_right_n` they are slower than the baseline on both machines and, on M4, much slower than + in the 9145b4e build: + + | `inplace` ns | x64 base | x64 9145b4e | x64 now | M4 base | M4 9145b4e | M4 now | + |---|---:|---:|---:|---:|---:|---:| + | shl 4x13 | 5.2 | 4.6 | 5.3 | 3.6 | 3.8 | 5.5 | + | shl 16x13 | 9.2 | 9.1 | 9.3 | 5.8 | 5.3 | 6.9 | + | shl 256x13 | 93.0 | 102.2 | 99.3 | 36.6 | 29.9 | 45.1 | + | shl 2000x13 | 657.3 | 740.9 | 716.9 | 284.3 | 196.0 | 347.8 | + | shr 2000x13 | 656.8 | 738.7 | 716.5 | 283.2 | 196.8 | 347.5 | + + so x64 +9% (2000x13) and +6-7% (256x13), M4 +22% (2000x13) and +23% (256x13) against the baseline. M4 `auto` shifts did + not move (shl 2000x13 `auto` 261 ns). +- **Rows more than 3% slower than the baseline** (`item1_regress.py`, `auto` and `inplace`, four-run medians): + - x64: 11 of 107 rows, all the shift in-place rows above plus add 2x2 `inplace` +0.4 ns (+5.9%), sub 2x2/4x4 `inplace` + +0.2 ns, shr 1x13/4x13 `inplace` +0.2-0.3 ns, tochars 256x10 `auto` +3.1% and divrem 128x64 `auto` +3.1%. Kernel rows + (library code, not the front end): divrem 8x4 45.7 -> 50.3 ns (+10%), divrem 128x64 +4.4%, sqr 4x4 9.1 -> 9.9 ns + (+9%), within the 1-2 ns kernel noise at the smallest sizes. + - M4: 15 of 107 rows: the in-place shift rows above (1x13 and 4x13 `inplace` +1-2 ns, +34..+53%), add 2x2 `auto` +1.1 ns + (+7%), add 16x16 `auto` +1.3 ns (+7.7%), add/sub 2x2 `inplace` +0.3-0.6 ns, sub 4x4 `inplace` +0.1 ns. + - No medium or large `auto` row on either machine is more than 3% slower, and no large spot check moves by more than + +2.5% (M4 mul 2000x2000). +- **History.** The first measurement (opt_1 at 9145b4e, CSVs `x64_*`/`mac_*`) showed x64 add/sub `inplace` +23..+35% at + >= 64 limbs, decimal `fromchars` +8-11%, and in-place shifts +10-13% on x64 but -30..-35% on M4. The follow-ups fixed the + first two and the add/sub `auto` rows improved a further 20-26%, but the in-place shift change traded the x64 result for + an M4 loss. + +### 3.7 Cause of the x64 `fromchars` regression (diagnosis and fix) + +The regression showed with the header basecase shortcut compiled in and disappeared with it off, but the shortcut was only +the trigger. Facts: + +- Instructions per call are equal (+-2%) in the baseline, shortcut-on and shortcut-off builds, so it is not extra work; + IPC is lower with the shortcut (3.93 against 4.17-4.20 in `perf stat`, with 92% of uops from the decoded-uop cache + against 99%). It is a stable +8-10%, independent of ASLR, stack offset and heap layout (checked with `setarch -R`, + environment padding, `GLIBC_TUNABLES`). +- `digits_to_limbs` is byte-identical between the two builds apart from nop padding, with the hot loops at the same + alignment, and 99.96% of the samples are in the out-of-line `digits_to_limbs> [clone .isra.0]`. + Called standalone (inlined into a micro driver), the same function takes 20.9 us at 256 limbs in both builds, against + 25.4 us for the baseline in the harness: the harness copy is slower even without the shortcut. +- The cause is the hot loop of `mul_add_single_limb_in_place`: `widening_mul` returns the product through + `wide::from_int`, a `std::bit_cast` of the 128-bit value, and GCC 14 in that out-of-line copy stores the product to the + stack and reloads both halves every iteration (`mulx; mov %r8,(%rsp); mov %r9,0x8(%rsp); mov (%rsp),%r8; mov 0x8(%rsp),%r9; + add ...`). That store-forward round trip is the baseline's ~20% penalty; the shortcut changes inlining and register + allocation in the harness translation unit enough to make the spilled loop a further ~8-10% slower. +- Fix (`d689f75`): under `BEMAN_BIG_INT_HAS_INT128_FUNDAMENTAL` compute `wide(s[i]) * mul + carry` and split it directly, + keeping the `widening_mul` loop in the `#else`. The loop becomes `mulx; add; adc; mov; inc; cmp; jb`. Measured in a + scratch copy (decimal `fromchars` kernel row, base / shortcut-on / shortcut-off / fixed): 64x10 2116 / 2400 / 2110-2160 / + 1680-1800 ns, 256x10 25.7k / 29.8k / 25.4k / 21.4-22.0k, 2000x10 401k / 398k / 401k / 361k. Changing `from_int` or + `widening_mul` globally instead helps `fromchars` but regresses divrem 512x256 by +17% and tochars by +10%, so the fix + has to stay local to this loop. + +### 3.8 In-place shift A/B (variants of the whole-limb-free path) + +Three variants built from scratch copies of d689f75 (outside the repository) and measured against `new64` (d689f75) and +`base64`, three interleaved runs per binary on both machines (rows `auto`, `inplace`, `kernel`; the unchanged `kernel` +rows are omitted; x64 pinned): + +- V1: revert 2f9150b, so `<<=`/`>>=` go back to `lshift_copy`/`rshift_copy` (the earlier A2 behaviour); +- V2: V1 plus register-carried loops in `lshift_copy`/`rshift_copy` (one load per limb); +- V3: V2 with the combine written as `funnel_shl`/`funnel_shr` (identical to V2 under GCC, which has no builtin). + +x64 (g++-14): + +| op | shape | row | base64 | new64 | v1 | v2 | v3 | +|---|---|---|---:|---:|---:|---:|---:| +| shl | 1x13 | auto | 16.7 | 12.5 (-25%) | 12.6 (-25%) | 12.6 (-25%) | 12.6 (-25%) | +| shl | 1x13 | inplace | 4.1 | 4.2 (+3%) | 3.6 (-11%) | 3.4 (-15%) | 3.4 (-15%) | +| shl | 4x13 | auto | 18.6 | 13.4 (-28%) | 13.4 (-28%) | 13.4 (-28%) | 13.4 (-28%) | +| shl | 4x13 | inplace | 5.2 | 5.2 (+2%) | 4.5 (-12%) | 4.3 (-16%) | 4.3 (-16%) | +| shl | 16x13 | auto | 24.5 | 17.1 (-30%) | 17.0 (-31%) | 16.7 (-32%) | 16.8 (-32%) | +| shl | 16x13 | inplace | 9.2 | 9.2 (+1%) | 9.1 (-1%) | 8.4 (-8%) | 8.4 (-8%) | +| shl | 256x13 | auto | 133.9 | 122.0 (-9%) | 122.2 (-9%) | 122.0 (-9%) | 121.9 (-9%) | +| shl | 256x13 | inplace | 93.0 | 99.3 (+7%) | 102.2 (+10%) | 98.7 (+6%) | 98.7 (+6%) | +| shl | 2000x13 | auto | 917.5 | 772.8 (-16%) | 773.4 (-16%) | 773.6 (-16%) | 773.5 (-16%) | +| shl | 2000x77 | auto | 1063.4 | 774.6 (-27%) | 775.0 (-27%) | 774.5 (-27%) | 774.5 (-27%) | +| shl | 2000x13 | inplace | 656.7 | 716.9 (+9%) | 739.0 (+13%) | 712.5 (+9%) | 712.6 (+9%) | +| shl | 2000x77 | inplace | 765.7 | 741.7 (-3%) | 739.0 (-3%) | 712.5 (-7%) | 712.5 (-7%) | +| shl | 131072x13 | auto | 97977.3 | 49725.2 (-49%) | 49751.9 (-49%) | 49864.2 (-49%) | 49877.8 (-49%) | +| shl | 131072x13 | inplace | 43553.8 | 46689.0 (+7%) | 48260.2 (+11%) | 46565.6 (+7%) | 46554.9 (+7%) | +| shr | 1x13 | auto | 10.1 | 8.2 (-19%) | 8.2 (-19%) | 8.3 (-17%) | 8.3 (-17%) | +| shr | 1x13 | inplace | 3.6 | 3.9 (+7%) | 3.3 (-10%) | 3.0 (-17%) | 3.0 (-17%) | +| shr | 4x13 | auto | 20.9 | 16.1 (-23%) | 16.0 (-23%) | 15.8 (-24%) | 15.8 (-24%) | +| shr | 4x13 | inplace | 4.7 | 4.9 (+5%) | 4.3 (-8%) | 4.1 (-13%) | 4.1 (-13%) | +| shr | 16x13 | auto | 25.8 | 20.0 (-22%) | 20.0 (-22%) | 20.2 (-21%) | 20.2 (-21%) | +| shr | 16x13 | inplace | 8.7 | 8.9 (+2%) | 8.7 (-1%) | 8.0 (-8%) | 8.0 (-8%) | +| shr | 256x13 | auto | 136.6 | 125.0 (-9%) | 125.2 (-8%) | 133.6 (-2%) | 133.7 (-2%) | +| shr | 256x13 | inplace | 93.7 | 99.1 (+6%) | 101.7 (+8%) | 98.3 (+5%) | 98.3 (+5%) | +| shr | 2000x13 | auto | 949.9 | 749.0 (-21%) | 749.6 (-21%) | 788.0 (-17%) | 788.0 (-17%) | +| shr | 2000x77 | auto | 1086.8 | 749.5 (-31%) | 750.0 (-31%) | 790.0 (-27%) | 790.0 (-27%) | +| shr | 2000x13 | inplace | 657.1 | 716.5 (+9%) | 737.4 (+12%) | 711.5 (+8%) | 711.7 (+8%) | +| shr | 2000x77 | inplace | 765.5 | 740.8 (-3%) | 739.3 (-3%) | 712.1 (-7%) | 712.1 (-7%) | +| shr | 131072x13 | auto | 98933.2 | 48304.4 (-51%) | 48328.0 (-51%) | 50322.4 (-49%) | 50313.5 (-49%) | +| shr | 131072x13 | inplace | 43515.1 | 46701.2 (+7%) | 48481.1 (+11%) | 46567.5 (+7%) | 46580.6 (+7%) | + +- new64: 8 of 28 auto/inplace rows more than 3% slower than base64: shl 2000x13 inplace +9%, shr 2000x13 inplace +9%, shr 131072x13 inplace +7%, shl 131072x13 inplace +7%, shl 256x13 inplace +7%, shr 1x13 inplace +7%, shr 256x13 inplace +6%, shr 4x13 inplace +5% +- v1: 6 of 28 auto/inplace rows more than 3% slower than base64: shl 2000x13 inplace +13%, shr 2000x13 inplace +12%, shr 131072x13 inplace +11%, shl 131072x13 inplace +11%, shl 256x13 inplace +10%, shr 256x13 inplace +8% +- v2: 6 of 28 auto/inplace rows more than 3% slower than base64: shl 2000x13 inplace +9%, shr 2000x13 inplace +8%, shr 131072x13 inplace +7%, shl 131072x13 inplace +7%, shl 256x13 inplace +6%, shr 256x13 inplace +5% +- v3: 6 of 28 auto/inplace rows more than 3% slower than base64: shl 2000x13 inplace +9%, shr 2000x13 inplace +8%, shr 131072x13 inplace +7%, shl 131072x13 inplace +7%, shl 256x13 inplace +6%, shr 256x13 inplace +5% + +M4 (appleclang): + +| op | shape | row | base64 | new64 | v1 | v2 | v3 | +|---|---|---|---:|---:|---:|---:|---:| +| shl | 1x13 | auto | 18.5 | 12.2 (-34%) | 12.5 (-32%) | 12.3 (-34%) | 12.1 (-35%) | +| shl | 1x13 | inplace | 2.3 | 3.4 (+48%) | 2.5 (+8%) | 2.5 (+8%) | 2.5 (+8%) | +| shl | 4x13 | auto | 19.9 | 12.7 (-36%) | 13.0 (-35%) | 13.2 (-33%) | 13.1 (-34%) | +| shl | 4x13 | inplace | 3.6 | 5.2 (+46%) | 3.8 (+5%) | 3.7 (+4%) | 3.8 (+7%) | +| shl | 16x13 | auto | 21.4 | 15.7 (-27%) | 15.5 (-28%) | 15.5 (-28%) | 16.3 (-24%) | +| shl | 16x13 | inplace | 5.8 | 6.8 (+18%) | 5.3 (-9%) | 6.3 (+9%) | 6.5 (+12%) | +| shl | 256x13 | auto | 85.6 | 41.3 (-52%) | 41.9 (-51%) | 56.3 (-34%) | 63.0 (-26%) | +| shl | 256x13 | inplace | 36.2 | 44.9 (+24%) | 29.7 (-18%) | 40.1 (+11%) | 48.0 (+32%) | +| shl | 2000x13 | auto | 639.0 | 264.0 (-59%) | 267.0 (-58%) | 395.3 (-38%) | 453.0 (-29%) | +| shl | 2000x77 | auto | 806.2 | 342.5 (-58%) | 478.0 (-41%) | 394.8 (-51%) | 452.9 (-44%) | +| shl | 2000x13 | inplace | 282.3 | 345.7 (+22%) | 196.1 (-31%) | 315.7 (+12%) | 375.2 (+33%) | +| shl | 2000x77 | inplace | 424.7 | 228.6 (-46%) | 230.9 (-46%) | 315.6 (-26%) | 377.1 (-11%) | +| shl | 131072x13 | auto | 48761.7 | 18032.3 (-63%) | 18150.9 (-63%) | 25035.9 (-49%) | 28931.4 (-41%) | +| shl | 131072x13 | inplace | 19766.8 | 22825.0 (+15%) | 18524.2 (-6%) | 20843.9 (+5%) | 24609.1 (+24%) | +| shr | 1x13 | auto | 9.2 | 6.7 (-27%) | 6.9 (-25%) | 6.8 (-26%) | 6.7 (-27%) | +| shr | 1x13 | inplace | 2.4 | 3.1 (+30%) | 3.3 (+40%) | 2.8 (+17%) | 2.8 (+18%) | +| shr | 4x13 | auto | 18.4 | 14.3 (-22%) | 15.1 (-18%) | 14.0 (-24%) | 14.3 (-22%) | +| shr | 4x13 | inplace | 3.3 | 4.5 (+37%) | 3.7 (+13%) | 3.3 (+1%) | 3.5 (+8%) | +| shr | 16x13 | auto | 21.5 | 18.1 (-16%) | 18.7 (-13%) | 18.1 (-16%) | 18.2 (-15%) | +| shr | 16x13 | inplace | 5.1 | 6.1 (+19%) | 5.2 (+1%) | 5.5 (+8%) | 5.7 (+11%) | +| shr | 256x13 | auto | 87.1 | 42.5 (-51%) | 43.1 (-50%) | 43.6 (-50%) | 48.3 (-45%) | +| shr | 256x13 | inplace | 35.8 | 44.6 (+25%) | 30.4 (-15%) | 39.7 (+11%) | 47.3 (+32%) | +| shr | 2000x13 | auto | 657.7 | 262.0 (-60%) | 258.7 (-61%) | 289.1 (-56%) | 340.8 (-48%) | +| shr | 2000x77 | auto | 1015.8 | 251.8 (-75%) | 266.6 (-74%) | 299.9 (-70%) | 339.2 (-67%) | +| shr | 2000x13 | inplace | 282.0 | 345.0 (+22%) | 197.8 (-30%) | 313.6 (+11%) | 374.1 (+33%) | +| shr | 2000x77 | inplace | 420.1 | 195.8 (-53%) | 195.7 (-53%) | 314.8 (-25%) | 377.9 (-10%) | +| shr | 131072x13 | auto | 50334.1 | 18098.3 (-64%) | 18178.1 (-64%) | 18015.5 (-64%) | 20633.5 (-59%) | +| shr | 131072x13 | inplace | 19886.4 | 22564.1 (+13%) | 18551.6 (-7%) | 20782.3 (+5%) | 24608.1 (+24%) | + +- new64: 12 of 28 auto/inplace rows more than 3% slower than base64: shl 1x13 inplace +48%, shl 4x13 inplace +46%, shr 4x13 inplace +37%, shr 1x13 inplace +30%, shr 256x13 inplace +25%, shl 256x13 inplace +24%, shl 2000x13 inplace +22%, shr 2000x13 inplace +22%, shr 16x13 inplace +19%, shl 16x13 inplace +18%, shl 131072x13 inplace +15%, shr 131072x13 inplace +13% +- v1: 4 of 28 auto/inplace rows more than 3% slower than base64: shr 1x13 inplace +40%, shr 4x13 inplace +13%, shl 1x13 inplace +8%, shl 4x13 inplace +5% +- v2: 11 of 28 auto/inplace rows more than 3% slower than base64: shr 1x13 inplace +17%, shl 2000x13 inplace +12%, shr 2000x13 inplace +11%, shr 256x13 inplace +11%, shl 256x13 inplace +11%, shl 16x13 inplace +9%, shl 1x13 inplace +8%, shr 16x13 inplace +8%, shl 131072x13 inplace +5%, shr 131072x13 inplace +5%, shl 4x13 inplace +4% +- v3: 12 of 28 auto/inplace rows more than 3% slower than base64: shl 2000x13 inplace +33%, shr 2000x13 inplace +33%, shl 256x13 inplace +32%, shr 256x13 inplace +32%, shl 131072x13 inplace +24%, shr 131072x13 inplace +24%, shr 1x13 inplace +18%, shl 16x13 inplace +12%, shr 16x13 inplace +11%, shl 1x13 inplace +8%, shr 4x13 inplace +8%, shl 4x13 inplace +7% + +Reading: no variant keeps every `auto`/`inplace` row within 3% of the baseline on both machines. On M4 (clang) V1 is the +best: it keeps the `auto` gains (-51..-64% at >= 256 limbs), makes every medium and large in-place row faster than the +baseline (-6..-31%), and leaves four small-shape in-place rows more than 3% slower, all by under 1 ns; the register-carried +loops (V2, V3) are slower than the original two-load form under clang. On x64 (GCC) V2/V3 improve the small in-place rows +by 8-17% against the baseline and equal `new64` at >= 256 limbs (+6-9%), at the price of 4-7 points on shr `auto`; the +baseline in-place path is still 6-9% faster there than any variant. ## 4. Plan targets -Targets from the plan, with the achieved values (median of the four runs). Kernel-row noise at <= 16 limbs is 1-2 ns +Targets from the plan, with the achieved values (median of four runs, d689f75). Kernel-row noise at <= 16 limbs is 1-2 ns (section 8), so a miss of less than ~1.5 ns on an `inplace - kernel` target is within noise. | target | x64 | M4 | |---|---|---| -| `inplace - kernel` <= 3 ns for add/sub/shl/shr at 2-16 limbs | **partly met**: add 3.7/2.6/2.5/4.3 (2/4/8/16 limbs, before 3.5/2.5/2.8/4.2), sub 3.0/2.8/2.6/3.2, shl 1.1/1.7, shr 1.1/-0.2. The in-place path was already near the kernel at these sizes; essentially unchanged | **met**: add 2.5/1.6/0.6/-2.0, sub 2.1/1.7/0.6/-2.5, shifts 0.0..1.2 | -| `auto - floor` <= 3 ns at <= 16 limbs, add/sub/shl/shr | **not met except shl**: add 5.6/4.3/4.2/5.3 (before 7.6/7.2/6.9/9.8), sub 5.8/5.8/5.6/5.7, shl 2.3/1.9 (met), shr 5.0/4.4 | **mostly not met**: add 5.6/4.1/3.1/3.2, sub 5.3/4.3/3.8/2.4, shl -0.1/3.9, shr 2.0/5.4 | -| `auto - floor` <= 5 ns at <= 16 limbs, mul/sqr | **met** for mul 2.2-4.1 (before 12.6-17.0); sqr 5.4 (4x4, marginal) and 3.7 (16x16) | **met** for mul 2.8-4.8 (before 9.2-16.3); sqr 5.2 (4x4, marginal) and 2.9 | -| x64 add 1000 `auto`: 840 -> <= 650 ns | **not met**: add 1024x1024 841 -> 800 ns (2000x2000 1721 -> 1535) | n/a (M4: 552 -> 450 ns) | -| divrem 8x4 `auto - kernel`: 66 -> <= 2 floors + 5 ns (i.e. `auto - floor` <= 5) | **not met**: `auto - kernel` 67.7 -> 43.8, `auto - floor` 53.0 -> 27.1 | **not met**: `auto - kernel` 50.1 -> 29.0, `auto - floor` 35.5 -> 14.9 | -| medium and large rows: no regression > 3% | **not met**: `inplace` add/sub +23..+35% at >= 64 limbs, shifts +13%, decimal `fromchars` +8..+11% at 64-256 limbs-worth of digits (section 3); `auto` rows and the large spot checks are within 3% | **met for medium and large rows**: none regresses; in the small band add 1x1 and 2x2 `auto` are 0.4-0.9 ns slower (+4%, +13%) | +| `inplace - kernel` <= 3 ns for add/sub/shl/shr at 2-16 limbs | **mostly met**: add 3.9/2.7/2.8/3.6 (2/4/8/16 limbs, before 3.5/2.5/2.7/4.3), sub 2.7/2.8/3.0/2.6, shl 1.8/1.7, shr 1.5/0.3 (add 2x2 and 16x16 are within kernel noise of the line) | **met**: add 2.7/1.9/0.8/-1.8, sub 2.4/2.1/0.9/-2.3, shl 1.7/2.8, shr 1.0/2.0 | +| `auto - floor` <= 3 ns at <= 16 limbs, add/sub/shl/shr | **not met except shifts**: add 5.7/4.5/4.4/5.6 (before 7.6/7.1/6.8/9.8; 1x1 -4.4), sub 5.8/5.9/5.9/5.7, shl 2.3/1.9 (met), shr 4.1/2.9 | **mostly not met**: add 6.3/4.2/3.6/3.7, sub 5.4/5.2/4.3/3.0, shl 0.0/3.3, shr 1.8/4.8 | +| `auto - floor` <= 5 ns at <= 16 limbs, mul/sqr | **met**: mul 1.8-4.2 (before 13.1-17.4); sqr 5.5 (4x4, marginal) and 4.2 | **met**: mul 2.9-4.8 (before 9.2-15.7); sqr 5.3 (4x4, marginal) and 4.0 | +| x64 add 1000 `auto`: 840 -> <= 650 ns | **met**: add 1024x1024 842 -> 599 ns (2000x2000 1722 -> 1153; `auto - floor` 4-5 ns at 64-2000 limbs) | n/a (M4: 565 -> 450 ns) | +| divrem 8x4 `auto - kernel`: 66 -> <= 2 floors + 5 ns (i.e. `auto - floor` <= 5) | **not met**: `auto - kernel` 67.0 -> 43.8, `auto - floor` 52.9 -> 26.3 | **not met**: `auto - kernel` 49.8 -> 28.8, `auto - floor` 34.8 -> 14.6 | +| medium and large rows: no regression > 3% | **not met only for in-place shifts**: 256x13 +6-7%, 2000x13 +9%; every other medium and large `auto` and `inplace` row, and every large spot check, is within 3% | **not met only for in-place shifts**: 256x13 +23%, 2000x13 +22%; the other medium and large rows and spot checks are within 3% (largest M4 mul 2000x2000 +2.5%) | The allocation targets in `alloc_count.test.cpp` all hold (section 5). @@ -342,8 +496,8 @@ and products have the full limb count; `a / d` is n limbs over n/2): ## 6. Header basecase shortcut (`mul_header_basecase_enabled`) -`new64` (shortcut on) against a build of the same tree with `mul_header_basecase_enabled = false` (edited in a scratch copy, -not committed), interleaved, three runs each, `auto` row: +Measured on the 9145b4e tree, before the follow-ups: `new64` (shortcut on) against a build of the same tree with +`mul_header_basecase_enabled = false` (edited in a scratch copy, not committed), interleaved, three runs each, `auto` row: x64: @@ -375,14 +529,17 @@ M4: Verdict: on x64 the shortcut is worth 3.8-5.5 ns on mul 2x2..12x12 and 4-5 ns on sqr 4 and 16 (the 16x16 difference of 20 ns is noisy: one of the three shortcut-off runs was 99.8 ns and two were 115 ns, the rest of the data show ~4 ns), clearly above -the 1 ns threshold. On M4 it saves 0.1-1.1 ns on mul 3..16 (in the noise of the runs; 2x2 is 0.5 ns slower with it) and 1.7-1.9 ns on sqr 4 and 16, so -it is at best marginal there. The x64 `fromchars` regression in section 3 appears only with the shortcut compiled in. The -trade-off is therefore: -4..5 ns on small x64 mul/sqr (13-20% of those rows) against +8-11% on decimal `fromchars` at -64-256 limbs-worth of digits on x64 with GCC 14. +the 1 ns threshold. On M4 it is worth -1.1 to +0.5 ns on mul 2..16 (in the noise of the runs; 2x2 is 0.5 ns slower with it) and 1.7-1.9 ns on sqr 4 and 16, so +it is at best marginal there. The x64 `fromchars` regression seen at that commit appeared only with the shortcut compiled in, but its cause was a spilled +product in `mul_add_single_limb_in_place` (section 3.7), which is fixed; with the fix the shortcut has no known cost, so +the verdict is: keep it on x64 (-4..5 ns, 13-20% of the small mul/sqr rows) and it is harmless and marginally useful on M4. +The A/B was not repeated on d689f75. ## 7. Inline-capacity study -The same front-end code with the inline capacity of the integer type set to N = 64 (`big_int`), 128, 256 and 512 bits. +Measured on the 9145b4e tree (before the add/sub, shift and single-limb follow-ups and the mul-add fix); the study was not +repeated on d689f75, so small add/sub/shift rows are a few ns better there at every N. The same front-end code with the +inline capacity of the integer type set to N = 64 (`big_int`), 128, 256 and 512 bits. `sizeof`: 16, 24, 40 and 72 bytes. `auto` and `inplace` are medians of two runs (seeds 1 and 2, so divrem is the mean of seeds); the vecsort row sorts and sums a `std::vector` of 100000 one-limb values of mixed sign (copy-assign + `std::sort` + sum, ns per element; the builtin row is `std::vector`; the copy row is the copy-assign alone). @@ -525,31 +682,31 @@ Neutral summary of the trade-off (no default is recommended here): the same seeds. - The shift `kernel` rows include the copy-in of the source, so `auto - kernel` and `auto - floor` for shifts at >= 256 limbs are negative once `auto` is a single pass. -- The x64 numbers are GCC 14 with `-march=native`; the decimal `fromchars` regression (section 3) was seen only there. +- The x64 numbers are GCC 14 with `-march=native`; the decimal `fromchars` regression (section 3.7) was seen only there. + The loop-shape choices for add/sub and the shift variants were measured with GCC 14 on x64 and appleclang on M4 only; + clang on x64 and GCC on AArch64 were not measured. - The 2-run study and the 3-run shortcut comparison are small samples: treat differences below ~1 ns as noise. ## 9. Correctness matrix -- M4 (appleclang): `appleclang-debug` workflow (MaxSan) 1264/1264, `appleclang-release` 1296/1296, - `appleclang-release-namespace` 1282/1282 (ctest counts include skipped benches). -- x64 box: `llvm-debug` (MaxSan) 1341/1341 and `llvm-release` (clang-23, `-march=native`) 1341/1341. GCC (g++-14, g++-13, - IFMA=OFF g++-14, and g++-14 debug without NDEBUG): every target builds except the two test targets - `front_end_add_sub` and `front_end_shift`, which fail `-Werror=padded` at - `tests/beman/big_int/front_end_reference.hpp:44` (`std::vector mag;` in struct `ref`). With - `-Wno-error=padded` both pass on gcc-14 release and debug (15 and 12 tests); all other GCC tests pass (1296/1298 with the - two targets not built). -- Docker linux/arm64 (GCC 16, `ctest -E float_construction`): `gcc-release` and `gcc-debug` 1225/1227 passed, the same two - `front_end_*` targets failing to build on `-Werror=padded`. -- 32-bit limbs (`llvm-release` with `-DBEMAN_BIG_INT_FORCED_LIMB_WIDTH=32`, x64): `inline_tail`, `span_primitives`, - `front_end_shift`, `dispatch_contract` and `alloc_count` compile and pass. `front_end_add_sub` - (`*.IntegerOperands`, 3 tests) and `muldiv_frontend` (`CompoundWithIntegers`, aborts on a division by zero reference) - fail at 32-bit limbs because the tests build the reference operand from a 64-bit `v` truncated to one 32-bit limb - (`front_end_add_sub.test.cpp:93`, `muldiv_frontend.test.cpp:395`); `Allocation.MoveAssignStealsHeapSrcEvenWhenDstLarger` - replaces the baseline's equally failing `MoveAssignReusesDstStorageWhenLarger` (it assumes 64-bit limbs). Every other - 32-bit failure (bitwise, increment_decrement, karatsuba, pmr, wide_ops fail to compile; CompoundSubtraction, BitShift, - Addition and IntegerAssignment cases) is in the cf1cf54 tree as well. -- GCC with 32-bit limbs: `basic_big_int.hpp:643` (`shift_max` narrowing; line 636 at cf1cf54), `base_conversion.hpp:144` - (`-Wpadded`) and `base_tables.hpp:66` (`-Wconversion`) are errors at cf1cf54 too. +All at d689f75 (ctest counts include skipped benches): + +- M4 (appleclang): `appleclang-debug` workflow (MaxSan) 1304/1304, `appleclang-release` 1304/1304, + `appleclang-release-namespace` 1290/1290. +- Docker linux/arm64 (GCC 16, `ctest -E float_construction`): `gcc-release` and `gcc-debug` 1292/1292 each. +- x64 box: `llvm-debug` (MaxSan) and `llvm-release` (clang-23, `-march=native`) 1381/1381 each; `gcc-release` with g++-14 + and with g++-13 (`-march=native`), the IFMA=OFF g++-14 build and `gcc-debug` (g++-14, no NDEBUG, so the debug poison fill + and the debug assertions of the new primitives are compiled) 1363/1363 each, with no build failures and no + `-Wno-error` overrides. +- 32-bit limbs (`llvm-release`, `-DBEMAN_BIG_INT_FORCED_LIMB_WIDTH=32`, x64): 36 of 1088 tests fail, all of them failures + that the cf1cf54 tree has as well (bitwise, increment_decrement, karatsuba, pmr and wide_ops do not compile; some + Addition, Subtraction, CompoundSubtraction, BitShift and IntegerAssignment cases assume 64-bit limbs; the baseline has 40 + failures). `inline_tail`, `span_primitives`, `front_end_add_sub`, `front_end_shift`, `muldiv_frontend`, + `dispatch_contract`, `alloc_count` (85 tests) and `allocation` (70 tests) all pass at 32-bit limbs. +- At 9145b4e (the first measurement) the GCC builds failed on `front_end_reference.hpp:44` (`-Werror=padded`) and the + new `front_end_add_sub` and `muldiv_frontend` tests failed at 32-bit limbs through 64-bit assumptions; both were fixed + in the follow-ups. + ## 10. Reproducing @@ -566,7 +723,11 @@ tools/gap_sweep.sh out.csv --seed S --ops add,sub,shl,shr,mul,sqr,divrem,f # mul 2000x2000 and 16384x16384; divrem 4096x2048; tochars/fromchars 10000x10 # study: tools/gap_sweep.sh out.csv --seed S --ops add,sub,shl,shr,mul,sqr,divrem --bands small # tools/gap_sweep.sh out.csv --ops vecsort --bands medium -# tables: python3 -I tools/item1_tables.py item1 x64 (or: mac) [small medium spots shortcut study] +# tables: python3 -I tools/item1_tables.py item1 x64r3 (x64, mac, macr3 for the other sets) [small medium spots shortcut study] +# regression check (rows more than 3% slower than base64): python3 -I tools/item1_regress.py item1 x64r3 3 [rows] +# in-place shift A/B tables: python3 -I tools/item1_vshift.py item1 x64 (or: mac) +# re-measurement driver (base64 vs new64 vs previous build): the same loop as tools/item1_bench.sh over +# --ops add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars --bands small,medium # allocation counts: cmake --build --target beman.big_int.tests.alloc_count; run the binary and read the # "[alloc_count]" lines ``` diff --git a/tests/beman/big_int/perf/tools/__pycache__/item1_tables.cpython-314.pyc b/tests/beman/big_int/perf/tools/__pycache__/item1_tables.cpython-314.pyc index ba78bca0ce7040de4cfb8cc4cc3152f7f61db663..92877d405c1505e0f870b863c88927b55d122e6f 100644 GIT binary patch delta 1964 zcmY*YZERCz6u$56y&LP+wOzNaYhmqH`*AnceX@nosBVp__4v9A1D(^CA0=rqoVs%&yYzQnCs|RZZ+W@vivrx>e+RBBvMJ)xis%3zfYwRU)n`#HIG*YIP zvoMJg2fIwFYMUTa5vi~U-FpNf?u@vq1hq2aED}_Alc9xZ$KVzsPPKw96CZIhkLV*V z)-8I;YBmD6hE0l%q&fYCIAW19`SEDlXPY*V5q8slgT&a|VIM$-9LR`6yH-Zr ztpd{n}Kou}Qz1oMxB()#P>dgP*$o zKftm9x~3DbAVcce2hBCCJ?N08MatN@Ko>dBmI8YVPhe$U{v_KTER(0eKhItYx@~V^ zCJNA_h_oM_!|eT_LdMwL;Ck`~vnmhEDF~lP_bJB;Bs@3R#LoU{8Yi=Cyg5js>{RoM zb(bJ94{r>wA}b_?#gf{0hEvul>G=Ay!w)F#)4f$Y{EbH|OWBr|K^Yenxv4ziinP8j9y)-Lxngs20-itsc-6N3KzJ<--KUj_f;^iEe7b-}q@QAl1J+Z-Y#s)_NBBw$6d}Kf@ZSb}f4w2TwcfS|RlIGHZ=5wk z05+M&{ppY3Koe(Bga9)OFf_f3B8lG7(jQ@(!%v!KF&_dM)EJ-?&+rjM9@NIsc=mBr z<$>xp7U6(Z={?*ZW?M3V^9x3P27q3$Y<3s`E*F)sGz~@r)bMIE7{ZQM(%1xWT+PcV z;_j3gI1l{Fle-0hXqU#@PVlMm1YjMXLFar4=XS{SV#O~t73Xs~oFBhPH|JY6<6TxUz| ztGy!iVCEKpBGb>1e~yszi!fJss0{8bH~0yHE_B@f7j=`w*Z=?k delta 1889 zcmY+EYfPI}7{}l9mU3yi6d072LAglbg{|BQL^r?)VHzX2Gd5Wi39z}z7?snSxSQ=X zMnkgbcJLMx6(vrLx7p|i+$M;~oKu;2WyYA8nAJ~2Kgkz;{--ZXZNl&Tpa1im=bY#5 zTV6lO)+4O4CNsmP(Pye^aiq6Q(|$*=@yRyD-;<{+`@$Zc>eNPAD4lzFno=3u=F@mt z594-oO{cY-;tX@mr1d6>vv>(F_37L}aRtTM+{-I{dTnYbQ}w7u4_?I$szHw$vj~7dj6xm;b^!Z=R@NuWycKLv-tO%zJc%vUz+;3Up1(If>*MmQ*TY_vOWrc}g#6Ph^8P>8x`k#D zPs#DhJJ}g|p|XQbOI9^zfA&Vl=j2pV-uCAyo<{F{LQIQj%dLB^^4*tq&Na@ZoF7@? zyZ;d{U=N;2x1ozZ1WywTyZp7;ZEr(d1O((-)y-@|RvX)_uaGer9Wf@;*kSo^!vy<8 zPBd1rF&S-q#5zOC1zG1WOhxCeUNI_n`Hv}kQLgwG>~El*8v86RsWMCQ<0cP#OI~Yw zNyRJjSo4e^~*JOSFKMliM7p>#fFdcss87UN|-(DMme zJ$_x>olv8+S);UBvlBI6#P=%wWrDsE*F2#{X{yP`{ZwEU?LyI_oN9HldHGJOv(G%B z7ruG0(xzVm{~H4JQF=K+Uxl`c3$%!fK*Gx}{cXc}_`jTBeuQvVzTLK!ep{<;MYcc4 kVDuN9kgWYk+FEv6njW#P<;zp;end7slKfYJTy9_a55--q#Q*>R diff --git a/tests/beman/big_int/perf/tools/item1_regress.py b/tests/beman/big_int/perf/tools/item1_regress.py new file mode 100644 index 00000000..4771fb0f --- /dev/null +++ b/tests/beman/big_int/perf/tools/item1_regress.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# SPDX-License-Identifier: BSL-1.0 +# item1_regress.py [threshold_percent] [rows] +# Lists every (op, shape, row) where the new64 binary is more than the threshold (default 3%) slower than base64, +# using the same aggregation as item1_tables.py (median of runs; divrem up to 32 limbs: mean of seeds). Rows default to +# auto,inplace. Run with python3 -I. +import os +import sys + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +import item1_tables as t # noqa: E402 + + +def main(): + d, prefix = sys.argv[1], sys.argv[2] + thr = float(sys.argv[3]) if len(sys.argv) > 3 else 3.0 + rows = sys.argv[4].split(",") if len(sys.argv) > 4 else ["auto", "inplace"] + base = t.sweep_runs(d, prefix, "base64") + new = t.sweep_runs(d, prefix, "new64") + worse, total = [], 0 + for key in sorted(base): + if key[3] not in rows: + continue + b, n = t.agg(base, key), t.agg(new, key) + if b is None or n is None: + continue + total += 1 + pct = (n - b) / b * 100 + if pct > thr: + worse.append((pct, key, b, n)) + print(f"{len(worse)} of {total} rows ({','.join(rows)}) are more than {thr}% slower than base64") + for pct, key, b, n in sorted(worse, reverse=True): + print(f" {key[0]} {key[1]}x{key[2]} {key[3]}: {b:.1f} -> {n:.1f} ns ({pct:+.1f}%, {n - b:+.1f} ns)") + + +if __name__ == "__main__": + main() diff --git a/tests/beman/big_int/perf/tools/item1_tables.py b/tests/beman/big_int/perf/tools/item1_tables.py index ce75749c..2f6137d0 100644 --- a/tests/beman/big_int/perf/tools/item1_tables.py +++ b/tests/beman/big_int/perf/tools/item1_tables.py @@ -82,6 +82,7 @@ def arrow(a, b, digits=1): "sqr": [(4, 4), (16, 16)], "divrem": [(2, 1), (8, 4), (32, 16)], "fromchars": [(4, 10), (16, 10)], + "tochars": [(4, 10), (16, 10)], } MEDIUM = { "add": [(64, 64), (256, 256), (1024, 1024), (2000, 2000)], @@ -92,6 +93,7 @@ def arrow(a, b, digits=1): "sqr": [(64, 64), (512, 512), (2000, 2000)], "divrem": [(128, 64), (512, 256), (2000, 1000), (4000, 2000), (2000, 100), (65536, 1)], "fromchars": [(64, 10), (256, 10), (2000, 10)], + "tochars": [(64, 10), (256, 10), (2000, 10)], } diff --git a/tests/beman/big_int/perf/tools/item1_vshift.py b/tests/beman/big_int/perf/tools/item1_vshift.py new file mode 100644 index 00000000..e7925c58 --- /dev/null +++ b/tests/beman/big_int/perf/tools/item1_vshift.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# SPDX-License-Identifier: BSL-1.0 +# item1_vshift.py > table.md +# Median over runs of the in-place shift A/B (_vshift__run.csv), one row per op/shape/row with the +# percentage against base64. Run with python3 -I. +import glob +import os +import statistics +import sys +from collections import defaultdict + +VARIANTS = ["base64", "new64", "v1", "v2", "v3"] + + +def main(): + d, prefix = sys.argv[1], sys.argv[2] + data = defaultdict(lambda: defaultdict(list)) + for v in VARIANTS: + for p in sorted(glob.glob(os.path.join(d, f"{prefix}_vshift_{v}_run*.csv"))): + for line in open(p): + if line.startswith("op,") or not line.strip(): + continue + f = line.strip().split(",") + data[(f[0], int(f[2]), int(f[3]), f[1])][v].append(float(f[6])) + print("| op | shape | row | " + " | ".join(VARIANTS) + " |") + print("|---|---|---|" + "---:|" * len(VARIANTS)) + worst = {v: [] for v in VARIANTS[1:]} + for key in sorted(data, key=lambda k: (k[0], k[1], k[3] != "auto", k[3] != "inplace", k[3])): + cells = [] + base = statistics.median(data[key]["base64"]) if data[key].get("base64") else None + for v in VARIANTS: + vals = data[key].get(v) + if not vals: + cells.append("-") + continue + m = statistics.median(vals) + if v == "base64" or base is None: + cells.append(f"{m:.1f}") + else: + pct = (m - base) / base * 100 + cells.append(f"{m:.1f} ({pct:+.0f}%)") + if key[3] in ("auto", "inplace"): + worst[v].append((pct, key)) + print(f"| {key[0]} | {key[1]}x{key[2]} | {key[3]} | " + " | ".join(cells) + " |") + print() + for v in VARIANTS[1:]: + over = [(p, k) for p, k in worst[v] if p > 3.0] + print(f"- {v}: {len(over)} of {len(worst[v])} auto/inplace rows more than 3% slower than base64" + + (": " + ", ".join(f"{k[0]} {k[1]}x{k[2]} {k[3]} {p:+.0f}%" for p, k in sorted(over, reverse=True)) if over else "")) + + +if __name__ == "__main__": + main() From e6c457ec3a07a70fef164d52e1605ed798301091 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 14:30:42 -0400 Subject: [PATCH 33/36] Update item 1 results for b823c5f: shift fix re-measured on x64 and M4, final regression list and open items --- tests/beman/big_int/perf/gmp_gap_analysis.md | 4 +- .../big_int/perf/item1/macr4_base64_big1a.csv | 7 + .../big_int/perf/item1/macr4_base64_big1b.csv | 7 + .../big_int/perf/item1/macr4_base64_big2a.csv | 7 + .../big_int/perf/item1/macr4_base64_big2b.csv | 7 + .../perf/item1/macr4_base64_other_seed1a.csv | 127 ++++++++++++++++ .../perf/item1/macr4_base64_seed1a.csv | 82 ++++++++++ .../perf/item1/macr4_base64_seed1b.csv | 82 ++++++++++ .../perf/item1/macr4_base64_seed2a.csv | 82 ++++++++++ .../perf/item1/macr4_base64_seed2b.csv | 82 ++++++++++ .../big_int/perf/item1/macr4_new64_big1a.csv | 7 + .../big_int/perf/item1/macr4_new64_big1b.csv | 7 + .../big_int/perf/item1/macr4_new64_big2a.csv | 7 + .../big_int/perf/item1/macr4_new64_big2b.csv | 7 + .../perf/item1/macr4_new64_other_seed1a.csv | 127 ++++++++++++++++ .../big_int/perf/item1/macr4_new64_seed1a.csv | 82 ++++++++++ .../big_int/perf/item1/macr4_new64_seed1b.csv | 82 ++++++++++ .../big_int/perf/item1/macr4_new64_seed2a.csv | 82 ++++++++++ .../big_int/perf/item1/macr4_new64_seed2b.csv | 82 ++++++++++ .../big_int/perf/item1/x64r4_base64_big1a.csv | 7 + .../big_int/perf/item1/x64r4_base64_big1b.csv | 7 + .../big_int/perf/item1/x64r4_base64_big2a.csv | 7 + .../big_int/perf/item1/x64r4_base64_big2b.csv | 7 + .../perf/item1/x64r4_base64_other_seed1a.csv | 127 ++++++++++++++++ .../perf/item1/x64r4_base64_seed1a.csv | 82 ++++++++++ .../perf/item1/x64r4_base64_seed1b.csv | 82 ++++++++++ .../perf/item1/x64r4_base64_seed2a.csv | 82 ++++++++++ .../perf/item1/x64r4_base64_seed2b.csv | 82 ++++++++++ .../big_int/perf/item1/x64r4_new64_big1a.csv | 7 + .../big_int/perf/item1/x64r4_new64_big1b.csv | 7 + .../big_int/perf/item1/x64r4_new64_big2a.csv | 7 + .../big_int/perf/item1/x64r4_new64_big2b.csv | 7 + .../perf/item1/x64r4_new64_other_seed1a.csv | 127 ++++++++++++++++ .../big_int/perf/item1/x64r4_new64_seed1a.csv | 82 ++++++++++ .../big_int/perf/item1/x64r4_new64_seed1b.csv | 82 ++++++++++ .../big_int/perf/item1/x64r4_new64_seed2a.csv | 82 ++++++++++ .../big_int/perf/item1/x64r4_new64_seed2b.csv | 82 ++++++++++ .../big_int/perf/item1_frontend_results.md | 142 ++++++++++-------- .../__pycache__/item1_tables.cpython-314.pyc | Bin 16547 -> 16547 bytes 39 files changed, 2016 insertions(+), 62 deletions(-) create mode 100644 tests/beman/big_int/perf/item1/macr4_base64_big1a.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_base64_big1b.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_base64_big2a.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_base64_big2b.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_base64_other_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_base64_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_base64_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_base64_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_base64_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_new64_big1a.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_new64_big1b.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_new64_big2a.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_new64_big2b.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_new64_other_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_new64_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_new64_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_new64_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/macr4_new64_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_big1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_big1b.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_big2a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_big2b.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_other_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_big1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_big1b.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_big2a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_big2b.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_other_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_seed1a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_seed1b.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_seed2a.csv create mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_seed2b.csv diff --git a/tests/beman/big_int/perf/gmp_gap_analysis.md b/tests/beman/big_int/perf/gmp_gap_analysis.md index ff498a01..6308a928 100644 --- a/tests/beman/big_int/perf/gmp_gap_analysis.md +++ b/tests/beman/big_int/perf/gmp_gap_analysis.md @@ -529,8 +529,8 @@ Decision criteria applied (from the plan): Status of item 1: implemented on branch `opt_1`; results, targets met and not met, and the inline-capacity study are in [`item1_frontend_results.md`](item1_frontend_results.md) (small `auto` is now 2-5 ns above the allocation floor for -mul/sqr, 0-6 ns for shifts and 3-6 ns for add/sub; x64 add 1000 840 -> 600 ns, meeting the 650 ns goal; open item: the -in-place shift path is 6-9% slower than the baseline on x64 at >= 256 limbs and 22-24% on M4). +mul/sqr, 0-6 ns for shifts and 3-6 ns for add/sub; x64 add 1000 840 -> 600 ns, meeting the 650 ns goal; open items: x64 +GCC in-place shifts at >= 256 limbs are 5-8% slower than the baseline, and a few sub-nanosecond small in-place rows) Not recommended: asm for cmp (already faster than GMP on x64, parity on M4); asm for mul 32-512 limbs on x64 (IFMA beats GMP by 1.1-1.8x). diff --git a/tests/beman/big_int/perf/item1/macr4_base64_big1a.csv b/tests/beman/big_int/perf/item1/macr4_base64_big1a.csv new file mode 100644 index 00000000..58754d7f --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_base64_big1a.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,409,3,48701.81,46427.36,19.93 +shl,inplace,131072,13,497,3,20046.40,20036.59,19.99 +shl,kernel,131072,13,668,3,29786.93,29704.03,19.93 +shr,auto,131072,13,388,3,51212.09,51111.90,19.97 +shr,inplace,131072,13,496,3,20124.92,20033.64,19.95 +shr,kernel,131072,13,511,3,38351.60,38235.81,19.68 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_big1b.csv b/tests/beman/big_int/perf/item1/macr4_base64_big1b.csv new file mode 100644 index 00000000..62d0a727 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_base64_big1b.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,410,3,48857.21,48854.47,20.04 +shl,inplace,131072,13,502,3,19777.56,19751.33,19.86 +shl,kernel,131072,13,684,3,29291.36,29222.04,20.03 +shr,auto,131072,13,396,3,50423.93,50260.52,19.95 +shr,inplace,131072,13,506,3,19834.94,19761.12,20.06 +shr,kernel,131072,13,533,3,37527.13,37447.15,20.00 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_big2a.csv b/tests/beman/big_int/perf/item1/macr4_base64_big2a.csv new file mode 100644 index 00000000..8b2fac9e --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_base64_big2a.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,407,3,49094.90,49035.53,19.98 +shl,inplace,131072,13,505,3,19822.81,19783.50,20.02 +shl,kernel,131072,13,683,3,29293.62,29267.69,20.01 +shr,auto,131072,13,397,3,50278.65,50269.00,19.97 +shr,inplace,131072,13,505,3,19790.68,19781.11,19.99 +shr,kernel,131072,13,532,3,37566.73,37557.64,19.99 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_big2b.csv b/tests/beman/big_int/perf/item1/macr4_base64_big2b.csv new file mode 100644 index 00000000..03512cb4 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_base64_big2b.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,409,3,49080.79,49060.62,20.07 +shl,inplace,131072,13,504,3,19841.27,19826.84,20.25 +shl,kernel,131072,13,683,3,29299.11,29245.55,20.01 +shr,auto,131072,13,395,3,50449.79,50271.73,19.91 +shr,inplace,131072,13,505,3,19879.62,19836.47,20.09 +shr,kernel,131072,13,533,3,37565.35,37563.79,20.02 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_other_seed1a.csv b/tests/beman/big_int/perf/item1/macr4_base64_other_seed1a.csv new file mode 100644 index 00000000..8cd18e83 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_base64_other_seed1a.csv @@ -0,0 +1,127 @@ +# gap_sweep date 2026-10-06T18:28:11Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=add,sub,mul,sqr,divrem bands=small pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2960975,9,6.80,6.69,20.23 +add,inplace,1,1,3079180,9,3.24,2.99,19.73 +add,kernel,1,1,17459698,9,1.14,1.14,19.95 +add,floor,1,1,2067131,9,9.68,9.18,19.77 +add,gmp,1,1,13443945,9,1.49,1.48,20.14 +add,gmpz,1,1,6090978,9,3.00,2.97,18.77 +add,auto,2,2,1365892,9,14.77,14.47,20.30 +add,inplace,2,2,2651767,9,3.78,3.76,20.24 +add,kernel,2,2,14331388,9,1.43,1.40,20.39 +add,floor,2,2,2021824,9,9.84,9.76,21.08 +add,gmp,2,2,11443023,9,1.99,1.75,21.79 +add,gmpz,2,2,6573911,9,4.99,3.04,27.30 +add,auto,4,4,1257008,9,15.69,15.49,19.76 +add,inplace,4,4,2669930,9,3.74,3.73,20.00 +add,kernel,4,4,10452646,9,1.92,1.91,20.11 +add,floor,4,4,1922275,9,10.38,10.28,20.12 +add,gmp,4,4,11471325,9,1.74,1.73,20.05 +add,gmpz,4,4,5086066,9,5.08,4.37,23.89 +add,auto,8,8,1289904,9,15.98,15.67,20.59 +add,inplace,8,8,1910273,9,5.15,5.09,19.74 +add,kernel,8,8,5565208,9,3.62,3.51,20.15 +add,floor,8,8,1609018,9,13.05,12.48,20.87 +add,gmp,8,8,8751619,9,2.31,2.28,20.21 +add,gmpz,8,8,4422595,9,4.37,4.27,20.15 +add,auto,16,16,875129,9,22.83,22.53,19.97 +add,inplace,16,16,995751,9,10.12,9.98,20.17 +add,kernel,16,16,2566004,9,7.77,7.68,19.93 +add,floor,16,16,1405919,9,14.42,13.93,20.19 +add,gmp,16,16,5989677,9,3.32,3.23,19.81 +add,gmpz,16,16,4554427,9,4.34,4.08,19.98 +sub,auto,1,1,2736307,9,7.68,7.34,20.94 +sub,inplace,1,1,2872186,9,3.48,3.40,20.04 +sub,kernel,1,1,19040728,9,1.06,1.04,20.29 +sub,floor,1,1,11203624,9,1.79,1.77,20.03 +sub,gmp,1,1,13136770,9,1.53,1.52,20.05 +sub,gmpz,1,1,7166767,9,2.78,2.75,20.23 +sub,auto,2,2,1292454,9,15.64,15.40,20.26 +sub,inplace,2,2,3005881,9,3.43,3.34,20.71 +sub,kernel,2,2,13909214,9,1.42,1.40,19.86 +sub,floor,2,2,2092400,9,9.77,9.40,20.32 +sub,gmp,2,2,11479456,9,1.97,1.74,21.60 +sub,gmpz,2,2,6682545,9,3.00,2.98,20.03 +sub,auto,4,4,1244340,9,15.98,15.65,19.81 +sub,inplace,4,4,2774414,9,4.00,3.60,22.67 +sub,kernel,4,4,9845141,9,1.95,1.94,19.21 +sub,floor,4,4,1983281,9,9.98,9.95,19.80 +sub,gmp,4,4,11469984,9,1.74,1.74,20.04 +sub,gmpz,4,4,6624665,9,3.00,2.99,19.92 +sub,auto,8,8,1229452,9,16.60,16.07,19.01 +sub,inplace,8,8,1917085,9,5.34,5.19,20.39 +sub,kernel,8,8,5725627,9,3.50,3.49,20.07 +sub,floor,8,8,1749788,9,11.63,11.26,20.43 +sub,gmp,8,8,8934338,9,2.24,2.23,20.04 +sub,gmpz,8,8,5722574,9,3.49,3.48,20.16 +sub,auto,16,16,1081421,9,18.29,17.96,19.72 +sub,inplace,16,16,1068345,9,11.66,9.44,24.46 +sub,kernel,16,16,2600403,9,7.74,7.65,20.13 +sub,floor,16,16,1299397,9,14.95,14.87,19.51 +sub,gmp,16,16,6117175,9,3.16,3.11,19.44 +sub,gmpz,16,16,4639910,9,4.25,4.23,19.79 +mul,auto,1,1,1275850,9,15.63,15.27,19.92 +mul,gmp,1,1,5357266,9,3.74,3.73,20.02 +mul,gmpz,1,1,7289284,9,2.74,2.73,20.06 +mul,auto,2,2,775119,9,30.08,25.80,22.66 +mul,kernel,2,2,3058634,9,6.57,6.48,20.04 +mul,floor,2,2,1362177,9,14.68,14.17,19.93 +mul,gmp,2,2,4457638,9,4.73,4.50,20.83 +mul,gmpz,2,2,3055301,9,6.55,6.54,20.04 +mul,auto,3,3,687329,9,29.23,29.11,20.18 +mul,kernel,3,3,2430677,9,8.21,8.20,20.03 +mul,floor,3,3,1199363,9,17.18,16.70,20.62 +mul,gmp,3,3,3149165,9,6.23,6.12,19.74 +mul,gmpz,3,3,2357677,9,8.14,8.12,19.22 +mul,auto,4,4,659007,9,29.75,29.49,19.72 +mul,kernel,4,4,1796106,9,11.31,11.10,20.32 +mul,floor,4,4,1190494,9,16.85,16.71,20.07 +mul,gmp,4,4,2472456,9,8.16,8.06,19.84 +mul,gmpz,4,4,1888610,9,11.00,10.95,20.80 +mul,auto,6,6,605591,9,33.32,32.90,20.16 +mul,kernel,6,6,1057718,9,18.97,18.83,20.12 +mul,floor,6,6,820211,9,23.52,23.36,19.38 +mul,gmp,6,6,1388174,9,14.36,14.23,19.98 +mul,gmpz,6,6,1135579,9,19.35,18.41,21.81 +mul,auto,8,8,471568,9,42.27,41.60,19.91 +mul,kernel,8,8,864951,9,23.07,22.99,19.96 +mul,floor,8,8,542412,9,37.51,36.99,20.34 +mul,gmp,8,8,873124,9,23.01,22.65,20.05 +mul,gmpz,8,8,755356,9,25.07,24.26,19.22 +mul,auto,12,12,319459,9,62.25,62.01,20.03 +mul,kernel,12,12,473916,9,41.22,40.92,19.58 +mul,floor,12,12,407742,9,49.27,48.89,20.05 +mul,gmp,12,12,442944,9,45.02,44.09,19.88 +mul,gmpz,12,12,415416,9,47.68,46.84,19.79 +mul,auto,16,16,207170,9,95.26,94.72,19.79 +mul,kernel,16,16,284140,9,69.68,69.59,19.82 +mul,floor,16,16,255363,9,78.54,78.25,20.12 +mul,gmp,16,16,258188,9,77.67,77.45,20.09 +mul,gmpz,16,16,250016,9,79.50,79.07,19.94 +sqr,auto,4,4,694353,9,29.34,29.08,20.46 +sqr,kernel,4,4,1763360,9,11.33,11.16,19.95 +sqr,floor,4,4,1216740,9,16.49,16.42,20.11 +sqr,gmp,4,4,3102889,9,6.45,6.44,20.05 +sqr,gmpz,4,4,2119307,9,9.46,9.43,20.14 +sqr,auto,16,16,218292,9,89.71,88.91,19.57 +sqr,kernel,16,16,316053,9,62.70,62.24,19.87 +sqr,floor,16,16,288160,9,69.67,69.38,20.34 +sqr,gmp,16,16,316030,9,64.06,62.00,20.17 +sqr,gmpz,16,16,297672,9,67.02,66.23,20.05 +divrem,auto,2,1,627454,9,30.82,30.18,19.38 +divrem,kernel,2,1,3539999,9,5.65,5.62,20.06 +divrem,floor,2,1,1484255,9,13.72,13.47,20.32 +divrem,gmp,2,1,3933951,9,5.14,5.09,20.28 +divrem,gmpz,2,1,2207358,9,8.84,8.81,19.56 +divrem,auto,8,4,217906,9,92.70,92.14,20.22 +divrem,kernel,8,4,482866,9,40.78,40.65,19.70 +divrem,floor,8,4,358240,9,56.83,56.16,20.35 +divrem,gmp,8,4,493667,9,39.76,39.62,19.64 +divrem,gmpz,8,4,468272,9,43.10,42.95,20.18 +divrem,auto,32,16,41037,9,485.42,478.39,19.91 +divrem,kernel,32,16,49543,9,400.06,387.10,19.84 +divrem,floor,32,16,48287,9,418.77,411.82,20.25 +divrem,gmp,32,16,96351,9,207.33,206.56,19.98 +divrem,gmpz,32,16,94818,9,211.04,208.88,20.13 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_seed1a.csv b/tests/beman/big_int/perf/item1/macr4_base64_seed1a.csv new file mode 100644 index 00000000..f371df68 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_base64_seed1a.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:25:27Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=shl,shr bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1121549,9,20.08,17.11,19.35 +shl,inplace,1,13,4394347,9,2.29,2.29,20.23 +shl,kernel,1,13,8948661,9,2.23,2.23,19.98 +shl,kernelip,1,13,8952006,9,1.56,1.12,26.70 +shl,floor,1,13,1800251,9,10.65,10.40,19.18 +shl,gmp,1,13,16146328,9,1.24,1.24,20.05 +shl,gmpz,1,13,9902060,9,1.99,1.98,19.77 +shl,auto,4,13,1030982,9,19.28,18.88,19.85 +shl,inplace,4,13,2821333,9,3.55,3.51,20.03 +shl,kernel,4,13,5365945,9,3.72,3.72,19.99 +shl,kernelip,4,13,2898499,9,3.36,3.33,19.49 +shl,floor,4,13,1578544,9,12.89,12.64,20.22 +shl,gmp,4,13,10048040,9,2.00,1.98,20.09 +shl,gmpz,4,13,7229779,9,2.73,2.73,19.77 +shl,auto,16,13,918543,9,21.68,20.75,19.83 +shl,inplace,16,13,1737090,9,5.82,5.77,20.34 +shl,kernel,16,13,4884306,9,4.10,4.08,20.07 +shl,kernelip,16,13,1404494,9,6.82,6.78,19.15 +shl,floor,16,13,1611937,9,12.17,11.92,19.65 +shl,gmp,16,13,5283407,9,3.48,3.47,18.38 +shl,gmpz,16,13,3855617,9,5.15,5.13,19.87 +shl,auto,256,13,231912,9,85.95,85.56,19.94 +shl,inplace,256,13,274534,9,36.38,36.29,19.98 +shl,kernel,256,13,406748,9,49.20,49.08,20.07 +shl,kernelip,256,13,204909,9,48.91,48.62,20.06 +shl,floor,256,13,344779,9,57.51,57.20,19.83 +shl,gmp,256,13,539667,9,36.89,36.82,19.93 +shl,gmpz,256,13,497376,9,37.91,37.80,19.17 +shl,auto,2000,13,31431,9,666.62,621.22,21.19 +shl,inplace,2000,13,35371,9,282.52,281.72,20.11 +shl,kernel,2000,13,52101,9,387.19,382.50,20.13 +shl,kernelip,2000,13,26547,9,376.48,375.67,19.99 +shl,floor,2000,13,49010,9,402.38,399.32,19.72 +shl,gmp,2000,13,44084,9,1683.59,773.78,69.14 +shl,gmpz,2000,13,12969,9,2444.13,1795.68,27.33 +shl,auto,2000,77,24146,9,786.07,759.35,18.99 +shl,inplace,2000,77,23578,9,423.37,420.91,19.96 +shl,kernel,2000,77,37684,9,525.57,519.48,19.81 +shl,kernelip,2000,77,19158,9,519.94,517.85,19.98 +shl,floor,2000,77,37078,9,539.61,538.52,20.02 +shl,gmp,2000,77,69518,9,294.11,286.99,20.49 +shl,gmpz,2000,77,69608,9,287.33,286.98,20.02 +shr,auto,1,13,2115098,9,9.43,9.40,19.97 +shr,inplace,1,13,4478104,9,2.36,2.23,20.69 +shr,kernel,1,13,8960226,9,2.23,2.23,20.02 +shr,floor,1,13,8071919,9,2.49,2.48,20.14 +shr,gmp,1,13,19831595,9,1.02,1.00,20.56 +shr,gmpz,1,13,10007051,9,1.99,1.99,20.04 +shr,auto,4,13,1114493,9,17.80,17.41,19.80 +shr,inplace,4,13,3116282,9,3.20,3.20,20.04 +shr,kernel,4,13,5363507,9,3.72,3.72,19.99 +shr,floor,4,13,1681104,9,12.31,12.13,20.91 +shr,gmp,4,13,10867950,9,1.74,1.74,19.06 +shr,gmpz,4,13,7315909,9,2.87,2.77,20.93 +shr,auto,16,13,926672,9,25.41,21.90,22.32 +shr,inplace,16,13,1979530,9,5.05,5.04,20.09 +shr,kernel,16,13,4789918,9,4.17,4.15,19.98 +shr,floor,16,13,1490605,9,13.18,13.13,19.94 +shr,gmp,16,13,6162722,9,3.39,3.23,21.14 +shr,gmpz,16,13,4579246,9,4.26,4.24,19.68 +shr,auto,256,13,224221,9,87.41,86.73,19.62 +shr,inplace,256,13,280868,9,35.76,35.63,20.14 +shr,kernel,256,13,300035,9,66.38,66.24,19.93 +shr,floor,256,13,264738,9,75.42,75.16,20.01 +shr,gmp,256,13,540820,9,36.71,36.59,19.85 +shr,gmpz,256,13,525597,9,38.03,37.98,19.99 +shr,auto,2000,13,31524,9,672.11,627.08,21.40 +shr,inplace,2000,13,35339,9,282.40,281.58,20.06 +shr,kernel,2000,13,39105,9,513.03,512.01,20.09 +shr,floor,2000,13,37694,9,549.46,531.50,20.60 +shr,gmp,2000,13,65217,9,310.36,298.18,20.72 +shr,gmpz,2000,13,66422,9,300.53,287.00,20.23 +shr,auto,2000,77,19681,9,1082.45,1016.26,19.76 +shr,inplace,2000,77,23705,9,430.77,425.19,20.42 +shr,kernel,2000,77,38100,9,522.66,520.84,19.93 +shr,floor,2000,77,37846,9,542.21,531.34,20.66 +shr,gmp,2000,77,67955,9,296.60,294.86,20.32 +shr,gmpz,2000,77,67963,9,300.07,295.35,20.51 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_seed1b.csv b/tests/beman/big_int/perf/item1/macr4_base64_seed1b.csv new file mode 100644 index 00000000..6ea1632b --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_base64_seed1b.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:26:08Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=shl,shr bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1222464,9,16.87,16.38,20.59 +shl,inplace,1,13,4398578,9,2.30,2.29,20.34 +shl,kernel,1,13,8946259,9,2.23,2.23,20.02 +shl,kernelip,1,13,8930868,9,1.78,1.45,31.06 +shl,floor,1,13,1822879,9,10.98,10.91,20.05 +shl,gmp,1,13,16070173,9,1.24,1.24,20.02 +shl,gmpz,1,13,10052128,9,1.99,1.98,19.98 +shl,auto,4,13,1025407,9,18.76,18.66,19.67 +shl,inplace,4,13,2828005,9,3.55,3.53,20.20 +shl,kernel,4,13,5375926,9,3.74,3.72,20.17 +shl,kernelip,4,13,2836248,9,3.37,3.36,19.19 +shl,floor,4,13,1485775,9,13.38,12.91,19.64 +shl,gmp,4,13,10074678,9,1.99,1.98,19.82 +shl,gmpz,4,13,7339822,9,2.73,2.72,20.09 +shl,auto,16,13,941277,9,21.52,21.32,20.22 +shl,inplace,16,13,1732935,9,5.80,5.76,20.17 +shl,kernel,16,13,4905575,9,4.07,4.06,19.98 +shl,kernelip,16,13,1471256,9,6.81,6.80,20.29 +shl,floor,16,13,1642488,9,11.98,11.92,19.79 +shl,gmp,16,13,5382471,9,3.48,3.47,19.07 +shl,gmpz,16,13,4094163,9,4.84,4.80,19.81 +shl,auto,256,13,227160,9,86.50,86.06,19.81 +shl,inplace,256,13,269746,9,36.66,36.52,19.90 +shl,kernel,256,13,407376,9,49.22,49.14,20.05 +shl,kernelip,256,13,200942,9,50.08,49.03,20.17 +shl,floor,256,13,344314,9,57.99,56.95,20.02 +shl,gmp,256,13,541835,9,37.07,36.86,20.15 +shl,gmpz,256,13,526693,9,38.27,37.89,20.21 +shl,auto,2000,13,31019,9,652.66,635.74,19.79 +shl,inplace,2000,13,35346,9,285.85,282.67,20.20 +shl,kernel,2000,13,51741,9,387.33,387.10,20.05 +shl,kernelip,2000,13,26284,9,378.90,376.03,19.90 +shl,floor,2000,13,49876,9,400.18,399.49,19.98 +shl,gmp,2000,13,33735,9,1816.63,784.82,56.78 +shl,gmpz,2000,13,13537,9,2195.75,1720.41,29.29 +shl,auto,2000,77,25979,9,810.50,745.69,20.82 +shl,inplace,2000,77,23789,9,425.21,420.44,20.19 +shl,kernel,2000,77,37887,9,528.25,523.62,20.01 +shl,kernelip,2000,77,19259,9,520.78,519.51,20.08 +shl,floor,2000,77,36888,9,541.05,539.97,19.97 +shl,gmp,2000,77,69269,9,288.89,287.05,20.03 +shl,gmpz,2000,77,69421,9,288.21,287.74,20.32 +shr,auto,1,13,2176308,9,9.48,9.04,20.51 +shr,inplace,1,13,3976053,9,2.37,2.36,18.89 +shr,kernel,1,13,8841380,9,2.23,2.23,19.76 +shr,floor,1,13,7879285,9,2.49,2.48,20.30 +shr,gmp,1,13,20000001,9,0.99,0.99,19.95 +shr,gmpz,1,13,10087376,9,1.99,1.98,20.04 +shr,auto,4,13,1097947,9,17.72,17.35,19.61 +shr,inplace,4,13,3059183,9,3.27,3.26,20.10 +shr,kernel,4,13,5374693,9,3.72,3.71,20.04 +shr,floor,4,13,1680699,9,12.39,11.63,20.56 +shr,gmp,4,13,11418143,9,1.74,1.73,19.84 +shr,gmpz,4,13,7265133,9,2.73,2.72,19.84 +shr,auto,16,13,921082,9,21.49,20.93,19.77 +shr,inplace,16,13,1968330,9,5.10,5.08,20.11 +shr,kernel,16,13,4801892,9,4.18,4.17,20.05 +shr,floor,16,13,1462028,9,13.25,13.17,19.85 +shr,gmp,16,13,6207664,9,3.22,3.22,20.02 +shr,gmpz,16,13,4704654,9,4.23,4.23,19.93 +shr,auto,256,13,222908,9,87.65,87.00,19.59 +shr,inplace,256,13,273214,9,36.26,35.76,19.80 +shr,kernel,256,13,298052,9,66.40,66.30,19.84 +shr,floor,256,13,288540,9,75.65,75.41,21.88 +shr,gmp,256,13,543873,9,36.95,36.64,20.18 +shr,gmpz,256,13,525821,9,38.09,38.00,20.03 +shr,auto,2000,13,29360,9,719.20,683.89,20.91 +shr,inplace,2000,13,35155,9,285.80,282.07,20.11 +shr,kernel,2000,13,38009,9,513.82,512.13,19.54 +shr,floor,2000,13,37923,9,526.08,524.57,19.99 +shr,gmp,2000,13,69749,9,315.97,294.98,22.10 +shr,gmpz,2000,13,68877,9,297.97,291.05,20.99 +shr,auto,2000,77,19647,9,1093.03,1003.95,21.32 +shr,inplace,2000,77,23777,9,419.98,418.82,19.98 +shr,kernel,2000,77,38748,9,516.61,515.54,20.03 +shr,floor,2000,77,37524,9,529.35,525.04,19.85 +shr,gmp,2000,77,66182,9,289.95,289.27,19.59 +shr,gmpz,2000,77,68706,9,286.19,285.62,19.85 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_seed2a.csv b/tests/beman/big_int/perf/item1/macr4_base64_seed2a.csv new file mode 100644 index 00000000..16dc6856 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_base64_seed2a.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:26:49Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=2 ops=shl,shr bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1131213,9,17.18,16.61,19.54 +shl,inplace,1,13,4365467,9,2.34,2.31,20.45 +shl,kernel,1,13,8902004,9,2.24,2.24,20.04 +shl,kernelip,1,13,8648390,9,1.51,1.36,27.36 +shl,floor,1,13,1797497,9,11.18,10.95,20.17 +shl,gmp,1,13,16089806,9,1.24,1.24,20.09 +shl,gmpz,1,13,10053924,9,1.99,1.98,20.33 +shl,auto,4,13,1027380,9,18.95,18.59,19.63 +shl,inplace,4,13,2821875,9,3.57,3.50,20.29 +shl,kernel,4,13,5383803,9,3.72,3.71,20.04 +shl,kernelip,4,13,2908027,9,3.36,3.26,19.54 +shl,floor,4,13,1546642,9,12.87,12.41,19.69 +shl,gmp,4,13,10085473,9,2.00,1.98,20.09 +shl,gmpz,4,13,7328346,9,2.73,2.73,20.05 +shl,auto,16,13,946289,9,21.44,21.14,20.40 +shl,inplace,16,13,1731181,9,5.79,5.77,20.03 +shl,kernel,16,13,4896695,9,4.10,4.07,20.08 +shl,kernelip,16,13,1468942,9,6.82,6.81,20.13 +shl,floor,16,13,1669900,9,12.20,12.12,20.49 +shl,gmp,16,13,5312823,9,3.47,3.47,18.57 +shl,gmpz,16,13,3855470,9,5.21,5.15,20.07 +shl,auto,256,13,218117,9,88.43,87.79,19.28 +shl,inplace,256,13,272428,9,36.39,36.32,19.89 +shl,kernel,256,13,405945,9,49.65,49.08,20.11 +shl,kernelip,256,13,204815,9,48.64,48.52,19.96 +shl,floor,256,13,336870,9,59.13,58.95,19.91 +shl,gmp,256,13,540824,9,36.92,36.88,19.98 +shl,gmpz,256,13,528575,9,37.76,37.69,20.00 +shl,auto,2000,13,32164,9,652.42,587.17,20.68 +shl,inplace,2000,13,34654,9,283.85,281.88,19.67 +shl,kernel,2000,13,51858,9,384.57,382.27,19.94 +shl,kernelip,2000,13,26509,9,376.83,375.30,20.00 +shl,floor,2000,13,49867,9,400.44,399.38,20.00 +shl,gmp,2000,13,14520,9,2283.32,1647.10,26.57 +shl,gmpz,2000,13,15820,9,1807.50,1591.43,27.13 +shl,auto,2000,77,23389,9,806.45,781.62,19.11 +shl,inplace,2000,77,23329,9,426.40,422.03,20.03 +shl,kernel,2000,77,37069,9,526.43,525.32,19.57 +shl,kernelip,2000,77,19088,9,530.50,519.93,20.19 +shl,floor,2000,77,35911,9,558.83,555.24,20.18 +shl,gmp,2000,77,69216,9,295.86,293.36,18.46 +shl,gmpz,2000,77,69454,9,295.49,289.46,20.49 +shr,auto,1,13,2082229,9,9.60,9.58,20.05 +shr,inplace,1,13,4470560,9,2.35,2.25,20.81 +shr,kernel,1,13,8973736,9,2.23,2.23,20.00 +shr,floor,1,13,7834785,9,2.48,2.47,20.23 +shr,gmp,1,13,20000001,9,0.99,0.99,19.85 +shr,gmpz,1,13,10061535,9,1.98,1.98,19.95 +shr,auto,4,13,1144810,9,17.54,17.29,20.22 +shr,inplace,4,13,3072086,9,3.31,3.26,20.21 +shr,kernel,4,13,5312159,9,3.72,3.71,19.86 +shr,floor,4,13,1631210,9,12.33,11.77,20.19 +shr,gmp,4,13,11533235,9,1.73,1.73,20.06 +shr,gmpz,4,13,7186792,9,2.80,2.78,20.20 +shr,auto,16,13,886393,9,21.01,20.79,18.61 +shr,inplace,16,13,1969119,9,5.11,5.09,20.25 +shr,kernel,16,13,4722810,9,4.17,4.16,19.74 +shr,floor,16,13,1516568,9,13.29,13.13,20.27 +shr,gmp,16,13,6197840,9,3.22,3.22,20.00 +shr,gmpz,16,13,4728805,9,4.27,4.22,20.16 +shr,auto,256,13,224288,9,87.50,86.91,19.78 +shr,inplace,256,13,271358,9,35.79,35.64,19.46 +shr,kernel,256,13,302063,9,66.42,66.17,20.11 +shr,floor,256,13,264089,9,78.00,75.22,20.43 +shr,gmp,256,13,525916,9,37.12,36.65,19.66 +shr,gmpz,256,13,506439,9,39.49,39.43,20.00 +shr,auto,2000,13,30222,9,697.35,623.58,21.03 +shr,inplace,2000,13,35560,9,282.52,282.10,20.12 +shr,kernel,2000,13,39161,9,511.91,506.71,20.03 +shr,floor,2000,13,38128,9,525.89,523.81,20.04 +shr,gmp,2000,13,67973,9,292.14,286.91,20.18 +shr,gmpz,2000,13,67663,9,289.79,285.88,19.69 +shr,auto,2000,77,19721,9,1046.32,1002.34,20.58 +shr,inplace,2000,77,23880,9,419.04,418.64,20.03 +shr,kernel,2000,77,38618,9,517.97,515.92,20.00 +shr,floor,2000,77,37927,9,527.62,526.78,20.04 +shr,gmp,2000,77,68492,9,294.66,290.43,20.30 +shr,gmpz,2000,77,67924,9,288.48,285.00,19.63 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_seed2b.csv b/tests/beman/big_int/perf/item1/macr4_base64_seed2b.csv new file mode 100644 index 00000000..59f78636 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_base64_seed2b.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:27:30Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=2 ops=shl,shr bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1237772,9,17.91,16.14,22.23 +shl,inplace,1,13,4402667,9,2.30,2.29,20.27 +shl,kernel,1,13,8856510,9,2.24,2.23,19.87 +shl,kernelip,1,13,8950286,9,1.53,1.21,27.06 +shl,floor,1,13,1781455,9,11.04,10.95,19.79 +shl,gmp,1,13,16029543,9,1.24,1.24,20.33 +shl,gmpz,1,13,10048991,9,1.99,1.98,19.97 +shl,auto,4,13,1088128,9,19.14,18.94,20.87 +shl,inplace,4,13,2716883,9,3.59,3.53,19.74 +shl,kernel,4,13,5374557,9,3.72,3.72,20.01 +shl,kernelip,4,13,2898966,9,3.38,3.37,19.57 +shl,floor,4,13,1493439,9,13.44,13.15,20.12 +shl,gmp,4,13,10024007,9,1.99,1.98,19.92 +shl,gmpz,4,13,7339042,9,2.73,2.72,20.06 +shl,auto,16,13,933768,9,21.32,21.22,20.00 +shl,inplace,16,13,1728749,9,5.79,5.77,20.03 +shl,kernel,16,13,4889424,9,4.08,4.06,19.97 +shl,kernelip,16,13,1343006,9,6.81,6.76,18.31 +shl,floor,16,13,1694642,9,11.83,11.76,20.15 +shl,gmp,16,13,5342373,9,3.55,3.51,18.95 +shl,gmpz,16,13,4078918,9,4.93,4.81,20.07 +shl,auto,256,13,225889,9,88.44,87.87,19.98 +shl,inplace,256,13,271321,9,36.94,36.78,20.06 +shl,kernel,256,13,402341,9,50.19,49.66,20.24 +shl,kernelip,256,13,200035,9,49.43,48.94,19.78 +shl,floor,256,13,344074,9,57.60,57.27,19.83 +shl,gmp,256,13,495137,9,39.75,38.99,19.61 +shl,gmpz,256,13,496965,9,40.06,39.80,19.95 +shl,auto,2000,13,28805,9,654.52,631.96,18.99 +shl,inplace,2000,13,35287,9,283.46,282.27,20.04 +shl,kernel,2000,13,52158,9,384.13,382.78,20.03 +shl,kernelip,2000,13,26549,9,377.13,375.52,20.05 +shl,floor,2000,13,49020,9,403.17,402.51,19.88 +shl,gmp,2000,13,44787,9,1974.29,1115.94,76.26 +shl,gmpz,2000,13,11824,9,2176.93,1651.43,22.13 +shl,auto,2000,77,24888,9,785.72,742.58,19.43 +shl,inplace,2000,77,23534,9,427.86,423.32,20.12 +shl,kernel,2000,77,37852,9,529.06,527.94,20.16 +shl,kernelip,2000,77,19196,9,520.32,515.14,19.99 +shl,floor,2000,77,36775,9,544.30,539.81,20.02 +shl,gmp,2000,77,67924,9,294.27,292.49,20.14 +shl,gmpz,2000,77,67680,9,292.71,288.73,19.85 +shr,auto,1,13,2082898,9,9.50,9.44,19.89 +shr,inplace,1,13,4230643,9,2.36,2.35,19.99 +shr,kernel,1,13,10084025,9,1.99,1.98,20.03 +shr,floor,1,13,8061251,9,2.48,2.47,20.62 +shr,gmp,1,13,20000001,9,1.00,0.99,20.08 +shr,gmpz,1,13,10036421,9,1.99,1.99,20.14 +shr,auto,4,13,1109822,9,18.23,17.92,20.49 +shr,inplace,4,13,3115834,9,3.26,3.20,20.24 +shr,kernel,4,13,5638943,9,3.73,3.72,21.07 +shr,floor,4,13,1584358,9,12.57,12.40,20.25 +shr,gmp,4,13,10999866,9,1.78,1.75,19.53 +shr,gmpz,4,13,7264237,9,2.74,2.73,19.98 +shr,auto,16,13,935067,9,21.73,21.38,20.27 +shr,inplace,16,13,1939590,9,5.03,5.02,19.60 +shr,kernel,16,13,4793737,9,4.19,4.17,20.12 +shr,floor,16,13,1509073,9,13.47,13.21,20.52 +shr,gmp,16,13,5931602,9,3.26,3.24,19.34 +shr,gmpz,16,13,4725850,9,4.26,4.22,21.59 +shr,auto,256,13,224056,9,89.87,88.43,20.24 +shr,inplace,256,13,274437,9,35.87,35.77,19.75 +shr,kernel,256,13,301625,9,66.30,66.22,20.00 +shr,floor,256,13,289710,9,75.58,75.39,21.94 +shr,gmp,256,13,538788,9,36.87,36.72,19.91 +shr,gmpz,256,13,524462,9,38.94,38.15,20.30 +shr,auto,2000,13,28337,9,686.99,654.94,19.69 +shr,inplace,2000,13,35448,9,282.31,281.61,20.03 +shr,kernel,2000,13,39279,9,512.24,511.40,20.16 +shr,floor,2000,13,38136,9,530.26,525.52,20.22 +shr,gmp,2000,13,65126,9,317.65,305.43,21.06 +shr,gmpz,2000,13,66461,9,298.88,289.25,20.37 +shr,auto,2000,77,20584,9,1044.34,986.00,21.66 +shr,inplace,2000,77,23490,9,420.06,418.91,19.74 +shr,kernel,2000,77,38788,9,518.59,516.16,20.13 +shr,floor,2000,77,37945,9,527.94,525.20,20.02 +shr,gmp,2000,77,67218,9,298.25,292.17,20.36 +shr,gmpz,2000,77,69015,9,291.23,287.08,20.20 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_big1a.csv b/tests/beman/big_int/perf/item1/macr4_new64_big1a.csv new file mode 100644 index 00000000..56e38407 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_new64_big1a.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,1108,3,18064.94,18046.56,20.02 +shl,inplace,131072,13,541,3,18559.34,18551.06,20.10 +shl,kernel,131072,13,683,3,29273.18,29244.27,20.12 +shr,auto,131072,13,1100,3,18155.30,18135.53,20.01 +shr,inplace,131072,13,540,3,18574.65,18509.53,20.07 +shr,kernel,131072,13,531,3,37625.94,37579.41,19.98 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_big1b.csv b/tests/beman/big_int/perf/item1/macr4_new64_big1b.csv new file mode 100644 index 00000000..99cac1f1 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_new64_big1b.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,1109,3,18097.16,18076.19,20.11 +shl,inplace,131072,13,537,3,18623.53,18576.74,20.01 +shl,kernel,131072,13,682,3,29348.24,29262.34,20.02 +shr,auto,131072,13,1093,3,18190.30,18068.01,19.92 +shr,inplace,131072,13,531,3,18917.80,18802.77,20.23 +shr,kernel,131072,13,532,3,37688.91,37559.60,20.07 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_big2a.csv b/tests/beman/big_int/perf/item1/macr4_new64_big2a.csv new file mode 100644 index 00000000..99c94b72 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_new64_big2a.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,1095,3,18062.25,18054.00,19.79 +shl,inplace,131072,13,536,3,18538.48,18518.03,20.00 +shl,kernel,131072,13,680,3,29227.51,29201.41,19.88 +shr,auto,131072,13,1102,3,18182.21,18127.57,20.06 +shr,inplace,131072,13,539,3,18595.51,18482.76,20.27 +shr,kernel,131072,13,533,3,37624.69,37553.00,20.05 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_big2b.csv b/tests/beman/big_int/perf/item1/macr4_new64_big2b.csv new file mode 100644 index 00000000..e91262f2 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_new64_big2b.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,1104,3,18471.51,18330.69,20.37 +shl,inplace,131072,13,520,3,19371.35,19017.31,20.20 +shl,kernel,131072,13,645,3,30337.86,30005.56,19.54 +shr,auto,131072,13,1147,3,18725.52,18640.29,21.47 +shr,inplace,131072,13,529,3,18668.71,18661.00,19.75 +shr,kernel,131072,13,529,3,37708.18,37663.59,19.99 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_other_seed1a.csv b/tests/beman/big_int/perf/item1/macr4_new64_other_seed1a.csv new file mode 100644 index 00000000..853534e6 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_new64_other_seed1a.csv @@ -0,0 +1,127 @@ +# gap_sweep date 2026-10-06T18:28:43Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=add,sub,mul,sqr,divrem bands=small pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,3669582,9,6.19,5.94,22.52 +add,inplace,1,1,5369799,9,1.86,1.86,19.88 +add,kernel,1,1,17517373,9,1.14,1.14,20.03 +add,floor,1,1,2119728,9,9.23,9.18,20.27 +add,gmp,1,1,13455177,9,1.49,1.49,20.10 +add,gmpz,1,1,6706399,9,3.02,2.97,20.22 +add,auto,2,2,1248762,9,16.12,15.84,20.17 +add,inplace,2,2,2422392,9,4.06,3.98,19.77 +add,kernel,2,2,14348612,9,1.39,1.39,19.99 +add,floor,2,2,2064298,9,9.92,9.88,22.27 +add,gmp,2,2,10070774,9,1.98,1.98,19.98 +add,gmpz,2,2,6425011,9,3.44,3.13,21.85 +add,auto,4,4,1429558,9,14.36,13.97,20.56 +add,inplace,4,4,2690950,9,3.52,3.50,19.28 +add,kernel,4,4,10024201,9,1.95,1.93,19.58 +add,floor,4,4,1909876,9,10.49,10.42,20.22 +add,gmp,4,4,11440183,9,1.75,1.73,20.02 +add,gmpz,4,4,3595950,9,6.10,5.19,21.50 +add,auto,8,8,1302674,9,15.37,15.15,19.98 +add,inplace,8,8,2362480,9,4.22,4.21,19.99 +add,kernel,8,8,5770624,9,3.49,3.46,20.10 +add,floor,8,8,1707801,9,11.94,11.67,20.53 +add,gmp,8,8,8955358,9,2.23,2.23,20.00 +add,gmpz,8,8,5225858,9,4.24,3.87,21.75 +add,auto,16,16,912621,9,22.12,21.85,20.29 +add,inplace,16,16,1747233,9,5.71,5.58,19.82 +add,kernel,16,16,2650579,9,7.53,7.52,19.98 +add,floor,16,16,1436769,9,13.90,13.66,20.09 +add,gmp,16,16,6187556,9,3.23,3.22,20.02 +add,gmpz,16,16,4978129,9,4.49,4.29,22.23 +sub,auto,1,1,3653296,9,5.70,5.45,20.52 +sub,inplace,1,1,5327304,9,1.86,1.86,20.05 +sub,kernel,1,1,19120220,9,1.03,1.03,19.72 +sub,floor,1,1,11501934,9,1.79,1.75,20.52 +sub,gmp,1,1,13302566,9,1.49,1.49,19.87 +sub,gmpz,1,1,8068985,9,2.48,2.47,20.01 +sub,auto,2,2,1395892,9,14.30,14.22,19.96 +sub,inplace,2,2,2624890,9,3.86,3.80,20.28 +sub,kernel,2,2,14428019,9,1.42,1.40,20.45 +sub,floor,2,2,2100227,9,9.56,9.43,21.25 +sub,gmp,2,2,10074509,9,1.98,1.97,19.99 +sub,gmpz,2,2,7176466,9,2.98,2.97,21.37 +sub,auto,4,4,1300648,9,14.55,14.29,19.07 +sub,inplace,4,4,2589965,9,3.89,3.81,20.13 +sub,kernel,4,4,10408315,9,1.92,1.91,20.00 +sub,floor,4,4,1880813,9,10.18,9.65,19.09 +sub,gmp,4,4,11268235,9,1.76,1.76,19.93 +sub,gmpz,4,4,7194898,9,2.78,2.75,20.11 +sub,auto,8,8,1234399,9,15.66,15.44,19.75 +sub,inplace,8,8,2355849,9,4.37,4.16,20.48 +sub,kernel,8,8,5717625,9,3.50,3.48,20.07 +sub,floor,8,8,1708584,9,11.81,11.65,20.19 +sub,gmp,8,8,8969346,9,2.23,2.23,20.06 +sub,gmpz,8,8,6203941,9,3.23,3.22,20.04 +sub,auto,16,16,1126367,9,17.95,17.87,20.25 +sub,inplace,16,16,1847699,9,5.35,5.34,19.82 +sub,kernel,16,16,2599991,9,7.76,7.67,20.14 +sub,floor,16,16,1342703,9,14.88,14.87,20.23 +sub,gmp,16,16,6191121,9,3.27,3.23,20.31 +sub,gmpz,16,16,4674809,9,4.24,4.22,19.86 +mul,auto,1,1,1476705,9,13.67,13.17,19.75 +mul,gmp,1,1,5260356,9,3.75,3.73,19.74 +mul,gmpz,1,1,7287236,9,2.74,2.73,19.94 +mul,auto,2,2,1104052,9,18.56,18.11,20.52 +mul,kernel,2,2,3249654,9,6.22,6.13,20.22 +mul,floor,2,2,1436731,9,14.42,14.07,20.89 +mul,gmp,2,2,4480026,9,4.47,4.46,20.17 +mul,gmpz,2,2,3010537,9,6.68,6.46,20.17 +mul,auto,3,3,1041948,9,20.07,19.22,20.79 +mul,kernel,3,3,2445092,9,7.97,7.93,19.59 +mul,floor,3,3,1201328,9,16.65,16.60,20.10 +mul,gmp,3,3,3212828,9,6.21,6.10,19.93 +mul,gmpz,3,3,2274747,9,8.69,8.61,19.75 +mul,auto,4,4,924025,9,21.56,21.33,19.98 +mul,kernel,4,4,1891993,9,11.10,10.43,20.77 +mul,floor,4,4,1182612,9,16.69,16.62,19.79 +mul,gmp,4,4,2255998,9,8.97,8.18,20.05 +mul,gmpz,4,4,2034868,9,9.77,9.72,20.31 +mul,auto,6,6,506840,9,38.02,37.56,19.31 +mul,kernel,6,6,1029562,9,19.25,19.12,19.83 +mul,floor,6,6,841027,9,24.26,23.81,20.60 +mul,gmp,6,6,1290356,9,14.88,14.46,20.01 +mul,gmpz,6,6,1171338,9,18.29,16.92,21.18 +mul,auto,8,8,571152,9,35.12,34.96,20.08 +mul,kernel,8,8,872970,9,22.91,22.85,20.01 +mul,floor,8,8,650938,9,30.97,30.34,20.17 +mul,gmp,8,8,799833,9,24.22,22.90,19.53 +mul,gmpz,8,8,759025,9,24.15,24.02,18.89 +mul,auto,12,12,360371,9,54.22,53.89,19.55 +mul,kernel,12,12,479086,9,41.79,41.30,20.12 +mul,floor,12,12,398816,9,49.28,49.16,19.71 +mul,gmp,12,12,451024,9,44.60,44.21,20.18 +mul,gmpz,12,12,427356,9,46.71,46.57,19.96 +mul,auto,16,16,238793,9,83.62,83.01,20.06 +mul,kernel,16,16,287295,9,69.81,69.37,20.06 +mul,floor,16,16,256165,9,78.58,78.35,20.21 +mul,gmp,16,16,258482,9,76.80,76.10,19.87 +mul,gmpz,16,16,253741,9,78.12,77.89,19.85 +sqr,auto,4,4,937846,9,22.02,21.32,20.62 +sqr,kernel,4,4,1818810,9,11.54,10.98,21.19 +sqr,floor,4,4,1162138,9,16.93,16.43,19.61 +sqr,gmp,4,4,2988635,9,6.99,6.30,20.70 +sqr,gmpz,4,4,2063903,9,9.70,8.92,19.76 +sqr,auto,16,16,254258,9,75.44,74.72,19.35 +sqr,kernel,16,16,305547,9,64.47,64.36,19.78 +sqr,floor,16,16,272408,9,73.24,72.88,19.94 +sqr,gmp,16,16,309403,9,63.36,62.28,19.70 +sqr,gmpz,16,16,296936,9,67.24,66.33,19.98 +divrem,auto,2,1,704067,9,28.81,26.12,19.99 +divrem,kernel,2,1,3554656,9,5.71,5.69,20.30 +divrem,floor,2,1,1487640,9,13.62,13.26,20.22 +divrem,gmp,2,1,3919549,9,5.06,5.04,19.84 +divrem,gmpz,2,1,2282008,9,8.67,8.66,19.82 +divrem,auto,8,4,282866,9,70.18,69.92,19.89 +divrem,kernel,8,4,488124,9,41.24,40.73,20.13 +divrem,floor,8,4,354541,9,56.26,55.84,20.01 +divrem,gmp,8,4,488885,9,40.25,39.92,19.76 +divrem,gmpz,8,4,463062,9,42.80,42.61,19.89 +divrem,auto,32,16,46040,9,436.45,430.31,20.07 +divrem,kernel,32,16,49399,9,405.95,392.14,20.05 +divrem,floor,32,16,47910,9,424.96,418.15,20.95 +divrem,gmp,32,16,96822,9,207.71,207.38,20.15 +divrem,gmpz,32,16,94875,9,210.38,208.19,19.93 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_seed1a.csv b/tests/beman/big_int/perf/item1/macr4_new64_seed1a.csv new file mode 100644 index 00000000..260b6b89 --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_new64_seed1a.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:25:47Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=shl,shr bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1613729,9,14.15,12.51,21.30 +shl,inplace,1,13,3866810,9,2.55,2.49,19.84 +shl,kernel,1,13,8770513,9,2.27,2.25,20.06 +shl,kernelip,1,13,8935194,9,1.64,1.12,26.26 +shl,floor,1,13,1784453,9,11.37,11.17,20.49 +shl,gmp,1,13,15820094,9,1.26,1.25,19.99 +shl,gmpz,1,13,9569452,9,2.00,1.99,19.22 +shl,auto,4,13,1513533,9,13.12,13.06,19.95 +shl,inplace,4,13,2633530,9,3.81,3.65,19.97 +shl,kernel,4,13,5370621,9,3.73,3.72,20.10 +shl,kernelip,4,13,2949074,9,3.38,3.33,19.95 +shl,floor,4,13,1529231,9,12.91,12.89,19.96 +shl,gmp,4,13,9950749,9,2.02,1.98,20.12 +shl,gmpz,4,13,7181517,9,2.78,2.76,20.06 +shl,auto,16,13,1299312,9,16.09,15.54,20.40 +shl,inplace,16,13,1856942,9,5.38,5.30,19.94 +shl,kernel,16,13,4908584,9,4.08,4.07,20.06 +shl,kernelip,16,13,1384602,9,6.87,6.82,19.05 +shl,floor,16,13,1668951,9,12.09,11.96,20.23 +shl,gmp,16,13,5748741,9,3.51,3.47,20.14 +shl,gmpz,16,13,3814458,9,5.29,5.23,20.27 +shl,auto,256,13,451484,9,41.23,41.03,18.79 +shl,inplace,256,13,333665,9,29.81,29.69,19.96 +shl,kernel,256,13,398617,9,49.96,49.61,19.91 +shl,kernelip,256,13,204833,9,49.99,48.69,20.54 +shl,floor,256,13,317568,9,61.23,59.23,19.41 +shl,gmp,256,13,533791,9,37.40,37.19,20.04 +shl,gmpz,256,13,513803,9,38.28,38.20,19.72 +shl,auto,2000,13,82086,9,281.24,238.82,22.73 +shl,inplace,2000,13,50811,9,195.70,195.09,19.93 +shl,kernel,2000,13,52140,9,386.62,382.28,20.75 +shl,kernelip,2000,13,26294,9,378.98,376.29,19.92 +shl,floor,2000,13,49335,9,402.65,401.72,19.95 +shl,gmp,2000,13,14325,9,2346.56,1949.42,25.12 +shl,gmpz,2000,13,38189,9,1233.97,682.79,41.77 +shl,auto,2000,77,67382,9,510.23,333.08,32.53 +shl,inplace,2000,77,43494,9,231.46,230.44,20.22 +shl,kernel,2000,77,37171,9,533.11,528.85,19.82 +shl,kernelip,2000,77,18780,9,529.51,527.23,19.95 +shl,floor,2000,77,35980,9,551.05,545.32,19.84 +shl,gmp,2000,77,67820,9,291.91,288.24,19.85 +shl,gmpz,2000,77,67265,9,292.58,288.43,19.77 +shr,auto,1,13,2875205,9,6.74,6.70,19.61 +shr,inplace,1,13,3005499,9,3.31,3.29,19.92 +shr,kernel,1,13,8947315,9,2.24,2.23,20.05 +shr,floor,1,13,7962302,9,2.52,2.51,20.26 +shr,gmp,1,13,19749489,9,1.00,1.00,19.83 +shr,gmpz,1,13,9982492,9,1.99,1.98,19.94 +shr,auto,4,13,1309807,9,15.04,13.95,19.61 +shr,inplace,4,13,2634005,9,3.57,3.53,18.93 +shr,kernel,4,13,5374764,9,3.72,3.72,20.02 +shr,floor,4,13,1614719,9,12.89,12.19,20.55 +shr,gmp,4,13,11525967,9,1.74,1.73,20.03 +shr,gmpz,4,13,7214543,9,2.78,2.72,20.03 +shr,auto,16,13,1055101,9,18.95,18.79,20.16 +shr,inplace,16,13,1948384,9,5.25,5.20,20.41 +shr,kernel,16,13,4798367,9,4.16,4.15,20.02 +shr,floor,16,13,1550217,9,13.41,12.91,20.79 +shr,gmp,16,13,6195615,9,3.23,3.22,20.23 +shr,gmpz,16,13,4712162,9,4.24,4.22,19.96 +shr,auto,256,13,468199,9,43.22,42.85,20.27 +shr,inplace,256,13,326082,9,30.40,30.33,19.87 +shr,kernel,256,13,300431,9,67.29,66.39,20.23 +shr,floor,256,13,264268,9,76.16,75.20,20.08 +shr,gmp,256,13,544127,9,36.80,36.63,20.07 +shr,gmpz,256,13,524291,9,38.12,37.96,20.00 +shr,auto,2000,13,92295,9,261.04,238.17,23.90 +shr,inplace,2000,13,50665,9,195.71,195.18,19.84 +shr,kernel,2000,13,39071,9,512.57,510.62,20.18 +shr,floor,2000,13,37956,9,529.04,526.64,20.07 +shr,gmp,2000,13,68247,9,306.26,295.92,21.06 +shr,gmpz,2000,13,64076,9,315.08,293.40,20.17 +shr,auto,2000,77,75709,9,277.48,250.84,21.04 +shr,inplace,2000,77,50970,9,196.19,195.53,20.03 +shr,kernel,2000,77,38502,9,519.62,515.23,20.02 +shr,floor,2000,77,37724,9,531.33,526.78,20.05 +shr,gmp,2000,77,62726,9,294.45,289.44,18.55 +shr,gmpz,2000,77,64003,9,286.06,285.05,18.54 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_seed1b.csv b/tests/beman/big_int/perf/item1/macr4_new64_seed1b.csv new file mode 100644 index 00000000..bc43b03f --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_new64_seed1b.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:26:28Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=shl,shr bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1686720,9,11.97,11.78,19.96 +shl,inplace,1,13,4014461,9,2.49,2.48,20.18 +shl,kernel,1,13,9828151,9,1.98,1.98,19.56 +shl,kernelip,1,13,8716761,9,1.77,1.23,21.60 +shl,floor,1,13,1797986,9,10.91,10.43,19.36 +shl,gmp,1,13,16108046,9,1.24,1.24,20.01 +shl,gmpz,1,13,10088038,9,1.99,1.98,20.04 +shl,auto,4,13,1472235,9,12.52,12.51,18.72 +shl,inplace,4,13,2705123,9,3.82,3.65,20.52 +shl,kernel,4,13,5365918,9,3.72,3.71,19.97 +shl,kernelip,4,13,2958439,9,3.38,3.28,19.92 +shl,floor,4,13,1520406,9,13.15,13.12,20.08 +shl,gmp,4,13,10088113,9,1.98,1.98,20.05 +shl,gmpz,4,13,7334437,9,2.73,2.72,20.01 +shl,auto,16,13,1205153,9,15.88,15.24,19.16 +shl,inplace,16,13,1883093,9,5.34,5.28,20.06 +shl,kernel,16,13,4859611,9,4.08,4.05,19.83 +shl,kernelip,16,13,1372503,9,6.82,6.76,18.71 +shl,floor,16,13,1617659,9,12.41,12.07,19.91 +shl,gmp,16,13,5753896,9,3.47,3.47,20.00 +shl,gmpz,16,13,3883842,9,5.26,5.18,20.37 +shl,auto,256,13,478694,9,41.72,41.44,19.97 +shl,inplace,256,13,334905,9,29.74,29.71,19.93 +shl,kernel,256,13,408016,9,49.04,48.96,20.10 +shl,kernelip,256,13,205347,9,48.70,48.57,20.09 +shl,floor,256,13,343364,9,57.85,57.65,19.89 +shl,gmp,256,13,537770,9,37.25,36.83,20.04 +shl,gmpz,256,13,528339,9,38.47,37.84,20.35 +shl,auto,2000,13,83847,9,256.83,222.92,21.51 +shl,inplace,2000,13,50280,9,196.04,195.56,19.71 +shl,kernel,2000,13,52283,9,383.80,382.38,20.07 +shl,kernelip,2000,13,26559,9,377.40,376.23,20.15 +shl,floor,2000,13,49810,9,401.47,399.99,20.04 +shl,gmp,2000,13,34756,9,1735.33,790.42,52.20 +shl,gmpz,2000,13,37213,9,1565.36,765.09,64.18 +shl,auto,2000,77,67954,9,444.56,292.79,34.71 +shl,inplace,2000,77,42643,9,227.46,226.83,19.40 +shl,kernel,2000,77,37657,9,527.08,523.94,19.87 +shl,kernelip,2000,77,19154,9,519.15,516.77,19.92 +shl,floor,2000,77,36746,9,543.88,542.89,20.04 +shl,gmp,2000,77,66668,9,292.09,288.48,19.69 +shl,gmpz,2000,77,69364,9,295.98,288.38,20.43 +shr,auto,1,13,2980479,9,6.72,6.69,20.17 +shr,inplace,1,13,2955276,9,3.33,3.31,19.70 +shr,kernel,1,13,8949902,9,2.24,2.23,20.10 +shr,floor,1,13,8053445,9,2.48,2.47,20.41 +shr,gmp,1,13,20000001,9,0.99,0.99,19.85 +shr,gmpz,1,13,10034544,9,1.99,1.98,20.01 +shr,auto,4,13,1393209,9,13.95,13.90,19.60 +shr,inplace,4,13,2777784,9,3.81,3.57,20.81 +shr,kernel,4,13,5355358,9,3.73,3.72,20.00 +shr,floor,4,13,1644458,9,12.11,11.92,19.89 +shr,gmp,4,13,11518089,9,1.74,1.73,20.01 +shr,gmpz,4,13,7326535,9,2.73,2.72,20.00 +shr,auto,16,13,1102290,9,18.10,18.02,19.98 +shr,inplace,16,13,1949885,9,5.17,5.14,20.27 +shr,kernel,16,13,4788048,9,4.17,4.15,19.95 +shr,floor,16,13,1496226,9,13.42,13.37,20.07 +shr,gmp,16,13,6204918,9,3.23,3.22,20.05 +shr,gmpz,16,13,4735528,9,4.28,4.23,20.22 +shr,auto,256,13,440356,9,42.30,42.21,19.01 +shr,inplace,256,13,327589,9,30.38,30.31,20.02 +shr,kernel,256,13,300429,9,66.55,66.43,20.08 +shr,floor,256,13,264475,9,77.99,77.78,20.66 +shr,gmp,256,13,539612,9,36.75,36.59,19.90 +shr,gmpz,256,13,520967,9,38.12,37.96,19.87 +shr,auto,2000,13,82630,9,288.24,236.81,23.00 +shr,inplace,2000,13,50881,9,195.90,195.52,19.95 +shr,kernel,2000,13,38994,9,514.91,510.98,20.09 +shr,floor,2000,13,38091,9,525.94,523.65,20.02 +shr,gmp,2000,13,66954,9,314.55,305.46,21.39 +shr,gmpz,2000,13,69124,9,304.00,287.90,19.78 +shr,auto,2000,77,78928,9,258.34,231.57,20.06 +shr,inplace,2000,77,50819,9,195.53,195.29,19.89 +shr,kernel,2000,77,38182,9,516.20,512.24,19.75 +shr,floor,2000,77,38177,9,525.59,524.78,20.08 +shr,gmp,2000,77,68989,9,290.43,285.96,20.05 +shr,gmpz,2000,77,68077,9,289.71,287.18,20.06 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_seed2a.csv b/tests/beman/big_int/perf/item1/macr4_new64_seed2a.csv new file mode 100644 index 00000000..2ff2211d --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_new64_seed2a.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:27:09Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=shl,shr bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1738082,9,12.06,11.83,20.98 +shl,inplace,1,13,4030079,9,2.49,2.48,20.04 +shl,kernel,1,13,8936335,9,2.26,2.23,20.12 +shl,kernelip,1,13,6253420,9,1.78,1.77,22.25 +shl,floor,1,13,1869868,9,12.03,10.88,22.77 +shl,gmp,1,13,16104813,9,1.24,1.24,20.05 +shl,gmpz,1,13,10071969,9,1.99,1.98,20.03 +shl,auto,4,13,1553887,9,13.06,12.51,19.96 +shl,inplace,4,13,2642973,9,3.73,3.70,19.96 +shl,kernel,4,13,5368521,9,3.83,3.71,20.45 +shl,kernelip,4,13,2810911,9,3.45,3.39,19.55 +shl,floor,4,13,1520003,9,13.76,13.46,20.95 +shl,gmp,4,13,9924680,9,1.99,1.98,19.81 +shl,gmpz,4,13,7191120,9,2.87,2.82,20.59 +shl,auto,16,13,1185780,9,16.05,15.46,19.07 +shl,inplace,16,13,1803203,9,5.55,5.40,20.02 +shl,kernel,16,13,4776528,9,4.12,4.09,19.78 +shl,kernelip,16,13,1417650,9,6.83,6.81,19.49 +shl,floor,16,13,1665272,9,11.99,11.93,20.04 +shl,gmp,16,13,5757288,9,3.49,3.47,20.10 +shl,gmpz,16,13,3792815,9,5.15,5.12,19.80 +shl,auto,256,13,482764,9,41.18,41.06,19.91 +shl,inplace,256,13,336339,9,29.94,29.68,20.10 +shl,kernel,256,13,405512,9,49.45,49.29,20.08 +shl,kernelip,256,13,204681,9,48.74,48.65,19.95 +shl,floor,256,13,339265,9,58.22,57.77,19.78 +shl,gmp,256,13,543860,9,37.08,36.83,20.41 +shl,gmpz,256,13,520499,9,38.50,38.36,20.08 +shl,auto,2000,13,74874,9,263.67,247.60,19.82 +shl,inplace,2000,13,50194,9,199.76,198.49,20.53 +shl,kernel,2000,13,51097,9,390.59,387.08,20.02 +shl,kernelip,2000,13,26233,9,384.80,380.01,20.26 +shl,floor,2000,13,49450,9,403.84,401.49,19.97 +shl,gmp,2000,13,21732,9,2223.27,1326.84,43.20 +shl,gmpz,2000,13,16144,9,1857.43,1441.20,24.62 +shl,auto,2000,77,63858,9,460.12,295.43,30.55 +shl,inplace,2000,77,44111,9,229.37,226.76,20.20 +shl,kernel,2000,77,37744,9,530.21,523.70,20.11 +shl,kernelip,2000,77,19300,9,526.39,521.90,20.41 +shl,floor,2000,77,36693,9,543.62,541.51,20.06 +shl,gmp,2000,77,69465,9,287.53,286.94,20.00 +shl,gmpz,2000,77,68057,9,289.46,287.02,19.70 +shr,auto,1,13,2955307,9,6.46,6.45,19.16 +shr,inplace,1,13,2760038,9,3.34,3.32,18.96 +shr,kernel,1,13,8963701,9,2.24,2.23,20.06 +shr,floor,1,13,8074089,9,2.49,2.47,20.36 +shr,gmp,1,13,20000001,9,1.00,0.99,20.09 +shr,gmpz,1,13,10023001,9,1.99,1.99,19.94 +shr,auto,4,13,1460922,9,15.35,13.56,19.96 +shr,inplace,4,13,2887284,9,3.60,3.44,19.15 +shr,kernel,4,13,5366818,9,3.77,3.72,21.02 +shr,floor,4,13,1663431,9,12.40,12.26,20.67 +shr,gmp,4,13,11373588,9,1.75,1.74,19.97 +shr,gmpz,4,13,7293826,9,2.74,2.73,20.00 +shr,auto,16,13,1057231,9,18.24,18.20,19.34 +shr,inplace,16,13,1941251,9,5.16,5.13,20.19 +shr,kernel,16,13,4621983,9,4.23,4.21,19.54 +shr,floor,16,13,1495162,9,13.19,12.97,19.78 +shr,gmp,16,13,6058511,9,3.28,3.24,19.94 +shr,gmpz,16,13,4711738,9,4.29,4.28,20.26 +shr,auto,256,13,467864,9,43.46,43.11,20.37 +shr,inplace,256,13,325202,9,30.70,30.29,19.96 +shr,kernel,256,13,300978,9,66.48,66.40,20.02 +shr,floor,256,13,267102,9,75.62,75.33,20.20 +shr,gmp,256,13,543637,9,37.15,36.61,20.10 +shr,gmpz,256,13,523194,9,38.05,37.98,19.93 +shr,auto,2000,13,76622,9,256.34,236.96,20.32 +shr,inplace,2000,13,50971,9,196.07,195.57,19.99 +shr,kernel,2000,13,38585,9,514.92,512.13,19.87 +shr,floor,2000,13,38093,9,526.51,523.69,20.05 +shr,gmp,2000,13,63124,9,324.63,293.80,20.32 +shr,gmpz,2000,13,69105,9,314.72,287.78,20.25 +shr,auto,2000,77,80628,9,277.12,259.20,22.44 +shr,inplace,2000,77,50878,9,196.05,195.32,19.93 +shr,kernel,2000,77,38734,9,523.41,519.78,20.30 +shr,floor,2000,77,38058,9,529.83,528.41,20.18 +shr,gmp,2000,77,68306,9,291.86,289.98,20.25 +shr,gmpz,2000,77,68879,9,286.49,285.53,19.97 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_seed2b.csv b/tests/beman/big_int/perf/item1/macr4_new64_seed2b.csv new file mode 100644 index 00000000..f1998f6c --- /dev/null +++ b/tests/beman/big_int/perf/item1/macr4_new64_seed2b.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:27:50Z host Matts-MacBook-Pro.local Darwin arm64 +# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=shl,shr bands=small,medium pin= +#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1587656,9,12.45,12.36,19.77 +shl,inplace,1,13,3767042,9,2.52,2.49,19.06 +shl,kernel,1,13,8946360,9,2.24,2.24,20.03 +shl,kernelip,1,13,8845018,9,1.78,1.12,22.40 +shl,floor,1,13,1805641,9,11.42,11.06,20.57 +shl,gmp,1,13,16104281,9,1.24,1.24,20.02 +shl,gmpz,1,13,9902369,9,2.00,1.99,19.79 +shl,auto,4,13,1477817,9,15.08,13.42,22.47 +shl,inplace,4,13,2640153,9,3.67,3.62,19.63 +shl,kernel,4,13,5370585,9,3.72,3.71,19.97 +shl,kernelip,4,13,3008369,9,3.38,3.36,20.52 +shl,floor,4,13,1523210,9,13.16,12.91,20.15 +shl,gmp,4,13,10084518,9,1.99,1.98,20.06 +shl,gmpz,4,13,7284831,9,2.75,2.72,20.07 +shl,auto,16,13,1166430,9,16.31,15.56,19.25 +shl,inplace,16,13,1854047,9,5.28,5.26,19.74 +shl,kernel,16,13,4795653,9,4.17,4.12,20.04 +shl,kernelip,16,13,1371600,9,6.92,6.83,19.04 +shl,floor,16,13,1637621,9,12.17,11.98,19.84 +shl,gmp,16,13,5752144,9,3.59,3.49,20.77 +shl,gmpz,16,13,3791072,9,5.14,5.12,19.54 +shl,auto,256,13,445559,9,41.68,41.17,18.70 +shl,inplace,256,13,330603,9,29.73,29.67,19.68 +shl,kernel,256,13,402628,9,49.98,49.14,20.15 +shl,kernelip,256,13,204513,9,49.27,48.74,20.17 +shl,floor,256,13,344570,9,57.70,57.02,19.88 +shl,gmp,256,13,540956,9,36.91,36.79,19.98 +shl,gmpz,256,13,511054,9,38.41,38.30,19.67 +shl,auto,2000,13,82587,9,257.15,227.00,21.30 +shl,inplace,2000,13,50910,9,195.52,195.08,19.93 +shl,kernel,2000,13,52187,9,383.46,382.88,20.02 +shl,kernelip,2000,13,26582,9,376.22,375.22,19.99 +shl,floor,2000,13,49771,9,401.70,399.49,20.05 +shl,gmp,2000,13,59838,9,1303.02,713.17,77.83 +shl,gmpz,2000,13,10549,9,2119.26,1792.62,19.52 +shl,auto,2000,77,68023,9,360.69,293.65,26.80 +shl,inplace,2000,77,44020,9,227.45,226.69,20.09 +shl,kernel,2000,77,38183,9,528.19,526.78,20.22 +shl,kernelip,2000,77,19131,9,518.86,516.64,19.88 +shl,floor,2000,77,36747,9,544.97,542.61,20.07 +shl,gmp,2000,77,68934,9,288.25,286.98,19.99 +shl,gmpz,2000,77,67001,9,292.66,286.69,19.92 +shr,auto,1,13,3074359,9,6.46,6.44,19.99 +shr,inplace,1,13,3640994,9,2.76,2.70,20.22 +shr,kernel,1,13,8956221,9,2.24,2.23,20.24 +shr,floor,1,13,8044054,9,2.49,2.46,20.08 +shr,gmp,1,13,20000001,9,0.99,0.99,19.86 +shr,gmpz,1,13,10033530,9,1.99,1.98,19.96 +shr,auto,4,13,1295002,9,15.64,15.38,20.19 +shr,inplace,4,13,2594151,9,3.54,3.48,18.54 +shr,kernel,4,13,5351930,9,3.72,3.72,19.92 +shr,floor,4,13,1558338,9,12.15,11.89,18.85 +shr,gmp,4,13,11503999,9,1.74,1.73,19.99 +shr,gmpz,4,13,7330915,9,2.73,2.73,20.02 +shr,auto,16,13,1085590,9,18.86,18.44,20.63 +shr,inplace,16,13,1946000,9,5.22,5.15,20.31 +shr,kernel,16,13,4793707,9,4.16,4.15,19.94 +shr,floor,16,13,1548010,9,12.96,12.88,20.24 +shr,gmp,16,13,6192614,9,3.23,3.22,20.01 +shr,gmpz,16,13,4731873,9,4.24,4.22,20.08 +shr,auto,256,13,464689,9,42.49,42.23,19.77 +shr,inplace,256,13,324667,9,30.31,30.08,19.67 +shr,kernel,256,13,299639,9,66.46,66.35,19.91 +shr,floor,256,13,265988,9,75.19,75.11,20.04 +shr,gmp,256,13,542897,9,36.74,36.66,19.98 +shr,gmpz,256,13,526565,9,38.00,37.91,20.01 +shr,auto,2000,13,75138,9,286.62,250.71,20.52 +shr,inplace,2000,13,50728,9,196.22,195.45,19.96 +shr,kernel,2000,13,38981,9,511.95,506.70,20.01 +shr,floor,2000,13,38246,9,522.89,521.26,20.03 +shr,gmp,2000,13,68170,9,298.48,290.16,20.56 +shr,gmpz,2000,13,62725,9,299.29,291.67,19.02 +shr,auto,2000,77,82049,9,274.90,248.68,22.41 +shr,inplace,2000,77,49835,9,200.76,197.52,19.96 +shr,kernel,2000,77,37738,9,529.05,518.66,19.97 +shr,floor,2000,77,37720,9,533.41,532.25,20.14 +shr,gmp,2000,77,67103,9,297.38,290.02,20.12 +shr,gmpz,2000,77,70095,9,286.64,285.92,20.26 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_big1a.csv b/tests/beman/big_int/perf/item1/x64r4_base64_big1a.csv new file mode 100644 index 00000000..d1128a0d --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_base64_big1a.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,204,3,98137.21,98080.80,20.02 +shl,inplace,131072,13,230,3,43576.05,43459.11,20.03 +shl,kernel,131072,13,277,3,72237.17,72234.57,20.01 +shr,auto,131072,13,203,3,98840.91,98829.32,20.07 +shr,inplace,131072,13,230,3,43341.62,43328.00,19.95 +shr,kernel,131072,13,263,3,76157.97,76155.73,20.03 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_big1b.csv b/tests/beman/big_int/perf/item1/x64r4_base64_big1b.csv new file mode 100644 index 00000000..7519eff3 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_base64_big1b.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,204,3,98019.38,97963.15,20.00 +shl,inplace,131072,13,232,3,43564.51,43420.57,20.21 +shl,kernel,131072,13,277,3,72274.31,72264.16,20.02 +shr,auto,131072,13,202,3,99122.86,99100.51,20.07 +shr,inplace,131072,13,230,3,43370.20,43328.56,19.96 +shr,kernel,131072,13,263,3,76166.26,76164.95,20.03 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_big2a.csv b/tests/beman/big_int/perf/item1/x64r4_base64_big2a.csv new file mode 100644 index 00000000..516a4937 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_base64_big2a.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,205,3,97808.13,97713.30,20.05 +shl,inplace,131072,13,230,3,43514.25,43438.96,20.01 +shl,kernel,131072,13,277,3,72194.55,72189.25,20.00 +shr,auto,131072,13,203,3,98936.46,98914.51,20.08 +shr,inplace,131072,13,232,3,43479.77,43433.08,20.18 +shr,kernel,131072,13,263,3,76106.58,76102.68,20.02 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_big2b.csv b/tests/beman/big_int/perf/item1/x64r4_base64_big2b.csv new file mode 100644 index 00000000..7a93aa8e --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_base64_big2b.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,204,3,98286.17,98185.45,20.04 +shl,inplace,131072,13,231,3,43429.75,43386.13,20.08 +shl,kernel,131072,13,277,3,72286.09,72282.12,20.02 +shr,auto,131072,13,203,3,98877.62,98867.00,20.07 +shr,inplace,131072,13,231,3,43363.34,43191.36,20.03 +shr,kernel,131072,13,263,3,76208.00,76133.25,20.04 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_other_seed1a.csv b/tests/beman/big_int/perf/item1/x64r4_base64_other_seed1a.csv new file mode 100644 index 00000000..1c328a73 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_base64_other_seed1a.csv @@ -0,0 +1,127 @@ +# gap_sweep date 2026-10-06T18:28:03Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,mul,sqr,divrem bands=small pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,2394698,9,8.23,8.18,19.69 +add,inplace,1,1,2398314,9,4.15,4.13,19.88 +add,kernel,1,1,10589168,9,1.89,1.89,20.00 +add,floor,1,1,2027317,9,9.87,9.82,20.01 +add,gmp,1,1,8823941,9,2.27,2.27,20.00 +add,gmpz,1,1,4813008,9,4.16,4.16,20.02 +add,auto,2,2,1122324,9,17.82,17.79,20.01 +add,inplace,2,2,1677518,9,5.93,5.88,19.90 +add,kernel,2,2,8407856,9,2.35,2.34,19.87 +add,floor,2,2,1948051,9,10.23,10.21,19.94 +add,gmp,2,2,8804934,9,2.27,2.27,19.96 +add,gmpz,2,2,4805943,9,4.17,4.16,20.02 +add,auto,4,4,1111306,9,17.99,17.87,19.99 +add,inplace,4,4,1775941,9,5.64,5.62,20.03 +add,kernel,4,4,6272134,9,3.09,3.04,19.42 +add,floor,4,4,1820378,9,10.99,10.98,20.01 +add,gmp,4,4,7884143,9,2.53,2.52,19.94 +add,gmpz,4,4,4516771,9,4.42,4.42,20.01 +add,auto,8,8,1046110,9,19.12,19.08,20.00 +add,inplace,8,8,1354460,9,7.39,7.38,20.03 +add,kernel,8,8,4311868,9,4.62,4.60,19.98 +add,floor,8,8,1598278,9,12.51,12.51,20.00 +add,gmp,8,8,5424808,9,3.69,3.69,20.00 +add,gmpz,8,8,4242002,9,4.73,4.71,20.05 +add,auto,16,16,787225,9,25.05,24.57,19.77 +add,inplace,16,16,847723,9,11.86,11.75,20.07 +add,kernel,16,16,2638226,9,7.58,7.56,20.00 +add,floor,16,16,1281791,9,15.59,15.59,19.99 +add,gmp,16,16,3643448,9,5.49,5.49,20.02 +add,gmpz,16,16,3068733,9,6.53,6.51,20.04 +sub,auto,1,1,2171665,9,9.16,9.09,19.89 +sub,inplace,1,1,2479004,9,4.04,4.03,20.04 +sub,kernel,1,1,13236301,9,1.51,1.51,20.00 +sub,floor,1,1,10540432,9,1.90,1.89,20.01 +sub,gmp,1,1,8823997,9,2.27,2.27,20.01 +sub,gmpz,1,1,4603723,9,4.34,4.34,20.02 +sub,auto,2,2,1042904,9,19.14,19.05,19.97 +sub,inplace,2,2,2152961,9,4.66,4.65,20.08 +sub,kernel,2,2,9462210,9,2.10,2.08,19.84 +sub,floor,2,2,1995821,9,10.01,10.01,19.99 +sub,gmp,2,2,8823067,9,2.27,2.27,20.00 +sub,gmpz,2,2,4576975,9,4.37,4.36,20.02 +sub,auto,4,4,1052733,9,18.97,18.90,19.97 +sub,inplace,4,4,1815902,9,5.49,5.48,19.93 +sub,kernel,4,4,7054315,9,2.89,2.83,20.28 +sub,floor,4,4,1851714,9,10.80,10.78,20.00 +sub,gmp,4,4,7899873,9,2.51,2.49,19.83 +sub,gmpz,4,4,4291745,9,4.66,4.62,20.02 +sub,auto,8,8,939506,9,21.22,21.03,19.93 +sub,inplace,8,8,1377750,9,7.26,7.25,20.01 +sub,kernel,8,8,4551623,9,4.40,4.38,20.03 +sub,floor,8,8,1608635,9,12.47,12.42,20.08 +sub,gmp,8,8,5424536,9,3.68,3.68,19.99 +sub,gmpz,8,8,3833115,9,5.16,5.11,19.78 +sub,auto,16,16,784262,9,25.70,24.97,20.09 +sub,inplace,16,16,933846,9,10.70,10.68,19.98 +sub,kernel,16,16,2572974,9,7.78,7.77,20.01 +sub,floor,16,16,1293287,9,15.47,15.46,20.02 +sub,gmp,16,16,3619203,9,5.50,5.50,19.92 +sub,gmpz,16,16,2938678,9,6.80,6.75,20.00 +mul,auto,1,1,1039754,9,19.20,19.14,19.96 +mul,gmp,1,1,5877344,9,3.39,3.38,19.94 +mul,gmpz,1,1,4939273,9,4.04,4.03,19.96 +mul,auto,2,2,711602,9,28.02,27.93,19.95 +mul,kernel,2,2,2817900,9,7.57,7.54,21.33 +mul,floor,2,2,1328979,9,15.04,14.89,20.00 +mul,gmp,2,2,5175433,9,3.85,3.84,19.93 +mul,gmpz,2,2,3255104,9,6.16,6.10,20.04 +mul,auto,3,3,658610,9,30.32,30.14,19.97 +mul,kernel,3,3,2345411,9,9.03,9.00,21.23 +mul,floor,3,3,1212215,9,16.64,16.49,20.18 +mul,gmp,3,3,2513777,9,7.91,7.82,19.87 +mul,gmpz,3,3,1987843,9,10.02,9.97,19.93 +mul,auto,4,4,625763,9,31.96,31.89,20.09 +mul,kernel,4,4,1891123,9,11.08,11.06,20.98 +mul,floor,4,4,1085043,9,18.56,18.51,20.13 +mul,gmp,4,4,2063455,9,9.70,9.67,20.03 +mul,gmpz,4,4,1649311,9,12.15,12.13,20.06 +mul,auto,6,6,477251,9,41.99,41.88,20.03 +mul,kernel,6,6,1128157,9,17.78,17.76,20.06 +mul,floor,6,6,773670,9,25.68,25.54,19.87 +mul,gmp,6,6,1179592,9,16.88,16.80,19.92 +mul,gmpz,6,6,1044350,9,19.16,19.02,19.98 +mul,auto,8,8,421650,9,47.18,47.13,19.94 +mul,kernel,8,8,803295,9,25.65,25.44,20.58 +mul,floor,8,8,610319,9,32.60,32.56,19.92 +mul,gmp,8,8,734258,9,27.20,27.09,19.97 +mul,gmpz,8,8,681089,9,28.80,28.62,19.65 +mul,auto,12,12,284464,9,70.34,70.22,20.02 +mul,kernel,12,12,421815,9,47.99,47.91,20.24 +mul,floor,12,12,364555,9,55.23,55.11,20.14 +mul,gmp,12,12,405427,9,49.12,48.98,19.91 +mul,gmpz,12,12,387314,9,51.43,51.24,19.92 +mul,auto,16,16,196087,9,102.12,101.96,20.05 +mul,kernel,16,16,251160,9,80.26,80.16,20.16 +mul,floor,16,16,231084,9,86.96,86.87,20.10 +mul,gmp,16,16,243724,9,81.91,81.86,19.97 +mul,gmpz,16,16,237667,9,84.09,84.02,19.99 +sqr,auto,4,4,602234,9,33.37,33.16,20.08 +sqr,kernel,4,4,2194915,9,9.07,9.04,19.90 +sqr,floor,4,4,1216959,9,16.92,16.91,20.59 +sqr,gmp,4,4,3445401,9,5.83,5.79,20.08 +sqr,gmpz,4,4,2266494,9,8.84,8.80,20.05 +sqr,auto,16,16,224879,9,89.07,89.02,20.03 +sqr,kernel,16,16,351734,9,56.82,56.80,19.99 +sqr,floor,16,16,318916,9,63.35,63.32,20.24 +sqr,gmp,16,16,382296,9,51.82,51.49,19.81 +sqr,gmpz,16,16,371924,9,53.63,53.35,19.96 +divrem,auto,2,1,468376,9,42.62,42.50,19.97 +divrem,kernel,2,1,3623476,9,5.50,5.38,19.88 +divrem,floor,2,1,1564089,9,12.76,12.73,19.97 +divrem,gmp,2,1,2302157,9,8.69,8.66,19.99 +divrem,gmpz,2,1,1499922,9,13.36,13.34,20.04 +divrem,auto,8,4,185131,9,107.82,107.75,19.98 +divrem,kernel,8,4,476295,9,41.58,41.28,19.80 +divrem,floor,8,4,358252,9,56.14,55.67,20.08 +divrem,gmp,8,4,500204,9,40.00,39.72,20.05 +divrem,gmpz,8,4,479781,9,41.55,41.28,19.92 +divrem,auto,32,16,53905,9,369.91,369.36,19.95 +divrem,kernel,32,16,69534,9,286.55,285.36,19.93 +divrem,floor,32,16,65664,9,304.69,303.97,20.01 +divrem,gmp,32,16,103689,9,192.69,192.40,19.99 +divrem,gmpz,32,16,102071,9,195.66,194.61,19.96 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_seed1a.csv b/tests/beman/big_int/perf/item1/x64r4_base64_seed1a.csv new file mode 100644 index 00000000..8f4a9ba9 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_base64_seed1a.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:25:27Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=shl,shr bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1187145,9,16.87,16.74,20.03 +shl,inplace,1,13,2399680,9,4.15,4.12,19.92 +shl,kernel,1,13,9660312,9,2.08,2.06,20.06 +shl,kernelip,1,13,5642302,9,1.79,1.73,20.14 +shl,floor,1,13,2077646,9,9.82,9.82,20.42 +shl,gmp,1,13,9444230,9,1.93,1.93,18.18 +shl,gmpz,1,13,5771463,9,3.47,3.47,20.00 +shl,auto,4,13,1070073,9,18.71,18.62,20.02 +shl,inplace,4,13,1901040,9,5.24,5.22,19.98 +shl,kernel,4,13,4530248,9,4.42,4.41,20.01 +shl,kernelip,4,13,3283767,9,3.03,3.00,19.96 +shl,floor,4,13,1738688,9,11.19,11.18,19.50 +shl,gmp,4,13,8649368,9,2.31,2.31,20.17 +shl,gmpz,4,13,4947025,9,4.04,4.04,20.01 +shl,auto,16,13,809284,9,24.65,24.37,20.00 +shl,inplace,16,13,1071692,9,9.34,9.32,20.03 +shl,kernel,16,13,2664441,9,7.45,7.44,19.87 +shl,kernelip,16,13,1374104,9,7.18,7.04,19.80 +shl,floor,16,13,1258322,9,15.21,15.21,19.16 +shl,gmp,16,13,4913508,9,4.05,4.05,20.01 +shl,gmpz,16,13,3434214,9,5.83,5.81,20.01 +shl,auto,256,13,145240,9,136.31,135.29,19.81 +shl,inplace,256,13,106509,9,93.26,92.90,19.87 +shl,kernel,256,13,210278,9,95.24,95.10,20.02 +shl,kernelip,256,13,102328,9,97.75,97.66,20.01 +shl,floor,256,13,170172,9,118.58,118.47,20.21 +shl,gmp,256,13,416038,9,48.12,47.97,20.03 +shl,gmpz,256,13,389806,9,51.28,51.18,20.00 +shl,auto,2000,13,21774,9,916.93,915.06,19.97 +shl,inplace,2000,13,15147,9,657.52,656.27,19.94 +shl,kernel,2000,13,27694,9,724.92,722.13,20.07 +shl,kernelip,2000,13,13980,9,715.35,715.30,20.00 +shl,floor,2000,13,27149,9,740.92,739.17,20.12 +shl,gmp,2000,13,58627,9,341.58,341.31,20.02 +shl,gmpz,2000,13,57926,9,345.06,344.87,20.00 +shl,auto,2000,77,18750,9,1066.37,1064.63,20.01 +shl,inplace,2000,77,13049,9,764.93,764.19,19.98 +shl,kernel,2000,77,23499,9,851.78,848.91,20.01 +shl,kernelip,2000,77,12157,9,822.56,822.24,20.00 +shl,floor,2000,77,22936,9,871.73,870.76,20.01 +shl,gmp,2000,77,57843,9,344.23,344.22,19.93 +shl,gmpz,2000,77,57993,9,344.93,344.90,20.04 +shr,auto,1,13,1943583,9,10.32,10.25,20.03 +shr,inplace,1,13,2710146,9,3.72,3.67,20.16 +shr,kernel,1,13,11572204,9,1.72,1.72,19.95 +shr,floor,1,13,8661218,9,2.31,2.31,20.01 +shr,gmp,1,13,10388674,9,1.93,1.93,20.01 +shr,gmpz,1,13,6108278,9,3.27,3.27,20.00 +shr,auto,4,13,955467,9,20.94,20.86,20.02 +shr,inplace,4,13,2079841,9,4.80,4.75,19.93 +shr,kernel,4,13,5754895,9,3.48,3.46,20.01 +shr,floor,4,13,1669329,9,11.96,11.94,19.97 +shr,gmp,4,13,8492841,9,2.33,2.31,19.72 +shr,gmpz,4,13,5040929,9,3.98,3.95,20.03 +shr,auto,16,13,768854,9,26.08,25.93,20.04 +shr,inplace,16,13,1113204,9,9.01,8.97,20.06 +shr,kernel,16,13,2415070,9,8.21,8.14,19.83 +shr,floor,16,13,1167966,9,17.10,16.99,19.97 +shr,gmp,16,13,4304490,9,4.65,4.64,20.02 +shr,gmpz,16,13,2693889,9,7.39,7.28,19.86 +shr,auto,256,13,143347,9,139.41,139.07,19.98 +shr,inplace,256,13,106627,9,93.69,93.58,19.99 +shr,kernel,256,13,178828,9,112.01,111.78,20.03 +shr,floor,256,13,150319,9,133.50,133.17,20.06 +shr,gmp,256,13,408460,9,49.05,48.81,20.01 +shr,gmpz,256,13,387537,9,51.61,51.55,20.00 +shr,auto,2000,13,21049,9,949.33,948.64,20.00 +shr,inplace,2000,13,15224,9,656.87,656.47,20.02 +shr,kernel,2000,13,24636,9,811.81,811.79,20.03 +shr,floor,2000,13,24020,9,832.44,831.95,19.99 +shr,gmp,2000,13,58435,9,342.42,342.25,20.01 +shr,gmpz,2000,13,57901,9,345.41,345.25,20.03 +shr,auto,2000,77,18451,9,1084.61,1083.51,20.02 +shr,inplace,2000,77,13076,9,764.73,764.48,20.01 +shr,kernel,2000,77,24144,9,828.40,828.34,20.00 +shr,floor,2000,77,23508,9,850.68,850.48,20.02 +shr,gmp,2000,77,58552,9,342.33,341.33,20.04 +shr,gmpz,2000,77,57829,9,345.78,345.67,20.00 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_seed1b.csv b/tests/beman/big_int/perf/item1/x64r4_base64_seed1b.csv new file mode 100644 index 00000000..7d8cd39a --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_base64_seed1b.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:26:06Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=shl,shr bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1176892,9,17.03,16.95,20.05 +shl,inplace,1,13,2368752,9,4.17,4.11,19.71 +shl,kernel,1,13,9671060,9,2.08,2.07,20.09 +shl,kernelip,1,13,5768354,9,1.77,1.74,20.45 +shl,floor,1,13,2077704,9,10.10,9.85,20.87 +shl,gmp,1,13,9464413,9,1.93,1.93,18.24 +shl,gmpz,1,13,5771580,9,3.47,3.47,20.00 +shl,auto,4,13,1068675,9,18.65,18.57,19.93 +shl,inplace,4,13,1901255,9,5.26,5.22,20.04 +shl,kernel,4,13,5777393,9,3.44,3.44,19.92 +shl,kernelip,4,13,3354613,9,3.00,2.97,20.16 +shl,floor,4,13,1712389,9,11.37,11.35,19.47 +shl,gmp,4,13,8525548,9,2.35,2.35,20.18 +shl,gmpz,4,13,4945183,9,4.05,4.04,20.05 +shl,auto,16,13,817688,9,24.53,24.35,20.04 +shl,inplace,16,13,1069982,9,9.36,9.33,20.04 +shl,kernel,16,13,2522678,9,7.94,7.93,20.05 +shl,kernelip,16,13,1359588,9,7.22,7.12,19.61 +shl,floor,16,13,1257542,9,15.32,15.29,19.30 +shl,gmp,16,13,4912791,9,4.05,4.05,19.98 +shl,gmpz,16,13,3433394,9,5.82,5.81,20.04 +shl,auto,256,13,144371,9,137.76,136.11,19.93 +shl,inplace,256,13,107576,9,93.06,92.87,20.02 +shl,kernel,256,13,209921,9,95.28,94.88,19.99 +shl,kernelip,256,13,102321,9,97.73,97.68,20.01 +shl,floor,256,13,173249,9,117.56,117.18,20.37 +shl,gmp,256,13,419221,9,47.96,47.48,20.08 +shl,gmpz,256,13,389321,9,51.15,50.67,19.91 +shl,auto,2000,13,21827,9,918.09,916.53,20.05 +shl,inplace,2000,13,15187,9,659.58,656.85,20.04 +shl,kernel,2000,13,27837,9,718.69,718.28,20.03 +shl,kernelip,2000,13,13981,9,715.37,715.32,20.03 +shl,floor,2000,13,27208,9,738.65,737.78,20.09 +shl,gmp,2000,13,59427,9,339.56,337.72,20.17 +shl,gmpz,2000,13,58170,9,341.70,340.31,19.87 +shl,auto,2000,77,18770,9,1066.76,1064.54,20.02 +shl,inplace,2000,77,13086,9,764.76,763.98,20.01 +shl,kernel,2000,77,23517,9,848.71,848.54,19.96 +shl,kernelip,2000,77,12157,9,822.51,822.05,20.05 +shl,floor,2000,77,22907,9,871.99,871.11,19.97 +shl,gmp,2000,77,58281,9,344.07,343.86,20.06 +shl,gmpz,2000,77,57998,9,344.92,344.87,20.03 +shr,auto,1,13,1930643,9,10.28,10.16,19.81 +shr,inplace,1,13,2704664,9,3.67,3.65,19.86 +shr,kernel,1,13,11746781,9,1.70,1.70,20.02 +shr,floor,1,13,8757515,9,2.29,2.28,20.09 +shr,gmp,1,13,10388960,9,1.93,1.93,20.02 +shr,gmpz,1,13,6109315,9,3.27,3.27,20.01 +shr,auto,4,13,948520,9,21.05,21.02,19.98 +shr,inplace,4,13,2086326,9,4.79,4.76,20.04 +shr,kernel,4,13,5773249,9,3.48,3.46,20.09 +shr,floor,4,13,1669530,9,11.97,11.95,19.99 +shr,gmp,4,13,8657095,9,2.33,2.31,20.18 +shr,gmpz,4,13,5070157,9,3.96,3.95,20.13 +shr,auto,16,13,770193,9,25.97,25.87,20.02 +shr,inplace,16,13,1113451,9,9.01,8.95,20.07 +shr,kernel,16,13,2414374,9,8.28,8.22,20.06 +shr,floor,16,13,1173279,9,17.04,16.99,20.00 +shr,gmp,16,13,4653782,9,4.30,4.30,20.03 +shr,gmpz,16,13,2873107,9,6.85,6.83,19.82 +shr,auto,256,13,143348,9,139.72,139.33,20.03 +shr,inplace,256,13,106595,9,93.61,93.47,19.96 +shr,kernel,256,13,180201,9,111.21,110.93,20.05 +shr,floor,256,13,150577,9,133.03,132.07,20.01 +shr,gmp,256,13,409574,9,48.90,48.66,20.04 +shr,gmpz,256,13,387278,9,51.62,51.53,19.99 +shr,auto,2000,13,21024,9,950.51,949.93,19.99 +shr,inplace,2000,13,15184,9,657.57,656.79,19.96 +shr,kernel,2000,13,24636,9,811.80,811.79,20.00 +shr,floor,2000,13,24016,9,832.43,831.68,19.99 +shr,gmp,2000,13,58779,9,341.25,339.18,20.05 +shr,gmpz,2000,13,58054,9,344.66,343.48,20.00 +shr,auto,2000,77,18449,9,1084.31,1083.30,20.00 +shr,inplace,2000,77,13082,9,765.12,764.55,20.02 +shr,kernel,2000,77,24144,9,828.36,828.32,20.00 +shr,floor,2000,77,23495,9,850.71,850.32,19.99 +shr,gmp,2000,77,59097,9,340.34,339.48,20.13 +shr,gmpz,2000,77,58101,9,344.69,343.88,20.02 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_seed2a.csv b/tests/beman/big_int/perf/item1/x64r4_base64_seed2a.csv new file mode 100644 index 00000000..536cf289 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_base64_seed2a.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:26:45Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=shl,shr bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1186717,9,16.83,16.68,19.97 +shl,inplace,1,13,2420712,9,4.17,4.15,20.23 +shl,kernel,1,13,9623702,9,2.08,2.07,19.99 +shl,kernelip,1,13,5656193,9,1.78,1.73,20.04 +shl,floor,1,13,2077641,9,9.82,9.82,20.42 +shl,gmp,1,13,9496367,9,1.93,1.92,18.28 +shl,gmpz,1,13,5771619,9,3.47,3.47,20.02 +shl,auto,4,13,1064042,9,18.78,18.60,19.96 +shl,inplace,4,13,1891680,9,5.27,5.23,19.94 +shl,kernel,4,13,5807490,9,3.46,3.44,20.12 +shl,kernelip,4,13,3376363,9,3.02,2.98,20.33 +shl,floor,4,13,1735860,9,11.20,11.19,19.45 +shl,gmp,4,13,7991570,9,2.31,2.31,18.47 +shl,gmpz,4,13,4947094,9,4.04,4.04,20.01 +shl,auto,16,13,808914,9,24.61,24.44,19.92 +shl,inplace,16,13,1072028,9,9.33,9.31,20.03 +shl,kernel,16,13,2681845,9,7.48,7.45,20.06 +shl,kernelip,16,13,1391971,9,7.24,7.16,20.24 +shl,floor,16,13,1262146,9,15.23,15.21,19.26 +shl,gmp,16,13,4929921,9,4.10,4.07,20.22 +shl,gmpz,16,13,3442709,9,5.82,5.81,20.08 +shl,auto,256,13,147552,9,135.90,134.29,20.04 +shl,inplace,256,13,107491,9,93.10,92.82,20.01 +shl,kernel,256,13,210143,9,95.22,95.13,20.02 +shl,kernelip,256,13,102298,9,97.71,97.61,19.99 +shl,floor,256,13,175668,9,116.88,116.40,20.55 +shl,gmp,256,13,422726,9,47.50,47.17,20.05 +shl,gmpz,256,13,394844,9,50.50,50.32,19.96 +shl,auto,2000,13,21744,9,916.48,915.38,19.93 +shl,inplace,2000,13,15240,9,657.90,656.03,20.05 +shl,kernel,2000,13,27785,9,719.82,718.91,20.01 +shl,kernelip,2000,13,13980,9,715.33,715.29,20.00 +shl,floor,2000,13,27180,9,739.06,738.69,20.09 +shl,gmp,2000,13,59541,9,336.43,335.53,20.03 +shl,gmpz,2000,13,58892,9,340.25,338.87,20.05 +shl,auto,2000,77,18773,9,1065.64,1063.19,20.00 +shl,inplace,2000,77,13079,9,764.51,764.14,20.00 +shl,kernel,2000,77,23501,9,849.09,849.00,19.96 +shl,kernelip,2000,77,12160,9,822.84,822.01,20.01 +shl,floor,2000,77,23010,9,872.90,872.51,20.09 +shl,gmp,2000,77,58905,9,341.58,338.65,20.11 +shl,gmpz,2000,77,58198,9,344.33,343.15,20.03 +shr,auto,1,13,1941979,9,10.26,10.21,19.92 +shr,inplace,1,13,2741272,9,3.63,3.60,19.98 +shr,kernel,1,13,11751655,9,1.70,1.70,20.03 +shr,floor,1,13,8817003,9,2.27,2.27,20.05 +shr,gmp,1,13,10436227,9,1.92,1.91,20.03 +shr,gmpz,1,13,6089140,9,3.27,3.27,19.96 +shr,auto,4,13,950925,9,21.00,20.94,19.98 +shr,inplace,4,13,2109365,9,4.80,4.78,20.27 +shr,kernel,4,13,5773249,9,3.48,3.46,20.11 +shr,floor,4,13,1674285,9,11.99,11.95,20.07 +shr,gmp,4,13,8650219,9,2.32,2.31,20.10 +shr,gmpz,4,13,5054237,9,3.97,3.96,20.08 +shr,auto,16,13,771856,9,25.89,25.78,19.97 +shr,inplace,16,13,1120647,9,8.93,8.89,20.01 +shr,kernel,16,13,2451240,9,8.18,8.14,20.06 +shr,floor,16,13,1174927,9,17.41,17.06,20.39 +shr,gmp,16,13,4655140,9,4.30,4.30,20.03 +shr,gmpz,16,13,3122639,9,6.20,6.15,19.38 +shr,auto,256,13,142644,9,140.04,139.76,19.98 +shr,inplace,256,13,106786,9,93.64,93.51,20.00 +shr,kernel,256,13,181557,9,110.18,110.10,20.01 +shr,floor,256,13,152413,9,131.36,131.14,20.06 +shr,gmp,256,13,411030,9,48.70,48.51,20.01 +shr,gmpz,256,13,386286,9,51.94,51.74,20.06 +shr,auto,2000,13,21034,9,951.46,950.66,20.04 +shr,inplace,2000,13,15201,9,656.95,656.66,20.00 +shr,kernel,2000,13,24632,9,811.99,811.94,20.02 +shr,floor,2000,13,24032,9,832.67,832.39,20.01 +shr,gmp,2000,13,59515,9,336.79,335.95,20.05 +shr,gmpz,2000,13,58731,9,340.40,339.51,20.02 +shr,auto,2000,77,18440,9,1084.29,1083.45,20.02 +shr,inplace,2000,77,13053,9,766.00,765.60,20.01 +shr,kernel,2000,77,24113,9,829.06,829.00,20.02 +shr,floor,2000,77,23514,9,851.23,850.57,20.04 +shr,gmp,2000,77,59535,9,336.81,335.96,20.05 +shr,gmpz,2000,77,58948,9,341.24,340.98,20.13 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_seed2b.csv b/tests/beman/big_int/perf/item1/x64r4_base64_seed2b.csv new file mode 100644 index 00000000..3f8f8826 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_base64_seed2b.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:27:24Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=shl,shr bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1197930,9,16.74,16.59,20.07 +shl,inplace,1,13,2413913,9,4.14,4.12,20.03 +shl,kernel,1,13,9612361,9,2.08,2.08,19.97 +shl,kernelip,1,13,5680291,9,1.75,1.69,19.93 +shl,floor,1,13,2077378,9,9.82,9.82,20.43 +shl,gmp,1,13,9590832,9,1.92,1.92,18.46 +shl,gmpz,1,13,5771583,9,3.47,3.47,20.02 +shl,auto,4,13,1069699,9,18.67,18.60,20.00 +shl,inplace,4,13,1890648,9,5.28,5.24,19.99 +shl,kernel,4,13,5781169,9,3.45,3.44,20.06 +shl,kernelip,4,13,3316565,9,3.00,2.98,19.92 +shl,floor,4,13,1724136,9,11.20,11.18,19.31 +shl,gmp,4,13,7984450,9,2.31,2.31,18.48 +shl,gmpz,4,13,4946905,9,4.04,4.04,20.01 +shl,auto,16,13,816397,9,24.50,24.41,20.02 +shl,inplace,16,13,1073708,9,9.32,9.25,20.00 +shl,kernel,16,13,2680610,9,7.47,7.43,20.04 +shl,kernelip,16,13,1360266,9,7.08,7.02,19.36 +shl,floor,16,13,1256339,9,15.22,15.21,19.13 +shl,gmp,16,13,4931437,9,4.05,4.05,20.13 +shl,gmpz,16,13,3434007,9,5.82,5.81,20.08 +shl,auto,256,13,145082,9,137.59,135.15,19.90 +shl,inplace,256,13,107545,9,93.08,92.83,20.02 +shl,kernel,256,13,210689,9,95.14,94.95,20.05 +shl,kernelip,256,13,102324,9,97.76,97.71,20.00 +shl,floor,256,13,174424,9,116.64,116.44,20.35 +shl,gmp,256,13,423596,9,47.45,47.21,20.09 +shl,gmpz,256,13,396323,9,50.40,49.88,19.98 +shl,auto,2000,13,21852,9,916.20,914.17,20.02 +shl,inplace,2000,13,15228,9,657.25,656.41,20.03 +shl,kernel,2000,13,27807,9,719.14,718.66,20.04 +shl,kernelip,2000,13,13980,9,715.35,715.31,20.01 +shl,floor,2000,13,27291,9,737.95,737.71,20.16 +shl,gmp,2000,13,59626,9,335.62,335.36,20.02 +shl,gmpz,2000,13,59055,9,338.66,338.09,20.01 +shl,auto,2000,77,18776,9,1065.84,1064.35,20.01 +shl,inplace,2000,77,13050,9,764.99,764.31,19.96 +shl,kernel,2000,77,23488,9,851.07,850.42,20.03 +shl,kernelip,2000,77,12159,9,822.32,822.09,20.01 +shl,floor,2000,77,22940,9,871.56,870.57,20.00 +shl,gmp,2000,77,59221,9,339.00,338.77,20.09 +shl,gmpz,2000,77,58714,9,342.38,341.10,20.11 +shr,auto,1,13,1953898,9,10.26,10.23,20.09 +shr,inplace,1,13,2707073,9,3.63,3.60,19.64 +shr,kernel,1,13,11751311,9,1.70,1.70,20.00 +shr,floor,1,13,8824112,9,2.27,2.27,20.01 +shr,gmp,1,13,10469364,9,1.92,1.91,20.06 +shr,gmpz,1,13,6110035,9,3.27,3.27,20.01 +shr,auto,4,13,953576,9,20.96,20.89,19.98 +shr,inplace,4,13,2079713,9,4.77,4.73,19.83 +shr,kernel,4,13,5772651,9,3.47,3.46,20.04 +shr,floor,4,13,1672910,9,11.97,11.95,20.04 +shr,gmp,4,13,8556791,9,2.33,2.31,19.88 +shr,gmpz,4,13,5059033,9,3.97,3.94,20.09 +shr,auto,16,13,774442,9,25.86,25.79,20.04 +shr,inplace,16,13,1121300,9,8.87,8.82,19.88 +shr,kernel,16,13,2445450,9,8.20,8.14,20.06 +shr,floor,16,13,1173299,9,17.04,17.00,20.01 +shr,gmp,16,13,4143221,9,4.81,4.81,19.95 +shr,gmpz,16,13,3248560,9,6.23,6.16,20.39 +shr,auto,256,13,143540,9,139.61,139.13,20.05 +shr,inplace,256,13,106772,9,93.74,93.61,20.03 +shr,kernel,256,13,177812,9,112.61,112.08,20.01 +shr,floor,256,13,152750,9,131.06,130.88,20.02 +shr,gmp,256,13,404479,9,49.50,49.43,20.03 +shr,gmpz,256,13,391378,9,50.86,50.78,19.94 +shr,auto,2000,13,21044,9,950.86,949.29,20.01 +shr,inplace,2000,13,15172,9,657.45,656.76,19.94 +shr,kernel,2000,13,24636,9,811.83,811.81,20.01 +shr,floor,2000,13,24017,9,833.56,832.48,20.03 +shr,gmp,2000,13,59552,9,336.18,335.91,20.04 +shr,gmpz,2000,13,58812,9,339.90,338.85,19.99 +shr,auto,2000,77,18458,9,1083.69,1083.45,20.01 +shr,inplace,2000,77,13071,9,764.79,764.52,20.01 +shr,kernel,2000,77,24151,9,828.19,828.15,20.00 +shr,floor,2000,77,23524,9,850.49,850.08,20.01 +shr,gmp,2000,77,59540,9,336.42,335.92,20.03 +shr,gmpz,2000,77,58760,9,340.17,339.78,20.00 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_big1a.csv b/tests/beman/big_int/perf/item1/x64r4_new64_big1a.csv new file mode 100644 index 00000000..54b20d31 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_new64_big1a.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,402,3,49867.10,49865.77,20.05 +shl,inplace,131072,13,215,3,46573.43,46559.61,20.03 +shl,kernel,131072,13,277,3,72217.80,72204.00,20.09 +shr,auto,131072,13,398,3,50331.96,50317.54,20.03 +shr,inplace,131072,13,215,3,46580.57,46575.43,20.03 +shr,kernel,131072,13,263,3,76173.24,76172.54,20.03 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_big1b.csv b/tests/beman/big_int/perf/item1/x64r4_new64_big1b.csv new file mode 100644 index 00000000..9a74f523 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_new64_big1b.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,402,3,49864.70,49861.24,20.06 +shl,inplace,131072,13,215,3,46539.91,46534.17,20.02 +shl,kernel,131072,13,277,3,72277.12,72255.00,20.03 +shr,auto,131072,13,398,3,50330.40,50310.78,20.03 +shr,inplace,131072,13,215,3,46566.34,46565.77,20.02 +shr,kernel,131072,13,262,3,76002.75,75999.04,19.91 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_big2a.csv b/tests/beman/big_int/perf/item1/x64r4_new64_big2a.csv new file mode 100644 index 00000000..c57db6dd --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_new64_big2a.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,402,3,49874.07,49870.87,20.05 +shl,inplace,131072,13,215,3,46560.50,46560.40,20.02 +shl,kernel,131072,13,277,3,72222.09,72212.74,20.01 +shr,auto,131072,13,398,3,50323.26,50314.13,20.03 +shr,inplace,131072,13,215,3,46536.05,46532.60,20.02 +shr,kernel,131072,13,263,3,76222.71,76218.63,20.05 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_big2b.csv b/tests/beman/big_int/perf/item1/x64r4_new64_big2b.csv new file mode 100644 index 00000000..e6e80733 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_new64_big2b.csv @@ -0,0 +1,7 @@ +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,131072,13,401,3,49874.14,49874.12,20.00 +shl,inplace,131072,13,215,3,46582.80,46573.65,20.06 +shl,kernel,131072,13,277,3,72219.04,72209.92,20.01 +shr,auto,131072,13,398,3,50314.08,50309.06,20.02 +shr,inplace,131072,13,215,3,46563.57,46552.11,20.02 +shr,kernel,131072,13,263,3,76220.87,76215.93,20.07 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_other_seed1a.csv b/tests/beman/big_int/perf/item1/x64r4_new64_other_seed1a.csv new file mode 100644 index 00000000..a5de9d9c --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_new64_other_seed1a.csv @@ -0,0 +1,127 @@ +# gap_sweep date 2026-10-06T18:28:33Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=add,sub,mul,sqr,divrem bands=small pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +add,auto,1,1,3715316,9,5.47,5.44,20.38 +add,inplace,1,1,3898623,9,2.56,2.55,20.01 +add,kernel,1,1,10420041,9,1.92,1.91,20.13 +add,floor,1,1,2036675,9,9.82,9.82,20.00 +add,gmp,1,1,8824067,9,2.27,2.27,20.00 +add,gmpz,1,1,4789569,9,4.16,4.16,19.94 +add,auto,2,2,1230756,9,16.21,16.02,19.92 +add,inplace,2,2,1513737,9,6.52,6.00,19.40 +add,kernel,2,2,8375668,9,2.34,2.31,19.64 +add,floor,2,2,1907833,9,10.26,10.20,19.62 +add,gmp,2,2,8823123,9,2.27,2.27,20.01 +add,gmpz,2,2,4811152,9,4.16,4.16,20.05 +add,auto,4,4,1284722,9,15.79,15.52,20.32 +add,inplace,4,4,1764199,9,5.66,5.63,20.00 +add,kernel,4,4,6521374,9,3.04,3.03,19.87 +add,floor,4,4,1819078,9,11.07,10.97,20.16 +add,gmp,4,4,7961571,9,2.51,2.50,19.97 +add,gmpz,4,4,4519981,9,4.42,4.42,20.00 +add,auto,8,8,1179097,9,17.01,16.96,20.12 +add,inplace,8,8,1375559,9,7.36,7.18,20.20 +add,kernel,8,8,4354738,9,4.57,4.55,19.90 +add,floor,8,8,1589871,9,12.56,12.53,20.00 +add,gmp,8,8,5082657,9,3.93,3.93,19.99 +add,gmpz,8,8,4215397,9,4.73,4.72,19.97 +add,auto,16,16,935742,9,21.47,21.20,20.12 +add,inplace,16,16,887392,9,11.32,11.24,20.08 +add,kernel,16,16,2639056,9,7.59,7.56,20.01 +add,floor,16,16,1281833,9,15.59,15.59,20.01 +add,gmp,16,16,3633914,9,5.50,5.50,20.00 +add,gmpz,16,16,3063106,9,6.52,6.48,20.02 +sub,auto,1,1,3706939,9,5.39,5.33,19.97 +sub,inplace,1,1,4045998,9,2.48,2.46,20.03 +sub,kernel,1,1,13236203,9,1.51,1.51,20.01 +sub,floor,1,1,10589155,9,1.89,1.89,20.01 +sub,gmp,1,1,8760969,9,2.27,2.27,19.86 +sub,gmpz,1,1,4584641,9,4.34,4.34,19.94 +sub,auto,2,2,1252059,9,15.96,15.80,20.02 +sub,inplace,2,2,2065654,9,4.80,4.77,19.83 +sub,kernel,2,2,9626598,9,2.08,2.08,20.06 +sub,floor,2,2,1995722,9,10.01,10.01,19.99 +sub,gmp,2,2,8823128,9,2.27,2.27,20.00 +sub,gmpz,2,2,4596121,9,4.38,4.35,20.15 +sub,auto,4,4,1192110,9,16.85,16.64,20.08 +sub,inplace,4,4,1808085,9,5.53,5.49,20.04 +sub,kernel,4,4,7058065,9,2.83,2.83,20.01 +sub,floor,4,4,1854951,9,10.80,10.79,20.05 +sub,gmp,4,4,7952181,9,2.51,2.50,20.00 +sub,gmpz,4,4,4324058,9,4.63,4.62,20.00 +sub,auto,8,8,1095709,9,18.36,18.20,20.15 +sub,inplace,8,8,1410372,9,7.10,7.04,20.10 +sub,kernel,8,8,4590714,9,4.36,4.35,20.03 +sub,floor,8,8,1613226,9,12.43,12.41,20.05 +sub,gmp,8,8,5417457,9,3.69,3.69,19.98 +sub,gmpz,8,8,4015547,9,5.01,4.99,20.10 +sub,auto,16,16,934450,9,21.39,21.32,20.04 +sub,inplace,16,16,995605,9,10.03,10.02,19.98 +sub,kernel,16,16,2491112,9,8.03,8.03,20.02 +sub,floor,16,16,1290508,9,15.51,15.49,20.01 +sub,gmp,16,16,3155260,9,6.34,6.34,20.01 +sub,gmpz,16,16,2946666,9,6.81,6.77,20.05 +mul,auto,1,1,1196836,9,16.73,16.71,20.03 +mul,gmp,1,1,5912662,9,3.39,3.36,20.03 +mul,gmpz,1,1,4902829,9,4.04,4.04,19.81 +mul,auto,2,2,1037421,9,19.30,19.21,20.04 +mul,kernel,2,2,2854532,9,7.61,7.53,21.71 +mul,floor,2,2,1347671,9,15.01,14.92,20.28 +mul,gmp,2,2,5184309,9,3.86,3.84,20.01 +mul,gmpz,2,2,3238334,9,6.15,6.10,19.91 +mul,auto,3,3,955572,9,20.91,20.86,19.99 +mul,kernel,3,3,2397122,9,8.92,8.91,21.41 +mul,floor,3,3,1237491,9,16.47,16.39,20.38 +mul,gmp,3,3,2516378,9,7.90,7.88,19.92 +mul,gmpz,3,3,1991702,9,9.99,9.96,19.91 +mul,auto,4,4,889747,9,22.46,22.34,19.98 +mul,kernel,4,4,1936237,9,10.90,10.88,21.12 +mul,floor,4,4,1105557,9,18.44,18.35,20.39 +mul,gmp,4,4,2053160,9,9.67,9.66,19.89 +mul,gmpz,4,4,1637903,9,12.16,12.13,19.93 +mul,auto,6,6,712401,9,28.08,28.04,20.01 +mul,kernel,6,6,1216275,9,17.17,17.15,20.89 +mul,floor,6,6,818626,9,24.51,24.47,20.08 +mul,gmp,6,6,1215767,9,16.50,16.41,20.05 +mul,gmpz,6,6,1097887,9,18.25,18.22,20.05 +mul,auto,8,8,548100,9,36.13,36.07,19.81 +mul,kernel,8,8,806042,9,25.38,25.35,20.46 +mul,floor,8,8,615951,9,32.51,32.44,20.03 +mul,gmp,8,8,738866,9,27.01,26.76,19.95 +mul,gmpz,8,8,680255,9,28.71,28.48,19.61 +mul,auto,12,12,344775,9,57.99,57.73,19.99 +mul,kernel,12,12,420730,9,48.07,48.02,20.23 +mul,floor,12,12,361885,9,55.46,55.35,20.07 +mul,gmp,12,12,409361,9,48.83,48.71,19.98 +mul,gmpz,12,12,392222,9,50.96,50.89,20.02 +mul,auto,16,16,225033,9,88.62,88.46,19.95 +mul,kernel,16,16,253035,9,79.65,79.34,20.14 +mul,floor,16,16,228460,9,87.16,87.02,19.93 +mul,gmp,16,16,244319,9,81.89,81.87,20.01 +mul,gmpz,16,16,237667,9,84.06,84.04,19.99 +sqr,auto,4,4,899342,9,22.23,22.19,19.99 +sqr,kernel,4,4,1720243,9,11.27,11.26,19.45 +sqr,floor,4,4,1142295,9,17.14,17.02,19.61 +sqr,gmp,4,4,3427341,9,5.83,5.79,19.98 +sqr,gmpz,4,4,2258256,9,8.92,8.81,20.12 +sqr,auto,16,16,301410,9,66.25,66.19,19.99 +sqr,kernel,16,16,349991,9,57.18,57.13,20.02 +sqr,floor,16,16,319771,9,62.68,62.62,20.04 +sqr,gmp,16,16,393749,9,50.61,50.23,19.89 +sqr,gmpz,16,16,380264,9,52.46,52.24,19.94 +divrem,auto,2,1,530525,9,37.77,37.62,20.02 +divrem,kernel,2,1,3555178,9,5.85,5.48,20.62 +divrem,floor,2,1,1567186,9,12.77,12.76,20.03 +divrem,gmp,2,1,2292018,9,8.74,8.73,20.05 +divrem,gmpz,2,1,1510281,9,13.27,13.19,20.06 +divrem,auto,8,4,232091,9,85.96,85.35,19.96 +divrem,kernel,8,4,466107,9,43.06,42.69,20.04 +divrem,floor,8,4,321317,9,62.97,62.20,20.22 +divrem,gmp,8,4,487102,9,41.24,41.08,20.08 +divrem,gmpz,8,4,445421,9,45.22,45.06,20.15 +divrem,auto,32,16,58958,9,340.46,339.03,20.07 +divrem,kernel,32,16,68615,9,291.48,291.17,20.01 +divrem,floor,32,16,65135,9,307.10,306.15,20.00 +divrem,gmp,32,16,104212,9,191.11,190.72,19.92 +divrem,gmpz,32,16,102819,9,194.18,192.99,19.96 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_seed1a.csv b/tests/beman/big_int/perf/item1/x64r4_new64_seed1a.csv new file mode 100644 index 00000000..949e3f13 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_new64_seed1a.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:25:46Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=shl,shr bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1552758,9,12.84,12.72,19.92 +shl,inplace,1,13,2867535,9,3.48,3.48,20.00 +shl,kernel,1,13,9606198,9,2.08,2.08,19.98 +shl,kernelip,1,13,5618834,9,1.77,1.70,19.85 +shl,floor,1,13,2077680,9,9.82,9.82,20.41 +shl,gmp,1,13,9444435,9,2.12,2.11,19.99 +shl,gmpz,1,13,6110983,9,3.27,3.27,20.01 +shl,auto,4,13,1472495,9,13.52,13.44,19.91 +shl,inplace,4,13,2258513,9,4.39,4.38,19.83 +shl,kernel,4,13,5695336,9,3.51,3.49,19.97 +shl,kernelip,4,13,3364169,9,2.95,2.93,19.95 +shl,floor,4,13,1775771,9,11.23,11.20,19.95 +shl,gmp,4,13,7965969,9,2.50,2.50,19.96 +shl,gmpz,4,13,4946977,9,4.04,4.04,20.01 +shl,auto,16,13,1161317,9,17.24,17.19,20.01 +shl,inplace,16,13,1158185,9,8.55,8.50,19.81 +shl,kernel,16,13,2681196,9,7.46,7.45,20.00 +shl,kernelip,16,13,1402168,9,7.09,7.02,19.90 +shl,floor,16,13,1349073,9,15.24,15.23,20.57 +shl,gmp,16,13,4835409,9,4.17,4.07,20.09 +shl,gmpz,16,13,3327112,9,6.00,5.99,20.01 +shl,auto,256,13,163315,9,122.28,122.07,19.97 +shl,inplace,256,13,101412,9,98.69,98.64,20.03 +shl,kernel,256,13,211057,9,95.00,94.95,20.07 +shl,kernelip,256,13,102355,9,97.69,97.54,20.01 +shl,floor,256,13,176338,9,118.36,118.10,20.89 +shl,gmp,256,13,414031,9,48.03,47.92,19.88 +shl,gmpz,256,13,393918,9,50.72,50.55,19.99 +shl,auto,2000,13,25858,9,773.33,773.22,20.01 +shl,inplace,2000,13,14032,9,712.65,712.44,20.01 +shl,kernel,2000,13,27784,9,720.28,719.73,20.01 +shl,kernelip,2000,13,13979,9,715.31,715.04,20.00 +shl,floor,2000,13,27157,9,740.37,739.45,20.12 +shl,gmp,2000,13,59070,9,339.50,338.28,20.05 +shl,gmpz,2000,13,58273,9,343.58,342.64,20.02 +shl,auto,2000,77,25827,9,774.41,774.18,20.00 +shl,inplace,2000,77,14034,9,712.59,712.32,20.01 +shl,kernel,2000,77,23525,9,848.98,848.25,20.01 +shl,kernelip,2000,77,12138,9,822.03,822.02,19.96 +shl,floor,2000,77,22949,9,872.27,870.53,20.01 +shl,gmp,2000,77,58197,9,344.17,343.94,20.03 +shl,gmpz,2000,77,57945,9,344.73,344.69,19.98 +shr,auto,1,13,2361519,9,8.47,8.44,19.99 +shr,inplace,1,13,3258906,9,3.07,3.05,20.02 +shr,kernel,1,13,11582405,9,1.72,1.71,19.93 +shr,floor,1,13,8671328,9,2.31,2.30,20.00 +shr,gmp,1,13,10341973,9,1.93,1.93,19.91 +shr,gmpz,1,13,6108182,9,3.27,3.27,20.00 +shr,auto,4,13,1252446,9,15.96,15.91,20.00 +shr,inplace,4,13,2378961,9,4.17,4.16,19.86 +shr,kernel,4,13,5736260,9,3.49,3.48,20.02 +shr,floor,4,13,1786837,9,11.19,11.18,20.00 +shr,gmp,4,13,8622665,9,2.34,2.32,20.13 +shr,gmpz,4,13,5017909,9,3.97,3.95,19.95 +shr,auto,16,13,986406,9,20.22,20.19,19.96 +shr,inplace,16,13,1210655,9,8.17,8.09,19.75 +shr,kernel,16,13,2357867,9,8.48,8.48,20.06 +shr,floor,16,13,1280101,9,15.49,15.37,19.86 +shr,gmp,16,13,4657469,9,4.29,4.29,20.04 +shr,gmpz,16,13,3229074,9,6.20,6.17,20.13 +shr,auto,256,13,149115,9,133.69,133.38,19.93 +shr,inplace,256,13,101716,9,98.28,97.99,20.00 +shr,kernel,256,13,179825,9,112.10,111.74,20.15 +shr,floor,256,13,150383,9,132.52,131.98,19.93 +shr,gmp,256,13,410569,9,48.51,48.32,19.95 +shr,gmpz,256,13,387216,9,51.61,51.55,19.99 +shr,auto,2000,13,25408,9,787.83,786.96,20.02 +shr,inplace,2000,13,14036,9,711.64,711.40,19.98 +shr,kernel,2000,13,24633,9,811.94,811.90,20.00 +shr,floor,2000,13,24036,9,831.94,831.48,20.01 +shr,gmp,2000,13,58857,9,341.77,340.50,20.11 +shr,gmpz,2000,13,57889,9,345.17,344.96,19.98 +shr,auto,2000,77,25313,9,789.85,789.48,20.00 +shr,inplace,2000,77,14047,9,712.11,711.94,20.01 +shr,kernel,2000,77,24140,9,828.47,828.29,20.00 +shr,floor,2000,77,23522,9,850.58,850.28,20.01 +shr,gmp,2000,77,58913,9,341.71,340.28,20.11 +shr,gmpz,2000,77,57913,9,344.17,342.95,19.96 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_seed1b.csv b/tests/beman/big_int/perf/item1/x64r4_new64_seed1b.csv new file mode 100644 index 00000000..b812acfc --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_new64_seed1b.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:26:25Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=shl,shr bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1595590,9,12.60,12.51,20.12 +shl,inplace,1,13,2870066,9,3.48,3.48,20.00 +shl,kernel,1,13,9626355,9,2.08,2.08,20.01 +shl,kernelip,1,13,5620285,9,1.79,1.70,20.09 +shl,floor,1,13,2056346,9,9.83,9.82,20.21 +shl,gmp,1,13,9447300,9,2.11,2.10,19.90 +shl,gmpz,1,13,6110968,9,3.27,3.27,20.03 +shl,auto,4,13,1494189,9,13.41,13.38,20.04 +shl,inplace,4,13,2284590,9,4.41,4.39,20.13 +shl,kernel,4,13,4945125,9,4.06,4.05,20.08 +shl,kernelip,4,13,3330446,9,2.97,2.94,19.77 +shl,floor,4,13,1775677,9,11.20,11.18,19.90 +shl,gmp,4,13,7991421,9,2.50,2.50,20.00 +shl,gmpz,4,13,4935786,9,4.04,4.04,19.97 +shl,auto,16,13,1193368,9,16.75,16.70,19.98 +shl,inplace,16,13,1174965,9,8.62,8.55,20.24 +shl,kernel,16,13,2683081,9,7.45,7.43,20.00 +shl,kernelip,16,13,1406547,9,7.03,7.00,19.93 +shl,floor,16,13,1349163,9,15.23,15.21,20.55 +shl,gmp,16,13,4925221,9,4.09,4.06,20.14 +shl,gmpz,16,13,3434684,9,5.80,5.79,19.93 +shl,auto,256,13,164281,9,121.75,121.62,20.00 +shl,inplace,256,13,101332,9,98.65,98.53,19.99 +shl,kernel,256,13,210258,9,95.26,95.01,20.03 +shl,kernelip,256,13,102466,9,97.67,97.59,20.02 +shl,floor,256,13,176392,9,118.16,118.01,20.86 +shl,gmp,256,13,421077,9,47.72,47.28,20.07 +shl,gmpz,256,13,395497,9,50.25,50.01,19.87 +shl,auto,2000,13,25862,9,773.41,773.07,20.00 +shl,inplace,2000,13,14033,9,712.54,712.32,20.01 +shl,kernel,2000,13,27816,9,719.74,718.92,20.02 +shl,kernelip,2000,13,13979,9,715.31,715.16,20.05 +shl,floor,2000,13,27165,9,739.43,738.79,20.10 +shl,gmp,2000,13,59530,9,336.75,335.33,20.04 +shl,gmpz,2000,13,58890,9,339.71,339.08,20.03 +shl,auto,2000,77,25834,9,774.29,774.19,20.00 +shl,inplace,2000,77,14036,9,712.67,712.33,20.04 +shl,kernel,2000,77,23551,9,850.12,848.92,20.02 +shl,kernelip,2000,77,12164,9,822.04,822.03,20.00 +shl,floor,2000,77,22953,9,873.19,872.37,20.05 +shl,gmp,2000,77,58624,9,343.71,342.74,20.14 +shl,gmpz,2000,77,58019,9,344.74,344.66,20.00 +shr,auto,1,13,2388164,9,8.38,8.37,20.01 +shr,inplace,1,13,3267229,9,3.07,3.05,20.07 +shr,kernel,1,13,11634106,9,1.71,1.70,19.86 +shr,floor,1,13,8656750,9,2.28,2.27,19.71 +shr,gmp,1,13,10388735,9,1.93,1.93,20.00 +shr,gmpz,1,13,6091114,9,3.27,3.27,19.95 +shr,auto,4,13,1255257,9,15.90,15.83,19.97 +shr,inplace,4,13,2381773,9,4.18,4.16,19.96 +shr,kernel,4,13,5771391,9,3.47,3.47,20.03 +shr,floor,4,13,1785242,9,11.20,11.18,20.00 +shr,gmp,4,13,8430210,9,2.35,2.31,19.79 +shr,gmpz,4,13,5069715,9,3.97,3.95,20.10 +shr,auto,16,13,990091,9,20.24,20.20,20.05 +shr,inplace,16,13,1221984,9,8.18,8.15,19.98 +shr,kernel,16,13,2358801,9,8.50,8.48,20.11 +shr,floor,16,13,1297666,9,15.50,15.34,20.13 +shr,gmp,16,13,4599452,9,4.29,4.29,19.75 +shr,gmpz,16,13,3168474,9,6.20,6.13,19.89 +shr,auto,256,13,149769,9,133.74,133.47,20.03 +shr,inplace,256,13,101932,9,98.24,98.14,20.03 +shr,kernel,256,13,181214,9,110.68,110.24,20.05 +shr,floor,256,13,152999,9,130.97,130.58,20.04 +shr,gmp,256,13,413592,9,48.27,48.00,19.96 +shr,gmpz,256,13,382347,9,51.41,51.21,19.65 +shr,auto,2000,13,25375,9,788.01,787.50,20.00 +shr,inplace,2000,13,14044,9,711.49,711.34,19.98 +shr,kernel,2000,13,24613,9,812.44,812.38,20.00 +shr,floor,2000,13,23987,9,832.49,832.06,19.97 +shr,gmp,2000,13,59495,9,338.84,336.57,20.14 +shr,gmpz,2000,13,58388,9,342.42,341.21,19.99 +shr,auto,2000,77,25317,9,790.00,789.27,20.00 +shr,inplace,2000,77,14046,9,712.05,711.89,20.04 +shr,kernel,2000,77,24094,9,830.10,830.09,20.00 +shr,floor,2000,77,23434,9,852.88,852.52,19.99 +shr,gmp,2000,77,59508,9,338.15,336.70,20.12 +shr,gmpz,2000,77,58487,9,343.51,342.01,20.08 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_seed2a.csv b/tests/beman/big_int/perf/item1/x64r4_new64_seed2a.csv new file mode 100644 index 00000000..9c79517c --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_new64_seed2a.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:27:04Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=shl,shr bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1538183,9,12.74,12.57,19.60 +shl,inplace,1,13,2869941,9,3.49,3.48,20.00 +shl,kernel,1,13,9626463,9,2.08,2.07,20.03 +shl,kernelip,1,13,5585569,9,1.82,1.73,20.18 +shl,floor,1,13,2077050,9,9.83,9.82,20.43 +shl,gmp,1,13,9497462,9,2.08,2.08,19.76 +shl,gmpz,1,13,6110942,9,3.27,3.27,20.03 +shl,auto,4,13,1478766,9,13.42,13.40,19.87 +shl,inplace,4,13,2279246,9,4.39,4.37,20.04 +shl,kernel,4,13,5698166,9,3.51,3.50,19.98 +shl,kernelip,4,13,3330556,9,2.99,2.94,19.88 +shl,floor,4,13,1773152,9,11.95,11.48,21.03 +shl,gmp,4,13,7885845,9,2.50,2.50,19.77 +shl,gmpz,4,13,4304461,9,4.64,4.63,19.98 +shl,auto,16,13,1194088,9,16.77,16.72,20.02 +shl,inplace,16,13,1152244,9,8.57,8.54,19.80 +shl,kernel,16,13,2440446,9,8.17,8.13,19.94 +shl,kernelip,16,13,1411608,9,7.14,7.05,20.18 +shl,floor,16,13,1320296,9,15.33,15.23,20.23 +shl,gmp,16,13,4767327,9,4.21,4.17,20.09 +shl,gmpz,16,13,3427179,9,5.83,5.83,20.00 +shl,auto,256,13,164275,9,121.80,121.68,20.01 +shl,inplace,256,13,101250,9,98.61,98.47,20.00 +shl,kernel,256,13,211123,9,95.12,94.82,20.09 +shl,kernelip,256,13,101831,9,97.62,97.40,19.89 +shl,floor,256,13,177142,9,117.43,117.22,20.80 +shl,gmp,256,13,422386,9,47.37,47.24,20.01 +shl,gmpz,256,13,400465,9,49.89,49.72,19.99 +shl,auto,2000,13,25860,9,773.44,773.36,20.00 +shl,inplace,2000,13,14031,9,712.52,712.36,20.00 +shl,kernel,2000,13,27813,9,719.12,719.06,20.01 +shl,kernelip,2000,13,13980,9,715.31,715.26,20.00 +shl,floor,2000,13,27183,9,738.88,738.56,20.08 +shl,gmp,2000,13,59636,9,335.42,335.39,20.00 +shl,gmpz,2000,13,58957,9,339.12,337.89,19.99 +shl,auto,2000,77,25828,9,774.30,774.20,20.03 +shl,inplace,2000,77,14024,9,712.54,712.25,19.99 +shl,kernel,2000,77,23449,9,851.39,849.90,19.98 +shl,kernelip,2000,77,12166,9,822.04,822.04,20.02 +shl,floor,2000,77,22970,9,872.79,871.10,20.04 +shl,gmp,2000,77,58927,9,341.34,338.57,20.10 +shl,gmpz,2000,77,58442,9,344.15,343.05,20.10 +shr,auto,1,13,2396017,9,8.36,8.35,20.02 +shr,inplace,1,13,3231181,9,3.08,3.07,19.93 +shr,kernel,1,13,11753628,9,1.70,1.70,20.03 +shr,floor,1,13,8811462,9,2.27,2.27,20.03 +shr,gmp,1,13,10403895,9,1.92,1.92,20.01 +shr,gmpz,1,13,6109661,9,3.28,3.27,20.05 +shr,auto,4,13,1259059,9,15.89,15.82,20.00 +shr,inplace,4,13,2404047,9,4.18,4.16,20.10 +shr,kernel,4,13,5741846,9,3.47,3.47,19.97 +shr,floor,4,13,1767391,9,11.26,11.24,19.90 +shr,gmp,4,13,8590053,9,2.36,2.32,20.22 +shr,gmpz,4,13,5052812,9,3.96,3.94,20.01 +shr,auto,16,13,987790,9,20.27,20.22,20.03 +shr,inplace,16,13,1237067,9,8.17,8.14,20.24 +shr,kernel,16,13,2358901,9,8.48,8.48,20.02 +shr,floor,16,13,1243105,9,15.97,15.90,19.86 +shr,gmp,16,13,4619485,9,4.31,4.31,19.96 +shr,gmpz,16,13,3205944,9,6.24,6.20,20.19 +shr,auto,256,13,150073,9,133.27,133.00,20.00 +shr,inplace,256,13,101620,9,98.43,98.33,20.04 +shr,kernel,256,13,181110,9,110.37,110.27,20.00 +shr,floor,256,13,153290,9,130.43,130.18,20.00 +shr,gmp,256,13,417003,9,48.01,47.93,20.02 +shr,gmpz,256,13,390024,9,51.02,50.92,19.91 +shr,auto,2000,13,25402,9,788.19,787.47,20.04 +shr,inplace,2000,13,14055,9,711.58,711.39,20.00 +shr,kernel,2000,13,24633,9,811.99,811.95,20.02 +shr,floor,2000,13,24046,9,832.11,831.38,20.02 +shr,gmp,2000,13,59579,9,336.15,335.55,20.03 +shr,gmpz,2000,13,59028,9,339.48,338.85,20.06 +shr,auto,2000,77,25288,9,789.73,789.21,19.97 +shr,inplace,2000,77,14047,9,712.14,711.78,20.01 +shr,kernel,2000,77,24094,9,830.10,830.08,20.00 +shr,floor,2000,77,23490,9,850.73,850.40,19.99 +shr,gmp,2000,77,59501,9,336.17,335.97,20.01 +shr,gmpz,2000,77,58937,9,339.46,339.17,20.01 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_seed2b.csv b/tests/beman/big_int/perf/item1/x64r4_new64_seed2b.csv new file mode 100644 index 00000000..e73272e6 --- /dev/null +++ b/tests/beman/big_int/perf/item1/x64r4_new64_seed2b.csv @@ -0,0 +1,82 @@ +# gap_sweep date 2026-10-06T18:27:43Z host mborland-MS-7C75 Linux x86_64 +# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=shl,shr bands=small,medium pin=taskset -c 2 +#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual +shl,auto,1,13,1574013,9,12.63,12.54,19.90 +shl,inplace,1,13,2869582,9,3.48,3.48,19.99 +shl,kernel,1,13,9626398,9,2.08,2.07,19.99 +shl,kernelip,1,13,5659475,9,1.77,1.72,19.99 +shl,floor,1,13,2077681,9,9.82,9.82,20.41 +shl,gmp,1,13,9626734,9,2.08,1.92,19.87 +shl,gmpz,1,13,6111105,9,3.27,3.27,20.06 +shl,auto,4,13,1481395,9,13.45,13.42,19.92 +shl,inplace,4,13,2276672,9,4.40,4.38,20.03 +shl,kernel,4,13,5703643,9,3.51,3.50,20.04 +shl,kernelip,4,13,3360949,9,2.97,2.95,19.97 +shl,floor,4,13,1775457,9,11.19,11.18,19.88 +shl,gmp,4,13,7991576,9,2.50,2.50,20.03 +shl,gmpz,4,13,4946819,9,4.05,4.04,20.02 +shl,auto,16,13,1189741,9,16.73,16.68,19.92 +shl,inplace,16,13,1158356,9,8.59,8.56,19.92 +shl,kernel,16,13,2680152,9,7.46,7.43,19.98 +shl,kernelip,16,13,1368443,9,7.12,7.04,19.52 +shl,floor,16,13,1339223,9,15.23,15.21,20.40 +shl,gmp,16,13,4815320,9,4.18,4.16,20.19 +shl,gmpz,16,13,3433988,9,5.80,5.80,19.95 +shl,auto,256,13,164296,9,121.82,121.05,20.01 +shl,inplace,256,13,101285,9,98.74,98.66,20.02 +shl,kernel,256,13,211129,9,95.58,94.88,20.17 +shl,kernelip,256,13,102360,9,97.66,97.58,20.00 +shl,floor,256,13,179051,9,116.58,116.47,20.87 +shl,gmp,256,13,424362,9,47.14,47.09,20.01 +shl,gmpz,256,13,398900,9,49.81,49.56,19.87 +shl,auto,2000,13,25849,9,773.69,773.55,20.00 +shl,inplace,2000,13,14035,9,712.46,712.26,20.00 +shl,kernel,2000,13,27787,9,719.01,718.98,19.98 +shl,kernelip,2000,13,13970,9,715.43,715.27,20.00 +shl,floor,2000,13,27130,9,739.42,738.90,20.06 +shl,gmp,2000,13,59639,9,335.38,335.32,20.00 +shl,gmpz,2000,13,58950,9,338.11,337.87,19.94 +shl,auto,2000,77,25823,9,774.47,774.28,20.00 +shl,inplace,2000,77,14033,9,712.69,712.41,20.02 +shl,kernel,2000,77,23570,9,849.67,848.28,20.02 +shl,kernelip,2000,77,12166,9,822.05,822.02,20.00 +shl,floor,2000,77,22947,9,872.77,871.72,20.06 +shl,gmp,2000,77,59286,9,339.29,338.27,20.11 +shl,gmpz,2000,77,58518,9,341.43,340.52,19.98 +shr,auto,1,13,2387258,9,8.35,8.34,19.93 +shr,inplace,1,13,3246180,9,3.09,3.05,20.06 +shr,kernel,1,13,11755384,9,1.70,1.70,20.01 +shr,floor,1,13,8824090,9,2.27,2.27,20.02 +shr,gmp,1,13,10507115,9,1.92,1.91,20.17 +shr,gmpz,1,13,6105395,9,3.27,3.27,20.00 +shr,auto,4,13,1258526,9,15.85,15.81,19.95 +shr,inplace,4,13,2363520,9,4.17,4.16,19.74 +shr,kernel,4,13,5771604,9,3.49,3.47,20.14 +shr,floor,4,13,1785715,9,11.20,11.19,20.00 +shr,gmp,4,13,8524766,9,2.34,2.32,19.99 +shr,gmpz,4,13,5018688,9,3.96,3.95,19.91 +shr,auto,16,13,989128,9,20.24,20.18,20.02 +shr,inplace,16,13,1220471,9,8.14,8.11,19.88 +shr,kernel,16,13,2343265,9,8.50,8.48,19.95 +shr,floor,16,13,1281055,9,15.53,15.43,19.89 +shr,gmp,16,13,4659186,9,4.29,4.29,20.03 +shr,gmpz,16,13,3251518,9,6.18,6.15,20.37 +shr,auto,256,13,149813,9,133.65,133.48,20.03 +shr,inplace,256,13,101914,9,98.20,98.08,20.01 +shr,kernel,256,13,181262,9,110.34,110.18,20.00 +shr,floor,256,13,153295,9,130.57,130.38,20.02 +shr,gmp,256,13,420431,9,47.90,47.57,20.11 +shr,gmpz,256,13,394316,9,50.68,50.55,19.99 +shr,auto,2000,13,25384,9,787.72,787.23,20.00 +shr,inplace,2000,13,14060,9,711.52,711.38,20.02 +shr,kernel,2000,13,24624,9,812.07,812.04,20.02 +shr,floor,2000,13,24031,9,832.03,831.45,19.99 +shr,gmp,2000,13,59585,9,335.67,335.45,20.01 +shr,gmpz,2000,13,58932,9,338.98,338.92,19.99 +shr,auto,2000,77,25289,9,789.63,789.00,19.98 +shr,inplace,2000,77,14047,9,712.20,711.93,20.02 +shr,kernel,2000,77,24148,9,828.31,828.22,20.00 +shr,floor,2000,77,23531,9,850.35,850.06,20.02 +shr,gmp,2000,77,59463,9,336.26,336.13,20.01 +shr,gmpz,2000,77,58955,9,339.21,339.16,20.01 diff --git a/tests/beman/big_int/perf/item1_frontend_results.md b/tests/beman/big_int/perf/item1_frontend_results.md index 02a4c838..f69e1c3a 100644 --- a/tests/beman/big_int/perf/item1_frontend_results.md +++ b/tests/beman/big_int/perf/item1_frontend_results.md @@ -8,7 +8,7 @@ SPDX-License-Identifier: BSL-1.0 Item 1 of [`gmp_gap_analysis.md`](gmp_gap_analysis.md) section 6 targeted the 13-18 ns that `+ - << >>` add on top of the span kernel at <= 16 limbs, the ~21 ns for small `*`, and the 37-66 ns for small divrem. This document records what changed, how it was measured, and where the targets were and were not met. Numbers are nanoseconds per operation unless noted; -"before" is the library at cf1cf54 and "after" is `opt_1` at d689f75, both measured with the same harness (`shape_sweep.cpp`, +"before" is the library at cf1cf54 and "after" is `opt_1` at b823c5f, both measured with the same harness (`shape_sweep.cpp`, with the `floor` row added). The inline-capacity decision is left to the reader: the study in section 7 reports costs and benefits without recommending a default. @@ -27,8 +27,9 @@ benefits without recommending a default. `storage_for_overwrite` storage: no zero re-scan, no one-step trim. Single-limb operands take a fast path. - **Shifts.** `c = a << s` and `c = a >> s` build the result from the source in one pass (`lshift_copy`/`rshift_copy`) into an exactly sized buffer; `<<=` and `>>=` shift in one in-place pass without reserving a spare limb the value does not need - (so `1 << 127` stays inline in a 128-bit `basic_big_int`). A later change routes in-place pure bit shifts to the older - `shift_left_n`/`shift_right_n`; its effect is discussed in sections 3.6 and 3.8. Negative right shifts keep floor rounding by detecting + (so `1 << 127` stays inline in a 128-bit `basic_big_int`). A later change that routed in-place pure bit shifts to the older + `shift_left_n`/`shift_right_n` was reverted after it slowed M4 (sections 3.6 and 3.8); under GCC the shift primitives use + register-carried loops. Negative right shifts keep floor rounding by detecting discarded bits during the pass. - **Multiply.** `multiply_into` writes into `storage_for_overwrite` storage and drops the fill and the zero re-scan. `*=` keeps the allocator and capacity (one-limb rhs in place, small products through a stack buffer, larger ones into a fresh @@ -69,9 +70,11 @@ benefits without recommending a default. ## 3. Before and after Cells read `before -> after`. `auto/gmpz` is the user-visible gap to GMP (above 1 means `big_int` is slower). The tables are -the re-measurement on `opt_1` at d689f75 (the add/sub, shift and single-limb follow-ups and the mul-add fix included); -an earlier measurement of 9145b4e is described in section 3.6. Rows are the median of four runs per binary -(`macr3_*`, `x64r3_*` CSVs). +the re-measurement on `opt_1` (the add/sub, shift and single-limb follow-ups and the mul-add fix included): all rows come +from the d689f75 runs (`macr3_*`, `x64r3_*`) except the shl/shr rows, which were re-measured at b823c5f (`macr4_*`, +`x64r4_*`), the commit that changes only the shift code; one interleaved check of add/sub/mul/sqr/divrem at b823c5f found +nothing else moved. Rows are the median of four runs per binary. An earlier measurement of 9145b4e is described in +section 3.6. ### 3.1 x64 (g++-14, -march=native), small band @@ -87,12 +90,12 @@ an earlier measurement of 9145b4e is described in section 3.6. Rows are the medi | sub | 4x4 | 19.0 -> 16.5 | 5.5 -> 5.6 | 8.3 -> 5.9 | 4.12 -> 3.60 | 16.2 -> 13.7 | | sub | 8x8 | 20.6 -> 18.1 | 7.2 -> 7.3 | 8.2 -> 5.9 | 4.14 -> 3.64 | 16.2 -> 13.7 | | sub | 16x16 | 25.7 -> 21.0 | 10.6 -> 10.0 | 10.3 -> 5.7 | 3.78 -> 3.09 | 17.7 -> 13.6 | -| shl | 1x13 | 16.8 -> 12.5 | 4.1 -> 4.2 | 6.9 -> 2.7 | 4.83 -> 3.83 | 14.7 -> 10.4 | -| shl | 4x13 | 18.7 -> 13.5 | 5.2 -> 5.3 | 7.4 -> 2.3 | 4.63 -> 3.34 | 15.2 -> 10.0 | -| shl | 16x13 | 24.6 -> 17.1 | 9.2 -> 9.3 | 9.3 -> 1.9 | 4.17 -> 2.94 | 17.0 -> 9.6 | -| shr | 1x13 | 10.2 -> 8.2 | 3.6 -> 3.9 | 7.9 -> 5.9 | 3.11 -> 2.36 | 8.5 -> 6.5 | -| shr | 4x13 | 21.0 -> 16.0 | 4.7 -> 5.0 | 9.0 -> 4.1 | 5.29 -> 4.04 | 17.5 -> 12.6 | -| shr | 16x13 | 25.8 -> 20.0 | 8.8 -> 9.0 | 8.8 -> 2.9 | 4.12 -> 3.18 | 17.6 -> 11.3 | +| shl | 1x13 | 16.9 -> 12.7 | 4.2 -> 3.5 | 7.0 -> 2.9 | 4.86 -> 3.88 | 14.8 -> 10.6 | +| shl | 4x13 | 18.7 -> 13.4 | 5.3 -> 4.4 | 7.5 -> 2.2 | 4.63 -> 3.32 | 15.2 -> 9.9 | +| shl | 16x13 | 24.6 -> 16.8 | 9.3 -> 8.6 | 9.3 -> 1.5 | 4.22 -> 2.88 | 17.1 -> 9.3 | +| shr | 1x13 | 10.3 -> 8.4 | 3.6 -> 3.1 | 8.0 -> 6.1 | 3.14 -> 2.56 | 8.6 -> 6.7 | +| shr | 4x13 | 21.0 -> 15.9 | 4.8 -> 4.2 | 9.0 -> 4.7 | 5.28 -> 4.01 | 17.5 -> 12.4 | +| shr | 16x13 | 25.9 -> 20.2 | 9.0 -> 8.2 | 8.9 -> 4.7 | 3.96 -> 3.26 | 17.7 -> 11.7 | | mul | 2x2 | 28.2 -> 18.9 | - | 13.1 -> 3.9 | 4.61 -> 3.08 | 20.7 -> 11.3 | | mul | 3x3 | 29.7 -> 20.3 | - | 13.1 -> 3.9 | 2.97 -> 2.03 | 20.7 -> 11.4 | | mul | 4x4 | 32.0 -> 22.4 | - | 13.4 -> 4.2 | 2.63 -> 1.84 | 20.9 -> 11.5 | @@ -124,12 +127,12 @@ an earlier measurement of 9145b4e is described in section 3.6. Rows are the medi | sub | 4x4 | 15.8 -> 15.1 | 3.9 -> 4.0 | 5.8 -> 5.2 | 5.31 -> 5.52 | 13.9 -> 13.2 | | sub | 8x8 | 16.3 -> 15.7 | 5.0 -> 4.4 | 4.6 -> 4.3 | 4.65 -> 4.86 | 12.7 -> 12.2 | | sub | 16x16 | 18.4 -> 18.1 | 10.9 -> 5.4 | 3.0 -> 3.0 | 4.22 -> 4.13 | 10.7 -> 10.3 | -| shl | 1x13 | 16.9 -> 12.3 | 2.3 -> 3.4 | 5.9 -> 1.4 | 8.50 -> 6.17 | 14.7 -> 9.8 | -| shl | 4x13 | 19.1 -> 13.1 | 3.6 -> 5.5 | 6.1 -> 0.0 | 6.95 -> 4.79 | 15.4 -> 9.4 | -| shl | 16x13 | 21.7 -> 15.5 | 5.8 -> 6.9 | 9.6 -> 3.3 | 4.31 -> 2.99 | 17.6 -> 11.4 | -| shr | 1x13 | 9.1 -> 6.6 | 2.3 -> 3.1 | 6.6 -> 4.1 | 4.58 -> 3.32 | 6.9 -> 4.4 | -| shr | 4x13 | 18.4 -> 14.1 | 3.3 -> 4.7 | 6.2 -> 1.8 | 6.70 -> 5.15 | 14.6 -> 10.4 | -| shr | 16x13 | 21.3 -> 18.0 | 5.1 -> 6.1 | 8.2 -> 4.8 | 5.02 -> 4.24 | 17.1 -> 13.9 | +| shl | 1x13 | 17.5 -> 12.3 | 2.3 -> 2.5 | 6.5 -> 0.9 | 8.82 -> 6.14 | 15.3 -> 10.0 | +| shl | 4x13 | 19.0 -> 13.1 | 3.6 -> 3.8 | 5.9 -> -0.1 | 6.98 -> 4.73 | 15.3 -> 9.4 | +| shl | 16x13 | 21.5 -> 16.1 | 5.8 -> 5.4 | 9.4 -> 3.9 | 4.26 -> 3.09 | 17.4 -> 12.0 | +| shr | 1x13 | 9.5 -> 6.6 | 2.4 -> 3.3 | 7.0 -> 4.1 | 4.77 -> 3.31 | 7.3 -> 4.3 | +| shr | 4x13 | 17.8 -> 15.2 | 3.3 -> 3.6 | 5.4 -> 2.9 | 6.41 -> 5.56 | 14.0 -> 11.5 | +| shr | 16x13 | 21.6 -> 18.5 | 5.1 -> 5.2 | 8.3 -> 5.2 | 5.07 -> 4.35 | 17.4 -> 14.4 | | mul | 2x2 | 28.1 -> 18.2 | - | 13.4 -> 3.7 | 4.29 -> 2.81 | 21.5 -> 11.9 | | mul | 3x3 | 30.1 -> 20.0 | - | 13.2 -> 3.0 | 3.57 -> 1.91 | 21.8 -> 11.9 | | mul | 4x4 | 29.7 -> 21.6 | - | 12.6 -> 4.8 | 2.87 -> 1.97 | 18.5 -> 10.6 | @@ -157,12 +160,12 @@ an earlier measurement of 9145b4e is described in section 3.6. Rows are the medi | add | 2000x2000 | 1721.6 -> 1153.3 | 1134.8 -> 1132.4 | 571.1 -> 3.9 | 3.56 -> 2.40 | 588.6 -> 21.7 | | sub | 64x64 | 65.9 -> 45.3 | 37.7 -> 34.6 | 23.8 -> 3.1 | 3.94 -> 2.70 | 33.0 -> 12.6 | | sub | 1024x1024 | 842.3 -> 598.3 | 581.5 -> 579.9 | 247.9 -> 4.1 | 2.15 -> 1.53 | 264.0 -> 20.5 | -| shl | 256x13 | 135.4 -> 122.0 | 93.0 -> 99.3 | 18.8 -> 7.4 | 2.69 -> 2.43 | 42.0 -> 28.1 | -| shl | 2000x13 | 917.2 -> 772.7 | 657.3 -> 716.9 | 177.7 -> 33.4 | 2.71 -> 2.29 | 196.9 -> 53.0 | -| shl | 2000x77 | 1065.8 -> 774.6 | 764.9 -> 741.6 | 193.2 -> -98.0 | 3.14 -> 2.29 | 216.0 -> -77.6 | -| shr | 256x13 | 137.9 -> 125.0 | 93.8 -> 99.1 | 6.7 -> -6.0 | 2.72 -> 2.46 | 27.8 -> 15.0 | -| shr | 2000x13 | 949.9 -> 749.4 | 656.8 -> 716.5 | 117.3 -> -83.4 | 2.80 -> 2.21 | 138.1 -> -62.9 | -| shr | 2000x77 | 1083.7 -> 749.4 | 764.9 -> 740.2 | 232.9 -> -102.6 | 3.19 -> 2.21 | 255.4 -> -80.7 | +| shl | 256x13 | 136.9 -> 121.8 | 93.1 -> 98.7 | 19.7 -> 4.0 | 2.69 -> 2.43 | 41.7 -> 26.6 | +| shl | 2000x13 | 916.7 -> 773.4 | 657.7 -> 712.5 | 177.8 -> 34.0 | 2.69 -> 2.28 | 197.2 -> 54.0 | +| shl | 2000x77 | 1066.1 -> 774.4 | 764.8 -> 712.6 | 194.2 -> -98.4 | 3.09 -> 2.25 | 216.0 -> -75.5 | +| shr | 256x13 | 139.7 -> 133.7 | 93.7 -> 98.3 | 7.5 -> 2.9 | 2.71 -> 2.61 | 28.1 -> 23.1 | +| shr | 2000x13 | 950.7 -> 787.9 | 657.2 -> 711.5 | 118.1 -> -44.1 | 2.78 -> 2.31 | 138.9 -> -24.1 | +| shr | 2000x77 | 1084.3 -> 789.8 | 765.0 -> 712.1 | 233.6 -> -60.9 | 3.16 -> 2.31 | 255.9 -> -39.5 | | mul | 32x32 | 212.3 -> 205.8 | - | 12.1 -> 9.3 | 0.78 -> 0.76 | 24.7 -> 18.9 | | mul | 64x64 | 524.5 -> 496.2 | - | 31.0 -> 3.7 | 0.60 -> 0.58 | 41.5 -> 9.5 | | mul | 256x256 | 6231.5 -> 6176.4 | - | 28.3 -> 2.4 | 0.80 -> 0.79 | 62.6 -> -2.4 | @@ -195,12 +198,12 @@ an earlier measurement of 9145b4e is described in section 3.6. Rows are the medi | add | 2000x2000 | 1132.3 -> 877.0 | 1948.4 -> 858.2 | -812.1 -> -1054.3 | 2.27 -> 1.76 | -797.7 -> -1050.8 | | sub | 64x64 | 41.2 -> 36.1 | 51.2 -> 19.8 | -19.0 -> -25.1 | 2.97 -> 2.68 | -8.6 -> -17.3 | | sub | 1024x1024 | 562.3 -> 454.6 | 988.4 -> 435.0 | -424.5 -> -532.1 | 2.21 -> 1.80 | -416.2 -> -524.8 | -| shl | 256x13 | 86.1 -> 41.2 | 36.6 -> 45.1 | 28.4 -> -15.9 | 2.27 -> 1.09 | 36.8 -> -8.0 | -| shl | 2000x13 | 653.2 -> 261.0 | 284.3 -> 347.8 | 250.6 -> -141.2 | 0.32 -> 0.12 | 268.9 -> -125.3 | -| shl | 2000x77 | 818.5 -> 450.3 | 426.3 -> 233.4 | 277.3 -> -96.6 | 2.81 -> 1.56 | 287.6 -> -79.8 | -| shr | 256x13 | 87.8 -> 42.6 | 36.0 -> 44.8 | 11.6 -> -32.8 | 2.30 -> 1.12 | 21.3 -> -24.2 | -| shr | 2000x13 | 698.0 -> 271.2 | 283.2 -> 347.5 | 171.3 -> -255.8 | 2.33 -> 0.90 | 179.5 -> -241.6 | -| shr | 2000x77 | 1040.9 -> 280.7 | 421.2 -> 195.9 | 506.5 -> -247.6 | 3.59 -> 0.98 | 522.6 -> -236.7 | +| shl | 256x13 | 87.5 -> 41.5 | 36.5 -> 29.8 | 29.7 -> -16.6 | 2.30 -> 1.08 | 38.0 -> -8.2 | +| shl | 2000x13 | 653.6 -> 260.4 | 283.7 -> 195.9 | 252.2 -> -141.8 | 0.30 -> 0.15 | 267.7 -> -124.8 | +| shl | 2000x77 | 796.3 -> 452.3 | 425.8 -> 228.4 | 253.6 -> -92.1 | 2.74 -> 1.55 | 268.9 -> -76.9 | +| shr | 256x13 | 87.6 -> 42.9 | 35.8 -> 30.4 | 12.0 -> -33.0 | 2.27 -> 1.13 | 21.2 -> -23.7 | +| shr | 2000x13 | 692.2 -> 273.8 | 282.5 -> 196.0 | 164.0 -> -252.4 | 2.32 -> 0.89 | 179.5 -> -239.9 | +| shr | 2000x77 | 1064.4 -> 276.0 | 420.0 -> 196.1 | 535.7 -> -254.6 | 3.67 -> 0.96 | 546.1 -> -245.5 | | mul | 32x32 | 298.7 -> 281.4 | - | 17.5 -> 2.3 | 1.12 -> 1.07 | 39.3 -> 23.1 | | mul | 64x64 | 1039.3 -> 1007.8 | - | 23.9 -> -2.6 | 1.34 -> 1.30 | 53.3 -> 22.9 | | mul | 256x256 | 11896.3 -> 12025.0 | - | 102.9 -> 238.8 | 1.51 -> 1.53 | 138.2 -> 229.3 | @@ -264,33 +267,45 @@ M4: - **Decimal `fromchars` regression is fixed** (it was +8-11% at 64-256 limbs-worth of digits at 9145b4e); see section 3.7 for the cause. Now x64 `auto` 64x10 2791 -> 2852 ns (+2%), 256x10 28564 -> 27920 (-2%), 2000x10 429k -> 386k (-10%), 16x10 +0.8%; 10000x10 is -5.3%. M4 is unchanged (<= +-1%). -- **Still open: in-place shifts (`c <<= s; c >>= s`, per op).** After the follow-up that routes whole-limb-free in-place - shifts to `shift_left_n`/`shift_right_n` they are slower than the baseline on both machines and, on M4, much slower than - in the 9145b4e build: - - | `inplace` ns | x64 base | x64 9145b4e | x64 now | M4 base | M4 9145b4e | M4 now | - |---|---:|---:|---:|---:|---:|---:| - | shl 4x13 | 5.2 | 4.6 | 5.3 | 3.6 | 3.8 | 5.5 | - | shl 16x13 | 9.2 | 9.1 | 9.3 | 5.8 | 5.3 | 6.9 | - | shl 256x13 | 93.0 | 102.2 | 99.3 | 36.6 | 29.9 | 45.1 | - | shl 2000x13 | 657.3 | 740.9 | 716.9 | 284.3 | 196.0 | 347.8 | - | shr 2000x13 | 656.8 | 738.7 | 716.5 | 283.2 | 196.8 | 347.5 | - - so x64 +9% (2000x13) and +6-7% (256x13), M4 +22% (2000x13) and +23% (256x13) against the baseline. M4 `auto` shifts did - not move (shl 2000x13 `auto` 261 ns). -- **Rows more than 3% slower than the baseline** (`item1_regress.py`, `auto` and `inplace`, four-run medians): - - x64: 11 of 107 rows, all the shift in-place rows above plus add 2x2 `inplace` +0.4 ns (+5.9%), sub 2x2/4x4 `inplace` - +0.2 ns, shr 1x13/4x13 `inplace` +0.2-0.3 ns, tochars 256x10 `auto` +3.1% and divrem 128x64 `auto` +3.1%. Kernel rows - (library code, not the front end): divrem 8x4 45.7 -> 50.3 ns (+10%), divrem 128x64 +4.4%, sqr 4x4 9.1 -> 9.9 ns - (+9%), within the 1-2 ns kernel noise at the smallest sizes. - - M4: 15 of 107 rows: the in-place shift rows above (1x13 and 4x13 `inplace` +1-2 ns, +34..+53%), add 2x2 `auto` +1.1 ns - (+7%), add 16x16 `auto` +1.3 ns (+7.7%), add/sub 2x2 `inplace` +0.3-0.6 ns, sub 4x4 `inplace` +0.1 ns. - - No medium or large `auto` row on either machine is more than 3% slower, and no large spot check moves by more than - +2.5% (M4 mul 2000x2000). +- **In-place shifts (`c <<= s; c >>= s`, per op) after the shift fix (b823c5f).** The history is: the first build + (9145b4e, single in-place `lshift_copy`/`rshift_copy` pass) was faster than the baseline on M4 and slower on x64; + d689f75 routed whole-limb-free in-place shifts to `shift_left_n`/`shift_right_n`, which made M4 much slower; b823c5f + reverts that and uses register-carried loops under GCC only (section 3.8): + + | `inplace` ns | x64 base | x64 9145b4e | x64 d689f75 | x64 b823c5f | M4 base | M4 9145b4e | M4 d689f75 | M4 b823c5f | + |---|---:|---:|---:|---:|---:|---:|---:|---:| + | shl 4x13 | 5.2 | 4.6 | 5.3 | 4.4 | 3.6 | 3.8 | 5.5 | 3.8 | + | shl 16x13 | 9.2 | 9.1 | 9.3 | 8.6 | 5.8 | 5.3 | 6.9 | 5.4 | + | shl 256x13 | 93.1 | 102.2 | 99.3 | 98.7 | 36.5 | 29.9 | 45.1 | 29.8 | + | shl 2000x13 | 657.7 | 740.9 | 716.9 | 712.5 | 283.7 | 196.0 | 347.8 | 195.9 | + | shr 2000x13 | 657.2 | 738.7 | 716.5 | 711.5 | 282.5 | 196.8 | 347.5 | 196.0 | + + Now M4 in-place shifts are 6-53% faster than the baseline at >= 16 limbs (shl/shr 2000x13 -31%, 256x13 -15..-18%, + 131072x13 -6%) and four small-shape rows are slower by 0.2-1.0 ns (shr 1x13 2.4 -> 3.3 ns +41%, shr 4x13 3.3 -> 3.6 +10%, + shl 1x13 2.3 -> 2.5 +9%, shl 4x13 3.6 -> 3.8 +6%). On x64 the 1-16-limb rows are 8-17% faster than the baseline but + >= 256 limbs stay +5-8% slower (256x13 +5-6%, 2000x13 +8%, 131072x13 +7%); the `auto` rows keep their gains on both + machines (x64 -4..-49%, M4 -14..-74%), with x64 shr 256x13 `auto` down to -4% from -9%. +- **Rows more than 3% slower than the baseline** (`item1_regress.py` on the d689f75 runs with the shift rows replaced by the + b823c5f runs; `auto` and `inplace`, small and medium bands, four-run medians): + - x64: 9 of 107 rows. The in-place shift rows shl/shr 256x13 (+5-6%) and 2000x13 (+8%); add 2x2 `inplace` +0.4 ns + (+5.9%), sub 2x2/4x4 `inplace` +0.2 ns (+4.4%, +3.4%); tochars 256x10 `auto` +3.1% and divrem 128x64 `auto` +3.1% + (both borderline). Kernel rows (library code, not the front end): divrem 8x4 45.7 -> 50.3 ns (+10%), divrem 128x64 + +4.4%, sqr 4x4 9.1 -> 9.9 ns (+9%), within the 1-2 ns kernel noise at the smallest sizes. The 131072x13 in-place shift + spot check is +7% (+3 us). + - M4: 9 of 107 rows. The four small in-place shift rows above (+0.2-1.0 ns); add 2x2 `auto` +1.1 ns (+7%), add 16x16 + `auto` +1.3 ns (+7.7%), add/sub 2x2 `inplace` +0.3-0.6 ns, sub 4x4 `inplace` +0.1 ns. + - No medium or large `auto` row on either machine is more than 3% slower, and no large spot check other than the x64 + 131072x13 in-place shift (+7%) moves by more than +2.5% (M4 mul 2000x2000). + - A single interleaved check at b823c5f of add/sub/mul/sqr/divrem in the small band (one run per binary) found nothing + else moved against the d689f75 numbers beyond noise (x64 add 2x2 `inplace` 6.5 vs 6.2 ns; the M4 mul 6x6 and add 16x16 + `auto` rows flip between their usual noise modes). + - These are the open items for item 2: the x64 GCC in-place shift gap at >= 256 limbs (+5-8%; the baseline in-place path + is faster than every variant tried), the sub-nanosecond small add/sub in-place rows on both machines, and the M4 small + add `auto` rows (+1.1-1.3 ns). - **History.** The first measurement (opt_1 at 9145b4e, CSVs `x64_*`/`mac_*`) showed x64 add/sub `inplace` +23..+35% at >= 64 limbs, decimal `fromchars` +8-11%, and in-place shifts +10-13% on x64 but -30..-35% on M4. The follow-ups fixed the - first two and the add/sub `auto` rows improved a further 20-26%, but the in-place shift change traded the x64 result for - an M4 loss. + first two and the add/sub `auto` rows improved a further 20-26%; the in-place shift change in d689f75 traded the x64 + result for an M4 loss, and b823c5f (revert plus per-compiler loops) restored the M4 result and kept most of the x64 one. ### 3.7 Cause of the x64 `fromchars` regression (diagnosis and fix) @@ -410,19 +425,24 @@ loops (V2, V3) are slower than the original two-load form under clang. On x64 (G by 8-17% against the baseline and equal `new64` at >= 256 limbs (+6-9%), at the price of 4-7 points on shr `auto`; the baseline in-place path is still 6-9% faster there than any variant. +Outcome: b823c5f reverts 2f9150b and uses the register-carried loop bodies under GCC only (the original two-load loops +under clang and MSVC), the per-compiler split these numbers suggested. Re-measured at b823c5f (four interleaved runs per +binary on each machine, plus a 131072x13 spot) the result matches V1 on M4 and V2 on x64 (section 3.6). +The pairings measured are GCC 14 on x64 and appleclang on AArch64; clang on x64 and GCC on AArch64 were not. + ## 4. Plan targets -Targets from the plan, with the achieved values (median of four runs, d689f75). Kernel-row noise at <= 16 limbs is 1-2 ns +Targets from the plan, with the achieved values (median of four runs; b823c5f for shifts, d689f75 for the rest). Kernel-row noise at <= 16 limbs is 1-2 ns (section 8), so a miss of less than ~1.5 ns on an `inplace - kernel` target is within noise. | target | x64 | M4 | |---|---|---| -| `inplace - kernel` <= 3 ns for add/sub/shl/shr at 2-16 limbs | **mostly met**: add 3.9/2.7/2.8/3.6 (2/4/8/16 limbs, before 3.5/2.5/2.7/4.3), sub 2.7/2.8/3.0/2.6, shl 1.8/1.7, shr 1.5/0.3 (add 2x2 and 16x16 are within kernel noise of the line) | **met**: add 2.7/1.9/0.8/-1.8, sub 2.4/2.1/0.9/-2.3, shl 1.7/2.8, shr 1.0/2.0 | -| `auto - floor` <= 3 ns at <= 16 limbs, add/sub/shl/shr | **not met except shifts**: add 5.7/4.5/4.4/5.6 (before 7.6/7.1/6.8/9.8; 1x1 -4.4), sub 5.8/5.9/5.9/5.7, shl 2.3/1.9 (met), shr 4.1/2.9 | **mostly not met**: add 6.3/4.2/3.6/3.7, sub 5.4/5.2/4.3/3.0, shl 0.0/3.3, shr 1.8/4.8 | +| `inplace - kernel` <= 3 ns for add/sub/shl/shr at 2-16 limbs | **mostly met**: add 3.9/2.7/2.8/3.6 (2/4/8/16 limbs, before 3.5/2.5/2.7/4.3), sub 2.7/2.8/3.0/2.6, shl 0.9/1.1, shr 0.7/-0.3 (add 2x2 and 16x16 are within kernel noise of the line) | **met**: add 2.7/1.9/0.8/-1.8, sub 2.4/2.1/0.9/-2.3, shl 0.0/1.3, shr -0.1/1.0 | +| `auto - floor` <= 3 ns at <= 16 limbs, add/sub/shl/shr | **not met except shifts**: add 5.7/4.5/4.4/5.6 (before 7.6/7.1/6.8/9.8; 1x1 -4.4), sub 5.8/5.9/5.9/5.7, shl 2.2/1.5 (met), shr 4.7/4.7 | **mostly not met**: add 6.3/4.2/3.6/3.7, sub 5.4/5.2/4.3/3.0, shl -0.1/3.9, shr 2.9/5.2 | | `auto - floor` <= 5 ns at <= 16 limbs, mul/sqr | **met**: mul 1.8-4.2 (before 13.1-17.4); sqr 5.5 (4x4, marginal) and 4.2 | **met**: mul 2.9-4.8 (before 9.2-15.7); sqr 5.3 (4x4, marginal) and 4.0 | | x64 add 1000 `auto`: 840 -> <= 650 ns | **met**: add 1024x1024 842 -> 599 ns (2000x2000 1722 -> 1153; `auto - floor` 4-5 ns at 64-2000 limbs) | n/a (M4: 565 -> 450 ns) | | divrem 8x4 `auto - kernel`: 66 -> <= 2 floors + 5 ns (i.e. `auto - floor` <= 5) | **not met**: `auto - kernel` 67.0 -> 43.8, `auto - floor` 52.9 -> 26.3 | **not met**: `auto - kernel` 49.8 -> 28.8, `auto - floor` 34.8 -> 14.6 | -| medium and large rows: no regression > 3% | **not met only for in-place shifts**: 256x13 +6-7%, 2000x13 +9%; every other medium and large `auto` and `inplace` row, and every large spot check, is within 3% | **not met only for in-place shifts**: 256x13 +23%, 2000x13 +22%; the other medium and large rows and spot checks are within 3% (largest M4 mul 2000x2000 +2.5%) | +| medium and large rows: no regression > 3% | **not met only for in-place shifts at >= 256 limbs**: shl/shr 256x13 +5-6%, 2000x13 +8%, 131072x13 +7%; every other medium and large `auto` and `inplace` row and every other large spot check is within 3% | **met for medium and large rows**; only small rows exceed 3% (four in-place shift rows by 0.2-1.0 ns, add 2x2/16x16 `auto` +1.1/+1.3 ns, sub/add 2x2 `inplace` +0.3-0.6 ns); largest large spot check M4 mul 2000x2000 +2.5% | The allocation targets in `alloc_count.test.cpp` all hold (section 5). @@ -689,7 +709,9 @@ Neutral summary of the trade-off (no default is recommended here): ## 9. Correctness matrix -All at d689f75 (ctest counts include skipped benches): +At d689f75 (ctest counts include skipped benches); at b823c5f, which changes only the shift code, the GCC-only loop path was +re-run: x64 `gcc-release` and `gcc-debug` (g++-14) 1363/1363 each, Docker linux/arm64 `gcc-release` and `gcc-debug` +1292/1292 each, M4 `appleclang-release` 1304/1304: - M4 (appleclang): `appleclang-debug` workflow (MaxSan) 1304/1304, `appleclang-release` 1304/1304, `appleclang-release-namespace` 1290/1290. diff --git a/tests/beman/big_int/perf/tools/__pycache__/item1_tables.cpython-314.pyc b/tests/beman/big_int/perf/tools/__pycache__/item1_tables.cpython-314.pyc index 92877d405c1505e0f870b863c88927b55d122e6f..10e921b0a6d10beba18746f5d839881004414d48 100644 GIT binary patch delta 21 bcmZ47$hf$XkxQG8mx}=iENwP&&2#_&H#h{Y delta 21 bcmZ47$hf$XkxQG8mx}=i3`{q2&2#_&Hs1uE From 8621298ac0f910b5db7610fd856ca4e3e2345aec Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 14:47:33 -0400 Subject: [PATCH 34/36] Replace the raw per-run item 1 CSVs with aggregated summary files; record the inline-capacity decision --- tests/beman/big_int/perf/gmp_gap_analysis.md | 3 +- tests/beman/big_int/perf/item1/final_m4.csv | 435 ++++++ tests/beman/big_int/perf/item1/final_x64.csv | 435 ++++++ .../big_int/perf/item1/mac_base64_seed1a.csv | 370 ----- .../big_int/perf/item1/mac_base64_seed1b.csv | 370 ----- .../big_int/perf/item1/mac_base64_seed2a.csv | 370 ----- .../big_int/perf/item1/mac_base64_seed2b.csv | 370 ----- .../perf/item1/mac_base64_spot_seed1.csv | 31 - .../perf/item1/mac_base64_spot_seed2.csv | 31 - .../big_int/perf/item1/mac_new64_seed1a.csv | 370 ----- .../big_int/perf/item1/mac_new64_seed1b.csv | 370 ----- .../big_int/perf/item1/mac_new64_seed2a.csv | 370 ----- .../big_int/perf/item1/mac_new64_seed2b.csv | 370 ----- .../perf/item1/mac_new64_shortcut_run1.csv | 20 - .../perf/item1/mac_new64_shortcut_run2.csv | 20 - .../perf/item1/mac_new64_shortcut_run3.csv | 20 - .../perf/item1/mac_new64_spot_seed1.csv | 31 - .../perf/item1/mac_new64_spot_seed2.csv | 31 - .../perf/item1/mac_nosc64_shortcut_run1.csv | 20 - .../perf/item1/mac_nosc64_shortcut_run2.csv | 20 - .../perf/item1/mac_nosc64_shortcut_run3.csv | 20 - .../big_int/perf/item1/mac_study128_run1.csv | 166 -- .../big_int/perf/item1/mac_study128_run2.csv | 166 -- .../perf/item1/mac_study128_vecsort_run1.csv | 7 - .../perf/item1/mac_study128_vecsort_run2.csv | 7 - .../big_int/perf/item1/mac_study256_run1.csv | 166 -- .../big_int/perf/item1/mac_study256_run2.csv | 166 -- .../perf/item1/mac_study256_vecsort_run1.csv | 7 - .../perf/item1/mac_study256_vecsort_run2.csv | 7 - .../big_int/perf/item1/mac_study512_run1.csv | 166 -- .../big_int/perf/item1/mac_study512_run2.csv | 166 -- .../perf/item1/mac_study512_vecsort_run1.csv | 7 - .../perf/item1/mac_study512_vecsort_run2.csv | 7 - .../big_int/perf/item1/mac_study64_run1.csv | 166 -- .../big_int/perf/item1/mac_study64_run2.csv | 166 -- .../perf/item1/mac_study64_vecsort_run1.csv | 7 - .../perf/item1/mac_study64_vecsort_run2.csv | 7 - .../perf/item1/mac_vshift_base64_run1.csv | 43 - .../perf/item1/mac_vshift_base64_run2.csv | 43 - .../perf/item1/mac_vshift_base64_run3.csv | 43 - .../perf/item1/mac_vshift_new64_run1.csv | 43 - .../perf/item1/mac_vshift_new64_run2.csv | 43 - .../perf/item1/mac_vshift_new64_run3.csv | 43 - .../big_int/perf/item1/mac_vshift_v1_run1.csv | 43 - .../big_int/perf/item1/mac_vshift_v1_run2.csv | 43 - .../big_int/perf/item1/mac_vshift_v1_run3.csv | 43 - .../big_int/perf/item1/mac_vshift_v2_run1.csv | 43 - .../big_int/perf/item1/mac_vshift_v2_run2.csv | 43 - .../big_int/perf/item1/mac_vshift_v2_run3.csv | 43 - .../big_int/perf/item1/mac_vshift_v3_run1.csv | 43 - .../big_int/perf/item1/mac_vshift_v3_run2.csv | 43 - .../big_int/perf/item1/mac_vshift_v3_run3.csv | 43 - .../perf/item1/macr3_base64_seed1a.csv | 400 ----- .../perf/item1/macr3_base64_seed1b.csv | 400 ----- .../perf/item1/macr3_base64_seed2a.csv | 400 ----- .../perf/item1/macr3_base64_seed2b.csv | 400 ----- .../perf/item1/macr3_base64_spot_seed1.csv | 31 - .../perf/item1/macr3_base64_spot_seed2.csv | 31 - .../big_int/perf/item1/macr3_new64_seed1a.csv | 400 ----- .../big_int/perf/item1/macr3_new64_seed1b.csv | 400 ----- .../big_int/perf/item1/macr3_new64_seed2a.csv | 400 ----- .../big_int/perf/item1/macr3_new64_seed2b.csv | 400 ----- .../perf/item1/macr3_new64_spot_seed1.csv | 31 - .../perf/item1/macr3_new64_spot_seed2.csv | 31 - .../perf/item1/macr3_new64a_seed1a.csv | 400 ----- .../perf/item1/macr3_new64a_seed1b.csv | 400 ----- .../perf/item1/macr3_new64a_seed2a.csv | 400 ----- .../perf/item1/macr3_new64a_seed2b.csv | 400 ----- .../big_int/perf/item1/macr4_base64_big1a.csv | 7 - .../big_int/perf/item1/macr4_base64_big1b.csv | 7 - .../big_int/perf/item1/macr4_base64_big2a.csv | 7 - .../big_int/perf/item1/macr4_base64_big2b.csv | 7 - .../perf/item1/macr4_base64_other_seed1a.csv | 127 -- .../perf/item1/macr4_base64_seed1a.csv | 82 - .../perf/item1/macr4_base64_seed1b.csv | 82 - .../perf/item1/macr4_base64_seed2a.csv | 82 - .../perf/item1/macr4_base64_seed2b.csv | 82 - .../big_int/perf/item1/macr4_new64_big1a.csv | 7 - .../big_int/perf/item1/macr4_new64_big1b.csv | 7 - .../big_int/perf/item1/macr4_new64_big2a.csv | 7 - .../big_int/perf/item1/macr4_new64_big2b.csv | 7 - .../perf/item1/macr4_new64_other_seed1a.csv | 127 -- .../big_int/perf/item1/macr4_new64_seed1a.csv | 82 - .../big_int/perf/item1/macr4_new64_seed1b.csv | 82 - .../big_int/perf/item1/macr4_new64_seed2a.csv | 82 - .../big_int/perf/item1/macr4_new64_seed2b.csv | 82 - tests/beman/big_int/perf/item1/shift_ab.csv | 424 ++++++ tests/beman/big_int/perf/item1/shortcut.csv | 39 + tests/beman/big_int/perf/item1/study.csv | 1332 +++++++++++++++++ .../big_int/perf/item1/x64_base64_seed1a.csv | 370 ----- .../big_int/perf/item1/x64_base64_seed1b.csv | 370 ----- .../big_int/perf/item1/x64_base64_seed2a.csv | 370 ----- .../big_int/perf/item1/x64_base64_seed2b.csv | 370 ----- .../perf/item1/x64_base64_spot_seed1.csv | 31 - .../perf/item1/x64_base64_spot_seed2.csv | 31 - .../x64_gcc14_base128_vecsort_seed1a.csv | 7 - .../x64_gcc14_base128_vecsort_seed1b.csv | 7 - .../x64_gcc14_base128_vecsort_seed2a.csv | 7 - .../x64_gcc14_base128_vecsort_seed2b.csv | 7 - .../x64_gcc14_base256_vecsort_seed1a.csv | 7 - .../x64_gcc14_base256_vecsort_seed1b.csv | 7 - .../x64_gcc14_base256_vecsort_seed2a.csv | 7 - .../x64_gcc14_base256_vecsort_seed2b.csv | 7 - .../item1/x64_gcc14_base64_vecsort_seed1a.csv | 7 - .../item1/x64_gcc14_base64_vecsort_seed1b.csv | 7 - .../item1/x64_gcc14_base64_vecsort_seed2a.csv | 7 - .../item1/x64_gcc14_base64_vecsort_seed2b.csv | 7 - .../perf/item1/x64_gcc14_base_seed1.csv | 370 ----- .../perf/item1/x64_gcc14_base_seed1_rep.csv | 370 ----- .../perf/item1/x64_gcc14_base_seed2.csv | 370 ----- .../perf/item1/x64_gcc14_base_spot_seed1.csv | 24 - .../perf/item1/x64_gcc14_base_spot_seed2.csv | 24 - .../big_int/perf/item1/x64_new64_seed1a.csv | 370 ----- .../big_int/perf/item1/x64_new64_seed1b.csv | 370 ----- .../big_int/perf/item1/x64_new64_seed2a.csv | 370 ----- .../big_int/perf/item1/x64_new64_seed2b.csv | 370 ----- .../perf/item1/x64_new64_shortcut_run1.csv | 20 - .../perf/item1/x64_new64_shortcut_run2.csv | 20 - .../perf/item1/x64_new64_shortcut_run3.csv | 20 - .../perf/item1/x64_new64_spot_seed1.csv | 31 - .../perf/item1/x64_new64_spot_seed2.csv | 31 - .../perf/item1/x64_nosc64_shortcut_run1.csv | 20 - .../perf/item1/x64_nosc64_shortcut_run2.csv | 20 - .../perf/item1/x64_nosc64_shortcut_run3.csv | 20 - .../big_int/perf/item1/x64_study128_run1.csv | 166 -- .../big_int/perf/item1/x64_study128_run2.csv | 166 -- .../perf/item1/x64_study128_vecsort_run1.csv | 7 - .../perf/item1/x64_study128_vecsort_run2.csv | 7 - .../big_int/perf/item1/x64_study256_run1.csv | 166 -- .../big_int/perf/item1/x64_study256_run2.csv | 166 -- .../perf/item1/x64_study256_vecsort_run1.csv | 7 - .../perf/item1/x64_study256_vecsort_run2.csv | 7 - .../big_int/perf/item1/x64_study512_run1.csv | 166 -- .../big_int/perf/item1/x64_study512_run2.csv | 166 -- .../perf/item1/x64_study512_vecsort_run1.csv | 7 - .../perf/item1/x64_study512_vecsort_run2.csv | 7 - .../big_int/perf/item1/x64_study64_run1.csv | 166 -- .../big_int/perf/item1/x64_study64_run2.csv | 166 -- .../perf/item1/x64_study64_vecsort_run1.csv | 7 - .../perf/item1/x64_study64_vecsort_run2.csv | 7 - .../perf/item1/x64_vshift_base64_run1.csv | 43 - .../perf/item1/x64_vshift_base64_run2.csv | 43 - .../perf/item1/x64_vshift_base64_run3.csv | 43 - .../perf/item1/x64_vshift_new64_run1.csv | 43 - .../perf/item1/x64_vshift_new64_run2.csv | 43 - .../perf/item1/x64_vshift_new64_run3.csv | 43 - .../big_int/perf/item1/x64_vshift_v1_run1.csv | 43 - .../big_int/perf/item1/x64_vshift_v1_run2.csv | 43 - .../big_int/perf/item1/x64_vshift_v1_run3.csv | 43 - .../big_int/perf/item1/x64_vshift_v2_run1.csv | 43 - .../big_int/perf/item1/x64_vshift_v2_run2.csv | 43 - .../big_int/perf/item1/x64_vshift_v2_run3.csv | 43 - .../big_int/perf/item1/x64_vshift_v3_run1.csv | 43 - .../big_int/perf/item1/x64_vshift_v3_run2.csv | 43 - .../big_int/perf/item1/x64_vshift_v3_run3.csv | 43 - .../perf/item1/x64r3_base64_seed1a.csv | 400 ----- .../perf/item1/x64r3_base64_seed1b.csv | 400 ----- .../perf/item1/x64r3_base64_seed2a.csv | 400 ----- .../perf/item1/x64r3_base64_seed2b.csv | 400 ----- .../perf/item1/x64r3_base64_spot_seed1.csv | 31 - .../perf/item1/x64r3_base64_spot_seed2.csv | 31 - .../big_int/perf/item1/x64r3_new64_seed1a.csv | 400 ----- .../big_int/perf/item1/x64r3_new64_seed1b.csv | 400 ----- .../big_int/perf/item1/x64r3_new64_seed2a.csv | 400 ----- .../big_int/perf/item1/x64r3_new64_seed2b.csv | 400 ----- .../perf/item1/x64r3_new64_spot_seed1.csv | 31 - .../perf/item1/x64r3_new64_spot_seed2.csv | 31 - .../perf/item1/x64r3_new64a_seed1a.csv | 400 ----- .../perf/item1/x64r3_new64a_seed1b.csv | 400 ----- .../perf/item1/x64r3_new64a_seed2a.csv | 400 ----- .../perf/item1/x64r3_new64a_seed2b.csv | 400 ----- .../big_int/perf/item1/x64r4_base64_big1a.csv | 7 - .../big_int/perf/item1/x64r4_base64_big1b.csv | 7 - .../big_int/perf/item1/x64r4_base64_big2a.csv | 7 - .../big_int/perf/item1/x64r4_base64_big2b.csv | 7 - .../perf/item1/x64r4_base64_other_seed1a.csv | 127 -- .../perf/item1/x64r4_base64_seed1a.csv | 82 - .../perf/item1/x64r4_base64_seed1b.csv | 82 - .../perf/item1/x64r4_base64_seed2a.csv | 82 - .../perf/item1/x64r4_base64_seed2b.csv | 82 - .../big_int/perf/item1/x64r4_new64_big1a.csv | 7 - .../big_int/perf/item1/x64r4_new64_big1b.csv | 7 - .../big_int/perf/item1/x64r4_new64_big2a.csv | 7 - .../big_int/perf/item1/x64r4_new64_big2b.csv | 7 - .../perf/item1/x64r4_new64_other_seed1a.csv | 127 -- .../big_int/perf/item1/x64r4_new64_seed1a.csv | 82 - .../big_int/perf/item1/x64r4_new64_seed1b.csv | 82 - .../big_int/perf/item1/x64r4_new64_seed2a.csv | 82 - .../big_int/perf/item1/x64r4_new64_seed2b.csv | 82 - .../big_int/perf/item1_frontend_results.md | 39 +- tests/beman/big_int/perf/tools/README.md | 1 + .../beman/big_int/perf/tools/item1_summary.py | 165 ++ 192 files changed, 2863 insertions(+), 23498 deletions(-) create mode 100644 tests/beman/big_int/perf/item1/final_m4.csv create mode 100644 tests/beman/big_int/perf/item1/final_x64.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_base64_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_base64_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_base64_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_base64_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_base64_spot_seed1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_base64_spot_seed2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_new64_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_new64_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_new64_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_new64_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_new64_shortcut_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_new64_shortcut_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_new64_shortcut_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_new64_spot_seed1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_new64_spot_seed2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study128_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study128_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study128_vecsort_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study128_vecsort_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study256_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study256_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study256_vecsort_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study256_vecsort_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study512_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study512_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study512_vecsort_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study512_vecsort_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study64_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study64_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study64_vecsort_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_study64_vecsort_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_base64_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_base64_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_base64_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_new64_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_new64_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_new64_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v1_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v1_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v1_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v2_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v2_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v2_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v3_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v3_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/mac_vshift_v3_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_base64_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_base64_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_base64_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_base64_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_base64_spot_seed1.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_base64_spot_seed2.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_new64_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_new64_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_new64_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_new64_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_new64_spot_seed1.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_new64_spot_seed2.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_new64a_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_new64a_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_new64a_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr3_new64a_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_base64_big1a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_base64_big1b.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_base64_big2a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_base64_big2b.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_base64_other_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_base64_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_base64_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_base64_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_base64_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_new64_big1a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_new64_big1b.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_new64_big2a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_new64_big2b.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_new64_other_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_new64_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_new64_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_new64_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/macr4_new64_seed2b.csv create mode 100644 tests/beman/big_int/perf/item1/shift_ab.csv create mode 100644 tests/beman/big_int/perf/item1/shortcut.csv create mode 100644 tests/beman/big_int/perf/item1/study.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_base64_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_base64_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_base64_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_base64_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_base64_spot_seed1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_base64_spot_seed2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base_seed1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base_seed1_rep.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base_seed2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_new64_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_new64_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_new64_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_new64_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_new64_shortcut_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_new64_shortcut_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_new64_shortcut_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_new64_spot_seed1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_new64_spot_seed2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study128_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study128_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study128_vecsort_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study128_vecsort_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study256_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study256_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study256_vecsort_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study256_vecsort_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study512_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study512_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study512_vecsort_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study512_vecsort_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study64_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study64_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study64_vecsort_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_study64_vecsort_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_base64_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_base64_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_base64_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_new64_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_new64_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_new64_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v1_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v1_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v1_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v2_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v2_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v2_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v3_run1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v3_run2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64_vshift_v3_run3.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_base64_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_base64_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_base64_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_base64_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_base64_spot_seed1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_base64_spot_seed2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_new64_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_new64_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_new64_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_new64_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_new64_spot_seed1.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_new64_spot_seed2.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_new64a_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_new64a_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_new64a_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r3_new64a_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_big1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_big1b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_big2a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_big2b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_other_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_base64_seed2b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_big1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_big1b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_big2a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_big2b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_other_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_seed1a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_seed1b.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_seed2a.csv delete mode 100644 tests/beman/big_int/perf/item1/x64r4_new64_seed2b.csv create mode 100644 tests/beman/big_int/perf/tools/item1_summary.py diff --git a/tests/beman/big_int/perf/gmp_gap_analysis.md b/tests/beman/big_int/perf/gmp_gap_analysis.md index 6308a928..36932b87 100644 --- a/tests/beman/big_int/perf/gmp_gap_analysis.md +++ b/tests/beman/big_int/perf/gmp_gap_analysis.md @@ -530,7 +530,8 @@ Decision criteria applied (from the plan): Status of item 1: implemented on branch `opt_1`; results, targets met and not met, and the inline-capacity study are in [`item1_frontend_results.md`](item1_frontend_results.md) (small `auto` is now 2-5 ns above the allocation floor for mul/sqr, 0-6 ns for shifts and 3-6 ns for add/sub; x64 add 1000 840 -> 600 ns, meeting the 650 ns goal; open items: x64 -GCC in-place shifts at >= 256 limbs are 5-8% slower than the baseline, and a few sub-nanosecond small in-place rows) +GCC in-place shifts at >= 256 limbs are 5-8% slower than the baseline, and a few sub-nanosecond small in-place rows). Decision +(2026-10-06): the default inline capacity stays at 64 bits (`big_int`, one limb). Not recommended: asm for cmp (already faster than GMP on x64, parity on M4); asm for mul 32-512 limbs on x64 (IFMA beats GMP by 1.1-1.8x). diff --git a/tests/beman/big_int/perf/item1/final_m4.csv b/tests/beman/big_int/perf/item1/final_m4.csv new file mode 100644 index 00000000..77a44039 --- /dev/null +++ b/tests/beman/big_int/perf/item1/final_m4.csv @@ -0,0 +1,435 @@ +# item 1 before/after medians, m4; ns per operation (vecsort and the study are in study.csv) +# base_ns: cf1cf54 harness (base64); first_9145b4e_ns: first measurement of opt_1; d689f75_ns: re-measurement; +# after_ns: final value (b823c5f for shl/shr, d689f75 for the other ops); empty cells were not measured +# aggregation: median of the runs, divrem up to 32 limbs the mean of seeds 1 and 2; shl/shr base_ns from the +# b823c5f runs; spots (large band, 3-round runs) are medians of two seeds +# base64: sweep_inline_bits=64 sweep_int_sizeof=16 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=appleclang-21.0.0_(clang-2100.3.34.2) build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +# after: sweep_inline_bits=64 sweep_int_sizeof=16 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=appleclang-21.0.0_(clang-2100.3.34.2) build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +# after_shifts: sweep_inline_bits=64 sweep_int_sizeof=16 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=appleclang-21.0.0_(clang-2100.3.34.2) build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,shape,row,base_ns,first_9145b4e_ns,d689f75_ns,after_ns,after_commit +add,1x1,auto,6.94,7.68,5.88,5.88,d689f75 +add,1x1,floor,9.43,9.33,9.63,9.63,d689f75 +add,1x1,gmp,1.49,1.49,1.49,1.49,d689f75 +add,1x1,gmpz,3.07,2.98,2.99,2.99,d689f75 +add,1x1,inplace,3.22,3.51,1.87,1.87,d689f75 +add,1x1,kernel,1.14,1.14,1.15,1.15,d689f75 +add,2x2,auto,14.84,15.21,15.91,15.91,d689f75 +add,2x2,floor,9.95,9.62,9.63,9.63,d689f75 +add,2x2,gmp,1.99,1.98,1.86,1.86,d689f75 +add,2x2,gmpz,5.89,3.32,3.25,3.25,d689f75 +add,2x2,inplace,3.77,3.88,4.11,4.11,d689f75 +add,2x2,kernel,1.40,1.39,1.40,1.40,d689f75 +add,4x4,auto,15.36,14.32,14.57,14.57,d689f75 +add,4x4,floor,10.86,10.21,10.36,10.36,d689f75 +add,4x4,gmp,1.74,1.74,1.75,1.75,d689f75 +add,4x4,gmpz,4.82,5.08,4.08,4.08,d689f75 +add,4x4,inplace,3.74,3.50,3.82,3.82,d689f75 +add,4x4,kernel,1.96,1.92,1.94,1.94,d689f75 +add,8x8,auto,15.85,15.14,15.55,15.55,d689f75 +add,8x8,floor,11.97,12.09,11.98,11.98,d689f75 +add,8x8,gmp,2.25,2.23,2.25,2.25,d689f75 +add,8x8,gmpz,5.24,4.47,4.37,4.37,d689f75 +add,8x8,inplace,5.10,4.05,4.27,4.27,d689f75 +add,8x8,kernel,3.51,3.48,3.50,3.50,d689f75 +add,16x16,auto,16.42,16.88,17.69,17.69,d689f75 +add,16x16,floor,14.22,13.65,14.03,14.03,d689f75 +add,16x16,gmp,3.24,3.23,3.24,3.24,d689f75 +add,16x16,gmpz,4.54,4.26,4.47,4.47,d689f75 +add,16x16,inplace,9.78,5.59,5.74,5.74,d689f75 +add,16x16,kernel,7.58,7.56,7.56,7.56,d689f75 +add,64x64,auto,54.66,38.17,37.94,37.94,d689f75 +add,64x64,floor,61.10,60.74,60.91,60.91,d689f75 +add,64x64,gmp,11.20,11.09,11.13,11.13,d689f75 +add,64x64,gmpz,13.00,13.16,13.38,13.38,d689f75 +add,64x64,inplace,51.59,19.96,19.97,19.97,d689f75 +add,64x64,kernel,48.84,49.14,49.17,49.17,d689f75 +add,256x256,auto,148.77,109.92,109.77,109.77,d689f75 +add,256x256,floor,247.92,246.22,246.62,246.62,d689f75 +add,256x256,gmp,56.98,56.98,57.42,57.42,d689f75 +add,256x256,gmpz,57.94,57.78,58.12,58.12,d689f75 +add,256x256,inplace,240.00,100.92,101.21,101.21,d689f75 +add,256x256,kernel,234.01,234.69,236.51,236.51,d689f75 +add,1024x1,auto,172.66,107.13,108.17,108.17,d689f75 +add,1024x1,floor,758.47,754.90,761.81,761.81,d689f75 +add,1024x1,gmp,263.68,263.06,263.80,263.80,d689f75 +add,1024x1,gmpz,266.88,264.77,266.38,266.38,d689f75 +add,1024x1,inplace,980.38,2.98,3.11,3.11,d689f75 +add,1024x1,kernel,735.91,736.75,739.63,739.63,d689f75 +add,1024x1024,auto,564.88,450.12,450.30,450.30,d689f75 +add,1024x1024,floor,988.69,990.03,988.05,988.05,d689f75 +add,1024x1024,gmp,252.47,251.20,252.08,252.08,d689f75 +add,1024x1024,gmpz,253.74,253.31,252.50,252.50,d689f75 +add,1024x1024,inplace,989.67,433.60,437.13,437.13,d689f75 +add,1024x1024,kernel,983.58,970.88,977.76,977.76,d689f75 +add,2000x2000,auto,1132.31,886.66,877.01,877.01,d689f75 +add,2000x2000,floor,1944.43,1933.36,1931.36,1931.36,d689f75 +add,2000x2000,gmp,496.69,495.26,496.15,496.15,d689f75 +add,2000x2000,gmpz,498.79,496.74,497.95,497.95,d689f75 +add,2000x2000,inplace,1948.39,854.16,858.24,858.24,d689f75 +add,2000x2000,kernel,1929.97,1916.90,1927.84,1927.84,d689f75 +add,16384x16384,auto,9473.86,7266.76,7304.57,7304.57,d689f75 +add,16384x16384,floor,16294.38,15957.12,16478.88,16478.88,d689f75 +add,16384x16384,gmp,4112.33,4095.07,4127.24,4127.24,d689f75 +add,16384x16384,gmpz,4097.89,4101.70,4161.40,4161.40,d689f75 +add,16384x16384,inplace,16449.04,7105.27,7216.20,7216.20,d689f75 +add,16384x16384,kernel,16179.17,15812.65,16418.17,16418.17,d689f75 +divrem,2x1,auto,31.08,24.83,25.25,25.25,d689f75 +divrem,2x1,floor,13.80,13.54,13.78,13.78,d689f75 +divrem,2x1,gmp,5.06,5.04,5.04,5.04,d689f75 +divrem,2x1,gmpz,8.79,8.70,8.73,8.73,d689f75 +divrem,2x1,kernel,5.96,6.02,6.08,6.08,d689f75 +divrem,8x4,auto,96.02,75.77,75.40,75.40,d689f75 +divrem,8x4,floor,61.27,60.83,60.78,60.78,d689f75 +divrem,8x4,gmp,40.99,40.79,40.82,40.82,d689f75 +divrem,8x4,gmpz,43.58,43.82,43.90,43.90,d689f75 +divrem,8x4,kernel,46.21,46.73,46.62,46.62,d689f75 +divrem,32x16,auto,481.27,432.18,431.97,431.97,d689f75 +divrem,32x16,floor,417.68,411.09,410.63,410.63,d689f75 +divrem,32x16,gmp,209.16,208.75,207.91,207.91,d689f75 +divrem,32x16,gmpz,211.34,210.27,210.96,210.96,d689f75 +divrem,32x16,kernel,402.14,394.39,392.37,392.37,d689f75 +divrem,128x64,auto,3762.20,3691.20,3732.95,3732.95,d689f75 +divrem,128x64,floor,3668.61,3643.68,3657.77,3657.77,d689f75 +divrem,128x64,gmp,1773.90,1770.88,1774.84,1774.84,d689f75 +divrem,128x64,gmpz,1776.53,1777.14,1779.45,1779.45,d689f75 +divrem,128x64,kernel,3620.32,3601.84,3589.48,3589.48,d689f75 +divrem,512x256,auto,28815.19,28613.14,28675.56,28675.56,d689f75 +divrem,512x256,floor,28397.35,28378.52,28602.75,28602.75,d689f75 +divrem,512x256,gmp,16503.89,16435.91,16500.11,16500.11,d689f75 +divrem,512x256,gmpz,16493.35,16426.06,16474.24,16474.24,d689f75 +divrem,512x256,kernel,28349.18,28376.44,28459.87,28459.87,d689f75 +divrem,2000x100,auto,95716.26,94398.99,94547.32,94547.32,d689f75 +divrem,2000x100,floor,94481.02,93964.10,94287.57,94287.57,d689f75 +divrem,2000x100,gmp,69183.99,69292.76,69226.18,69226.18,d689f75 +divrem,2000x100,gmpz,69295.24,69057.00,69276.42,69276.42,d689f75 +divrem,2000x100,kernel,94148.52,94036.83,94541.41,94541.41,d689f75 +divrem,2000x1000,auto,234126.70,232354.65,232426.25,232426.25,d689f75 +divrem,2000x1000,floor,232151.52,231957.59,232324.23,232324.23,d689f75 +divrem,2000x1000,gmp,136991.99,135583.19,136316.04,136316.04,d689f75 +divrem,2000x1000,gmpz,135710.87,134539.70,134657.60,134657.60,d689f75 +divrem,2000x1000,kernel,232520.20,232348.72,232104.16,232104.16,d689f75 +divrem,4000x2000,auto,695982.04,688042.38,691382.19,691382.19,d689f75 +divrem,4000x2000,floor,692556.04,687476.72,687357.65,687357.65,d689f75 +divrem,4000x2000,gmp,347009.54,342697.39,343287.08,343287.08,d689f75 +divrem,4000x2000,gmpz,348235.03,343219.29,344788.79,344788.79,d689f75 +divrem,4000x2000,kernel,692014.58,686774.31,687024.99,687024.99,d689f75 +divrem,4096x2048,auto,706591.95,708499.26,707065.18,707065.18,d689f75 +divrem,4096x2048,floor,703491.38,701575.43,705680.31,705680.31,d689f75 +divrem,4096x2048,gmp,358878.35,357719.06,358520.68,358520.68,d689f75 +divrem,4096x2048,gmpz,360025.31,358228.93,358386.46,358386.46,d689f75 +divrem,4096x2048,kernel,704150.16,702138.66,706127.22,706127.22,d689f75 +divrem,65536x1,auto,246390.50,229283.22,231899.70,231899.70,d689f75 +divrem,65536x1,floor,228618.15,230561.71,232554.66,232554.66,d689f75 +divrem,65536x1,gmp,172095.96,169897.85,170984.09,170984.09,d689f75 +divrem,65536x1,gmpz,171581.49,170562.26,171285.58,171285.58,d689f75 +divrem,65536x1,kernel,230262.51,229888.18,230179.46,230179.46,d689f75 +fromchars,4x10,auto,91.22,91.64,91.87,91.87,d689f75 +fromchars,4x10,gmp,31.74,31.96,31.29,31.29,d689f75 +fromchars,4x10,gmpz,76.49,77.55,76.33,76.33,d689f75 +fromchars,4x10,kernel,32.62,32.73,33.02,33.02,d689f75 +fromchars,16x10,auto,399.46,397.81,394.31,394.31,d689f75 +fromchars,16x10,gmp,142.18,141.94,143.45,143.45,d689f75 +fromchars,16x10,gmpz,318.10,318.46,315.67,315.67,d689f75 +fromchars,16x10,kernel,193.39,192.01,192.54,192.54,d689f75 +fromchars,64x10,auto,2198.30,2182.15,2187.21,2187.21,d689f75 +fromchars,64x10,gmp,956.50,955.87,953.58,953.58,d689f75 +fromchars,64x10,gmpz,1601.95,1601.26,1603.17,1603.17,d689f75 +fromchars,64x10,kernel,1859.66,1855.87,1856.35,1856.35,d689f75 +fromchars,256x10,auto,13836.44,13791.90,13804.55,13804.55,d689f75 +fromchars,256x10,gmp,7999.72,7964.27,7953.50,7953.50,d689f75 +fromchars,256x10,gmpz,10776.47,10791.69,10737.40,10737.40,d689f75 +fromchars,256x10,kernel,11564.20,11537.28,11547.08,11547.08,d689f75 +fromchars,2000x10,auto,300171.02,300086.76,300851.98,300851.98,d689f75 +fromchars,2000x10,gmp,183952.42,184059.01,184097.48,184097.48,d689f75 +fromchars,2000x10,gmpz,203580.28,203324.28,203515.14,203515.14,d689f75 +fromchars,2000x10,kernel,282789.02,282617.74,283278.17,283278.17,d689f75 +fromchars,10000x10,auto,4198920.80,4171162.60,4189262.50,4189262.50,d689f75 +fromchars,10000x10,gmp,1769836.79,1764921.88,1770253.46,1770253.46,d689f75 +fromchars,10000x10,gmpz,1887806.82,1857816.27,1872965.91,1872965.91,d689f75 +fromchars,10000x10,kernel,4137033.30,4088150.00,4117279.10,4117279.10,d689f75 +mul,1x1,auto,15.57,14.18,14.29,14.29,d689f75 +mul,1x1,gmp,3.75,3.73,3.74,3.74,d689f75 +mul,1x1,gmpz,2.75,2.74,2.74,2.74,d689f75 +mul,2x2,auto,28.10,18.59,18.23,18.23,d689f75 +mul,2x2,floor,14.75,14.57,14.53,14.53,d689f75 +mul,2x2,gmp,4.57,4.71,4.61,4.61,d689f75 +mul,2x2,gmpz,6.55,6.78,6.48,6.48,d689f75 +mul,2x2,kernel,6.56,6.39,6.33,6.33,d689f75 +mul,3x3,auto,30.09,19.52,20.04,20.04,d689f75 +mul,3x3,floor,16.89,16.68,17.00,17.00,d689f75 +mul,3x3,gmp,6.22,6.28,6.08,6.08,d689f75 +mul,3x3,gmpz,8.43,8.60,10.50,10.50,d689f75 +mul,3x3,kernel,8.34,8.23,8.14,8.14,d689f75 +mul,4x4,auto,29.68,21.63,21.65,21.65,d689f75 +mul,4x4,floor,17.12,16.81,16.89,16.89,d689f75 +mul,4x4,gmp,9.12,8.96,8.96,8.96,d689f75 +mul,4x4,gmpz,10.34,10.58,10.99,10.99,d689f75 +mul,4x4,kernel,11.21,11.09,11.09,11.09,d689f75 +mul,6x6,auto,33.04,27.34,27.23,27.23,d689f75 +mul,6x6,floor,23.84,23.70,24.30,24.30,d689f75 +mul,6x6,gmp,14.56,14.71,14.43,14.43,d689f75 +mul,6x6,gmpz,18.75,18.59,18.63,18.63,d689f75 +mul,6x6,kernel,19.10,18.96,19.30,19.30,d689f75 +mul,8x8,auto,41.89,34.83,35.12,35.12,d689f75 +mul,8x8,floor,30.86,30.50,30.38,30.38,d689f75 +mul,8x8,gmp,22.54,23.28,22.72,22.72,d689f75 +mul,8x8,gmpz,26.81,27.04,24.98,24.98,d689f75 +mul,8x8,kernel,23.19,22.96,22.99,22.99,d689f75 +mul,12x12,auto,61.78,54.01,53.80,53.80,d689f75 +mul,12x12,floor,49.80,49.55,49.55,49.55,d689f75 +mul,12x12,gmp,44.67,44.31,44.16,44.16,d689f75 +mul,12x12,gmpz,46.56,46.66,46.69,46.69,d689f75 +mul,12x12,kernel,41.43,41.09,41.41,41.41,d689f75 +mul,16x16,auto,94.78,82.68,82.40,82.40,d689f75 +mul,16x16,floor,79.04,78.52,78.41,78.41,d689f75 +mul,16x16,gmp,77.53,76.82,76.80,76.80,d689f75 +mul,16x16,gmpz,79.14,78.45,78.46,78.46,d689f75 +mul,16x16,kernel,69.88,69.48,69.61,69.61,d689f75 +mul,32x32,auto,298.71,281.84,281.40,281.40,d689f75 +mul,32x32,floor,281.20,278.70,279.12,279.12,d689f75 +mul,32x32,gmp,263.35,264.67,262.85,262.85,d689f75 +mul,32x32,gmpz,265.86,264.68,263.29,263.29,d689f75 +mul,32x32,kernel,259.39,258.45,258.25,258.25,d689f75 +mul,64x64,auto,1039.33,1008.60,1007.77,1007.77,d689f75 +mul,64x64,floor,1015.38,1009.32,1010.36,1010.36,d689f75 +mul,64x64,gmp,776.34,772.60,774.12,774.12,d689f75 +mul,64x64,gmpz,778.35,779.15,775.95,775.95,d689f75 +mul,64x64,kernel,986.07,984.11,984.88,984.88,d689f75 +mul,128x128,auto,3638.80,3579.48,3582.43,3582.43,d689f75 +mul,128x128,floor,3593.87,3594.77,3611.09,3611.09,d689f75 +mul,128x128,gmp,2666.93,2653.89,2656.36,2656.36,d689f75 +mul,128x128,gmpz,2681.14,3008.62,2988.71,2988.71,d689f75 +mul,128x128,kernel,3579.89,3581.45,3587.14,3587.14,d689f75 +mul,256x256,auto,11896.32,11814.01,12024.95,12024.95,d689f75 +mul,256x256,floor,11793.47,11788.01,11786.17,11786.17,d689f75 +mul,256x256,gmp,9113.72,7852.43,7829.56,7829.56,d689f75 +mul,256x256,gmpz,7879.10,7859.24,7855.93,7855.93,d689f75 +mul,256x256,kernel,11758.11,11787.01,11795.64,11795.64,d689f75 +mul,512x512,auto,37400.51,36887.94,36998.75,36998.75,d689f75 +mul,512x512,floor,37078.73,36981.49,36984.97,36984.97,d689f75 +mul,512x512,gmp,21395.58,20147.68,20288.49,20288.49,d689f75 +mul,512x512,gmpz,19080.58,19044.35,19097.76,19097.76,d689f75 +mul,512x512,kernel,37086.22,36932.21,37216.43,37216.43,d689f75 +mul,1000x1000,auto,107250.23,106691.93,106887.81,106887.81,d689f75 +mul,1000x1000,floor,107071.76,106884.70,107171.46,107171.46,d689f75 +mul,1000x1000,gmp,55510.15,55222.24,55272.01,55272.01,d689f75 +mul,1000x1000,gmpz,55204.16,55236.22,55100.44,55100.44,d689f75 +mul,1000x1000,kernel,107169.80,106848.39,106770.83,106770.83,d689f75 +mul,2000x100,auto,47136.27,46319.63,46406.54,46406.54,d689f75 +mul,2000x100,floor,46841.78,46796.49,46697.96,46697.96,d689f75 +mul,2000x100,gmp,35277.32,35067.11,35134.72,35134.72,d689f75 +mul,2000x100,gmpz,34798.98,34707.86,34725.50,34725.50,d689f75 +mul,2000x100,kernel,46855.99,46697.11,46668.32,46668.32,d689f75 +mul,2000x2000,auto,302932.54,301592.05,301689.05,301689.05,d689f75 +mul,2000x2000,floor,303225.36,302273.63,302411.38,302411.38,d689f75 +mul,2000x2000,gmp,149200.50,148395.32,148630.10,148630.10,d689f75 +mul,2000x2000,gmpz,148912.46,148861.11,148856.32,148856.32,d689f75 +mul,2000x2000,kernel,302264.01,301691.55,302389.30,302389.30,d689f75 +mul,16384x16384,auto,5443656.25,5353474.00,5522911.38,5522911.38,d689f75 +mul,16384x16384,floor,5487395.75,5329625.00,5449203.12,5449203.12,d689f75 +mul,16384x16384,gmp,1586908.66,1582892.61,1608006.42,1608006.42,d689f75 +mul,16384x16384,gmpz,1571395.84,1567599.34,1599088.16,1599088.16,d689f75 +mul,16384x16384,kernel,5447302.12,5393000.00,5449135.50,5449135.50,d689f75 +shl,1x13,auto,17.55,12.38,12.29,12.25,b823c5f +shl,1x13,floor,11.01,10.99,10.93,11.39,b823c5f +shl,1x13,gmp,1.24,1.24,1.24,1.24,b823c5f +shl,1x13,gmpz,1.99,1.98,1.99,2.00,b823c5f +shl,1x13,inplace,2.30,2.49,3.42,2.50,b823c5f +shl,1x13,kernel,2.24,2.23,2.49,2.25,b823c5f +shl,1x13,kernelip,1.54,1.77,1.73,1.77,b823c5f +shl,4x13,auto,19.05,13.02,13.09,13.09,b823c5f +shl,4x13,floor,13.14,13.12,13.05,13.16,b823c5f +shl,4x13,gmp,2.00,1.99,1.99,1.99,b823c5f +shl,4x13,gmpz,2.73,2.73,2.74,2.76,b823c5f +shl,4x13,inplace,3.56,3.77,5.45,3.77,b823c5f +shl,4x13,kernel,3.72,3.73,3.73,3.73,b823c5f +shl,4x13,kernelip,3.37,3.38,3.37,3.38,b823c5f +shl,16x13,auto,21.48,16.19,15.46,16.07,b823c5f +shl,16x13,floor,12.07,12.29,12.15,12.13,b823c5f +shl,16x13,gmp,3.48,3.48,3.49,3.50,b823c5f +shl,16x13,gmpz,5.04,5.14,5.17,5.21,b823c5f +shl,16x13,inplace,5.79,5.30,6.88,5.36,b823c5f +shl,16x13,kernel,4.09,4.14,4.10,4.10,b823c5f +shl,16x13,kernelip,6.81,6.81,6.81,6.85,b823c5f +shl,256x13,auto,87.47,41.28,41.22,41.45,b823c5f +shl,256x13,floor,57.80,57.39,57.12,58.03,b823c5f +shl,256x13,gmp,37.00,36.92,37.03,37.16,b823c5f +shl,256x13,gmpz,38.09,37.88,37.95,38.44,b823c5f +shl,256x13,inplace,36.52,29.80,45.09,29.77,b823c5f +shl,256x13,kernel,49.44,49.11,49.26,49.70,b823c5f +shl,256x13,kernelip,49.17,48.67,48.81,49.01,b823c5f +shl,2000x13,auto,653.59,262.42,260.96,260.41,b823c5f +shl,2000x13,floor,401.41,400.48,402.14,402.17,b823c5f +shl,2000x13,gmp,1895.46,1801.38,1523.52,1979.30,b823c5f +shl,2000x13,gmpz,2186.34,1949.73,2261.95,1711.39,b823c5f +shl,2000x13,inplace,283.65,196.53,347.83,195.87,b823c5f +shl,2000x13,kernel,385.88,383.49,386.24,385.21,b823c5f +shl,2000x13,kernelip,376.98,376.62,377.03,378.19,b823c5f +shl,2000x77,auto,796.26,458.64,450.31,452.34,b823c5f +shl,2000x77,floor,542.67,539.62,546.92,544.42,b823c5f +shl,2000x77,gmp,294.19,290.15,290.44,290.08,b823c5f +shl,2000x77,gmpz,290.46,289.05,289.58,292.62,b823c5f +shl,2000x77,inplace,425.80,228.79,233.41,228.42,b823c5f +shl,2000x77,kernel,527.34,529.59,530.09,529.20,b823c5f +shl,2000x77,kernelip,520.55,520.14,521.24,522.77,b823c5f +shl,131072x13,auto,48969.00,,,18081.05,b823c5f +shl,131072x13,inplace,19832.04,,,18591.43,b823c5f +shl,131072x13,kernel,29296.36,,,29310.71,b823c5f +shr,1x13,auto,9.49,6.61,6.61,6.59,b823c5f +shr,1x13,floor,2.49,2.48,2.49,2.49,b823c5f +shr,1x13,gmp,0.99,0.99,0.99,0.99,b823c5f +shr,1x13,gmpz,1.99,1.99,1.99,1.99,b823c5f +shr,1x13,inplace,2.36,3.33,3.08,3.32,b823c5f +shr,1x13,kernel,2.23,2.24,2.24,2.24,b823c5f +shr,4x13,auto,17.76,14.00,14.09,15.20,b823c5f +shr,4x13,floor,12.36,11.96,12.29,12.28,b823c5f +shr,4x13,gmp,1.74,1.74,1.75,1.74,b823c5f +shr,4x13,gmpz,2.77,2.73,2.74,2.74,b823c5f +shr,4x13,inplace,3.26,3.70,4.74,3.58,b823c5f +shr,4x13,kernel,3.72,3.73,3.74,3.73,b823c5f +shr,16x13,auto,21.61,18.36,17.99,18.55,b823c5f +shr,16x13,floor,13.27,12.98,13.15,13.30,b823c5f +shr,16x13,gmp,3.24,3.23,3.23,3.23,b823c5f +shr,16x13,gmpz,4.26,4.24,4.24,4.26,b823c5f +shr,16x13,inplace,5.07,5.24,6.12,5.20,b823c5f +shr,16x13,kernel,4.17,4.16,4.13,4.17,b823c5f +shr,256x13,auto,87.58,42.59,42.55,42.86,b823c5f +shr,256x13,floor,75.62,75.25,75.39,75.89,b823c5f +shr,256x13,gmp,36.91,36.77,36.75,36.77,b823c5f +shr,256x13,gmpz,38.52,38.09,38.11,38.08,b823c5f +shr,256x13,inplace,35.83,30.38,44.76,30.39,b823c5f +shr,256x13,kernel,66.39,66.53,66.79,66.52,b823c5f +shr,2000x13,auto,692.17,255.11,271.16,273.83,b823c5f +shr,2000x13,floor,528.17,525.08,526.91,526.23,b823c5f +shr,2000x13,gmp,313.17,298.89,294.86,310.40,b823c5f +shr,2000x13,gmpz,298.43,298.33,302.23,309.36,b823c5f +shr,2000x13,inplace,282.46,196.34,347.46,195.99,b823c5f +shr,2000x13,kernel,512.63,513.76,512.73,513.74,b823c5f +shr,2000x77,auto,1064.38,276.44,280.69,276.01,b823c5f +shr,2000x77,floor,528.64,526.33,528.25,530.58,b823c5f +shr,2000x77,gmp,295.63,290.11,291.92,293.15,b823c5f +shr,2000x77,gmpz,289.86,290.30,287.30,286.56,b823c5f +shr,2000x77,inplace,420.02,195.85,195.86,196.12,b823c5f +shr,2000x77,kernel,518.28,516.77,517.40,521.51,b823c5f +shr,131072x13,auto,50436.86,,,18186.25,b823c5f +shr,131072x13,inplace,19857.28,,,18632.11,b823c5f +shr,131072x13,kernel,37566.04,,,37657.43,b823c5f +sqr,4x4,auto,29.58,21.62,21.59,21.59,d689f75 +sqr,4x4,floor,16.41,16.42,16.24,16.24,d689f75 +sqr,4x4,gmp,6.97,6.95,6.96,6.96,d689f75 +sqr,4x4,gmpz,9.42,9.54,9.71,9.71,d689f75 +sqr,4x4,kernel,11.34,11.25,11.31,11.31,d689f75 +sqr,16x16,auto,88.87,75.34,75.85,75.85,d689f75 +sqr,16x16,floor,70.56,72.47,71.81,71.81,d689f75 +sqr,16x16,gmp,62.15,62.83,62.06,62.06,d689f75 +sqr,16x16,gmpz,65.88,66.06,66.19,66.19,d689f75 +sqr,16x16,kernel,62.16,63.80,61.91,61.91,d689f75 +sqr,64x64,auto,626.38,600.00,600.47,600.47,d689f75 +sqr,64x64,floor,602.00,598.38,599.75,599.75,d689f75 +sqr,64x64,gmp,671.80,669.88,673.18,673.18,d689f75 +sqr,64x64,gmpz,675.05,672.30,677.12,677.12,d689f75 +sqr,64x64,kernel,585.11,580.66,582.15,582.15,d689f75 +sqr,512x512,auto,24695.35,24374.42,24317.03,24317.03,d689f75 +sqr,512x512,floor,24419.32,24348.04,24389.00,24389.00,d689f75 +sqr,512x512,gmp,17412.99,18323.93,16499.51,16499.51,d689f75 +sqr,512x512,gmpz,19776.65,19676.06,20575.62,20575.62,d689f75 +sqr,512x512,kernel,24368.15,24356.54,24344.64,24344.64,d689f75 +sqr,2000x2000,auto,224588.01,223342.36,223255.60,223255.60,d689f75 +sqr,2000x2000,floor,223620.80,223261.40,223801.08,223801.08,d689f75 +sqr,2000x2000,gmp,121110.38,120575.21,120788.51,120788.51,d689f75 +sqr,2000x2000,gmpz,121249.65,120909.93,121153.62,121153.62,d689f75 +sqr,2000x2000,kernel,223692.57,223746.91,223224.30,223224.30,d689f75 +sub,1x1,auto,7.57,8.00,5.71,5.71,d689f75 +sub,1x1,floor,1.74,1.75,1.74,1.74,d689f75 +sub,1x1,gmp,1.49,1.49,1.50,1.50,d689f75 +sub,1x1,gmpz,2.74,2.48,2.49,2.49,d689f75 +sub,1x1,inplace,3.41,3.52,1.99,1.99,d689f75 +sub,1x1,kernel,1.03,1.05,1.05,1.05,d689f75 +sub,2x2,auto,15.00,14.72,14.73,14.73,d689f75 +sub,2x2,floor,9.48,9.46,9.29,9.29,d689f75 +sub,2x2,gmp,1.93,1.92,1.99,1.99,d689f75 +sub,2x2,gmpz,3.24,2.87,2.87,2.87,d689f75 +sub,2x2,inplace,3.26,3.48,3.83,3.83,d689f75 +sub,2x2,kernel,1.40,1.42,1.40,1.40,d689f75 +sub,4x4,auto,15.84,14.72,15.13,15.13,d689f75 +sub,4x4,floor,10.04,10.38,9.98,9.98,d689f75 +sub,4x4,gmp,1.74,1.74,1.74,1.74,d689f75 +sub,4x4,gmpz,2.99,2.74,2.74,2.74,d689f75 +sub,4x4,inplace,3.90,3.61,4.05,4.05,d689f75 +sub,4x4,kernel,1.96,1.94,1.93,1.93,d689f75 +sub,8x8,auto,16.25,15.59,15.73,15.73,d689f75 +sub,8x8,floor,11.68,11.80,11.47,11.47,d689f75 +sub,8x8,gmp,2.25,2.23,2.24,2.24,d689f75 +sub,8x8,gmpz,3.50,3.23,3.24,3.24,d689f75 +sub,8x8,inplace,5.04,4.12,4.38,4.38,d689f75 +sub,8x8,kernel,3.51,3.49,3.50,3.50,d689f75 +sub,16x16,auto,18.38,17.50,18.05,18.05,d689f75 +sub,16x16,floor,15.34,15.12,15.06,15.06,d689f75 +sub,16x16,gmp,3.25,3.17,3.23,3.23,d689f75 +sub,16x16,gmpz,4.36,4.29,4.37,4.37,d689f75 +sub,16x16,inplace,10.92,5.23,5.45,5.45,d689f75 +sub,16x16,kernel,7.70,7.71,7.71,7.71,d689f75 +sub,64x64,auto,41.20,35.94,36.13,36.13,d689f75 +sub,64x64,floor,60.20,60.22,61.20,61.20,d689f75 +sub,64x64,gmp,11.47,11.21,11.10,11.10,d689f75 +sub,64x64,gmpz,13.89,13.86,13.47,13.47,d689f75 +sub,64x64,inplace,51.16,19.90,19.82,19.82,d689f75 +sub,64x64,kernel,49.81,49.49,53.45,53.45,d689f75 +sub,256x256,auto,132.79,110.27,111.16,111.16,d689f75 +sub,256x256,floor,245.86,245.50,246.62,246.62,d689f75 +sub,256x256,gmp,57.34,57.09,57.34,57.34,d689f75 +sub,256x256,gmpz,58.10,57.89,57.96,57.96,d689f75 +sub,256x256,inplace,239.86,101.05,101.20,101.20,d689f75 +sub,256x256,kernel,236.89,236.64,237.82,237.82,d689f75 +sub,1024x1,auto,189.95,129.92,128.09,128.09,d689f75 +sub,1024x1,floor,758.74,754.80,760.56,760.56,d689f75 +sub,1024x1,gmp,262.62,262.28,263.20,263.20,d689f75 +sub,1024x1,gmpz,266.63,265.53,267.36,267.36,d689f75 +sub,1024x1,inplace,976.43,2.98,3.26,3.26,d689f75 +sub,1024x1,kernel,736.32,729.88,736.08,736.08,d689f75 +sub,1024x1024,auto,562.27,453.14,454.62,454.62,d689f75 +sub,1024x1024,floor,986.75,977.93,986.71,986.71,d689f75 +sub,1024x1024,gmp,252.00,251.46,252.12,252.12,d689f75 +sub,1024x1024,gmpz,254.09,253.48,252.03,252.03,d689f75 +sub,1024x1024,inplace,988.36,434.54,435.00,435.00,d689f75 +sub,1024x1024,kernel,978.48,975.80,979.40,979.40,d689f75 +sub,2000x2000,auto,1115.55,876.50,884.12,884.12,d689f75 +sub,2000x2000,floor,1921.93,1925.27,1946.38,1946.38,d689f75 +sub,2000x2000,gmp,495.37,494.18,495.57,495.57,d689f75 +sub,2000x2000,gmpz,497.61,497.19,497.37,497.37,d689f75 +sub,2000x2000,inplace,1952.06,849.67,852.99,852.99,d689f75 +sub,2000x2000,kernel,1929.80,1919.83,1926.73,1926.73,d689f75 +tochars,1x10,auto,6.01,,6.00,6.00,d689f75 +tochars,1x10,gmp,16.49,,16.69,16.69,d689f75 +tochars,1x10,gmpz,24.96,,24.96,24.96,d689f75 +tochars,1x10,kernel,34.33,,34.39,34.39,d689f75 +tochars,4x10,auto,84.03,,84.37,84.37,d689f75 +tochars,4x10,gmp,74.78,,74.97,74.97,d689f75 +tochars,4x10,gmpz,97.29,,95.43,95.43,d689f75 +tochars,4x10,kernel,103.03,,102.16,102.16,d689f75 +tochars,16x10,auto,828.75,,841.67,841.67,d689f75 +tochars,16x10,gmp,507.89,,510.80,510.80,d689f75 +tochars,16x10,gmpz,604.03,,601.88,601.88,d689f75 +tochars,16x10,kernel,740.73,,738.61,738.61,d689f75 +tochars,16x16,auto,85.74,,85.03,85.03,d689f75 +tochars,16x16,gmp,79.56,,79.34,79.34,d689f75 +tochars,16x16,gmpz,160.03,,159.40,159.40,d689f75 +tochars,64x10,auto,4746.03,,4744.51,4744.51,d689f75 +tochars,64x10,gmp,2838.95,,2833.98,2833.98,d689f75 +tochars,64x10,gmpz,3167.69,,3155.32,3155.32,d689f75 +tochars,64x10,kernel,4495.84,,4524.18,4524.18,d689f75 +tochars,256x10,auto,33794.60,,33818.88,33818.88,d689f75 +tochars,256x10,gmp,19012.54,,19142.78,19142.78,d689f75 +tochars,256x10,gmpz,20403.92,,20421.38,20421.38,d689f75 +tochars,256x10,kernel,32935.90,,32743.63,32743.63,d689f75 +tochars,2000x10,auto,679612.50,,676793.05,676793.05,d689f75 +tochars,2000x10,gmp,403089.59,,403513.75,403513.75,d689f75 +tochars,2000x10,gmpz,415929.71,,415982.99,415982.99,d689f75 +tochars,2000x10,kernel,668488.88,,668851.67,668851.67,d689f75 +tochars,2000x16,auto,9936.17,,9680.80,9680.80,d689f75 +tochars,2000x16,gmp,9103.53,,9141.08,9141.08,d689f75 +tochars,2000x16,gmpz,16845.17,,17045.62,17045.62,d689f75 +tochars,10000x10,auto,8278333.33,8240937.50,8342500.00,8342500.00,d689f75 +tochars,10000x10,gmp,4115158.20,4108583.40,4165145.80,4165145.80,d689f75 +tochars,10000x10,gmpz,4173420.80,4180900.10,4195345.80,4195345.80,d689f75 +tochars,10000x10,kernel,8238222.33,8216750.00,8247499.83,8247499.83,d689f75 diff --git a/tests/beman/big_int/perf/item1/final_x64.csv b/tests/beman/big_int/perf/item1/final_x64.csv new file mode 100644 index 00000000..2703de5a --- /dev/null +++ b/tests/beman/big_int/perf/item1/final_x64.csv @@ -0,0 +1,435 @@ +# item 1 before/after medians, x64; ns per operation (vecsort and the study are in study.csv) +# base_ns: cf1cf54 harness (base64); first_9145b4e_ns: first measurement of opt_1; d689f75_ns: re-measurement; +# after_ns: final value (b823c5f for shl/shr, d689f75 for the other ops); empty cells were not measured +# aggregation: median of the runs, divrem up to 32 limbs the mean of seeds 1 and 2; shl/shr base_ns from the +# b823c5f runs; spots (large band, 3-round runs) are medians of two seeds +# base64: sweep_inline_bits=64 sweep_int_sizeof=16 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=gcc-14.3.0 build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +# after: sweep_inline_bits=64 sweep_int_sizeof=16 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=gcc-14.3.0 build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +# after_shifts: sweep_inline_bits=64 sweep_int_sizeof=16 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=gcc-14.3.0 build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +op,shape,row,base_ns,first_9145b4e_ns,d689f75_ns,after_ns,after_commit +add,1x1,auto,8.23,6.71,5.38,5.38,d689f75 +add,1x1,floor,9.86,9.82,9.82,9.82,d689f75 +add,1x1,gmp,2.27,2.27,2.27,2.27,d689f75 +add,1x1,gmpz,4.16,4.16,4.16,4.16,d689f75 +add,1x1,inplace,4.13,4.91,2.56,2.56,d689f75 +add,1x1,kernel,1.89,1.92,1.94,1.94,d689f75 +add,2x2,auto,17.86,15.91,15.88,15.88,d689f75 +add,2x2,floor,10.21,10.27,10.20,10.20,d689f75 +add,2x2,gmp,2.27,2.27,2.27,2.27,d689f75 +add,2x2,gmpz,4.16,4.19,4.16,4.16,d689f75 +add,2x2,inplace,5.89,6.14,6.24,6.24,d689f75 +add,2x2,kernel,2.37,2.40,2.38,2.38,d689f75 +add,4x4,auto,18.05,15.41,15.42,15.42,d689f75 +add,4x4,floor,10.97,11.10,10.95,10.95,d689f75 +add,4x4,gmp,2.50,2.50,2.50,2.50,d689f75 +add,4x4,gmpz,4.38,4.40,4.37,4.37,d689f75 +add,4x4,inplace,5.62,5.71,5.71,5.71,d689f75 +add,4x4,kernel,3.07,3.06,3.05,3.05,d689f75 +add,8x8,auto,19.28,16.75,16.94,16.94,d689f75 +add,8x8,floor,12.50,12.59,12.51,12.51,d689f75 +add,8x8,gmp,3.69,3.68,3.68,3.68,d689f75 +add,8x8,gmpz,4.68,4.69,4.68,4.68,d689f75 +add,8x8,inplace,7.35,7.09,7.32,7.32,d689f75 +add,8x8,kernel,4.63,4.55,4.53,4.53,d689f75 +add,16x16,auto,25.30,20.94,21.06,21.06,d689f75 +add,16x16,floor,15.50,15.61,15.50,15.50,d689f75 +add,16x16,gmp,5.57,5.50,5.50,5.50,d689f75 +add,16x16,gmpz,6.54,6.53,6.53,6.53,d689f75 +add,16x16,inplace,11.84,11.86,11.20,11.20,d689f75 +add,16x16,kernel,7.56,7.56,7.56,7.56,d689f75 +add,64x64,auto,63.69,57.59,46.24,46.24,d689f75 +add,64x64,floor,41.28,41.75,41.14,41.14,d689f75 +add,64x64,gmp,15.45,15.45,15.45,15.45,d689f75 +add,64x64,gmpz,16.49,16.49,16.49,16.49,d689f75 +add,64x64,inplace,38.88,48.06,35.75,35.75,d689f75 +add,64x64,kernel,33.25,32.87,32.87,32.87,d689f75 +add,256x256,auto,223.88,213.52,162.91,162.91,d689f75 +add,256x256,floor,158.78,159.25,158.53,158.53,d689f75 +add,256x256,gmp,78.23,78.22,78.22,78.22,d689f75 +add,256x256,gmpz,79.47,79.48,79.50,79.50,d689f75 +add,256x256,inplace,145.83,196.09,144.70,144.70,d689f75 +add,256x256,kernel,142.56,142.38,142.30,142.30,d689f75 +add,1024x1,auto,280.90,252.46,251.73,251.73,d689f75 +add,1024x1,floor,593.57,593.91,593.48,593.48,d689f75 +add,1024x1,gmp,232.64,233.00,232.99,232.99,d689f75 +add,1024x1,gmpz,233.99,234.06,234.15,234.15,d689f75 +add,1024x1,inplace,579.77,5.11,4.84,4.84,d689f75 +add,1024x1,kernel,577.70,577.40,577.41,577.41,d689f75 +add,1024x1024,auto,841.90,800.14,599.06,599.06,d689f75 +add,1024x1024,floor,594.26,594.67,594.00,594.00,d689f75 +add,1024x1024,gmp,390.76,390.51,390.51,390.51,d689f75 +add,1024x1024,gmpz,391.71,391.44,391.40,391.40,d689f75 +add,1024x1024,inplace,583.05,790.12,581.02,581.02,d689f75 +add,1024x1024,kernel,578.46,577.78,577.78,577.78,d689f75 +add,2000x2000,auto,1721.62,1535.37,1153.34,1153.34,d689f75 +add,2000x2000,floor,1150.49,1150.65,1149.44,1149.44,d689f75 +add,2000x2000,gmp,471.81,468.92,474.00,474.00,d689f75 +add,2000x2000,gmpz,482.93,481.20,481.35,481.35,d689f75 +add,2000x2000,inplace,1134.76,1520.53,1132.45,1132.45,d689f75 +add,2000x2000,kernel,1133.06,1132.11,1131.68,1131.68,d689f75 +add,16384x16384,auto,14810.19,12435.36,9329.74,9329.74,d689f75 +add,16384x16384,floor,9323.76,9320.83,9315.54,9315.54,d689f75 +add,16384x16384,gmp,6917.77,7411.56,6936.92,6936.92,d689f75 +add,16384x16384,gmpz,7364.76,7409.74,6898.03,6898.03,d689f75 +add,16384x16384,inplace,9315.09,12455.62,9291.74,9291.74,d689f75 +add,16384x16384,kernel,9304.25,9298.06,9293.57,9293.57,d689f75 +divrem,2x1,auto,41.66,35.42,36.20,36.20,d689f75 +divrem,2x1,floor,12.77,12.82,12.80,12.80,d689f75 +divrem,2x1,gmp,7.69,7.73,7.69,7.69,d689f75 +divrem,2x1,gmpz,12.46,12.46,12.39,12.39,d689f75 +divrem,2x1,kernel,5.47,5.76,5.68,5.68,d689f75 +divrem,8x4,auto,112.71,94.69,94.06,94.06,d689f75 +divrem,8x4,floor,59.81,67.60,67.72,67.72,d689f75 +divrem,8x4,gmp,41.89,41.83,41.92,41.92,d689f75 +divrem,8x4,gmpz,43.78,45.66,44.19,44.19,d689f75 +divrem,8x4,kernel,45.71,50.93,50.30,50.30,d689f75 +divrem,32x16,auto,370.94,340.25,342.22,342.22,d689f75 +divrem,32x16,floor,303.53,306.00,306.14,306.14,d689f75 +divrem,32x16,gmp,192.02,191.71,190.56,190.56,d689f75 +divrem,32x16,gmpz,193.96,196.41,193.53,193.53,d689f75 +divrem,32x16,kernel,288.55,290.56,288.27,288.27,d689f75 +divrem,128x64,auto,3342.14,3311.61,3446.34,3446.34,d689f75 +divrem,128x64,floor,3275.18,3264.14,3364.22,3364.22,d689f75 +divrem,128x64,gmp,1719.43,1723.24,1719.74,1719.74,d689f75 +divrem,128x64,gmpz,1722.79,1722.86,1725.11,1725.11,d689f75 +divrem,128x64,kernel,3201.06,3226.98,3343.18,3343.18,d689f75 +divrem,512x256,auto,29558.60,29508.37,29817.40,29817.40,d689f75 +divrem,512x256,floor,29265.99,29221.33,29639.40,29639.40,d689f75 +divrem,512x256,gmp,16254.41,16233.17,16260.22,16260.22,d689f75 +divrem,512x256,gmpz,16295.88,16239.44,16287.39,16287.39,d689f75 +divrem,512x256,kernel,29393.89,29166.29,29590.92,29590.92,d689f75 +divrem,2000x100,auto,144653.98,144972.40,144971.35,144971.35,d689f75 +divrem,2000x100,floor,142725.61,142574.95,143817.21,143817.21,d689f75 +divrem,2000x100,gmp,72563.71,72315.51,72331.67,72331.67,d689f75 +divrem,2000x100,gmpz,72269.21,72301.43,72348.47,72348.47,d689f75 +divrem,2000x100,kernel,143841.42,144126.99,144084.80,144084.80,d689f75 +divrem,2000x1000,auto,185318.81,185240.67,186774.10,186774.10,d689f75 +divrem,2000x1000,floor,184152.70,185470.49,185955.12,185955.12,d689f75 +divrem,2000x1000,gmp,137925.83,138206.38,137968.62,137968.62,d689f75 +divrem,2000x1000,gmpz,137926.68,138095.54,137906.30,137906.30,d689f75 +divrem,2000x1000,kernel,184253.69,185220.27,185733.07,185733.07,d689f75 +divrem,4000x2000,auto,478481.80,474978.93,477627.12,477627.12,d689f75 +divrem,4000x2000,floor,474608.67,475195.26,477727.83,477727.83,d689f75 +divrem,4000x2000,gmp,336143.68,336658.24,335369.40,335369.40,d689f75 +divrem,4000x2000,gmpz,334840.80,335770.58,334295.77,334295.77,d689f75 +divrem,4000x2000,kernel,475155.38,475542.15,478191.69,478191.69,d689f75 +divrem,4096x2048,auto,499033.82,498766.78,498476.96,498476.96,d689f75 +divrem,4096x2048,floor,497096.70,498373.57,495500.93,495500.93,d689f75 +divrem,4096x2048,gmp,370374.41,369407.30,369340.38,369340.38,d689f75 +divrem,4096x2048,gmpz,369214.30,367635.09,368706.87,368706.87,d689f75 +divrem,4096x2048,kernel,497946.41,498831.91,495568.67,495568.67,d689f75 +divrem,65536x1,auto,193721.33,174417.12,168835.73,168835.73,d689f75 +divrem,65536x1,floor,174747.77,168074.78,167435.50,167435.50,d689f75 +divrem,65536x1,gmp,148101.10,148101.80,148097.74,148097.74,d689f75 +divrem,65536x1,gmpz,148112.91,148112.78,148110.39,148110.39,d689f75 +divrem,65536x1,kernel,167123.32,167325.38,166946.54,166946.54,d689f75 +fromchars,4x10,auto,194.06,116.13,115.63,115.63,d689f75 +fromchars,4x10,gmp,31.66,31.68,31.65,31.65,d689f75 +fromchars,4x10,gmpz,68.17,68.94,67.88,67.88,d689f75 +fromchars,4x10,kernel,38.15,38.80,38.01,38.01,d689f75 +fromchars,16x10,auto,421.77,433.46,425.20,425.20,d689f75 +fromchars,16x10,gmp,124.14,123.86,124.02,124.02,d689f75 +fromchars,16x10,gmpz,258.17,258.12,256.65,256.65,d689f75 +fromchars,16x10,kernel,217.35,215.86,199.96,199.96,d689f75 +fromchars,64x10,auto,2790.47,3094.72,2852.27,2852.27,d689f75 +fromchars,64x10,gmp,889.61,905.83,890.67,890.67,d689f75 +fromchars,64x10,gmpz,1368.07,1393.03,1369.80,1369.80,d689f75 +fromchars,64x10,kernel,2122.82,2433.77,1807.23,1807.23,d689f75 +fromchars,256x10,auto,28563.94,30825.86,27920.01,27920.01,d689f75 +fromchars,256x10,gmp,8046.36,8017.06,8013.43,8013.43,d689f75 +fromchars,256x10,gmpz,9955.38,9958.36,9970.85,9970.85,d689f75 +fromchars,256x10,kernel,25689.38,29560.08,24430.63,24430.63,d689f75 +fromchars,2000x10,auto,429183.11,427566.80,385669.07,385669.07,d689f75 +fromchars,2000x10,gmp,183073.35,182858.83,182726.82,182726.82,d689f75 +fromchars,2000x10,gmpz,197928.45,197722.46,197822.32,197822.32,d689f75 +fromchars,2000x10,kernel,408671.72,405710.69,362563.51,362563.51,d689f75 +fromchars,10000x10,auto,3670158.92,3651386.33,3475893.00,3475893.00,d689f75 +fromchars,10000x10,gmp,1932681.96,1933053.19,1932903.68,1932903.68,d689f75 +fromchars,10000x10,gmpz,2008734.00,2006859.20,2005996.60,2005996.60,d689f75 +fromchars,10000x10,kernel,3588344.33,3567768.42,3362265.17,3362265.17,d689f75 +mul,1x1,auto,19.41,16.34,16.61,16.61,d689f75 +mul,1x1,gmp,3.39,3.37,3.39,3.39,d689f75 +mul,1x1,gmpz,4.00,4.02,3.98,3.98,d689f75 +mul,2x2,auto,28.25,18.88,18.88,18.88,d689f75 +mul,2x2,floor,15.18,14.95,14.96,14.96,d689f75 +mul,2x2,gmp,3.83,3.84,3.83,3.83,d689f75 +mul,2x2,gmpz,6.13,6.12,6.12,6.12,d689f75 +mul,2x2,kernel,7.59,7.58,7.56,7.56,d689f75 +mul,3x3,auto,29.69,20.25,20.29,20.29,d689f75 +mul,3x3,floor,16.63,16.42,16.39,16.39,d689f75 +mul,3x3,gmp,7.84,7.80,7.76,7.76,d689f75 +mul,3x3,gmpz,10.00,10.00,9.99,9.99,d689f75 +mul,3x3,kernel,9.02,8.95,8.93,8.93,d689f75 +mul,4x4,auto,31.98,22.34,22.43,22.43,d689f75 +mul,4x4,floor,18.58,18.20,18.25,18.25,d689f75 +mul,4x4,gmp,9.70,9.68,9.67,9.67,d689f75 +mul,4x4,gmpz,12.18,12.18,12.18,12.18,d689f75 +mul,4x4,kernel,11.11,10.91,10.91,10.91,d689f75 +mul,6x6,auto,42.06,28.02,27.98,27.98,d689f75 +mul,6x6,floor,24.71,24.38,24.45,24.45,d689f75 +mul,6x6,gmp,15.81,15.81,16.48,16.48,d689f75 +mul,6x6,gmpz,18.21,18.13,18.13,18.13,d689f75 +mul,6x6,kernel,17.49,17.16,17.19,17.19,d689f75 +mul,8x8,auto,47.50,35.87,35.96,35.96,d689f75 +mul,8x8,floor,32.62,32.34,32.56,32.56,d689f75 +mul,8x8,gmp,27.19,27.12,27.04,27.04,d689f75 +mul,8x8,gmpz,28.86,28.92,28.96,28.96,d689f75 +mul,8x8,kernel,25.54,25.41,25.45,25.45,d689f75 +mul,12x12,auto,70.25,57.88,57.39,57.39,d689f75 +mul,12x12,floor,54.98,54.75,54.92,54.92,d689f75 +mul,12x12,gmp,48.95,49.79,48.56,48.56,d689f75 +mul,12x12,gmpz,50.76,50.82,51.05,51.05,d689f75 +mul,12x12,kernel,47.82,47.76,47.89,47.89,d689f75 +mul,16x16,auto,101.81,88.48,88.63,88.63,d689f75 +mul,16x16,floor,86.43,86.25,86.81,86.81,d689f75 +mul,16x16,gmp,81.88,81.90,81.91,81.91,d689f75 +mul,16x16,gmpz,84.06,84.26,84.07,84.07,d689f75 +mul,16x16,kernel,79.33,79.09,79.25,79.25,d689f75 +mul,32x32,auto,212.30,200.50,205.77,205.77,d689f75 +mul,32x32,floor,200.22,200.31,196.46,196.46,d689f75 +mul,32x32,gmp,270.61,271.01,271.53,271.53,d689f75 +mul,32x32,gmpz,270.94,270.99,270.52,270.52,d689f75 +mul,32x32,kernel,187.59,194.34,186.84,186.84,d689f75 +mul,64x64,auto,524.45,498.34,496.22,496.22,d689f75 +mul,64x64,floor,493.43,494.74,492.51,492.51,d689f75 +mul,64x64,gmp,876.33,873.70,873.09,873.09,d689f75 +mul,64x64,gmpz,867.81,867.01,862.63,862.63,d689f75 +mul,64x64,kernel,482.98,485.58,486.68,486.68,d689f75 +mul,128x128,auto,1723.64,1724.84,1717.97,1717.97,d689f75 +mul,128x128,floor,1717.14,1712.62,1704.41,1704.41,d689f75 +mul,128x128,gmp,2763.76,2799.06,2763.24,2763.24,d689f75 +mul,128x128,gmpz,2728.55,2766.93,2733.08,2733.08,d689f75 +mul,128x128,kernel,1714.19,1700.09,1705.90,1705.90,d689f75 +mul,256x256,auto,6231.47,6185.07,6176.43,6176.43,d689f75 +mul,256x256,floor,6203.21,6180.12,6173.99,6173.99,d689f75 +mul,256x256,gmp,7896.46,7899.05,7873.70,7873.70,d689f75 +mul,256x256,gmpz,7788.68,7801.42,7853.82,7853.82,d689f75 +mul,256x256,kernel,6168.92,6169.68,6178.80,6178.80,d689f75 +mul,512x512,auto,19313.37,19192.86,19277.51,19277.51,d689f75 +mul,512x512,floor,19221.82,19253.55,19202.35,19202.35,d689f75 +mul,512x512,gmp,20954.72,20879.58,20826.25,20826.25,d689f75 +mul,512x512,gmpz,20899.69,20869.46,20884.90,20884.90,d689f75 +mul,512x512,kernel,19167.44,19182.64,19192.06,19192.06,d689f75 +mul,1000x1000,auto,59904.34,59737.02,59861.79,59861.79,d689f75 +mul,1000x1000,floor,59560.76,59569.40,59549.42,59549.42,d689f75 +mul,1000x1000,gmp,53843.90,53872.06,53342.56,53342.56,d689f75 +mul,1000x1000,gmpz,53508.52,53654.40,53437.63,53437.63,d689f75 +mul,1000x1000,kernel,59515.28,59486.68,59630.90,59630.90,d689f75 +mul,2000x100,auto,17852.92,17640.00,17643.55,17643.55,d689f75 +mul,2000x100,floor,17698.32,17695.88,17687.17,17687.17,d689f75 +mul,2000x100,gmp,36291.90,36417.26,36260.57,36260.57,d689f75 +mul,2000x100,gmpz,35918.14,36135.70,35939.70,35939.70,d689f75 +mul,2000x100,kernel,17659.32,17660.10,17696.42,17696.42,d689f75 +mul,2000x2000,auto,177072.62,176669.06,176923.73,176923.73,d689f75 +mul,2000x2000,floor,176349.76,176449.62,176724.55,176724.55,d689f75 +mul,2000x2000,gmp,144213.65,144242.57,144332.72,144332.72,d689f75 +mul,2000x2000,gmpz,144205.99,144151.67,144253.61,144253.61,d689f75 +mul,2000x2000,kernel,176380.44,176415.29,177061.13,177061.13,d689f75 +mul,16384x16384,auto,3778230.83,3774169.25,3779465.92,3779465.92,d689f75 +mul,16384x16384,floor,3782802.33,3784154.58,3793417.33,3793417.33,d689f75 +mul,16384x16384,gmp,1772153.46,1797922.67,1768834.29,1768834.29,d689f75 +mul,16384x16384,gmpz,1799441.25,1783926.00,1789186.25,1789186.25,d689f75 +mul,16384x16384,kernel,3778094.42,3781385.08,3788185.67,3788185.67,d689f75 +shl,1x13,auto,16.85,12.64,12.52,12.69,b823c5f +shl,1x13,floor,9.82,9.82,9.83,9.82,b823c5f +shl,1x13,gmp,1.93,2.08,2.08,2.09,b823c5f +shl,1x13,gmpz,3.47,3.27,3.27,3.27,b823c5f +shl,1x13,inplace,4.16,3.69,4.20,3.48,b823c5f +shl,1x13,kernel,2.08,2.08,2.08,2.08,b823c5f +shl,1x13,kernelip,1.77,1.75,1.75,1.78,b823c5f +shl,4x13,auto,18.69,13.49,13.48,13.43,b823c5f +shl,4x13,floor,11.20,11.20,11.20,11.21,b823c5f +shl,4x13,gmp,2.31,2.50,2.50,2.50,b823c5f +shl,4x13,gmpz,4.04,4.04,4.04,4.04,b823c5f +shl,4x13,inplace,5.26,4.62,5.27,4.39,b823c5f +shl,4x13,kernel,3.46,3.50,3.49,3.51,b823c5f +shl,4x13,kernelip,3.01,2.96,2.92,2.97,b823c5f +shl,16x13,auto,24.57,17.09,17.12,16.76,b823c5f +shl,16x13,floor,15.23,15.23,15.21,15.23,b823c5f +shl,16x13,gmp,4.05,4.16,4.28,4.17,b823c5f +shl,16x13,gmpz,5.82,5.82,5.82,5.81,b823c5f +shl,16x13,inplace,9.34,9.12,9.25,8.58,b823c5f +shl,16x13,kernel,7.47,7.45,7.57,7.46,b823c5f +shl,16x13,kernelip,7.20,7.13,7.17,7.11,b823c5f +shl,256x13,auto,136.95,122.03,121.97,121.81,b823c5f +shl,256x13,floor,117.22,116.52,114.62,117.80,b823c5f +shl,256x13,gmp,47.73,47.27,47.20,47.55,b823c5f +shl,256x13,gmpz,50.83,49.84,50.22,50.07,b823c5f +shl,256x13,inplace,93.09,102.25,99.30,98.67,b823c5f +shl,256x13,kernel,95.23,93.85,93.89,95.19,b823c5f +shl,256x13,kernelip,97.74,97.43,96.91,97.66,b823c5f +shl,2000x13,auto,916.70,772.77,772.71,773.42,b823c5f +shl,2000x13,floor,738.86,739.14,739.27,739.42,b823c5f +shl,2000x13,gmp,338.00,335.39,335.47,336.09,b823c5f +shl,2000x13,gmpz,340.98,338.09,338.10,339.41,b823c5f +shl,2000x13,inplace,657.71,740.91,716.88,712.53,b823c5f +shl,2000x13,kernel,719.48,719.70,719.66,719.43,b823c5f +shl,2000x13,kernelip,715.35,715.21,714.43,715.31,b823c5f +shl,2000x77,auto,1066.11,774.80,774.60,774.36,b823c5f +shl,2000x77,floor,871.86,871.91,872.60,872.78,b823c5f +shl,2000x77,gmp,342.82,337.61,337.60,342.52,b823c5f +shl,2000x77,gmpz,344.62,338.50,338.24,344.44,b823c5f +shl,2000x77,inplace,764.85,741.47,741.55,712.63,b823c5f +shl,2000x77,kernel,850.08,850.43,852.17,849.89,b823c5f +shl,2000x77,kernelip,822.53,822.03,822.03,822.04,b823c5f +shl,131072x13,auto,98078.30,,,49870.58,b823c5f +shl,131072x13,inplace,43539.38,,,46566.96,b823c5f +shl,131072x13,kernel,72255.74,,,72220.57,b823c5f +shr,1x13,auto,10.27,8.19,8.20,8.37,b823c5f +shr,1x13,floor,2.28,2.27,2.27,2.27,b823c5f +shr,1x13,gmp,1.92,1.90,1.89,1.92,b823c5f +shr,1x13,gmpz,3.27,3.47,3.47,3.27,b823c5f +shr,1x13,inplace,3.65,3.30,3.88,3.08,b823c5f +shr,1x13,kernel,1.70,1.70,1.70,1.71,b823c5f +shr,4x13,auto,20.98,16.10,16.04,15.89,b823c5f +shr,4x13,floor,11.97,11.12,11.98,11.20,b823c5f +shr,4x13,gmp,2.33,2.33,2.34,2.34,b823c5f +shr,4x13,gmpz,3.97,4.22,3.98,3.96,b823c5f +shr,4x13,inplace,4.79,4.56,5.01,4.17,b823c5f +shr,4x13,kernel,3.48,3.50,3.47,3.48,b823c5f +shr,16x13,auto,25.93,19.97,19.96,20.24,b823c5f +shr,16x13,floor,17.07,15.60,17.09,15.52,b823c5f +shr,16x13,gmp,4.47,4.42,4.31,4.29,b823c5f +shr,16x13,gmpz,6.54,6.32,6.27,6.20,b823c5f +shr,16x13,inplace,8.97,8.68,8.96,8.17,b823c5f +shr,16x13,kernel,8.21,8.86,8.68,8.49,b823c5f +shr,256x13,auto,139.67,125.46,125.03,133.67,b823c5f +shr,256x13,floor,132.19,130.39,131.00,130.77,b823c5f +shr,256x13,gmp,48.97,47.84,48.11,48.14,b823c5f +shr,256x13,gmpz,51.61,50.70,50.77,51.22,b823c5f +shr,256x13,inplace,93.66,101.68,99.09,98.26,b823c5f +shr,256x13,kernel,111.61,110.50,110.05,110.53,b823c5f +shr,2000x13,auto,950.68,750.27,749.40,787.92,b823c5f +shr,2000x13,floor,832.56,832.01,832.82,832.07,b823c5f +shr,2000x13,gmp,339.02,335.77,336.01,337.50,b823c5f +shr,2000x13,gmpz,342.53,339.01,339.01,340.95,b823c5f +shr,2000x13,inplace,657.20,738.65,716.51,711.55,b823c5f +shr,2000x13,kernel,811.82,812.04,812.30,812.03,b823c5f +shr,2000x77,auto,1084.30,750.62,749.37,789.79,b823c5f +shr,2000x77,floor,850.69,852.61,851.92,850.65,b823c5f +shr,2000x77,gmp,338.57,336.33,335.94,337.20,b823c5f +shr,2000x77,gmpz,342.97,339.08,339.06,341.49,b823c5f +shr,2000x77,inplace,764.95,740.12,740.15,712.12,b823c5f +shr,2000x77,kernel,828.38,830.24,830.10,829.29,b823c5f +shr,131072x13,auto,98907.04,,,50326.83,b823c5f +shr,131072x13,inplace,43366.77,,,46564.96,b823c5f +shr,131072x13,kernel,76162.11,,,76197.05,b823c5f +sqr,4x4,auto,33.30,22.16,22.23,22.23,d689f75 +sqr,4x4,floor,16.91,16.79,16.77,16.77,d689f75 +sqr,4x4,gmp,5.81,5.79,5.83,5.83,d689f75 +sqr,4x4,gmpz,8.83,8.84,8.84,8.84,d689f75 +sqr,4x4,kernel,9.08,9.96,9.93,9.93,d689f75 +sqr,16x16,auto,80.08,66.36,67.31,67.31,d689f75 +sqr,16x16,floor,62.62,62.63,63.09,63.09,d689f75 +sqr,16x16,gmp,50.18,50.06,50.11,50.11,d689f75 +sqr,16x16,gmpz,52.53,52.70,52.09,52.09,d689f75 +sqr,16x16,kernel,56.22,57.22,57.84,57.84,d689f75 +sqr,64x64,auto,301.50,276.11,284.36,284.36,d689f75 +sqr,64x64,floor,281.26,285.86,280.56,280.56,d689f75 +sqr,64x64,gmp,560.45,559.34,557.57,557.57,d689f75 +sqr,64x64,gmpz,557.54,556.08,555.55,555.55,d689f75 +sqr,64x64,kernel,270.75,280.22,275.25,275.25,d689f75 +sqr,512x512,auto,10627.56,10582.06,10594.10,10594.10,d689f75 +sqr,512x512,floor,10570.73,10595.58,10609.64,10609.64,d689f75 +sqr,512x512,gmp,15100.15,15082.50,15093.97,15093.97,d689f75 +sqr,512x512,gmpz,15099.66,15072.50,15071.22,15071.22,d689f75 +sqr,512x512,kernel,10562.75,10559.16,10567.09,10567.09,d689f75 +sqr,2000x2000,auto,99937.58,98205.58,99323.21,99323.21,d689f75 +sqr,2000x2000,floor,99286.24,98126.13,98255.54,98255.54,d689f75 +sqr,2000x2000,gmp,100704.68,100652.01,100608.50,100608.50,d689f75 +sqr,2000x2000,gmpz,100650.48,100656.14,100598.48,100598.48,d689f75 +sqr,2000x2000,kernel,99291.30,98188.82,98528.98,98528.98,d689f75 +sub,1x1,auto,9.02,7.76,5.47,5.47,d689f75 +sub,1x1,floor,1.90,1.89,2.05,2.05,d689f75 +sub,1x1,gmp,2.27,2.27,2.27,2.27,d689f75 +sub,1x1,gmpz,4.34,4.34,4.34,4.34,d689f75 +sub,1x1,inplace,3.98,4.68,2.46,2.46,d689f75 +sub,1x1,kernel,1.51,1.51,1.51,1.51,d689f75 +sub,2x2,auto,19.12,15.79,15.66,15.66,d689f75 +sub,2x2,floor,10.00,10.01,9.84,9.84,d689f75 +sub,2x2,gmp,2.27,2.27,2.27,2.27,d689f75 +sub,2x2,gmpz,4.36,4.35,4.34,4.34,d689f75 +sub,2x2,inplace,4.63,5.11,4.83,4.83,d689f75 +sub,2x2,kernel,2.09,2.11,2.12,2.12,d689f75 +sub,4x4,auto,19.04,16.57,16.51,16.51,d689f75 +sub,4x4,floor,10.77,10.77,10.64,10.64,d689f75 +sub,4x4,gmp,2.49,2.57,2.55,2.55,d689f75 +sub,4x4,gmpz,4.62,4.60,4.58,4.58,d689f75 +sub,4x4,inplace,5.46,5.59,5.64,5.64,d689f75 +sub,4x4,kernel,2.87,2.84,2.84,2.84,d689f75 +sub,8x8,auto,20.61,17.96,18.10,18.10,d689f75 +sub,8x8,floor,12.38,12.40,12.21,12.21,d689f75 +sub,8x8,gmp,3.68,3.69,3.69,3.69,d689f75 +sub,8x8,gmpz,4.98,5.12,4.97,4.97,d689f75 +sub,8x8,inplace,7.22,6.96,7.32,7.32,d689f75 +sub,8x8,kernel,4.37,4.38,4.36,4.36,d689f75 +sub,16x16,auto,25.70,21.06,21.05,21.05,d689f75 +sub,16x16,floor,15.44,15.39,15.32,15.32,d689f75 +sub,16x16,gmp,5.73,5.50,5.50,5.50,d689f75 +sub,16x16,gmpz,6.79,6.81,6.80,6.80,d689f75 +sub,16x16,inplace,10.60,11.18,10.04,10.04,d689f75 +sub,16x16,kernel,8.03,8.02,7.46,7.46,d689f75 +sub,64x64,auto,65.89,58.77,45.33,45.33,d689f75 +sub,64x64,floor,42.14,42.22,42.27,42.27,d689f75 +sub,64x64,gmp,15.45,15.45,15.45,15.45,d689f75 +sub,64x64,gmpz,16.74,16.74,16.78,16.78,d689f75 +sub,64x64,inplace,37.66,47.14,34.58,34.58,d689f75 +sub,64x64,kernel,32.91,32.70,32.70,32.70,d689f75 +sub,256x256,auto,223.88,215.89,162.57,162.57,d689f75 +sub,256x256,floor,158.45,158.14,158.41,158.41,d689f75 +sub,256x256,gmp,78.23,78.24,78.24,78.24,d689f75 +sub,256x256,gmpz,79.87,79.84,79.86,79.86,d689f75 +sub,256x256,inplace,145.41,195.91,144.37,144.37,d689f75 +sub,256x256,kernel,142.84,142.45,142.45,142.45,d689f75 +sub,1024x1,auto,283.39,252.84,252.26,252.26,d689f75 +sub,1024x1,floor,593.16,592.65,593.23,593.23,d689f75 +sub,1024x1,gmp,233.64,233.22,233.46,233.46,d689f75 +sub,1024x1,gmpz,234.07,234.20,234.06,234.06,d689f75 +sub,1024x1,inplace,579.78,4.77,4.54,4.54,d689f75 +sub,1024x1,kernel,577.26,576.96,576.50,576.50,d689f75 +sub,1024x1024,auto,842.25,808.58,598.27,598.27,d689f75 +sub,1024x1024,floor,594.39,593.87,594.12,594.12,d689f75 +sub,1024x1024,gmp,390.09,389.76,389.83,389.83,d689f75 +sub,1024x1024,gmpz,392.17,391.22,391.20,391.20,d689f75 +sub,1024x1024,inplace,581.54,791.55,579.87,579.87,d689f75 +sub,1024x1024,kernel,578.22,577.78,577.76,577.76,d689f75 +sub,2000x2000,auto,1741.80,1549.24,1154.12,1154.12,d689f75 +sub,2000x2000,floor,1150.28,1149.14,1149.33,1149.33,d689f75 +sub,2000x2000,gmp,466.64,473.97,477.67,477.67,d689f75 +sub,2000x2000,gmpz,489.71,482.96,486.71,486.71,d689f75 +sub,2000x2000,inplace,1134.18,1519.97,1132.27,1132.27,d689f75 +sub,2000x2000,kernel,1132.39,1132.12,1131.77,1131.77,d689f75 +tochars,1x10,auto,14.68,,14.87,14.87,d689f75 +tochars,1x10,gmp,20.36,,20.16,20.16,d689f75 +tochars,1x10,gmpz,33.83,,33.86,33.86,d689f75 +tochars,1x10,kernel,63.20,,62.88,62.88,d689f75 +tochars,4x10,auto,134.06,,132.03,132.03,d689f75 +tochars,4x10,gmp,70.12,,70.23,70.23,d689f75 +tochars,4x10,gmpz,97.09,,97.60,97.60,d689f75 +tochars,4x10,kernel,180.98,,180.91,180.91,d689f75 +tochars,16x10,auto,1171.44,,1168.06,1168.06,d689f75 +tochars,16x10,gmp,503.67,,503.70,503.70,d689f75 +tochars,16x10,gmpz,590.00,,590.42,590.42,d689f75 +tochars,16x10,kernel,1039.05,,1032.73,1032.73,d689f75 +tochars,16x16,auto,120.09,,104.75,104.75,d689f75 +tochars,16x16,gmp,97.91,,98.80,98.80,d689f75 +tochars,16x16,gmpz,157.27,,157.75,157.75,d689f75 +tochars,64x10,auto,5622.48,,5695.35,5695.35,d689f75 +tochars,64x10,gmp,2665.88,,2665.86,2665.86,d689f75 +tochars,64x10,gmpz,2955.70,,2955.16,2955.16,d689f75 +tochars,64x10,kernel,5245.07,,5332.91,5332.91,d689f75 +tochars,256x10,auto,35873.38,,36990.15,36990.15,d689f75 +tochars,256x10,gmp,18584.43,,18578.85,18578.85,d689f75 +tochars,256x10,gmpz,19672.97,,19669.58,19669.58,d689f75 +tochars,256x10,kernel,34589.72,,35528.75,35528.75,d689f75 +tochars,2000x10,auto,608668.24,,620642.68,620642.68,d689f75 +tochars,2000x10,gmp,400290.87,,400888.47,400888.47,d689f75 +tochars,2000x10,gmpz,409111.46,,409231.54,409231.54,d689f75 +tochars,2000x10,kernel,584312.52,,597544.51,597544.51,d689f75 +tochars,2000x16,auto,13619.85,,11932.17,11932.17,d689f75 +tochars,2000x16,gmp,11111.97,,11111.39,11111.39,d689f75 +tochars,2000x16,gmpz,17926.81,,17928.44,17928.44,d689f75 +tochars,10000x10,auto,5864746.12,5879015.75,5960832.12,5960832.12,d689f75 +tochars,10000x10,gmp,4186340.50,4182821.50,4185719.20,4185719.20,d689f75 +tochars,10000x10,gmpz,4226138.30,4221163.20,4223942.60,4223942.60,d689f75 +tochars,10000x10,kernel,5844017.50,5846314.75,5920813.38,5920813.38,d689f75 diff --git a/tests/beman/big_int/perf/item1/mac_base64_seed1a.csv b/tests/beman/big_int/perf/item1/mac_base64_seed1a.csv deleted file mode 100644 index 32d28c4e..00000000 --- a/tests/beman/big_int/perf/item1/mac_base64_seed1a.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T16:55:49Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,3101985,9,6.54,6.46,20.61 -add,inplace,1,1,3233824,9,3.22,3.22,20.88 -add,kernel,1,1,17531050,9,1.14,1.14,20.02 -add,floor,1,1,2081933,9,9.45,9.43,19.77 -add,gmp,1,1,13188126,9,1.49,1.48,19.65 -add,gmpz,1,1,6725644,9,3.07,3.02,20.78 -add,auto,2,2,1327708,9,14.64,14.39,19.38 -add,inplace,2,2,2616211,9,3.74,3.72,19.64 -add,kernel,2,2,14214244,9,1.39,1.39,19.81 -add,floor,2,2,2020651,9,9.44,9.42,19.30 -add,gmp,2,2,9864181,9,1.99,1.96,19.54 -add,gmpz,2,2,5945857,9,6.69,3.25,37.22 -add,auto,4,4,1311621,9,15.36,15.10,20.45 -add,inplace,4,4,2690012,9,3.76,3.71,20.19 -add,kernel,4,4,10250683,9,1.95,1.93,19.96 -add,floor,4,4,1908978,9,10.21,10.15,19.67 -add,gmp,4,4,11528187,9,1.74,1.73,20.57 -add,gmpz,4,4,5683898,9,4.47,4.17,26.38 -add,auto,8,8,1288769,9,15.42,14.84,19.97 -add,inplace,8,8,2047580,9,4.90,4.87,20.11 -add,kernel,8,8,5722060,9,3.50,3.46,20.02 -add,floor,8,8,1707963,9,12.03,11.90,20.57 -add,gmp,8,8,8951187,9,2.24,2.23,20.53 -add,gmpz,8,8,3762332,9,5.23,5.04,19.59 -add,auto,16,16,1200108,9,16.32,16.26,19.61 -add,inplace,16,16,1031423,9,9.71,9.67,20.02 -add,kernel,16,16,2677780,9,7.56,7.47,20.26 -add,floor,16,16,1455178,9,13.45,13.42,19.63 -add,gmp,16,16,6187338,9,3.23,3.22,20.13 -add,gmpz,16,16,4964910,9,4.24,4.03,20.32 -add,auto,64,64,368498,9,54.45,54.16,20.04 -add,inplace,64,64,194047,9,51.23,50.09,19.81 -add,kernel,64,64,408261,9,49.14,47.91,20.10 -add,floor,64,64,314466,9,63.36,60.39,19.59 -add,gmp,64,64,1801024,9,11.18,11.07,20.12 -add,gmpz,64,64,1575421,9,12.93,12.88,20.42 -add,auto,256,256,133018,9,148.31,144.68,19.94 -add,inplace,256,256,41540,9,236.48,230.48,19.66 -add,kernel,256,256,85972,9,232.24,223.63,19.83 -add,floor,256,256,80628,9,245.68,237.93,19.76 -add,gmp,256,256,351901,9,57.16,56.84,20.12 -add,gmpz,256,256,344060,9,57.69,57.05,19.82 -add,auto,1024,1024,37079,9,552.37,532.70,20.38 -add,inplace,1024,1024,10238,9,974.52,948.72,19.87 -add,kernel,1024,1024,21346,9,966.64,940.31,20.94 -add,floor,1024,1024,20320,9,976.10,941.85,19.81 -add,gmp,1024,1024,79648,9,251.39,245.85,19.98 -add,gmpz,1024,1024,78559,9,253.11,246.46,19.79 -add,auto,2000,2000,19684,9,1117.23,1047.06,20.51 -add,inplace,2000,2000,4949,9,1907.99,1827.84,18.83 -add,kernel,2000,2000,10614,9,1894.00,1841.86,20.07 -add,floor,2000,2000,10535,9,1914.35,1857.04,20.17 -add,gmp,2000,2000,40403,9,495.04,486.50,19.98 -add,gmpz,2000,2000,40226,9,495.51,483.44,19.91 -add,auto,1024,1,108661,9,174.99,166.63,20.55 -add,inplace,1024,1,9834,9,968.66,940.76,19.03 -add,kernel,1024,1,27159,9,732.80,707.46,19.79 -add,floor,1024,1,26603,9,754.65,749.24,20.08 -add,gmp,1024,1,77730,9,261.08,254.07,20.27 -add,gmpz,1024,1,78397,9,261.89,257.44,20.49 -sub,auto,1,1,2673999,9,7.44,7.21,19.84 -sub,inplace,1,1,2984154,9,3.29,3.23,19.74 -sub,kernel,1,1,19489125,9,1.04,1.03,20.13 -sub,floor,1,1,11498669,9,1.74,1.74,19.99 -sub,gmp,1,1,13446394,9,1.49,1.48,20.02 -sub,gmpz,1,1,6704541,9,3.06,2.74,19.92 -sub,auto,2,2,1321798,9,15.05,14.60,19.92 -sub,inplace,2,2,3223607,9,3.47,3.10,21.47 -sub,kernel,2,2,14268439,9,1.39,1.39,19.86 -sub,floor,2,2,2116247,9,9.91,9.48,20.82 -sub,gmp,2,2,10085686,9,1.98,1.94,19.98 -sub,gmpz,2,2,6195408,9,3.24,3.20,21.07 -sub,auto,4,4,1174303,9,15.93,15.89,18.87 -sub,inplace,4,4,2607819,9,3.74,3.72,19.98 -sub,kernel,4,4,10304965,9,1.95,1.93,20.19 -sub,floor,4,4,1961906,9,10.18,9.94,20.10 -sub,gmp,4,4,11460016,9,1.74,1.73,19.97 -sub,gmpz,4,4,6708045,9,2.99,2.98,20.07 -sub,auto,8,8,1267273,9,15.52,15.44,19.70 -sub,inplace,8,8,2016283,9,5.20,4.89,20.73 -sub,kernel,8,8,5694240,9,3.51,3.50,20.04 -sub,floor,8,8,1748398,9,11.19,11.15,19.76 -sub,gmp,8,8,8856036,9,2.25,2.23,19.91 -sub,gmpz,8,8,5757032,9,3.48,3.46,20.02 -sub,auto,16,16,1103757,9,17.87,17.62,19.84 -sub,inplace,16,16,1067428,9,9.32,8.83,20.32 -sub,kernel,16,16,2591669,9,7.69,7.63,19.91 -sub,floor,16,16,1340528,9,14.90,14.66,20.07 -sub,gmp,16,16,6356177,9,3.23,3.07,20.20 -sub,gmpz,16,16,4499819,9,4.28,4.23,19.64 -sub,auto,64,64,489935,9,40.82,40.67,20.00 -sub,inplace,64,64,196661,9,50.58,48.98,19.83 -sub,kernel,64,64,405457,9,48.80,48.66,19.80 -sub,floor,64,64,330879,9,60.35,58.93,19.92 -sub,gmp,64,64,1756657,9,11.50,11.37,20.24 -sub,gmpz,64,64,1448313,9,13.86,13.77,20.12 -sub,auto,256,256,149965,9,132.54,131.69,20.10 -sub,inplace,256,256,42361,9,238.44,233.95,20.12 -sub,kernel,256,256,85185,9,233.30,227.18,19.75 -sub,floor,256,256,82471,9,242.46,237.61,19.96 -sub,gmp,256,256,349047,9,57.23,56.76,19.97 -sub,gmpz,256,256,347918,9,57.82,57.14,20.08 -sub,auto,1024,1024,36846,9,539.95,535.90,19.92 -sub,inplace,1024,1024,10180,9,983.69,971.13,19.99 -sub,kernel,1024,1024,20589,9,966.29,953.18,19.89 -sub,floor,1024,1024,20595,9,974.66,948.27,20.01 -sub,gmp,1024,1024,79633,9,251.89,247.44,20.01 -sub,gmpz,1024,1024,78658,9,253.60,248.23,19.88 -sub,auto,2000,2000,18068,9,1067.43,1008.32,19.37 -sub,inplace,2000,2000,5242,9,1918.51,1872.49,20.06 -sub,kernel,2000,2000,10474,9,1906.14,1850.36,19.89 -sub,floor,2000,2000,10610,9,1912.23,1869.65,20.27 -sub,gmp,2000,2000,40575,9,493.57,482.47,19.99 -sub,gmpz,2000,2000,41089,9,497.40,491.98,20.38 -sub,auto,1024,1,98013,9,212.83,200.02,21.04 -sub,inplace,1024,1,10352,9,967.09,938.76,19.97 -sub,kernel,1024,1,27373,9,735.83,732.80,20.17 -sub,floor,1024,1,26177,9,751.66,721.08,19.69 -sub,gmp,1024,1,77621,9,264.29,261.00,20.47 -sub,gmpz,1024,1,75798,9,263.92,259.88,19.93 -shl,auto,1,13,1167227,9,16.90,16.38,19.71 -shl,inplace,1,13,4396954,9,2.34,2.29,20.53 -shl,kernel,1,13,8862971,9,2.24,2.23,19.90 -shl,kernelip,1,13,5716825,9,1.77,1.75,20.25 -shl,floor,1,13,1830478,9,10.93,10.67,20.08 -shl,gmp,1,13,15934901,9,1.25,1.24,19.94 -shl,gmpz,1,13,10086044,9,1.98,1.98,20.03 -shl,auto,4,13,1043827,9,18.70,18.64,19.81 -shl,inplace,4,13,2781034,9,3.57,3.55,19.95 -shl,kernel,4,13,5329925,9,3.73,3.71,19.94 -shl,kernelip,4,13,2896863,9,3.38,3.33,19.67 -shl,floor,4,13,1515337,9,12.82,12.41,19.28 -shl,gmp,4,13,10124378,9,1.99,1.98,20.16 -shl,gmpz,4,13,7321834,9,2.73,2.72,20.00 -shl,auto,16,13,945455,9,21.77,21.34,20.55 -shl,inplace,16,13,1724641,9,5.79,5.77,20.00 -shl,kernel,16,13,4847096,9,4.16,4.12,20.12 -shl,kernelip,16,13,1354100,9,6.77,6.67,18.33 -shl,floor,16,13,1666442,9,11.84,11.78,19.85 -shl,gmp,16,13,5212579,9,3.47,3.47,18.12 -shl,gmpz,16,13,4123271,9,4.82,4.80,19.89 -shl,auto,256,13,231288,9,85.60,85.05,19.83 -shl,inplace,256,13,274928,9,36.30,36.20,19.96 -shl,kernel,256,13,406948,9,49.17,48.98,20.01 -shl,kernelip,256,13,202212,9,48.76,48.55,19.78 -shl,floor,256,13,343105,9,57.93,56.93,19.85 -shl,gmp,256,13,542966,9,36.91,36.81,20.06 -shl,gmpz,256,13,526456,9,37.81,37.75,19.96 -shl,auto,2000,13,31297,9,613.27,591.39,19.51 -shl,inplace,2000,13,35426,9,283.48,282.45,20.08 -shl,kernel,2000,13,52282,9,383.50,381.58,20.16 -shl,kernelip,2000,13,26641,9,376.01,375.14,20.09 -shl,floor,2000,13,49884,9,401.08,398.55,20.00 -shl,gmp,2000,13,25275,9,1593.99,857.18,32.22 -shl,gmpz,2000,13,9855,9,2653.56,1906.52,25.19 -shl,auto,2000,77,25277,9,786.27,754.66,20.14 -shl,inplace,2000,77,23764,9,425.10,423.91,20.27 -shl,kernel,2000,77,37883,9,528.23,517.58,19.97 -shl,kernelip,2000,77,19260,9,519.58,514.24,19.98 -shl,floor,2000,77,36957,9,542.09,535.93,20.07 -shl,gmp,2000,77,66641,9,292.55,286.50,19.61 -shl,gmpz,2000,77,69239,9,290.83,286.95,20.12 -shr,auto,1,13,2120926,9,9.42,8.92,19.69 -shr,inplace,1,13,4420450,9,2.36,2.26,20.69 -shr,kernel,1,13,8962368,9,2.23,2.23,20.03 -shr,floor,1,13,8060990,9,2.50,2.44,20.62 -shr,gmp,1,13,20000001,9,0.99,0.99,19.89 -shr,gmpz,1,13,10051378,9,2.00,1.98,20.20 -shr,auto,4,13,1101151,9,18.76,18.20,20.67 -shr,inplace,4,13,3079460,9,3.21,3.20,19.77 -shr,kernel,4,13,4953019,9,3.72,3.71,18.56 -shr,floor,4,13,1643441,9,12.14,11.41,19.59 -shr,gmp,4,13,11520642,9,1.74,1.73,20.05 -shr,gmpz,4,13,7325254,9,2.74,2.72,20.08 -shr,auto,16,13,945064,9,21.02,20.88,19.92 -shr,inplace,16,13,1989994,9,5.06,5.06,20.16 -shr,kernel,16,13,4795069,9,4.18,4.15,20.03 -shr,floor,16,13,1545972,9,13.04,12.92,20.14 -shr,gmp,16,13,6181564,9,3.23,3.22,19.98 -shr,gmpz,16,13,4719282,9,4.24,4.23,20.62 -shr,auto,256,13,230399,9,87.48,86.86,20.13 -shr,inplace,256,13,272606,9,35.93,35.68,19.60 -shr,kernel,256,13,300460,9,66.30,65.91,19.92 -shr,floor,256,13,265241,9,75.57,75.35,20.05 -shr,gmp,256,13,545597,9,36.74,36.61,20.05 -shr,gmpz,256,13,518888,9,38.44,38.06,20.04 -shr,auto,2000,13,29359,9,654.79,633.81,19.37 -shr,inplace,2000,13,35216,9,282.45,281.25,19.88 -shr,kernel,2000,13,39086,9,511.65,509.30,20.01 -shr,floor,2000,13,38558,9,524.47,519.66,20.22 -shr,gmp,2000,13,66443,9,304.11,290.75,20.31 -shr,gmpz,2000,13,67633,9,291.89,287.47,19.85 -shr,auto,2000,77,20755,9,1006.47,960.55,20.91 -shr,inplace,2000,77,23762,9,419.79,418.43,19.94 -shr,kernel,2000,77,38708,9,517.10,510.50,20.01 -shr,floor,2000,77,38001,9,526.08,524.83,20.00 -shr,gmp,2000,77,66183,9,291.01,289.69,19.41 -shr,gmpz,2000,77,67237,9,301.06,285.92,20.33 -mul,auto,1,1,1267626,9,17.24,15.20,21.45 -mul,gmp,1,1,5365101,9,3.73,3.71,20.02 -mul,gmpz,1,1,7238532,9,2.74,2.73,19.95 -mul,auto,2,2,726408,9,26.65,25.78,19.43 -mul,kernel,2,2,3118001,9,6.51,6.46,20.35 -mul,floor,2,2,1381441,9,14.92,14.82,20.67 -mul,gmp,2,2,4241011,9,4.73,4.71,20.09 -mul,gmpz,2,2,2901334,9,6.81,6.78,19.78 -mul,auto,3,3,667310,9,29.94,29.01,19.97 -mul,kernel,3,3,2410850,9,8.21,8.18,20.01 -mul,floor,3,3,1115893,9,17.53,16.83,19.30 -mul,gmp,3,3,3215476,9,6.09,6.07,19.72 -mul,gmpz,3,3,2249713,9,8.62,8.49,19.35 -mul,auto,4,4,676527,9,29.61,28.99,20.16 -mul,kernel,4,4,1800816,9,11.24,11.11,20.23 -mul,floor,4,4,1187921,9,16.80,16.66,20.00 -mul,gmp,4,4,2170987,9,9.00,8.94,19.64 -mul,gmpz,4,4,1829506,9,10.94,10.91,20.02 -mul,auto,6,6,607822,9,33.12,32.82,20.13 -mul,kernel,6,6,1040307,9,19.18,19.05,19.98 -mul,floor,6,6,794977,9,23.98,23.76,19.17 -mul,gmp,6,6,1398366,9,14.43,14.35,20.22 -mul,gmpz,6,6,1133646,9,18.12,17.88,20.70 -mul,auto,8,8,479545,9,41.55,41.20,20.11 -mul,kernel,8,8,868862,9,22.87,22.83,19.89 -mul,floor,8,8,664818,9,30.50,30.02,20.24 -mul,gmp,8,8,851257,9,22.77,22.02,19.74 -mul,gmpz,8,8,801405,9,26.18,25.11,21.12 -mul,auto,12,12,319739,9,62.65,61.69,19.98 -mul,kernel,12,12,482804,9,40.97,40.93,19.79 -mul,floor,12,12,404733,9,49.37,49.27,19.98 -mul,gmp,12,12,450728,9,44.30,44.17,19.96 -mul,gmpz,12,12,428854,9,46.64,46.34,20.01 -mul,auto,16,16,212198,9,94.59,94.11,20.06 -mul,kernel,16,16,287632,9,69.84,69.45,20.31 -mul,floor,16,16,251318,9,78.78,78.52,19.79 -mul,gmp,16,16,258745,9,77.44,77.15,20.08 -mul,gmpz,16,16,252999,9,79.02,78.86,20.04 -mul,auto,32,32,66654,9,298.15,297.75,19.93 -mul,kernel,32,32,76816,9,258.51,258.15,19.87 -mul,floor,32,32,68269,9,279.73,279.00,19.15 -mul,gmp,32,32,74367,9,270.72,268.33,20.13 -mul,gmpz,32,32,73964,9,270.70,270.19,20.04 -mul,auto,64,64,19035,9,1037.09,1035.45,19.78 -mul,kernel,64,64,20325,9,981.98,980.30,19.98 -mul,floor,64,64,19376,9,1019.25,1011.76,19.73 -mul,gmp,64,64,25695,9,775.04,773.38,19.94 -mul,gmpz,64,64,25739,9,776.85,773.93,20.04 -mul,auto,128,128,5464,9,3640.81,3622.05,19.93 -mul,kernel,128,128,5593,9,3576.78,3550.08,19.98 -mul,floor,128,128,5596,9,3615.90,3571.93,20.36 -mul,gmp,128,128,7625,9,2638.89,2625.43,20.11 -mul,gmpz,128,128,7559,9,2645.09,2635.94,20.00 -mul,auto,256,256,1692,9,11845.35,11806.61,20.07 -mul,kernel,256,256,1706,9,11742.11,11718.08,20.06 -mul,floor,256,256,1702,9,11765.77,11718.88,20.11 -mul,gmp,256,256,2533,9,7925.11,7810.40,20.06 -mul,gmpz,256,256,2554,9,7853.77,7805.58,20.07 -mul,auto,512,512,541,9,37229.74,36895.64,20.15 -mul,kernel,512,512,542,9,36931.66,36812.19,20.01 -mul,floor,512,512,544,9,36904.26,36678.39,20.10 -mul,gmp,512,512,1051,9,19028.78,18950.09,20.02 -mul,gmpz,512,512,1053,9,19011.55,18986.70,20.13 -mul,auto,1000,1000,187,9,106996.21,106483.51,20.02 -mul,kernel,1000,1000,188,9,106689.94,106552.75,20.07 -mul,floor,1000,1000,170,9,106782.84,106488.73,18.42 -mul,gmp,1000,1000,361,9,55094.76,54762.12,19.88 -mul,gmpz,1000,1000,364,9,54882.21,54779.30,19.99 -mul,auto,2000,2000,67,9,302050.37,301316.55,20.26 -mul,kernel,2000,2000,67,9,301473.88,298654.24,20.22 -mul,floor,2000,2000,67,9,304617.54,298598.88,20.33 -mul,gmp,2000,2000,136,9,148208.95,147819.85,20.17 -mul,gmpz,2000,2000,136,9,148623.47,148127.15,20.22 -mul,auto,2000,100,427,9,46991.61,46775.18,20.10 -mul,kernel,2000,100,427,9,46681.30,46543.03,19.93 -mul,floor,2000,100,427,9,46713.60,46604.61,20.26 -mul,gmp,2000,100,541,9,35051.45,34950.17,18.96 -mul,gmpz,2000,100,579,9,34658.10,34529.51,20.08 -sqr,auto,4,4,674993,9,29.43,29.32,19.99 -sqr,kernel,4,4,1762749,9,11.23,10.91,19.67 -sqr,floor,4,4,1211080,9,16.46,16.38,20.01 -sqr,gmp,4,4,2919987,9,6.69,6.46,19.53 -sqr,gmpz,4,4,2113222,9,9.68,9.46,20.29 -sqr,auto,16,16,225294,9,88.95,88.67,20.05 -sqr,kernel,16,16,319507,9,62.02,61.50,19.80 -sqr,floor,16,16,259680,9,71.38,70.94,18.56 -sqr,gmp,16,16,314932,9,61.34,59.10,19.53 -sqr,gmpz,16,16,299462,9,66.73,65.17,19.94 -sqr,auto,64,64,31957,9,627.29,625.23,20.10 -sqr,kernel,64,64,33975,9,587.86,581.52,19.93 -sqr,floor,64,64,33348,9,601.67,598.29,20.06 -sqr,gmp,64,64,29613,9,662.67,655.17,19.70 -sqr,gmpz,64,64,29573,9,676.27,656.14,19.90 -sqr,auto,512,512,816,9,24605.39,24290.85,20.03 -sqr,kernel,512,512,810,9,24275.77,24097.58,19.65 -sqr,floor,512,512,823,9,24416.16,24218.56,20.24 -sqr,gmp,512,512,1226,9,16469.62,16260.40,20.15 -sqr,gmpz,512,512,1018,9,19683.98,19449.12,20.03 -sqr,auto,2000,2000,89,9,224819.75,223413.39,20.05 -sqr,kernel,2000,2000,91,9,222940.93,221290.30,20.28 -sqr,floor,2000,2000,90,9,222926.39,222166.21,20.08 -sqr,gmp,2000,2000,166,9,120932.98,120406.12,20.07 -sqr,gmpz,2000,2000,166,9,120191.77,119299.95,19.97 -divrem,auto,2,1,644316,9,31.25,30.53,20.09 -divrem,kernel,2,1,3586841,9,5.61,5.59,20.13 -divrem,floor,2,1,1444947,9,13.88,13.43,20.07 -divrem,gmp,2,1,4009877,9,5.01,4.97,20.11 -divrem,gmpz,2,1,2275480,9,8.79,8.76,20.04 -divrem,auto,8,4,216804,9,91.84,91.21,19.90 -divrem,kernel,8,4,491042,9,41.11,40.29,20.20 -divrem,floor,8,4,354115,9,56.63,55.87,20.03 -divrem,gmp,8,4,496720,9,39.71,39.39,19.76 -divrem,gmpz,8,4,462473,9,43.01,42.31,19.81 -divrem,auto,32,16,42559,9,482.41,479.48,20.51 -divrem,kernel,32,16,50689,9,390.72,377.90,19.77 -divrem,floor,32,16,47773,9,409.84,398.00,19.53 -divrem,gmp,32,16,96344,9,207.37,202.25,20.03 -divrem,gmpz,32,16,95325,9,210.10,206.30,19.95 -divrem,auto,128,64,5347,9,3727.10,3632.75,19.90 -divrem,kernel,128,64,5614,9,3575.71,3510.39,20.12 -divrem,floor,128,64,5500,9,3619.45,3507.24,19.78 -divrem,gmp,128,64,11213,9,1780.39,1755.13,19.94 -divrem,gmpz,128,64,11202,9,1784.44,1777.44,20.20 -divrem,auto,512,256,674,9,29646.02,29401.46,20.02 -divrem,kernel,512,256,682,9,29333.09,28986.19,20.00 -divrem,floor,512,256,680,9,29383.27,29004.47,19.96 -divrem,gmp,512,256,1218,9,16331.38,16205.63,19.90 -divrem,gmpz,512,256,1229,9,16322.01,16210.30,20.07 -divrem,auto,2000,1000,87,9,232143.68,231034.00,20.24 -divrem,kernel,2000,1000,87,9,231181.52,228812.74,20.10 -divrem,floor,2000,1000,87,9,232943.97,229001.44,20.23 -divrem,gmp,2000,1000,147,9,136199.54,135286.84,20.11 -divrem,gmpz,2000,1000,150,9,134395.83,134126.39,20.20 -divrem,auto,4000,2000,30,9,685144.47,680165.30,20.55 -divrem,kernel,4000,2000,30,9,683731.93,678752.77,20.53 -divrem,floor,4000,2000,30,9,684095.83,680309.70,20.52 -divrem,gmp,4000,2000,59,9,343073.44,342485.88,20.38 -divrem,gmpz,4000,2000,59,9,344240.12,342995.76,20.32 -divrem,auto,2000,100,212,9,95012.58,94620.48,20.17 -divrem,kernel,2000,100,215,9,93850.58,93565.31,20.18 -divrem,floor,2000,100,213,9,93921.75,93312.99,19.99 -divrem,gmp,2000,100,288,9,69325.95,69050.06,19.99 -divrem,gmpz,2000,100,288,9,69379.77,68751.88,20.11 -divrem,auto,65536,1,82,9,243146.34,241600.61,20.22 -divrem,kernel,65536,1,86,9,226987.41,225219.00,19.56 -divrem,floor,65536,1,80,9,228992.71,226743.75,18.79 -divrem,gmp,65536,1,118,9,170146.54,163618.64,19.91 -divrem,gmpz,65536,1,119,9,169908.96,165580.18,20.11 -fromchars,auto,4,10,217178,9,92.60,90.69,20.01 -fromchars,kernel,4,10,632516,9,32.56,31.89,20.52 -fromchars,gmp,4,10,645825,9,30.60,29.97,19.78 -fromchars,gmpz,4,10,269586,9,76.25,74.16,20.46 -fromchars,auto,16,10,52404,9,380.65,371.30,19.91 -fromchars,kernel,16,10,101976,9,193.68,189.84,19.71 -fromchars,gmp,16,10,141015,9,142.82,139.76,20.06 -fromchars,gmpz,16,10,63264,9,315.94,313.12,20.02 -fromchars,auto,64,10,9096,9,2187.34,2160.55,19.89 -fromchars,kernel,64,10,10770,9,1856.78,1814.81,20.05 -fromchars,gmp,64,10,20926,9,955.21,946.64,20.03 -fromchars,gmpz,64,10,12467,9,1604.67,1587.43,20.00 -fromchars,auto,256,10,1442,9,13821.92,13694.09,19.92 -fromchars,kernel,256,10,1727,9,11575.20,11495.90,19.98 -fromchars,gmp,256,10,2526,9,8001.35,7935.21,20.21 -fromchars,gmpz,256,10,1878,9,10627.57,10564.52,20.10 -fromchars,auto,2000,10,67,9,301437.18,299575.87,20.32 -fromchars,kernel,2000,10,71,9,282810.45,281894.94,20.07 -fromchars,gmp,2000,10,109,9,183594.04,183052.75,20.01 -fromchars,gmpz,2000,10,99,9,204882.15,203244.95,20.38 diff --git a/tests/beman/big_int/perf/item1/mac_base64_seed1b.csv b/tests/beman/big_int/perf/item1/mac_base64_seed1b.csv deleted file mode 100644 index a0b46064..00000000 --- a/tests/beman/big_int/perf/item1/mac_base64_seed1b.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T16:58:49Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2879648,9,6.95,6.92,20.09 -add,inplace,1,1,3222015,9,3.11,3.10,20.27 -add,kernel,1,1,17545028,9,1.15,1.14,20.21 -add,floor,1,1,2111876,9,9.51,9.45,20.18 -add,gmp,1,1,13499431,9,1.49,1.48,20.14 -add,gmpz,1,1,6621649,9,3.53,2.98,23.83 -add,auto,2,2,1346668,9,14.47,14.40,19.69 -add,inplace,2,2,2422171,9,4.19,4.10,20.30 -add,kernel,2,2,14383444,9,1.39,1.39,20.01 -add,floor,2,2,2071243,9,9.92,9.69,20.47 -add,gmp,2,2,10694398,9,1.74,1.73,18.62 -add,gmpz,2,2,6720650,9,3.61,2.98,29.01 -add,auto,4,4,1321552,9,15.14,15.10,20.01 -add,inplace,4,4,2598134,9,3.60,3.59,18.93 -add,kernel,4,4,10329950,9,1.91,1.91,19.79 -add,floor,4,4,1911765,9,10.43,10.38,19.99 -add,gmp,4,4,11518773,9,1.74,1.73,20.79 -add,gmpz,4,4,4796431,9,4.93,4.03,20.99 -add,auto,8,8,1263275,9,15.57,15.50,19.69 -add,inplace,8,8,1940896,9,4.93,4.91,19.20 -add,kernel,8,8,5691849,9,3.50,3.47,19.91 -add,floor,8,8,1701037,9,11.93,11.90,20.35 -add,gmp,8,8,8963506,9,2.24,2.23,20.32 -add,gmpz,8,8,5224360,9,4.44,3.80,20.90 -add,auto,16,16,1206916,9,16.33,16.30,19.75 -add,inplace,16,16,1040599,9,9.62,9.57,20.03 -add,kernel,16,16,2647620,9,7.55,7.50,20.02 -add,floor,16,16,1438133,9,13.68,13.59,19.76 -add,gmp,16,16,6190678,9,3.26,3.23,20.14 -add,gmpz,16,16,4829844,9,4.50,4.50,21.88 -add,auto,64,64,352141,9,54.63,54.19,19.48 -add,inplace,64,64,193235,9,51.55,49.95,19.88 -add,kernel,64,64,404533,9,49.42,49.26,19.99 -add,floor,64,64,331851,9,61.21,60.10,20.22 -add,gmp,64,64,1699425,9,11.40,11.09,19.42 -add,gmpz,64,64,1544089,9,12.92,12.85,19.96 -add,auto,256,256,136034,9,146.12,144.66,19.87 -add,inplace,256,256,41223,9,239.49,234.26,19.71 -add,kernel,256,256,84555,9,235.28,231.61,20.11 -add,floor,256,256,80360,9,245.01,237.37,19.65 -add,gmp,256,256,352497,9,56.93,56.18,20.04 -add,gmpz,256,256,347044,9,57.96,57.58,20.13 -add,auto,1024,1024,35427,9,573.64,548.22,20.26 -add,inplace,1024,1024,10073,9,983.99,967.51,19.83 -add,kernel,1024,1024,20394,9,972.61,938.05,19.75 -add,floor,1024,1024,21046,9,982.68,965.15,20.72 -add,gmp,1024,1024,79413,9,251.71,249.14,19.97 -add,gmpz,1024,1024,78508,9,256.15,250.13,20.07 -add,auto,2000,2000,18806,9,1085.68,1014.88,20.38 -add,inplace,2000,2000,5144,9,1942.85,1884.21,19.90 -add,kernel,2000,2000,10294,9,1920.52,1887.23,19.73 -add,floor,2000,2000,10313,9,1939.05,1879.86,19.90 -add,gmp,2000,2000,40576,9,494.76,490.43,20.07 -add,gmpz,2000,2000,40176,9,496.45,492.46,19.93 -add,auto,1024,1,114937,9,168.25,167.27,19.45 -add,inplace,1024,1,10164,9,978.30,929.66,19.71 -add,kernel,1024,1,27395,9,732.35,710.91,19.99 -add,floor,1024,1,26565,9,752.06,751.39,19.99 -add,gmp,1024,1,75867,9,263.46,258.35,19.97 -add,gmpz,1024,1,75319,9,264.83,258.58,19.86 -sub,auto,1,1,2600864,9,7.68,7.60,19.95 -sub,inplace,1,1,2983392,9,3.35,3.23,19.82 -sub,kernel,1,1,19243585,9,1.04,1.03,19.90 -sub,floor,1,1,11513805,9,1.74,1.74,20.01 -sub,gmp,1,1,13513040,9,1.49,1.49,20.16 -sub,gmpz,1,1,7251369,9,2.89,2.74,20.64 -sub,auto,2,2,1325846,9,14.79,14.64,19.63 -sub,inplace,2,2,3037216,9,3.35,3.10,20.09 -sub,kernel,2,2,14141771,9,1.40,1.39,19.86 -sub,floor,2,2,2104201,9,9.30,9.24,19.66 -sub,gmp,2,2,11538120,9,1.74,1.74,20.18 -sub,gmpz,2,2,6715782,9,2.98,2.97,20.00 -sub,auto,4,4,1258053,9,15.89,15.66,19.95 -sub,inplace,4,4,2778605,9,3.60,3.59,20.06 -sub,kernel,4,4,10256943,9,1.94,1.93,19.95 -sub,floor,4,4,2059610,9,9.95,9.50,20.24 -sub,gmp,4,4,11500983,9,1.74,1.73,19.97 -sub,gmpz,4,4,6690109,9,2.98,2.98,19.97 -sub,auto,8,8,1234839,9,16.47,16.44,20.34 -sub,inplace,8,8,1910803,9,4.97,4.91,19.20 -sub,kernel,8,8,5712003,9,3.50,3.49,20.02 -sub,floor,8,8,1753491,9,11.44,11.39,20.22 -sub,gmp,8,8,8933713,9,2.24,2.23,21.12 -sub,gmpz,8,8,5755041,9,3.54,3.48,20.40 -sub,auto,16,16,1087336,9,18.20,18.09,19.83 -sub,inplace,16,16,1125651,9,12.60,8.88,20.11 -sub,kernel,16,16,2593606,9,7.71,7.64,20.02 -sub,floor,16,16,1333915,9,15.16,14.41,19.99 -sub,gmp,16,16,6107127,9,3.24,3.11,19.59 -sub,gmpz,16,16,4652313,9,4.26,4.23,20.02 -sub,auto,64,64,487832,9,41.12,41.08,20.49 -sub,inplace,64,64,195619,9,51.03,50.21,19.97 -sub,kernel,64,64,415193,9,49.36,48.61,20.43 -sub,floor,64,64,330979,9,60.72,59.74,20.05 -sub,gmp,64,64,1741419,9,11.40,11.30,19.87 -sub,gmpz,64,64,1449948,9,13.85,13.59,20.03 -sub,auto,256,256,150473,9,132.88,131.79,20.03 -sub,inplace,256,256,41774,9,239.51,232.09,19.95 -sub,kernel,256,256,84384,9,237.90,235.45,20.06 -sub,floor,256,256,81655,9,244.43,236.90,19.88 -sub,gmp,256,256,354546,9,57.26,57.09,20.39 -sub,gmpz,256,256,342188,9,57.75,57.23,19.75 -sub,auto,1024,1024,37511,9,551.41,536.74,20.89 -sub,inplace,1024,1024,10130,9,985.65,974.41,19.95 -sub,kernel,1024,1024,20904,9,973.45,930.91,20.21 -sub,floor,1024,1024,20191,9,975.70,947.55,19.67 -sub,gmp,1024,1024,79496,9,251.65,247.72,19.96 -sub,gmpz,1024,1024,78220,9,253.50,250.38,19.80 -sub,auto,2000,2000,19926,9,1079.78,1031.23,21.45 -sub,inplace,2000,2000,4994,9,1939.87,1881.27,19.41 -sub,kernel,2000,2000,10372,9,1920.95,1856.77,19.83 -sub,floor,2000,2000,10251,9,1926.52,1880.66,19.72 -sub,gmp,2000,2000,40456,9,494.75,489.37,19.99 -sub,gmpz,2000,2000,40669,9,498.66,491.62,20.26 -sub,auto,1024,1,98120,9,203.89,200.28,20.00 -sub,inplace,1024,1,10219,9,974.00,947.16,19.82 -sub,kernel,1024,1,28076,9,731.71,713.64,20.50 -sub,floor,1024,1,27017,9,754.16,735.53,20.34 -sub,gmp,1024,1,77490,9,263.08,259.17,20.41 -sub,gmpz,1024,1,75405,9,265.51,262.10,20.00 -shl,auto,1,13,1202803,9,16.46,16.34,19.80 -shl,inplace,1,13,4404756,9,2.31,2.29,20.33 -shl,kernel,1,13,8856605,9,2.24,2.23,19.82 -shl,kernelip,1,13,5845373,9,1.75,1.73,20.45 -shl,floor,1,13,1756037,9,11.41,11.20,20.00 -shl,gmp,1,13,16118229,9,1.24,1.23,20.07 -shl,gmpz,1,13,10059850,9,1.99,1.98,19.99 -shl,auto,4,13,1066391,9,18.98,18.60,20.11 -shl,inplace,4,13,2816416,9,3.57,3.54,20.25 -shl,kernel,4,13,5109210,9,3.73,3.72,19.07 -shl,kernelip,4,13,2763484,9,3.36,3.34,18.57 -shl,floor,4,13,1453109,9,12.63,12.41,18.77 -shl,gmp,4,13,10062817,9,1.99,1.98,19.78 -shl,gmpz,4,13,7320952,9,2.73,2.73,20.05 -shl,auto,16,13,964753,9,21.61,20.75,20.72 -shl,inplace,16,13,1728758,9,5.79,5.78,20.04 -shl,kernel,16,13,4893191,9,4.08,4.06,19.96 -shl,kernelip,16,13,1375747,9,6.84,6.65,18.90 -shl,floor,16,13,1668789,9,11.96,11.70,19.92 -shl,gmp,16,13,5368225,9,3.48,3.47,18.66 -shl,gmpz,16,13,3865829,9,5.15,5.07,19.87 -shl,auto,256,13,232578,9,85.91,85.48,20.05 -shl,inplace,256,13,271214,9,36.38,36.25,19.73 -shl,kernel,256,13,406893,9,49.20,49.03,20.04 -shl,kernelip,256,13,204811,9,48.73,48.40,19.95 -shl,floor,256,13,348933,9,57.58,57.23,20.13 -shl,gmp,256,13,543548,9,36.93,36.89,20.09 -shl,gmpz,256,13,524026,9,37.78,37.73,19.81 -shl,auto,2000,13,32238,9,664.00,640.07,21.60 -shl,inplace,2000,13,35449,9,282.59,281.86,20.06 -shl,kernel,2000,13,51535,9,383.89,382.81,19.84 -shl,kernelip,2000,13,26574,9,376.70,374.54,20.02 -shl,floor,2000,13,49693,9,400.16,397.88,20.08 -shl,gmp,2000,13,42395,9,1315.54,782.78,41.88 -shl,gmpz,2000,13,15706,9,1877.57,1297.57,26.80 -shl,auto,2000,77,25498,9,759.95,719.55,19.35 -shl,inplace,2000,77,23700,9,424.54,421.36,20.09 -shl,kernel,2000,77,37986,9,527.11,523.38,20.02 -shl,kernelip,2000,77,19214,9,521.82,515.01,20.18 -shl,floor,2000,77,36430,9,542.43,540.27,19.78 -shl,gmp,2000,77,68487,9,292.19,287.11,20.04 -shl,gmpz,2000,77,65960,9,294.77,287.86,19.68 -shr,auto,1,13,2127401,9,9.21,9.17,20.02 -shr,inplace,1,13,4185613,9,2.27,2.23,19.25 -shr,kernel,1,13,8942228,9,2.23,2.22,20.00 -shr,floor,1,13,8042952,9,2.49,2.45,20.74 -shr,gmp,1,13,20000001,9,0.99,0.99,19.86 -shr,gmpz,1,13,10076172,9,1.99,1.98,20.11 -shr,auto,4,13,1121084,9,17.38,17.22,19.56 -shr,inplace,4,13,3098949,9,3.25,3.20,20.25 -shr,kernel,4,13,5641047,9,3.50,3.48,20.19 -shr,floor,4,13,1677394,9,12.09,11.60,20.23 -shr,gmp,4,13,11571960,9,1.74,1.74,20.13 -shr,gmpz,4,13,7322264,9,2.73,2.72,19.99 -shr,auto,16,13,945415,9,20.96,20.74,19.89 -shr,inplace,16,13,1987848,9,5.06,5.04,20.13 -shr,kernel,16,13,4811169,9,4.17,4.15,20.08 -shr,floor,16,13,1563499,9,12.92,12.71,20.19 -shr,gmp,16,13,6197024,9,3.23,3.22,20.05 -shr,gmpz,16,13,4720330,9,4.23,4.22,19.98 -shr,auto,256,13,229669,9,87.05,86.61,20.01 -shr,inplace,256,13,278851,9,36.14,35.71,20.10 -shr,kernel,256,13,301284,9,66.37,65.95,19.99 -shr,floor,256,13,276820,9,78.24,77.54,21.64 -shr,gmp,256,13,541425,9,36.84,36.67,19.95 -shr,gmpz,256,13,525367,9,38.06,37.90,20.00 -shr,auto,2000,13,32278,9,722.35,649.23,21.95 -shr,inplace,2000,13,35047,9,282.06,281.25,19.79 -shr,kernel,2000,13,39035,9,512.93,510.77,20.08 -shr,floor,2000,13,38170,9,529.96,523.84,20.28 -shr,gmp,2000,13,67574,9,309.15,291.01,21.41 -shr,gmpz,2000,13,69905,9,301.97,291.28,21.00 -shr,auto,2000,77,19116,9,1060.90,1011.13,20.23 -shr,inplace,2000,77,23876,9,419.74,417.38,20.05 -shr,kernel,2000,77,38561,9,518.49,513.92,20.01 -shr,floor,2000,77,37659,9,530.79,519.55,20.20 -shr,gmp,2000,77,68889,9,292.12,290.42,19.99 -shr,gmpz,2000,77,68483,9,292.66,285.65,19.95 -mul,auto,1,1,1301000,9,15.45,15.18,20.39 -mul,gmp,1,1,5254568,9,3.73,3.72,19.73 -mul,gmpz,1,1,7315641,9,2.73,2.73,19.98 -mul,auto,2,2,683282,9,32.56,29.28,19.79 -mul,kernel,2,2,3058653,9,6.63,6.36,20.07 -mul,floor,2,2,1360330,9,14.72,14.63,20.21 -mul,gmp,2,2,4457986,9,4.47,4.46,19.92 -mul,gmpz,2,2,3139627,9,6.49,6.20,20.09 -mul,auto,3,3,656860,9,30.86,29.83,20.08 -mul,kernel,3,3,2373591,9,8.43,8.43,20.05 -mul,floor,3,3,1201269,9,16.84,16.70,20.40 -mul,gmp,3,3,3225521,9,6.07,6.06,19.77 -mul,gmpz,3,3,2291981,9,8.27,8.12,19.07 -mul,auto,4,4,664766,9,29.38,28.97,19.53 -mul,kernel,4,4,1787775,9,11.19,10.87,19.97 -mul,floor,4,4,1163720,9,17.19,16.90,19.95 -mul,gmp,4,4,2237187,9,9.01,8.94,20.35 -mul,gmpz,4,4,1858090,9,10.92,9.77,19.89 -mul,auto,6,6,282964,9,68.79,67.94,19.43 -mul,kernel,6,6,1042182,9,19.06,18.93,19.95 -mul,floor,6,6,794268,9,24.27,23.49,19.40 -mul,gmp,6,6,1390434,9,14.45,14.29,20.09 -mul,gmpz,6,6,369659,9,53.23,52.45,19.70 -mul,auto,8,8,469812,9,42.23,41.92,19.92 -mul,kernel,8,8,872632,9,22.87,22.82,19.95 -mul,floor,8,8,661223,9,30.37,30.21,20.13 -mul,gmp,8,8,886610,9,22.96,22.45,20.35 -mul,gmpz,8,8,770299,9,26.00,24.05,19.79 -mul,auto,12,12,324517,9,61.60,61.53,20.01 -mul,kernel,12,12,488732,9,41.03,40.88,20.26 -mul,floor,12,12,407903,9,49.21,48.91,20.06 -mul,gmp,12,12,431480,9,44.24,44.14,19.13 -mul,gmpz,12,12,428789,9,46.49,46.23,19.95 -mul,auto,16,16,212699,9,95.40,95.11,20.31 -mul,kernel,16,16,287049,9,69.65,69.50,20.05 -mul,floor,16,16,255041,9,78.36,78.18,19.99 -mul,gmp,16,16,262082,9,77.34,77.10,20.28 -mul,gmpz,16,16,255551,9,78.34,78.28,20.04 -mul,auto,32,32,67090,9,297.59,295.14,19.94 -mul,kernel,32,32,77512,9,258.62,257.74,20.04 -mul,floor,32,32,71655,9,278.66,278.24,19.99 -mul,gmp,32,32,73726,9,271.91,271.02,20.24 -mul,gmpz,32,32,73324,9,271.68,267.93,19.87 -mul,auto,64,64,19241,9,1043.97,1032.18,20.06 -mul,kernel,64,64,20305,9,981.57,979.93,19.97 -mul,floor,64,64,19775,9,1011.13,1009.14,20.05 -mul,gmp,64,64,25856,9,774.52,772.97,20.04 -mul,gmpz,64,64,25577,9,778.23,774.52,19.89 -mul,auto,128,128,5518,9,3625.11,3616.43,20.01 -mul,kernel,128,128,5614,9,3560.47,3555.94,20.01 -mul,floor,128,128,5599,9,3576.52,3567.30,20.04 -mul,gmp,128,128,7438,9,2677.44,2640.19,19.82 -mul,gmpz,128,128,7418,9,2642.18,2634.31,19.62 -mul,auto,256,256,1685,9,11820.52,11793.74,19.95 -mul,kernel,256,256,1695,9,11767.31,11731.74,19.96 -mul,floor,256,256,1707,9,11751.24,11730.94,20.08 -mul,gmp,256,256,2546,9,7881.14,7839.47,20.12 -mul,gmpz,256,256,2550,9,7834.95,7822.35,20.01 -mul,auto,512,512,541,9,37116.07,36979.74,20.13 -mul,kernel,512,512,541,9,36879.16,36748.07,20.11 -mul,floor,512,512,542,9,36926.74,36756.69,20.02 -mul,gmp,512,512,934,9,21328.11,21217.57,19.92 -mul,gmpz,512,512,1050,9,19025.20,18943.77,19.96 -mul,auto,1000,1000,184,9,107259.74,106839.45,19.75 -mul,kernel,1000,1000,188,9,106846.19,106535.46,20.11 -mul,floor,1000,1000,188,9,107181.96,106667.55,20.20 -mul,gmp,1000,1000,360,9,55513.43,55071.18,19.96 -mul,gmpz,1000,1000,365,9,55168.61,54828.42,20.15 -mul,auto,2000,2000,67,9,301931.58,299790.43,20.22 -mul,kernel,2000,2000,67,9,301205.84,299109.45,20.17 -mul,floor,2000,2000,67,9,301959.57,300924.76,20.22 -mul,gmp,2000,2000,136,9,148371.32,147742.96,20.20 -mul,gmpz,2000,2000,135,9,148101.24,147249.39,19.99 -mul,auto,2000,100,428,9,46853.49,46776.58,20.08 -mul,kernel,2000,100,422,9,46908.37,46638.13,19.78 -mul,floor,2000,100,428,9,46833.43,46629.87,20.43 -mul,gmp,2000,100,571,9,35096.25,34924.33,20.07 -mul,gmpz,2000,100,574,9,34780.63,34573.75,19.95 -sqr,auto,4,4,654571,9,30.67,28.87,19.87 -sqr,kernel,4,4,1765259,9,11.39,11.22,20.34 -sqr,floor,4,4,1222787,9,16.19,16.14,19.82 -sqr,gmp,4,4,2879677,9,6.95,6.92,20.03 -sqr,gmpz,4,4,2062969,9,9.19,9.17,19.19 -sqr,auto,16,16,217217,9,91.77,90.92,20.28 -sqr,kernel,16,16,317023,9,63.65,62.55,20.10 -sqr,floor,16,16,277957,9,71.80,69.54,19.84 -sqr,gmp,16,16,322398,9,62.08,61.50,19.98 -sqr,gmpz,16,16,300124,9,65.88,65.39,20.10 -sqr,auto,64,64,32080,9,626.01,623.66,20.09 -sqr,kernel,64,64,34540,9,579.78,579.11,20.04 -sqr,floor,64,64,33420,9,600.44,597.51,20.08 -sqr,gmp,64,64,29680,9,670.66,667.53,19.92 -sqr,gmpz,64,64,29435,9,679.48,675.57,20.02 -sqr,auto,512,512,806,9,24553.45,24431.09,19.92 -sqr,kernel,512,512,825,9,24355.20,24183.23,20.08 -sqr,floor,512,512,814,9,24343.72,24165.44,19.80 -sqr,gmp,512,512,1093,9,18287.59,18112.42,19.96 -sqr,gmpz,512,512,1018,9,19650.34,19437.50,20.03 -sqr,auto,2000,2000,90,9,223452.78,222993.06,20.13 -sqr,kernel,2000,2000,90,9,222750.92,222556.01,20.06 -sqr,floor,2000,2000,91,9,223341.12,222733.05,20.33 -sqr,gmp,2000,2000,165,9,120859.60,119171.97,19.90 -sqr,gmpz,2000,2000,167,9,120576.35,120203.09,20.15 -divrem,auto,2,1,641434,9,31.27,30.86,20.04 -divrem,kernel,2,1,3566345,9,5.63,5.59,20.07 -divrem,floor,2,1,1501724,9,13.43,13.41,20.28 -divrem,gmp,2,1,3984301,9,5.03,5.00,20.02 -divrem,gmpz,2,1,2249450,9,8.82,8.76,19.86 -divrem,auto,8,4,220405,9,91.31,90.88,20.12 -divrem,kernel,8,4,487810,9,40.93,40.47,19.95 -divrem,floor,8,4,358357,9,56.26,55.69,20.10 -divrem,gmp,8,4,502522,9,39.80,39.04,19.93 -divrem,gmpz,8,4,466690,9,43.28,42.30,20.16 -divrem,auto,32,16,41587,9,477.52,468.39,19.77 -divrem,kernel,32,16,50645,9,394.47,384.98,19.92 -divrem,floor,32,16,48536,9,414.17,401.64,20.16 -divrem,gmp,32,16,97581,9,208.34,206.62,20.31 -divrem,gmpz,32,16,96532,9,210.50,208.24,20.30 -divrem,auto,128,64,5334,9,3729.94,3607.16,19.82 -divrem,kernel,128,64,5651,9,3606.77,3559.14,20.35 -divrem,floor,128,64,5519,9,3621.21,3519.76,19.93 -divrem,gmp,128,64,11377,9,1772.99,1767.84,20.18 -divrem,gmpz,128,64,11288,9,1780.00,1754.88,20.08 -divrem,auto,512,256,676,9,29671.78,29393.12,20.07 -divrem,kernel,512,256,680,9,29407.47,29225.61,20.15 -divrem,floor,512,256,688,9,29731.83,29534.10,20.43 -divrem,gmp,512,256,1220,9,16339.65,16260.21,19.93 -divrem,gmpz,512,256,1222,9,16335.99,16324.37,19.97 -divrem,auto,2000,1000,86,9,232244.19,231487.41,19.97 -divrem,kernel,2000,1000,87,9,231181.52,230535.45,20.16 -divrem,floor,2000,1000,87,9,230762.45,229171.93,20.07 -divrem,gmp,2000,1000,147,9,135637.76,135280.05,19.94 -divrem,gmpz,2000,1000,149,9,134879.76,134476.51,20.10 -divrem,auto,4000,2000,30,9,684130.57,678875.00,20.53 -divrem,kernel,4000,2000,30,9,691493.07,681069.43,20.66 -divrem,floor,4000,2000,30,9,684733.33,679737.50,20.53 -divrem,gmp,4000,2000,59,9,342978.81,341382.78,20.22 -divrem,gmpz,4000,2000,59,9,344005.64,342675.14,20.32 -divrem,auto,2000,100,211,9,95325.44,94946.48,20.13 -divrem,kernel,2000,100,214,9,94035.43,93397.98,20.22 -divrem,floor,2000,100,214,9,93897.20,93398.75,20.10 -divrem,gmp,2000,100,289,9,69423.44,69060.27,20.13 -divrem,gmpz,2000,100,289,9,69256.34,68942.91,20.01 -divrem,auto,65536,1,84,9,244136.42,239713.30,20.46 -divrem,kernel,65536,1,90,9,226465.28,223306.49,20.41 -divrem,floor,65536,1,87,9,230306.03,226602.97,19.99 -divrem,gmp,65536,1,117,9,169607.91,168223.65,19.88 -divrem,gmpz,65536,1,117,9,169175.57,164870.01,19.79 -fromchars,auto,4,10,222366,9,90.90,90.41,20.43 -fromchars,kernel,4,10,614477,9,32.80,31.73,20.08 -fromchars,gmp,4,10,609435,9,32.67,30.51,19.67 -fromchars,gmpz,4,10,270692,9,76.22,74.01,20.66 -fromchars,auto,16,10,49763,9,400.82,396.19,19.93 -fromchars,kernel,16,10,103132,9,194.11,190.30,19.99 -fromchars,gmp,16,10,140960,9,145.87,143.10,20.47 -fromchars,gmpz,16,10,63606,9,318.04,312.81,20.39 -fromchars,auto,64,10,9104,9,2196.18,2181.11,19.98 -fromchars,kernel,64,10,10828,9,1875.38,1819.05,20.19 -fromchars,gmp,64,10,20564,9,956.69,950.38,19.66 -fromchars,gmpz,64,10,12529,9,1596.67,1579.19,20.01 -fromchars,auto,256,10,1447,9,13839.52,13686.13,20.02 -fromchars,kernel,256,10,1730,9,11552.26,11513.66,19.98 -fromchars,gmp,256,10,2526,9,7942.05,7899.81,20.11 -fromchars,gmpz,256,10,1902,9,10478.05,10408.58,19.96 -fromchars,auto,2000,10,67,9,300151.75,298356.97,20.12 -fromchars,kernel,2000,10,71,9,282614.44,282313.38,20.18 -fromchars,gmp,2000,10,108,9,185024.31,183471.06,20.11 -fromchars,gmpz,2000,10,99,9,203168.77,202573.66,20.36 diff --git a/tests/beman/big_int/perf/item1/mac_base64_seed2a.csv b/tests/beman/big_int/perf/item1/mac_base64_seed2a.csv deleted file mode 100644 index 841e0b98..00000000 --- a/tests/beman/big_int/perf/item1/mac_base64_seed2a.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T17:01:51Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2874465,9,6.95,6.93,20.00 -add,inplace,1,1,3030871,9,3.23,3.22,19.60 -add,kernel,1,1,17540953,9,1.14,1.14,20.09 -add,floor,1,1,2085666,9,9.43,9.18,19.73 -add,gmp,1,1,13437502,9,1.49,1.48,20.04 -add,gmpz,1,1,6702451,9,2.99,2.97,20.40 -add,auto,2,2,1361702,9,14.76,14.66,20.21 -add,inplace,2,2,2656198,9,3.77,3.76,20.09 -add,kernel,2,2,14372356,9,1.40,1.39,20.30 -add,floor,2,2,2100070,9,9.69,9.49,20.43 -add,gmp,2,2,9941424,9,2.01,1.98,19.95 -add,gmpz,2,2,6717998,9,7.10,2.98,39.45 -add,auto,4,4,1293075,9,15.72,15.49,20.40 -add,inplace,4,4,2554590,9,3.72,3.72,19.10 -add,kernel,4,4,10432693,9,1.92,1.90,19.97 -add,floor,4,4,1964696,9,10.65,10.16,20.66 -add,gmp,4,4,11515004,9,1.74,1.73,20.01 -add,gmpz,4,4,4251891,9,4.59,4.30,19.78 -add,auto,8,8,1293919,9,15.53,15.46,20.09 -add,inplace,8,8,2003116,9,5.10,4.98,20.27 -add,kernel,8,8,5690799,9,3.48,3.47,19.83 -add,floor,8,8,1641508,9,12.05,11.70,19.70 -add,gmp,8,8,8971404,9,2.23,2.23,20.05 -add,gmpz,8,8,3788850,9,5.08,4.81,19.13 -add,auto,16,16,1116200,9,17.59,17.25,19.65 -add,inplace,16,16,1038113,9,9.65,9.58,20.03 -add,kernel,16,16,2658976,9,7.55,7.48,20.03 -add,floor,16,16,1464319,9,13.66,13.64,20.07 -add,gmp,16,16,6183655,9,3.24,3.23,20.01 -add,gmpz,16,16,4959293,9,4.50,4.49,20.35 -add,auto,64,64,353927,9,54.22,54.10,19.22 -add,inplace,64,64,193679,9,51.13,49.92,19.75 -add,kernel,64,64,411753,9,49.15,48.21,20.25 -add,floor,64,64,330103,9,60.45,59.38,19.93 -add,gmp,64,64,1760143,9,11.14,11.00,19.57 -add,gmpz,64,64,1547058,9,12.90,12.77,19.96 -add,auto,256,256,136444,9,146.45,145.28,20.07 -add,inplace,256,256,40167,9,240.22,239.71,19.30 -add,kernel,256,256,84718,9,236.31,235.83,20.02 -add,floor,256,256,81180,9,246.85,246.20,20.07 -add,gmp,256,256,351093,9,57.09,56.31,20.08 -add,gmpz,256,256,287622,9,68.32,67.03,19.60 -add,auto,1024,1024,36399,9,546.68,537.67,20.00 -add,inplace,1024,1024,10134,9,986.72,968.10,19.99 -add,kernel,1024,1024,20493,9,969.23,943.92,19.86 -add,floor,1024,1024,20398,9,987.06,958.01,20.04 -add,gmp,1024,1024,79494,9,251.65,248.81,20.35 -add,gmpz,1024,1024,78967,9,253.00,248.18,19.94 -add,auto,2000,2000,18929,9,1138.91,1027.28,21.52 -add,inplace,2000,2000,5120,9,1947.69,1896.22,19.85 -add,kernel,2000,2000,10454,9,1909.38,1864.42,19.88 -add,floor,2000,2000,10460,9,1939.84,1905.18,20.26 -add,gmp,2000,2000,40195,9,494.75,484.54,19.82 -add,gmpz,2000,2000,40409,9,495.19,489.53,20.00 -add,auto,1024,1,119806,9,175.14,167.30,22.66 -add,inplace,1024,1,10249,9,978.11,954.90,19.99 -add,kernel,1024,1,27202,9,737.67,719.84,20.02 -add,floor,1024,1,27214,9,754.36,740.46,20.51 -add,gmp,1024,1,75494,9,261.73,256.61,19.71 -add,gmpz,1024,1,74822,9,264.41,258.48,19.73 -sub,auto,1,1,2689631,9,7.47,7.44,20.34 -sub,inplace,1,1,2987292,9,3.55,3.35,19.34 -sub,kernel,1,1,19506598,9,1.04,1.03,20.18 -sub,floor,1,1,11515768,9,1.74,1.73,20.00 -sub,gmp,1,1,13425738,9,1.49,1.48,19.99 -sub,gmpz,1,1,6856718,9,2.90,2.74,19.53 -sub,auto,2,2,1317382,9,14.89,14.63,19.57 -sub,inplace,2,2,3228810,9,3.25,3.10,19.20 -sub,kernel,2,2,14150165,9,1.40,1.39,19.88 -sub,floor,2,2,2118927,9,9.28,8.94,19.86 -sub,gmp,2,2,10059047,9,2.01,1.96,20.07 -sub,gmpz,2,2,6190045,9,3.23,3.23,20.02 -sub,auto,4,4,1299974,9,15.43,15.15,20.27 -sub,inplace,4,4,2687405,9,3.61,3.59,19.78 -sub,kernel,4,4,10259965,9,1.94,1.93,19.93 -sub,floor,4,4,2012143,9,10.18,9.95,20.46 -sub,gmp,4,4,11469936,9,1.74,1.73,19.95 -sub,gmpz,4,4,6706712,9,2.98,2.97,20.02 -sub,auto,8,8,1228553,9,15.98,15.93,19.90 -sub,inplace,8,8,1901529,9,5.22,5.21,19.88 -sub,kernel,8,8,5743757,9,3.50,3.48,20.07 -sub,floor,8,8,1746149,9,11.73,11.42,20.54 -sub,gmp,8,8,8973356,9,2.23,2.23,20.06 -sub,gmpz,8,8,5755614,9,3.48,3.47,20.01 -sub,auto,16,16,1062422,9,19.12,18.28,20.00 -sub,inplace,16,16,1095852,9,9.34,9.19,20.50 -sub,kernel,16,16,2625419,9,7.66,7.60,20.11 -sub,floor,16,16,1312648,9,14.76,14.64,19.52 -sub,gmp,16,16,6186074,9,3.24,3.23,20.01 -sub,gmpz,16,16,4664169,9,4.29,4.22,20.09 -sub,auto,64,64,487686,9,40.96,40.69,19.98 -sub,inplace,64,64,195253,9,50.82,49.44,19.74 -sub,kernel,64,64,406306,9,49.44,48.50,20.00 -sub,floor,64,64,338659,9,59.21,58.34,20.04 -sub,gmp,64,64,1742260,9,11.40,11.35,19.90 -sub,gmpz,64,64,1437684,9,13.74,13.65,19.79 -sub,auto,256,256,151452,9,132.17,130.69,19.97 -sub,inplace,256,256,41806,9,239.63,235.53,20.01 -sub,kernel,256,256,85855,9,235.61,229.81,20.24 -sub,floor,256,256,81735,9,243.17,239.24,19.82 -sub,gmp,256,256,348972,9,57.14,56.73,19.93 -sub,gmpz,256,256,344308,9,57.96,57.86,19.97 -sub,auto,1024,1024,37258,9,543.51,524.66,20.63 -sub,inplace,1024,1024,10276,9,1014.98,963.31,20.71 -sub,kernel,1024,1024,20611,9,974.26,948.99,19.98 -sub,floor,1024,1024,20177,9,980.63,956.35,19.81 -sub,gmp,1024,1024,79303,9,251.88,247.93,19.98 -sub,gmpz,1024,1024,79075,9,253.65,249.64,20.00 -sub,auto,2000,2000,18216,9,1151.78,1067.58,20.71 -sub,inplace,2000,2000,5156,9,1916.20,1866.78,19.69 -sub,kernel,2000,2000,10424,9,1907.14,1866.19,19.85 -sub,floor,2000,2000,10379,9,1923.99,1871.91,19.92 -sub,gmp,2000,2000,39706,9,495.74,484.98,19.64 -sub,gmpz,2000,2000,40193,9,496.95,491.94,19.99 -sub,auto,1024,1,110615,9,174.67,166.52,20.25 -sub,inplace,1024,1,10491,9,964.73,953.71,20.22 -sub,kernel,1024,1,28131,9,738.30,733.15,20.98 -sub,floor,1024,1,26639,9,749.38,738.24,19.93 -sub,gmp,1024,1,76056,9,263.35,259.01,20.00 -sub,gmpz,1024,1,75543,9,267.86,265.83,20.24 -shl,auto,1,13,1217387,9,16.67,16.38,20.31 -shl,inplace,1,13,4389668,9,2.30,2.29,20.21 -shl,kernel,1,13,8938491,9,2.24,2.23,20.03 -shl,kernelip,1,13,5820013,9,1.75,1.73,20.34 -shl,floor,1,13,1765588,9,11.15,10.69,19.80 -shl,gmp,1,13,15968792,9,1.24,1.24,19.97 -shl,gmpz,1,13,10090635,9,1.98,1.98,20.05 -shl,auto,4,13,1062531,9,20.06,18.66,21.37 -shl,inplace,4,13,2753752,9,3.54,3.51,19.67 -shl,kernel,4,13,5374664,9,4.51,3.73,23.30 -shl,kernelip,4,13,2910225,9,3.36,3.31,19.52 -shl,floor,4,13,1538012,9,13.36,12.89,20.38 -shl,gmp,4,13,10093013,9,1.98,1.97,20.00 -shl,gmpz,4,13,7314510,9,2.73,2.72,19.96 -shl,auto,16,13,951631,9,21.15,20.98,20.28 -shl,inplace,16,13,1734311,9,5.78,5.77,20.06 -shl,kernel,16,13,4902473,9,4.09,4.06,20.04 -shl,kernelip,16,13,1388314,9,6.81,6.73,18.90 -shl,floor,16,13,1658505,9,11.99,11.97,19.90 -shl,gmp,16,13,5373874,9,3.48,3.47,18.73 -shl,gmpz,16,13,3888270,9,5.16,5.12,20.09 -shl,auto,256,13,230729,9,85.98,85.69,19.88 -shl,inplace,256,13,272925,9,36.53,36.26,19.96 -shl,kernel,256,13,402500,9,49.15,49.04,19.82 -shl,kernelip,256,13,204079,9,48.67,48.37,20.01 -shl,floor,256,13,350240,9,57.64,57.33,20.22 -shl,gmp,256,13,541727,9,36.92,36.80,20.02 -shl,gmpz,256,13,529503,9,37.84,37.78,20.04 -shl,auto,2000,13,32457,9,691.68,637.39,22.25 -shl,inplace,2000,13,35386,9,282.87,282.13,20.05 -shl,kernel,2000,13,52318,9,382.77,382.23,20.05 -shl,kernelip,2000,13,26441,9,380.04,375.35,20.08 -shl,floor,2000,13,49967,9,400.23,398.75,20.03 -shl,gmp,2000,13,18345,9,1901.93,1305.76,34.26 -shl,gmpz,2000,13,22038,9,1253.90,1113.30,25.44 -shl,auto,2000,77,25298,9,803.98,757.95,20.12 -shl,inplace,2000,77,23681,9,424.50,418.72,20.05 -shl,kernel,2000,77,38220,9,527.79,526.69,20.19 -shl,kernelip,2000,77,18338,9,520.75,514.54,19.07 -shl,floor,2000,77,36872,9,541.69,539.11,19.96 -shl,gmp,2000,77,69342,9,288.95,287.21,20.04 -shl,gmpz,2000,77,67749,9,287.81,287.14,19.70 -shr,auto,1,13,2130533,9,9.43,9.35,20.08 -shr,inplace,1,13,4237841,9,2.23,2.23,19.21 -shr,kernel,1,13,8997456,9,2.24,2.23,20.27 -shr,floor,1,13,8238021,9,2.48,2.44,20.52 -shr,gmp,1,13,20000001,9,0.99,0.99,19.88 -shr,gmpz,1,13,9760520,9,1.99,1.98,19.41 -shr,auto,4,13,1102212,9,18.64,18.19,20.55 -shr,inplace,4,13,3065370,9,3.31,3.29,20.30 -shr,kernel,4,13,5373283,9,3.72,3.70,19.98 -shr,floor,4,13,1697358,9,11.66,11.60,19.78 -shr,gmp,4,13,11508704,9,1.73,1.72,19.99 -shr,gmpz,4,13,7261276,9,2.73,2.71,19.85 -shr,auto,16,13,955339,9,21.07,20.97,20.17 -shr,inplace,16,13,1974306,9,5.09,5.09,20.13 -shr,kernel,16,13,4795599,9,4.18,4.17,20.06 -shr,floor,16,13,1574115,9,13.21,12.97,20.76 -shr,gmp,16,13,6189037,9,3.22,3.22,19.97 -shr,gmpz,16,13,4715145,9,4.23,4.21,19.93 -shr,auto,256,13,230284,9,87.09,86.55,20.04 -shr,inplace,256,13,277143,9,35.90,35.75,19.93 -shr,kernel,256,13,301528,9,66.34,65.97,19.99 -shr,floor,256,13,292488,9,75.81,75.41,22.20 -shr,gmp,256,13,544557,9,36.68,36.61,20.00 -shr,gmpz,256,13,522540,9,38.21,38.02,20.10 -shr,auto,2000,13,27904,9,703.37,678.87,19.71 -shr,inplace,2000,13,35553,9,283.57,281.86,20.20 -shr,kernel,2000,13,39052,9,512.65,506.74,20.03 -shr,floor,2000,13,37832,9,524.82,522.04,19.89 -shr,gmp,2000,13,62654,9,315.08,287.49,19.62 -shr,gmpz,2000,13,68578,9,295.90,286.34,20.24 -shr,auto,2000,77,19566,9,1054.94,989.70,20.76 -shr,inplace,2000,77,23625,9,420.21,419.38,19.90 -shr,kernel,2000,77,38345,9,516.17,513.84,19.84 -shr,floor,2000,77,37523,9,525.82,523.83,19.76 -shr,gmp,2000,77,65840,9,290.22,285.57,19.10 -shr,gmpz,2000,77,68555,9,286.61,285.86,19.69 -mul,auto,1,1,1280477,9,15.43,15.38,19.82 -mul,gmp,1,1,5386259,9,3.72,3.72,20.13 -mul,gmpz,1,1,7329954,9,2.73,2.73,20.02 -mul,auto,2,2,661221,9,28.45,27.42,19.02 -mul,kernel,2,2,3080984,9,6.54,6.53,20.16 -mul,floor,2,2,1388057,9,14.42,14.38,20.06 -mul,gmp,2,2,4242547,9,4.72,4.56,19.95 -mul,gmpz,2,2,3083977,9,6.23,6.20,19.53 -mul,auto,3,3,630827,9,30.79,29.18,19.40 -mul,kernel,3,3,2370614,9,8.44,8.42,20.14 -mul,floor,3,3,1193649,9,17.15,16.64,20.56 -mul,gmp,3,3,3278343,9,6.23,6.08,20.35 -mul,gmpz,3,3,2392121,9,7.79,7.73,18.66 -mul,auto,4,4,659098,9,29.61,29.43,19.62 -mul,kernel,4,4,1787492,9,11.21,11.10,19.99 -mul,floor,4,4,1186221,9,16.75,16.69,19.92 -mul,gmp,4,4,2166132,9,8.97,8.95,19.51 -mul,gmpz,4,4,1981175,9,10.90,9.72,21.06 -mul,auto,6,6,605363,9,32.91,32.73,19.97 -mul,kernel,6,6,1061007,9,19.21,18.88,20.34 -mul,floor,6,6,845728,9,23.70,23.26,20.24 -mul,gmp,6,6,1397730,9,14.27,14.15,19.93 -mul,gmpz,6,6,1103691,9,18.91,18.42,20.79 -mul,auto,8,8,483713,9,41.44,41.07,20.02 -mul,kernel,8,8,869271,9,23.00,22.98,20.07 -mul,floor,8,8,538947,9,35.91,35.69,19.44 -mul,gmp,8,8,887003,9,24.70,22.69,21.70 -mul,gmpz,8,8,744358,9,26.95,25.53,19.95 -mul,auto,12,12,322955,9,61.56,61.26,19.93 -mul,kernel,12,12,483722,9,40.99,40.91,19.88 -mul,floor,12,12,409731,9,49.01,48.90,20.13 -mul,gmp,12,12,456556,9,43.91,43.80,20.04 -mul,gmpz,12,12,431915,9,46.27,46.03,19.99 -mul,auto,16,16,210185,9,95.10,93.77,19.94 -mul,kernel,16,16,287380,9,69.79,69.52,20.12 -mul,floor,16,16,250677,9,78.31,78.12,19.70 -mul,gmp,16,16,258800,9,77.27,76.23,19.95 -mul,gmpz,16,16,256139,9,78.96,78.91,20.25 -mul,auto,32,32,66665,9,298.21,297.37,19.94 -mul,kernel,32,32,77224,9,258.80,257.81,19.99 -mul,floor,32,32,71276,9,279.91,278.07,19.96 -mul,gmp,32,32,75925,9,257.96,254.31,19.67 -mul,gmpz,32,32,77918,9,256.68,255.94,20.01 -mul,auto,64,64,19195,9,1038.75,1033.06,19.93 -mul,kernel,64,64,20334,9,983.56,981.30,20.01 -mul,floor,64,64,19458,9,1010.10,1008.73,19.67 -mul,gmp,64,64,25821,9,775.19,771.96,20.02 -mul,gmpz,64,64,25841,9,775.65,774.18,20.06 -mul,auto,128,128,5491,9,3621.60,3615.35,19.90 -mul,kernel,128,128,5612,9,3567.76,3553.35,20.04 -mul,floor,128,128,5584,9,3581.98,3573.79,20.01 -mul,gmp,128,128,7481,9,2672.49,2645.67,19.98 -mul,gmpz,128,128,7520,9,2678.94,2658.62,20.25 -mul,auto,256,256,1684,9,11861.24,11813.07,20.04 -mul,kernel,256,256,1709,9,11727.35,11715.04,20.12 -mul,floor,256,256,1703,9,11752.40,11706.62,20.02 -mul,gmp,256,256,2487,9,8026.91,7812.09,19.82 -mul,gmpz,256,256,2533,9,7857.81,7820.39,19.91 -mul,auto,512,512,543,9,37181.25,37055.25,20.19 -mul,kernel,512,512,543,9,36862.57,36769.87,20.04 -mul,floor,512,512,539,9,36877.32,36776.75,19.87 -mul,gmp,512,512,938,9,21320.98,21186.52,20.00 -mul,gmpz,512,512,1053,9,18957.98,18945.12,19.98 -mul,auto,1000,1000,188,9,107353.50,106973.18,20.21 -mul,kernel,1000,1000,187,9,106880.79,106281.86,19.97 -mul,floor,1000,1000,188,9,106923.76,106503.54,20.10 -mul,gmp,1000,1000,360,9,55118.06,54908.10,19.85 -mul,gmpz,1000,1000,358,9,55801.91,54850.09,20.07 -mul,auto,2000,2000,67,9,302219.52,299399.25,20.27 -mul,kernel,2000,2000,67,9,301276.12,299975.12,20.19 -mul,floor,2000,2000,67,9,302052.87,297919.78,20.23 -mul,gmp,2000,2000,136,9,148799.33,148060.05,20.79 -mul,gmpz,2000,2000,134,9,148052.55,146701.81,19.83 -mul,auto,2000,100,425,9,47016.57,46674.90,19.95 -mul,kernel,2000,100,303,9,65912.27,65711.63,20.00 -mul,floor,2000,100,303,9,66158.00,65806.79,20.17 -mul,gmp,2000,100,564,9,35388.96,35171.10,20.00 -mul,gmpz,2000,100,573,9,34684.05,34523.85,19.92 -sqr,auto,4,4,687438,9,29.27,29.07,20.12 -sqr,kernel,4,4,1774955,9,11.88,11.39,21.00 -sqr,floor,4,4,1233948,9,16.20,16.16,20.07 -sqr,gmp,4,4,3057938,9,6.94,6.45,20.61 -sqr,gmpz,4,4,2178171,9,9.21,9.16,20.24 -sqr,auto,16,16,212271,9,90.70,88.92,19.44 -sqr,kernel,16,16,322507,9,62.47,62.00,20.16 -sqr,floor,16,16,268173,9,71.80,71.68,19.43 -sqr,gmp,16,16,322149,9,62.42,61.16,20.09 -sqr,gmpz,16,16,305105,9,65.76,65.33,20.06 -sqr,auto,64,64,32024,9,626.08,622.69,20.15 -sqr,kernel,64,64,34423,9,581.41,578.28,20.00 -sqr,floor,64,64,33509,9,599.54,596.79,20.11 -sqr,gmp,64,64,29992,9,672.53,663.90,20.30 -sqr,gmpz,64,64,29600,9,673.25,669.54,19.96 -sqr,auto,512,512,815,9,24579.86,24482.06,20.04 -sqr,kernel,512,512,823,9,24587.53,24302.25,20.15 -sqr,floor,512,512,825,9,24309.44,24258.38,20.07 -sqr,gmp,512,512,1215,9,16466.29,16367.56,20.03 -sqr,gmpz,512,512,1014,9,19643.00,19035.13,19.85 -sqr,auto,2000,2000,90,9,223456.49,222175.47,20.11 -sqr,kernel,2000,2000,90,9,222005.10,220418.99,19.97 -sqr,floor,2000,2000,91,9,222498.18,220680.40,20.27 -sqr,gmp,2000,2000,166,9,120149.35,118784.14,19.95 -sqr,gmpz,2000,2000,168,9,120566.47,119741.82,20.25 -divrem,auto,2,1,657860,9,33.12,30.76,19.29 -divrem,kernel,2,1,3179131,9,6.26,6.18,19.92 -divrem,floor,2,1,1468079,9,13.69,13.64,20.16 -divrem,gmp,2,1,3995182,9,5.01,4.96,19.99 -divrem,gmpz,2,1,2279350,9,8.75,8.71,19.96 -divrem,auto,8,4,191654,9,102.42,100.45,19.58 -divrem,kernel,8,4,389988,9,51.41,50.85,20.03 -divrem,floor,8,4,306244,9,65.49,64.45,20.06 -divrem,gmp,8,4,482867,9,41.41,40.78,19.99 -divrem,gmpz,8,4,452320,9,44.13,43.46,19.96 -divrem,auto,32,16,41823,9,480.42,468.87,20.04 -divrem,kernel,32,16,51598,9,388.39,380.09,20.03 -divrem,floor,32,16,48891,9,405.32,393.10,19.74 -divrem,gmp,32,16,98029,9,205.29,201.46,20.10 -divrem,gmpz,32,16,95637,9,210.44,208.05,20.15 -divrem,auto,128,64,5286,9,3733.75,3621.82,19.67 -divrem,kernel,128,64,5545,9,3614.86,3603.76,20.08 -divrem,floor,128,64,5475,9,3653.84,3645.70,20.02 -divrem,gmp,128,64,11237,9,1767.92,1757.85,19.87 -divrem,gmpz,128,64,11518,9,1768.33,1749.22,20.34 -divrem,auto,512,256,728,9,27500.80,27436.53,20.06 -divrem,kernel,512,256,734,9,27321.01,27156.45,20.17 -divrem,floor,512,256,734,9,27312.96,27237.23,20.10 -divrem,gmp,512,256,1213,9,16466.95,16354.53,19.96 -divrem,gmpz,512,256,1215,9,16481.69,16381.21,20.03 -divrem,auto,2000,1000,86,9,233200.10,232681.20,20.07 -divrem,kernel,2000,1000,87,9,231700.67,230146.08,20.28 -divrem,floor,2000,1000,86,9,231637.60,228853.20,19.90 -divrem,gmp,2000,1000,148,9,135556.30,135210.86,20.08 -divrem,gmpz,2000,1000,149,9,134497.48,134201.34,20.06 -divrem,auto,4000,2000,30,9,690975.00,686584.70,20.76 -divrem,kernel,4000,2000,30,9,688098.60,685043.07,20.65 -divrem,floor,4000,2000,30,9,688280.53,687416.67,20.66 -divrem,gmp,4000,2000,58,9,345548.14,342212.64,20.02 -divrem,gmpz,4000,2000,58,9,344137.21,342368.53,19.95 -divrem,auto,2000,100,210,9,95182.54,95158.93,20.01 -divrem,kernel,2000,100,213,9,94305.16,93970.85,20.07 -divrem,floor,2000,100,213,9,94318.86,94004.69,20.10 -divrem,gmp,2000,100,291,9,68831.62,68734.82,20.04 -divrem,gmpz,2000,100,292,9,68773.97,68564.07,20.08 -divrem,auto,65536,1,84,9,240565.48,236138.88,20.20 -divrem,kernel,65536,1,90,9,226576.86,224064.36,20.40 -divrem,floor,65536,1,88,9,229111.74,227026.99,20.14 -divrem,gmp,65536,1,118,9,168669.84,164153.96,19.80 -divrem,gmpz,65536,1,119,9,169358.54,165136.91,20.07 -fromchars,auto,4,10,207155,9,93.06,90.32,19.33 -fromchars,kernel,4,10,607613,9,32.89,32.52,19.97 -fromchars,gmp,4,10,629163,9,31.12,29.80,19.84 -fromchars,gmpz,4,10,261200,9,74.29,74.01,19.42 -fromchars,auto,16,10,50577,9,393.67,382.05,19.86 -fromchars,kernel,16,10,103709,9,193.41,192.53,20.06 -fromchars,gmp,16,10,141936,9,140.82,138.29,19.95 -fromchars,gmpz,16,10,63119,9,318.47,313.66,20.04 -fromchars,auto,64,10,9131,9,2206.45,2166.49,20.33 -fromchars,kernel,64,10,10633,9,1854.39,1823.69,19.65 -fromchars,gmp,64,10,21239,9,958.34,945.48,20.48 -fromchars,gmpz,64,10,12432,9,1599.15,1574.19,19.81 -fromchars,auto,256,10,1444,9,13839.74,13785.81,20.01 -fromchars,kernel,256,10,1736,9,11543.75,11481.97,20.03 -fromchars,gmp,256,10,2518,9,7952.86,7896.74,20.02 -fromchars,gmpz,256,10,1893,9,10818.92,10699.55,20.48 -fromchars,auto,2000,10,67,9,300362.57,299358.84,20.14 -fromchars,kernel,2000,10,71,9,282304.58,281352.70,20.06 -fromchars,gmp,2000,10,110,9,184476.89,183846.59,20.30 -fromchars,gmpz,2000,10,98,9,202370.33,201918.37,19.85 diff --git a/tests/beman/big_int/perf/item1/mac_base64_seed2b.csv b/tests/beman/big_int/perf/item1/mac_base64_seed2b.csv deleted file mode 100644 index 3ea476cb..00000000 --- a/tests/beman/big_int/perf/item1/mac_base64_seed2b.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T17:04:53Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2982088,9,6.70,6.66,20.07 -add,inplace,1,1,3026649,9,3.23,3.10,19.33 -add,kernel,1,1,17291689,9,1.14,1.14,19.77 -add,floor,1,1,2091303,9,9.75,9.51,20.43 -add,gmp,1,1,13430685,9,1.49,1.48,20.01 -add,gmpz,1,1,6670308,9,3.72,2.99,24.73 -add,auto,2,2,1359766,9,14.64,14.42,19.85 -add,inplace,2,2,2686823,9,3.76,3.72,20.17 -add,kernel,2,2,14359704,9,1.39,1.39,19.98 -add,floor,2,2,2090135,9,9.63,9.60,20.26 -add,gmp,2,2,11522172,9,1.75,1.73,19.97 -add,gmpz,2,2,6691148,9,3.54,3.05,27.51 -add,auto,4,4,1316876,9,15.12,14.89,19.90 -add,inplace,4,4,2620502,9,3.73,3.71,19.56 -add,kernel,4,4,10316942,9,1.93,1.92,19.93 -add,floor,4,4,1897860,9,10.45,10.19,19.73 -add,gmp,4,4,11519784,9,1.74,1.73,20.44 -add,gmpz,4,4,4661204,9,5.03,4.13,23.02 -add,auto,8,8,1338839,9,15.94,14.87,20.97 -add,inplace,8,8,1908322,9,5.03,5.00,19.28 -add,kernel,8,8,5710902,9,3.50,3.48,19.96 -add,floor,8,8,1673267,9,11.95,11.77,20.05 -add,gmp,8,8,8948487,9,2.23,2.23,20.02 -add,gmpz,8,8,3728460,9,5.34,5.14,19.89 -add,auto,16,16,1247949,9,16.11,15.80,20.19 -add,inplace,16,16,1029774,9,9.61,9.51,19.81 -add,kernel,16,16,2648331,9,7.59,7.52,20.08 -add,floor,16,16,1491256,9,13.72,13.42,20.44 -add,gmp,16,16,6205584,9,3.23,3.22,20.02 -add,gmpz,16,16,4694531,9,4.50,4.48,21.11 -add,auto,64,64,344084,9,58.38,58.08,20.09 -add,inplace,64,64,194319,9,51.35,50.22,19.93 -add,kernel,64,64,398713,9,49.38,48.21,19.69 -add,floor,64,64,314732,9,62.67,61.21,19.70 -add,gmp,64,64,1773923,9,11.18,11.12,19.84 -add,gmpz,64,64,1503303,9,13.30,13.08,20.02 -add,auto,256,256,135510,9,147.84,146.89,20.06 -add,inplace,256,256,42277,9,239.52,232.28,20.38 -add,kernel,256,256,84683,9,235.69,229.03,19.84 -add,floor,256,256,81379,9,243.89,237.38,19.80 -add,gmp,256,256,350034,9,57.09,56.42,20.07 -add,gmpz,256,256,346531,9,57.95,57.36,20.09 -add,auto,1024,1024,35802,9,550.65,539.84,20.02 -add,inplace,1024,1024,10479,9,987.00,974.95,20.65 -add,kernel,1024,1024,20972,9,964.32,940.82,20.16 -add,floor,1024,1024,19679,9,992.23,967.00,19.78 -add,gmp,1024,1024,79900,9,251.79,246.84,20.12 -add,gmpz,1024,1024,78896,9,252.89,247.54,19.90 -add,auto,2000,2000,16946,9,1136.12,1065.76,19.21 -add,inplace,2000,2000,5170,9,1928.55,1890.16,19.83 -add,kernel,2000,2000,10427,9,1944.12,1919.14,20.35 -add,floor,2000,2000,10370,9,1933.96,1893.30,20.04 -add,gmp,2000,2000,40411,9,494.98,489.10,19.98 -add,gmpz,2000,2000,40182,9,496.81,491.65,19.93 -add,auto,1024,1,119433,9,168.21,166.46,20.31 -add,inplace,1024,1,10174,9,971.47,935.97,19.70 -add,kernel,1024,1,27355,9,738.76,720.09,20.11 -add,floor,1024,1,27097,9,759.62,749.90,20.57 -add,gmp,1024,1,75905,9,260.95,254.73,19.73 -add,gmpz,1024,1,75916,9,264.31,259.91,20.00 -sub,auto,1,1,2603042,9,7.70,7.68,20.23 -sub,inplace,1,1,3103074,9,3.35,3.22,20.87 -sub,kernel,1,1,19519169,9,1.03,1.02,20.20 -sub,floor,1,1,11513948,9,1.74,1.73,19.97 -sub,gmp,1,1,13467497,9,1.49,1.48,20.12 -sub,gmpz,1,1,6510775,9,2.99,2.96,19.55 -sub,auto,2,2,1323258,9,15.61,14.94,20.35 -sub,inplace,2,2,3046178,9,3.27,3.22,20.40 -sub,kernel,2,2,14389344,9,1.40,1.39,20.18 -sub,floor,2,2,2120432,9,9.44,9.41,20.01 -sub,gmp,2,2,11523136,9,1.73,1.73,19.98 -sub,gmpz,2,2,6714767,9,3.23,2.97,21.10 -sub,auto,4,4,1279697,9,16.03,15.60,20.48 -sub,inplace,4,4,2502898,9,4.16,3.95,21.12 -sub,kernel,4,4,10211177,9,1.95,1.93,19.95 -sub,floor,4,4,1961671,9,9.96,9.91,19.61 -sub,gmp,4,4,11502826,9,1.74,1.73,20.00 -sub,gmpz,4,4,6710622,9,2.99,2.98,20.08 -sub,auto,8,8,1162216,9,16.65,15.93,19.28 -sub,inplace,8,8,1894535,9,5.16,5.09,19.51 -sub,kernel,8,8,5699919,9,3.50,3.46,19.91 -sub,floor,8,8,1641544,9,11.44,11.39,19.18 -sub,gmp,8,8,8955439,9,2.23,2.23,20.03 -sub,gmpz,8,8,5758756,9,3.48,3.48,20.08 -sub,auto,16,16,1104207,9,17.98,17.73,19.90 -sub,inplace,16,16,1125893,9,12.90,8.91,19.75 -sub,kernel,16,16,2601597,9,7.67,7.65,19.98 -sub,floor,16,16,1262411,9,15.37,15.22,19.51 -sub,gmp,16,16,3310937,9,6.02,6.00,19.94 -sub,gmpz,16,16,4665115,9,4.22,4.22,19.72 -sub,auto,64,64,492035,9,40.93,40.39,19.61 -sub,inplace,64,64,193411,9,51.50,50.86,19.90 -sub,kernel,64,64,415946,9,51.38,49.17,21.31 -sub,floor,64,64,326140,9,60.63,59.30,19.75 -sub,gmp,64,64,1757069,9,11.39,11.31,20.02 -sub,gmpz,64,64,1444893,9,13.84,13.77,20.02 -sub,auto,256,256,151167,9,132.40,129.97,20.01 -sub,inplace,256,256,42525,9,238.40,232.45,20.22 -sub,kernel,256,256,84738,9,234.91,227.44,19.91 -sub,floor,256,256,81144,9,247.30,241.60,20.06 -sub,gmp,256,256,349640,9,57.19,56.50,19.95 -sub,gmpz,256,256,345940,9,57.88,56.92,20.08 -sub,auto,1024,1024,35300,9,567.50,523.95,20.03 -sub,inplace,1024,1024,10116,9,986.21,966.90,19.93 -sub,kernel,1024,1024,20530,9,962.32,942.50,19.67 -sub,floor,1024,1024,20382,9,976.54,951.70,19.88 -sub,gmp,1024,1024,78660,9,251.83,248.72,19.81 -sub,gmpz,1024,1024,78416,9,253.82,248.84,19.89 -sub,auto,2000,2000,18511,9,1110.47,1042.20,20.46 -sub,inplace,2000,2000,5195,9,1944.32,1882.82,20.10 -sub,kernel,2000,2000,10400,9,1913.84,1856.93,19.77 -sub,floor,2000,2000,10250,9,1923.16,1890.78,19.73 -sub,gmp,2000,2000,40366,9,495.72,493.99,20.04 -sub,gmpz,2000,2000,40211,9,497.71,485.11,19.96 -sub,auto,1024,1,118855,9,170.16,166.41,20.59 -sub,inplace,1024,1,9839,9,985.97,980.05,19.59 -sub,kernel,1024,1,27208,9,734.22,717.60,19.99 -sub,floor,1024,1,26818,9,754.26,742.99,20.21 -sub,gmp,1024,1,75731,9,261.18,256.21,19.75 -sub,gmpz,1024,1,75062,9,265.05,261.06,19.85 -shl,auto,1,13,1174069,9,18.43,16.86,21.03 -shl,inplace,1,13,4323203,9,2.30,2.29,19.99 -shl,kernel,1,13,8965911,9,2.23,2.23,20.11 -shl,kernelip,1,13,8925144,9,1.23,1.12,25.43 -shl,floor,1,13,1786497,9,11.91,10.40,18.75 -shl,gmp,1,13,15931085,9,1.26,1.25,20.07 -shl,gmpz,1,13,9915246,9,2.00,1.98,19.88 -shl,auto,4,13,1061574,9,19.35,19.04,20.66 -shl,inplace,4,13,2775086,9,3.62,3.53,20.01 -shl,kernel,4,13,5384113,9,3.72,3.71,20.05 -shl,kernelip,4,13,2897946,9,3.38,3.33,19.56 -shl,floor,4,13,1521223,9,12.96,12.65,19.78 -shl,gmp,4,13,10115514,9,2.01,1.98,20.23 -shl,gmpz,4,13,7303498,9,2.73,2.72,19.94 -shl,auto,16,13,963952,9,21.11,20.73,20.52 -shl,inplace,16,13,1727704,9,5.79,5.78,20.03 -shl,kernel,16,13,4877590,9,4.10,4.07,19.99 -shl,kernelip,16,13,1472767,9,6.81,6.76,20.24 -shl,floor,16,13,1676093,9,12.04,11.94,20.41 -shl,gmp,16,13,5374289,9,3.49,3.47,18.75 -shl,gmpz,16,13,4105521,9,4.80,4.77,19.72 -shl,auto,256,13,233021,9,85.84,85.02,20.09 -shl,inplace,256,13,274888,9,36.32,36.24,19.99 -shl,kernel,256,13,405863,9,49.20,48.94,20.00 -shl,kernelip,256,13,204351,9,48.70,48.44,19.91 -shl,floor,256,13,348611,9,57.74,57.65,20.14 -shl,gmp,256,13,538095,9,37.32,36.97,20.05 -shl,gmpz,256,13,526242,9,37.90,37.79,19.98 -shl,auto,2000,13,35705,9,608.25,554.68,21.76 -shl,inplace,2000,13,35342,9,284.43,282.33,20.23 -shl,kernel,2000,13,52137,9,383.66,381.25,19.98 -shl,kernelip,2000,13,26529,9,376.02,372.82,19.95 -shl,floor,2000,13,49844,9,402.11,399.88,20.02 -shl,gmp,2000,13,10429,9,2299.71,2109.69,20.36 -shl,gmpz,2000,13,13714,9,2591.02,1713.89,25.20 -shl,auto,2000,77,24389,9,795.11,770.05,19.55 -shl,inplace,2000,77,23286,9,425.75,421.90,19.80 -shl,kernel,2000,77,37910,9,528.88,521.32,20.03 -shl,kernelip,2000,77,19262,9,520.62,515.17,20.03 -shl,floor,2000,77,37143,9,542.23,539.46,20.16 -shl,gmp,2000,77,68905,9,289.61,286.56,20.07 -shl,gmpz,2000,77,66358,9,287.55,287.07,19.32 -shr,auto,1,13,2079698,9,9.43,9.40,19.69 -shr,inplace,1,13,4210645,9,2.36,2.35,19.92 -shr,kernel,1,13,8929121,9,2.23,2.23,19.96 -shr,floor,1,13,8062836,9,2.48,2.43,20.17 -shr,gmp,1,13,20000001,9,0.99,0.99,19.85 -shr,gmpz,1,13,10067886,9,1.99,1.98,20.10 -shr,auto,4,13,1071042,9,17.86,17.45,19.15 -shr,inplace,4,13,3131098,9,3.20,3.20,20.13 -shr,kernel,4,13,5368667,9,3.72,3.70,19.99 -shr,floor,4,13,1714376,9,11.75,11.64,20.24 -shr,gmp,4,13,11490190,9,1.74,1.74,20.01 -shr,gmpz,4,13,7299998,9,2.76,2.73,20.08 -shr,auto,16,13,961559,9,21.04,20.80,20.25 -shr,inplace,16,13,1987541,9,5.06,5.02,20.13 -shr,kernel,16,13,4783670,9,4.18,4.17,20.03 -shr,floor,16,13,1534430,9,13.56,12.94,20.80 -shr,gmp,16,13,6193465,9,3.23,3.22,19.98 -shr,gmpz,16,13,4721650,9,4.23,4.22,20.04 -shr,auto,256,13,230685,9,89.07,86.97,20.58 -shr,inplace,256,13,271811,9,36.52,36.12,19.82 -shr,kernel,256,13,300666,9,66.59,66.36,20.28 -shr,floor,256,13,289856,9,75.65,75.33,21.95 -shr,gmp,256,13,542543,9,36.67,36.61,19.95 -shr,gmpz,256,13,526953,9,38.02,37.99,20.05 -shr,auto,2000,13,30190,9,710.19,634.74,21.25 -shr,inplace,2000,13,34998,9,284.46,282.25,19.89 -shr,kernel,2000,13,38882,9,512.80,510.14,20.01 -shr,floor,2000,13,38096,9,524.75,519.01,20.19 -shr,gmp,2000,13,68880,9,299.66,288.40,20.64 -shr,gmpz,2000,13,63076,9,308.52,295.37,19.58 -shr,auto,2000,77,18542,9,1066.00,980.62,19.69 -shr,inplace,2000,77,23799,9,423.34,418.20,20.14 -shr,kernel,2000,77,38754,9,516.86,510.68,20.00 -shr,floor,2000,77,38002,9,525.11,520.30,19.94 -shr,gmp,2000,77,67343,9,295.84,292.65,19.98 -shr,gmpz,2000,77,68602,9,286.53,285.15,19.69 -mul,auto,1,1,1338802,9,15.02,14.65,20.03 -mul,gmp,1,1,5370896,9,3.73,3.71,20.01 -mul,gmpz,1,1,7324141,9,2.73,2.73,20.05 -mul,auto,2,2,660823,9,36.34,28.02,23.60 -mul,kernel,2,2,3086685,9,6.54,6.45,20.13 -mul,floor,2,2,1375703,9,14.73,14.36,20.31 -mul,gmp,2,2,4241261,9,4.72,4.71,20.05 -mul,gmpz,2,2,2915680,9,6.81,6.80,19.87 -mul,auto,3,3,693468,9,29.81,28.66,20.73 -mul,kernel,3,3,2367285,9,8.44,8.20,19.94 -mul,floor,3,3,1166183,9,17.11,16.56,19.87 -mul,gmp,3,3,3282517,9,6.08,6.07,19.97 -mul,gmpz,3,3,2379986,9,8.19,8.06,19.51 -mul,auto,4,4,664727,9,29.36,29.24,19.51 -mul,kernel,4,4,1799410,9,11.24,11.00,20.22 -mul,floor,4,4,1198254,9,17.17,16.64,20.37 -mul,gmp,4,4,2208715,9,8.96,8.94,19.83 -mul,gmpz,4,4,2058005,9,10.99,10.64,22.88 -mul,auto,6,6,609628,9,32.76,32.63,19.98 -mul,kernel,6,6,1042298,9,19.14,18.98,19.95 -mul,floor,6,6,848575,9,23.58,23.40,20.00 -mul,gmp,6,6,1374827,9,14.52,14.27,19.90 -mul,gmpz,6,6,1116378,9,18.48,17.98,20.53 -mul,auto,8,8,478638,9,41.32,41.14,19.80 -mul,kernel,8,8,873649,9,22.87,22.84,19.99 -mul,floor,8,8,657275,9,30.21,30.03,19.86 -mul,gmp,8,8,885975,9,24.08,22.81,21.14 -mul,gmpz,8,8,760088,9,27.53,25.99,21.16 -mul,auto,12,12,323504,9,62.00,61.29,20.01 -mul,kernel,12,12,488310,9,40.94,40.91,20.00 -mul,floor,12,12,408486,9,48.95,48.86,20.02 -mul,gmp,12,12,451373,9,44.30,44.19,20.02 -mul,gmpz,12,12,431456,9,46.56,46.36,20.09 -mul,auto,16,16,209870,9,94.69,94.46,19.88 -mul,kernel,16,16,287596,9,69.54,69.41,20.01 -mul,floor,16,16,254722,9,78.96,78.70,20.13 -mul,gmp,16,16,256464,9,78.03,77.50,20.00 -mul,gmpz,16,16,253234,9,79.07,78.81,20.03 -mul,auto,32,32,66616,9,298.24,296.55,19.91 -mul,kernel,32,32,77303,9,258.75,257.93,19.99 -mul,floor,32,32,71666,9,279.39,278.31,20.08 -mul,gmp,32,32,76831,9,260.68,255.21,20.00 -mul,gmpz,32,32,76538,9,261.07,257.23,20.13 -mul,auto,64,64,19317,9,1033.85,1032.81,19.98 -mul,kernel,64,64,20273,9,987.64,980.32,20.05 -mul,floor,64,64,19611,9,1015.10,1012.62,19.96 -mul,gmp,64,64,25844,9,776.28,772.78,20.09 -mul,gmpz,64,64,25280,9,778.61,776.18,19.72 -mul,auto,128,128,5525,9,3624.47,3613.41,20.04 -mul,kernel,128,128,5593,9,3568.72,3562.45,19.98 -mul,floor,128,128,5545,9,3595.21,3573.28,19.99 -mul,gmp,128,128,7498,9,2710.64,2664.36,20.37 -mul,gmpz,128,128,7497,9,2671.90,2657.17,20.06 -mul,auto,256,256,1603,9,12511.64,12436.27,20.07 -mul,kernel,256,256,1619,9,12377.01,12336.94,20.08 -mul,floor,256,256,1600,9,12370.10,12342.97,19.81 -mul,gmp,256,256,1937,9,10342.39,10285.32,20.07 -mul,gmpz,256,256,2552,9,7822.31,7795.96,20.02 -mul,auto,512,512,539,9,37142.78,36941.64,20.01 -mul,kernel,512,512,543,9,36873.54,36617.86,20.00 -mul,floor,512,512,529,9,36888.39,36811.59,19.95 -mul,gmp,512,512,934,9,21305.32,21190.00,19.92 -mul,gmpz,512,512,1055,9,19068.64,18966.63,20.14 -mul,auto,1000,1000,189,9,107024.91,106585.32,20.30 -mul,kernel,1000,1000,188,9,106656.03,106084.22,20.05 -mul,floor,1000,1000,188,9,106538.79,106268.39,20.04 -mul,gmp,1000,1000,364,9,55066.85,54907.62,20.06 -mul,gmpz,1000,1000,364,9,55113.67,54814.79,20.06 -mul,auto,2000,2000,67,9,302287.93,301703.36,20.28 -mul,kernel,2000,2000,67,9,305763.06,302005.60,20.45 -mul,floor,2000,2000,67,9,301137.43,299582.09,20.17 -mul,gmp,2000,2000,136,9,148431.68,147820.46,20.21 -mul,gmpz,2000,2000,135,9,149062.96,147908.03,20.11 -mul,auto,2000,100,425,9,46938.14,46696.47,19.98 -mul,kernel,2000,100,429,9,46648.51,46461.34,20.02 -mul,floor,2000,100,427,9,46718.29,46653.49,19.97 -mul,gmp,2000,100,570,9,35093.13,35002.34,20.01 -mul,gmpz,2000,100,575,9,34690.36,34577.03,19.96 -sqr,auto,4,4,670925,9,29.92,29.36,20.09 -sqr,kernel,4,4,1776432,9,11.82,11.25,20.67 -sqr,floor,4,4,1235489,9,16.41,16.17,20.21 -sqr,gmp,4,4,3094241,9,6.46,6.44,20.00 -sqr,gmpz,4,4,2160027,9,9.70,9.23,21.01 -sqr,auto,16,16,225494,9,88.92,88.52,20.04 -sqr,kernel,16,16,323274,9,62.00,61.90,20.09 -sqr,floor,16,16,278664,9,72.25,71.79,20.14 -sqr,gmp,16,16,318803,9,63.53,62.84,20.24 -sqr,gmpz,16,16,300015,9,66.70,66.01,19.99 -sqr,auto,64,64,31981,9,626.75,623.11,20.03 -sqr,kernel,64,64,34542,9,585.32,579.41,20.51 -sqr,floor,64,64,33316,9,598.82,597.33,19.95 -sqr,gmp,64,64,30241,9,663.55,651.65,19.99 -sqr,gmpz,64,64,29565,9,671.51,662.35,19.85 -sqr,auto,512,512,810,9,24695.52,24436.11,20.00 -sqr,kernel,512,512,816,9,24416.72,24216.61,19.98 -sqr,floor,512,512,820,9,24327.34,24172.97,19.93 -sqr,gmp,512,512,1214,9,16405.48,16268.88,19.91 -sqr,gmpz,512,512,1015,9,19696.51,19375.78,19.97 -sqr,auto,2000,2000,90,9,224970.37,222405.09,20.20 -sqr,kernel,2000,2000,91,9,222860.35,221872.70,20.28 -sqr,floor,2000,2000,91,9,222803.11,221416.21,20.26 -sqr,gmp,2000,2000,167,9,120955.84,119175.65,20.17 -sqr,gmpz,2000,2000,166,9,121127.51,119742.22,20.09 -divrem,auto,2,1,643586,9,31.04,30.66,20.36 -divrem,kernel,2,1,3173726,9,6.26,6.21,19.97 -divrem,floor,2,1,1382072,9,14.59,14.07,20.11 -divrem,gmp,2,1,3980264,9,5.02,4.98,19.99 -divrem,gmpz,2,1,2276112,9,8.81,8.74,20.03 -divrem,auto,8,4,199845,9,99.97,99.57,20.03 -divrem,kernel,8,4,381222,9,51.67,51.20,19.75 -divrem,floor,8,4,304642,9,65.33,64.72,19.90 -divrem,gmp,8,4,479105,9,41.40,40.99,19.81 -divrem,gmpz,8,4,451269,9,44.29,43.37,19.93 -divrem,auto,32,16,41961,9,477.02,462.04,19.94 -divrem,kernel,32,16,51394,9,393.53,379.46,20.12 -divrem,floor,32,16,49809,9,410.88,398.34,20.29 -divrem,gmp,32,16,97465,9,204.69,199.27,19.81 -divrem,gmpz,32,16,96038,9,207.56,203.44,19.91 -divrem,auto,128,64,5342,9,3751.59,3607.17,19.90 -divrem,kernel,128,64,5493,9,3669.32,3496.54,20.01 -divrem,floor,128,64,5449,9,3597.04,3506.40,19.61 -divrem,gmp,128,64,11346,9,1768.18,1745.98,20.04 -divrem,gmpz,128,64,11348,9,1767.12,1734.92,20.01 -divrem,auto,512,256,725,9,27533.22,27468.91,19.96 -divrem,kernel,512,256,696,9,27212.28,27007.00,18.92 -divrem,floor,512,256,734,9,27228.71,26958.79,19.96 -divrem,gmp,512,256,1223,9,16423.79,16347.68,20.09 -divrem,gmpz,512,256,1214,9,16433.18,16340.09,19.95 -divrem,auto,2000,1000,86,9,232843.02,231984.49,20.02 -divrem,kernel,2000,1000,87,9,231868.77,231044.06,20.17 -divrem,floor,2000,1000,87,9,231808.91,230874.52,20.19 -divrem,gmp,2000,1000,148,9,135810.81,135393.30,20.12 -divrem,gmpz,2000,1000,149,9,134263.99,133932.89,20.01 -divrem,auto,4000,2000,30,9,690488.90,686629.17,20.70 -divrem,kernel,4000,2000,30,9,688169.43,685844.47,20.67 -divrem,floor,4000,2000,30,9,689131.93,686858.33,20.70 -divrem,gmp,4000,2000,59,9,341854.53,340786.02,20.18 -divrem,gmpz,4000,2000,59,9,347637.00,342530.36,20.47 -divrem,auto,2000,100,210,9,95385.31,95128.57,20.07 -divrem,kernel,2000,100,212,9,94309.16,93827.64,20.00 -divrem,floor,2000,100,213,9,93922.73,93668.82,20.01 -divrem,gmp,2000,100,292,9,68608.16,68335.62,20.04 -divrem,gmpz,2000,100,290,9,68838.93,68403.88,19.99 -divrem,auto,65536,1,83,9,240530.12,237225.90,19.95 -divrem,kernel,65536,1,88,9,228329.07,224178.50,20.10 -divrem,floor,65536,1,88,9,230490.52,226810.14,20.33 -divrem,gmp,65536,1,118,9,169401.13,165429.73,19.98 -divrem,gmpz,65536,1,118,9,172992.94,169728.46,20.41 -fromchars,auto,4,10,218659,9,94.02,91.96,20.47 -fromchars,kernel,4,10,573065,9,34.85,34.58,20.00 -fromchars,gmp,4,10,648474,9,30.67,29.72,19.94 -fromchars,gmpz,4,10,253323,9,77.14,76.41,19.53 -fromchars,auto,16,10,49218,9,401.32,389.46,19.73 -fromchars,kernel,16,10,103686,9,191.03,189.05,19.81 -fromchars,gmp,16,10,142436,9,140.56,138.83,20.00 -fromchars,gmpz,16,10,63745,9,316.90,312.62,20.17 -fromchars,auto,64,10,9220,9,2194.27,2167.20,20.23 -fromchars,kernel,64,10,10873,9,1852.43,1818.99,20.06 -fromchars,gmp,64,10,20970,9,954.66,948.40,20.33 -fromchars,gmpz,64,10,12507,9,1601.50,1576.02,19.99 -fromchars,auto,256,10,1447,9,13823.02,13772.72,20.04 -fromchars,kernel,256,10,1710,9,11566.93,11499.10,19.85 -fromchars,gmp,256,10,2520,9,7973.21,7936.69,20.11 -fromchars,gmpz,256,10,1880,9,10501.04,10464.43,19.82 -fromchars,auto,2000,10,67,9,300265.54,298429.73,20.14 -fromchars,kernel,2000,10,71,9,282617.37,280933.10,20.17 -fromchars,gmp,2000,10,110,9,184674.62,183231.06,20.37 -fromchars,gmpz,2000,10,99,9,204284.09,202820.71,20.20 diff --git a/tests/beman/big_int/perf/item1/mac_base64_spot_seed1.csv b/tests/beman/big_int/perf/item1/mac_base64_spot_seed1.csv deleted file mode 100644 index cd3c2ec5..00000000 --- a/tests/beman/big_int/perf/item1/mac_base64_spot_seed1.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,2137,3,9467.67,9400.76,20.31 -add,inplace,16384,16384,621,3,16118.29,16105.51,20.04 -add,kernel,16384,16384,1259,3,15894.66,15876.62,20.02 -add,floor,16384,16384,1262,3,16000.23,15950.81,20.18 -add,gmp,16384,16384,4901,3,4077.03,4024.52,19.90 -add,gmpz,16384,16384,4897,3,4096.67,4087.60,20.05 -mul,auto,2000,2000,66,3,302705.18,302260.09,19.99 -mul,kernel,2000,2000,67,3,301503.73,301228.22,20.20 -mul,floor,2000,2000,67,3,301391.18,301365.67,20.24 -mul,gmp,2000,2000,135,3,148756.17,148460.19,20.10 -mul,gmpz,2000,2000,136,3,148611.83,148578.12,20.22 -mul,auto,16384,16384,4,3,5401718.75,5397448.00,21.60 -mul,kernel,16384,16384,4,3,5355031.25,5281093.75,21.38 -mul,floor,16384,16384,4,3,5317666.50,5251239.75,21.20 -mul,gmp,16384,16384,13,3,1584804.46,1581846.15,20.60 -mul,gmpz,16384,16384,13,3,1574625.00,1569134.62,20.46 -divrem,auto,4096,2048,29,3,703211.21,697771.55,20.34 -divrem,kernel,4096,2048,29,3,702175.31,699692.52,20.35 -divrem,floor,4096,2048,29,3,700563.21,698639.38,20.30 -divrem,gmp,4096,2048,56,3,358523.82,357557.29,20.06 -divrem,gmpz,4096,2048,56,3,360552.09,359755.95,20.20 -tochars,auto,10000,10,3,3,8240930.67,8231930.67,24.71 -tochars,kernel,10000,10,3,3,8209041.67,8168625.00,24.60 -tochars,gmp,10000,10,5,3,4118483.40,4117808.40,20.61 -tochars,gmpz,10000,10,5,3,4153725.00,4136091.80,20.75 -fromchars,auto,10000,10,5,3,4473100.00,4172175.00,22.01 -fromchars,kernel,10000,10,5,3,4098016.60,4082641.60,20.53 -fromchars,gmp,10000,10,12,3,1781430.58,1779000.00,21.38 -fromchars,gmpz,10000,10,11,3,1862632.55,1852799.18,20.48 diff --git a/tests/beman/big_int/perf/item1/mac_base64_spot_seed2.csv b/tests/beman/big_int/perf/item1/mac_base64_spot_seed2.csv deleted file mode 100644 index bb0ce784..00000000 --- a/tests/beman/big_int/perf/item1/mac_base64_spot_seed2.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,2111,3,9479.31,9474.60,20.02 -add,inplace,16384,16384,618,3,15893.71,15611.55,19.54 -add,kernel,16384,16384,1265,3,15781.03,15412.29,19.83 -add,floor,16384,16384,1278,3,15993.90,15942.16,20.44 -add,gmp,16384,16384,4936,3,4088.86,4088.13,20.21 -add,gmpz,16384,16384,4943,3,4094.72,4090.62,20.25 -mul,auto,2000,2000,67,3,303179.73,302294.15,20.33 -mul,kernel,2000,2000,67,3,301301.63,300376.87,20.19 -mul,floor,2000,2000,67,3,300554.73,298804.72,20.13 -mul,gmp,2000,2000,135,3,148607.72,148513.58,20.08 -mul,gmpz,2000,2000,135,3,149200.93,148383.64,20.22 -mul,auto,16384,16384,4,3,5399802.25,5397510.50,21.61 -mul,kernel,16384,16384,4,3,5363322.75,5229302.00,21.29 -mul,floor,16384,16384,4,3,5509489.50,5445281.25,21.99 -mul,gmp,16384,16384,13,3,1583038.46,1580368.62,20.61 -mul,gmpz,16384,16384,13,3,1559541.69,1559362.15,20.28 -divrem,auto,4096,2048,29,3,702862.07,701853.45,20.41 -divrem,kernel,4096,2048,29,3,702436.76,695168.10,20.31 -divrem,floor,4096,2048,29,3,706959.76,701728.45,20.47 -divrem,gmp,4096,2048,56,3,366867.55,356706.84,20.53 -divrem,gmpz,4096,2048,56,3,357228.43,356312.50,20.00 -tochars,auto,10000,10,3,3,8253972.33,8194389.00,24.79 -tochars,kernel,10000,10,3,3,8203013.67,8192528.00,24.61 -tochars,gmp,10000,10,5,3,4098558.40,4092625.00,20.49 -tochars,gmpz,10000,10,5,3,4149025.00,4141508.20,20.75 -fromchars,auto,10000,10,5,3,4189733.40,4167583.20,20.94 -fromchars,kernel,10000,10,5,3,4093975.00,4082458.40,20.45 -fromchars,gmp,10000,10,12,3,1772107.58,1767878.50,21.25 -fromchars,gmpz,10000,10,11,3,1855469.73,1850943.18,20.48 diff --git a/tests/beman/big_int/perf/item1/mac_new64_seed1a.csv b/tests/beman/big_int/perf/item1/mac_new64_seed1a.csv deleted file mode 100644 index 0637fb2f..00000000 --- a/tests/beman/big_int/perf/item1/mac_new64_seed1a.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T16:57:19Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2591075,9,7.54,7.45,19.61 -add,inplace,1,1,2980790,9,3.54,3.28,21.06 -add,kernel,1,1,17537265,9,1.14,1.14,20.03 -add,floor,1,1,2181846,9,9.43,9.17,20.52 -add,gmp,1,1,13291988,9,1.51,1.49,20.11 -add,gmpz,1,1,6104269,9,2.97,2.96,20.59 -add,auto,2,2,1319892,9,15.69,15.63,20.71 -add,inplace,2,2,2597028,9,3.91,3.84,20.42 -add,kernel,2,2,14350155,9,1.39,1.39,19.96 -add,floor,2,2,2048608,9,9.80,9.43,19.94 -add,gmp,2,2,9648049,9,1.99,1.96,19.15 -add,gmpz,2,2,6717924,9,3.28,2.98,23.21 -add,auto,4,4,1452128,9,14.19,13.94,20.52 -add,inplace,4,4,2867501,9,3.50,3.49,20.30 -add,kernel,4,4,10410817,9,1.92,1.91,20.00 -add,floor,4,4,1969299,9,10.17,10.15,20.06 -add,gmp,4,4,11506198,9,1.74,1.73,20.01 -add,gmpz,4,4,5843618,9,4.12,3.88,21.05 -add,auto,8,8,1300442,9,15.65,15.27,20.30 -add,inplace,8,8,2490431,9,4.11,4.10,20.48 -add,kernel,8,8,5728023,9,3.48,3.46,19.93 -add,floor,8,8,1679966,9,12.14,11.65,20.14 -add,gmp,8,8,8955115,9,2.23,2.23,19.99 -add,gmpz,8,8,5089410,9,4.38,3.81,19.90 -add,auto,16,16,1216970,9,16.38,16.01,19.90 -add,inplace,16,16,1790209,9,5.59,5.59,20.06 -add,kernel,16,16,2593593,9,7.58,7.55,19.70 -add,floor,16,16,1457234,9,13.80,13.67,20.17 -add,gmp,16,16,6192279,9,3.23,3.22,20.07 -add,gmpz,16,16,4991107,9,4.01,3.98,20.57 -add,auto,64,64,526135,9,38.21,37.78,20.18 -add,inplace,64,64,505123,9,19.99,19.87,20.19 -add,kernel,64,64,407414,9,49.49,48.33,20.25 -add,floor,64,64,328248,9,60.82,59.87,19.95 -add,gmp,64,64,1791363,9,11.17,11.02,20.08 -add,gmpz,64,64,1504414,9,13.32,13.21,20.02 -add,auto,256,256,181912,9,111.95,109.51,20.41 -add,inplace,256,256,99831,9,100.69,98.84,20.02 -add,kernel,256,256,85302,9,235.05,232.26,20.04 -add,floor,256,256,81011,9,246.43,239.32,19.90 -add,gmp,256,256,349957,9,57.32,56.49,20.35 -add,gmpz,256,256,350624,9,57.73,57.17,20.23 -add,auto,1024,1024,45227,9,452.79,445.78,20.47 -add,inplace,1024,1024,22974,9,433.69,423.86,19.93 -add,kernel,1024,1024,19749,9,968.46,937.87,19.29 -add,floor,1024,1024,19534,9,989.70,953.47,19.33 -add,gmp,1024,1024,80474,9,252.03,250.87,20.28 -add,gmpz,1024,1024,78943,9,253.36,246.59,19.97 -add,auto,2000,2000,22849,9,877.19,867.14,20.03 -add,inplace,2000,2000,11646,9,860.75,840.62,20.15 -add,kernel,2000,2000,10435,9,1922.77,1906.87,20.14 -add,floor,2000,2000,10688,9,1922.95,1892.96,20.48 -add,gmp,2000,2000,40381,9,494.47,486.59,19.94 -add,gmpz,2000,2000,40319,9,496.45,488.39,19.98 -add,auto,1024,1,200577,9,105.94,91.80,22.85 -add,inplace,1024,1,3359947,9,2.98,2.97,20.03 -add,kernel,1024,1,26902,9,733.68,715.02,19.69 -add,floor,1024,1,26659,9,754.87,737.01,20.08 -add,gmp,1024,1,76426,9,261.99,258.29,20.02 -add,gmpz,1024,1,75203,9,268.35,265.91,20.17 -sub,auto,1,1,2768364,9,8.11,7.95,20.94 -sub,inplace,1,1,2784222,9,3.60,3.33,19.88 -sub,kernel,1,1,19159868,9,1.05,1.04,20.09 -sub,floor,1,1,11510860,9,1.74,1.73,20.00 -sub,gmp,1,1,13414633,9,1.49,1.48,20.00 -sub,gmpz,1,1,8062622,9,2.48,2.48,20.05 -sub,auto,2,2,1322284,9,14.68,14.39,19.44 -sub,inplace,2,2,2846889,9,3.49,3.47,19.92 -sub,kernel,2,2,14150406,9,1.42,1.41,20.27 -sub,floor,2,2,2021756,9,9.47,9.42,19.18 -sub,gmp,2,2,10089632,9,1.99,1.98,20.19 -sub,gmpz,2,2,6624400,9,2.98,2.96,19.74 -sub,auto,4,4,1403983,9,14.49,14.01,20.29 -sub,inplace,4,4,2877336,9,3.61,3.47,20.65 -sub,kernel,4,4,10320456,9,1.94,1.93,20.05 -sub,floor,4,4,1964061,9,10.35,9.72,20.00 -sub,gmp,4,4,11378158,9,1.74,1.73,19.79 -sub,gmpz,4,4,7314682,9,2.74,2.73,20.25 -sub,auto,8,8,1193054,9,20.49,15.99,20.55 -sub,inplace,8,8,2509053,9,4.12,3.95,20.88 -sub,kernel,8,8,5775141,9,3.49,3.46,20.15 -sub,floor,8,8,1729691,9,12.40,11.39,19.01 -sub,gmp,8,8,8877493,9,2.24,2.23,19.86 -sub,gmpz,8,8,6128677,9,3.23,3.23,19.84 -sub,auto,16,16,1153511,9,17.52,17.37,20.24 -sub,inplace,16,16,1947046,9,5.23,5.15,20.35 -sub,kernel,16,16,2573604,9,7.73,7.66,19.91 -sub,floor,16,16,1311816,9,15.21,15.14,19.99 -sub,gmp,16,16,6505103,9,3.23,3.09,20.78 -sub,gmpz,16,16,4574127,9,4.38,4.33,20.13 -sub,auto,64,64,522968,9,35.89,35.68,19.27 -sub,inplace,64,64,488451,9,19.96,19.78,19.50 -sub,kernel,64,64,405589,9,49.50,48.76,20.08 -sub,floor,64,64,333694,9,65.51,59.83,21.45 -sub,gmp,64,64,1799158,9,11.17,11.12,20.10 -sub,gmpz,64,64,1454058,9,13.82,13.75,20.14 -sub,auto,256,256,183510,9,110.24,108.58,20.25 -sub,inplace,256,256,100119,9,101.25,100.46,20.26 -sub,kernel,256,256,84415,9,236.83,236.61,20.00 -sub,floor,256,256,81623,9,245.54,245.16,20.10 -sub,gmp,256,256,350755,9,57.55,56.84,20.19 -sub,gmpz,256,256,346089,9,57.96,57.39,20.04 -sub,auto,1024,1024,44225,9,453.65,452.63,20.06 -sub,inplace,1024,1024,23124,9,433.65,423.25,19.96 -sub,kernel,1024,1024,20428,9,972.79,940.65,19.74 -sub,floor,1024,1024,20578,9,976.95,956.28,20.08 -sub,gmp,1024,1024,79431,9,251.25,247.63,19.93 -sub,gmpz,1024,1024,78805,9,252.97,251.08,19.92 -sub,auto,2000,2000,22820,9,877.40,865.48,20.08 -sub,inplace,2000,2000,11778,9,850.75,836.15,20.01 -sub,kernel,2000,2000,10743,9,1923.45,1866.06,20.56 -sub,floor,2000,2000,10273,9,1922.70,1875.37,19.65 -sub,gmp,2000,2000,40420,9,494.22,488.28,19.95 -sub,gmpz,2000,2000,40099,9,496.64,487.05,19.91 -sub,auto,1024,1,148952,9,149.61,143.79,23.05 -sub,inplace,1024,1,3094853,9,3.23,3.21,19.96 -sub,kernel,1024,1,27384,9,730.28,706.16,19.88 -sub,floor,1024,1,26533,9,752.88,734.62,19.96 -sub,gmp,1024,1,74765,9,262.71,257.69,19.69 -sub,gmpz,1024,1,74507,9,269.30,258.71,20.05 -shl,auto,1,13,1610013,9,12.58,12.41,20.22 -shl,inplace,1,13,3967158,9,2.48,2.48,19.72 -shl,kernel,1,13,10088109,9,2.23,1.98,21.73 -shl,kernelip,1,13,8991916,9,1.77,1.12,27.96 -shl,floor,1,13,1944319,9,10.93,10.52,21.16 -shl,gmp,1,13,16123425,9,1.25,1.24,20.34 -shl,gmpz,1,13,9885306,9,1.99,1.99,19.69 -shl,auto,4,13,1517852,9,13.01,12.70,19.79 -shl,inplace,4,13,2652224,9,3.70,3.61,19.66 -shl,kernel,4,13,5347329,9,3.73,3.71,19.92 -shl,kernelip,4,13,2959418,9,3.38,3.35,20.05 -shl,floor,4,13,1580028,9,12.93,12.65,20.32 -shl,gmp,4,13,10018621,9,2.00,1.98,20.07 -shl,gmpz,4,13,7328847,9,2.74,2.73,20.07 -shl,auto,16,13,1338689,9,17.05,15.10,22.41 -shl,inplace,16,13,1874275,9,5.31,5.28,19.93 -shl,kernel,16,13,4778620,9,4.17,4.15,19.93 -shl,kernelip,16,13,1375463,9,6.81,6.66,18.67 -shl,floor,16,13,1694282,9,12.41,11.74,20.82 -shl,gmp,16,13,5755034,9,3.48,3.47,20.03 -shl,gmpz,16,13,3930199,9,5.17,5.10,18.90 -shl,auto,256,13,477289,9,41.40,41.11,19.82 -shl,inplace,256,13,336147,9,29.83,29.75,20.10 -shl,kernel,256,13,408478,9,49.11,48.77,20.06 -shl,kernelip,256,13,204993,9,48.66,48.17,19.92 -shl,floor,256,13,348121,9,57.26,57.17,19.95 -shl,gmp,256,13,538668,9,36.94,36.88,19.90 -shl,gmpz,256,13,509750,9,38.84,38.57,19.79 -shl,auto,2000,13,83735,9,250.75,236.73,21.22 -shl,inplace,2000,13,50833,9,196.05,195.53,19.92 -shl,kernel,2000,13,52081,9,383.93,382.37,20.00 -shl,kernelip,2000,13,26547,9,376.97,375.80,20.04 -shl,floor,2000,13,49999,9,400.92,398.48,20.05 -shl,gmp,2000,13,10951,9,1848.86,1707.99,20.90 -shl,gmpz,2000,13,13255,9,2137.57,1635.52,23.55 -shl,auto,2000,77,64888,9,631.13,287.42,34.89 -shl,inplace,2000,77,43219,9,229.19,227.60,19.81 -shl,kernel,2000,77,37993,9,527.69,521.15,20.01 -shl,kernelip,2000,77,19414,9,521.35,518.77,20.37 -shl,floor,2000,77,36782,9,540.34,536.30,19.84 -shl,gmp,2000,77,68492,9,290.09,287.80,20.10 -shl,gmpz,2000,77,66305,9,288.91,287.37,19.18 -shr,auto,1,13,2931393,9,6.46,6.42,18.97 -shr,inplace,1,13,3009699,9,3.32,3.30,20.02 -shr,kernel,1,13,8941529,9,2.23,2.22,19.96 -shr,floor,1,13,7373312,9,2.50,2.46,18.58 -shr,gmp,1,13,19857097,9,1.00,0.99,19.83 -shr,gmpz,1,13,9971247,9,1.99,1.98,19.89 -shr,auto,4,13,1444598,9,14.31,13.90,20.65 -shr,inplace,4,13,2865957,9,3.79,3.64,21.64 -shr,kernel,4,13,5346099,9,3.73,3.73,19.96 -shr,floor,4,13,1672292,9,11.95,11.91,20.33 -shr,gmp,4,13,11509763,9,1.74,1.73,20.05 -shr,gmpz,4,13,7313153,9,2.73,2.73,20.02 -shr,auto,16,13,1112645,9,18.36,18.00,20.40 -shr,inplace,16,13,1927984,9,5.24,5.17,20.20 -shr,kernel,16,13,4871317,9,4.11,4.09,20.00 -shr,floor,16,13,1550490,9,12.98,12.93,20.27 -shr,gmp,16,13,6181087,9,3.23,3.22,19.96 -shr,gmpz,16,13,4719383,9,4.24,4.23,20.01 -shr,auto,256,13,477163,9,42.13,42.03,20.19 -shr,inplace,256,13,326339,9,30.43,30.35,19.90 -shr,kernel,256,13,300651,9,66.48,66.13,19.98 -shr,floor,256,13,264775,9,75.26,75.14,19.95 -shr,gmp,256,13,543395,9,36.79,36.68,20.04 -shr,gmpz,256,13,525105,9,38.13,37.96,20.01 -shr,auto,2000,13,89338,9,259.13,225.81,23.12 -shr,inplace,2000,13,50947,9,196.20,195.68,20.01 -shr,kernel,2000,13,38713,9,513.48,511.33,19.93 -shr,floor,2000,13,37690,9,525.57,513.68,19.76 -shr,gmp,2000,13,68703,9,294.63,290.49,20.73 -shr,gmpz,2000,13,68879,9,298.30,287.37,20.55 -shr,auto,2000,77,75949,9,295.94,247.71,19.93 -shr,inplace,2000,77,50950,9,196.06,195.32,19.98 -shr,kernel,2000,77,39221,9,516.81,512.32,20.33 -shr,floor,2000,77,38250,9,526.35,525.50,20.14 -shr,gmp,2000,77,69061,9,290.02,289.24,20.05 -shr,gmpz,2000,77,68649,9,292.07,285.61,19.97 -mul,auto,1,1,1413077,9,13.99,13.68,19.70 -mul,gmp,1,1,5370218,9,3.73,3.72,20.20 -mul,gmpz,1,1,7308907,9,2.74,2.73,20.03 -mul,auto,2,2,1131218,9,18.16,17.64,20.55 -mul,kernel,2,2,3105648,9,6.40,6.31,19.81 -mul,floor,2,2,1359951,9,17.01,14.75,22.58 -mul,gmp,2,2,4482300,9,4.57,4.47,20.56 -mul,gmpz,2,2,3094663,9,6.54,6.51,20.31 -mul,auto,3,3,1056584,9,19.69,19.16,21.03 -mul,kernel,3,3,2513849,9,8.27,8.19,20.77 -mul,floor,3,3,1201705,9,16.69,16.60,20.05 -mul,gmp,3,3,3217732,9,6.35,6.20,19.90 -mul,gmpz,3,3,2539625,9,7.90,7.85,20.87 -mul,auto,4,4,878393,9,21.67,20.84,19.00 -mul,kernel,4,4,1808374,9,11.07,10.98,20.01 -mul,floor,4,4,1172989,9,16.70,16.64,19.83 -mul,gmp,4,4,2479801,9,8.85,8.06,21.29 -mul,gmpz,4,4,2054461,9,9.76,9.72,20.08 -mul,auto,6,6,745880,9,27.29,26.91,20.34 -mul,kernel,6,6,1048779,9,19.19,19.15,20.18 -mul,floor,6,6,798797,9,23.85,23.67,19.20 -mul,gmp,6,6,1381349,9,15.40,14.79,21.01 -mul,gmpz,6,6,1082499,9,18.66,18.49,20.25 -mul,auto,8,8,576788,9,34.43,34.22,19.98 -mul,kernel,8,8,869940,9,22.97,22.88,19.97 -mul,floor,8,8,653900,9,30.66,30.52,20.09 -mul,gmp,8,8,777103,9,25.72,24.66,20.29 -mul,gmpz,8,8,799278,9,26.94,24.42,21.02 -mul,auto,12,12,372070,9,53.96,53.47,20.07 -mul,kernel,12,12,482208,9,41.29,41.24,19.96 -mul,floor,12,12,403329,9,49.61,49.29,20.00 -mul,gmp,12,12,449911,9,44.35,44.13,20.00 -mul,gmpz,12,12,426282,9,46.66,46.53,19.88 -mul,auto,16,16,242406,9,82.38,82.29,20.12 -mul,kernel,16,16,287331,9,69.34,69.22,19.92 -mul,floor,16,16,256041,9,78.26,78.08,20.06 -mul,gmp,16,16,257382,9,76.24,76.03,19.62 -mul,gmpz,16,16,253686,9,79.00,78.77,20.06 -mul,auto,32,32,71381,9,281.03,279.77,20.10 -mul,kernel,32,32,76974,9,258.52,257.58,19.91 -mul,floor,32,32,71914,9,277.88,277.64,20.07 -mul,gmp,32,32,74366,9,269.72,268.27,20.24 -mul,gmpz,32,32,73409,9,272.21,270.35,20.01 -mul,auto,64,64,19847,9,1008.17,1004.93,20.02 -mul,kernel,64,64,20403,9,983.94,981.22,20.09 -mul,floor,64,64,19642,9,1008.84,1007.17,19.83 -mul,gmp,64,64,25947,9,776.83,771.04,20.16 -mul,gmpz,64,64,25515,9,779.42,775.11,19.91 -mul,auto,128,128,5610,9,3577.85,3566.18,20.09 -mul,kernel,128,128,5572,9,3576.52,3574.55,19.99 -mul,floor,128,128,5528,9,3632.87,3600.13,20.07 -mul,gmp,128,128,7515,9,2650.58,2626.63,19.88 -mul,gmpz,128,128,6690,9,2998.26,2988.14,20.08 -mul,auto,256,256,1653,9,12073.75,12059.26,20.02 -mul,kernel,256,256,1700,9,11766.59,11740.05,20.11 -mul,floor,256,256,1695,9,11785.77,11755.24,19.99 -mul,gmp,256,256,2560,9,7849.58,7823.57,20.16 -mul,gmpz,256,256,2551,9,7817.31,7800.81,19.94 -mul,auto,512,512,542,9,36888.84,36838.49,20.01 -mul,kernel,512,512,530,9,37008.88,36868.71,19.63 -mul,floor,512,512,541,9,36978.67,36848.43,20.02 -mul,gmp,512,512,934,9,21308.49,21183.57,19.89 -mul,gmpz,512,512,942,9,21340.63,21290.34,20.15 -mul,auto,1000,1000,188,9,106776.82,106418.66,20.12 -mul,kernel,1000,1000,188,9,106868.35,106455.45,20.11 -mul,floor,1000,1000,186,9,107175.18,106391.13,19.95 -mul,gmp,1000,1000,367,9,55064.37,54800.75,20.25 -mul,gmpz,1000,1000,363,9,55161.27,54913.80,20.14 -mul,auto,2000,2000,67,9,301645.52,299872.51,20.21 -mul,kernel,2000,2000,67,9,301368.16,299745.03,20.21 -mul,floor,2000,2000,67,9,302559.07,301422.27,20.26 -mul,gmp,2000,2000,131,9,148506.99,148136.76,19.46 -mul,gmpz,2000,2000,134,9,148517.10,148425.69,19.92 -mul,auto,2000,100,426,9,46419.89,46236.21,19.81 -mul,kernel,2000,100,432,9,46561.53,46445.99,20.11 -mul,floor,2000,100,428,9,46961.16,46588.20,20.22 -mul,gmp,2000,100,565,9,34988.57,34956.93,19.78 -mul,gmpz,2000,100,579,9,34709.77,34623.27,20.09 -sqr,auto,4,4,947359,9,24.05,21.08,21.94 -sqr,kernel,4,4,1774215,9,11.25,11.15,20.02 -sqr,floor,4,4,1232691,9,16.19,16.14,20.00 -sqr,gmp,4,4,2878540,9,6.95,6.68,19.94 -sqr,gmpz,4,4,2268854,9,9.45,9.17,21.53 -sqr,auto,16,16,244876,9,76.42,74.80,18.95 -sqr,kernel,16,16,313217,9,63.79,63.31,19.97 -sqr,floor,16,16,276289,9,69.32,69.10,19.40 -sqr,gmp,16,16,315658,9,63.54,62.79,20.38 -sqr,gmpz,16,16,300238,9,66.72,63.34,19.92 -sqr,auto,64,64,32806,9,600.98,598.54,19.77 -sqr,kernel,64,64,34493,9,581.63,579.81,20.06 -sqr,floor,64,64,33266,9,599.77,598.27,19.94 -sqr,gmp,64,64,30262,9,659.26,655.20,20.11 -sqr,gmpz,64,64,28990,9,677.08,659.08,19.59 -sqr,auto,512,512,823,9,24306.70,24209.75,20.03 -sqr,kernel,512,512,818,9,24380.25,24164.83,19.95 -sqr,floor,512,512,820,9,24349.24,24260.26,20.08 -sqr,gmp,512,512,1091,9,18339.02,18027.80,20.04 -sqr,gmpz,512,512,1017,9,19694.28,19574.28,20.03 -sqr,auto,2000,2000,90,9,224206.94,222388.42,20.16 -sqr,kernel,2000,2000,90,9,223715.74,222495.37,20.14 -sqr,floor,2000,2000,89,9,223344.10,222635.76,19.90 -sqr,gmp,2000,2000,166,9,120635.04,119208.83,20.00 -sqr,gmpz,2000,2000,166,9,120833.33,120245.99,20.06 -divrem,auto,2,1,694551,9,29.60,28.38,19.51 -divrem,kernel,2,1,3492552,9,5.72,5.70,20.00 -divrem,floor,2,1,1468791,9,13.67,13.14,19.83 -divrem,gmp,2,1,4006628,9,5.09,5.02,20.31 -divrem,gmpz,2,1,2305394,9,8.68,8.63,20.01 -divrem,auto,8,4,276541,9,71.42,69.71,19.66 -divrem,kernel,8,4,491342,9,40.91,40.40,20.10 -divrem,floor,8,4,352747,9,56.27,55.92,19.85 -divrem,gmp,8,4,505045,9,39.87,39.80,20.15 -divrem,gmpz,8,4,462727,9,43.39,42.87,20.08 -divrem,auto,32,16,47051,9,429.07,425.07,20.26 -divrem,kernel,32,16,51775,9,399.66,394.35,20.75 -divrem,floor,32,16,48526,9,410.95,400.97,19.93 -divrem,gmp,32,16,95265,9,210.63,204.75,20.10 -divrem,gmpz,32,16,94683,9,210.48,208.51,19.95 -divrem,auto,128,64,5424,9,3678.07,3597.44,19.92 -divrem,kernel,128,64,5526,9,3602.39,3473.13,19.84 -divrem,floor,128,64,5422,9,3662.22,3629.17,19.88 -divrem,gmp,128,64,11245,9,1775.04,1758.85,19.97 -divrem,gmpz,128,64,11303,9,1783.15,1769.17,20.17 -divrem,auto,512,256,680,9,29707.84,29515.50,20.25 -divrem,kernel,512,256,676,9,29467.21,29142.75,20.11 -divrem,floor,512,256,679,9,29520.19,29413.72,20.04 -divrem,gmp,512,256,1224,9,16377.11,16322.27,20.21 -divrem,gmpz,512,256,1222,9,16360.44,16307.28,19.99 -divrem,auto,2000,1000,87,9,232264.37,231628.36,20.29 -divrem,kernel,2000,1000,87,9,232985.63,231761.49,20.28 -divrem,floor,2000,1000,86,9,231953.97,230949.62,19.98 -divrem,gmp,2000,1000,147,9,135624.71,135204.37,19.93 -divrem,gmpz,2000,1000,148,9,134395.55,134188.34,19.93 -divrem,auto,4000,2000,29,9,686166.66,681341.93,19.96 -divrem,kernel,4000,2000,30,9,684884.73,682731.97,20.54 -divrem,floor,4000,2000,30,9,685611.10,680047.23,20.59 -divrem,gmp,4000,2000,59,9,343038.14,342341.10,20.24 -divrem,gmpz,4000,2000,59,9,344128.54,341688.56,20.29 -divrem,auto,2000,100,213,9,94077.27,93828.44,20.06 -divrem,kernel,2000,100,214,9,93809.19,93436.14,20.11 -divrem,floor,2000,100,213,9,93653.76,93233.77,19.96 -divrem,gmp,2000,100,281,9,70988.58,70169.48,19.94 -divrem,gmpz,2000,100,282,9,70021.28,69476.66,19.73 -divrem,auto,65536,1,87,9,233628.36,229191.09,20.64 -divrem,kernel,65536,1,89,9,230061.80,225183.04,20.42 -divrem,floor,65536,1,87,9,231447.32,224070.40,20.05 -divrem,gmp,65536,1,119,9,170274.51,167248.25,20.26 -divrem,gmpz,65536,1,117,9,170847.22,167709.76,19.97 -fromchars,auto,4,10,216091,9,92.24,89.95,19.85 -fromchars,kernel,4,10,620985,9,32.36,31.45,20.05 -fromchars,gmp,4,10,634956,9,31.92,30.02,20.08 -fromchars,gmpz,4,10,262750,9,77.83,75.74,20.30 -fromchars,auto,16,10,52671,9,381.77,372.88,20.13 -fromchars,kernel,16,10,103504,9,192.99,189.13,19.86 -fromchars,gmp,16,10,142260,9,140.57,139.40,20.01 -fromchars,gmpz,16,10,62953,9,318.32,314.18,20.00 -fromchars,auto,64,10,9037,9,2196.83,2161.72,19.82 -fromchars,kernel,64,10,10954,9,1858.43,1808.47,20.42 -fromchars,gmp,64,10,21172,9,955.46,950.11,20.23 -fromchars,gmpz,64,10,12521,9,1600.17,1592.61,20.04 -fromchars,auto,256,10,1449,9,13787.96,13762.80,20.02 -fromchars,kernel,256,10,1734,9,11542.70,11510.09,20.06 -fromchars,gmp,256,10,2525,9,7965.18,7941.50,20.11 -fromchars,gmpz,256,10,1838,9,10810.03,10534.21,19.81 -fromchars,auto,2000,10,67,9,300227.00,299726.36,20.12 -fromchars,kernel,2000,10,72,9,282653.35,281670.14,20.41 -fromchars,gmp,2000,10,108,9,183959.10,183116.90,20.04 -fromchars,gmpz,2000,10,99,9,203446.12,202760.10,20.15 diff --git a/tests/beman/big_int/perf/item1/mac_new64_seed1b.csv b/tests/beman/big_int/perf/item1/mac_new64_seed1b.csv deleted file mode 100644 index c8af2c47..00000000 --- a/tests/beman/big_int/perf/item1/mac_new64_seed1b.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T17:00:20Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2568978,9,7.74,7.24,19.48 -add,inplace,1,1,2877323,9,3.48,3.45,20.05 -add,kernel,1,1,17539778,9,1.14,1.14,20.09 -add,floor,1,1,2115840,9,8.96,8.92,19.32 -add,gmp,1,1,13406923,9,1.49,1.48,19.97 -add,gmpz,1,1,6706764,9,2.98,2.98,19.99 -add,auto,2,2,1336860,9,15.00,14.66,19.99 -add,inplace,2,2,2564769,9,3.86,3.77,19.89 -add,kernel,2,2,14239102,9,1.39,1.39,19.87 -add,floor,2,2,2112052,9,9.45,9.40,20.00 -add,gmp,2,2,10105791,9,1.99,1.98,20.07 -add,gmpz,2,2,6617961,9,3.11,2.96,20.57 -add,auto,4,4,1427192,9,14.67,14.19,21.06 -add,inplace,4,4,2753847,9,3.51,3.50,19.56 -add,kernel,4,4,10396872,9,1.92,1.90,20.00 -add,floor,4,4,1918524,9,10.18,10.15,19.62 -add,gmp,4,4,11376590,9,1.74,1.73,19.83 -add,gmpz,4,4,5339509,9,4.14,3.94,19.77 -add,auto,8,8,1269750,9,15.24,15.15,19.38 -add,inplace,8,8,2517561,9,3.99,3.97,20.12 -add,kernel,8,8,5661907,9,3.52,3.46,19.92 -add,floor,8,8,1648244,9,12.36,12.10,20.38 -add,gmp,8,8,8801046,9,2.29,2.26,20.10 -add,gmpz,8,8,5089676,9,4.47,3.74,21.87 -add,auto,16,16,1163961,9,17.03,16.59,19.77 -add,inplace,16,16,1785565,9,5.59,5.58,19.98 -add,kernel,16,16,2642351,9,7.55,7.50,20.00 -add,floor,16,16,1453919,9,13.42,13.32,19.65 -add,gmp,16,16,6075665,9,3.23,3.22,19.62 -add,gmpz,16,16,5013128,9,4.47,3.99,20.41 -add,auto,64,64,523060,9,38.13,37.60,19.90 -add,inplace,64,64,500514,9,19.93,19.70,19.94 -add,kernel,64,64,404371,9,49.37,47.99,19.89 -add,floor,64,64,326713,9,60.66,60.07,19.92 -add,gmp,64,64,1801600,9,11.09,11.06,20.02 -add,gmpz,64,64,1498075,9,13.34,13.23,19.96 -add,auto,256,256,184576,9,109.84,109.54,20.29 -add,inplace,256,256,98902,9,101.08,98.15,19.86 -add,kernel,256,256,85291,9,234.32,225.76,19.91 -add,floor,256,256,79899,9,249.16,243.07,20.08 -add,gmp,256,256,350398,9,56.93,56.52,19.94 -add,gmpz,256,256,345523,9,57.73,56.85,19.90 -add,auto,1024,1024,44146,9,450.83,444.44,19.88 -add,inplace,1024,1024,23651,9,433.51,418.39,20.40 -add,kernel,1024,1024,20574,9,968.32,934.06,19.80 -add,floor,1024,1024,20420,9,987.01,958.52,20.17 -add,gmp,1024,1024,79390,9,252.71,249.93,20.28 -add,gmpz,1024,1024,78686,9,253.02,250.40,19.90 -add,auto,2000,2000,22551,9,883.79,867.51,19.92 -add,inplace,2000,2000,11775,9,870.03,859.42,20.51 -add,kernel,2000,2000,10290,9,1919.24,1869.49,19.69 -add,floor,2000,2000,10389,9,1934.55,1892.21,20.11 -add,gmp,2000,2000,40519,9,496.57,493.81,20.16 -add,gmpz,2000,2000,40365,9,497.07,491.16,20.09 -add,auto,1024,1,213096,9,108.32,99.39,21.55 -add,inplace,1024,1,3347244,9,2.98,2.97,19.98 -add,kernel,1024,1,26735,9,736.84,723.35,19.66 -add,floor,1024,1,25141,9,754.93,753.13,19.01 -add,gmp,1024,1,75849,9,262.80,256.33,19.88 -add,gmpz,1024,1,75690,9,264.78,258.29,19.99 -sub,auto,1,1,2598617,9,7.93,7.68,20.47 -sub,inplace,1,1,2983509,9,3.48,3.35,20.64 -sub,kernel,1,1,19108582,9,1.05,1.04,19.99 -sub,floor,1,1,11504521,9,1.75,1.74,20.16 -sub,gmp,1,1,13490226,9,1.49,1.48,20.09 -sub,gmpz,1,1,8059980,9,2.48,2.48,20.00 -sub,auto,2,2,1359625,9,14.38,14.33,19.69 -sub,inplace,2,2,2878412,9,3.48,3.47,20.18 -sub,kernel,2,2,14115689,9,1.42,1.41,19.99 -sub,floor,2,2,2138783,9,9.43,9.10,20.14 -sub,gmp,2,2,10076213,9,1.99,1.96,20.00 -sub,gmpz,2,2,6721904,9,2.99,2.97,20.12 -sub,auto,4,4,1379393,9,14.95,14.84,20.64 -sub,inplace,4,4,2777129,9,3.61,3.49,20.18 -sub,kernel,4,4,9577798,9,1.95,1.94,18.83 -sub,floor,4,4,1957935,9,12.37,10.18,21.06 -sub,gmp,4,4,11524887,9,1.74,1.73,20.05 -sub,gmpz,4,4,7330909,9,2.73,2.73,20.03 -sub,auto,8,8,1285640,9,15.35,15.17,19.79 -sub,inplace,8,8,2434901,9,4.13,4.11,20.47 -sub,kernel,8,8,5599645,9,3.49,3.47,19.68 -sub,floor,8,8,1669550,9,11.94,11.90,20.13 -sub,gmp,8,8,8944710,9,2.23,2.23,20.01 -sub,gmpz,8,8,6160505,9,3.24,3.22,19.94 -sub,auto,16,16,1158486,9,17.92,17.29,20.68 -sub,inplace,16,16,1916777,9,5.23,5.22,20.04 -sub,kernel,16,16,2599134,9,7.72,7.66,20.04 -sub,floor,16,16,1278295,9,15.02,14.90,19.18 -sub,gmp,16,16,6196608,9,3.04,2.98,19.11 -sub,gmpz,16,16,4732732,9,4.23,4.21,20.11 -sub,auto,64,64,549486,9,36.22,36.05,19.89 -sub,inplace,64,64,502638,9,19.94,19.84,20.06 -sub,kernel,64,64,407435,9,49.67,49.23,20.21 -sub,floor,64,64,337538,9,60.19,59.50,20.29 -sub,gmp,64,64,1783406,9,11.23,11.13,20.03 -sub,gmpz,64,64,1446218,9,13.90,13.72,20.11 -sub,auto,256,256,180859,9,110.72,109.35,20.01 -sub,inplace,256,256,99092,9,101.04,98.15,19.93 -sub,kernel,256,256,84666,9,237.38,232.07,20.05 -sub,floor,256,256,81661,9,245.33,241.35,20.03 -sub,gmp,256,256,348890,9,57.18,56.30,19.89 -sub,gmpz,256,256,345164,9,57.88,57.52,19.99 -sub,auto,1024,1024,43982,9,452.63,436.22,19.80 -sub,inplace,1024,1024,22859,9,434.12,426.12,19.83 -sub,kernel,1024,1024,21122,9,998.16,962.05,20.96 -sub,floor,1024,1024,20476,9,974.97,958.15,19.98 -sub,gmp,1024,1024,80163,9,251.51,248.59,20.14 -sub,gmpz,1024,1024,78555,9,253.49,250.63,19.88 -sub,auto,2000,2000,23060,9,875.59,857.15,20.10 -sub,inplace,2000,2000,11823,9,854.56,833.48,20.16 -sub,kernel,2000,2000,10438,9,1916.20,1856.29,19.88 -sub,floor,2000,2000,10420,9,1931.03,1885.94,20.00 -sub,gmp,2000,2000,40422,9,495.86,491.47,20.28 -sub,gmpz,2000,2000,39714,9,497.04,491.17,19.76 -sub,auto,1024,1,138859,9,142.88,136.10,20.03 -sub,inplace,1024,1,3365358,9,2.98,2.97,20.33 -sub,kernel,1024,1,27264,9,733.90,718.96,19.94 -sub,floor,1024,1,26509,9,749.59,724.86,19.74 -sub,gmp,1024,1,75471,9,261.85,255.62,19.66 -sub,gmpz,1024,1,74862,9,266.62,260.29,19.86 -shl,auto,1,13,1709181,9,12.12,11.86,20.75 -shl,inplace,1,13,3811324,9,2.53,2.48,19.29 -shl,kernel,1,13,8962800,9,2.23,2.23,20.03 -shl,kernelip,1,13,8849715,9,1.76,1.12,26.83 -shl,floor,1,13,1772257,9,10.68,10.60,19.03 -shl,gmp,1,13,15816358,9,1.24,1.23,19.60 -shl,gmpz,1,13,10027138,9,1.99,1.98,19.96 -shl,auto,4,13,1557542,9,13.36,12.77,20.69 -shl,inplace,4,13,2688080,9,3.71,3.69,20.21 -shl,kernel,4,13,5369436,9,3.72,3.71,20.10 -shl,kernelip,4,13,2965835,9,3.38,3.37,20.06 -shl,floor,4,13,1593071,9,13.30,12.87,21.22 -shl,gmp,4,13,10161402,9,1.99,1.98,20.18 -shl,gmpz,4,13,7329918,9,2.73,2.72,20.02 -shl,auto,16,13,1310421,9,15.25,15.02,20.10 -shl,inplace,16,13,1890079,9,5.34,5.32,20.25 -shl,kernel,16,13,4840047,9,4.15,4.13,20.23 -shl,kernelip,16,13,1350070,9,6.82,6.73,18.42 -shl,floor,16,13,1613104,9,12.18,11.99,19.72 -shl,gmp,16,13,5744606,9,3.48,3.47,20.26 -shl,gmpz,16,13,3756753,9,5.07,4.99,19.09 -shl,auto,256,13,484868,9,41.18,41.07,19.99 -shl,inplace,256,13,336302,9,29.84,29.74,20.08 -shl,kernel,256,13,407262,9,49.10,49.06,20.02 -shl,kernelip,256,13,205525,9,48.71,48.50,20.07 -shl,floor,256,13,347967,9,57.71,57.00,20.09 -shl,gmp,256,13,544199,9,36.90,36.81,20.10 -shl,gmpz,256,13,528665,9,37.88,37.75,20.18 -shl,auto,2000,13,82633,9,263.59,240.64,22.56 -shl,inplace,2000,13,51049,9,196.01,195.41,20.01 -shl,kernel,2000,13,52112,9,382.58,379.20,20.05 -shl,kernelip,2000,13,26554,9,376.89,374.06,20.31 -shl,floor,2000,13,50253,9,399.67,396.37,20.10 -shl,gmp,2000,13,48518,9,1714.36,600.91,80.74 -shl,gmpz,2000,13,34981,9,1761.89,987.08,60.33 -shl,auto,2000,77,65540,9,410.15,290.27,26.43 -shl,inplace,2000,77,43961,9,229.68,228.90,20.25 -shl,kernel,2000,77,37861,9,529.93,526.08,20.05 -shl,kernelip,2000,77,18837,9,519.38,514.19,19.67 -shl,floor,2000,77,37027,9,537.95,536.07,19.94 -shl,gmp,2000,77,69641,9,290.27,287.15,20.24 -shl,gmpz,2000,77,68686,9,288.25,287.23,19.95 -shr,auto,1,13,2879424,9,6.52,6.43,19.08 -shr,inplace,1,13,3001935,9,3.33,3.31,20.14 -shr,kernel,1,13,8970686,9,2.24,2.23,20.07 -shr,floor,1,13,8013846,9,2.48,2.30,19.86 -shr,gmp,1,13,20000001,9,0.99,0.99,19.98 -shr,gmpz,1,13,10070833,9,1.98,1.98,19.99 -shr,auto,4,13,1402625,9,14.03,13.83,19.70 -shr,inplace,4,13,2674589,9,3.87,3.77,20.65 -shr,kernel,4,13,5362678,9,3.73,3.53,19.79 -shr,floor,4,13,1643246,9,12.19,12.11,20.49 -shr,gmp,4,13,11559818,9,1.74,1.73,20.12 -shr,gmpz,4,13,7306169,9,2.73,2.72,19.95 -shr,auto,16,13,1078921,9,18.36,17.90,19.72 -shr,inplace,16,13,1925289,9,5.24,5.22,20.32 -shr,kernel,16,13,4815886,9,4.16,4.15,20.04 -shr,floor,16,13,1516117,9,12.97,12.86,19.99 -shr,gmp,16,13,6198192,9,3.23,3.22,20.01 -shr,gmpz,16,13,4719605,9,4.24,4.23,20.02 -shr,auto,256,13,474884,9,43.86,42.18,20.67 -shr,inplace,256,13,327400,9,30.54,30.30,19.99 -shr,kernel,256,13,300579,9,66.66,66.36,20.10 -shr,floor,256,13,264961,9,75.24,74.71,19.95 -shr,gmp,256,13,542868,9,36.74,36.65,19.94 -shr,gmpz,256,13,518228,9,38.06,37.95,19.73 -shr,auto,2000,13,86139,9,251.08,228.35,22.11 -shr,inplace,2000,13,51102,9,196.59,195.75,20.18 -shr,kernel,2000,13,39036,9,515.47,505.94,20.04 -shr,floor,2000,13,38335,9,524.58,519.40,20.13 -shr,gmp,2000,13,68490,9,291.00,289.73,20.08 -shr,gmpz,2000,13,66171,9,297.09,286.83,19.85 -shr,auto,2000,77,88843,9,263.16,242.49,23.81 -shr,inplace,2000,77,50980,9,195.67,195.41,19.98 -shr,kernel,2000,77,38688,9,514.50,510.42,19.92 -shr,floor,2000,77,38285,9,526.31,520.76,20.10 -shr,gmp,2000,77,68620,9,290.07,289.50,19.95 -shr,gmpz,2000,77,69103,9,288.44,286.11,19.95 -mul,auto,1,1,1385887,9,14.78,14.25,21.18 -mul,gmp,1,1,5373267,9,3.74,3.71,20.21 -mul,gmpz,1,1,7300925,9,2.74,2.73,20.01 -mul,auto,2,2,1086378,9,18.60,18.35,20.31 -mul,kernel,2,2,3154453,9,6.36,6.23,19.96 -mul,floor,2,2,1346097,9,14.72,14.38,19.98 -mul,gmp,2,2,4242804,9,4.73,4.71,20.07 -mul,gmpz,2,2,2969505,9,6.74,6.71,20.03 -mul,auto,3,3,1018363,9,19.52,19.24,19.96 -mul,kernel,3,3,2223326,9,9.41,8.18,20.55 -mul,floor,3,3,1223690,9,16.64,16.43,20.67 -mul,gmp,3,3,3219055,9,6.13,6.08,19.77 -mul,gmpz,3,3,2236817,9,9.62,8.74,21.96 -mul,auto,4,4,948656,9,21.45,21.29,20.48 -mul,kernel,4,4,1897189,9,10.98,10.62,20.70 -mul,floor,4,4,1153768,9,16.64,16.42,19.34 -mul,gmp,4,4,2157990,9,8.97,8.97,19.52 -mul,gmpz,4,4,1891604,9,11.01,10.94,20.92 -mul,auto,6,6,732458,9,27.59,27.51,20.23 -mul,kernel,6,6,1065768,9,18.80,18.53,20.02 -mul,floor,6,6,790901,9,23.46,23.34,18.85 -mul,gmp,6,6,1356257,9,14.88,14.46,20.08 -mul,gmpz,6,6,1062114,9,18.52,18.36,19.73 -mul,auto,8,8,573104,9,34.72,34.65,19.97 -mul,kernel,8,8,863785,9,23.02,22.86,19.87 -mul,floor,8,8,656714,9,30.64,30.15,20.16 -mul,gmp,8,8,887394,9,22.58,22.01,20.33 -mul,gmpz,8,8,770295,9,27.27,24.42,20.69 -mul,auto,12,12,363803,9,54.20,53.99,19.83 -mul,kernel,12,12,489353,9,40.83,40.75,20.00 -mul,floor,12,12,404799,9,49.48,49.22,20.04 -mul,gmp,12,12,451772,9,44.31,44.16,20.02 -mul,gmpz,12,12,429629,9,47.01,46.56,20.21 -mul,auto,16,16,242853,9,82.92,82.29,20.15 -mul,kernel,16,16,288178,9,69.46,69.35,20.05 -mul,floor,16,16,254727,9,78.66,78.34,20.05 -mul,gmp,16,16,258406,9,77.31,76.13,19.88 -mul,gmpz,16,16,256831,9,79.15,78.08,20.29 -mul,auto,32,32,70772,9,282.42,279.72,19.96 -mul,kernel,32,32,77475,9,257.69,256.92,19.97 -mul,floor,32,32,71872,9,280.89,278.64,20.36 -mul,gmp,32,32,72937,9,269.54,268.64,19.74 -mul,gmpz,32,32,73993,9,268.29,267.79,19.91 -mul,auto,64,64,19779,9,1007.00,1004.62,19.92 -mul,kernel,64,64,20328,9,984.27,981.35,20.01 -mul,floor,64,64,19766,9,1010.06,1006.00,19.97 -mul,gmp,64,64,25523,9,773.17,771.14,19.75 -mul,gmpz,64,64,25547,9,778.89,774.85,19.90 -mul,auto,128,128,5555,9,3581.56,3572.32,19.90 -mul,kernel,128,128,5578,9,3588.48,3575.92,20.13 -mul,floor,128,128,5556,9,3595.17,3584.42,19.97 -mul,gmp,128,128,7558,9,2642.18,2625.42,20.01 -mul,gmpz,128,128,6583,9,3002.04,2983.46,19.78 -mul,auto,256,256,1708,9,11761.71,11732.87,20.11 -mul,kernel,256,256,1694,9,11774.89,11746.41,19.97 -mul,floor,256,256,1697,9,11807.80,11748.26,20.05 -mul,gmp,256,256,2554,9,7825.18,7813.33,20.00 -mul,gmpz,256,256,2557,9,7811.56,7800.55,19.99 -mul,auto,512,512,539,9,37137.45,37028.14,20.04 -mul,kernel,512,512,543,9,36947.97,36796.58,20.08 -mul,floor,512,512,541,9,36948.09,36802.45,19.99 -mul,gmp,512,512,1053,9,18972.70,18957.58,20.01 -mul,gmpz,512,512,1054,9,19078.79,19004.43,20.09 -mul,auto,1000,1000,188,9,106940.38,106285.02,20.12 -mul,kernel,1000,1000,187,9,106778.97,106459.01,19.97 -mul,floor,1000,1000,188,9,106831.12,106568.27,20.08 -mul,gmp,1000,1000,365,9,55440.98,54993.04,20.23 -mul,gmpz,1000,1000,363,9,55099.75,54731.17,20.03 -mul,auto,2000,2000,67,9,301538.57,299996.27,20.20 -mul,kernel,2000,2000,66,9,304584.61,302908.47,20.10 -mul,floor,2000,2000,66,9,305273.36,304018.94,20.24 -mul,gmp,2000,2000,135,9,148283.64,147172.53,20.03 -mul,gmpz,2000,2000,135,9,148881.79,147843.21,20.08 -mul,auto,2000,100,432,9,46365.74,46189.24,20.04 -mul,kernel,2000,100,431,9,46778.23,46466.45,20.19 -mul,floor,2000,100,425,9,46763.24,46612.25,19.87 -mul,gmp,2000,100,572,9,35078.23,34844.26,20.07 -mul,gmpz,2000,100,577,9,34705.95,34583.12,20.03 -sqr,auto,4,4,934600,9,21.39,21.33,20.03 -sqr,kernel,4,4,1772359,9,11.28,11.23,20.01 -sqr,floor,4,4,1211066,9,16.66,16.18,20.04 -sqr,gmp,4,4,3088546,9,6.45,6.45,19.98 -sqr,gmpz,4,4,2091585,9,9.63,9.44,20.13 -sqr,auto,16,16,263528,9,75.40,74.78,19.85 -sqr,kernel,16,16,313291,9,63.80,63.64,19.99 -sqr,floor,16,16,276048,9,72.61,72.49,20.05 -sqr,gmp,16,16,313781,9,62.16,59.42,19.47 -sqr,gmpz,16,16,304736,9,66.30,65.13,20.14 -sqr,auto,64,64,33353,9,599.95,597.77,20.01 -sqr,kernel,64,64,34421,9,580.33,579.25,19.97 -sqr,floor,64,64,33446,9,598.13,597.07,20.11 -sqr,gmp,64,64,29578,9,674.64,670.17,19.95 -sqr,gmpz,64,64,29002,9,675.42,655.95,19.77 -sqr,auto,512,512,816,9,24538.40,24290.95,19.96 -sqr,kernel,512,512,821,9,24327.85,24248.02,19.97 -sqr,floor,512,512,819,9,24339.74,24296.70,19.95 -sqr,gmp,512,512,1093,9,18407.52,18087.53,20.14 -sqr,gmpz,512,512,1023,9,19647.36,19453.08,20.06 -sqr,auto,2000,2000,90,9,222767.13,221259.72,20.07 -sqr,kernel,2000,2000,90,9,224975.92,223084.26,20.22 -sqr,floor,2000,2000,90,9,224349.53,222912.03,20.27 -sqr,gmp,2000,2000,168,9,120515.38,118786.96,20.24 -sqr,gmpz,2000,2000,167,9,120664.43,118697.11,20.14 -divrem,auto,2,1,727400,9,27.57,27.38,20.16 -divrem,kernel,2,1,3560137,9,5.72,5.70,20.37 -divrem,floor,2,1,1517633,9,12.71,12.66,19.52 -divrem,gmp,2,1,3997303,9,5.02,4.99,20.52 -divrem,gmpz,2,1,2299811,9,8.74,8.69,20.13 -divrem,auto,8,4,280082,9,71.00,69.95,19.88 -divrem,kernel,8,4,490825,9,41.03,40.43,20.07 -divrem,floor,8,4,354076,9,55.97,55.63,19.79 -divrem,gmp,8,4,480098,9,39.74,39.32,19.10 -divrem,gmpz,8,4,469057,9,43.26,42.46,20.28 -divrem,auto,32,16,46442,9,430.66,429.87,20.01 -divrem,kernel,32,16,50766,9,396.85,393.94,20.17 -divrem,floor,32,16,48323,9,413.81,400.47,19.97 -divrem,gmp,32,16,94847,9,208.52,204.40,19.79 -divrem,gmpz,32,16,95219,9,209.97,207.07,19.95 -divrem,auto,128,64,5421,9,3704.32,3630.96,20.02 -divrem,kernel,128,64,5583,9,3582.25,3497.69,19.94 -divrem,floor,128,64,5494,9,3642.58,3579.09,19.97 -divrem,gmp,128,64,11262,9,1801.10,1777.99,20.42 -divrem,gmpz,128,64,11161,9,1789.32,1776.73,19.97 -divrem,auto,512,256,673,9,29719.42,29478.33,19.99 -divrem,kernel,512,256,674,9,29638.97,29207.72,20.12 -divrem,floor,512,256,673,9,29433.57,29095.78,19.79 -divrem,gmp,512,256,1223,9,16351.49,16304.82,20.00 -divrem,gmpz,512,256,1225,9,16378.64,16272.89,20.05 -divrem,auto,2000,1000,87,9,232266.76,231345.78,20.22 -divrem,kernel,2000,1000,87,9,231319.92,230353.92,20.15 -divrem,floor,2000,1000,87,9,231415.23,230467.44,20.14 -divrem,gmp,2000,1000,148,9,135441.44,134942.28,20.05 -divrem,gmpz,2000,1000,150,9,134865.83,134107.22,20.23 -divrem,auto,4000,2000,30,9,685788.87,683083.33,20.58 -divrem,kernel,4000,2000,30,9,684544.43,680877.77,20.54 -divrem,floor,4000,2000,29,9,686102.03,682168.10,19.92 -divrem,gmp,4000,2000,59,9,342356.64,341458.32,20.20 -divrem,gmpz,4000,2000,59,9,342310.03,341214.68,20.21 -divrem,auto,2000,100,214,9,93940.81,93675.23,20.13 -divrem,kernel,2000,100,214,9,93559.58,93307.05,20.02 -divrem,floor,2000,100,214,9,93671.93,93371.50,20.05 -divrem,gmp,2000,100,289,9,69368.65,68953.43,20.06 -divrem,gmpz,2000,100,289,9,69379.03,68893.45,20.04 -divrem,auto,65536,1,87,9,226373.09,223908.53,19.79 -divrem,kernel,65536,1,89,9,229074.44,223875.47,20.29 -divrem,floor,65536,1,84,9,229676.10,224643.36,19.23 -divrem,gmp,65536,1,118,9,168897.60,164526.83,19.91 -divrem,gmpz,65536,1,116,9,170277.30,166681.03,19.69 -fromchars,auto,4,10,218308,9,91.66,91.15,20.01 -fromchars,kernel,4,10,613681,9,32.82,31.81,20.08 -fromchars,gmp,4,10,660655,9,30.97,30.05,20.39 -fromchars,gmpz,4,10,263756,9,77.26,75.59,20.26 -fromchars,auto,16,10,50230,9,396.21,393.01,20.02 -fromchars,kernel,16,10,103728,9,189.87,187.62,19.72 -fromchars,gmp,16,10,137000,9,142.62,141.65,19.61 -fromchars,gmpz,16,10,63014,9,318.60,313.88,20.08 -fromchars,auto,64,10,9182,9,2175.27,2146.95,19.93 -fromchars,kernel,64,10,10793,9,1856.60,1795.56,19.96 -fromchars,gmp,64,10,20607,9,961.06,957.23,19.86 -fromchars,gmpz,64,10,12589,9,1602.34,1591.18,20.15 -fromchars,auto,256,10,1452,9,13786.33,13723.20,20.03 -fromchars,kernel,256,10,1733,9,11531.86,11469.59,19.98 -fromchars,gmp,256,10,2540,9,7963.37,7889.80,20.20 -fromchars,gmpz,256,10,1857,9,10816.08,10591.81,20.02 -fromchars,auto,2000,10,67,9,299946.51,299512.43,20.12 -fromchars,kernel,2000,10,71,9,282765.85,281528.17,20.09 -fromchars,gmp,2000,10,107,9,184035.44,183250.00,19.87 -fromchars,gmpz,2000,10,99,9,203202.44,201667.52,20.11 diff --git a/tests/beman/big_int/perf/item1/mac_new64_seed2a.csv b/tests/beman/big_int/perf/item1/mac_new64_seed2a.csv deleted file mode 100644 index 70eeebf3..00000000 --- a/tests/beman/big_int/perf/item1/mac_new64_seed2a.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T17:03:23Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2768273,9,7.62,7.21,21.00 -add,inplace,1,1,2770409,9,3.60,3.60,20.00 -add,kernel,1,1,17444399,9,1.14,1.14,19.93 -add,floor,1,1,2122517,9,9.24,9.17,19.67 -add,gmp,1,1,13403291,9,1.49,1.49,20.05 -add,gmpz,1,1,6698076,9,2.98,2.97,19.95 -add,auto,2,2,1284735,9,14.99,14.51,19.26 -add,inplace,2,2,2602083,9,3.89,3.85,20.20 -add,kernel,2,2,14393581,9,1.39,1.39,20.02 -add,floor,2,2,2119273,9,9.44,9.41,20.14 -add,gmp,2,2,10120754,9,1.98,1.97,20.07 -add,gmpz,2,2,5560106,9,3.36,3.29,19.99 -add,auto,4,4,1395905,9,14.38,14.09,20.00 -add,inplace,4,4,2763499,9,3.36,3.34,19.01 -add,kernel,4,4,10330823,9,1.93,1.93,19.97 -add,floor,4,4,1911722,9,10.43,10.41,19.97 -add,gmp,4,4,11497660,9,1.74,1.73,19.97 -add,gmpz,4,4,3440835,9,6.08,5.92,20.81 -add,auto,8,8,1335463,9,14.61,14.53,19.71 -add,inplace,8,8,2520701,9,4.01,3.86,20.25 -add,kernel,8,8,5718084,9,3.47,3.43,19.79 -add,floor,8,8,1649891,9,12.04,11.91,19.89 -add,gmp,8,8,8874994,9,2.23,2.23,19.86 -add,gmpz,8,8,4470032,9,4.47,4.30,20.05 -add,auto,16,16,1183579,9,17.12,17.06,20.26 -add,inplace,16,16,1754978,9,5.59,5.59,19.68 -add,kernel,16,16,2649755,9,7.57,7.53,20.04 -add,floor,16,16,1460637,9,13.50,13.46,19.77 -add,gmp,16,16,6421474,9,3.23,3.22,20.74 -add,gmpz,16,16,4982947,9,4.47,4.46,22.36 -add,auto,64,64,488864,9,41.37,37.95,20.00 -add,inplace,64,64,502310,9,19.99,19.85,20.05 -add,kernel,64,64,412826,9,48.92,47.74,20.09 -add,floor,64,64,328297,9,60.87,60.01,19.94 -add,gmp,64,64,1803314,9,11.10,11.01,20.04 -add,gmpz,64,64,1546345,9,13.01,12.82,20.09 -add,auto,256,256,183301,9,110.00,108.07,20.26 -add,inplace,256,256,98503,9,100.76,99.02,19.80 -add,kernel,256,256,87160,9,232.18,225.24,20.20 -add,floor,256,256,81577,9,246.00,241.93,20.03 -add,gmp,256,256,352686,9,57.02,56.30,20.08 -add,gmpz,256,256,329026,9,57.84,56.97,19.03 -add,auto,1024,1024,44333,9,449.40,446.23,19.97 -add,inplace,1024,1024,22965,9,435.27,434.27,19.99 -add,kernel,1024,1024,20431,9,973.31,969.80,20.14 -add,floor,1024,1024,19934,9,990.36,961.05,19.62 -add,gmp,1024,1024,79961,9,250.27,244.11,19.93 -add,gmpz,1024,1024,79658,9,253.27,250.67,20.16 -add,auto,2000,2000,22500,9,901.69,868.20,20.17 -add,inplace,2000,2000,11736,9,847.58,834.94,19.90 -add,kernel,2000,2000,10424,9,1914.56,1851.60,19.87 -add,floor,2000,2000,9934,9,1932.17,1878.93,19.10 -add,gmp,2000,2000,40525,9,495.45,488.38,20.07 -add,gmpz,2000,2000,40284,9,497.03,490.00,20.02 -add,auto,1024,1,192265,9,110.54,97.05,20.21 -add,inplace,1024,1,3360114,9,2.98,2.96,20.01 -add,kernel,1024,1,27053,9,736.66,713.00,19.76 -add,floor,1024,1,26488,9,754.39,736.91,19.90 -add,gmp,1024,1,75863,9,263.32,256.13,19.93 -add,gmpz,1024,1,76479,9,264.76,261.42,20.24 -sub,auto,1,1,2490581,9,8.08,7.93,20.15 -sub,inplace,1,1,2978828,9,3.57,3.33,20.98 -sub,kernel,1,1,18936393,9,1.06,1.04,20.01 -sub,floor,1,1,11482970,9,1.75,1.74,20.22 -sub,gmp,1,1,13301781,9,1.49,1.49,19.84 -sub,gmpz,1,1,8053386,9,2.48,2.48,20.00 -sub,auto,2,2,1355991,9,14.77,14.42,20.04 -sub,inplace,2,2,2873550,9,3.48,3.47,20.04 -sub,kernel,2,2,14130837,9,1.43,1.41,20.17 -sub,floor,2,2,2111263,9,9.45,9.41,20.27 -sub,gmp,2,2,11436561,9,1.84,1.74,19.63 -sub,gmpz,2,2,7315491,9,2.74,2.73,20.61 -sub,auto,4,4,1378058,9,17.13,14.56,20.03 -sub,inplace,4,4,2756491,9,3.63,3.60,20.21 -sub,kernel,4,4,10291854,9,1.94,1.93,19.98 -sub,floor,4,4,1921661,9,10.42,10.40,20.05 -sub,gmp,4,4,11040786,9,1.74,1.73,19.22 -sub,gmpz,4,4,7324301,9,2.73,2.73,19.99 -sub,auto,8,8,1281943,9,15.59,15.41,20.03 -sub,inplace,8,8,2440724,9,4.08,3.97,19.91 -sub,kernel,8,8,5765640,9,3.50,3.48,20.23 -sub,floor,8,8,1630349,9,11.66,11.39,19.10 -sub,gmp,8,8,8935348,9,2.23,2.23,19.95 -sub,gmpz,8,8,6189907,9,3.23,3.22,20.03 -sub,auto,16,16,1145465,9,17.48,17.42,20.05 -sub,inplace,16,16,1890958,9,5.23,5.21,19.78 -sub,kernel,16,16,2596908,9,7.68,7.66,19.96 -sub,floor,16,16,1340603,9,15.54,14.92,20.62 -sub,gmp,16,16,6728999,9,3.12,2.96,20.84 -sub,gmpz,16,16,4585450,9,4.36,4.34,20.02 -sub,auto,64,64,522650,9,35.87,35.73,19.10 -sub,inplace,64,64,506057,9,19.84,19.70,20.09 -sub,kernel,64,64,406855,9,49.48,47.91,20.05 -sub,floor,64,64,332431,9,59.66,58.56,19.79 -sub,gmp,64,64,1778911,9,11.20,11.12,19.93 -sub,gmpz,64,64,1449748,9,13.91,13.66,20.12 -sub,auto,256,256,178515,9,110.29,109.20,19.65 -sub,inplace,256,256,99050,9,100.68,98.33,19.87 -sub,kernel,256,256,86008,9,235.05,226.45,20.15 -sub,floor,256,256,81654,9,245.74,242.83,20.09 -sub,gmp,256,256,351083,9,56.88,55.63,19.92 -sub,gmpz,256,256,345694,9,57.86,57.19,19.98 -sub,auto,1024,1024,33410,9,589.17,585.42,19.79 -sub,inplace,1024,1024,23681,9,435.73,430.24,20.60 -sub,kernel,1024,1024,20403,9,978.81,940.49,19.86 -sub,floor,1024,1024,20290,9,978.91,953.22,19.85 -sub,gmp,1024,1024,80285,9,251.41,248.58,20.15 -sub,gmpz,1024,1024,78822,9,253.47,249.98,19.94 -sub,auto,2000,2000,22696,9,868.91,860.56,19.69 -sub,inplace,2000,2000,11475,9,848.60,833.40,19.55 -sub,kernel,2000,2000,10337,9,1925.83,1872.82,19.80 -sub,floor,2000,2000,9872,9,1909.26,1864.35,18.93 -sub,gmp,2000,2000,40349,9,494.05,486.96,19.93 -sub,gmpz,2000,2000,40277,9,497.34,485.20,19.93 -sub,auto,1024,1,189082,9,116.96,97.61,21.76 -sub,inplace,1024,1,3357413,9,2.98,2.97,20.02 -sub,kernel,1024,1,27189,9,725.70,717.80,19.72 -sub,floor,1024,1,26619,9,756.71,727.77,20.21 -sub,gmp,1024,1,75202,9,261.66,255.05,19.61 -sub,gmpz,1024,1,75984,9,264.16,258.36,20.02 -shl,auto,1,13,1655185,9,13.70,12.14,21.78 -shl,inplace,1,13,4019869,9,2.48,2.48,20.08 -shl,kernel,1,13,8921400,9,2.23,2.22,19.92 -shl,kernelip,1,13,8936527,9,1.77,1.13,27.79 -shl,floor,1,13,1819455,9,11.15,10.91,20.57 -shl,gmp,1,13,16147122,9,1.24,1.24,20.01 -shl,gmpz,1,13,10086651,9,1.98,1.98,20.01 -shl,auto,4,13,1554056,9,12.85,12.80,20.04 -shl,inplace,4,13,2597077,9,3.84,3.76,20.00 -shl,kernel,4,13,5251533,9,3.73,3.72,19.63 -shl,kernelip,4,13,2985601,9,3.38,3.32,20.11 -shl,floor,4,13,1522217,9,14.10,13.12,21.17 -shl,gmp,4,13,10071850,9,1.99,1.98,20.07 -shl,gmpz,4,13,7267344,9,2.73,2.72,19.86 -shl,auto,16,13,1221423,9,16.03,15.92,19.71 -shl,inplace,16,13,1891439,9,5.28,5.26,19.98 -shl,kernel,16,13,4841082,9,4.14,4.12,20.05 -shl,kernelip,16,13,1344486,9,6.81,6.80,18.33 -shl,floor,16,13,1591164,9,12.40,11.99,19.53 -shl,gmp,16,13,5758597,9,3.48,3.47,20.03 -shl,gmpz,16,13,3776564,9,5.15,5.13,19.83 -shl,auto,256,13,481546,9,40.93,40.64,19.85 -shl,inplace,256,13,336681,9,29.78,29.72,20.06 -shl,kernel,256,13,407955,9,49.50,49.08,20.19 -shl,kernelip,256,13,205260,9,48.68,48.44,19.98 -shl,floor,256,13,342378,9,57.35,57.26,19.65 -shl,gmp,256,13,539132,9,36.87,36.82,19.88 -shl,gmpz,256,13,528255,9,37.83,37.79,20.00 -shl,auto,2000,13,73917,9,268.45,249.18,19.27 -shl,inplace,2000,13,51139,9,197.00,195.83,20.18 -shl,kernel,2000,13,52013,9,383.52,381.99,19.95 -shl,kernelip,2000,13,26554,9,376.35,374.56,19.97 -shl,floor,2000,13,49208,9,404.14,400.48,19.86 -shl,gmp,2000,13,17297,9,1974.21,1148.86,31.91 -shl,gmpz,2000,13,11477,9,2880.10,2026.69,25.53 -shl,auto,2000,77,68554,9,493.41,358.72,28.35 -shl,inplace,2000,77,43898,9,228.39,227.23,20.07 -shl,kernel,2000,77,37165,9,529.27,525.21,19.83 -shl,kernelip,2000,77,19533,9,519.86,509.22,20.26 -shl,floor,2000,77,36809,9,539.79,535.03,19.86 -shl,gmp,2000,77,69393,9,287.96,286.74,20.03 -shl,gmpz,2000,77,68527,9,289.51,287.10,19.94 -shr,auto,1,13,3091796,9,6.69,5.95,20.13 -shr,inplace,1,13,3023972,9,3.32,3.29,20.06 -shr,kernel,1,13,8963189,9,2.24,2.22,20.10 -shr,floor,1,13,8041193,9,2.48,2.43,19.98 -shr,gmp,1,13,20000001,9,0.99,0.99,19.86 -shr,gmpz,1,13,10066737,9,1.99,1.98,20.02 -shr,auto,4,13,1436013,9,13.92,13.75,20.02 -shr,inplace,4,13,2814111,9,3.61,3.55,20.80 -shr,kernel,4,13,5376832,9,3.72,3.70,20.00 -shr,floor,4,13,1746326,9,11.97,11.90,21.17 -shr,gmp,4,13,11414064,9,1.74,1.73,19.87 -shr,gmpz,4,13,7251802,9,2.75,2.72,20.06 -shr,auto,16,13,1105719,9,18.15,18.08,20.21 -shr,inplace,16,13,1929327,9,5.31,5.25,20.45 -shr,kernel,16,13,4824697,9,4.15,4.15,20.05 -shr,floor,16,13,1580116,9,13.21,12.98,20.89 -shr,gmp,16,13,6201215,9,3.23,3.22,20.00 -shr,gmpz,16,13,4732086,9,4.23,4.22,20.04 -shr,auto,256,13,476495,9,42.92,41.96,20.35 -shr,inplace,256,13,328705,9,30.34,30.07,19.97 -shr,kernel,256,13,300759,9,66.38,66.05,19.98 -shr,floor,256,13,266321,9,75.50,74.86,20.14 -shr,gmp,256,13,544219,9,36.70,36.63,20.01 -shr,gmpz,256,13,522726,9,38.09,37.94,19.90 -shr,auto,2000,13,75546,9,276.54,246.90,20.72 -shr,inplace,2000,13,50934,9,196.48,195.68,19.99 -shr,kernel,2000,13,39122,9,510.85,506.59,19.98 -shr,floor,2000,13,37860,9,525.84,521.62,19.97 -shr,gmp,2000,13,66748,9,326.05,291.30,20.81 -shr,gmpz,2000,13,70055,9,298.36,286.09,20.52 -shr,auto,2000,77,74824,9,281.22,242.71,20.81 -shr,inplace,2000,77,50716,9,196.03,195.65,19.88 -shr,kernel,2000,77,38691,9,516.73,512.20,20.02 -shr,floor,2000,77,38205,9,526.15,523.84,20.11 -shr,gmp,2000,77,67998,9,290.70,289.21,19.95 -shr,gmpz,2000,77,67609,9,288.53,286.55,19.53 -mul,auto,1,1,1407408,9,14.13,13.95,19.99 -mul,gmp,1,1,5369867,9,3.72,3.71,20.00 -mul,gmpz,1,1,7292019,9,2.73,2.73,19.95 -mul,auto,2,2,1076653,9,19.09,18.37,20.38 -mul,kernel,2,2,3103358,9,6.39,6.24,19.80 -mul,floor,2,2,1390330,9,14.41,14.35,20.08 -mul,gmp,2,2,4462026,9,4.71,4.67,21.01 -mul,gmpz,2,2,3073713,9,6.86,6.51,20.92 -mul,auto,3,3,1060335,9,19.53,18.66,20.68 -mul,kernel,3,3,2472180,9,8.19,8.17,20.28 -mul,floor,3,3,1169458,9,16.66,16.30,19.65 -mul,gmp,3,3,3033992,9,6.42,6.34,19.47 -mul,gmpz,3,3,2595203,9,9.30,7.69,24.11 -mul,auto,4,4,937477,9,21.62,21.33,20.22 -mul,kernel,4,4,1897395,9,11.39,10.59,21.28 -mul,floor,4,4,1171622,9,16.92,16.60,19.75 -mul,gmp,4,4,2213307,9,8.95,8.92,19.80 -mul,gmpz,4,4,2049825,9,10.17,9.71,20.61 -mul,auto,6,6,739564,9,27.35,27.13,20.23 -mul,kernel,6,6,1026611,9,18.69,18.50,19.36 -mul,floor,6,6,854876,9,23.56,23.28,20.07 -mul,gmp,6,6,1397073,9,14.38,14.25,20.26 -mul,gmpz,6,6,1083309,9,17.73,17.44,19.48 -mul,auto,8,8,572226,9,35.74,35.32,20.54 -mul,kernel,8,8,872034,9,22.95,22.92,20.02 -mul,floor,8,8,659881,9,30.36,30.16,20.06 -mul,gmp,8,8,886819,9,23.98,22.62,21.56 -mul,gmpz,8,8,817316,9,24.96,24.46,20.27 -mul,auto,12,12,368972,9,54.06,53.89,19.95 -mul,kernel,12,12,490562,9,40.89,40.77,20.09 -mul,floor,12,12,379486,9,49.64,49.45,18.86 -mul,gmp,12,12,452676,9,44.32,44.08,20.07 -mul,gmpz,12,12,427372,9,46.66,46.57,19.95 -mul,auto,16,16,239028,9,82.55,82.35,19.77 -mul,kernel,16,16,287645,9,69.54,69.28,20.04 -mul,floor,16,16,253331,9,78.65,78.19,19.94 -mul,gmp,16,16,259168,9,76.63,76.06,19.93 -mul,gmpz,16,16,257387,9,77.87,77.69,20.04 -mul,auto,32,32,71495,9,281.26,279.27,20.14 -mul,kernel,32,32,77421,9,258.38,257.53,20.06 -mul,floor,32,32,71960,9,279.10,277.37,20.16 -mul,gmp,32,32,75269,9,259.80,257.78,19.67 -mul,gmpz,32,32,76193,9,261.07,260.40,19.90 -mul,auto,64,64,19910,9,1009.02,1005.32,20.10 -mul,kernel,64,64,20333,9,985.54,982.12,20.15 -mul,floor,64,64,19885,9,1009.79,1008.10,20.08 -mul,gmp,64,64,25785,9,772.03,770.59,19.94 -mul,gmpz,64,64,25678,9,779.80,775.89,20.03 -mul,auto,128,128,5597,9,3581.11,3563.94,20.06 -mul,kernel,128,128,5580,9,3585.48,3574.63,20.00 -mul,floor,128,128,5547,9,3592.98,3588.07,19.95 -mul,gmp,128,128,7519,9,2661.44,2639.12,20.03 -mul,gmpz,128,128,6559,9,3020.71,3014.01,19.84 -mul,auto,256,256,1706,9,11866.31,11738.57,20.17 -mul,kernel,256,256,1684,9,11839.44,11823.68,19.96 -mul,floor,256,256,1703,9,11776.16,11745.65,20.06 -mul,gmp,256,256,2552,9,7855.29,7818.70,20.08 -mul,gmpz,256,256,2552,9,7901.17,7814.39,20.14 -mul,auto,512,512,544,9,36878.98,36803.62,20.07 -mul,kernel,512,512,542,9,36916.05,36836.72,20.01 -mul,floor,512,512,534,9,36984.32,36801.81,19.77 -mul,gmp,512,512,1053,9,18986.86,18941.28,20.02 -mul,gmpz,512,512,1055,9,18985.86,18909.44,20.02 -mul,auto,1000,1000,188,9,106607.05,106129.65,20.04 -mul,kernel,1000,1000,188,9,107060.06,106705.01,20.16 -mul,floor,1000,1000,189,9,106938.27,106621.92,20.29 -mul,gmp,1000,1000,362,9,55258.52,55072.06,20.00 -mul,gmpz,1000,1000,361,9,55311.17,55002.19,19.95 -mul,auto,2000,2000,66,9,304306.82,301835.86,20.09 -mul,kernel,2000,2000,67,9,301794.15,299247.52,20.22 -mul,floor,2000,2000,67,9,301988.19,299912.93,20.21 -mul,gmp,2000,2000,135,9,149025.31,148431.79,20.13 -mul,gmpz,2000,2000,135,9,148840.43,148031.18,20.11 -mul,auto,2000,100,434,9,46273.52,46104.94,20.09 -mul,kernel,2000,100,428,9,46739.10,46381.91,20.05 -mul,floor,2000,100,428,9,46653.62,46516.06,19.97 -mul,gmp,2000,100,570,9,35055.99,34994.37,19.99 -mul,gmpz,2000,100,574,9,34769.09,34606.93,19.97 -sqr,auto,4,4,947479,9,21.59,21.14,20.43 -sqr,kernel,4,4,1779823,9,11.25,11.06,20.08 -sqr,floor,4,4,1242960,9,16.17,15.88,20.10 -sqr,gmp,4,4,2876214,9,6.95,6.93,20.00 -sqr,gmpz,4,4,2104375,9,9.24,9.18,19.81 -sqr,auto,16,16,266438,9,75.29,74.75,20.09 -sqr,kernel,16,16,313862,9,63.81,63.50,20.12 -sqr,floor,16,16,275431,9,72.46,72.27,19.94 -sqr,gmp,16,16,315105,9,63.49,62.97,19.99 -sqr,gmpz,16,16,304350,9,65.81,65.54,20.02 -sqr,auto,64,64,33378,9,599.95,597.27,20.04 -sqr,kernel,64,64,34330,9,581.00,580.09,20.34 -sqr,floor,64,64,33382,9,598.60,596.78,20.00 -sqr,gmp,64,64,29876,9,672.02,668.41,20.11 -sqr,gmpz,64,64,29854,9,668.25,666.37,19.95 -sqr,auto,512,512,819,9,24376.83,24265.97,19.98 -sqr,kernel,512,512,813,9,24342.51,24279.62,19.88 -sqr,floor,512,512,818,9,24410.56,24374.24,20.00 -sqr,gmp,512,512,1084,9,18232.93,18098.06,19.77 -sqr,gmpz,512,512,1018,9,19699.74,19477.69,20.06 -sqr,auto,2000,2000,90,9,223354.17,221431.48,20.09 -sqr,kernel,2000,2000,90,9,222859.72,221710.19,20.07 -sqr,floor,2000,2000,90,9,223178.70,222555.09,20.12 -sqr,gmp,2000,2000,166,9,120304.22,119692.52,19.98 -sqr,gmpz,2000,2000,166,9,121046.19,119083.84,20.05 -divrem,auto,2,1,937064,9,21.33,21.26,19.99 -divrem,kernel,2,1,3184012,9,6.33,6.28,20.15 -divrem,floor,2,1,1457138,9,13.77,13.65,20.16 -divrem,gmp,2,1,3983960,9,5.03,4.92,20.14 -divrem,gmpz,2,1,2297181,9,8.67,8.64,19.97 -divrem,auto,8,4,247524,9,80.15,79.30,19.81 -divrem,kernel,8,4,393829,9,52.56,51.73,20.67 -divrem,floor,8,4,306345,9,65.31,64.12,19.98 -divrem,gmp,8,4,481908,9,41.79,41.18,20.11 -divrem,gmpz,8,4,450496,9,44.38,44.10,20.07 -divrem,auto,32,16,45959,9,433.90,426.76,19.90 -divrem,kernel,32,16,51410,9,390.24,381.72,20.33 -divrem,floor,32,16,48816,9,410.63,398.99,19.93 -divrem,gmp,32,16,96481,9,207.56,203.27,20.02 -divrem,gmpz,32,16,94457,9,209.55,207.92,19.84 -divrem,auto,128,64,5417,9,3676.71,3565.62,19.81 -divrem,kernel,128,64,5544,9,3606.32,3514.62,19.94 -divrem,floor,128,64,5531,9,3644.77,3579.71,20.16 -divrem,gmp,128,64,11334,9,1765.41,1746.26,19.99 -divrem,gmpz,128,64,11247,9,1764.12,1749.68,19.82 -divrem,auto,512,256,714,9,27391.86,27191.06,19.72 -divrem,kernel,512,256,735,9,27249.60,27108.45,20.02 -divrem,floor,512,256,739,9,27323.47,27092.75,20.20 -divrem,gmp,512,256,1212,9,16494.71,16425.30,20.11 -divrem,gmpz,512,256,1216,9,16478.10,16360.99,20.05 -divrem,auto,2000,1000,86,9,232616.77,232030.05,20.04 -divrem,kernel,2000,1000,86,9,232637.10,231350.77,20.00 -divrem,floor,2000,1000,87,9,231961.21,230639.85,20.19 -divrem,gmp,2000,1000,148,9,135758.16,135348.53,20.11 -divrem,gmpz,2000,1000,148,9,134683.84,134328.83,19.94 -divrem,auto,4000,2000,29,9,689918.10,686344.83,20.01 -divrem,kernel,4000,2000,29,9,690579.03,687475.55,20.02 -divrem,floor,4000,2000,30,9,691500.00,687200.00,20.78 -divrem,gmp,4000,2000,59,9,344500.00,343061.44,20.32 -divrem,gmpz,4000,2000,59,9,344158.19,342874.29,20.35 -divrem,auto,2000,100,212,9,94720.72,94359.08,20.08 -divrem,kernel,2000,100,213,9,94313.57,93882.63,20.09 -divrem,floor,2000,100,213,9,94256.26,94035.21,20.09 -divrem,gmp,2000,100,287,9,68898.08,68403.17,19.77 -divrem,gmpz,2000,100,292,9,68728.88,68510.70,20.08 -divrem,auto,65536,1,88,9,227642.51,223546.40,19.98 -divrem,kernel,65536,1,89,9,230899.82,226983.15,20.94 -divrem,floor,65536,1,87,9,231778.25,223497.61,20.03 -divrem,gmp,65536,1,118,9,169521.19,165746.47,19.97 -divrem,gmpz,65536,1,118,9,169923.03,169426.91,20.04 -fromchars,auto,4,10,207717,9,91.62,91.27,19.19 -fromchars,kernel,4,10,620952,9,32.63,32.06,20.22 -fromchars,gmp,4,10,602875,9,32.16,30.98,19.26 -fromchars,gmpz,4,10,263239,9,76.60,74.61,20.09 -fromchars,auto,16,10,50005,9,399.42,388.93,19.88 -fromchars,kernel,16,10,104371,9,192.24,185.56,19.98 -fromchars,gmp,16,10,137197,9,143.77,141.93,19.77 -fromchars,gmpz,16,10,63083,9,315.85,312.51,19.93 -fromchars,auto,64,10,9139,9,2181.84,2164.65,20.17 -fromchars,kernel,64,10,10773,9,1849.61,1803.16,19.83 -fromchars,gmp,64,10,21041,9,953.21,939.41,20.20 -fromchars,gmpz,64,10,12363,9,1623.56,1597.89,19.97 -fromchars,auto,256,10,1457,9,13795.84,13695.58,20.08 -fromchars,kernel,256,10,1736,9,11508.35,11457.13,19.99 -fromchars,gmp,256,10,2535,9,7982.25,7915.30,20.23 -fromchars,gmpz,256,10,1889,9,10773.34,10556.97,20.31 -fromchars,auto,2000,10,67,9,299945.90,298603.87,20.08 -fromchars,kernel,2000,10,69,9,282167.26,281167.87,19.54 -fromchars,gmp,2000,10,109,9,184082.57,183362.39,20.07 -fromchars,gmpz,2000,10,99,9,204372.47,203406.57,20.32 diff --git a/tests/beman/big_int/perf/item1/mac_new64_seed2b.csv b/tests/beman/big_int/perf/item1/mac_new64_seed2b.csv deleted file mode 100644 index a2cebf19..00000000 --- a/tests/beman/big_int/perf/item1/mac_new64_seed2b.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T17:06:24Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2687755,9,7.77,7.47,20.76 -add,inplace,1,1,2880711,9,3.23,3.22,19.15 -add,kernel,1,1,17491933,9,1.14,1.14,19.99 -add,floor,1,1,2119247,9,9.42,9.40,19.99 -add,gmp,1,1,13400718,9,1.49,1.48,19.91 -add,gmpz,1,1,6727363,9,2.97,2.95,19.98 -add,auto,2,2,1313025,9,15.43,14.69,20.09 -add,inplace,2,2,2618108,9,3.84,3.84,20.32 -add,kernel,2,2,14388364,9,1.39,1.39,19.98 -add,floor,2,2,2024383,9,9.91,9.78,20.04 -add,gmp,2,2,10092735,9,1.98,1.95,19.99 -add,gmpz,2,2,6626737,9,3.36,3.00,22.28 -add,auto,4,4,1410643,9,14.27,14.18,20.20 -add,inplace,4,4,2840409,9,3.49,3.48,19.84 -add,kernel,4,4,10210739,9,1.94,1.93,19.80 -add,floor,4,4,1908854,9,10.23,10.19,19.57 -add,gmp,4,4,11528791,9,1.74,1.74,20.12 -add,gmpz,4,4,3730149,9,6.03,5.63,22.44 -add,auto,8,8,1211558,9,15.04,14.91,18.38 -add,inplace,8,8,2431768,9,4.09,3.98,19.84 -add,kernel,8,8,5748435,9,3.47,3.45,19.99 -add,floor,8,8,1677309,9,11.93,11.91,20.08 -add,gmp,8,8,8954893,9,2.23,2.23,20.42 -add,gmpz,8,8,4534675,9,4.53,4.46,20.71 -add,auto,16,16,1193821,9,16.72,16.43,20.12 -add,inplace,16,16,1768704,9,5.59,5.58,19.92 -add,kernel,16,16,2649614,9,7.56,7.44,20.00 -add,floor,16,16,1436134,9,13.80,13.66,19.93 -add,gmp,16,16,6892355,9,2.91,2.88,20.14 -add,gmpz,16,16,5004317,9,4.05,4.03,20.97 -add,auto,64,64,507360,9,38.00,37.80,19.48 -add,inplace,64,64,502728,9,19.90,19.86,20.03 -add,kernel,64,64,405304,9,48.76,47.89,19.74 -add,floor,64,64,331613,9,60.50,60.31,20.09 -add,gmp,64,64,1792945,9,11.07,11.01,19.87 -add,gmpz,64,64,1548041,9,12.95,12.90,20.07 -add,auto,256,256,182791,9,109.17,106.30,19.91 -add,inplace,256,256,99686,9,101.11,98.69,20.16 -add,kernel,256,256,85201,9,235.28,229.20,20.08 -add,floor,256,256,80850,9,243.00,237.93,19.68 -add,gmp,256,256,351433,9,56.93,56.07,19.98 -add,gmpz,256,256,345397,9,57.88,56.91,19.94 -add,auto,1024,1024,44468,9,445.62,435.39,19.73 -add,inplace,1024,1024,23782,9,431.87,425.36,20.70 -add,kernel,1024,1024,20619,9,973.81,968.31,20.12 -add,floor,1024,1024,19853,9,994.13,984.07,20.20 -add,gmp,1024,1024,79856,9,250.37,245.62,19.92 -add,gmpz,1024,1024,79007,9,253.58,250.40,20.04 -add,auto,2000,2000,22586,9,889.54,871.00,20.11 -add,inplace,2000,2000,11660,9,842.77,819.42,19.58 -add,kernel,2000,2000,10470,9,1911.25,1868.19,19.98 -add,floor,2000,2000,10388,9,1959.48,1937.51,20.54 -add,gmp,2000,2000,40850,9,495.08,494.29,20.27 -add,gmpz,2000,2000,40269,9,496.12,487.48,19.94 -add,auto,1024,1,220168,9,104.39,89.20,21.19 -add,inplace,1024,1,3362393,9,2.98,2.97,20.25 -add,kernel,1024,1,26899,9,740.25,717.97,19.78 -add,floor,1024,1,26527,9,757.19,734.53,20.05 -add,gmp,1024,1,75929,9,263.60,258.10,20.05 -add,gmpz,1024,1,74174,9,264.73,258.99,19.60 -sub,auto,1,1,2601029,9,7.70,7.44,19.91 -sub,inplace,1,1,3087923,9,3.23,3.22,19.94 -sub,kernel,1,1,19097470,9,1.05,1.04,19.97 -sub,floor,1,1,11487573,9,1.74,1.73,20.02 -sub,gmp,1,1,13469510,9,1.49,1.48,20.11 -sub,gmpz,1,1,7987268,9,2.50,2.49,20.13 -sub,auto,2,2,1222480,9,16.85,16.55,20.56 -sub,inplace,2,2,2876033,9,3.48,3.47,20.05 -sub,kernel,2,2,14117096,9,1.42,1.41,19.98 -sub,floor,2,2,2120369,9,9.67,9.49,20.41 -sub,gmp,2,2,11523026,9,1.83,1.73,19.83 -sub,gmpz,2,2,7340334,9,2.75,2.73,20.79 -sub,auto,4,4,1404540,9,14.25,14.19,20.09 -sub,inplace,4,4,2879275,9,3.48,3.34,19.74 -sub,kernel,4,4,10296931,9,1.95,1.94,20.03 -sub,floor,4,4,1999376,9,10.01,9.89,20.04 -sub,gmp,4,4,11464857,9,1.74,1.73,19.93 -sub,gmpz,4,4,7318073,9,2.74,2.73,20.03 -sub,auto,8,8,1270315,9,15.59,15.42,19.80 -sub,inplace,8,8,2435001,9,4.11,4.08,20.23 -sub,kernel,8,8,5670085,9,3.49,3.48,19.80 -sub,floor,8,8,1754147,9,11.36,11.17,19.89 -sub,gmp,8,8,8938296,9,2.23,2.23,19.96 -sub,gmpz,8,8,6191624,9,3.23,3.22,20.00 -sub,auto,16,16,1163761,9,17.26,17.15,20.10 -sub,inplace,16,16,1898918,9,5.24,5.22,20.21 -sub,kernel,16,16,2599476,9,7.70,7.65,20.01 -sub,floor,16,16,1284352,9,14.89,14.65,19.18 -sub,gmp,16,16,6202599,9,3.23,3.22,20.06 -sub,gmpz,16,16,4739660,9,4.23,4.22,20.05 -sub,auto,64,64,559971,9,35.98,35.87,20.11 -sub,inplace,64,64,508498,9,19.86,19.81,20.33 -sub,kernel,64,64,407453,9,49.33,47.96,20.01 -sub,floor,64,64,329202,9,60.24,59.58,19.86 -sub,gmp,64,64,1758181,9,11.34,11.18,19.89 -sub,gmpz,64,64,1484116,9,13.39,13.31,19.87 -sub,auto,256,256,181517,9,109.96,108.16,19.91 -sub,inplace,256,256,98978,9,101.05,98.40,19.95 -sub,kernel,256,256,86371,9,236.45,229.21,20.35 -sub,floor,256,256,82107,9,245.45,239.69,20.05 -sub,gmp,256,256,334008,9,57.01,56.25,19.03 -sub,gmpz,256,256,346076,9,57.89,57.06,20.01 -sub,auto,1024,1024,44755,9,449.90,444.62,20.14 -sub,inplace,1024,1024,23279,9,434.96,432.74,20.25 -sub,kernel,1024,1024,20474,9,966.40,955.68,19.85 -sub,floor,1024,1024,20264,9,983.61,955.41,20.07 -sub,gmp,1024,1024,78659,9,251.64,247.60,19.74 -sub,gmpz,1024,1024,78833,9,254.13,253.25,20.08 -sub,auto,2000,2000,22763,9,881.65,852.94,20.00 -sub,inplace,2000,2000,11859,9,845.87,833.26,20.01 -sub,kernel,2000,2000,10477,9,1912.20,1888.95,20.03 -sub,floor,2000,2000,10346,9,1927.84,1891.81,19.94 -sub,gmp,2000,2000,40698,9,494.13,491.36,20.12 -sub,gmpz,2000,2000,39939,9,497.44,488.62,19.86 -sub,auto,1024,1,198059,9,104.81,95.66,21.22 -sub,inplace,1024,1,3356391,9,2.98,2.97,20.02 -sub,kernel,1024,1,27124,9,729.49,708.55,19.72 -sub,floor,1024,1,25756,9,759.08,740.15,19.61 -sub,gmp,1024,1,75151,9,262.99,259.53,19.70 -sub,gmpz,1024,1,76206,9,264.44,259.20,20.07 -shl,auto,1,13,1635713,9,12.19,11.92,19.74 -shl,inplace,1,13,3922954,9,2.49,2.48,19.63 -shl,kernel,1,13,8932683,9,2.23,2.23,19.98 -shl,kernelip,1,13,5645756,9,1.78,1.77,20.04 -shl,floor,1,13,1833187,9,11.05,10.95,20.46 -shl,gmp,1,13,16191987,9,1.24,1.24,20.13 -shl,gmpz,1,13,10046006,9,1.98,1.98,19.94 -shl,auto,4,13,1541315,9,13.02,12.95,20.29 -shl,inplace,4,13,2604131,9,3.88,3.80,20.31 -shl,kernel,4,13,5375912,9,3.73,3.71,20.07 -shl,kernelip,4,13,2953153,9,3.38,3.30,19.88 -shl,floor,4,13,1593318,9,12.66,12.45,20.29 -shl,gmp,4,13,10045106,9,1.98,1.97,19.93 -shl,gmpz,4,13,7281941,9,2.73,2.72,19.90 -shl,auto,16,13,1318857,9,16.34,15.22,21.46 -shl,inplace,16,13,1865858,9,5.30,5.28,19.80 -shl,kernel,16,13,4825445,9,4.14,4.12,19.97 -shl,kernelip,16,13,1376656,9,6.79,6.73,18.69 -shl,floor,16,13,1638646,9,11.92,11.77,19.60 -shl,gmp,16,13,5756333,9,3.47,3.46,20.01 -shl,gmpz,16,13,3894938,9,5.14,5.07,20.10 -shl,auto,256,13,484710,9,41.38,41.19,20.14 -shl,inplace,256,13,336295,9,29.76,29.72,20.05 -shl,kernel,256,13,407492,9,49.10,49.02,20.02 -shl,kernelip,256,13,205579,9,48.67,48.50,20.01 -shl,floor,256,13,348528,9,57.44,57.20,20.09 -shl,gmp,256,13,541343,9,37.07,36.87,20.08 -shl,gmpz,256,13,529570,9,37.87,37.75,20.05 -shl,auto,2000,13,85789,9,261.25,228.31,22.10 -shl,inplace,2000,13,51035,9,197.72,195.48,20.14 -shl,kernel,2000,13,51797,9,383.45,378.40,19.84 -shl,kernelip,2000,13,26587,9,376.35,375.51,20.02 -shl,floor,2000,13,49859,9,400.03,397.79,19.96 -shl,gmp,2000,13,12617,9,1753.90,1510.42,24.85 -shl,gmpz,2000,13,18492,9,1348.88,1052.99,27.21 -shl,auto,2000,77,67486,9,423.88,291.73,32.93 -shl,inplace,2000,77,43925,9,227.60,226.89,20.06 -shl,kernel,2000,77,37124,9,529.91,524.04,19.66 -shl,kernelip,2000,77,19209,9,520.43,507.96,19.96 -shl,floor,2000,77,37067,9,539.45,536.35,19.98 -shl,gmp,2000,77,69619,9,290.21,287.94,20.33 -shl,gmpz,2000,77,67539,9,289.19,286.62,19.64 -shr,auto,1,13,2980954,9,6.87,6.70,20.38 -shr,inplace,1,13,3001469,9,3.37,3.30,20.14 -shr,kernel,1,13,8936681,9,2.24,2.22,20.01 -shr,floor,1,13,7964083,9,2.48,2.44,19.84 -shr,gmp,1,13,20000001,9,0.99,0.99,19.86 -shr,gmpz,1,13,10073280,9,1.99,1.98,20.10 -shr,auto,4,13,1479936,9,13.98,13.53,20.59 -shr,inplace,4,13,2729906,9,3.60,3.58,19.98 -shr,kernel,4,13,5364861,9,3.73,3.72,20.00 -shr,floor,4,13,1754522,9,11.84,11.60,20.74 -shr,gmp,4,13,11506037,9,1.74,1.72,19.99 -shr,gmpz,4,13,7328061,9,2.73,2.72,19.99 -shr,auto,16,13,1117181,9,19.61,17.88,21.68 -shr,inplace,16,13,1922870,9,5.22,5.17,20.02 -shr,kernel,16,13,4783222,9,4.16,4.14,19.93 -shr,floor,16,13,1542990,9,12.69,12.59,19.59 -shr,gmp,16,13,6202582,9,3.23,3.22,20.03 -shr,gmpz,16,13,4726071,9,4.23,4.23,20.01 -shr,auto,256,13,468738,9,42.25,41.72,19.79 -shr,inplace,256,13,329854,9,30.34,30.28,20.02 -shr,kernel,256,13,300482,9,66.58,66.45,20.01 -shr,floor,256,13,265532,9,75.25,74.73,19.98 -shr,gmp,256,13,542437,9,36.79,36.66,20.05 -shr,gmpz,256,13,526214,9,38.10,37.95,20.07 -shr,auto,2000,13,90336,9,243.54,236.09,22.49 -shr,inplace,2000,13,50952,9,195.95,195.15,19.96 -shr,kernel,2000,13,38740,9,514.05,507.79,19.95 -shr,floor,2000,13,38103,9,523.64,516.00,19.91 -shr,gmp,2000,13,68382,9,303.16,292.15,21.23 -shr,gmpz,2000,13,67408,9,314.26,288.45,20.73 -shr,auto,2000,77,89849,9,271.65,227.59,23.15 -shr,inplace,2000,77,51017,9,195.64,195.20,19.95 -shr,kernel,2000,77,38114,9,522.75,516.48,19.92 -shr,floor,2000,77,38078,9,527.03,525.98,20.07 -shr,gmp,2000,77,69177,9,290.15,289.67,20.10 -shr,gmpz,2000,77,68365,9,301.17,291.16,20.82 -mul,auto,1,1,1427439,9,14.22,14.03,20.39 -mul,gmp,1,1,5337770,9,3.72,3.71,19.86 -mul,gmpz,1,1,7303580,9,2.74,2.73,20.11 -mul,auto,2,2,1084510,9,18.57,18.08,20.13 -mul,kernel,2,2,3241113,9,6.65,6.35,21.61 -mul,floor,2,2,1391310,9,14.39,14.36,20.14 -mul,gmp,2,2,4287710,9,4.72,4.70,20.27 -mul,gmpz,2,2,3054148,9,6.82,6.51,20.65 -mul,auto,3,3,1047043,9,19.30,19.09,20.60 -mul,kernel,3,3,2525982,9,8.19,7.93,18.62 -mul,floor,3,3,1184017,9,16.74,16.64,19.95 -mul,gmp,3,3,3296722,9,6.20,6.05,20.32 -mul,gmpz,3,3,2539118,9,7.89,7.88,20.94 -mul,auto,4,4,896603,9,21.65,21.16,19.38 -mul,kernel,4,4,1832479,9,11.10,10.94,20.32 -mul,floor,4,4,1108894,9,17.16,17.13,19.07 -mul,gmp,4,4,2194347,9,9.05,8.96,19.89 -mul,gmpz,4,4,1777112,9,10.99,10.91,19.73 -mul,auto,6,6,732153,9,27.33,27.12,20.02 -mul,kernel,6,6,1041496,9,19.13,19.09,19.95 -mul,floor,6,6,829709,9,23.93,23.83,19.86 -mul,gmp,6,6,1385079,9,14.53,14.47,20.24 -mul,gmpz,6,6,1063347,9,18.93,18.07,20.05 -mul,auto,8,8,583510,9,34.94,34.20,20.33 -mul,kernel,8,8,873607,9,22.92,22.85,20.02 -mul,floor,8,8,663153,9,30.30,30.08,20.12 -mul,gmp,8,8,882944,9,22.44,22.08,20.33 -mul,gmpz,8,8,787578,9,27.14,24.25,20.68 -mul,auto,12,12,373835,9,53.59,53.37,20.05 -mul,kernel,12,12,483180,9,41.37,41.25,20.02 -mul,floor,12,12,400677,9,49.48,49.36,19.87 -mul,gmp,12,12,451637,9,44.22,44.11,19.97 -mul,gmpz,12,12,426840,9,46.66,46.50,19.91 -mul,auto,16,16,241292,9,82.81,81.97,19.95 -mul,kernel,16,16,286824,9,69.50,69.32,19.94 -mul,floor,16,16,252580,9,78.38,77.99,19.79 -mul,gmp,16,16,263447,9,77.01,75.97,20.21 -mul,gmpz,16,16,257075,9,77.90,77.64,20.03 -mul,auto,32,32,70213,9,284.73,280.97,19.94 -mul,kernel,32,32,77253,9,261.65,257.84,20.15 -mul,floor,32,32,72081,9,278.29,277.71,20.07 -mul,gmp,32,32,77461,9,258.78,257.81,20.06 -mul,gmpz,32,32,76522,9,260.49,258.83,20.02 -mul,auto,64,64,19907,9,1009.27,1003.75,20.26 -mul,kernel,64,64,20136,9,981.98,978.48,19.77 -mul,floor,64,64,19850,9,1007.95,1005.19,20.03 -mul,gmp,64,64,25987,9,771.62,770.42,20.05 -mul,gmpz,64,64,25892,9,774.61,772.67,20.07 -mul,auto,128,128,5604,9,3573.69,3568.05,20.04 -mul,kernel,128,128,5591,9,3577.43,3571.82,20.02 -mul,floor,128,128,5555,9,3594.36,3585.04,19.97 -mul,gmp,128,128,7559,9,2657.20,2644.95,20.08 -mul,gmpz,128,128,6609,9,3015.20,2995.97,19.93 -mul,auto,256,256,1697,9,11746.12,11729.69,19.94 -mul,kernel,256,256,1705,9,11799.14,11751.93,20.13 -mul,floor,256,256,1693,9,11790.24,11746.51,19.98 -mul,gmp,256,256,1928,9,10345.09,10308.65,19.99 -mul,gmpz,256,256,2559,9,7913.78,7823.60,20.19 -mul,auto,512,512,543,9,36887.05,36773.33,20.05 -mul,kernel,512,512,543,9,36916.44,36853.98,20.06 -mul,floor,512,512,542,9,36984.39,36840.79,20.05 -mul,gmp,512,512,938,9,21363.23,21240.41,20.04 -mul,gmpz,512,512,1051,9,19009.91,18983.35,19.98 -mul,auto,1000,1000,185,9,106520.27,105944.15,19.79 -mul,kernel,1000,1000,187,9,106828.43,106718.81,19.99 -mul,floor,1000,1000,186,9,106657.48,106411.06,19.85 -mul,gmp,1000,1000,363,9,55185.95,54862.49,20.03 -mul,gmpz,1000,1000,368,9,55332.43,54986.07,20.37 -mul,auto,2000,2000,67,9,301360.07,299973.88,20.21 -mul,kernel,2000,2000,67,9,301588.94,297431.58,20.16 -mul,floor,2000,2000,67,9,301804.72,300582.09,20.22 -mul,gmp,2000,2000,136,9,148182.90,147766.54,20.16 -mul,gmpz,2000,2000,134,9,150088.62,148336.75,20.05 -mul,auto,2000,100,432,9,46250.87,46141.97,19.98 -mul,kernel,2000,100,430,9,46655.13,46426.16,20.05 -mul,floor,2000,100,430,9,46829.75,46655.23,20.16 -mul,gmp,2000,100,570,9,35157.09,35054.09,20.06 -mul,gmpz,2000,100,579,9,34665.59,34569.23,20.07 -sqr,auto,4,4,843436,9,21.65,21.35,18.70 -sqr,kernel,4,4,1785848,9,11.23,11.10,20.10 -sqr,floor,4,4,1220896,9,16.65,16.11,20.21 -sqr,gmp,4,4,2850193,9,6.96,6.93,19.83 -sqr,gmpz,4,4,2080095,9,9.68,9.42,20.07 -sqr,auto,16,16,260436,9,75.01,74.47,19.62 -sqr,kernel,16,16,313420,9,64.00,63.77,20.25 -sqr,floor,16,16,274326,9,72.47,72.10,19.88 -sqr,gmp,16,16,318786,9,61.93,60.02,19.67 -sqr,gmpz,16,16,305959,9,65.75,65.24,20.13 -sqr,auto,64,64,33306,9,600.06,599.06,20.01 -sqr,kernel,64,64,34471,9,579.77,578.54,20.00 -sqr,floor,64,64,33445,9,598.15,597.31,20.03 -sqr,gmp,64,64,29761,9,667.74,656.83,20.26 -sqr,gmpz,64,64,29575,9,669.18,656.73,19.81 -sqr,auto,512,512,820,9,24372.00,24327.24,19.99 -sqr,kernel,512,512,821,9,24370.58,24182.40,20.01 -sqr,floor,512,512,817,9,24346.85,24306.71,19.90 -sqr,gmp,512,512,1094,9,18308.84,18047.38,19.99 -sqr,gmpz,512,512,1011,9,19657.85,19354.89,19.89 -sqr,auto,2000,2000,90,9,223330.56,222770.38,20.09 -sqr,kernel,2000,2000,89,9,223778.09,222497.19,19.96 -sqr,floor,2000,2000,90,9,223148.61,221426.39,20.08 -sqr,gmp,2000,2000,168,9,120885.91,119783.48,20.37 -sqr,gmpz,2000,2000,164,9,120986.54,119567.58,19.92 -divrem,auto,2,1,956495,9,20.82,20.33,19.78 -divrem,kernel,2,1,3184559,9,6.32,6.27,20.22 -divrem,floor,2,1,1452280,9,14.01,13.78,20.33 -divrem,gmp,2,1,3985862,9,5.01,4.97,19.96 -divrem,gmpz,2,1,2298369,9,8.69,8.65,19.97 -divrem,auto,8,4,246290,9,80.49,79.10,19.76 -divrem,kernel,8,4,392715,9,52.44,51.26,20.69 -divrem,floor,8,4,301675,9,65.75,64.99,19.81 -divrem,gmp,8,4,480707,9,41.76,41.23,20.02 -divrem,gmpz,8,4,456656,9,44.25,43.37,20.18 -divrem,auto,32,16,46591,9,435.07,422.67,20.26 -divrem,kernel,32,16,50643,9,390.80,381.41,19.75 -divrem,floor,32,16,48867,9,408.98,406.84,19.97 -divrem,gmp,32,16,93999,9,208.30,200.82,19.47 -divrem,gmpz,32,16,98456,9,211.08,208.42,20.77 -divrem,auto,128,64,5312,9,3705.55,3568.32,19.65 -divrem,kernel,128,64,5523,9,3601.29,3496.08,19.76 -divrem,floor,128,64,5560,9,3619.79,3550.13,20.12 -divrem,gmp,128,64,11305,9,1766.73,1748.48,19.96 -divrem,gmpz,128,64,11263,9,1771.13,1742.27,19.93 -divrem,auto,512,256,721,9,27518.44,27179.21,19.86 -divrem,kernel,512,256,738,9,27285.68,27224.71,20.14 -divrem,floor,512,256,734,9,27300.41,27240.07,20.13 -divrem,gmp,512,256,1220,9,16545.01,16443.95,20.37 -divrem,gmpz,512,256,1203,9,16473.47,16393.81,19.80 -divrem,auto,2000,1000,87,9,232442.53,231474.14,20.22 -divrem,kernel,2000,1000,87,9,232060.34,231624.52,20.20 -divrem,floor,2000,1000,87,9,232362.54,230485.15,20.23 -divrem,gmp,2000,1000,148,9,135541.67,135036.03,20.05 -divrem,gmpz,2000,1000,150,9,134393.89,134100.27,20.15 -divrem,auto,4000,2000,29,9,690333.34,686800.28,20.03 -divrem,kernel,4000,2000,30,9,688663.90,686213.87,20.68 -divrem,floor,4000,2000,30,9,688851.40,684561.10,20.67 -divrem,gmp,4000,2000,59,9,342067.80,341432.90,20.19 -divrem,gmpz,4000,2000,58,9,342225.59,341854.88,19.87 -divrem,auto,2000,100,213,9,94769.95,94179.19,20.19 -divrem,kernel,2000,100,213,9,94264.48,93837.44,20.07 -divrem,floor,2000,100,213,9,94372.07,94160.80,20.11 -divrem,gmp,2000,100,288,9,69216.87,68777.92,19.96 -divrem,gmpz,2000,100,291,9,68734.97,68374.29,19.99 -divrem,auto,65536,1,86,9,230923.93,228779.07,19.85 -divrem,kernel,65536,1,87,9,229714.56,223722.70,19.86 -divrem,floor,65536,1,88,9,225883.52,223844.69,19.94 -divrem,gmp,65536,1,119,9,171529.06,167557.77,20.42 -divrem,gmpz,65536,1,118,9,171046.97,164847.81,20.04 -fromchars,auto,4,10,218402,9,90.84,90.08,19.92 -fromchars,kernel,4,10,598069,9,32.99,32.53,19.76 -fromchars,gmp,4,10,615754,9,32.00,31.53,19.84 -fromchars,gmpz,4,10,265381,9,78.38,75.44,20.62 -fromchars,auto,16,10,49625,9,402.23,390.65,19.87 -fromchars,kernel,16,10,106807,9,191.78,190.73,20.49 -fromchars,gmp,16,10,138921,9,141.27,140.28,19.85 -fromchars,gmpz,16,10,61637,9,318.87,315.53,19.65 -fromchars,auto,64,10,9143,9,2182.47,2145.87,19.93 -fromchars,kernel,64,10,11025,9,1855.14,1820.11,20.35 -fromchars,gmp,64,10,20740,9,956.27,952.64,20.04 -fromchars,gmpz,64,10,12464,9,1596.49,1575.34,19.89 -fromchars,auto,256,10,1449,9,13799.98,13685.79,19.98 -fromchars,kernel,256,10,1721,9,11621.80,11589.31,20.26 -fromchars,gmp,256,10,2520,9,7876.95,7861.44,19.87 -fromchars,gmpz,256,10,1862,9,10527.97,10442.29,19.59 -fromchars,auto,2000,10,67,9,301506.21,299901.75,20.19 -fromchars,kernel,2000,10,70,9,282582.14,282230.36,19.82 -fromchars,gmp,2000,10,110,9,184463.64,183132.19,20.77 -fromchars,gmpz,2000,10,99,9,202633.84,201979.80,20.07 diff --git a/tests/beman/big_int/perf/item1/mac_new64_shortcut_run1.csv b/tests/beman/big_int/perf/item1/mac_new64_shortcut_run1.csv deleted file mode 100644 index 64260beb..00000000 --- a/tests/beman/big_int/perf/item1/mac_new64_shortcut_run1.csv +++ /dev/null @@ -1,20 +0,0 @@ -# shortcut A/B new64 run1 -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -mul,auto,2,2,991646,9,18.63,18.43,18.78 -mul,kernel,2,2,3128455,9,6.31,6.22,19.67 -mul,auto,3,3,943260,9,20.10,19.67,19.03 -mul,kernel,3,3,2600773,9,7.88,7.68,20.64 -mul,auto,4,4,926784,9,21.59,21.33,19.95 -mul,kernel,4,4,1805236,9,10.60,10.55,19.40 -mul,auto,6,6,729554,9,27.33,26.74,19.83 -mul,kernel,6,6,1041647,9,19.45,18.99,20.19 -mul,auto,8,8,572638,9,34.75,34.21,19.83 -mul,kernel,8,8,869214,9,22.97,22.94,19.97 -mul,auto,12,12,369710,9,53.93,53.85,20.00 -mul,kernel,12,12,486263,9,41.04,40.86,19.96 -mul,auto,16,16,244060,9,82.15,82.02,20.14 -mul,kernel,16,16,286905,9,69.72,69.46,20.01 -sqr,auto,4,4,937703,9,21.41,21.32,20.27 -sqr,kernel,4,4,1781798,9,11.26,11.16,20.10 -sqr,auto,16,16,262643,9,76.07,74.80,20.01 -sqr,kernel,16,16,313975,9,63.71,63.40,20.12 diff --git a/tests/beman/big_int/perf/item1/mac_new64_shortcut_run2.csv b/tests/beman/big_int/perf/item1/mac_new64_shortcut_run2.csv deleted file mode 100644 index e891c745..00000000 --- a/tests/beman/big_int/perf/item1/mac_new64_shortcut_run2.csv +++ /dev/null @@ -1,20 +0,0 @@ -# shortcut A/B new64 run2 -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -mul,auto,2,2,1073526,9,19.88,18.94,21.14 -mul,kernel,2,2,3117147,9,6.15,6.13,19.32 -mul,auto,3,3,970635,9,20.35,18.97,19.84 -mul,kernel,3,3,2496906,9,7.95,7.92,19.84 -mul,auto,4,4,919788,9,21.49,20.87,19.63 -mul,kernel,4,4,1819646,9,11.17,11.07,20.37 -mul,auto,6,6,746186,9,27.12,26.89,19.97 -mul,kernel,6,6,1032563,9,19.08,18.46,19.53 -mul,auto,8,8,565279,9,35.15,34.65,19.82 -mul,kernel,8,8,855684,9,23.39,23.34,20.06 -mul,auto,12,12,369581,9,54.33,53.58,19.99 -mul,kernel,12,12,479300,9,41.64,41.49,19.97 -mul,auto,16,16,238096,9,83.46,82.59,19.85 -mul,kernel,16,16,286991,9,69.82,69.61,20.07 -sqr,auto,4,4,948474,9,21.47,21.07,20.30 -sqr,kernel,4,4,1801017,9,11.28,11.15,20.28 -sqr,auto,16,16,265148,9,74.94,74.37,19.92 -sqr,kernel,16,16,315457,9,63.90,63.45,20.16 diff --git a/tests/beman/big_int/perf/item1/mac_new64_shortcut_run3.csv b/tests/beman/big_int/perf/item1/mac_new64_shortcut_run3.csv deleted file mode 100644 index 9db6eebf..00000000 --- a/tests/beman/big_int/perf/item1/mac_new64_shortcut_run3.csv +++ /dev/null @@ -1,20 +0,0 @@ -# shortcut A/B new64 run3 -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -mul,auto,2,2,979332,9,20.25,18.42,19.19 -mul,kernel,2,2,3130262,9,6.38,6.04,19.51 -mul,auto,3,3,991991,9,20.27,19.75,20.17 -mul,kernel,3,3,2439324,9,8.18,7.93,19.86 -mul,auto,4,4,943837,9,21.20,21.00,20.00 -mul,kernel,4,4,1805348,9,10.84,10.61,19.65 -mul,auto,6,6,737202,9,27.39,27.07,20.16 -mul,kernel,6,6,1032915,9,19.46,19.35,20.14 -mul,auto,8,8,574803,9,34.75,34.54,19.97 -mul,kernel,8,8,870149,9,22.86,22.84,19.90 -mul,auto,12,12,365223,9,54.53,54.18,19.90 -mul,kernel,12,12,487624,9,41.05,40.97,20.04 -mul,auto,16,16,240175,9,82.77,82.27,19.93 -mul,kernel,16,16,287028,9,69.70,69.41,20.02 -sqr,auto,4,4,915185,9,21.56,21.08,19.90 -sqr,kernel,4,4,1771978,9,11.23,11.10,19.89 -sqr,auto,16,16,263412,9,76.11,74.50,20.03 -sqr,kernel,16,16,314699,9,63.65,63.41,20.04 diff --git a/tests/beman/big_int/perf/item1/mac_new64_spot_seed1.csv b/tests/beman/big_int/perf/item1/mac_new64_spot_seed1.csv deleted file mode 100644 index f8acbb87..00000000 --- a/tests/beman/big_int/perf/item1/mac_new64_spot_seed1.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,2805,3,7280.66,7260.34,20.52 -add,inplace,16384,16384,1402,3,7072.05,7031.00,19.81 -add,kernel,16384,16384,1259,3,15751.46,15697.28,19.88 -add,floor,16384,16384,1283,3,15950.31,15813.23,20.43 -add,gmp,16384,16384,4961,3,4108.62,4078.62,20.36 -add,gmpz,16384,16384,4864,3,4109.26,4094.23,20.03 -mul,auto,2000,2000,67,3,301772.39,300866.28,20.20 -mul,kernel,2000,2000,66,3,304799.88,301380.68,20.30 -mul,floor,2000,2000,66,3,304413.52,302695.71,20.08 -mul,gmp,2000,2000,135,3,148702.47,148574.38,20.14 -mul,gmpz,2000,2000,135,3,148097.53,148016.36,20.00 -mul,auto,16384,16384,4,3,5381198.00,5374270.75,21.52 -mul,kernel,16384,16384,4,3,5401635.50,5268739.50,21.47 -mul,floor,16384,16384,4,3,5332208.50,5264531.25,21.26 -mul,gmp,16384,16384,13,3,1584881.38,1583301.31,20.61 -mul,gmpz,16384,16384,13,3,1570092.92,1569647.46,20.44 -divrem,auto,4096,2048,29,3,702669.52,702051.72,20.38 -divrem,kernel,4096,2048,29,3,703524.45,698464.07,20.41 -divrem,floor,4096,2048,29,3,701863.52,701735.66,20.36 -divrem,gmp,4096,2048,56,3,358471.73,358419.64,20.07 -divrem,gmpz,4096,2048,56,3,358473.96,357995.54,20.08 -tochars,auto,10000,10,3,3,8255819.33,8240083.33,24.76 -tochars,kernel,10000,10,3,3,8213361.33,8184958.33,24.62 -tochars,gmp,10000,10,5,3,4114175.00,4102700.00,20.59 -tochars,gmpz,10000,10,5,3,4201241.80,4189658.20,20.99 -fromchars,auto,10000,10,5,3,4170816.80,4167141.80,20.86 -fromchars,kernel,10000,10,5,3,4080925.00,4080533.40,20.44 -fromchars,gmp,10000,10,12,3,1766826.33,1760632.00,21.23 -fromchars,gmpz,10000,10,11,3,1858856.00,1856617.45,20.45 diff --git a/tests/beman/big_int/perf/item1/mac_new64_spot_seed2.csv b/tests/beman/big_int/perf/item1/mac_new64_spot_seed2.csv deleted file mode 100644 index 55b6d346..00000000 --- a/tests/beman/big_int/perf/item1/mac_new64_spot_seed2.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,2762,3,7252.87,7251.36,20.06 -add,inplace,16384,16384,1426,3,7138.50,7116.88,20.38 -add,kernel,16384,16384,1285,3,15873.83,15845.43,20.40 -add,floor,16384,16384,1256,3,15963.94,15963.04,20.05 -add,gmp,16384,16384,4944,3,4081.52,4080.61,20.18 -add,gmpz,16384,16384,4883,3,4094.14,4065.71,19.96 -mul,auto,2000,2000,67,3,300979.48,300804.10,20.18 -mul,kernel,2000,2000,67,3,302273.00,301124.37,20.26 -mul,floor,2000,2000,67,3,301523.01,300096.40,20.20 -mul,gmp,2000,2000,135,3,148062.04,147274.39,19.98 -mul,gmpz,2000,2000,134,3,148414.49,148238.81,19.89 -mul,auto,16384,16384,4,3,5325750.00,5279666.75,21.31 -mul,kernel,16384,16384,4,3,5384364.50,5373083.25,21.52 -mul,floor,16384,16384,4,3,5327041.50,5302958.25,21.35 -mul,gmp,16384,16384,13,3,1580903.85,1579022.38,20.54 -mul,gmpz,16384,16384,13,3,1565105.77,1564897.38,20.37 -divrem,auto,4096,2048,29,3,714329.00,711827.59,20.70 -divrem,kernel,4096,2048,29,3,700752.86,700310.34,20.33 -divrem,floor,4096,2048,29,3,701287.34,697369.28,20.30 -divrem,gmp,4096,2048,57,3,356966.39,355825.30,20.46 -divrem,gmpz,4096,2048,57,3,357983.91,357867.70,20.43 -tochars,auto,10000,10,3,3,8226055.67,8225736.00,24.70 -tochars,kernel,10000,10,3,3,8220138.67,8210666.67,24.66 -tochars,gmp,10000,10,5,3,4102991.80,4102583.20,20.53 -tochars,gmpz,10000,10,5,3,4160558.40,4153308.40,20.80 -fromchars,auto,10000,10,5,3,4171508.40,4166375.00,20.85 -fromchars,kernel,10000,10,5,3,4095375.00,4082841.60,20.47 -fromchars,gmp,10000,10,12,3,1763017.42,1762010.42,21.16 -fromchars,gmpz,10000,10,11,3,1856776.55,1854325.82,20.42 diff --git a/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run1.csv b/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run1.csv deleted file mode 100644 index 87130cb5..00000000 --- a/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run1.csv +++ /dev/null @@ -1,20 +0,0 @@ -# shortcut A/B nosc64 run1 -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -mul,auto,2,2,1032288,9,19.41,19.34,19.60 -mul,kernel,2,2,3084915,9,6.53,6.45,20.18 -mul,auto,3,3,872368,9,23.76,21.11,20.26 -mul,kernel,3,3,2372563,9,8.20,8.18,19.49 -mul,auto,4,4,913336,9,22.18,21.88,20.21 -mul,kernel,4,4,1793142,9,10.70,10.58,19.31 -mul,auto,6,6,713738,9,28.07,28.00,20.08 -mul,kernel,6,6,1038502,9,19.19,18.68,19.88 -mul,auto,8,8,550877,9,35.89,35.55,19.76 -mul,kernel,8,8,852113,9,23.48,23.44,20.03 -mul,auto,12,12,364469,9,54.24,54.20,19.82 -mul,kernel,12,12,482329,9,41.60,41.53,20.08 -mul,auto,16,16,241584,9,82.88,82.79,20.03 -mul,kernel,16,16,285789,9,70.10,69.76,20.08 -sqr,auto,4,4,861927,9,23.16,22.80,20.05 -sqr,kernel,4,4,1730716,9,11.46,11.27,19.84 -sqr,auto,16,16,256381,9,78.34,77.42,20.06 -sqr,kernel,16,16,321471,9,60.90,60.73,19.69 diff --git a/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run2.csv b/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run2.csv deleted file mode 100644 index e77ff7eb..00000000 --- a/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run2.csv +++ /dev/null @@ -1,20 +0,0 @@ -# shortcut A/B nosc64 run2 -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -mul,auto,2,2,1034629,9,19.26,19.00,20.09 -mul,kernel,2,2,3088613,9,6.47,6.43,19.97 -mul,auto,3,3,953290,9,21.23,20.95,20.25 -mul,kernel,3,3,2437151,9,8.43,8.21,20.52 -mul,auto,4,4,885513,9,22.31,22.11,19.86 -mul,kernel,4,4,1780510,9,11.29,11.20,20.08 -mul,auto,6,6,719555,9,28.31,27.82,20.30 -mul,kernel,6,6,991925,9,19.11,18.69,18.98 -mul,auto,8,8,560165,9,35.72,35.13,19.95 -mul,kernel,8,8,846688,9,23.49,23.45,19.91 -mul,auto,12,12,364245,9,54.63,54.35,19.91 -mul,kernel,12,12,481245,9,41.63,41.51,20.05 -mul,auto,16,16,237134,9,83.43,82.66,19.77 -mul,kernel,16,16,285099,9,70.19,70.00,20.02 -sqr,auto,4,4,860824,9,23.13,23.09,19.94 -sqr,kernel,4,4,1732448,9,11.25,11.23,19.58 -sqr,auto,16,16,257136,9,77.95,77.36,20.06 -sqr,kernel,16,16,315252,9,61.43,61.03,19.36 diff --git a/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run3.csv b/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run3.csv deleted file mode 100644 index 1ee2cd2a..00000000 --- a/tests/beman/big_int/perf/item1/mac_nosc64_shortcut_run3.csv +++ /dev/null @@ -1,20 +0,0 @@ -# shortcut A/B nosc64 run3 -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -mul,auto,2,2,979863,9,19.93,19.07,19.41 -mul,kernel,2,2,3089202,9,6.50,6.44,20.08 -mul,auto,3,3,960363,9,21.13,20.55,20.38 -mul,kernel,3,3,2437866,9,8.20,8.17,20.00 -mul,auto,4,4,891326,9,22.35,22.08,19.96 -mul,kernel,4,4,1802243,9,10.79,10.44,19.47 -mul,auto,6,6,705033,9,27.60,27.31,19.57 -mul,kernel,6,6,1039974,9,19.30,19.04,20.04 -mul,auto,8,8,563657,9,35.82,35.33,20.21 -mul,kernel,8,8,845778,9,23.61,23.46,19.98 -mul,auto,12,12,352531,9,54.46,54.32,19.24 -mul,kernel,12,12,479706,9,41.68,41.64,20.00 -mul,auto,16,16,238985,9,83.93,83.07,20.48 -mul,kernel,16,16,285461,9,70.12,69.91,20.01 -sqr,auto,4,4,864584,9,23.32,23.04,20.25 -sqr,kernel,4,4,1739663,9,11.27,11.23,19.64 -sqr,auto,16,16,255180,9,77.28,77.04,19.78 -sqr,kernel,16,16,326492,9,60.74,60.47,19.83 diff --git a/tests/beman/big_int/perf/item1/mac_study128_run1.csv b/tests/beman/big_int/perf/item1/mac_study128_run1.csv deleted file mode 100644 index 139a8da3..00000000 --- a/tests/beman/big_int/perf/item1/mac_study128_run1.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:09:18Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new128 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2655658,9,8.39,7.59,20.42 -add,inplace,1,1,2859367,9,3.35,3.34,19.25 -add,kernel,1,1,17543941,9,1.14,1.14,20.06 -add,floor,1,1,10993518,9,1.84,1.82,20.17 -add,gmp,1,1,13556846,9,1.49,1.48,20.18 -add,gmpz,1,1,6708423,9,2.99,2.96,20.31 -add,auto,2,2,1147438,9,17.96,17.40,20.39 -add,inplace,2,2,2598549,9,3.88,3.85,20.15 -add,kernel,2,2,14389126,9,1.39,1.39,20.03 -add,floor,2,2,2076426,9,9.44,9.41,19.76 -add,gmp,2,2,10030168,9,1.98,1.95,19.87 -add,gmpz,2,2,6696654,9,3.23,2.98,21.63 -add,auto,4,4,1433239,9,14.25,13.72,20.28 -add,inplace,4,4,2857334,9,3.48,3.47,19.95 -add,kernel,4,4,10398297,9,1.91,1.90,19.92 -add,floor,4,4,1913188,9,10.23,10.16,19.69 -add,gmp,4,4,11524545,9,1.74,1.74,20.49 -add,gmpz,4,4,4530743,9,4.26,4.03,19.49 -add,auto,8,8,1321179,9,15.41,15.12,20.42 -add,inplace,8,8,2470751,9,3.97,3.96,19.65 -add,kernel,8,8,5765852,9,3.50,3.45,20.19 -add,floor,8,8,1610913,9,11.89,11.65,19.41 -add,gmp,8,8,8964163,9,2.23,2.23,20.03 -add,gmpz,8,8,4742873,9,4.09,3.91,19.23 -add,auto,16,16,1245781,9,16.23,16.00,20.34 -add,inplace,16,16,1786953,9,5.59,5.58,20.10 -add,kernel,16,16,2648679,9,7.56,7.49,20.04 -add,floor,16,16,1475547,9,13.89,13.31,20.36 -add,gmp,16,16,6179345,9,3.23,2.99,20.08 -add,gmpz,16,16,4971592,9,4.48,4.24,22.16 -sub,auto,1,1,2422817,9,8.26,8.18,20.07 -sub,inplace,1,1,3088872,9,3.48,3.47,21.49 -sub,kernel,1,1,19328941,9,1.03,1.03,19.91 -sub,floor,1,1,11481817,9,1.73,1.73,19.92 -sub,gmp,1,1,13444896,9,1.49,1.48,20.02 -sub,gmpz,1,1,8002903,9,2.48,2.48,19.88 -sub,auto,2,2,2319521,9,8.69,8.49,20.11 -sub,inplace,2,2,2641693,9,3.84,3.83,20.31 -sub,kernel,2,2,14118727,9,1.41,1.41,20.00 -sub,floor,2,2,10062249,9,1.98,1.98,19.99 -sub,gmp,2,2,10055669,9,1.98,1.95,19.93 -sub,gmpz,2,2,6724464,9,2.98,2.82,19.93 -sub,auto,4,4,1426803,9,14.01,13.96,20.08 -sub,inplace,4,4,2775434,9,3.60,3.60,20.08 -sub,kernel,4,4,10114241,9,1.94,1.93,19.62 -sub,floor,4,4,2012265,9,10.42,10.17,20.94 -sub,gmp,4,4,11487184,9,1.74,1.73,19.97 -sub,gmpz,4,4,7294080,9,2.74,2.73,20.02 -sub,auto,8,8,1323927,9,15.16,15.00,20.09 -sub,inplace,8,8,2436407,9,4.43,4.10,21.48 -sub,kernel,8,8,5718994,9,3.50,3.49,20.02 -sub,floor,8,8,1667124,9,12.23,11.90,20.37 -sub,gmp,8,8,8946939,9,2.24,2.23,20.02 -sub,gmpz,8,8,6170262,9,3.23,3.22,19.93 -sub,auto,16,16,1124445,9,17.20,17.18,19.46 -sub,inplace,16,16,1915338,9,5.34,5.30,20.51 -sub,kernel,16,16,2611907,9,7.67,7.64,20.04 -sub,floor,16,16,1343255,9,15.63,15.61,21.03 -sub,gmp,16,16,6115527,9,3.20,3.12,19.51 -sub,gmpz,16,16,4734557,9,4.23,4.22,20.05 -shl,auto,1,13,3226745,9,6.21,6.19,20.37 -shl,inplace,1,13,2991300,9,3.48,3.13,20.54 -shl,kernel,1,13,8957999,9,2.24,2.23,20.02 -shl,kernelip,1,13,8269469,9,1.77,1.40,28.69 -shl,floor,1,13,4659917,9,5.37,4.33,25.39 -shl,gmp,1,13,16218274,9,1.24,1.24,20.17 -shl,gmpz,1,13,10078514,9,1.99,1.98,20.11 -shl,auto,4,13,1534223,9,12.55,12.50,19.57 -shl,inplace,4,13,2581949,9,3.84,3.81,19.98 -shl,kernel,4,13,5386273,9,4.46,3.72,22.95 -shl,kernelip,4,13,2940030,9,3.40,3.36,20.00 -shl,floor,4,13,1495342,9,12.72,12.63,19.31 -shl,gmp,4,13,10062888,9,1.98,1.98,19.99 -shl,gmpz,4,13,7308269,9,2.73,2.72,19.99 -shl,auto,16,13,1213613,9,15.68,15.56,19.78 -shl,inplace,16,13,1901315,9,5.32,5.31,20.23 -shl,kernel,16,13,4905356,9,4.10,4.07,20.09 -shl,kernelip,16,13,1445167,9,6.82,6.69,19.66 -shl,floor,16,13,1641209,9,12.43,12.18,20.27 -shl,gmp,16,13,5712573,9,3.48,3.47,19.87 -shl,gmpz,16,13,3873578,9,5.26,5.11,20.32 -shr,auto,1,13,2285902,9,9.86,8.06,21.93 -shr,inplace,1,13,3845623,9,3.31,2.61,24.26 -shr,kernel,1,13,8092512,9,2.51,2.48,20.27 -shr,floor,1,13,8061273,9,2.48,2.47,20.36 -shr,gmp,1,13,20000001,9,0.99,0.99,19.87 -shr,gmpz,1,13,10073943,9,2.00,1.98,20.14 -shr,auto,4,13,1411009,9,13.99,13.86,19.74 -shr,inplace,4,13,2620862,9,3.90,3.72,20.39 -shr,kernel,4,13,4477649,9,4.47,4.22,19.88 -shr,floor,4,13,1675876,9,11.90,11.84,19.96 -shr,gmp,4,13,11508985,9,1.74,1.73,20.01 -shr,gmpz,4,13,7323678,9,2.73,2.72,20.03 -shr,auto,16,13,1145027,9,17.82,17.54,20.38 -shr,inplace,16,13,1883044,9,5.19,5.19,19.58 -shr,kernel,16,13,4789434,9,4.18,4.17,20.02 -shr,floor,16,13,1578518,9,12.92,12.89,20.60 -shr,gmp,16,13,6205735,9,3.27,3.23,20.20 -shr,gmpz,16,13,4726199,9,4.23,4.21,20.19 -mul,auto,1,1,2173676,9,8.98,8.92,19.68 -mul,gmp,1,1,5346137,9,3.73,3.72,19.93 -mul,gmpz,1,1,7289809,9,2.74,2.73,19.98 -mul,auto,2,2,1076045,9,18.47,18.29,19.93 -mul,kernel,2,2,3145347,9,6.39,6.31,20.29 -mul,floor,2,2,1234973,9,15.58,15.21,19.72 -mul,gmp,2,2,4458095,9,4.25,4.22,19.36 -mul,gmpz,2,2,2966227,9,6.86,6.76,20.34 -mul,auto,3,3,1008146,9,20.01,19.21,19.85 -mul,kernel,3,3,2423201,9,8.19,8.16,20.05 -mul,floor,3,3,1182258,9,17.12,16.92,20.18 -mul,gmp,3,3,3272023,9,6.22,6.11,20.30 -mul,gmpz,3,3,2121251,9,10.96,8.79,22.81 -mul,auto,4,4,895690,9,21.84,21.33,19.48 -mul,kernel,4,4,1880998,9,11.16,10.92,20.95 -mul,floor,4,4,1182991,9,17.14,16.71,20.14 -mul,gmp,4,4,2183490,9,9.00,8.93,19.81 -mul,gmpz,4,4,1827538,9,11.18,10.96,20.42 -mul,auto,6,6,737967,9,26.93,26.86,19.91 -mul,kernel,6,6,1044476,9,19.04,18.38,19.73 -mul,floor,6,6,798622,9,23.80,23.68,19.45 -mul,gmp,6,6,1391515,9,14.54,14.27,20.22 -mul,gmpz,6,6,1141091,9,17.59,17.17,20.25 -mul,auto,8,8,561566,9,35.27,35.11,19.84 -mul,kernel,8,8,870952,9,22.99,22.91,20.26 -mul,floor,8,8,656035,9,30.55,30.28,20.03 -mul,gmp,8,8,789486,9,24.93,22.99,19.54 -mul,gmpz,8,8,826557,9,26.76,24.25,21.64 -mul,auto,12,12,370114,9,53.90,53.78,19.99 -mul,kernel,12,12,487507,9,41.06,40.98,20.02 -mul,floor,12,12,403858,9,49.21,49.08,19.98 -mul,gmp,12,12,452463,9,44.35,44.23,20.06 -mul,gmpz,12,12,427634,9,46.72,46.56,19.99 -mul,auto,16,16,237607,9,82.84,82.56,19.70 -mul,kernel,16,16,287741,9,70.38,70.04,20.30 -mul,floor,16,16,250638,9,79.64,78.48,19.90 -mul,gmp,16,16,261512,9,77.19,76.72,20.18 -mul,gmpz,16,16,256453,9,77.91,77.82,20.00 -sqr,auto,4,4,913619,9,24.76,21.11,19.79 -sqr,kernel,4,4,1989843,9,10.78,10.05,21.14 -sqr,floor,4,4,1258872,9,16.35,15.93,20.44 -sqr,gmp,4,4,2876947,9,6.96,6.95,20.08 -sqr,gmpz,4,4,2233441,9,9.69,9.45,21.60 -sqr,auto,16,16,267204,9,74.04,73.58,19.81 -sqr,kernel,16,16,328165,9,60.81,60.61,19.99 -sqr,floor,16,16,275404,9,72.56,71.84,20.01 -sqr,gmp,16,16,317699,9,63.60,62.77,20.17 -sqr,gmpz,16,16,300219,9,66.85,66.07,20.10 -divrem,auto,2,1,863155,9,23.33,22.54,20.05 -divrem,kernel,2,1,3537796,9,5.62,5.58,20.09 -divrem,floor,2,1,3045058,9,6.59,6.57,20.09 -divrem,gmp,2,1,3960612,9,5.03,4.94,19.88 -divrem,gmpz,2,1,2303051,9,8.68,8.64,20.01 -divrem,auto,8,4,286531,9,70.19,69.85,20.11 -divrem,kernel,8,4,487613,9,40.75,40.25,19.87 -divrem,floor,8,4,357269,9,56.12,55.59,20.05 -divrem,gmp,8,4,513643,9,39.69,39.19,20.35 -divrem,gmpz,8,4,466812,9,43.18,42.60,20.38 -divrem,auto,32,16,47008,9,431.90,424.91,20.26 -divrem,kernel,32,16,51664,9,393.15,387.76,20.29 -divrem,floor,32,16,48554,9,410.29,397.02,19.79 -divrem,gmp,32,16,96661,9,207.42,203.61,20.04 -divrem,gmpz,32,16,95160,9,209.95,204.82,19.93 diff --git a/tests/beman/big_int/perf/item1/mac_study128_run2.csv b/tests/beman/big_int/perf/item1/mac_study128_run2.csv deleted file mode 100644 index c33f65ad..00000000 --- a/tests/beman/big_int/perf/item1/mac_study128_run2.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:12:06Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new128 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2407426,9,8.13,8.05,19.91 -add,inplace,1,1,3099008,9,3.60,3.23,22.09 -add,kernel,1,1,17480918,9,1.14,1.14,19.97 -add,floor,1,1,10987802,9,1.83,1.82,20.10 -add,gmp,1,1,13280067,9,1.49,1.49,20.00 -add,gmpz,1,1,6717764,9,2.98,2.97,20.19 -add,auto,2,2,1106527,9,17.11,16.74,18.98 -add,inplace,2,2,2440077,9,3.85,3.84,19.11 -add,kernel,2,2,14385007,9,1.39,1.39,20.07 -add,floor,2,2,2055155,9,9.67,9.46,19.72 -add,gmp,2,2,10072436,9,1.98,1.96,19.97 -add,gmpz,2,2,6374520,9,6.06,3.23,31.72 -add,auto,4,4,1414316,9,14.13,13.71,19.81 -add,inplace,4,4,2985580,9,3.60,3.35,21.13 -add,kernel,4,4,10426875,9,1.92,1.91,20.01 -add,floor,4,4,1921034,9,10.67,10.40,20.43 -add,gmp,4,4,11518601,9,1.76,1.74,20.40 -add,gmpz,4,4,5780965,9,4.16,3.48,24.65 -add,auto,8,8,1326265,9,15.02,14.95,19.98 -add,inplace,8,8,2436335,9,4.09,3.97,19.77 -add,kernel,8,8,5669419,9,3.57,3.54,20.22 -add,floor,8,8,1645672,9,12.16,12.08,20.02 -add,gmp,8,8,8908351,9,2.24,2.23,19.93 -add,gmpz,8,8,4659323,9,4.37,4.28,20.56 -add,auto,16,16,1258282,9,16.39,16.11,20.52 -add,inplace,16,16,1752374,9,5.60,5.59,19.71 -add,kernel,16,16,2659006,9,7.53,7.49,20.03 -add,floor,16,16,1437638,9,13.65,13.41,19.67 -add,gmp,16,16,6376129,9,3.10,3.05,20.00 -add,gmpz,16,16,4455495,9,4.49,4.49,20.03 -sub,auto,1,1,2353389,9,8.46,8.40,19.89 -sub,inplace,1,1,2682523,9,3.74,3.70,20.04 -sub,kernel,1,1,19105896,9,1.03,1.03,19.67 -sub,floor,1,1,11487846,9,1.74,1.73,20.03 -sub,gmp,1,1,13301890,9,1.49,1.49,19.85 -sub,gmpz,1,1,8071942,9,2.49,2.48,20.08 -sub,auto,2,2,2303887,9,8.77,8.70,20.48 -sub,inplace,2,2,2627177,9,3.85,3.84,20.35 -sub,kernel,2,2,14133508,9,1.41,1.39,19.90 -sub,floor,2,2,10079654,9,1.99,1.98,20.09 -sub,gmp,2,2,10077364,9,1.98,1.96,19.97 -sub,gmpz,2,2,6703561,9,2.76,2.73,18.88 -sub,auto,4,4,1401441,9,14.03,13.90,20.46 -sub,inplace,4,4,2675648,9,3.74,3.73,20.23 -sub,kernel,4,4,10242000,9,1.94,1.91,19.97 -sub,floor,4,4,1954140,9,10.53,10.36,20.74 -sub,gmp,4,4,11500666,9,1.74,1.73,20.00 -sub,gmpz,4,4,7326668,9,2.74,2.72,20.05 -sub,auto,8,8,1290234,9,15.89,15.45,20.33 -sub,inplace,8,8,2313855,9,4.22,4.12,19.55 -sub,kernel,8,8,5677931,9,3.51,3.50,19.95 -sub,floor,8,8,1649892,9,11.61,11.43,19.39 -sub,gmp,8,8,8924538,9,2.24,2.23,19.97 -sub,gmpz,8,8,6185747,9,3.23,3.22,19.96 -sub,auto,16,16,1179796,9,18.15,16.79,20.98 -sub,inplace,16,16,1873917,9,5.34,5.33,20.12 -sub,kernel,16,16,2580868,9,7.77,7.70,20.13 -sub,floor,16,16,1323141,9,15.13,14.80,20.00 -sub,gmp,16,16,6067091,9,3.10,3.09,18.97 -sub,gmpz,16,16,4706421,9,4.24,4.23,19.97 -shl,auto,1,13,2858506,9,7.01,6.93,20.02 -shl,inplace,1,13,2850038,9,3.46,3.41,19.74 -shl,kernel,1,13,8965523,9,2.23,2.21,20.02 -shl,kernelip,1,13,8654558,9,1.79,1.21,27.93 -shl,floor,1,13,4202726,9,4.92,4.52,20.99 -shl,gmp,1,13,16156113,9,1.24,1.24,20.04 -shl,gmpz,1,13,10084873,9,2.03,1.98,20.32 -shl,auto,4,13,1520902,9,12.94,12.84,19.85 -shl,inplace,4,13,2622546,9,3.84,3.80,20.14 -shl,kernel,4,13,5361340,9,3.73,3.71,20.02 -shl,kernelip,4,13,2965542,9,3.39,3.37,20.07 -shl,floor,4,13,1581427,9,12.43,12.38,20.71 -shl,gmp,4,13,10102034,9,1.98,1.97,20.02 -shl,gmpz,4,13,7318592,9,2.73,2.72,19.96 -shl,auto,16,13,1286498,9,15.35,15.26,19.80 -shl,inplace,16,13,1866725,9,5.40,5.29,20.04 -shl,kernel,16,13,4900133,9,4.07,4.06,20.05 -shl,kernelip,16,13,1459432,9,6.77,6.75,19.77 -shl,floor,16,13,1632201,9,11.87,11.74,19.48 -shl,gmp,16,13,5753663,9,3.49,3.47,20.78 -shl,gmpz,16,13,3734277,9,5.18,5.13,19.34 -shr,auto,1,13,2345262,9,8.02,7.93,19.44 -shr,inplace,1,13,2780848,9,3.50,3.35,19.45 -shr,kernel,1,13,8049584,9,2.49,2.47,20.06 -shr,floor,1,13,7608237,9,2.53,2.48,19.28 -shr,gmp,1,13,19972954,9,1.00,0.99,19.91 -shr,gmpz,1,13,10044939,9,1.98,1.98,19.95 -shr,auto,4,13,1426732,9,14.00,13.78,19.91 -shr,inplace,4,13,1022051,9,9.85,9.83,20.17 -shr,kernel,4,13,4509779,9,4.47,4.46,20.19 -shr,floor,4,13,1616004,9,12.41,11.91,19.84 -shr,gmp,4,13,11506186,9,1.74,1.73,19.97 -shr,gmpz,4,13,7296037,9,2.73,2.72,19.92 -shr,auto,16,13,1131614,9,17.67,17.47,20.01 -shr,inplace,16,13,1909888,9,5.31,5.18,20.33 -shr,kernel,16,13,4657330,9,4.25,4.23,19.91 -shr,floor,16,13,1530496,9,13.02,12.91,20.00 -shr,gmp,16,13,6196616,9,3.23,3.22,20.00 -shr,gmpz,16,13,4719498,9,4.23,4.22,19.95 -mul,auto,1,1,2176120,9,9.18,9.16,20.12 -mul,gmp,1,1,5350693,9,3.76,3.70,20.08 -mul,gmpz,1,1,7312658,9,2.73,2.72,19.99 -mul,auto,2,2,1070731,9,18.62,18.01,19.89 -mul,kernel,2,2,3150884,9,6.33,5.98,19.65 -mul,floor,2,2,1369359,9,14.39,14.28,19.73 -mul,gmp,2,2,4388755,9,4.48,4.46,20.05 -mul,gmpz,2,2,3074758,9,6.64,6.48,20.40 -mul,auto,3,3,995575,9,20.05,19.99,20.08 -mul,kernel,3,3,2442280,9,8.19,8.17,20.01 -mul,floor,3,3,1195800,9,16.63,16.17,19.86 -mul,gmp,3,3,3268970,9,6.22,6.15,20.34 -mul,gmpz,3,3,2374563,9,9.12,8.22,18.99 -mul,auto,4,4,940386,9,21.26,20.87,19.98 -mul,kernel,4,4,1850513,9,11.29,10.82,20.79 -mul,floor,4,4,1202282,9,16.69,16.37,20.04 -mul,gmp,4,4,2066875,9,9.30,9.24,19.21 -mul,gmpz,4,4,1856833,9,10.95,10.91,20.39 -mul,auto,6,6,749825,9,27.21,26.67,20.37 -mul,kernel,6,6,1072390,9,18.97,18.72,20.33 -mul,floor,6,6,824297,9,25.06,23.90,20.35 -mul,gmp,6,6,1386808,9,14.49,14.39,20.09 -mul,gmpz,6,6,1143833,9,17.47,17.32,20.52 -mul,auto,8,8,569133,9,34.83,34.34,19.78 -mul,kernel,8,8,873273,9,23.06,22.86,20.16 -mul,floor,8,8,661872,9,30.64,30.12,20.21 -mul,gmp,8,8,852008,9,23.28,22.31,20.46 -mul,gmpz,8,8,805827,9,24.48,24.38,19.75 -mul,auto,12,12,357833,9,53.87,53.68,19.29 -mul,kernel,12,12,488165,9,40.90,40.82,19.98 -mul,floor,12,12,404878,9,49.57,49.12,19.96 -mul,gmp,12,12,451194,9,44.67,44.15,20.20 -mul,gmpz,12,12,423961,9,47.26,47.19,20.05 -mul,auto,16,16,241487,9,82.79,82.73,20.05 -mul,kernel,16,16,287001,9,69.88,69.56,20.06 -mul,floor,16,16,250363,9,79.75,79.44,19.99 -mul,gmp,16,16,263310,9,76.17,75.99,20.10 -mul,gmpz,16,16,252424,9,79.07,78.72,20.01 -sqr,auto,4,4,920076,9,21.65,21.52,20.51 -sqr,kernel,4,4,1755650,9,11.23,11.12,19.72 -sqr,floor,4,4,1241411,9,16.18,16.14,20.17 -sqr,gmp,4,4,2875065,9,6.95,6.94,19.98 -sqr,gmpz,4,4,2063502,9,9.69,9.67,20.00 -sqr,auto,16,16,269302,9,74.37,73.53,20.06 -sqr,kernel,16,16,327990,9,62.40,60.54,20.32 -sqr,floor,16,16,287609,9,68.46,68.17,19.75 -sqr,gmp,16,16,321332,9,62.09,58.36,19.71 -sqr,gmpz,16,16,311474,9,65.64,64.23,20.38 -divrem,auto,2,1,866772,9,23.04,22.83,20.04 -divrem,kernel,2,1,3184076,9,6.28,6.23,19.96 -divrem,floor,2,1,2800091,9,7.15,7.12,20.01 -divrem,gmp,2,1,3954665,9,5.08,5.04,20.09 -divrem,gmpz,2,1,2295752,9,8.69,8.65,20.04 -divrem,auto,8,4,250806,9,80.20,79.21,20.09 -divrem,kernel,8,4,380111,9,52.61,51.97,19.98 -divrem,floor,8,4,305866,9,65.23,64.22,19.93 -divrem,gmp,8,4,478134,9,41.65,41.22,19.92 -divrem,gmpz,8,4,453025,9,44.20,43.94,20.02 -divrem,auto,32,16,47188,9,428.12,416.29,20.14 -divrem,kernel,32,16,52350,9,394.30,385.37,20.55 -divrem,floor,32,16,48433,9,425.02,402.15,20.42 -divrem,gmp,32,16,97195,9,206.47,201.58,20.14 -divrem,gmpz,32,16,94713,9,207.89,206.01,19.67 diff --git a/tests/beman/big_int/perf/item1/mac_study128_vecsort_run1.csv b/tests/beman/big_int/perf/item1/mac_study128_vecsort_run1.csv deleted file mode 100644 index 855c0270..00000000 --- a/tests/beman/big_int/perf/item1/mac_study128_vecsort_run1.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:09:59Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new128 seed=1 ops=vecsort bands=medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,95.41,94.45,28.62 -vecsort,builtin,100000,1,15,9,13.79,13.48,20.66 -vecsort,copy,100000,1,53,9,3.92,3.86,20.88 diff --git a/tests/beman/big_int/perf/item1/mac_study128_vecsort_run2.csv b/tests/beman/big_int/perf/item1/mac_study128_vecsort_run2.csv deleted file mode 100644 index a992b1c7..00000000 --- a/tests/beman/big_int/perf/item1/mac_study128_vecsort_run2.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:12:47Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new128 seed=2 ops=vecsort bands=medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,94.14,93.19,28.25 -vecsort,builtin,100000,1,16,9,12.98,12.83,20.83 -vecsort,copy,100000,1,53,9,3.87,3.84,20.58 diff --git a/tests/beman/big_int/perf/item1/mac_study256_run1.csv b/tests/beman/big_int/perf/item1/mac_study256_run1.csv deleted file mode 100644 index 4db2b432..00000000 --- a/tests/beman/big_int/perf/item1/mac_study256_run1.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:10:00Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new256 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2128828,9,9.18,8.89,19.70 -add,inplace,1,1,2736131,9,3.48,3.47,19.21 -add,kernel,1,1,17470389,9,1.14,1.14,19.98 -add,floor,1,1,10981146,9,1.82,1.82,20.02 -add,gmp,1,1,13377640,9,1.49,1.48,19.92 -add,gmpz,1,1,6719697,9,2.98,2.97,21.38 -add,auto,2,2,1845169,9,10.70,10.33,19.65 -add,inplace,2,2,2333811,9,4.23,4.09,19.68 -add,kernel,2,2,14344987,9,1.39,1.39,20.00 -add,floor,2,2,9647329,9,2.07,2.06,20.02 -add,gmp,2,2,10163145,9,1.99,1.96,20.19 -add,gmpz,2,2,5986931,9,4.78,3.02,23.23 -add,auto,4,4,2217587,9,9.02,8.97,20.17 -add,inplace,4,4,2545004,9,3.73,3.72,19.36 -add,kernel,4,4,10124761,9,1.99,1.97,20.08 -add,floor,4,4,1965798,9,10.21,10.18,20.17 -add,gmp,4,4,11499982,9,1.74,1.73,19.98 -add,gmpz,4,4,5116242,9,4.12,3.85,22.34 -add,auto,8,8,1286102,9,15.29,14.76,19.60 -add,inplace,8,8,2401299,9,4.22,3.97,19.92 -add,kernel,8,8,5469472,9,3.65,3.55,19.97 -add,floor,8,8,1679749,9,12.29,11.93,20.55 -add,gmp,8,8,8959661,9,2.24,2.23,20.23 -add,gmpz,8,8,5193744,9,3.81,3.79,19.75 -add,auto,16,16,1216485,9,16.19,16.12,19.77 -add,inplace,16,16,1752600,9,5.71,5.69,20.14 -add,kernel,16,16,2605875,9,7.68,7.64,20.02 -add,floor,16,16,1431896,9,13.93,13.80,20.12 -add,gmp,16,16,6787533,9,3.22,2.94,21.17 -add,gmpz,16,16,4941213,9,4.26,3.99,21.37 -sub,auto,1,1,2368907,9,8.68,8.40,20.45 -sub,inplace,1,1,2741409,9,3.72,3.59,20.31 -sub,kernel,1,1,18739224,9,1.07,1.06,20.06 -sub,floor,1,1,11515125,9,1.74,1.73,20.03 -sub,gmp,1,1,11522721,9,1.74,1.73,20.02 -sub,gmpz,1,1,7990012,9,2.50,2.48,19.94 -sub,auto,2,2,2242405,9,8.94,8.46,19.78 -sub,inplace,2,2,2607662,9,3.85,3.60,19.67 -sub,kernel,2,2,13987932,9,1.42,1.41,19.79 -sub,floor,2,2,9953239,9,2.00,1.99,19.94 -sub,gmp,2,2,8954829,9,2.23,2.21,19.99 -sub,gmpz,2,2,6731626,9,2.99,2.98,20.09 -sub,auto,4,4,2235126,9,8.95,8.91,20.10 -sub,inplace,4,4,2586369,9,3.85,3.84,20.06 -sub,kernel,4,4,10061646,9,1.99,1.98,19.99 -sub,floor,4,4,8037514,9,2.49,2.49,20.03 -sub,gmp,4,4,10067694,9,1.99,1.98,20.03 -sub,gmpz,4,4,7320924,9,2.74,2.73,20.06 -sub,auto,8,8,1283261,9,15.50,15.44,20.22 -sub,inplace,8,8,2438888,9,4.03,3.97,19.69 -sub,kernel,8,8,2477218,9,8.05,7.86,19.84 -sub,floor,8,8,1780221,9,11.32,11.01,20.24 -sub,gmp,8,8,8064620,9,2.48,2.47,20.02 -sub,gmpz,8,8,6193924,9,3.23,3.22,20.03 -sub,auto,16,16,1112627,9,18.87,17.83,20.73 -sub,inplace,16,16,1904072,9,5.33,5.28,20.27 -sub,kernel,16,16,1274191,9,15.66,15.20,19.95 -sub,floor,16,16,1226462,9,16.47,16.42,20.20 -sub,gmp,16,16,5762557,9,3.47,3.23,19.69 -sub,gmpz,16,16,4583377,9,4.37,4.35,20.03 -shl,auto,1,13,2731043,9,7.29,7.12,19.85 -shl,inplace,1,13,2812270,9,3.57,3.35,20.00 -shl,kernel,1,13,8961143,9,2.24,2.23,20.04 -shl,kernelip,1,13,7465399,9,1.81,1.79,26.97 -shl,floor,1,13,5475549,9,3.61,3.57,19.83 -shl,gmp,1,13,16081346,9,1.24,1.24,19.96 -shl,gmpz,1,13,10063070,9,1.99,1.98,19.98 -shl,auto,4,13,1477058,9,13.94,13.66,20.61 -shl,inplace,4,13,2708977,9,4.66,3.71,25.29 -shl,kernel,4,13,5372253,9,3.72,3.70,20.00 -shl,kernelip,4,13,2965903,9,3.40,3.37,20.15 -shl,floor,4,13,1543833,9,12.66,12.64,19.59 -shl,gmp,4,13,10080008,9,1.99,1.98,20.01 -shl,gmpz,4,13,7309285,9,2.73,2.73,19.95 -shl,auto,16,13,1210409,9,16.67,16.61,20.33 -shl,inplace,16,13,1867836,9,5.35,5.32,20.07 -shl,kernel,16,13,4816919,9,4.12,4.09,19.85 -shl,kernelip,16,13,1418095,9,6.78,6.67,19.27 -shl,floor,16,13,1678244,9,11.96,11.59,20.13 -shl,gmp,16,13,5750828,9,3.48,3.47,20.03 -shl,gmpz,16,13,3868795,9,5.12,5.10,19.84 -shr,auto,1,13,2551479,9,8.25,7.76,20.14 -shr,inplace,1,13,2998560,9,3.33,3.31,20.06 -shr,kernel,1,13,8908837,9,2.24,2.23,20.00 -shr,floor,1,13,8058691,9,2.49,2.48,20.45 -shr,gmp,1,13,20000001,9,0.99,0.99,19.87 -shr,gmpz,1,13,10066487,9,1.99,1.98,19.99 -shr,auto,4,13,2059488,9,9.85,9.65,20.25 -shr,inplace,4,13,2646363,9,3.81,3.75,20.11 -shr,kernel,4,13,5378442,9,3.72,3.69,20.03 -shr,floor,4,13,4250215,9,4.47,4.43,19.27 -shr,gmp,4,13,11528618,9,1.74,1.73,20.02 -shr,gmpz,4,13,7311568,9,2.74,2.73,20.25 -shr,auto,16,13,1122798,9,17.83,17.71,20.05 -shr,inplace,16,13,1921562,9,5.33,5.30,20.54 -shr,kernel,16,13,4824359,9,4.14,4.13,20.11 -shr,floor,16,13,1492702,9,12.95,12.88,19.33 -shr,gmp,16,13,6198928,9,3.23,3.22,20.01 -shr,gmpz,16,13,4725324,9,4.49,4.22,22.29 -mul,auto,1,1,2153036,9,9.21,9.17,19.87 -mul,gmp,1,1,5367141,9,3.75,3.71,20.21 -mul,gmpz,1,1,7321354,9,2.73,2.73,20.00 -mul,auto,2,2,1415924,9,13.49,13.44,19.23 -mul,kernel,2,2,3071568,9,6.52,6.46,20.00 -mul,floor,2,2,2446679,9,8.15,8.12,19.96 -mul,gmp,2,2,4245856,9,4.72,4.70,20.02 -mul,gmpz,2,2,2828916,9,7.18,6.98,20.12 -mul,auto,3,3,1031278,9,19.61,19.45,20.47 -mul,kernel,3,3,2370150,9,8.46,8.43,20.08 -mul,floor,3,3,1181127,9,16.64,16.60,19.66 -mul,gmp,3,3,3215892,9,6.22,6.21,19.99 -mul,gmpz,3,3,2315050,9,10.23,8.85,23.36 -mul,auto,4,4,936191,9,21.88,21.34,20.84 -mul,kernel,4,4,1893562,9,11.01,10.80,20.80 -mul,floor,4,4,1196212,9,16.65,16.42,20.07 -mul,gmp,4,4,2232818,9,8.72,8.11,19.26 -mul,gmpz,4,4,2045415,9,9.83,9.77,19.76 -mul,auto,6,6,722706,9,27.40,27.22,19.82 -mul,kernel,6,6,1058748,9,18.88,18.68,19.98 -mul,floor,6,6,781690,9,23.61,23.23,18.47 -mul,gmp,6,6,1333735,9,15.04,14.81,20.05 -mul,gmpz,6,6,1077618,9,18.96,18.61,20.37 -mul,auto,8,8,579511,9,34.29,34.22,19.91 -mul,kernel,8,8,871238,9,22.95,22.89,20.03 -mul,floor,8,8,670123,9,30.05,29.84,20.20 -mul,gmp,8,8,841454,9,22.37,21.98,19.28 -mul,gmpz,8,8,817130,9,24.40,24.22,19.95 -mul,auto,12,12,374062,9,53.71,53.26,20.08 -mul,kernel,12,12,487123,9,41.12,41.01,20.06 -mul,floor,12,12,399400,9,49.67,49.13,19.98 -mul,gmp,12,12,454855,9,43.84,43.59,19.94 -mul,gmpz,12,12,428351,9,46.85,46.57,20.10 -mul,auto,16,16,238878,9,82.66,82.40,19.78 -mul,kernel,16,16,287777,9,69.41,69.30,19.98 -mul,floor,16,16,255852,9,78.60,78.00,20.11 -mul,gmp,16,16,247972,9,77.20,76.97,19.17 -mul,gmpz,16,16,253276,9,79.05,78.92,20.02 -sqr,auto,4,4,937827,9,21.15,21.07,19.84 -sqr,kernel,4,4,1789046,9,11.16,10.94,19.88 -sqr,floor,4,4,1244875,9,16.17,16.04,20.16 -sqr,gmp,4,4,2874391,9,7.01,6.94,20.21 -sqr,gmpz,4,4,2241071,9,9.20,8.96,20.84 -sqr,auto,16,16,265560,9,73.39,72.96,19.53 -sqr,kernel,16,16,312290,9,63.54,63.21,19.87 -sqr,floor,16,16,290782,9,71.43,68.99,20.58 -sqr,gmp,16,16,316991,9,62.96,60.32,19.90 -sqr,gmpz,16,16,309430,9,65.77,64.71,20.27 -divrem,auto,2,1,836083,9,23.83,23.52,19.88 -divrem,kernel,2,1,3550622,9,5.63,5.62,20.01 -divrem,floor,2,1,3036953,9,6.71,6.58,20.57 -divrem,gmp,2,1,3900997,9,5.02,4.99,19.72 -divrem,gmpz,2,1,2223723,9,8.67,8.59,19.31 -divrem,auto,8,4,288697,9,68.27,67.80,19.74 -divrem,kernel,8,4,483699,9,41.34,40.52,19.94 -divrem,floor,8,4,410015,9,48.73,48.28,19.99 -divrem,gmp,8,4,495115,9,40.21,39.71,19.99 -divrem,gmpz,8,4,466875,9,43.76,42.87,20.36 -divrem,auto,32,16,45132,9,430.24,419.99,19.37 -divrem,kernel,32,16,51148,9,393.42,382.39,20.07 -divrem,floor,32,16,48903,9,411.73,404.93,20.13 -divrem,gmp,32,16,96331,9,207.23,203.46,19.91 -divrem,gmpz,32,16,97156,9,210.36,205.28,20.34 diff --git a/tests/beman/big_int/perf/item1/mac_study256_run2.csv b/tests/beman/big_int/perf/item1/mac_study256_run2.csv deleted file mode 100644 index bb4d50f4..00000000 --- a/tests/beman/big_int/perf/item1/mac_study256_run2.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:12:48Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new256 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2462397,9,9.19,8.22,22.74 -add,inplace,1,1,2872990,9,3.23,3.22,19.01 -add,kernel,1,1,17365424,9,1.14,1.14,19.86 -add,floor,1,1,10891717,9,1.82,1.82,19.86 -add,gmp,1,1,13421402,9,1.49,1.48,20.05 -add,gmpz,1,1,6630939,9,2.99,2.98,21.44 -add,auto,2,2,1916775,9,10.58,10.40,20.34 -add,inplace,2,2,2325520,9,4.22,4.19,19.61 -add,kernel,2,2,14170220,9,1.39,1.39,19.79 -add,floor,2,2,9657721,9,2.07,2.07,19.99 -add,gmp,2,2,10166751,9,1.98,1.97,20.17 -add,gmpz,2,2,6657957,9,3.26,3.01,24.17 -add,auto,4,4,2221836,9,9.59,8.73,20.86 -add,inplace,4,4,2858985,9,3.81,3.72,21.68 -add,kernel,4,4,10143333,9,1.97,1.96,20.02 -add,floor,4,4,1963507,9,10.21,10.18,20.17 -add,gmp,4,4,11509975,9,1.74,1.73,20.02 -add,gmpz,4,4,5989246,9,4.08,3.78,22.12 -add,auto,8,8,1355528,9,15.04,14.83,20.62 -add,inplace,8,8,2514322,9,4.25,4.01,21.08 -add,kernel,8,8,5500686,9,3.64,3.62,20.03 -add,floor,8,8,1679061,9,11.93,11.67,20.04 -add,gmp,8,8,8939652,9,2.23,2.23,20.16 -add,gmpz,8,8,5258226,9,3.86,3.81,20.20 -add,auto,16,16,1232351,9,16.99,16.10,20.03 -add,inplace,16,16,1751401,9,5.71,5.70,20.30 -add,kernel,16,16,2597866,9,7.66,7.60,19.91 -add,floor,16,16,1451849,9,13.74,13.68,19.85 -add,gmp,16,16,6200542,9,3.23,3.22,20.01 -add,gmpz,16,16,5026090,9,4.47,4.46,22.67 -sub,auto,1,1,2370301,9,8.46,8.37,20.11 -sub,inplace,1,1,2703229,9,3.72,3.60,20.04 -sub,kernel,1,1,18775421,9,1.06,1.06,19.99 -sub,floor,1,1,10985221,9,1.76,1.74,19.28 -sub,gmp,1,1,11465913,9,1.74,1.73,19.95 -sub,gmpz,1,1,7995830,9,2.49,2.48,19.91 -sub,auto,2,2,2290883,9,8.69,8.68,19.95 -sub,inplace,2,2,2583572,9,3.86,3.85,20.49 -sub,kernel,2,2,14357851,9,1.42,1.40,20.35 -sub,floor,2,2,9619684,9,1.99,1.98,19.14 -sub,gmp,2,2,8943664,9,2.23,2.20,19.93 -sub,gmpz,2,2,6682378,9,2.98,2.97,19.90 -sub,auto,4,4,2177222,9,9.49,8.96,20.58 -sub,inplace,4,4,2598725,9,3.97,3.85,20.51 -sub,kernel,4,4,10124597,9,2.23,1.98,21.53 -sub,floor,4,4,8015758,9,2.49,2.49,19.97 -sub,gmp,4,4,10021732,9,1.99,1.98,19.97 -sub,gmpz,4,4,7313841,9,2.73,2.73,19.97 -sub,auto,8,8,1240266,9,15.95,15.71,19.87 -sub,inplace,8,8,2480667,9,3.99,3.97,20.17 -sub,kernel,8,8,5554714,9,3.54,3.53,19.69 -sub,floor,8,8,1748332,9,11.66,11.43,20.35 -sub,gmp,8,8,8081114,9,2.48,2.48,20.06 -sub,gmpz,8,8,6191025,9,3.23,3.22,19.98 -sub,auto,16,16,1105553,9,18.03,17.41,19.93 -sub,inplace,16,16,1885860,9,5.37,5.30,20.35 -sub,kernel,16,16,2592978,9,7.71,7.70,19.99 -sub,floor,16,16,1299320,9,15.39,15.11,19.91 -sub,gmp,16,16,6149913,9,3.23,3.22,20.07 -sub,gmpz,16,16,4601877,9,4.38,4.35,20.14 -shl,auto,1,13,2863637,9,7.22,7.19,20.72 -shl,inplace,1,13,2759832,9,3.75,3.64,20.80 -shl,kernel,1,13,8965409,9,2.23,2.23,20.03 -shl,kernelip,1,13,9032801,9,1.10,1.10,24.03 -shl,floor,1,13,5280177,9,3.66,3.58,19.34 -shl,gmp,1,13,16114153,9,1.24,1.24,20.00 -shl,gmpz,1,13,10078860,9,2.00,1.98,20.13 -shl,auto,4,13,1471103,9,13.34,13.21,19.61 -shl,inplace,4,13,2627575,9,3.83,3.73,20.74 -shl,kernel,4,13,5374716,9,3.73,3.70,20.12 -shl,kernelip,4,13,2905823,9,3.39,3.37,19.72 -shl,floor,4,13,1573199,9,12.71,12.65,20.43 -shl,gmp,4,13,10080610,9,1.99,1.98,20.01 -shl,gmpz,4,13,7172402,9,2.77,2.73,19.87 -shl,auto,16,13,1190579,9,17.23,16.81,20.47 -shl,inplace,16,13,1865416,9,5.35,5.34,19.99 -shl,kernel,16,13,4878975,9,4.10,4.09,20.07 -shl,kernelip,16,13,1445086,9,6.80,6.69,19.59 -shl,floor,16,13,1650373,9,11.94,11.84,19.85 -shl,gmp,16,13,5754358,9,3.48,3.47,20.01 -shl,gmpz,16,13,3859606,9,5.19,5.15,20.03 -shr,auto,1,13,1995080,9,12.23,9.14,23.71 -shr,inplace,1,13,3830613,9,3.41,2.60,20.26 -shr,kernel,1,13,8923428,9,2.26,2.24,20.25 -shr,floor,1,13,8050522,9,2.48,2.45,20.16 -shr,gmp,1,13,20000001,9,0.99,0.99,19.89 -shr,gmpz,1,13,10073885,9,1.99,1.98,20.03 -shr,auto,4,13,2054477,9,10.59,9.65,21.63 -shr,inplace,4,13,2743607,9,3.72,3.69,20.39 -shr,kernel,4,13,5388131,9,3.76,3.71,20.23 -shr,floor,4,13,4192108,9,4.48,4.46,18.86 -shr,gmp,4,13,11516278,9,1.74,1.73,19.99 -shr,gmpz,4,13,7323307,9,2.73,2.72,20.00 -shr,auto,16,13,1116225,9,17.72,17.61,19.88 -shr,inplace,16,13,1916773,9,5.24,5.21,20.07 -shr,kernel,16,13,4812986,9,4.14,4.14,19.93 -shr,floor,16,13,1564756,9,12.91,12.67,20.18 -shr,gmp,16,13,6204792,9,3.23,3.22,20.11 -shr,gmpz,16,13,4727474,9,4.24,4.22,20.14 -mul,auto,1,1,2122170,9,9.42,9.37,19.98 -mul,gmp,1,1,5368300,9,3.72,3.70,19.97 -mul,gmpz,1,1,7325987,9,2.73,2.73,20.03 -mul,auto,2,2,1411151,9,13.71,13.35,19.28 -mul,kernel,2,2,3226250,9,6.46,6.24,20.68 -mul,floor,2,2,2466376,9,7.99,7.91,19.76 -mul,gmp,2,2,4219057,9,4.72,4.71,19.94 -mul,gmpz,2,2,3202515,9,6.26,6.22,20.88 -mul,auto,3,3,1043772,9,19.62,19.09,20.42 -mul,kernel,3,3,2440089,9,8.19,8.18,20.36 -mul,floor,3,3,1185428,9,17.36,16.64,21.01 -mul,gmp,3,3,3285694,9,6.09,6.03,20.01 -mul,gmpz,3,3,2304221,9,8.50,8.39,20.13 -mul,auto,4,4,936488,9,21.74,21.52,20.47 -mul,kernel,4,4,1805322,9,11.12,10.45,19.87 -mul,floor,4,4,1185878,9,16.86,16.65,19.90 -mul,gmp,4,4,2235077,9,8.94,8.93,20.01 -mul,gmpz,4,4,1899664,9,9.88,9.76,18.84 -mul,auto,6,6,712018,9,27.56,27.09,19.60 -mul,kernel,6,6,1053943,9,18.93,18.44,19.97 -mul,floor,6,6,853342,9,23.59,23.37,20.21 -mul,gmp,6,6,1376929,9,14.49,14.39,19.97 -mul,gmpz,6,6,1153848,9,18.82,17.52,21.66 -mul,auto,8,8,574226,9,34.83,34.44,19.99 -mul,kernel,8,8,869804,9,22.97,22.91,20.01 -mul,floor,8,8,664426,9,29.84,29.73,19.84 -mul,gmp,8,8,896484,9,22.46,22.11,21.08 -mul,gmpz,8,8,819244,9,24.68,24.25,20.17 -mul,auto,12,12,372315,9,54.04,53.81,20.14 -mul,kernel,12,12,488162,9,40.99,40.96,20.02 -mul,floor,12,12,410479,9,49.33,48.78,20.23 -mul,gmp,12,12,456339,9,43.97,43.81,20.09 -mul,gmpz,12,12,427496,9,46.73,46.63,20.00 -mul,auto,16,16,242417,9,82.35,82.16,20.02 -mul,kernel,16,16,287703,9,69.57,69.40,20.02 -mul,floor,16,16,252939,9,79.02,78.82,20.03 -mul,gmp,16,16,262028,9,76.56,76.24,20.08 -mul,gmpz,16,16,252860,9,78.23,77.68,19.81 -sqr,auto,4,4,945137,9,21.17,21.09,20.08 -sqr,kernel,4,4,1866549,9,10.65,10.17,19.73 -sqr,floor,4,4,1229133,9,16.97,16.12,20.84 -sqr,gmp,4,4,2877511,9,6.95,6.69,19.79 -sqr,gmpz,4,4,2108024,9,9.68,8.70,19.73 -sqr,auto,16,16,264268,9,74.34,73.03,19.59 -sqr,kernel,16,16,315512,9,63.48,63.30,20.04 -sqr,floor,16,16,279384,9,71.69,70.99,20.01 -sqr,gmp,16,16,328864,9,63.45,61.67,20.74 -sqr,gmpz,16,16,297252,9,66.59,65.28,19.72 -divrem,auto,2,1,857779,9,23.29,23.05,19.91 -divrem,kernel,2,1,3186956,9,6.32,6.19,20.13 -divrem,floor,2,1,2813916,9,7.19,7.12,20.23 -divrem,gmp,2,1,4005916,9,5.00,4.97,20.04 -divrem,gmpz,2,1,2305719,9,8.69,8.62,20.14 -divrem,auto,8,4,247877,9,81.11,79.78,20.08 -divrem,kernel,8,4,385071,9,51.44,51.09,19.84 -divrem,floor,8,4,331994,9,60.32,60.02,20.02 -divrem,gmp,8,4,481304,9,41.53,40.76,19.97 -divrem,gmpz,8,4,450891,9,44.26,43.78,19.91 -divrem,auto,32,16,46372,9,432.39,423.88,20.02 -divrem,kernel,32,16,48618,9,394.44,378.47,19.04 -divrem,floor,32,16,48833,9,409.74,403.26,20.06 -divrem,gmp,32,16,97534,9,205.16,202.09,19.98 -divrem,gmpz,32,16,96212,9,208.17,203.68,20.02 diff --git a/tests/beman/big_int/perf/item1/mac_study256_vecsort_run1.csv b/tests/beman/big_int/perf/item1/mac_study256_vecsort_run1.csv deleted file mode 100644 index d3c3a929..00000000 --- a/tests/beman/big_int/perf/item1/mac_study256_vecsort_run1.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:10:41Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new256 seed=1 ops=vecsort bands=medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,97.95,96.96,29.36 -vecsort,builtin,100000,1,16,9,13.41,12.97,21.35 -vecsort,copy,100000,1,50,9,3.95,3.91,19.79 diff --git a/tests/beman/big_int/perf/item1/mac_study256_vecsort_run2.csv b/tests/beman/big_int/perf/item1/mac_study256_vecsort_run2.csv deleted file mode 100644 index b87b6bce..00000000 --- a/tests/beman/big_int/perf/item1/mac_study256_vecsort_run2.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:13:31Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new256 seed=2 ops=vecsort bands=medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,95.06,94.65,28.58 -vecsort,builtin,100000,1,16,9,12.95,12.88,20.80 -vecsort,copy,100000,1,61,9,3.58,3.31,22.21 diff --git a/tests/beman/big_int/perf/item1/mac_study512_run1.csv b/tests/beman/big_int/perf/item1/mac_study512_run1.csv deleted file mode 100644 index 6f8a1a9a..00000000 --- a/tests/beman/big_int/perf/item1/mac_study512_run1.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:10:42Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new512 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2010831,9,10.74,9.88,21.26 -add,inplace,1,1,2883772,9,3.55,3.47,20.38 -add,kernel,1,1,17494419,9,1.14,1.14,20.01 -add,floor,1,1,10839063,9,1.82,1.82,19.86 -add,gmp,1,1,13442163,9,1.49,1.48,20.03 -add,gmpz,1,1,6544855,9,3.02,2.96,20.07 -add,auto,2,2,1746988,9,10.98,10.54,19.31 -add,inplace,2,2,2431176,9,4.22,3.98,20.02 -add,kernel,2,2,14352877,9,1.39,1.39,20.02 -add,floor,2,2,9671916,9,2.07,2.06,20.01 -add,gmp,2,2,10083681,9,1.98,1.97,20.12 -add,gmpz,2,2,6698607,9,5.16,2.98,32.46 -add,auto,4,4,2014474,9,9.93,9.84,20.00 -add,inplace,4,4,2522530,9,3.97,3.92,20.08 -add,kernel,4,4,10125190,9,1.98,1.97,20.09 -add,floor,4,4,7779428,9,2.58,2.57,20.22 -add,gmp,4,4,11509799,9,1.74,1.73,20.00 -add,gmpz,4,4,5138758,9,3.99,3.85,20.91 -add,auto,8,8,2255859,9,8.71,8.66,19.66 -add,inplace,8,8,2351021,9,4.28,4.22,20.14 -add,kernel,8,8,5419047,9,3.68,3.63,19.90 -add,floor,8,8,1589026,9,12.02,11.68,19.13 -add,gmp,8,8,8960064,9,2.25,2.23,20.15 -add,gmpz,8,8,4498679,9,4.44,4.28,20.12 -add,auto,16,16,1232541,9,16.44,16.27,20.46 -add,inplace,16,16,1671657,9,5.73,5.70,19.18 -add,kernel,16,16,2595991,9,7.75,7.73,20.15 -add,floor,16,16,1454601,9,13.93,13.76,20.30 -add,gmp,16,16,6193585,9,3.23,3.22,19.99 -add,gmpz,16,16,5005552,9,4.45,3.99,20.25 -sub,auto,1,1,2235804,9,8.75,8.68,19.70 -sub,inplace,1,1,2766669,9,3.63,3.60,20.10 -sub,kernel,1,1,18212337,9,1.09,1.09,19.85 -sub,floor,1,1,11516094,9,1.74,1.73,20.03 -sub,gmp,1,1,13417501,9,1.49,1.48,19.97 -sub,gmpz,1,1,8060273,9,2.48,2.48,20.00 -sub,auto,2,2,2238740,9,9.19,9.13,20.58 -sub,inplace,2,2,2599536,9,3.85,3.84,20.02 -sub,kernel,2,2,14318762,9,1.41,1.40,20.13 -sub,floor,2,2,10073780,9,1.99,1.98,20.00 -sub,gmp,2,2,10055603,9,1.99,1.95,19.90 -sub,gmpz,2,2,6732266,9,2.73,2.73,18.76 -sub,auto,4,4,2117288,9,9.59,9.22,20.11 -sub,inplace,4,4,2697873,9,3.60,3.60,19.50 -sub,kernel,4,4,9918694,9,2.02,2.00,20.03 -sub,floor,4,4,8060777,9,2.49,2.49,20.09 -sub,gmp,4,4,11515585,9,1.74,1.73,20.01 -sub,gmpz,4,4,7317810,9,2.73,2.73,19.98 -sub,auto,8,8,2231385,9,8.97,8.96,20.30 -sub,inplace,8,8,2295293,9,4.21,4.10,19.43 -sub,kernel,8,8,5465004,9,3.64,3.63,20.30 -sub,floor,8,8,4780750,9,4.20,4.17,20.08 -sub,gmp,8,8,8962819,9,2.23,2.23,20.03 -sub,gmpz,8,8,6191521,9,3.23,3.22,20.02 -sub,auto,16,16,1107168,9,18.22,17.71,19.72 -sub,inplace,16,16,1914922,9,5.26,5.20,20.20 -sub,kernel,16,16,2554265,9,7.82,7.77,19.98 -sub,floor,16,16,1340786,9,15.18,15.10,20.52 -sub,gmp,16,16,6138752,9,3.23,3.22,19.82 -sub,gmpz,16,16,4738252,9,4.22,4.21,20.00 -shl,auto,1,13,2880265,9,6.94,6.91,20.02 -shl,inplace,1,13,2763496,9,3.54,3.52,20.10 -shl,kernel,1,13,8974742,9,2.23,2.22,20.03 -shl,kernelip,1,13,5767832,9,1.74,1.58,19.83 -shl,floor,1,13,3877733,9,5.49,4.82,21.08 -shl,gmp,1,13,16103259,9,1.24,1.24,20.00 -shl,gmpz,1,13,10077185,9,1.99,1.98,20.03 -shl,auto,4,13,2461263,9,8.38,7.94,20.41 -shl,inplace,4,13,2284639,9,4.39,4.29,20.11 -shl,kernel,4,13,5285728,9,3.77,3.71,19.91 -shl,kernelip,4,13,3008813,9,3.39,3.32,20.53 -shl,floor,4,13,3988905,9,4.99,4.90,19.96 -shl,gmp,4,13,10123173,9,1.99,1.96,20.10 -shl,gmpz,4,13,7337479,9,2.73,2.73,20.09 -shl,auto,16,13,1008667,9,20.08,19.79,20.54 -shl,inplace,16,13,1903424,9,5.33,5.31,20.30 -shl,kernel,16,13,4825119,9,4.15,4.13,20.04 -shl,kernelip,16,13,1467146,9,7.05,6.84,20.79 -shl,floor,16,13,1643826,9,11.96,11.81,19.65 -shl,gmp,16,13,5749654,9,3.47,3.47,19.99 -shl,gmpz,16,13,4078075,9,4.93,4.89,20.19 -shr,auto,1,13,2519319,9,8.19,7.91,24.19 -shr,inplace,1,13,2977994,9,3.34,3.31,19.92 -shr,kernel,1,13,8970297,9,2.23,2.23,20.04 -shr,floor,1,13,7693775,9,2.51,2.48,19.34 -shr,gmp,1,13,20000001,9,0.99,0.99,19.95 -shr,gmpz,1,13,10071499,9,1.98,1.98,19.99 -shr,auto,4,13,2012165,9,9.39,9.18,19.30 -shr,inplace,4,13,2673915,9,3.76,3.45,19.89 -shr,kernel,4,13,5358895,9,3.73,3.71,20.01 -shr,floor,4,13,4342372,9,4.47,4.39,19.77 -shr,gmp,4,13,11565488,9,1.74,1.74,20.10 -shr,gmpz,4,13,7331419,9,2.73,2.73,20.04 -shr,auto,16,13,1111000,9,18.53,17.99,20.72 -shr,inplace,16,13,1850853,9,5.35,5.27,19.78 -shr,kernel,16,13,4753418,9,4.17,4.16,19.98 -shr,floor,16,13,1522918,9,13.16,13.13,20.19 -shr,gmp,16,13,6202948,9,3.23,3.22,20.03 -shr,gmpz,16,13,4728720,9,4.23,4.22,20.03 -mul,auto,1,1,2168991,9,9.18,9.05,19.90 -mul,gmp,1,1,5383509,9,3.72,3.71,20.04 -mul,gmpz,1,1,7308529,9,2.74,2.73,20.00 -mul,auto,2,2,1470192,9,13.87,13.64,20.38 -mul,kernel,2,2,3215583,9,6.21,6.19,19.98 -mul,floor,2,2,2682658,9,7.45,7.43,20.00 -mul,gmp,2,2,4232991,9,4.48,4.35,19.42 -mul,gmpz,2,2,2962535,9,6.50,6.29,19.14 -mul,auto,3,3,1343932,9,14.93,14.89,20.06 -mul,kernel,3,3,2447609,9,8.25,8.18,20.90 -mul,floor,3,3,2005589,9,9.53,9.44,19.18 -mul,gmp,3,3,3227588,9,6.19,6.07,19.87 -mul,gmpz,3,3,2231272,9,10.49,9.11,23.11 -mul,auto,4,4,1324654,9,15.18,15.12,20.13 -mul,kernel,4,4,1804606,9,11.20,11.14,20.22 -mul,floor,4,4,1812191,9,11.16,10.94,20.15 -mul,gmp,4,4,2281238,9,9.63,9.18,21.63 -mul,gmpz,4,4,1784646,9,10.95,10.90,19.61 -mul,auto,6,6,708103,9,27.88,27.58,19.80 -mul,kernel,6,6,1035960,9,19.28,19.15,20.00 -mul,floor,6,6,824993,9,23.99,23.77,19.78 -mul,gmp,6,6,1339705,9,14.81,14.38,19.74 -mul,gmpz,6,6,1135104,9,17.62,17.33,20.08 -mul,auto,8,8,576802,9,34.49,34.32,19.90 -mul,kernel,8,8,872675,9,23.24,22.96,20.25 -mul,floor,8,8,608707,9,32.46,30.31,19.96 -mul,gmp,8,8,828085,9,23.71,22.68,19.36 -mul,gmpz,8,8,752590,9,24.54,24.42,18.80 -mul,auto,12,12,371549,9,54.24,53.81,20.13 -mul,kernel,12,12,485878,9,41.27,41.15,20.19 -mul,floor,12,12,403563,9,49.34,49.26,19.93 -mul,gmp,12,12,453339,9,44.04,43.90,19.95 -mul,gmpz,12,12,429102,9,46.60,46.53,19.99 -mul,auto,16,16,241468,9,82.86,82.60,20.05 -mul,kernel,16,16,288547,9,69.43,69.29,20.13 -mul,floor,16,16,250930,9,78.60,78.34,19.90 -mul,gmp,16,16,258833,9,77.36,77.15,20.02 -mul,gmpz,16,16,253099,9,79.22,78.98,20.08 -sqr,auto,4,4,1298989,9,15.41,15.36,20.01 -sqr,kernel,4,4,1778975,9,11.28,11.16,20.08 -sqr,floor,4,4,1716126,9,11.35,11.21,19.51 -sqr,gmp,4,4,2871604,9,6.95,6.94,19.98 -sqr,gmpz,4,4,2179147,9,8.99,8.94,19.76 -sqr,auto,16,16,264060,9,74.69,73.52,19.74 -sqr,kernel,16,16,323017,9,60.80,60.65,19.74 -sqr,floor,16,16,281311,9,71.47,71.14,20.11 -sqr,gmp,16,16,320065,9,61.98,61.56,19.84 -sqr,gmpz,16,16,304335,9,66.14,64.55,20.04 -divrem,auto,2,1,847429,9,24.09,23.55,20.35 -divrem,kernel,2,1,3547681,9,5.63,5.59,19.95 -divrem,floor,2,1,3049252,9,6.60,6.55,20.23 -divrem,gmp,2,1,3982857,9,5.01,4.99,19.97 -divrem,gmpz,2,1,2303806,9,8.74,8.65,20.11 -divrem,auto,8,4,302549,9,66.56,66.05,20.18 -divrem,kernel,8,4,487340,9,41.12,40.75,19.99 -divrem,floor,8,4,475328,9,41.69,41.09,19.77 -divrem,gmp,8,4,498139,9,40.27,39.04,19.97 -divrem,gmpz,8,4,458695,9,43.37,42.47,19.81 -divrem,auto,32,16,45921,9,432.52,422.59,19.79 -divrem,kernel,32,16,50896,9,393.69,383.42,20.01 -divrem,floor,32,16,49821,9,406.94,396.31,20.24 -divrem,gmp,32,16,97845,9,207.44,202.41,20.26 -divrem,gmpz,32,16,96499,9,210.14,207.06,20.25 diff --git a/tests/beman/big_int/perf/item1/mac_study512_run2.csv b/tests/beman/big_int/perf/item1/mac_study512_run2.csv deleted file mode 100644 index 6e77bc61..00000000 --- a/tests/beman/big_int/perf/item1/mac_study512_run2.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:13:32Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new512 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2089312,9,9.49,9.24,19.83 -add,inplace,1,1,2978965,9,3.60,3.37,21.30 -add,kernel,1,1,17473141,9,1.14,1.14,19.98 -add,floor,1,1,11005946,9,1.82,1.82,20.10 -add,gmp,1,1,13448166,9,1.49,1.48,20.01 -add,gmpz,1,1,6716614,9,2.99,2.98,22.20 -add,auto,2,2,1923968,9,10.73,10.67,20.69 -add,inplace,2,2,2517512,9,4.09,3.97,20.48 -add,kernel,2,2,14343378,9,1.39,1.39,19.99 -add,floor,2,2,9659997,9,2.07,2.06,20.30 -add,gmp,2,2,11336398,9,1.74,1.74,20.20 -add,gmpz,2,2,6109738,9,4.11,3.32,25.57 -add,auto,4,4,2020659,9,10.01,9.58,20.39 -add,inplace,4,4,2563323,9,3.89,3.73,19.84 -add,kernel,4,4,10331714,9,1.95,1.93,20.07 -add,floor,4,4,7709902,9,2.57,2.57,19.85 -add,gmp,4,4,11509931,9,1.74,1.74,20.02 -add,gmpz,4,4,5325322,9,3.95,3.65,20.22 -add,auto,8,8,2206738,9,9.26,9.08,20.37 -add,inplace,8,8,2239065,9,4.47,4.45,20.02 -add,kernel,8,8,5469944,9,3.62,3.60,19.83 -add,floor,8,8,1714397,9,12.00,11.65,20.49 -add,gmp,8,8,8960480,9,2.24,2.23,20.17 -add,gmpz,8,8,4926190,9,4.43,4.26,21.91 -add,auto,16,16,1202903,9,16.45,16.27,19.93 -add,inplace,16,16,1749752,9,5.73,5.70,20.29 -add,kernel,16,16,2594667,9,7.70,7.67,19.99 -add,floor,16,16,1379625,9,14.41,14.30,19.89 -add,gmp,16,16,6210987,9,3.23,3.22,20.13 -add,gmpz,16,16,4757279,9,4.00,3.98,19.57 -sub,auto,1,1,2236756,9,8.94,8.90,20.02 -sub,inplace,1,1,2749327,9,3.73,3.71,20.65 -sub,kernel,1,1,18693287,9,1.08,1.07,20.19 -sub,floor,1,1,11481883,9,1.74,1.74,19.96 -sub,gmp,1,1,13421353,9,1.49,1.49,20.00 -sub,gmpz,1,1,8061418,9,2.48,2.48,20.02 -sub,auto,2,2,2192980,9,9.17,8.91,19.92 -sub,inplace,2,2,2597557,9,3.85,3.72,19.73 -sub,kernel,2,2,13995069,9,1.42,1.39,19.78 -sub,floor,2,2,10080180,9,2.01,1.98,20.16 -sub,gmp,2,2,10015092,9,1.98,1.96,19.87 -sub,gmpz,2,2,6707106,9,2.98,2.73,19.59 -sub,auto,4,4,2011975,9,9.94,9.90,20.02 -sub,inplace,4,4,2549594,9,3.98,3.97,20.27 -sub,kernel,4,4,10206046,9,1.96,1.95,19.97 -sub,floor,4,4,8025611,9,2.48,2.48,19.95 -sub,gmp,4,4,11465631,9,1.74,1.74,19.99 -sub,gmpz,4,4,7323527,9,2.73,2.73,20.05 -sub,auto,8,8,2215970,9,8.92,8.75,19.75 -sub,inplace,8,8,2393558,9,4.47,3.98,21.06 -sub,kernel,8,8,5572402,9,3.56,3.55,19.90 -sub,floor,8,8,4901144,9,4.10,4.08,20.08 -sub,gmp,8,8,8828898,9,2.24,2.23,19.88 -sub,gmpz,8,8,6135052,9,3.24,3.22,19.88 -sub,auto,16,16,1165463,9,17.55,17.12,20.43 -sub,inplace,16,16,1820837,9,5.33,5.21,19.32 -sub,kernel,16,16,2567593,9,7.80,7.75,20.02 -sub,floor,16,16,1319390,9,14.83,14.68,19.77 -sub,gmp,16,16,6098627,9,3.04,3.01,18.76 -sub,gmpz,16,16,4640070,9,4.35,4.33,20.17 -shl,auto,1,13,2890754,9,6.95,6.91,20.10 -shl,inplace,1,13,2659810,9,4.36,3.62,23.46 -shl,kernel,1,13,8958734,9,2.24,2.23,20.24 -shl,kernelip,1,13,5765265,9,1.76,1.74,20.23 -shl,floor,1,13,5808133,9,4.07,3.44,24.27 -shl,gmp,1,13,16107968,9,1.24,1.24,20.71 -shl,gmpz,1,13,10082637,9,1.99,1.98,20.08 -shl,auto,4,13,2364742,9,8.46,8.39,19.99 -shl,inplace,4,13,2182570,9,4.60,4.59,20.16 -shl,kernel,4,13,5355583,9,3.72,3.70,19.97 -shl,kernelip,4,13,2928058,9,3.38,3.34,19.79 -shl,floor,4,13,3632859,9,5.33,5.14,19.77 -shl,gmp,4,13,10070129,9,1.99,1.98,20.77 -shl,gmpz,4,13,7326171,9,2.73,2.73,20.04 -shl,auto,16,13,1050948,9,20.31,19.64,19.58 -shl,inplace,16,13,1899232,9,5.35,5.33,20.31 -shl,kernel,16,13,4809353,9,4.15,4.14,19.97 -shl,kernelip,16,13,1461802,9,7.39,7.05,21.42 -shl,floor,16,13,1623430,9,11.92,11.72,19.38 -shl,gmp,16,13,5761359,9,3.48,3.47,20.36 -shl,gmpz,16,13,4093368,9,4.83,4.73,19.78 -shr,auto,1,13,2457264,9,10.71,7.99,23.46 -shr,inplace,1,13,2998262,9,3.34,3.32,20.04 -shr,kernel,1,13,8951151,9,2.23,2.23,20.00 -shr,floor,1,13,8051513,9,2.48,2.48,20.05 -shr,gmp,1,13,20000001,9,0.99,0.99,19.89 -shr,gmpz,1,13,10062266,9,1.99,1.98,20.03 -shr,auto,4,13,1922424,9,10.18,9.75,19.65 -shr,inplace,4,13,2765523,9,3.78,3.76,20.95 -shr,kernel,4,13,5368615,9,3.73,3.72,20.04 -shr,floor,4,13,4490426,9,4.47,4.46,20.13 -shr,gmp,4,13,11497207,9,1.74,1.73,20.12 -shr,gmpz,4,13,7315814,9,2.73,2.73,20.07 -shr,auto,16,13,1051009,9,18.26,18.00,19.73 -shr,inplace,16,13,1901719,9,5.25,5.23,19.95 -shr,kernel,16,13,4813397,9,4.15,4.15,20.01 -shr,floor,16,13,1572036,9,13.14,12.69,20.71 -shr,gmp,16,13,6200350,9,3.24,3.22,20.12 -shr,gmpz,16,13,4710571,9,4.24,4.23,19.97 -mul,auto,1,1,2181061,9,9.23,8.82,19.97 -mul,gmp,1,1,5373385,9,3.73,3.72,20.02 -mul,gmpz,1,1,7320874,9,2.74,2.73,20.15 -mul,auto,2,2,1441128,9,13.74,13.38,19.72 -mul,kernel,2,2,3215613,9,7.02,6.21,20.10 -mul,floor,2,2,2754296,9,7.44,6.96,20.09 -mul,gmp,2,2,4353953,9,4.47,4.46,19.52 -mul,gmpz,2,2,3048825,9,6.84,6.21,20.12 -mul,auto,3,3,1366216,9,14.66,14.62,20.05 -mul,kernel,3,3,2502600,9,7.95,7.93,20.12 -mul,floor,3,3,2174283,9,9.49,9.19,20.57 -mul,gmp,3,3,3223037,9,6.17,6.01,19.73 -mul,gmpz,3,3,2398393,9,9.31,8.87,23.24 -mul,auto,4,4,1333832,9,14.88,14.86,19.88 -mul,kernel,4,4,1794301,9,10.94,10.63,19.56 -mul,floor,4,4,1804354,9,11.24,10.96,20.21 -mul,gmp,4,4,2203051,9,8.94,8.90,19.85 -mul,gmpz,4,4,1827705,9,11.03,10.94,20.23 -mul,auto,6,6,716292,9,28.07,27.76,20.20 -mul,kernel,6,6,1035670,9,19.27,19.17,19.95 -mul,floor,6,6,838693,9,23.91,23.73,20.30 -mul,gmp,6,6,1348918,9,14.77,14.18,19.80 -mul,gmpz,6,6,1042807,9,18.76,18.65,19.69 -mul,auto,8,8,567531,9,34.53,34.40,19.73 -mul,kernel,8,8,863872,9,23.06,22.98,19.94 -mul,floor,8,8,654471,9,30.54,30.21,19.97 -mul,gmp,8,8,861288,9,22.73,21.94,19.52 -mul,gmpz,8,8,816016,9,24.48,24.41,19.99 -mul,auto,12,12,356567,9,55.84,54.15,19.75 -mul,kernel,12,12,480363,9,41.27,41.15,19.83 -mul,floor,12,12,404605,9,49.50,49.25,20.01 -mul,gmp,12,12,451717,9,44.10,43.98,20.02 -mul,gmpz,12,12,428821,9,46.67,46.52,20.07 -mul,auto,16,16,239829,9,82.67,82.50,19.85 -mul,kernel,16,16,286155,9,69.48,69.22,19.87 -mul,floor,16,16,253744,9,78.88,78.63,20.03 -mul,gmp,16,16,258066,9,77.16,76.97,19.92 -mul,gmpz,16,16,251860,9,79.07,78.59,19.97 -sqr,auto,4,4,1292934,9,15.39,15.37,19.94 -sqr,kernel,4,4,1774604,9,11.34,11.20,20.09 -sqr,floor,4,4,1779344,9,11.26,11.17,20.04 -sqr,gmp,4,4,2838308,9,6.96,6.93,19.83 -sqr,gmpz,4,4,2040211,9,9.78,9.69,20.03 -sqr,auto,16,16,263102,9,74.22,73.85,19.59 -sqr,kernel,16,16,327722,9,61.32,61.19,20.13 -sqr,floor,16,16,292822,9,68.19,67.88,19.95 -sqr,gmp,16,16,316195,9,63.28,62.15,19.94 -sqr,gmpz,16,16,300417,9,66.48,64.79,19.92 -divrem,auto,2,1,855288,9,23.48,23.20,20.03 -divrem,kernel,2,1,3142452,9,6.29,6.24,19.85 -divrem,floor,2,1,2746052,9,7.15,7.10,19.69 -divrem,gmp,2,1,3982421,9,5.02,4.97,19.97 -divrem,gmpz,2,1,2292560,9,8.69,8.65,19.95 -divrem,auto,8,4,252985,9,78.60,78.30,19.89 -divrem,kernel,8,4,387661,9,51.72,51.21,20.13 -divrem,floor,8,4,377234,9,52.63,52.10,19.89 -divrem,gmp,8,4,480745,9,41.71,41.25,20.04 -divrem,gmpz,8,4,450149,9,44.39,43.47,19.95 -divrem,auto,32,16,45788,9,433.12,422.07,19.77 -divrem,kernel,32,16,48648,9,392.00,385.81,19.29 -divrem,floor,32,16,48741,9,410.18,401.38,19.96 -divrem,gmp,32,16,97691,9,204.87,197.71,19.89 -divrem,gmpz,32,16,96040,9,207.99,205.22,19.96 diff --git a/tests/beman/big_int/perf/item1/mac_study512_vecsort_run1.csv b/tests/beman/big_int/perf/item1/mac_study512_vecsort_run1.csv deleted file mode 100644 index e7e293d3..00000000 --- a/tests/beman/big_int/perf/item1/mac_study512_vecsort_run1.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:11:23Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new512 seed=1 ops=vecsort bands=medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,100.15,99.13,30.14 -vecsort,builtin,100000,1,15,9,13.53,13.07,20.20 -vecsort,copy,100000,1,47,9,4.40,4.39,20.82 diff --git a/tests/beman/big_int/perf/item1/mac_study512_vecsort_run2.csv b/tests/beman/big_int/perf/item1/mac_study512_vecsort_run2.csv deleted file mode 100644 index 32535112..00000000 --- a/tests/beman/big_int/perf/item1/mac_study512_vecsort_run2.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:14:13Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new512 seed=2 ops=vecsort bands=medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,96.44,95.21,28.86 -vecsort,builtin,100000,1,15,9,13.00,12.80,19.47 -vecsort,copy,100000,1,47,9,4.40,4.33,20.68 diff --git a/tests/beman/big_int/perf/item1/mac_study64_run1.csv b/tests/beman/big_int/perf/item1/mac_study64_run1.csv deleted file mode 100644 index 4611097f..00000000 --- a/tests/beman/big_int/perf/item1/mac_study64_run1.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:08:36Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2686022,9,7.28,7.22,19.73 -add,inplace,1,1,2811781,9,3.57,3.47,19.95 -add,kernel,1,1,17509394,9,1.14,1.14,20.01 -add,floor,1,1,2064444,9,9.21,9.16,19.21 -add,gmp,1,1,13448823,9,1.49,1.48,20.10 -add,gmpz,1,1,6710626,9,2.98,2.97,20.48 -add,auto,2,2,1365760,9,15.58,14.39,20.79 -add,inplace,2,2,2593711,9,3.85,3.84,19.99 -add,kernel,2,2,14366586,9,1.40,1.39,20.14 -add,floor,2,2,2023695,9,9.97,9.84,19.96 -add,gmp,2,2,11438330,9,1.96,1.74,21.74 -add,gmpz,2,2,6219651,9,3.23,3.19,21.09 -add,auto,4,4,1339033,9,14.28,14.20,19.15 -add,inplace,4,4,2841415,9,3.61,3.59,20.52 -add,kernel,4,4,10323530,9,1.93,1.92,19.99 -add,floor,4,4,1956230,9,10.43,10.17,20.10 -add,gmp,4,4,11473579,9,1.74,1.73,19.94 -add,gmpz,4,4,4121952,9,5.90,4.65,21.81 -add,auto,8,8,1341448,9,14.94,14.69,20.04 -add,inplace,8,8,2575267,9,3.86,3.85,20.05 -add,kernel,8,8,5767434,9,3.50,3.46,20.22 -add,floor,8,8,1518777,9,11.93,11.90,18.45 -add,gmp,8,8,8979587,9,2.26,2.23,20.22 -add,gmpz,8,8,5125414,9,3.84,3.80,19.20 -add,auto,16,16,1152149,9,17.36,16.64,19.69 -add,inplace,16,16,1783326,9,5.59,5.55,19.95 -add,kernel,16,16,2662828,9,7.56,7.48,20.14 -add,floor,16,16,1412775,9,13.94,13.90,19.81 -add,gmp,16,16,6204794,9,3.23,3.22,20.07 -add,gmpz,16,16,4451911,9,4.49,4.48,20.13 -sub,auto,1,1,2498678,9,7.95,7.88,19.86 -sub,inplace,1,1,3043844,9,3.50,3.28,21.16 -sub,kernel,1,1,19148186,9,1.05,1.04,20.05 -sub,floor,1,1,11499780,9,1.74,1.73,19.98 -sub,gmp,1,1,12977002,9,1.49,1.49,19.39 -sub,gmpz,1,1,8076576,9,2.48,2.48,20.04 -sub,auto,2,2,1381136,9,14.56,14.36,20.12 -sub,inplace,2,2,2880859,9,3.49,3.47,20.27 -sub,kernel,2,2,14039839,9,1.42,1.41,19.88 -sub,floor,2,2,2167147,9,9.43,9.40,20.44 -sub,gmp,2,2,11505806,9,1.80,1.74,19.77 -sub,gmpz,2,2,6709578,9,2.98,2.96,19.99 -sub,auto,4,4,1375633,9,14.33,14.16,19.81 -sub,inplace,4,4,2869202,9,3.35,3.34,19.47 -sub,kernel,4,4,10316486,9,1.94,1.94,20.05 -sub,floor,4,4,2008063,9,10.16,9.92,20.61 -sub,gmp,4,4,11385902,9,1.74,1.73,19.83 -sub,gmpz,4,4,7319155,9,2.73,2.73,20.00 -sub,auto,8,8,1267676,9,15.74,15.54,19.94 -sub,inplace,8,8,2407098,9,4.08,4.03,19.69 -sub,kernel,8,8,5722784,9,3.48,3.47,19.97 -sub,floor,8,8,1680521,9,11.67,11.41,19.56 -sub,gmp,8,8,8959282,9,2.24,2.23,20.05 -sub,gmpz,8,8,6169131,9,3.23,3.22,19.92 -sub,auto,16,16,1154567,9,17.76,17.26,20.59 -sub,inplace,16,16,1954055,9,5.14,5.11,20.19 -sub,kernel,16,16,2595765,9,7.72,7.65,20.08 -sub,floor,16,16,1299811,9,15.38,15.01,19.97 -sub,gmp,16,16,6206739,9,3.23,2.97,19.79 -sub,gmpz,16,16,4595722,9,4.39,4.35,20.14 -shl,auto,1,13,1711656,9,11.72,11.55,20.01 -shl,inplace,1,13,4030796,9,2.49,2.48,20.32 -shl,kernel,1,13,8971268,9,2.24,2.23,20.09 -shl,kernelip,1,13,8954631,9,1.79,1.12,20.06 -shl,floor,1,13,1864143,9,10.67,10.42,19.92 -shl,gmp,1,13,16184987,9,1.24,1.24,20.10 -shl,gmpz,1,13,10075459,9,1.99,1.98,20.04 -shl,auto,4,13,1540947,9,12.47,12.43,19.24 -shl,inplace,4,13,2719729,9,3.81,3.77,21.27 -shl,kernel,4,13,5367410,9,3.73,3.72,20.03 -shl,kernelip,4,13,2954854,9,3.37,3.35,20.05 -shl,floor,4,13,1508932,9,13.16,13.14,19.92 -shl,gmp,4,13,10077984,9,1.99,1.98,20.18 -shl,gmpz,4,13,7240335,9,2.74,2.73,19.81 -shl,auto,16,13,1258096,9,15.53,15.36,19.59 -shl,inplace,16,13,1882912,9,5.30,5.26,20.14 -shl,kernel,16,13,4920632,9,4.05,4.04,19.92 -shl,kernelip,16,13,1352558,9,6.82,6.72,18.40 -shl,floor,16,13,1606453,9,12.35,12.16,19.76 -shl,gmp,16,13,5739348,9,3.48,3.48,20.11 -shl,gmpz,16,13,3881727,9,5.20,5.15,20.14 -shr,auto,1,13,3077812,9,6.96,6.60,21.28 -shr,inplace,1,13,3002541,9,3.30,3.29,19.85 -shr,kernel,1,13,8811088,9,2.24,2.22,19.69 -shr,floor,1,13,8038947,9,2.50,2.47,20.20 -shr,gmp,1,13,20000001,9,0.99,0.99,19.85 -shr,gmpz,1,13,10071839,9,1.99,1.99,20.61 -shr,auto,4,13,1441255,9,13.88,13.81,20.08 -shr,inplace,4,13,2761985,9,3.67,3.56,20.03 -shr,kernel,4,13,5370996,9,3.73,3.71,20.02 -shr,floor,4,13,1790203,9,13.89,11.43,24.57 -shr,gmp,4,13,11446891,9,1.74,1.73,19.89 -shr,gmpz,4,13,7320042,9,2.74,2.73,20.14 -shr,auto,16,13,1098554,9,18.38,18.07,20.32 -shr,inplace,16,13,1930451,9,5.19,5.16,20.05 -shr,kernel,16,13,4812640,9,4.20,4.15,20.17 -shr,floor,16,13,1514647,9,13.14,12.94,19.90 -shr,gmp,16,13,6204760,9,3.23,3.22,20.07 -shr,gmpz,16,13,4726483,9,4.23,4.22,20.01 -mul,auto,1,1,1471666,9,14.39,13.70,20.24 -mul,gmp,1,1,5368486,9,3.72,3.72,19.99 -mul,gmpz,1,1,7327292,9,2.74,2.73,20.04 -mul,auto,2,2,1106925,9,18.25,18.02,20.17 -mul,kernel,2,2,3176994,9,6.37,6.15,20.04 -mul,floor,2,2,1347078,9,14.45,14.39,19.49 -mul,gmp,2,2,4470046,9,4.47,4.23,19.85 -mul,gmpz,2,2,3197689,9,6.51,6.21,20.89 -mul,auto,3,3,1042781,9,19.28,19.19,20.25 -mul,kernel,3,3,2520110,9,8.19,7.94,20.53 -mul,floor,3,3,1154912,9,17.38,16.38,19.84 -mul,gmp,3,3,3191709,9,6.14,6.09,19.65 -mul,gmpz,3,3,2321270,9,9.12,7.90,20.68 -mul,auto,4,4,946163,9,21.79,21.16,20.55 -mul,kernel,4,4,1801963,9,11.12,10.89,20.00 -mul,floor,4,4,1189077,9,16.89,16.62,20.00 -mul,gmp,4,4,2160064,9,9.69,9.57,21.07 -mul,gmpz,4,4,2006003,9,10.95,10.91,22.13 -mul,auto,6,6,504565,9,39.71,38.82,19.99 -mul,kernel,6,6,1033991,9,19.33,18.66,19.84 -mul,floor,6,6,792090,9,24.43,23.67,19.28 -mul,gmp,6,6,1273472,9,14.51,14.36,18.47 -mul,gmpz,6,6,1104432,9,18.36,17.38,20.08 -mul,auto,8,8,572189,9,35.15,34.82,20.14 -mul,kernel,8,8,870287,9,22.93,22.90,19.97 -mul,floor,8,8,659110,9,30.35,30.13,20.02 -mul,gmp,8,8,893822,9,22.57,22.40,20.26 -mul,gmpz,8,8,815269,9,24.63,24.46,20.08 -mul,auto,12,12,371687,9,53.85,53.70,20.01 -mul,kernel,12,12,490337,9,41.14,40.65,20.14 -mul,floor,12,12,405886,9,49.18,48.99,19.97 -mul,gmp,12,12,178667,9,111.83,109.91,20.03 -mul,gmpz,12,12,425130,9,46.77,46.48,19.90 -mul,auto,16,16,240204,9,82.83,82.53,19.95 -mul,kernel,16,16,286219,9,70.22,69.46,20.11 -mul,floor,16,16,243245,9,81.12,78.43,19.52 -mul,gmp,16,16,263207,9,76.47,75.96,20.12 -mul,gmpz,16,16,255118,9,77.89,77.75,19.89 -sqr,auto,4,4,934266,9,21.66,21.31,20.63 -sqr,kernel,4,4,1804793,9,11.24,11.16,20.31 -sqr,floor,4,4,1257702,9,16.24,15.89,20.33 -sqr,gmp,4,4,2881516,9,6.94,6.93,20.01 -sqr,gmpz,4,4,2122383,9,9.48,8.93,20.00 -sqr,auto,16,16,262876,9,75.36,74.76,19.81 -sqr,kernel,16,16,310970,9,63.73,63.48,19.85 -sqr,floor,16,16,276164,9,72.29,68.58,19.78 -sqr,gmp,16,16,328563,9,62.56,61.58,20.64 -sqr,gmpz,16,16,301749,9,66.61,66.44,20.10 -divrem,auto,2,1,712841,9,28.11,28.04,20.21 -divrem,kernel,2,1,3562047,9,5.71,5.66,20.33 -divrem,floor,2,1,1517705,9,13.75,13.18,20.63 -divrem,gmp,2,1,3956422,9,5.06,5.00,19.97 -divrem,gmpz,2,1,2291395,9,8.75,8.67,20.04 -divrem,auto,8,4,286040,9,70.23,69.71,20.11 -divrem,kernel,8,4,487126,9,40.68,39.75,19.80 -divrem,floor,8,4,358382,9,55.81,55.21,20.15 -divrem,gmp,8,4,508375,9,40.00,39.19,20.29 -divrem,gmpz,8,4,465933,9,43.08,42.99,20.09 -divrem,auto,32,16,46752,9,427.95,421.13,19.97 -divrem,kernel,32,16,50796,9,394.78,387.69,19.98 -divrem,floor,32,16,48739,9,410.62,396.51,19.93 -divrem,gmp,32,16,96673,9,207.46,203.69,20.00 -divrem,gmpz,32,16,94234,9,209.91,205.85,19.70 diff --git a/tests/beman/big_int/perf/item1/mac_study64_run2.csv b/tests/beman/big_int/perf/item1/mac_study64_run2.csv deleted file mode 100644 index 3c5583eb..00000000 --- a/tests/beman/big_int/perf/item1/mac_study64_run2.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:11:24Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2597674,9,7.71,7.63,20.00 -add,inplace,1,1,2793998,9,3.47,3.46,19.72 -add,kernel,1,1,17484398,9,1.14,1.14,19.98 -add,floor,1,1,2229010,9,9.68,8.92,21.01 -add,gmp,1,1,13440533,9,1.49,1.48,20.25 -add,gmpz,1,1,6696191,9,2.98,2.96,20.49 -add,auto,2,2,1266753,9,15.77,15.49,19.94 -add,inplace,2,2,2596796,9,4.01,3.85,20.99 -add,kernel,2,2,14358028,9,1.39,1.39,19.96 -add,floor,2,2,2118460,9,9.53,9.44,20.17 -add,gmp,2,2,10063753,9,1.99,1.97,20.18 -add,gmpz,2,2,5977064,9,3.25,3.23,19.68 -add,auto,4,4,1430027,9,14.00,13.96,20.04 -add,inplace,4,4,2879156,9,3.49,3.48,20.39 -add,kernel,4,4,10383799,9,1.92,1.92,19.97 -add,floor,4,4,1966301,9,10.43,10.17,20.44 -add,gmp,4,4,11510767,9,1.74,1.73,20.02 -add,gmpz,4,4,3537266,9,6.07,5.71,21.23 -add,auto,8,8,1311165,9,15.63,15.29,20.41 -add,inplace,8,8,2600379,9,3.88,3.84,20.36 -add,kernel,8,8,5750047,9,3.47,3.46,19.96 -add,floor,8,8,1693628,9,12.16,11.66,20.54 -add,gmp,8,8,8943935,9,2.23,2.23,19.99 -add,gmpz,8,8,4670381,9,4.49,4.09,20.67 -add,auto,16,16,1213947,9,16.63,16.38,20.19 -add,inplace,16,16,1780318,9,5.58,5.58,19.96 -add,kernel,16,16,2645089,9,7.59,7.54,20.07 -add,floor,16,16,1461587,9,13.85,13.68,19.83 -add,gmp,16,16,6277789,9,3.22,2.90,19.62 -add,gmpz,16,16,4460416,9,4.49,4.48,20.03 -sub,auto,1,1,2452330,9,7.94,7.69,19.56 -sub,inplace,1,1,2880935,9,3.49,3.47,20.33 -sub,kernel,1,1,19166069,9,1.05,1.04,20.04 -sub,floor,1,1,11516693,9,1.74,1.73,20.02 -sub,gmp,1,1,13459751,9,1.49,1.48,20.05 -sub,gmpz,1,1,8077992,9,2.49,2.48,20.14 -sub,auto,2,2,1415064,9,14.72,14.11,20.71 -sub,inplace,2,2,2857560,9,3.48,3.46,19.86 -sub,kernel,2,2,14102801,9,1.41,1.41,19.99 -sub,floor,2,2,2240543,9,8.97,8.93,20.32 -sub,gmp,2,2,11397855,9,1.76,1.74,20.47 -sub,gmpz,2,2,7336444,9,2.73,2.73,20.04 -sub,auto,4,4,1428316,9,14.44,14.05,20.80 -sub,inplace,4,4,2769990,9,3.48,3.46,19.44 -sub,kernel,4,4,9739131,9,1.94,1.93,18.87 -sub,floor,4,4,2013028,9,9.97,9.90,20.29 -sub,gmp,4,4,11507382,9,1.74,1.73,19.99 -sub,gmpz,4,4,7276705,9,2.73,2.73,19.91 -sub,auto,8,8,1266853,9,15.48,15.21,19.58 -sub,inplace,8,8,2444117,9,4.10,4.03,20.00 -sub,kernel,8,8,5742005,9,3.52,3.48,20.17 -sub,floor,8,8,1791872,9,11.77,11.65,19.02 -sub,gmp,8,8,8879331,9,2.23,2.23,19.84 -sub,gmpz,8,8,6191404,9,3.23,3.22,19.99 -sub,auto,16,16,1101335,9,18.80,18.30,20.60 -sub,inplace,16,16,1907986,9,5.22,5.22,19.96 -sub,kernel,16,16,2593825,9,7.69,7.63,20.05 -sub,floor,16,16,1339087,9,15.21,15.14,20.52 -sub,gmp,16,16,6741793,9,2.98,2.95,20.57 -sub,gmpz,16,16,4505083,9,4.39,4.36,19.76 -shl,auto,1,13,1590934,9,12.11,11.86,19.26 -shl,inplace,1,13,4027441,9,2.49,2.48,20.27 -shl,kernel,1,13,8894671,9,2.24,2.23,19.93 -shl,kernelip,1,13,8353954,9,1.13,1.12,22.07 -shl,floor,1,13,1830118,9,10.93,10.89,20.13 -shl,gmp,1,13,16119257,9,1.24,1.23,20.03 -shl,gmpz,1,13,9964147,9,2.01,1.98,19.94 -shl,auto,4,13,1546973,9,12.90,12.79,19.99 -shl,inplace,4,13,2639830,9,3.84,3.71,20.41 -shl,kernel,4,13,5375708,9,3.72,3.53,19.90 -shl,kernelip,4,13,2961529,9,3.37,3.35,19.96 -shl,floor,4,13,1488827,9,12.89,12.66,19.50 -shl,gmp,4,13,10063265,9,1.99,1.97,19.98 -shl,gmpz,4,13,7330560,9,2.73,2.72,20.01 -shl,auto,16,13,1293656,9,15.42,15.25,20.13 -shl,inplace,16,13,1862751,9,5.31,5.28,19.76 -shl,kernel,16,13,4825178,9,4.15,4.14,20.01 -shl,kernelip,16,13,1392328,9,6.81,6.72,19.03 -shl,floor,16,13,1608683,9,12.15,11.92,19.50 -shl,gmp,16,13,5683984,9,3.52,3.48,20.00 -shl,gmpz,16,13,3866740,9,5.25,5.17,20.27 -shr,auto,1,13,2878553,9,6.95,6.91,20.00 -shr,inplace,1,13,3555401,9,3.31,2.74,19.83 -shr,kernel,1,13,8968720,9,2.23,2.22,20.03 -shr,floor,1,13,8061886,9,2.48,2.45,19.98 -shr,gmp,1,13,20000001,9,0.99,0.99,19.85 -shr,gmpz,1,13,10081112,9,1.99,1.98,20.08 -shr,auto,4,13,1429878,9,13.91,13.78,19.98 -shr,inplace,4,13,2816065,9,3.57,3.55,19.80 -shr,kernel,4,13,5374028,9,3.77,3.73,20.18 -shr,floor,4,13,1781436,9,12.11,11.90,21.53 -shr,gmp,4,13,11500501,9,1.74,1.73,19.99 -shr,gmpz,4,13,7341757,9,2.73,2.72,20.03 -shr,auto,16,13,1124171,9,17.97,17.83,20.30 -shr,inplace,16,13,1923784,9,5.27,5.23,20.30 -shr,kernel,16,13,4811827,9,4.17,4.15,20.06 -shr,floor,16,13,1545096,9,13.49,12.91,20.79 -shr,gmp,16,13,6186871,9,3.23,3.22,20.00 -shr,gmpz,16,13,4732968,9,4.23,4.23,20.09 -mul,auto,1,1,1363640,9,14.61,14.08,19.74 -mul,gmp,1,1,5372936,9,3.72,3.70,20.01 -mul,gmpz,1,1,7276553,9,2.74,2.73,19.90 -mul,auto,2,2,1094243,9,18.91,18.61,20.78 -mul,kernel,2,2,3125964,9,6.19,6.10,19.51 -mul,floor,2,2,1357450,9,14.66,14.62,20.04 -mul,gmp,2,2,4262782,9,4.49,4.47,19.44 -mul,gmpz,2,2,3013139,9,6.57,6.50,19.94 -mul,auto,3,3,1015370,9,19.40,19.25,19.73 -mul,kernel,3,3,2427511,9,7.98,7.93,19.55 -mul,floor,3,3,1189477,9,16.85,16.64,19.97 -mul,gmp,3,3,3294000,9,6.08,6.05,20.08 -mul,gmpz,3,3,2485275,9,7.90,7.83,19.73 -mul,auto,4,4,934847,9,21.41,21.34,20.11 -mul,kernel,4,4,1797410,9,11.16,10.86,20.09 -mul,floor,4,4,1202132,9,17.22,16.72,20.71 -mul,gmp,4,4,2541868,9,8.95,7.89,21.71 -mul,gmpz,4,4,1788492,9,11.66,11.16,20.60 -mul,auto,6,6,732767,9,27.34,27.15,20.05 -mul,kernel,6,6,1080084,9,19.34,18.89,20.85 -mul,floor,6,6,827773,9,23.99,23.72,19.82 -mul,gmp,6,6,1374857,9,14.51,14.44,19.97 -mul,gmpz,6,6,1071268,9,18.45,17.69,19.79 -mul,auto,8,8,569787,9,35.45,35.16,20.21 -mul,kernel,8,8,873947,9,22.91,22.86,20.04 -mul,floor,8,8,652351,9,30.41,30.36,19.92 -mul,gmp,8,8,901964,9,22.14,22.07,20.01 -mul,gmpz,8,8,758654,9,26.94,24.47,20.20 -mul,auto,12,12,368355,9,53.87,53.56,19.84 -mul,kernel,12,12,490288,9,41.25,40.75,20.22 -mul,floor,12,12,404705,9,49.38,49.18,19.98 -mul,gmp,12,12,454443,9,44.10,43.97,20.04 -mul,gmpz,12,12,427905,9,46.64,46.43,19.96 -mul,auto,16,16,242784,9,82.78,82.34,20.11 -mul,kernel,16,16,287766,9,69.50,69.39,20.01 -mul,floor,16,16,253294,9,79.13,78.57,20.01 -mul,gmp,16,16,258475,9,77.43,76.21,20.00 -mul,gmpz,16,16,255470,9,78.34,78.17,20.01 -sqr,auto,4,4,920848,9,23.90,21.45,19.68 -sqr,kernel,4,4,1788679,9,11.24,11.18,20.13 -sqr,floor,4,4,1182081,9,20.16,16.13,19.98 -sqr,gmp,4,4,2841569,9,6.96,6.93,19.89 -sqr,gmpz,4,4,2121470,9,9.71,9.48,20.62 -sqr,auto,16,16,264383,9,75.88,75.24,20.29 -sqr,kernel,16,16,314582,9,63.76,63.54,20.05 -sqr,floor,16,16,275696,9,72.26,71.45,19.87 -sqr,gmp,16,16,322090,9,63.93,61.59,20.44 -sqr,gmpz,16,16,304061,9,65.82,61.90,19.89 -divrem,auto,2,1,940535,9,21.16,20.58,19.85 -divrem,kernel,2,1,3188479,9,6.33,6.27,20.18 -divrem,floor,2,1,1474785,9,13.48,13.41,19.92 -divrem,gmp,2,1,3997293,9,5.02,4.97,20.04 -divrem,gmpz,2,1,2310884,9,8.68,8.62,20.05 -divrem,auto,8,4,252153,9,79.74,78.94,20.14 -divrem,kernel,8,4,381604,9,51.47,50.89,19.68 -divrem,floor,8,4,306781,9,65.37,64.91,20.11 -divrem,gmp,8,4,482826,9,41.67,41.19,20.13 -divrem,gmpz,8,4,451226,9,44.18,43.31,19.91 -divrem,auto,32,16,45860,9,431.45,419.66,19.68 -divrem,kernel,32,16,50726,9,391.33,377.65,19.81 -divrem,floor,32,16,48109,9,417.74,398.23,20.02 -divrem,gmp,32,16,96341,9,207.65,202.89,19.97 -divrem,gmpz,32,16,95659,9,208.77,205.54,19.94 diff --git a/tests/beman/big_int/perf/item1/mac_study64_vecsort_run1.csv b/tests/beman/big_int/perf/item1/mac_study64_vecsort_run1.csv deleted file mode 100644 index 6d5ed98b..00000000 --- a/tests/beman/big_int/perf/item1/mac_study64_vecsort_run1.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:09:17Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=vecsort bands=medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,89.17,88.56,26.89 -vecsort,builtin,100000,1,16,9,13.46,12.96,21.30 -vecsort,copy,100000,1,75,9,2.69,2.66,20.13 diff --git a/tests/beman/big_int/perf/item1/mac_study64_vecsort_run2.csv b/tests/beman/big_int/perf/item1/mac_study64_vecsort_run2.csv deleted file mode 100644 index a2c32b47..00000000 --- a/tests/beman/big_int/perf/item1/mac_study64_vecsort_run2.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:12:05Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=vecsort bands=medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,86.56,85.29,25.85 -vecsort,builtin,100000,1,16,9,12.97,12.78,20.84 -vecsort,copy,100000,1,75,9,2.70,2.66,20.32 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_base64_run1.csv b/tests/beman/big_int/perf/item1/mac_vshift_base64_run1.csv deleted file mode 100644 index f8ebfde0..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_base64_run1.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1198927,9,16.69,16.63,20.23 -shl,inplace,1,13,4377953,9,2.30,2.30,20.14 -shl,kernel,1,13,8996322,9,2.23,2.18,20.05 -shl,auto,4,13,1028101,9,19.92,19.67,20.45 -shl,inplace,4,13,2718001,9,3.58,3.57,19.66 -shl,kernel,4,13,5091345,9,3.72,3.68,18.96 -shl,auto,16,13,929399,9,22.01,21.24,20.33 -shl,inplace,16,13,1705848,9,5.80,5.77,19.77 -shl,kernel,16,13,4489483,9,4.45,4.45,20.01 -shl,auto,256,13,233774,9,85.88,85.13,20.14 -shl,inplace,256,13,274983,9,36.24,36.18,19.99 -shl,kernel,256,13,409024,9,49.15,48.81,20.24 -shl,auto,2000,13,34882,9,599.20,580.68,19.38 -shl,inplace,2000,13,35279,9,284.12,282.32,20.07 -shl,kernel,2000,13,52348,9,383.39,375.73,20.02 -shl,auto,2000,77,25846,9,806.23,747.65,20.81 -shl,inplace,2000,77,23640,9,424.79,421.14,20.12 -shl,kernel,2000,77,37300,9,531.22,526.51,19.80 -shl,auto,131072,13,456,3,44369.06,44281.16,20.24 -shl,inplace,131072,13,507,3,19794.38,19782.95,20.07 -shl,kernel,131072,13,681,3,29244.74,29091.65,19.90 -shr,auto,1,13,2152136,9,9.18,9.01,19.79 -shr,inplace,1,13,4237299,9,2.36,2.35,20.14 -shr,kernel,1,13,8963766,9,2.23,2.23,20.02 -shr,auto,4,13,1084021,9,18.54,17.88,19.86 -shr,inplace,4,13,3054466,9,3.27,3.26,20.01 -shr,kernel,4,13,5391164,9,3.72,3.69,20.06 -shr,auto,16,13,966790,9,21.49,20.86,20.78 -shr,inplace,16,13,1960596,9,5.12,5.11,20.09 -shr,kernel,16,13,4509020,9,4.46,4.42,20.07 -shr,auto,256,13,228087,9,87.11,86.46,19.87 -shr,inplace,256,13,278983,9,35.79,35.52,19.97 -shr,kernel,256,13,300170,9,66.65,66.52,20.05 -shr,auto,2000,13,32474,9,636.60,622.92,20.21 -shr,inplace,2000,13,35502,9,281.84,279.52,20.00 -shr,kernel,2000,13,38966,9,512.93,502.55,19.93 -shr,auto,2000,77,19469,9,1001.04,985.76,19.44 -shr,inplace,2000,77,23769,9,421.09,419.66,20.06 -shr,kernel,2000,77,38699,9,517.38,511.91,19.99 -shr,auto,131072,13,398,3,48381.18,48238.90,19.54 -shr,inplace,131072,13,504,3,19886.37,19819.07,20.12 -shr,kernel,131072,13,533,3,37596.23,37505.63,20.03 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_base64_run2.csv b/tests/beman/big_int/perf/item1/mac_vshift_base64_run2.csv deleted file mode 100644 index 38daf485..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_base64_run2.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1133257,9,18.53,16.84,19.57 -shl,inplace,1,13,4400325,9,2.29,2.29,20.21 -shl,kernel,1,13,8876375,9,2.23,2.23,19.79 -shl,auto,4,13,1007463,9,19.37,18.58,19.54 -shl,inplace,4,13,2795887,9,3.57,3.53,20.02 -shl,kernel,4,13,5378679,9,3.72,3.69,20.00 -shl,auto,16,13,928409,9,21.44,21.21,19.86 -shl,inplace,16,13,1727842,9,5.80,5.79,20.02 -shl,kernel,16,13,4493143,9,4.45,4.44,20.07 -shl,auto,256,13,234560,9,85.56,85.32,20.08 -shl,inplace,256,13,273660,9,36.28,36.17,19.85 -shl,kernel,256,13,405133,9,48.88,48.66,19.80 -shl,auto,2000,13,29508,9,657.42,626.61,19.47 -shl,inplace,2000,13,35445,9,281.97,280.95,19.99 -shl,kernel,2000,13,51789,9,382.24,380.84,19.79 -shl,auto,2000,77,27719,9,766.38,707.31,20.90 -shl,inplace,2000,77,23625,9,424.68,420.04,20.02 -shl,kernel,2000,77,37895,9,527.16,521.22,19.95 -shl,auto,131072,13,411,3,48761.66,48177.62,20.01 -shl,inplace,131072,13,505,3,19766.79,19761.26,19.97 -shl,kernel,131072,13,686,3,29803.75,29508.50,20.42 -shr,auto,1,13,2098601,9,9.43,9.36,19.82 -shr,inplace,1,13,4174090,9,2.36,2.35,19.68 -shr,kernel,1,13,8946815,9,2.23,2.22,19.94 -shr,auto,4,13,1088875,9,18.41,18.21,20.33 -shr,inplace,4,13,3042033,9,3.32,3.29,20.19 -shr,kernel,4,13,5380516,9,3.72,3.70,19.99 -shr,auto,16,13,952388,9,20.99,20.82,20.00 -shr,inplace,16,13,1939621,9,5.11,5.11,19.87 -shr,kernel,16,13,4479820,9,4.46,4.46,20.01 -shr,auto,256,13,228905,9,87.19,86.46,19.99 -shr,inplace,256,13,279690,9,35.71,35.64,20.00 -shr,kernel,256,13,300586,9,66.52,66.15,20.01 -shr,auto,2000,13,32738,9,657.71,639.31,22.21 -shr,inplace,2000,13,35490,9,282.13,281.09,20.02 -shr,kernel,2000,13,39327,9,511.62,507.47,20.11 -shr,auto,2000,77,20274,9,1053.43,1015.20,20.62 -shr,inplace,2000,77,23853,9,419.92,418.94,20.03 -shr,kernel,2000,77,38714,9,514.86,512.94,19.97 -shr,auto,131072,13,402,3,50334.06,50250.52,20.24 -shr,inplace,131072,13,506,3,19793.89,19768.16,20.02 -shr,kernel,131072,13,538,3,37469.80,37464.06,20.16 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_base64_run3.csv b/tests/beman/big_int/perf/item1/mac_vshift_base64_run3.csv deleted file mode 100644 index 7d866d24..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_base64_run3.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1199109,9,19.21,16.58,19.77 -shl,inplace,1,13,4402735,9,2.29,2.29,20.19 -shl,kernel,1,13,8937548,9,2.23,2.23,19.95 -shl,auto,4,13,1035827,9,20.06,18.87,20.49 -shl,inplace,4,13,2825909,9,3.54,3.53,20.07 -shl,kernel,4,13,5392726,9,3.72,3.71,20.04 -shl,auto,16,13,903351,9,20.94,20.60,18.96 -shl,inplace,16,13,1727337,9,5.79,5.79,20.01 -shl,kernel,16,13,4492902,9,4.45,4.44,20.01 -shl,auto,256,13,231967,9,85.63,85.53,19.89 -shl,inplace,256,13,274958,9,36.23,36.17,19.93 -shl,kernel,256,13,407800,9,48.80,48.71,19.91 -shl,auto,2000,13,35085,9,638.95,555.65,22.29 -shl,inplace,2000,13,35358,9,282.28,280.51,19.96 -shl,kernel,2000,13,52246,9,382.89,380.69,19.99 -shl,auto,2000,77,26687,9,844.03,732.37,21.70 -shl,inplace,2000,77,23449,9,424.30,422.09,19.90 -shl,kernel,2000,77,37982,9,528.20,519.52,20.01 -shl,auto,131072,13,411,3,48827.96,48702.45,20.24 -shl,inplace,131072,13,506,3,19763.46,19750.91,20.01 -shl,kernel,131072,13,683,3,29280.08,29240.91,20.02 -shr,auto,1,13,2155531,9,9.17,9.16,19.87 -shr,inplace,1,13,4484674,9,2.35,2.23,20.92 -shr,kernel,1,13,8995648,9,2.23,2.22,20.06 -shr,auto,4,13,1079398,9,18.20,17.81,19.72 -shr,inplace,4,13,3042904,9,3.26,3.25,19.91 -shr,kernel,4,13,5382905,9,3.72,3.71,20.15 -shr,auto,16,13,894179,9,22.31,21.96,20.09 -shr,inplace,16,13,1911235,9,5.13,5.11,19.60 -shr,kernel,16,13,4475100,9,4.44,4.42,20.06 -shr,auto,256,13,229903,9,87.03,86.29,20.01 -shr,inplace,256,13,279985,9,36.20,35.66,20.35 -shr,kernel,256,13,296743,9,67.44,66.44,20.10 -shr,auto,2000,13,31564,9,680.92,600.74,21.03 -shr,inplace,2000,13,35311,9,282.03,281.60,19.92 -shr,kernel,2000,13,39094,9,512.16,511.15,20.04 -shr,auto,2000,77,19209,9,1015.75,971.76,19.48 -shr,inplace,2000,77,23749,9,420.07,418.91,19.94 -shr,kernel,2000,77,39036,9,517.70,515.69,20.20 -shr,auto,131072,13,397,3,50371.43,49723.76,19.92 -shr,inplace,131072,13,507,3,20044.21,19973.17,20.30 -shr,kernel,131072,13,529,3,37482.91,37475.58,19.88 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_new64_run1.csv b/tests/beman/big_int/perf/item1/mac_vshift_new64_run1.csv deleted file mode 100644 index d526a1e2..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_new64_run1.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1645048,9,12.20,12.15,20.25 -shl,inplace,1,13,2966233,9,3.34,3.33,19.90 -shl,kernel,1,13,8078743,9,2.48,2.43,20.09 -shl,auto,4,13,1555151,9,12.69,12.61,19.86 -shl,inplace,4,13,1838559,9,5.20,5.08,19.31 -shl,kernel,4,13,5336283,9,3.72,3.69,19.83 -shl,auto,16,13,1312171,9,15.42,15.20,20.29 -shl,inplace,16,13,1455868,9,6.85,6.82,19.93 -shl,kernel,16,13,4493163,9,4.45,4.44,20.00 -shl,auto,256,13,482859,9,41.28,41.06,19.93 -shl,inplace,256,13,225313,9,44.97,44.86,20.26 -shl,kernel,256,13,411911,9,48.96,48.13,20.15 -shl,auto,2000,13,88933,9,268.95,233.85,21.77 -shl,inplace,2000,13,28822,9,346.92,346.03,20.17 -shl,kernel,2000,13,52313,9,383.95,381.74,20.07 -shl,auto,2000,77,68390,9,313.91,292.40,30.50 -shl,inplace,2000,77,44076,9,228.58,222.62,20.37 -shl,kernel,2000,77,37860,9,524.93,515.57,19.82 -shl,auto,131072,13,1108,3,18032.30,18022.60,19.99 -shl,inplace,131072,13,434,3,22962.51,22805.73,19.91 -shl,kernel,131072,13,680,3,29558.39,29428.37,20.10 -shr,auto,1,13,3094933,9,6.73,6.63,21.07 -shr,inplace,1,13,3241989,9,3.05,3.04,19.82 -shr,kernel,1,13,8930587,9,2.23,2.23,20.03 -shr,auto,4,13,1390124,9,14.32,14.23,20.16 -shr,inplace,4,13,2411100,9,4.45,4.39,21.55 -shr,kernel,4,13,5383392,9,3.72,3.68,20.01 -shr,auto,16,13,1103814,9,18.19,18.10,20.08 -shr,inplace,16,13,1629197,9,6.13,6.11,19.97 -shr,kernel,16,13,4903075,9,4.08,4.07,20.00 -shr,auto,256,13,477889,9,42.01,41.98,20.11 -shr,inplace,256,13,223865,9,44.71,44.53,20.06 -shr,kernel,256,13,300390,9,66.93,66.50,20.12 -shr,auto,2000,13,92438,9,262.02,231.41,24.38 -shr,inplace,2000,13,29123,9,349.00,345.32,20.27 -shr,kernel,2000,13,39016,9,512.97,508.29,20.03 -shr,auto,2000,77,91293,9,251.83,229.45,22.90 -shr,inplace,2000,77,48956,9,195.76,195.46,19.26 -shr,kernel,2000,77,38836,9,516.29,509.12,20.02 -shr,auto,131072,13,1106,3,18098.33,18062.27,20.02 -shr,inplace,131072,13,443,3,22605.81,22600.36,20.06 -shr,kernel,131072,13,533,3,37543.78,37261.57,19.97 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_new64_run2.csv b/tests/beman/big_int/perf/item1/mac_vshift_new64_run2.csv deleted file mode 100644 index 90de93c3..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_new64_run2.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1710399,9,14.31,11.69,23.14 -shl,inplace,1,13,2945982,9,3.40,3.37,20.03 -shl,kernel,1,13,7977397,9,2.48,2.46,19.85 -shl,auto,4,13,1596751,9,13.11,12.92,20.94 -shl,inplace,4,13,1955198,9,5.24,5.10,20.46 -shl,kernel,4,13,5380306,9,3.72,3.71,20.01 -shl,auto,16,13,1308668,9,16.84,15.29,21.75 -shl,inplace,16,13,1462392,9,6.82,6.80,19.94 -shl,kernel,16,13,4512902,9,4.44,4.43,20.03 -shl,auto,256,13,491586,9,40.93,40.82,20.13 -shl,inplace,256,13,222893,9,44.90,44.77,20.02 -shl,kernel,256,13,410223,9,48.66,48.48,19.98 -shl,auto,2000,13,92629,9,236.36,214.06,21.50 -shl,inplace,2000,13,28939,9,345.09,343.61,19.98 -shl,kernel,2000,13,52320,9,382.46,382.26,20.03 -shl,auto,2000,77,64821,9,506.68,290.65,30.63 -shl,inplace,2000,77,41769,9,226.76,222.08,19.00 -shl,kernel,2000,77,38377,9,526.33,520.27,20.19 -shl,auto,131072,13,1109,3,18056.84,18033.03,20.02 -shl,inplace,131072,13,437,3,22658.04,22622.47,19.80 -shl,kernel,131072,13,683,3,29301.55,29261.83,20.00 -shr,auto,1,13,3032233,9,6.69,6.68,20.28 -shr,inplace,1,13,3239419,9,3.11,3.08,20.13 -shr,kernel,1,13,8973048,9,2.23,2.22,20.23 -shr,auto,4,13,1404703,9,14.10,14.01,19.94 -shr,inplace,4,13,2236520,9,4.47,4.40,20.29 -shr,kernel,4,13,5379817,9,3.72,3.70,20.00 -shr,auto,16,13,1119704,9,18.06,17.84,20.20 -shr,inplace,16,13,1635375,9,6.11,6.10,20.00 -shr,kernel,16,13,4785425,9,4.19,4.18,20.10 -shr,auto,256,13,469047,9,42.73,41.62,20.07 -shr,inplace,256,13,224256,9,44.59,44.12,20.06 -shr,kernel,256,13,299323,9,66.82,66.49,20.00 -shr,auto,2000,13,83190,9,249.20,225.57,20.59 -shr,inplace,2000,13,28971,9,345.02,342.64,19.99 -shr,kernel,2000,13,39248,9,511.78,504.83,20.05 -shr,auto,2000,77,84109,9,244.07,215.89,20.65 -shr,inplace,2000,77,51025,9,195.77,195.16,19.99 -shr,kernel,2000,77,38958,9,515.34,506.63,20.05 -shr,auto,131072,13,1105,3,18115.57,18054.64,20.02 -shr,inplace,131072,13,444,3,22564.14,22556.77,20.05 -shr,kernel,131072,13,533,3,37445.12,37154.78,19.92 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_new64_run3.csv b/tests/beman/big_int/perf/item1/mac_vshift_new64_run3.csv deleted file mode 100644 index 7b5579b5..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_new64_run3.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1690446,9,12.23,12.03,20.61 -shl,inplace,1,13,2946166,9,3.38,3.36,20.00 -shl,kernel,1,13,8063871,9,2.48,2.47,19.99 -shl,auto,4,13,1582612,9,12.62,12.57,20.04 -shl,inplace,4,13,1968748,9,4.81,4.77,19.11 -shl,kernel,4,13,5376285,9,3.71,3.71,19.97 -shl,auto,16,13,1171285,9,15.73,15.64,18.95 -shl,inplace,16,13,1467549,9,6.83,6.81,20.15 -shl,kernel,16,13,4519024,9,4.43,4.41,20.01 -shl,auto,256,13,487854,9,41.30,40.97,20.18 -shl,inplace,256,13,222906,9,44.92,44.83,20.11 -shl,kernel,256,13,411249,9,48.64,48.59,20.01 -shl,auto,2000,13,83195,9,263.97,230.56,20.57 -shl,inplace,2000,13,28940,9,345.72,345.19,20.08 -shl,kernel,2000,13,51475,9,389.94,382.19,115.73 -shl,auto,2000,77,64567,9,342.48,310.14,27.99 -shl,inplace,2000,77,43855,9,230.67,221.76,20.38 -shl,kernel,2000,77,38153,9,528.85,525.20,20.21 -shl,auto,131072,13,1099,3,18016.00,17997.69,19.82 -shl,inplace,131072,13,441,3,22824.97,22634.02,20.25 -shl,kernel,131072,13,685,3,29241.18,29202.31,20.02 -shr,auto,1,13,2988478,9,6.93,6.85,20.71 -shr,inplace,1,13,3672227,9,3.06,2.61,21.66 -shr,kernel,1,13,8984493,9,2.23,2.22,20.06 -shr,auto,4,13,1372707,9,14.55,13.70,19.55 -shr,inplace,4,13,2320377,9,4.55,4.24,20.64 -shr,kernel,4,13,5381228,9,3.72,3.70,20.06 -shr,auto,16,13,1112093,9,18.00,17.79,20.07 -shr,inplace,16,13,1631895,9,6.11,6.10,19.95 -shr,kernel,16,13,4460468,9,4.46,4.46,19.93 -shr,auto,256,13,462061,9,42.47,41.99,19.68 -shr,inplace,256,13,224291,9,44.60,44.55,20.03 -shr,kernel,256,13,297498,9,67.28,67.12,20.04 -shr,auto,2000,13,81746,9,269.84,249.61,22.87 -shr,inplace,2000,13,28963,9,344.81,343.54,19.98 -shr,kernel,2000,13,39332,9,511.75,510.93,20.16 -shr,auto,2000,77,92949,9,256.99,215.15,21.26 -shr,inplace,2000,77,51211,9,195.08,194.83,19.99 -shr,kernel,2000,77,38824,9,516.14,511.22,20.01 -shr,auto,131072,13,1098,3,18082.92,18077.60,19.87 -shr,inplace,131072,13,444,3,22547.34,22530.03,20.05 -shr,kernel,131072,13,533,3,37480.22,37446.68,19.98 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v1_run1.csv b/tests/beman/big_int/perf/item1/mac_vshift_v1_run1.csv deleted file mode 100644 index 5f71c9b0..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_v1_run1.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1605791,9,12.58,12.26,19.86 -shl,inplace,1,13,4023574,9,2.48,2.48,19.99 -shl,kernel,1,13,10076867,9,2.23,1.98,21.60 -shl,auto,4,13,1551122,9,13.05,12.49,20.30 -shl,inplace,4,13,2658840,9,3.74,3.72,19.87 -shl,kernel,4,13,5375167,9,3.72,3.70,19.98 -shl,auto,16,13,1320159,9,15.22,15.13,19.78 -shl,inplace,16,13,1890623,9,5.28,5.26,19.97 -shl,kernel,16,13,4397267,9,4.43,4.43,19.52 -shl,auto,256,13,477709,9,41.91,41.62,20.04 -shl,inplace,256,13,335898,9,29.65,29.61,19.92 -shl,kernel,256,13,408396,9,48.78,48.76,19.93 -shl,auto,2000,13,79997,9,266.98,234.80,20.88 -shl,inplace,2000,13,51083,9,195.41,195.27,20.00 -shl,kernel,2000,13,52123,9,382.87,380.41,20.07 -shl,auto,2000,77,68240,9,477.96,350.31,45.58 -shl,inplace,2000,77,43280,9,230.90,230.31,20.53 -shl,kernel,2000,77,37746,9,527.98,526.42,19.96 -shl,auto,131072,13,1099,3,18150.93,18124.55,19.94 -shl,inplace,131072,13,536,3,18805.58,18784.40,20.16 -shl,kernel,131072,13,676,3,29396.63,29297.40,19.90 -shr,auto,1,13,3018665,9,6.88,6.69,20.68 -shr,inplace,1,13,3629352,9,3.42,3.03,20.80 -shr,kernel,1,13,8925869,9,2.23,2.22,19.95 -shr,auto,4,13,1323285,9,15.30,15.11,20.21 -shr,inplace,4,13,2799820,9,3.69,3.23,21.14 -shr,kernel,4,13,5367949,9,3.72,3.69,19.98 -shr,auto,16,13,1092676,9,18.07,18.00,19.79 -shr,inplace,16,13,1951530,9,5.19,5.11,20.20 -shr,kernel,16,13,4447203,9,4.50,4.49,20.02 -shr,auto,256,13,478156,9,41.88,41.79,20.06 -shr,inplace,256,13,327718,9,30.37,30.17,19.91 -shr,kernel,256,13,296771,9,67.37,67.04,20.00 -shr,auto,2000,13,85061,9,275.96,248.53,22.08 -shr,inplace,2000,13,50926,9,197.75,195.53,20.10 -shr,kernel,2000,13,39015,9,511.46,504.82,19.91 -shr,auto,2000,77,88356,9,271.15,245.45,23.53 -shr,inplace,2000,77,50934,9,195.66,195.37,19.94 -shr,kernel,2000,77,38721,9,517.77,511.63,20.08 -shr,auto,131072,13,1102,3,18178.09,18139.25,20.05 -shr,inplace,131072,13,539,3,18551.56,18545.76,20.00 -shr,kernel,131072,13,532,3,37569.55,37475.95,20.00 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v1_run2.csv b/tests/beman/big_int/perf/item1/mac_vshift_v1_run2.csv deleted file mode 100644 index 8c781516..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_v1_run2.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1677048,9,12.53,11.92,19.52 -shl,inplace,1,13,4010086,9,2.48,2.48,19.99 -shl,kernel,1,13,8982658,9,2.23,2.22,20.04 -shl,auto,4,13,1492938,9,12.93,12.79,19.60 -shl,inplace,4,13,2665519,9,3.77,3.71,20.15 -shl,kernel,4,13,5366271,9,3.72,3.70,19.96 -shl,auto,16,13,1208236,9,15.49,15.29,18.90 -shl,inplace,16,13,1904591,9,5.23,5.22,19.92 -shl,kernel,16,13,4519838,9,4.42,4.41,20.00 -shl,auto,256,13,483572,9,41.53,41.22,20.09 -shl,inplace,256,13,336738,9,29.68,29.65,20.03 -shl,kernel,256,13,410877,9,48.76,48.61,20.04 -shl,auto,2000,13,79167,9,261.43,227.69,20.02 -shl,inplace,2000,13,51008,9,196.09,195.31,20.03 -shl,kernel,2000,13,52391,9,382.09,379.26,20.00 -shl,auto,2000,77,70354,9,293.12,292.38,21.92 -shl,inplace,2000,77,44082,9,226.96,226.53,20.01 -shl,kernel,2000,77,37906,9,528.46,524.70,20.02 -shl,auto,131072,13,1108,3,18152.11,18141.06,20.11 -shl,inplace,131072,13,543,3,18499.16,18483.62,20.09 -shl,kernel,131072,13,682,3,29249.82,29241.81,19.95 -shr,auto,1,13,2892405,9,6.94,6.91,20.08 -shr,inplace,1,13,3010567,9,3.31,3.30,19.97 -shr,kernel,1,13,8980343,9,2.23,2.23,20.02 -shr,auto,4,13,1417836,9,14.91,14.26,20.90 -shr,inplace,4,13,2683446,9,3.39,3.38,18.68 -shr,kernel,4,13,5379141,9,3.72,3.71,20.00 -shr,auto,16,13,1062003,9,18.73,18.54,19.88 -shr,inplace,16,13,1952045,9,5.13,5.11,20.04 -shr,kernel,16,13,4462767,9,4.49,4.48,20.05 -shr,auto,256,13,475789,9,43.13,41.90,20.36 -shr,inplace,256,13,326837,9,30.31,30.17,19.83 -shr,kernel,256,13,293718,9,67.43,67.31,19.84 -shr,auto,2000,13,76464,9,253.80,238.93,19.75 -shr,inplace,2000,13,51196,9,195.69,195.28,20.04 -shr,kernel,2000,13,39125,9,510.51,507.57,20.00 -shr,auto,2000,77,81041,9,266.65,232.99,19.82 -shr,inplace,2000,77,51246,9,195.47,195.18,20.04 -shr,kernel,2000,77,38875,9,521.94,513.05,20.22 -shr,auto,131072,13,1100,3,18142.77,18142.31,19.96 -shr,inplace,131072,13,542,3,18489.62,18468.17,20.06 -shr,kernel,131072,13,535,3,37511.29,37454.28,20.06 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v1_run3.csv b/tests/beman/big_int/perf/item1/mac_vshift_v1_run3.csv deleted file mode 100644 index a1493ef4..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_v1_run3.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1683680,9,11.95,11.89,20.26 -shl,inplace,1,13,3707282,9,2.48,2.47,18.46 -shl,kernel,1,13,8949769,9,2.23,2.23,19.98 -shl,auto,4,13,1538845,9,12.97,12.49,19.93 -shl,inplace,4,13,2483937,9,3.76,3.74,18.88 -shl,kernel,4,13,5769379,9,3.70,3.47,20.85 -shl,auto,16,13,1171181,9,17.04,15.81,54.43 -shl,inplace,16,13,332429,9,29.82,29.74,19.95 -shl,kernel,16,13,805814,9,24.83,24.73,20.00 -shl,auto,256,13,86406,9,231.74,229.69,20.05 -shl,inplace,256,13,60096,9,166.47,165.63,20.06 -shl,kernel,256,13,73432,9,272.72,272.46,20.12 -shl,auto,2000,13,15200,9,1404.30,1348.05,19.89 -shl,inplace,2000,13,9116,9,1099.81,1091.89,20.08 -shl,kernel,2000,13,9327,9,2154.73,2140.08,20.31 -shl,auto,2000,77,11069,9,2039.46,1786.49,22.53 -shl,inplace,2000,77,7702,9,1329.15,1313.53,20.53 -shl,kernel,2000,77,37536,9,3025.47,527.69,20.05 -shl,auto,131072,13,1108,3,18075.02,18072.31,20.04 -shl,inplace,131072,13,539,3,18524.16,18506.80,19.98 -shl,kernel,131072,13,686,3,29306.12,29251.64,20.38 -shr,auto,1,13,2882680,9,6.68,6.44,19.18 -shr,inplace,1,13,3006693,9,3.31,3.30,19.92 -shr,kernel,1,13,8974621,9,2.23,2.22,20.01 -shr,auto,4,13,1346188,9,15.08,14.59,3891.56 -shr,inplace,4,13,2765446,9,4.27,3.45,36.27 -shr,kernel,4,13,5193913,9,3.80,3.68,19.88 -shr,auto,16,13,1032874,9,22.64,19.26,25.42 -shr,inplace,16,13,1892987,9,5.37,5.25,20.28 -shr,kernel,16,13,4216063,9,5.26,4.66,21.46 -shr,auto,256,13,432792,9,46.65,44.42,27.79 -shr,inplace,256,13,324892,9,31.27,30.95,20.37 -shr,kernel,256,13,288685,9,68.61,67.44,20.11 -shr,auto,2000,13,76688,9,258.68,248.09,20.51 -shr,inplace,2000,13,49329,9,203.65,200.94,20.11 -shr,kernel,2000,13,38447,9,531.10,508.30,20.38 -shr,auto,2000,77,77124,9,252.48,248.57,19.54 -shr,inplace,2000,77,49711,9,198.33,197.78,19.88 -shr,kernel,2000,77,37775,9,519.34,509.41,19.72 -shr,auto,131072,13,1094,3,18464.39,18220.98,20.22 -shr,inplace,131072,13,532,3,18883.30,18720.51,20.05 -shr,kernel,131072,13,522,3,37879.23,37766.28,19.81 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v2_run1.csv b/tests/beman/big_int/perf/item1/mac_vshift_v2_run1.csv deleted file mode 100644 index 8653b290..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_v2_run1.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1644545,9,12.26,12.08,20.19 -shl,inplace,1,13,3914237,9,2.48,2.48,19.43 -shl,kernel,1,13,8945273,9,2.24,2.23,20.02 -shl,auto,4,13,1479028,9,13.61,13.46,20.15 -shl,inplace,4,13,2746780,9,3.58,3.57,19.93 -shl,kernel,4,13,5392029,9,3.72,3.70,20.05 -shl,auto,16,13,1291316,9,15.52,15.36,20.10 -shl,inplace,16,13,1573053,9,6.29,6.27,19.79 -shl,kernel,16,13,4892053,9,4.10,4.08,20.06 -shl,auto,256,13,354856,9,56.30,55.84,19.96 -shl,inplace,256,13,248813,9,40.11,40.04,19.97 -shl,kernel,256,13,410757,9,48.73,48.69,20.02 -shl,auto,2000,13,50876,9,395.31,391.94,20.21 -shl,inplace,2000,13,31771,9,317.90,314.00,20.15 -shl,kernel,2000,13,52376,9,382.24,380.01,20.02 -shl,auto,2000,77,49644,9,400.64,390.98,19.94 -shl,inplace,2000,77,31873,9,316.70,313.48,20.28 -shl,kernel,2000,77,37728,9,529.17,522.15,19.90 -shl,auto,131072,13,802,3,24944.51,24882.95,20.00 -shl,inplace,131072,13,481,3,20780.41,20731.98,19.98 -shl,kernel,131072,13,684,3,29311.10,29166.55,20.11 -shr,auto,1,13,2987299,9,6.70,6.68,20.00 -shr,inplace,1,13,3594711,9,2.76,2.72,21.30 -shr,kernel,1,13,8958653,9,2.23,2.23,20.00 -shr,auto,4,13,1433162,9,13.99,13.72,20.03 -shr,inplace,4,13,2878886,9,3.93,3.29,21.91 -shr,kernel,4,13,5369090,9,3.72,3.70,19.98 -shr,auto,16,13,1126779,9,17.77,17.73,20.12 -shr,inplace,16,13,1805624,9,5.52,5.49,19.93 -shr,kernel,16,13,4475061,9,4.47,4.45,19.99 -shr,auto,256,13,458241,9,43.34,43.30,19.87 -shr,inplace,256,13,250026,9,39.66,39.43,19.82 -shr,kernel,256,13,296449,9,67.30,66.56,19.93 -shr,auto,2000,13,70791,9,282.29,268.98,20.08 -shr,inplace,2000,13,31898,9,313.53,312.17,20.00 -shr,kernel,2000,13,38693,9,510.50,506.59,19.78 -shr,auto,2000,77,72512,9,291.35,271.30,21.30 -shr,inplace,2000,77,31842,9,317.85,313.73,20.18 -shr,kernel,2000,77,38166,9,520.96,510.50,19.80 -shr,auto,131072,13,1106,3,18015.52,17942.47,19.90 -shr,inplace,131072,13,482,3,20768.11,20694.33,20.00 -shr,kernel,131072,13,533,3,37476.55,37062.85,19.92 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v2_run2.csv b/tests/beman/big_int/perf/item1/mac_vshift_v2_run2.csv deleted file mode 100644 index f4acaaaa..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_v2_run2.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1611463,9,11.98,11.95,19.43 -shl,inplace,1,13,4039446,9,2.48,2.47,20.06 -shl,kernel,1,13,8943643,9,2.23,2.23,19.95 -shl,auto,4,13,1580938,9,12.83,12.48,20.76 -shl,inplace,4,13,2661325,9,3.71,3.70,19.96 -shl,kernel,4,13,5371383,9,3.72,3.71,20.17 -shl,auto,16,13,1252170,9,15.69,15.53,19.68 -shl,inplace,16,13,1572767,9,6.34,6.27,19.90 -shl,kernel,16,13,4756941,9,4.21,4.20,20.01 -shl,auto,256,13,357539,9,56.04,55.94,20.09 -shl,inplace,256,13,249115,9,40.07,39.87,19.97 -shl,kernel,256,13,412047,9,48.74,48.49,20.10 -shl,auto,2000,13,50962,9,398.17,392.89,20.66 -shl,inplace,2000,13,31892,9,313.73,313.35,20.08 -shl,kernel,2000,13,52247,9,383.72,381.79,20.03 -shl,auto,2000,77,50598,9,394.79,391.69,19.97 -shl,inplace,2000,77,31871,9,313.65,312.44,19.99 -shl,kernel,2000,77,38521,9,522.68,518.55,20.17 -shl,auto,131072,13,796,3,25150.86,24897.87,20.03 -shl,inplace,131072,13,481,3,20843.90,20717.34,20.02 -shl,kernel,131072,13,651,3,29900.22,29572.33,19.40 -shr,auto,1,13,2843323,9,6.78,6.70,19.47 -shr,inplace,1,13,3588983,9,2.72,2.72,19.68 -shr,kernel,1,13,8970981,9,2.23,2.22,19.99 -shr,auto,4,13,1424622,9,14.01,13.96,20.03 -shr,inplace,4,13,3045096,9,3.31,3.07,19.78 -shr,kernel,4,13,5399861,9,3.73,3.72,20.18 -shr,auto,16,13,1118138,9,18.09,18.00,20.28 -shr,inplace,16,13,1771188,9,5.51,5.50,19.60 -shr,kernel,16,13,4484056,9,4.46,4.45,20.03 -shr,auto,256,13,454371,9,43.56,43.28,19.79 -shr,inplace,256,13,252672,9,39.63,39.55,20.05 -shr,kernel,256,13,297145,9,67.35,66.96,20.06 -shr,auto,2000,13,68475,9,289.09,270.30,19.67 -shr,inplace,2000,13,31845,9,313.60,313.04,20.01 -shr,kernel,2000,13,38817,9,512.05,505.81,19.88 -shr,auto,2000,77,70439,9,310.25,294.48,22.18 -shr,inplace,2000,77,31903,9,313.81,312.97,20.02 -shr,kernel,2000,77,38861,9,515.67,510.39,20.01 -shr,auto,131072,13,1115,3,17946.94,17914.87,20.01 -shr,inplace,131072,13,480,3,20805.29,20801.00,19.97 -shr,kernel,131072,13,533,3,37504.61,37421.51,19.98 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v2_run3.csv b/tests/beman/big_int/perf/item1/mac_vshift_v2_run3.csv deleted file mode 100644 index 7627b875..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_v2_run3.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1682893,9,12.32,11.90,20.63 -shl,inplace,1,13,3968018,9,2.49,2.48,19.77 -shl,kernel,1,13,10018071,9,2.08,1.99,20.35 -shl,auto,4,13,1527334,9,13.25,12.93,20.22 -shl,inplace,4,13,2701646,9,3.84,3.61,20.77 -shl,kernel,4,13,5333258,9,3.74,3.73,19.95 -shl,auto,16,13,1297789,9,15.53,15.45,20.37 -shl,inplace,16,13,1554103,9,6.41,6.30,20.02 -shl,kernel,16,13,4415503,9,4.53,4.52,20.00 -shl,auto,256,13,355965,9,56.45,56.24,20.10 -shl,inplace,256,13,246077,9,40.17,39.93,19.77 -shl,kernel,256,13,412668,9,49.02,48.81,20.22 -shl,auto,2000,13,50076,9,394.05,391.51,19.75 -shl,inplace,2000,13,31342,9,315.71,314.51,19.81 -shl,kernel,2000,13,52155,9,385.02,383.29,20.07 -shl,auto,2000,77,50943,9,394.17,388.24,20.03 -shl,inplace,2000,77,31600,9,315.62,311.09,19.92 -shl,kernel,2000,77,37247,9,532.62,521.09,19.88 -shl,auto,131072,13,798,3,25035.87,24859.54,19.94 -shl,inplace,131072,13,478,3,20984.83,20930.40,20.27 -shl,kernel,131072,13,679,3,29489.87,29326.77,20.02 -shr,auto,1,13,2927036,9,6.95,6.50,20.05 -shr,inplace,1,13,3585374,9,2.75,2.73,19.70 -shr,kernel,1,13,8914816,9,2.24,2.23,19.98 -shr,auto,4,13,1442160,9,14.13,13.81,20.58 -shr,inplace,4,13,2968037,9,3.31,3.27,19.74 -shr,kernel,4,13,5339856,9,3.50,3.48,19.34 -shr,auto,16,13,1109737,9,18.69,17.78,20.53 -shr,inplace,16,13,1847593,9,5.51,5.48,20.39 -shr,kernel,16,13,4460034,9,4.50,4.46,20.22 -shr,auto,256,13,457045,9,43.57,43.46,19.93 -shr,inplace,256,13,248182,9,39.86,39.67,19.89 -shr,kernel,256,13,296287,9,67.60,66.96,20.01 -shr,auto,2000,13,65130,9,298.10,284.29,20.43 -shr,inplace,2000,13,31817,9,317.96,314.78,20.34 -shr,kernel,2000,13,39075,9,513.20,506.81,20.04 -shr,auto,2000,77,69674,9,299.85,282.25,20.62 -shr,inplace,2000,77,31680,9,314.75,314.00,19.97 -shr,kernel,2000,77,38598,9,518.82,511.50,19.99 -shr,auto,131072,13,1106,3,18241.00,18078.85,20.12 -shr,inplace,131072,13,481,3,20782.31,20778.46,19.99 -shr,kernel,131072,13,533,3,37646.34,37597.80,20.08 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v3_run1.csv b/tests/beman/big_int/perf/item1/mac_vshift_v3_run1.csv deleted file mode 100644 index 8a40945b..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_v3_run1.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1661654,9,12.02,11.92,20.05 -shl,inplace,1,13,3774375,9,2.48,2.47,18.85 -shl,kernel,1,13,8973439,9,2.23,2.22,20.00 -shl,auto,4,13,1513446,9,13.12,12.92,19.83 -shl,inplace,4,13,2632365,9,3.84,3.74,20.08 -shl,kernel,4,13,5393384,9,3.72,3.70,20.20 -shl,auto,16,13,1287805,9,15.63,15.52,20.18 -shl,inplace,16,13,1540884,9,6.47,6.46,19.96 -shl,kernel,16,13,4908074,9,4.07,4.06,19.97 -shl,auto,256,13,318537,9,62.70,62.33,20.00 -shl,inplace,256,13,208410,9,47.92,47.68,19.98 -shl,kernel,256,13,413276,9,48.30,48.13,20.01 -shl,auto,2000,13,43625,9,450.95,446.47,19.66 -shl,inplace,2000,13,26714,9,375.19,372.99,20.02 -shl,kernel,2000,13,52210,9,382.03,380.50,19.97 -shl,auto,2000,77,44088,9,452.64,446.25,19.93 -shl,inplace,2000,77,26690,9,379.71,371.60,20.14 -shl,kernel,2000,77,37689,9,529.85,526.85,19.96 -shl,auto,131072,13,680,3,29331.00,29295.65,20.21 -shl,inplace,131072,13,406,3,24609.25,24581.85,19.98 -shl,kernel,131072,13,684,3,29322.43,29110.99,20.06 -shr,auto,1,13,3223731,9,6.93,6.21,20.06 -shr,inplace,1,13,3461010,9,2.87,2.83,19.89 -shr,kernel,1,13,8800996,9,2.23,2.22,19.72 -shr,auto,4,13,1418471,9,14.63,13.93,20.42 -shr,inplace,4,13,2829108,9,3.54,3.50,20.18 -shr,kernel,4,13,5385182,9,3.72,3.70,20.03 -shr,auto,16,13,1097587,9,18.49,18.29,20.35 -shr,inplace,16,13,1802427,9,5.65,5.61,20.36 -shr,kernel,16,13,4796837,9,4.17,4.16,20.02 -shr,auto,256,13,413652,9,47.79,47.71,19.79 -shr,inplace,256,13,211478,9,47.30,47.21,20.01 -shr,kernel,256,13,299616,9,66.64,66.14,19.96 -shr,auto,2000,13,60339,9,345.28,325.94,20.63 -shr,inplace,2000,13,26686,9,374.05,372.41,19.97 -shr,kernel,2000,13,39147,9,510.56,498.41,19.91 -shr,auto,2000,77,58972,9,339.25,326.39,19.90 -shr,inplace,2000,77,26753,9,374.60,372.42,20.05 -shr,kernel,2000,77,38699,9,517.15,513.50,20.06 -shr,auto,131072,13,971,3,20633.50,20617.45,20.03 -shr,inplace,131072,13,407,3,24606.47,24599.25,20.05 -shr,kernel,131072,13,536,3,37856.73,37850.20,20.33 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v3_run2.csv b/tests/beman/big_int/perf/item1/mac_vshift_v3_run2.csv deleted file mode 100644 index 2811fa64..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_v3_run2.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1656929,9,12.09,12.04,20.26 -shl,inplace,1,13,4034021,9,2.48,2.47,20.09 -shl,kernel,1,13,8972421,9,2.23,2.23,20.02 -shl,auto,4,13,1550326,9,13.76,13.47,21.31 -shl,inplace,4,13,2641940,9,3.78,3.78,20.41 -shl,kernel,4,13,5381040,9,3.48,3.45,18.98 -shl,auto,16,13,1229716,9,16.48,15.80,20.42 -shl,inplace,16,13,1541995,9,6.49,6.48,20.00 -shl,kernel,16,13,4905958,9,4.08,4.07,20.01 -shl,auto,256,13,313981,9,63.72,63.06,19.97 -shl,inplace,256,13,208834,9,47.97,47.71,20.03 -shl,kernel,256,13,413707,9,48.37,48.21,20.02 -shl,auto,2000,13,44155,9,453.04,448.54,20.05 -shl,inplace,2000,13,26757,9,375.03,373.02,20.07 -shl,kernel,2000,13,52137,9,382.49,381.28,19.94 -shl,auto,2000,77,44117,9,452.87,452.49,19.98 -shl,inplace,2000,77,25706,9,375.19,373.68,19.29 -shl,kernel,2000,77,37852,9,526.90,522.48,19.92 -shl,auto,131072,13,696,3,28863.86,28820.28,20.10 -shl,inplace,131072,13,406,3,24609.09,24590.98,19.98 -shl,kernel,131072,13,684,3,29192.01,29140.11,19.97 -shr,auto,1,13,3104799,9,6.68,6.44,20.51 -shr,inplace,1,13,3580603,9,2.78,2.76,21.94 -shr,kernel,1,13,8970678,9,2.23,2.23,20.01 -shr,auto,4,13,1399386,9,14.27,13.86,19.87 -shr,inplace,4,13,2862472,9,3.52,3.51,20.19 -shr,kernel,4,13,5388143,9,3.72,3.71,20.05 -shr,auto,16,13,1114561,9,17.96,17.62,20.03 -shr,inplace,16,13,1749498,9,5.66,5.57,19.85 -shr,kernel,16,13,4496871,9,4.45,4.45,20.07 -shr,auto,256,13,411878,9,48.47,48.05,20.09 -shr,inplace,256,13,211200,9,47.25,47.16,19.96 -shr,kernel,256,13,299205,9,67.29,67.22,20.14 -shr,auto,2000,13,60988,9,330.67,328.41,20.44 -shr,inplace,2000,13,26690,9,374.14,372.89,19.97 -shr,kernel,2000,13,39262,9,510.36,509.85,20.04 -shr,auto,2000,77,60428,9,329.89,329.18,20.23 -shr,inplace,2000,77,26630,9,377.89,372.47,20.07 -shr,kernel,2000,77,38747,9,514.38,511.78,19.99 -shr,auto,131072,13,967,3,20600.66,20547.83,19.91 -shr,inplace,131072,13,407,3,24608.06,24606.27,20.03 -shr,kernel,131072,13,534,3,37470.51,37462.16,20.02 diff --git a/tests/beman/big_int/perf/item1/mac_vshift_v3_run3.csv b/tests/beman/big_int/perf/item1/mac_vshift_v3_run3.csv deleted file mode 100644 index 313bb071..00000000 --- a/tests/beman/big_int/perf/item1/mac_vshift_v3_run3.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1630608,9,12.28,12.11,20.06 -shl,inplace,1,13,3998420,9,2.51,2.49,20.04 -shl,kernel,1,13,8903080,9,2.24,2.23,20.00 -shl,auto,4,13,1546473,9,12.92,12.77,20.07 -shl,inplace,4,13,2657793,9,3.83,3.74,20.46 -shl,kernel,4,13,5327984,9,3.74,3.71,19.91 -shl,auto,16,13,1278088,9,16.26,15.55,21.17 -shl,inplace,16,13,1535871,9,6.52,6.50,20.02 -shl,kernel,16,13,4767712,9,4.20,4.19,20.07 -shl,auto,256,13,316428,9,63.05,62.58,19.98 -shl,inplace,256,13,206263,9,48.34,48.12,19.98 -shl,kernel,256,13,408497,9,48.69,48.53,19.90 -shl,auto,2000,13,44050,9,456.18,450.80,20.25 -shl,inplace,2000,13,26247,9,377.25,376.23,19.80 -shl,kernel,2000,13,52485,9,384.37,381.56,20.18 -shl,auto,2000,77,44058,9,455.97,453.36,20.11 -shl,inplace,2000,77,26561,9,377.11,373.11,20.01 -shl,kernel,2000,77,38042,9,525.52,521.29,20.00 -shl,auto,131072,13,690,3,28931.40,28844.75,19.96 -shl,inplace,131072,13,406,3,24596.62,24590.06,20.02 -shl,kernel,131072,13,682,3,29359.54,29278.47,20.01 -shr,auto,1,13,3068121,9,6.63,6.47,20.37 -shr,inplace,1,13,3564260,9,2.78,2.77,19.87 -shr,kernel,1,13,8850192,9,2.24,2.23,19.85 -shr,auto,4,13,1419555,9,14.01,13.58,19.71 -shr,inplace,4,13,2854370,9,3.54,3.52,20.24 -shr,kernel,4,13,5354492,9,3.75,3.73,20.19 -shr,auto,16,13,1094237,9,18.23,17.90,20.28 -shr,inplace,16,13,1813827,9,5.69,5.63,20.64 -shr,kernel,16,13,4876378,9,4.11,4.10,20.06 -shr,auto,256,13,412239,9,48.31,48.00,19.94 -shr,inplace,256,13,210117,9,47.55,47.47,19.98 -shr,kernel,256,13,298708,9,67.19,66.61,20.09 -shr,auto,2000,13,57316,9,340.82,332.74,19.51 -shr,inplace,2000,13,26609,9,375.22,373.73,20.01 -shr,kernel,2000,13,37382,9,534.21,532.76,19.97 -shr,auto,2000,77,59570,9,360.57,339.57,21.10 -shr,inplace,2000,77,26584,9,379.60,375.38,23.95 -shr,kernel,2000,77,35298,9,556.75,547.52,19.57 -shr,auto,131072,13,963,3,20804.95,20716.38,20.37 -shr,inplace,131072,13,398,3,24719.59,24688.60,19.68 -shr,kernel,131072,13,527,3,37720.75,37714.34,19.89 diff --git a/tests/beman/big_int/perf/item1/macr3_base64_seed1a.csv b/tests/beman/big_int/perf/item1/macr3_base64_seed1a.csv deleted file mode 100644 index dbd72253..00000000 --- a/tests/beman/big_int/perf/item1/macr3_base64_seed1a.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T17:51:52Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2878618,9,6.95,6.84,19.98 -add,inplace,1,1,3033434,9,3.35,3.25,20.16 -add,kernel,1,1,17407760,9,1.14,1.14,19.97 -add,floor,1,1,2119333,9,9.32,9.27,19.86 -add,gmp,1,1,13460736,9,1.49,1.47,20.02 -add,gmpz,1,1,6526120,9,3.95,3.21,27.99 -add,auto,2,2,1363192,9,14.93,14.55,20.32 -add,inplace,2,2,2649648,9,3.75,3.73,19.92 -add,kernel,2,2,14338115,9,1.42,1.40,20.49 -add,floor,2,2,1998430,9,9.94,9.70,19.78 -add,gmp,2,2,11481319,9,1.79,1.74,19.36 -add,gmpz,2,2,6700428,9,5.30,3.66,36.88 -add,auto,4,4,1292645,9,15.43,15.26,19.92 -add,inplace,4,4,2690986,9,3.73,3.72,20.30 -add,kernel,4,4,10458003,9,1.92,1.91,20.08 -add,floor,4,4,1839014,9,10.95,10.44,20.11 -add,gmp,4,4,11388842,9,1.74,1.73,20.34 -add,gmpz,4,4,5600397,9,5.04,3.61,22.66 -add,auto,8,8,1287115,9,15.72,14.84,20.09 -add,inplace,8,8,1973234,9,5.09,4.96,20.10 -add,kernel,8,8,5733881,9,3.50,3.46,20.49 -add,floor,8,8,1643096,9,12.67,12.34,20.82 -add,gmp,8,8,8859162,9,2.28,2.26,20.30 -add,gmpz,8,8,5084197,9,5.21,3.96,24.07 -add,auto,16,16,1225175,9,16.49,16.15,20.41 -add,inplace,16,16,1013413,9,9.70,9.58,19.70 -add,kernel,16,16,2665633,9,7.57,7.47,20.22 -add,floor,16,16,1453944,9,14.18,13.65,20.61 -add,gmp,16,16,6881886,9,3.24,2.88,19.36 -add,gmpz,16,16,2036267,9,9.86,9.62,20.16 -add,auto,64,64,367864,9,54.46,53.52,20.00 -add,inplace,64,64,190162,9,50.99,50.48,20.11 -add,kernel,64,64,415357,9,48.31,47.65,20.06 -add,floor,64,64,315833,9,61.52,60.72,19.53 -add,gmp,64,64,1781326,9,11.22,11.16,20.05 -add,gmpz,64,64,1527580,9,12.99,12.81,19.92 -add,auto,256,256,128062,9,148.16,144.41,18.94 -add,inplace,256,256,43861,9,235.87,232.55,21.12 -add,kernel,256,256,85145,9,231.20,226.17,19.67 -add,floor,256,256,83895,9,243.57,237.52,20.61 -add,gmp,256,256,357315,9,57.00,55.67,20.32 -add,gmpz,256,256,331753,9,57.55,56.14,19.04 -add,auto,1024,1024,36838,9,560.91,534.85,20.71 -add,inplace,1024,1024,9680,9,982.12,975.79,19.21 -add,kernel,1024,1024,19785,9,1015.82,944.29,19.84 -add,floor,1024,1024,19659,9,977.77,945.67,19.31 -add,gmp,1024,1024,79233,9,253.14,246.19,20.53 -add,gmpz,1024,1024,78324,9,253.61,250.83,20.08 -add,auto,2000,2000,17818,9,1135.80,1057.25,20.13 -add,inplace,2000,2000,5303,9,1901.43,1856.01,20.21 -add,kernel,2000,2000,10446,9,1893.63,1830.92,19.69 -add,floor,2000,2000,10488,9,1925.51,1867.99,20.40 -add,gmp,2000,2000,40226,9,495.45,483.38,19.83 -add,gmpz,2000,2000,40381,9,494.31,482.06,19.96 -add,auto,1024,1,112916,9,171.73,168.50,19.40 -add,inplace,1024,1,10368,9,973.14,946.54,20.13 -add,kernel,1024,1,27564,9,725.10,716.67,20.01 -add,floor,1024,1,27160,9,742.87,729.73,20.10 -add,gmp,1024,1,76547,9,260.43,251.95,19.81 -add,gmpz,1024,1,76585,9,261.35,257.96,19.99 -sub,auto,1,1,2688701,9,7.21,7.16,19.63 -sub,inplace,1,1,2836111,9,3.48,3.46,19.72 -sub,kernel,1,1,19483394,9,1.03,1.03,20.11 -sub,floor,1,1,11469225,9,1.76,1.74,20.21 -sub,gmp,1,1,13437629,9,1.49,1.47,19.95 -sub,gmpz,1,1,7284079,9,2.79,2.73,20.53 -sub,auto,2,2,1341221,9,15.25,15.00,20.54 -sub,inplace,2,2,3002839,9,3.26,3.22,19.59 -sub,kernel,2,2,14144241,9,1.40,1.39,19.87 -sub,floor,2,2,2172471,9,9.21,9.18,20.05 -sub,gmp,2,2,11461934,9,1.87,1.74,20.24 -sub,gmpz,2,2,6148719,9,3.24,3.21,19.98 -sub,auto,4,4,1299605,9,15.76,15.61,20.64 -sub,inplace,4,4,2447826,9,4.05,3.73,19.40 -sub,kernel,4,4,10216605,9,1.95,1.94,19.96 -sub,floor,4,4,2008424,9,9.97,9.92,20.15 -sub,gmp,4,4,11319872,9,1.75,1.74,19.86 -sub,gmpz,4,4,6701426,9,2.98,2.97,19.97 -sub,auto,8,8,1232955,9,16.24,15.83,19.97 -sub,inplace,8,8,1988884,9,5.06,5.03,20.33 -sub,kernel,8,8,5656394,9,3.55,3.51,20.19 -sub,floor,8,8,1674275,9,12.20,11.44,20.10 -sub,gmp,8,8,8872468,9,2.25,2.24,19.93 -sub,gmpz,8,8,5742868,9,3.50,3.48,20.08 -sub,auto,16,16,1066926,9,18.54,17.66,19.87 -sub,inplace,16,16,1070898,9,9.41,9.30,22.04 -sub,kernel,16,16,2605674,9,7.69,7.61,20.01 -sub,floor,16,16,1324892,9,15.56,15.16,20.70 -sub,gmp,16,16,6207996,9,3.24,3.23,20.12 -sub,gmpz,16,16,4723329,9,4.48,4.26,21.03 -sub,auto,64,64,486221,9,41.24,40.91,20.19 -sub,inplace,64,64,198655,9,50.33,49.37,19.96 -sub,kernel,64,64,409273,9,49.42,48.08,20.18 -sub,floor,64,64,327033,9,60.81,59.09,19.78 -sub,gmp,64,64,1744755,9,11.45,11.39,20.03 -sub,gmpz,64,64,1442725,9,13.88,13.83,20.01 -sub,auto,256,256,150360,9,132.79,129.02,19.96 -sub,inplace,256,256,42463,9,235.06,228.74,19.88 -sub,kernel,256,256,86860,9,232.80,227.02,20.17 -sub,floor,256,256,82297,9,243.43,239.72,20.00 -sub,gmp,256,256,356796,9,57.21,56.49,20.49 -sub,gmpz,256,256,345698,9,57.73,56.51,19.88 -sub,auto,1024,1024,36143,9,558.65,529.56,20.04 -sub,inplace,1024,1024,10311,9,975.20,950.36,20.06 -sub,kernel,1024,1024,21509,9,944.40,924.93,20.23 -sub,floor,1024,1024,20622,9,980.39,969.62,20.20 -sub,gmp,1024,1024,79092,9,250.38,242.05,19.71 -sub,gmpz,1024,1024,79372,9,252.62,248.38,20.02 -sub,auto,2000,2000,19907,9,1060.04,1021.16,20.46 -sub,inplace,2000,2000,5209,9,1896.65,1834.71,19.67 -sub,kernel,2000,2000,10603,9,1866.92,1826.68,19.76 -sub,floor,2000,2000,10531,9,1894.02,1837.98,19.82 -sub,gmp,2000,2000,41175,9,495.22,483.18,20.40 -sub,gmpz,2000,2000,41378,9,493.89,485.92,20.46 -sub,auto,1024,1,99037,9,205.32,201.40,20.55 -sub,inplace,1024,1,10395,9,961.57,951.40,20.02 -sub,kernel,1024,1,27812,9,721.13,708.60,20.00 -sub,floor,1024,1,26363,9,755.81,741.34,20.01 -sub,gmp,1024,1,76967,9,260.85,256.15,20.05 -sub,gmpz,1024,1,75041,9,262.72,254.99,19.66 -shl,auto,1,13,1200480,9,16.64,16.40,19.96 -shl,inplace,1,13,4376867,9,2.31,2.30,20.23 -shl,kernel,1,13,8946932,9,2.24,2.23,20.02 -shl,kernelip,1,13,8934683,9,1.78,1.75,25.75 -shl,floor,1,13,1781020,9,11.42,11.23,20.34 -shl,gmp,1,13,15961727,9,1.24,1.23,19.83 -shl,gmpz,1,13,9802851,9,2.00,1.98,19.59 -shl,auto,4,13,1013497,9,19.20,18.76,19.60 -shl,inplace,4,13,2852958,9,3.56,3.51,20.35 -shl,kernel,4,13,5383287,9,3.72,3.69,20.06 -shl,kernelip,4,13,2890043,9,3.38,3.29,19.43 -shl,floor,4,13,1523314,9,12.79,12.38,19.66 -shl,gmp,4,13,9779705,9,1.98,1.98,19.38 -shl,gmpz,4,13,7296043,9,2.76,2.72,20.18 -shl,auto,16,13,904352,9,21.94,20.80,19.73 -shl,inplace,16,13,1690336,9,5.79,5.77,19.59 -shl,kernel,16,13,4587383,9,4.15,4.13,19.08 -shl,kernelip,16,13,1457412,9,6.81,6.76,20.13 -shl,floor,16,13,1617832,9,12.14,12.04,19.76 -shl,gmp,16,13,5373552,9,3.52,3.47,19.14 -shl,gmpz,16,13,3983823,9,5.19,5.14,20.78 -shl,auto,256,13,232884,9,85.85,85.39,19.98 -shl,inplace,256,13,275394,9,36.42,36.26,20.06 -shl,kernel,256,13,407005,9,49.33,48.65,20.09 -shl,kernelip,256,13,204152,9,48.80,48.64,19.96 -shl,floor,256,13,346682,9,57.50,57.37,19.94 -shl,gmp,256,13,541540,9,36.88,36.83,19.99 -shl,gmpz,256,13,527045,9,37.79,37.70,19.95 -shl,auto,2000,13,29906,9,649.26,609.39,19.32 -shl,inplace,2000,13,35254,9,282.65,281.69,19.93 -shl,kernel,2000,13,52212,9,383.78,377.80,20.11 -shl,kernelip,2000,13,26598,9,376.57,369.83,19.99 -shl,floor,2000,13,49698,9,407.19,401.44,20.46 -shl,gmp,2000,13,37844,9,1488.96,775.62,49.60 -shl,gmpz,2000,13,35923,9,1960.38,1262.38,61.68 -shl,auto,2000,77,23052,9,829.67,781.44,19.02 -shl,inplace,2000,77,23360,9,425.70,419.89,19.88 -shl,kernel,2000,77,37794,9,532.75,522.74,20.07 -shl,kernelip,2000,77,18669,9,522.81,516.91,19.61 -shl,floor,2000,77,36830,9,544.01,540.89,20.07 -shl,gmp,2000,77,68578,9,290.85,288.32,19.99 -shl,gmpz,2000,77,69005,9,290.92,286.47,20.21 -shr,auto,1,13,2153867,9,9.44,9.17,20.18 -shr,inplace,1,13,4460530,9,2.20,2.11,19.65 -shr,kernel,1,13,8838387,9,2.23,2.22,19.74 -shr,floor,1,13,8044867,9,2.48,2.46,19.96 -shr,gmp,1,13,19981934,9,1.00,0.99,19.89 -shr,gmpz,1,13,10053428,9,2.00,1.98,20.13 -shr,auto,4,13,1101935,9,18.79,18.39,18.99 -shr,inplace,4,13,3002607,9,3.34,3.29,19.98 -shr,kernel,4,13,5342907,9,3.74,3.73,20.18 -shr,floor,4,13,1703369,9,12.10,11.90,20.61 -shr,gmp,4,13,11324151,9,1.76,1.74,19.87 -shr,gmpz,4,13,7271467,9,2.74,2.73,19.95 -shr,auto,16,13,941115,9,21.55,21.28,20.36 -shr,inplace,16,13,1944592,9,5.14,5.09,20.06 -shr,kernel,16,13,4801739,9,4.20,4.16,20.14 -shr,floor,16,13,1541550,9,13.19,13.13,20.38 -shr,gmp,16,13,6148273,9,3.26,3.23,20.05 -shr,gmpz,16,13,4690068,9,4.26,4.24,20.92 -shr,auto,256,13,229273,9,87.65,87.19,20.14 -shr,inplace,256,13,279070,9,35.92,35.78,20.07 -shr,kernel,256,13,300531,9,66.47,66.24,19.97 -shr,floor,256,13,290047,9,76.24,75.14,22.18 -shr,gmp,256,13,456090,9,42.62,42.38,19.54 -shr,gmpz,256,13,523189,9,38.22,38.03,20.05 -shr,auto,2000,13,29917,9,694.67,656.33,21.28 -shr,inplace,2000,13,35126,9,285.30,283.22,20.04 -shr,kernel,2000,13,36211,9,524.51,515.84,19.82 -shr,floor,2000,13,38679,9,526.96,518.41,20.31 -shr,gmp,2000,13,64756,9,293.33,291.11,19.03 -shr,gmpz,2000,13,64183,9,299.11,295.46,19.59 -shr,auto,2000,77,19098,9,1029.34,991.27,19.58 -shr,inplace,2000,77,23765,9,420.77,418.24,19.98 -shr,kernel,2000,77,38764,9,520.61,516.19,20.32 -shr,floor,2000,77,37633,9,530.32,526.45,20.00 -shr,gmp,2000,77,66247,9,295.27,291.01,19.71 -shr,gmpz,2000,77,68475,9,292.59,287.12,20.23 -mul,auto,1,1,1275095,9,15.57,15.29,19.84 -mul,gmp,1,1,5244515,9,3.75,3.72,19.67 -mul,gmpz,1,1,7317582,9,2.80,2.73,20.75 -mul,auto,2,2,758538,9,28.06,26.47,21.12 -mul,kernel,2,2,3063955,9,6.61,6.54,20.32 -mul,floor,2,2,1380050,9,14.74,14.54,20.46 -mul,gmp,2,2,4266861,9,4.52,4.42,19.60 -mul,gmpz,2,2,3167705,9,6.29,6.22,20.19 -mul,auto,3,3,656931,9,31.48,30.25,20.53 -mul,kernel,3,3,2380588,9,8.14,7.95,19.50 -mul,floor,3,3,1147826,9,17.09,16.90,19.87 -mul,gmp,3,3,3161997,9,6.22,6.18,19.73 -mul,gmpz,3,3,2377243,9,8.16,8.09,19.68 -mul,auto,4,4,622023,9,29.55,29.14,18.44 -mul,kernel,4,4,1791600,9,11.22,11.12,20.29 -mul,floor,4,4,1143803,9,17.23,17.06,19.97 -mul,gmp,4,4,2482991,9,8.73,8.10,20.02 -mul,gmpz,4,4,1861695,9,10.89,10.42,20.05 -mul,auto,6,6,587159,9,33.00,32.79,19.43 -mul,kernel,6,6,1049927,9,19.14,18.90,20.10 -mul,floor,6,6,798537,9,24.00,23.72,19.23 -mul,gmp,6,6,1356434,9,14.63,14.45,19.84 -mul,gmpz,6,6,1138735,9,18.63,18.04,21.16 -mul,auto,8,8,476979,9,41.95,41.41,20.09 -mul,kernel,8,8,862713,9,23.07,23.00,19.94 -mul,floor,8,8,656138,9,30.86,30.29,20.22 -mul,gmp,8,8,900505,9,22.40,22.08,21.21 -mul,gmpz,8,8,827572,9,27.00,24.64,21.94 -mul,auto,12,12,321676,9,61.97,61.25,20.06 -mul,kernel,12,12,483803,9,41.34,41.22,20.00 -mul,floor,12,12,398893,9,49.85,49.70,19.99 -mul,gmp,12,12,451232,9,44.50,44.23,20.08 -mul,gmpz,12,12,433824,9,46.49,46.07,20.24 -mul,auto,16,16,210823,9,94.28,93.87,19.94 -mul,kernel,16,16,287093,9,69.71,69.49,20.02 -mul,floor,16,16,254367,9,78.80,78.58,20.10 -mul,gmp,16,16,261425,9,77.25,76.78,20.20 -mul,gmpz,16,16,252909,9,78.27,78.09,19.83 -mul,auto,32,32,66535,9,298.80,296.84,19.95 -mul,kernel,32,32,77056,9,258.39,258.14,19.93 -mul,floor,32,32,70391,9,281.90,278.63,19.80 -mul,gmp,32,32,73648,9,269.25,267.77,19.87 -mul,gmpz,32,32,73998,9,270.97,269.76,20.06 -mul,auto,64,64,19373,9,1035.34,1030.16,20.05 -mul,kernel,64,64,20354,9,985.34,981.01,20.05 -mul,floor,64,64,19657,9,1015.63,1012.12,19.98 -mul,gmp,64,64,25392,9,776.55,773.00,19.75 -mul,gmpz,64,64,25728,9,777.06,776.21,19.99 -mul,auto,128,128,5412,9,3671.65,3617.63,19.88 -mul,kernel,128,128,5557,9,3580.90,3563.86,19.99 -mul,floor,128,128,5399,9,3596.55,3589.53,19.50 -mul,gmp,128,128,7515,9,2671.99,2618.19,20.19 -mul,gmpz,128,128,7433,9,2702.10,2669.93,20.17 -mul,auto,256,256,1633,9,12094.30,11858.42,19.69 -mul,kernel,256,256,1697,9,11730.41,11705.41,20.01 -mul,floor,256,256,1631,9,11888.85,11740.22,19.35 -mul,gmp,256,256,1928,9,10392.79,10296.44,20.08 -mul,gmpz,256,256,2513,9,7952.94,7843.58,19.95 -mul,auto,512,512,518,9,37899.86,37271.96,19.59 -mul,kernel,512,512,534,9,37225.50,36933.29,20.02 -mul,floor,512,512,544,9,37089.69,36838.69,20.38 -mul,gmp,512,512,938,9,21397.25,21323.29,20.09 -mul,gmpz,512,512,1035,9,19086.23,19025.32,19.81 -mul,auto,1000,1000,182,9,109037.09,108188.64,19.89 -mul,kernel,1000,1000,177,9,107628.53,106411.25,19.06 -mul,floor,1000,1000,188,9,107040.34,106056.96,20.29 -mul,gmp,1000,1000,361,9,55247.69,54841.64,19.99 -mul,gmpz,1000,1000,360,9,54993.87,54745.49,19.84 -mul,auto,2000,2000,64,9,302673.17,301170.58,19.40 -mul,kernel,2000,2000,66,9,319402.79,301409.73,21.21 -mul,floor,2000,2000,65,9,303249.35,302462.18,19.74 -mul,gmp,2000,2000,135,9,150466.36,148538.59,20.49 -mul,gmpz,2000,2000,135,9,148793.52,148324.07,20.20 -mul,auto,2000,100,428,9,46926.40,46648.66,20.19 -mul,kernel,2000,100,429,9,46858.49,46594.21,20.11 -mul,floor,2000,100,421,9,46690.52,46556.02,19.68 -mul,gmp,2000,100,574,9,35159.26,34809.23,20.16 -mul,gmpz,2000,100,574,9,34579.41,34505.59,19.89 -sqr,auto,4,4,689231,9,30.36,29.08,21.46 -sqr,kernel,4,4,1768417,9,11.56,11.12,21.10 -sqr,floor,4,4,1165699,9,16.93,16.02,19.65 -sqr,gmp,4,4,2961475,9,6.71,6.69,19.95 -sqr,gmpz,4,4,2128690,9,8.96,8.92,19.72 -sqr,auto,16,16,224105,9,88.52,87.79,19.82 -sqr,kernel,16,16,318524,9,61.97,61.71,19.76 -sqr,floor,16,16,277996,9,69.59,69.43,19.41 -sqr,gmp,16,16,322077,9,61.94,61.58,20.00 -sqr,gmpz,16,16,304175,9,65.94,65.59,20.05 -sqr,auto,64,64,31918,9,624.80,623.91,19.95 -sqr,kernel,64,64,34460,9,586.28,578.55,20.19 -sqr,floor,64,64,33256,9,602.93,598.00,20.04 -sqr,gmp,64,64,29687,9,675.55,658.91,19.94 -sqr,gmpz,64,64,29458,9,676.84,671.18,19.89 -sqr,auto,512,512,805,9,24950.16,24667.91,20.03 -sqr,kernel,512,512,811,9,24356.20,24253.55,19.78 -sqr,floor,512,512,818,9,24418.86,24180.52,19.96 -sqr,gmp,512,512,1091,9,18355.41,18066.41,20.13 -sqr,gmpz,512,512,1029,9,19886.34,19664.80,20.61 -sqr,auto,2000,2000,87,9,229935.34,227097.70,20.01 -sqr,kernel,2000,2000,87,9,229045.02,225160.92,19.89 -sqr,floor,2000,2000,89,9,224161.52,222049.63,20.11 -sqr,gmp,2000,2000,159,9,121241.09,120567.61,19.27 -sqr,gmpz,2000,2000,166,9,121862.95,118916.92,20.25 -divrem,auto,2,1,655411,9,31.15,30.43,20.45 -divrem,kernel,2,1,3548196,9,5.63,5.60,20.00 -divrem,floor,2,1,1488498,9,13.72,13.46,20.44 -divrem,gmp,2,1,3986477,9,5.01,5.00,20.00 -divrem,gmpz,2,1,2276030,9,8.73,8.70,19.88 -divrem,auto,8,4,217269,9,91.68,91.26,19.96 -divrem,kernel,8,4,491798,9,40.66,39.86,19.96 -divrem,floor,8,4,346663,9,56.39,56.08,19.59 -divrem,gmp,8,4,498212,9,39.76,39.25,19.82 -divrem,gmpz,8,4,459444,9,42.99,41.99,19.72 -divrem,auto,32,16,39531,9,475.67,466.15,18.72 -divrem,kernel,32,16,51527,9,395.64,391.97,20.46 -divrem,floor,32,16,50380,9,412.92,398.48,20.90 -divrem,gmp,32,16,94697,9,207.61,205.43,19.67 -divrem,gmpz,32,16,94867,9,211.72,210.41,20.19 -divrem,auto,128,64,5378,9,3740.61,3713.62,20.09 -divrem,kernel,128,64,5546,9,3566.70,3487.37,19.78 -divrem,floor,128,64,5593,9,3593.91,3515.31,20.07 -divrem,gmp,128,64,11125,9,1781.53,1774.75,19.84 -divrem,gmpz,128,64,11296,9,1784.28,1768.55,20.15 -divrem,auto,512,256,668,9,30025.32,29712.39,20.08 -divrem,kernel,512,256,688,9,29469.48,29085.09,20.25 -divrem,floor,512,256,678,9,29397.86,29188.42,19.97 -divrem,gmp,512,256,1223,9,16399.36,16256.13,20.04 -divrem,gmpz,512,256,1224,9,16362.75,16262.02,20.06 -divrem,auto,2000,1000,86,9,233752.42,231080.43,20.06 -divrem,kernel,2000,1000,87,9,231917.15,230813.22,20.17 -divrem,floor,2000,1000,86,9,231785.37,230904.56,19.97 -divrem,gmp,2000,1000,146,9,136696.06,135702.05,19.99 -divrem,gmpz,2000,1000,148,9,135632.03,134266.89,20.08 -divrem,auto,4000,2000,29,9,687495.69,683086.21,20.03 -divrem,kernel,4000,2000,29,9,690405.17,679752.86,20.21 -divrem,floor,4000,2000,29,9,694445.41,683629.31,20.14 -divrem,gmp,4000,2000,57,9,348062.86,345325.30,19.83 -divrem,gmpz,4000,2000,58,9,350732.76,343687.50,20.31 -divrem,auto,2000,100,208,9,95326.32,94538.06,19.81 -divrem,kernel,2000,100,214,9,93777.45,93592.10,20.10 -divrem,floor,2000,100,208,9,95404.85,94263.22,19.80 -divrem,gmp,2000,100,286,9,69377.33,69170.60,19.92 -divrem,gmpz,2000,100,292,9,69548.52,69254.14,20.30 -divrem,auto,65536,1,82,9,243383.63,236972.05,19.92 -divrem,kernel,65536,1,87,9,227066.57,223254.31,19.76 -divrem,floor,65536,1,90,9,225231.48,223963.43,20.27 -divrem,gmp,65536,1,119,9,170168.07,166683.82,20.26 -divrem,gmpz,65536,1,118,9,169896.54,167494.36,20.03 -tochars,auto,1,10,3328321,9,5.98,5.97,19.90 -tochars,kernel,1,10,586851,9,33.57,32.94,19.67 -tochars,gmp,1,10,1199612,9,16.81,16.37,20.07 -tochars,gmpz,1,10,776692,9,25.61,25.51,19.93 -tochars,auto,4,10,256922,9,77.20,77.02,19.87 -tochars,kernel,4,10,203618,9,98.50,96.02,20.03 -tochars,gmp,4,10,279062,9,72.83,72.11,20.42 -tochars,gmpz,4,10,201816,9,103.59,95.45,20.43 -tochars,auto,16,10,24185,9,816.24,801.96,19.82 -tochars,kernel,16,10,28207,9,731.75,725.64,20.80 -tochars,gmp,16,10,39367,9,506.30,499.69,19.92 -tochars,gmpz,16,10,33768,9,597.30,589.19,20.16 -tochars,auto,64,10,4270,9,4659.40,4536.54,19.81 -tochars,kernel,64,10,4425,9,4444.76,4325.89,19.61 -tochars,gmp,64,10,7067,9,2836.91,2772.62,20.04 -tochars,gmpz,64,10,6349,9,3125.73,3047.75,19.77 -tochars,auto,256,10,581,9,33404.33,32244.62,19.36 -tochars,kernel,256,10,597,9,32948.42,32416.60,19.69 -tochars,gmp,256,10,1055,9,18933.93,18625.28,19.94 -tochars,gmpz,256,10,985,9,20233.92,19891.50,19.86 -tochars,auto,2000,10,30,9,675531.97,653884.70,20.20 -tochars,kernel,2000,10,30,9,667859.70,664655.53,20.06 -tochars,gmp,2000,10,50,9,401745.84,398949.16,20.11 -tochars,gmpz,2000,10,50,9,414769.16,414035.00,20.84 -tochars,auto,16,16,229937,9,88.11,85.33,20.30 -tochars,gmp,16,16,244871,9,79.74,78.58,19.60 -tochars,gmpz,16,16,126044,9,158.75,157.38,19.99 -tochars,auto,2000,16,2016,9,9940.68,9487.81,20.09 -tochars,gmp,2000,16,2113,9,9356.05,8889.10,19.43 -tochars,gmpz,2000,16,1162,9,16742.58,16666.42,19.56 -fromchars,auto,4,10,211749,9,90.58,89.79,19.19 -fromchars,kernel,4,10,622379,9,32.18,31.14,20.15 -fromchars,gmp,4,10,630158,9,31.60,31.22,19.89 -fromchars,gmpz,4,10,259530,9,76.76,75.80,19.88 -fromchars,auto,16,10,50993,9,399.11,390.02,20.37 -fromchars,kernel,16,10,102570,9,192.72,190.57,19.87 -fromchars,gmp,16,10,140923,9,144.64,143.15,20.59 -fromchars,gmpz,16,10,62850,9,319.37,315.99,20.21 -fromchars,auto,64,10,9014,9,2195.91,2179.56,19.83 -fromchars,kernel,64,10,10694,9,1843.92,1786.13,19.64 -fromchars,gmp,64,10,20896,9,955.51,940.74,19.96 -fromchars,gmpz,64,10,12522,9,1595.07,1592.00,19.99 -fromchars,auto,256,10,1448,9,13796.70,13773.83,19.98 -fromchars,kernel,256,10,1731,9,11521.66,11444.61,19.94 -fromchars,gmp,256,10,2542,9,7874.57,7825.37,20.02 -fromchars,gmpz,256,10,1867,9,10752.75,10633.01,20.07 -fromchars,auto,2000,10,67,9,299432.21,298764.30,20.07 -fromchars,kernel,2000,10,71,9,281651.99,280278.17,19.99 -fromchars,gmp,2000,10,110,9,182790.91,181026.89,20.08 -fromchars,gmpz,2000,10,100,9,201920.84,201442.92,20.21 diff --git a/tests/beman/big_int/perf/item1/macr3_base64_seed1b.csv b/tests/beman/big_int/perf/item1/macr3_base64_seed1b.csv deleted file mode 100644 index fe58d038..00000000 --- a/tests/beman/big_int/perf/item1/macr3_base64_seed1b.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T17:56:44Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2873029,9,6.95,6.90,19.97 -add,inplace,1,1,3095420,9,3.11,3.10,19.40 -add,kernel,1,1,17493649,9,1.14,1.14,19.99 -add,floor,1,1,2096836,9,9.44,9.19,19.70 -add,gmp,1,1,13427722,9,1.49,1.48,20.00 -add,gmpz,1,1,6533750,9,3.06,2.98,20.79 -add,auto,2,2,1395072,9,14.74,14.38,20.56 -add,inplace,2,2,2659702,9,3.76,3.75,20.09 -add,kernel,2,2,14367227,9,1.39,1.39,20.06 -add,floor,2,2,2065155,9,9.67,9.45,19.91 -add,gmp,2,2,9861361,9,1.99,1.98,19.68 -add,gmpz,2,2,6544797,9,3.07,3.02,23.97 -add,auto,4,4,1296557,9,15.42,15.31,20.18 -add,inplace,4,4,2591172,9,3.74,3.62,19.35 -add,kernel,4,4,10303656,9,1.95,1.94,20.30 -add,floor,4,4,1869375,9,10.69,10.59,20.43 -add,gmp,4,4,11189426,9,1.76,1.74,19.74 -add,gmpz,4,4,5459002,9,4.30,3.76,23.06 -add,auto,8,8,1238058,9,15.97,15.67,19.79 -add,inplace,8,8,1913081,9,5.07,5.04,19.62 -add,kernel,8,8,5459063,9,3.56,3.51,19.44 -add,floor,8,8,1635649,9,12.01,11.73,19.68 -add,gmp,8,8,8842262,9,2.26,2.25,20.00 -add,gmpz,8,8,3709256,9,5.33,5.20,19.77 -add,auto,16,16,1227813,9,16.30,16.08,20.04 -add,inplace,16,16,1026046,9,9.80,9.73,20.22 -add,kernel,16,16,2600155,9,7.59,7.55,19.82 -add,floor,16,16,1376480,9,14.26,13.94,19.70 -add,gmp,16,16,6071969,9,3.30,3.24,19.95 -add,gmpz,16,16,4966188,9,4.55,4.50,22.70 -add,auto,64,64,365773,9,54.74,54.39,20.02 -add,inplace,64,64,190370,9,52.40,50.56,19.79 -add,kernel,64,64,412233,9,48.40,47.62,19.98 -add,floor,64,64,322464,9,64.74,59.72,20.78 -add,gmp,64,64,1786329,9,11.23,11.20,20.19 -add,gmpz,64,64,1509032,9,13.12,13.05,19.80 -add,auto,256,256,135875,9,149.39,147.42,20.67 -add,inplace,256,256,41056,9,241.98,232.79,19.79 -add,kernel,256,256,83772,9,232.00,226.55,19.49 -add,floor,256,256,81766,9,250.55,243.95,20.49 -add,gmp,256,256,348404,9,56.97,55.98,19.81 -add,gmpz,256,256,343075,9,57.91,57.10,19.86 -add,auto,1024,1024,34749,9,559.88,548.07,19.67 -add,inplace,1024,1024,10022,9,991.54,982.00,19.88 -add,kernel,1024,1024,21196,9,968.36,956.58,20.47 -add,floor,1024,1024,20621,9,986.76,955.01,20.29 -add,gmp,1024,1024,79135,9,252.85,249.15,20.01 -add,gmpz,1024,1024,78664,9,255.84,254.11,20.12 -add,auto,2000,2000,18500,9,1096.38,1054.84,20.27 -add,inplace,2000,2000,5140,9,1964.56,1902.44,20.08 -add,kernel,2000,2000,10032,9,1930.66,1875.98,19.36 -add,floor,2000,2000,10214,9,1958.63,1931.33,20.00 -add,gmp,2000,2000,39043,9,507.54,499.54,20.11 -add,gmpz,2000,2000,39736,9,500.17,483.85,19.71 -add,auto,1024,1,117073,9,190.22,170.17,22.34 -add,inplace,1024,1,10089,9,977.95,955.36,19.78 -add,kernel,1024,1,26810,9,737.08,715.91,19.73 -add,floor,1024,1,26197,9,782.88,742.52,20.66 -add,gmp,1024,1,73028,9,268.52,262.01,19.66 -add,gmpz,1024,1,76729,9,266.99,261.28,20.42 -sub,auto,1,1,2584706,9,7.81,7.66,20.16 -sub,inplace,1,1,3298591,9,3.34,3.02,19.46 -sub,kernel,1,1,19246062,9,1.05,1.03,20.08 -sub,floor,1,1,11479551,9,1.74,1.74,19.99 -sub,gmp,1,1,13404145,9,1.49,1.49,20.02 -sub,gmpz,1,1,7289898,9,2.74,2.73,19.99 -sub,auto,2,2,1319647,9,14.95,14.54,19.78 -sub,inplace,2,2,3049012,9,3.25,3.24,20.38 -sub,kernel,2,2,14119612,9,1.40,1.39,19.80 -sub,floor,2,2,2118027,9,9.48,9.44,20.18 -sub,gmp,2,2,10022229,9,1.99,1.95,19.89 -sub,gmpz,2,2,5957496,9,3.24,3.22,19.30 -sub,auto,4,4,1234437,9,15.47,15.31,19.36 -sub,inplace,4,4,2645036,9,3.80,3.75,20.56 -sub,kernel,4,4,10114213,9,1.97,1.96,19.94 -sub,floor,4,4,2005072,9,10.10,9.68,20.26 -sub,gmp,4,4,11348024,9,1.74,1.74,19.80 -sub,gmpz,4,4,6693787,9,3.01,2.99,20.18 -sub,auto,8,8,1222541,9,16.29,15.75,20.13 -sub,inplace,8,8,1978110,9,5.01,4.94,19.82 -sub,kernel,8,8,5598289,9,3.52,3.51,19.86 -sub,floor,8,8,1744090,9,11.46,11.40,20.58 -sub,gmp,8,8,8922981,9,2.24,2.23,20.01 -sub,gmpz,8,8,5734029,9,3.50,3.48,20.07 -sub,auto,16,16,1091761,9,18.26,18.07,19.94 -sub,inplace,16,16,779544,9,12.43,11.96,19.35 -sub,kernel,16,16,2597950,9,7.73,7.69,20.24 -sub,floor,16,16,1291422,9,15.47,14.89,19.93 -sub,gmp,16,16,6073908,9,3.25,3.12,19.48 -sub,gmpz,16,16,4466781,9,4.47,4.25,19.58 -sub,auto,64,64,472427,9,41.70,41.13,20.02 -sub,inplace,64,64,197499,9,51.18,50.26,20.18 -sub,kernel,64,64,403966,9,49.99,48.75,20.27 -sub,floor,64,64,326313,9,61.54,59.99,19.93 -sub,gmp,64,64,1750531,9,11.53,11.41,20.35 -sub,gmpz,64,64,1432300,9,13.92,13.76,19.94 -sub,auto,256,256,147285,9,133.30,132.27,19.66 -sub,inplace,256,256,41522,9,239.94,233.89,19.79 -sub,kernel,256,256,81352,9,237.32,227.95,19.32 -sub,floor,256,256,80817,9,248.95,244.02,20.06 -sub,gmp,256,256,347939,9,57.34,55.87,19.88 -sub,gmpz,256,256,345015,9,58.15,57.92,20.14 -sub,auto,1024,1024,36018,9,565.90,532.67,20.27 -sub,inplace,1024,1024,10196,9,997.38,973.62,20.30 -sub,kernel,1024,1024,20605,9,981.62,969.62,20.31 -sub,floor,1024,1024,19501,9,1007.06,987.66,19.61 -sub,gmp,1024,1024,79259,9,253.71,247.45,20.04 -sub,gmpz,1024,1024,77430,9,255.38,252.16,19.80 -sub,auto,2000,2000,18372,9,1099.89,1048.41,20.25 -sub,inplace,2000,2000,5055,9,1956.19,1907.37,19.71 -sub,kernel,2000,2000,10501,9,1942.88,1896.55,20.36 -sub,floor,2000,2000,9751,9,1985.01,1938.19,19.35 -sub,gmp,2000,2000,40321,9,495.37,483.66,19.92 -sub,gmpz,2000,2000,39902,9,503.08,491.23,20.01 -sub,auto,1024,1,97639,9,212.16,204.77,21.01 -sub,inplace,1024,1,10087,9,987.70,964.59,19.85 -sub,kernel,1024,1,27133,9,741.28,725.02,20.05 -sub,floor,1024,1,26127,9,770.54,759.25,20.30 -sub,gmp,1024,1,75268,9,263.76,262.51,19.93 -sub,gmpz,1024,1,73649,9,267.08,263.23,19.73 -shl,auto,1,13,1195956,9,16.85,16.65,21.92 -shl,inplace,1,13,4315391,9,2.36,2.30,20.28 -shl,kernel,1,13,8838448,9,2.26,2.20,19.96 -shl,kernelip,1,13,8077115,9,1.75,1.27,26.99 -shl,floor,1,13,1817222,9,11.01,10.70,19.99 -shl,gmp,1,13,15948775,9,1.25,1.25,19.92 -shl,gmpz,1,13,10060830,9,1.99,1.99,20.07 -shl,auto,4,13,1071795,9,19.00,18.75,20.40 -shl,inplace,4,13,2799886,9,3.59,3.55,20.07 -shl,kernel,4,13,4856001,9,3.78,3.73,18.49 -shl,kernelip,4,13,2886405,9,3.38,3.33,19.50 -shl,floor,4,13,1541169,9,14.30,13.16,22.36 -shl,gmp,4,13,10045689,9,1.99,1.98,20.05 -shl,gmpz,4,13,7293781,9,2.78,2.74,20.34 -shl,auto,16,13,857804,9,21.60,21.18,18.87 -shl,inplace,16,13,1715614,9,5.82,5.80,20.02 -shl,kernel,16,13,4837150,9,4.13,4.11,19.97 -shl,kernelip,16,13,1344121,9,6.91,6.72,18.45 -shl,floor,16,13,1643242,9,13.86,12.30,23.39 -shl,gmp,16,13,5309966,9,3.51,3.49,18.62 -shl,gmpz,16,13,4119847,9,4.93,4.83,20.43 -shl,auto,256,13,225406,9,88.22,87.17,19.95 -shl,inplace,256,13,273417,9,37.11,36.35,20.27 -shl,kernel,256,13,403829,9,49.31,49.01,19.92 -shl,kernelip,256,13,204729,9,48.87,48.71,20.03 -shl,floor,256,13,345748,9,57.84,57.43,20.02 -shl,gmp,256,13,542183,9,37.11,36.98,20.12 -shl,gmpz,256,13,525400,9,37.95,37.87,19.95 -shl,auto,2000,13,31187,9,657.21,636.86,20.42 -shl,inplace,2000,13,35117,9,284.29,282.93,19.98 -shl,kernel,2000,13,51990,9,385.12,383.36,20.05 -shl,kernelip,2000,13,26576,9,378.15,376.74,20.21 -shl,floor,2000,13,49655,9,405.32,399.08,20.14 -shl,gmp,2000,13,43913,9,1981.02,1390.91,58.87 -shl,gmpz,2000,13,42040,9,1510.58,568.16,42.82 -shl,auto,2000,77,27146,9,814.13,784.18,21.19 -shl,inplace,2000,77,23427,9,426.83,424.17,20.02 -shl,kernel,2000,77,37721,9,535.55,531.56,20.23 -shl,kernelip,2000,77,19059,9,522.76,518.47,19.92 -shl,floor,2000,77,36958,9,540.95,538.13,20.01 -shl,gmp,2000,77,68645,9,293.34,288.81,20.20 -shl,gmpz,2000,77,66371,9,299.78,294.53,19.75 -shr,auto,1,13,2089514,9,9.09,8.80,19.01 -shr,inplace,1,13,4723509,9,2.24,2.12,20.86 -shr,kernel,1,13,8907353,9,2.25,2.24,20.07 -shr,floor,1,13,7995297,9,2.50,2.49,20.04 -shr,gmp,1,13,20000001,9,1.00,1.00,20.06 -shr,gmpz,1,13,9916456,9,2.00,1.99,19.82 -shr,auto,4,13,1065117,9,18.57,18.20,19.84 -shr,inplace,4,13,2987800,9,3.37,3.30,20.59 -shr,kernel,4,13,5536657,9,3.95,3.67,21.65 -shr,floor,4,13,1691402,9,12.46,11.95,21.44 -shr,gmp,4,13,11470194,9,1.75,1.74,20.05 -shr,gmpz,4,13,7310928,9,2.74,2.72,20.04 -shr,auto,16,13,961459,9,21.57,20.81,20.59 -shr,inplace,16,13,1969613,9,5.12,5.08,20.23 -shr,kernel,16,13,4776244,9,4.20,4.18,20.07 -shr,floor,16,13,1560422,9,13.26,13.10,20.73 -shr,gmp,16,13,6167689,9,3.25,3.24,20.31 -shr,gmpz,16,13,4687060,9,4.26,4.23,19.96 -shr,auto,256,13,225747,9,87.78,87.18,19.90 -shr,inplace,256,13,277851,9,36.00,35.93,20.01 -shr,kernel,256,13,300321,9,66.55,66.31,19.99 -shr,floor,256,13,288309,9,76.13,75.25,21.93 -shr,gmp,256,13,543334,9,36.86,36.69,20.03 -shr,gmpz,256,13,522297,9,38.19,38.06,19.95 -shr,auto,2000,13,29533,9,704.23,685.29,21.37 -shr,inplace,2000,13,35342,9,283.03,282.57,20.07 -shr,kernel,2000,13,38725,9,512.57,510.83,19.87 -shr,floor,2000,13,37891,9,526.45,523.13,20.06 -shr,gmp,2000,13,65269,9,328.13,301.09,21.07 -shr,gmpz,2000,13,68492,9,313.46,291.00,21.59 -shr,auto,2000,77,19830,9,1012.49,976.50,20.11 -shr,inplace,2000,77,23763,9,421.63,419.93,20.05 -shr,kernel,2000,77,38683,9,516.31,510.66,19.96 -shr,floor,2000,77,37683,9,538.23,529.12,20.23 -shr,gmp,2000,77,67725,9,293.37,291.36,19.84 -shr,gmpz,2000,77,67084,9,290.08,287.60,19.83 -mul,auto,1,1,1290839,9,15.58,15.42,20.00 -mul,gmp,1,1,5324425,9,3.75,3.73,19.96 -mul,gmpz,1,1,7294281,9,2.76,2.74,20.10 -mul,auto,2,2,701766,9,28.14,25.84,19.59 -mul,kernel,2,2,3175352,9,6.53,6.32,20.66 -mul,floor,2,2,1353415,9,14.68,14.62,19.93 -mul,gmp,2,2,4234392,9,4.74,4.72,20.08 -mul,gmpz,2,2,3003208,9,6.88,6.52,20.43 -mul,auto,3,3,653858,9,30.02,29.53,19.66 -mul,kernel,3,3,2433328,9,8.47,8.20,20.74 -mul,floor,3,3,1167020,9,16.90,16.58,19.65 -mul,gmp,3,3,3215119,9,6.24,6.10,20.03 -mul,gmpz,3,3,2221942,9,8.52,8.16,18.78 -mul,auto,4,4,676727,9,29.05,28.93,19.74 -mul,kernel,4,4,1777716,9,11.25,11.10,20.01 -mul,floor,4,4,1181798,9,16.79,16.48,19.96 -mul,gmp,4,4,2131232,9,9.54,8.55,19.90 -mul,gmpz,4,4,2053972,9,10.94,9.76,21.67 -mul,auto,6,6,613981,9,33.36,32.92,20.47 -mul,kernel,6,6,1042587,9,19.06,18.95,19.89 -mul,floor,6,6,843664,9,23.64,23.57,20.03 -mul,gmp,6,6,1385014,9,14.55,14.34,20.25 -mul,gmpz,6,6,1097292,9,18.69,17.95,20.56 -mul,auto,8,8,475712,9,41.82,41.54,19.90 -mul,kernel,8,8,869590,9,23.04,22.91,20.03 -mul,floor,8,8,652173,9,30.86,30.47,20.10 -mul,gmp,8,8,835882,9,22.67,22.28,19.44 -mul,gmpz,8,8,774373,9,26.09,25.05,20.28 -mul,auto,12,12,320947,9,61.88,61.58,19.96 -mul,kernel,12,12,485067,9,41.09,40.88,19.97 -mul,floor,12,12,405330,9,49.73,49.49,20.17 -mul,gmp,12,12,449521,9,44.74,44.36,20.13 -mul,gmpz,12,12,427844,9,46.80,46.60,20.03 -mul,auto,16,16,210655,9,95.22,94.80,20.07 -mul,kernel,16,16,284503,9,70.16,69.66,19.95 -mul,floor,16,16,252559,9,79.08,78.82,19.97 -mul,gmp,16,16,257105,9,77.87,77.48,20.06 -mul,gmpz,16,16,252386,9,79.08,78.19,19.95 -mul,auto,32,32,66247,9,298.62,297.07,19.79 -mul,kernel,32,32,77142,9,260.17,259.07,20.07 -mul,floor,32,32,70988,9,284.53,280.08,20.17 -mul,gmp,32,32,75581,9,268.27,264.56,20.26 -mul,gmpz,32,32,74131,9,271.61,268.29,20.12 -mul,auto,64,64,19288,9,1040.31,1034.34,20.06 -mul,kernel,64,64,20275,9,986.79,980.28,20.01 -mul,floor,64,64,19672,9,1015.13,1010.31,19.96 -mul,gmp,64,64,25775,9,776.12,774.29,20.02 -mul,gmpz,64,64,25652,9,779.64,776.63,20.03 -mul,auto,128,128,5430,9,3649.18,3617.36,19.85 -mul,kernel,128,128,5544,9,3578.88,3567.38,19.95 -mul,floor,128,128,5576,9,3591.19,3582.05,20.02 -mul,gmp,128,128,7540,9,2654.05,2642.95,20.02 -mul,gmpz,128,128,7511,9,2655.97,2640.79,20.09 -mul,auto,256,256,1675,9,11902.29,11852.36,19.95 -mul,kernel,256,256,1698,9,11773.43,11744.70,20.03 -mul,floor,256,256,1699,9,11810.92,11777.37,20.08 -mul,gmp,256,256,2512,9,7828.82,7804.36,19.67 -mul,gmpz,256,256,2541,9,7895.66,7832.17,20.04 -mul,auto,512,512,537,9,37504.89,37144.09,20.19 -mul,kernel,512,512,541,9,37173.21,36892.72,20.10 -mul,floor,512,512,538,9,37189.82,36996.44,20.03 -mul,gmp,512,512,935,9,21432.89,21338.73,20.06 -mul,gmpz,512,512,1054,9,19042.26,18962.96,20.06 -mul,auto,1000,1000,187,9,107301.70,107195.63,20.07 -mul,kernel,1000,1000,188,9,107119.02,106955.68,20.16 -mul,floor,1000,1000,187,9,107308.60,106859.85,20.08 -mul,gmp,1000,1000,363,9,55026.98,54886.25,20.00 -mul,gmpz,1000,1000,362,9,55321.13,54864.52,20.05 -mul,auto,2000,2000,66,9,303331.44,302096.59,20.07 -mul,kernel,2000,2000,67,9,302192.79,301660.45,20.27 -mul,floor,2000,2000,66,9,303844.70,302077.03,20.13 -mul,gmp,2000,2000,136,9,149215.99,148415.14,20.33 -mul,gmpz,2000,2000,134,9,149031.40,148146.14,20.02 -mul,auto,2000,100,425,9,46936.67,46837.55,19.97 -mul,kernel,2000,100,428,9,46853.48,46758.28,20.10 -mul,floor,2000,100,426,9,47028.66,46875.00,20.03 -mul,gmp,2000,100,568,9,35265.55,35059.42,20.01 -mul,gmpz,2000,100,574,9,34823.32,34596.25,19.99 -sqr,auto,4,4,626481,9,29.48,29.03,18.72 -sqr,kernel,4,4,1747816,9,11.37,11.11,19.92 -sqr,floor,4,4,1192663,9,16.49,16.42,19.69 -sqr,gmp,4,4,2861588,9,7.00,6.89,20.01 -sqr,gmpz,4,4,2042182,9,9.69,9.68,19.82 -sqr,auto,16,16,224902,9,89.04,88.59,20.01 -sqr,kernel,16,16,320929,9,62.10,61.98,19.95 -sqr,floor,16,16,287059,9,69.88,69.62,20.07 -sqr,gmp,16,16,320249,9,62.22,61.83,20.00 -sqr,gmpz,16,16,304548,9,66.05,65.78,20.13 -sqr,auto,64,64,31806,9,629.73,627.69,20.02 -sqr,kernel,64,64,34235,9,588.65,585.44,20.18 -sqr,floor,64,64,33091,9,602.61,599.74,19.95 -sqr,gmp,64,64,29658,9,676.86,668.74,20.03 -sqr,gmpz,64,64,29437,9,677.56,673.96,19.96 -sqr,auto,512,512,816,9,24695.47,24569.80,20.14 -sqr,kernel,512,512,806,9,24449.70,24359.60,19.85 -sqr,floor,512,512,817,9,24419.78,24328.54,19.94 -sqr,gmp,512,512,1086,9,18402.70,18253.41,19.98 -sqr,gmpz,512,512,1009,9,19784.40,19595.60,19.97 -sqr,auto,2000,2000,89,9,225007.96,223871.73,20.04 -sqr,kernel,2000,2000,89,9,224038.85,222593.64,19.93 -sqr,floor,2000,2000,89,9,225346.91,222547.75,20.03 -sqr,gmp,2000,2000,165,9,121532.83,120468.44,20.05 -sqr,gmpz,2000,2000,166,9,121660.39,120758.28,20.19 -divrem,auto,2,1,594069,9,31.94,31.36,19.20 -divrem,kernel,2,1,3551589,9,5.66,5.62,20.12 -divrem,floor,2,1,1492104,9,13.24,13.19,20.03 -divrem,gmp,2,1,3887842,9,5.16,5.08,20.03 -divrem,gmpz,2,1,2291294,9,8.78,8.73,20.10 -divrem,auto,8,4,221728,9,91.46,90.70,20.30 -divrem,kernel,8,4,486419,9,41.22,40.99,20.09 -divrem,floor,8,4,351780,9,57.61,56.66,20.21 -divrem,gmp,8,4,497702,9,40.54,39.72,20.16 -divrem,gmpz,8,4,455393,9,42.73,42.32,19.59 -divrem,auto,32,16,41001,9,489.35,477.19,20.09 -divrem,kernel,32,16,49246,9,406.66,393.54,19.92 -divrem,floor,32,16,48106,9,419.22,411.11,20.16 -divrem,gmp,32,16,95229,9,212.34,208.49,20.22 -divrem,gmpz,32,16,94475,9,214.42,211.46,20.32 -divrem,auto,128,64,5200,9,3792.33,3731.52,19.73 -divrem,kernel,128,64,5565,9,3702.10,3602.60,20.49 -divrem,floor,128,64,5429,9,3753.55,3591.69,20.28 -divrem,gmp,128,64,10901,9,1836.40,1785.36,20.16 -divrem,gmpz,128,64,10918,9,1817.58,1795.78,19.87 -divrem,auto,512,256,658,9,30422.24,30075.23,20.03 -divrem,kernel,512,256,659,9,30044.95,29606.28,19.75 -divrem,floor,512,256,671,9,29893.26,29553.28,20.05 -divrem,gmp,512,256,1221,9,16423.15,16325.59,20.04 -divrem,gmpz,512,256,1208,9,16788.49,16638.73,20.24 -divrem,auto,2000,1000,84,9,236071.43,233549.61,19.86 -divrem,kernel,2000,1000,86,9,237332.37,233824.13,20.43 -divrem,floor,2000,1000,85,9,232327.94,231764.71,19.81 -divrem,gmp,2000,1000,143,9,139978.15,136953.96,19.96 -divrem,gmpz,2000,1000,147,9,141732.71,135509.35,20.70 -divrem,auto,4000,2000,28,9,712983.64,707998.54,19.96 -divrem,kernel,4000,2000,29,9,704436.79,699310.34,20.41 -divrem,floor,4000,2000,29,9,700712.62,694396.55,20.39 -divrem,gmp,4000,2000,57,9,355009.51,351154.96,20.25 -divrem,gmpz,4000,2000,57,9,352782.89,347482.46,20.24 -divrem,auto,2000,100,208,9,95579.93,94851.37,20.08 -divrem,kernel,2000,100,214,9,94221.38,93939.84,20.21 -divrem,floor,2000,100,213,9,93800.08,93550.86,19.98 -divrem,gmp,2000,100,289,9,70563.44,69367.79,20.40 -divrem,gmpz,2000,100,283,9,70337.31,69441.55,19.85 -divrem,auto,65536,1,81,9,251074.07,240942.90,20.19 -divrem,kernel,65536,1,86,9,232797.48,226852.22,19.92 -divrem,floor,65536,1,87,9,233291.18,231102.48,20.30 -divrem,gmp,65536,1,118,9,172671.26,169545.91,20.36 -divrem,gmpz,65536,1,114,9,177210.16,174070.18,20.23 -tochars,auto,1,10,3262758,9,6.09,6.02,19.83 -tochars,kernel,1,10,586768,9,34.15,32.94,19.91 -tochars,gmp,1,10,1221168,9,16.58,16.39,20.29 -tochars,gmpz,1,10,780309,9,25.70,25.56,20.10 -tochars,auto,4,10,257086,9,77.32,77.12,19.99 -tochars,kernel,4,10,198466,9,102.53,99.66,20.24 -tochars,gmp,4,10,275345,9,72.75,71.42,20.02 -tochars,gmpz,4,10,214831,9,93.20,92.57,20.04 -tochars,auto,16,10,23909,9,837.56,813.06,19.99 -tochars,kernel,16,10,26935,9,748.41,727.44,20.27 -tochars,gmp,16,10,38786,9,513.48,501.43,19.85 -tochars,gmpz,16,10,33806,9,611.47,597.58,20.63 -tochars,auto,64,10,4192,9,4781.12,4647.61,19.99 -tochars,kernel,64,10,4327,9,4586.95,4476.22,19.73 -tochars,gmp,64,10,6907,9,2847.51,2806.24,19.65 -tochars,gmpz,64,10,6320,9,3172.03,3134.02,20.00 -tochars,auto,256,10,580,9,34042.53,33625.00,19.75 -tochars,kernel,256,10,593,9,33388.21,32396.85,19.75 -tochars,gmp,256,10,1056,9,19058.87,18968.20,20.15 -tochars,gmpz,256,10,992,9,20366.26,20163.14,20.21 -tochars,auto,2000,10,30,9,680925.00,676559.70,20.42 -tochars,kernel,2000,10,30,9,669841.67,664833.33,20.09 -tochars,gmp,2000,10,50,9,403310.00,401603.34,20.16 -tochars,gmpz,2000,10,48,9,417090.27,413092.88,20.01 -tochars,auto,16,16,227869,9,87.81,84.66,20.03 -tochars,gmp,16,16,251610,9,81.45,78.86,20.32 -tochars,gmpz,16,16,127548,9,161.00,159.09,20.57 -tochars,auto,2000,16,2099,9,9963.81,9437.01,20.70 -tochars,gmp,2000,16,2136,9,9069.43,8936.49,19.37 -tochars,gmpz,2000,16,1102,9,17354.51,17005.94,19.15 -fromchars,auto,4,10,218940,9,91.27,90.78,19.96 -fromchars,kernel,4,10,621708,9,32.63,31.83,20.24 -fromchars,gmp,4,10,637326,9,32.46,31.03,20.74 -fromchars,gmpz,4,10,255446,9,78.19,77.85,20.05 -fromchars,auto,16,10,50183,9,401.47,394.17,20.14 -fromchars,kernel,16,10,100852,9,196.73,189.39,19.72 -fromchars,gmp,16,10,140340,9,143.30,141.60,20.13 -fromchars,gmpz,16,10,62798,9,318.99,317.30,20.06 -fromchars,auto,64,10,9116,9,2203.67,2177.53,20.08 -fromchars,kernel,64,10,10898,9,1861.74,1856.07,20.31 -fromchars,gmp,64,10,20982,9,958.00,952.06,20.14 -fromchars,gmpz,64,10,12419,9,1606.48,1592.20,19.94 -fromchars,auto,256,10,1447,9,13841.57,13778.22,20.03 -fromchars,kernel,256,10,1723,9,11589.98,11535.84,19.96 -fromchars,gmp,256,10,2495,9,7990.15,7941.12,19.97 -fromchars,gmpz,256,10,1905,9,10527.17,10483.62,20.06 -fromchars,auto,2000,10,64,9,301929.69,300972.00,19.34 -fromchars,kernel,2000,10,70,9,285098.80,282769.64,19.96 -fromchars,gmp,2000,10,108,9,184726.07,183589.51,19.94 -fromchars,gmpz,2000,10,97,9,203613.84,203064.43,19.79 diff --git a/tests/beman/big_int/perf/item1/macr3_base64_seed2a.csv b/tests/beman/big_int/perf/item1/macr3_base64_seed2a.csv deleted file mode 100644 index e67dfc95..00000000 --- a/tests/beman/big_int/perf/item1/macr3_base64_seed2a.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T18:01:43Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2876971,9,6.93,6.70,19.69 -add,inplace,1,1,2972667,9,3.34,3.10,19.27 -add,kernel,1,1,17448663,9,1.14,1.14,19.98 -add,floor,1,1,2121244,9,9.43,9.17,19.84 -add,gmp,1,1,13336797,9,1.49,1.49,19.90 -add,gmpz,1,1,6141909,9,3.08,2.98,19.24 -add,auto,2,2,1299782,9,15.15,14.45,19.50 -add,inplace,2,2,2462490,9,3.82,3.75,18.85 -add,kernel,2,2,14313382,9,1.39,1.39,19.96 -add,floor,2,2,2020479,9,9.95,9.44,19.88 -add,gmp,2,2,10178075,9,1.99,1.98,20.23 -add,gmpz,2,2,6177609,9,6.48,3.11,34.26 -add,auto,4,4,1331464,9,15.22,14.97,20.28 -add,inplace,4,4,2703395,9,3.65,3.63,19.95 -add,kernel,4,4,10141749,9,1.97,1.95,19.93 -add,floor,4,4,1820990,9,10.76,10.39,19.59 -add,gmp,4,4,11523047,9,1.74,1.73,20.05 -add,gmpz,4,4,4919276,9,4.75,4.54,23.90 -add,auto,8,8,1278919,9,15.60,15.37,20.06 -add,inplace,8,8,2013569,9,5.11,5.04,20.61 -add,kernel,8,8,5724226,9,3.48,3.48,19.94 -add,floor,8,8,1685513,9,11.92,11.89,20.11 -add,gmp,8,8,8960731,9,2.23,2.23,20.05 -add,gmpz,8,8,4452260,9,5.13,4.40,22.72 -add,auto,16,16,1229302,9,16.55,16.43,20.35 -add,inplace,16,16,1018309,9,9.79,9.55,19.86 -add,kernel,16,16,2649832,9,7.53,7.48,19.98 -add,floor,16,16,1459434,9,13.43,13.21,19.70 -add,gmp,16,16,6207784,9,2.99,2.93,18.92 -add,gmpz,16,16,4395450,9,4.52,4.37,19.83 -add,auto,64,64,365339,9,54.58,54.36,19.99 -add,inplace,64,64,194716,9,51.66,50.83,20.10 -add,kernel,64,64,406911,9,49.29,48.04,19.97 -add,floor,64,64,330588,9,60.54,60.41,20.03 -add,gmp,64,64,1812944,9,11.14,11.08,20.19 -add,gmpz,64,64,1557156,9,12.96,12.91,20.18 -add,auto,256,256,133977,9,151.12,149.30,20.16 -add,inplace,256,256,41297,9,240.22,232.88,19.83 -add,kernel,256,256,84822,9,236.30,228.80,19.91 -add,floor,256,256,81387,9,245.68,239.55,20.01 -add,gmp,256,256,351090,9,56.97,56.13,19.96 -add,gmpz,256,256,345140,9,57.97,57.33,20.03 -add,auto,1024,1024,36069,9,570.98,545.13,20.50 -add,inplace,1024,1024,10170,9,987.81,961.91,20.06 -add,kernel,1024,1024,20144,9,978.95,968.77,19.71 -add,floor,1024,1024,20429,9,990.62,971.75,20.19 -add,gmp,1024,1024,79401,9,251.78,249.80,19.97 -add,gmpz,1024,1024,78344,9,253.62,248.16,19.80 -add,auto,2000,2000,19335,9,1128.82,1050.17,21.53 -add,inplace,2000,2000,5167,9,1945.00,1941.44,20.21 -add,kernel,2000,2000,10302,9,1929.29,1885.16,19.80 -add,floor,2000,2000,10289,9,1940.39,1885.59,19.96 -add,gmp,2000,2000,40400,9,496.30,487.14,20.08 -add,gmpz,2000,2000,40294,9,497.41,487.28,20.01 -add,auto,1024,1,113888,9,173.04,167.31,20.28 -add,inplace,1024,1,10192,9,982.82,971.56,20.03 -add,kernel,1024,1,27719,9,734.74,714.45,20.33 -add,floor,1024,1,26785,9,756.54,740.03,20.25 -add,gmp,1024,1,75764,9,263.63,261.64,20.00 -add,gmpz,1024,1,74841,9,267.82,260.91,19.96 -sub,auto,1,1,2603676,9,7.65,7.45,19.85 -sub,inplace,1,1,2935653,9,3.45,3.22,19.73 -sub,kernel,1,1,19485640,9,1.03,1.03,20.07 -sub,floor,1,1,11514456,9,1.74,1.74,20.11 -sub,gmp,1,1,13419442,9,1.49,1.48,20.01 -sub,gmpz,1,1,7307150,9,2.74,2.74,20.08 -sub,auto,2,2,1340759,9,15.06,14.92,20.32 -sub,inplace,2,2,2998917,9,3.27,3.26,19.81 -sub,kernel,2,2,14415814,9,1.39,1.39,20.05 -sub,floor,2,2,2126977,9,9.49,9.36,24.08 -sub,gmp,2,2,10090958,9,1.99,1.97,20.04 -sub,gmpz,2,2,6707924,9,3.23,3.02,21.55 -sub,auto,4,4,1241507,9,17.04,16.01,21.35 -sub,inplace,4,4,2430837,9,4.00,3.97,19.82 -sub,kernel,4,4,10267349,9,1.94,1.94,20.00 -sub,floor,4,4,2014060,9,10.41,9.91,20.66 -sub,gmp,4,4,11522350,9,1.74,1.73,20.01 -sub,gmpz,4,4,6691239,9,2.98,2.98,19.95 -sub,auto,8,8,1251749,9,16.13,15.91,20.16 -sub,inplace,8,8,1974935,9,4.89,4.86,19.50 -sub,kernel,8,8,5713961,9,3.50,3.49,20.01 -sub,floor,8,8,1736330,9,11.42,11.17,19.80 -sub,gmp,8,8,3464470,9,5.74,5.61,19.81 -sub,gmpz,8,8,5690855,9,3.48,3.47,19.78 -sub,auto,16,16,1102620,9,18.50,18.01,20.25 -sub,inplace,16,16,1060635,9,9.38,9.21,19.93 -sub,kernel,16,16,2591142,9,7.70,7.64,19.93 -sub,floor,16,16,1309032,9,14.96,14.89,19.80 -sub,gmp,16,16,6147361,9,3.25,3.23,19.97 -sub,gmpz,16,16,4626531,9,4.23,4.22,19.75 -sub,auto,64,64,488147,9,40.81,40.74,19.94 -sub,inplace,64,64,195499,9,51.15,51.10,20.00 -sub,kernel,64,64,403174,9,49.64,49.52,20.01 -sub,floor,64,64,338430,9,59.21,58.45,20.05 -sub,gmp,64,64,1745561,9,11.41,11.31,19.96 -sub,gmpz,64,64,1451986,9,13.87,13.70,20.10 -sub,auto,256,256,151423,9,132.35,131.00,20.04 -sub,inplace,256,256,41570,9,239.77,235.94,19.92 -sub,kernel,256,256,84071,9,236.46,229.24,19.80 -sub,floor,256,256,82558,9,243.50,237.57,20.00 -sub,gmp,256,256,350076,9,57.63,56.81,20.12 -sub,gmpz,256,256,343017,9,58.05,57.26,19.91 -sub,auto,1024,1024,36146,9,537.40,524.20,19.51 -sub,inplace,1024,1024,10041,9,994.79,981.78,19.95 -sub,kernel,1024,1024,20537,9,977.84,947.51,19.98 -sub,floor,1024,1024,20579,9,979.83,968.32,20.16 -sub,gmp,1024,1024,79260,9,251.70,250.67,19.95 -sub,gmpz,1024,1024,77372,9,253.71,252.81,19.63 -sub,auto,2000,2000,19239,9,1131.20,1037.65,20.46 -sub,inplace,2000,2000,5162,9,1947.92,1898.94,20.05 -sub,kernel,2000,2000,10328,9,1922.76,1873.92,19.98 -sub,floor,2000,2000,10432,9,1934.23,1913.37,20.14 -sub,gmp,2000,2000,40539,9,495.36,486.80,20.06 -sub,gmpz,2000,2000,40655,9,497.11,494.14,20.22 -sub,auto,1024,1,118495,9,167.98,165.37,19.95 -sub,inplace,1024,1,10072,9,974.61,947.12,19.63 -sub,kernel,1024,1,27283,9,731.35,714.65,19.87 -sub,floor,1024,1,26653,9,751.07,734.76,19.96 -sub,gmp,1024,1,75263,9,261.48,255.57,19.63 -sub,gmpz,1024,1,75812,9,266.19,260.67,20.14 -shl,auto,1,13,1219250,9,18.00,16.61,19.78 -shl,inplace,1,13,4398763,9,2.30,2.30,20.35 -shl,kernel,1,13,8941120,9,2.24,2.22,19.98 -shl,kernelip,1,13,6476092,9,1.72,1.46,20.80 -shl,floor,1,13,1831248,9,10.93,10.90,20.10 -shl,gmp,1,13,16136418,9,1.24,1.24,20.39 -shl,gmpz,1,13,10095289,9,1.99,1.98,20.07 -shl,auto,4,13,1033779,9,18.91,18.62,19.56 -shl,inplace,4,13,2836297,9,3.53,3.51,20.06 -shl,kernel,4,13,5131778,9,3.73,3.72,19.34 -shl,kernelip,4,13,2911687,9,3.35,3.30,19.51 -shl,floor,4,13,1579189,9,12.70,12.63,20.11 -shl,gmp,4,13,10076449,9,1.99,1.97,20.02 -shl,gmpz,4,13,7325125,9,2.73,2.72,20.00 -shl,auto,16,13,948147,9,21.76,20.69,20.37 -shl,inplace,16,13,1732739,9,5.78,5.77,20.06 -shl,kernel,16,13,4872688,9,4.08,4.07,19.88 -shl,kernelip,16,13,1445049,9,6.80,6.72,19.63 -shl,floor,16,13,1636885,9,12.16,11.90,19.88 -shl,gmp,16,13,5369558,9,3.48,3.47,18.70 -shl,gmpz,16,13,3924612,9,5.16,5.12,20.20 -shl,auto,256,13,232925,9,85.47,85.22,19.90 -shl,inplace,256,13,271834,9,36.64,36.37,19.92 -shl,kernel,256,13,406226,9,49.23,48.96,19.99 -shl,kernelip,256,13,204242,9,48.74,48.35,19.89 -shl,floor,256,13,348311,9,57.53,57.36,20.04 -shl,gmp,256,13,540703,9,36.96,36.88,19.99 -shl,gmpz,256,13,528038,9,37.88,37.81,20.01 -shl,auto,2000,13,33585,9,633.92,602.72,20.90 -shl,inplace,2000,13,35515,9,285.24,281.80,20.24 -shl,kernel,2000,13,52021,9,384.27,381.54,19.98 -shl,kernelip,2000,13,26563,9,376.86,374.15,20.15 -shl,floor,2000,13,50121,9,399.93,398.62,20.19 -shl,gmp,2000,13,12483,9,2083.56,1895.40,22.80 -shl,gmpz,2000,13,15623,9,2148.33,1181.44,33.20 -shl,auto,2000,77,25851,9,822.91,779.31,21.10 -shl,inplace,2000,77,23540,9,425.58,420.59,19.99 -shl,kernel,2000,77,37874,9,528.68,522.28,19.99 -shl,kernelip,2000,77,19236,9,520.11,512.32,19.98 -shl,floor,2000,77,36984,9,541.40,537.95,20.04 -shl,gmp,2000,77,69466,9,290.46,287.25,20.36 -shl,gmpz,2000,77,66779,9,288.11,286.84,19.42 -shr,auto,1,13,2111534,9,9.18,9.13,19.56 -shr,inplace,1,13,4450957,9,2.35,2.28,20.89 -shr,kernel,1,13,8946170,9,2.23,2.22,19.94 -shr,floor,1,13,8084288,9,2.47,2.44,20.40 -shr,gmp,1,13,20000001,9,0.99,0.99,19.83 -shr,gmpz,1,13,10091967,9,1.98,1.98,20.01 -shr,auto,4,13,1107691,9,18.12,17.79,20.31 -shr,inplace,4,13,3111458,9,3.27,3.19,20.29 -shr,kernel,4,13,5377312,9,3.72,3.70,20.00 -shr,floor,4,13,1748826,9,11.91,11.88,20.88 -shr,gmp,4,13,11542932,9,1.73,1.72,20.03 -shr,gmpz,4,13,7320075,9,2.73,2.72,19.97 -shr,auto,16,13,941762,9,21.14,21.03,19.91 -shr,inplace,16,13,1984300,9,5.06,5.05,20.09 -shr,kernel,16,13,4788496,9,4.18,4.18,20.06 -shr,floor,16,13,1577529,9,12.91,12.89,20.42 -shr,gmp,16,13,6182757,9,3.23,3.22,19.96 -shr,gmpz,16,13,4738844,9,4.23,4.22,20.07 -shr,auto,256,13,223676,9,87.80,86.69,19.70 -shr,inplace,256,13,278595,9,35.79,35.74,19.96 -shr,kernel,256,13,300920,9,66.36,65.96,19.97 -shr,floor,256,13,287986,9,76.35,75.31,21.89 -shr,gmp,256,13,545512,9,36.72,36.62,20.04 -shr,gmpz,256,13,526985,9,38.07,37.99,20.07 -shr,auto,2000,13,29173,9,676.08,640.40,19.79 -shr,inplace,2000,13,35424,9,281.96,281.29,19.99 -shr,kernel,2000,13,39000,9,513.37,511.67,20.01 -shr,floor,2000,13,37875,9,524.68,516.02,19.89 -shr,gmp,2000,13,69104,9,296.12,294.69,20.97 -shr,gmpz,2000,13,70019,9,299.87,287.35,21.34 -shr,auto,2000,77,20534,9,1093.63,963.87,21.34 -shr,inplace,2000,77,23872,9,419.04,416.96,20.02 -shr,kernel,2000,77,38853,9,519.72,515.46,20.18 -shr,floor,2000,77,38003,9,535.51,527.53,20.32 -shr,gmp,2000,77,68804,9,291.29,290.68,20.15 -shr,gmpz,2000,77,68666,9,287.32,285.62,19.76 -mul,auto,1,1,1293205,9,15.34,15.18,19.86 -mul,gmp,1,1,5328530,9,3.75,3.73,20.08 -mul,gmpz,1,1,7306896,9,2.74,2.73,20.02 -mul,auto,2,2,746518,9,27.45,26.81,20.15 -mul,kernel,2,2,3030369,9,6.54,6.47,19.77 -mul,floor,2,2,1373959,9,14.75,14.44,20.40 -mul,gmp,2,2,4408479,9,4.51,4.47,20.22 -mul,gmpz,2,2,3168508,9,6.54,6.52,21.07 -mul,auto,3,3,654471,9,30.17,29.46,19.83 -mul,kernel,3,3,2438233,9,8.23,8.17,20.18 -mul,floor,3,3,1167958,9,16.88,16.48,19.84 -mul,gmp,3,3,3210655,9,6.22,6.21,20.00 -mul,gmpz,3,3,2375777,9,8.36,8.16,19.92 -mul,auto,4,4,654463,9,29.81,29.16,19.44 -mul,kernel,4,4,1791861,9,11.11,11.00,19.92 -mul,floor,4,4,1193401,9,17.18,16.76,20.43 -mul,gmp,4,4,2481362,9,9.17,8.07,20.00 -mul,gmpz,4,4,2054753,9,9.77,9.70,20.28 -mul,auto,6,6,608421,9,32.69,32.50,19.91 -mul,kernel,6,6,1036254,9,19.07,19.01,19.78 -mul,floor,6,6,851932,9,23.67,23.58,20.19 -mul,gmp,6,6,1380176,9,14.55,14.44,20.07 -mul,gmpz,6,6,1093967,9,18.81,17.99,20.41 -mul,auto,8,8,482289,9,42.79,41.43,20.66 -mul,kernel,8,8,237910,9,81.54,79.27,19.35 -mul,floor,8,8,229113,9,86.99,84.52,19.81 -mul,gmp,8,8,896287,9,22.32,22.01,20.11 -mul,gmpz,8,8,733418,9,26.63,25.27,19.48 -mul,auto,12,12,320168,9,61.44,61.34,19.73 -mul,kernel,12,12,478296,9,41.57,41.25,19.87 -mul,floor,12,12,398007,9,49.91,49.58,19.86 -mul,gmp,12,12,453243,9,44.61,44.11,20.16 -mul,gmpz,12,12,428382,9,46.35,46.26,19.89 -mul,auto,16,16,208905,9,94.39,93.57,19.90 -mul,kernel,16,16,286868,9,69.65,69.55,19.99 -mul,floor,16,16,249754,9,79.31,78.80,19.79 -mul,gmp,16,16,258131,9,77.40,77.31,19.99 -mul,gmpz,16,16,253072,9,79.21,78.96,20.07 -mul,auto,32,32,67288,9,297.35,296.31,20.00 -mul,kernel,32,32,77244,9,259.08,258.33,20.01 -mul,floor,32,32,72018,9,280.51,278.94,20.19 -mul,gmp,32,32,77431,9,258.42,257.73,20.04 -mul,gmpz,32,32,76788,9,260.05,259.37,19.97 -mul,auto,64,64,19390,9,1039.72,1029.67,20.14 -mul,kernel,64,64,20218,9,984.16,981.91,19.97 -mul,floor,64,64,19695,9,1012.24,1007.23,19.95 -mul,gmp,64,64,25882,9,775.35,773.27,20.09 -mul,gmpz,64,64,25789,9,776.96,774.50,20.05 -mul,auto,128,128,5540,9,3618.89,3606.24,20.05 -mul,kernel,128,128,5600,9,3566.93,3558.80,20.04 -mul,floor,128,128,5588,9,3578.54,3574.13,20.02 -mul,gmp,128,128,7555,9,2666.61,2653.86,20.19 -mul,gmpz,128,128,7555,9,2667.79,2640.22,20.10 -mul,auto,256,256,1687,9,11844.52,11819.08,20.02 -mul,kernel,256,256,1682,9,11746.11,11726.39,19.78 -mul,floor,256,256,1702,9,11762.24,11735.31,20.03 -mul,gmp,256,256,2556,9,7834.64,7806.83,20.02 -mul,gmpz,256,256,2557,9,7822.61,7792.91,20.00 -mul,auto,512,512,542,9,37228.32,37050.74,20.19 -mul,kernel,512,512,543,9,36874.31,36716.93,20.05 -mul,floor,512,512,542,9,36827.88,36643.37,19.99 -mul,gmp,512,512,1057,9,18987.86,18925.46,20.15 -mul,gmpz,512,512,1039,9,19100.14,18993.94,19.87 -mul,auto,1000,1000,187,9,107052.14,106682.49,20.01 -mul,kernel,1000,1000,188,9,106435.51,106164.01,20.03 -mul,floor,1000,1000,188,9,106753.77,106336.88,20.16 -mul,gmp,1000,1000,362,9,55903.89,55024.63,20.17 -mul,gmpz,1000,1000,366,9,55087.20,54993.05,20.16 -mul,auto,2000,2000,66,9,301945.71,299773.98,19.92 -mul,kernel,2000,2000,67,9,301176.61,298833.34,20.16 -mul,floor,2000,2000,67,9,301944.03,298981.34,20.23 -mul,gmp,2000,2000,135,9,148402.16,147500.93,20.07 -mul,gmpz,2000,2000,135,9,148244.44,147298.77,20.02 -mul,auto,2000,100,426,9,47335.88,46757.53,20.09 -mul,kernel,2000,100,430,9,46660.76,46623.55,20.11 -mul,floor,2000,100,430,9,46748.55,46670.06,20.25 -mul,gmp,2000,100,569,9,35289.10,35121.34,20.08 -mul,gmpz,2000,100,575,9,34774.64,34627.10,19.99 -sqr,auto,4,4,650973,9,29.23,29.04,19.28 -sqr,kernel,4,4,1710370,9,10.97,10.75,18.75 -sqr,floor,4,4,1236604,9,16.20,16.15,20.13 -sqr,gmp,4,4,2843881,9,6.96,6.93,21.52 -sqr,gmpz,4,4,2115482,9,9.48,9.42,20.71 -sqr,auto,16,16,225638,9,88.69,88.35,20.01 -sqr,kernel,16,16,323036,9,62.29,61.96,20.12 -sqr,floor,16,16,276568,9,71.23,69.51,19.63 -sqr,gmp,16,16,321019,9,63.71,62.26,20.73 -sqr,gmpz,16,16,302483,9,65.82,65.54,19.99 -sqr,auto,64,64,31872,9,625.99,623.58,19.95 -sqr,kernel,64,64,34403,9,583.93,583.22,20.11 -sqr,floor,64,64,33400,9,599.04,597.40,20.03 -sqr,gmp,64,64,29872,9,665.39,662.99,19.88 -sqr,gmpz,64,64,29537,9,673.25,657.81,19.76 -sqr,auto,512,512,818,9,24517.93,24486.96,20.08 -sqr,kernel,512,512,820,9,24347.10,24236.94,20.02 -sqr,floor,512,512,824,9,24373.89,24253.44,20.08 -sqr,gmp,512,512,1209,9,16463.02,16337.02,19.91 -sqr,gmpz,512,512,1018,9,19655.86,19305.17,19.96 -sqr,auto,2000,2000,90,9,223448.61,222178.24,20.12 -sqr,kernel,2000,2000,90,9,222570.83,221632.88,20.04 -sqr,floor,2000,2000,90,9,222577.78,221380.56,20.05 -sqr,gmp,2000,2000,166,9,120941.01,119163.15,20.04 -sqr,gmpz,2000,2000,166,9,120801.96,120357.93,20.07 -divrem,auto,2,1,661337,9,30.53,30.10,20.13 -divrem,kernel,2,1,3197657,9,6.27,6.20,20.01 -divrem,floor,2,1,1437775,9,14.27,13.81,20.66 -divrem,gmp,2,1,3714259,9,5.04,4.96,18.72 -divrem,gmpz,2,1,2262611,9,8.87,8.72,19.99 -divrem,auto,8,4,203249,9,99.24,98.75,20.21 -divrem,kernel,8,4,391581,9,51.48,51.12,20.24 -divrem,floor,8,4,308630,9,65.47,64.91,20.42 -divrem,gmp,8,4,471327,9,41.70,41.48,19.68 -divrem,gmpz,8,4,447429,9,44.24,43.83,19.79 -divrem,auto,32,16,41827,9,478.43,462.04,19.98 -divrem,kernel,32,16,50630,9,404.95,393.27,20.35 -divrem,floor,32,16,48880,9,409.09,397.64,19.87 -divrem,gmp,32,16,96494,9,208.00,202.85,20.14 -divrem,gmpz,32,16,95623,9,208.52,204.76,19.92 -divrem,auto,128,64,5347,9,3745.43,3650.27,19.89 -divrem,kernel,128,64,5802,9,3601.42,3528.19,20.86 -divrem,floor,128,64,5502,9,3654.77,3615.97,20.08 -divrem,gmp,128,64,11431,9,1763.65,1739.68,20.13 -divrem,gmpz,128,64,11376,9,1765.48,1743.84,20.05 -divrem,auto,512,256,728,9,27483.86,27367.33,20.07 -divrem,kernel,512,256,736,9,27228.88,26947.86,20.03 -divrem,floor,512,256,738,9,27269.03,26908.25,20.12 -divrem,gmp,512,256,1225,9,16611.09,16410.03,20.29 -divrem,gmpz,512,256,1211,9,16474.99,16410.20,19.98 -divrem,auto,2000,1000,86,9,233499.52,233174.42,20.09 -divrem,kernel,2000,1000,87,9,232318.01,230985.63,20.19 -divrem,floor,2000,1000,87,9,231975.09,230175.77,20.17 -divrem,gmp,2000,1000,147,9,136130.39,135842.97,20.05 -divrem,gmpz,2000,1000,149,9,134864.09,133321.87,20.08 -divrem,auto,4000,2000,29,9,698731.31,692591.97,20.24 -divrem,kernel,4000,2000,29,9,691498.59,687416.66,20.04 -divrem,floor,4000,2000,30,9,690666.67,687781.97,20.74 -divrem,gmp,4000,2000,59,9,345956.22,343276.12,20.42 -divrem,gmpz,4000,2000,59,9,345737.29,344445.61,20.39 -divrem,auto,2000,100,210,9,95852.58,95249.80,20.10 -divrem,kernel,2000,100,212,9,94075.67,93874.60,19.97 -divrem,floor,2000,100,211,9,94243.88,93936.22,19.88 -divrem,gmp,2000,100,291,9,68926.55,68685.71,20.05 -divrem,gmpz,2000,100,290,9,69041.96,68602.59,20.02 -divrem,auto,65536,1,82,9,247057.93,243272.35,20.18 -divrem,kernel,65536,1,89,9,227727.53,222979.40,20.21 -divrem,floor,65536,1,90,9,227794.44,224397.69,20.46 -divrem,gmp,65536,1,117,9,171520.66,169563.38,20.04 -divrem,gmpz,65536,1,118,9,171362.99,166466.10,20.26 -tochars,auto,1,10,3320727,9,5.99,5.97,19.97 -tochars,kernel,1,10,572128,9,34.56,33.96,19.73 -tochars,gmp,1,10,1228775,9,16.40,16.29,20.23 -tochars,gmpz,1,10,823542,9,24.26,24.03,19.96 -tochars,auto,4,10,219108,9,90.73,90.08,19.89 -tochars,kernel,4,10,195879,9,103.54,100.73,20.41 -tochars,gmp,4,10,256878,9,76.74,75.51,19.83 -tochars,gmpz,4,10,204298,9,97.57,95.83,19.90 -tochars,auto,16,10,23873,9,828.91,806.00,19.84 -tochars,kernel,16,10,27188,9,733.06,718.00,19.90 -tochars,gmp,16,10,39395,9,504.20,490.78,19.97 -tochars,gmpz,16,10,33149,9,598.75,593.27,19.83 -tochars,auto,64,10,4260,9,4710.94,4588.07,20.04 -tochars,kernel,64,10,4436,9,4454.82,4375.85,19.76 -tochars,gmp,64,10,7063,9,2836.85,2793.90,20.05 -tochars,gmpz,64,10,6274,9,3169.44,3045.41,19.78 -tochars,auto,256,10,589,9,33776.32,32957.49,19.84 -tochars,kernel,256,10,616,9,32416.26,31994.86,19.93 -tochars,gmp,256,10,1062,9,18976.62,18654.46,20.10 -tochars,gmpz,256,10,982,9,20441.57,20366.39,20.07 -tochars,auto,2000,10,30,9,683220.83,678143.07,20.48 -tochars,kernel,2000,10,30,9,668047.23,660083.33,19.99 -tochars,gmp,2000,10,50,9,402869.18,400425.84,20.13 -tochars,gmpz,2000,10,49,9,414655.61,414390.31,20.34 -tochars,auto,16,16,240199,9,83.37,82.12,20.00 -tochars,gmp,16,16,247171,9,78.83,77.31,19.64 -tochars,gmpz,16,16,123526,9,159.06,157.19,19.71 -tochars,auto,2000,16,2122,9,9931.65,9427.41,20.74 -tochars,gmp,2000,16,2320,9,8977.53,8921.98,21.12 -tochars,gmpz,2000,16,1185,9,16792.05,16612.66,19.98 -fromchars,auto,4,10,219124,9,91.18,90.34,20.08 -fromchars,kernel,4,10,609223,9,32.62,32.18,19.83 -fromchars,gmp,4,10,658217,9,30.89,30.58,20.39 -fromchars,gmpz,4,10,265295,9,74.58,74.44,19.80 -fromchars,auto,16,10,52829,9,380.16,374.92,20.05 -fromchars,kernel,16,10,103965,9,191.70,187.66,19.92 -fromchars,gmp,16,10,141613,9,140.79,140.40,19.97 -fromchars,gmpz,16,10,63492,9,317.20,311.50,20.07 -fromchars,auto,64,10,9128,9,2191.14,2149.74,19.95 -fromchars,kernel,64,10,10778,9,1857.59,1810.93,19.97 -fromchars,gmp,64,10,20798,9,955.32,936.99,19.90 -fromchars,gmpz,64,10,12412,9,1603.96,1577.63,19.88 -fromchars,auto,256,10,1450,9,13831.32,13724.68,20.08 -fromchars,kernel,256,10,1711,9,11540.69,11464.08,19.73 -fromchars,gmp,256,10,2515,9,8009.28,7909.51,20.10 -fromchars,gmpz,256,10,1859,9,10800.18,10564.42,20.00 -fromchars,auto,2000,10,67,9,300209.58,299618.79,20.16 -fromchars,kernel,2000,10,71,9,282541.66,281853.87,20.08 -fromchars,gmp,2000,10,110,9,183178.78,182851.14,20.16 -fromchars,gmpz,2000,10,99,9,203546.72,202929.72,20.20 diff --git a/tests/beman/big_int/perf/item1/macr3_base64_seed2b.csv b/tests/beman/big_int/perf/item1/macr3_base64_seed2b.csv deleted file mode 100644 index baf8a9ff..00000000 --- a/tests/beman/big_int/perf/item1/macr3_base64_seed2b.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T18:06:36Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2969696,9,6.78,6.76,20.15 -add,inplace,1,1,3345306,9,3.00,2.98,20.05 -add,kernel,1,1,17433897,9,1.15,1.14,20.05 -add,floor,1,1,2116374,9,9.48,9.44,20.22 -add,gmp,1,1,13394690,9,1.50,1.49,20.05 -add,gmpz,1,1,6466485,9,3.02,3.00,20.05 -add,auto,2,2,1348601,9,14.63,14.29,19.73 -add,inplace,2,2,2625248,9,3.79,3.76,19.96 -add,kernel,2,2,14330312,9,1.40,1.39,20.13 -add,floor,2,2,2003371,9,9.99,9.96,20.12 -add,gmp,2,2,11458573,9,1.99,1.75,19.76 -add,gmpz,2,2,4798919,9,6.83,4.52,29.92 -add,auto,4,4,1328532,9,15.29,15.08,20.54 -add,inplace,4,4,2718433,9,3.79,3.74,20.67 -add,kernel,4,4,10421132,9,1.97,1.91,20.53 -add,floor,4,4,1867159,9,15.49,10.74,19.58 -add,gmp,4,4,11419278,9,1.74,1.73,19.89 -add,gmpz,4,4,5210796,9,4.89,4.14,25.47 -add,auto,8,8,1232616,9,16.14,16.03,19.99 -add,inplace,8,8,1865671,9,5.20,4.93,19.22 -add,kernel,8,8,5744349,9,3.53,3.48,20.22 -add,floor,8,8,1672444,9,11.94,11.73,19.89 -add,gmp,8,8,8928251,9,2.24,2.23,19.98 -add,gmpz,8,8,5339073,9,5.27,4.38,25.29 -add,auto,16,16,1217528,9,16.35,16.12,19.85 -add,inplace,16,16,1024050,9,9.77,9.59,19.94 -add,kernel,16,16,2628138,9,7.58,7.55,19.93 -add,floor,16,16,1408123,9,16.70,13.82,23.26 -add,gmp,16,16,6164612,9,3.24,3.24,20.02 -add,gmpz,16,16,5022650,9,4.50,4.39,20.39 -add,auto,64,64,349885,9,54.88,54.50,19.33 -add,inplace,64,64,193529,9,51.53,50.59,19.93 -add,kernel,64,64,405968,9,49.43,48.01,20.01 -add,floor,64,64,330465,9,60.68,59.65,20.02 -add,gmp,64,64,1785881,9,11.18,11.13,19.98 -add,gmpz,64,64,1545337,9,13.00,12.82,20.05 -add,auto,256,256,134585,9,148.07,146.63,19.94 -add,inplace,256,256,41957,9,239.79,236.71,20.11 -add,kernel,256,256,84218,9,236.02,228.67,19.79 -add,floor,256,256,78715,9,250.15,241.31,19.70 -add,gmp,256,256,347284,9,57.76,57.31,20.06 -add,gmpz,256,256,343786,9,58.09,57.47,19.95 -add,auto,1024,1024,35445,9,568.86,553.32,20.15 -add,inplace,1024,1024,9982,9,996.41,969.96,20.05 -add,kernel,1024,1024,19899,9,988.21,978.62,19.91 -add,floor,1024,1024,20243,9,1001.58,983.27,20.19 -add,gmp,1024,1024,78993,9,252.09,250.07,19.93 -add,gmpz,1024,1024,78384,9,253.86,252.28,19.90 -add,auto,2000,2000,17049,9,1138.70,1071.33,19.17 -add,inplace,2000,2000,5004,9,1951.78,1868.09,19.46 -add,kernel,2000,2000,10352,9,1936.27,1889.75,19.95 -add,floor,2000,2000,10396,9,1948.47,1877.95,20.23 -add,gmp,2000,2000,40241,9,497.08,495.69,20.02 -add,gmpz,2000,2000,41016,9,500.35,493.83,20.47 -add,auto,1024,1,118269,9,172.29,168.81,21.00 -add,inplace,1024,1,10206,9,990.99,975.99,20.23 -add,kernel,1024,1,27823,9,749.64,730.75,20.76 -add,floor,1024,1,26115,9,760.40,734.98,19.73 -add,gmp,1024,1,75712,9,263.73,260.19,19.96 -add,gmpz,1024,1,74632,9,266.78,262.36,19.89 -sub,auto,1,1,2594654,9,7.49,7.31,19.50 -sub,inplace,1,1,2878750,9,3.36,3.24,19.44 -sub,kernel,1,1,19439965,9,1.03,1.03,20.00 -sub,floor,1,1,11504644,9,1.74,1.73,20.04 -sub,gmp,1,1,13440357,9,1.50,1.49,20.09 -sub,gmpz,1,1,7215171,9,2.74,2.74,19.84 -sub,auto,2,2,1339412,9,14.94,14.83,20.20 -sub,inplace,2,2,2858876,9,3.27,3.25,18.68 -sub,kernel,2,2,13925111,9,1.43,1.39,19.81 -sub,floor,2,2,2066749,9,9.62,9.39,19.88 -sub,gmp,2,2,11466822,9,1.74,1.74,19.98 -sub,gmpz,2,2,6689777,9,3.00,2.98,20.75 -sub,auto,4,4,1258387,9,15.92,15.64,19.97 -sub,inplace,4,4,2573655,9,3.73,3.72,19.39 -sub,kernel,4,4,10193503,9,1.97,1.93,20.27 -sub,floor,4,4,1976773,9,9.93,9.91,19.66 -sub,gmp,4,4,11521018,9,1.74,1.74,20.04 -sub,gmpz,4,4,6669979,9,2.99,2.97,19.92 -sub,auto,8,8,1269407,9,16.27,15.72,20.57 -sub,inplace,8,8,1949629,9,5.12,5.10,19.99 -sub,kernel,8,8,5697401,9,3.51,3.50,20.05 -sub,floor,8,8,1619776,9,11.89,11.45,19.16 -sub,gmp,8,8,8931741,9,2.24,2.24,20.07 -sub,gmpz,8,8,5747650,9,3.49,3.48,20.09 -sub,auto,16,16,1115419,9,18.03,17.90,20.19 -sub,inplace,16,16,1118577,9,13.26,8.93,20.89 -sub,kernel,16,16,2608001,9,7.69,7.64,20.04 -sub,floor,16,16,1307033,9,15.21,14.91,19.96 -sub,gmp,16,16,6157781,9,3.26,3.24,21.02 -sub,gmpz,16,16,4674083,9,4.25,4.25,20.10 -sub,auto,64,64,485006,9,41.17,41.06,19.97 -sub,inplace,64,64,200849,9,51.19,50.75,20.57 -sub,kernel,64,64,399724,9,50.00,49.44,20.04 -sub,floor,64,64,334553,9,59.59,57.87,19.86 -sub,gmp,64,64,1721001,9,11.50,11.44,19.89 -sub,gmpz,64,64,1437878,9,13.91,13.69,19.96 -sub,auto,256,256,150425,9,132.79,131.81,19.96 -sub,inplace,256,256,41284,9,241.17,234.41,19.84 -sub,kernel,256,256,86074,9,238.60,234.86,20.49 -sub,floor,256,256,80439,9,248.21,241.99,19.92 -sub,gmp,256,256,353512,9,57.34,57.10,20.28 -sub,gmpz,256,256,348887,9,58.17,57.84,20.31 -sub,auto,1024,1024,33873,9,572.52,550.67,19.35 -sub,inplace,1024,1024,9911,9,981.92,958.58,19.53 -sub,kernel,1024,1024,20349,9,979.12,956.98,19.87 -sub,floor,1024,1024,20070,9,993.10,968.14,19.82 -sub,gmp,1024,1024,78989,9,252.31,246.46,19.83 -sub,gmpz,1024,1024,78651,9,254.48,253.82,20.02 -sub,auto,2000,2000,19648,9,1139.46,1040.06,22.10 -sub,inplace,2000,2000,5140,9,2001.94,1946.39,20.60 -sub,kernel,2000,2000,10282,9,1936.84,1863.01,19.73 -sub,floor,2000,2000,10483,9,1909.64,1861.18,19.99 -sub,gmp,2000,2000,40204,9,495.96,489.72,19.89 -sub,gmpz,2000,2000,40496,9,498.11,491.28,20.22 -sub,auto,1024,1,113463,9,174.59,170.57,20.11 -sub,inplace,1024,1,10066,9,978.26,954.15,19.66 -sub,kernel,1024,1,26730,9,742.48,728.54,19.84 -sub,floor,1024,1,27169,9,761.67,749.86,20.68 -sub,gmp,1024,1,77563,9,264.32,254.61,20.35 -sub,gmpz,1024,1,74603,9,267.32,259.98,19.83 -shl,auto,1,13,1102532,9,16.99,16.87,19.19 -shl,inplace,1,13,4382198,9,2.31,2.30,20.42 -shl,kernel,1,13,8935357,9,2.25,2.23,20.12 -shl,kernelip,1,13,6337213,9,1.78,1.65,20.84 -shl,floor,1,13,1919530,9,10.95,10.46,20.04 -shl,gmp,1,13,16154656,9,1.24,1.24,20.15 -shl,gmpz,1,13,10062496,9,1.99,1.98,20.02 -shl,auto,4,13,1013073,9,19.95,19.82,20.25 -shl,inplace,4,13,2802780,9,3.57,3.55,20.12 -shl,kernel,4,13,5351230,9,3.75,3.72,20.04 -shl,kernelip,4,13,2882321,9,3.39,3.36,19.57 -shl,floor,4,13,1532324,9,13.20,12.95,20.27 -shl,gmp,4,13,10019325,9,1.99,1.98,19.98 -shl,gmpz,4,13,7038108,9,2.74,2.73,19.31 -shl,auto,16,13,959565,9,21.72,20.66,20.75 -shl,inplace,16,13,1723075,9,5.81,5.80,20.05 -shl,kernel,16,13,4874471,9,4.10,4.08,19.95 -shl,kernelip,16,13,1351906,9,6.85,6.81,18.50 -shl,floor,16,13,1649837,9,12.21,12.17,20.17 -shl,gmp,16,13,5343561,9,3.49,3.47,18.64 -shl,gmpz,16,13,4103333,9,4.81,4.80,19.76 -shl,auto,256,13,230691,9,86.31,86.17,19.94 -shl,inplace,256,13,271472,9,36.51,36.40,19.88 -shl,kernel,256,13,403992,9,49.41,49.19,19.96 -shl,kernelip,256,13,202727,9,48.90,48.51,19.81 -shl,floor,256,13,346046,9,57.75,56.86,19.93 -shl,gmp,256,13,534994,9,37.10,36.97,19.85 -shl,gmpz,256,13,523854,9,38.02,37.84,19.91 -shl,auto,2000,13,30519,9,668.02,608.88,20.21 -shl,inplace,2000,13,34583,9,284.34,283.14,19.86 -shl,kernel,2000,13,52380,9,384.43,383.04,20.14 -shl,kernelip,2000,13,26498,9,377.61,376.16,20.02 -shl,floor,2000,13,50045,9,399.84,397.31,20.00 -shl,gmp,2000,13,21830,9,2377.42,1757.49,29.01 -shl,gmpz,2000,13,50030,9,2287.49,1080.56,39.90 -shl,auto,2000,77,24861,9,789.72,745.47,19.55 -shl,inplace,2000,77,23506,9,426.89,423.57,20.07 -shl,kernel,2000,77,37888,9,529.18,525.11,20.03 -shl,kernelip,2000,77,19226,9,519.54,516.36,19.99 -shl,floor,2000,77,36999,9,538.45,536.34,19.94 -shl,gmp,2000,77,66881,9,290.25,287.45,19.44 -shl,gmpz,2000,77,65439,9,292.66,288.04,19.31 -shr,auto,1,13,2202964,9,9.01,8.92,20.09 -shr,inplace,1,13,4234247,9,2.36,2.29,19.96 -shr,kernel,1,13,8944048,9,2.24,2.23,20.05 -shr,floor,1,13,7975231,9,2.49,2.45,20.29 -shr,gmp,1,13,20000001,9,0.99,0.99,19.93 -shr,gmpz,1,13,10028522,9,1.99,1.98,19.96 -shr,auto,4,13,1094612,9,18.15,17.53,19.77 -shr,inplace,4,13,3095906,9,3.22,3.21,19.99 -shr,kernel,4,13,5353790,9,3.73,3.73,20.32 -shr,floor,4,13,1678330,9,12.13,11.96,20.83 -shr,gmp,4,13,11474753,9,1.74,1.74,20.09 -shr,gmpz,4,13,7287231,9,2.76,2.73,20.12 -shr,auto,16,13,949877,9,21.13,20.90,20.06 -shr,inplace,16,13,1974765,9,5.09,5.06,20.16 -shr,kernel,16,13,4765664,9,4.20,4.19,20.02 -shr,floor,16,13,1490854,9,13.06,12.95,19.44 -shr,gmp,16,13,6157727,9,3.24,3.22,19.96 -shr,gmpz,16,13,4719822,9,4.25,4.24,20.07 -shr,auto,256,13,227889,9,88.38,87.17,20.20 -shr,inplace,256,13,278166,9,35.99,35.82,20.03 -shr,kernel,256,13,298856,9,67.18,66.49,20.04 -shr,floor,256,13,289308,9,75.78,75.52,21.91 -shr,gmp,256,13,540524,9,36.82,36.72,19.90 -shr,gmpz,256,13,521667,9,38.16,38.10,19.94 -shr,auto,2000,13,30707,9,701.40,651.04,20.37 -shr,inplace,2000,13,35335,9,283.46,282.77,20.03 -shr,kernel,2000,13,38710,9,523.70,510.71,20.22 -shr,floor,2000,13,37082,9,540.96,538.04,20.06 -shr,gmp,2000,13,69259,9,304.17,291.12,21.18 -shr,gmpz,2000,13,68454,9,291.90,286.85,20.17 -shr,auto,2000,77,18318,9,1052.43,997.53,19.41 -shr,inplace,2000,77,22816,9,421.77,419.70,19.23 -shr,kernel,2000,77,38467,9,516.89,514.26,19.88 -shr,floor,2000,77,38055,9,533.27,527.49,20.27 -shr,gmp,2000,77,68237,9,291.63,290.91,19.95 -shr,gmpz,2000,77,69529,9,290.27,286.28,20.29 -mul,auto,1,1,1201780,9,16.09,15.46,19.47 -mul,gmp,1,1,5346680,9,3.73,3.72,19.98 -mul,gmpz,1,1,7316426,9,2.74,2.73,20.07 -mul,auto,2,2,657983,9,28.60,27.36,18.98 -mul,kernel,2,2,3030811,9,6.59,6.50,19.96 -mul,floor,2,2,1382282,9,15.14,14.69,20.75 -mul,gmp,2,2,4466649,9,4.62,4.48,20.59 -mul,gmpz,2,2,2989028,9,6.57,6.51,19.89 -mul,auto,3,3,691265,9,29.45,29.25,20.59 -mul,kernel,3,3,2364675,9,8.45,8.42,20.00 -mul,floor,3,3,1195776,9,16.79,16.65,20.29 -mul,gmp,3,3,2987613,9,6.16,6.11,18.46 -mul,gmpz,3,3,2222120,9,8.49,8.11,18.74 -mul,auto,4,4,666444,9,29.84,28.57,19.88 -mul,kernel,4,4,1790440,9,11.20,11.13,20.16 -mul,floor,4,4,1180148,9,17.05,16.89,20.11 -mul,gmp,4,4,2244677,9,9.06,9.00,20.45 -mul,gmpz,4,4,2041939,9,9.79,9.75,20.00 -mul,auto,6,6,611148,9,33.08,32.73,20.20 -mul,kernel,6,6,1045232,9,19.13,18.96,20.00 -mul,floor,6,6,790551,9,24.07,23.72,19.22 -mul,gmp,6,6,1369225,9,14.57,14.50,19.93 -mul,gmpz,6,6,1057712,9,18.80,18.55,19.97 -mul,auto,8,8,488668,9,40.92,40.53,19.98 -mul,kernel,8,8,864754,9,23.30,23.06,20.10 -mul,floor,8,8,648445,9,30.65,30.50,19.87 -mul,gmp,8,8,894498,9,24.32,22.33,21.56 -mul,gmpz,8,8,747312,9,27.04,25.12,19.97 -mul,auto,12,12,322735,9,61.67,61.57,19.94 -mul,kernel,12,12,481581,9,41.52,41.39,20.00 -mul,floor,12,12,401377,9,49.76,49.59,19.98 -mul,gmp,12,12,451379,9,44.73,44.31,20.28 -mul,gmpz,12,12,431535,9,46.64,46.49,20.16 -mul,auto,16,16,209341,9,95.18,94.31,19.91 -mul,kernel,16,16,285874,9,70.05,69.88,20.13 -mul,floor,16,16,252140,9,79.00,78.70,19.94 -mul,gmp,16,16,258780,9,77.65,77.01,20.09 -mul,gmpz,16,16,254065,9,79.40,78.52,20.16 -mul,auto,32,32,65458,9,298.97,296.72,19.66 -mul,kernel,32,32,76506,9,259.71,258.96,19.90 -mul,floor,32,32,71495,9,279.88,279.39,20.02 -mul,gmp,32,32,77432,9,255.47,254.58,19.87 -mul,gmpz,32,32,76497,9,260.74,258.51,19.94 -mul,auto,64,64,19260,9,1038.93,1032.66,20.00 -mul,kernel,64,64,20187,9,986.86,984.21,19.93 -mul,floor,64,64,19453,9,1019.71,1018.06,19.88 -mul,gmp,64,64,25707,9,777.83,773.88,20.04 -mul,gmpz,64,64,25731,9,780.13,776.98,20.09 -mul,auto,128,128,5484,9,3628.43,3613.69,19.93 -mul,kernel,128,128,5619,9,3585.39,3565.96,20.15 -mul,floor,128,128,5536,9,3610.13,3591.88,20.02 -mul,gmp,128,128,7380,9,2667.25,2653.68,19.69 -mul,gmpz,128,128,7440,9,2694.49,2650.90,20.07 -mul,auto,256,256,1681,9,11890.34,11822.23,19.98 -mul,kernel,256,256,1693,9,11770.11,11740.97,19.92 -mul,floor,256,256,1701,9,11776.01,11730.01,20.14 -mul,gmp,256,256,1917,9,10409.12,10363.09,20.04 -mul,gmpz,256,256,2538,9,7862.54,7832.18,19.96 -mul,auto,512,512,541,9,37296.13,37120.61,20.17 -mul,kernel,512,512,542,9,36999.23,36713.56,20.04 -mul,floor,512,512,538,9,37067.77,36909.00,19.99 -mul,gmp,512,512,934,9,21393.92,21281.23,19.98 -mul,gmpz,512,512,1047,9,19074.94,18964.18,20.00 -mul,auto,1000,1000,187,9,107198.75,106838.02,20.07 -mul,kernel,1000,1000,187,9,107220.59,106464.80,20.03 -mul,floor,1000,1000,187,9,107103.17,106670.45,20.03 -mul,gmp,1000,1000,361,9,55772.62,55424.63,20.17 -mul,gmpz,1000,1000,360,9,55365.74,55273.38,19.95 -mul,auto,2000,2000,66,9,303191.92,301200.12,20.02 -mul,kernel,2000,2000,66,9,302335.23,300953.91,19.96 -mul,floor,2000,2000,66,9,303201.38,301662.88,20.01 -mul,gmp,2000,2000,134,9,149185.01,148555.35,19.99 -mul,gmpz,2000,2000,135,9,149311.42,148336.11,20.15 -mul,auto,2000,100,427,9,47377.63,46991.80,20.34 -mul,kernel,2000,100,421,9,46956.75,46726.94,19.78 -mul,floor,2000,100,427,9,46935.01,46760.54,20.05 -mul,gmp,2000,100,571,9,35387.04,35197.97,20.24 -mul,gmpz,2000,100,575,9,35076.59,34990.72,20.21 -sqr,auto,4,4,623937,9,29.67,29.45,18.70 -sqr,kernel,4,4,1754195,9,11.31,11.22,19.98 -sqr,floor,4,4,1232150,9,16.34,16.22,20.10 -sqr,gmp,4,4,2873671,9,6.98,6.96,20.11 -sqr,gmpz,4,4,2062740,9,9.36,9.19,19.42 -sqr,auto,16,16,222906,9,89.23,88.67,19.91 -sqr,kernel,16,16,321364,9,62.23,62.10,20.01 -sqr,floor,16,16,276109,9,72.17,71.84,19.96 -sqr,gmp,16,16,323660,9,62.08,61.20,20.09 -sqr,gmpz,16,16,299157,9,65.52,65.22,19.74 -sqr,auto,64,64,31235,9,626.76,624.30,19.61 -sqr,kernel,64,64,34233,9,581.96,581.14,19.98 -sqr,floor,64,64,33280,9,601.39,599.76,19.58 -sqr,gmp,64,64,30714,9,668.06,656.68,20.47 -sqr,gmpz,64,64,29454,9,666.60,663.22,19.70 -sqr,auto,512,512,807,9,24695.22,24566.14,19.94 -sqr,kernel,512,512,818,9,24380.09,24325.59,19.94 -sqr,floor,512,512,821,9,24430.52,24334.50,20.07 -sqr,gmp,512,512,1212,9,16470.57,16363.04,19.96 -sqr,gmpz,512,512,1014,9,19768.90,19621.06,20.08 -sqr,auto,2000,2000,90,9,224168.06,223427.78,20.23 -sqr,kernel,2000,2000,90,9,223346.29,222568.06,20.12 -sqr,floor,2000,2000,90,9,223080.09,222631.49,20.11 -sqr,gmp,2000,2000,166,9,120979.67,120066.27,20.09 -sqr,gmpz,2000,2000,164,9,120838.92,120523.37,19.83 -divrem,auto,2,1,647562,9,30.68,30.41,19.88 -divrem,kernel,2,1,3172681,9,6.28,6.19,19.92 -divrem,floor,2,1,1402765,9,13.97,13.71,19.52 -divrem,gmp,2,1,3966120,9,5.04,5.00,19.98 -divrem,gmpz,2,1,2281500,9,8.80,8.77,20.08 -divrem,auto,8,4,195980,9,101.72,100.52,19.94 -divrem,kernel,8,4,391032,9,51.49,50.87,20.13 -divrem,floor,8,4,304779,9,65.62,64.80,19.94 -divrem,gmp,8,4,475200,9,41.96,41.51,19.91 -divrem,gmpz,8,4,450395,9,44.34,43.73,19.92 -divrem,auto,32,16,41529,9,481.64,469.21,19.90 -divrem,kernel,32,16,50078,9,401.33,390.77,20.10 -divrem,floor,32,16,46900,9,429.49,415.91,20.16 -divrem,gmp,32,16,95978,9,208.70,205.84,20.03 -divrem,gmpz,32,16,94964,9,210.69,207.26,20.21 -divrem,auto,128,64,5273,9,3778.98,3682.61,19.88 -divrem,kernel,128,64,5518,9,3639.23,3515.05,19.99 -divrem,floor,128,64,5434,9,3682.45,3603.74,19.93 -divrem,gmp,128,64,11235,9,1766.28,1758.74,19.88 -divrem,gmpz,128,64,11330,9,1768.78,1754.07,20.05 -divrem,auto,512,256,727,9,27605.06,27559.95,20.10 -divrem,kernel,512,256,731,9,27186.10,27054.83,19.89 -divrem,floor,512,256,731,9,27396.83,27033.12,19.96 -divrem,gmp,512,256,1201,9,16584.62,16517.90,19.91 -divrem,gmpz,512,256,1214,9,16511.70,16446.46,20.05 -divrem,auto,2000,1000,86,9,234500.97,233234.01,20.23 -divrem,kernel,2000,1000,86,9,232722.38,231947.19,20.04 -divrem,floor,2000,1000,86,9,233781.50,232196.71,20.07 -divrem,gmp,2000,1000,145,9,137287.93,136473.57,19.89 -divrem,gmpz,2000,1000,149,9,135789.71,135242.17,20.25 -divrem,auto,4000,2000,29,9,693232.76,689136.52,20.10 -divrem,kernel,4000,2000,30,9,692530.57,689076.40,20.76 -divrem,floor,4000,2000,29,9,689303.17,684137.93,19.98 -divrem,gmp,4000,2000,59,9,344228.81,343216.81,20.33 -divrem,gmpz,4000,2000,59,9,345331.20,343848.86,20.35 -divrem,auto,2000,100,210,9,96003.77,95619.25,20.18 -divrem,kernel,2000,100,211,9,94394.16,94026.46,19.97 -divrem,floor,2000,100,212,9,94718.16,94373.62,20.08 -divrem,gmp,2000,100,290,9,68990.66,68864.08,20.02 -divrem,gmpz,2000,100,291,9,68898.48,68809.99,20.09 -divrem,auto,65536,1,82,9,245723.07,237563.51,20.06 -divrem,kernel,65536,1,87,9,233218.87,229516.76,20.23 -divrem,floor,65536,1,86,9,229441.86,225676.35,19.74 -divrem,gmp,65536,1,116,9,173149.78,170516.88,20.06 -divrem,gmpz,65536,1,120,9,171800.00,169881.59,20.64 -tochars,auto,1,10,3323971,9,6.03,5.98,20.01 -tochars,kernel,1,10,576229,9,34.51,33.99,19.86 -tochars,gmp,1,10,1240592,9,16.14,15.97,20.12 -tochars,gmpz,1,10,822805,9,24.31,23.99,19.96 -tochars,auto,4,10,220310,9,90.80,90.57,20.00 -tochars,kernel,4,10,198066,9,103.94,99.91,20.06 -tochars,gmp,4,10,257085,9,77.12,76.33,19.80 -tochars,gmpz,4,10,205735,9,97.02,95.86,19.95 -tochars,auto,16,10,23858,9,828.59,817.06,19.79 -tochars,kernel,16,10,26678,9,754.36,746.35,20.15 -tochars,gmp,16,10,38622,9,509.48,499.10,19.63 -tochars,gmpz,16,10,32800,9,609.31,580.25,19.92 -tochars,auto,64,10,4190,9,4781.83,4556.47,19.92 -tochars,kernel,64,10,4597,9,4536.85,4430.25,20.76 -tochars,gmp,64,10,7057,9,2841.00,2823.51,20.04 -tochars,gmpz,64,10,6311,9,3165.95,3100.10,19.95 -tochars,auto,256,10,593,9,33812.89,33108.42,20.02 -tochars,kernel,256,10,615,9,32923.37,32184.48,20.19 -tochars,gmp,256,10,1048,9,19048.47,18891.74,19.93 -tochars,gmpz,256,10,979,9,20459.10,20175.77,20.00 -tochars,auto,2000,10,30,9,678300.00,676106.93,20.34 -tochars,kernel,2000,10,30,9,668930.53,660969.43,20.02 -tochars,gmp,2000,10,50,9,404635.84,401695.84,20.29 -tochars,gmpz,2000,10,48,9,417446.19,415543.42,20.05 -tochars,auto,16,16,237610,9,83.67,83.11,19.89 -tochars,gmp,16,16,250631,9,79.38,78.05,19.87 -tochars,gmpz,16,16,124935,9,162.57,158.17,20.22 -tochars,auto,2000,16,2029,9,9489.40,9462.44,19.35 -tochars,gmp,2000,16,2203,9,9137.62,9026.80,20.16 -tochars,gmpz,2000,16,1156,9,16898.28,16492.65,19.51 -fromchars,auto,4,10,218432,9,99.99,91.49,19.79 -fromchars,kernel,4,10,601284,9,33.29,32.80,19.94 -fromchars,gmp,4,10,659048,9,31.88,30.89,21.06 -fromchars,gmpz,4,10,260568,9,76.22,75.46,19.87 -fromchars,auto,16,10,49835,9,399.81,390.45,19.93 -fromchars,kernel,16,10,104476,9,194.06,193.54,20.29 -fromchars,gmp,16,10,141239,9,141.05,138.78,19.93 -fromchars,gmpz,16,10,62755,9,314.33,311.55,19.69 -fromchars,auto,64,10,9161,9,2200.70,2159.29,20.12 -fromchars,kernel,64,10,10738,9,1865.83,1810.81,19.91 -fromchars,gmp,64,10,20821,9,957.48,949.91,19.95 -fromchars,gmpz,64,10,12437,9,1599.95,1581.35,19.88 -fromchars,auto,256,10,1450,9,13849.45,13814.17,20.11 -fromchars,kernel,256,10,1731,9,11587.71,11493.93,20.04 -fromchars,gmp,256,10,2468,9,8041.23,7974.25,19.87 -fromchars,gmpz,256,10,1840,9,10862.66,10785.62,19.97 -fromchars,auto,2000,10,67,9,300132.46,299353.24,20.12 -fromchars,kernel,2000,10,71,9,283036.38,282345.07,20.10 -fromchars,gmp,2000,10,109,9,184855.89,184611.24,20.18 -fromchars,gmpz,2000,10,98,9,203673.04,202918.80,19.98 diff --git a/tests/beman/big_int/perf/item1/macr3_base64_spot_seed1.csv b/tests/beman/big_int/perf/item1/macr3_base64_spot_seed1.csv deleted file mode 100644 index 7cbfe3a5..00000000 --- a/tests/beman/big_int/perf/item1/macr3_base64_spot_seed1.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,2117,3,9461.42,9284.76,19.91 -add,inplace,16384,16384,612,3,16373.33,16336.26,20.04 -add,kernel,16384,16384,1253,3,16082.93,15732.58,20.02 -add,floor,16384,16384,1215,3,16282.10,16067.25,19.74 -add,gmp,16384,16384,4913,3,4111.61,4090.23,20.19 -add,gmpz,16384,16384,4871,3,4098.50,4090.07,19.95 -mul,auto,2000,2000,66,3,303008.83,302212.12,19.99 -mul,kernel,2000,2000,66,3,302662.88,302150.26,20.00 -mul,floor,2000,2000,67,3,303221.39,302756.21,20.31 -mul,gmp,2000,2000,135,3,149048.45,148858.64,20.12 -mul,gmpz,2000,2000,135,3,148609.57,148253.09,20.08 -mul,auto,16384,16384,4,3,5446895.75,5389979.00,21.73 -mul,kernel,16384,16384,4,3,5461146.00,5460593.75,21.88 -mul,floor,16384,16384,4,3,5472145.75,5470083.25,21.89 -mul,gmp,16384,16384,13,3,1590227.54,1585935.85,20.67 -mul,gmpz,16384,16384,13,3,1572753.23,1572137.77,20.46 -divrem,auto,4096,2048,29,3,706369.24,701439.66,20.45 -divrem,kernel,4096,2048,29,3,705481.34,705250.00,20.49 -divrem,floor,4096,2048,29,3,706485.62,704367.83,20.51 -divrem,gmp,4096,2048,56,3,361521.59,359500.00,20.22 -divrem,gmpz,4096,2048,56,3,361457.59,360947.16,20.23 -tochars,auto,10000,10,3,3,8266069.67,8250514.00,24.80 -tochars,kernel,10000,10,3,3,8243416.67,8243347.00,24.74 -tochars,gmp,10000,10,5,3,4118158.20,4116225.00,20.63 -tochars,gmpz,10000,10,5,3,4171783.20,4162850.00,20.91 -fromchars,auto,10000,10,5,3,4212891.60,4188066.60,21.04 -fromchars,kernel,10000,10,5,3,4181350.00,4151508.40,20.86 -fromchars,gmp,10000,10,12,3,1765892.33,1762111.08,21.20 -fromchars,gmpz,10000,10,11,3,1864181.82,1860488.64,20.56 diff --git a/tests/beman/big_int/perf/item1/macr3_base64_spot_seed2.csv b/tests/beman/big_int/perf/item1/macr3_base64_spot_seed2.csv deleted file mode 100644 index 6af8daba..00000000 --- a/tests/beman/big_int/perf/item1/macr3_base64_spot_seed2.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,2105,3,9486.30,9421.14,19.95 -add,inplace,16384,16384,611,3,16524.75,15899.72,19.95 -add,kernel,16384,16384,1240,3,16275.40,16271.03,20.19 -add,floor,16384,16384,1256,3,16306.66,16117.44,20.42 -add,gmp,16384,16384,4880,3,4113.05,4085.66,20.07 -add,gmpz,16384,16384,4845,3,4097.27,4065.94,19.85 -mul,auto,2000,2000,66,3,304828.29,303018.94,20.08 -mul,kernel,2000,2000,65,3,306265.38,305051.92,19.90 -mul,floor,2000,2000,66,3,301705.18,301495.59,19.93 -mul,gmp,2000,2000,135,3,148996.61,148346.91,20.09 -mul,gmpz,2000,2000,129,3,148763.57,148649.55,19.21 -mul,auto,16384,16384,4,3,5440416.75,5345229.25,21.66 -mul,kernel,16384,16384,4,3,5433458.25,5352562.50,21.66 -mul,floor,16384,16384,4,3,5502645.75,5421260.25,21.93 -mul,gmp,16384,16384,13,3,1583589.77,1581179.46,20.62 -mul,gmpz,16384,16384,13,3,1570038.46,1562612.23,20.41 -divrem,auto,4096,2048,29,3,706814.66,703538.79,20.49 -divrem,kernel,4096,2048,29,3,702818.97,699304.59,20.36 -divrem,floor,4096,2048,29,3,700497.14,699241.38,20.31 -divrem,gmp,4096,2048,56,3,356235.12,355521.59,19.96 -divrem,gmpz,4096,2048,56,3,358593.02,358457.59,20.11 -tochars,auto,10000,10,3,3,8290597.00,8276764.00,24.86 -tochars,kernel,10000,10,3,3,8233028.00,8187652.67,24.66 -tochars,gmp,10000,10,5,3,4112158.20,4110333.40,20.61 -tochars,gmpz,10000,10,5,3,4175058.40,4166866.60,20.87 -fromchars,auto,10000,10,5,3,4184950.00,4179300.00,20.92 -fromchars,kernel,10000,10,5,3,4092716.60,4085566.80,20.47 -fromchars,gmp,10000,10,12,3,1773781.25,1760003.50,21.24 -fromchars,gmpz,10000,10,11,3,1911431.82,1890522.73,20.96 diff --git a/tests/beman/big_int/perf/item1/macr3_new64_seed1a.csv b/tests/beman/big_int/perf/item1/macr3_new64_seed1a.csv deleted file mode 100644 index 94d43bd3..00000000 --- a/tests/beman/big_int/perf/item1/macr3_new64_seed1a.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T17:53:30Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,3355607,9,5.69,5.46,19.25 -add,inplace,1,1,4906225,9,1.86,1.86,18.59 -add,kernel,1,1,17533059,9,1.14,1.14,20.04 -add,floor,1,1,2016053,9,9.43,9.42,19.02 -add,gmp,1,1,13430182,9,1.49,1.48,20.02 -add,gmpz,1,1,6703555,9,2.98,2.96,19.96 -add,auto,2,2,1265574,9,16.02,15.61,20.23 -add,inplace,2,2,2384828,9,4.11,3.99,19.45 -add,kernel,2,2,14390846,9,1.40,1.39,20.18 -add,floor,2,2,2064094,9,9.44,9.42,19.53 -add,gmp,2,2,11515524,9,1.97,1.74,22.03 -add,gmpz,2,2,6184697,9,3.39,3.26,24.06 -add,auto,4,4,1388927,9,14.47,14.20,20.07 -add,inplace,4,4,2584296,9,3.87,3.86,20.01 -add,kernel,4,4,10340527,9,1.94,1.93,20.06 -add,floor,4,4,1864802,9,10.65,10.23,19.86 -add,gmp,4,4,11374938,9,1.75,1.73,19.90 -add,gmpz,4,4,5931671,9,4.25,3.44,24.19 -add,auto,8,8,1279461,9,15.54,15.30,19.87 -add,inplace,8,8,2298803,9,4.30,4.24,19.88 -add,kernel,8,8,5604057,9,3.53,3.48,19.78 -add,floor,8,8,1602456,9,12.76,12.30,20.32 -add,gmp,8,8,8893960,9,2.24,2.24,20.16 -add,gmpz,8,8,4568429,9,4.42,4.22,20.13 -add,auto,16,16,1127409,9,17.85,17.48,20.10 -add,inplace,16,16,1736147,9,5.74,5.71,19.98 -add,kernel,16,16,2651697,9,7.55,7.51,20.08 -add,floor,16,16,1419993,9,13.96,13.65,19.71 -add,gmp,16,16,6200694,9,3.23,3.22,20.02 -add,gmpz,16,16,4786918,9,4.48,4.46,21.42 -add,auto,64,64,490768,9,38.01,37.69,19.17 -add,inplace,64,64,502340,9,19.98,19.78,20.11 -add,kernel,64,64,405014,9,48.84,47.87,19.72 -add,floor,64,64,328371,9,61.25,59.82,20.07 -add,gmp,64,64,1794912,9,11.15,11.05,19.99 -add,gmpz,64,64,1495392,9,13.40,13.37,20.31 -add,auto,256,256,182138,9,109.84,108.26,19.95 -add,inplace,256,256,98882,9,100.50,97.45,19.79 -add,kernel,256,256,85517,9,234.03,233.68,20.03 -add,floor,256,256,82915,9,244.31,238.86,20.24 -add,gmp,256,256,354232,9,58.98,57.82,21.62 -add,gmpz,256,256,345848,9,58.01,57.82,20.10 -add,auto,1024,1024,44779,9,449.40,440.00,20.14 -add,inplace,1024,1024,23011,9,428.48,421.71,19.71 -add,kernel,1024,1024,20626,9,963.46,936.63,19.82 -add,floor,1024,1024,20002,9,978.14,947.93,19.58 -add,gmp,1024,1024,79812,9,251.87,246.47,20.10 -add,gmpz,1024,1024,79713,9,251.94,249.16,20.07 -add,auto,2000,2000,22853,9,878.04,864.80,20.01 -add,inplace,2000,2000,11974,9,854.80,838.49,20.49 -add,kernel,2000,2000,10449,9,1913.37,1857.39,19.91 -add,floor,2000,2000,10360,9,1918.32,1865.29,19.82 -add,gmp,2000,2000,40435,9,493.34,484.32,19.85 -add,gmpz,2000,2000,40198,9,495.83,486.58,19.89 -add,auto,1024,1,205035,9,99.83,92.45,20.26 -add,inplace,1024,1,3222095,9,3.10,3.10,20.00 -add,kernel,1024,1,27011,9,732.51,706.98,19.72 -add,floor,1024,1,26506,9,763.54,751.88,20.31 -add,gmp,1024,1,76821,9,263.98,258.84,20.20 -add,gmpz,1024,1,75231,9,263.60,261.13,19.81 -sub,auto,1,1,3506609,9,5.60,5.47,19.69 -sub,inplace,1,1,5043389,9,1.98,1.98,20.04 -sub,kernel,1,1,19096529,9,1.05,1.05,20.03 -sub,floor,1,1,11531724,9,1.74,1.73,20.24 -sub,gmp,1,1,13404820,9,1.49,1.48,20.00 -sub,gmpz,1,1,7986529,9,2.48,2.48,19.83 -sub,auto,2,2,1308131,9,15.27,14.66,19.85 -sub,inplace,2,2,2663863,9,3.82,3.74,20.33 -sub,kernel,2,2,14400518,9,1.39,1.39,20.09 -sub,floor,2,2,2105344,9,9.22,9.18,19.56 -sub,gmp,2,2,10984323,9,1.99,1.74,21.23 -sub,gmpz,2,2,7337532,9,2.73,2.73,20.09 -sub,auto,4,4,1294604,9,15.03,14.94,19.68 -sub,inplace,4,4,2323970,9,3.98,3.95,19.18 -sub,kernel,4,4,10375633,9,1.93,1.92,20.05 -sub,floor,4,4,2008490,9,10.16,9.92,20.45 -sub,gmp,4,4,11531706,9,1.74,1.73,20.06 -sub,gmpz,4,4,7305971,9,2.73,2.73,19.96 -sub,auto,8,8,1250468,9,15.00,14.96,19.31 -sub,inplace,8,8,2308544,9,4.11,4.10,19.21 -sub,kernel,8,8,5727692,9,3.50,3.48,20.12 -sub,floor,8,8,1734066,9,11.45,11.40,19.98 -sub,gmp,8,8,8927269,9,2.23,2.23,19.94 -sub,gmpz,8,8,6191023,9,3.23,3.22,19.98 -sub,auto,16,16,1069307,9,18.11,17.95,19.52 -sub,inplace,16,16,1832054,9,5.47,5.46,20.10 -sub,kernel,16,16,2614408,9,7.70,7.66,20.13 -sub,floor,16,16,1334144,9,14.91,14.84,19.99 -sub,gmp,16,16,6200106,9,3.23,3.22,20.02 -sub,gmpz,16,16,4578882,9,4.35,4.34,19.93 -sub,auto,64,64,556624,9,36.55,36.00,20.26 -sub,inplace,64,64,502969,9,19.81,19.51,19.90 -sub,kernel,64,64,382691,9,53.07,51.97,20.26 -sub,floor,64,64,327440,9,61.32,59.12,20.02 -sub,gmp,64,64,1799033,9,11.11,11.02,19.98 -sub,gmpz,64,64,1497606,9,13.47,13.32,20.15 -sub,auto,256,256,181181,9,110.58,108.90,19.98 -sub,inplace,256,256,101171,9,99.27,96.86,20.07 -sub,kernel,256,256,85655,9,243.76,226.66,20.55 -sub,floor,256,256,81582,9,245.66,242.43,20.01 -sub,gmp,256,256,351485,9,57.17,56.20,20.06 -sub,gmpz,256,256,349735,9,57.89,57.04,20.25 -sub,auto,1024,1024,44355,9,451.60,438.80,19.94 -sub,inplace,1024,1024,23189,9,430.80,418.19,19.89 -sub,kernel,1024,1024,20678,9,970.09,967.59,20.08 -sub,floor,1024,1024,18954,9,986.05,950.09,18.64 -sub,gmp,1024,1024,79501,9,251.29,247.86,19.96 -sub,gmpz,1024,1024,79815,9,251.97,247.53,20.13 -sub,auto,2000,2000,22322,9,877.64,854.07,19.53 -sub,inplace,2000,2000,11852,9,848.71,821.77,20.06 -sub,kernel,2000,2000,10410,9,1918.86,1869.98,19.92 -sub,floor,2000,2000,10258,9,1922.11,1890.12,19.67 -sub,gmp,2000,2000,40264,9,494.41,486.14,19.80 -sub,gmpz,2000,2000,40232,9,496.91,491.80,20.00 -sub,auto,1024,1,143840,9,144.59,135.34,21.00 -sub,inplace,1024,1,3216013,9,3.11,3.09,20.01 -sub,kernel,1024,1,27529,9,729.41,719.01,20.09 -sub,floor,1024,1,26425,9,756.94,734.04,20.12 -sub,gmp,1024,1,76582,9,261.23,257.31,19.97 -sub,gmpz,1024,1,75530,9,264.43,258.12,19.92 -shl,auto,1,13,1637556,9,12.25,11.95,20.03 -shl,inplace,1,13,2935076,9,3.38,3.37,19.89 -shl,kernel,1,13,7971722,9,2.49,2.48,19.84 -shl,kernelip,1,13,8935930,9,1.73,1.41,30.10 -shl,floor,1,13,1872316,9,10.43,10.40,19.80 -shl,gmp,1,13,16222250,9,1.24,1.24,20.17 -shl,gmpz,1,13,10046469,9,1.98,1.98,19.97 -shl,auto,4,13,1562599,9,13.16,12.76,20.52 -shl,inplace,4,13,1871308,9,5.44,4.88,19.99 -shl,kernel,4,13,5365395,9,3.72,3.70,20.00 -shl,kernelip,4,13,2974597,9,3.36,3.29,19.96 -shl,floor,4,13,1579406,9,12.56,12.42,19.81 -shl,gmp,4,13,9976432,9,1.99,1.98,19.92 -shl,gmpz,4,13,7319537,9,2.73,2.72,19.98 -shl,auto,16,13,1294945,9,15.30,15.19,19.83 -shl,inplace,16,13,1462396,9,6.83,6.82,19.99 -shl,kernel,16,13,4890110,9,4.09,4.05,20.01 -shl,kernelip,16,13,1444386,9,6.79,6.73,19.65 -shl,floor,16,13,1633533,9,12.01,11.93,19.93 -shl,gmp,16,13,5700463,9,3.48,3.47,20.08 -shl,gmpz,16,13,3902753,9,5.15,5.12,20.10 -shl,auto,256,13,487950,9,40.99,40.91,20.03 -shl,inplace,256,13,222247,9,45.03,44.83,20.02 -shl,kernel,256,13,406796,9,49.02,48.83,19.94 -shl,kernelip,256,13,206425,9,48.71,48.58,20.13 -shl,floor,256,13,332384,9,57.09,56.96,19.02 -shl,gmp,256,13,542407,9,36.97,36.92,20.07 -shl,gmpz,256,13,528436,9,37.96,37.76,20.17 -shl,auto,2000,13,80392,9,265.25,237.42,21.55 -shl,inplace,2000,13,28886,9,346.19,343.48,20.00 -shl,kernel,2000,13,51557,9,383.53,380.16,19.76 -shl,kernelip,2000,13,26617,9,376.00,373.68,20.02 -shl,floor,2000,13,49801,9,400.03,397.58,19.96 -shl,gmp,2000,13,29113,9,1214.86,1037.33,38.87 -shl,gmpz,2000,13,11771,9,2498.51,1869.70,22.78 -shl,auto,2000,77,65039,9,388.04,286.88,30.07 -shl,inplace,2000,77,45401,9,228.70,220.67,20.72 -shl,kernel,2000,77,38105,9,526.79,524.50,20.09 -shl,kernelip,2000,77,19280,9,519.78,511.03,19.98 -shl,floor,2000,77,36773,9,543.74,539.58,19.99 -shl,gmp,2000,77,68253,9,290.13,287.17,19.78 -shl,gmpz,2000,77,68264,9,288.44,286.78,19.75 -shr,auto,1,13,2984976,9,6.69,6.69,20.00 -shr,inplace,1,13,3743937,9,3.05,2.60,21.09 -shr,kernel,1,13,8809606,9,2.23,2.23,19.68 -shr,floor,1,13,8056212,9,2.48,2.42,20.39 -shr,gmp,1,13,20000001,9,0.99,0.99,19.95 -shr,gmpz,1,13,10064042,9,1.99,1.98,20.02 -shr,auto,4,13,1416668,9,14.40,14.17,20.39 -shr,inplace,4,13,2103054,9,4.32,4.29,18.20 -shr,kernel,4,13,5361335,9,3.77,3.72,20.16 -shr,floor,4,13,1643031,9,12.39,12.35,20.54 -shr,gmp,4,13,11493716,9,1.74,1.72,19.96 -shr,gmpz,4,13,7327800,9,2.73,2.72,20.01 -shr,auto,16,13,1107310,9,18.00,17.97,19.98 -shr,inplace,16,13,1630940,9,6.12,6.09,19.99 -shr,kernel,16,13,4829532,9,4.10,4.09,19.81 -shr,floor,16,13,1550916,9,12.93,12.89,20.09 -shr,gmp,16,13,6201495,9,3.26,3.22,20.15 -shr,gmpz,16,13,4723774,9,4.24,4.22,20.00 -shr,auto,256,13,473714,9,43.14,42.27,20.53 -shr,inplace,256,13,223823,9,44.57,44.45,19.96 -shr,kernel,256,13,298563,9,66.60,66.17,19.88 -shr,floor,256,13,265289,9,75.30,74.76,19.97 -shr,gmp,256,13,538029,9,36.72,36.61,19.96 -shr,gmpz,256,13,524269,9,38.07,37.86,19.97 -shr,auto,2000,13,80923,9,257.98,235.79,20.98 -shr,inplace,2000,13,28895,9,349.54,343.22,20.12 -shr,kernel,2000,13,39088,9,512.43,506.60,20.03 -shr,floor,2000,13,38210,9,529.12,518.47,20.12 -shr,gmp,2000,13,64835,9,293.64,289.65,19.65 -shr,gmpz,2000,13,68966,9,300.14,288.17,20.56 -shr,auto,2000,77,73889,9,274.84,250.56,19.95 -shr,inplace,2000,77,51017,9,195.75,195.18,19.98 -shr,kernel,2000,77,38810,9,515.67,511.81,19.99 -shr,floor,2000,77,38619,9,527.17,524.00,20.34 -shr,gmp,2000,77,68861,9,290.40,289.25,20.05 -shr,gmpz,2000,77,69869,9,287.58,285.93,20.16 -mul,auto,1,1,1363025,9,13.76,13.55,19.22 -mul,gmp,1,1,5335522,9,3.72,3.71,19.85 -mul,gmpz,1,1,7280323,9,2.74,2.73,19.99 -mul,auto,2,2,1091172,9,18.37,17.76,20.08 -mul,kernel,2,2,3104767,9,6.33,6.30,19.67 -mul,floor,2,2,1371450,9,14.41,14.37,19.83 -mul,gmp,2,2,4234233,9,4.73,4.70,20.04 -mul,gmpz,2,2,2809176,9,6.50,6.48,18.29 -mul,auto,3,3,1019545,9,19.61,19.43,20.39 -mul,kernel,3,3,2446290,9,8.20,8.17,20.05 -mul,floor,3,3,1186105,9,16.93,16.68,20.08 -mul,gmp,3,3,3284540,9,6.07,6.04,19.94 -mul,gmpz,3,3,2542574,9,10.79,7.83,22.59 -mul,auto,4,4,965064,9,21.86,21.55,21.08 -mul,kernel,4,4,1803115,9,10.96,10.87,19.82 -mul,floor,4,4,1184007,9,16.41,16.37,19.60 -mul,gmp,4,4,2233375,9,8.97,8.93,20.02 -mul,gmpz,4,4,1790410,9,11.03,10.92,19.82 -mul,auto,6,6,737039,9,27.08,26.83,19.99 -mul,kernel,6,6,1049301,9,19.16,18.93,20.07 -mul,floor,6,6,812271,9,24.10,23.82,19.57 -mul,gmp,6,6,1405557,9,14.37,14.28,20.24 -mul,gmpz,6,6,1072153,9,18.69,18.35,20.02 -mul,auto,8,8,568559,9,34.59,34.27,19.71 -mul,kernel,8,8,872216,9,22.93,22.88,20.03 -mul,floor,8,8,652606,9,30.26,30.18,19.82 -mul,gmp,8,8,819548,9,24.13,22.62,19.70 -mul,gmpz,8,8,814514,9,24.47,24.37,19.98 -mul,auto,12,12,370264,9,53.76,53.64,19.90 -mul,kernel,12,12,486991,9,41.31,41.22,20.13 -mul,floor,12,12,400132,9,49.59,49.18,19.84 -mul,gmp,12,12,453865,9,44.10,43.96,20.03 -mul,gmpz,12,12,433262,9,46.63,46.43,20.19 -mul,auto,16,16,242429,9,82.39,82.33,19.99 -mul,kernel,16,16,283937,9,69.47,69.34,19.75 -mul,floor,16,16,254794,9,78.35,78.09,19.96 -mul,gmp,16,16,258874,9,77.29,77.00,20.02 -mul,gmpz,16,16,252906,9,78.99,78.91,19.98 -mul,auto,32,32,71149,9,280.00,279.33,19.96 -mul,kernel,32,32,77340,9,258.05,257.17,19.95 -mul,floor,32,32,71913,9,277.64,276.22,19.99 -mul,gmp,32,32,74326,9,268.68,267.23,19.95 -mul,gmpz,32,32,73394,9,271.18,270.72,19.95 -mul,auto,64,64,19856,9,1006.87,1003.62,20.00 -mul,kernel,64,64,20354,9,986.99,982.43,20.07 -mul,floor,64,64,19934,9,1006.34,1005.13,20.07 -mul,gmp,64,64,25934,9,773.44,772.56,20.09 -mul,gmpz,64,64,25771,9,776.18,771.23,20.00 -mul,auto,128,128,5604,9,3575.45,3566.28,20.06 -mul,kernel,128,128,5585,9,3579.78,3573.22,20.12 -mul,floor,128,128,5578,9,3585.91,3578.87,20.04 -mul,gmp,128,128,6638,9,3006.09,2989.00,19.94 -mul,gmpz,128,128,6716,9,2987.13,2973.75,20.07 -mul,auto,256,256,1661,9,12044.18,11978.48,20.01 -mul,kernel,256,256,1694,9,11767.02,11745.33,20.02 -mul,floor,256,256,1665,9,11756.23,11729.43,19.57 -mul,gmp,256,256,2550,9,7817.91,7785.96,19.94 -mul,gmpz,256,256,2551,9,7838.84,7776.41,19.98 -mul,auto,512,512,542,9,36959.56,36842.25,20.02 -mul,kernel,512,512,543,9,36924.42,36830.95,20.12 -mul,floor,512,512,543,9,36966.16,36763.20,20.05 -mul,gmp,512,512,937,9,21378.82,21245.69,20.03 -mul,gmpz,512,512,1053,9,19159.19,18988.17,20.14 -mul,auto,1000,1000,188,9,106569.15,105911.35,20.06 -mul,kernel,1000,1000,188,9,106526.82,105934.84,20.07 -mul,floor,1000,1000,188,9,106657.13,106480.28,20.08 -mul,gmp,1000,1000,360,9,55238.77,54819.33,19.86 -mul,gmpz,1000,1000,363,9,55045.11,54289.83,19.98 -mul,auto,2000,2000,67,9,301615.67,299862.55,20.24 -mul,kernel,2000,2000,67,9,301534.19,298630.60,20.17 -mul,floor,2000,2000,67,9,302591.42,299557.84,20.35 -mul,gmp,2000,2000,135,9,148550.31,148049.70,20.07 -mul,gmpz,2000,2000,133,9,148957.71,148530.70,19.86 -mul,auto,2000,100,432,9,46327.35,46186.63,20.03 -mul,kernel,2000,100,428,9,46625.68,46398.75,19.96 -mul,floor,2000,100,429,9,46693.08,46527.68,20.05 -mul,gmp,2000,100,568,9,35050.69,34985.26,19.93 -mul,gmpz,2000,100,576,9,34772.79,34399.31,20.07 -sqr,auto,4,4,918558,9,21.75,21.38,20.07 -sqr,kernel,4,4,1763382,9,10.98,10.83,19.50 -sqr,floor,4,4,1191009,9,16.45,16.41,19.62 -sqr,gmp,4,4,2869766,9,6.95,6.94,19.97 -sqr,gmpz,4,4,2231034,9,9.69,9.63,21.61 -sqr,auto,16,16,257655,9,77.94,77.55,20.08 -sqr,kernel,16,16,287656,9,69.45,69.08,20.05 -sqr,floor,16,16,274452,9,73.51,73.07,20.19 -sqr,gmp,16,16,313576,9,62.11,61.46,19.54 -sqr,gmpz,16,16,290350,9,68.70,68.54,19.94 -sqr,auto,64,64,33392,9,599.65,599.01,20.05 -sqr,kernel,64,64,34422,9,580.14,579.07,19.97 -sqr,floor,64,64,33362,9,599.41,597.72,20.00 -sqr,gmp,64,64,29697,9,673.86,671.14,20.11 -sqr,gmpz,64,64,29331,9,677.17,674.63,19.92 -sqr,auto,512,512,826,9,24294.04,24115.87,20.07 -sqr,kernel,512,512,822,9,24338.60,24304.74,20.05 -sqr,floor,512,512,822,9,24373.48,24220.09,20.06 -sqr,gmp,512,512,1214,9,16526.70,16317.85,20.11 -sqr,gmpz,512,512,922,9,21402.88,21189.08,19.73 -sqr,auto,2000,2000,90,9,222424.08,221779.62,20.03 -sqr,kernel,2000,2000,90,9,223153.70,222575.47,20.08 -sqr,floor,2000,2000,90,9,223671.76,221416.67,20.15 -sqr,gmp,2000,2000,166,9,121018.07,119689.25,20.06 -sqr,gmpz,2000,2000,168,9,120847.23,118926.59,20.25 -divrem,auto,2,1,705155,9,28.53,28.24,20.20 -divrem,kernel,2,1,3556788,9,5.78,5.68,20.53 -divrem,floor,2,1,1478992,9,13.47,13.16,19.91 -divrem,gmp,2,1,4002274,9,5.00,4.99,20.04 -divrem,gmpz,2,1,2299134,9,8.66,8.63,19.94 -divrem,auto,8,4,281720,9,70.91,70.24,19.99 -divrem,kernel,8,4,487903,9,41.03,40.17,20.08 -divrem,floor,8,4,361101,9,56.13,55.67,20.22 -divrem,gmp,8,4,506650,9,39.92,38.64,20.18 -divrem,gmpz,8,4,459907,9,43.86,42.51,20.09 -divrem,auto,32,16,44814,9,431.90,423.50,19.41 -divrem,kernel,32,16,53258,9,388.40,374.66,20.62 -divrem,floor,32,16,48393,9,405.98,393.20,19.55 -divrem,gmp,32,16,96320,9,207.67,205.37,20.00 -divrem,gmpz,32,16,95419,9,209.03,206.14,19.91 -divrem,auto,128,64,5559,9,3638.87,3562.86,20.17 -divrem,kernel,128,64,5610,9,3552.51,3456.63,19.84 -divrem,floor,128,64,5532,9,3613.92,3606.04,20.00 -divrem,gmp,128,64,11235,9,1783.44,1751.93,19.96 -divrem,gmpz,128,64,11273,9,1785.53,1750.73,20.09 -divrem,auto,512,256,675,9,29625.43,29190.25,19.98 -divrem,kernel,512,256,680,9,29494.42,28926.04,20.05 -divrem,floor,512,256,677,9,29493.91,29057.42,19.94 -divrem,gmp,512,256,1223,9,16442.12,16198.66,20.08 -divrem,gmpz,512,256,1225,9,16353.57,16209.29,20.01 -divrem,auto,2000,1000,87,9,232196.37,230154.21,20.20 -divrem,kernel,2000,1000,87,9,231220.31,230997.61,20.14 -divrem,floor,2000,1000,88,9,231456.92,230117.90,20.37 -divrem,gmp,2000,1000,149,9,135994.41,135175.05,20.26 -divrem,gmpz,2000,1000,149,9,134220.64,133941.56,20.10 -divrem,auto,4000,2000,30,9,686812.50,684288.87,20.61 -divrem,kernel,4000,2000,30,9,684112.50,679672.20,20.54 -divrem,floor,4000,2000,30,9,684790.27,682258.33,20.55 -divrem,gmp,4000,2000,59,9,343136.31,340579.08,20.23 -divrem,gmpz,4000,2000,59,9,346218.22,342485.88,20.39 -divrem,auto,2000,100,213,9,94130.87,93843.31,20.04 -divrem,kernel,2000,100,214,9,93757.59,93608.45,20.07 -divrem,floor,2000,100,213,9,93928.01,93697.97,20.02 -divrem,gmp,2000,100,291,9,69504.01,69094.36,20.21 -divrem,gmpz,2000,100,286,9,69445.66,69231.21,19.86 -divrem,auto,65536,1,88,9,228733.90,224126.42,20.06 -divrem,kernel,65536,1,89,9,224873.60,222929.30,20.01 -divrem,floor,65536,1,88,9,240370.27,227685.60,21.17 -divrem,gmp,65536,1,121,9,169556.47,167073.69,20.47 -divrem,gmpz,65536,1,120,9,167806.25,165224.31,20.07 -tochars,auto,1,10,3347882,9,5.97,5.96,20.00 -tochars,kernel,1,10,597895,9,33.45,32.38,19.92 -tochars,gmp,1,10,1183133,9,16.89,16.84,20.04 -tochars,gmpz,1,10,761164,9,25.75,25.42,19.68 -tochars,auto,4,10,260545,9,77.47,76.76,20.25 -tochars,kernel,4,10,198705,9,100.12,97.59,19.86 -tochars,gmp,4,10,279648,9,72.78,71.32,20.31 -tochars,gmpz,4,10,214999,9,93.51,93.12,20.12 -tochars,auto,16,10,23714,9,839.91,824.40,19.86 -tochars,kernel,16,10,27545,9,733.89,730.60,20.30 -tochars,gmp,16,10,39831,9,504.45,499.30,20.09 -tochars,gmpz,16,10,33342,9,600.43,597.66,20.06 -tochars,auto,64,10,4231,9,4691.96,4596.20,19.80 -tochars,kernel,64,10,4463,9,4437.78,4302.47,19.74 -tochars,gmp,64,10,7044,9,2833.72,2778.27,19.91 -tochars,gmpz,64,10,6347,9,3117.35,3039.37,19.75 -tochars,auto,256,10,608,9,33283.86,32519.19,20.18 -tochars,kernel,256,10,609,9,32563.49,31880.06,19.81 -tochars,gmp,256,10,1052,9,19067.57,18564.08,19.95 -tochars,gmpz,256,10,977,9,20402.38,20072.46,19.89 -tochars,auto,2000,10,30,9,676815.27,666637.50,20.28 -tochars,kernel,2000,10,31,9,667858.87,661131.71,20.69 -tochars,gmp,2000,10,50,9,402912.50,396872.50,20.12 -tochars,gmpz,2000,10,49,9,415520.41,410985.53,20.35 -tochars,auto,16,16,233119,9,82.56,82.24,19.53 -tochars,gmp,16,16,253462,9,78.90,77.84,20.05 -tochars,gmpz,16,16,126649,9,157.31,153.81,19.87 -tochars,auto,2000,16,2115,9,9431.64,9300.87,19.90 -tochars,gmp,2000,16,2247,9,9226.06,8894.93,20.61 -tochars,gmpz,2000,16,1211,9,16677.02,16500.48,20.16 -fromchars,auto,4,10,221407,9,89.50,88.15,19.79 -fromchars,kernel,4,10,620663,9,33.28,32.73,20.66 -fromchars,gmp,4,10,647083,9,30.77,29.47,19.93 -fromchars,gmpz,4,10,263975,9,76.05,74.89,20.06 -fromchars,auto,16,10,49714,9,401.69,389.54,19.91 -fromchars,kernel,16,10,104293,9,189.56,185.71,19.77 -fromchars,gmp,16,10,137154,9,145.99,141.88,19.90 -fromchars,gmpz,16,10,62658,9,314.06,310.25,19.70 -fromchars,auto,64,10,9152,9,2179.65,2152.25,19.95 -fromchars,kernel,64,10,10894,9,1857.21,1807.41,20.19 -fromchars,gmp,64,10,20938,9,952.32,942.70,19.92 -fromchars,gmpz,64,10,12545,9,1596.74,1569.70,19.95 -fromchars,auto,256,10,1448,9,13812.93,13682.18,20.03 -fromchars,kernel,256,10,1730,9,11508.16,11491.76,19.92 -fromchars,gmp,256,10,2504,9,7913.54,7874.53,19.84 -fromchars,gmpz,256,10,1827,9,10824.01,10767.63,19.90 -fromchars,auto,2000,10,67,9,300572.13,299582.09,20.21 -fromchars,kernel,2000,10,71,9,282828.63,281274.65,20.08 -fromchars,gmp,2000,10,109,9,184022.17,183550.07,20.11 -fromchars,gmpz,2000,10,97,9,203498.71,202642.19,19.75 diff --git a/tests/beman/big_int/perf/item1/macr3_new64_seed1b.csv b/tests/beman/big_int/perf/item1/macr3_new64_seed1b.csv deleted file mode 100644 index 756e96c5..00000000 --- a/tests/beman/big_int/perf/item1/macr3_new64_seed1b.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T17:58:23Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,3334793,9,5.78,5.72,19.87 -add,inplace,1,1,5341507,9,1.88,1.87,20.28 -add,kernel,1,1,17308043,9,1.15,1.14,19.88 -add,floor,1,1,2009624,9,9.82,9.67,19.79 -add,gmp,1,1,13369692,9,1.49,1.49,19.99 -add,gmpz,1,1,6315773,9,2.99,2.97,19.06 -add,auto,2,2,1232136,9,15.84,15.74,19.58 -add,inplace,2,2,2413612,9,4.12,4.09,19.86 -add,kernel,2,2,14327790,9,1.40,1.39,20.07 -add,floor,2,2,1994546,9,10.27,9.76,20.57 -add,gmp,2,2,10666819,9,1.76,1.74,18.82 -add,gmpz,2,2,6708860,9,3.24,2.99,19.36 -add,auto,4,4,1322845,9,14.77,14.52,19.49 -add,inplace,4,4,2644993,9,3.89,3.78,20.49 -add,kernel,4,4,10366129,9,1.96,1.91,20.33 -add,floor,4,4,1934137,9,10.46,10.22,20.26 -add,gmp,4,4,11154908,9,1.75,1.75,19.89 -add,gmpz,4,4,5431921,9,3.92,3.33,20.87 -add,auto,8,8,1274893,9,15.65,15.54,20.11 -add,inplace,8,8,2255206,9,4.38,4.21,19.54 -add,kernel,8,8,5395959,9,3.51,3.48,19.13 -add,floor,8,8,1692757,9,11.96,11.77,20.58 -add,gmp,8,8,8892725,9,2.29,2.24,20.41 -add,gmpz,8,8,4941550,9,4.32,3.90,21.13 -add,auto,16,16,1087990,9,17.88,16.79,19.21 -add,inplace,16,16,1716468,9,5.75,5.73,19.85 -add,kernel,16,16,2602691,9,7.58,7.53,19.73 -add,floor,16,16,1430264,9,14.15,14.00,20.28 -add,gmp,16,16,5670472,9,3.27,3.24,18.65 -add,gmpz,16,16,5004577,9,4.07,4.00,20.21 -add,auto,64,64,516931,9,38.25,37.81,19.85 -add,inplace,64,64,499869,9,19.96,19.84,19.98 -add,kernel,64,64,413365,9,49.61,48.74,20.46 -add,floor,64,64,332058,9,61.02,60.87,20.27 -add,gmp,64,64,1791062,9,11.16,11.12,20.01 -add,gmpz,64,64,1491247,9,13.36,13.33,19.92 -add,auto,256,256,175769,9,109.70,108.74,19.34 -add,inplace,256,256,97877,9,101.51,99.44,19.83 -add,kernel,256,256,83692,9,238.15,229.38,19.85 -add,floor,256,256,79585,9,250.99,240.37,19.80 -add,gmp,256,256,352566,9,57.15,56.96,20.15 -add,gmpz,256,256,343230,9,57.92,57.40,19.85 -add,auto,1024,1024,44384,9,452.82,440.41,20.24 -add,inplace,1024,1024,22598,9,438.62,429.89,19.82 -add,kernel,1024,1024,20017,9,984.25,950.94,19.50 -add,floor,1024,1024,20130,9,1000.05,982.21,20.04 -add,gmp,1024,1024,79749,9,252.29,250.11,20.12 -add,gmpz,1024,1024,78725,9,253.71,252.32,20.00 -add,auto,2000,2000,21952,9,884.87,860.00,19.44 -add,inplace,2000,2000,11223,9,885.70,863.78,19.80 -add,kernel,2000,2000,10125,9,1958.58,1899.01,19.75 -add,floor,2000,2000,10096,9,1968.90,1940.60,20.14 -add,gmp,2000,2000,40275,9,497.38,486.38,19.99 -add,gmpz,2000,2000,39988,9,498.64,494.29,19.92 -add,auto,1024,1,206017,9,114.25,102.36,23.48 -add,inplace,1024,1,3214098,9,3.12,3.12,20.13 -add,kernel,1024,1,25954,9,752.63,745.13,19.52 -add,floor,1024,1,25486,9,772.89,757.86,19.73 -add,gmp,1024,1,77137,9,264.51,258.60,20.40 -add,gmpz,1024,1,75354,9,267.73,266.95,20.18 -sub,auto,1,1,3553778,9,5.75,5.55,20.28 -sub,inplace,1,1,4660371,9,2.01,2.00,18.88 -sub,kernel,1,1,19034571,9,1.05,1.05,20.04 -sub,floor,1,1,11459514,9,1.74,1.74,20.01 -sub,gmp,1,1,13449620,9,1.50,1.49,20.18 -sub,gmpz,1,1,7997415,9,2.49,2.49,19.96 -sub,auto,2,2,1356343,9,14.52,14.33,19.78 -sub,inplace,2,2,2606435,9,3.84,3.81,20.06 -sub,kernel,2,2,14181385,9,1.43,1.40,20.20 -sub,floor,2,2,2299990,9,9.31,8.84,21.32 -sub,gmp,2,2,10019353,9,2.00,1.99,20.01 -sub,gmpz,2,2,6772013,9,2.74,2.72,18.90 -sub,auto,4,4,1276358,9,15.24,15.07,19.46 -sub,inplace,4,4,2495082,9,4.12,3.98,20.65 -sub,kernel,4,4,10418444,9,1.93,1.92,20.09 -sub,floor,4,4,2060353,9,9.96,9.71,20.49 -sub,gmp,4,4,11472489,9,1.74,1.74,19.99 -sub,gmpz,4,4,7319869,9,2.74,2.73,20.13 -sub,auto,8,8,1306127,9,15.24,15.21,20.07 -sub,inplace,8,8,2236972,9,4.39,4.35,19.71 -sub,kernel,8,8,5739881,9,3.49,3.47,20.13 -sub,floor,8,8,1730563,9,11.24,11.18,20.08 -sub,gmp,8,8,8920903,9,2.25,2.23,20.05 -sub,gmpz,8,8,6179742,9,3.23,3.22,20.10 -sub,auto,16,16,1079554,9,18.03,17.61,19.53 -sub,inplace,16,16,1862101,9,5.47,5.45,20.45 -sub,kernel,16,16,2599940,9,7.73,7.68,20.09 -sub,floor,16,16,1316840,9,15.16,14.90,19.94 -sub,gmp,16,16,6790364,9,3.22,2.94,21.35 -sub,gmpz,16,16,4612577,9,4.39,4.34,20.21 -sub,auto,64,64,551313,9,36.20,35.91,19.92 -sub,inplace,64,64,507653,9,19.83,19.69,20.12 -sub,kernel,64,64,374353,9,53.69,52.06,19.99 -sub,floor,64,64,329007,9,61.47,60.35,20.19 -sub,gmp,64,64,1730154,9,11.57,11.44,19.98 -sub,gmpz,64,64,1438237,9,13.96,13.74,20.04 -sub,auto,256,256,180380,9,111.86,110.97,20.16 -sub,inplace,256,256,98104,9,101.36,99.51,19.84 -sub,kernel,256,256,82664,9,237.28,226.91,19.53 -sub,floor,256,256,80114,9,249.58,243.85,19.91 -sub,gmp,256,256,350214,9,57.59,56.97,20.19 -sub,gmpz,256,256,343623,9,58.17,57.42,19.98 -sub,auto,1024,1024,40285,9,475.32,454.25,19.02 -sub,inplace,1024,1024,22544,9,441.57,432.73,19.87 -sub,kernel,1024,1024,20383,9,1000.90,958.63,20.34 -sub,floor,1024,1024,20276,9,1006.70,968.98,20.23 -sub,gmp,1024,1024,79394,9,253.39,252.11,20.36 -sub,gmpz,1024,1024,76209,9,255.92,252.54,19.54 -sub,auto,2000,2000,22226,9,905.32,882.39,20.20 -sub,inplace,2000,2000,11498,9,867.70,848.34,19.96 -sub,kernel,2000,2000,10368,9,1952.25,1925.26,20.26 -sub,floor,2000,2000,10686,9,1979.37,1942.48,21.06 -sub,gmp,2000,2000,40206,9,497.69,496.08,20.04 -sub,gmpz,2000,2000,40230,9,497.82,490.15,19.97 -sub,auto,1024,1,147306,9,135.55,122.92,20.16 -sub,inplace,1024,1,2971090,9,3.38,3.35,20.32 -sub,kernel,1024,1,27602,9,741.27,720.70,20.36 -sub,floor,1024,1,26414,9,764.13,752.27,20.16 -sub,gmp,1024,1,75640,9,264.34,260.08,20.08 -sub,gmpz,1024,1,74350,9,268.19,263.68,20.62 -shl,auto,1,13,1638441,9,12.80,12.03,20.87 -shl,inplace,1,13,2994470,9,3.47,3.42,20.80 -shl,kernel,1,13,8031678,9,2.49,2.48,20.02 -shl,kernelip,1,13,8893093,9,1.73,1.64,25.74 -shl,floor,1,13,1780501,9,11.18,10.97,19.85 -shl,gmp,1,13,15863435,9,1.25,1.24,19.81 -shl,gmpz,1,13,10068404,9,1.99,1.99,20.15 -shl,auto,4,13,1525655,9,13.22,13.10,20.28 -shl,inplace,4,13,1862022,9,5.35,5.28,19.99 -shl,kernel,4,13,5346830,9,3.75,3.73,20.09 -shl,kernelip,4,13,2971528,9,3.38,3.31,20.03 -shl,floor,4,13,1510916,9,13.20,13.02,19.96 -shl,gmp,4,13,10011664,9,1.99,1.98,19.98 -shl,gmpz,4,13,7286766,9,2.74,2.73,19.98 -shl,auto,16,13,1240405,9,16.64,16.17,20.60 -shl,inplace,16,13,1447404,9,6.88,6.83,19.97 -shl,kernel,16,13,4860389,9,4.14,4.11,20.10 -shl,kernelip,16,13,1355247,9,6.81,6.76,18.47 -shl,floor,16,13,1600952,9,12.37,12.26,19.87 -shl,gmp,16,13,5728270,9,3.51,3.49,20.09 -shl,gmpz,16,13,3861804,9,5.30,5.26,20.66 -shl,auto,256,13,470230,9,41.85,41.48,19.76 -shl,inplace,256,13,219652,9,45.38,45.09,19.93 -shl,kernel,256,13,400108,9,49.39,49.21,19.83 -shl,kernelip,256,13,202123,9,49.19,48.86,19.90 -shl,floor,256,13,342302,9,58.23,57.72,19.98 -shl,gmp,256,13,541998,9,37.14,37.05,20.16 -shl,gmpz,256,13,520243,9,38.26,37.95,20.12 -shl,auto,2000,13,87408,9,256.01,245.17,21.20 -shl,inplace,2000,13,28891,9,350.56,346.38,20.25 -shl,kernel,2000,13,52831,9,387.41,383.44,20.45 -shl,kernelip,2000,13,26262,9,378.63,376.63,20.07 -shl,floor,2000,13,49751,9,402.00,400.54,20.00 -shl,gmp,2000,13,41755,9,1448.19,665.37,43.79 -shl,gmpz,2000,13,43635,9,1804.71,662.27,49.26 -shl,auto,2000,77,65950,9,434.44,303.12,28.68 -shl,inplace,2000,77,43585,9,233.21,222.54,20.26 -shl,kernel,2000,77,37194,9,529.55,524.99,19.70 -shl,kernelip,2000,77,18941,9,522.00,518.73,19.80 -shl,floor,2000,77,36715,9,551.60,543.02,20.55 -shl,gmp,2000,77,68947,9,290.74,287.19,20.18 -shl,gmpz,2000,77,69085,9,293.22,288.85,21.39 -shr,auto,1,13,3087898,9,6.45,6.21,19.93 -shr,inplace,1,13,3218228,9,3.08,3.07,19.90 -shr,kernel,1,13,8922748,9,2.23,2.23,19.94 -shr,floor,1,13,8961181,9,2.49,2.23,22.31 -shr,gmp,1,13,20000001,9,1.03,0.99,20.45 -shr,gmpz,1,13,9897179,9,2.01,2.00,19.93 -shr,auto,4,13,1389902,9,14.15,14.02,19.73 -shr,inplace,4,13,2289870,9,4.73,4.36,21.50 -shr,kernel,4,13,5363815,9,3.73,3.72,20.29 -shr,floor,4,13,1643005,9,12.00,11.90,19.95 -shr,gmp,4,13,11261982,9,1.75,1.74,19.71 -shr,gmpz,4,13,7314175,9,2.74,2.72,20.13 -shr,auto,16,13,1047032,9,17.98,17.88,18.88 -shr,inplace,16,13,1614576,9,6.11,6.10,19.76 -shr,kernel,16,13,4748011,9,4.16,4.16,19.77 -shr,floor,16,13,1519465,9,13.13,12.66,19.71 -shr,gmp,16,13,6184733,9,3.23,3.22,20.18 -shr,gmpz,16,13,4724253,9,4.24,4.22,20.00 -shr,auto,256,13,464450,9,42.52,42.27,19.91 -shr,inplace,256,13,223098,9,44.89,44.56,20.99 -shr,kernel,256,13,300305,9,66.97,66.45,20.13 -shr,floor,256,13,261424,9,75.55,75.32,19.91 -shr,gmp,256,13,545819,9,36.78,36.62,20.09 -shr,gmpz,256,13,517746,9,38.33,38.02,19.86 -shr,auto,2000,13,80958,9,263.03,235.57,21.96 -shr,inplace,2000,13,28832,9,348.19,345.78,20.07 -shr,kernel,2000,13,38611,9,513.04,511.22,19.83 -shr,floor,2000,13,38080,9,526.76,521.91,20.05 -shr,gmp,2000,13,64831,9,294.16,290.49,19.34 -shr,gmpz,2000,13,61697,9,310.93,298.51,19.51 -shr,auto,2000,77,77675,9,293.32,244.78,22.50 -shr,inplace,2000,77,50572,9,195.97,195.68,19.97 -shr,kernel,2000,77,37112,9,525.08,521.50,19.51 -shr,floor,2000,77,37912,9,531.02,524.68,20.18 -shr,gmp,2000,77,68009,9,298.04,290.40,20.41 -shr,gmpz,2000,77,69520,9,287.03,285.40,19.98 -mul,auto,1,1,1361841,9,14.89,13.35,19.96 -mul,gmp,1,1,5345498,9,3.75,3.73,20.08 -mul,gmpz,1,1,7279323,9,2.74,2.73,19.97 -mul,auto,2,2,1103339,9,18.08,17.84,20.05 -mul,kernel,2,2,3166935,9,6.33,6.30,20.03 -mul,floor,2,2,1299143,9,14.65,14.41,19.22 -mul,gmp,2,2,4473252,9,4.48,4.39,20.03 -mul,gmpz,2,2,3065799,9,6.46,6.12,19.60 -mul,auto,3,3,973158,9,20.79,19.57,19.95 -mul,kernel,3,3,2475222,9,8.25,8.21,20.45 -mul,floor,3,3,1154244,9,17.07,16.69,19.84 -mul,gmp,3,3,3152972,9,6.23,6.17,20.11 -mul,gmpz,3,3,2533047,9,10.23,7.84,23.61 -mul,auto,4,4,923448,9,21.66,21.36,20.04 -mul,kernel,4,4,1794492,9,11.11,10.96,20.00 -mul,floor,4,4,1187968,9,16.87,16.35,20.02 -mul,gmp,4,4,2211456,9,8.96,8.93,19.86 -mul,gmpz,4,4,1995571,9,9.77,9.71,20.29 -mul,auto,6,6,717953,9,27.39,27.13,19.70 -mul,kernel,6,6,1042653,9,19.36,19.17,20.32 -mul,floor,6,6,747871,9,26.64,24.55,19.46 -mul,gmp,6,6,1346163,9,14.67,14.50,20.04 -mul,gmpz,6,6,1080490,9,18.57,17.64,19.83 -mul,auto,8,8,570472,9,35.68,34.72,20.35 -mul,kernel,8,8,868778,9,22.98,22.89,19.95 -mul,floor,8,8,639932,9,30.37,30.18,19.48 -mul,gmp,8,8,890344,9,22.62,22.35,20.88 -mul,gmpz,8,8,745347,9,25.43,24.31,19.11 -mul,auto,12,12,367801,9,53.79,53.59,19.81 -mul,kernel,12,12,486537,9,41.47,41.20,20.26 -mul,floor,12,12,403613,9,49.50,49.42,19.99 -mul,gmp,12,12,448244,9,44.10,44.00,19.80 -mul,gmpz,12,12,425790,9,46.73,46.57,19.90 -mul,auto,16,16,237604,9,82.41,82.09,19.62 -mul,kernel,16,16,287598,9,69.39,69.22,19.98 -mul,floor,16,16,254492,9,78.35,77.95,19.99 -mul,gmp,16,16,262022,9,76.30,76.15,20.00 -mul,gmpz,16,16,257040,9,77.93,77.67,20.02 -mul,auto,32,32,71134,9,280.89,279.78,20.01 -mul,kernel,32,32,77372,9,258.29,257.39,19.99 -mul,floor,32,32,71769,9,279.10,278.16,20.05 -mul,gmp,32,32,75199,9,266.38,265.33,20.02 -mul,gmpz,32,32,73870,9,268.71,267.57,19.88 -mul,auto,64,64,19889,9,1005.89,1001.38,20.00 -mul,kernel,64,64,20339,9,982.77,978.81,20.02 -mul,floor,64,64,19797,9,1009.79,1008.48,20.03 -mul,gmp,64,64,25867,9,774.80,772.81,20.07 -mul,gmpz,64,64,25795,9,775.72,774.25,20.04 -mul,auto,128,128,5600,9,3582.57,3564.91,20.09 -mul,kernel,128,128,5573,9,3584.75,3568.84,20.01 -mul,floor,128,128,5550,9,3631.10,3585.10,20.11 -mul,gmp,128,128,7473,9,2632.93,2621.92,19.70 -mul,gmpz,128,128,6668,9,2990.29,2983.92,19.96 -mul,auto,256,256,1697,9,11727.98,11709.49,19.95 -mul,kernel,256,256,1701,9,11776.92,11740.37,20.02 -mul,floor,256,256,1692,9,11795.73,11761.06,19.96 -mul,gmp,256,256,2554,9,7828.98,7810.77,20.08 -mul,gmpz,256,256,2542,9,7860.59,7815.07,19.98 -mul,auto,512,512,538,9,37037.95,36786.01,19.95 -mul,kernel,512,512,533,9,37493.04,37456.69,19.98 -mul,floor,512,512,542,9,36987.08,36893.30,20.06 -mul,gmp,512,512,1034,9,19005.32,18966.23,19.66 -mul,gmpz,512,512,1002,9,19036.34,18956.42,19.07 -mul,auto,1000,1000,188,9,106843.30,106550.76,20.08 -mul,kernel,1000,1000,188,9,106725.84,106431.96,20.08 -mul,floor,1000,1000,187,9,107678.25,106580.66,20.12 -mul,gmp,1000,1000,364,9,55208.79,54969.09,20.11 -mul,gmpz,1000,1000,364,9,55076.12,54948.72,20.05 -mul,auto,2000,2000,67,9,301762.43,300785.45,20.26 -mul,kernel,2000,2000,66,9,304218.42,301702.65,20.09 -mul,floor,2000,2000,67,9,301986.31,300924.13,20.24 -mul,gmp,2000,2000,135,9,148709.88,147429.33,20.07 -mul,gmpz,2000,2000,135,9,148551.54,147982.41,20.06 -mul,auto,2000,100,432,9,46493.73,46233.80,20.12 -mul,kernel,2000,100,430,9,46630.43,46425.87,20.05 -mul,floor,2000,100,427,9,46697.99,46559.52,19.94 -mul,gmp,2000,100,574,9,34967.63,34897.14,20.08 -mul,gmpz,2000,100,575,9,34696.74,34528.70,20.06 -sqr,auto,4,4,938570,9,21.35,21.30,20.15 -sqr,kernel,4,4,1715118,9,11.39,11.22,19.51 -sqr,floor,4,4,1206073,9,16.16,16.12,19.55 -sqr,gmp,4,4,3206490,9,6.94,6.20,20.54 -sqr,gmpz,4,4,2066142,9,9.68,8.92,19.49 -sqr,auto,16,16,262288,9,75.51,74.93,19.80 -sqr,kernel,16,16,323629,9,61.28,61.01,19.86 -sqr,floor,16,16,277160,9,71.79,70.95,19.84 -sqr,gmp,16,16,323623,9,61.38,59.33,19.95 -sqr,gmpz,16,16,302010,9,66.41,65.38,20.04 -sqr,auto,64,64,33356,9,598.71,597.40,19.98 -sqr,kernel,64,64,34422,9,581.19,579.87,20.04 -sqr,floor,64,64,33139,9,597.57,597.11,19.84 -sqr,gmp,64,64,29634,9,668.82,658.02,19.79 -sqr,gmpz,64,64,29219,9,679.84,669.45,19.88 -sqr,auto,512,512,823,9,24299.11,24239.67,20.01 -sqr,kernel,512,512,819,9,24342.08,24237.74,19.95 -sqr,floor,512,512,821,9,24385.61,24345.36,20.03 -sqr,gmp,512,512,1210,9,16393.04,16355.61,19.87 -sqr,gmpz,512,512,931,9,21486.80,21224.31,20.05 -sqr,auto,2000,2000,89,9,223217.22,222904.02,19.90 -sqr,kernel,2000,2000,90,9,223294.90,222745.38,20.16 -sqr,floor,2000,2000,88,9,223930.40,222556.34,19.73 -sqr,gmp,2000,2000,163,9,120733.38,119861.71,19.67 -sqr,gmpz,2000,2000,166,9,121051.46,119476.66,20.10 -divrem,auto,2,1,697313,9,29.71,27.87,19.64 -divrem,kernel,2,1,3566567,9,5.72,5.66,20.39 -divrem,floor,2,1,1455726,9,13.72,13.37,19.93 -divrem,gmp,2,1,3991336,9,5.05,4.99,20.11 -divrem,gmpz,2,1,2283418,9,8.77,8.73,20.40 -divrem,auto,8,4,282351,9,70.85,69.64,20.07 -divrem,kernel,8,4,489116,9,41.04,40.33,20.09 -divrem,floor,8,4,354244,9,56.12,55.83,19.89 -divrem,gmp,8,4,498411,9,39.89,39.61,19.90 -divrem,gmpz,8,4,469373,9,43.11,42.76,20.21 -divrem,auto,32,16,45693,9,437.98,434.30,19.97 -divrem,kernel,32,16,51185,9,394.94,386.24,20.17 -divrem,floor,32,16,48454,9,415.46,398.95,19.99 -divrem,gmp,32,16,95328,9,208.30,206.32,19.87 -divrem,gmpz,32,16,94786,9,211.26,207.73,20.08 -divrem,auto,128,64,5368,9,3710.34,3670.75,19.91 -divrem,kernel,128,64,5525,9,3613.57,3529.42,19.88 -divrem,floor,128,64,5600,9,3658.53,3623.55,20.45 -divrem,gmp,128,64,11251,9,1779.02,1767.91,20.03 -divrem,gmpz,128,64,11255,9,1788.65,1775.56,20.23 -divrem,auto,512,256,674,9,29647.75,29457.90,19.98 -divrem,kernel,512,256,680,9,29444.79,29373.65,20.03 -divrem,floor,512,256,683,9,29497.44,29289.17,20.14 -divrem,gmp,512,256,1223,9,16376.40,16267.85,20.04 -divrem,gmpz,512,256,1225,9,16344.63,16288.20,20.02 -divrem,auto,2000,1000,87,9,232036.39,231081.90,20.19 -divrem,kernel,2000,1000,87,9,231759.09,230436.30,20.15 -divrem,floor,2000,1000,87,9,231857.28,230059.87,20.19 -divrem,gmp,2000,1000,147,9,135465.99,134724.21,19.92 -divrem,gmpz,2000,1000,149,9,134623.88,134050.05,20.06 -divrem,auto,4000,2000,30,9,692958.33,686780.53,20.74 -divrem,kernel,4000,2000,30,9,685716.67,682469.43,20.59 -divrem,floor,4000,2000,30,9,686687.50,684263.87,20.60 -divrem,gmp,4000,2000,59,9,343437.85,341403.25,20.26 -divrem,gmpz,4000,2000,59,9,343791.66,343284.59,20.29 -divrem,auto,2000,100,213,9,94327.07,93640.26,20.15 -divrem,kernel,2000,100,213,9,93868.93,93380.08,20.01 -divrem,floor,2000,100,213,9,93831.57,93558.49,20.00 -divrem,gmp,2000,100,285,9,69391.81,69107.75,19.82 -divrem,gmpz,2000,100,289,9,69534.46,69055.36,20.07 -divrem,auto,65536,1,86,9,230676.35,225431.69,19.82 -divrem,kernel,65536,1,87,9,232210.72,229814.66,20.62 -divrem,floor,65536,1,87,9,230693.00,227479.89,20.10 -divrem,gmp,65536,1,120,9,171502.08,168905.21,20.62 -divrem,gmpz,65536,1,117,9,173424.86,172748.22,20.29 -tochars,auto,1,10,3345479,9,6.01,5.95,20.22 -tochars,kernel,1,10,593750,9,33.94,32.64,20.14 -tochars,gmp,1,10,1156801,9,17.12,16.87,19.71 -tochars,gmpz,1,10,775876,9,25.62,25.46,19.86 -tochars,auto,4,10,260078,9,77.20,76.84,20.12 -tochars,kernel,4,10,196148,9,101.31,99.62,19.86 -tochars,gmp,4,10,278203,9,71.71,71.03,19.98 -tochars,gmpz,4,10,214725,9,93.43,92.51,20.04 -tochars,auto,16,10,23596,9,845.73,835.47,20.03 -tochars,kernel,16,10,26786,9,735.83,727.51,19.71 -tochars,gmp,16,10,39058,9,511.12,496.83,19.87 -tochars,gmpz,16,10,33105,9,601.20,589.23,19.85 -tochars,auto,64,10,4197,9,4714.95,4618.16,19.79 -tochars,kernel,64,10,4366,9,4545.73,4466.83,19.78 -tochars,gmp,64,10,7049,9,2830.26,2768.38,19.88 -tochars,gmpz,64,10,6357,9,3151.34,3062.51,19.99 -tochars,auto,256,10,586,9,33966.23,33614.48,19.87 -tochars,kernel,256,10,631,9,32762.55,32339.08,20.65 -tochars,gmp,256,10,1062,9,18849.03,18766.16,20.01 -tochars,gmpz,256,10,987,9,20300.36,20046.61,19.99 -tochars,auto,2000,10,30,9,676770.83,670436.13,20.30 -tochars,kernel,2000,10,30,9,672373.63,667763.90,20.19 -tochars,gmp,2000,10,50,9,404115.00,401920.82,20.18 -tochars,gmpz,2000,10,48,9,417298.60,415923.60,20.02 -tochars,auto,16,16,241202,9,86.10,82.62,20.59 -tochars,gmp,16,16,252641,9,79.35,78.37,20.06 -tochars,gmpz,16,16,122331,9,158.02,155.72,19.57 -tochars,auto,2000,16,2094,9,9799.81,9428.07,20.43 -tochars,gmp,2000,16,2114,9,8974.30,8841.65,19.23 -tochars,gmpz,2000,16,1210,9,17020.63,16577.00,20.56 -fromchars,auto,4,10,203231,9,91.20,89.67,18.89 -fromchars,kernel,4,10,617953,9,33.91,32.32,20.85 -fromchars,gmp,4,10,641832,9,31.43,30.05,20.19 -fromchars,gmpz,4,10,260246,9,76.98,76.71,20.27 -fromchars,auto,16,10,49163,9,405.67,395.14,20.05 -fromchars,kernel,16,10,107255,9,192.30,187.35,20.59 -fromchars,gmp,16,10,138724,9,142.55,141.19,19.91 -fromchars,gmpz,16,10,62612,9,315.89,313.57,19.81 -fromchars,auto,64,10,9169,9,2182.63,2165.36,20.01 -fromchars,kernel,64,10,10780,9,1855.48,1830.09,19.97 -fromchars,gmp,64,10,21120,9,950.62,944.90,20.09 -fromchars,gmpz,64,10,12343,9,1609.91,1600.06,19.90 -fromchars,auto,256,10,1447,9,13795.30,13707.30,19.95 -fromchars,kernel,256,10,1739,9,11507.52,11480.35,20.03 -fromchars,gmp,256,10,2531,9,7979.82,7905.74,20.16 -fromchars,gmpz,256,10,1895,9,10512.77,10442.19,20.09 -fromchars,auto,2000,10,67,9,300319.64,299183.46,20.11 -fromchars,kernel,2000,10,71,9,282872.65,281453.65,20.08 -fromchars,gmp,2000,10,110,9,183458.34,182513.64,20.16 -fromchars,gmpz,2000,10,99,9,202939.39,202356.90,20.11 diff --git a/tests/beman/big_int/perf/item1/macr3_new64_seed2a.csv b/tests/beman/big_int/perf/item1/macr3_new64_seed2a.csv deleted file mode 100644 index 3eaa9478..00000000 --- a/tests/beman/big_int/perf/item1/macr3_new64_seed2a.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T18:03:21Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,3187961,9,5.98,5.95,19.24 -add,inplace,1,1,5374113,9,1.87,1.86,20.50 -add,kernel,1,1,17307390,9,1.14,1.14,19.77 -add,floor,1,1,2118852,9,10.84,9.44,22.28 -add,gmp,1,1,13449662,9,1.49,1.48,20.00 -add,gmpz,1,1,6734055,9,2.98,2.96,20.06 -add,auto,2,2,1281145,9,15.58,15.37,20.12 -add,inplace,2,2,2513698,9,3.98,3.97,20.21 -add,kernel,2,2,14390826,9,1.39,1.39,20.05 -add,floor,2,2,2024397,9,9.48,9.41,19.23 -add,gmp,2,2,11509214,9,1.74,1.72,19.99 -add,gmpz,2,2,6185644,9,3.26,2.98,21.14 -add,auto,4,4,1387742,9,14.67,14.02,20.27 -add,inplace,4,4,2642526,9,3.77,3.77,20.00 -add,kernel,4,4,10341226,9,1.93,1.92,19.98 -add,floor,4,4,1918593,9,10.20,10.16,19.73 -add,gmp,4,4,11320623,9,1.74,1.73,19.66 -add,gmpz,4,4,5599098,9,4.29,3.98,24.72 -add,auto,8,8,1310284,9,15.19,15.08,20.01 -add,inplace,8,8,2366897,9,4.23,4.22,20.02 -add,kernel,8,8,5701254,9,3.49,3.47,19.89 -add,floor,8,8,1708654,9,11.89,11.68,20.28 -add,gmp,8,8,8963207,9,2.23,2.23,20.02 -add,gmpz,8,8,4379644,9,4.64,4.33,20.42 -add,auto,16,16,1214843,9,17.17,16.30,20.54 -add,inplace,16,16,1750638,9,5.72,5.70,20.06 -add,kernel,16,16,2646890,9,7.53,7.43,19.91 -add,floor,16,16,1419460,9,14.09,13.86,19.92 -add,gmp,16,16,6693258,9,3.14,2.96,20.88 -add,gmpz,16,16,4473515,9,4.47,4.23,19.81 -add,auto,64,64,526127,9,37.81,37.75,19.89 -add,inplace,64,64,503317,9,19.96,19.92,20.19 -add,kernel,64,64,400876,9,48.66,48.08,19.49 -add,floor,64,64,330647,9,60.75,59.81,20.10 -add,gmp,64,64,1771317,9,11.07,11.01,19.68 -add,gmpz,64,64,1502319,9,13.33,13.07,20.03 -add,auto,256,256,187003,9,109.92,107.48,20.52 -add,inplace,256,256,98855,9,101.00,98.57,19.85 -add,kernel,256,256,84872,9,235.99,228.27,19.92 -add,floor,256,256,81347,9,244.67,237.14,19.82 -add,gmp,256,256,351577,9,57.14,56.94,20.10 -add,gmpz,256,256,341833,9,58.44,57.58,19.94 -add,auto,1024,1024,44177,9,446.64,432.39,19.85 -add,inplace,1024,1024,22853,9,435.78,427.08,19.99 -add,kernel,1024,1024,21183,9,973.41,951.24,20.54 -add,floor,1024,1024,20414,9,984.24,943.64,19.95 -add,gmp,1024,1024,78857,9,251.81,246.16,19.82 -add,gmpz,1024,1024,79439,9,252.28,248.52,20.01 -add,auto,2000,2000,23117,9,870.79,867.71,20.28 -add,inplace,2000,2000,11614,9,846.23,824.91,19.54 -add,kernel,2000,2000,10478,9,1912.00,1876.49,20.03 -add,floor,2000,2000,10295,9,1925.25,1865.66,19.76 -add,gmp,2000,2000,40506,9,495.45,490.19,20.11 -add,gmpz,2000,2000,40538,9,502.00,489.25,20.23 -add,auto,1024,1,196851,9,102.81,94.14,20.56 -add,inplace,1024,1,3233099,9,3.11,3.10,20.08 -add,kernel,1024,1,27220,9,733.73,710.04,19.92 -add,floor,1024,1,26291,9,751.73,733.80,19.70 -add,gmp,1024,1,76994,9,260.70,254.82,20.03 -add,gmpz,1024,1,75161,9,265.03,261.69,19.95 -sub,auto,1,1,3496670,9,5.70,5.52,19.88 -sub,inplace,1,1,4892543,9,1.99,1.98,19.48 -sub,kernel,1,1,19088079,9,1.04,1.04,19.95 -sub,floor,1,1,11529227,9,1.74,1.74,20.05 -sub,gmp,1,1,13409641,9,1.49,1.48,19.97 -sub,gmpz,1,1,8076486,9,2.48,2.48,20.04 -sub,auto,2,2,1372657,9,14.52,14.39,19.95 -sub,inplace,2,2,2714062,9,3.83,3.79,20.79 -sub,kernel,2,2,14388278,9,1.41,1.39,20.22 -sub,floor,2,2,2121127,9,9.52,9.43,20.29 -sub,gmp,2,2,10088859,9,1.99,1.97,20.01 -sub,gmpz,2,2,6693992,9,2.99,2.98,20.09 -sub,auto,4,4,1227262,9,15.23,14.80,18.60 -sub,inplace,4,4,2466630,9,4.27,3.97,21.28 -sub,kernel,4,4,10423968,9,1.92,1.92,20.03 -sub,floor,4,4,1952881,9,9.69,9.66,19.08 -sub,gmp,4,4,11385034,9,1.74,1.73,19.80 -sub,gmpz,4,4,7322560,9,2.74,2.73,20.05 -sub,auto,8,8,1255898,9,16.41,15.79,20.51 -sub,inplace,8,8,2240607,9,4.42,4.25,19.64 -sub,kernel,8,8,5768865,9,3.48,3.47,20.10 -sub,floor,8,8,1697770,9,11.69,11.43,19.75 -sub,gmp,8,8,8949669,9,2.24,2.23,20.06 -sub,gmpz,8,8,6122786,9,3.24,3.22,19.87 -sub,auto,16,16,1170151,9,18.00,17.79,21.13 -sub,inplace,16,16,1818392,9,5.35,5.33,19.46 -sub,kernel,16,16,2594133,9,7.70,7.68,19.98 -sub,floor,16,16,1322867,9,15.15,15.12,20.09 -sub,gmp,16,16,6176184,9,3.22,3.06,19.82 -sub,gmpz,16,16,4736012,9,4.22,4.22,20.01 -sub,auto,64,64,554520,9,35.93,35.69,19.89 -sub,inplace,64,64,506489,9,19.81,19.54,20.06 -sub,kernel,64,64,377956,9,53.29,52.49,20.14 -sub,floor,64,64,328159,9,60.98,59.85,20.04 -sub,gmp,64,64,1772054,9,11.09,11.00,19.66 -sub,gmpz,64,64,1477090,9,13.47,13.34,19.87 -sub,auto,256,256,181297,9,110.50,108.37,20.00 -sub,inplace,256,256,98634,9,101.05,98.18,19.85 -sub,kernel,256,256,84288,9,237.19,231.49,19.96 -sub,floor,256,256,83166,9,247.25,243.58,20.58 -sub,gmp,256,256,350157,9,57.27,56.81,20.05 -sub,gmpz,256,256,343493,9,57.78,56.67,19.82 -sub,auto,1024,1024,44053,9,454.00,452.85,20.02 -sub,inplace,1024,1024,23107,9,433.06,432.73,20.02 -sub,kernel,1024,1024,20588,9,973.85,969.00,20.03 -sub,floor,1024,1024,20234,9,985.94,984.87,19.96 -sub,gmp,1024,1024,79464,9,251.61,247.41,19.98 -sub,gmpz,1024,1024,81392,9,251.63,247.36,20.45 -sub,auto,2000,2000,22581,9,874.36,847.14,19.73 -sub,inplace,2000,2000,11669,9,850.39,834.77,19.77 -sub,kernel,2000,2000,10406,9,1897.43,1853.58,19.73 -sub,floor,2000,2000,10309,9,1938.02,1888.63,19.93 -sub,gmp,2000,2000,40924,9,495.28,482.92,20.23 -sub,gmpz,2000,2000,40667,9,496.43,486.58,20.15 -sub,auto,1024,1,178117,9,120.62,103.36,21.31 -sub,inplace,1024,1,3090528,9,3.23,3.10,19.73 -sub,kernel,1024,1,27222,9,730.89,707.77,19.76 -sub,floor,1024,1,27477,9,756.99,753.53,20.97 -sub,gmp,1024,1,75739,9,262.07,258.94,19.78 -sub,gmpz,1024,1,75680,9,267.12,258.97,20.14 -shl,auto,1,13,1584462,9,12.32,12.29,19.89 -shl,inplace,1,13,3009395,9,3.37,3.34,20.32 -shl,kernel,1,13,8055683,9,2.48,2.45,19.92 -shl,kernelip,1,13,8932615,9,1.74,1.66,31.03 -shl,floor,1,13,1878466,9,10.69,10.40,19.98 -shl,gmp,1,13,16121314,9,1.24,1.24,20.00 -shl,gmpz,1,13,10075787,9,1.99,1.98,20.21 -shl,auto,4,13,1553593,9,13.02,12.79,19.95 -shl,inplace,4,13,1902830,9,5.46,5.13,20.70 -shl,kernel,4,13,5373345,9,3.72,3.72,20.01 -shl,kernelip,4,13,2982082,9,3.37,3.33,20.07 -shl,floor,4,13,1581492,9,13.15,12.69,20.77 -shl,gmp,4,13,10079587,9,1.99,1.97,20.10 -shl,gmpz,4,13,7306871,9,2.73,2.72,19.95 -shl,auto,16,13,1240599,9,15.05,14.93,19.04 -shl,inplace,16,13,1456836,9,6.89,6.84,20.27 -shl,kernel,16,13,4884518,9,4.09,4.08,20.04 -shl,kernelip,16,13,1448841,9,6.81,6.78,19.87 -shl,floor,16,13,1687943,9,11.97,11.84,20.17 -shl,gmp,16,13,5724583,9,3.48,3.47,19.94 -shl,gmpz,16,13,3893134,9,5.18,5.16,20.31 -shl,auto,256,13,486007,9,41.08,40.90,20.00 -shl,inplace,256,13,222737,9,45.00,44.76,20.04 -shl,kernel,256,13,407517,9,49.13,48.90,20.06 -shl,kernelip,256,13,206017,9,48.68,48.56,20.06 -shl,floor,256,13,348131,9,57.14,56.63,19.87 -shl,gmp,256,13,543826,9,36.94,36.88,20.11 -shl,gmpz,256,13,528128,9,37.89,37.77,20.03 -shl,auto,2000,13,75179,9,257.73,242.07,19.71 -shl,inplace,2000,13,28901,9,346.46,344.20,20.03 -shl,kernel,2000,13,51717,9,386.83,384.05,19.98 -shl,kernelip,2000,13,26578,9,376.57,375.62,20.05 -shl,floor,2000,13,49422,9,403.66,401.07,19.97 -shl,gmp,2000,13,21064,9,1604.78,1276.23,25.50 -shl,gmpz,2000,13,21854,9,2069.55,1060.56,24.95 -shl,auto,2000,77,68468,9,492.83,288.89,35.38 -shl,inplace,2000,77,41620,9,233.60,222.03,19.30 -shl,kernel,2000,77,37837,9,534.40,527.68,20.24 -shl,kernelip,2000,77,19248,9,520.48,514.89,20.04 -shl,floor,2000,77,36583,9,545.49,543.96,19.99 -shl,gmp,2000,77,68975,9,293.40,288.12,20.73 -shl,gmpz,2000,77,68932,9,288.95,286.97,19.92 -shr,auto,1,13,2980880,9,6.70,6.68,20.03 -shr,inplace,1,13,3250432,9,3.08,3.05,19.97 -shr,kernel,1,13,8969732,9,2.25,2.22,20.15 -shr,floor,1,13,8037644,9,2.48,2.47,20.19 -shr,gmp,1,13,20000001,9,1.00,0.99,20.11 -shr,gmpz,1,13,10052442,9,1.98,1.98,19.97 -shr,auto,4,13,1426968,9,13.57,13.49,19.68 -shr,inplace,4,13,2038606,9,5.02,4.44,19.98 -shr,kernel,4,13,5350273,9,3.73,3.72,20.00 -shr,floor,4,13,1615782,9,12.40,12.19,20.12 -shr,gmp,4,13,11503567,9,1.74,1.73,20.00 -shr,gmpz,4,13,7314166,9,2.73,2.72,19.97 -shr,auto,16,13,1133428,9,17.79,17.65,20.33 -shr,inplace,16,13,1629216,9,6.11,6.10,19.95 -shr,kernel,16,13,4779799,9,4.17,4.16,19.96 -shr,floor,16,13,1531219,9,13.17,12.69,20.03 -shr,gmp,16,13,6186604,9,3.23,3.22,19.97 -shr,gmpz,16,13,4719718,9,4.24,4.23,20.01 -shr,auto,256,13,476771,9,42.56,42.01,20.59 -shr,inplace,256,13,223337,9,44.67,44.35,19.95 -shr,kernel,256,13,298934,9,66.70,66.30,19.92 -shr,floor,256,13,265252,9,75.33,74.71,19.98 -shr,gmp,256,13,545023,9,36.66,36.55,19.99 -shr,gmpz,256,13,524854,9,38.04,38.00,19.97 -shr,auto,2000,13,84772,9,287.90,229.28,21.88 -shr,inplace,2000,13,28954,9,345.22,344.21,20.00 -shr,kernel,2000,13,39111,9,511.43,506.99,20.01 -shr,floor,2000,13,38122,9,523.34,518.90,19.96 -shr,gmp,2000,13,68170,9,295.55,290.31,20.13 -shr,gmpz,2000,13,69072,9,298.19,287.32,20.85 -shr,auto,2000,77,84982,9,286.55,246.13,21.22 -shr,inplace,2000,77,50912,9,195.50,194.99,19.90 -shr,kernel,2000,77,38836,9,517.07,514.85,20.12 -shr,floor,2000,77,36513,9,525.89,522.16,19.23 -shr,gmp,2000,77,69111,9,290.17,288.93,20.08 -shr,gmpz,2000,77,68471,9,286.34,285.27,19.61 -mul,auto,1,1,1454518,9,14.04,13.71,20.40 -mul,gmp,1,1,5290593,9,3.74,3.72,19.80 -mul,gmpz,1,1,7301097,9,2.74,2.73,20.01 -mul,auto,2,2,1083924,9,18.40,18.24,19.91 -mul,kernel,2,2,3238532,9,6.32,6.10,20.28 -mul,floor,2,2,1439126,9,14.66,13.95,21.01 -mul,gmp,2,2,4479366,9,4.72,4.52,21.05 -mul,gmpz,2,2,3211773,9,6.23,6.21,20.04 -mul,auto,3,3,1015292,9,19.56,19.22,20.00 -mul,kernel,3,3,2442276,9,8.08,7.92,19.69 -mul,floor,3,3,1186792,9,16.70,16.40,19.80 -mul,gmp,3,3,3219645,9,6.07,6.04,19.59 -mul,gmpz,3,3,2367072,9,8.04,7.86,19.48 -mul,auto,4,4,925302,9,21.59,21.34,20.01 -mul,kernel,4,4,1805768,9,11.06,11.00,20.01 -mul,floor,4,4,1181599,9,16.91,16.87,20.05 -mul,gmp,4,4,2232459,9,8.96,8.95,20.15 -mul,gmpz,4,4,1827527,9,10.95,10.88,20.03 -mul,auto,6,6,737042,9,27.18,27.08,20.06 -mul,kernel,6,6,1021143,9,19.25,19.16,19.72 -mul,floor,6,6,794830,9,23.98,23.86,19.42 -mul,gmp,6,6,1391454,9,14.43,14.36,20.10 -mul,gmpz,6,6,1039976,9,18.78,18.54,19.68 -mul,auto,8,8,574094,9,35.18,34.67,20.24 -mul,kernel,8,8,872469,9,23.04,22.93,20.12 -mul,floor,8,8,659995,9,30.40,30.26,20.07 -mul,gmp,8,8,878449,9,22.67,22.42,20.32 -mul,gmpz,8,8,764575,9,26.90,24.25,20.23 -mul,auto,12,12,373373,9,53.82,53.50,20.08 -mul,kernel,12,12,484902,9,41.35,41.26,20.08 -mul,floor,12,12,402965,9,49.36,49.06,19.87 -mul,gmp,12,12,452187,9,44.22,44.12,19.99 -mul,gmpz,12,12,429230,9,46.66,46.57,20.03 -mul,auto,16,16,242078,9,82.28,82.16,19.93 -mul,kernel,16,16,287565,9,69.77,69.38,20.05 -mul,floor,16,16,254564,9,78.47,77.96,19.97 -mul,gmp,16,16,262351,9,76.21,75.93,20.01 -mul,gmpz,16,16,255305,9,77.92,77.62,19.99 -mul,auto,32,32,71003,9,281.92,280.17,20.03 -mul,kernel,32,32,77418,9,258.22,257.31,19.98 -mul,floor,32,32,71911,9,279.14,276.51,20.05 -mul,gmp,32,32,77685,9,259.31,255.86,20.15 -mul,gmpz,32,32,77921,9,256.45,255.60,20.20 -mul,auto,64,64,19525,9,1008.68,1004.75,19.69 -mul,kernel,64,64,20301,9,982.72,980.11,19.97 -mul,floor,64,64,19818,9,1010.92,1006.36,20.05 -mul,gmp,64,64,26015,9,772.56,770.64,20.11 -mul,gmpz,64,64,25883,9,775.01,772.75,20.07 -mul,auto,128,128,5613,9,3582.29,3559.42,20.16 -mul,kernel,128,128,5574,9,3589.52,3579.66,20.05 -mul,floor,128,128,5573,9,3594.34,3588.34,20.25 -mul,gmp,128,128,7506,9,2655.80,2642.92,19.95 -mul,gmpz,128,128,6619,9,3009.43,2999.09,19.96 -mul,auto,256,256,1661,9,12035.97,12015.98,20.01 -mul,kernel,256,256,1687,9,11857.91,11846.72,20.01 -mul,floor,256,256,1695,9,11776.62,11730.58,19.98 -mul,gmp,256,256,2549,9,7830.15,7814.29,19.97 -mul,gmpz,256,256,2557,9,7851.26,7831.31,20.08 -mul,auto,512,512,544,9,36915.36,36815.56,20.17 -mul,kernel,512,512,545,9,36939.83,36786.93,20.14 -mul,floor,512,512,542,9,36982.86,36796.28,20.04 -mul,gmp,512,512,1049,9,19198.16,19000.91,20.09 -mul,gmpz,512,512,1051,9,19011.66,18970.50,20.00 -mul,auto,1000,1000,189,9,106932.32,106513.23,20.20 -mul,kernel,1000,1000,188,9,106815.82,106245.13,20.06 -mul,floor,1000,1000,187,9,106664.66,106211.45,19.95 -mul,gmp,1000,1000,364,9,55488.78,54887.48,20.17 -mul,gmpz,1000,1000,363,9,55124.77,54639.46,20.02 -mul,auto,2000,2000,67,9,301390.54,300758.09,20.20 -mul,kernel,2000,2000,67,9,301696.51,298480.73,20.19 -mul,floor,2000,2000,67,9,302231.34,299708.33,20.24 -mul,gmp,2000,2000,135,9,148240.13,147779.32,20.01 -mul,gmpz,2000,2000,135,9,148754.93,148078.40,20.08 -mul,auto,2000,100,430,9,46293.02,46189.53,19.91 -mul,kernel,2000,100,429,9,46706.20,46465.42,20.06 -mul,floor,2000,100,429,9,46697.94,46495.05,20.05 -mul,gmp,2000,100,568,9,35218.75,35090.15,20.02 -mul,gmpz,2000,100,576,9,34675.71,34612.41,19.99 -sqr,auto,4,4,936849,9,21.42,21.33,20.09 -sqr,kernel,4,4,1766588,9,11.27,11.09,19.85 -sqr,floor,4,4,1227304,9,16.20,16.14,20.08 -sqr,gmp,4,4,2871787,9,6.96,6.94,20.43 -sqr,gmpz,4,4,2003715,9,9.80,9.69,19.74 -sqr,auto,16,16,261379,9,75.79,75.61,19.83 -sqr,kernel,16,16,327529,9,60.99,60.62,19.97 -sqr,floor,16,16,289535,9,71.84,69.18,20.68 -sqr,gmp,16,16,321509,9,62.01,60.96,19.91 -sqr,gmpz,16,16,303474,9,65.93,65.19,19.96 -sqr,auto,64,64,33285,9,601.29,599.16,20.05 -sqr,kernel,64,64,34385,9,585.70,579.67,20.07 -sqr,floor,64,64,33124,9,600.10,597.49,19.91 -sqr,gmp,64,64,29163,9,674.91,667.76,19.83 -sqr,gmpz,64,64,29902,9,674.11,672.89,20.16 -sqr,auto,512,512,825,9,24334.95,24179.80,20.06 -sqr,kernel,512,512,821,9,24347.19,24235.74,20.01 -sqr,floor,512,512,815,9,24392.38,24242.89,19.90 -sqr,gmp,512,512,1215,9,16472.33,16318.83,19.99 -sqr,gmpz,512,512,1018,9,19663.02,19420.39,20.02 -sqr,auto,2000,2000,90,9,223293.98,222722.22,20.12 -sqr,kernel,2000,2000,90,9,223048.14,222559.72,20.08 -sqr,floor,2000,2000,90,9,223307.41,222121.76,20.11 -sqr,gmp,2000,2000,167,9,120435.88,119396.71,20.12 -sqr,gmpz,2000,2000,166,9,122026.86,120425.45,20.22 -divrem,auto,2,1,933122,9,21.42,21.34,20.00 -divrem,kernel,2,1,3183601,9,6.38,6.27,20.33 -divrem,floor,2,1,1423233,9,13.91,13.70,19.84 -divrem,gmp,2,1,3962932,9,5.06,5.00,20.02 -divrem,gmpz,2,1,2292656,9,8.81,8.76,20.29 -divrem,auto,8,4,250298,9,79.72,79.01,19.93 -divrem,kernel,8,4,378751,9,52.87,52.01,20.05 -divrem,floor,8,4,304915,9,65.37,64.50,19.92 -divrem,gmp,8,4,481696,9,41.73,41.26,20.08 -divrem,gmpz,8,4,450680,9,44.45,44.11,20.00 -divrem,auto,32,16,46226,9,426.06,418.56,19.69 -divrem,kernel,32,16,50766,9,390.43,383.86,19.85 -divrem,floor,32,16,49135,9,410.21,397.67,20.07 -divrem,gmp,32,16,95042,9,210.22,207.02,20.07 -divrem,gmpz,32,16,93585,9,215.26,203.99,20.01 -divrem,auto,128,64,5352,9,3767.18,3656.21,20.14 -divrem,kernel,128,64,5469,9,3565.38,3519.48,19.58 -divrem,floor,128,64,5468,9,3657.01,3532.09,19.90 -divrem,gmp,128,64,11331,9,1769.72,1764.07,20.07 -divrem,gmpz,128,64,11305,9,1769.33,1759.73,20.04 -divrem,auto,512,256,725,9,27725.69,27510.29,20.11 -divrem,kernel,512,256,738,9,27331.13,27140.81,20.20 -divrem,floor,512,256,732,9,27286.83,27112.31,19.96 -divrem,gmp,512,256,1206,9,16642.00,16554.80,20.14 -divrem,gmpz,512,256,1194,9,16684.01,16433.87,19.84 -divrem,auto,2000,1000,87,9,232656.13,231856.32,20.25 -divrem,kernel,2000,1000,87,9,232449.23,231496.64,20.22 -divrem,floor,2000,1000,87,9,232791.18,231706.43,20.31 -divrem,gmp,2000,1000,147,9,136822.56,135251.70,20.08 -divrem,gmpz,2000,1000,147,9,134691.33,133630.95,19.99 -divrem,auto,4000,2000,29,9,690008.62,688683.90,20.02 -divrem,kernel,4000,2000,29,9,688333.31,683339.10,19.97 -divrem,floor,4000,2000,30,9,688027.80,685293.03,20.65 -divrem,gmp,4000,2000,59,9,341074.15,339056.51,20.13 -divrem,gmpz,4000,2000,58,9,343826.88,342929.60,19.96 -divrem,auto,2000,100,211,9,94767.57,94604.27,20.00 -divrem,kernel,2000,100,211,9,95284.17,94145.54,20.10 -divrem,floor,2000,100,211,9,94707.55,94243.29,19.97 -divrem,gmp,2000,100,291,9,68793.96,68254.44,20.01 -divrem,gmpz,2000,100,292,9,69060.36,68527.40,20.24 -divrem,auto,65536,1,88,9,246067.24,225897.26,21.11 -divrem,kernel,65536,1,88,9,228148.20,224778.41,20.04 -divrem,floor,65536,1,85,9,231956.38,227919.12,19.84 -divrem,gmp,65536,1,118,9,170466.10,166066.74,20.14 -divrem,gmpz,65536,1,118,9,170632.42,165449.15,20.05 -tochars,auto,1,10,3325424,9,5.99,5.98,19.93 -tochars,kernel,1,10,575788,9,34.84,34.11,19.98 -tochars,gmp,1,10,1203407,9,16.06,15.76,19.33 -tochars,gmpz,1,10,824500,9,24.30,24.23,20.07 -tochars,auto,4,10,219675,9,91.28,91.00,20.08 -tochars,kernel,4,10,194035,9,103.00,102.19,20.03 -tochars,gmp,4,10,258841,9,77.17,76.21,20.00 -tochars,gmpz,4,10,203052,9,97.39,96.71,19.80 -tochars,auto,16,10,23448,9,836.36,816.29,19.56 -tochars,kernel,16,10,27555,9,741.38,727.15,20.57 -tochars,gmp,16,10,39062,9,510.47,497.13,19.84 -tochars,gmpz,16,10,33045,9,602.56,591.62,19.90 -tochars,auto,64,10,4175,9,4774.08,4634.55,19.90 -tochars,kernel,64,10,4381,9,4502.63,4430.71,19.72 -tochars,gmp,64,10,7056,9,2834.24,2793.20,19.97 -tochars,gmpz,64,10,6347,9,3159.29,3102.04,20.05 -tochars,auto,256,10,605,9,33745.11,33523.21,20.46 -tochars,kernel,256,10,616,9,32888.12,32140.29,22.02 -tochars,gmp,256,10,1024,9,19217.98,18814.09,19.71 -tochars,gmpz,256,10,977,9,20440.38,20225.82,19.94 -tochars,auto,2000,10,30,9,680558.33,673829.17,20.43 -tochars,kernel,2000,10,30,9,669844.47,660640.27,20.08 -tochars,gmp,2000,10,50,9,404277.50,402646.68,20.23 -tochars,gmpz,2000,10,49,9,415803.57,414097.80,20.38 -tochars,auto,16,16,241755,9,86.74,83.21,20.81 -tochars,gmp,16,16,251562,9,79.34,78.61,20.02 -tochars,gmpz,16,16,119057,9,160.77,156.34,19.06 -tochars,auto,2000,16,2035,9,9920.07,9693.20,20.30 -tochars,gmp,2000,16,2176,9,9434.76,9122.59,20.52 -tochars,gmpz,2000,16,1146,9,17070.61,16857.73,19.67 -fromchars,auto,4,10,213813,9,93.91,93.05,20.14 -fromchars,kernel,4,10,615079,9,32.61,32.16,20.03 -fromchars,gmp,4,10,642525,9,31.15,30.76,20.04 -fromchars,gmpz,4,10,261518,9,75.66,74.59,19.93 -fromchars,auto,16,10,51925,9,386.92,379.96,20.03 -fromchars,kernel,16,10,103008,9,192.78,186.03,19.80 -fromchars,gmp,16,10,140157,9,144.35,139.88,20.09 -fromchars,gmpz,16,10,62797,9,328.62,319.23,20.48 -fromchars,auto,64,10,9121,9,2191.79,2183.70,20.00 -fromchars,kernel,64,10,10698,9,1852.83,1824.02,19.83 -fromchars,gmp,64,10,20829,9,954.83,943.38,19.88 -fromchars,gmpz,64,10,12379,9,1601.02,1585.21,19.81 -fromchars,auto,256,10,1448,9,13796.16,13777.19,20.03 -fromchars,kernel,256,10,1696,9,11653.23,11553.78,19.75 -fromchars,gmp,256,10,2514,9,7954.07,7921.52,20.00 -fromchars,gmpz,256,10,1830,9,10758.47,10594.56,19.75 -fromchars,auto,2000,10,67,9,302790.42,301310.31,20.29 -fromchars,kernel,2000,10,71,9,289223.00,285057.51,20.80 -fromchars,gmp,2000,10,109,9,187415.91,186014.15,20.48 -fromchars,gmpz,2000,10,96,9,208323.35,204031.69,20.14 diff --git a/tests/beman/big_int/perf/item1/macr3_new64_seed2b.csv b/tests/beman/big_int/perf/item1/macr3_new64_seed2b.csv deleted file mode 100644 index cafb0dde..00000000 --- a/tests/beman/big_int/perf/item1/macr3_new64_seed2b.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T18:08:14Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,3220040,9,6.25,5.82,20.12 -add,inplace,1,1,5294307,9,1.87,1.86,19.82 -add,kernel,1,1,17483228,9,1.15,1.14,20.14 -add,floor,1,1,2174271,9,9.44,9.06,20.48 -add,gmp,1,1,13398081,9,1.50,1.49,20.04 -add,gmpz,1,1,6695621,9,2.99,2.98,21.39 -add,auto,2,2,1290652,9,15.99,15.54,20.64 -add,inplace,2,2,2427279,9,4.11,4.02,19.94 -add,kernel,2,2,14392615,9,1.39,1.39,20.10 -add,floor,2,2,2003606,9,9.78,9.73,19.69 -add,gmp,2,2,10125181,9,2.00,1.99,20.24 -add,gmpz,2,2,6179758,9,3.01,2.99,23.25 -add,auto,4,4,1386617,9,14.28,14.18,19.93 -add,inplace,4,4,2663512,9,3.75,3.73,20.28 -add,kernel,4,4,10202851,9,1.95,1.93,19.89 -add,floor,4,4,1913887,9,10.25,10.22,20.00 -add,gmp,4,4,11473870,9,1.75,1.74,20.09 -add,gmpz,4,4,6157691,9,3.84,3.25,23.60 -add,auto,8,8,1313796,9,15.56,15.15,20.44 -add,inplace,8,8,2419620,9,4.24,4.12,20.42 -add,kernel,8,8,5720421,9,3.49,3.45,19.93 -add,floor,8,8,1623065,9,12.00,11.95,19.82 -add,gmp,8,8,8918249,9,2.25,2.24,20.05 -add,gmpz,8,8,4886404,9,4.32,4.20,21.09 -add,auto,16,16,1149038,9,17.52,17.39,20.19 -add,inplace,16,16,1747383,9,5.73,5.72,20.05 -add,kernel,16,16,2638106,9,7.59,7.48,20.00 -add,floor,16,16,1432275,9,13.97,13.93,20.19 -add,gmp,16,16,6167982,9,3.25,3.24,20.03 -add,gmpz,16,16,4510045,9,4.52,4.03,19.87 -add,auto,64,64,531053,9,37.87,37.59,20.11 -add,inplace,64,64,498194,9,20.02,19.92,19.93 -add,kernel,64,64,401457,9,49.50,48.29,19.77 -add,floor,64,64,328508,9,60.79,60.24,19.97 -add,gmp,64,64,1791136,9,11.11,10.97,19.91 -add,gmpz,64,64,1501957,9,13.41,13.15,20.10 -add,auto,256,256,182556,9,109.55,107.59,19.99 -add,inplace,256,256,98440,9,101.42,95.85,19.81 -add,kernel,256,256,84005,9,237.03,230.53,19.82 -add,floor,256,256,80179,9,248.58,245.09,19.97 -add,gmp,256,256,349406,9,57.69,57.14,20.13 -add,gmpz,256,256,344059,9,58.24,57.44,20.10 -add,auto,1024,1024,44109,9,451.20,436.64,19.83 -add,inplace,1024,1024,22877,9,438.49,427.95,19.97 -add,kernel,1024,1024,20627,9,982.11,943.34,20.15 -add,floor,1024,1024,19957,9,991.86,950.18,19.66 -add,gmp,1024,1024,78996,9,252.58,249.30,19.92 -add,gmpz,1024,1024,78882,9,252.71,250.17,19.92 -add,auto,2000,2000,22689,9,875.99,855.73,19.83 -add,inplace,2000,2000,11647,9,861.68,848.53,20.03 -add,kernel,2000,2000,10330,9,1942.30,1914.85,20.05 -add,floor,2000,2000,10354,9,1937.46,1904.35,20.00 -add,gmp,2000,2000,40328,9,496.85,491.46,20.01 -add,gmpz,2000,2000,40157,9,497.27,490.36,19.99 -add,auto,1024,1,217006,9,113.53,106.10,24.33 -add,inplace,1024,1,3214706,9,3.11,3.08,20.00 -add,kernel,1024,1,27225,9,745.53,731.97,20.24 -add,floor,1024,1,25984,9,760.08,735.78,19.67 -add,gmp,1024,1,75940,9,263.61,260.29,19.98 -add,gmpz,1024,1,74653,9,267.74,263.10,19.95 -sub,auto,1,1,3816071,9,5.71,5.24,21.20 -sub,inplace,1,1,5010591,9,1.99,1.99,20.03 -sub,kernel,1,1,18808585,9,1.05,1.04,19.82 -sub,floor,1,1,11510336,9,1.76,1.74,20.38 -sub,gmp,1,1,12898990,9,1.50,1.49,19.33 -sub,gmpz,1,1,8050843,9,2.49,2.48,20.07 -sub,auto,2,2,1341790,9,14.94,14.33,19.98 -sub,inplace,2,2,2635232,9,3.86,3.66,20.27 -sub,kernel,2,2,14282101,9,1.40,1.39,19.94 -sub,floor,2,2,2114725,9,9.26,9.22,19.77 -sub,gmp,2,2,9971294,9,1.99,1.97,19.88 -sub,gmpz,2,2,7274971,9,2.99,2.74,21.46 -sub,auto,4,4,1330082,9,14.30,14.26,19.06 -sub,inplace,4,4,2693496,9,3.86,3.62,20.65 -sub,kernel,4,4,10115062,9,2.00,1.97,20.73 -sub,floor,4,4,1954929,9,9.99,9.82,19.60 -sub,gmp,4,4,11463256,9,1.75,1.74,20.03 -sub,gmpz,4,4,7294207,9,2.74,2.73,20.01 -sub,auto,8,8,1231724,9,16.21,16.10,20.01 -sub,inplace,8,8,2360258,9,4.36,4.24,20.79 -sub,kernel,8,8,5705316,9,3.51,3.49,20.02 -sub,floor,8,8,1721754,9,11.49,11.22,20.09 -sub,gmp,8,8,8933181,9,2.24,2.23,19.99 -sub,gmpz,8,8,6189153,9,3.25,3.23,20.10 -sub,auto,16,16,1096008,9,18.08,17.68,19.71 -sub,inplace,16,16,1830305,9,5.42,5.35,19.85 -sub,kernel,16,16,2600777,9,7.71,7.69,20.04 -sub,floor,16,16,1342241,9,14.97,14.90,20.18 -sub,gmp,16,16,6594182,9,3.23,2.93,20.90 -sub,gmpz,16,16,4545167,9,4.41,4.38,20.05 -sub,auto,64,64,527911,9,36.06,36.00,19.11 -sub,inplace,64,64,502058,9,19.92,19.67,19.99 -sub,kernel,64,64,371196,9,53.62,52.43,19.86 -sub,floor,64,64,328858,9,61.09,60.45,20.11 -sub,gmp,64,64,1756443,9,11.08,11.03,19.51 -sub,gmpz,64,64,1481620,9,13.44,13.36,20.00 -sub,auto,256,256,175035,9,111.74,110.45,19.69 -sub,inplace,256,256,97686,9,101.60,100.88,19.84 -sub,kernel,256,256,83356,9,238.36,233.72,19.80 -sub,floor,256,256,80862,9,245.98,238.93,19.77 -sub,gmp,256,256,351837,9,57.42,57.36,20.25 -sub,gmpz,256,256,344452,9,58.03,57.41,20.00 -sub,auto,1024,1024,44181,9,455.25,441.01,20.09 -sub,inplace,1024,1024,22843,9,436.93,427.59,19.90 -sub,kernel,1024,1024,19820,9,984.96,974.65,19.56 -sub,floor,1024,1024,20450,9,987.38,963.34,20.07 -sub,gmp,1024,1024,78432,9,252.64,251.04,19.82 -sub,gmpz,1024,1024,78844,9,252.10,249.89,19.87 -sub,auto,2000,2000,22929,9,890.60,875.86,20.47 -sub,inplace,2000,2000,11579,9,855.58,826.87,19.75 -sub,kernel,2000,2000,10249,9,1934.60,1864.35,19.68 -sub,floor,2000,2000,10399,9,1954.75,1910.96,20.28 -sub,gmp,2000,2000,40271,9,495.87,487.83,19.92 -sub,gmpz,2000,2000,40126,9,498.84,493.11,20.00 -sub,auto,1024,1,216491,9,106.03,95.81,22.74 -sub,inplace,1024,1,3053127,9,3.30,3.25,20.12 -sub,kernel,1024,1,27044,9,748.48,711.10,20.30 -sub,floor,1024,1,26029,9,765.60,734.73,19.83 -sub,gmp,1024,1,76856,9,266.71,258.35,20.43 -sub,gmpz,1024,1,74725,9,267.59,260.28,19.89 -shl,auto,1,13,1577800,9,12.18,11.97,19.24 -shl,inplace,1,13,2910249,9,3.46,3.38,20.15 -shl,kernel,1,13,7918002,9,2.52,2.49,19.87 -shl,kernelip,1,13,8936705,9,1.45,1.13,26.31 -shl,floor,1,13,1787891,9,11.19,10.48,19.90 -shl,gmp,1,13,15939357,9,1.24,1.24,19.81 -shl,gmpz,1,13,9975388,9,2.00,1.99,19.91 -shl,auto,4,13,1541212,9,12.94,12.86,19.68 -shl,inplace,4,13,1955920,9,5.52,5.21,21.35 -shl,kernel,4,13,5303893,9,3.73,3.72,19.79 -shl,kernelip,4,13,3040496,9,3.37,3.32,20.49 -shl,floor,4,13,1484476,9,12.95,12.76,19.29 -shl,gmp,4,13,10004146,9,1.99,1.99,20.05 -shl,gmpz,4,13,7292406,9,2.75,2.74,20.22 -shl,auto,16,13,1282635,9,15.62,15.22,20.03 -shl,inplace,16,13,1457183,9,6.91,6.85,20.33 -shl,kernel,16,13,4877088,9,4.11,4.08,20.05 -shl,kernelip,16,13,1444732,9,6.83,6.74,20.01 -shl,floor,16,13,1636814,9,12.29,12.25,20.21 -shl,gmp,16,13,5720289,9,3.49,3.48,19.93 -shl,gmpz,16,13,3871474,9,5.14,5.03,19.86 -shl,auto,256,13,489098,9,41.36,40.94,20.20 -shl,inplace,256,13,220919,9,45.14,45.07,20.08 -shl,kernel,256,13,405714,9,49.74,49.54,20.23 -shl,kernelip,256,13,205796,9,48.91,48.76,20.15 -shl,floor,256,13,349725,9,57.10,56.48,19.96 -shl,gmp,256,13,541507,9,37.10,36.92,20.08 -shl,gmpz,256,13,525902,9,37.94,37.87,19.96 -shl,auto,2000,13,73735,9,264.19,249.00,20.16 -shl,inplace,2000,13,28840,9,349.20,346.73,20.26 -shl,kernel,2000,13,52029,9,385.65,384.96,20.13 -shl,kernelip,2000,13,26465,9,377.50,375.70,19.98 -shl,floor,2000,13,49597,9,402.29,400.18,19.98 -shl,gmp,2000,13,55988,9,1598.85,706.79,88.58 -shl,gmpz,2000,13,22053,9,2454.36,1312.50,27.32 -shl,auto,2000,77,67782,9,466.17,343.00,29.32 -shl,inplace,2000,77,45230,9,234.91,226.28,21.12 -shl,kernel,2000,77,37519,9,530.62,527.40,19.91 -shl,kernelip,2000,77,19248,9,522.17,511.29,20.06 -shl,floor,2000,77,36808,9,548.35,543.17,20.17 -shl,gmp,2000,77,67531,9,289.30,287.64,19.62 -shl,gmpz,2000,77,69453,9,290.21,288.12,20.22 -shr,auto,1,13,2862782,9,6.52,6.46,18.99 -shr,inplace,1,13,3212507,9,3.09,3.07,19.87 -shr,kernel,1,13,8881055,9,2.24,2.23,19.89 -shr,floor,1,13,8027334,9,2.49,2.44,20.06 -shr,gmp,1,13,20000001,9,0.99,0.99,19.91 -shr,gmpz,1,13,9977243,9,1.99,1.99,19.89 -shr,auto,4,13,1417049,9,14.02,13.85,19.96 -shr,inplace,4,13,2277643,9,4.74,4.55,20.94 -shr,kernel,4,13,5352521,9,3.74,3.73,20.02 -shr,floor,4,13,1595526,9,12.20,11.89,19.43 -shr,gmp,4,13,11461193,9,1.76,1.74,20.06 -shr,gmpz,4,13,7280858,9,2.75,2.74,20.00 -shr,auto,16,13,1102117,9,18.13,17.90,19.94 -shr,inplace,16,13,1636028,9,6.14,6.12,20.10 -shr,kernel,16,13,4888543,9,4.09,4.08,20.02 -shr,floor,16,13,1546943,9,13.31,12.91,20.52 -shr,gmp,16,13,6175270,9,3.23,3.23,19.98 -shr,gmpz,16,13,4713377,9,4.26,4.24,20.64 -shr,auto,256,13,472117,9,42.55,42.28,20.22 -shr,inplace,256,13,222430,9,44.84,44.71,19.97 -shr,kernel,256,13,299439,9,66.88,66.71,20.02 -shr,floor,256,13,264902,9,75.45,75.24,20.03 -shr,gmp,256,13,543715,9,36.79,36.67,20.02 -shr,gmpz,256,13,525943,9,38.15,38.04,20.07 -shr,auto,2000,13,86554,9,279.29,233.59,23.10 -shr,inplace,2000,13,28826,9,346.73,345.76,20.00 -shr,kernel,2000,13,38982,9,513.45,509.10,19.99 -shr,floor,2000,13,38074,9,527.07,523.78,20.06 -shr,gmp,2000,13,68205,9,315.49,303.08,21.23 -shr,gmpz,2000,13,62605,9,304.31,287.62,19.32 -shr,auto,2000,77,83231,9,257.70,227.97,21.01 -shr,inplace,2000,77,50895,9,198.06,196.29,20.12 -shr,kernel,2000,77,38569,9,517.74,514.53,19.96 -shr,floor,2000,77,38010,9,529.34,523.20,20.10 -shr,gmp,2000,77,68631,9,293.44,289.46,20.29 -shr,gmpz,2000,77,69607,9,288.78,286.34,20.26 -mul,auto,1,1,1383824,9,14.55,14.37,20.13 -mul,gmp,1,1,5350302,9,3.74,3.72,20.05 -mul,gmpz,1,1,7232939,9,2.76,2.74,19.95 -mul,auto,2,2,1105598,9,18.07,17.66,20.14 -mul,kernel,2,2,3227597,9,6.14,6.11,19.90 -mul,floor,2,2,1403392,9,14.20,14.15,20.15 -mul,gmp,2,2,4316435,9,4.49,4.47,19.53 -mul,gmpz,2,2,3124940,9,6.88,6.23,20.92 -mul,auto,3,3,965498,9,20.46,19.88,19.82 -mul,kernel,3,3,2509616,9,8.00,7.95,20.08 -mul,floor,3,3,1140299,9,17.47,17.23,19.94 -mul,gmp,3,3,3275740,9,6.09,6.05,19.99 -mul,gmpz,3,3,1963848,9,10.77,10.58,21.11 -mul,auto,4,4,957271,9,21.64,20.86,20.56 -mul,kernel,4,4,1791387,9,11.14,10.56,19.76 -mul,floor,4,4,1183817,9,17.17,16.86,20.24 -mul,gmp,4,4,2226357,9,9.00,8.97,20.05 -mul,gmpz,4,4,1754954,9,11.19,10.93,19.50 -mul,auto,6,6,742095,9,27.28,26.94,20.33 -mul,kernel,6,6,1034991,9,19.41,19.28,20.09 -mul,floor,6,6,826096,9,24.50,23.78,20.10 -mul,gmp,6,6,1384799,9,14.44,14.25,20.05 -mul,gmpz,6,6,1148968,9,17.77,17.34,19.66 -mul,auto,8,8,572273,9,35.07,34.79,20.14 -mul,kernel,8,8,867333,9,23.00,22.94,20.00 -mul,floor,8,8,657267,9,30.43,30.36,20.04 -mul,gmp,8,8,880457,9,22.77,22.70,20.22 -mul,gmpz,8,8,816111,9,24.52,24.47,20.09 -mul,auto,12,12,368661,9,54.06,53.55,19.87 -mul,kernel,12,12,483743,9,41.46,41.25,20.05 -mul,floor,12,12,403518,9,49.62,49.37,20.04 -mul,gmp,12,12,449424,9,44.33,44.20,19.93 -mul,gmpz,12,12,426516,9,46.78,46.66,19.95 -mul,auto,16,16,237972,9,82.70,82.51,19.68 -mul,kernel,16,16,285258,9,69.75,69.58,19.92 -mul,floor,16,16,239077,9,83.95,83.53,20.06 -mul,gmp,16,16,258838,9,77.93,77.33,20.16 -mul,gmpz,16,16,253161,9,79.39,79.14,20.09 -mul,auto,32,32,71338,9,282.76,280.72,20.20 -mul,kernel,32,32,77228,9,259.20,257.80,20.01 -mul,floor,32,32,71844,9,280.65,278.43,20.15 -mul,gmp,32,32,77351,9,256.79,255.35,19.87 -mul,gmpz,32,32,77656,9,257.88,256.67,20.04 -mul,auto,64,64,19293,9,1013.03,1008.82,19.61 -mul,kernel,64,64,20004,9,991.92,989.00,19.87 -mul,floor,64,64,19660,9,1015.04,1011.43,19.95 -mul,gmp,64,64,25750,9,775.61,772.17,20.00 -mul,gmpz,64,64,25529,9,778.83,774.88,19.88 -mul,auto,128,128,5573,9,3592.67,3579.70,20.24 -mul,kernel,128,128,5438,9,3680.00,3635.22,20.01 -mul,floor,128,128,5412,9,3627.84,3599.48,19.98 -mul,gmp,128,128,7496,9,2656.93,2642.05,19.96 -mul,gmpz,128,128,7507,9,2670.80,2660.15,20.08 -mul,auto,256,256,1663,9,12013.93,11904.36,19.96 -mul,kernel,256,256,1681,9,11814.35,11788.84,19.86 -mul,floor,256,256,1683,9,11850.84,11809.89,19.99 -mul,gmp,256,256,1935,9,10315.18,10249.03,19.94 -mul,gmpz,256,256,2558,9,7883.27,7851.17,20.25 -mul,auto,512,512,541,9,37059.77,36992.38,20.05 -mul,kernel,512,512,533,9,37528.14,37343.73,20.00 -mul,floor,512,512,534,9,37421.97,37387.95,19.99 -mul,gmp,512,512,937,9,21839.60,21457.00,20.38 -mul,gmpz,512,512,1046,9,19180.73,19026.49,20.07 -mul,auto,1000,1000,187,9,106967.03,106440.06,20.01 -mul,kernel,1000,1000,182,9,109256.64,107733.75,19.86 -mul,floor,1000,1000,183,9,108007.06,107048.96,19.77 -mul,gmp,1000,1000,359,9,55305.25,55164.00,19.85 -mul,gmpz,1000,1000,361,9,55463.64,55112.19,20.01 -mul,auto,2000,2000,67,9,302641.16,301634.94,20.28 -mul,kernel,2000,2000,67,9,303082.09,300649.87,20.31 -mul,floor,2000,2000,67,9,303388.69,301069.66,20.32 -mul,gmp,2000,2000,134,9,148798.51,148349.50,19.94 -mul,gmpz,2000,2000,134,9,149074.63,148463.62,19.97 -mul,auto,2000,100,432,9,46485.73,46283.66,20.09 -mul,kernel,2000,100,429,9,46778.65,46598.48,20.08 -mul,floor,2000,100,427,9,46794.89,46589.87,19.99 -mul,gmp,2000,100,571,9,35243.80,35107.34,20.12 -mul,gmpz,2000,100,575,9,34754.27,34595.51,19.96 -sqr,auto,4,4,928782,9,21.91,21.54,20.31 -sqr,kernel,4,4,1770108,9,11.35,11.30,20.11 -sqr,floor,4,4,1235171,9,16.28,16.19,20.17 -sqr,gmp,4,4,2867505,9,6.97,6.72,19.80 -sqr,gmpz,4,4,2059348,9,9.72,9.43,19.96 -sqr,auto,16,16,265116,9,75.91,75.30,20.14 -sqr,kernel,16,16,327524,9,62.53,61.38,20.53 -sqr,floor,16,16,278239,9,70.49,69.51,19.57 -sqr,gmp,16,16,320802,9,62.32,62.14,20.01 -sqr,gmpz,16,16,304247,9,65.98,65.39,20.06 -sqr,auto,64,64,33043,9,601.48,599.91,19.89 -sqr,kernel,64,64,34253,9,583.11,581.24,19.97 -sqr,floor,64,64,33210,9,601.06,600.08,19.97 -sqr,gmp,64,64,29578,9,672.50,665.16,19.88 -sqr,gmpz,64,64,29831,9,677.06,668.47,20.19 -sqr,auto,512,512,816,9,24399.56,24374.44,19.92 -sqr,kernel,512,512,820,9,24528.51,24459.15,20.13 -sqr,floor,512,512,818,9,24486.50,24458.44,20.05 -sqr,gmp,512,512,1214,9,16556.12,16441.28,20.13 -sqr,gmpz,512,512,1015,9,19748.36,19506.32,20.04 -sqr,auto,2000,2000,90,9,224235.18,223577.31,20.19 -sqr,kernel,2000,2000,90,9,225762.97,224012.50,20.29 -sqr,floor,2000,2000,90,9,224481.49,223245.83,20.22 -sqr,gmp,2000,2000,166,9,120843.63,120696.54,20.06 -sqr,gmpz,2000,2000,166,9,121255.77,120708.58,20.14 -divrem,auto,2,1,929109,9,21.34,20.58,19.66 -divrem,kernel,2,1,3176592,9,6.45,6.32,20.50 -divrem,floor,2,1,1428157,9,14.00,13.69,19.99 -divrem,gmp,2,1,3964936,9,5.05,5.02,20.02 -divrem,gmpz,2,1,2294131,9,8.67,8.66,19.92 -divrem,auto,8,4,247080,9,80.13,79.40,19.78 -divrem,kernel,8,4,380119,9,51.53,51.03,19.57 -divrem,floor,8,4,305208,9,65.50,65.24,20.02 -divrem,gmp,8,4,477489,9,41.75,41.50,19.92 -divrem,gmpz,8,4,449299,9,44.19,44.07,19.87 -divrem,auto,32,16,45479,9,431.92,419.90,19.60 -divrem,kernel,32,16,49854,9,395.69,382.24,19.58 -divrem,floor,32,16,49613,9,410.88,404.33,20.43 -divrem,gmp,32,16,97438,9,205.44,203.18,19.98 -divrem,gmpz,32,16,95716,9,208.30,203.73,19.90 -divrem,auto,128,64,5385,9,3755.57,3664.56,20.17 -divrem,kernel,128,64,5493,9,3638.08,3542.71,19.92 -divrem,floor,128,64,5439,9,3675.69,3597.28,19.93 -divrem,gmp,128,64,11303,9,1770.65,1754.48,20.01 -divrem,gmpz,128,64,11320,9,1773.37,1762.64,20.06 -divrem,auto,512,256,727,9,27547.23,27427.39,20.02 -divrem,kernel,512,256,732,9,27474.95,27250.34,20.27 -divrem,floor,512,256,730,9,27711.59,27266.72,20.20 -divrem,gmp,512,256,1212,9,16558.10,16517.71,20.10 -divrem,gmpz,512,256,1206,9,16594.91,16459.85,19.99 -divrem,auto,2000,1000,87,9,233298.37,232497.13,20.30 -divrem,kernel,2000,1000,87,9,233320.89,232793.57,20.31 -divrem,floor,2000,1000,86,9,233266.48,232482.56,20.06 -divrem,gmp,2000,1000,148,9,136637.67,135657.09,20.21 -divrem,gmpz,2000,1000,148,9,135120.21,134456.65,19.99 -divrem,auto,4000,2000,29,9,692755.76,690298.86,20.10 -divrem,kernel,4000,2000,29,9,693310.34,690734.21,20.12 -divrem,floor,4000,2000,29,9,692023.00,684747.14,20.05 -divrem,gmp,4000,2000,59,9,344519.07,343896.19,20.33 -divrem,gmpz,4000,2000,59,9,345750.69,343694.20,20.45 -divrem,auto,2000,100,210,9,95654.96,94821.43,20.13 -divrem,kernel,2000,100,210,9,95213.89,94380.75,19.98 -divrem,floor,2000,100,211,9,94647.12,94327.80,19.97 -divrem,gmp,2000,100,289,9,69060.55,68859.57,19.96 -divrem,gmpz,2000,100,290,9,69107.18,68751.44,20.03 -divrem,auto,65536,1,85,9,233123.04,228339.22,19.85 -divrem,kernel,65536,1,85,9,234351.47,228975.99,20.04 -divrem,floor,65536,1,85,9,233152.94,226534.81,19.92 -divrem,gmp,65536,1,115,9,173247.47,170660.87,19.94 -divrem,gmpz,65536,1,117,9,171938.74,168652.42,20.12 -tochars,auto,1,10,3326495,9,6.02,6.00,20.07 -tochars,kernel,1,10,572585,9,34.95,33.62,19.91 -tochars,gmp,1,10,1190282,9,16.49,16.14,19.57 -tochars,gmpz,1,10,824295,9,24.15,24.09,19.93 -tochars,auto,4,10,220901,9,91.27,90.94,20.18 -tochars,kernel,4,10,196150,9,103.60,101.44,20.24 -tochars,gmp,4,10,255632,9,77.42,76.62,19.76 -tochars,gmpz,4,10,205072,9,97.35,96.55,19.94 -tochars,auto,16,10,23807,9,843.43,818.04,20.01 -tochars,kernel,16,10,26927,9,741.95,723.57,19.89 -tochars,gmp,16,10,40278,9,512.85,502.43,20.63 -tochars,gmpz,16,10,32773,9,609.68,594.27,19.92 -tochars,auto,64,10,4183,9,4824.41,4804.34,20.21 -tochars,kernel,64,10,4416,9,4565.26,4392.66,20.07 -tochars,gmp,64,10,7033,9,2848.28,2821.32,20.02 -tochars,gmpz,64,10,6407,9,3162.97,3101.98,20.25 -tochars,auto,256,10,593,9,33892.64,33291.74,20.02 -tochars,kernel,256,10,608,9,32724.71,32193.87,19.90 -tochars,gmp,256,10,1050,9,19236.51,18742.10,20.18 -tochars,gmpz,256,10,983,9,20675.61,20276.75,20.22 -tochars,auto,2000,10,30,9,676706.93,668573.63,20.29 -tochars,kernel,2000,10,30,9,667775.00,661941.67,20.04 -tochars,gmp,2000,10,51,9,402294.12,399354.57,20.52 -tochars,gmpz,2000,10,49,9,416162.41,414733.00,20.41 -tochars,auto,16,16,244594,9,83.96,81.73,20.56 -tochars,gmp,16,16,252213,9,81.33,80.44,20.54 -tochars,gmpz,16,16,126675,9,162.27,159.29,20.51 -tochars,auto,2000,16,1994,9,9561.79,9453.13,19.52 -tochars,gmp,2000,16,2141,9,9056.11,9019.33,19.62 -tochars,gmpz,2000,16,1181,9,17395.25,17029.39,20.68 -fromchars,auto,4,10,217689,9,92.54,91.07,20.06 -fromchars,kernel,4,10,612619,9,32.76,32.36,20.06 -fromchars,gmp,4,10,631442,9,31.81,31.03,20.09 -fromchars,gmpz,4,10,261777,9,76.61,74.95,20.22 -fromchars,auto,16,10,52652,9,383.66,376.90,20.18 -fromchars,kernel,16,10,103596,9,192.77,191.34,19.97 -fromchars,gmp,16,10,140809,9,141.95,140.38,19.96 -fromchars,gmpz,16,10,64412,9,315.46,312.71,20.32 -fromchars,auto,64,10,9170,9,2194.97,2168.60,20.14 -fromchars,kernel,64,10,10711,9,1863.92,1826.18,19.97 -fromchars,gmp,64,10,20870,9,955.48,947.05,19.94 -fromchars,gmpz,64,10,12468,9,1605.32,1580.56,20.00 -fromchars,auto,256,10,1445,9,13839.79,13790.31,19.98 -fromchars,kernel,256,10,1728,9,11585.99,11525.80,20.03 -fromchars,gmp,256,10,2516,9,7952.93,7931.57,20.15 -fromchars,gmpz,256,10,1889,9,10716.34,10449.55,20.23 -fromchars,auto,2000,10,67,9,301131.84,300033.58,20.18 -fromchars,kernel,2000,10,71,9,283683.69,282457.17,20.14 -fromchars,gmp,2000,10,109,9,184172.78,183126.91,20.07 -fromchars,gmpz,2000,10,99,9,203531.57,202993.26,20.18 diff --git a/tests/beman/big_int/perf/item1/macr3_new64_spot_seed1.csv b/tests/beman/big_int/perf/item1/macr3_new64_spot_seed1.csv deleted file mode 100644 index 29ed960d..00000000 --- a/tests/beman/big_int/perf/item1/macr3_new64_spot_seed1.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,2746,3,7261.82,7243.31,19.96 -add,inplace,16384,16384,1400,3,7148.73,7060.13,19.94 -add,kernel,16384,16384,1231,3,16518.99,16461.45,20.36 -add,floor,16384,16384,1236,3,16287.08,16244.51,20.12 -add,gmp,16384,16384,4820,3,4106.96,4101.14,19.80 -add,gmpz,16384,16384,4875,3,4149.47,4130.52,20.23 -mul,auto,2000,2000,66,3,311979.80,307366.80,20.50 -mul,kernel,2000,2000,67,3,303192.78,302820.27,20.31 -mul,floor,2000,2000,66,3,303874.38,303398.36,20.06 -mul,gmp,2000,2000,135,3,149217.59,148866.98,20.16 -mul,gmpz,2000,2000,135,3,149016.67,148678.70,20.12 -mul,auto,16384,16384,4,3,5549968.75,5535156.25,22.18 -mul,kernel,16384,16384,4,3,5433302.25,5425093.75,21.73 -mul,floor,16384,16384,4,3,5476406.25,5473948.00,21.95 -mul,gmp,16384,16384,13,3,1607557.69,1579541.62,20.82 -mul,gmpz,16384,16384,13,3,1607378.23,1600891.00,20.87 -divrem,auto,4096,2048,28,3,706238.11,703937.50,19.76 -divrem,kernel,4096,2048,27,3,707334.89,705069.44,19.32 -divrem,floor,4096,2048,29,3,707311.79,704669.52,20.49 -divrem,gmp,4096,2048,56,3,360150.29,358865.32,20.21 -divrem,gmpz,4096,2048,56,3,359682.29,359495.54,20.14 -tochars,auto,10000,10,3,3,8419625.00,8244180.33,25.15 -tochars,kernel,10000,10,3,3,8263888.67,8238055.33,25.36 -tochars,gmp,10000,10,5,3,4156891.60,4145016.60,21.06 -tochars,gmpz,10000,10,5,3,4193258.40,4187950.00,20.98 -fromchars,auto,10000,10,5,3,4189750.00,4187458.40,20.95 -fromchars,kernel,10000,10,5,3,4135500.00,4111158.40,20.69 -fromchars,gmp,10000,10,12,3,1776934.00,1768062.50,21.33 -fromchars,gmpz,10000,10,11,3,1863568.18,1857958.27,20.49 diff --git a/tests/beman/big_int/perf/item1/macr3_new64_spot_seed2.csv b/tests/beman/big_int/perf/item1/macr3_new64_spot_seed2.csv deleted file mode 100644 index 941804ba..00000000 --- a/tests/beman/big_int/perf/item1/macr3_new64_spot_seed2.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,2747,3,7347.33,7313.31,20.18 -add,inplace,16384,16384,1394,3,7283.67,7139.33,20.18 -add,kernel,16384,16384,1207,3,16317.35,16295.60,19.70 -add,floor,16384,16384,1212,3,16670.69,16646.69,20.20 -add,gmp,16384,16384,4779,3,4147.53,4145.72,19.86 -add,gmpz,16384,16384,4799,3,4173.32,4157.70,20.03 -mul,auto,2000,2000,65,3,310872.43,310424.35,20.22 -mul,kernel,2000,2000,65,3,308611.54,303816.03,19.96 -mul,floor,2000,2000,65,3,309337.18,304644.23,20.01 -mul,gmp,2000,2000,131,3,151176.85,150595.42,19.85 -mul,gmpz,2000,2000,133,3,151748.12,148501.88,20.05 -mul,auto,16384,16384,4,3,5495854.00,5431593.75,21.90 -mul,kernel,16384,16384,4,3,5464968.75,5378385.50,21.92 -mul,floor,16384,16384,4,3,5422000.00,5316020.75,21.58 -mul,gmp,16384,16384,13,3,1608455.15,1593035.31,20.98 -mul,gmpz,16384,16384,13,3,1590798.08,1584310.92,20.71 -divrem,auto,4096,2048,29,3,707892.24,701254.31,20.49 -divrem,kernel,4096,2048,29,3,704919.55,703343.41,20.45 -divrem,floor,4096,2048,29,3,704048.83,700988.52,20.63 -divrem,gmp,4096,2048,57,3,356891.07,356211.98,20.34 -divrem,gmpz,4096,2048,57,3,357090.63,357019.00,20.37 -tochars,auto,10000,10,3,3,8265375.00,8255875.00,24.81 -tochars,kernel,10000,10,3,3,8231111.00,8222069.67,24.69 -tochars,gmp,10000,10,5,3,4173400.00,4106283.40,20.81 -tochars,gmpz,10000,10,5,3,4197433.20,4161416.60,21.02 -fromchars,auto,10000,10,5,3,4188775.00,4186433.40,20.94 -fromchars,kernel,10000,10,5,3,4099058.20,4076975.00,20.50 -fromchars,gmp,10000,10,12,3,1763572.92,1762107.58,21.19 -fromchars,gmpz,10000,10,11,3,1882363.64,1875553.00,20.76 diff --git a/tests/beman/big_int/perf/item1/macr3_new64a_seed1a.csv b/tests/beman/big_int/perf/item1/macr3_new64a_seed1a.csv deleted file mode 100644 index 569df029..00000000 --- a/tests/beman/big_int/perf/item1/macr3_new64a_seed1a.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T17:55:07Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64a seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2622931,9,7.75,7.44,20.08 -add,inplace,1,1,2778260,9,3.60,3.48,19.97 -add,kernel,1,1,17525664,9,1.14,1.14,20.03 -add,floor,1,1,2238739,9,9.20,8.93,20.74 -add,gmp,1,1,13411840,9,1.49,1.47,19.94 -add,gmpz,1,1,6743383,9,2.98,2.96,20.06 -add,auto,2,2,1341740,9,15.42,14.94,20.55 -add,inplace,2,2,2601408,9,3.84,3.84,19.91 -add,kernel,2,2,14413941,9,1.39,1.39,20.09 -add,floor,2,2,2121761,9,9.94,9.59,21.26 -add,gmp,2,2,10081385,9,1.99,1.94,19.99 -add,gmpz,2,2,5886317,9,3.31,3.18,21.29 -add,auto,4,4,1391548,9,14.45,14.36,20.21 -add,inplace,4,4,2875388,9,3.36,3.34,19.61 -add,kernel,4,4,10515595,9,1.92,1.90,20.12 -add,floor,4,4,1913941,9,10.24,10.17,19.73 -add,gmp,4,4,11498261,9,1.74,1.73,20.12 -add,gmpz,4,4,6080564,9,4.18,3.23,24.26 -add,auto,8,8,1332307,9,14.73,14.50,19.77 -add,inplace,8,8,2484235,9,3.88,3.86,19.54 -add,kernel,8,8,5712577,9,3.51,3.48,20.08 -add,floor,8,8,1717908,9,11.93,11.67,20.52 -add,gmp,8,8,8952927,9,2.26,2.23,20.16 -add,gmpz,8,8,5184199,9,3.81,3.76,19.85 -add,auto,16,16,1258669,9,16.60,15.91,20.77 -add,inplace,16,16,1790902,9,5.71,5.59,20.41 -add,kernel,16,16,2632193,9,7.57,7.52,19.89 -add,floor,16,16,1439819,9,13.54,13.40,19.54 -add,gmp,16,16,6204678,9,3.23,3.22,20.03 -add,gmpz,16,16,4471381,9,4.47,4.46,20.07 -add,auto,64,64,498872,9,39.61,37.81,19.41 -add,inplace,64,64,501234,9,19.95,19.83,20.00 -add,kernel,64,64,420712,9,48.74,48.43,20.49 -add,floor,64,64,332568,9,60.61,59.12,20.09 -add,gmp,64,64,1813562,9,11.10,11.09,20.17 -add,gmpz,64,64,1506686,9,13.38,13.06,20.28 -add,auto,256,256,181779,9,109.60,106.55,19.97 -add,inplace,256,256,99885,9,100.13,98.24,19.98 -add,kernel,256,256,88080,9,232.45,224.29,20.39 -add,floor,256,256,83975,9,248.55,235.64,20.94 -add,gmp,256,256,349517,9,57.13,56.16,19.95 -add,gmpz,256,256,344330,9,57.80,56.90,19.93 -add,auto,1024,1024,44901,9,445.95,442.99,20.19 -add,inplace,1024,1024,23094,9,432.15,420.19,19.82 -add,kernel,1024,1024,20773,9,959.69,929.65,19.85 -add,floor,1024,1024,20226,9,977.42,956.78,19.73 -add,gmp,1024,1024,79726,9,251.41,247.98,20.00 -add,gmpz,1024,1024,79053,9,253.11,247.54,19.91 -add,auto,2000,2000,21761,9,882.27,868.51,19.31 -add,inplace,2000,2000,11782,9,851.57,841.73,20.08 -add,kernel,2000,2000,10660,9,1905.99,1843.58,20.22 -add,floor,2000,2000,10294,9,2040.46,1915.61,20.79 -add,gmp,2000,2000,39802,9,497.13,490.53,19.77 -add,gmpz,2000,2000,41017,9,498.40,494.79,20.52 -add,auto,1024,1,178573,9,120.33,108.93,22.82 -add,inplace,1024,1,3318167,9,2.99,2.97,19.85 -add,kernel,1024,1,27191,9,735.32,731.87,19.96 -add,floor,1024,1,26474,9,758.27,754.04,20.24 -add,gmp,1024,1,77162,9,261.94,256.04,20.12 -add,gmpz,1024,1,76300,9,264.61,258.79,20.13 -sub,auto,1,1,2444876,9,8.20,7.71,19.88 -sub,inplace,1,1,2769381,9,3.49,3.40,19.42 -sub,kernel,1,1,18645605,9,1.07,1.07,19.92 -sub,floor,1,1,11521501,9,1.74,1.73,20.03 -sub,gmp,1,1,13285953,9,1.49,1.48,19.85 -sub,gmpz,1,1,8035021,9,2.48,2.47,19.96 -sub,auto,2,2,1363399,9,14.81,14.27,20.04 -sub,inplace,2,2,2701516,9,3.47,3.46,18.77 -sub,kernel,2,2,14133125,9,1.42,1.41,20.04 -sub,floor,2,2,2109319,9,11.81,9.28,23.73 -sub,gmp,2,2,10016009,9,1.99,1.80,19.67 -sub,gmpz,2,2,7317448,9,2.75,2.74,20.94 -sub,auto,4,4,1398261,9,14.29,14.20,19.97 -sub,inplace,4,4,2857576,9,3.60,3.47,20.50 -sub,kernel,4,4,10198279,9,1.96,1.95,19.97 -sub,floor,4,4,1855030,9,10.44,10.19,19.34 -sub,gmp,4,4,11551034,9,1.74,1.73,20.08 -sub,gmpz,4,4,6963754,9,2.73,2.73,19.19 -sub,auto,8,8,1293491,9,17.83,15.53,22.22 -sub,inplace,8,8,2442082,9,4.10,4.10,20.11 -sub,kernel,8,8,5732542,9,3.50,3.47,20.07 -sub,floor,8,8,1712974,9,11.46,11.41,19.69 -sub,gmp,8,8,8922203,9,2.24,2.23,19.98 -sub,gmpz,8,8,6185735,9,3.23,3.22,19.97 -sub,auto,16,16,1137473,9,17.34,17.29,19.83 -sub,inplace,16,16,1917067,9,5.22,5.13,19.96 -sub,kernel,16,16,2608228,9,7.66,7.62,19.99 -sub,floor,16,16,1365484,9,14.65,14.44,20.02 -sub,gmp,16,16,6196120,9,3.18,3.14,19.65 -sub,gmpz,16,16,4729475,9,4.24,4.23,20.05 -sub,auto,64,64,554296,9,35.85,35.67,19.93 -sub,inplace,64,64,501928,9,20.14,19.86,20.26 -sub,kernel,64,64,408365,9,49.09,48.15,20.06 -sub,floor,64,64,329946,9,59.89,59.19,19.75 -sub,gmp,64,64,1773842,9,11.22,11.06,19.86 -sub,gmpz,64,64,1446125,9,13.86,13.67,19.98 -sub,auto,256,256,181128,9,110.60,109.23,20.02 -sub,inplace,256,256,98732,9,99.92,98.55,19.77 -sub,kernel,256,256,84631,9,236.19,225.62,20.04 -sub,floor,256,256,81955,9,243.36,236.87,19.88 -sub,gmp,256,256,350140,9,57.11,56.10,19.96 -sub,gmpz,256,256,342913,9,57.80,56.93,19.78 -sub,auto,1024,1024,44211,9,451.83,433.83,20.14 -sub,inplace,1024,1024,23308,9,430.65,428.61,20.08 -sub,kernel,1024,1024,20660,9,964.55,963.46,19.94 -sub,floor,1024,1024,20466,9,1004.55,975.88,20.50 -sub,gmp,1024,1024,80853,9,251.50,246.75,20.30 -sub,gmpz,1024,1024,78841,9,253.46,247.43,19.91 -sub,auto,2000,2000,22945,9,872.43,843.36,19.92 -sub,inplace,2000,2000,11850,9,846.69,827.14,20.00 -sub,kernel,2000,2000,10516,9,1899.07,1836.72,19.85 -sub,floor,2000,2000,10470,9,1907.35,1856.18,19.93 -sub,gmp,2000,2000,40463,9,494.51,487.30,19.98 -sub,gmpz,2000,2000,39240,9,499.03,489.55,19.55 -sub,auto,1024,1,156656,9,140.72,119.06,21.87 -sub,inplace,1024,1,3217190,9,3.11,3.10,20.15 -sub,kernel,1024,1,27270,9,728.23,708.42,19.78 -sub,floor,1024,1,25751,9,745.43,718.53,19.09 -sub,gmp,1024,1,76224,9,260.66,255.88,19.95 -sub,gmpz,1024,1,74550,9,265.81,262.23,19.85 -shl,auto,1,13,1597603,9,12.31,12.22,19.74 -shl,inplace,1,13,3871009,9,2.52,2.48,19.57 -shl,kernel,1,13,8928350,9,2.24,2.23,20.04 -shl,kernelip,1,13,5529527,9,1.78,1.77,19.72 -shl,floor,1,13,1861027,9,11.10,10.92,20.74 -shl,gmp,1,13,16027655,9,1.25,1.23,20.11 -shl,gmpz,1,13,10047398,9,1.99,1.98,20.01 -shl,auto,4,13,1484906,9,13.11,12.81,19.42 -shl,inplace,4,13,2591272,9,3.82,3.69,19.74 -shl,kernel,4,13,5420675,9,3.72,3.72,20.18 -shl,kernelip,4,13,2953464,9,3.36,3.30,19.78 -shl,floor,4,13,1498263,9,13.56,13.12,20.25 -shl,gmp,4,13,9948882,9,1.99,1.99,19.82 -shl,gmpz,4,13,7311011,9,2.73,2.72,20.04 -shl,auto,16,13,1214254,9,15.46,15.12,19.02 -shl,inplace,16,13,1883830,9,5.34,5.32,20.21 -shl,kernel,16,13,4819372,9,4.15,4.15,20.01 -shl,kernelip,16,13,1431669,9,6.82,6.56,19.42 -shl,floor,16,13,1701649,9,12.40,11.76,20.95 -shl,gmp,16,13,5726298,9,3.48,3.47,20.12 -shl,gmpz,16,13,3693971,9,5.29,5.21,19.48 -shl,auto,256,13,464159,9,42.17,41.75,19.64 -shl,inplace,256,13,334636,9,29.94,29.78,20.04 -shl,kernel,256,13,406036,9,49.25,49.08,20.04 -shl,kernelip,256,13,204451,9,48.97,48.61,19.99 -shl,floor,256,13,342699,9,58.18,57.35,19.94 -shl,gmp,256,13,541538,9,37.03,36.95,20.08 -shl,gmpz,256,13,518574,9,38.01,37.82,19.74 -shl,auto,2000,13,89601,9,252.12,219.31,22.36 -shl,inplace,2000,13,51009,9,195.82,195.26,19.97 -shl,kernel,2000,13,51991,9,383.21,380.51,19.91 -shl,kernelip,2000,13,26594,9,376.87,376.10,20.06 -shl,floor,2000,13,49232,9,399.06,396.35,19.68 -shl,gmp,2000,13,15474,9,2338.46,1396.71,28.54 -shl,gmpz,2000,13,21784,9,1824.81,1121.41,37.12 -shl,auto,2000,77,65525,9,496.50,293.34,33.93 -shl,inplace,2000,77,43540,9,228.94,227.58,19.92 -shl,kernel,2000,77,37817,9,528.73,524.50,19.97 -shl,kernelip,2000,77,19211,9,521.38,513.87,20.23 -shl,floor,2000,77,37144,9,538.12,536.49,19.99 -shl,gmp,2000,77,69046,9,288.49,287.55,19.97 -shl,gmpz,2000,77,64435,9,294.55,287.04,19.17 -shr,auto,1,13,3097108,9,6.62,6.28,20.59 -shr,inplace,1,13,3391792,9,3.34,2.81,21.42 -shr,kernel,1,13,10055250,9,2.24,1.99,19.67 -shr,floor,1,13,8721573,9,2.24,2.23,20.00 -shr,gmp,1,13,20000001,9,0.99,0.99,19.87 -shr,gmpz,1,13,10079872,9,1.99,1.98,20.03 -shr,auto,4,13,1398919,9,14.24,13.70,19.65 -shr,inplace,4,13,2730657,9,3.58,3.54,19.78 -shr,kernel,4,13,5368848,9,3.57,3.53,19.39 -shr,floor,4,13,1681183,9,11.85,11.67,20.11 -shr,gmp,4,13,11583621,9,1.74,1.73,20.13 -shr,gmpz,4,13,7328525,9,2.73,2.71,20.02 -shr,auto,16,13,1130594,9,17.96,17.64,20.29 -shr,inplace,16,13,1931595,9,5.27,5.18,20.31 -shr,kernel,16,13,4868440,9,4.08,4.07,19.90 -shr,floor,16,13,1557556,9,12.74,12.65,19.95 -shr,gmp,16,13,6198120,9,3.23,3.22,20.04 -shr,gmpz,16,13,4730411,9,4.23,4.22,20.04 -shr,auto,256,13,443803,9,42.07,42.00,19.06 -shr,inplace,256,13,331089,9,30.29,30.08,20.05 -shr,kernel,256,13,301170,9,66.51,66.24,20.03 -shr,floor,256,13,265916,9,75.32,74.83,20.02 -shr,gmp,256,13,542164,9,36.72,36.65,19.91 -shr,gmpz,256,13,525738,9,38.10,37.96,20.02 -shr,auto,2000,13,71542,9,276.00,258.65,19.79 -shr,inplace,2000,13,50797,9,196.05,195.68,19.93 -shr,kernel,2000,13,39165,9,510.91,503.66,19.99 -shr,floor,2000,13,38130,9,523.43,519.76,19.93 -shr,gmp,2000,13,64678,9,311.03,298.19,20.41 -shr,gmpz,2000,13,68170,9,309.19,288.22,21.47 -shr,auto,2000,77,92397,9,250.99,236.31,21.62 -shr,inplace,2000,77,50898,9,195.61,195.15,19.92 -shr,kernel,2000,77,38011,9,524.99,510.61,19.83 -shr,floor,2000,77,38056,9,525.77,514.36,19.99 -shr,gmp,2000,77,69017,9,290.27,289.17,20.10 -shr,gmpz,2000,77,69814,9,286.57,285.43,20.17 -mul,auto,1,1,1412935,9,13.98,13.74,19.85 -mul,gmp,1,1,5370145,9,3.73,3.71,20.21 -mul,gmpz,1,1,7268554,9,2.73,2.73,19.88 -mul,auto,2,2,1102310,9,18.49,17.74,20.14 -mul,kernel,2,2,3127645,9,6.19,6.14,19.52 -mul,floor,2,2,1389615,9,14.42,14.34,20.08 -mul,gmp,2,2,4430591,9,4.54,4.48,20.42 -mul,gmpz,2,2,3066265,9,6.71,6.50,20.47 -mul,auto,3,3,1066931,9,19.07,18.79,20.48 -mul,kernel,3,3,2515884,9,7.95,7.93,20.03 -mul,floor,3,3,1218028,9,16.61,16.34,20.16 -mul,gmp,3,3,3215656,9,6.21,6.19,19.97 -mul,gmpz,3,3,2360875,9,7.93,7.85,19.30 -mul,auto,4,4,944864,9,21.20,21.11,20.09 -mul,kernel,4,4,1811709,9,11.02,10.92,19.96 -mul,floor,4,4,1162606,9,16.92,16.65,19.60 -mul,gmp,4,4,2474405,9,9.05,7.92,22.17 -mul,gmpz,4,4,2056423,9,10.92,9.71,19.83 -mul,auto,6,6,713820,9,27.10,27.04,19.37 -mul,kernel,6,6,1046724,9,19.17,19.02,20.09 -mul,floor,6,6,828574,9,24.18,23.65,20.38 -mul,gmp,6,6,1297913,9,14.66,14.26,19.23 -mul,gmpz,6,6,1041156,9,18.34,17.54,19.19 -mul,auto,8,8,577215,9,35.19,34.50,20.24 -mul,kernel,8,8,872908,9,22.97,22.92,20.06 -mul,floor,8,8,659783,9,30.25,30.12,19.98 -mul,gmp,8,8,889556,9,22.53,22.36,20.03 -mul,gmpz,8,8,818747,9,26.37,24.48,21.34 -mul,auto,12,12,372712,9,53.78,53.39,20.05 -mul,kernel,12,12,486097,9,41.76,41.11,20.23 -mul,floor,12,12,406500,9,49.41,49.27,20.12 -mul,gmp,12,12,452093,9,44.05,43.97,19.92 -mul,gmpz,12,12,428390,9,46.70,46.63,20.02 -mul,auto,16,16,240505,9,82.79,82.33,19.98 -mul,kernel,16,16,288103,9,69.41,69.34,20.00 -mul,floor,16,16,254224,9,78.64,78.48,20.00 -mul,gmp,16,16,260777,9,76.26,76.11,19.89 -mul,gmpz,16,16,253886,9,78.67,77.85,19.95 -mul,auto,32,32,70871,9,281.68,279.07,19.93 -mul,kernel,32,32,77215,9,258.52,257.56,19.98 -mul,floor,32,32,71901,9,278.89,277.45,20.07 -mul,gmp,32,32,74009,9,268.77,268.12,19.92 -mul,gmpz,32,32,72101,9,271.63,269.60,19.67 -mul,auto,64,64,19287,9,1007.16,1003.86,19.42 -mul,kernel,64,64,20369,9,985.12,983.27,20.07 -mul,floor,64,64,19808,9,1009.13,1004.65,20.01 -mul,gmp,64,64,25897,9,771.98,769.82,20.04 -mul,gmpz,64,64,25793,9,784.87,774.44,20.21 -mul,auto,128,128,5510,9,3634.22,3612.93,20.03 -mul,kernel,128,128,5594,9,3575.53,3570.77,20.02 -mul,floor,128,128,5571,9,3592.27,3587.48,20.03 -mul,gmp,128,128,7602,9,2634.87,2619.55,20.03 -mul,gmpz,128,128,6671,9,3000.02,2993.42,20.02 -mul,auto,256,256,1704,9,11756.82,11730.83,20.05 -mul,kernel,256,256,1701,9,11807.37,11745.10,20.10 -mul,floor,256,256,1676,9,11770.24,11744.46,19.74 -mul,gmp,256,256,1933,9,10324.58,10156.66,19.91 -mul,gmpz,256,256,1937,9,10330.11,10220.27,20.03 -mul,auto,512,512,543,9,36888.27,36679.02,20.08 -mul,kernel,512,512,537,9,37381.36,37153.63,20.07 -mul,floor,512,512,535,9,37413.71,37066.20,19.98 -mul,gmp,512,512,938,9,21353.81,21167.20,20.00 -mul,gmpz,512,512,941,9,21332.98,21192.70,20.07 -mul,auto,1000,1000,187,9,106631.02,105921.12,20.05 -mul,kernel,1000,1000,188,9,106728.28,106331.34,20.07 -mul,floor,1000,1000,188,9,106790.34,105834.22,20.05 -mul,gmp,1000,1000,363,9,55153.12,54923.78,20.03 -mul,gmpz,1000,1000,363,9,55244.49,55207.07,20.06 -mul,auto,2000,2000,67,9,301468.91,298623.76,20.16 -mul,kernel,2000,2000,67,9,301968.91,301474.51,20.24 -mul,floor,2000,2000,67,9,301999.37,298326.49,20.54 -mul,gmp,2000,2000,136,9,150046.88,148077.82,20.47 -mul,gmpz,2000,2000,128,9,155705.08,154623.70,19.93 -mul,auto,2000,100,432,9,46298.23,46215.18,20.02 -mul,kernel,2000,100,431,9,46599.09,46517.98,20.12 -mul,floor,2000,100,429,9,46847.42,46654.82,20.10 -mul,gmp,2000,100,569,9,35109.18,34880.12,19.97 -mul,gmpz,2000,100,578,9,34686.56,34555.72,20.08 -sqr,auto,4,4,937594,9,21.72,21.10,20.28 -sqr,kernel,4,4,1775016,9,11.39,11.24,20.20 -sqr,floor,4,4,1213510,9,16.42,16.17,19.95 -sqr,gmp,4,4,2827913,9,7.08,7.01,19.99 -sqr,gmpz,4,4,2040456,9,9.84,9.28,19.89 -sqr,auto,16,16,263205,9,75.23,74.64,19.82 -sqr,kernel,16,16,308249,9,64.73,63.54,19.98 -sqr,floor,16,16,277129,9,72.07,70.67,19.89 -sqr,gmp,16,16,316782,9,61.59,60.30,19.46 -sqr,gmpz,16,16,300433,9,65.82,65.25,19.80 -sqr,auto,64,64,33146,9,600.85,596.89,19.91 -sqr,kernel,64,64,33912,9,582.34,579.32,19.76 -sqr,floor,64,64,33289,9,601.66,599.11,20.02 -sqr,gmp,64,64,29579,9,674.83,663.48,19.95 -sqr,gmpz,64,64,29559,9,675.95,661.81,19.88 -sqr,auto,512,512,823,9,24301.39,24161.70,19.99 -sqr,kernel,512,512,822,9,24341.60,24226.89,20.00 -sqr,floor,512,512,823,9,24393.58,24264.99,20.07 -sqr,gmp,512,512,1213,9,16491.86,16381.32,20.04 -sqr,gmpz,512,512,1037,9,19701.14,19243.09,20.41 -sqr,auto,2000,2000,90,9,223192.13,222577.78,20.10 -sqr,kernel,2000,2000,90,9,223457.88,221910.64,20.11 -sqr,floor,2000,2000,90,9,223245.37,221285.64,20.07 -sqr,gmp,2000,2000,167,9,120241.52,119487.78,20.09 -sqr,gmpz,2000,2000,167,9,120733.53,118680.89,20.12 -divrem,auto,2,1,663041,9,28.32,27.84,19.14 -divrem,kernel,2,1,3529058,9,5.73,5.71,20.34 -divrem,floor,2,1,1461510,9,13.24,13.17,19.45 -divrem,gmp,2,1,3993888,9,5.04,4.99,20.10 -divrem,gmpz,2,1,2296191,9,8.67,8.64,19.95 -divrem,auto,8,4,285096,9,70.61,69.94,20.17 -divrem,kernel,8,4,488136,9,41.16,40.26,20.03 -divrem,floor,8,4,353415,9,56.55,56.16,20.02 -divrem,gmp,8,4,496636,9,39.85,38.93,19.71 -divrem,gmpz,8,4,464315,9,42.95,42.39,19.94 -divrem,auto,32,16,45270,9,425.80,420.15,19.42 -divrem,kernel,32,16,50892,9,393.87,393.41,20.05 -divrem,floor,32,16,48698,9,411.38,409.33,20.02 -divrem,gmp,32,16,95088,9,207.43,206.94,19.74 -divrem,gmpz,32,16,95529,9,210.11,209.69,20.08 -divrem,auto,128,64,5411,9,3689.78,3685.59,19.98 -divrem,kernel,128,64,5529,9,3593.30,3589.99,19.88 -divrem,floor,128,64,5500,9,3682.70,3635.06,20.19 -divrem,gmp,128,64,11123,9,1777.97,1751.87,19.73 -divrem,gmpz,128,64,11343,9,1783.38,1769.29,20.22 -divrem,auto,512,256,674,9,29665.43,29260.88,19.96 -divrem,kernel,512,256,680,9,29506.37,29023.22,20.03 -divrem,floor,512,256,679,9,29486.01,29422.74,20.10 -divrem,gmp,512,256,1190,9,16417.26,16232.07,19.64 -divrem,gmpz,512,256,1227,9,16394.39,16251.46,20.07 -divrem,auto,2000,1000,87,9,232304.11,230847.22,20.24 -divrem,kernel,2000,1000,87,9,232261.98,230844.34,20.20 -divrem,floor,2000,1000,87,9,231764.85,229059.86,20.20 -divrem,gmp,2000,1000,147,9,135800.17,134786.84,19.96 -divrem,gmpz,2000,1000,149,9,135195.19,134352.63,20.14 -divrem,auto,4000,2000,30,9,685945.83,678979.17,20.56 -divrem,kernel,4000,2000,30,9,684818.03,681259.73,20.54 -divrem,floor,4000,2000,30,9,685579.17,680188.90,20.56 -divrem,gmp,4000,2000,59,9,342706.93,341479.53,20.25 -divrem,gmpz,4000,2000,59,9,342844.63,341140.54,20.28 -divrem,auto,2000,100,213,9,93943.27,93722.62,20.02 -divrem,kernel,2000,100,214,9,93693.73,92961.84,20.04 -divrem,floor,2000,100,214,9,93691.20,93411.21,20.08 -divrem,gmp,2000,100,290,9,69302.01,68905.17,20.09 -divrem,gmpz,2000,100,289,9,69358.71,69128.89,20.04 -divrem,auto,65536,1,89,9,228486.42,227506.09,20.35 -divrem,kernel,65536,1,89,9,226104.40,223454.58,20.08 -divrem,floor,65536,1,89,9,224559.93,223131.56,20.11 -divrem,gmp,65536,1,118,9,169389.83,166123.59,19.94 -divrem,gmpz,65536,1,122,9,168147.89,165631.15,20.48 -tochars,auto,1,10,3309785,9,5.97,5.96,19.75 -tochars,kernel,1,10,602489,9,33.11,32.00,19.83 -tochars,gmp,1,10,1176822,9,16.95,16.62,20.04 -tochars,gmpz,1,10,778359,9,25.50,25.13,19.83 -tochars,auto,4,10,259055,9,77.34,76.71,20.02 -tochars,kernel,4,10,198537,9,101.00,98.79,20.07 -tochars,gmp,4,10,272113,9,72.96,71.94,19.87 -tochars,gmpz,4,10,201297,9,96.75,95.96,19.51 -tochars,auto,16,10,24161,9,826.43,804.24,19.92 -tochars,kernel,16,10,27320,9,735.21,714.39,19.97 -tochars,gmp,16,10,39786,9,503.95,488.21,20.04 -tochars,gmpz,16,10,33629,9,600.36,592.48,20.18 -tochars,auto,64,10,4244,9,4678.18,4553.21,19.78 -tochars,kernel,64,10,4493,9,4447.17,4282.54,19.97 -tochars,gmp,64,10,7068,9,2865.64,2835.95,20.19 -tochars,gmpz,64,10,6368,9,3116.01,3047.69,19.78 -tochars,auto,256,10,597,9,33721.73,33194.30,20.08 -tochars,kernel,256,10,616,9,32632.04,31867.49,20.01 -tochars,gmp,256,10,1064,9,18892.47,18707.71,20.17 -tochars,gmpz,256,10,985,9,20350.76,20031.51,20.05 -tochars,auto,2000,10,30,9,676658.33,664076.40,20.25 -tochars,kernel,2000,10,30,9,667605.53,658611.10,20.00 -tochars,gmp,2000,10,50,9,403957.50,400851.66,20.16 -tochars,gmpz,2000,10,49,9,416727.90,412519.55,20.42 -tochars,auto,16,16,241886,9,83.75,82.65,20.39 -tochars,gmp,16,16,249624,9,79.23,77.53,19.76 -tochars,gmpz,16,16,125483,9,160.19,156.13,20.03 -tochars,auto,2000,16,2117,9,9935.56,9424.19,20.74 -tochars,gmp,2000,16,2232,9,8933.95,8685.78,19.90 -tochars,gmpz,2000,16,1226,9,16691.51,16432.91,20.57 -fromchars,auto,4,10,218270,9,93.16,91.56,19.49 -fromchars,kernel,4,10,625612,9,32.64,31.90,20.43 -fromchars,gmp,4,10,631543,9,31.57,29.98,19.92 -fromchars,gmpz,4,10,256493,9,77.19,75.30,19.69 -fromchars,auto,16,10,49805,9,404.46,390.02,20.06 -fromchars,kernel,16,10,104344,9,190.24,185.74,19.82 -fromchars,gmp,16,10,140867,9,140.19,136.53,19.75 -fromchars,gmpz,16,10,62411,9,317.35,314.58,19.78 -fromchars,auto,64,10,9159,9,2181.03,2128.70,19.90 -fromchars,kernel,64,10,10908,9,1844.48,1787.56,20.07 -fromchars,gmp,64,10,20974,9,954.39,934.40,19.99 -fromchars,gmpz,64,10,12486,9,1596.00,1575.43,19.92 -fromchars,auto,256,10,1452,9,13807.36,13660.64,20.04 -fromchars,kernel,256,10,1739,9,11531.75,11486.18,20.05 -fromchars,gmp,256,10,2494,9,7915.13,7884.52,19.81 -fromchars,gmpz,256,10,1906,9,10467.38,10426.50,19.96 -fromchars,auto,2000,10,67,9,300424.13,298894.90,20.14 -fromchars,kernel,2000,10,71,9,282461.27,281526.41,20.07 -fromchars,gmp,2000,10,109,9,183814.22,182728.60,20.04 -fromchars,gmpz,2000,10,98,9,203450.26,201873.72,19.92 diff --git a/tests/beman/big_int/perf/item1/macr3_new64a_seed1b.csv b/tests/beman/big_int/perf/item1/macr3_new64a_seed1b.csv deleted file mode 100644 index d4ae6a05..00000000 --- a/tests/beman/big_int/perf/item1/macr3_new64a_seed1b.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T18:00:03Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64a seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2665728,9,7.51,7.45,20.21 -add,inplace,1,1,2766448,9,3.61,3.59,20.11 -add,kernel,1,1,17335081,9,1.14,1.14,19.82 -add,floor,1,1,2178678,9,9.47,9.05,20.56 -add,gmp,1,1,13385985,9,1.49,1.48,19.93 -add,gmpz,1,1,6707087,9,2.98,2.97,20.83 -add,auto,2,2,1284925,9,15.37,15.29,19.83 -add,inplace,2,2,2597912,9,3.85,3.84,20.03 -add,kernel,2,2,14330040,9,1.39,1.39,19.94 -add,floor,2,2,1984445,9,9.45,9.42,18.84 -add,gmp,2,2,11497652,9,1.98,1.74,19.78 -add,gmpz,2,2,6186733,9,3.29,3.23,26.90 -add,auto,4,4,1432708,9,13.96,13.92,20.16 -add,inplace,4,4,2765830,9,3.64,3.62,20.11 -add,kernel,4,4,10444636,9,1.91,1.90,19.94 -add,floor,4,4,1961237,9,10.42,10.16,20.39 -add,gmp,4,4,11512947,9,1.73,1.73,19.98 -add,gmpz,4,4,3676752,9,5.95,5.67,20.58 -add,auto,8,8,1285818,9,15.49,15.20,19.90 -add,inplace,8,8,2431476,9,4.48,4.10,21.19 -add,kernel,8,8,5690929,9,3.49,3.43,19.92 -add,floor,8,8,1678159,9,12.25,11.92,20.47 -add,gmp,8,8,8940027,9,2.24,2.23,20.03 -add,gmpz,8,8,5093646,9,3.84,3.82,19.61 -add,auto,16,16,1149574,9,16.84,16.57,19.39 -add,inplace,16,16,1767630,9,5.60,5.58,20.11 -add,kernel,16,16,2647420,9,7.55,7.48,19.98 -add,floor,16,16,1439461,9,13.47,13.43,19.58 -add,gmp,16,16,6203066,9,3.23,2.91,19.52 -add,gmpz,16,16,4445359,9,4.74,4.48,20.61 -add,auto,64,64,507710,9,38.43,38.08,19.76 -add,inplace,64,64,501860,9,19.96,19.81,20.03 -add,kernel,64,64,405360,9,49.33,48.80,20.02 -add,floor,64,64,327946,9,60.95,59.81,19.95 -add,gmp,64,64,1816347,9,11.08,11.04,20.14 -add,gmpz,64,64,1549504,9,12.98,12.88,20.11 -add,auto,256,256,182117,9,110.26,107.57,20.07 -add,inplace,256,256,98339,9,100.90,98.93,19.83 -add,kernel,256,256,86461,9,236.05,232.24,20.33 -add,floor,256,256,81293,9,245.72,241.73,19.92 -add,gmp,256,256,349915,9,57.17,56.54,19.98 -add,gmpz,256,256,285837,9,69.09,67.80,19.71 -add,auto,1024,1024,45334,9,448.13,439.44,20.29 -add,inplace,1024,1024,22920,9,436.37,424.22,19.95 -add,kernel,1024,1024,20678,9,969.16,947.41,20.01 -add,floor,1024,1024,20287,9,984.46,960.96,19.88 -add,gmp,1024,1024,79395,9,251.29,249.72,19.93 -add,gmpz,1024,1024,79003,9,253.09,247.64,19.94 -add,auto,2000,2000,22848,9,877.35,868.61,20.02 -add,inplace,2000,2000,11698,9,858.41,825.03,19.97 -add,kernel,2000,2000,10389,9,1911.43,1851.44,19.75 -add,floor,2000,2000,10378,9,1929.79,1888.18,20.02 -add,gmp,2000,2000,40325,9,494.83,489.77,19.94 -add,gmpz,2000,2000,40386,9,496.47,493.42,20.15 -add,auto,1024,1,212425,9,121.68,96.72,25.75 -add,inplace,1024,1,3356103,9,2.98,2.97,20.01 -add,kernel,1024,1,26800,9,734.98,718.47,19.59 -add,floor,1024,1,26245,9,763.19,747.61,20.00 -add,gmp,1024,1,76671,9,262.42,258.47,20.09 -add,gmpz,1024,1,75111,9,266.09,261.15,19.91 -sub,auto,1,1,2460439,9,8.19,8.17,20.16 -sub,inplace,1,1,2950592,9,3.38,3.35,20.23 -sub,kernel,1,1,19159915,9,1.04,1.04,20.01 -sub,floor,1,1,11476292,9,1.74,1.73,19.94 -sub,gmp,1,1,13471784,9,1.49,1.49,20.28 -sub,gmpz,1,1,8063748,9,2.48,2.48,20.06 -sub,auto,2,2,1347554,9,14.85,14.59,20.16 -sub,inplace,2,2,2886888,9,3.47,3.47,20.06 -sub,kernel,2,2,14135782,9,1.41,1.41,20.01 -sub,floor,2,2,2082074,9,9.44,9.40,19.70 -sub,gmp,2,2,10091308,9,1.99,1.96,20.02 -sub,gmpz,2,2,6712754,9,2.99,2.98,20.15 -sub,auto,4,4,1397994,9,14.54,14.29,20.36 -sub,inplace,4,4,2777774,9,3.61,3.58,20.34 -sub,kernel,4,4,9861325,9,1.97,1.95,19.70 -sub,floor,4,4,1960222,9,10.13,9.93,20.13 -sub,gmp,4,4,10896475,9,1.85,1.81,20.06 -sub,gmpz,4,4,6879187,9,2.90,2.73,19.53 -sub,auto,8,8,1281304,9,15.62,15.41,20.04 -sub,inplace,8,8,2469243,9,4.09,4.03,20.13 -sub,kernel,8,8,5756676,9,3.48,3.47,20.04 -sub,floor,8,8,1644296,9,11.87,11.64,19.53 -sub,gmp,8,8,8926960,9,2.23,2.23,19.92 -sub,gmpz,8,8,6206761,9,3.23,3.22,20.02 -sub,auto,16,16,1105906,9,17.68,17.57,19.74 -sub,inplace,16,16,1955226,9,5.21,5.12,20.33 -sub,kernel,16,16,2613762,9,7.66,7.64,20.03 -sub,floor,16,16,1339346,9,15.10,14.87,20.13 -sub,gmp,16,16,6569717,9,3.23,3.02,20.98 -sub,gmpz,16,16,4731892,9,4.34,4.23,20.46 -sub,auto,64,64,541636,9,36.92,36.77,20.00 -sub,inplace,64,64,487994,9,20.39,20.35,19.93 -sub,kernel,64,64,405406,9,50.31,49.78,20.40 -sub,floor,64,64,334838,9,60.33,59.62,20.20 -sub,gmp,64,64,1759220,9,11.40,11.21,20.01 -sub,gmpz,64,64,1488375,9,13.39,13.26,19.91 -sub,auto,256,256,180670,9,110.70,109.22,19.95 -sub,inplace,256,256,98762,9,100.95,98.86,19.90 -sub,kernel,256,256,81149,9,236.48,229.67,19.13 -sub,floor,256,256,80813,9,246.29,239.34,19.82 -sub,gmp,256,256,349532,9,57.05,56.84,20.00 -sub,gmpz,256,256,345898,9,58.01,57.06,20.08 -sub,auto,1024,1024,43458,9,449.10,441.97,19.54 -sub,inplace,1024,1024,22875,9,434.51,425.31,19.80 -sub,kernel,1024,1024,20892,9,970.81,943.74,20.19 -sub,floor,1024,1024,19547,9,992.77,960.26,19.57 -sub,gmp,1024,1024,79519,9,251.93,248.68,20.02 -sub,gmpz,1024,1024,80027,9,253.33,247.69,20.24 -sub,auto,2000,2000,22526,9,879.02,857.31,19.75 -sub,inplace,2000,2000,11630,9,851.70,835.77,19.77 -sub,kernel,2000,2000,10386,9,1907.65,1856.89,19.79 -sub,floor,2000,2000,10404,9,1930.03,1878.38,20.02 -sub,gmp,2000,2000,40417,9,494.40,487.60,19.96 -sub,gmpz,2000,2000,39550,9,501.06,488.10,19.74 -sub,auto,1024,1,162013,9,135.37,131.16,21.87 -sub,inplace,1024,1,3099914,9,3.22,3.20,19.96 -sub,kernel,1024,1,27081,9,738.03,734.02,19.97 -sub,floor,1024,1,26674,9,751.89,735.85,20.05 -sub,gmp,1024,1,76705,9,262.96,259.20,20.21 -sub,gmpz,1024,1,75126,9,266.40,259.69,19.97 -shl,auto,1,13,1706097,9,12.09,11.70,20.45 -shl,inplace,1,13,4037373,9,2.48,2.48,20.03 -shl,kernel,1,13,8980182,9,2.23,2.23,20.07 -shl,kernelip,1,13,8954530,9,1.76,1.17,25.35 -shl,floor,1,13,1874826,9,10.43,10.40,19.76 -shl,gmp,1,13,16123048,9,1.24,1.24,19.99 -shl,gmpz,1,13,10067142,9,1.98,1.98,19.99 -shl,auto,4,13,1557257,9,12.59,12.48,20.08 -shl,inplace,4,13,2627463,9,3.82,3.74,20.24 -shl,kernel,4,13,5357698,9,3.71,3.70,19.91 -shl,kernelip,4,13,2955751,9,3.38,3.34,19.96 -shl,floor,4,13,1529326,9,12.91,12.87,19.78 -shl,gmp,4,13,10095704,9,1.98,1.98,20.03 -shl,gmpz,4,13,7314974,9,2.73,2.72,19.96 -shl,auto,16,13,1309815,9,15.44,15.15,20.53 -shl,inplace,16,13,1870903,9,5.34,5.29,19.94 -shl,kernel,16,13,4834667,9,4.14,4.14,20.05 -shl,kernelip,16,13,1352264,9,6.80,6.71,18.35 -shl,floor,16,13,1641761,9,12.21,12.15,20.19 -shl,gmp,16,13,5709872,9,3.53,3.47,20.21 -shl,gmpz,16,13,3748741,9,5.18,5.06,19.43 -shl,auto,256,13,457808,9,41.12,40.83,19.30 -shl,inplace,256,13,336682,9,30.06,29.73,20.18 -shl,kernel,256,13,409005,9,48.96,48.88,20.04 -shl,kernelip,256,13,204731,9,48.62,48.33,19.89 -shl,floor,256,13,359913,9,57.79,56.86,20.85 -shl,gmp,256,13,536798,9,36.97,36.89,19.90 -shl,gmpz,256,13,520053,9,37.86,37.74,19.70 -shl,auto,2000,13,91128,9,258.99,231.22,20.29 -shl,inplace,2000,13,51153,9,195.73,195.41,20.02 -shl,kernel,2000,13,52215,9,382.20,380.95,19.95 -shl,kernelip,2000,13,26542,9,375.68,375.31,19.94 -shl,floor,2000,13,50101,9,398.85,396.94,19.98 -shl,gmp,2000,13,32795,9,1530.42,600.22,27.72 -shl,gmpz,2000,13,17847,9,1578.88,1078.77,25.73 -shl,auto,2000,77,68675,9,365.34,291.57,26.81 -shl,inplace,2000,77,43995,9,229.21,227.63,20.20 -shl,kernel,2000,77,37689,9,530.63,523.62,19.99 -shl,kernelip,2000,77,19019,9,525.80,519.37,20.01 -shl,floor,2000,77,37224,9,541.39,538.80,20.23 -shl,gmp,2000,77,68914,9,288.73,286.96,19.97 -shl,gmpz,2000,77,69215,9,289.38,287.28,20.06 -shr,auto,1,13,2876177,9,7.06,6.88,20.23 -shr,inplace,1,13,3152440,9,3.35,3.30,21.08 -shr,kernel,1,13,8665166,9,2.29,2.27,19.81 -shr,floor,1,13,8061109,9,2.53,2.48,20.33 -shr,gmp,1,13,20000001,9,1.00,0.99,20.10 -shr,gmpz,1,13,10023347,9,2.03,2.00,20.32 -shr,auto,4,13,1437188,9,14.63,14.36,21.08 -shr,inplace,4,13,2847898,9,3.75,3.63,21.86 -shr,kernel,4,13,5257896,9,3.85,3.74,20.19 -shr,floor,4,13,1731558,9,12.43,12.24,21.54 -shr,gmp,4,13,11203743,9,1.79,1.76,20.06 -shr,gmpz,4,13,7061561,9,2.84,2.75,19.96 -shr,auto,16,13,1035579,9,18.98,18.63,19.64 -shr,inplace,16,13,1880942,9,5.43,5.34,20.40 -shr,kernel,16,13,4633022,9,4.27,4.15,19.69 -shr,floor,16,13,1512184,9,13.53,13.03,20.45 -shr,gmp,16,13,6000717,9,3.32,3.26,19.93 -shr,gmpz,16,13,4628454,9,4.35,4.30,20.12 -shr,auto,256,13,441121,9,43.15,42.87,19.10 -shr,inplace,256,13,316153,9,31.26,30.57,19.71 -shr,kernel,256,13,288875,9,67.75,67.20,19.65 -shr,floor,256,13,262033,9,76.85,75.67,20.12 -shr,gmp,256,13,523721,9,37.73,37.29,19.78 -shr,gmpz,256,13,501440,9,38.72,37.98,19.61 -shr,auto,2000,13,82057,9,230.59,227.99,18.95 -shr,inplace,2000,13,50492,9,199.62,196.19,20.08 -shr,kernel,2000,13,38108,9,525.90,517.81,20.00 -shr,floor,2000,13,36738,9,543.52,533.57,19.93 -shr,gmp,2000,13,67408,9,301.13,295.36,20.27 -shr,gmpz,2000,13,68197,9,292.93,286.17,19.93 -shr,auto,2000,77,84872,9,234.07,228.45,20.04 -shr,inplace,2000,77,49965,9,202.01,200.78,20.23 -shr,kernel,2000,77,38046,9,528.46,520.60,20.07 -shr,floor,2000,77,37199,9,539.36,534.00,20.05 -shr,gmp,2000,77,68275,9,297.50,293.43,20.31 -shr,gmpz,2000,77,68965,9,292.24,289.18,20.22 -mul,auto,1,1,1375743,9,14.97,14.73,18.88 -mul,gmp,1,1,5188973,9,3.82,3.75,19.71 -mul,gmpz,1,1,7125828,9,2.81,2.77,20.04 -mul,auto,2,2,1055281,9,18.99,18.64,20.12 -mul,kernel,2,2,3171133,9,6.42,6.16,20.23 -mul,floor,2,2,1287574,9,14.90,14.63,19.34 -mul,gmp,2,2,4697771,9,4.82,4.30,22.04 -mul,gmpz,2,2,3258111,9,6.36,6.04,20.79 -mul,auto,3,3,988646,9,20.14,19.60,19.90 -mul,kernel,3,3,2423377,9,8.25,8.17,20.12 -mul,floor,3,3,1221100,9,16.60,16.11,20.04 -mul,gmp,3,3,3307123,9,6.13,6.04,20.29 -mul,gmpz,3,3,2455626,9,9.12,8.56,22.15 -mul,auto,4,4,933994,9,21.34,20.99,19.97 -mul,kernel,4,4,1796677,9,11.27,11.10,20.28 -mul,floor,4,4,1169073,9,17.18,17.00,20.06 -mul,gmp,4,4,2406574,9,8.66,8.27,21.38 -mul,gmpz,4,4,1975308,9,11.64,10.25,22.70 -mul,auto,6,6,703773,9,28.36,27.79,19.90 -mul,kernel,6,6,1021710,9,19.48,18.96,19.84 -mul,floor,6,6,838967,9,24.51,24.09,20.91 -mul,gmp,6,6,1300311,9,15.07,14.75,19.61 -mul,gmpz,6,6,1047937,9,18.86,18.19,19.72 -mul,auto,8,8,559970,9,35.65,35.05,19.93 -mul,kernel,8,8,852707,9,23.47,22.83,20.08 -mul,floor,8,8,661186,9,30.63,30.33,20.62 -mul,gmp,8,8,867652,9,22.43,22.12,20.18 -mul,gmpz,8,8,758355,9,28.87,25.03,20.82 -mul,auto,12,12,371538,9,53.97,53.76,20.07 -mul,kernel,12,12,491021,9,40.81,40.70,20.07 -mul,floor,12,12,403983,9,49.48,49.00,19.97 -mul,gmp,12,12,451114,9,44.33,44.16,20.01 -mul,gmpz,12,12,427717,9,46.86,46.63,20.05 -mul,auto,16,16,242551,9,82.73,82.59,20.18 -mul,kernel,16,16,283475,9,69.78,69.61,19.81 -mul,floor,16,16,247362,9,79.87,78.40,19.73 -mul,gmp,16,16,250622,9,77.82,76.36,19.64 -mul,gmpz,16,16,249694,9,79.37,78.04,19.78 -mul,auto,32,32,70012,9,284.10,280.32,19.96 -mul,kernel,32,32,75434,9,260.43,258.93,19.68 -mul,floor,32,32,69707,9,287.42,284.60,20.01 -mul,gmp,32,32,71274,9,277.74,273.20,19.74 -mul,gmpz,32,32,72010,9,282.99,276.36,20.26 -mul,auto,64,64,19964,9,1019.47,1004.94,20.30 -mul,kernel,64,64,20134,9,1007.27,998.45,20.29 -mul,floor,64,64,18838,9,1053.00,1026.81,19.77 -mul,gmp,64,64,25018,9,782.96,776.83,19.79 -mul,gmpz,64,64,25283,9,793.69,788.36,20.15 -mul,auto,128,128,5560,9,3664.73,3614.85,20.37 -mul,kernel,128,128,5321,9,3672.22,3591.49,19.49 -mul,floor,128,128,5483,9,3615.84,3593.13,19.80 -mul,gmp,128,128,7597,9,2630.67,2619.94,20.02 -mul,gmpz,128,128,6650,9,3018.73,2997.53,20.15 -mul,auto,256,256,1638,9,11944.29,11790.93,19.56 -mul,kernel,256,256,1628,9,11885.11,11781.35,19.40 -mul,floor,256,256,1659,9,12010.00,11911.12,19.95 -mul,gmp,256,256,2527,9,7956.72,7885.98,20.13 -mul,gmpz,256,256,2484,9,8072.33,7878.89,19.99 -mul,auto,512,512,533,9,38102.56,37203.17,20.26 -mul,kernel,512,512,520,9,38723.00,37810.66,20.16 -mul,floor,512,512,518,9,38567.17,37891.09,20.01 -mul,gmp,512,512,1020,9,19634.64,19295.38,20.01 -mul,gmpz,512,512,1020,9,19477.82,19257.31,19.87 -mul,auto,1000,1000,178,9,112416.90,108287.92,19.93 -mul,kernel,1000,1000,177,9,110946.56,107622.18,19.65 -mul,floor,1000,1000,188,9,106761.09,106319.37,20.08 -mul,gmp,1000,1000,365,9,55691.10,54804.79,20.33 -mul,gmpz,1000,1000,352,9,56733.90,56067.12,20.08 -mul,auto,2000,2000,65,9,307447.43,304442.95,20.03 -mul,kernel,2000,2000,65,9,303373.08,301106.42,19.84 -mul,floor,2000,2000,66,9,307527.77,301585.86,20.31 -mul,gmp,2000,2000,135,9,151243.21,147708.33,20.37 -mul,gmpz,2000,2000,131,9,152498.73,149911.26,19.94 -mul,auto,2000,100,419,9,47704.46,46820.70,19.97 -mul,kernel,2000,100,417,9,47922.86,47369.30,20.00 -mul,floor,2000,100,409,9,47387.33,46800.63,19.46 -mul,gmp,2000,100,563,9,35729.20,35476.47,20.13 -mul,gmpz,2000,100,565,9,35357.60,35120.06,20.02 -sqr,auto,4,4,926814,9,22.02,21.82,19.82 -sqr,kernel,4,4,1679294,9,11.52,11.23,19.32 -sqr,floor,4,4,1217440,9,16.89,16.53,20.53 -sqr,gmp,4,4,2829008,9,7.14,7.02,20.19 -sqr,gmpz,4,4,2093417,9,9.93,9.54,20.78 -sqr,auto,16,16,263671,9,77.89,76.03,20.59 -sqr,kernel,16,16,297704,9,65.44,64.38,19.53 -sqr,floor,16,16,275484,9,73.81,73.09,20.39 -sqr,gmp,16,16,311183,9,63.96,62.25,19.84 -sqr,gmpz,16,16,291083,9,67.94,67.19,19.77 -sqr,auto,64,64,32696,9,613.37,609.26,20.09 -sqr,kernel,64,64,33595,9,595.31,583.78,19.96 -sqr,floor,64,64,32533,9,614.79,604.06,19.98 -sqr,gmp,64,64,29306,9,691.95,673.79,20.22 -sqr,gmpz,64,64,28424,9,693.29,674.72,19.64 -sqr,auto,512,512,798,9,24675.80,24236.16,19.71 -sqr,kernel,512,512,815,9,24353.94,24289.37,19.84 -sqr,floor,512,512,815,9,24445.04,24327.61,20.12 -sqr,gmp,512,512,1079,9,18348.24,18273.52,19.95 -sqr,gmpz,512,512,1013,9,19696.82,19558.12,19.95 -sqr,auto,2000,2000,90,9,225007.88,222518.99,20.24 -sqr,kernel,2000,2000,89,9,224024.82,222022.00,19.99 -sqr,floor,2000,2000,89,9,222369.38,221757.49,19.81 -sqr,gmp,2000,2000,167,9,120302.14,120082.59,20.09 -sqr,gmpz,2000,2000,168,9,120279.76,119522.07,20.20 -divrem,auto,2,1,648634,9,28.44,28.32,18.79 -divrem,kernel,2,1,3567204,9,5.70,5.68,20.34 -divrem,floor,2,1,1484320,9,13.54,13.43,20.26 -divrem,gmp,2,1,3942162,9,5.03,4.99,19.83 -divrem,gmpz,2,1,2305239,9,8.66,8.63,19.98 -divrem,auto,8,4,286522,9,70.65,69.62,20.26 -divrem,kernel,8,4,469366,9,41.08,40.38,19.37 -divrem,floor,8,4,355496,9,56.16,55.85,19.95 -divrem,gmp,8,4,501000,9,39.70,39.22,19.85 -divrem,gmpz,8,4,457204,9,44.06,43.27,20.14 -divrem,auto,32,16,46552,9,446.15,428.91,20.64 -divrem,kernel,32,16,49485,9,409.80,386.21,20.09 -divrem,floor,32,16,47458,9,419.36,407.10,19.91 -divrem,gmp,32,16,91604,9,213.67,210.36,19.61 -divrem,gmpz,32,16,94236,9,217.01,212.22,20.46 -divrem,auto,128,64,5378,9,3735.74,3598.60,20.03 -divrem,kernel,128,64,5388,9,3679.12,3554.87,19.71 -divrem,floor,128,64,5233,9,3735.99,3639.42,19.50 -divrem,gmp,128,64,10698,9,1812.18,1784.30,19.35 -divrem,gmpz,128,64,10958,9,1789.80,1774.35,19.68 -divrem,auto,512,256,673,9,29643.95,29596.83,20.01 -divrem,kernel,512,256,673,9,30141.84,29840.14,20.29 -divrem,floor,512,256,664,9,30695.09,29823.17,20.29 -divrem,gmp,512,256,1198,9,16883.49,16663.33,20.24 -divrem,gmpz,512,256,1179,9,16691.30,16501.06,19.71 -divrem,auto,2000,1000,85,9,240047.06,231665.19,20.27 -divrem,kernel,2000,1000,84,9,239125.50,231971.73,20.00 -divrem,floor,2000,1000,86,9,238120.16,232345.44,20.46 -divrem,gmp,2000,1000,137,9,143666.97,138032.85,19.61 -divrem,gmpz,2000,1000,139,9,143475.12,141506.29,19.91 -divrem,auto,4000,2000,28,9,720784.25,705409.21,20.15 -divrem,kernel,4000,2000,29,9,718774.41,702285.90,20.79 -divrem,floor,4000,2000,29,9,702472.72,689534.48,20.33 -divrem,gmp,4000,2000,59,9,353187.15,346123.58,20.76 -divrem,gmpz,4000,2000,57,9,354307.02,345883.77,20.12 -divrem,auto,2000,100,208,9,96839.34,93869.79,20.08 -divrem,kernel,2000,100,214,9,93540.30,93065.03,20.10 -divrem,floor,2000,100,214,9,93522.20,93225.08,20.01 -divrem,gmp,2000,100,278,9,71301.26,70160.97,19.80 -divrem,gmpz,2000,100,281,9,70747.33,69088.22,19.82 -divrem,auto,65536,1,86,9,230894.38,227541.66,19.94 -divrem,kernel,65536,1,88,9,229508.05,226364.59,20.94 -divrem,floor,65536,1,85,9,232107.85,224594.12,19.75 -divrem,gmp,65536,1,117,9,174600.79,169884.26,20.57 -divrem,gmpz,65536,1,117,9,175418.44,171574.79,20.96 -tochars,auto,1,10,3256201,9,6.14,6.06,19.94 -tochars,kernel,1,10,604910,9,34.34,33.10,20.75 -tochars,gmp,1,10,1163046,9,17.08,16.77,19.90 -tochars,gmpz,1,10,780314,9,25.96,25.75,20.28 -tochars,auto,4,10,250980,9,78.81,77.82,19.79 -tochars,kernel,4,10,194495,9,102.84,101.46,19.97 -tochars,gmp,4,10,275460,9,74.94,72.49,20.59 -tochars,gmpz,4,10,206336,9,95.41,94.30,19.70 -tochars,auto,16,10,24103,9,854.76,844.72,20.58 -tochars,kernel,16,10,26259,9,737.61,734.11,19.39 -tochars,gmp,16,10,40206,9,506.86,499.57,20.64 -tochars,gmpz,16,10,32826,9,612.34,588.38,20.04 -tochars,auto,64,10,4102,9,4876.23,4672.09,19.86 -tochars,kernel,64,10,4316,9,4633.19,4500.18,19.86 -tochars,gmp,64,10,6789,9,2909.35,2881.30,19.81 -tochars,gmpz,64,10,6091,9,3220.39,3139.93,19.65 -tochars,auto,256,10,573,9,34767.82,33770.58,19.85 -tochars,kernel,256,10,607,9,34454.76,33874.18,20.94 -tochars,gmp,256,10,1012,9,20065.34,19847.87,20.32 -tochars,gmpz,256,10,936,9,20915.69,20528.85,19.55 -tochars,auto,2000,10,29,9,695356.31,685107.76,20.16 -tochars,kernel,2000,10,30,9,689572.23,672838.90,20.68 -tochars,gmp,2000,10,49,9,414263.61,405369.90,20.29 -tochars,gmpz,2000,10,47,9,426385.64,417759.77,19.98 -tochars,auto,16,16,235154,9,84.20,82.87,19.85 -tochars,gmp,16,16,246536,9,81.25,79.07,20.05 -tochars,gmpz,16,16,122442,9,164.17,162.57,20.14 -tochars,auto,2000,16,2051,9,9609.78,9470.36,19.74 -tochars,gmp,2000,16,2134,9,9286.04,9120.33,19.74 -tochars,gmpz,2000,16,1128,9,17690.60,16720.52,19.71 -fromchars,auto,4,10,220512,9,93.03,90.14,20.41 -fromchars,kernel,4,10,602159,9,32.92,32.26,19.84 -fromchars,gmp,4,10,632712,9,31.75,30.60,20.15 -fromchars,gmpz,4,10,260896,9,77.38,75.31,20.19 -fromchars,auto,16,10,50980,9,392.42,388.38,19.98 -fromchars,kernel,16,10,102782,9,195.83,189.11,20.06 -fromchars,gmp,16,10,137376,9,145.75,143.88,20.04 -fromchars,gmpz,16,10,61230,9,323.37,319.00,19.84 -fromchars,auto,64,10,9070,9,2222.11,2195.94,20.17 -fromchars,kernel,64,10,10614,9,1885.60,1856.08,20.03 -fromchars,gmp,64,10,20901,9,959.73,952.40,20.04 -fromchars,gmpz,64,10,12444,9,1603.81,1590.57,19.95 -fromchars,auto,256,10,1451,9,13778.57,13717.26,19.98 -fromchars,kernel,256,10,1714,9,11528.42,11510.77,19.77 -fromchars,gmp,256,10,2494,9,8007.82,7962.53,19.98 -fromchars,gmpz,256,10,1906,9,10912.97,10810.14,20.89 -fromchars,auto,2000,10,67,9,301202.73,300334.58,20.26 -fromchars,kernel,2000,10,71,9,282581.58,281684.86,20.06 -fromchars,gmp,2000,10,108,9,184382.71,183391.98,19.90 -fromchars,gmpz,2000,10,99,9,203618.69,202350.60,20.13 diff --git a/tests/beman/big_int/perf/item1/macr3_new64a_seed2a.csv b/tests/beman/big_int/perf/item1/macr3_new64a_seed2a.csv deleted file mode 100644 index 8aaecceb..00000000 --- a/tests/beman/big_int/perf/item1/macr3_new64a_seed2a.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T18:04:58Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64a seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2643966,9,7.37,7.29,19.62 -add,inplace,1,1,2916936,9,3.21,3.10,19.02 -add,kernel,1,1,17203866,9,1.15,1.15,19.77 -add,floor,1,1,2005480,9,9.83,9.65,19.87 -add,gmp,1,1,13053229,9,1.53,1.49,19.95 -add,gmpz,1,1,6405958,9,3.09,3.05,20.30 -add,auto,2,2,1276192,9,15.82,15.37,20.23 -add,inplace,2,2,2548824,9,4.11,3.88,20.96 -add,kernel,2,2,13303546,9,1.43,1.41,19.01 -add,floor,2,2,2007628,9,10.09,9.73,20.12 -add,gmp,2,2,11210223,9,2.00,1.93,22.41 -add,gmpz,2,2,6683307,9,3.25,3.23,25.58 -add,auto,4,4,1381191,9,14.56,14.00,20.40 -add,inplace,4,4,2757731,9,3.48,3.44,19.31 -add,kernel,4,4,10019867,9,1.96,1.93,19.75 -add,floor,4,4,1892500,9,10.88,10.47,20.51 -add,gmp,4,4,11384394,9,1.77,1.75,20.38 -add,gmpz,4,4,3649714,9,6.04,5.30,20.98 -add,auto,8,8,1278917,9,15.65,15.45,20.05 -add,inplace,8,8,2510817,9,3.97,3.90,19.97 -add,kernel,8,8,5634981,9,3.49,3.48,19.70 -add,floor,8,8,1705858,9,11.97,11.75,20.53 -add,gmp,8,8,8940933,9,2.23,2.23,19.98 -add,gmpz,8,8,4384673,9,4.89,4.83,21.53 -add,auto,16,16,1164743,9,16.94,16.89,19.78 -add,inplace,16,16,1779265,9,5.72,5.62,20.35 -add,kernel,16,16,2654108,9,7.55,7.52,20.03 -add,floor,16,16,1375616,9,13.94,13.88,19.48 -add,gmp,16,16,6127513,9,3.26,3.23,19.97 -add,gmpz,16,16,4469310,9,4.49,4.47,20.07 -add,auto,64,64,524311,9,38.05,37.86,19.94 -add,inplace,64,64,498039,9,19.96,19.74,19.87 -add,kernel,64,64,402715,9,49.61,47.91,19.77 -add,floor,64,64,327241,9,60.87,60.29,19.91 -add,gmp,64,64,1795682,9,11.12,11.03,19.95 -add,gmpz,64,64,1548031,9,12.98,12.94,20.10 -add,auto,256,256,182620,9,109.36,108.88,19.97 -add,inplace,256,256,100703,9,101.29,98.52,20.33 -add,kernel,256,256,84119,9,236.89,232.83,19.86 -add,floor,256,256,79824,9,249.16,241.58,19.77 -add,gmp,256,256,351117,9,57.12,57.04,20.07 -add,gmpz,256,256,342664,9,58.01,57.34,19.87 -add,auto,1024,1024,44175,9,453.04,444.90,20.09 -add,inplace,1024,1024,22904,9,438.95,432.19,20.10 -add,kernel,1024,1024,20605,9,982.89,958.28,20.16 -add,floor,1024,1024,20083,9,997.93,967.34,20.00 -add,gmp,1024,1024,79239,9,252.62,250.51,20.03 -add,gmpz,1024,1024,80225,9,252.57,248.39,20.19 -add,auto,2000,2000,23569,9,908.38,861.33,21.26 -add,inplace,2000,2000,11583,9,861.96,827.75,19.82 -add,kernel,2000,2000,10175,9,1991.98,1871.95,20.02 -add,floor,2000,2000,10199,9,1963.51,1920.69,19.95 -add,gmp,2000,2000,40305,9,495.01,487.76,19.93 -add,gmpz,2000,2000,40152,9,497.21,488.73,19.91 -add,auto,1024,1,206429,9,110.22,104.47,21.38 -add,inplace,1024,1,3366677,9,2.98,2.97,20.06 -add,kernel,1024,1,26864,9,744.74,730.14,19.98 -add,floor,1024,1,26030,9,780.27,727.23,20.15 -add,gmp,1024,1,75454,9,263.91,262.31,20.10 -add,gmpz,1024,1,75953,9,266.63,263.68,20.22 -sub,auto,1,1,2587227,9,7.57,7.44,19.62 -sub,inplace,1,1,2980374,9,3.61,3.35,21.13 -sub,kernel,1,1,19127433,9,1.05,1.05,20.06 -sub,floor,1,1,11459126,9,1.74,1.74,19.99 -sub,gmp,1,1,13194933,9,1.49,1.48,19.67 -sub,gmpz,1,1,7958748,9,2.49,2.48,19.90 -sub,auto,2,2,1384251,9,14.89,13.97,20.48 -sub,inplace,2,2,2837731,9,3.49,3.48,19.80 -sub,kernel,2,2,14127808,9,1.42,1.42,20.05 -sub,floor,2,2,2162899,9,9.49,9.43,20.69 -sub,gmp,2,2,11386299,9,1.97,1.74,21.13 -sub,gmpz,2,2,6653127,9,2.99,2.97,19.89 -sub,auto,4,4,1302229,9,16.67,15.87,21.65 -sub,inplace,4,4,2822251,9,3.48,3.48,19.81 -sub,kernel,4,4,10232063,9,1.95,1.94,19.98 -sub,floor,4,4,1953513,9,9.99,9.95,19.75 -sub,gmp,4,4,11470702,9,1.74,1.74,20.00 -sub,gmpz,4,4,7270894,9,2.74,2.74,19.94 -sub,auto,8,8,1260211,9,15.57,15.47,19.91 -sub,inplace,8,8,2417284,9,4.12,4.11,20.03 -sub,kernel,8,8,5677095,9,3.51,3.49,19.96 -sub,floor,8,8,1708570,9,11.44,11.40,19.73 -sub,gmp,8,8,8953540,9,2.24,2.24,20.11 -sub,gmpz,8,8,6171929,9,3.24,3.22,20.02 -sub,auto,16,16,1104386,9,17.84,17.15,19.71 -sub,inplace,16,16,1906056,9,5.26,5.24,20.18 -sub,kernel,16,16,2577865,9,7.75,7.70,19.98 -sub,floor,16,16,1289747,9,15.64,15.21,20.05 -sub,gmp,16,16,6506621,9,3.21,3.02,20.62 -sub,gmpz,16,16,4699847,9,4.25,4.24,19.99 -sub,auto,64,64,560276,9,35.95,35.80,20.14 -sub,inplace,64,64,501577,9,20.06,19.97,20.12 -sub,kernel,64,64,413216,9,49.46,48.53,20.44 -sub,floor,64,64,331037,9,60.42,59.78,19.97 -sub,gmp,64,64,1725703,9,11.63,11.46,20.06 -sub,gmpz,64,64,1446890,9,14.10,13.91,20.38 -sub,auto,256,256,180050,9,111.41,110.13,20.04 -sub,inplace,256,256,98266,9,101.32,97.69,19.76 -sub,kernel,256,256,85215,9,243.77,238.03,20.64 -sub,floor,256,256,78181,9,254.43,239.66,19.62 -sub,gmp,256,256,348288,9,57.33,56.72,19.97 -sub,gmpz,256,256,344094,9,58.08,56.45,19.91 -sub,auto,1024,1024,43880,9,454.63,441.27,19.77 -sub,inplace,1024,1024,22856,9,438.00,425.65,19.92 -sub,kernel,1024,1024,20462,9,983.92,952.17,20.06 -sub,floor,1024,1024,20192,9,992.58,963.83,19.96 -sub,gmp,1024,1024,79037,9,252.24,246.06,19.97 -sub,gmpz,1024,1024,78796,9,254.88,251.61,20.04 -sub,auto,2000,2000,22510,9,897.78,870.99,20.15 -sub,inplace,2000,2000,11448,9,860.12,839.89,19.62 -sub,kernel,2000,2000,10248,9,1931.67,1865.91,19.64 -sub,floor,2000,2000,10607,9,1997.08,1937.18,21.09 -sub,gmp,2000,2000,40214,9,497.10,491.28,19.95 -sub,gmpz,2000,2000,40833,9,497.97,489.65,20.27 -sub,auto,1024,1,195213,9,106.08,99.42,20.93 -sub,inplace,1024,1,3349816,9,2.99,2.98,20.05 -sub,kernel,1024,1,26509,9,744.98,725.02,19.64 -sub,floor,1024,1,26368,9,760.35,744.11,19.95 -sub,gmp,1024,1,75690,9,264.21,253.01,19.89 -sub,gmpz,1024,1,76233,9,267.02,264.50,20.34 -shl,auto,1,13,1608817,9,12.22,12.06,19.63 -shl,inplace,1,13,3710200,9,2.50,2.48,18.79 -shl,kernel,1,13,8916878,9,2.24,2.23,19.98 -shl,kernelip,1,13,8912019,9,1.78,1.12,23.04 -shl,floor,1,13,1953620,9,11.23,10.78,21.95 -shl,gmp,1,13,15988640,9,1.25,1.24,20.02 -shl,gmpz,1,13,10056109,9,2.00,1.99,20.15 -shl,auto,4,13,1541816,9,13.12,12.74,20.17 -shl,inplace,4,13,2648142,9,3.85,3.72,20.54 -shl,kernel,4,13,5341963,9,3.73,3.72,20.00 -shl,kernelip,4,13,2953782,9,3.42,3.33,20.27 -shl,floor,4,13,1542162,9,12.84,12.67,19.82 -shl,gmp,4,13,10023994,9,2.00,1.98,20.42 -shl,gmpz,4,13,7231121,9,2.75,2.73,19.86 -shl,auto,16,13,1212018,9,15.85,15.34,19.18 -shl,inplace,16,13,1871704,9,5.30,5.28,19.93 -shl,kernel,16,13,4909926,9,4.07,4.06,20.02 -shl,kernelip,16,13,1343369,9,6.85,6.78,18.40 -shl,floor,16,13,1602334,9,12.45,12.22,19.88 -shl,gmp,16,13,5732114,9,3.48,3.48,19.99 -shl,gmpz,16,13,3830383,9,5.16,5.10,19.74 -shl,auto,256,13,456491,9,41.45,41.28,18.98 -shl,inplace,256,13,334478,9,29.94,29.86,20.05 -shl,kernel,256,13,405593,9,49.18,49.10,19.97 -shl,kernelip,256,13,203515,9,48.82,48.34,19.88 -shl,floor,256,13,349584,9,57.44,57.21,20.10 -shl,gmp,256,13,540572,9,36.97,36.83,20.00 -shl,gmpz,256,13,522223,9,37.97,37.73,19.90 -shl,auto,2000,13,85874,9,251.12,227.75,20.93 -shl,inplace,2000,13,51275,9,196.12,195.59,20.17 -shl,kernel,2000,13,51972,9,384.21,382.22,19.99 -shl,kernelip,2000,13,26482,9,377.40,374.70,19.98 -shl,floor,2000,13,49434,9,412.77,402.77,20.31 -shl,gmp,2000,13,42058,9,1656.51,553.43,64.30 -shl,gmpz,2000,13,9742,9,2657.95,2053.60,22.74 -shl,auto,2000,77,68297,9,496.30,293.27,30.07 -shl,inplace,2000,77,43008,9,229.65,227.98,19.74 -shl,kernel,2000,77,37745,9,524.59,521.99,19.82 -shl,kernelip,2000,77,19370,9,521.90,510.90,20.17 -shl,floor,2000,77,36923,9,541.74,539.93,20.01 -shl,gmp,2000,77,68723,9,294.57,289.28,20.45 -shl,gmpz,2000,77,69403,9,289.98,287.32,20.25 -shr,auto,1,13,2864652,9,6.87,6.67,19.68 -shr,inplace,1,13,3670740,9,3.31,2.98,23.57 -shr,kernel,1,13,8868306,9,2.25,2.24,19.93 -shr,floor,1,13,8123490,9,2.50,2.49,19.91 -shr,gmp,1,13,20000001,9,1.00,0.99,20.01 -shr,gmpz,1,13,10044900,9,1.99,1.99,20.03 -shr,auto,4,13,1388406,9,14.26,13.84,19.75 -shr,inplace,4,13,2637483,9,3.66,3.57,19.57 -shr,kernel,4,13,5309020,9,3.77,3.74,20.22 -shr,floor,4,13,1669006,9,12.06,11.69,20.06 -shr,gmp,4,13,11357771,9,1.74,1.74,19.82 -shr,gmpz,4,13,7267340,9,2.74,2.74,19.92 -shr,auto,16,13,1095740,9,18.46,18.21,20.32 -shr,inplace,16,13,1921047,9,5.25,5.19,20.13 -shr,kernel,16,13,4779312,9,4.17,4.17,19.96 -shr,floor,16,13,1576078,9,12.95,12.92,20.57 -shr,gmp,16,13,6169024,9,3.24,3.24,20.06 -shr,gmpz,16,13,4672898,9,4.26,4.23,20.08 -shr,auto,256,13,453951,9,43.09,42.55,19.70 -shr,inplace,256,13,330437,9,30.38,30.28,20.09 -shr,kernel,256,13,299256,9,66.92,66.58,20.02 -shr,floor,256,13,264492,9,75.61,75.01,19.99 -shr,gmp,256,13,542005,9,36.87,36.68,19.97 -shr,gmpz,256,13,518971,9,38.16,38.02,19.88 -shr,auto,2000,13,87077,9,274.36,250.70,22.47 -shr,inplace,2000,13,50680,9,196.50,196.02,19.92 -shr,kernel,2000,13,39119,9,512.01,509.29,20.02 -shr,floor,2000,13,37963,9,525.64,523.66,19.97 -shr,gmp,2000,13,68778,9,306.54,291.70,19.73 -shr,gmpz,2000,13,64141,9,320.28,297.65,20.91 -shr,auto,2000,77,87086,9,268.41,236.88,22.55 -shr,inplace,2000,77,50850,9,196.55,195.49,19.96 -shr,kernel,2000,77,38605,9,517.82,516.87,20.01 -shr,floor,2000,77,38033,9,527.87,520.98,20.05 -shr,gmp,2000,77,69350,9,296.83,291.01,20.61 -shr,gmpz,2000,77,69241,9,288.48,286.10,20.05 -mul,auto,1,1,1395631,9,14.85,14.05,20.47 -mul,gmp,1,1,5346068,9,3.74,3.72,19.98 -mul,gmpz,1,1,7287115,9,2.75,2.74,20.18 -mul,auto,2,2,1084764,9,18.66,18.36,20.28 -mul,kernel,2,2,3237307,9,6.40,6.31,20.67 -mul,floor,2,2,1346610,9,14.94,14.67,20.02 -mul,gmp,2,2,4190304,9,4.74,4.71,19.84 -mul,gmpz,2,2,2917102,9,6.81,6.75,19.92 -mul,auto,3,3,1021662,9,20.14,19.54,20.60 -mul,kernel,3,3,2439269,9,8.21,7.98,19.86 -mul,floor,3,3,1176189,9,17.89,16.71,20.66 -mul,gmp,3,3,3178912,9,6.24,6.23,19.84 -mul,gmpz,3,3,2271099,9,9.01,8.55,20.55 -mul,auto,4,4,941244,9,21.22,21.00,20.05 -mul,kernel,4,4,1782171,9,11.16,11.02,19.86 -mul,floor,4,4,1194911,9,16.75,16.68,20.03 -mul,gmp,4,4,2445031,9,8.16,8.10,20.46 -mul,gmpz,4,4,1852659,9,10.67,9.76,19.73 -mul,auto,6,6,734042,9,26.92,26.74,19.81 -mul,kernel,6,6,1030883,9,19.38,19.28,20.00 -mul,floor,6,6,834578,9,24.56,24.13,20.52 -mul,gmp,6,6,1291542,9,15.40,14.73,19.84 -mul,gmpz,6,6,1056563,9,17.52,17.47,18.67 -mul,auto,8,8,570515,9,34.76,34.65,19.89 -mul,kernel,8,8,867957,9,23.02,22.93,20.18 -mul,floor,8,8,644248,9,30.67,30.40,19.76 -mul,gmp,8,8,810642,9,24.93,22.94,19.93 -mul,gmpz,8,8,814453,9,24.62,24.45,20.56 -mul,auto,12,12,370780,9,54.14,53.86,20.08 -mul,kernel,12,12,483524,9,41.46,41.33,20.05 -mul,floor,12,12,402815,9,49.63,49.22,20.02 -mul,gmp,12,12,448952,9,44.39,44.21,19.92 -mul,gmpz,12,12,424804,9,46.78,46.65,19.95 -mul,auto,16,16,239561,9,82.61,82.15,19.84 -mul,kernel,16,16,283623,9,69.51,69.16,19.74 -mul,floor,16,16,254257,9,78.78,78.31,20.02 -mul,gmp,16,16,258696,9,77.55,77.27,20.07 -mul,gmpz,16,16,252553,9,79.18,79.02,20.02 -mul,auto,32,32,71188,9,281.51,280.33,20.08 -mul,kernel,32,32,77211,9,260.10,259.76,20.10 -mul,floor,32,32,71545,9,280.53,279.53,20.42 -mul,gmp,32,32,77515,9,258.52,257.93,20.04 -mul,gmpz,32,32,76326,9,260.96,260.50,19.94 -mul,auto,64,64,19860,9,1009.37,1004.33,20.03 -mul,kernel,64,64,20246,9,986.25,982.66,19.99 -mul,floor,64,64,19679,9,1014.23,1008.28,19.94 -mul,gmp,64,64,25535,9,775.39,770.50,19.81 -mul,gmpz,64,64,25650,9,778.73,776.07,20.06 -mul,auto,128,128,5579,9,3591.68,3579.49,20.06 -mul,kernel,128,128,5456,9,3597.11,3585.23,19.65 -mul,floor,128,128,5549,9,3611.62,3599.07,20.09 -mul,gmp,128,128,7533,9,2670.32,2641.93,20.08 -mul,gmpz,128,128,7530,9,2666.73,2640.43,20.06 -mul,auto,256,256,1689,9,11792.78,11753.11,19.92 -mul,kernel,256,256,1698,9,11803.37,11762.66,20.04 -mul,floor,256,256,1657,9,11857.75,11784.55,19.67 -mul,gmp,256,256,2548,9,7848.39,7812.55,20.00 -mul,gmpz,256,256,2555,9,7862.46,7821.38,20.10 -mul,auto,512,512,540,9,36957.87,36817.82,19.98 -mul,kernel,512,512,540,9,37091.67,36888.66,20.05 -mul,floor,512,512,541,9,37139.87,36979.51,20.10 -mul,gmp,512,512,1048,9,19085.96,19027.19,20.01 -mul,gmpz,512,512,1034,9,19278.73,19017.93,19.88 -mul,auto,1000,1000,184,9,107241.40,106777.85,19.74 -mul,kernel,1000,1000,189,9,106972.66,106805.11,20.24 -mul,floor,1000,1000,187,9,107481.73,106966.13,20.08 -mul,gmp,1000,1000,365,9,55352.51,55192.35,20.23 -mul,gmpz,1000,1000,362,9,55384.09,55140.19,20.03 -mul,auto,2000,2000,66,9,302117.42,300602.91,20.02 -mul,kernel,2000,2000,66,9,303398.36,302782.83,20.05 -mul,floor,2000,2000,67,9,302837.07,300110.07,20.30 -mul,gmp,2000,2000,135,9,149224.69,149152.78,20.18 -mul,gmpz,2000,2000,134,9,149412.00,148604.16,20.02 -mul,auto,2000,100,427,9,46529.57,46442.43,19.89 -mul,kernel,2000,100,427,9,46744.93,46531.62,19.99 -mul,floor,2000,100,423,9,47080.87,46689.82,19.95 -mul,gmp,2000,100,568,9,35282.94,35108.86,20.03 -mul,gmpz,2000,100,569,9,34934.75,34831.58,19.88 -sqr,auto,4,4,927023,9,21.87,21.53,20.26 -sqr,kernel,4,4,1761921,9,11.27,11.24,19.88 -sqr,floor,4,4,1204969,9,16.70,16.26,20.90 -sqr,gmp,4,4,2932509,9,6.99,6.95,20.51 -sqr,gmpz,4,4,2102463,9,9.69,9.69,20.40 -sqr,auto,16,16,266514,9,75.06,74.67,20.00 -sqr,kernel,16,16,313195,9,63.93,63.68,20.02 -sqr,floor,16,16,278337,9,72.35,72.25,20.16 -sqr,gmp,16,16,317523,9,62.78,62.06,19.96 -sqr,gmpz,16,16,304594,9,65.88,64.37,20.02 -sqr,auto,64,64,33168,9,600.69,599.62,19.97 -sqr,kernel,64,64,34411,9,581.93,580.55,20.03 -sqr,floor,64,64,33161,9,600.71,599.46,19.97 -sqr,gmp,64,64,29683,9,671.58,666.31,19.96 -sqr,gmpz,64,64,29901,9,676.07,650.69,20.06 -sqr,auto,512,512,819,9,24474.77,24405.68,20.04 -sqr,kernel,512,512,817,9,24537.79,24405.34,20.04 -sqr,floor,512,512,811,9,24447.70,24364.57,19.83 -sqr,gmp,512,512,1121,9,18419.01,18196.63,20.59 -sqr,gmpz,512,512,1010,9,19691.17,19482.14,19.86 -sqr,auto,2000,2000,90,9,225002.31,224449.07,20.27 -sqr,kernel,2000,2000,90,9,223557.87,222279.17,20.15 -sqr,floor,2000,2000,90,9,223775.47,222531.02,20.16 -sqr,gmp,2000,2000,166,9,120807.48,118911.40,20.04 -sqr,gmpz,2000,2000,166,9,120966.61,119929.47,20.08 -divrem,auto,2,1,924135,9,21.47,21.32,19.87 -divrem,kernel,2,1,3148248,9,6.36,6.29,20.13 -divrem,floor,2,1,1449091,9,14.24,13.69,20.62 -divrem,gmp,2,1,3983749,9,5.03,5.02,20.06 -divrem,gmpz,2,1,2297393,9,8.75,8.69,20.09 -divrem,auto,8,4,251093,9,79.73,79.05,20.04 -divrem,kernel,8,4,387809,9,51.43,50.64,20.07 -divrem,floor,8,4,307403,9,65.29,64.96,20.07 -divrem,gmp,8,4,479811,9,41.86,41.20,20.04 -divrem,gmpz,8,4,447859,9,44.38,44.07,19.87 -divrem,auto,32,16,46419,9,435.48,425.42,20.11 -divrem,kernel,32,16,49996,9,400.93,379.75,19.82 -divrem,floor,32,16,48214,9,414.29,395.41,19.82 -divrem,gmp,32,16,97156,9,207.57,204.90,20.11 -divrem,gmpz,32,16,95710,9,208.89,204.33,19.94 -divrem,auto,128,64,5398,9,3735.41,3624.27,20.07 -divrem,kernel,128,64,5579,9,3642.58,3569.80,20.25 -divrem,floor,128,64,5438,9,3668.63,3596.10,19.85 -divrem,gmp,128,64,11252,9,1774.01,1764.62,19.97 -divrem,gmpz,128,64,11274,9,1775.96,1763.41,20.02 -divrem,auto,512,256,729,9,27538.81,27238.68,20.09 -divrem,kernel,512,256,731,9,27333.50,26982.27,19.94 -divrem,floor,512,256,730,9,27401.20,27266.95,20.01 -divrem,gmp,512,256,1210,9,16508.75,16454.03,19.97 -divrem,gmpz,512,256,1208,9,16548.15,16500.86,20.00 -divrem,auto,2000,1000,86,9,233746.13,232938.47,20.09 -divrem,kernel,2000,1000,86,9,232952.52,231691.86,20.04 -divrem,floor,2000,1000,86,9,232828.49,231108.53,20.10 -divrem,gmp,2000,1000,148,9,136662.45,135908.78,20.23 -divrem,gmpz,2000,1000,147,9,135930.56,134989.80,19.98 -divrem,auto,4000,2000,29,9,691307.45,688517.24,20.09 -divrem,kernel,4000,2000,30,9,689419.43,686162.50,20.68 -divrem,floor,4000,2000,30,9,693409.73,687466.67,20.76 -divrem,gmp,4000,2000,58,9,342773.71,341159.48,19.88 -divrem,gmpz,4000,2000,59,9,345980.22,343030.37,20.39 -divrem,auto,2000,100,211,9,95527.45,94669.43,20.12 -divrem,kernel,2000,100,212,9,95052.08,94014.74,20.29 -divrem,floor,2000,100,212,9,94602.79,94292.06,20.08 -divrem,gmp,2000,100,290,9,68969.25,68545.55,19.99 -divrem,gmpz,2000,100,290,9,68967.24,68589.37,20.02 -divrem,auto,65536,1,86,9,231581.40,226348.35,19.89 -divrem,kernel,65536,1,87,9,232486.59,230213.11,20.25 -divrem,floor,65536,1,86,9,245740.31,231500.48,21.12 -divrem,gmp,65536,1,114,9,169774.85,166908.62,19.38 -divrem,gmpz,65536,1,117,9,172501.43,171486.47,20.18 -tochars,auto,1,10,3321308,9,6.02,5.99,19.99 -tochars,kernel,1,10,571752,9,34.86,34.17,19.86 -tochars,gmp,1,10,1237706,9,16.18,16.07,20.27 -tochars,gmpz,1,10,820017,9,24.16,24.06,19.86 -tochars,auto,4,10,218309,9,91.90,91.17,20.32 -tochars,kernel,4,10,187774,9,103.44,98.77,19.35 -tochars,gmp,4,10,260237,9,77.10,76.52,20.07 -tochars,gmpz,4,10,202796,9,97.26,96.34,19.71 -tochars,auto,16,10,23704,9,855.34,848.08,20.33 -tochars,kernel,16,10,27437,9,749.61,738.00,20.51 -tochars,gmp,16,10,39292,9,512.13,504.35,20.11 -tochars,gmpz,16,10,32856,9,605.19,589.17,19.84 -tochars,auto,64,10,4210,9,4711.69,4659.02,19.86 -tochars,kernel,64,10,4381,9,4532.50,4426.01,19.78 -tochars,gmp,64,10,7079,9,2844.75,2799.72,20.10 -tochars,gmpz,64,10,6312,9,3158.59,3108.97,19.93 -tochars,auto,256,10,592,9,33929.97,33171.73,20.04 -tochars,kernel,256,10,606,9,32866.61,32262.10,19.85 -tochars,gmp,256,10,1051,9,18996.91,18671.62,19.95 -tochars,gmpz,256,10,972,9,20427.38,20026.11,19.84 -tochars,auto,2000,10,30,9,677865.30,671250.00,20.32 -tochars,kernel,2000,10,30,9,667761.13,663175.00,20.01 -tochars,gmp,2000,10,50,9,402904.16,401577.50,20.19 -tochars,gmpz,2000,10,49,9,415471.10,413571.43,20.39 -tochars,auto,16,16,234297,9,82.29,81.67,19.54 -tochars,gmp,16,16,250657,9,81.28,78.40,20.33 -tochars,gmpz,16,16,125878,9,158.82,156.94,19.96 -tochars,auto,2000,16,2112,9,9476.78,9429.63,20.26 -tochars,gmp,2000,16,2213,9,9020.41,8883.36,19.88 -tochars,gmpz,2000,16,1216,9,16868.52,16506.65,20.46 -fromchars,auto,4,10,222149,9,91.36,90.39,20.28 -fromchars,kernel,4,10,614485,9,32.62,32.32,20.12 -fromchars,gmp,4,10,629697,9,32.40,31.21,20.38 -fromchars,gmpz,4,10,261266,9,74.22,74.07,19.48 -fromchars,auto,16,10,51212,9,402.89,398.18,20.60 -fromchars,kernel,16,10,105533,9,193.33,190.09,20.35 -fromchars,gmp,16,10,144159,9,141.38,140.29,20.47 -fromchars,gmpz,16,10,62819,9,319.43,317.89,20.10 -fromchars,auto,64,10,9135,9,2181.01,2150.60,19.91 -fromchars,kernel,64,10,10865,9,1857.15,1818.19,20.12 -fromchars,gmp,64,10,21017,9,952.92,944.83,20.03 -fromchars,gmpz,64,10,12445,9,1609.16,1599.55,20.01 -fromchars,auto,256,10,1443,9,13821.29,13762.30,20.04 -fromchars,kernel,256,10,1731,9,11592.67,11532.28,20.05 -fromchars,gmp,256,10,2517,9,8011.59,7954.81,20.16 -fromchars,gmpz,256,10,1889,9,10543.43,10500.18,20.30 -fromchars,auto,2000,10,67,9,301569.03,300481.97,20.23 -fromchars,kernel,2000,10,71,9,283669.01,282501.18,20.14 -fromchars,gmp,2000,10,109,9,184273.31,183151.38,20.06 -fromchars,gmpz,2000,10,99,9,203138.46,202977.69,20.18 diff --git a/tests/beman/big_int/perf/item1/macr3_new64a_seed2b.csv b/tests/beman/big_int/perf/item1/macr3_new64a_seed2b.csv deleted file mode 100644 index ba675b63..00000000 --- a/tests/beman/big_int/perf/item1/macr3_new64a_seed2b.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T18:09:53Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64a seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2648971,9,7.46,7.14,19.75 -add,inplace,1,1,2991110,9,3.37,3.26,20.31 -add,kernel,1,1,17391561,9,1.15,1.14,19.94 -add,floor,1,1,2056277,9,9.38,9.21,19.48 -add,gmp,1,1,13250702,9,1.50,1.49,19.85 -add,gmpz,1,1,6702348,9,3.02,2.97,20.16 -add,auto,2,2,1267786,9,15.03,14.94,19.40 -add,inplace,2,2,2592620,9,3.86,3.84,20.07 -add,kernel,2,2,14018926,9,1.42,1.41,19.84 -add,floor,2,2,1985915,9,9.68,9.43,19.37 -add,gmp,2,2,11387299,9,1.96,1.74,21.18 -add,gmpz,2,2,6047827,9,3.33,2.99,23.71 -add,auto,4,4,1399555,9,14.11,14.03,19.84 -add,inplace,4,4,2798064,9,3.53,3.35,19.56 -add,kernel,4,4,10363036,9,1.93,1.92,19.97 -add,floor,4,4,1964039,9,10.23,10.18,20.30 -add,gmp,4,4,11413468,9,1.74,1.74,19.87 -add,gmpz,4,4,5484983,9,3.67,3.50,19.53 -add,auto,8,8,1299595,9,15.51,15.02,20.12 -add,inplace,8,8,2423204,9,4.13,4.12,20.07 -add,kernel,8,8,5755406,9,3.50,3.47,20.14 -add,floor,8,8,1705635,9,11.88,11.70,20.34 -add,gmp,8,8,8914787,9,2.24,2.24,20.15 -add,gmpz,8,8,4703930,9,4.61,4.09,21.62 -add,auto,16,16,1118917,9,17.20,16.82,19.25 -add,inplace,16,16,1769809,9,5.66,5.62,20.08 -add,kernel,16,16,2633126,9,7.57,7.55,19.95 -add,floor,16,16,1389082,9,14.30,14.17,20.00 -add,gmp,16,16,6122678,9,3.24,3.22,19.90 -add,gmpz,16,16,4459329,9,4.50,4.49,20.18 -add,auto,64,64,502315,9,38.17,38.03,19.31 -add,inplace,64,64,499107,9,20.01,19.94,19.98 -add,kernel,64,64,400443,9,49.58,48.46,19.74 -add,floor,64,64,326347,9,60.77,60.03,19.82 -add,gmp,64,64,1794629,9,11.17,11.12,20.05 -add,gmpz,64,64,1489361,9,13.44,13.24,20.00 -add,auto,256,256,182604,9,109.79,107.61,19.96 -add,inplace,256,256,98258,9,101.41,99.40,19.90 -add,kernel,256,256,85950,9,238.17,233.47,20.42 -add,floor,256,256,79514,9,245.59,238.29,19.55 -add,gmp,256,256,349021,9,57.30,56.56,19.95 -add,gmpz,256,256,345086,9,57.95,57.51,20.00 -add,auto,1024,1024,43878,9,452.32,439.73,19.76 -add,inplace,1024,1024,22862,9,435.37,425.25,19.80 -add,kernel,1024,1024,20820,9,993.18,964.50,20.73 -add,floor,1024,1024,20069,9,987.15,963.38,19.72 -add,gmp,1024,1024,79155,9,251.76,248.45,19.88 -add,gmpz,1024,1024,79268,9,253.66,250.92,20.08 -add,auto,2000,2000,22555,9,885.66,861.10,19.96 -add,inplace,2000,2000,11818,9,859.07,836.59,20.30 -add,kernel,2000,2000,10233,9,1935.02,1924.50,20.05 -add,floor,2000,2000,10240,9,1957.05,1920.19,20.11 -add,gmp,2000,2000,39701,9,495.63,492.53,19.69 -add,gmpz,2000,2000,40113,9,497.84,486.50,19.89 -add,auto,1024,1,213993,9,118.43,102.43,24.84 -add,inplace,1024,1,3344512,9,2.98,2.97,20.01 -add,kernel,1024,1,26943,9,749.85,717.16,20.02 -add,floor,1024,1,26662,9,765.81,731.67,20.34 -add,gmp,1024,1,74732,9,265.09,260.71,19.76 -add,gmpz,1024,1,74908,9,266.92,260.84,19.92 -sub,auto,1,1,2729844,9,8.20,7.23,19.86 -sub,inplace,1,1,2879220,9,3.49,3.47,20.28 -sub,kernel,1,1,19080276,9,1.05,1.04,19.99 -sub,floor,1,1,11500473,9,1.74,1.74,20.06 -sub,gmp,1,1,13441457,9,1.50,1.49,20.12 -sub,gmpz,1,1,8019305,9,2.52,2.49,20.19 -sub,auto,2,2,1372382,9,14.43,14.03,19.73 -sub,inplace,2,2,2868495,9,3.48,3.48,20.01 -sub,kernel,2,2,14100811,9,1.42,1.42,20.11 -sub,floor,2,2,2102632,9,9.69,9.44,20.47 -sub,gmp,2,2,9674181,9,1.99,1.98,19.26 -sub,gmpz,2,2,6695379,9,2.99,2.98,20.05 -sub,auto,4,4,1364912,9,14.61,14.26,19.81 -sub,inplace,4,4,2768387,9,3.50,3.48,19.59 -sub,kernel,4,4,10259235,9,1.95,1.94,20.00 -sub,floor,4,4,1962867,9,10.20,9.92,20.15 -sub,gmp,4,4,11449204,9,1.74,1.74,19.97 -sub,gmpz,4,4,7290063,9,2.74,2.73,19.98 -sub,auto,8,8,1292236,9,15.50,15.31,20.08 -sub,inplace,8,8,2456228,9,4.11,4.04,20.16 -sub,kernel,8,8,5660673,9,3.50,3.48,19.83 -sub,floor,8,8,1740142,9,11.44,11.20,19.92 -sub,gmp,8,8,8928617,9,2.24,2.24,20.00 -sub,gmpz,8,8,6160375,9,3.24,3.23,19.98 -sub,auto,16,16,1124822,9,17.56,17.15,19.69 -sub,inplace,16,16,1919852,9,5.29,5.23,20.26 -sub,kernel,16,16,2602047,9,7.72,7.68,20.08 -sub,floor,16,16,1317110,9,16.15,15.10,20.82 -sub,gmp,16,16,6183226,9,3.24,3.22,20.06 -sub,gmpz,16,16,4484875,9,4.23,4.22,18.99 -sub,auto,64,64,528168,9,37.51,35.90,19.66 -sub,inplace,64,64,493896,9,19.90,19.72,19.76 -sub,kernel,64,64,405842,9,50.09,49.89,20.38 -sub,floor,64,64,334213,9,59.96,59.35,20.03 -sub,gmp,64,64,1794064,9,11.15,11.10,20.03 -sub,gmpz,64,64,1496244,9,13.47,13.37,20.13 -sub,auto,256,256,179560,9,110.67,109.32,19.85 -sub,inplace,256,256,98600,9,101.33,98.51,19.89 -sub,kernel,256,256,83527,9,237.91,233.71,19.81 -sub,floor,256,256,80424,9,249.33,247.36,20.04 -sub,gmp,256,256,352627,9,56.92,56.02,20.07 -sub,gmpz,256,256,347660,9,57.46,56.76,19.96 -sub,auto,1024,1024,45429,9,455.42,440.90,20.50 -sub,inplace,1024,1024,22788,9,437.50,434.07,19.93 -sub,kernel,1024,1024,20532,9,979.70,950.80,20.08 -sub,floor,1024,1024,20773,9,994.06,976.81,20.54 -sub,gmp,1024,1024,79430,9,254.28,249.70,20.16 -sub,gmpz,1024,1024,78711,9,254.06,250.27,19.96 -sub,auto,2000,2000,22901,9,886.25,859.15,20.12 -sub,inplace,2000,2000,11563,9,863.35,849.03,19.98 -sub,kernel,2000,2000,10330,9,1943.44,1926.61,20.07 -sub,floor,2000,2000,10004,9,1952.05,1876.36,19.43 -sub,gmp,2000,2000,40355,9,496.16,491.17,20.00 -sub,gmpz,2000,2000,40198,9,498.14,492.28,20.01 -sub,auto,1024,1,187070,9,105.67,98.36,19.89 -sub,inplace,1024,1,3353149,9,3.00,2.98,20.07 -sub,kernel,1024,1,26961,9,752.27,735.73,20.29 -sub,floor,1024,1,26341,9,762.51,745.73,20.04 -sub,gmp,1024,1,74511,9,263.96,260.21,19.65 -sub,gmpz,1024,1,74660,9,267.62,262.23,19.92 -shl,auto,1,13,1616452,9,12.41,12.15,19.46 -shl,inplace,1,13,4004482,9,2.50,2.49,20.02 -shl,kernel,1,13,8911659,9,2.24,2.24,19.99 -shl,kernelip,1,13,8975319,9,1.40,1.12,25.87 -shl,floor,1,13,1915170,9,10.76,10.50,20.77 -shl,gmp,1,13,16078521,9,1.25,1.24,20.08 -shl,gmpz,1,13,10050772,9,1.99,1.98,20.09 -shl,auto,4,13,1523224,9,12.98,12.85,19.89 -shl,inplace,4,13,2642704,9,3.83,3.77,20.25 -shl,kernel,4,13,5355050,9,3.74,3.72,20.03 -shl,kernelip,4,13,2954647,9,3.39,3.37,20.02 -shl,floor,4,13,1586959,9,13.68,12.83,23.94 -shl,gmp,4,13,10020108,9,2.01,1.99,20.50 -shl,gmpz,4,13,7296292,9,2.75,2.73,20.05 -shl,auto,16,13,1307568,9,15.90,15.33,21.11 -shl,inplace,16,13,1882260,9,5.29,5.27,19.92 -shl,kernel,16,13,4929677,9,4.06,4.05,20.03 -shl,kernelip,16,13,1351083,9,6.83,6.79,18.47 -shl,floor,16,13,1655375,9,11.97,11.72,19.89 -shl,gmp,16,13,5742926,9,3.49,3.47,20.04 -shl,gmpz,16,13,3823590,9,5.12,5.08,19.57 -shl,auto,256,13,479760,9,41.59,41.15,19.99 -shl,inplace,256,13,335869,9,29.85,29.72,20.05 -shl,kernel,256,13,404878,9,49.08,48.98,19.91 -shl,kernelip,256,13,204499,9,48.80,48.67,19.97 -shl,floor,256,13,346674,9,57.62,57.44,19.99 -shl,gmp,256,13,540327,9,36.97,36.92,20.00 -shl,gmpz,256,13,512435,9,38.79,38.54,19.89 -shl,auto,2000,13,78280,9,258.93,242.65,20.01 -shl,inplace,2000,13,50531,9,196.55,195.78,19.92 -shl,kernel,2000,13,52098,9,383.95,382.81,20.16 -shl,kernelip,2000,13,26195,9,377.64,374.93,19.91 -shl,floor,2000,13,49841,9,399.75,396.21,19.91 -shl,gmp,2000,13,38770,9,1414.68,755.06,61.62 -shl,gmpz,2000,13,23504,9,2540.19,1316.62,44.59 -shl,auto,2000,77,64973,9,377.73,279.26,27.24 -shl,inplace,2000,77,43602,9,228.07,227.55,19.90 -shl,kernel,2000,77,37388,9,531.99,527.05,19.85 -shl,kernelip,2000,77,19132,9,521.20,515.30,19.92 -shl,floor,2000,77,37032,9,538.60,537.78,19.97 -shl,gmp,2000,77,68862,9,299.30,288.16,20.47 -shl,gmpz,2000,77,64543,9,292.46,287.90,18.93 -shr,auto,1,13,2878702,9,6.91,6.74,19.78 -shr,inplace,1,13,2954596,9,3.34,3.32,19.72 -shr,kernel,1,13,8948110,9,2.24,2.23,20.09 -shr,floor,1,13,7977763,9,2.49,2.47,20.00 -shr,gmp,1,13,20000001,9,1.00,0.99,19.93 -shr,gmpz,1,13,10034851,9,1.99,1.99,20.29 -shr,auto,4,13,1436878,9,13.61,13.48,19.65 -shr,inplace,4,13,2686192,9,3.87,3.73,20.93 -shr,kernel,4,13,5357397,9,3.75,3.73,20.25 -shr,floor,4,13,1671307,9,12.01,11.44,20.05 -shr,gmp,4,13,11480606,9,1.78,1.75,20.45 -shr,gmpz,4,13,7089979,9,2.84,2.77,20.04 -shr,auto,16,13,1053622,9,19.20,19.01,20.33 -shr,inplace,16,13,1868860,9,5.35,5.22,19.94 -shr,kernel,16,13,4874048,9,4.10,4.09,19.99 -shr,floor,16,13,1460402,9,13.00,12.86,19.05 -shr,gmp,16,13,6166080,9,3.24,3.23,19.97 -shr,gmpz,16,13,4700003,9,4.25,4.24,20.02 -shr,auto,256,13,472801,9,42.22,41.87,20.00 -shr,inplace,256,13,323639,9,30.45,30.23,19.77 -shr,kernel,256,13,296560,9,67.16,66.56,19.97 -shr,floor,256,13,263596,9,75.71,75.24,19.96 -shr,gmp,256,13,530488,9,37.61,37.49,19.94 -shr,gmpz,256,13,524791,9,38.16,38.07,20.03 -shr,auto,2000,13,74294,9,290.17,243.06,20.11 -shr,inplace,2000,13,50724,9,197.15,195.80,19.99 -shr,kernel,2000,13,38638,9,513.47,511.31,19.84 -shr,floor,2000,13,38425,9,526.60,524.88,20.34 -shr,gmp,2000,13,65885,9,296.06,290.37,19.77 -shr,gmpz,2000,13,64996,9,305.89,293.25,20.22 -shr,auto,2000,77,83688,9,264.93,243.96,22.52 -shr,inplace,2000,77,50875,9,196.21,195.57,19.95 -shr,kernel,2000,77,38530,9,516.92,514.83,19.90 -shr,floor,2000,77,36751,9,528.31,525.85,19.41 -shr,gmp,2000,77,68436,9,301.13,290.94,20.70 -shr,gmpz,2000,77,69765,9,289.50,285.66,20.30 -mul,auto,1,1,1420040,9,14.64,14.11,20.69 -mul,gmp,1,1,5376462,9,3.73,3.72,20.09 -mul,gmpz,1,1,7289295,9,2.75,2.73,20.03 -mul,auto,2,2,1056327,9,18.97,18.60,19.96 -mul,kernel,2,2,3250199,9,6.27,6.09,20.45 -mul,floor,2,2,1389255,9,14.27,14.15,19.89 -mul,gmp,2,2,4315738,9,4.55,4.47,19.69 -mul,gmpz,2,2,3071369,9,6.72,6.53,20.46 -mul,auto,3,3,983577,9,20.31,19.61,19.95 -mul,kernel,3,3,2413194,9,8.21,8.18,20.16 -mul,floor,3,3,1143563,9,18.70,18.13,21.31 -mul,gmp,3,3,3034597,9,6.44,6.26,19.82 -mul,gmpz,3,3,2298325,9,8.79,8.01,20.89 -mul,auto,4,4,905031,9,22.17,21.83,20.18 -mul,kernel,4,4,1758222,9,11.74,11.23,20.69 -mul,floor,4,4,1134126,9,17.60,17.29,20.04 -mul,gmp,4,4,2177084,9,9.48,9.21,20.55 -mul,gmpz,4,4,1904159,9,9.98,9.94,19.06 -mul,auto,6,6,709021,9,28.07,27.35,19.87 -mul,kernel,6,6,1043732,9,19.20,18.96,20.16 -mul,floor,6,6,826608,9,25.33,24.40,20.80 -mul,gmp,6,6,1339037,9,14.67,14.60,19.69 -mul,gmpz,6,6,1011986,9,20.02,18.68,19.88 -mul,auto,8,8,568735,9,35.57,35.22,20.24 -mul,kernel,8,8,855536,9,23.40,23.10,19.98 -mul,floor,8,8,641818,9,31.57,30.57,20.29 -mul,gmp,8,8,865111,9,23.70,22.40,20.86 -mul,gmpz,8,8,809773,9,26.05,24.44,21.03 -mul,auto,12,12,354195,9,53.95,53.63,19.17 -mul,kernel,12,12,485514,9,40.88,40.76,19.85 -mul,floor,12,12,396362,9,49.70,49.63,19.73 -mul,gmp,12,12,455438,9,44.10,43.95,20.10 -mul,gmpz,12,12,425974,9,46.74,46.62,19.93 -mul,auto,16,16,237011,9,83.49,82.53,19.99 -mul,kernel,16,16,287380,9,69.87,69.55,20.10 -mul,floor,16,16,253848,9,78.76,78.62,20.03 -mul,gmp,16,16,255333,9,76.71,76.08,19.64 -mul,gmpz,16,16,254778,9,78.92,77.93,20.07 -mul,auto,32,32,71034,9,280.92,280.03,20.00 -mul,kernel,32,32,77536,9,258.64,257.59,20.05 -mul,floor,32,32,71835,9,278.87,277.26,20.02 -mul,gmp,32,32,77407,9,257.90,257.16,19.99 -mul,gmpz,32,32,77548,9,261.81,257.86,20.24 -mul,auto,64,64,19738,9,1009.36,1006.26,19.92 -mul,kernel,64,64,20359,9,985.96,978.68,20.05 -mul,floor,64,64,19740,9,1010.94,1007.80,20.07 -mul,gmp,64,64,25836,9,774.48,770.17,20.00 -mul,gmpz,64,64,25564,9,778.11,777.43,19.91 -mul,auto,128,128,5580,9,3585.45,3573.23,20.02 -mul,kernel,128,128,5570,9,3593.06,3575.07,20.10 -mul,floor,128,128,5555,9,3602.57,3592.03,20.06 -mul,gmp,128,128,7258,9,2682.33,2650.04,19.59 -mul,gmpz,128,128,6551,9,3031.01,3013.19,19.85 -mul,auto,256,256,1638,9,12200.02,12074.00,19.97 -mul,kernel,256,256,1697,9,11801.44,11751.64,20.02 -mul,floor,256,256,1690,9,11846.10,11777.86,20.01 -mul,gmp,256,256,2544,9,7856.35,7831.01,20.00 -mul,gmpz,256,256,2536,9,7901.11,7865.27,20.03 -mul,auto,512,512,543,9,36996.62,36903.31,20.08 -mul,kernel,512,512,542,9,37259.30,37028.29,20.19 -mul,floor,512,512,540,9,36965.05,36856.40,19.96 -mul,gmp,512,512,1051,9,19069.77,18999.01,20.04 -mul,gmpz,512,512,1052,9,19049.83,19017.82,20.05 -mul,auto,1000,1000,187,9,107123.21,106701.42,20.08 -mul,kernel,1000,1000,187,9,106922.90,106503.57,20.00 -mul,floor,1000,1000,187,9,107074.64,106801.25,20.02 -mul,gmp,1000,1000,362,9,55303.87,55110.96,20.05 -mul,gmpz,1000,1000,359,9,55518.80,55115.83,19.91 -mul,auto,2000,2000,66,9,302437.50,301523.36,19.96 -mul,kernel,2000,2000,67,9,302702.12,301568.40,20.28 -mul,floor,2000,2000,64,9,302202.47,301736.33,19.37 -mul,gmp,2000,2000,134,9,149146.46,148533.27,19.98 -mul,gmpz,2000,2000,133,9,149290.10,148481.83,19.84 -mul,auto,2000,100,429,9,46474.55,46334.01,19.95 -mul,kernel,2000,100,427,9,46924.08,46605.97,20.02 -mul,floor,2000,100,427,9,46958.63,46639.74,20.04 -mul,gmp,2000,100,565,9,35269.32,35108.26,19.94 -mul,gmpz,2000,100,577,9,34866.05,34741.48,20.10 -sqr,auto,4,4,940699,9,28.95,21.15,25.28 -sqr,kernel,4,4,1768631,9,11.35,11.27,20.08 -sqr,floor,4,4,1215933,9,20.76,16.69,24.53 -sqr,gmp,4,4,2910655,9,6.46,6.23,18.71 -sqr,gmpz,4,4,2120762,9,9.47,9.42,20.17 -sqr,auto,16,16,264128,9,75.77,74.99,20.37 -sqr,kernel,16,16,313770,9,63.76,63.53,20.01 -sqr,floor,16,16,277121,9,68.86,68.50,19.85 -sqr,gmp,16,16,322182,9,62.82,61.98,20.17 -sqr,gmpz,16,16,303745,9,66.75,65.97,20.26 -sqr,auto,64,64,33250,9,600.87,599.75,19.97 -sqr,kernel,64,64,34382,9,583.39,580.23,20.15 -sqr,floor,64,64,33014,9,604.23,602.12,19.94 -sqr,gmp,64,64,29511,9,677.04,668.78,19.98 -sqr,gmpz,64,64,30172,9,674.13,654.22,20.25 -sqr,auto,512,512,813,9,24634.94,24531.57,20.02 -sqr,kernel,512,512,806,9,24602.00,24403.59,19.80 -sqr,floor,512,512,819,9,24471.56,24413.11,20.05 -sqr,gmp,512,512,1091,9,18248.55,18184.85,19.95 -sqr,gmpz,512,512,1015,9,19704.64,19651.93,20.05 -sqr,auto,2000,2000,90,9,223724.07,223058.80,20.14 -sqr,kernel,2000,2000,90,9,223643.06,223229.17,20.15 -sqr,floor,2000,2000,89,9,224334.73,223404.03,19.96 -sqr,gmp,2000,2000,166,9,120898.34,120252.51,20.07 -sqr,gmpz,2000,2000,165,9,120839.14,120409.09,19.95 -divrem,auto,2,1,947351,9,21.57,21.36,20.43 -divrem,kernel,2,1,3206472,9,6.37,6.32,20.39 -divrem,floor,2,1,1434288,9,13.88,13.64,19.86 -divrem,gmp,2,1,3979415,9,5.02,5.01,20.00 -divrem,gmpz,2,1,2296562,9,8.70,8.65,19.99 -divrem,auto,8,4,245412,9,90.38,81.82,21.69 -divrem,kernel,8,4,380503,9,52.63,51.51,19.92 -divrem,floor,8,4,306372,9,65.70,65.41,20.27 -divrem,gmp,8,4,481842,9,41.81,41.26,20.14 -divrem,gmpz,8,4,452286,9,44.28,43.86,20.01 -divrem,auto,32,16,45490,9,438.10,422.51,19.78 -divrem,kernel,32,16,49905,9,401.88,388.68,19.97 -divrem,floor,32,16,48561,9,421.22,412.52,20.39 -divrem,gmp,32,16,98104,9,206.81,205.09,20.24 -divrem,gmpz,32,16,95997,9,208.84,207.36,20.02 -divrem,auto,128,64,5383,9,3732.55,3650.02,20.06 -divrem,kernel,128,64,5568,9,3632.79,3537.13,20.16 -divrem,floor,128,64,5430,9,3696.98,3682.83,20.07 -divrem,gmp,128,64,11246,9,1772.29,1760.36,19.93 -divrem,gmpz,128,64,11325,9,1770.39,1758.22,20.04 -divrem,auto,512,256,726,9,27505.34,27441.40,19.98 -divrem,kernel,512,256,732,9,27379.72,27266.39,20.04 -divrem,floor,512,256,733,9,27287.91,27159.05,20.02 -divrem,gmp,512,256,1217,9,16504.11,16425.06,20.09 -divrem,gmpz,512,256,1205,9,16561.03,16441.29,19.95 -divrem,auto,2000,1000,86,9,234737.41,232430.23,20.18 -divrem,kernel,2000,1000,85,9,233273.04,231982.84,19.84 -divrem,floor,2000,1000,86,9,232905.03,232397.78,20.03 -divrem,gmp,2000,1000,147,9,136973.35,135830.78,20.14 -divrem,gmpz,2000,1000,149,9,134433.72,133705.26,20.03 -divrem,auto,4000,2000,29,9,693178.17,689853.45,20.22 -divrem,kernel,4000,2000,29,9,689922.41,687727.00,20.01 -divrem,floor,4000,2000,29,9,690385.03,684235.62,20.02 -divrem,gmp,4000,2000,58,9,345581.90,343604.16,20.08 -divrem,gmpz,4000,2000,58,9,344729.17,342530.17,19.99 -divrem,auto,2000,100,212,9,94611.44,94247.05,20.06 -divrem,kernel,2000,100,212,9,94272.60,93996.46,19.99 -divrem,floor,2000,100,213,9,94007.04,93886.74,20.04 -divrem,gmp,2000,100,291,9,69168.96,69047.11,20.15 -divrem,gmpz,2000,100,290,9,68873.71,68678.16,19.98 -divrem,auto,65536,1,86,9,234640.50,226932.65,20.07 -divrem,kernel,65536,1,86,9,232874.51,228192.83,20.03 -divrem,floor,65536,1,85,9,234265.19,228735.79,19.84 -divrem,gmp,65536,1,115,9,174809.42,166948.91,19.89 -divrem,gmpz,65536,1,114,9,172184.57,167695.54,19.56 -tochars,auto,1,10,3320584,9,6.00,5.99,19.94 -tochars,kernel,1,10,583919,9,34.93,34.76,20.42 -tochars,gmp,1,10,1202194,9,16.16,15.87,19.42 -tochars,gmpz,1,10,826730,9,24.30,24.15,20.14 -tochars,auto,4,10,220118,9,91.02,90.32,20.13 -tochars,kernel,4,10,189875,9,103.80,102.24,19.74 -tochars,gmp,4,10,258866,9,76.94,76.51,19.93 -tochars,gmpz,4,10,198306,9,101.26,100.16,20.05 -tochars,auto,16,10,23728,9,841.03,818.74,20.40 -tochars,kernel,16,10,26637,9,752.15,735.83,20.00 -tochars,gmp,16,10,39037,9,513.15,500.95,19.98 -tochars,gmpz,16,10,33244,9,609.02,588.79,20.14 -tochars,auto,64,10,4142,9,4799.24,4700.35,19.86 -tochars,kernel,64,10,4392,9,4582.03,4406.92,20.07 -tochars,gmp,64,10,7072,9,2846.43,2821.05,20.10 -tochars,gmpz,64,10,6331,9,3160.57,3146.45,20.01 -tochars,auto,256,10,590,9,34022.67,33725.71,20.04 -tochars,kernel,256,10,608,9,32889.53,32313.80,19.96 -tochars,gmp,256,10,1054,9,19072.78,18882.16,20.09 -tochars,gmpz,256,10,986,9,20424.99,20276.07,20.12 -tochars,auto,2000,10,30,9,675793.03,671218.03,20.29 -tochars,kernel,2000,10,31,9,668008.06,665725.81,20.71 -tochars,gmp,2000,10,50,9,407475.00,401260.00,20.32 -tochars,gmpz,2000,10,49,9,416176.88,414533.16,20.41 -tochars,auto,16,16,243187,9,82.83,82.20,20.30 -tochars,gmp,16,16,241518,9,81.51,79.23,19.57 -tochars,gmpz,16,16,125111,9,162.14,159.79,20.39 -tochars,auto,2000,16,2104,9,9698.15,9443.88,20.35 -tochars,gmp,2000,16,2191,9,9460.39,9117.11,20.56 -tochars,gmpz,2000,16,1161,9,16838.39,16467.74,19.55 -fromchars,auto,4,10,202917,9,91.79,90.93,18.82 -fromchars,kernel,4,10,610219,9,32.90,32.41,20.01 -fromchars,gmp,4,10,628526,9,31.88,31.71,20.11 -fromchars,gmpz,4,10,255202,9,77.16,76.02,19.65 -fromchars,auto,16,10,50067,9,396.27,389.06,19.82 -fromchars,kernel,16,10,103850,9,192.65,188.87,19.97 -fromchars,gmp,16,10,139658,9,142.00,140.83,19.88 -fromchars,gmpz,16,10,62411,9,316.21,314.01,19.73 -fromchars,auto,64,10,9121,9,2190.22,2165.90,19.97 -fromchars,kernel,64,10,10255,9,1922.67,1908.87,19.72 -fromchars,gmp,64,10,20747,9,953.96,945.76,19.81 -fromchars,gmpz,64,10,12463,9,1606.11,1600.34,20.03 -fromchars,auto,256,10,1447,9,13834.20,13816.75,20.04 -fromchars,kernel,256,10,1730,9,11539.28,11467.34,19.99 -fromchars,gmp,256,10,2254,9,8394.61,8362.45,19.01 -fromchars,gmpz,256,10,1875,9,10696.16,10647.38,20.14 -fromchars,auto,2000,10,67,9,300888.69,300291.04,20.17 -fromchars,kernel,2000,10,71,9,283462.44,282553.41,20.14 -fromchars,gmp,2000,10,109,9,184229.36,183858.17,20.09 -fromchars,gmpz,2000,10,99,9,204136.36,203458.33,20.23 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_big1a.csv b/tests/beman/big_int/perf/item1/macr4_base64_big1a.csv deleted file mode 100644 index 58754d7f..00000000 --- a/tests/beman/big_int/perf/item1/macr4_base64_big1a.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,409,3,48701.81,46427.36,19.93 -shl,inplace,131072,13,497,3,20046.40,20036.59,19.99 -shl,kernel,131072,13,668,3,29786.93,29704.03,19.93 -shr,auto,131072,13,388,3,51212.09,51111.90,19.97 -shr,inplace,131072,13,496,3,20124.92,20033.64,19.95 -shr,kernel,131072,13,511,3,38351.60,38235.81,19.68 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_big1b.csv b/tests/beman/big_int/perf/item1/macr4_base64_big1b.csv deleted file mode 100644 index 62d0a727..00000000 --- a/tests/beman/big_int/perf/item1/macr4_base64_big1b.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,410,3,48857.21,48854.47,20.04 -shl,inplace,131072,13,502,3,19777.56,19751.33,19.86 -shl,kernel,131072,13,684,3,29291.36,29222.04,20.03 -shr,auto,131072,13,396,3,50423.93,50260.52,19.95 -shr,inplace,131072,13,506,3,19834.94,19761.12,20.06 -shr,kernel,131072,13,533,3,37527.13,37447.15,20.00 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_big2a.csv b/tests/beman/big_int/perf/item1/macr4_base64_big2a.csv deleted file mode 100644 index 8b2fac9e..00000000 --- a/tests/beman/big_int/perf/item1/macr4_base64_big2a.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,407,3,49094.90,49035.53,19.98 -shl,inplace,131072,13,505,3,19822.81,19783.50,20.02 -shl,kernel,131072,13,683,3,29293.62,29267.69,20.01 -shr,auto,131072,13,397,3,50278.65,50269.00,19.97 -shr,inplace,131072,13,505,3,19790.68,19781.11,19.99 -shr,kernel,131072,13,532,3,37566.73,37557.64,19.99 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_big2b.csv b/tests/beman/big_int/perf/item1/macr4_base64_big2b.csv deleted file mode 100644 index 03512cb4..00000000 --- a/tests/beman/big_int/perf/item1/macr4_base64_big2b.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,409,3,49080.79,49060.62,20.07 -shl,inplace,131072,13,504,3,19841.27,19826.84,20.25 -shl,kernel,131072,13,683,3,29299.11,29245.55,20.01 -shr,auto,131072,13,395,3,50449.79,50271.73,19.91 -shr,inplace,131072,13,505,3,19879.62,19836.47,20.09 -shr,kernel,131072,13,533,3,37565.35,37563.79,20.02 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_other_seed1a.csv b/tests/beman/big_int/perf/item1/macr4_base64_other_seed1a.csv deleted file mode 100644 index 8cd18e83..00000000 --- a/tests/beman/big_int/perf/item1/macr4_base64_other_seed1a.csv +++ /dev/null @@ -1,127 +0,0 @@ -# gap_sweep date 2026-10-06T18:28:11Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=add,sub,mul,sqr,divrem bands=small pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2960975,9,6.80,6.69,20.23 -add,inplace,1,1,3079180,9,3.24,2.99,19.73 -add,kernel,1,1,17459698,9,1.14,1.14,19.95 -add,floor,1,1,2067131,9,9.68,9.18,19.77 -add,gmp,1,1,13443945,9,1.49,1.48,20.14 -add,gmpz,1,1,6090978,9,3.00,2.97,18.77 -add,auto,2,2,1365892,9,14.77,14.47,20.30 -add,inplace,2,2,2651767,9,3.78,3.76,20.24 -add,kernel,2,2,14331388,9,1.43,1.40,20.39 -add,floor,2,2,2021824,9,9.84,9.76,21.08 -add,gmp,2,2,11443023,9,1.99,1.75,21.79 -add,gmpz,2,2,6573911,9,4.99,3.04,27.30 -add,auto,4,4,1257008,9,15.69,15.49,19.76 -add,inplace,4,4,2669930,9,3.74,3.73,20.00 -add,kernel,4,4,10452646,9,1.92,1.91,20.11 -add,floor,4,4,1922275,9,10.38,10.28,20.12 -add,gmp,4,4,11471325,9,1.74,1.73,20.05 -add,gmpz,4,4,5086066,9,5.08,4.37,23.89 -add,auto,8,8,1289904,9,15.98,15.67,20.59 -add,inplace,8,8,1910273,9,5.15,5.09,19.74 -add,kernel,8,8,5565208,9,3.62,3.51,20.15 -add,floor,8,8,1609018,9,13.05,12.48,20.87 -add,gmp,8,8,8751619,9,2.31,2.28,20.21 -add,gmpz,8,8,4422595,9,4.37,4.27,20.15 -add,auto,16,16,875129,9,22.83,22.53,19.97 -add,inplace,16,16,995751,9,10.12,9.98,20.17 -add,kernel,16,16,2566004,9,7.77,7.68,19.93 -add,floor,16,16,1405919,9,14.42,13.93,20.19 -add,gmp,16,16,5989677,9,3.32,3.23,19.81 -add,gmpz,16,16,4554427,9,4.34,4.08,19.98 -sub,auto,1,1,2736307,9,7.68,7.34,20.94 -sub,inplace,1,1,2872186,9,3.48,3.40,20.04 -sub,kernel,1,1,19040728,9,1.06,1.04,20.29 -sub,floor,1,1,11203624,9,1.79,1.77,20.03 -sub,gmp,1,1,13136770,9,1.53,1.52,20.05 -sub,gmpz,1,1,7166767,9,2.78,2.75,20.23 -sub,auto,2,2,1292454,9,15.64,15.40,20.26 -sub,inplace,2,2,3005881,9,3.43,3.34,20.71 -sub,kernel,2,2,13909214,9,1.42,1.40,19.86 -sub,floor,2,2,2092400,9,9.77,9.40,20.32 -sub,gmp,2,2,11479456,9,1.97,1.74,21.60 -sub,gmpz,2,2,6682545,9,3.00,2.98,20.03 -sub,auto,4,4,1244340,9,15.98,15.65,19.81 -sub,inplace,4,4,2774414,9,4.00,3.60,22.67 -sub,kernel,4,4,9845141,9,1.95,1.94,19.21 -sub,floor,4,4,1983281,9,9.98,9.95,19.80 -sub,gmp,4,4,11469984,9,1.74,1.74,20.04 -sub,gmpz,4,4,6624665,9,3.00,2.99,19.92 -sub,auto,8,8,1229452,9,16.60,16.07,19.01 -sub,inplace,8,8,1917085,9,5.34,5.19,20.39 -sub,kernel,8,8,5725627,9,3.50,3.49,20.07 -sub,floor,8,8,1749788,9,11.63,11.26,20.43 -sub,gmp,8,8,8934338,9,2.24,2.23,20.04 -sub,gmpz,8,8,5722574,9,3.49,3.48,20.16 -sub,auto,16,16,1081421,9,18.29,17.96,19.72 -sub,inplace,16,16,1068345,9,11.66,9.44,24.46 -sub,kernel,16,16,2600403,9,7.74,7.65,20.13 -sub,floor,16,16,1299397,9,14.95,14.87,19.51 -sub,gmp,16,16,6117175,9,3.16,3.11,19.44 -sub,gmpz,16,16,4639910,9,4.25,4.23,19.79 -mul,auto,1,1,1275850,9,15.63,15.27,19.92 -mul,gmp,1,1,5357266,9,3.74,3.73,20.02 -mul,gmpz,1,1,7289284,9,2.74,2.73,20.06 -mul,auto,2,2,775119,9,30.08,25.80,22.66 -mul,kernel,2,2,3058634,9,6.57,6.48,20.04 -mul,floor,2,2,1362177,9,14.68,14.17,19.93 -mul,gmp,2,2,4457638,9,4.73,4.50,20.83 -mul,gmpz,2,2,3055301,9,6.55,6.54,20.04 -mul,auto,3,3,687329,9,29.23,29.11,20.18 -mul,kernel,3,3,2430677,9,8.21,8.20,20.03 -mul,floor,3,3,1199363,9,17.18,16.70,20.62 -mul,gmp,3,3,3149165,9,6.23,6.12,19.74 -mul,gmpz,3,3,2357677,9,8.14,8.12,19.22 -mul,auto,4,4,659007,9,29.75,29.49,19.72 -mul,kernel,4,4,1796106,9,11.31,11.10,20.32 -mul,floor,4,4,1190494,9,16.85,16.71,20.07 -mul,gmp,4,4,2472456,9,8.16,8.06,19.84 -mul,gmpz,4,4,1888610,9,11.00,10.95,20.80 -mul,auto,6,6,605591,9,33.32,32.90,20.16 -mul,kernel,6,6,1057718,9,18.97,18.83,20.12 -mul,floor,6,6,820211,9,23.52,23.36,19.38 -mul,gmp,6,6,1388174,9,14.36,14.23,19.98 -mul,gmpz,6,6,1135579,9,19.35,18.41,21.81 -mul,auto,8,8,471568,9,42.27,41.60,19.91 -mul,kernel,8,8,864951,9,23.07,22.99,19.96 -mul,floor,8,8,542412,9,37.51,36.99,20.34 -mul,gmp,8,8,873124,9,23.01,22.65,20.05 -mul,gmpz,8,8,755356,9,25.07,24.26,19.22 -mul,auto,12,12,319459,9,62.25,62.01,20.03 -mul,kernel,12,12,473916,9,41.22,40.92,19.58 -mul,floor,12,12,407742,9,49.27,48.89,20.05 -mul,gmp,12,12,442944,9,45.02,44.09,19.88 -mul,gmpz,12,12,415416,9,47.68,46.84,19.79 -mul,auto,16,16,207170,9,95.26,94.72,19.79 -mul,kernel,16,16,284140,9,69.68,69.59,19.82 -mul,floor,16,16,255363,9,78.54,78.25,20.12 -mul,gmp,16,16,258188,9,77.67,77.45,20.09 -mul,gmpz,16,16,250016,9,79.50,79.07,19.94 -sqr,auto,4,4,694353,9,29.34,29.08,20.46 -sqr,kernel,4,4,1763360,9,11.33,11.16,19.95 -sqr,floor,4,4,1216740,9,16.49,16.42,20.11 -sqr,gmp,4,4,3102889,9,6.45,6.44,20.05 -sqr,gmpz,4,4,2119307,9,9.46,9.43,20.14 -sqr,auto,16,16,218292,9,89.71,88.91,19.57 -sqr,kernel,16,16,316053,9,62.70,62.24,19.87 -sqr,floor,16,16,288160,9,69.67,69.38,20.34 -sqr,gmp,16,16,316030,9,64.06,62.00,20.17 -sqr,gmpz,16,16,297672,9,67.02,66.23,20.05 -divrem,auto,2,1,627454,9,30.82,30.18,19.38 -divrem,kernel,2,1,3539999,9,5.65,5.62,20.06 -divrem,floor,2,1,1484255,9,13.72,13.47,20.32 -divrem,gmp,2,1,3933951,9,5.14,5.09,20.28 -divrem,gmpz,2,1,2207358,9,8.84,8.81,19.56 -divrem,auto,8,4,217906,9,92.70,92.14,20.22 -divrem,kernel,8,4,482866,9,40.78,40.65,19.70 -divrem,floor,8,4,358240,9,56.83,56.16,20.35 -divrem,gmp,8,4,493667,9,39.76,39.62,19.64 -divrem,gmpz,8,4,468272,9,43.10,42.95,20.18 -divrem,auto,32,16,41037,9,485.42,478.39,19.91 -divrem,kernel,32,16,49543,9,400.06,387.10,19.84 -divrem,floor,32,16,48287,9,418.77,411.82,20.25 -divrem,gmp,32,16,96351,9,207.33,206.56,19.98 -divrem,gmpz,32,16,94818,9,211.04,208.88,20.13 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_seed1a.csv b/tests/beman/big_int/perf/item1/macr4_base64_seed1a.csv deleted file mode 100644 index f371df68..00000000 --- a/tests/beman/big_int/perf/item1/macr4_base64_seed1a.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:25:27Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=shl,shr bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1121549,9,20.08,17.11,19.35 -shl,inplace,1,13,4394347,9,2.29,2.29,20.23 -shl,kernel,1,13,8948661,9,2.23,2.23,19.98 -shl,kernelip,1,13,8952006,9,1.56,1.12,26.70 -shl,floor,1,13,1800251,9,10.65,10.40,19.18 -shl,gmp,1,13,16146328,9,1.24,1.24,20.05 -shl,gmpz,1,13,9902060,9,1.99,1.98,19.77 -shl,auto,4,13,1030982,9,19.28,18.88,19.85 -shl,inplace,4,13,2821333,9,3.55,3.51,20.03 -shl,kernel,4,13,5365945,9,3.72,3.72,19.99 -shl,kernelip,4,13,2898499,9,3.36,3.33,19.49 -shl,floor,4,13,1578544,9,12.89,12.64,20.22 -shl,gmp,4,13,10048040,9,2.00,1.98,20.09 -shl,gmpz,4,13,7229779,9,2.73,2.73,19.77 -shl,auto,16,13,918543,9,21.68,20.75,19.83 -shl,inplace,16,13,1737090,9,5.82,5.77,20.34 -shl,kernel,16,13,4884306,9,4.10,4.08,20.07 -shl,kernelip,16,13,1404494,9,6.82,6.78,19.15 -shl,floor,16,13,1611937,9,12.17,11.92,19.65 -shl,gmp,16,13,5283407,9,3.48,3.47,18.38 -shl,gmpz,16,13,3855617,9,5.15,5.13,19.87 -shl,auto,256,13,231912,9,85.95,85.56,19.94 -shl,inplace,256,13,274534,9,36.38,36.29,19.98 -shl,kernel,256,13,406748,9,49.20,49.08,20.07 -shl,kernelip,256,13,204909,9,48.91,48.62,20.06 -shl,floor,256,13,344779,9,57.51,57.20,19.83 -shl,gmp,256,13,539667,9,36.89,36.82,19.93 -shl,gmpz,256,13,497376,9,37.91,37.80,19.17 -shl,auto,2000,13,31431,9,666.62,621.22,21.19 -shl,inplace,2000,13,35371,9,282.52,281.72,20.11 -shl,kernel,2000,13,52101,9,387.19,382.50,20.13 -shl,kernelip,2000,13,26547,9,376.48,375.67,19.99 -shl,floor,2000,13,49010,9,402.38,399.32,19.72 -shl,gmp,2000,13,44084,9,1683.59,773.78,69.14 -shl,gmpz,2000,13,12969,9,2444.13,1795.68,27.33 -shl,auto,2000,77,24146,9,786.07,759.35,18.99 -shl,inplace,2000,77,23578,9,423.37,420.91,19.96 -shl,kernel,2000,77,37684,9,525.57,519.48,19.81 -shl,kernelip,2000,77,19158,9,519.94,517.85,19.98 -shl,floor,2000,77,37078,9,539.61,538.52,20.02 -shl,gmp,2000,77,69518,9,294.11,286.99,20.49 -shl,gmpz,2000,77,69608,9,287.33,286.98,20.02 -shr,auto,1,13,2115098,9,9.43,9.40,19.97 -shr,inplace,1,13,4478104,9,2.36,2.23,20.69 -shr,kernel,1,13,8960226,9,2.23,2.23,20.02 -shr,floor,1,13,8071919,9,2.49,2.48,20.14 -shr,gmp,1,13,19831595,9,1.02,1.00,20.56 -shr,gmpz,1,13,10007051,9,1.99,1.99,20.04 -shr,auto,4,13,1114493,9,17.80,17.41,19.80 -shr,inplace,4,13,3116282,9,3.20,3.20,20.04 -shr,kernel,4,13,5363507,9,3.72,3.72,19.99 -shr,floor,4,13,1681104,9,12.31,12.13,20.91 -shr,gmp,4,13,10867950,9,1.74,1.74,19.06 -shr,gmpz,4,13,7315909,9,2.87,2.77,20.93 -shr,auto,16,13,926672,9,25.41,21.90,22.32 -shr,inplace,16,13,1979530,9,5.05,5.04,20.09 -shr,kernel,16,13,4789918,9,4.17,4.15,19.98 -shr,floor,16,13,1490605,9,13.18,13.13,19.94 -shr,gmp,16,13,6162722,9,3.39,3.23,21.14 -shr,gmpz,16,13,4579246,9,4.26,4.24,19.68 -shr,auto,256,13,224221,9,87.41,86.73,19.62 -shr,inplace,256,13,280868,9,35.76,35.63,20.14 -shr,kernel,256,13,300035,9,66.38,66.24,19.93 -shr,floor,256,13,264738,9,75.42,75.16,20.01 -shr,gmp,256,13,540820,9,36.71,36.59,19.85 -shr,gmpz,256,13,525597,9,38.03,37.98,19.99 -shr,auto,2000,13,31524,9,672.11,627.08,21.40 -shr,inplace,2000,13,35339,9,282.40,281.58,20.06 -shr,kernel,2000,13,39105,9,513.03,512.01,20.09 -shr,floor,2000,13,37694,9,549.46,531.50,20.60 -shr,gmp,2000,13,65217,9,310.36,298.18,20.72 -shr,gmpz,2000,13,66422,9,300.53,287.00,20.23 -shr,auto,2000,77,19681,9,1082.45,1016.26,19.76 -shr,inplace,2000,77,23705,9,430.77,425.19,20.42 -shr,kernel,2000,77,38100,9,522.66,520.84,19.93 -shr,floor,2000,77,37846,9,542.21,531.34,20.66 -shr,gmp,2000,77,67955,9,296.60,294.86,20.32 -shr,gmpz,2000,77,67963,9,300.07,295.35,20.51 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_seed1b.csv b/tests/beman/big_int/perf/item1/macr4_base64_seed1b.csv deleted file mode 100644 index 6ea1632b..00000000 --- a/tests/beman/big_int/perf/item1/macr4_base64_seed1b.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:26:08Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=1 ops=shl,shr bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1222464,9,16.87,16.38,20.59 -shl,inplace,1,13,4398578,9,2.30,2.29,20.34 -shl,kernel,1,13,8946259,9,2.23,2.23,20.02 -shl,kernelip,1,13,8930868,9,1.78,1.45,31.06 -shl,floor,1,13,1822879,9,10.98,10.91,20.05 -shl,gmp,1,13,16070173,9,1.24,1.24,20.02 -shl,gmpz,1,13,10052128,9,1.99,1.98,19.98 -shl,auto,4,13,1025407,9,18.76,18.66,19.67 -shl,inplace,4,13,2828005,9,3.55,3.53,20.20 -shl,kernel,4,13,5375926,9,3.74,3.72,20.17 -shl,kernelip,4,13,2836248,9,3.37,3.36,19.19 -shl,floor,4,13,1485775,9,13.38,12.91,19.64 -shl,gmp,4,13,10074678,9,1.99,1.98,19.82 -shl,gmpz,4,13,7339822,9,2.73,2.72,20.09 -shl,auto,16,13,941277,9,21.52,21.32,20.22 -shl,inplace,16,13,1732935,9,5.80,5.76,20.17 -shl,kernel,16,13,4905575,9,4.07,4.06,19.98 -shl,kernelip,16,13,1471256,9,6.81,6.80,20.29 -shl,floor,16,13,1642488,9,11.98,11.92,19.79 -shl,gmp,16,13,5382471,9,3.48,3.47,19.07 -shl,gmpz,16,13,4094163,9,4.84,4.80,19.81 -shl,auto,256,13,227160,9,86.50,86.06,19.81 -shl,inplace,256,13,269746,9,36.66,36.52,19.90 -shl,kernel,256,13,407376,9,49.22,49.14,20.05 -shl,kernelip,256,13,200942,9,50.08,49.03,20.17 -shl,floor,256,13,344314,9,57.99,56.95,20.02 -shl,gmp,256,13,541835,9,37.07,36.86,20.15 -shl,gmpz,256,13,526693,9,38.27,37.89,20.21 -shl,auto,2000,13,31019,9,652.66,635.74,19.79 -shl,inplace,2000,13,35346,9,285.85,282.67,20.20 -shl,kernel,2000,13,51741,9,387.33,387.10,20.05 -shl,kernelip,2000,13,26284,9,378.90,376.03,19.90 -shl,floor,2000,13,49876,9,400.18,399.49,19.98 -shl,gmp,2000,13,33735,9,1816.63,784.82,56.78 -shl,gmpz,2000,13,13537,9,2195.75,1720.41,29.29 -shl,auto,2000,77,25979,9,810.50,745.69,20.82 -shl,inplace,2000,77,23789,9,425.21,420.44,20.19 -shl,kernel,2000,77,37887,9,528.25,523.62,20.01 -shl,kernelip,2000,77,19259,9,520.78,519.51,20.08 -shl,floor,2000,77,36888,9,541.05,539.97,19.97 -shl,gmp,2000,77,69269,9,288.89,287.05,20.03 -shl,gmpz,2000,77,69421,9,288.21,287.74,20.32 -shr,auto,1,13,2176308,9,9.48,9.04,20.51 -shr,inplace,1,13,3976053,9,2.37,2.36,18.89 -shr,kernel,1,13,8841380,9,2.23,2.23,19.76 -shr,floor,1,13,7879285,9,2.49,2.48,20.30 -shr,gmp,1,13,20000001,9,0.99,0.99,19.95 -shr,gmpz,1,13,10087376,9,1.99,1.98,20.04 -shr,auto,4,13,1097947,9,17.72,17.35,19.61 -shr,inplace,4,13,3059183,9,3.27,3.26,20.10 -shr,kernel,4,13,5374693,9,3.72,3.71,20.04 -shr,floor,4,13,1680699,9,12.39,11.63,20.56 -shr,gmp,4,13,11418143,9,1.74,1.73,19.84 -shr,gmpz,4,13,7265133,9,2.73,2.72,19.84 -shr,auto,16,13,921082,9,21.49,20.93,19.77 -shr,inplace,16,13,1968330,9,5.10,5.08,20.11 -shr,kernel,16,13,4801892,9,4.18,4.17,20.05 -shr,floor,16,13,1462028,9,13.25,13.17,19.85 -shr,gmp,16,13,6207664,9,3.22,3.22,20.02 -shr,gmpz,16,13,4704654,9,4.23,4.23,19.93 -shr,auto,256,13,222908,9,87.65,87.00,19.59 -shr,inplace,256,13,273214,9,36.26,35.76,19.80 -shr,kernel,256,13,298052,9,66.40,66.30,19.84 -shr,floor,256,13,288540,9,75.65,75.41,21.88 -shr,gmp,256,13,543873,9,36.95,36.64,20.18 -shr,gmpz,256,13,525821,9,38.09,38.00,20.03 -shr,auto,2000,13,29360,9,719.20,683.89,20.91 -shr,inplace,2000,13,35155,9,285.80,282.07,20.11 -shr,kernel,2000,13,38009,9,513.82,512.13,19.54 -shr,floor,2000,13,37923,9,526.08,524.57,19.99 -shr,gmp,2000,13,69749,9,315.97,294.98,22.10 -shr,gmpz,2000,13,68877,9,297.97,291.05,20.99 -shr,auto,2000,77,19647,9,1093.03,1003.95,21.32 -shr,inplace,2000,77,23777,9,419.98,418.82,19.98 -shr,kernel,2000,77,38748,9,516.61,515.54,20.03 -shr,floor,2000,77,37524,9,529.35,525.04,19.85 -shr,gmp,2000,77,66182,9,289.95,289.27,19.59 -shr,gmpz,2000,77,68706,9,286.19,285.62,19.85 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_seed2a.csv b/tests/beman/big_int/perf/item1/macr4_base64_seed2a.csv deleted file mode 100644 index 16dc6856..00000000 --- a/tests/beman/big_int/perf/item1/macr4_base64_seed2a.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:26:49Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=2 ops=shl,shr bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1131213,9,17.18,16.61,19.54 -shl,inplace,1,13,4365467,9,2.34,2.31,20.45 -shl,kernel,1,13,8902004,9,2.24,2.24,20.04 -shl,kernelip,1,13,8648390,9,1.51,1.36,27.36 -shl,floor,1,13,1797497,9,11.18,10.95,20.17 -shl,gmp,1,13,16089806,9,1.24,1.24,20.09 -shl,gmpz,1,13,10053924,9,1.99,1.98,20.33 -shl,auto,4,13,1027380,9,18.95,18.59,19.63 -shl,inplace,4,13,2821875,9,3.57,3.50,20.29 -shl,kernel,4,13,5383803,9,3.72,3.71,20.04 -shl,kernelip,4,13,2908027,9,3.36,3.26,19.54 -shl,floor,4,13,1546642,9,12.87,12.41,19.69 -shl,gmp,4,13,10085473,9,2.00,1.98,20.09 -shl,gmpz,4,13,7328346,9,2.73,2.73,20.05 -shl,auto,16,13,946289,9,21.44,21.14,20.40 -shl,inplace,16,13,1731181,9,5.79,5.77,20.03 -shl,kernel,16,13,4896695,9,4.10,4.07,20.08 -shl,kernelip,16,13,1468942,9,6.82,6.81,20.13 -shl,floor,16,13,1669900,9,12.20,12.12,20.49 -shl,gmp,16,13,5312823,9,3.47,3.47,18.57 -shl,gmpz,16,13,3855470,9,5.21,5.15,20.07 -shl,auto,256,13,218117,9,88.43,87.79,19.28 -shl,inplace,256,13,272428,9,36.39,36.32,19.89 -shl,kernel,256,13,405945,9,49.65,49.08,20.11 -shl,kernelip,256,13,204815,9,48.64,48.52,19.96 -shl,floor,256,13,336870,9,59.13,58.95,19.91 -shl,gmp,256,13,540824,9,36.92,36.88,19.98 -shl,gmpz,256,13,528575,9,37.76,37.69,20.00 -shl,auto,2000,13,32164,9,652.42,587.17,20.68 -shl,inplace,2000,13,34654,9,283.85,281.88,19.67 -shl,kernel,2000,13,51858,9,384.57,382.27,19.94 -shl,kernelip,2000,13,26509,9,376.83,375.30,20.00 -shl,floor,2000,13,49867,9,400.44,399.38,20.00 -shl,gmp,2000,13,14520,9,2283.32,1647.10,26.57 -shl,gmpz,2000,13,15820,9,1807.50,1591.43,27.13 -shl,auto,2000,77,23389,9,806.45,781.62,19.11 -shl,inplace,2000,77,23329,9,426.40,422.03,20.03 -shl,kernel,2000,77,37069,9,526.43,525.32,19.57 -shl,kernelip,2000,77,19088,9,530.50,519.93,20.19 -shl,floor,2000,77,35911,9,558.83,555.24,20.18 -shl,gmp,2000,77,69216,9,295.86,293.36,18.46 -shl,gmpz,2000,77,69454,9,295.49,289.46,20.49 -shr,auto,1,13,2082229,9,9.60,9.58,20.05 -shr,inplace,1,13,4470560,9,2.35,2.25,20.81 -shr,kernel,1,13,8973736,9,2.23,2.23,20.00 -shr,floor,1,13,7834785,9,2.48,2.47,20.23 -shr,gmp,1,13,20000001,9,0.99,0.99,19.85 -shr,gmpz,1,13,10061535,9,1.98,1.98,19.95 -shr,auto,4,13,1144810,9,17.54,17.29,20.22 -shr,inplace,4,13,3072086,9,3.31,3.26,20.21 -shr,kernel,4,13,5312159,9,3.72,3.71,19.86 -shr,floor,4,13,1631210,9,12.33,11.77,20.19 -shr,gmp,4,13,11533235,9,1.73,1.73,20.06 -shr,gmpz,4,13,7186792,9,2.80,2.78,20.20 -shr,auto,16,13,886393,9,21.01,20.79,18.61 -shr,inplace,16,13,1969119,9,5.11,5.09,20.25 -shr,kernel,16,13,4722810,9,4.17,4.16,19.74 -shr,floor,16,13,1516568,9,13.29,13.13,20.27 -shr,gmp,16,13,6197840,9,3.22,3.22,20.00 -shr,gmpz,16,13,4728805,9,4.27,4.22,20.16 -shr,auto,256,13,224288,9,87.50,86.91,19.78 -shr,inplace,256,13,271358,9,35.79,35.64,19.46 -shr,kernel,256,13,302063,9,66.42,66.17,20.11 -shr,floor,256,13,264089,9,78.00,75.22,20.43 -shr,gmp,256,13,525916,9,37.12,36.65,19.66 -shr,gmpz,256,13,506439,9,39.49,39.43,20.00 -shr,auto,2000,13,30222,9,697.35,623.58,21.03 -shr,inplace,2000,13,35560,9,282.52,282.10,20.12 -shr,kernel,2000,13,39161,9,511.91,506.71,20.03 -shr,floor,2000,13,38128,9,525.89,523.81,20.04 -shr,gmp,2000,13,67973,9,292.14,286.91,20.18 -shr,gmpz,2000,13,67663,9,289.79,285.88,19.69 -shr,auto,2000,77,19721,9,1046.32,1002.34,20.58 -shr,inplace,2000,77,23880,9,419.04,418.64,20.03 -shr,kernel,2000,77,38618,9,517.97,515.92,20.00 -shr,floor,2000,77,37927,9,527.62,526.78,20.04 -shr,gmp,2000,77,68492,9,294.66,290.43,20.30 -shr,gmpz,2000,77,67924,9,288.48,285.00,19.63 diff --git a/tests/beman/big_int/perf/item1/macr4_base64_seed2b.csv b/tests/beman/big_int/perf/item1/macr4_base64_seed2b.csv deleted file mode 100644 index 59f78636..00000000 --- a/tests/beman/big_int/perf/item1/macr4_base64_seed2b.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:27:30Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.base64 seed=2 ops=shl,shr bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1237772,9,17.91,16.14,22.23 -shl,inplace,1,13,4402667,9,2.30,2.29,20.27 -shl,kernel,1,13,8856510,9,2.24,2.23,19.87 -shl,kernelip,1,13,8950286,9,1.53,1.21,27.06 -shl,floor,1,13,1781455,9,11.04,10.95,19.79 -shl,gmp,1,13,16029543,9,1.24,1.24,20.33 -shl,gmpz,1,13,10048991,9,1.99,1.98,19.97 -shl,auto,4,13,1088128,9,19.14,18.94,20.87 -shl,inplace,4,13,2716883,9,3.59,3.53,19.74 -shl,kernel,4,13,5374557,9,3.72,3.72,20.01 -shl,kernelip,4,13,2898966,9,3.38,3.37,19.57 -shl,floor,4,13,1493439,9,13.44,13.15,20.12 -shl,gmp,4,13,10024007,9,1.99,1.98,19.92 -shl,gmpz,4,13,7339042,9,2.73,2.72,20.06 -shl,auto,16,13,933768,9,21.32,21.22,20.00 -shl,inplace,16,13,1728749,9,5.79,5.77,20.03 -shl,kernel,16,13,4889424,9,4.08,4.06,19.97 -shl,kernelip,16,13,1343006,9,6.81,6.76,18.31 -shl,floor,16,13,1694642,9,11.83,11.76,20.15 -shl,gmp,16,13,5342373,9,3.55,3.51,18.95 -shl,gmpz,16,13,4078918,9,4.93,4.81,20.07 -shl,auto,256,13,225889,9,88.44,87.87,19.98 -shl,inplace,256,13,271321,9,36.94,36.78,20.06 -shl,kernel,256,13,402341,9,50.19,49.66,20.24 -shl,kernelip,256,13,200035,9,49.43,48.94,19.78 -shl,floor,256,13,344074,9,57.60,57.27,19.83 -shl,gmp,256,13,495137,9,39.75,38.99,19.61 -shl,gmpz,256,13,496965,9,40.06,39.80,19.95 -shl,auto,2000,13,28805,9,654.52,631.96,18.99 -shl,inplace,2000,13,35287,9,283.46,282.27,20.04 -shl,kernel,2000,13,52158,9,384.13,382.78,20.03 -shl,kernelip,2000,13,26549,9,377.13,375.52,20.05 -shl,floor,2000,13,49020,9,403.17,402.51,19.88 -shl,gmp,2000,13,44787,9,1974.29,1115.94,76.26 -shl,gmpz,2000,13,11824,9,2176.93,1651.43,22.13 -shl,auto,2000,77,24888,9,785.72,742.58,19.43 -shl,inplace,2000,77,23534,9,427.86,423.32,20.12 -shl,kernel,2000,77,37852,9,529.06,527.94,20.16 -shl,kernelip,2000,77,19196,9,520.32,515.14,19.99 -shl,floor,2000,77,36775,9,544.30,539.81,20.02 -shl,gmp,2000,77,67924,9,294.27,292.49,20.14 -shl,gmpz,2000,77,67680,9,292.71,288.73,19.85 -shr,auto,1,13,2082898,9,9.50,9.44,19.89 -shr,inplace,1,13,4230643,9,2.36,2.35,19.99 -shr,kernel,1,13,10084025,9,1.99,1.98,20.03 -shr,floor,1,13,8061251,9,2.48,2.47,20.62 -shr,gmp,1,13,20000001,9,1.00,0.99,20.08 -shr,gmpz,1,13,10036421,9,1.99,1.99,20.14 -shr,auto,4,13,1109822,9,18.23,17.92,20.49 -shr,inplace,4,13,3115834,9,3.26,3.20,20.24 -shr,kernel,4,13,5638943,9,3.73,3.72,21.07 -shr,floor,4,13,1584358,9,12.57,12.40,20.25 -shr,gmp,4,13,10999866,9,1.78,1.75,19.53 -shr,gmpz,4,13,7264237,9,2.74,2.73,19.98 -shr,auto,16,13,935067,9,21.73,21.38,20.27 -shr,inplace,16,13,1939590,9,5.03,5.02,19.60 -shr,kernel,16,13,4793737,9,4.19,4.17,20.12 -shr,floor,16,13,1509073,9,13.47,13.21,20.52 -shr,gmp,16,13,5931602,9,3.26,3.24,19.34 -shr,gmpz,16,13,4725850,9,4.26,4.22,21.59 -shr,auto,256,13,224056,9,89.87,88.43,20.24 -shr,inplace,256,13,274437,9,35.87,35.77,19.75 -shr,kernel,256,13,301625,9,66.30,66.22,20.00 -shr,floor,256,13,289710,9,75.58,75.39,21.94 -shr,gmp,256,13,538788,9,36.87,36.72,19.91 -shr,gmpz,256,13,524462,9,38.94,38.15,20.30 -shr,auto,2000,13,28337,9,686.99,654.94,19.69 -shr,inplace,2000,13,35448,9,282.31,281.61,20.03 -shr,kernel,2000,13,39279,9,512.24,511.40,20.16 -shr,floor,2000,13,38136,9,530.26,525.52,20.22 -shr,gmp,2000,13,65126,9,317.65,305.43,21.06 -shr,gmpz,2000,13,66461,9,298.88,289.25,20.37 -shr,auto,2000,77,20584,9,1044.34,986.00,21.66 -shr,inplace,2000,77,23490,9,420.06,418.91,19.74 -shr,kernel,2000,77,38788,9,518.59,516.16,20.13 -shr,floor,2000,77,37945,9,527.94,525.20,20.02 -shr,gmp,2000,77,67218,9,298.25,292.17,20.36 -shr,gmpz,2000,77,69015,9,291.23,287.08,20.20 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_big1a.csv b/tests/beman/big_int/perf/item1/macr4_new64_big1a.csv deleted file mode 100644 index 56e38407..00000000 --- a/tests/beman/big_int/perf/item1/macr4_new64_big1a.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,1108,3,18064.94,18046.56,20.02 -shl,inplace,131072,13,541,3,18559.34,18551.06,20.10 -shl,kernel,131072,13,683,3,29273.18,29244.27,20.12 -shr,auto,131072,13,1100,3,18155.30,18135.53,20.01 -shr,inplace,131072,13,540,3,18574.65,18509.53,20.07 -shr,kernel,131072,13,531,3,37625.94,37579.41,19.98 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_big1b.csv b/tests/beman/big_int/perf/item1/macr4_new64_big1b.csv deleted file mode 100644 index 99cac1f1..00000000 --- a/tests/beman/big_int/perf/item1/macr4_new64_big1b.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,1109,3,18097.16,18076.19,20.11 -shl,inplace,131072,13,537,3,18623.53,18576.74,20.01 -shl,kernel,131072,13,682,3,29348.24,29262.34,20.02 -shr,auto,131072,13,1093,3,18190.30,18068.01,19.92 -shr,inplace,131072,13,531,3,18917.80,18802.77,20.23 -shr,kernel,131072,13,532,3,37688.91,37559.60,20.07 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_big2a.csv b/tests/beman/big_int/perf/item1/macr4_new64_big2a.csv deleted file mode 100644 index 99c94b72..00000000 --- a/tests/beman/big_int/perf/item1/macr4_new64_big2a.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,1095,3,18062.25,18054.00,19.79 -shl,inplace,131072,13,536,3,18538.48,18518.03,20.00 -shl,kernel,131072,13,680,3,29227.51,29201.41,19.88 -shr,auto,131072,13,1102,3,18182.21,18127.57,20.06 -shr,inplace,131072,13,539,3,18595.51,18482.76,20.27 -shr,kernel,131072,13,533,3,37624.69,37553.00,20.05 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_big2b.csv b/tests/beman/big_int/perf/item1/macr4_new64_big2b.csv deleted file mode 100644 index e91262f2..00000000 --- a/tests/beman/big_int/perf/item1/macr4_new64_big2b.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,1104,3,18471.51,18330.69,20.37 -shl,inplace,131072,13,520,3,19371.35,19017.31,20.20 -shl,kernel,131072,13,645,3,30337.86,30005.56,19.54 -shr,auto,131072,13,1147,3,18725.52,18640.29,21.47 -shr,inplace,131072,13,529,3,18668.71,18661.00,19.75 -shr,kernel,131072,13,529,3,37708.18,37663.59,19.99 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_other_seed1a.csv b/tests/beman/big_int/perf/item1/macr4_new64_other_seed1a.csv deleted file mode 100644 index 853534e6..00000000 --- a/tests/beman/big_int/perf/item1/macr4_new64_other_seed1a.csv +++ /dev/null @@ -1,127 +0,0 @@ -# gap_sweep date 2026-10-06T18:28:43Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=add,sub,mul,sqr,divrem bands=small pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,3669582,9,6.19,5.94,22.52 -add,inplace,1,1,5369799,9,1.86,1.86,19.88 -add,kernel,1,1,17517373,9,1.14,1.14,20.03 -add,floor,1,1,2119728,9,9.23,9.18,20.27 -add,gmp,1,1,13455177,9,1.49,1.49,20.10 -add,gmpz,1,1,6706399,9,3.02,2.97,20.22 -add,auto,2,2,1248762,9,16.12,15.84,20.17 -add,inplace,2,2,2422392,9,4.06,3.98,19.77 -add,kernel,2,2,14348612,9,1.39,1.39,19.99 -add,floor,2,2,2064298,9,9.92,9.88,22.27 -add,gmp,2,2,10070774,9,1.98,1.98,19.98 -add,gmpz,2,2,6425011,9,3.44,3.13,21.85 -add,auto,4,4,1429558,9,14.36,13.97,20.56 -add,inplace,4,4,2690950,9,3.52,3.50,19.28 -add,kernel,4,4,10024201,9,1.95,1.93,19.58 -add,floor,4,4,1909876,9,10.49,10.42,20.22 -add,gmp,4,4,11440183,9,1.75,1.73,20.02 -add,gmpz,4,4,3595950,9,6.10,5.19,21.50 -add,auto,8,8,1302674,9,15.37,15.15,19.98 -add,inplace,8,8,2362480,9,4.22,4.21,19.99 -add,kernel,8,8,5770624,9,3.49,3.46,20.10 -add,floor,8,8,1707801,9,11.94,11.67,20.53 -add,gmp,8,8,8955358,9,2.23,2.23,20.00 -add,gmpz,8,8,5225858,9,4.24,3.87,21.75 -add,auto,16,16,912621,9,22.12,21.85,20.29 -add,inplace,16,16,1747233,9,5.71,5.58,19.82 -add,kernel,16,16,2650579,9,7.53,7.52,19.98 -add,floor,16,16,1436769,9,13.90,13.66,20.09 -add,gmp,16,16,6187556,9,3.23,3.22,20.02 -add,gmpz,16,16,4978129,9,4.49,4.29,22.23 -sub,auto,1,1,3653296,9,5.70,5.45,20.52 -sub,inplace,1,1,5327304,9,1.86,1.86,20.05 -sub,kernel,1,1,19120220,9,1.03,1.03,19.72 -sub,floor,1,1,11501934,9,1.79,1.75,20.52 -sub,gmp,1,1,13302566,9,1.49,1.49,19.87 -sub,gmpz,1,1,8068985,9,2.48,2.47,20.01 -sub,auto,2,2,1395892,9,14.30,14.22,19.96 -sub,inplace,2,2,2624890,9,3.86,3.80,20.28 -sub,kernel,2,2,14428019,9,1.42,1.40,20.45 -sub,floor,2,2,2100227,9,9.56,9.43,21.25 -sub,gmp,2,2,10074509,9,1.98,1.97,19.99 -sub,gmpz,2,2,7176466,9,2.98,2.97,21.37 -sub,auto,4,4,1300648,9,14.55,14.29,19.07 -sub,inplace,4,4,2589965,9,3.89,3.81,20.13 -sub,kernel,4,4,10408315,9,1.92,1.91,20.00 -sub,floor,4,4,1880813,9,10.18,9.65,19.09 -sub,gmp,4,4,11268235,9,1.76,1.76,19.93 -sub,gmpz,4,4,7194898,9,2.78,2.75,20.11 -sub,auto,8,8,1234399,9,15.66,15.44,19.75 -sub,inplace,8,8,2355849,9,4.37,4.16,20.48 -sub,kernel,8,8,5717625,9,3.50,3.48,20.07 -sub,floor,8,8,1708584,9,11.81,11.65,20.19 -sub,gmp,8,8,8969346,9,2.23,2.23,20.06 -sub,gmpz,8,8,6203941,9,3.23,3.22,20.04 -sub,auto,16,16,1126367,9,17.95,17.87,20.25 -sub,inplace,16,16,1847699,9,5.35,5.34,19.82 -sub,kernel,16,16,2599991,9,7.76,7.67,20.14 -sub,floor,16,16,1342703,9,14.88,14.87,20.23 -sub,gmp,16,16,6191121,9,3.27,3.23,20.31 -sub,gmpz,16,16,4674809,9,4.24,4.22,19.86 -mul,auto,1,1,1476705,9,13.67,13.17,19.75 -mul,gmp,1,1,5260356,9,3.75,3.73,19.74 -mul,gmpz,1,1,7287236,9,2.74,2.73,19.94 -mul,auto,2,2,1104052,9,18.56,18.11,20.52 -mul,kernel,2,2,3249654,9,6.22,6.13,20.22 -mul,floor,2,2,1436731,9,14.42,14.07,20.89 -mul,gmp,2,2,4480026,9,4.47,4.46,20.17 -mul,gmpz,2,2,3010537,9,6.68,6.46,20.17 -mul,auto,3,3,1041948,9,20.07,19.22,20.79 -mul,kernel,3,3,2445092,9,7.97,7.93,19.59 -mul,floor,3,3,1201328,9,16.65,16.60,20.10 -mul,gmp,3,3,3212828,9,6.21,6.10,19.93 -mul,gmpz,3,3,2274747,9,8.69,8.61,19.75 -mul,auto,4,4,924025,9,21.56,21.33,19.98 -mul,kernel,4,4,1891993,9,11.10,10.43,20.77 -mul,floor,4,4,1182612,9,16.69,16.62,19.79 -mul,gmp,4,4,2255998,9,8.97,8.18,20.05 -mul,gmpz,4,4,2034868,9,9.77,9.72,20.31 -mul,auto,6,6,506840,9,38.02,37.56,19.31 -mul,kernel,6,6,1029562,9,19.25,19.12,19.83 -mul,floor,6,6,841027,9,24.26,23.81,20.60 -mul,gmp,6,6,1290356,9,14.88,14.46,20.01 -mul,gmpz,6,6,1171338,9,18.29,16.92,21.18 -mul,auto,8,8,571152,9,35.12,34.96,20.08 -mul,kernel,8,8,872970,9,22.91,22.85,20.01 -mul,floor,8,8,650938,9,30.97,30.34,20.17 -mul,gmp,8,8,799833,9,24.22,22.90,19.53 -mul,gmpz,8,8,759025,9,24.15,24.02,18.89 -mul,auto,12,12,360371,9,54.22,53.89,19.55 -mul,kernel,12,12,479086,9,41.79,41.30,20.12 -mul,floor,12,12,398816,9,49.28,49.16,19.71 -mul,gmp,12,12,451024,9,44.60,44.21,20.18 -mul,gmpz,12,12,427356,9,46.71,46.57,19.96 -mul,auto,16,16,238793,9,83.62,83.01,20.06 -mul,kernel,16,16,287295,9,69.81,69.37,20.06 -mul,floor,16,16,256165,9,78.58,78.35,20.21 -mul,gmp,16,16,258482,9,76.80,76.10,19.87 -mul,gmpz,16,16,253741,9,78.12,77.89,19.85 -sqr,auto,4,4,937846,9,22.02,21.32,20.62 -sqr,kernel,4,4,1818810,9,11.54,10.98,21.19 -sqr,floor,4,4,1162138,9,16.93,16.43,19.61 -sqr,gmp,4,4,2988635,9,6.99,6.30,20.70 -sqr,gmpz,4,4,2063903,9,9.70,8.92,19.76 -sqr,auto,16,16,254258,9,75.44,74.72,19.35 -sqr,kernel,16,16,305547,9,64.47,64.36,19.78 -sqr,floor,16,16,272408,9,73.24,72.88,19.94 -sqr,gmp,16,16,309403,9,63.36,62.28,19.70 -sqr,gmpz,16,16,296936,9,67.24,66.33,19.98 -divrem,auto,2,1,704067,9,28.81,26.12,19.99 -divrem,kernel,2,1,3554656,9,5.71,5.69,20.30 -divrem,floor,2,1,1487640,9,13.62,13.26,20.22 -divrem,gmp,2,1,3919549,9,5.06,5.04,19.84 -divrem,gmpz,2,1,2282008,9,8.67,8.66,19.82 -divrem,auto,8,4,282866,9,70.18,69.92,19.89 -divrem,kernel,8,4,488124,9,41.24,40.73,20.13 -divrem,floor,8,4,354541,9,56.26,55.84,20.01 -divrem,gmp,8,4,488885,9,40.25,39.92,19.76 -divrem,gmpz,8,4,463062,9,42.80,42.61,19.89 -divrem,auto,32,16,46040,9,436.45,430.31,20.07 -divrem,kernel,32,16,49399,9,405.95,392.14,20.05 -divrem,floor,32,16,47910,9,424.96,418.15,20.95 -divrem,gmp,32,16,96822,9,207.71,207.38,20.15 -divrem,gmpz,32,16,94875,9,210.38,208.19,19.93 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_seed1a.csv b/tests/beman/big_int/perf/item1/macr4_new64_seed1a.csv deleted file mode 100644 index 260b6b89..00000000 --- a/tests/beman/big_int/perf/item1/macr4_new64_seed1a.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:25:47Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=shl,shr bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1613729,9,14.15,12.51,21.30 -shl,inplace,1,13,3866810,9,2.55,2.49,19.84 -shl,kernel,1,13,8770513,9,2.27,2.25,20.06 -shl,kernelip,1,13,8935194,9,1.64,1.12,26.26 -shl,floor,1,13,1784453,9,11.37,11.17,20.49 -shl,gmp,1,13,15820094,9,1.26,1.25,19.99 -shl,gmpz,1,13,9569452,9,2.00,1.99,19.22 -shl,auto,4,13,1513533,9,13.12,13.06,19.95 -shl,inplace,4,13,2633530,9,3.81,3.65,19.97 -shl,kernel,4,13,5370621,9,3.73,3.72,20.10 -shl,kernelip,4,13,2949074,9,3.38,3.33,19.95 -shl,floor,4,13,1529231,9,12.91,12.89,19.96 -shl,gmp,4,13,9950749,9,2.02,1.98,20.12 -shl,gmpz,4,13,7181517,9,2.78,2.76,20.06 -shl,auto,16,13,1299312,9,16.09,15.54,20.40 -shl,inplace,16,13,1856942,9,5.38,5.30,19.94 -shl,kernel,16,13,4908584,9,4.08,4.07,20.06 -shl,kernelip,16,13,1384602,9,6.87,6.82,19.05 -shl,floor,16,13,1668951,9,12.09,11.96,20.23 -shl,gmp,16,13,5748741,9,3.51,3.47,20.14 -shl,gmpz,16,13,3814458,9,5.29,5.23,20.27 -shl,auto,256,13,451484,9,41.23,41.03,18.79 -shl,inplace,256,13,333665,9,29.81,29.69,19.96 -shl,kernel,256,13,398617,9,49.96,49.61,19.91 -shl,kernelip,256,13,204833,9,49.99,48.69,20.54 -shl,floor,256,13,317568,9,61.23,59.23,19.41 -shl,gmp,256,13,533791,9,37.40,37.19,20.04 -shl,gmpz,256,13,513803,9,38.28,38.20,19.72 -shl,auto,2000,13,82086,9,281.24,238.82,22.73 -shl,inplace,2000,13,50811,9,195.70,195.09,19.93 -shl,kernel,2000,13,52140,9,386.62,382.28,20.75 -shl,kernelip,2000,13,26294,9,378.98,376.29,19.92 -shl,floor,2000,13,49335,9,402.65,401.72,19.95 -shl,gmp,2000,13,14325,9,2346.56,1949.42,25.12 -shl,gmpz,2000,13,38189,9,1233.97,682.79,41.77 -shl,auto,2000,77,67382,9,510.23,333.08,32.53 -shl,inplace,2000,77,43494,9,231.46,230.44,20.22 -shl,kernel,2000,77,37171,9,533.11,528.85,19.82 -shl,kernelip,2000,77,18780,9,529.51,527.23,19.95 -shl,floor,2000,77,35980,9,551.05,545.32,19.84 -shl,gmp,2000,77,67820,9,291.91,288.24,19.85 -shl,gmpz,2000,77,67265,9,292.58,288.43,19.77 -shr,auto,1,13,2875205,9,6.74,6.70,19.61 -shr,inplace,1,13,3005499,9,3.31,3.29,19.92 -shr,kernel,1,13,8947315,9,2.24,2.23,20.05 -shr,floor,1,13,7962302,9,2.52,2.51,20.26 -shr,gmp,1,13,19749489,9,1.00,1.00,19.83 -shr,gmpz,1,13,9982492,9,1.99,1.98,19.94 -shr,auto,4,13,1309807,9,15.04,13.95,19.61 -shr,inplace,4,13,2634005,9,3.57,3.53,18.93 -shr,kernel,4,13,5374764,9,3.72,3.72,20.02 -shr,floor,4,13,1614719,9,12.89,12.19,20.55 -shr,gmp,4,13,11525967,9,1.74,1.73,20.03 -shr,gmpz,4,13,7214543,9,2.78,2.72,20.03 -shr,auto,16,13,1055101,9,18.95,18.79,20.16 -shr,inplace,16,13,1948384,9,5.25,5.20,20.41 -shr,kernel,16,13,4798367,9,4.16,4.15,20.02 -shr,floor,16,13,1550217,9,13.41,12.91,20.79 -shr,gmp,16,13,6195615,9,3.23,3.22,20.23 -shr,gmpz,16,13,4712162,9,4.24,4.22,19.96 -shr,auto,256,13,468199,9,43.22,42.85,20.27 -shr,inplace,256,13,326082,9,30.40,30.33,19.87 -shr,kernel,256,13,300431,9,67.29,66.39,20.23 -shr,floor,256,13,264268,9,76.16,75.20,20.08 -shr,gmp,256,13,544127,9,36.80,36.63,20.07 -shr,gmpz,256,13,524291,9,38.12,37.96,20.00 -shr,auto,2000,13,92295,9,261.04,238.17,23.90 -shr,inplace,2000,13,50665,9,195.71,195.18,19.84 -shr,kernel,2000,13,39071,9,512.57,510.62,20.18 -shr,floor,2000,13,37956,9,529.04,526.64,20.07 -shr,gmp,2000,13,68247,9,306.26,295.92,21.06 -shr,gmpz,2000,13,64076,9,315.08,293.40,20.17 -shr,auto,2000,77,75709,9,277.48,250.84,21.04 -shr,inplace,2000,77,50970,9,196.19,195.53,20.03 -shr,kernel,2000,77,38502,9,519.62,515.23,20.02 -shr,floor,2000,77,37724,9,531.33,526.78,20.05 -shr,gmp,2000,77,62726,9,294.45,289.44,18.55 -shr,gmpz,2000,77,64003,9,286.06,285.05,18.54 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_seed1b.csv b/tests/beman/big_int/perf/item1/macr4_new64_seed1b.csv deleted file mode 100644 index bc43b03f..00000000 --- a/tests/beman/big_int/perf/item1/macr4_new64_seed1b.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:26:28Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=1 ops=shl,shr bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1686720,9,11.97,11.78,19.96 -shl,inplace,1,13,4014461,9,2.49,2.48,20.18 -shl,kernel,1,13,9828151,9,1.98,1.98,19.56 -shl,kernelip,1,13,8716761,9,1.77,1.23,21.60 -shl,floor,1,13,1797986,9,10.91,10.43,19.36 -shl,gmp,1,13,16108046,9,1.24,1.24,20.01 -shl,gmpz,1,13,10088038,9,1.99,1.98,20.04 -shl,auto,4,13,1472235,9,12.52,12.51,18.72 -shl,inplace,4,13,2705123,9,3.82,3.65,20.52 -shl,kernel,4,13,5365918,9,3.72,3.71,19.97 -shl,kernelip,4,13,2958439,9,3.38,3.28,19.92 -shl,floor,4,13,1520406,9,13.15,13.12,20.08 -shl,gmp,4,13,10088113,9,1.98,1.98,20.05 -shl,gmpz,4,13,7334437,9,2.73,2.72,20.01 -shl,auto,16,13,1205153,9,15.88,15.24,19.16 -shl,inplace,16,13,1883093,9,5.34,5.28,20.06 -shl,kernel,16,13,4859611,9,4.08,4.05,19.83 -shl,kernelip,16,13,1372503,9,6.82,6.76,18.71 -shl,floor,16,13,1617659,9,12.41,12.07,19.91 -shl,gmp,16,13,5753896,9,3.47,3.47,20.00 -shl,gmpz,16,13,3883842,9,5.26,5.18,20.37 -shl,auto,256,13,478694,9,41.72,41.44,19.97 -shl,inplace,256,13,334905,9,29.74,29.71,19.93 -shl,kernel,256,13,408016,9,49.04,48.96,20.10 -shl,kernelip,256,13,205347,9,48.70,48.57,20.09 -shl,floor,256,13,343364,9,57.85,57.65,19.89 -shl,gmp,256,13,537770,9,37.25,36.83,20.04 -shl,gmpz,256,13,528339,9,38.47,37.84,20.35 -shl,auto,2000,13,83847,9,256.83,222.92,21.51 -shl,inplace,2000,13,50280,9,196.04,195.56,19.71 -shl,kernel,2000,13,52283,9,383.80,382.38,20.07 -shl,kernelip,2000,13,26559,9,377.40,376.23,20.15 -shl,floor,2000,13,49810,9,401.47,399.99,20.04 -shl,gmp,2000,13,34756,9,1735.33,790.42,52.20 -shl,gmpz,2000,13,37213,9,1565.36,765.09,64.18 -shl,auto,2000,77,67954,9,444.56,292.79,34.71 -shl,inplace,2000,77,42643,9,227.46,226.83,19.40 -shl,kernel,2000,77,37657,9,527.08,523.94,19.87 -shl,kernelip,2000,77,19154,9,519.15,516.77,19.92 -shl,floor,2000,77,36746,9,543.88,542.89,20.04 -shl,gmp,2000,77,66668,9,292.09,288.48,19.69 -shl,gmpz,2000,77,69364,9,295.98,288.38,20.43 -shr,auto,1,13,2980479,9,6.72,6.69,20.17 -shr,inplace,1,13,2955276,9,3.33,3.31,19.70 -shr,kernel,1,13,8949902,9,2.24,2.23,20.10 -shr,floor,1,13,8053445,9,2.48,2.47,20.41 -shr,gmp,1,13,20000001,9,0.99,0.99,19.85 -shr,gmpz,1,13,10034544,9,1.99,1.98,20.01 -shr,auto,4,13,1393209,9,13.95,13.90,19.60 -shr,inplace,4,13,2777784,9,3.81,3.57,20.81 -shr,kernel,4,13,5355358,9,3.73,3.72,20.00 -shr,floor,4,13,1644458,9,12.11,11.92,19.89 -shr,gmp,4,13,11518089,9,1.74,1.73,20.01 -shr,gmpz,4,13,7326535,9,2.73,2.72,20.00 -shr,auto,16,13,1102290,9,18.10,18.02,19.98 -shr,inplace,16,13,1949885,9,5.17,5.14,20.27 -shr,kernel,16,13,4788048,9,4.17,4.15,19.95 -shr,floor,16,13,1496226,9,13.42,13.37,20.07 -shr,gmp,16,13,6204918,9,3.23,3.22,20.05 -shr,gmpz,16,13,4735528,9,4.28,4.23,20.22 -shr,auto,256,13,440356,9,42.30,42.21,19.01 -shr,inplace,256,13,327589,9,30.38,30.31,20.02 -shr,kernel,256,13,300429,9,66.55,66.43,20.08 -shr,floor,256,13,264475,9,77.99,77.78,20.66 -shr,gmp,256,13,539612,9,36.75,36.59,19.90 -shr,gmpz,256,13,520967,9,38.12,37.96,19.87 -shr,auto,2000,13,82630,9,288.24,236.81,23.00 -shr,inplace,2000,13,50881,9,195.90,195.52,19.95 -shr,kernel,2000,13,38994,9,514.91,510.98,20.09 -shr,floor,2000,13,38091,9,525.94,523.65,20.02 -shr,gmp,2000,13,66954,9,314.55,305.46,21.39 -shr,gmpz,2000,13,69124,9,304.00,287.90,19.78 -shr,auto,2000,77,78928,9,258.34,231.57,20.06 -shr,inplace,2000,77,50819,9,195.53,195.29,19.89 -shr,kernel,2000,77,38182,9,516.20,512.24,19.75 -shr,floor,2000,77,38177,9,525.59,524.78,20.08 -shr,gmp,2000,77,68989,9,290.43,285.96,20.05 -shr,gmpz,2000,77,68077,9,289.71,287.18,20.06 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_seed2a.csv b/tests/beman/big_int/perf/item1/macr4_new64_seed2a.csv deleted file mode 100644 index 2ff2211d..00000000 --- a/tests/beman/big_int/perf/item1/macr4_new64_seed2a.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:27:09Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=shl,shr bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1738082,9,12.06,11.83,20.98 -shl,inplace,1,13,4030079,9,2.49,2.48,20.04 -shl,kernel,1,13,8936335,9,2.26,2.23,20.12 -shl,kernelip,1,13,6253420,9,1.78,1.77,22.25 -shl,floor,1,13,1869868,9,12.03,10.88,22.77 -shl,gmp,1,13,16104813,9,1.24,1.24,20.05 -shl,gmpz,1,13,10071969,9,1.99,1.98,20.03 -shl,auto,4,13,1553887,9,13.06,12.51,19.96 -shl,inplace,4,13,2642973,9,3.73,3.70,19.96 -shl,kernel,4,13,5368521,9,3.83,3.71,20.45 -shl,kernelip,4,13,2810911,9,3.45,3.39,19.55 -shl,floor,4,13,1520003,9,13.76,13.46,20.95 -shl,gmp,4,13,9924680,9,1.99,1.98,19.81 -shl,gmpz,4,13,7191120,9,2.87,2.82,20.59 -shl,auto,16,13,1185780,9,16.05,15.46,19.07 -shl,inplace,16,13,1803203,9,5.55,5.40,20.02 -shl,kernel,16,13,4776528,9,4.12,4.09,19.78 -shl,kernelip,16,13,1417650,9,6.83,6.81,19.49 -shl,floor,16,13,1665272,9,11.99,11.93,20.04 -shl,gmp,16,13,5757288,9,3.49,3.47,20.10 -shl,gmpz,16,13,3792815,9,5.15,5.12,19.80 -shl,auto,256,13,482764,9,41.18,41.06,19.91 -shl,inplace,256,13,336339,9,29.94,29.68,20.10 -shl,kernel,256,13,405512,9,49.45,49.29,20.08 -shl,kernelip,256,13,204681,9,48.74,48.65,19.95 -shl,floor,256,13,339265,9,58.22,57.77,19.78 -shl,gmp,256,13,543860,9,37.08,36.83,20.41 -shl,gmpz,256,13,520499,9,38.50,38.36,20.08 -shl,auto,2000,13,74874,9,263.67,247.60,19.82 -shl,inplace,2000,13,50194,9,199.76,198.49,20.53 -shl,kernel,2000,13,51097,9,390.59,387.08,20.02 -shl,kernelip,2000,13,26233,9,384.80,380.01,20.26 -shl,floor,2000,13,49450,9,403.84,401.49,19.97 -shl,gmp,2000,13,21732,9,2223.27,1326.84,43.20 -shl,gmpz,2000,13,16144,9,1857.43,1441.20,24.62 -shl,auto,2000,77,63858,9,460.12,295.43,30.55 -shl,inplace,2000,77,44111,9,229.37,226.76,20.20 -shl,kernel,2000,77,37744,9,530.21,523.70,20.11 -shl,kernelip,2000,77,19300,9,526.39,521.90,20.41 -shl,floor,2000,77,36693,9,543.62,541.51,20.06 -shl,gmp,2000,77,69465,9,287.53,286.94,20.00 -shl,gmpz,2000,77,68057,9,289.46,287.02,19.70 -shr,auto,1,13,2955307,9,6.46,6.45,19.16 -shr,inplace,1,13,2760038,9,3.34,3.32,18.96 -shr,kernel,1,13,8963701,9,2.24,2.23,20.06 -shr,floor,1,13,8074089,9,2.49,2.47,20.36 -shr,gmp,1,13,20000001,9,1.00,0.99,20.09 -shr,gmpz,1,13,10023001,9,1.99,1.99,19.94 -shr,auto,4,13,1460922,9,15.35,13.56,19.96 -shr,inplace,4,13,2887284,9,3.60,3.44,19.15 -shr,kernel,4,13,5366818,9,3.77,3.72,21.02 -shr,floor,4,13,1663431,9,12.40,12.26,20.67 -shr,gmp,4,13,11373588,9,1.75,1.74,19.97 -shr,gmpz,4,13,7293826,9,2.74,2.73,20.00 -shr,auto,16,13,1057231,9,18.24,18.20,19.34 -shr,inplace,16,13,1941251,9,5.16,5.13,20.19 -shr,kernel,16,13,4621983,9,4.23,4.21,19.54 -shr,floor,16,13,1495162,9,13.19,12.97,19.78 -shr,gmp,16,13,6058511,9,3.28,3.24,19.94 -shr,gmpz,16,13,4711738,9,4.29,4.28,20.26 -shr,auto,256,13,467864,9,43.46,43.11,20.37 -shr,inplace,256,13,325202,9,30.70,30.29,19.96 -shr,kernel,256,13,300978,9,66.48,66.40,20.02 -shr,floor,256,13,267102,9,75.62,75.33,20.20 -shr,gmp,256,13,543637,9,37.15,36.61,20.10 -shr,gmpz,256,13,523194,9,38.05,37.98,19.93 -shr,auto,2000,13,76622,9,256.34,236.96,20.32 -shr,inplace,2000,13,50971,9,196.07,195.57,19.99 -shr,kernel,2000,13,38585,9,514.92,512.13,19.87 -shr,floor,2000,13,38093,9,526.51,523.69,20.05 -shr,gmp,2000,13,63124,9,324.63,293.80,20.32 -shr,gmpz,2000,13,69105,9,314.72,287.78,20.25 -shr,auto,2000,77,80628,9,277.12,259.20,22.44 -shr,inplace,2000,77,50878,9,196.05,195.32,19.93 -shr,kernel,2000,77,38734,9,523.41,519.78,20.30 -shr,floor,2000,77,38058,9,529.83,528.41,20.18 -shr,gmp,2000,77,68306,9,291.86,289.98,20.25 -shr,gmpz,2000,77,68879,9,286.49,285.53,19.97 diff --git a/tests/beman/big_int/perf/item1/macr4_new64_seed2b.csv b/tests/beman/big_int/perf/item1/macr4_new64_seed2b.csv deleted file mode 100644 index f1998f6c..00000000 --- a/tests/beman/big_int/perf/item1/macr4_new64_seed2b.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:27:50Z host Matts-MacBook-Pro.local Darwin arm64 -# gap_sweep bin /Users/mattborland/Documents/sbi-bench/build/item1/bin/shape_sweep.new64 seed=2 ops=shl,shr bands=small,medium pin= -#const square_long_cutoff=5 karatsuba_cutoff=112 karatsuba_fallback=80 square_karatsuba_cutoff=168 toom_cook_3_cutoff=300 toom_cook_4_cutoff=1400 toom_cook_6_5_cutoff=1400 toom_cook_8_5_cutoff=15000 square_toom_cook_3_cutoff=500 square_toom_cook_4_cutoff=2000 square_toom_cook_6_5_cutoff=2400 square_toom_cook_8_5_cutoff=24000 fft_mul_min_limbs=3300 fft_mul_model_num=5 fft_mul_model_den=8 square_fft_min_limbs=3300 square_fft_model_num=7 square_fft_model_den=16 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=112 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=300 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=1400 mul_slice_z2_num=3 mul_slice_z2_den=2 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 burnikel_ziegler_cutoff=40 burnikel_ziegler_offset=10 barrett_march_cutoff=9 barrett_march8_cutoff=2048 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=131072 reciprocal_span_cutoff=64 fast_input_basecase_chunks=16 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=3 fast_output_preinv_min_limbs=65536 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=0 isa_adx=0 isa_avx2=0 isa_avx512f=0 isa_avx512ifma=0 compiler=appleclang-21.0.0_(clang-2100.3.34.2) via=cmake build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1587656,9,12.45,12.36,19.77 -shl,inplace,1,13,3767042,9,2.52,2.49,19.06 -shl,kernel,1,13,8946360,9,2.24,2.24,20.03 -shl,kernelip,1,13,8845018,9,1.78,1.12,22.40 -shl,floor,1,13,1805641,9,11.42,11.06,20.57 -shl,gmp,1,13,16104281,9,1.24,1.24,20.02 -shl,gmpz,1,13,9902369,9,2.00,1.99,19.79 -shl,auto,4,13,1477817,9,15.08,13.42,22.47 -shl,inplace,4,13,2640153,9,3.67,3.62,19.63 -shl,kernel,4,13,5370585,9,3.72,3.71,19.97 -shl,kernelip,4,13,3008369,9,3.38,3.36,20.52 -shl,floor,4,13,1523210,9,13.16,12.91,20.15 -shl,gmp,4,13,10084518,9,1.99,1.98,20.06 -shl,gmpz,4,13,7284831,9,2.75,2.72,20.07 -shl,auto,16,13,1166430,9,16.31,15.56,19.25 -shl,inplace,16,13,1854047,9,5.28,5.26,19.74 -shl,kernel,16,13,4795653,9,4.17,4.12,20.04 -shl,kernelip,16,13,1371600,9,6.92,6.83,19.04 -shl,floor,16,13,1637621,9,12.17,11.98,19.84 -shl,gmp,16,13,5752144,9,3.59,3.49,20.77 -shl,gmpz,16,13,3791072,9,5.14,5.12,19.54 -shl,auto,256,13,445559,9,41.68,41.17,18.70 -shl,inplace,256,13,330603,9,29.73,29.67,19.68 -shl,kernel,256,13,402628,9,49.98,49.14,20.15 -shl,kernelip,256,13,204513,9,49.27,48.74,20.17 -shl,floor,256,13,344570,9,57.70,57.02,19.88 -shl,gmp,256,13,540956,9,36.91,36.79,19.98 -shl,gmpz,256,13,511054,9,38.41,38.30,19.67 -shl,auto,2000,13,82587,9,257.15,227.00,21.30 -shl,inplace,2000,13,50910,9,195.52,195.08,19.93 -shl,kernel,2000,13,52187,9,383.46,382.88,20.02 -shl,kernelip,2000,13,26582,9,376.22,375.22,19.99 -shl,floor,2000,13,49771,9,401.70,399.49,20.05 -shl,gmp,2000,13,59838,9,1303.02,713.17,77.83 -shl,gmpz,2000,13,10549,9,2119.26,1792.62,19.52 -shl,auto,2000,77,68023,9,360.69,293.65,26.80 -shl,inplace,2000,77,44020,9,227.45,226.69,20.09 -shl,kernel,2000,77,38183,9,528.19,526.78,20.22 -shl,kernelip,2000,77,19131,9,518.86,516.64,19.88 -shl,floor,2000,77,36747,9,544.97,542.61,20.07 -shl,gmp,2000,77,68934,9,288.25,286.98,19.99 -shl,gmpz,2000,77,67001,9,292.66,286.69,19.92 -shr,auto,1,13,3074359,9,6.46,6.44,19.99 -shr,inplace,1,13,3640994,9,2.76,2.70,20.22 -shr,kernel,1,13,8956221,9,2.24,2.23,20.24 -shr,floor,1,13,8044054,9,2.49,2.46,20.08 -shr,gmp,1,13,20000001,9,0.99,0.99,19.86 -shr,gmpz,1,13,10033530,9,1.99,1.98,19.96 -shr,auto,4,13,1295002,9,15.64,15.38,20.19 -shr,inplace,4,13,2594151,9,3.54,3.48,18.54 -shr,kernel,4,13,5351930,9,3.72,3.72,19.92 -shr,floor,4,13,1558338,9,12.15,11.89,18.85 -shr,gmp,4,13,11503999,9,1.74,1.73,19.99 -shr,gmpz,4,13,7330915,9,2.73,2.73,20.02 -shr,auto,16,13,1085590,9,18.86,18.44,20.63 -shr,inplace,16,13,1946000,9,5.22,5.15,20.31 -shr,kernel,16,13,4793707,9,4.16,4.15,19.94 -shr,floor,16,13,1548010,9,12.96,12.88,20.24 -shr,gmp,16,13,6192614,9,3.23,3.22,20.01 -shr,gmpz,16,13,4731873,9,4.24,4.22,20.08 -shr,auto,256,13,464689,9,42.49,42.23,19.77 -shr,inplace,256,13,324667,9,30.31,30.08,19.67 -shr,kernel,256,13,299639,9,66.46,66.35,19.91 -shr,floor,256,13,265988,9,75.19,75.11,20.04 -shr,gmp,256,13,542897,9,36.74,36.66,19.98 -shr,gmpz,256,13,526565,9,38.00,37.91,20.01 -shr,auto,2000,13,75138,9,286.62,250.71,20.52 -shr,inplace,2000,13,50728,9,196.22,195.45,19.96 -shr,kernel,2000,13,38981,9,511.95,506.70,20.01 -shr,floor,2000,13,38246,9,522.89,521.26,20.03 -shr,gmp,2000,13,68170,9,298.48,290.16,20.56 -shr,gmpz,2000,13,62725,9,299.29,291.67,19.02 -shr,auto,2000,77,82049,9,274.90,248.68,22.41 -shr,inplace,2000,77,49835,9,200.76,197.52,19.96 -shr,kernel,2000,77,37738,9,529.05,518.66,19.97 -shr,floor,2000,77,37720,9,533.41,532.25,20.14 -shr,gmp,2000,77,67103,9,297.38,290.02,20.12 -shr,gmpz,2000,77,70095,9,286.64,285.92,20.26 diff --git a/tests/beman/big_int/perf/item1/shift_ab.csv b/tests/beman/big_int/perf/item1/shift_ab.csv new file mode 100644 index 00000000..4526d973 --- /dev/null +++ b/tests/beman/big_int/perf/item1/shift_ab.csv @@ -0,0 +1,424 @@ +# in-place shift A/B (variants built from scratch copies of d689f75; new64 = d689f75, v1 = revert of 2f9150b, +# v2 = v1 + register-carried lshift_copy/rshift_copy loops, v3 = v2 with funnel_shl/funnel_shr); ns per operation, +# median of three interleaved runs; same compiler and flags as new64 (see final_*.csv) +machine,variant,op,shape,row,ns +x64,base64,shl,1x13,auto,16.74 +x64,base64,shl,1x13,inplace,4.07 +x64,base64,shl,1x13,kernel,2.08 +x64,base64,shl,4x13,auto,18.62 +x64,base64,shl,4x13,inplace,5.16 +x64,base64,shl,4x13,kernel,3.39 +x64,base64,shl,16x13,auto,24.54 +x64,base64,shl,16x13,inplace,9.16 +x64,base64,shl,16x13,kernel,7.47 +x64,base64,shl,256x13,auto,133.92 +x64,base64,shl,256x13,inplace,93.05 +x64,base64,shl,256x13,kernel,93.47 +x64,base64,shl,2000x13,auto,917.53 +x64,base64,shl,2000x13,inplace,656.70 +x64,base64,shl,2000x13,kernel,718.92 +x64,base64,shl,2000x77,auto,1063.41 +x64,base64,shl,2000x77,inplace,765.66 +x64,base64,shl,2000x77,kernel,852.05 +x64,base64,shl,131072x13,auto,97977.28 +x64,base64,shl,131072x13,inplace,43553.83 +x64,base64,shl,131072x13,kernel,72261.65 +x64,base64,shr,1x13,auto,10.12 +x64,base64,shr,1x13,inplace,3.65 +x64,base64,shr,1x13,kernel,1.70 +x64,base64,shr,4x13,auto,20.94 +x64,base64,shr,4x13,inplace,4.71 +x64,base64,shr,4x13,kernel,3.45 +x64,base64,shr,16x13,auto,25.78 +x64,base64,shr,16x13,inplace,8.72 +x64,base64,shr,16x13,kernel,8.11 +x64,base64,shr,256x13,auto,136.61 +x64,base64,shr,256x13,inplace,93.71 +x64,base64,shr,256x13,kernel,110.21 +x64,base64,shr,2000x13,auto,949.92 +x64,base64,shr,2000x13,inplace,657.15 +x64,base64,shr,2000x13,kernel,811.90 +x64,base64,shr,2000x77,auto,1086.85 +x64,base64,shr,2000x77,inplace,765.54 +x64,base64,shr,2000x77,kernel,831.59 +x64,base64,shr,131072x13,auto,98933.21 +x64,base64,shr,131072x13,inplace,43515.12 +x64,base64,shr,131072x13,kernel,76088.66 +x64,new64,shl,1x13,auto,12.52 +x64,new64,shl,1x13,inplace,4.19 +x64,new64,shl,1x13,kernel,2.08 +x64,new64,shl,4x13,auto,13.42 +x64,new64,shl,4x13,inplace,5.24 +x64,new64,shl,4x13,kernel,3.44 +x64,new64,shl,16x13,auto,17.07 +x64,new64,shl,16x13,inplace,9.24 +x64,new64,shl,16x13,kernel,7.59 +x64,new64,shl,256x13,auto,122.03 +x64,new64,shl,256x13,inplace,99.32 +x64,new64,shl,256x13,kernel,93.56 +x64,new64,shl,2000x13,auto,772.75 +x64,new64,shl,2000x13,inplace,716.89 +x64,new64,shl,2000x13,kernel,718.69 +x64,new64,shl,2000x77,auto,774.60 +x64,new64,shl,2000x77,inplace,741.66 +x64,new64,shl,2000x77,kernel,851.94 +x64,new64,shl,131072x13,auto,49725.22 +x64,new64,shl,131072x13,inplace,46688.97 +x64,new64,shl,131072x13,kernel,72200.14 +x64,new64,shr,1x13,auto,8.19 +x64,new64,shr,1x13,inplace,3.89 +x64,new64,shr,1x13,kernel,1.70 +x64,new64,shr,4x13,auto,16.06 +x64,new64,shr,4x13,inplace,4.94 +x64,new64,shr,4x13,kernel,3.46 +x64,new64,shr,16x13,auto,19.99 +x64,new64,shr,16x13,inplace,8.89 +x64,new64,shr,16x13,kernel,8.33 +x64,new64,shr,256x13,auto,124.95 +x64,new64,shr,256x13,inplace,99.08 +x64,new64,shr,256x13,kernel,110.03 +x64,new64,shr,2000x13,auto,748.99 +x64,new64,shr,2000x13,inplace,716.48 +x64,new64,shr,2000x13,kernel,812.11 +x64,new64,shr,2000x77,auto,749.55 +x64,new64,shr,2000x77,inplace,740.83 +x64,new64,shr,2000x77,kernel,830.57 +x64,new64,shr,131072x13,auto,48304.43 +x64,new64,shr,131072x13,inplace,46701.23 +x64,new64,shr,131072x13,kernel,76237.49 +x64,v1,shl,1x13,auto,12.56 +x64,v1,shl,1x13,inplace,3.63 +x64,v1,shl,1x13,kernel,2.08 +x64,v1,shl,4x13,auto,13.44 +x64,v1,shl,4x13,inplace,4.55 +x64,v1,shl,4x13,kernel,3.45 +x64,v1,shl,16x13,auto,17.00 +x64,v1,shl,16x13,inplace,9.09 +x64,v1,shl,16x13,kernel,7.46 +x64,v1,shl,256x13,auto,122.25 +x64,v1,shl,256x13,inplace,102.16 +x64,v1,shl,256x13,kernel,93.44 +x64,v1,shl,2000x13,auto,773.42 +x64,v1,shl,2000x13,inplace,738.99 +x64,v1,shl,2000x13,kernel,718.92 +x64,v1,shl,2000x77,auto,775.00 +x64,v1,shl,2000x77,inplace,739.01 +x64,v1,shl,2000x77,kernel,853.38 +x64,v1,shl,131072x13,auto,49751.88 +x64,v1,shl,131072x13,inplace,48260.24 +x64,v1,shl,131072x13,kernel,72243.32 +x64,v1,shr,1x13,auto,8.20 +x64,v1,shr,1x13,inplace,3.28 +x64,v1,shr,1x13,kernel,1.70 +x64,v1,shr,4x13,auto,16.04 +x64,v1,shr,4x13,inplace,4.33 +x64,v1,shr,4x13,kernel,3.47 +x64,v1,shr,16x13,auto,20.03 +x64,v1,shr,16x13,inplace,8.66 +x64,v1,shr,16x13,kernel,8.37 +x64,v1,shr,256x13,auto,125.18 +x64,v1,shr,256x13,inplace,101.65 +x64,v1,shr,256x13,kernel,110.51 +x64,v1,shr,2000x13,auto,749.58 +x64,v1,shr,2000x13,inplace,737.36 +x64,v1,shr,2000x13,kernel,812.13 +x64,v1,shr,2000x77,auto,750.01 +x64,v1,shr,2000x77,inplace,739.27 +x64,v1,shr,2000x77,kernel,829.41 +x64,v1,shr,131072x13,auto,48328.01 +x64,v1,shr,131072x13,inplace,48481.13 +x64,v1,shr,131072x13,kernel,76186.38 +x64,v2,shl,1x13,auto,12.56 +x64,v2,shl,1x13,inplace,3.44 +x64,v2,shl,1x13,kernel,2.08 +x64,v2,shl,4x13,auto,13.39 +x64,v2,shl,4x13,inplace,4.32 +x64,v2,shl,4x13,kernel,3.45 +x64,v2,shl,16x13,auto,16.72 +x64,v2,shl,16x13,inplace,8.41 +x64,v2,shl,16x13,kernel,7.46 +x64,v2,shl,256x13,auto,122.03 +x64,v2,shl,256x13,inplace,98.73 +x64,v2,shl,256x13,kernel,93.44 +x64,v2,shl,2000x13,auto,773.57 +x64,v2,shl,2000x13,inplace,712.55 +x64,v2,shl,2000x13,kernel,718.04 +x64,v2,shl,2000x77,auto,774.54 +x64,v2,shl,2000x77,inplace,712.51 +x64,v2,shl,2000x77,kernel,852.72 +x64,v2,shl,131072x13,auto,49864.19 +x64,v2,shl,131072x13,inplace,46565.61 +x64,v2,shl,131072x13,kernel,72309.63 +x64,v2,shr,1x13,auto,8.35 +x64,v2,shr,1x13,inplace,3.02 +x64,v2,shr,1x13,kernel,1.70 +x64,v2,shr,4x13,auto,15.85 +x64,v2,shr,4x13,inplace,4.11 +x64,v2,shr,4x13,kernel,3.47 +x64,v2,shr,16x13,auto,20.24 +x64,v2,shr,16x13,inplace,8.00 +x64,v2,shr,16x13,kernel,8.39 +x64,v2,shr,256x13,auto,133.62 +x64,v2,shr,256x13,inplace,98.31 +x64,v2,shr,256x13,kernel,110.39 +x64,v2,shr,2000x13,auto,787.97 +x64,v2,shr,2000x13,inplace,711.55 +x64,v2,shr,2000x13,kernel,811.93 +x64,v2,shr,2000x77,auto,790.02 +x64,v2,shr,2000x77,inplace,712.12 +x64,v2,shr,2000x77,kernel,830.58 +x64,v2,shr,131072x13,auto,50322.43 +x64,v2,shr,131072x13,inplace,46567.50 +x64,v2,shr,131072x13,kernel,76120.43 +x64,v3,shl,1x13,auto,12.63 +x64,v3,shl,1x13,inplace,3.44 +x64,v3,shl,1x13,kernel,2.08 +x64,v3,shl,4x13,auto,13.41 +x64,v3,shl,4x13,inplace,4.33 +x64,v3,shl,4x13,kernel,3.46 +x64,v3,shl,16x13,auto,16.75 +x64,v3,shl,16x13,inplace,8.42 +x64,v3,shl,16x13,kernel,7.47 +x64,v3,shl,256x13,auto,121.89 +x64,v3,shl,256x13,inplace,98.69 +x64,v3,shl,256x13,kernel,93.42 +x64,v3,shl,2000x13,auto,773.53 +x64,v3,shl,2000x13,inplace,712.63 +x64,v3,shl,2000x13,kernel,718.95 +x64,v3,shl,2000x77,auto,774.47 +x64,v3,shl,2000x77,inplace,712.49 +x64,v3,shl,2000x77,kernel,851.80 +x64,v3,shl,131072x13,auto,49877.81 +x64,v3,shl,131072x13,inplace,46554.86 +x64,v3,shl,131072x13,kernel,72281.85 +x64,v3,shr,1x13,auto,8.35 +x64,v3,shr,1x13,inplace,3.03 +x64,v3,shr,1x13,kernel,1.70 +x64,v3,shr,4x13,auto,15.84 +x64,v3,shr,4x13,inplace,4.11 +x64,v3,shr,4x13,kernel,3.47 +x64,v3,shr,16x13,auto,20.25 +x64,v3,shr,16x13,inplace,8.00 +x64,v3,shr,16x13,kernel,8.69 +x64,v3,shr,256x13,auto,133.70 +x64,v3,shr,256x13,inplace,98.34 +x64,v3,shr,256x13,kernel,110.38 +x64,v3,shr,2000x13,auto,788.00 +x64,v3,shr,2000x13,inplace,711.67 +x64,v3,shr,2000x13,kernel,812.03 +x64,v3,shr,2000x77,auto,790.04 +x64,v3,shr,2000x77,inplace,712.13 +x64,v3,shr,2000x77,kernel,830.63 +x64,v3,shr,131072x13,auto,50313.51 +x64,v3,shr,131072x13,inplace,46580.59 +x64,v3,shr,131072x13,kernel,76160.78 +m4,base64,shl,1x13,auto,18.53 +m4,base64,shl,1x13,inplace,2.29 +m4,base64,shl,1x13,kernel,2.23 +m4,base64,shl,4x13,auto,19.92 +m4,base64,shl,4x13,inplace,3.57 +m4,base64,shl,4x13,kernel,3.72 +m4,base64,shl,16x13,auto,21.44 +m4,base64,shl,16x13,inplace,5.80 +m4,base64,shl,16x13,kernel,4.45 +m4,base64,shl,256x13,auto,85.63 +m4,base64,shl,256x13,inplace,36.24 +m4,base64,shl,256x13,kernel,48.88 +m4,base64,shl,2000x13,auto,638.95 +m4,base64,shl,2000x13,inplace,282.28 +m4,base64,shl,2000x13,kernel,382.89 +m4,base64,shl,2000x77,auto,806.23 +m4,base64,shl,2000x77,inplace,424.68 +m4,base64,shl,2000x77,kernel,528.20 +m4,base64,shl,131072x13,auto,48761.66 +m4,base64,shl,131072x13,inplace,19766.79 +m4,base64,shl,131072x13,kernel,29280.08 +m4,base64,shr,1x13,auto,9.18 +m4,base64,shr,1x13,inplace,2.36 +m4,base64,shr,1x13,kernel,2.23 +m4,base64,shr,4x13,auto,18.41 +m4,base64,shr,4x13,inplace,3.27 +m4,base64,shr,4x13,kernel,3.72 +m4,base64,shr,16x13,auto,21.49 +m4,base64,shr,16x13,inplace,5.12 +m4,base64,shr,16x13,kernel,4.46 +m4,base64,shr,256x13,auto,87.11 +m4,base64,shr,256x13,inplace,35.79 +m4,base64,shr,256x13,kernel,66.65 +m4,base64,shr,2000x13,auto,657.71 +m4,base64,shr,2000x13,inplace,282.03 +m4,base64,shr,2000x13,kernel,512.16 +m4,base64,shr,2000x77,auto,1015.75 +m4,base64,shr,2000x77,inplace,420.07 +m4,base64,shr,2000x77,kernel,517.38 +m4,base64,shr,131072x13,auto,50334.06 +m4,base64,shr,131072x13,inplace,19886.37 +m4,base64,shr,131072x13,kernel,37482.91 +m4,new64,shl,1x13,auto,12.23 +m4,new64,shl,1x13,inplace,3.38 +m4,new64,shl,1x13,kernel,2.48 +m4,new64,shl,4x13,auto,12.69 +m4,new64,shl,4x13,inplace,5.20 +m4,new64,shl,4x13,kernel,3.72 +m4,new64,shl,16x13,auto,15.73 +m4,new64,shl,16x13,inplace,6.83 +m4,new64,shl,16x13,kernel,4.44 +m4,new64,shl,256x13,auto,41.28 +m4,new64,shl,256x13,inplace,44.92 +m4,new64,shl,256x13,kernel,48.66 +m4,new64,shl,2000x13,auto,263.97 +m4,new64,shl,2000x13,inplace,345.72 +m4,new64,shl,2000x13,kernel,383.95 +m4,new64,shl,2000x77,auto,342.48 +m4,new64,shl,2000x77,inplace,228.58 +m4,new64,shl,2000x77,kernel,526.33 +m4,new64,shl,131072x13,auto,18032.30 +m4,new64,shl,131072x13,inplace,22824.97 +m4,new64,shl,131072x13,kernel,29301.55 +m4,new64,shr,1x13,auto,6.73 +m4,new64,shr,1x13,inplace,3.06 +m4,new64,shr,1x13,kernel,2.23 +m4,new64,shr,4x13,auto,14.32 +m4,new64,shr,4x13,inplace,4.47 +m4,new64,shr,4x13,kernel,3.72 +m4,new64,shr,16x13,auto,18.06 +m4,new64,shr,16x13,inplace,6.11 +m4,new64,shr,16x13,kernel,4.19 +m4,new64,shr,256x13,auto,42.47 +m4,new64,shr,256x13,inplace,44.60 +m4,new64,shr,256x13,kernel,66.93 +m4,new64,shr,2000x13,auto,262.02 +m4,new64,shr,2000x13,inplace,345.02 +m4,new64,shr,2000x13,kernel,511.78 +m4,new64,shr,2000x77,auto,251.83 +m4,new64,shr,2000x77,inplace,195.76 +m4,new64,shr,2000x77,kernel,516.14 +m4,new64,shr,131072x13,auto,18098.33 +m4,new64,shr,131072x13,inplace,22564.14 +m4,new64,shr,131072x13,kernel,37480.22 +m4,v1,shl,1x13,auto,12.53 +m4,v1,shl,1x13,inplace,2.48 +m4,v1,shl,1x13,kernel,2.23 +m4,v1,shl,4x13,auto,12.97 +m4,v1,shl,4x13,inplace,3.76 +m4,v1,shl,4x13,kernel,3.72 +m4,v1,shl,16x13,auto,15.49 +m4,v1,shl,16x13,inplace,5.28 +m4,v1,shl,16x13,kernel,4.43 +m4,v1,shl,256x13,auto,41.91 +m4,v1,shl,256x13,inplace,29.68 +m4,v1,shl,256x13,kernel,48.78 +m4,v1,shl,2000x13,auto,266.98 +m4,v1,shl,2000x13,inplace,196.09 +m4,v1,shl,2000x13,kernel,382.87 +m4,v1,shl,2000x77,auto,477.96 +m4,v1,shl,2000x77,inplace,230.90 +m4,v1,shl,2000x77,kernel,528.46 +m4,v1,shl,131072x13,auto,18150.93 +m4,v1,shl,131072x13,inplace,18524.16 +m4,v1,shl,131072x13,kernel,29306.12 +m4,v1,shr,1x13,auto,6.88 +m4,v1,shr,1x13,inplace,3.31 +m4,v1,shr,1x13,kernel,2.23 +m4,v1,shr,4x13,auto,15.08 +m4,v1,shr,4x13,inplace,3.69 +m4,v1,shr,4x13,kernel,3.72 +m4,v1,shr,16x13,auto,18.73 +m4,v1,shr,16x13,inplace,5.19 +m4,v1,shr,16x13,kernel,4.50 +m4,v1,shr,256x13,auto,43.13 +m4,v1,shr,256x13,inplace,30.37 +m4,v1,shr,256x13,kernel,67.43 +m4,v1,shr,2000x13,auto,258.68 +m4,v1,shr,2000x13,inplace,197.75 +m4,v1,shr,2000x13,kernel,511.46 +m4,v1,shr,2000x77,auto,266.65 +m4,v1,shr,2000x77,inplace,195.66 +m4,v1,shr,2000x77,kernel,519.34 +m4,v1,shr,131072x13,auto,18178.09 +m4,v1,shr,131072x13,inplace,18551.56 +m4,v1,shr,131072x13,kernel,37569.55 +m4,v2,shl,1x13,auto,12.26 +m4,v2,shl,1x13,inplace,2.48 +m4,v2,shl,1x13,kernel,2.23 +m4,v2,shl,4x13,auto,13.25 +m4,v2,shl,4x13,inplace,3.71 +m4,v2,shl,4x13,kernel,3.72 +m4,v2,shl,16x13,auto,15.53 +m4,v2,shl,16x13,inplace,6.34 +m4,v2,shl,16x13,kernel,4.21 +m4,v2,shl,256x13,auto,56.30 +m4,v2,shl,256x13,inplace,40.11 +m4,v2,shl,256x13,kernel,48.74 +m4,v2,shl,2000x13,auto,395.31 +m4,v2,shl,2000x13,inplace,315.71 +m4,v2,shl,2000x13,kernel,383.72 +m4,v2,shl,2000x77,auto,394.79 +m4,v2,shl,2000x77,inplace,315.62 +m4,v2,shl,2000x77,kernel,529.17 +m4,v2,shl,131072x13,auto,25035.87 +m4,v2,shl,131072x13,inplace,20843.90 +m4,v2,shl,131072x13,kernel,29489.87 +m4,v2,shr,1x13,auto,6.78 +m4,v2,shr,1x13,inplace,2.75 +m4,v2,shr,1x13,kernel,2.23 +m4,v2,shr,4x13,auto,14.01 +m4,v2,shr,4x13,inplace,3.31 +m4,v2,shr,4x13,kernel,3.72 +m4,v2,shr,16x13,auto,18.09 +m4,v2,shr,16x13,inplace,5.51 +m4,v2,shr,16x13,kernel,4.47 +m4,v2,shr,256x13,auto,43.56 +m4,v2,shr,256x13,inplace,39.66 +m4,v2,shr,256x13,kernel,67.35 +m4,v2,shr,2000x13,auto,289.09 +m4,v2,shr,2000x13,inplace,313.60 +m4,v2,shr,2000x13,kernel,512.05 +m4,v2,shr,2000x77,auto,299.85 +m4,v2,shr,2000x77,inplace,314.75 +m4,v2,shr,2000x77,kernel,518.82 +m4,v2,shr,131072x13,auto,18015.52 +m4,v2,shr,131072x13,inplace,20782.31 +m4,v2,shr,131072x13,kernel,37504.61 +m4,v3,shl,1x13,auto,12.09 +m4,v3,shl,1x13,inplace,2.48 +m4,v3,shl,1x13,kernel,2.23 +m4,v3,shl,4x13,auto,13.12 +m4,v3,shl,4x13,inplace,3.83 +m4,v3,shl,4x13,kernel,3.72 +m4,v3,shl,16x13,auto,16.26 +m4,v3,shl,16x13,inplace,6.49 +m4,v3,shl,16x13,kernel,4.08 +m4,v3,shl,256x13,auto,63.05 +m4,v3,shl,256x13,inplace,47.97 +m4,v3,shl,256x13,kernel,48.37 +m4,v3,shl,2000x13,auto,453.04 +m4,v3,shl,2000x13,inplace,375.19 +m4,v3,shl,2000x13,kernel,382.49 +m4,v3,shl,2000x77,auto,452.87 +m4,v3,shl,2000x77,inplace,377.11 +m4,v3,shl,2000x77,kernel,526.90 +m4,v3,shl,131072x13,auto,28931.40 +m4,v3,shl,131072x13,inplace,24609.09 +m4,v3,shl,131072x13,kernel,29322.43 +m4,v3,shr,1x13,auto,6.68 +m4,v3,shr,1x13,inplace,2.78 +m4,v3,shr,1x13,kernel,2.23 +m4,v3,shr,4x13,auto,14.27 +m4,v3,shr,4x13,inplace,3.54 +m4,v3,shr,4x13,kernel,3.72 +m4,v3,shr,16x13,auto,18.23 +m4,v3,shr,16x13,inplace,5.66 +m4,v3,shr,16x13,kernel,4.17 +m4,v3,shr,256x13,auto,48.31 +m4,v3,shr,256x13,inplace,47.30 +m4,v3,shr,256x13,kernel,67.19 +m4,v3,shr,2000x13,auto,340.82 +m4,v3,shr,2000x13,inplace,374.14 +m4,v3,shr,2000x13,kernel,510.56 +m4,v3,shr,2000x77,auto,339.25 +m4,v3,shr,2000x77,inplace,377.89 +m4,v3,shr,2000x77,kernel,517.15 +m4,v3,shr,131072x13,auto,20633.50 +m4,v3,shr,131072x13,inplace,24608.06 +m4,v3,shr,131072x13,kernel,37720.75 diff --git a/tests/beman/big_int/perf/item1/shortcut.csv b/tests/beman/big_int/perf/item1/shortcut.csv new file mode 100644 index 00000000..587cdb81 --- /dev/null +++ b/tests/beman/big_int/perf/item1/shortcut.csv @@ -0,0 +1,39 @@ +# mul_header_basecase_enabled A/B (opt_1 at 9145b4e; the 'off' build is a scratch copy with the constant +# set to false, not committed); ns per operation, median of three interleaved runs +machine,op,shape,row,on_ns,off_ns +x64,mul,2x2,auto,18.94,22.72 +x64,mul,2x2,kernel,7.64,7.61 +x64,mul,3x3,auto,20.29,24.60 +x64,mul,3x3,kernel,8.94,8.93 +x64,mul,4x4,auto,22.34,26.33 +x64,mul,4x4,kernel,10.95,10.93 +x64,mul,6x6,auto,27.99,32.77 +x64,mul,6x6,kernel,17.15,17.17 +x64,mul,8x8,auto,35.68,41.15 +x64,mul,8x8,kernel,25.65,25.43 +x64,mul,12x12,auto,57.71,62.58 +x64,mul,12x12,kernel,47.56,47.55 +x64,mul,16x16,auto,95.03,115.51 +x64,mul,16x16,kernel,88.15,78.91 +x64,sqr,4x4,auto,22.03,27.32 +x64,sqr,4x4,kernel,9.85,9.89 +x64,sqr,16x16,auto,68.76,72.77 +x64,sqr,16x16,kernel,57.25,57.44 +m4,mul,2x2,auto,19.88,19.41 +m4,mul,2x2,kernel,6.31,6.50 +m4,mul,3x3,auto,20.27,21.23 +m4,mul,3x3,kernel,7.95,8.20 +m4,mul,4x4,auto,21.49,22.31 +m4,mul,4x4,kernel,10.84,10.79 +m4,mul,6x6,auto,27.33,28.07 +m4,mul,6x6,kernel,19.45,19.19 +m4,mul,8x8,auto,34.75,35.82 +m4,mul,8x8,kernel,22.97,23.49 +m4,mul,12x12,auto,54.33,54.46 +m4,mul,12x12,kernel,41.05,41.63 +m4,mul,16x16,auto,82.77,83.43 +m4,mul,16x16,kernel,69.72,70.12 +m4,sqr,4x4,auto,21.47,23.16 +m4,sqr,4x4,kernel,11.26,11.27 +m4,sqr,16x16,auto,76.07,77.95 +m4,sqr,16x16,kernel,63.71,60.90 diff --git a/tests/beman/big_int/perf/item1/study.csv b/tests/beman/big_int/perf/item1/study.csv new file mode 100644 index 00000000..477debe9 --- /dev/null +++ b/tests/beman/big_int/perf/item1/study.csv @@ -0,0 +1,1332 @@ +# inline-capacity study (opt_1 at 9145b4e, before the add/sub/shift/single-limb follow-ups); ns per operation +# (vecsort: ns per element for 100000 one-limb values, rows auto/builtin/copy); median of two runs (seeds 1 and 2, +# divrem the mean of seeds); small band, add/sub/shl/shr/mul/sqr/divrem +# x64 N=64: sweep_inline_bits=64 sweep_int_sizeof=16 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=gcc-14.3.0 build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +# x64 N=128: sweep_inline_bits=128 sweep_int_sizeof=24 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=gcc-14.3.0 build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +# x64 N=256: sweep_inline_bits=256 sweep_int_sizeof=40 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=gcc-14.3.0 build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +# x64 N=512: sweep_inline_bits=512 sweep_int_sizeof=72 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=gcc-14.3.0 build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +# m4 N=64: sweep_inline_bits=64 sweep_int_sizeof=16 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=appleclang-21.0.0_(clang-2100.3.34.2) build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +# m4 N=128: sweep_inline_bits=128 sweep_int_sizeof=24 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=appleclang-21.0.0_(clang-2100.3.34.2) build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +# m4 N=256: sweep_inline_bits=256 sweep_int_sizeof=40 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=appleclang-21.0.0_(clang-2100.3.34.2) build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +# m4 N=512: sweep_inline_bits=512 sweep_int_sizeof=72 ARCH=aarch64 BMI2_ADX=0 AVX512_IFMA=0 SIMD_MUL=1 limb_bits=64 ndebug=1 compiler=appleclang-21.0.0_(clang-2100.3.34.2) build_type=RelWithDebInfo cxx_flags=-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL +machine,inline_bits,op,shape,row,ns +x64,64,add,1x1,auto,6.66 +x64,64,add,1x1,floor,9.80 +x64,64,add,1x1,gmp,2.27 +x64,64,add,1x1,gmpz,4.16 +x64,64,add,1x1,inplace,4.91 +x64,64,add,1x1,kernel,1.92 +x64,64,add,2x2,auto,15.89 +x64,64,add,2x2,floor,10.23 +x64,64,add,2x2,gmp,2.27 +x64,64,add,2x2,gmpz,4.16 +x64,64,add,2x2,inplace,6.12 +x64,64,add,2x2,kernel,2.40 +x64,64,add,4x4,auto,15.41 +x64,64,add,4x4,floor,11.12 +x64,64,add,4x4,gmp,2.50 +x64,64,add,4x4,gmpz,4.36 +x64,64,add,4x4,inplace,5.72 +x64,64,add,4x4,kernel,3.08 +x64,64,add,8x8,auto,16.75 +x64,64,add,8x8,floor,12.51 +x64,64,add,8x8,gmp,3.68 +x64,64,add,8x8,gmpz,4.66 +x64,64,add,8x8,inplace,7.09 +x64,64,add,8x8,kernel,4.53 +x64,64,add,16x16,auto,20.97 +x64,64,add,16x16,floor,15.45 +x64,64,add,16x16,gmp,5.58 +x64,64,add,16x16,gmpz,7.13 +x64,64,add,16x16,inplace,11.75 +x64,64,add,16x16,kernel,7.56 +x64,64,divrem,2x1,auto,35.38 +x64,64,divrem,2x1,floor,12.80 +x64,64,divrem,2x1,gmp,7.69 +x64,64,divrem,2x1,gmpz,12.61 +x64,64,divrem,2x1,kernel,5.71 +x64,64,divrem,8x4,auto,91.89 +x64,64,divrem,8x4,floor,67.21 +x64,64,divrem,8x4,gmp,42.30 +x64,64,divrem,8x4,gmpz,44.27 +x64,64,divrem,8x4,kernel,49.53 +x64,64,divrem,32x16,auto,339.57 +x64,64,divrem,32x16,floor,305.70 +x64,64,divrem,32x16,gmp,190.93 +x64,64,divrem,32x16,gmpz,193.06 +x64,64,divrem,32x16,kernel,290.44 +x64,64,mul,1x1,auto,16.48 +x64,64,mul,1x1,gmp,3.37 +x64,64,mul,1x1,gmpz,4.00 +x64,64,mul,2x2,auto,18.93 +x64,64,mul,2x2,floor,15.00 +x64,64,mul,2x2,gmp,3.91 +x64,64,mul,2x2,gmpz,6.12 +x64,64,mul,2x2,kernel,7.61 +x64,64,mul,3x3,auto,20.24 +x64,64,mul,3x3,floor,16.34 +x64,64,mul,3x3,gmp,7.73 +x64,64,mul,3x3,gmpz,9.98 +x64,64,mul,3x3,kernel,8.93 +x64,64,mul,4x4,auto,22.30 +x64,64,mul,4x4,floor,18.23 +x64,64,mul,4x4,gmp,9.94 +x64,64,mul,4x4,gmpz,12.46 +x64,64,mul,4x4,kernel,10.94 +x64,64,mul,6x6,auto,28.04 +x64,64,mul,6x6,floor,24.35 +x64,64,mul,6x6,gmp,15.69 +x64,64,mul,6x6,gmpz,18.13 +x64,64,mul,6x6,kernel,17.38 +x64,64,mul,8x8,auto,35.57 +x64,64,mul,8x8,floor,32.41 +x64,64,mul,8x8,gmp,27.08 +x64,64,mul,8x8,gmpz,28.93 +x64,64,mul,8x8,kernel,25.75 +x64,64,mul,12x12,auto,57.61 +x64,64,mul,12x12,floor,54.41 +x64,64,mul,12x12,gmp,48.56 +x64,64,mul,12x12,gmpz,51.28 +x64,64,mul,12x12,kernel,47.33 +x64,64,mul,16x16,auto,88.47 +x64,64,mul,16x16,floor,85.41 +x64,64,mul,16x16,gmp,81.97 +x64,64,mul,16x16,gmpz,84.07 +x64,64,mul,16x16,kernel,78.60 +x64,64,shl,1x13,auto,12.62 +x64,64,shl,1x13,floor,9.82 +x64,64,shl,1x13,gmp,2.08 +x64,64,shl,1x13,gmpz,3.27 +x64,64,shl,1x13,inplace,3.67 +x64,64,shl,1x13,kernel,2.08 +x64,64,shl,1x13,kernelip,1.74 +x64,64,shl,4x13,auto,13.45 +x64,64,shl,4x13,floor,11.20 +x64,64,shl,4x13,gmp,2.50 +x64,64,shl,4x13,gmpz,4.04 +x64,64,shl,4x13,inplace,4.62 +x64,64,shl,4x13,kernel,3.50 +x64,64,shl,4x13,kernelip,2.95 +x64,64,shl,16x13,auto,17.07 +x64,64,shl,16x13,floor,15.26 +x64,64,shl,16x13,gmp,4.18 +x64,64,shl,16x13,gmpz,5.82 +x64,64,shl,16x13,inplace,9.13 +x64,64,shl,16x13,kernel,7.45 +x64,64,shl,16x13,kernelip,7.12 +x64,64,shr,1x13,auto,8.19 +x64,64,shr,1x13,floor,2.27 +x64,64,shr,1x13,gmp,1.89 +x64,64,shr,1x13,gmpz,3.46 +x64,64,shr,1x13,inplace,3.29 +x64,64,shr,1x13,kernel,1.70 +x64,64,shr,4x13,auto,16.02 +x64,64,shr,4x13,floor,11.16 +x64,64,shr,4x13,gmp,2.33 +x64,64,shr,4x13,gmpz,3.98 +x64,64,shr,4x13,inplace,4.35 +x64,64,shr,4x13,kernel,3.50 +x64,64,shr,16x13,auto,19.93 +x64,64,shr,16x13,floor,15.46 +x64,64,shr,16x13,gmp,4.36 +x64,64,shr,16x13,gmpz,6.21 +x64,64,shr,16x13,inplace,8.65 +x64,64,shr,16x13,kernel,8.38 +x64,64,sqr,4x4,auto,22.06 +x64,64,sqr,4x4,floor,16.78 +x64,64,sqr,4x4,gmp,5.82 +x64,64,sqr,4x4,gmpz,8.80 +x64,64,sqr,4x4,kernel,9.88 +x64,64,sqr,16x16,auto,67.22 +x64,64,sqr,16x16,floor,63.28 +x64,64,sqr,16x16,gmp,49.83 +x64,64,sqr,16x16,gmpz,52.09 +x64,64,sqr,16x16,kernel,57.57 +x64,64,sub,1x1,auto,7.75 +x64,64,sub,1x1,floor,1.89 +x64,64,sub,1x1,gmp,2.27 +x64,64,sub,1x1,gmpz,4.34 +x64,64,sub,1x1,inplace,4.67 +x64,64,sub,1x1,kernel,1.51 +x64,64,sub,2x2,auto,15.72 +x64,64,sub,2x2,floor,9.96 +x64,64,sub,2x2,gmp,2.27 +x64,64,sub,2x2,gmpz,4.35 +x64,64,sub,2x2,inplace,5.12 +x64,64,sub,2x2,kernel,2.10 +x64,64,sub,4x4,auto,16.57 +x64,64,sub,4x4,floor,10.78 +x64,64,sub,4x4,gmp,2.50 +x64,64,sub,4x4,gmpz,4.56 +x64,64,sub,4x4,inplace,5.59 +x64,64,sub,4x4,kernel,2.84 +x64,64,sub,8x8,auto,17.94 +x64,64,sub,8x8,floor,12.36 +x64,64,sub,8x8,gmp,3.69 +x64,64,sub,8x8,gmpz,4.96 +x64,64,sub,8x8,inplace,6.94 +x64,64,sub,8x8,kernel,4.36 +x64,64,sub,16x16,auto,21.08 +x64,64,sub,16x16,floor,15.38 +x64,64,sub,16x16,gmp,5.50 +x64,64,sub,16x16,gmpz,6.91 +x64,64,sub,16x16,inplace,11.07 +x64,64,sub,16x16,kernel,8.02 +x64,64,vecsort,100000x1,auto,86.13 +x64,64,vecsort,100000x1,builtin,39.44 +x64,64,vecsort,100000x1,copy,1.13 +x64,128,add,1x1,auto,8.32 +x64,128,add,1x1,floor,2.59 +x64,128,add,1x1,gmp,2.31 +x64,128,add,1x1,gmpz,4.27 +x64,128,add,1x1,inplace,4.91 +x64,128,add,1x1,kernel,1.93 +x64,128,add,2x2,auto,19.38 +x64,128,add,2x2,floor,10.29 +x64,128,add,2x2,gmp,2.27 +x64,128,add,2x2,gmpz,4.16 +x64,128,add,2x2,inplace,6.94 +x64,128,add,2x2,kernel,2.34 +x64,128,add,4x4,auto,17.56 +x64,128,add,4x4,floor,11.34 +x64,128,add,4x4,gmp,2.49 +x64,128,add,4x4,gmpz,4.36 +x64,128,add,4x4,inplace,6.14 +x64,128,add,4x4,kernel,3.03 +x64,128,add,8x8,auto,18.79 +x64,128,add,8x8,floor,12.54 +x64,128,add,8x8,gmp,3.68 +x64,128,add,8x8,gmpz,4.67 +x64,128,add,8x8,inplace,7.36 +x64,128,add,8x8,kernel,4.61 +x64,128,add,16x16,auto,24.19 +x64,128,add,16x16,floor,15.41 +x64,128,add,16x16,gmp,5.50 +x64,128,add,16x16,gmpz,6.52 +x64,128,add,16x16,inplace,13.12 +x64,128,add,16x16,kernel,7.56 +x64,128,divrem,2x1,auto,34.45 +x64,128,divrem,2x1,floor,6.04 +x64,128,divrem,2x1,gmp,7.69 +x64,128,divrem,2x1,gmpz,12.61 +x64,128,divrem,2x1,kernel,5.72 +x64,128,divrem,8x4,auto,94.86 +x64,128,divrem,8x4,floor,65.36 +x64,128,divrem,8x4,gmp,42.01 +x64,128,divrem,8x4,gmpz,43.87 +x64,128,divrem,8x4,kernel,54.47 +x64,128,divrem,32x16,auto,344.57 +x64,128,divrem,32x16,floor,303.09 +x64,128,divrem,32x16,gmp,191.27 +x64,128,divrem,32x16,gmpz,194.19 +x64,128,divrem,32x16,kernel,289.05 +x64,128,mul,1x1,auto,10.50 +x64,128,mul,1x1,gmp,3.38 +x64,128,mul,1x1,gmpz,3.98 +x64,128,mul,2x2,auto,20.30 +x64,128,mul,2x2,floor,15.12 +x64,128,mul,2x2,gmp,3.83 +x64,128,mul,2x2,gmpz,6.17 +x64,128,mul,2x2,kernel,7.56 +x64,128,mul,3x3,auto,21.90 +x64,128,mul,3x3,floor,16.57 +x64,128,mul,3x3,gmp,7.76 +x64,128,mul,3x3,gmpz,9.97 +x64,128,mul,3x3,kernel,8.96 +x64,128,mul,4x4,auto,23.99 +x64,128,mul,4x4,floor,18.38 +x64,128,mul,4x4,gmp,9.67 +x64,128,mul,4x4,gmpz,12.16 +x64,128,mul,4x4,kernel,10.96 +x64,128,mul,6x6,auto,29.59 +x64,128,mul,6x6,floor,24.89 +x64,128,mul,6x6,gmp,15.68 +x64,128,mul,6x6,gmpz,18.02 +x64,128,mul,6x6,kernel,17.16 +x64,128,mul,8x8,auto,37.36 +x64,128,mul,8x8,floor,32.53 +x64,128,mul,8x8,gmp,27.07 +x64,128,mul,8x8,gmpz,29.04 +x64,128,mul,8x8,kernel,25.34 +x64,128,mul,12x12,auto,58.64 +x64,128,mul,12x12,floor,55.00 +x64,128,mul,12x12,gmp,49.87 +x64,128,mul,12x12,gmpz,51.30 +x64,128,mul,12x12,kernel,47.79 +x64,128,mul,16x16,auto,90.39 +x64,128,mul,16x16,floor,86.33 +x64,128,mul,16x16,gmp,81.91 +x64,128,mul,16x16,gmpz,84.06 +x64,128,mul,16x16,kernel,78.55 +x64,128,shl,1x13,auto,7.16 +x64,128,shl,1x13,floor,2.67 +x64,128,shl,1x13,gmp,1.90 +x64,128,shl,1x13,gmpz,3.27 +x64,128,shl,1x13,inplace,4.28 +x64,128,shl,1x13,kernel,2.07 +x64,128,shl,1x13,kernelip,1.77 +x64,128,shl,4x13,auto,14.89 +x64,128,shl,4x13,floor,11.43 +x64,128,shl,4x13,gmp,2.31 +x64,128,shl,4x13,gmpz,4.04 +x64,128,shl,4x13,inplace,4.75 +x64,128,shl,4x13,kernel,3.51 +x64,128,shl,4x13,kernelip,2.95 +x64,128,shl,16x13,auto,18.23 +x64,128,shl,16x13,floor,15.21 +x64,128,shl,16x13,gmp,4.12 +x64,128,shl,16x13,gmpz,5.81 +x64,128,shl,16x13,inplace,8.89 +x64,128,shl,16x13,kernel,7.45 +x64,128,shl,16x13,kernelip,7.13 +x64,128,shr,1x13,auto,8.90 +x64,128,shr,1x13,floor,2.44 +x64,128,shr,1x13,gmp,1.89 +x64,128,shr,1x13,gmpz,3.47 +x64,128,shr,1x13,inplace,3.45 +x64,128,shr,1x13,kernel,1.70 +x64,128,shr,4x13,auto,16.83 +x64,128,shr,4x13,floor,11.19 +x64,128,shr,4x13,gmp,2.34 +x64,128,shr,4x13,gmpz,3.98 +x64,128,shr,4x13,inplace,4.45 +x64,128,shr,4x13,kernel,3.47 +x64,128,shr,16x13,auto,20.91 +x64,128,shr,16x13,floor,15.50 +x64,128,shr,16x13,gmp,4.30 +x64,128,shr,16x13,gmpz,6.33 +x64,128,shr,16x13,inplace,8.48 +x64,128,shr,16x13,kernel,8.39 +x64,128,sqr,4x4,auto,23.82 +x64,128,sqr,4x4,floor,17.23 +x64,128,sqr,4x4,gmp,5.81 +x64,128,sqr,4x4,gmpz,8.79 +x64,128,sqr,4x4,kernel,10.37 +x64,128,sqr,16x16,auto,67.98 +x64,128,sqr,16x16,floor,62.87 +x64,128,sqr,16x16,gmp,49.83 +x64,128,sqr,16x16,gmpz,52.09 +x64,128,sqr,16x16,kernel,55.88 +x64,128,sub,1x1,auto,9.64 +x64,128,sub,1x1,floor,1.89 +x64,128,sub,1x1,gmp,2.27 +x64,128,sub,1x1,gmpz,4.34 +x64,128,sub,1x1,inplace,4.65 +x64,128,sub,1x1,kernel,1.51 +x64,128,sub,2x2,auto,10.82 +x64,128,sub,2x2,floor,2.48 +x64,128,sub,2x2,gmp,2.27 +x64,128,sub,2x2,gmpz,4.34 +x64,128,sub,2x2,inplace,5.45 +x64,128,sub,2x2,kernel,2.12 +x64,128,sub,4x4,auto,19.50 +x64,128,sub,4x4,floor,10.71 +x64,128,sub,4x4,gmp,2.50 +x64,128,sub,4x4,gmpz,4.56 +x64,128,sub,4x4,inplace,5.96 +x64,128,sub,4x4,kernel,2.84 +x64,128,sub,8x8,auto,21.02 +x64,128,sub,8x8,floor,12.29 +x64,128,sub,8x8,gmp,3.80 +x64,128,sub,8x8,gmpz,4.97 +x64,128,sub,8x8,inplace,6.98 +x64,128,sub,8x8,kernel,4.39 +x64,128,sub,16x16,auto,24.45 +x64,128,sub,16x16,floor,15.26 +x64,128,sub,16x16,gmp,5.50 +x64,128,sub,16x16,gmpz,6.85 +x64,128,sub,16x16,inplace,11.10 +x64,128,sub,16x16,kernel,7.74 +x64,128,vecsort,100000x1,auto,92.31 +x64,128,vecsort,100000x1,builtin,39.39 +x64,128,vecsort,100000x1,copy,2.50 +x64,256,add,1x1,auto,8.62 +x64,256,add,1x1,floor,2.57 +x64,256,add,1x1,gmp,2.27 +x64,256,add,1x1,gmpz,4.16 +x64,256,add,1x1,inplace,4.91 +x64,256,add,1x1,kernel,1.92 +x64,256,add,2x2,auto,10.87 +x64,256,add,2x2,floor,2.89 +x64,256,add,2x2,gmp,2.27 +x64,256,add,2x2,gmpz,4.16 +x64,256,add,2x2,inplace,6.38 +x64,256,add,2x2,kernel,2.33 +x64,256,add,4x4,auto,10.61 +x64,256,add,4x4,floor,11.16 +x64,256,add,4x4,gmp,2.55 +x64,256,add,4x4,gmpz,4.38 +x64,256,add,4x4,inplace,5.72 +x64,256,add,4x4,kernel,3.04 +x64,256,add,8x8,auto,18.89 +x64,256,add,8x8,floor,12.50 +x64,256,add,8x8,gmp,3.68 +x64,256,add,8x8,gmpz,5.19 +x64,256,add,8x8,inplace,7.19 +x64,256,add,8x8,kernel,4.53 +x64,256,add,16x16,auto,23.51 +x64,256,add,16x16,floor,15.55 +x64,256,add,16x16,gmp,6.03 +x64,256,add,16x16,gmpz,6.51 +x64,256,add,16x16,inplace,12.77 +x64,256,add,16x16,kernel,7.70 +x64,256,divrem,2x1,auto,36.72 +x64,256,divrem,2x1,floor,6.00 +x64,256,divrem,2x1,gmp,8.13 +x64,256,divrem,2x1,gmpz,12.45 +x64,256,divrem,2x1,kernel,5.90 +x64,256,divrem,8x4,auto,89.11 +x64,256,divrem,8x4,floor,55.64 +x64,256,divrem,8x4,gmp,42.63 +x64,256,divrem,8x4,gmpz,43.81 +x64,256,divrem,8x4,kernel,49.22 +x64,256,divrem,32x16,auto,343.75 +x64,256,divrem,32x16,floor,303.77 +x64,256,divrem,32x16,gmp,191.40 +x64,256,divrem,32x16,gmpz,193.96 +x64,256,divrem,32x16,kernel,288.84 +x64,256,mul,1x1,auto,10.76 +x64,256,mul,1x1,gmp,3.37 +x64,256,mul,1x1,gmpz,3.99 +x64,256,mul,2x2,auto,14.25 +x64,256,mul,2x2,floor,7.80 +x64,256,mul,2x2,gmp,3.82 +x64,256,mul,2x2,gmpz,6.13 +x64,256,mul,2x2,kernel,7.55 +x64,256,mul,3x3,auto,23.45 +x64,256,mul,3x3,floor,16.38 +x64,256,mul,3x3,gmp,7.77 +x64,256,mul,3x3,gmpz,9.97 +x64,256,mul,3x3,kernel,8.93 +x64,256,mul,4x4,auto,24.34 +x64,256,mul,4x4,floor,18.15 +x64,256,mul,4x4,gmp,9.68 +x64,256,mul,4x4,gmpz,12.16 +x64,256,mul,4x4,kernel,10.91 +x64,256,mul,6x6,auto,30.24 +x64,256,mul,6x6,floor,24.38 +x64,256,mul,6x6,gmp,15.71 +x64,256,mul,6x6,gmpz,18.02 +x64,256,mul,6x6,kernel,17.20 +x64,256,mul,8x8,auto,37.98 +x64,256,mul,8x8,floor,32.35 +x64,256,mul,8x8,gmp,27.04 +x64,256,mul,8x8,gmpz,28.98 +x64,256,mul,8x8,kernel,25.43 +x64,256,mul,12x12,auto,59.90 +x64,256,mul,12x12,floor,55.01 +x64,256,mul,12x12,gmp,49.14 +x64,256,mul,12x12,gmpz,51.80 +x64,256,mul,12x12,kernel,47.98 +x64,256,mul,16x16,auto,91.90 +x64,256,mul,16x16,floor,85.73 +x64,256,mul,16x16,gmp,82.15 +x64,256,mul,16x16,gmpz,84.08 +x64,256,mul,16x16,kernel,78.56 +x64,256,shl,1x13,auto,8.19 +x64,256,shl,1x13,floor,2.65 +x64,256,shl,1x13,gmp,1.89 +x64,256,shl,1x13,gmpz,3.30 +x64,256,shl,1x13,inplace,4.28 +x64,256,shl,1x13,kernel,2.07 +x64,256,shl,1x13,kernelip,1.75 +x64,256,shl,4x13,auto,16.33 +x64,256,shl,4x13,floor,11.27 +x64,256,shl,4x13,gmp,2.32 +x64,256,shl,4x13,gmpz,4.04 +x64,256,shl,4x13,inplace,4.75 +x64,256,shl,4x13,kernel,3.54 +x64,256,shl,4x13,kernelip,2.95 +x64,256,shl,16x13,auto,20.49 +x64,256,shl,16x13,floor,15.23 +x64,256,shl,16x13,gmp,4.04 +x64,256,shl,16x13,gmpz,6.40 +x64,256,shl,16x13,inplace,9.58 +x64,256,shl,16x13,kernel,7.45 +x64,256,shl,16x13,kernelip,7.11 +x64,256,shr,1x13,auto,9.11 +x64,256,shr,1x13,floor,2.37 +x64,256,shr,1x13,gmp,1.89 +x64,256,shr,1x13,gmpz,3.47 +x64,256,shr,1x13,inplace,3.46 +x64,256,shr,1x13,kernel,1.92 +x64,256,shr,4x13,auto,11.93 +x64,256,shr,4x13,floor,4.04 +x64,256,shr,4x13,gmp,2.34 +x64,256,shr,4x13,gmpz,3.96 +x64,256,shr,4x13,inplace,4.46 +x64,256,shr,4x13,kernel,3.47 +x64,256,shr,16x13,auto,21.66 +x64,256,shr,16x13,floor,15.45 +x64,256,shr,16x13,gmp,4.35 +x64,256,shr,16x13,gmpz,6.30 +x64,256,shr,16x13,inplace,8.48 +x64,256,shr,16x13,kernel,8.39 +x64,256,sqr,4x4,auto,24.43 +x64,256,sqr,4x4,floor,16.78 +x64,256,sqr,4x4,gmp,6.06 +x64,256,sqr,4x4,gmpz,8.80 +x64,256,sqr,4x4,kernel,9.81 +x64,256,sqr,16x16,auto,69.28 +x64,256,sqr,16x16,floor,63.09 +x64,256,sqr,16x16,gmp,49.84 +x64,256,sqr,16x16,gmpz,52.09 +x64,256,sqr,16x16,kernel,59.19 +x64,256,sub,1x1,auto,10.04 +x64,256,sub,1x1,floor,1.89 +x64,256,sub,1x1,gmp,2.27 +x64,256,sub,1x1,gmpz,4.35 +x64,256,sub,1x1,inplace,4.63 +x64,256,sub,1x1,kernel,1.67 +x64,256,sub,2x2,auto,11.30 +x64,256,sub,2x2,floor,2.48 +x64,256,sub,2x2,gmp,2.27 +x64,256,sub,2x2,gmpz,4.34 +x64,256,sub,2x2,inplace,5.33 +x64,256,sub,2x2,kernel,2.12 +x64,256,sub,4x4,auto,12.10 +x64,256,sub,4x4,floor,3.21 +x64,256,sub,4x4,gmp,2.50 +x64,256,sub,4x4,gmpz,4.58 +x64,256,sub,4x4,inplace,5.60 +x64,256,sub,4x4,kernel,2.84 +x64,256,sub,8x8,auto,20.26 +x64,256,sub,8x8,floor,12.26 +x64,256,sub,8x8,gmp,3.69 +x64,256,sub,8x8,gmpz,4.96 +x64,256,sub,8x8,inplace,7.02 +x64,256,sub,8x8,kernel,4.36 +x64,256,sub,16x16,auto,23.45 +x64,256,sub,16x16,floor,15.29 +x64,256,sub,16x16,gmp,5.54 +x64,256,sub,16x16,gmpz,6.80 +x64,256,sub,16x16,inplace,11.18 +x64,256,sub,16x16,kernel,7.74 +x64,256,vecsort,100000x1,auto,98.59 +x64,256,vecsort,100000x1,builtin,39.41 +x64,256,vecsort,100000x1,copy,2.62 +x64,512,add,1x1,auto,8.66 +x64,512,add,1x1,floor,2.57 +x64,512,add,1x1,gmp,2.27 +x64,512,add,1x1,gmpz,4.16 +x64,512,add,1x1,inplace,4.91 +x64,512,add,1x1,kernel,1.92 +x64,512,add,2x2,auto,11.00 +x64,512,add,2x2,floor,2.88 +x64,512,add,2x2,gmp,2.27 +x64,512,add,2x2,gmpz,4.16 +x64,512,add,2x2,inplace,6.20 +x64,512,add,2x2,kernel,2.35 +x64,512,add,4x4,auto,10.64 +x64,512,add,4x4,floor,3.64 +x64,512,add,4x4,gmp,2.63 +x64,512,add,4x4,gmpz,4.44 +x64,512,add,4x4,inplace,5.71 +x64,512,add,4x4,kernel,3.04 +x64,512,add,8x8,auto,11.99 +x64,512,add,8x8,floor,12.55 +x64,512,add,8x8,gmp,3.68 +x64,512,add,8x8,gmpz,4.73 +x64,512,add,8x8,inplace,7.04 +x64,512,add,8x8,kernel,4.53 +x64,512,add,16x16,auto,23.50 +x64,512,add,16x16,floor,15.41 +x64,512,add,16x16,gmp,5.50 +x64,512,add,16x16,gmpz,6.54 +x64,512,add,16x16,inplace,11.92 +x64,512,add,16x16,kernel,7.56 +x64,512,divrem,2x1,auto,36.64 +x64,512,divrem,2x1,floor,6.15 +x64,512,divrem,2x1,gmp,7.70 +x64,512,divrem,2x1,gmpz,12.38 +x64,512,divrem,2x1,kernel,5.72 +x64,512,divrem,8x4,auto,80.16 +x64,512,divrem,8x4,floor,45.38 +x64,512,divrem,8x4,gmp,41.91 +x64,512,divrem,8x4,gmpz,43.89 +x64,512,divrem,8x4,kernel,44.95 +x64,512,divrem,32x16,auto,342.32 +x64,512,divrem,32x16,floor,304.12 +x64,512,divrem,32x16,gmp,191.14 +x64,512,divrem,32x16,gmpz,195.05 +x64,512,divrem,32x16,kernel,294.90 +x64,512,mul,1x1,auto,10.80 +x64,512,mul,1x1,gmp,3.45 +x64,512,mul,1x1,gmpz,3.99 +x64,512,mul,2x2,auto,14.27 +x64,512,mul,2x2,floor,7.95 +x64,512,mul,2x2,gmp,3.95 +x64,512,mul,2x2,gmpz,6.13 +x64,512,mul,2x2,kernel,7.66 +x64,512,mul,3x3,auto,15.63 +x64,512,mul,3x3,floor,9.23 +x64,512,mul,3x3,gmp,7.81 +x64,512,mul,3x3,gmpz,9.95 +x64,512,mul,3x3,kernel,9.04 +x64,512,mul,4x4,auto,17.77 +x64,512,mul,4x4,floor,11.57 +x64,512,mul,4x4,gmp,9.80 +x64,512,mul,4x4,gmpz,12.18 +x64,512,mul,4x4,kernel,11.15 +x64,512,mul,6x6,auto,30.14 +x64,512,mul,6x6,floor,25.26 +x64,512,mul,6x6,gmp,16.54 +x64,512,mul,6x6,gmpz,18.03 +x64,512,mul,6x6,kernel,17.30 +x64,512,mul,8x8,auto,37.86 +x64,512,mul,8x8,floor,32.79 +x64,512,mul,8x8,gmp,27.05 +x64,512,mul,8x8,gmpz,28.68 +x64,512,mul,8x8,kernel,25.56 +x64,512,mul,12x12,auto,59.89 +x64,512,mul,12x12,floor,54.98 +x64,512,mul,12x12,gmp,48.56 +x64,512,mul,12x12,gmpz,51.34 +x64,512,mul,12x12,kernel,47.55 +x64,512,mul,16x16,auto,91.28 +x64,512,mul,16x16,floor,85.89 +x64,512,mul,16x16,gmp,82.19 +x64,512,mul,16x16,gmpz,84.09 +x64,512,mul,16x16,kernel,78.66 +x64,512,shl,1x13,auto,8.27 +x64,512,shl,1x13,floor,2.66 +x64,512,shl,1x13,gmp,2.08 +x64,512,shl,1x13,gmpz,3.33 +x64,512,shl,1x13,inplace,4.26 +x64,512,shl,1x13,kernel,2.07 +x64,512,shl,1x13,kernelip,1.75 +x64,512,shl,4x13,auto,9.14 +x64,512,shl,4x13,floor,4.14 +x64,512,shl,4x13,gmp,2.52 +x64,512,shl,4x13,gmpz,4.04 +x64,512,shl,4x13,inplace,5.18 +x64,512,shl,4x13,kernel,3.50 +x64,512,shl,4x13,kernelip,2.96 +x64,512,shl,16x13,auto,19.46 +x64,512,shl,16x13,floor,15.21 +x64,512,shl,16x13,gmp,4.17 +x64,512,shl,16x13,gmpz,5.83 +x64,512,shl,16x13,inplace,8.87 +x64,512,shl,16x13,kernel,7.45 +x64,512,shl,16x13,kernelip,7.19 +x64,512,shr,1x13,auto,9.30 +x64,512,shr,1x13,floor,2.27 +x64,512,shr,1x13,gmp,1.89 +x64,512,shr,1x13,gmpz,3.46 +x64,512,shr,1x13,inplace,3.42 +x64,512,shr,1x13,kernel,1.70 +x64,512,shr,4x13,auto,11.89 +x64,512,shr,4x13,floor,4.02 +x64,512,shr,4x13,gmp,2.34 +x64,512,shr,4x13,gmpz,3.96 +x64,512,shr,4x13,inplace,4.49 +x64,512,shr,4x13,kernel,3.95 +x64,512,shr,16x13,auto,22.01 +x64,512,shr,16x13,floor,15.64 +x64,512,shr,16x13,gmp,4.35 +x64,512,shr,16x13,gmpz,6.26 +x64,512,shr,16x13,inplace,8.97 +x64,512,shr,16x13,kernel,8.50 +x64,512,sqr,4x4,auto,17.45 +x64,512,sqr,4x4,floor,9.61 +x64,512,sqr,4x4,gmp,5.81 +x64,512,sqr,4x4,gmpz,8.80 +x64,512,sqr,4x4,kernel,9.87 +x64,512,sqr,16x16,auto,70.15 +x64,512,sqr,16x16,floor,64.25 +x64,512,sqr,16x16,gmp,49.83 +x64,512,sqr,16x16,gmpz,52.10 +x64,512,sqr,16x16,kernel,57.06 +x64,512,sub,1x1,auto,10.21 +x64,512,sub,1x1,floor,1.89 +x64,512,sub,1x1,gmp,2.27 +x64,512,sub,1x1,gmpz,4.34 +x64,512,sub,1x1,inplace,4.63 +x64,512,sub,1x1,kernel,1.51 +x64,512,sub,2x2,auto,11.32 +x64,512,sub,2x2,floor,2.47 +x64,512,sub,2x2,gmp,2.27 +x64,512,sub,2x2,gmpz,4.34 +x64,512,sub,2x2,inplace,5.38 +x64,512,sub,2x2,kernel,2.11 +x64,512,sub,4x4,auto,12.11 +x64,512,sub,4x4,floor,3.23 +x64,512,sub,4x4,gmp,2.50 +x64,512,sub,4x4,gmpz,4.58 +x64,512,sub,4x4,inplace,5.59 +x64,512,sub,4x4,kernel,2.93 +x64,512,sub,8x8,auto,13.48 +x64,512,sub,8x8,floor,4.79 +x64,512,sub,8x8,gmp,3.78 +x64,512,sub,8x8,gmpz,4.97 +x64,512,sub,8x8,inplace,6.95 +x64,512,sub,8x8,kernel,4.39 +x64,512,sub,16x16,auto,25.84 +x64,512,sub,16x16,floor,15.34 +x64,512,sub,16x16,gmp,5.85 +x64,512,sub,16x16,gmpz,6.80 +x64,512,sub,16x16,inplace,11.04 +x64,512,sub,16x16,kernel,7.46 +x64,512,vecsort,100000x1,auto,103.44 +x64,512,vecsort,100000x1,builtin,39.33 +x64,512,vecsort,100000x1,copy,3.14 +m4,64,add,1x1,auto,7.50 +m4,64,add,1x1,floor,9.45 +m4,64,add,1x1,gmp,1.49 +m4,64,add,1x1,gmpz,2.98 +m4,64,add,1x1,inplace,3.52 +m4,64,add,1x1,kernel,1.14 +m4,64,add,2x2,auto,15.68 +m4,64,add,2x2,floor,9.75 +m4,64,add,2x2,gmp,1.98 +m4,64,add,2x2,gmpz,3.24 +m4,64,add,2x2,inplace,3.93 +m4,64,add,2x2,kernel,1.40 +m4,64,add,4x4,auto,14.14 +m4,64,add,4x4,floor,10.43 +m4,64,add,4x4,gmp,1.74 +m4,64,add,4x4,gmpz,5.99 +m4,64,add,4x4,inplace,3.55 +m4,64,add,4x4,kernel,1.92 +m4,64,add,8x8,auto,15.29 +m4,64,add,8x8,floor,12.04 +m4,64,add,8x8,gmp,2.25 +m4,64,add,8x8,gmpz,4.17 +m4,64,add,8x8,inplace,3.87 +m4,64,add,8x8,kernel,3.49 +m4,64,add,16x16,auto,16.99 +m4,64,add,16x16,floor,13.89 +m4,64,add,16x16,gmp,3.23 +m4,64,add,16x16,gmpz,4.49 +m4,64,add,16x16,inplace,5.58 +m4,64,add,16x16,kernel,7.57 +m4,64,divrem,2x1,auto,24.63 +m4,64,divrem,2x1,floor,13.62 +m4,64,divrem,2x1,gmp,5.04 +m4,64,divrem,2x1,gmpz,8.71 +m4,64,divrem,2x1,kernel,6.02 +m4,64,divrem,8x4,auto,74.98 +m4,64,divrem,8x4,floor,60.59 +m4,64,divrem,8x4,gmp,40.84 +m4,64,divrem,8x4,gmpz,43.63 +m4,64,divrem,8x4,kernel,46.08 +m4,64,divrem,32x16,auto,429.70 +m4,64,divrem,32x16,floor,414.18 +m4,64,divrem,32x16,gmp,207.56 +m4,64,divrem,32x16,gmpz,209.34 +m4,64,divrem,32x16,kernel,393.05 +m4,64,mul,1x1,auto,14.50 +m4,64,mul,1x1,gmp,3.72 +m4,64,mul,1x1,gmpz,2.74 +m4,64,mul,2x2,auto,18.58 +m4,64,mul,2x2,floor,14.55 +m4,64,mul,2x2,gmp,4.48 +m4,64,mul,2x2,gmpz,6.54 +m4,64,mul,2x2,kernel,6.28 +m4,64,mul,3x3,auto,19.34 +m4,64,mul,3x3,floor,17.12 +m4,64,mul,3x3,gmp,6.11 +m4,64,mul,3x3,gmpz,8.51 +m4,64,mul,3x3,kernel,8.09 +m4,64,mul,4x4,auto,21.60 +m4,64,mul,4x4,floor,17.05 +m4,64,mul,4x4,gmp,9.32 +m4,64,mul,4x4,gmpz,11.30 +m4,64,mul,4x4,kernel,11.14 +m4,64,mul,6x6,auto,33.52 +m4,64,mul,6x6,floor,24.21 +m4,64,mul,6x6,gmp,14.51 +m4,64,mul,6x6,gmpz,18.41 +m4,64,mul,6x6,kernel,19.34 +m4,64,mul,8x8,auto,35.30 +m4,64,mul,8x8,floor,30.38 +m4,64,mul,8x8,gmp,22.36 +m4,64,mul,8x8,gmpz,25.79 +m4,64,mul,8x8,kernel,22.92 +m4,64,mul,12x12,auto,53.86 +m4,64,mul,12x12,floor,49.28 +m4,64,mul,12x12,gmp,77.97 +m4,64,mul,12x12,gmpz,46.70 +m4,64,mul,12x12,kernel,41.20 +m4,64,mul,16x16,auto,82.81 +m4,64,mul,16x16,floor,80.12 +m4,64,mul,16x16,gmp,76.95 +m4,64,mul,16x16,gmpz,78.12 +m4,64,mul,16x16,kernel,69.86 +m4,64,shl,1x13,auto,11.91 +m4,64,shl,1x13,floor,10.80 +m4,64,shl,1x13,gmp,1.24 +m4,64,shl,1x13,gmpz,2.00 +m4,64,shl,1x13,inplace,2.49 +m4,64,shl,1x13,kernel,2.24 +m4,64,shl,1x13,kernelip,1.46 +m4,64,shl,4x13,auto,12.69 +m4,64,shl,4x13,floor,13.03 +m4,64,shl,4x13,gmp,1.99 +m4,64,shl,4x13,gmpz,2.74 +m4,64,shl,4x13,inplace,3.83 +m4,64,shl,4x13,kernel,3.73 +m4,64,shl,4x13,kernelip,3.37 +m4,64,shl,16x13,auto,15.47 +m4,64,shl,16x13,floor,12.25 +m4,64,shl,16x13,gmp,3.50 +m4,64,shl,16x13,gmpz,5.22 +m4,64,shl,16x13,inplace,5.30 +m4,64,shl,16x13,kernel,4.10 +m4,64,shl,16x13,kernelip,6.81 +m4,64,shr,1x13,auto,6.96 +m4,64,shr,1x13,floor,2.49 +m4,64,shr,1x13,gmp,0.99 +m4,64,shr,1x13,gmpz,1.99 +m4,64,shr,1x13,inplace,3.30 +m4,64,shr,1x13,kernel,2.24 +m4,64,shr,4x13,auto,13.89 +m4,64,shr,4x13,floor,13.00 +m4,64,shr,4x13,gmp,1.74 +m4,64,shr,4x13,gmpz,2.74 +m4,64,shr,4x13,inplace,3.62 +m4,64,shr,4x13,kernel,3.75 +m4,64,shr,16x13,auto,18.17 +m4,64,shr,16x13,floor,13.32 +m4,64,shr,16x13,gmp,3.23 +m4,64,shr,16x13,gmpz,4.23 +m4,64,shr,16x13,inplace,5.23 +m4,64,shr,16x13,kernel,4.19 +m4,64,sqr,4x4,auto,22.78 +m4,64,sqr,4x4,floor,18.20 +m4,64,sqr,4x4,gmp,6.95 +m4,64,sqr,4x4,gmpz,9.60 +m4,64,sqr,4x4,kernel,11.24 +m4,64,sqr,16x16,auto,75.62 +m4,64,sqr,16x16,floor,72.28 +m4,64,sqr,16x16,gmp,63.25 +m4,64,sqr,16x16,gmpz,66.22 +m4,64,sqr,16x16,kernel,63.74 +m4,64,sub,1x1,auto,7.95 +m4,64,sub,1x1,floor,1.74 +m4,64,sub,1x1,gmp,1.49 +m4,64,sub,1x1,gmpz,2.49 +m4,64,sub,1x1,inplace,3.50 +m4,64,sub,1x1,kernel,1.05 +m4,64,sub,2x2,auto,14.64 +m4,64,sub,2x2,floor,9.20 +m4,64,sub,2x2,gmp,1.78 +m4,64,sub,2x2,gmpz,2.85 +m4,64,sub,2x2,inplace,3.49 +m4,64,sub,2x2,kernel,1.42 +m4,64,sub,4x4,auto,14.38 +m4,64,sub,4x4,floor,10.07 +m4,64,sub,4x4,gmp,1.74 +m4,64,sub,4x4,gmpz,2.73 +m4,64,sub,4x4,inplace,3.42 +m4,64,sub,4x4,kernel,1.94 +m4,64,sub,8x8,auto,15.61 +m4,64,sub,8x8,floor,11.72 +m4,64,sub,8x8,gmp,2.24 +m4,64,sub,8x8,gmpz,3.23 +m4,64,sub,8x8,inplace,4.09 +m4,64,sub,8x8,kernel,3.50 +m4,64,sub,16x16,auto,18.28 +m4,64,sub,16x16,floor,15.30 +m4,64,sub,16x16,gmp,3.10 +m4,64,sub,16x16,gmpz,4.39 +m4,64,sub,16x16,inplace,5.18 +m4,64,sub,16x16,kernel,7.71 +m4,64,vecsort,100000x1,auto,87.87 +m4,64,vecsort,100000x1,builtin,13.21 +m4,64,vecsort,100000x1,copy,2.70 +m4,128,add,1x1,auto,8.26 +m4,128,add,1x1,floor,1.83 +m4,128,add,1x1,gmp,1.49 +m4,128,add,1x1,gmpz,2.99 +m4,128,add,1x1,inplace,3.48 +m4,128,add,1x1,kernel,1.14 +m4,128,add,2x2,auto,17.54 +m4,128,add,2x2,floor,9.55 +m4,128,add,2x2,gmp,1.98 +m4,128,add,2x2,gmpz,4.64 +m4,128,add,2x2,inplace,3.87 +m4,128,add,2x2,kernel,1.39 +m4,128,add,4x4,auto,14.19 +m4,128,add,4x4,floor,10.45 +m4,128,add,4x4,gmp,1.75 +m4,128,add,4x4,gmpz,4.21 +m4,128,add,4x4,inplace,3.54 +m4,128,add,4x4,kernel,1.92 +m4,128,add,8x8,auto,15.21 +m4,128,add,8x8,floor,12.03 +m4,128,add,8x8,gmp,2.24 +m4,128,add,8x8,gmpz,4.23 +m4,128,add,8x8,inplace,4.03 +m4,128,add,8x8,kernel,3.54 +m4,128,add,16x16,auto,16.31 +m4,128,add,16x16,floor,13.77 +m4,128,add,16x16,gmp,3.17 +m4,128,add,16x16,gmpz,4.49 +m4,128,add,16x16,inplace,5.59 +m4,128,add,16x16,kernel,7.54 +m4,128,divrem,2x1,auto,23.18 +m4,128,divrem,2x1,floor,6.87 +m4,128,divrem,2x1,gmp,5.05 +m4,128,divrem,2x1,gmpz,8.68 +m4,128,divrem,2x1,kernel,5.95 +m4,128,divrem,8x4,auto,75.19 +m4,128,divrem,8x4,floor,60.67 +m4,128,divrem,8x4,gmp,40.67 +m4,128,divrem,8x4,gmpz,43.69 +m4,128,divrem,8x4,kernel,46.68 +m4,128,divrem,32x16,auto,430.01 +m4,128,divrem,32x16,floor,417.65 +m4,128,divrem,32x16,gmp,206.94 +m4,128,divrem,32x16,gmpz,208.92 +m4,128,divrem,32x16,kernel,393.73 +m4,128,mul,1x1,auto,9.08 +m4,128,mul,1x1,gmp,3.75 +m4,128,mul,1x1,gmpz,2.74 +m4,128,mul,2x2,auto,18.55 +m4,128,mul,2x2,floor,14.98 +m4,128,mul,2x2,gmp,4.37 +m4,128,mul,2x2,gmpz,6.75 +m4,128,mul,2x2,kernel,6.36 +m4,128,mul,3x3,auto,20.03 +m4,128,mul,3x3,floor,16.88 +m4,128,mul,3x3,gmp,6.22 +m4,128,mul,3x3,gmpz,10.04 +m4,128,mul,3x3,kernel,8.19 +m4,128,mul,4x4,auto,21.55 +m4,128,mul,4x4,floor,16.91 +m4,128,mul,4x4,gmp,9.15 +m4,128,mul,4x4,gmpz,11.06 +m4,128,mul,4x4,kernel,11.22 +m4,128,mul,6x6,auto,27.07 +m4,128,mul,6x6,floor,24.43 +m4,128,mul,6x6,gmp,14.52 +m4,128,mul,6x6,gmpz,17.53 +m4,128,mul,6x6,kernel,19.00 +m4,128,mul,8x8,auto,35.05 +m4,128,mul,8x8,floor,30.59 +m4,128,mul,8x8,gmp,24.11 +m4,128,mul,8x8,gmpz,25.62 +m4,128,mul,8x8,kernel,23.02 +m4,128,mul,12x12,auto,53.88 +m4,128,mul,12x12,floor,49.39 +m4,128,mul,12x12,gmp,44.51 +m4,128,mul,12x12,gmpz,46.99 +m4,128,mul,12x12,kernel,40.98 +m4,128,mul,16x16,auto,82.81 +m4,128,mul,16x16,floor,79.69 +m4,128,mul,16x16,gmp,76.68 +m4,128,mul,16x16,gmpz,78.49 +m4,128,mul,16x16,kernel,70.13 +m4,128,shl,1x13,auto,6.61 +m4,128,shl,1x13,floor,5.14 +m4,128,shl,1x13,gmp,1.24 +m4,128,shl,1x13,gmpz,2.01 +m4,128,shl,1x13,inplace,3.47 +m4,128,shl,1x13,kernel,2.24 +m4,128,shl,1x13,kernelip,1.78 +m4,128,shl,4x13,auto,12.75 +m4,128,shl,4x13,floor,12.57 +m4,128,shl,4x13,gmp,1.98 +m4,128,shl,4x13,gmpz,2.73 +m4,128,shl,4x13,inplace,3.84 +m4,128,shl,4x13,kernel,4.09 +m4,128,shl,4x13,kernelip,3.40 +m4,128,shl,16x13,auto,15.52 +m4,128,shl,16x13,floor,12.15 +m4,128,shl,16x13,gmp,3.49 +m4,128,shl,16x13,gmpz,5.22 +m4,128,shl,16x13,inplace,5.36 +m4,128,shl,16x13,kernel,4.08 +m4,128,shl,16x13,kernelip,6.79 +m4,128,shr,1x13,auto,8.94 +m4,128,shr,1x13,floor,2.50 +m4,128,shr,1x13,gmp,0.99 +m4,128,shr,1x13,gmpz,1.99 +m4,128,shr,1x13,inplace,3.41 +m4,128,shr,1x13,kernel,2.50 +m4,128,shr,4x13,auto,14.00 +m4,128,shr,4x13,floor,12.16 +m4,128,shr,4x13,gmp,1.74 +m4,128,shr,4x13,gmpz,2.73 +m4,128,shr,4x13,inplace,6.88 +m4,128,shr,4x13,kernel,4.47 +m4,128,shr,16x13,auto,17.75 +m4,128,shr,16x13,floor,12.97 +m4,128,shr,16x13,gmp,3.25 +m4,128,shr,16x13,gmpz,4.23 +m4,128,shr,16x13,inplace,5.25 +m4,128,shr,16x13,kernel,4.21 +m4,128,sqr,4x4,auto,23.20 +m4,128,sqr,4x4,floor,16.27 +m4,128,sqr,4x4,gmp,6.96 +m4,128,sqr,4x4,gmpz,9.69 +m4,128,sqr,4x4,kernel,11.00 +m4,128,sqr,16x16,auto,74.21 +m4,128,sqr,16x16,floor,70.51 +m4,128,sqr,16x16,gmp,62.84 +m4,128,sqr,16x16,gmpz,66.25 +m4,128,sqr,16x16,kernel,61.61 +m4,128,sub,1x1,auto,8.36 +m4,128,sub,1x1,floor,1.73 +m4,128,sub,1x1,gmp,1.49 +m4,128,sub,1x1,gmpz,2.49 +m4,128,sub,1x1,inplace,3.61 +m4,128,sub,1x1,kernel,1.03 +m4,128,sub,2x2,auto,8.73 +m4,128,sub,2x2,floor,1.98 +m4,128,sub,2x2,gmp,1.98 +m4,128,sub,2x2,gmpz,2.87 +m4,128,sub,2x2,inplace,3.84 +m4,128,sub,2x2,kernel,1.41 +m4,128,sub,4x4,auto,14.02 +m4,128,sub,4x4,floor,10.47 +m4,128,sub,4x4,gmp,1.74 +m4,128,sub,4x4,gmpz,2.74 +m4,128,sub,4x4,inplace,3.67 +m4,128,sub,4x4,kernel,1.94 +m4,128,sub,8x8,auto,15.53 +m4,128,sub,8x8,floor,11.92 +m4,128,sub,8x8,gmp,2.24 +m4,128,sub,8x8,gmpz,3.23 +m4,128,sub,8x8,inplace,4.32 +m4,128,sub,8x8,kernel,3.50 +m4,128,sub,16x16,auto,17.67 +m4,128,sub,16x16,floor,15.38 +m4,128,sub,16x16,gmp,3.15 +m4,128,sub,16x16,gmpz,4.24 +m4,128,sub,16x16,inplace,5.34 +m4,128,sub,16x16,kernel,7.72 +m4,128,vecsort,100000x1,auto,94.78 +m4,128,vecsort,100000x1,builtin,13.38 +m4,128,vecsort,100000x1,copy,3.90 +m4,256,add,1x1,auto,9.18 +m4,256,add,1x1,floor,1.82 +m4,256,add,1x1,gmp,1.49 +m4,256,add,1x1,gmpz,2.99 +m4,256,add,1x1,inplace,3.35 +m4,256,add,1x1,kernel,1.14 +m4,256,add,2x2,auto,10.64 +m4,256,add,2x2,floor,2.07 +m4,256,add,2x2,gmp,1.98 +m4,256,add,2x2,gmpz,4.02 +m4,256,add,2x2,inplace,4.22 +m4,256,add,2x2,kernel,1.39 +m4,256,add,4x4,auto,9.30 +m4,256,add,4x4,floor,10.21 +m4,256,add,4x4,gmp,1.74 +m4,256,add,4x4,gmpz,4.10 +m4,256,add,4x4,inplace,3.77 +m4,256,add,4x4,kernel,1.98 +m4,256,add,8x8,auto,15.16 +m4,256,add,8x8,floor,12.11 +m4,256,add,8x8,gmp,2.24 +m4,256,add,8x8,gmpz,3.83 +m4,256,add,8x8,inplace,4.23 +m4,256,add,8x8,kernel,3.65 +m4,256,add,16x16,auto,16.59 +m4,256,add,16x16,floor,13.84 +m4,256,add,16x16,gmp,3.23 +m4,256,add,16x16,gmpz,4.37 +m4,256,add,16x16,inplace,5.71 +m4,256,add,16x16,kernel,7.67 +m4,256,divrem,2x1,auto,23.56 +m4,256,divrem,2x1,floor,6.95 +m4,256,divrem,2x1,gmp,5.01 +m4,256,divrem,2x1,gmpz,8.68 +m4,256,divrem,2x1,kernel,5.97 +m4,256,divrem,8x4,auto,74.69 +m4,256,divrem,8x4,floor,54.52 +m4,256,divrem,8x4,gmp,40.87 +m4,256,divrem,8x4,gmpz,44.01 +m4,256,divrem,8x4,kernel,46.39 +m4,256,divrem,32x16,auto,431.31 +m4,256,divrem,32x16,floor,410.74 +m4,256,divrem,32x16,gmp,206.19 +m4,256,divrem,32x16,gmpz,209.26 +m4,256,divrem,32x16,kernel,393.93 +m4,256,mul,1x1,auto,9.32 +m4,256,mul,1x1,gmp,3.74 +m4,256,mul,1x1,gmpz,2.73 +m4,256,mul,2x2,auto,13.60 +m4,256,mul,2x2,floor,8.07 +m4,256,mul,2x2,gmp,4.72 +m4,256,mul,2x2,gmpz,6.72 +m4,256,mul,2x2,kernel,6.49 +m4,256,mul,3x3,auto,19.62 +m4,256,mul,3x3,floor,17.00 +m4,256,mul,3x3,gmp,6.15 +m4,256,mul,3x3,gmpz,9.37 +m4,256,mul,3x3,kernel,8.32 +m4,256,mul,4x4,auto,21.81 +m4,256,mul,4x4,floor,16.75 +m4,256,mul,4x4,gmp,8.83 +m4,256,mul,4x4,gmpz,9.86 +m4,256,mul,4x4,kernel,11.06 +m4,256,mul,6x6,auto,27.48 +m4,256,mul,6x6,floor,23.60 +m4,256,mul,6x6,gmp,14.77 +m4,256,mul,6x6,gmpz,18.89 +m4,256,mul,6x6,kernel,18.91 +m4,256,mul,8x8,auto,34.56 +m4,256,mul,8x8,floor,29.95 +m4,256,mul,8x8,gmp,22.41 +m4,256,mul,8x8,gmpz,24.54 +m4,256,mul,8x8,kernel,22.96 +m4,256,mul,12x12,auto,53.88 +m4,256,mul,12x12,floor,49.50 +m4,256,mul,12x12,gmp,43.91 +m4,256,mul,12x12,gmpz,46.79 +m4,256,mul,12x12,kernel,41.05 +m4,256,mul,16x16,auto,82.50 +m4,256,mul,16x16,floor,78.81 +m4,256,mul,16x16,gmp,76.88 +m4,256,mul,16x16,gmpz,78.64 +m4,256,mul,16x16,kernel,69.49 +m4,256,shl,1x13,auto,7.25 +m4,256,shl,1x13,floor,3.63 +m4,256,shl,1x13,gmp,1.24 +m4,256,shl,1x13,gmpz,2.00 +m4,256,shl,1x13,inplace,3.66 +m4,256,shl,1x13,kernel,2.24 +m4,256,shl,1x13,kernelip,1.46 +m4,256,shl,4x13,auto,13.64 +m4,256,shl,4x13,floor,12.69 +m4,256,shl,4x13,gmp,1.99 +m4,256,shl,4x13,gmpz,2.75 +m4,256,shl,4x13,inplace,4.25 +m4,256,shl,4x13,kernel,3.73 +m4,256,shl,4x13,kernelip,3.40 +m4,256,shl,16x13,auto,16.95 +m4,256,shl,16x13,floor,11.95 +m4,256,shl,16x13,gmp,3.48 +m4,256,shl,16x13,gmpz,5.16 +m4,256,shl,16x13,inplace,5.35 +m4,256,shl,16x13,kernel,4.11 +m4,256,shl,16x13,kernelip,6.79 +m4,256,shr,1x13,auto,10.24 +m4,256,shr,1x13,floor,2.49 +m4,256,shr,1x13,gmp,0.99 +m4,256,shr,1x13,gmpz,1.99 +m4,256,shr,1x13,inplace,3.37 +m4,256,shr,1x13,kernel,2.25 +m4,256,shr,4x13,auto,10.22 +m4,256,shr,4x13,floor,4.47 +m4,256,shr,4x13,gmp,1.74 +m4,256,shr,4x13,gmpz,2.74 +m4,256,shr,4x13,inplace,3.77 +m4,256,shr,4x13,kernel,3.74 +m4,256,shr,16x13,auto,17.77 +m4,256,shr,16x13,floor,12.93 +m4,256,shr,16x13,gmp,3.23 +m4,256,shr,16x13,gmpz,4.37 +m4,256,shr,16x13,inplace,5.29 +m4,256,shr,16x13,kernel,4.14 +m4,256,sqr,4x4,auto,21.16 +m4,256,sqr,4x4,floor,16.57 +m4,256,sqr,4x4,gmp,6.98 +m4,256,sqr,4x4,gmpz,9.44 +m4,256,sqr,4x4,kernel,10.91 +m4,256,sqr,16x16,auto,73.87 +m4,256,sqr,16x16,floor,71.56 +m4,256,sqr,16x16,gmp,63.20 +m4,256,sqr,16x16,gmpz,66.18 +m4,256,sqr,16x16,kernel,63.51 +m4,256,sub,1x1,auto,8.57 +m4,256,sub,1x1,floor,1.75 +m4,256,sub,1x1,gmp,1.74 +m4,256,sub,1x1,gmpz,2.50 +m4,256,sub,1x1,inplace,3.72 +m4,256,sub,1x1,kernel,1.06 +m4,256,sub,2x2,auto,8.81 +m4,256,sub,2x2,floor,2.00 +m4,256,sub,2x2,gmp,2.23 +m4,256,sub,2x2,gmpz,2.99 +m4,256,sub,2x2,inplace,3.85 +m4,256,sub,2x2,kernel,1.42 +m4,256,sub,4x4,auto,9.22 +m4,256,sub,4x4,floor,2.49 +m4,256,sub,4x4,gmp,1.99 +m4,256,sub,4x4,gmpz,2.74 +m4,256,sub,4x4,inplace,3.91 +m4,256,sub,4x4,kernel,2.11 +m4,256,sub,8x8,auto,15.72 +m4,256,sub,8x8,floor,11.49 +m4,256,sub,8x8,gmp,2.48 +m4,256,sub,8x8,gmpz,3.23 +m4,256,sub,8x8,inplace,4.01 +m4,256,sub,8x8,kernel,5.79 +m4,256,sub,16x16,auto,18.45 +m4,256,sub,16x16,floor,15.93 +m4,256,sub,16x16,gmp,3.35 +m4,256,sub,16x16,gmpz,4.38 +m4,256,sub,16x16,inplace,5.35 +m4,256,sub,16x16,kernel,11.69 +m4,256,vecsort,100000x1,auto,96.50 +m4,256,vecsort,100000x1,builtin,13.18 +m4,256,vecsort,100000x1,copy,3.77 +m4,512,add,1x1,auto,10.12 +m4,512,add,1x1,floor,1.82 +m4,512,add,1x1,gmp,1.49 +m4,512,add,1x1,gmpz,3.00 +m4,512,add,1x1,inplace,3.58 +m4,512,add,1x1,kernel,1.14 +m4,512,add,2x2,auto,10.86 +m4,512,add,2x2,floor,2.07 +m4,512,add,2x2,gmp,1.86 +m4,512,add,2x2,gmpz,4.63 +m4,512,add,2x2,inplace,4.15 +m4,512,add,2x2,kernel,1.39 +m4,512,add,4x4,auto,9.97 +m4,512,add,4x4,floor,2.58 +m4,512,add,4x4,gmp,1.74 +m4,512,add,4x4,gmpz,3.97 +m4,512,add,4x4,inplace,3.93 +m4,512,add,4x4,kernel,1.96 +m4,512,add,8x8,auto,8.98 +m4,512,add,8x8,floor,12.01 +m4,512,add,8x8,gmp,2.25 +m4,512,add,8x8,gmpz,4.44 +m4,512,add,8x8,inplace,4.38 +m4,512,add,8x8,kernel,3.65 +m4,512,add,16x16,auto,16.45 +m4,512,add,16x16,floor,14.17 +m4,512,add,16x16,gmp,3.23 +m4,512,add,16x16,gmpz,4.22 +m4,512,add,16x16,inplace,5.73 +m4,512,add,16x16,kernel,7.72 +m4,512,divrem,2x1,auto,23.79 +m4,512,divrem,2x1,floor,6.88 +m4,512,divrem,2x1,gmp,5.01 +m4,512,divrem,2x1,gmpz,8.71 +m4,512,divrem,2x1,kernel,5.96 +m4,512,divrem,8x4,auto,72.58 +m4,512,divrem,8x4,floor,47.16 +m4,512,divrem,8x4,gmp,40.99 +m4,512,divrem,8x4,gmpz,43.88 +m4,512,divrem,8x4,kernel,46.42 +m4,512,divrem,32x16,auto,432.82 +m4,512,divrem,32x16,floor,408.56 +m4,512,divrem,32x16,gmp,206.16 +m4,512,divrem,32x16,gmpz,209.06 +m4,512,divrem,32x16,kernel,392.85 +m4,512,mul,1x1,auto,9.21 +m4,512,mul,1x1,gmp,3.73 +m4,512,mul,1x1,gmpz,2.74 +m4,512,mul,2x2,auto,13.80 +m4,512,mul,2x2,floor,7.45 +m4,512,mul,2x2,gmp,4.47 +m4,512,mul,2x2,gmpz,6.67 +m4,512,mul,2x2,kernel,6.62 +m4,512,mul,3x3,auto,14.79 +m4,512,mul,3x3,floor,9.51 +m4,512,mul,3x3,gmp,6.18 +m4,512,mul,3x3,gmpz,9.90 +m4,512,mul,3x3,kernel,8.10 +m4,512,mul,4x4,auto,15.03 +m4,512,mul,4x4,floor,11.20 +m4,512,mul,4x4,gmp,9.29 +m4,512,mul,4x4,gmpz,10.99 +m4,512,mul,4x4,kernel,11.07 +m4,512,mul,6x6,auto,27.98 +m4,512,mul,6x6,floor,23.95 +m4,512,mul,6x6,gmp,14.79 +m4,512,mul,6x6,gmpz,18.19 +m4,512,mul,6x6,kernel,19.27 +m4,512,mul,8x8,auto,34.51 +m4,512,mul,8x8,floor,31.50 +m4,512,mul,8x8,gmp,23.22 +m4,512,mul,8x8,gmpz,24.51 +m4,512,mul,8x8,kernel,23.15 +m4,512,mul,12x12,auto,55.04 +m4,512,mul,12x12,floor,49.42 +m4,512,mul,12x12,gmp,44.07 +m4,512,mul,12x12,gmpz,46.64 +m4,512,mul,12x12,kernel,41.27 +m4,512,mul,16x16,auto,82.77 +m4,512,mul,16x16,floor,78.74 +m4,512,mul,16x16,gmp,77.26 +m4,512,mul,16x16,gmpz,79.14 +m4,512,mul,16x16,kernel,69.46 +m4,512,shl,1x13,auto,6.95 +m4,512,shl,1x13,floor,4.78 +m4,512,shl,1x13,gmp,1.24 +m4,512,shl,1x13,gmpz,1.99 +m4,512,shl,1x13,inplace,3.95 +m4,512,shl,1x13,kernel,2.24 +m4,512,shl,1x13,kernelip,1.75 +m4,512,shl,4x13,auto,8.42 +m4,512,shl,4x13,floor,5.16 +m4,512,shl,4x13,gmp,1.99 +m4,512,shl,4x13,gmpz,2.73 +m4,512,shl,4x13,inplace,4.49 +m4,512,shl,4x13,kernel,3.75 +m4,512,shl,4x13,kernelip,3.38 +m4,512,shl,16x13,auto,20.20 +m4,512,shl,16x13,floor,11.94 +m4,512,shl,16x13,gmp,3.48 +m4,512,shl,16x13,gmpz,4.88 +m4,512,shl,16x13,inplace,5.34 +m4,512,shl,16x13,kernel,4.15 +m4,512,shl,16x13,kernelip,7.22 +m4,512,shr,1x13,auto,9.45 +m4,512,shr,1x13,floor,2.50 +m4,512,shr,1x13,gmp,0.99 +m4,512,shr,1x13,gmpz,1.98 +m4,512,shr,1x13,inplace,3.34 +m4,512,shr,1x13,kernel,2.23 +m4,512,shr,4x13,auto,9.79 +m4,512,shr,4x13,floor,4.47 +m4,512,shr,4x13,gmp,1.74 +m4,512,shr,4x13,gmpz,2.73 +m4,512,shr,4x13,inplace,3.77 +m4,512,shr,4x13,kernel,3.73 +m4,512,shr,16x13,auto,18.40 +m4,512,shr,16x13,floor,13.15 +m4,512,shr,16x13,gmp,3.24 +m4,512,shr,16x13,gmpz,4.24 +m4,512,shr,16x13,inplace,5.30 +m4,512,shr,16x13,kernel,4.16 +m4,512,sqr,4x4,auto,15.40 +m4,512,sqr,4x4,floor,11.30 +m4,512,sqr,4x4,gmp,6.96 +m4,512,sqr,4x4,gmpz,9.38 +m4,512,sqr,4x4,kernel,11.31 +m4,512,sqr,16x16,auto,74.45 +m4,512,sqr,16x16,floor,69.83 +m4,512,sqr,16x16,gmp,62.63 +m4,512,sqr,16x16,gmpz,66.31 +m4,512,sqr,16x16,kernel,61.06 +m4,512,sub,1x1,auto,8.84 +m4,512,sub,1x1,floor,1.74 +m4,512,sub,1x1,gmp,1.49 +m4,512,sub,1x1,gmpz,2.48 +m4,512,sub,1x1,inplace,3.68 +m4,512,sub,1x1,kernel,1.08 +m4,512,sub,2x2,auto,9.18 +m4,512,sub,2x2,floor,2.00 +m4,512,sub,2x2,gmp,1.98 +m4,512,sub,2x2,gmpz,2.85 +m4,512,sub,2x2,inplace,3.85 +m4,512,sub,2x2,kernel,1.42 +m4,512,sub,4x4,auto,9.77 +m4,512,sub,4x4,floor,2.49 +m4,512,sub,4x4,gmp,1.74 +m4,512,sub,4x4,gmpz,2.73 +m4,512,sub,4x4,inplace,3.79 +m4,512,sub,4x4,kernel,1.99 +m4,512,sub,8x8,auto,8.95 +m4,512,sub,8x8,floor,4.15 +m4,512,sub,8x8,gmp,2.24 +m4,512,sub,8x8,gmpz,3.24 +m4,512,sub,8x8,inplace,4.34 +m4,512,sub,8x8,kernel,3.60 +m4,512,sub,16x16,auto,17.88 +m4,512,sub,16x16,floor,15.00 +m4,512,sub,16x16,gmp,3.13 +m4,512,sub,16x16,gmpz,4.29 +m4,512,sub,16x16,inplace,5.29 +m4,512,sub,16x16,kernel,7.81 +m4,512,vecsort,100000x1,auto,98.30 +m4,512,vecsort,100000x1,builtin,13.27 +m4,512,vecsort,100000x1,copy,4.40 diff --git a/tests/beman/big_int/perf/item1/x64_base64_seed1a.csv b/tests/beman/big_int/perf/item1/x64_base64_seed1a.csv deleted file mode 100644 index 68676f2a..00000000 --- a/tests/beman/big_int/perf/item1/x64_base64_seed1a.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T16:59:07Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2386193,9,8.24,8.16,19.68 -add,inplace,1,1,2394258,9,4.15,4.14,19.92 -add,kernel,1,1,10522148,9,1.90,1.89,19.97 -add,floor,1,1,2036257,9,9.85,9.82,20.09 -add,gmp,1,1,8813225,9,2.27,2.27,19.98 -add,gmpz,1,1,4730952,9,4.23,4.22,20.00 -add,auto,2,2,1121706,9,17.83,17.79,20.03 -add,inplace,2,2,1680791,9,5.95,5.88,20.08 -add,kernel,2,2,8051696,9,2.49,2.37,19.95 -add,floor,2,2,1954153,9,10.25,10.20,20.03 -add,gmp,2,2,8653262,9,2.31,2.31,19.99 -add,gmpz,2,2,4721369,9,4.24,4.23,20.01 -add,auto,4,4,1112055,9,17.99,17.91,20.01 -add,inplace,4,4,1769136,9,5.64,5.63,19.98 -add,kernel,4,4,6413057,9,3.16,3.11,20.39 -add,floor,4,4,1819960,9,10.97,10.97,19.99 -add,gmp,4,4,7855950,9,2.55,2.55,20.20 -add,gmpz,4,4,4260427,9,4.43,4.43,19.04 -add,auto,8,8,1044024,9,19.15,19.11,20.02 -add,inplace,8,8,1359132,9,7.36,7.34,19.99 -add,kernel,8,8,4257010,9,4.63,4.62,19.83 -add,floor,8,8,1598250,9,12.52,12.51,20.01 -add,gmp,8,8,5409542,9,3.69,3.69,19.95 -add,gmpz,8,8,4199827,9,4.74,4.73,19.94 -add,auto,16,16,770633,9,25.73,25.56,19.86 -add,inplace,16,16,851247,9,11.79,11.76,20.10 -add,kernel,16,16,2326919,9,8.60,8.57,20.05 -add,floor,16,16,1199062,9,15.62,15.59,18.99 -add,gmp,16,16,3626194,9,5.50,5.48,19.94 -add,gmpz,16,16,3012814,9,6.64,6.61,20.00 -add,auto,64,64,314917,9,63.53,62.99,19.98 -add,inplace,64,64,255439,9,39.05,38.86,19.93 -add,kernel,64,64,602296,9,33.17,33.14,19.98 -add,floor,64,64,479076,9,41.32,40.71,19.80 -add,gmp,64,64,1286377,9,15.55,15.55,20.00 -add,gmpz,64,64,1212468,9,16.49,16.46,20.03 -add,auto,256,256,89408,9,223.60,223.49,20.01 -add,inplace,256,256,68412,9,150.05,146.05,20.61 -add,kernel,256,256,139727,9,142.52,142.50,19.92 -add,floor,256,256,125904,9,158.81,158.59,19.99 -add,gmp,256,256,251355,9,78.23,78.19,19.68 -add,gmpz,256,256,251595,9,79.49,79.39,20.00 -add,auto,1024,1024,23770,9,841.54,841.32,20.00 -add,inplace,1024,1024,17157,9,582.91,582.83,20.00 -add,kernel,1024,1024,34580,9,578.45,578.32,20.01 -add,floor,1024,1024,33662,9,594.21,594.17,20.01 -add,gmp,1024,1024,51227,9,390.41,390.40,20.00 -add,gmpz,1024,1024,51106,9,405.90,396.99,20.65 -add,auto,2000,2000,11606,9,1723.16,1722.92,20.00 -add,inplace,2000,2000,8812,9,1134.85,1134.75,20.00 -add,kernel,2000,2000,17653,9,1132.99,1132.95,20.00 -add,floor,2000,2000,17398,9,1149.41,1149.01,20.00 -add,gmp,2000,2000,43135,9,463.54,463.53,20.01 -add,gmpz,2000,2000,41458,9,482.36,480.79,20.00 -add,auto,1024,1,71327,9,280.50,280.28,20.01 -add,inplace,1024,1,17239,9,580.20,580.14,20.00 -add,kernel,1024,1,34599,9,577.73,577.71,20.04 -add,floor,1024,1,33698,9,597.43,593.43,20.26 -add,gmp,1024,1,82872,9,232.65,232.62,19.38 -add,gmpz,1024,1,85446,9,233.94,233.74,19.99 -sub,auto,1,1,2199768,9,9.17,9.09,20.21 -sub,inplace,1,1,2452365,9,4.05,4.04,19.89 -sub,kernel,1,1,13236173,9,1.51,1.51,20.00 -sub,floor,1,1,10589050,9,1.89,1.89,20.04 -sub,gmp,1,1,8824044,9,2.27,2.27,20.00 -sub,gmpz,1,1,4522441,9,4.41,4.39,19.95 -sub,auto,2,2,1042371,9,19.20,19.12,20.02 -sub,inplace,2,2,2143094,9,4.68,4.66,20.17 -sub,kernel,2,2,9074171,9,2.12,2.08,19.33 -sub,floor,2,2,1997719,9,10.02,10.01,20.01 -sub,gmp,2,2,8657858,9,2.30,2.30,20.11 -sub,gmpz,2,2,4516461,9,4.43,4.43,20.04 -sub,auto,4,4,1058756,9,18.89,18.86,20.04 -sub,inplace,4,4,1823852,9,5.50,5.49,20.10 -sub,kernel,4,4,7017101,9,2.89,2.86,20.32 -sub,floor,4,4,1850872,9,10.80,10.79,19.98 -sub,gmp,4,4,7877139,9,2.54,2.53,19.99 -sub,gmpz,4,4,4243814,9,4.65,4.62,19.84 -sub,auto,8,8,906753,9,21.16,20.48,19.05 -sub,inplace,8,8,1378818,9,7.26,7.25,20.02 -sub,kernel,8,8,4481870,9,4.48,4.45,20.06 -sub,floor,8,8,1611861,9,12.44,12.40,20.12 -sub,gmp,8,8,5426432,9,3.68,3.68,19.99 -sub,gmpz,8,8,3961055,9,5.06,5.03,20.05 -sub,auto,16,16,769267,9,25.76,25.21,19.76 -sub,inplace,16,16,934672,9,10.71,10.70,20.02 -sub,kernel,16,16,2453516,9,8.12,8.07,19.91 -sub,floor,16,16,1292831,9,15.47,15.44,20.01 -sub,gmp,16,16,3632900,9,5.52,5.50,20.38 -sub,gmpz,16,16,2818317,9,6.94,6.88,19.55 -sub,auto,64,64,303594,9,66.12,65.84,20.07 -sub,inplace,64,64,264153,9,37.85,37.32,19.96 -sub,kernel,64,64,607577,9,32.91,32.87,20.00 -sub,floor,64,64,473758,9,42.17,42.09,19.98 -sub,gmp,64,64,1294446,9,15.45,15.45,20.01 -sub,gmpz,64,64,1194619,9,16.74,16.71,20.00 -sub,auto,256,256,88851,9,224.99,224.76,19.99 -sub,inplace,256,256,68805,9,145.35,145.29,20.00 -sub,kernel,256,256,140021,9,147.43,142.85,20.61 -sub,floor,256,256,126070,9,158.28,158.09,19.96 -sub,gmp,256,256,255664,9,78.23,78.22,20.00 -sub,gmpz,256,256,250515,9,79.87,79.75,20.01 -sub,auto,1024,1024,23774,9,841.52,841.27,20.01 -sub,inplace,1024,1024,17162,9,581.59,581.50,19.97 -sub,kernel,1024,1024,34591,9,578.20,578.16,20.00 -sub,floor,1024,1024,33671,9,594.20,593.99,20.01 -sub,gmp,1024,1024,51303,9,389.84,389.83,20.07 -sub,gmpz,1024,1024,50215,9,405.38,391.22,20.30 -sub,auto,2000,2000,11482,9,1742.13,1741.89,20.02 -sub,inplace,2000,2000,8820,9,1133.79,1133.72,20.01 -sub,kernel,2000,2000,17675,9,1131.27,1131.22,20.00 -sub,floor,2000,2000,17406,9,1149.27,1149.15,20.00 -sub,gmp,2000,2000,41724,9,477.85,477.82,19.94 -sub,gmpz,2000,2000,41355,9,483.61,482.15,19.99 -sub,auto,1024,1,70650,9,282.89,282.62,19.99 -sub,inplace,1024,1,17158,9,579.68,579.62,19.89 -sub,kernel,1024,1,34677,9,576.78,576.77,20.00 -sub,floor,1024,1,33728,9,602.89,592.95,20.42 -sub,gmp,1024,1,82735,9,233.95,233.83,19.36 -sub,gmpz,1024,1,85435,9,234.56,234.18,20.06 -shl,auto,1,13,1191071,9,16.76,16.58,19.96 -shl,inplace,1,13,2402761,9,4.16,4.11,19.94 -shl,kernel,1,13,9615687,9,2.08,2.07,19.96 -shl,kernelip,1,13,5598695,9,1.78,1.75,19.96 -shl,floor,1,13,2077756,9,9.82,9.82,20.42 -shl,gmp,1,13,9465924,9,1.93,1.92,18.22 -shl,gmpz,1,13,5759795,9,3.47,3.47,19.96 -shl,auto,4,13,1071197,9,18.73,18.63,20.18 -shl,inplace,4,13,1861827,9,5.27,5.24,19.70 -shl,kernel,4,13,5706246,9,3.46,3.44,19.76 -shl,kernelip,4,13,3426062,9,2.93,2.91,20.10 -shl,floor,4,13,1726130,9,11.26,11.24,19.51 -shl,gmp,4,13,7990504,9,2.31,2.31,18.46 -shl,gmpz,4,13,4946163,9,4.04,4.04,20.00 -shl,auto,16,13,804884,9,24.50,24.28,19.71 -shl,inplace,16,13,1072256,9,9.33,9.32,20.02 -shl,kernel,16,13,2688433,9,7.46,7.44,20.10 -shl,kernelip,16,13,1326585,9,7.49,7.23,19.92 -shl,floor,16,13,1247726,9,15.24,15.21,19.00 -shl,gmp,16,13,4929909,9,4.05,4.05,20.17 -shl,gmpz,16,13,3436944,9,5.82,5.81,20.02 -shl,auto,256,13,143927,9,138.19,135.87,19.91 -shl,inplace,256,13,107014,9,93.16,92.83,19.92 -shl,kernel,256,13,208852,9,95.75,95.53,20.00 -shl,kernelip,256,13,102309,9,97.75,97.70,20.00 -shl,floor,256,13,174826,9,118.55,118.20,20.72 -shl,gmp,256,13,419186,9,48.08,47.92,20.21 -shl,gmpz,256,13,367901,9,52.03,51.22,19.21 -shl,auto,2000,13,21760,9,916.48,914.30,19.94 -shl,inplace,2000,13,15195,9,657.27,656.17,19.98 -shl,kernel,2000,13,27814,9,728.83,719.05,20.18 -shl,kernelip,2000,13,13980,9,715.38,715.30,20.00 -shl,floor,2000,13,27176,9,739.43,739.14,20.10 -shl,gmp,2000,13,58841,9,340.56,338.67,20.03 -shl,gmpz,2000,13,58001,9,344.13,343.05,19.97 -shl,auto,2000,77,18804,9,1064.16,1063.65,20.02 -shl,inplace,2000,77,13069,9,764.90,763.98,20.04 -shl,kernel,2000,77,23375,9,877.76,854.06,20.54 -shl,kernelip,2000,77,12158,9,822.87,822.54,20.01 -shl,floor,2000,77,22932,9,872.22,870.70,20.00 -shl,gmp,2000,77,58109,9,344.23,344.22,20.00 -shl,gmpz,2000,77,57984,9,344.92,344.88,20.00 -shr,auto,1,13,1944312,9,10.27,10.23,19.99 -shr,inplace,1,13,2690750,9,3.69,3.66,19.88 -shr,kernel,1,13,11666816,9,1.71,1.71,19.98 -shr,floor,1,13,8692271,9,2.30,2.29,20.01 -shr,gmp,1,13,10388260,9,1.93,1.93,20.00 -shr,gmpz,1,13,6110962,9,3.36,3.28,20.61 -shr,auto,4,13,953539,9,21.10,21.05,20.14 -shr,inplace,4,13,2090648,9,4.80,4.74,20.05 -shr,kernel,4,13,5771518,9,3.47,3.46,20.05 -shr,floor,4,13,1665675,9,12.01,11.98,20.01 -shr,gmp,4,13,8590560,9,2.33,2.31,20.01 -shr,gmpz,4,13,5036568,9,3.96,3.95,19.95 -shr,auto,16,13,768452,9,26.07,26.01,20.03 -shr,inplace,16,13,1109753,9,9.01,8.99,20.01 -shr,kernel,16,13,2418767,9,8.21,8.14,19.86 -shr,floor,16,13,1154429,9,17.61,17.22,20.43 -shr,gmp,16,13,4280753,9,4.64,4.64,19.90 -shr,gmpz,16,13,2726962,9,7.34,7.28,20.00 -shr,auto,256,13,142369,9,140.71,140.54,20.04 -shr,inplace,256,13,106201,9,93.84,93.72,19.94 -shr,kernel,256,13,178239,9,111.95,111.34,19.94 -shr,floor,256,13,150591,9,133.13,132.94,20.04 -shr,gmp,256,13,408660,9,49.00,48.84,20.02 -shr,gmpz,256,13,387603,9,51.63,51.54,20.01 -shr,auto,2000,13,21067,9,948.92,947.19,20.00 -shr,inplace,2000,13,15228,9,657.58,656.67,20.21 -shr,kernel,2000,13,23145,9,814.38,811.76,19.01 -shr,floor,2000,13,24016,9,832.97,832.61,20.03 -shr,gmp,2000,13,57820,9,342.48,341.87,19.81 -shr,gmpz,2000,13,57903,9,345.33,345.17,20.00 -shr,auto,2000,77,18425,9,1084.13,1083.28,19.97 -shr,inplace,2000,77,13077,9,765.03,764.71,20.01 -shr,kernel,2000,77,24139,9,828.58,828.53,20.01 -shr,floor,2000,77,23596,9,848.19,847.23,20.01 -shr,gmp,2000,77,58732,9,341.63,341.11,20.06 -shr,gmpz,2000,77,57864,9,345.12,343.66,20.03 -mul,auto,1,1,1030059,9,19.99,19.19,20.44 -mul,gmp,1,1,5762940,9,3.45,3.41,19.82 -mul,gmpz,1,1,4947001,9,4.04,4.04,20.02 -mul,auto,2,2,718176,9,27.87,27.79,20.09 -mul,kernel,2,2,2813987,9,7.59,7.56,21.38 -mul,floor,2,2,1332617,9,15.05,14.96,20.05 -mul,gmp,2,2,5203469,9,3.83,3.80,19.91 -mul,gmpz,2,2,3260490,9,6.14,6.08,19.99 -mul,auto,3,3,670203,9,29.63,29.50,20.24 -mul,kernel,3,3,2344711,9,9.01,8.98,21.22 -mul,floor,3,3,1168079,9,17.44,16.74,20.29 -mul,gmp,3,3,2521606,9,7.95,7.91,20.05 -mul,gmpz,3,3,1993335,9,9.99,9.97,19.92 -mul,auto,4,4,630262,9,32.00,31.85,20.17 -mul,kernel,4,4,1875851,9,11.10,11.08,20.83 -mul,floor,4,4,1074965,9,18.49,18.41,19.89 -mul,gmp,4,4,2064894,9,9.68,9.66,19.99 -mul,gmpz,4,4,1648613,9,12.16,12.14,20.06 -mul,auto,6,6,478908,9,41.93,41.63,20.10 -mul,kernel,6,6,1194751,9,17.50,17.46,21.00 -mul,floor,6,6,737848,9,25.36,24.67,18.75 -mul,gmp,6,6,1252461,9,15.97,15.94,20.28 -mul,gmpz,6,6,1098782,9,18.22,18.18,20.01 -mul,auto,8,8,421942,9,47.11,47.04,19.88 -mul,kernel,8,8,808126,9,25.61,25.45,20.79 -mul,floor,8,8,608285,9,32.70,32.55,19.89 -mul,gmp,8,8,721301,9,27.61,27.50,19.92 -mul,gmpz,8,8,676572,9,29.36,29.21,19.90 -mul,auto,12,12,284325,9,70.26,70.23,20.00 -mul,kernel,12,12,421024,9,47.99,47.93,20.20 -mul,floor,12,12,362303,9,56.28,54.85,20.42 -mul,gmp,12,12,383709,9,52.06,51.71,19.97 -mul,gmpz,12,12,386740,9,51.74,51.72,20.03 -mul,auto,16,16,195810,9,101.92,101.89,19.97 -mul,kernel,16,16,251256,9,80.35,80.26,20.19 -mul,floor,16,16,230387,9,86.99,86.86,20.05 -mul,gmp,16,16,239569,9,83.43,83.38,19.99 -mul,gmpz,16,16,234027,9,85.62,85.48,20.03 -mul,auto,32,32,94705,9,211.54,210.95,20.03 -mul,kernel,32,32,105368,9,187.24,186.96,19.75 -mul,floor,32,32,99853,9,203.17,199.99,20.35 -mul,gmp,32,32,71016,9,272.91,272.79,19.45 -mul,gmpz,32,32,72674,9,275.26,275.21,20.00 -mul,auto,64,64,38805,9,515.75,514.44,20.01 -mul,kernel,64,64,41394,9,490.16,489.23,20.30 -mul,floor,64,64,40660,9,490.44,489.91,19.94 -mul,gmp,64,64,21900,9,913.28,913.09,20.00 -mul,gmpz,64,64,21849,9,915.57,915.45,20.01 -mul,auto,128,128,11486,9,1739.58,1737.87,19.98 -mul,kernel,128,128,11646,9,1719.54,1717.31,20.03 -mul,floor,128,128,11563,9,1729.06,1725.19,20.09 -mul,gmp,128,128,6783,9,2787.30,2759.17,19.01 -mul,gmpz,128,128,7201,9,2778.29,2776.35,20.00 -mul,auto,256,256,3224,9,6257.99,6200.64,20.18 -mul,kernel,256,256,3176,9,6312.03,6289.23,20.05 -mul,floor,256,256,3160,9,6326.56,6316.34,19.99 -mul,gmp,256,256,2532,9,7899.71,7898.45,20.00 -mul,gmpz,256,256,2525,9,7921.86,7916.67,20.00 -mul,auto,512,512,1039,9,19292.05,19260.51,20.05 -mul,kernel,512,512,1046,9,19142.10,19128.29,20.03 -mul,floor,512,512,1044,9,19162.78,19154.89,20.01 -mul,gmp,512,512,930,9,21849.82,21519.35,20.36 -mul,gmpz,512,512,907,9,21416.63,21402.88,19.50 -mul,auto,1000,1000,331,9,59781.19,59649.61,19.79 -mul,kernel,1000,1000,337,9,59421.13,59377.32,20.03 -mul,floor,1000,1000,337,9,59409.54,59361.06,20.02 -mul,gmp,1000,1000,369,9,54290.01,54282.64,20.03 -mul,gmpz,1000,1000,368,9,54351.05,54228.38,20.02 -mul,auto,2000,2000,113,9,177067.48,176962.08,20.01 -mul,kernel,2000,2000,114,9,176370.68,176254.24,20.11 -mul,floor,2000,2000,114,9,176418.61,176263.93,20.11 -mul,gmp,2000,2000,136,9,150948.05,146887.36,20.49 -mul,gmpz,2000,2000,136,9,147048.24,146872.09,19.99 -mul,auto,2000,100,1123,9,17891.59,17824.06,20.18 -mul,kernel,2000,100,1109,9,18078.67,17985.17,20.04 -mul,floor,2000,100,1104,9,18116.66,18065.33,20.01 -mul,gmp,2000,100,549,9,36429.01,36356.80,20.01 -mul,gmpz,2000,100,548,9,36403.83,36352.56,19.95 -sqr,auto,4,4,594311,9,33.63,33.49,19.98 -sqr,kernel,4,4,2187297,9,9.06,9.04,19.82 -sqr,floor,4,4,1215381,9,16.92,16.91,20.56 -sqr,gmp,4,4,3406846,9,6.00,5.82,20.42 -sqr,gmpz,4,4,2256739,9,8.82,8.77,19.92 -sqr,auto,16,16,251084,9,79.65,79.62,20.05 -sqr,kernel,16,16,355706,9,56.23,56.17,20.01 -sqr,floor,16,16,320137,9,62.49,62.44,20.01 -sqr,gmp,16,16,393160,9,51.70,50.85,20.27 -sqr,gmpz,16,16,366669,9,53.14,53.10,19.60 -sqr,auto,64,64,66321,9,301.25,301.03,19.99 -sqr,kernel,64,64,74203,9,269.64,269.42,20.01 -sqr,floor,64,64,72671,9,280.21,279.88,20.37 -sqr,gmp,64,64,35683,9,564.46,560.25,20.28 -sqr,gmpz,64,64,34769,9,563.81,563.59,19.69 -sqr,auto,512,512,1880,9,10642.15,10635.22,20.01 -sqr,kernel,512,512,1890,9,10581.76,10573.38,20.00 -sqr,floor,512,512,1887,9,10588.21,10584.86,19.98 -sqr,gmp,512,512,1301,9,15381.09,15354.22,20.01 -sqr,gmpz,512,512,1306,9,15254.34,15173.73,19.93 -sqr,auto,2000,2000,199,9,100700.44,100681.88,20.04 -sqr,kernel,2000,2000,200,9,100249.77,100221.24,20.05 -sqr,floor,2000,2000,200,9,100183.68,100155.43,20.06 -sqr,gmp,2000,2000,195,9,102528.74,101913.76,20.01 -sqr,gmpz,2000,2000,193,9,104543.50,102431.79,20.17 -divrem,auto,2,1,470410,9,42.56,42.36,20.01 -divrem,kernel,2,1,3654043,9,5.60,5.47,20.40 -divrem,floor,2,1,1563156,9,12.79,12.75,19.99 -divrem,gmp,2,1,2305807,9,8.69,8.68,20.04 -divrem,gmpz,2,1,1487400,9,13.42,13.39,20.01 -divrem,auto,8,4,185542,9,107.93,107.21,20.00 -divrem,kernel,8,4,478355,9,42.21,41.95,20.18 -divrem,floor,8,4,350789,9,56.40,56.15,19.77 -divrem,gmp,8,4,498764,9,40.11,39.90,20.07 -divrem,gmpz,8,4,452194,9,44.86,43.69,20.14 -divrem,auto,32,16,53368,9,375.38,372.34,20.02 -divrem,kernel,32,16,68301,9,291.91,291.23,19.94 -divrem,floor,32,16,65447,9,306.42,305.35,20.06 -divrem,gmp,32,16,104163,9,191.76,191.02,19.97 -divrem,gmpz,32,16,102978,9,193.97,193.59,19.98 -divrem,auto,128,64,5885,9,3402.49,3400.91,20.02 -divrem,kernel,128,64,6152,9,3253.48,3250.21,20.01 -divrem,floor,128,64,6120,9,3265.77,3264.03,19.98 -divrem,gmp,128,64,11650,9,1717.78,1716.66,20.03 -divrem,gmpz,128,64,11451,9,1767.38,1721.94,20.28 -divrem,auto,512,256,649,9,30838.46,30829.71,20.02 -divrem,kernel,512,256,681,9,29367.33,29349.45,20.03 -divrem,floor,512,256,664,9,30003.24,29994.23,19.92 -divrem,gmp,512,256,1218,9,16307.79,16237.78,19.86 -divrem,gmpz,512,256,1224,9,16316.75,16289.51,19.99 -divrem,auto,2000,1000,108,9,185439.62,185402.27,20.04 -divrem,kernel,2000,1000,109,9,183746.60,183651.75,20.04 -divrem,floor,2000,1000,109,9,184106.18,184069.10,20.07 -divrem,gmp,2000,1000,143,9,139235.37,138042.63,19.88 -divrem,gmpz,2000,1000,145,9,140752.61,137708.54,20.39 -divrem,auto,4000,2000,41,9,492334.63,478304.12,20.08 -divrem,kernel,4000,2000,43,9,473419.33,473247.74,20.37 -divrem,floor,4000,2000,43,9,475934.35,475751.86,20.46 -divrem,gmp,4000,2000,59,9,339851.97,339731.86,20.06 -divrem,gmpz,4000,2000,59,9,340983.58,340359.12,20.14 -divrem,auto,2000,100,137,9,146356.15,146313.53,20.05 -divrem,kernel,2000,100,139,9,144606.63,144556.04,20.10 -divrem,floor,2000,100,139,9,144661.16,144611.14,20.11 -divrem,gmp,2000,100,276,9,72558.64,72517.73,20.04 -divrem,gmpz,2000,100,276,9,72602.37,72569.37,20.04 -divrem,auto,65536,1,103,9,193746.90,193246.44,19.95 -divrem,kernel,65536,1,120,9,167123.98,166968.62,20.06 -divrem,floor,65536,1,115,9,174866.02,174551.76,20.10 -divrem,gmp,65536,1,136,9,148102.60,148095.22,20.14 -divrem,gmpz,65536,1,136,9,148122.87,148117.49,20.15 -fromchars,auto,4,10,106262,9,190.38,187.91,20.23 -fromchars,kernel,4,10,534248,9,37.48,37.36,20.01 -fromchars,gmp,4,10,641368,9,31.36,31.11,20.16 -fromchars,gmpz,4,10,297648,9,67.51,67.27,20.09 -fromchars,auto,16,10,47552,9,420.40,417.37,20.01 -fromchars,kernel,16,10,97215,9,210.44,204.78,20.49 -fromchars,gmp,16,10,160898,9,124.36,124.23,20.08 -fromchars,gmpz,16,10,76140,9,261.86,261.45,19.95 -fromchars,auto,64,10,7104,9,2777.48,2709.83,19.78 -fromchars,kernel,64,10,9301,9,2093.97,2046.79,19.77 -fromchars,gmp,64,10,22373,9,894.56,892.86,20.02 -fromchars,gmpz,64,10,14422,9,1386.00,1382.09,20.00 -fromchars,auto,256,10,693,9,28664.36,28342.13,19.88 -fromchars,kernel,256,10,775,9,25869.17,25389.49,20.10 -fromchars,gmp,256,10,2466,9,8043.17,8006.10,19.83 -fromchars,gmpz,256,10,1988,9,10064.07,10023.70,19.99 -fromchars,auto,2000,10,47,9,429825.43,429674.26,20.20 -fromchars,kernel,2000,10,49,9,409132.33,408702.73,20.05 -fromchars,gmp,2000,10,107,9,186313.56,186107.07,19.94 -fromchars,gmpz,2000,10,100,9,200908.02,200484.41,20.08 diff --git a/tests/beman/big_int/perf/item1/x64_base64_seed1b.csv b/tests/beman/big_int/perf/item1/x64_base64_seed1b.csv deleted file mode 100644 index c7383df9..00000000 --- a/tests/beman/big_int/perf/item1/x64_base64_seed1b.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T17:02:04Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2376329,9,8.22,8.20,19.54 -add,inplace,1,1,2408571,9,4.17,4.14,20.06 -add,kernel,1,1,10588845,9,1.89,1.89,20.00 -add,floor,1,1,2029166,9,9.84,9.83,19.99 -add,gmp,1,1,8756330,9,2.27,2.27,19.90 -add,gmpz,1,1,4812945,9,4.16,4.16,20.00 -add,auto,2,2,1120106,9,17.88,17.86,20.04 -add,inplace,2,2,1659577,9,5.90,5.87,19.72 -add,kernel,2,2,8254972,9,2.40,2.35,19.74 -add,floor,2,2,1953132,9,10.22,10.20,19.98 -add,gmp,2,2,8824120,9,2.27,2.27,20.01 -add,gmpz,2,2,4799502,9,4.18,4.17,20.08 -add,auto,4,4,1102255,9,18.19,18.13,20.05 -add,inplace,4,4,1765912,9,5.65,5.62,19.94 -add,kernel,4,4,6466109,9,3.09,3.06,20.05 -add,floor,4,4,1818712,9,10.98,10.97,19.98 -add,gmp,4,4,7865830,9,2.54,2.53,19.96 -add,gmpz,4,4,4509246,9,4.43,4.42,19.98 -add,auto,8,8,1031264,9,19.39,19.30,19.98 -add,inplace,8,8,1351004,9,7.39,7.38,19.98 -add,kernel,8,8,4302421,9,4.69,4.61,20.26 -add,floor,8,8,1598256,9,12.51,12.51,20.01 -add,gmp,8,8,5424928,9,3.69,3.69,20.00 -add,gmpz,8,8,4285588,9,4.69,4.66,20.08 -add,auto,16,16,784501,9,25.51,25.34,20.01 -add,inplace,16,16,850347,9,11.80,11.74,20.08 -add,kernel,16,16,2613508,9,7.62,7.59,19.91 -add,floor,16,16,1282556,9,15.59,15.59,20.00 -add,gmp,16,16,3580698,9,5.58,5.57,19.98 -add,gmpz,16,16,2832543,9,7.05,7.01,19.97 -add,auto,64,64,311696,9,64.27,64.07,20.03 -add,inplace,64,64,252952,9,39.49,39.44,19.99 -add,kernel,64,64,602580,9,33.18,33.15,19.99 -add,floor,64,64,483332,9,41.10,40.93,19.90 -add,gmp,64,64,1286424,9,15.55,15.55,20.01 -add,gmpz,64,64,1148554,9,17.41,17.38,19.99 -add,auto,256,256,89266,9,224.08,224.03,20.00 -add,inplace,256,256,68155,9,146.15,146.05,19.94 -add,kernel,256,256,140336,9,142.54,142.48,20.05 -add,floor,256,256,125552,9,159.43,159.15,20.01 -add,gmp,256,256,255646,9,78.23,78.23,20.00 -add,gmpz,256,256,251550,9,79.50,79.40,19.99 -add,auto,1024,1024,23770,9,841.47,841.21,20.00 -add,inplace,1024,1024,17153,9,582.97,582.80,20.00 -add,kernel,1024,1024,34571,9,578.47,578.40,20.00 -add,floor,1024,1024,33649,9,594.59,594.28,20.07 -add,gmp,1024,1024,51184,9,390.63,390.59,19.99 -add,gmpz,1024,1024,51076,9,391.57,391.54,20.00 -add,auto,2000,2000,11623,9,1720.97,1720.62,20.00 -add,inplace,2000,2000,8805,9,1135.53,1135.48,20.00 -add,kernel,2000,2000,17671,9,1131.83,1131.78,20.00 -add,floor,2000,2000,17413,9,1149.07,1148.72,20.03 -add,gmp,2000,2000,41826,9,478.18,478.15,20.00 -add,gmpz,2000,2000,41351,9,483.62,482.07,20.03 -add,auto,1024,1,71303,9,280.71,280.25,20.02 -add,inplace,1024,1,17246,9,579.82,579.78,20.00 -add,kernel,1024,1,34620,9,577.73,577.72,20.00 -add,floor,1024,1,33680,9,593.80,593.53,20.00 -add,gmp,1024,1,85965,9,235.26,232.58,20.23 -add,gmpz,1024,1,82096,9,234.14,233.55,19.39 -sub,auto,1,1,2203163,9,9.17,9.14,20.18 -sub,inplace,1,1,2477976,9,4.03,4.01,19.96 -sub,kernel,1,1,13236356,9,1.51,1.51,20.00 -sub,floor,1,1,10492934,9,1.90,1.89,19.99 -sub,gmp,1,1,8823868,9,2.27,2.27,20.00 -sub,gmpz,1,1,4599855,9,4.34,4.34,20.02 -sub,auto,2,2,1044900,9,19.20,19.14,20.05 -sub,inplace,2,2,2134277,9,4.67,4.65,19.93 -sub,kernel,2,2,9625182,9,2.08,2.08,20.05 -sub,floor,2,2,1986250,9,10.02,10.01,19.90 -sub,gmp,2,2,8824213,9,2.27,2.27,20.06 -sub,gmpz,2,2,4580755,9,4.35,4.34,19.94 -sub,auto,4,4,1051713,9,18.91,18.88,19.89 -sub,inplace,4,4,1814388,9,5.48,5.46,19.88 -sub,kernel,4,4,7053025,9,2.86,2.83,20.14 -sub,floor,4,4,1847055,9,10.79,10.78,19.93 -sub,gmp,4,4,7996920,9,2.49,2.49,19.96 -sub,gmpz,4,4,4294965,9,4.65,4.63,19.96 -sub,auto,8,8,968675,9,20.56,20.43,19.90 -sub,inplace,8,8,1377786,9,7.27,7.25,20.02 -sub,kernel,8,8,4508705,9,4.40,4.37,19.81 -sub,floor,8,8,1610372,9,12.42,12.40,20.00 -sub,gmp,8,8,5436701,9,3.68,3.67,20.02 -sub,gmpz,8,8,3968649,9,5.04,5.01,20.04 -sub,auto,16,16,776060,9,25.69,25.20,19.87 -sub,inplace,16,16,933270,9,10.70,10.67,19.96 -sub,kernel,16,16,2491571,9,8.03,8.02,20.02 -sub,floor,16,16,1295886,9,15.46,15.42,20.05 -sub,gmp,16,16,3637199,9,5.50,5.50,20.07 -sub,gmpz,16,16,2936245,9,6.80,6.77,19.97 -sub,auto,64,64,304375,9,65.78,65.56,20.01 -sub,inplace,64,64,263693,9,38.00,37.82,20.03 -sub,kernel,64,64,607453,9,32.87,32.78,19.96 -sub,floor,64,64,470789,9,42.58,42.46,20.04 -sub,gmp,64,64,1294789,9,15.45,15.45,20.01 -sub,gmpz,64,64,1194695,9,16.74,16.71,20.01 -sub,auto,256,256,89448,9,223.62,223.51,20.00 -sub,inplace,256,256,68701,9,145.51,145.45,19.99 -sub,kernel,256,256,139963,9,142.85,142.83,20.00 -sub,floor,256,256,126388,9,158.27,158.09,20.00 -sub,gmp,256,256,254860,9,78.47,78.45,20.01 -sub,gmpz,256,256,250363,9,79.84,79.77,19.99 -sub,auto,1024,1024,23771,9,841.51,841.34,20.00 -sub,inplace,1024,1024,17185,9,581.54,581.41,20.03 -sub,kernel,1024,1024,34422,9,578.17,578.13,19.90 -sub,floor,1024,1024,33681,9,594.08,593.93,20.01 -sub,gmp,1024,1024,51234,9,390.36,390.35,20.00 -sub,gmpz,1024,1024,51049,9,391.78,391.74,20.00 -sub,auto,2000,2000,11463,9,1742.11,1741.83,19.97 -sub,inplace,2000,2000,8813,9,1134.72,1134.45,20.00 -sub,kernel,2000,2000,17673,9,1131.63,1131.61,20.00 -sub,floor,2000,2000,17407,9,1148.97,1148.81,20.02 -sub,gmp,2000,2000,42257,9,473.27,473.25,20.00 -sub,gmpz,2000,2000,42794,9,467.23,465.26,19.99 -sub,auto,1024,1,70705,9,283.13,282.44,20.01 -sub,inplace,1024,1,17254,9,579.68,579.62,20.01 -sub,kernel,1024,1,34676,9,576.77,576.76,20.00 -sub,floor,1024,1,33717,9,593.07,592.95,20.01 -sub,gmp,1024,1,85502,9,233.83,233.73,19.99 -sub,gmpz,1024,1,85470,9,234.24,233.71,20.01 -shl,auto,1,13,1193542,9,16.78,16.67,20.05 -shl,inplace,1,13,2436083,9,4.11,4.09,20.02 -shl,kernel,1,13,9626340,9,2.08,2.08,20.00 -shl,kernelip,1,13,5655714,9,1.75,1.72,19.80 -shl,floor,1,13,2077721,9,9.82,9.82,20.42 -shl,gmp,1,13,9626124,9,1.92,1.91,18.47 -shl,gmpz,1,13,5771342,9,3.47,3.47,20.00 -shl,auto,4,13,1065551,9,18.66,18.46,19.86 -shl,inplace,4,13,1907651,9,5.24,5.22,19.98 -shl,kernel,4,13,5776144,9,3.45,3.44,19.96 -shl,kernelip,4,13,3333734,9,3.00,2.96,20.00 -shl,floor,4,13,1731032,9,11.19,11.18,19.37 -shl,gmp,4,13,7991562,9,2.31,2.31,18.47 -shl,gmpz,4,13,4943605,9,4.04,4.04,20.00 -shl,auto,16,13,816084,9,24.51,24.36,20.02 -shl,inplace,16,13,1073560,9,9.27,9.25,19.93 -shl,kernel,16,13,2656354,9,7.46,7.43,19.87 -shl,kernelip,16,13,1382381,9,7.14,7.07,19.81 -shl,floor,16,13,1251380,9,15.22,15.21,19.05 -shl,gmp,16,13,4905110,9,4.05,4.05,19.98 -shl,gmpz,16,13,3441228,9,5.82,5.81,20.04 -shl,auto,256,13,148369,9,135.09,133.83,20.01 -shl,inplace,256,13,107540,9,93.05,92.88,20.02 -shl,kernel,256,13,210202,9,96.16,95.49,20.19 -shl,kernelip,256,13,102365,9,97.77,97.72,20.01 -shl,floor,256,13,174833,9,116.71,116.50,20.40 -shl,gmp,256,13,424067,9,47.30,47.05,20.05 -shl,gmpz,256,13,397681,9,50.30,49.97,19.99 -shl,auto,2000,13,21851,9,914.88,913.88,20.00 -shl,inplace,2000,13,15225,9,656.75,656.21,20.00 -shl,kernel,2000,13,27795,9,719.42,719.08,20.00 -shl,kernelip,2000,13,13980,9,715.35,715.32,20.01 -shl,floor,2000,13,27203,9,740.32,738.77,20.15 -shl,gmp,2000,13,59630,9,335.48,335.36,20.05 -shl,gmpz,2000,13,59075,9,338.59,338.13,20.01 -shl,auto,2000,77,18823,9,1065.06,1064.27,20.06 -shl,inplace,2000,77,13090,9,764.48,764.20,20.03 -shl,kernel,2000,77,23518,9,848.78,848.34,19.96 -shl,kernelip,2000,77,12164,9,822.72,822.18,20.02 -shl,floor,2000,77,22945,9,872.09,870.96,20.02 -shl,gmp,2000,77,58962,9,339.34,337.73,20.01 -shl,gmpz,2000,77,58554,9,341.87,340.54,20.01 -shr,auto,1,13,1949753,9,10.27,10.23,20.01 -shr,inplace,1,13,2683576,9,3.66,3.61,19.62 -shr,kernel,1,13,11752220,9,1.70,1.70,20.00 -shr,floor,1,13,8824106,9,2.27,2.27,20.01 -shr,gmp,1,13,10574625,9,1.90,1.90,20.12 -shr,gmpz,1,13,6109309,9,3.27,3.27,20.04 -shr,auto,4,13,949564,9,21.12,21.08,20.06 -shr,inplace,4,13,2106678,9,4.76,4.72,20.10 -shr,kernel,4,13,5637827,9,3.47,3.46,19.60 -shr,floor,4,13,1659019,9,12.05,12.01,19.98 -shr,gmp,4,13,8577967,9,2.32,2.31,19.98 -shr,gmpz,4,13,5060118,9,3.97,3.95,20.09 -shr,auto,16,13,768968,9,26.08,26.00,20.06 -shr,inplace,16,13,1124419,9,8.86,8.79,19.89 -shr,kernel,16,13,2449011,9,8.19,8.14,20.08 -shr,floor,16,13,1171912,9,17.17,17.08,20.11 -shr,gmp,16,13,4654159,9,4.33,4.30,20.09 -shr,gmpz,16,13,3212266,9,6.20,6.16,20.04 -shr,auto,256,13,143035,9,139.58,139.38,19.97 -shr,inplace,256,13,106623,9,93.72,93.56,20.02 -shr,kernel,256,13,181735,9,110.03,109.97,20.00 -shr,floor,256,13,152809,9,131.14,130.88,20.04 -shr,gmp,256,13,413843,9,48.14,47.98,19.94 -shr,gmpz,256,13,395089,9,50.75,50.64,20.05 -shr,auto,2000,13,21066,9,949.87,949.33,20.04 -shr,inplace,2000,13,15207,9,657.48,656.68,20.04 -shr,kernel,2000,13,24639,9,811.76,811.74,20.03 -shr,floor,2000,13,24032,9,832.11,831.64,20.00 -shr,gmp,2000,13,59550,9,336.05,335.79,20.02 -shr,gmpz,2000,13,59038,9,338.90,338.83,20.02 -shr,auto,2000,77,18450,9,1084.33,1083.64,20.00 -shr,inplace,2000,77,13072,9,764.97,764.67,20.00 -shr,kernel,2000,77,24050,9,831.63,831.60,20.00 -shr,floor,2000,77,23171,9,852.64,849.99,19.75 -shr,gmp,2000,77,59528,9,335.94,335.91,20.00 -shr,gmpz,2000,77,58848,9,339.29,339.23,19.97 -mul,auto,1,1,1037956,9,19.22,19.19,19.96 -mul,gmp,1,1,5894738,9,3.38,3.35,19.93 -mul,gmpz,1,1,4973157,9,4.03,4.01,20.03 -mul,auto,2,2,718980,9,27.88,27.84,20.05 -mul,kernel,2,2,2762040,9,7.62,7.57,21.05 -mul,floor,2,2,1303515,9,15.58,15.37,20.29 -mul,gmp,2,2,4995920,9,4.01,4.00,20.02 -mul,gmpz,2,2,3274110,9,6.15,6.11,20.21 -mul,auto,3,3,669958,9,29.55,29.42,19.82 -mul,kernel,3,3,2360874,9,9.02,8.97,21.28 -mul,floor,3,3,1205019,9,16.63,16.51,20.04 -mul,gmp,3,3,2523209,9,7.94,7.89,20.07 -mul,gmpz,3,3,1914699,9,10.17,10.08,19.52 -mul,auto,4,4,626397,9,31.98,31.89,20.04 -mul,kernel,4,4,1894971,9,11.10,11.08,21.05 -mul,floor,4,4,1071214,9,18.92,18.74,20.24 -mul,gmp,4,4,2055901,9,9.75,9.70,20.03 -mul,gmpz,4,4,1642512,9,12.17,12.12,20.01 -mul,auto,6,6,475240,9,42.06,41.94,20.05 -mul,kernel,6,6,1190106,9,17.51,17.48,20.84 -mul,floor,6,6,803842,9,24.87,24.74,19.98 -mul,gmp,6,6,1178026,9,16.93,16.83,19.95 -mul,gmpz,6,6,1080137,9,18.53,18.51,20.02 -mul,auto,8,8,424104,9,47.20,47.10,20.06 -mul,kernel,8,8,802418,9,25.53,25.44,20.49 -mul,floor,8,8,607843,9,32.82,32.66,19.94 -mul,gmp,8,8,736598,9,27.19,26.89,19.97 -mul,gmpz,8,8,688995,9,28.64,28.37,19.83 -mul,auto,12,12,284400,9,70.40,70.28,20.02 -mul,kernel,12,12,420608,9,48.09,48.06,20.23 -mul,floor,12,12,361657,9,55.36,55.26,20.02 -mul,gmp,12,12,407334,9,49.00,48.73,19.95 -mul,gmpz,12,12,391607,9,51.09,50.93,20.01 -mul,auto,16,16,196357,9,101.93,101.85,20.02 -mul,kernel,16,16,251794,9,80.04,79.90,20.16 -mul,floor,16,16,230679,9,87.12,86.79,20.09 -mul,gmp,16,16,243975,9,81.89,81.86,19.98 -mul,gmpz,16,16,237972,9,84.13,84.04,20.02 -mul,auto,32,32,93086,9,212.59,212.15,19.80 -mul,kernel,32,32,100556,9,206.70,206.38,20.79 -mul,floor,32,32,95391,9,209.25,208.81,19.96 -mul,gmp,32,32,68177,9,289.44,288.59,19.75 -mul,gmpz,32,32,71887,9,276.28,275.26,19.86 -mul,auto,64,64,36630,9,545.34,544.87,19.99 -mul,kernel,64,64,41121,9,481.44,480.98,19.80 -mul,floor,64,64,40528,9,493.35,493.07,20.00 -mul,gmp,64,64,22855,9,875.17,875.06,20.01 -mul,gmpz,64,64,22841,9,875.00,873.52,19.98 -mul,auto,128,128,11517,9,1736.25,1734.93,20.00 -mul,kernel,128,128,11692,9,1718.97,1717.61,20.10 -mul,floor,128,128,11630,9,1717.62,1715.69,19.98 -mul,gmp,128,128,7185,9,2784.27,2783.05,20.00 -mul,gmpz,128,128,7240,9,2753.55,2740.50,19.95 -mul,auto,256,256,3198,9,6255.27,6252.26,20.00 -mul,kernel,256,256,3248,9,6158.99,6149.77,20.05 -mul,floor,256,256,3208,9,6280.69,6237.44,20.16 -mul,gmp,256,256,2522,9,7931.56,7909.23,19.99 -mul,gmpz,256,256,2542,9,7827.88,7801.98,19.92 -mul,auto,512,512,1037,9,19258.28,19251.90,19.97 -mul,kernel,512,512,1034,9,19318.98,19293.60,19.98 -mul,floor,512,512,1033,9,19397.44,19370.98,20.03 -mul,gmp,512,512,942,9,21056.73,20929.28,19.84 -mul,gmpz,512,512,961,9,20887.13,20808.10,20.07 -mul,auto,1000,1000,334,9,59903.48,59786.63,20.00 -mul,kernel,1000,1000,337,9,59502.78,59440.44,20.05 -mul,floor,1000,1000,337,9,59433.75,59387.33,20.03 -mul,gmp,1000,1000,368,9,53898.88,53500.70,19.83 -mul,gmpz,1000,1000,375,9,53355.67,53317.70,20.05 -mul,auto,2000,2000,113,9,177088.93,176845.41,20.02 -mul,kernel,2000,2000,113,9,176229.81,176099.51,19.91 -mul,floor,2000,2000,114,9,176340.85,176200.80,20.10 -mul,gmp,2000,2000,138,9,144731.89,143916.88,19.95 -mul,gmpz,2000,2000,139,9,144044.93,143974.93,20.03 -mul,auto,2000,100,1111,9,18005.55,18001.95,20.01 -mul,kernel,2000,100,1134,9,17668.24,17650.53,20.05 -mul,floor,2000,100,1124,9,17992.16,17954.70,20.23 -mul,gmp,2000,100,549,9,36459.33,36400.37,20.05 -mul,gmpz,2000,100,551,9,36127.69,35865.32,19.89 -sqr,auto,4,4,598967,9,33.46,33.26,20.03 -sqr,kernel,4,4,2201559,9,9.10,9.04,20.02 -sqr,floor,4,4,1212725,9,16.92,16.90,20.53 -sqr,gmp,4,4,3465874,9,5.83,5.77,20.18 -sqr,gmpz,4,4,2253042,9,8.83,8.79,19.91 -sqr,auto,16,16,250862,9,79.65,79.43,19.98 -sqr,kernel,16,16,355620,9,56.23,56.21,20.00 -sqr,floor,16,16,320422,9,62.43,62.36,20.02 -sqr,gmp,16,16,393842,9,50.53,50.20,19.90 -sqr,gmpz,16,16,372040,9,53.67,53.39,19.96 -sqr,auto,64,64,64953,9,303.86,302.58,19.75 -sqr,kernel,64,64,74169,9,269.64,269.52,20.00 -sqr,floor,64,64,72729,9,279.68,279.44,20.35 -sqr,gmp,64,64,35224,9,567.49,567.35,19.99 -sqr,gmpz,64,64,35706,9,559.45,557.67,19.97 -sqr,auto,512,512,1887,9,10592.71,10588.35,19.99 -sqr,kernel,512,512,1900,9,10524.88,10508.61,19.99 -sqr,floor,512,512,1894,9,10544.52,10536.96,19.97 -sqr,gmp,512,512,1305,9,15135.58,15107.99,19.78 -sqr,gmpz,512,512,1326,9,15090.83,15083.42,20.01 -sqr,auto,2000,2000,203,9,98526.83,98492.61,20.00 -sqr,kernel,2000,2000,204,9,98034.91,98006.09,20.00 -sqr,floor,2000,2000,205,9,98075.98,98030.57,20.11 -sqr,gmp,2000,2000,197,9,100899.94,100824.92,19.88 -sqr,gmpz,2000,2000,199,9,100928.21,100904.75,20.11 -divrem,auto,2,1,468556,9,42.55,42.36,19.93 -divrem,kernel,2,1,3644365,9,5.49,5.46,20.06 -divrem,floor,2,1,1569637,9,12.78,12.75,20.06 -divrem,gmp,2,1,2305417,9,8.69,8.68,20.03 -divrem,gmpz,2,1,1501636,9,13.37,13.31,20.07 -divrem,auto,8,4,185705,9,107.40,107.22,19.96 -divrem,kernel,8,4,516334,9,38.77,38.46,20.01 -divrem,floor,8,4,364345,9,54.54,54.32,19.88 -divrem,gmp,8,4,502597,9,39.91,39.64,20.07 -divrem,gmpz,8,4,477428,9,41.57,41.22,19.84 -divrem,auto,32,16,53829,9,369.39,368.32,19.89 -divrem,kernel,32,16,69844,9,286.43,286.14,20.02 -divrem,floor,32,16,66109,9,302.80,302.49,20.02 -divrem,gmp,32,16,104056,9,191.83,191.30,19.96 -divrem,gmpz,32,16,102985,9,194.32,193.29,20.00 -divrem,auto,128,64,5955,9,3365.40,3361.91,20.05 -divrem,kernel,128,64,6211,9,3235.12,3219.56,20.09 -divrem,floor,128,64,6177,9,3252.24,3242.32,20.09 -divrem,gmp,128,64,11639,9,1718.91,1717.69,20.09 -divrem,gmpz,128,64,11570,9,1723.44,1722.76,19.94 -divrem,auto,512,256,672,9,29786.93,29780.91,20.02 -divrem,kernel,512,256,683,9,29310.67,29300.86,20.02 -divrem,floor,512,256,678,9,29499.21,29496.43,20.00 -divrem,gmp,512,256,1234,9,16221.24,16217.68,20.02 -divrem,gmpz,512,256,1228,9,16290.71,16288.62,20.00 -divrem,auto,2000,1000,109,9,185001.87,184956.48,20.17 -divrem,kernel,2000,1000,109,9,183946.38,183916.64,20.05 -divrem,floor,2000,1000,109,9,184058.09,183858.90,20.08 -divrem,gmp,2000,1000,146,9,137686.32,137648.83,20.10 -divrem,gmpz,2000,1000,146,9,137792.71,137779.16,20.12 -divrem,auto,4000,2000,42,9,479431.33,479152.98,20.14 -divrem,kernel,4000,2000,43,9,476192.93,476005.40,20.48 -divrem,floor,4000,2000,43,9,474277.47,474107.16,20.42 -divrem,gmp,4000,2000,59,9,339565.49,339095.27,20.04 -divrem,gmpz,4000,2000,59,9,340485.34,338375.59,20.06 -divrem,auto,2000,100,137,9,146258.18,145866.42,20.04 -divrem,kernel,2000,100,139,9,144432.29,143786.28,20.08 -divrem,floor,2000,100,139,9,144262.15,143932.67,20.05 -divrem,gmp,2000,100,276,9,72641.43,72621.92,20.05 -divrem,gmpz,2000,100,276,9,72569.93,72531.40,20.03 -divrem,auto,65536,1,103,9,194549.13,194326.86,20.06 -divrem,kernel,65536,1,120,9,167081.79,166830.23,20.05 -divrem,floor,65536,1,115,9,174707.16,174619.43,20.09 -divrem,gmp,65536,1,136,9,148099.18,148097.03,20.17 -divrem,gmpz,65536,1,136,9,148124.50,148114.92,20.15 -fromchars,auto,4,10,106036,9,188.07,187.57,19.96 -fromchars,kernel,4,10,533828,9,37.44,37.39,19.99 -fromchars,gmp,4,10,641095,9,31.34,31.23,20.10 -fromchars,gmpz,4,10,301552,9,66.77,66.05,20.11 -fromchars,auto,16,10,48055,9,418.48,412.57,20.07 -fromchars,kernel,16,10,95642,9,210.92,209.23,20.29 -fromchars,gmp,16,10,133583,9,150.00,149.04,20.08 -fromchars,gmpz,16,10,77537,9,259.17,258.63,20.15 -fromchars,auto,64,10,7010,9,2777.09,2674.13,19.40 -fromchars,kernel,64,10,9715,9,2122.69,1950.61,20.69 -fromchars,gmp,64,10,22955,9,870.88,870.34,19.99 -fromchars,gmpz,64,10,14781,9,1357.86,1353.76,20.06 -fromchars,auto,256,10,722,9,28160.62,27811.66,20.52 -fromchars,kernel,256,10,766,9,25722.01,25216.76,19.86 -fromchars,gmp,256,10,2498,9,8010.01,8004.23,20.01 -fromchars,gmpz,256,10,1996,9,10058.90,10032.56,20.08 -fromchars,auto,2000,10,47,9,430210.30,430011.45,20.22 -fromchars,kernel,2000,10,49,9,409096.69,409045.69,20.05 -fromchars,gmp,2000,10,108,9,184145.36,183354.11,19.88 -fromchars,gmpz,2000,10,101,9,198250.16,198050.49,20.03 diff --git a/tests/beman/big_int/perf/item1/x64_base64_seed2a.csv b/tests/beman/big_int/perf/item1/x64_base64_seed2a.csv deleted file mode 100644 index c0507b09..00000000 --- a/tests/beman/big_int/perf/item1/x64_base64_seed2a.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T17:05:00Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2359151,9,8.22,8.19,19.41 -add,inplace,1,1,2422283,9,4.13,4.11,20.13 -add,kernel,1,1,10573240,9,1.89,1.89,19.99 -add,floor,1,1,2034753,9,9.88,9.83,20.09 -add,gmp,1,1,8820402,9,2.27,2.27,20.00 -add,gmpz,1,1,4812281,9,4.16,4.16,20.00 -add,auto,2,2,1123682,9,17.84,17.78,20.07 -add,inplace,2,2,1686103,9,5.89,5.85,19.86 -add,kernel,2,2,8433302,9,2.37,2.34,19.98 -add,floor,2,2,1961254,9,10.23,10.20,20.06 -add,gmp,2,2,8824171,9,2.27,2.27,20.01 -add,gmpz,2,2,4813000,9,4.16,4.16,20.01 -add,auto,4,4,1111069,9,18.10,18.04,20.12 -add,inplace,4,4,1768930,9,5.64,5.63,19.99 -add,kernel,4,4,6581746,9,3.09,3.07,20.39 -add,floor,4,4,1820826,9,10.97,10.97,19.99 -add,gmp,4,4,7981769,9,2.50,2.50,19.97 -add,gmpz,4,4,4576869,9,4.37,4.35,20.00 -add,auto,8,8,996945,9,20.02,19.90,19.99 -add,inplace,8,8,1347147,9,7.36,7.33,19.82 -add,kernel,8,8,4375319,9,4.59,4.53,20.05 -add,floor,8,8,1596188,9,12.51,12.50,19.98 -add,gmp,8,8,5424300,9,3.69,3.69,20.00 -add,gmpz,8,8,4172017,9,4.80,4.79,20.01 -add,auto,16,16,798414,9,25.26,24.69,20.17 -add,inplace,16,16,853111,9,11.74,11.70,20.05 -add,kernel,16,16,2647202,9,7.56,7.56,20.01 -add,floor,16,16,1283423,9,15.55,15.51,19.96 -add,gmp,16,16,3157531,9,6.32,6.32,19.97 -add,gmpz,16,16,3065864,9,6.52,6.48,19.99 -add,auto,64,64,309917,9,63.60,63.46,19.72 -add,inplace,64,64,255961,9,39.05,38.79,19.97 -add,kernel,64,64,602612,9,33.23,33.14,20.04 -add,floor,64,64,491392,9,41.28,40.58,20.20 -add,gmp,64,64,1294678,9,15.45,15.45,20.03 -add,gmpz,64,64,1212731,9,16.49,16.46,20.00 -add,auto,256,256,89534,9,223.48,223.33,20.01 -add,inplace,256,256,68692,9,145.54,145.51,20.00 -add,kernel,256,256,140295,9,142.53,142.52,20.00 -add,floor,256,256,126100,9,158.80,158.67,20.04 -add,gmp,256,256,255647,9,78.23,78.23,20.01 -add,gmpz,256,256,248180,9,80.59,80.49,20.00 -add,auto,1024,1024,23772,9,841.24,841.03,20.00 -add,inplace,1024,1024,17150,9,582.93,582.89,19.99 -add,kernel,1024,1024,34581,9,578.47,578.37,20.01 -add,floor,1024,1024,33657,9,594.19,594.09,20.00 -add,gmp,1024,1024,51193,9,390.42,390.40,19.99 -add,gmpz,1024,1024,51090,9,391.36,391.33,19.99 -add,auto,2000,2000,11635,9,1718.98,1718.62,20.00 -add,inplace,2000,2000,8811,9,1135.00,1134.88,20.02 -add,kernel,2000,2000,17651,9,1133.09,1133.04,20.00 -add,floor,2000,2000,17401,9,1149.84,1149.17,20.06 -add,gmp,2000,2000,41892,9,477.47,477.46,20.01 -add,gmpz,2000,2000,41859,9,475.61,473.79,19.89 -add,auto,1024,1,71312,9,280.42,279.93,20.00 -add,inplace,1024,1,17247,9,579.73,579.65,20.00 -add,kernel,1024,1,34620,9,577.70,577.69,20.00 -add,floor,1024,1,33700,9,593.50,593.46,20.00 -add,gmp,1024,1,86133,9,232.62,232.59,20.04 -add,gmpz,1024,1,85452,9,234.11,233.72,20.01 -sub,auto,1,1,2224347,9,8.99,8.96,20.04 -sub,inplace,1,1,2521090,9,3.98,3.97,20.07 -sub,kernel,1,1,13236310,9,1.51,1.51,20.02 -sub,floor,1,1,10533250,9,1.89,1.89,19.99 -sub,gmp,1,1,8824254,9,2.27,2.27,20.00 -sub,gmpz,1,1,4602645,9,4.35,4.34,20.03 -sub,auto,2,2,1050016,9,19.00,18.91,19.95 -sub,inplace,2,2,2159980,9,4.61,4.59,19.92 -sub,kernel,2,2,9506553,9,2.10,2.08,19.86 -sub,floor,2,2,2006495,9,9.99,9.98,20.06 -sub,gmp,2,2,8824213,9,2.27,2.27,20.00 -sub,gmpz,2,2,4590479,9,4.34,4.34,19.95 -sub,auto,4,4,1057080,9,18.96,18.89,20.04 -sub,inplace,4,4,1835387,9,5.45,5.42,20.01 -sub,kernel,4,4,6983660,9,2.88,2.83,20.12 -sub,floor,4,4,1855804,9,10.78,10.76,20.02 -sub,gmp,4,4,8045446,9,2.49,2.49,20.02 -sub,gmpz,4,4,4279320,9,4.63,4.60,19.84 -sub,auto,8,8,966859,9,20.61,20.57,19.94 -sub,inplace,8,8,1378918,9,7.24,7.20,19.95 -sub,kernel,8,8,4572732,9,4.36,4.35,19.99 -sub,floor,8,8,1611385,9,12.42,12.36,20.01 -sub,gmp,8,8,5417149,9,3.68,3.68,19.96 -sub,gmpz,8,8,4029078,9,4.99,4.94,20.12 -sub,auto,16,16,782511,9,25.88,25.41,20.22 -sub,inplace,16,16,941081,9,10.60,10.53,19.94 -sub,kernel,16,16,2491259,9,8.02,8.02,19.98 -sub,floor,16,16,1303436,9,15.40,15.34,20.06 -sub,gmp,16,16,3635841,9,5.50,5.50,20.00 -sub,gmpz,16,16,2932764,9,6.80,6.74,19.94 -sub,auto,64,64,298665,9,66.92,66.80,19.99 -sub,inplace,64,64,263361,9,37.94,37.87,19.98 -sub,kernel,64,64,608405,9,32.92,32.85,20.03 -sub,floor,64,64,472230,9,42.11,42.06,19.88 -sub,gmp,64,64,1275563,9,15.68,15.68,20.00 -sub,gmpz,64,64,1194689,9,16.74,16.71,20.00 -sub,auto,256,256,89104,9,224.46,224.27,20.00 -sub,inplace,256,256,68787,9,145.44,145.35,20.02 -sub,kernel,256,256,139994,9,142.85,142.81,20.00 -sub,floor,256,256,125891,9,158.45,158.38,19.95 -sub,gmp,256,256,255653,9,78.23,78.22,20.02 -sub,gmpz,256,256,250382,9,79.86,79.73,20.01 -sub,auto,1024,1024,23760,9,841.57,841.38,20.00 -sub,inplace,1024,1024,17191,9,581.77,581.74,20.00 -sub,kernel,1024,1024,34592,9,578.20,578.16,20.00 -sub,floor,1024,1024,33662,9,594.52,593.70,20.01 -sub,gmp,1024,1024,51305,9,389.83,389.83,20.00 -sub,gmpz,1024,1024,51126,9,391.21,391.17,20.00 -sub,auto,2000,2000,11483,9,1741.80,1741.55,20.00 -sub,inplace,2000,2000,8811,9,1134.20,1133.90,19.99 -sub,kernel,2000,2000,17668,9,1132.05,1132.03,20.00 -sub,floor,2000,2000,17403,9,1149.30,1148.84,20.00 -sub,gmp,2000,2000,41486,9,482.11,481.81,20.00 -sub,gmpz,2000,2000,41340,9,483.82,482.33,20.00 -sub,auto,1024,1,70700,9,283.09,282.89,20.03 -sub,inplace,1024,1,17229,9,580.38,580.29,20.01 -sub,kernel,1024,1,34676,9,576.78,576.77,20.00 -sub,floor,1024,1,33725,9,593.11,592.90,20.04 -sub,gmp,1024,1,85888,9,232.86,232.74,20.01 -sub,gmpz,1024,1,85470,9,233.96,233.53,19.99 -shl,auto,1,13,1200118,9,16.73,16.63,20.07 -shl,inplace,1,13,2429217,9,4.08,4.05,19.87 -shl,kernel,1,13,9626563,9,2.08,2.07,20.00 -shl,kernelip,1,13,5787824,9,1.75,1.71,20.25 -shl,floor,1,13,2078504,9,9.82,9.82,20.42 -shl,gmp,1,13,9624727,9,1.89,1.89,18.20 -shl,gmpz,1,13,5775418,9,3.47,3.47,20.02 -shl,auto,4,13,1065382,9,18.72,18.69,19.95 -shl,inplace,4,13,1928787,9,5.16,5.13,19.93 -shl,kernel,4,13,5740740,9,3.45,3.44,19.87 -shl,kernelip,4,13,3424045,9,2.95,2.92,20.20 -shl,floor,4,13,1705072,9,11.33,11.32,19.33 -shl,gmp,4,13,7991650,9,2.31,2.31,18.48 -shl,gmpz,4,13,4946861,9,4.04,4.04,20.01 -shl,auto,16,13,818532,9,24.48,24.34,20.06 -shl,inplace,16,13,1082624,9,9.24,9.20,20.01 -shl,kernel,16,13,2687778,9,7.45,7.44,20.05 -shl,kernelip,16,13,1367700,9,7.28,7.16,19.86 -shl,floor,16,13,1251785,9,15.23,15.21,19.06 -shl,gmp,16,13,4411253,9,4.50,4.49,19.88 -shl,gmpz,16,13,3399920,9,5.82,5.81,19.84 -shl,auto,256,13,149192,9,135.42,133.98,20.16 -shl,inplace,256,13,107642,9,93.18,92.94,20.06 -shl,kernel,256,13,214454,9,93.16,93.07,19.99 -shl,kernelip,256,13,102322,9,97.74,97.73,20.01 -shl,floor,256,13,179680,9,116.42,116.33,20.92 -shl,gmp,256,13,424044,9,47.24,47.14,20.03 -shl,gmpz,256,13,398050,9,50.29,50.18,20.02 -shl,auto,2000,13,21781,9,917.29,915.51,19.99 -shl,inplace,2000,13,15160,9,657.05,656.35,19.92 -shl,kernel,2000,13,27754,9,719.97,719.77,20.03 -shl,kernelip,2000,13,13980,9,715.36,715.33,20.02 -shl,floor,2000,13,27179,9,739.67,739.56,20.11 -shl,gmp,2000,13,59630,9,335.52,335.30,20.01 -shl,gmpz,2000,13,59089,9,338.59,338.42,20.01 -shl,auto,2000,77,18773,9,1066.07,1063.97,20.01 -shl,inplace,2000,77,13088,9,764.56,764.06,20.02 -shl,kernel,2000,77,23495,9,849.02,848.37,19.95 -shl,kernelip,2000,77,12161,9,822.60,822.08,20.01 -shl,floor,2000,77,22976,9,873.56,872.29,20.08 -shl,gmp,2000,77,59203,9,337.72,337.72,20.00 -shl,gmpz,2000,77,59107,9,338.40,338.36,20.00 -shr,auto,1,13,1976629,9,10.12,10.03,20.01 -shr,inplace,1,13,2736620,9,3.66,3.62,19.99 -shr,kernel,1,13,11754485,9,1.70,1.70,20.00 -shr,floor,1,13,8824113,9,2.27,2.27,20.01 -shr,gmp,1,13,10589081,9,1.89,1.89,20.01 -shr,gmpz,1,13,6107744,9,3.27,3.27,20.02 -shr,auto,4,13,944289,9,21.04,20.96,19.89 -shr,inplace,4,13,2126170,9,4.72,4.66,20.05 -shr,kernel,4,13,5755541,9,3.46,3.46,19.97 -shr,floor,4,13,1667662,9,11.96,11.94,19.96 -shr,gmp,4,13,8622473,9,2.33,2.31,20.09 -shr,gmpz,4,13,4732002,9,4.26,4.14,20.14 -shr,auto,16,13,773063,9,26.03,25.79,20.10 -shr,inplace,16,13,1144946,9,8.79,8.75,20.12 -shr,kernel,16,13,2473372,9,8.14,8.05,20.11 -shr,floor,16,13,1169712,9,17.02,17.00,19.92 -shr,gmp,16,13,4653866,9,4.33,4.30,20.12 -shr,gmpz,16,13,3250789,9,6.17,6.15,20.04 -shr,auto,256,13,144821,9,137.54,136.55,19.93 -shr,inplace,256,13,106647,9,93.74,93.59,19.99 -shr,kernel,256,13,181826,9,110.18,109.95,20.05 -shr,floor,256,13,152350,9,131.32,130.94,20.01 -shr,gmp,256,13,415884,9,48.09,47.94,19.99 -shr,gmpz,256,13,394775,9,50.66,50.56,19.99 -shr,auto,2000,13,21064,9,950.50,947.61,20.01 -shr,inplace,2000,13,15228,9,656.89,656.73,20.01 -shr,kernel,2000,13,24636,9,811.84,811.82,20.00 -shr,floor,2000,13,24057,9,831.60,831.51,20.01 -shr,gmp,2000,13,59540,9,335.95,335.90,20.01 -shr,gmpz,2000,13,59008,9,339.07,338.84,20.01 -shr,auto,2000,77,18376,9,1085.31,1084.55,19.94 -shr,inplace,2000,77,13067,9,764.89,764.55,19.99 -shr,kernel,2000,77,24094,9,830.10,830.07,20.00 -shr,floor,2000,77,23416,9,854.23,853.91,20.00 -shr,gmp,2000,77,59536,9,335.93,335.91,20.00 -shr,gmpz,2000,77,58945,9,339.24,339.17,20.00 -mul,auto,1,1,1041808,9,19.24,19.14,20.02 -mul,gmp,1,1,5905070,9,3.39,3.37,20.03 -mul,gmpz,1,1,5041858,9,3.98,3.97,20.06 -mul,auto,2,2,716404,9,27.98,27.81,20.11 -mul,kernel,2,2,2793327,9,7.61,7.56,21.25 -mul,floor,2,2,1331470,9,15.44,15.24,20.53 -mul,gmp,2,2,5178930,9,3.84,3.82,19.90 -mul,gmpz,2,2,3275671,9,6.14,6.08,20.12 -mul,auto,3,3,678754,9,29.64,29.57,20.14 -mul,kernel,3,3,2335504,9,9.03,8.99,21.11 -mul,floor,3,3,1214437,9,16.72,16.58,20.31 -mul,gmp,3,3,2543228,9,7.83,7.77,19.90 -mul,gmpz,3,3,2002600,9,10.01,9.98,20.05 -mul,auto,4,4,626537,9,31.94,31.78,20.03 -mul,kernel,4,4,1890698,9,11.13,11.10,21.25 -mul,floor,4,4,1065569,9,18.81,18.66,20.06 -mul,gmp,4,4,2060062,9,9.70,9.66,19.96 -mul,gmpz,4,4,1646866,9,12.21,12.14,20.10 -mul,auto,6,6,474390,9,41.96,41.66,19.91 -mul,kernel,6,6,1193055,9,17.50,17.48,20.88 -mul,floor,6,6,794463,9,24.92,24.82,19.79 -mul,gmp,6,6,1262950,9,15.77,15.70,19.93 -mul,gmpz,6,6,1102425,9,18.18,18.15,20.05 -mul,auto,8,8,424839,9,47.13,47.09,20.04 -mul,kernel,8,8,808116,9,25.55,25.44,20.66 -mul,floor,8,8,604394,9,32.83,32.77,19.85 -mul,gmp,8,8,734992,9,27.13,26.93,19.97 -mul,gmpz,8,8,697821,9,29.01,28.74,20.23 -mul,auto,12,12,286002,9,70.16,70.03,20.07 -mul,kernel,12,12,423137,9,47.63,47.50,20.16 -mul,floor,12,12,354978,9,56.60,56.43,20.09 -mul,gmp,12,12,412039,9,48.55,48.54,20.01 -mul,gmpz,12,12,393945,9,50.76,50.74,19.99 -mul,auto,16,16,198463,9,101.26,100.98,20.11 -mul,kernel,16,16,254349,9,79.39,79.12,20.19 -mul,floor,16,16,227057,9,88.67,88.44,20.15 -mul,gmp,16,16,244255,9,81.88,81.82,20.01 -mul,gmpz,16,16,237532,9,84.07,84.00,19.97 -mul,auto,32,32,93597,9,213.19,212.84,19.96 -mul,kernel,32,32,107056,9,186.88,186.14,20.02 -mul,floor,32,32,101761,9,196.73,196.46,20.02 -mul,gmp,32,32,72964,9,273.55,271.17,19.94 -mul,gmpz,32,32,73212,9,274.02,273.09,20.05 -mul,auto,64,64,38939,9,513.64,512.96,20.00 -mul,kernel,64,64,41284,9,483.01,482.28,19.94 -mul,floor,64,64,40694,9,491.79,490.69,20.01 -mul,gmp,64,64,22938,9,871.41,866.72,19.98 -mul,gmpz,64,64,23240,9,863.03,861.87,20.08 -mul,auto,128,128,11477,9,1741.78,1740.83,19.99 -mul,kernel,128,128,11757,9,1695.42,1693.51,19.93 -mul,floor,128,128,11715,9,1707.01,1704.63,20.02 -mul,gmp,128,128,7204,9,2772.38,2760.20,19.96 -mul,gmpz,128,128,7330,9,2711.77,2710.75,19.92 -mul,auto,256,256,3199,9,6253.34,6251.69,20.04 -mul,kernel,256,256,3234,9,6187.47,6177.15,20.03 -mul,floor,256,256,3232,9,6191.79,6186.73,20.02 -mul,gmp,256,256,2513,9,7920.35,7821.48,19.86 -mul,gmpz,256,256,2551,9,7812.84,7808.88,19.93 -mul,auto,512,512,1027,9,19454.86,19438.39,20.00 -mul,kernel,512,512,1037,9,19458.92,19439.41,20.18 -mul,floor,512,512,1030,9,19369.81,19350.34,19.95 -mul,gmp,512,512,949,9,20822.78,20816.63,19.83 -mul,gmpz,512,512,961,9,20819.61,20807.72,20.01 -mul,auto,1000,1000,334,9,59890.52,59779.84,20.03 -mul,kernel,1000,1000,335,9,59749.07,59651.79,20.01 -mul,floor,1000,1000,334,9,59858.13,59815.06,19.99 -mul,gmp,1000,1000,372,9,53341.16,53332.78,19.86 -mul,gmpz,1000,1000,376,9,53290.15,53260.01,20.04 -mul,auto,2000,2000,113,9,177034.65,176809.73,20.00 -mul,kernel,2000,2000,113,9,176902.01,176757.52,20.00 -mul,floor,2000,2000,114,9,176984.02,176874.36,20.18 -mul,gmp,2000,2000,139,9,144127.15,144105.26,20.04 -mul,gmpz,2000,2000,139,9,144147.10,144113.55,20.04 -mul,auto,2000,100,1123,9,17822.86,17816.10,20.02 -mul,kernel,2000,100,1133,9,17651.41,17637.08,20.00 -mul,floor,2000,100,1132,9,17671.11,17663.70,20.01 -mul,gmp,2000,100,544,9,36667.62,36308.30,19.92 -mul,gmpz,2000,100,557,9,35924.80,35886.29,20.01 -sqr,auto,4,4,598485,9,33.32,33.24,19.95 -sqr,kernel,4,4,2200226,9,9.08,9.03,20.01 -sqr,floor,4,4,1217034,9,16.91,16.90,20.59 -sqr,gmp,4,4,3434726,9,5.81,5.77,19.95 -sqr,gmpz,4,4,2263755,9,8.83,8.79,20.02 -sqr,auto,16,16,250695,9,79.76,79.67,19.99 -sqr,kernel,16,16,355849,9,56.26,56.24,20.02 -sqr,floor,16,16,320141,9,65.01,64.90,20.83 -sqr,gmp,16,16,394430,9,50.07,49.80,19.77 -sqr,gmpz,16,16,383949,9,52.10,52.07,20.01 -sqr,auto,64,64,67139,9,298.38,298.13,20.04 -sqr,kernel,64,64,74228,9,269.36,269.27,20.00 -sqr,floor,64,64,72588,9,279.97,279.53,20.32 -sqr,gmp,64,64,35738,9,558.04,553.25,19.90 -sqr,gmpz,64,64,35975,9,551.05,550.10,19.82 -sqr,auto,512,512,1879,9,10648.57,10635.50,20.00 -sqr,kernel,512,512,1901,9,10524.08,10512.16,20.01 -sqr,floor,512,512,1900,9,10529.98,10524.46,20.01 -sqr,gmp,512,512,1321,9,15092.44,15071.88,19.95 -sqr,gmpz,512,512,1329,9,15052.51,15044.80,20.00 -sqr,auto,2000,2000,202,9,99302.71,99271.97,20.06 -sqr,kernel,2000,2000,200,9,100172.99,100134.62,20.04 -sqr,floor,2000,2000,201,9,98851.67,98817.61,19.87 -sqr,gmp,2000,2000,199,9,100614.38,100552.36,20.02 -sqr,gmpz,2000,2000,199,9,100648.35,100601.37,20.06 -divrem,auto,2,1,490147,9,40.66,40.47,19.94 -divrem,kernel,2,1,3680899,9,5.49,5.45,20.20 -divrem,floor,2,1,1567747,9,12.77,12.75,20.02 -divrem,gmp,2,1,2984635,9,6.70,6.69,19.99 -divrem,gmpz,2,1,1721630,9,11.66,11.64,20.09 -divrem,auto,8,4,169812,9,117.96,117.51,20.05 -divrem,kernel,8,4,408755,9,49.20,48.97,20.13 -divrem,floor,8,4,305951,9,64.41,64.19,19.71 -divrem,gmp,8,4,457976,9,43.79,43.59,20.05 -divrem,gmpz,8,4,435444,9,46.04,45.92,20.06 -divrem,auto,32,16,54141,9,369.33,368.52,19.98 -divrem,kernel,32,16,68957,9,289.44,289.05,19.96 -divrem,floor,32,16,65395,9,305.49,305.19,19.98 -divrem,gmp,32,16,105500,9,189.77,189.42,20.02 -divrem,gmpz,32,16,104357,9,191.86,191.17,20.01 -divrem,auto,128,64,5944,9,3363.95,3362.83,20.03 -divrem,kernel,128,64,6113,9,3273.48,3271.22,20.04 -divrem,floor,128,64,6223,9,3227.11,3213.36,20.08 -divrem,gmp,128,64,11397,9,1753.65,1752.24,19.99 -divrem,gmpz,128,64,11472,9,1742.78,1742.10,20.01 -divrem,auto,512,256,684,9,29252.91,29246.59,20.02 -divrem,kernel,512,256,683,9,29297.13,29292.21,20.01 -divrem,floor,512,256,691,9,28978.98,28974.77,20.03 -divrem,gmp,512,256,1235,9,16202.80,16199.79,20.01 -divrem,gmpz,512,256,1230,9,16270.13,16268.47,20.03 -divrem,auto,2000,1000,107,9,187435.69,187301.74,20.05 -divrem,kernel,2000,1000,108,9,185227.57,185157.50,20.02 -divrem,floor,2000,1000,109,9,185270.89,185190.63,20.20 -divrem,gmp,2000,1000,145,9,137925.31,137904.96,20.00 -divrem,gmpz,2000,1000,145,9,138219.70,138182.87,20.04 -divrem,auto,4000,2000,42,9,477168.19,476820.69,20.04 -divrem,kernel,4000,2000,43,9,473856.19,473687.84,20.38 -divrem,floor,4000,2000,43,9,475118.14,474838.26,20.48 -divrem,gmp,4000,2000,60,9,335223.13,333648.22,20.13 -divrem,gmpz,4000,2000,60,9,333713.30,332778.80,20.02 -divrem,auto,2000,100,138,9,144275.32,143938.88,19.93 -divrem,kernel,2000,100,141,9,142468.21,141934.38,20.09 -divrem,floor,2000,100,140,9,142597.98,142160.33,19.95 -divrem,gmp,2000,100,278,9,72089.49,72044.03,20.05 -divrem,gmpz,2000,100,278,9,72002.23,71982.26,20.02 -divrem,auto,65536,1,103,9,193720.34,192795.80,19.95 -divrem,kernel,65536,1,120,9,167109.40,166939.00,20.06 -divrem,floor,65536,1,115,9,174724.22,174539.67,20.09 -divrem,gmp,65536,1,136,9,148107.83,148099.99,20.16 -divrem,gmpz,65536,1,136,9,148120.68,148108.96,20.14 -fromchars,auto,4,10,99601,9,200.82,199.81,19.99 -fromchars,kernel,4,10,447899,9,44.58,44.44,19.96 -fromchars,gmp,4,10,626322,9,31.98,31.90,20.04 -fromchars,gmpz,4,10,283389,9,69.55,69.00,19.71 -fromchars,auto,16,10,47587,9,422.60,420.05,20.13 -fromchars,kernel,16,10,93656,9,213.61,207.96,19.96 -fromchars,gmp,16,10,162377,9,123.36,123.07,20.05 -fromchars,gmpz,16,10,78382,9,254.98,254.40,20.02 -fromchars,auto,64,10,7275,9,2764.03,2632.03,20.05 -fromchars,kernel,64,10,9572,9,2159.31,2041.52,20.61 -fromchars,gmp,64,10,21521,9,929.05,928.89,19.99 -fromchars,gmpz,64,10,14394,9,1386.55,1386.10,19.96 -fromchars,auto,256,10,685,9,28716.15,28336.36,19.74 -fromchars,kernel,256,10,788,9,25740.07,24961.87,20.33 -fromchars,gmp,256,10,2497,9,8015.09,8011.11,20.02 -fromchars,gmpz,256,10,2008,9,9964.89,9960.87,20.01 -fromchars,auto,2000,10,47,9,429370.66,427809.00,20.17 -fromchars,kernel,2000,10,49,9,409108.41,408644.47,20.04 -fromchars,gmp,2000,10,110,9,182436.67,182391.26,20.07 -fromchars,gmpz,2000,10,102,9,197431.94,197345.74,20.14 diff --git a/tests/beman/big_int/perf/item1/x64_base64_seed2b.csv b/tests/beman/big_int/perf/item1/x64_base64_seed2b.csv deleted file mode 100644 index a2340c8c..00000000 --- a/tests/beman/big_int/perf/item1/x64_base64_seed2b.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T17:07:57Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2435312,9,8.23,8.17,20.05 -add,inplace,1,1,2451932,9,4.10,4.08,20.11 -add,kernel,1,1,10589067,9,1.89,1.89,20.00 -add,floor,1,1,2037201,9,9.84,9.81,20.08 -add,gmp,1,1,8823833,9,2.27,2.27,20.00 -add,gmpz,1,1,4812862,9,4.16,4.16,20.00 -add,auto,2,2,1124193,9,17.81,17.77,20.03 -add,inplace,2,2,1698835,9,5.83,5.78,19.80 -add,kernel,2,2,8267968,9,2.37,2.34,19.58 -add,floor,2,2,1976466,9,10.20,10.16,20.18 -add,gmp,2,2,8823929,9,2.27,2.27,20.00 -add,gmpz,2,2,4812442,9,4.16,4.16,20.00 -add,auto,4,4,1084534,9,18.48,18.42,20.06 -add,inplace,4,4,1777842,9,5.58,5.55,19.88 -add,kernel,4,4,6569956,9,3.06,3.02,20.17 -add,floor,4,4,1823094,9,10.97,10.96,20.04 -add,gmp,4,4,8007912,9,2.50,2.50,20.00 -add,gmpz,4,4,4518634,9,4.40,4.38,19.87 -add,auto,8,8,1027905,9,19.45,19.15,19.94 -add,inplace,8,8,1330997,9,7.45,7.39,19.84 -add,kernel,8,8,4403097,9,4.55,4.53,20.12 -add,floor,8,8,1605198,9,12.44,12.39,19.97 -add,gmp,8,8,5425228,9,3.69,3.69,20.01 -add,gmpz,8,8,4296241,9,4.67,4.66,20.08 -add,auto,16,16,806148,9,25.26,25.04,20.36 -add,inplace,16,16,852453,9,11.74,11.67,20.01 -add,kernel,16,16,2644688,9,7.56,7.56,19.99 -add,floor,16,16,1299252,9,15.44,15.39,20.06 -add,gmp,16,16,3635820,9,5.50,5.49,20.00 -add,gmpz,16,16,3079870,9,6.51,6.48,20.09 -add,auto,64,64,315276,9,63.54,63.27,20.05 -add,inplace,64,64,256690,9,39.06,38.77,20.07 -add,kernel,64,64,594527,9,33.62,33.59,20.00 -add,floor,64,64,479476,9,41.63,41.34,19.95 -add,gmp,64,64,1294815,9,15.45,15.45,20.00 -add,gmpz,64,64,1212649,9,16.49,16.46,19.99 -add,auto,256,256,88494,9,225.75,225.66,19.98 -add,inplace,256,256,68593,9,145.75,145.73,20.00 -add,kernel,256,256,140320,9,142.56,142.47,20.00 -add,floor,256,256,125938,9,158.74,158.53,20.00 -add,gmp,256,256,255632,9,78.23,78.23,20.01 -add,gmpz,256,256,250253,9,79.54,79.45,19.92 -add,auto,1024,1024,23729,9,842.87,842.70,20.00 -add,inplace,1024,1024,17122,9,583.94,583.92,20.00 -add,kernel,1024,1024,34569,9,578.40,578.24,20.02 -add,floor,1024,1024,33613,9,594.19,594.03,19.97 -add,gmp,1024,1024,51222,9,390.47,390.46,20.00 -add,gmpz,1024,1024,51066,9,391.68,391.66,20.00 -add,auto,2000,2000,11619,9,1721.42,1721.08,20.04 -add,inplace,2000,2000,8806,9,1133.96,1133.86,19.97 -add,kernel,2000,2000,17663,9,1132.36,1132.29,20.00 -add,floor,2000,2000,17379,9,1150.73,1150.53,20.00 -add,gmp,2000,2000,43536,9,459.10,459.08,20.00 -add,gmpz,2000,2000,42118,9,474.87,473.16,19.99 -add,auto,1024,1,71214,9,281.00,280.83,20.02 -add,inplace,1024,1,17244,9,579.89,579.84,20.01 -add,kernel,1024,1,34621,9,577.70,577.69,20.00 -add,floor,1024,1,33681,9,593.73,593.65,20.00 -add,gmp,1024,1,85910,9,232.76,232.74,20.00 -add,gmpz,1024,1,85460,9,233.99,233.61,19.99 -sub,auto,1,1,2215750,9,9.01,8.97,19.98 -sub,inplace,1,1,2521100,9,3.97,3.97,20.03 -sub,kernel,1,1,13236154,9,1.51,1.51,20.00 -sub,floor,1,1,10540263,9,1.90,1.89,20.05 -sub,gmp,1,1,8823183,9,2.27,2.27,20.00 -sub,gmpz,1,1,4603308,9,4.36,4.34,20.07 -sub,auto,2,2,1058713,9,18.91,18.80,20.01 -sub,inplace,2,2,2194574,9,4.59,4.56,20.14 -sub,kernel,2,2,9625449,9,2.10,2.08,20.16 -sub,floor,2,2,2034326,9,9.93,9.90,20.21 -sub,gmp,2,2,8824140,9,2.27,2.27,20.00 -sub,gmpz,2,2,4603804,9,4.34,4.34,20.02 -sub,auto,4,4,1056137,9,18.98,18.88,20.03 -sub,inplace,4,4,1848117,9,5.40,5.38,20.00 -sub,kernel,4,4,6867101,9,2.89,2.83,19.88 -sub,floor,4,4,1878405,9,10.74,10.66,20.16 -sub,gmp,4,4,8018131,9,2.49,2.49,19.97 -sub,gmpz,4,4,4326279,9,4.61,4.57,19.90 -sub,auto,8,8,967233,9,20.57,20.45,19.90 -sub,inplace,8,8,1392103,9,7.17,7.13,19.97 -sub,kernel,8,8,4582337,9,4.36,4.35,19.98 -sub,floor,8,8,1611017,9,12.36,12.33,19.94 -sub,gmp,8,8,5405283,9,3.68,3.68,19.90 -sub,gmpz,8,8,4027731,9,4.96,4.94,19.98 -sub,auto,16,16,771377,9,25.88,25.72,20.01 -sub,inplace,16,16,731215,9,13.68,13.67,20.00 -sub,kernel,16,16,2376479,9,8.42,8.42,20.00 -sub,floor,16,16,1317392,9,15.21,15.16,20.04 -sub,gmp,16,16,3635265,9,5.50,5.50,20.01 -sub,gmpz,16,16,2895044,9,6.93,6.89,20.05 -sub,auto,64,64,286341,9,69.84,69.61,20.00 -sub,inplace,64,64,263260,9,37.57,37.24,19.80 -sub,kernel,64,64,607583,9,32.90,32.86,19.99 -sub,floor,64,64,474814,9,42.15,42.08,20.01 -sub,gmp,64,64,1276536,9,15.67,15.67,20.00 -sub,gmpz,64,64,1160841,9,17.23,17.21,20.00 -sub,auto,256,256,89107,9,224.46,224.38,20.00 -sub,inplace,256,256,68794,9,145.45,145.38,20.08 -sub,kernel,256,256,140048,9,142.83,142.79,20.02 -sub,floor,256,256,126435,9,158.20,158.15,20.00 -sub,gmp,256,256,255668,9,78.23,78.23,20.00 -sub,gmpz,256,256,250225,9,79.96,79.86,20.01 -sub,auto,1024,1024,23761,9,841.84,841.51,20.01 -sub,inplace,1024,1024,17192,9,581.73,581.68,20.00 -sub,kernel,1024,1024,34592,9,578.18,578.12,20.00 -sub,floor,1024,1024,33662,9,594.18,594.03,20.00 -sub,gmp,1024,1024,51303,9,389.85,389.84,20.01 -sub,gmpz,1024,1024,51115,9,391.27,391.25,20.00 -sub,auto,2000,2000,11481,9,1741.94,1741.70,20.00 -sub,inplace,2000,2000,8818,9,1134.31,1134.09,20.00 -sub,kernel,2000,2000,17681,9,1131.21,1131.16,20.00 -sub,floor,2000,2000,17398,9,1149.40,1149.04,20.00 -sub,gmp,2000,2000,42036,9,475.78,475.74,20.00 -sub,gmpz,2000,2000,41351,9,483.65,482.18,19.98 -sub,auto,1024,1,70517,9,283.00,282.36,20.00 -sub,inplace,1024,1,17242,9,580.04,579.93,20.04 -sub,kernel,1024,1,34675,9,576.78,576.77,20.00 -sub,floor,1024,1,33715,9,593.13,593.03,20.00 -sub,gmp,1024,1,85677,9,233.40,233.24,20.00 -sub,gmpz,1024,1,85419,9,234.07,233.63,20.00 -shl,auto,1,13,1205607,9,16.81,16.58,20.24 -shl,inplace,1,13,2431567,9,4.08,4.03,19.81 -shl,kernel,1,13,9626470,9,2.08,2.07,19.98 -shl,kernelip,1,13,5780553,9,1.77,1.72,20.32 -shl,floor,1,13,2085540,9,9.85,9.83,20.62 -shl,gmp,1,13,9626311,9,1.89,1.89,18.22 -shl,gmpz,1,13,5770452,9,3.47,3.46,20.00 -shl,auto,4,13,1069709,9,18.64,18.53,19.95 -shl,inplace,4,13,1925240,9,5.18,5.14,19.96 -shl,kernel,4,13,5766477,9,3.46,3.44,19.98 -shl,kernelip,4,13,3386034,9,2.96,2.92,20.07 -shl,floor,4,13,1727292,9,11.21,11.18,19.40 -shl,gmp,4,13,7991205,9,2.31,2.31,18.47 -shl,gmpz,4,13,4931727,9,4.04,4.04,19.94 -shl,auto,16,13,817300,9,24.56,24.41,20.07 -shl,inplace,16,13,1085427,9,9.20,9.18,19.98 -shl,kernel,16,13,2681109,9,7.51,7.44,20.12 -shl,kernelip,16,13,1405148,9,7.08,6.89,19.81 -shl,floor,16,13,1254258,9,15.21,15.21,19.09 -shl,gmp,16,13,4787832,9,4.06,4.05,19.60 -shl,gmpz,16,13,3438642,9,5.82,5.81,20.03 -shl,auto,256,13,145812,9,135.66,134.36,19.78 -shl,inplace,256,13,107554,9,92.96,92.85,20.01 -shl,kernel,256,13,215196,9,93.20,92.80,20.04 -shl,kernelip,256,13,102262,9,97.77,97.71,20.00 -shl,floor,256,13,177257,9,116.40,116.33,20.63 -shl,gmp,256,13,424243,9,47.34,47.10,20.06 -shl,gmpz,256,13,397823,9,50.35,50.17,20.07 -shl,auto,2000,13,21754,9,916.46,915.11,19.95 -shl,inplace,2000,13,15191,9,658.67,656.75,20.00 -shl,kernel,2000,13,27763,9,719.95,719.81,20.00 -shl,kernelip,2000,13,13980,9,715.35,715.29,20.00 -shl,floor,2000,13,27299,9,739.79,739.36,20.19 -shl,gmp,2000,13,59630,9,335.51,335.27,20.01 -shl,gmpz,2000,13,59057,9,338.52,338.38,19.99 -shl,auto,2000,77,18833,9,1065.60,1064.74,20.07 -shl,inplace,2000,77,13083,9,764.17,764.08,20.00 -shl,kernel,2000,77,23540,9,850.92,849.41,20.02 -shl,kernelip,2000,77,12154,9,822.52,822.19,19.99 -shl,floor,2000,77,22896,9,872.04,870.76,19.96 -shl,gmp,2000,77,59219,9,337.72,337.72,20.00 -shl,gmpz,2000,77,59105,9,338.40,338.37,20.00 -shr,auto,1,13,1975792,9,10.12,10.04,20.00 -shr,inplace,1,13,2736474,9,3.67,3.60,20.07 -shr,kernel,1,13,11752323,9,1.70,1.70,20.04 -shr,floor,1,13,7576693,9,2.64,2.63,19.99 -shr,gmp,1,13,10588831,9,1.89,1.89,20.00 -shr,gmpz,1,13,6109735,9,3.27,3.27,20.00 -shr,auto,4,13,952812,9,21.01,20.95,20.03 -shr,inplace,4,13,2112545,9,4.69,4.67,19.83 -shr,kernel,4,13,5755468,9,3.47,3.46,19.97 -shr,floor,4,13,1619854,9,12.37,12.35,20.04 -shr,gmp,4,13,8623535,9,2.33,2.31,20.06 -shr,gmpz,4,13,5047217,9,3.97,3.96,20.05 -shr,auto,16,13,777305,9,25.93,25.78,20.14 -shr,inplace,16,13,1141862,9,8.74,8.70,19.96 -shr,kernel,16,13,2456192,9,8.16,8.10,20.05 -shr,floor,16,13,1179686,9,17.01,16.96,20.06 -shr,gmp,16,13,4654659,9,4.30,4.30,20.06 -shr,gmpz,16,13,3213075,9,6.25,6.16,20.09 -shr,auto,256,13,145849,9,137.35,136.94,20.02 -shr,inplace,256,13,106600,9,93.76,93.56,20.00 -shr,kernel,256,13,181737,9,110.06,109.77,20.00 -shr,floor,256,13,152424,9,131.23,131.15,20.01 -shr,gmp,256,13,417640,9,48.04,47.95,20.07 -shr,gmpz,256,13,394159,9,50.61,50.51,19.96 -shr,auto,2000,13,21075,9,948.39,947.80,19.99 -shr,inplace,2000,13,15210,9,656.81,656.62,19.99 -shr,kernel,2000,13,24620,9,811.81,811.80,19.99 -shr,floor,2000,13,24024,9,832.28,831.87,19.99 -shr,gmp,2000,13,59545,9,335.98,335.80,20.03 -shr,gmpz,2000,13,59034,9,338.88,338.75,20.01 -shr,auto,2000,77,18455,9,1084.15,1084.00,20.01 -shr,inplace,2000,77,13076,9,764.67,764.34,20.00 -shr,kernel,2000,77,24139,9,828.39,828.37,20.01 -shr,floor,2000,77,23499,9,850.73,850.46,19.99 -shr,gmp,2000,77,59534,9,335.95,335.91,20.00 -shr,gmpz,2000,77,58954,9,339.31,339.15,20.03 -mul,auto,1,1,1043861,9,19.20,19.10,20.05 -mul,gmp,1,1,5909695,9,3.38,3.36,19.99 -mul,gmpz,1,1,5042351,9,3.97,3.97,20.01 -mul,auto,2,2,720206,9,27.83,27.74,20.08 -mul,kernel,2,2,2813496,9,7.62,7.60,21.45 -mul,floor,2,2,1324915,9,15.07,14.99,19.98 -mul,gmp,2,2,5226908,9,3.82,3.80,19.97 -mul,gmpz,2,2,3247534,9,6.08,6.06,19.77 -mul,auto,3,3,673305,9,29.62,29.45,19.99 -mul,kernel,3,3,2369440,9,9.04,9.02,21.43 -mul,floor,3,3,1212102,9,16.64,16.47,20.12 -mul,gmp,3,3,2549476,9,7.81,7.70,19.89 -mul,gmpz,3,3,2019392,9,9.90,9.79,20.00 -mul,auto,4,4,628972,9,31.77,31.68,20.00 -mul,kernel,4,4,1888622,9,11.10,11.07,20.96 -mul,floor,4,4,1082952,9,18.57,18.47,20.09 -mul,gmp,4,4,2054455,9,9.65,9.63,19.85 -mul,gmpz,4,4,1599331,9,12.49,12.44,19.98 -mul,auto,6,6,476314,9,41.82,41.61,19.92 -mul,kernel,6,6,1194829,9,17.49,17.46,20.90 -mul,floor,6,6,805715,9,24.75,24.66,19.95 -mul,gmp,6,6,1270257,9,15.67,15.65,19.91 -mul,gmpz,6,6,1119356,9,17.98,17.95,20.14 -mul,auto,8,8,423800,9,47.19,47.11,20.03 -mul,kernel,8,8,786685,9,25.59,25.46,20.14 -mul,floor,8,8,598482,9,33.20,33.11,19.88 -mul,gmp,8,8,735211,9,27.21,27.07,20.02 -mul,gmpz,8,8,691547,9,29.01,28.54,20.03 -mul,auto,12,12,287804,9,69.84,69.51,20.09 -mul,kernel,12,12,427054,9,47.33,47.28,20.22 -mul,floor,12,12,362606,9,55.15,54.94,19.99 -mul,gmp,12,12,411675,9,48.56,48.55,20.00 -mul,gmpz,12,12,393091,9,50.88,50.87,20.02 -mul,auto,16,16,195165,9,101.73,101.41,19.85 -mul,kernel,16,16,255569,9,78.88,78.79,20.16 -mul,floor,16,16,232961,9,86.01,85.77,20.05 -mul,gmp,16,16,244164,9,81.88,81.85,19.99 -mul,gmpz,16,16,235788,9,84.86,84.83,20.01 -mul,auto,32,32,93857,9,212.92,212.47,20.00 -mul,kernel,32,32,106149,9,189.99,189.56,20.16 -mul,floor,32,32,101719,9,196.72,196.42,20.01 -mul,gmp,32,32,73344,9,269.15,268.01,19.79 -mul,gmpz,32,32,74146,9,269.78,269.69,20.00 -mul,auto,64,64,38531,9,518.95,517.43,19.99 -mul,kernel,64,64,40903,9,495.13,492.40,20.27 -mul,floor,64,64,40125,9,503.32,498.24,20.17 -mul,gmp,64,64,22868,9,868.27,860.24,19.86 -mul,gmpz,64,64,23189,9,861.31,861.21,19.99 -mul,auto,128,128,11657,9,1716.55,1713.90,20.01 -mul,kernel,128,128,11779,9,1702.58,1701.57,20.10 -mul,floor,128,128,11711,9,1704.61,1702.08,19.97 -mul,gmp,128,128,7231,9,2753.11,2717.79,19.86 -mul,gmpz,128,128,7350,9,2714.41,2711.80,19.95 -mul,auto,256,256,3200,9,6253.57,6249.64,20.02 -mul,kernel,256,256,3252,9,6157.02,6150.87,20.02 -mul,floor,256,256,3248,9,6160.46,6156.55,20.06 -mul,gmp,256,256,2522,9,7836.25,7787.01,19.76 -mul,gmpz,256,256,2563,9,7805.79,7801.35,20.01 -mul,auto,512,512,1039,9,19254.06,19242.39,20.00 -mul,kernel,512,512,1042,9,19319.05,19304.70,20.13 -mul,floor,512,512,1036,9,19216.59,19184.23,19.91 -mul,gmp,512,512,948,9,21028.99,21003.03,19.93 -mul,gmpz,512,512,959,9,20846.22,20834.07,19.99 -mul,auto,1000,1000,335,9,59789.59,59703.86,20.03 -mul,kernel,1000,1000,336,9,59397.27,59332.91,19.96 -mul,floor,1000,1000,336,9,59405.07,59394.71,19.98 -mul,gmp,1000,1000,372,9,53732.99,53724.62,20.00 -mul,gmpz,1000,1000,365,9,54196.15,54177.41,19.78 -mul,auto,2000,2000,113,9,177089.83,176952.12,20.01 -mul,kernel,2000,2000,114,9,176103.46,176027.42,20.08 -mul,floor,2000,2000,114,9,176172.86,175953.55,20.08 -mul,gmp,2000,2000,139,9,144794.45,144782.14,20.13 -mul,gmpz,2000,2000,138,9,144939.17,144884.85,20.00 -mul,auto,2000,100,1123,9,17814.53,17813.08,20.01 -mul,kernel,2000,100,1132,9,17662.09,17651.31,20.00 -mul,floor,2000,100,1132,9,17676.22,17674.07,20.01 -mul,gmp,2000,100,550,9,35980.97,35772.12,19.83 -mul,gmpz,2000,100,559,9,35828.48,35811.98,20.04 -sqr,auto,4,4,599364,9,33.33,33.19,20.02 -sqr,kernel,4,4,2200158,9,9.07,9.04,19.97 -sqr,floor,4,4,1214994,9,16.91,16.90,20.55 -sqr,gmp,4,4,3399845,9,5.80,5.77,19.75 -sqr,gmpz,4,4,2250664,9,8.86,8.80,19.92 -sqr,auto,16,16,249170,9,79.66,79.60,19.85 -sqr,kernel,16,16,355634,9,56.25,56.20,20.00 -sqr,floor,16,16,320842,9,65.01,64.96,20.85 -sqr,gmp,16,16,398473,9,49.82,49.80,19.87 -sqr,gmpz,16,16,382933,9,52.09,52.08,19.95 -sqr,auto,64,64,64077,9,311.93,311.40,20.00 -sqr,kernel,64,64,73986,9,270.21,270.05,20.00 -sqr,floor,64,64,72542,9,279.79,279.47,20.31 -sqr,gmp,64,64,35767,9,551.61,548.81,19.79 -sqr,gmpz,64,64,36279,9,551.23,550.84,20.00 -sqr,auto,512,512,1884,9,10616.64,10611.23,20.00 -sqr,kernel,512,512,1896,9,10555.72,10550.64,20.02 -sqr,floor,512,512,1891,9,10597.36,10591.76,20.04 -sqr,gmp,512,512,1330,9,15025.87,15021.27,19.99 -sqr,gmpz,512,512,1330,9,15038.06,15030.22,20.00 -sqr,auto,2000,2000,196,9,102146.20,102087.71,20.02 -sqr,kernel,2000,2000,200,9,98226.88,98202.76,19.68 -sqr,floor,2000,2000,205,9,97984.03,97963.24,20.09 -sqr,gmp,2000,2000,199,9,100542.03,100502.31,20.01 -sqr,gmpz,2000,2000,199,9,100633.55,100572.64,20.02 -divrem,auto,2,1,490399,9,40.67,40.48,19.95 -divrem,kernel,2,1,3666711,9,5.45,5.40,20.02 -divrem,floor,2,1,1564228,9,12.77,12.74,19.96 -divrem,gmp,2,1,2984969,9,6.70,6.69,19.99 -divrem,gmpz,2,1,1733072,9,11.58,11.55,20.07 -divrem,auto,8,4,169440,9,117.85,117.33,19.95 -divrem,kernel,8,4,399129,9,50.05,49.93,19.98 -divrem,floor,8,4,309715,9,63.91,63.52,19.80 -divrem,gmp,8,4,458787,9,43.75,43.57,20.06 -divrem,gmpz,8,4,435815,9,46.03,45.96,20.08 -divrem,auto,32,16,53289,9,373.99,373.09,19.93 -divrem,kernel,32,16,69102,9,289.71,288.75,20.02 -divrem,floor,32,16,66137,9,303.02,302.12,20.07 -divrem,gmp,32,16,104956,9,191.09,190.39,20.07 -divrem,gmpz,32,16,103603,9,193.47,192.45,20.07 -divrem,auto,128,64,5851,9,3341.40,3340.66,19.55 -divrem,kernel,128,64,6261,9,3194.36,3192.69,20.00 -divrem,floor,128,64,6232,9,3205.80,3205.11,19.98 -divrem,gmp,128,64,11641,9,1719.47,1717.70,20.02 -divrem,gmpz,128,64,11612,9,1722.74,1722.27,20.01 -divrem,auto,512,256,689,9,29271.09,29066.08,20.15 -divrem,kernel,512,256,687,9,28881.73,28849.26,19.85 -divrem,floor,512,256,691,9,28979.04,28972.01,20.03 -divrem,gmp,512,256,1232,9,16240.23,16239.00,20.01 -divrem,gmpz,512,256,1226,9,16316.60,16313.69,20.00 -divrem,auto,2000,1000,109,9,185927.31,185222.79,20.26 -divrem,kernel,2000,1000,108,9,185652.52,185603.02,20.05 -divrem,floor,2000,1000,109,9,184666.81,184611.61,20.13 -divrem,gmp,2000,1000,146,9,137947.06,137903.50,20.14 -divrem,gmpz,2000,1000,146,9,137820.97,137795.63,20.16 -divrem,auto,4000,2000,43,9,476041.88,475295.09,20.46 -divrem,kernel,4000,2000,43,9,472591.40,472364.88,20.32 -divrem,floor,4000,2000,43,9,472558.26,472471.07,20.32 -divrem,gmp,4000,2000,60,9,333079.22,332240.98,20.01 -divrem,gmpz,4000,2000,61,9,332468.07,332273.30,20.28 -divrem,auto,2000,100,140,9,143134.21,143039.05,20.06 -divrem,kernel,2000,100,139,9,144821.84,144411.10,20.13 -divrem,floor,2000,100,139,9,144531.19,144384.52,20.09 -divrem,gmp,2000,100,277,9,72355.06,72334.58,20.07 -divrem,gmpz,2000,100,275,9,72899.28,72861.60,20.06 -divrem,auto,65536,1,103,9,193817.64,193419.51,19.97 -divrem,kernel,65536,1,120,9,167049.14,166917.18,20.05 -divrem,floor,65536,1,115,9,174689.93,174379.51,20.08 -divrem,gmp,65536,1,136,9,148110.79,148091.43,20.18 -divrem,gmpz,65536,1,135,9,148112.47,148104.89,20.00 -fromchars,auto,4,10,100373,9,200.05,198.78,20.21 -fromchars,kernel,4,10,450588,9,44.66,44.56,20.13 -fromchars,gmp,4,10,622410,9,32.04,31.87,19.94 -fromchars,gmpz,4,10,288801,9,69.17,68.87,20.01 -fromchars,auto,16,10,48411,9,419.89,412.46,20.32 -fromchars,kernel,16,10,96881,9,208.94,205.75,20.26 -fromchars,gmp,16,10,162224,9,123.37,123.17,20.01 -fromchars,gmpz,16,10,78345,9,255.47,255.26,20.03 -fromchars,auto,64,10,6932,9,2780.49,2678.61,19.29 -fromchars,kernel,64,10,9252,9,2143.22,2089.82,20.16 -fromchars,gmp,64,10,21106,9,947.50,945.93,20.00 -fromchars,gmpz,64,10,14012,9,1427.28,1425.86,20.01 -fromchars,auto,256,10,704,9,28079.49,28022.01,19.89 -fromchars,kernel,256,10,755,9,25388.45,24953.92,19.20 -fromchars,gmp,256,10,2476,9,8061.25,8049.86,19.96 -fromchars,gmpz,256,10,2007,9,9970.38,9963.95,20.01 -fromchars,auto,2000,10,48,9,426962.77,424565.73,20.50 -fromchars,kernel,2000,10,49,9,408472.12,407627.47,20.05 -fromchars,gmp,2000,10,109,9,182622.55,182487.87,19.91 -fromchars,gmpz,2000,10,102,9,197836.03,197742.45,20.18 diff --git a/tests/beman/big_int/perf/item1/x64_base64_spot_seed1.csv b/tests/beman/big_int/perf/item1/x64_base64_spot_seed1.csv deleted file mode 100644 index 76906554..00000000 --- a/tests/beman/big_int/perf/item1/x64_base64_spot_seed1.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,1340,3,14935.13,14934.71,20.01 -add,inplace,16384,16384,1075,3,9305.76,9305.27,20.01 -add,kernel,16384,16384,2152,3,9293.47,9293.24,20.00 -add,floor,16384,16384,2148,3,9313.13,9312.54,20.01 -add,gmp,16384,16384,2902,3,6893.59,6893.53,20.01 -add,gmpz,16384,16384,2891,3,6918.88,6918.79,20.00 -mul,auto,2000,2000,114,3,176939.30,176865.74,20.17 -mul,kernel,2000,2000,114,3,176589.68,176565.25,20.14 -mul,floor,2000,2000,114,3,176475.29,176340.36,20.12 -mul,gmp,2000,2000,139,3,143948.60,143943.22,20.01 -mul,gmpz,2000,2000,139,3,144000.90,143997.42,20.02 -mul,auto,16384,16384,6,3,3769183.83,3768919.67,22.64 -mul,kernel,16384,16384,6,3,3798222.83,3793843.67,22.79 -mul,floor,16384,16384,6,3,3778494.50,3775113.67,22.68 -mul,gmp,16384,16384,12,3,1763854.92,1763718.58,21.17 -mul,gmpz,16384,16384,12,3,1761961.92,1759595.08,21.14 -divrem,auto,4096,2048,41,3,499381.05,498172.15,20.46 -divrem,kernel,4096,2048,41,3,497148.02,496941.41,20.38 -divrem,floor,4096,2048,41,3,496910.71,496803.17,20.38 -divrem,gmp,4096,2048,55,3,369157.38,368454.60,20.31 -divrem,gmpz,4096,2048,55,3,368853.38,368792.73,20.29 -tochars,auto,10000,10,4,3,5884643.75,5864764.50,23.52 -tochars,kernel,10000,10,4,3,5824239.50,5822492.75,23.33 -tochars,gmp,10000,10,5,3,4178396.00,4174799.20,20.89 -tochars,gmpz,10000,10,5,3,4221438.20,4219150.40,21.16 -fromchars,auto,10000,10,6,3,3669238.50,3665586.00,22.03 -fromchars,kernel,10000,10,6,3,3584278.83,3583633.33,21.51 -fromchars,gmp,10000,10,11,3,1932747.82,1931713.09,21.26 -fromchars,gmpz,10000,10,10,3,2010006.70,2009162.10,20.11 diff --git a/tests/beman/big_int/perf/item1/x64_base64_spot_seed2.csv b/tests/beman/big_int/perf/item1/x64_base64_spot_seed2.csv deleted file mode 100644 index e83f0c82..00000000 --- a/tests/beman/big_int/perf/item1/x64_base64_spot_seed2.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,1349,3,14831.34,14829.63,20.01 -add,inplace,16384,16384,1074,3,9299.59,9299.46,19.98 -add,kernel,16384,16384,2140,3,9308.72,9308.31,19.93 -add,floor,16384,16384,2146,3,9325.08,9324.03,20.01 -add,gmp,16384,16384,2874,3,6959.09,6958.82,20.02 -add,gmpz,16384,16384,2874,3,6961.31,6961.13,20.01 -mul,auto,2000,2000,113,3,177137.19,176921.62,20.01 -mul,kernel,2000,2000,114,3,176315.20,176228.61,20.10 -mul,floor,2000,2000,114,3,176603.25,176501.92,20.13 -mul,gmp,2000,2000,139,3,144427.65,144407.18,20.08 -mul,gmpz,2000,2000,139,3,144281.97,144251.51,20.05 -mul,auto,16384,16384,6,3,3799864.83,3785435.67,22.78 -mul,kernel,16384,16384,6,3,3782468.17,3771114.83,22.68 -mul,floor,16384,16384,6,3,3777166.83,3775523.33,22.67 -mul,gmp,16384,16384,12,3,1761587.00,1760340.33,21.14 -mul,gmpz,16384,16384,12,3,1761942.25,1761189.58,21.14 -divrem,auto,4096,2048,41,3,497925.98,497876.29,20.42 -divrem,kernel,4096,2048,41,3,498401.49,498216.39,20.44 -divrem,floor,4096,2048,41,3,495478.02,495404.90,20.32 -divrem,gmp,4096,2048,54,3,372348.87,370674.93,20.10 -divrem,gmpz,4096,2048,55,3,368159.76,367950.25,20.25 -tochars,auto,10000,10,4,3,5895359.50,5888475.00,23.59 -tochars,kernel,10000,10,4,3,5822376.25,5818439.00,23.29 -tochars,gmp,10000,10,5,3,4208269.00,4193154.40,21.03 -tochars,gmpz,10000,10,5,3,4232282.40,4229362.60,21.16 -fromchars,auto,10000,10,6,3,3671038.00,3661800.17,22.01 -fromchars,kernel,10000,10,6,3,3587782.67,3575145.17,21.51 -fromchars,gmp,10000,10,11,3,1931879.09,1931417.27,21.25 -fromchars,gmpz,10000,10,10,3,2006814.00,2006759.20,20.07 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1a.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1a.csv deleted file mode 100644 index 5de90922..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1a.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T16:31:49Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base128 seed=1 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,92.39,92.22,27.73 -vecsort,builtin,100000,1,6,9,39.21,39.18,23.53 -vecsort,copy,100000,1,94,9,2.14,2.12,20.19 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1b.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1b.csv deleted file mode 100644 index 4a0e27b1..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed1b.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T16:31:54Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base128 seed=1 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,92.35,92.06,27.70 -vecsort,builtin,100000,1,6,9,39.25,39.17,23.54 -vecsort,copy,100000,1,95,9,2.15,2.12,20.40 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2a.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2a.csv deleted file mode 100644 index 5fb5fb35..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2a.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T16:31:52Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base128 seed=2 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,92.09,91.82,27.63 -vecsort,builtin,100000,1,6,9,39.35,39.30,23.61 -vecsort,copy,100000,1,93,9,2.15,2.12,19.98 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2b.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2b.csv deleted file mode 100644 index 8f67df04..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base128_vecsort_seed2b.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T16:31:57Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base128 seed=2 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,92.00,91.72,27.60 -vecsort,builtin,100000,1,6,9,39.32,39.27,23.61 -vecsort,copy,100000,1,94,9,2.13,2.12,20.06 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1a.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1a.csv deleted file mode 100644 index e9c68f0c..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1a.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T16:31:50Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base256 seed=1 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,97.31,96.72,29.19 -vecsort,builtin,100000,1,6,9,39.26,39.23,23.57 -vecsort,copy,100000,1,88,9,2.30,2.26,20.28 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1b.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1b.csv deleted file mode 100644 index 50a9d0e6..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed1b.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T16:31:55Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base256 seed=1 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,97.18,96.75,29.16 -vecsort,builtin,100000,1,6,9,40.25,39.20,24.23 -vecsort,copy,100000,1,89,9,2.30,2.26,20.46 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2a.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2a.csv deleted file mode 100644 index 2e3d30bf..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2a.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T16:31:53Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base256 seed=2 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,96.88,96.00,29.04 -vecsort,builtin,100000,1,6,9,39.37,39.25,23.69 -vecsort,copy,100000,1,87,9,2.34,2.28,21.00 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2b.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2b.csv deleted file mode 100644 index 7f41918c..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base256_vecsort_seed2b.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T16:31:58Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base256 seed=2 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,99.97,96.35,30.04 -vecsort,builtin,100000,1,6,9,39.34,39.25,23.60 -vecsort,copy,100000,1,89,9,2.29,2.25,20.43 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1a.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1a.csv deleted file mode 100644 index 7aceb490..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1a.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T16:31:48Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,91.19,89.22,27.58 -vecsort,builtin,100000,1,6,9,39.32,39.30,23.59 -vecsort,copy,100000,1,105,9,1.96,1.92,20.52 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1b.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1b.csv deleted file mode 100644 index f08bb7d4..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed1b.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T16:31:54Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,89.64,89.06,26.89 -vecsort,builtin,100000,1,6,9,39.33,39.30,23.60 -vecsort,copy,100000,1,103,9,1.96,1.92,20.16 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2a.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2a.csv deleted file mode 100644 index ddf56b85..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2a.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T16:31:51Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,89.18,88.91,26.89 -vecsort,builtin,100000,1,6,9,39.41,39.38,23.65 -vecsort,copy,100000,1,102,9,1.95,1.90,19.92 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2b.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2b.csv deleted file mode 100644 index 1e1b1a45..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base64_vecsort_seed2b.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T16:31:56Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,89.19,88.67,26.75 -vecsort,builtin,100000,1,6,9,39.40,39.31,23.64 -vecsort,copy,100000,1,105,9,1.98,1.94,20.70 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base_seed1.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base_seed1.csv deleted file mode 100644 index 9b32ed1a..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base_seed1.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T16:14:14Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2449321,9,8.07,8.04,19.80 -add,inplace,1,1,2431227,9,4.09,4.06,19.87 -add,kernel,1,1,10589208,9,1.89,1.89,20.08 -add,floor,1,1,2067326,9,9.67,9.63,20.10 -add,gmp,1,1,8824048,9,2.27,2.27,20.02 -add,gmpz,1,1,4813055,9,4.16,4.16,20.01 -add,auto,2,2,1141979,9,17.53,17.45,20.07 -add,inplace,2,2,1734809,9,5.84,5.78,20.24 -add,kernel,2,2,8362912,9,2.36,2.34,19.73 -add,floor,2,2,1993522,9,10.02,10.01,20.02 -add,gmp,2,2,8824275,9,2.27,2.27,20.00 -add,gmpz,2,2,4751488,9,4.16,4.16,19.79 -add,auto,4,4,1129671,9,17.61,17.54,19.91 -add,inplace,4,4,1807157,9,5.53,5.52,20.01 -add,kernel,4,4,6504085,9,3.08,3.03,20.08 -add,floor,4,4,1853661,9,10.78,10.77,19.98 -add,gmp,4,4,8007044,9,2.50,2.50,20.00 -add,gmpz,4,4,4603717,9,4.35,4.34,20.05 -add,auto,8,8,1066620,9,18.81,18.71,20.04 -add,inplace,8,8,1386882,9,7.22,7.20,20.03 -add,kernel,8,8,4377349,9,4.58,4.53,20.22 -add,floor,8,8,1629046,9,12.28,12.28,20.02 -add,gmp,8,8,5423668,9,3.69,3.69,20.00 -add,gmpz,8,8,4249059,9,4.65,4.64,19.81 -add,auto,16,16,808479,9,24.78,24.34,20.04 -add,inplace,16,16,865153,9,11.63,11.52,20.08 -add,kernel,16,16,2646873,9,7.56,7.56,20.01 -add,floor,16,16,1305784,9,15.34,15.30,20.06 -add,gmp,16,16,3632084,9,5.49,5.48,19.97 -add,gmpz,16,16,3049710,9,6.51,6.48,19.88 -add,auto,64,64,314712,9,63.61,63.39,20.18 -add,inplace,64,64,256771,9,38.96,38.68,19.99 -add,kernel,64,64,601101,9,33.26,33.19,19.99 -add,floor,64,64,482625,9,41.45,40.60,19.98 -add,gmp,64,64,1294852,9,15.45,15.45,20.02 -add,gmpz,64,64,1212580,9,16.49,16.46,19.99 -add,auto,256,256,89433,9,223.69,223.51,20.00 -add,inplace,256,256,68430,9,146.16,146.07,20.01 -add,kernel,256,256,139805,9,143.00,142.96,19.99 -add,floor,256,256,125865,9,158.85,158.75,20.00 -add,gmp,256,256,255640,9,78.23,78.23,20.01 -add,gmpz,256,256,251618,9,79.51,79.41,20.19 -add,auto,1024,1024,23774,9,841.10,840.80,20.00 -add,inplace,1024,1024,17158,9,582.95,582.80,20.01 -add,kernel,1024,1024,34574,9,578.42,578.34,20.05 -add,floor,1024,1024,33662,9,594.22,594.05,20.01 -add,gmp,1024,1024,51230,9,390.41,390.40,20.00 -add,gmpz,1024,1024,51076,9,391.57,391.54,20.00 -add,auto,2000,2000,11599,9,1724.31,1724.04,20.01 -add,inplace,2000,2000,8811,9,1134.88,1134.68,20.00 -add,kernel,2000,2000,17650,9,1132.72,1132.67,19.99 -add,floor,2000,2000,17300,9,1150.63,1150.34,19.91 -add,gmp,2000,2000,42998,9,465.18,465.16,20.06 -add,gmpz,2000,2000,42435,9,471.21,469.34,19.97 -add,auto,1024,1,71304,9,280.40,280.16,19.99 -add,inplace,1024,1,17248,9,579.75,579.70,20.00 -add,kernel,1024,1,34622,9,577.69,577.68,20.01 -add,floor,1024,1,33698,9,593.53,593.42,20.01 -add,gmp,1024,1,85699,9,233.35,233.26,20.00 -add,gmpz,1024,1,85415,9,234.15,233.82,20.00 -sub,auto,1,1,2219617,9,9.03,8.95,20.01 -sub,inplace,1,1,2500470,9,3.97,3.97,19.89 -sub,kernel,1,1,13236398,9,1.51,1.51,20.00 -sub,floor,1,1,10540923,9,1.90,1.89,20.07 -sub,gmp,1,1,8824181,9,2.27,2.27,20.00 -sub,gmpz,1,1,4603641,9,4.34,4.34,20.03 -sub,auto,2,2,1062368,9,18.80,18.78,19.97 -sub,inplace,2,2,2176615,9,4.60,4.57,20.00 -sub,kernel,2,2,9543947,9,2.09,2.08,19.92 -sub,floor,2,2,2032200,9,9.82,9.82,19.97 -sub,gmp,2,2,8805045,9,2.27,2.27,19.96 -sub,gmpz,2,2,4600603,9,4.35,4.34,20.05 -sub,auto,4,4,1077798,9,18.57,18.52,20.01 -sub,inplace,4,4,1864568,9,5.38,5.36,20.05 -sub,kernel,4,4,6866144,9,2.88,2.83,19.74 -sub,floor,4,4,1888496,9,10.59,10.59,20.01 -sub,gmp,4,4,7995581,9,2.49,2.49,19.90 -sub,gmpz,4,4,4408380,9,4.58,4.54,20.21 -sub,auto,8,8,998449,9,20.23,20.11,20.20 -sub,inplace,8,8,1403038,9,7.13,7.11,20.00 -sub,kernel,8,8,4585226,9,4.37,4.35,20.05 -sub,floor,8,8,1639807,9,12.19,12.15,19.98 -sub,gmp,8,8,5434168,9,3.68,3.68,20.01 -sub,gmpz,8,8,4048183,9,4.96,4.94,20.12 -sub,auto,16,16,789199,9,25.34,25.02,20.01 -sub,inplace,16,16,953400,9,10.50,10.48,20.05 -sub,kernel,16,16,2491804,9,8.02,8.02,19.99 -sub,floor,16,16,1316467,9,15.17,15.15,19.96 -sub,gmp,16,16,3634122,9,5.50,5.50,19.99 -sub,gmpz,16,16,2930611,9,6.81,6.78,19.96 -sub,auto,64,64,304534,9,65.80,65.62,20.05 -sub,inplace,64,64,265432,9,37.84,37.71,20.09 -sub,kernel,64,64,606389,9,32.90,32.69,19.93 -sub,floor,64,64,473938,9,42.21,42.15,20.03 -sub,gmp,64,64,1292582,9,15.45,15.45,19.98 -sub,gmpz,64,64,1193934,9,16.74,16.71,20.00 -sub,auto,256,256,89439,9,223.63,223.48,20.01 -sub,inplace,256,256,68821,9,145.32,145.28,20.01 -sub,kernel,256,256,140037,9,142.83,142.78,20.00 -sub,floor,256,256,126309,9,158.17,158.02,19.99 -sub,gmp,256,256,255403,9,78.25,78.25,19.99 -sub,gmpz,256,256,250410,9,79.85,79.74,19.99 -sub,auto,1024,1024,23727,9,841.59,841.40,19.97 -sub,inplace,1024,1024,17199,9,581.49,581.44,20.01 -sub,kernel,1024,1024,34594,9,578.19,578.12,20.01 -sub,floor,1024,1024,33677,9,594.28,593.68,20.01 -sub,gmp,1024,1024,51302,9,389.84,389.84,20.00 -sub,gmpz,1024,1024,51127,9,391.23,391.18,20.01 -sub,auto,2000,2000,11469,9,1743.29,1743.05,20.00 -sub,inplace,2000,2000,8821,9,1133.71,1133.55,20.00 -sub,kernel,2000,2000,17670,9,1131.93,1131.90,20.04 -sub,floor,2000,2000,17320,9,1149.12,1148.67,19.90 -sub,gmp,2000,2000,42840,9,466.87,466.83,20.00 -sub,gmpz,2000,2000,42712,9,468.40,466.23,19.99 -sub,auto,1024,1,70687,9,282.75,282.04,19.98 -sub,inplace,1024,1,17226,9,579.67,579.63,19.97 -sub,kernel,1024,1,34676,9,576.78,576.77,20.00 -sub,floor,1024,1,33732,9,592.97,592.88,20.00 -sub,gmp,1024,1,85422,9,233.85,233.77,19.98 -sub,gmpz,1024,1,85276,9,234.13,233.75,19.96 -shl,auto,1,13,1223232,9,16.46,16.32,20.12 -shl,inplace,1,13,2459676,9,4.08,4.04,20.07 -shl,kernel,1,13,9626421,9,2.08,2.07,19.99 -shl,kernelip,1,13,5742821,9,1.73,1.71,19.96 -shl,floor,1,13,2115663,9,9.64,9.63,20.41 -shl,gmp,1,13,9626259,9,1.89,1.89,18.19 -shl,gmpz,1,13,5882746,9,3.40,3.40,20.01 -shl,auto,4,13,1071996,9,18.40,18.25,19.71 -shl,inplace,4,13,1944187,9,5.14,5.13,20.00 -shl,kernel,4,13,5839757,9,3.38,3.38,19.83 -shl,kernelip,4,13,3413272,9,2.98,2.93,20.31 -shl,floor,4,13,1762663,9,11.08,10.98,19.52 -shl,gmp,4,13,8145349,9,2.27,2.27,18.46 -shl,gmpz,4,13,5042297,9,3.97,3.97,20.03 -shl,auto,16,13,831039,9,24.15,24.05,20.07 -shl,inplace,16,13,1086551,9,9.19,9.17,19.99 -shl,kernel,16,13,2727619,9,7.31,7.29,19.95 -shl,kernelip,16,13,1407213,9,6.99,6.90,19.80 -shl,floor,16,13,1280673,9,14.96,14.94,19.17 -shl,gmp,16,13,4917755,9,3.97,3.97,19.66 -shl,gmpz,16,13,3508649,9,5.71,5.70,20.06 -shl,auto,256,13,148412,9,134.97,133.28,20.00 -shl,inplace,256,13,107313,9,93.03,92.75,19.98 -shl,kernel,256,13,214111,9,93.47,93.38,20.04 -shl,kernelip,256,13,102324,9,97.76,97.72,20.02 -shl,floor,256,13,177058,9,117.30,117.22,20.78 -shl,gmp,256,13,424784,9,47.21,47.16,20.08 -shl,gmpz,256,13,398173,9,50.38,50.19,20.06 -shl,auto,2000,13,21789,9,917.62,915.20,20.00 -shl,inplace,2000,13,15214,9,657.15,656.08,20.00 -shl,kernel,2000,13,27815,9,719.13,719.00,20.01 -shl,kernelip,2000,13,13981,9,715.33,715.29,20.01 -shl,floor,2000,13,26991,9,739.04,738.60,19.96 -shl,gmp,2000,13,59626,9,335.50,335.42,20.01 -shl,gmpz,2000,13,59054,9,338.54,338.36,19.99 -shl,auto,2000,77,18771,9,1065.49,1063.28,20.00 -shl,inplace,2000,77,13089,9,764.22,764.10,20.01 -shl,kernel,2000,77,23447,9,852.75,851.72,20.00 -shl,kernelip,2000,77,12155,9,822.77,822.20,20.01 -shl,floor,2000,77,22953,9,875.07,871.27,20.07 -shl,gmp,2000,77,59188,9,337.73,337.72,20.02 -shl,gmpz,2000,77,59099,9,338.41,338.33,20.01 -shr,auto,1,13,1979794,9,10.08,10.01,19.94 -shr,inplace,1,13,2716781,9,3.65,3.60,19.81 -shr,kernel,1,13,11754602,9,1.70,1.70,20.03 -shr,floor,1,13,8810080,9,2.27,2.27,19.97 -shr,gmp,1,13,10588463,9,1.89,1.89,20.00 -shr,gmpz,1,13,6216896,9,3.21,3.21,19.99 -shr,auto,4,13,965991,9,20.65,20.56,19.96 -shr,inplace,4,13,2131090,9,4.71,4.67,20.11 -shr,kernel,4,13,5847930,9,3.40,3.40,19.91 -shr,floor,4,13,1703378,9,11.73,11.71,19.99 -shr,gmp,4,13,8720401,9,2.28,2.27,19.93 -shr,gmpz,4,13,5072170,9,3.92,3.91,19.89 -shr,auto,16,13,785685,9,25.42,25.30,19.98 -shr,inplace,16,13,1142645,9,8.74,8.67,19.99 -shr,kernel,16,13,2129972,9,9.39,9.38,19.99 -shr,floor,16,13,1176777,9,16.85,16.79,19.84 -shr,gmp,16,13,4375254,9,4.58,4.57,20.03 -shr,gmpz,16,13,3306568,9,6.09,6.05,20.45 -shr,auto,256,13,146758,9,136.31,135.96,20.00 -shr,inplace,256,13,106744,9,93.74,93.51,20.02 -shr,kernel,256,13,181555,9,110.05,109.87,19.99 -shr,floor,256,13,151380,9,132.06,131.95,20.00 -shr,gmp,256,13,415329,9,48.00,47.89,19.94 -shr,gmpz,256,13,395132,9,50.70,50.56,20.02 -shr,auto,2000,13,20985,9,951.88,951.42,19.99 -shr,inplace,2000,13,15208,9,656.94,656.62,19.99 -shr,kernel,2000,13,24633,9,811.93,811.91,20.00 -shr,floor,2000,13,24014,9,832.96,832.44,20.00 -shr,gmp,2000,13,59549,9,335.93,335.82,20.01 -shr,gmpz,2000,13,59016,9,338.86,338.75,20.01 -shr,auto,2000,77,18426,9,1084.45,1084.04,19.98 -shr,inplace,2000,77,12771,9,765.20,764.50,19.57 -shr,kernel,2000,77,24093,9,830.10,830.09,20.02 -shr,floor,2000,77,23454,9,853.01,852.41,20.01 -shr,gmp,2000,77,59533,9,335.94,335.91,20.01 -shr,gmpz,2000,77,58940,9,339.27,339.18,20.00 -mul,auto,1,1,1062289,9,18.82,18.80,20.03 -mul,gmp,1,1,5869876,9,3.38,3.37,19.87 -mul,gmpz,1,1,5039397,9,3.97,3.97,19.99 -mul,auto,2,2,731838,9,27.40,27.23,20.05 -mul,kernel,2,2,2844433,9,7.60,7.57,21.62 -mul,floor,2,2,1348727,9,14.99,14.88,20.23 -mul,gmp,2,2,5305625,9,3.78,3.76,20.08 -mul,gmpz,2,2,3228462,9,6.08,6.02,19.60 -mul,auto,3,3,683363,9,29.01,28.84,19.85 -mul,kernel,3,3,2391158,9,8.86,8.80,21.20 -mul,floor,3,3,1234413,9,16.46,16.31,20.31 -mul,gmp,3,3,2560367,9,7.88,7.77,20.15 -mul,gmpz,3,3,2024290,9,9.82,9.78,19.89 -mul,auto,4,4,633434,9,31.56,31.53,20.01 -mul,kernel,4,4,1842076,9,11.47,11.36,21.10 -mul,floor,4,4,1086348,9,18.45,18.38,20.05 -mul,gmp,4,4,2031295,9,9.92,9.75,20.06 -mul,gmpz,4,4,1619319,9,12.35,12.32,20.01 -mul,auto,6,6,485853,9,41.43,41.23,20.13 -mul,kernel,6,6,1217369,9,17.16,17.14,20.89 -mul,floor,6,6,818683,9,24.28,24.16,19.87 -mul,gmp,6,6,1272243,9,15.67,15.65,19.96 -mul,gmpz,6,6,1120534,9,17.88,17.85,20.05 -mul,auto,8,8,425349,9,46.94,46.85,19.96 -mul,kernel,8,8,814580,9,24.99,24.95,20.38 -mul,floor,8,8,609593,9,32.48,32.24,19.80 -mul,gmp,8,8,733810,9,27.15,26.81,19.90 -mul,gmpz,8,8,694020,9,28.83,28.61,20.03 -mul,auto,12,12,289092,9,69.11,68.94,20.03 -mul,kernel,12,12,428662,9,48.18,48.13,20.65 -mul,floor,12,12,370965,9,53.97,53.86,20.02 -mul,gmp,12,12,406280,9,49.22,49.20,20.01 -mul,gmpz,12,12,393996,9,50.75,50.74,20.00 -mul,auto,16,16,199929,9,100.14,100.06,20.02 -mul,kernel,16,16,253657,9,79.80,79.72,20.24 -mul,floor,16,16,233958,9,85.46,85.21,20.00 -mul,gmp,16,16,241850,9,82.69,82.64,20.00 -mul,gmpz,16,16,234551,9,85.27,85.24,20.00 -mul,auto,32,32,94478,9,211.90,211.57,20.02 -mul,kernel,32,32,106842,9,188.17,187.47,20.10 -mul,floor,32,32,101548,9,196.94,196.13,20.00 -mul,gmp,32,32,74699,9,267.73,267.70,20.00 -mul,gmpz,32,32,74088,9,269.94,269.87,20.01 -mul,auto,64,64,38704,9,517.23,516.22,20.01 -mul,kernel,64,64,40878,9,498.45,497.60,20.38 -mul,floor,64,64,40184,9,497.39,496.78,20.01 -mul,gmp,64,64,22128,9,903.64,903.30,20.00 -mul,gmpz,64,64,22691,9,876.06,875.74,19.88 -mul,auto,128,128,11631,9,1720.17,1717.80,20.01 -mul,kernel,128,128,11623,9,1716.57,1714.84,19.97 -mul,floor,128,128,11569,9,1728.18,1725.82,20.00 -mul,gmp,128,128,7349,9,2721.24,2720.25,20.00 -mul,gmpz,128,128,7379,9,2710.17,2708.85,20.00 -mul,auto,256,256,3221,9,6207.65,6205.01,20.03 -mul,kernel,256,256,3234,9,6183.79,6173.29,20.00 -mul,floor,256,256,3226,9,6198.49,6185.04,20.00 -mul,gmp,256,256,2578,9,7759.40,7758.70,20.00 -mul,gmpz,256,256,2572,9,7777.86,7774.36,20.00 -mul,auto,512,512,1038,9,19291.51,19272.83,20.04 -mul,kernel,512,512,1045,9,19145.36,19127.60,20.02 -mul,floor,512,512,1043,9,19170.20,19149.41,20.00 -mul,gmp,512,512,953,9,20992.28,20968.45,20.00 -mul,gmpz,512,512,960,9,20851.99,20850.40,20.03 -mul,auto,1000,1000,334,9,59817.17,59722.29,19.98 -mul,kernel,1000,1000,337,9,59461.71,59419.15,20.04 -mul,floor,1000,1000,337,9,59406.20,59366.18,20.02 -mul,gmp,1000,1000,375,9,53379.49,53336.41,20.02 -mul,gmpz,1000,1000,375,9,53475.41,53440.06,20.06 -mul,auto,2000,2000,114,9,176892.45,176784.43,20.17 -mul,kernel,2000,2000,114,9,176449.38,176366.66,20.12 -mul,floor,2000,2000,114,9,176403.16,176161.12,20.11 -mul,gmp,2000,2000,139,9,143938.91,143917.90,20.04 -mul,gmpz,2000,2000,139,9,144053.19,143971.47,20.02 -mul,auto,2000,100,1122,9,17826.17,17822.76,20.00 -mul,kernel,2000,100,1134,9,17645.55,17642.45,20.01 -mul,floor,2000,100,1132,9,17673.47,17667.22,20.05 -mul,gmp,2000,100,562,9,35674.81,35622.32,20.04 -mul,gmpz,2000,100,560,9,35686.87,35645.65,19.99 -sqr,auto,4,4,613667,9,32.77,32.58,20.19 -sqr,kernel,4,4,2252042,9,8.92,8.88,20.08 -sqr,floor,4,4,1230614,9,16.68,16.62,20.53 -sqr,gmp,4,4,3520345,9,5.69,5.63,20.01 -sqr,gmpz,4,4,2314961,9,8.66,8.61,20.05 -sqr,auto,16,16,251679,9,80.02,79.77,20.13 -sqr,kernel,16,16,356033,9,56.21,56.14,20.01 -sqr,floor,16,16,318840,9,63.42,63.35,20.22 -sqr,gmp,16,16,394427,9,50.73,50.69,20.02 -sqr,gmpz,16,16,383889,9,52.09,52.07,20.02 -sqr,auto,64,64,65922,9,303.58,303.25,20.04 -sqr,kernel,64,64,73060,9,273.67,273.27,19.99 -sqr,floor,64,64,72593,9,281.76,280.55,20.46 -sqr,gmp,64,64,36394,9,549.22,548.97,19.99 -sqr,gmpz,64,64,36309,9,551.23,550.64,20.02 -sqr,auto,512,512,1870,9,10707.00,10698.11,20.02 -sqr,kernel,512,512,1893,9,10566.82,10550.91,20.00 -sqr,floor,512,512,1892,9,10564.06,10550.28,20.00 -sqr,gmp,512,512,1320,9,15155.46,15151.21,20.03 -sqr,gmpz,512,512,1319,9,15161.34,15154.94,20.00 -sqr,auto,2000,2000,200,9,100241.88,100170.32,20.05 -sqr,kernel,2000,2000,202,9,99569.03,99471.31,20.11 -sqr,floor,2000,2000,202,9,99403.17,99213.06,20.07 -sqr,gmp,2000,2000,199,9,100558.73,100509.94,20.01 -sqr,gmpz,2000,2000,199,9,100617.68,100559.91,20.03 -divrem,auto,2,1,475647,9,41.87,41.71,19.91 -divrem,kernel,2,1,3683330,9,5.43,5.35,20.05 -divrem,floor,2,1,1599608,9,12.54,12.51,20.05 -divrem,gmp,2,1,2300685,9,8.69,8.68,19.99 -divrem,gmpz,2,1,1514197,9,13.16,13.14,19.93 -divrem,auto,8,4,188577,9,105.82,105.57,19.95 -divrem,kernel,8,4,501570,9,39.67,39.55,19.92 -divrem,floor,8,4,371578,9,53.88,53.10,19.98 -divrem,gmp,8,4,503492,9,39.97,39.87,20.17 -divrem,gmpz,8,4,479506,9,41.57,41.37,19.94 -divrem,auto,32,16,54174,9,370.41,369.94,20.07 -divrem,kernel,32,16,69491,9,287.47,286.94,19.98 -divrem,floor,32,16,65896,9,302.77,302.20,19.95 -divrem,gmp,32,16,104113,9,191.84,191.01,19.97 -divrem,gmpz,32,16,102258,9,195.25,194.23,19.96 -divrem,auto,128,64,5916,9,3338.53,3336.90,19.77 -divrem,kernel,128,64,6261,9,3191.57,3191.18,19.99 -divrem,floor,128,64,6241,9,3204.89,3202.32,20.00 -divrem,gmp,128,64,11634,9,1720.55,1718.42,20.03 -divrem,gmpz,128,64,11566,9,1729.39,1728.90,20.00 -divrem,auto,512,256,685,9,29241.89,29231.86,20.03 -divrem,kernel,512,256,696,9,28758.95,28747.08,20.04 -divrem,floor,512,256,691,9,28940.79,28933.10,20.00 -divrem,gmp,512,256,1233,9,16231.72,16229.35,20.01 -divrem,gmpz,512,256,1230,9,16266.52,16263.89,20.01 -divrem,auto,2000,1000,111,9,181535.92,181386.13,20.25 -divrem,kernel,2000,1000,111,9,180495.57,180411.42,20.05 -divrem,floor,2000,1000,111,9,180421.23,180364.23,20.03 -divrem,gmp,2000,1000,146,9,137789.51,137762.71,20.12 -divrem,gmpz,2000,1000,146,9,137799.95,137777.72,20.12 -divrem,auto,4000,2000,43,9,470134.70,469907.16,20.22 -divrem,kernel,4000,2000,43,9,466234.47,466029.14,20.05 -divrem,floor,4000,2000,43,9,465013.67,464897.35,20.00 -divrem,gmp,4000,2000,60,9,334292.82,333955.80,20.07 -divrem,gmpz,4000,2000,60,9,335081.82,334947.18,20.11 -divrem,auto,2000,100,140,9,143634.89,143602.21,20.11 -divrem,kernel,2000,100,141,9,142209.70,142198.04,20.06 -divrem,floor,2000,100,141,9,142296.45,142251.62,20.07 -divrem,gmp,2000,100,276,9,72640.66,72616.89,20.05 -divrem,gmpz,2000,100,276,9,72587.66,72556.21,20.04 -divrem,auto,65536,1,103,9,194096.37,193661.17,20.01 -divrem,kernel,65536,1,120,9,167213.99,166994.21,20.06 -divrem,floor,65536,1,115,9,174688.11,174604.18,20.10 -divrem,gmp,65536,1,136,9,148110.61,148097.95,20.17 -divrem,gmpz,65536,1,136,9,148109.35,148098.13,20.15 -fromchars,auto,4,10,105977,9,188.55,188.15,19.99 -fromchars,kernel,4,10,533084,9,37.44,37.38,19.97 -fromchars,gmp,4,10,633828,9,31.26,31.15,19.83 -fromchars,gmpz,4,10,301296,9,66.36,66.04,19.99 -fromchars,auto,16,10,46722,9,428.65,424.18,20.00 -fromchars,kernel,16,10,97132,9,207.64,205.02,20.19 -fromchars,gmp,16,10,159230,9,124.95,124.47,19.90 -fromchars,gmpz,16,10,78031,9,256.66,255.98,20.05 -fromchars,auto,64,10,7297,9,2838.04,2751.90,20.71 -fromchars,kernel,64,10,9316,9,2167.86,2012.64,20.00 -fromchars,gmp,64,10,22561,9,886.29,886.09,20.00 -fromchars,gmpz,64,10,14461,9,1383.55,1382.63,20.02 -fromchars,auto,256,10,702,9,28064.43,27616.00,20.00 -fromchars,kernel,256,10,790,9,25734.94,24942.48,20.41 -fromchars,gmp,256,10,2504,9,7977.88,7972.78,19.99 -fromchars,gmpz,256,10,2016,9,9884.60,9878.90,19.93 -fromchars,auto,2000,10,48,9,423411.81,421901.06,20.32 -fromchars,kernel,2000,10,50,9,401119.68,400926.48,20.07 -fromchars,gmp,2000,10,110,9,182704.76,182625.81,20.10 -fromchars,gmpz,2000,10,102,9,197727.52,197690.04,20.17 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base_seed1_rep.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base_seed1_rep.csv deleted file mode 100644 index 12506089..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base_seed1_rep.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T16:17:34Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2302129,9,8.06,8.02,18.72 -add,inplace,1,1,2458162,9,4.10,4.08,20.20 -add,kernel,1,1,10589007,9,1.89,1.89,20.00 -add,floor,1,1,2072135,9,9.65,9.63,20.01 -add,gmp,1,1,8644561,9,2.27,2.27,19.63 -add,gmpz,1,1,4811693,9,4.16,4.16,20.00 -add,auto,2,2,1147003,9,17.55,17.45,20.13 -add,inplace,2,2,1732199,9,5.82,5.77,20.25 -add,kernel,2,2,8526608,9,2.37,2.35,20.22 -add,floor,2,2,1992402,9,10.06,10.01,20.02 -add,gmp,2,2,8781818,9,2.27,2.27,19.91 -add,gmpz,2,2,4813085,9,4.16,4.16,20.01 -add,auto,4,4,1113870,9,17.78,17.71,19.80 -add,inplace,4,4,1811155,9,5.54,5.52,20.11 -add,kernel,4,4,6466080,9,3.05,3.02,19.83 -add,floor,4,4,1851691,9,10.78,10.77,19.96 -add,gmp,4,4,8010564,9,2.50,2.50,20.02 -add,gmpz,4,4,4603838,9,4.34,4.34,20.03 -add,auto,8,8,1050403,9,19.15,19.08,20.11 -add,inplace,8,8,1376097,9,7.25,7.24,19.96 -add,kernel,8,8,4361304,9,4.64,4.53,20.25 -add,floor,8,8,1629017,9,12.28,12.28,20.01 -add,gmp,8,8,5425103,9,3.69,3.69,20.01 -add,gmpz,8,8,4278251,9,4.66,4.64,19.95 -add,auto,16,16,813377,9,25.03,24.51,20.26 -add,inplace,16,16,864120,9,11.59,11.54,20.02 -add,kernel,16,16,2094765,9,9.55,9.55,20.01 -add,floor,16,16,1294218,9,15.45,15.44,20.01 -add,gmp,16,16,3337316,9,5.99,5.98,20.02 -add,gmpz,16,16,3062582,9,6.54,6.50,20.02 -add,auto,64,64,313681,9,63.90,63.68,20.04 -add,inplace,64,64,256870,9,39.09,38.84,20.07 -add,kernel,64,64,594706,9,33.63,33.61,20.00 -add,floor,64,64,473139,9,42.13,42.05,19.98 -add,gmp,64,64,1294670,9,15.45,15.45,20.00 -add,gmpz,64,64,1212687,9,16.49,16.46,20.00 -add,auto,256,256,88596,9,225.73,225.66,20.00 -add,inplace,256,256,68482,9,146.12,146.07,20.02 -add,kernel,256,256,140320,9,142.55,142.52,20.02 -add,floor,256,256,125982,9,158.84,158.61,20.01 -add,gmp,256,256,255643,9,78.23,78.23,20.00 -add,gmpz,256,256,251319,9,79.59,79.48,20.01 -add,auto,1024,1024,23720,9,842.90,842.66,20.00 -add,inplace,1024,1024,17119,9,583.96,583.95,20.00 -add,kernel,1024,1024,34578,9,578.38,578.32,20.00 -add,floor,1024,1024,32970,9,596.03,594.19,19.71 -add,gmp,1024,1024,51229,9,390.42,390.41,20.00 -add,gmpz,1024,1024,51058,9,391.61,391.57,20.01 -add,auto,2000,2000,11600,9,1724.22,1723.83,20.00 -add,inplace,2000,2000,8812,9,1134.80,1134.67,20.00 -add,kernel,2000,2000,17662,9,1132.32,1132.30,20.00 -add,floor,2000,2000,17381,9,1150.62,1150.41,20.00 -add,gmp,2000,2000,43431,9,459.08,459.06,19.94 -add,gmpz,2000,2000,42133,9,474.72,472.98,19.99 -add,auto,1024,1,71053,9,281.23,280.89,19.98 -add,inplace,1024,1,17242,9,580.03,579.99,20.00 -add,kernel,1024,1,34618,9,577.73,577.71,20.00 -add,floor,1024,1,33677,9,593.88,593.78,20.00 -add,gmp,1024,1,85868,9,232.76,232.47,19.99 -add,gmpz,1024,1,85460,9,233.99,233.64,19.99 -sub,auto,1,1,2228730,9,8.99,8.93,20.03 -sub,inplace,1,1,2518261,9,3.98,3.97,20.08 -sub,kernel,1,1,13236363,9,1.51,1.51,20.01 -sub,floor,1,1,10486505,9,1.90,1.89,19.87 -sub,gmp,1,1,8742414,9,2.27,2.27,19.88 -sub,gmpz,1,1,4603761,9,4.34,4.34,20.02 -sub,auto,2,2,1057033,9,18.80,18.71,19.86 -sub,inplace,2,2,2180994,9,4.59,4.56,19.99 -sub,kernel,2,2,9544126,9,2.10,2.08,19.97 -sub,floor,2,2,2036313,9,9.82,9.82,20.01 -sub,gmp,2,2,8810583,9,2.27,2.27,19.98 -sub,gmpz,2,2,4603778,9,4.34,4.34,20.01 -sub,auto,4,4,1068392,9,18.72,18.65,20.01 -sub,inplace,4,4,1859359,9,5.38,5.36,19.99 -sub,kernel,4,4,6997183,9,2.86,2.83,20.04 -sub,floor,4,4,1889955,9,10.59,10.58,20.03 -sub,gmp,4,4,8042988,9,2.49,2.49,20.01 -sub,gmpz,4,4,4318729,9,4.57,4.53,19.84 -sub,auto,8,8,971873,9,20.59,20.53,20.04 -sub,inplace,8,8,1402460,9,7.12,7.11,19.97 -sub,kernel,8,8,4592402,9,4.39,4.35,20.16 -sub,floor,8,8,1643219,9,12.18,12.15,20.02 -sub,gmp,8,8,5433620,9,3.68,3.68,20.01 -sub,gmpz,8,8,4026237,9,4.95,4.94,19.95 -sub,auto,16,16,790233,9,25.35,24.97,20.00 -sub,inplace,16,16,952953,9,10.50,10.48,20.02 -sub,kernel,16,16,2493017,9,8.02,8.02,20.00 -sub,floor,16,16,1317396,9,15.16,15.15,20.01 -sub,gmp,16,16,3634935,9,5.50,5.50,20.00 -sub,gmpz,16,16,2953562,9,6.80,6.75,20.06 -sub,auto,64,64,302972,9,65.85,65.54,19.94 -sub,inplace,64,64,261023,9,38.34,38.23,20.01 -sub,kernel,64,64,597068,9,33.42,33.17,19.94 -sub,floor,64,64,474651,9,42.11,42.06,20.00 -sub,gmp,64,64,1287469,9,15.53,15.52,20.09 -sub,gmpz,64,64,1194601,9,16.74,16.71,20.01 -sub,auto,256,256,89411,9,223.69,223.52,20.01 -sub,inplace,256,256,68417,9,146.16,146.14,20.00 -sub,kernel,256,256,140026,9,142.82,142.81,20.00 -sub,floor,256,256,126201,9,158.43,158.05,19.99 -sub,gmp,256,256,255688,9,78.23,78.22,20.00 -sub,gmpz,256,256,250193,9,79.85,79.75,19.98 -sub,auto,1024,1024,23751,9,841.97,841.76,20.00 -sub,inplace,1024,1024,17196,9,581.55,581.51,20.00 -sub,kernel,1024,1024,34592,9,578.22,578.12,20.01 -sub,floor,1024,1024,33675,9,594.29,593.97,20.02 -sub,gmp,1024,1024,51303,9,389.84,389.83,20.00 -sub,gmpz,1024,1024,51126,9,391.18,391.17,20.00 -sub,auto,2000,2000,11506,9,1738.27,1738.15,20.00 -sub,inplace,2000,2000,8816,9,1134.15,1134.04,20.00 -sub,kernel,2000,2000,17644,9,1132.56,1132.49,19.98 -sub,floor,2000,2000,17405,9,1149.27,1148.71,20.05 -sub,gmp,2000,2000,43886,9,453.42,453.38,19.90 -sub,gmpz,2000,2000,42011,9,475.75,475.71,20.00 -sub,auto,1024,1,70818,9,282.10,281.93,19.98 -sub,inplace,1024,1,17250,9,579.71,579.63,20.00 -sub,kernel,1024,1,34675,9,576.79,576.77,20.00 -sub,floor,1024,1,33725,9,593.03,592.86,20.00 -sub,gmp,1024,1,85525,9,233.79,233.72,20.00 -sub,gmpz,1024,1,85418,9,234.05,233.68,20.07 -shl,auto,1,13,1217883,9,16.46,16.41,20.04 -shl,inplace,1,13,2442994,9,4.07,4.05,19.88 -shl,kernel,1,13,9626469,9,2.08,2.07,19.99 -shl,kernelip,1,13,5643619,9,1.75,1.72,19.75 -shl,floor,1,13,2117662,9,9.64,9.63,20.41 -shl,gmp,1,13,9626002,9,1.89,1.89,18.19 -shl,gmpz,1,13,5882721,9,3.40,3.40,20.00 -shl,auto,4,13,1043662,9,18.92,18.71,19.73 -shl,inplace,4,13,1908028,9,5.16,5.15,19.72 -shl,kernel,4,13,4304665,9,4.65,4.64,20.04 -shl,kernelip,4,13,3418478,9,2.92,2.90,20.04 -shl,floor,4,13,1733536,9,11.20,11.18,19.42 -shl,gmp,4,13,8098220,9,2.30,2.29,18.66 -shl,gmpz,4,13,5019935,9,3.99,3.98,20.06 -shl,auto,16,13,820312,9,24.47,24.33,20.08 -shl,inplace,16,13,1090241,9,9.18,9.15,20.09 -shl,kernel,16,13,2638283,9,7.46,7.40,20.06 -shl,kernelip,16,13,1420978,9,7.10,7.00,20.20 -shl,floor,16,13,1273767,9,15.21,15.13,19.37 -shl,gmp,16,13,4942715,9,4.04,4.03,19.97 -shl,gmpz,16,13,3452835,9,5.80,5.77,20.03 -shl,auto,256,13,148950,9,133.19,132.37,19.93 -shl,inplace,256,13,107464,9,93.13,92.81,20.01 -shl,kernel,256,13,214042,9,93.41,93.28,19.99 -shl,kernelip,256,13,102226,9,97.80,97.70,20.15 -shl,floor,256,13,167865,9,118.82,116.63,20.20 -shl,gmp,256,13,424047,9,47.30,47.19,20.06 -shl,gmpz,256,13,396059,9,50.42,50.17,19.97 -shl,auto,2000,13,21831,9,916.15,914.88,20.00 -shl,inplace,2000,13,15203,9,656.92,656.24,19.98 -shl,kernel,2000,13,27676,9,719.39,719.11,19.91 -shl,kernelip,2000,13,13981,9,715.34,715.29,20.01 -shl,floor,2000,13,27130,9,738.71,738.42,20.04 -shl,gmp,2000,13,59608,9,335.47,335.36,20.00 -shl,gmpz,2000,13,58311,9,349.14,338.80,20.50 -shl,auto,2000,77,18769,9,1064.92,1061.19,19.99 -shl,inplace,2000,77,13073,9,765.14,764.21,20.01 -shl,kernel,2000,77,23494,9,852.50,851.11,20.03 -shl,kernelip,2000,77,12161,9,822.94,822.32,20.02 -shl,floor,2000,77,22919,9,873.01,871.15,20.01 -shl,gmp,2000,77,59168,9,337.72,337.72,19.99 -shl,gmpz,2000,77,59106,9,338.41,338.38,20.04 -shr,auto,1,13,1958635,9,10.09,10.02,19.73 -shr,inplace,1,13,2784690,9,3.63,3.56,20.25 -shr,kernel,1,13,11755951,9,1.75,1.70,20.54 -shr,floor,1,13,8572871,9,2.27,2.27,19.43 -shr,gmp,1,13,10588904,9,1.89,1.89,20.00 -shr,gmpz,1,13,6197678,9,3.23,3.22,20.03 -shr,auto,4,13,956684,9,20.92,20.85,20.01 -shr,inplace,4,13,2158819,9,4.68,4.65,20.28 -shr,kernel,4,13,5884351,9,3.41,3.40,20.06 -shr,floor,4,13,1698610,9,11.83,11.76,20.08 -shr,gmp,4,13,8623752,9,2.33,2.31,20.08 -shr,gmpz,4,13,5023259,9,3.98,3.95,19.96 -shr,auto,16,13,777502,9,25.98,25.67,20.18 -shr,inplace,16,13,1103847,9,8.76,8.71,19.38 -shr,kernel,16,13,2508535,9,8.04,7.96,20.18 -shr,floor,16,13,1194384,9,16.74,16.66,20.02 -shr,gmp,16,13,4667554,9,4.29,4.28,20.03 -shr,gmpz,16,13,3212315,9,6.15,6.11,19.76 -shr,auto,256,13,146020,9,136.09,135.88,19.88 -shr,inplace,256,13,106278,9,93.78,93.52,19.93 -shr,kernel,256,13,181454,9,110.25,110.00,20.01 -shr,floor,256,13,152397,9,131.33,131.15,20.01 -shr,gmp,256,13,416602,9,48.07,47.82,20.13 -shr,gmpz,256,13,380863,9,51.13,50.60,19.64 -shr,auto,2000,13,21072,9,951.42,950.24,20.05 -shr,inplace,2000,13,15230,9,657.55,656.76,20.05 -shr,kernel,2000,13,24633,9,811.91,811.89,20.00 -shr,floor,2000,13,24010,9,832.98,832.63,20.00 -shr,gmp,2000,13,59220,9,337.72,337.62,20.00 -shr,gmpz,2000,13,59022,9,338.84,338.71,20.01 -shr,auto,2000,77,18441,9,1084.57,1084.16,20.00 -shr,inplace,2000,77,13070,9,765.04,764.67,20.00 -shr,kernel,2000,77,24076,9,830.11,830.08,20.08 -shr,floor,2000,77,23423,9,873.85,853.38,20.55 -shr,gmp,2000,77,59540,9,335.93,335.92,20.00 -shr,gmpz,2000,77,58952,9,339.23,339.17,20.00 -mul,auto,1,1,1063823,9,18.83,18.81,20.05 -mul,gmp,1,1,5907045,9,3.38,3.35,19.94 -mul,gmpz,1,1,5042394,9,3.97,3.97,20.00 -mul,auto,2,2,728303,9,27.47,27.32,20.03 -mul,kernel,2,2,2816436,9,7.54,7.48,21.20 -mul,floor,2,2,1330702,9,15.03,14.97,20.04 -mul,gmp,2,2,5317356,9,3.78,3.77,20.10 -mul,gmpz,2,2,3212243,9,6.18,6.02,19.95 -mul,auto,3,3,675194,9,29.50,29.42,19.92 -mul,kernel,3,3,2351673,9,9.00,8.96,21.15 -mul,floor,3,3,1221935,9,16.63,16.52,20.37 -mul,gmp,3,3,2579943,9,7.79,7.72,20.11 -mul,gmpz,3,3,2032686,9,9.82,9.78,19.97 -mul,auto,4,4,635995,9,31.55,31.36,20.04 -mul,kernel,4,4,1910347,9,10.96,10.90,20.94 -mul,floor,4,4,1083824,9,18.57,18.52,20.17 -mul,gmp,4,4,2101127,9,9.49,9.48,19.96 -mul,gmpz,4,4,1623562,9,12.29,11.94,20.16 -mul,auto,6,6,487047,9,41.15,40.91,20.04 -mul,kernel,6,6,1214169,9,17.17,17.13,20.85 -mul,floor,6,6,817802,9,24.48,24.28,20.01 -mul,gmp,6,6,1275682,9,15.69,15.64,20.00 -mul,gmpz,6,6,1120264,9,17.90,17.86,20.05 -mul,auto,8,8,431607,9,46.28,46.23,20.05 -mul,kernel,8,8,822884,9,25.00,24.96,20.62 -mul,floor,8,8,617746,9,32.16,32.00,19.88 -mul,gmp,8,8,732826,9,27.35,26.98,19.98 -mul,gmpz,8,8,696300,9,30.06,28.90,20.93 -mul,auto,12,12,289661,9,69.01,68.84,19.99 -mul,kernel,12,12,429887,9,47.05,47.03,20.27 -mul,floor,12,12,371019,9,53.98,53.90,20.04 -mul,gmp,12,12,405186,9,49.11,49.10,19.92 -mul,gmpz,12,12,394142,9,50.76,50.74,20.00 -mul,auto,16,16,197539,9,101.36,101.27,20.03 -mul,kernel,16,16,253271,9,78.86,78.81,19.97 -mul,floor,16,16,232383,9,86.21,85.95,20.04 -mul,gmp,16,16,232050,9,85.80,82.98,19.89 -mul,gmpz,16,16,237084,9,84.38,84.35,20.01 -mul,auto,32,32,94535,9,211.07,210.50,19.96 -mul,kernel,32,32,105626,9,188.63,188.37,19.93 -mul,floor,32,32,101204,9,196.92,196.37,19.93 -mul,gmp,32,32,74730,9,267.54,267.43,19.99 -mul,gmpz,32,32,74048,9,270.17,270.04,20.01 -mul,auto,64,64,38748,9,515.73,514.98,19.98 -mul,kernel,64,64,41188,9,482.22,481.02,19.86 -mul,floor,64,64,40577,9,493.74,492.66,20.03 -mul,gmp,64,64,22982,9,873.82,860.20,20.18 -mul,gmpz,64,64,22461,9,861.88,861.56,19.38 -mul,auto,128,128,11481,9,1743.46,1741.45,20.04 -mul,kernel,128,128,11779,9,1694.80,1693.24,19.97 -mul,floor,128,128,11709,9,1705.50,1703.20,19.98 -mul,gmp,128,128,7112,9,2809.35,2808.82,19.98 -mul,gmpz,128,128,7259,9,2755.22,2754.49,20.01 -mul,auto,256,256,3216,9,6221.65,6217.15,20.01 -mul,kernel,256,256,3225,9,6183.07,6177.09,19.94 -mul,floor,256,256,3228,9,6200.94,6193.52,20.02 -mul,gmp,256,256,2573,9,7762.11,7759.49,20.10 -mul,gmpz,256,256,2395,9,7890.89,7746.72,18.98 -mul,auto,512,512,1039,9,19263.42,19241.38,20.01 -mul,kernel,512,512,1045,9,19153.64,19120.45,20.01 -mul,floor,512,512,1043,9,19168.38,19128.51,20.00 -mul,gmp,512,512,962,9,20803.62,20799.10,20.02 -mul,gmpz,512,512,959,9,20867.23,20859.34,20.01 -mul,auto,1000,1000,333,9,59934.38,59897.78,19.97 -mul,kernel,1000,1000,336,9,59605.40,59537.22,20.03 -mul,floor,1000,1000,337,9,59519.90,59480.93,20.06 -mul,gmp,1000,1000,374,9,53575.94,53569.07,20.08 -mul,gmpz,1000,1000,373,9,55335.66,53741.05,20.71 -mul,auto,2000,2000,113,9,177297.24,177010.29,20.08 -mul,kernel,2000,2000,114,9,176188.09,176062.68,20.12 -mul,floor,2000,2000,114,9,176499.87,176386.02,20.13 -mul,gmp,2000,2000,139,9,143942.89,143926.68,20.03 -mul,gmpz,2000,2000,139,9,144054.53,143974.09,20.02 -mul,auto,2000,100,1123,9,17829.07,17823.32,20.03 -mul,kernel,2000,100,1132,9,17668.16,17662.33,20.01 -mul,floor,2000,100,1131,9,17690.76,17680.65,20.01 -mul,gmp,2000,100,556,9,35979.15,35939.72,20.01 -mul,gmpz,2000,100,550,9,37258.27,36077.72,20.49 -sqr,auto,4,4,598611,9,33.36,33.20,19.97 -sqr,kernel,4,4,2193665,9,9.07,9.05,19.95 -sqr,floor,4,4,1214131,9,16.91,16.88,20.54 -sqr,gmp,4,4,3463257,9,5.78,5.73,20.03 -sqr,gmpz,4,4,2292456,9,8.69,8.66,19.93 -sqr,auto,16,16,250182,9,79.72,79.58,19.95 -sqr,kernel,16,16,325338,9,61.20,61.15,19.91 -sqr,floor,16,16,317471,9,62.95,62.93,20.34 -sqr,gmp,16,16,400701,9,49.91,49.88,20.00 -sqr,gmpz,16,16,383823,9,53.15,52.07,20.49 -sqr,auto,64,64,65560,9,298.59,298.22,19.59 -sqr,kernel,64,64,73934,9,270.48,270.25,20.00 -sqr,floor,64,64,72308,9,282.14,281.60,20.40 -sqr,gmp,64,64,36169,9,550.33,549.93,19.91 -sqr,gmpz,64,64,36276,9,551.30,551.15,20.00 -sqr,auto,512,512,1833,9,10919.84,10913.00,20.02 -sqr,kernel,512,512,1901,9,10518.86,10511.24,20.00 -sqr,floor,512,512,1900,9,10534.79,10530.59,20.02 -sqr,gmp,512,512,1293,9,15146.29,15125.77,19.62 -sqr,gmpz,512,512,1318,9,15198.56,15187.85,20.21 -sqr,auto,2000,2000,193,9,98809.07,98632.41,19.31 -sqr,kernel,2000,2000,204,9,98071.35,98044.75,20.01 -sqr,floor,2000,2000,204,9,98181.32,98140.40,20.03 -sqr,gmp,2000,2000,199,9,100632.82,100596.96,20.03 -sqr,gmpz,2000,2000,199,9,100606.46,100521.32,20.05 -divrem,auto,2,1,479491,9,41.93,41.72,20.09 -divrem,kernel,2,1,3637936,9,5.44,5.41,19.91 -divrem,floor,2,1,1587384,9,12.69,12.60,20.11 -divrem,gmp,2,1,2303878,9,8.79,8.67,20.30 -divrem,gmpz,2,1,1468257,9,13.18,13.15,19.40 -divrem,auto,8,4,188435,9,105.97,105.63,19.99 -divrem,kernel,8,4,521944,9,38.41,38.18,20.08 -divrem,floor,8,4,369883,9,53.73,53.34,19.89 -divrem,gmp,8,4,499183,9,40.01,39.88,20.00 -divrem,gmpz,8,4,481290,9,41.61,41.47,20.04 -divrem,auto,32,16,54160,9,369.34,368.36,20.01 -divrem,kernel,32,16,69282,9,288.08,287.27,19.96 -divrem,floor,32,16,65399,9,309.67,305.57,20.34 -divrem,gmp,32,16,100937,9,191.80,191.09,19.39 -divrem,gmpz,32,16,102999,9,194.58,193.80,20.03 -divrem,auto,128,64,5786,9,3454.39,3453.77,19.99 -divrem,kernel,128,64,6233,9,3210.55,3208.79,20.03 -divrem,floor,128,64,6227,9,3211.64,3209.33,20.00 -divrem,gmp,128,64,11440,9,1747.25,1745.39,19.99 -divrem,gmpz,128,64,11592,9,1726.11,1725.22,20.01 -divrem,auto,512,256,676,9,29626.89,29618.00,20.03 -divrem,kernel,512,256,694,9,28886.54,28830.07,20.05 -divrem,floor,512,256,682,9,29386.20,29343.38,20.13 -divrem,gmp,512,256,1184,9,16261.80,16258.13,19.55 -divrem,gmpz,512,256,1236,9,16193.66,16189.28,20.02 -divrem,auto,2000,1000,111,9,181711.42,181638.68,20.18 -divrem,kernel,2000,1000,111,9,181631.76,181137.12,20.22 -divrem,floor,2000,1000,110,9,181901.36,181347.36,20.01 -divrem,gmp,2000,1000,145,9,138057.81,138013.25,20.03 -divrem,gmpz,2000,1000,146,9,137872.27,137828.13,20.13 -divrem,auto,4000,2000,43,9,467922.60,466571.05,20.11 -divrem,kernel,4000,2000,43,9,469294.56,467115.74,20.19 -divrem,floor,4000,2000,43,9,473293.37,471403.72,20.43 -divrem,gmp,4000,2000,59,9,345134.75,333351.98,20.21 -divrem,gmpz,4000,2000,60,9,334079.38,333839.98,20.04 -divrem,auto,2000,100,139,9,144105.47,144078.61,20.06 -divrem,kernel,2000,100,141,9,141833.86,141768.74,20.02 -divrem,floor,2000,100,141,9,141879.82,141823.31,20.01 -divrem,gmp,2000,100,276,9,72697.84,72655.97,20.06 -divrem,gmpz,2000,100,275,9,72752.93,72725.81,20.01 -divrem,auto,65536,1,103,9,194285.92,193768.80,20.01 -divrem,kernel,65536,1,120,9,167263.07,166962.62,20.07 -divrem,floor,65536,1,115,9,174737.60,174550.65,20.09 -divrem,gmp,65536,1,135,9,153238.89,148161.56,20.63 -divrem,gmpz,65536,1,136,9,148126.29,148108.49,20.15 -fromchars,auto,4,10,106568,9,188.01,187.78,20.05 -fromchars,kernel,4,10,534219,9,37.48,37.40,20.02 -fromchars,gmp,4,10,640345,9,31.25,31.12,20.01 -fromchars,gmpz,4,10,300216,9,66.30,66.18,19.91 -fromchars,auto,16,10,45651,9,438.11,432.58,19.98 -fromchars,kernel,16,10,97657,9,208.69,202.59,20.26 -fromchars,gmp,16,10,160446,9,124.67,124.30,20.01 -fromchars,gmpz,16,10,77939,9,256.32,256.09,20.02 -fromchars,auto,64,10,6816,9,2872.57,2830.40,19.74 -fromchars,kernel,64,10,9456,9,2119.45,2049.68,19.90 -fromchars,gmp,64,10,22889,9,873.35,872.86,19.99 -fromchars,gmpz,64,10,14693,9,1401.17,1360.45,20.51 -fromchars,auto,256,10,696,9,28070.30,28003.57,19.65 -fromchars,kernel,256,10,754,9,25501.70,25055.23,19.38 -fromchars,gmp,256,10,2481,9,8055.80,8050.08,20.03 -fromchars,gmpz,256,10,2008,9,9961.16,9957.63,20.02 -fromchars,auto,2000,10,48,9,421653.69,421526.92,20.25 -fromchars,kernel,2000,10,50,9,401134.02,401109.66,20.07 -fromchars,gmp,2000,10,110,9,183125.19,183096.29,20.14 -fromchars,gmpz,2000,10,101,9,198036.61,197970.13,20.01 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base_seed2.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base_seed2.csv deleted file mode 100644 index e923b482..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base_seed2.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T16:15:45Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2448874,9,8.08,8.02,19.81 -add,inplace,1,1,2462453,9,4.08,4.06,20.12 -add,kernel,1,1,10588928,9,1.89,1.89,20.00 -add,floor,1,1,2075873,9,9.67,9.64,20.07 -add,gmp,1,1,8824048,9,2.27,2.27,20.00 -add,gmpz,1,1,4812888,9,4.16,4.16,20.00 -add,auto,2,2,1144540,9,17.49,17.45,20.02 -add,inplace,2,2,1690331,9,5.83,5.80,19.78 -add,kernel,2,2,8478078,9,2.36,2.31,20.04 -add,floor,2,2,1994131,9,10.03,10.01,20.03 -add,gmp,2,2,8824183,9,2.27,2.27,20.00 -add,gmpz,2,2,4813060,9,4.16,4.16,20.02 -add,auto,4,4,1134398,9,17.76,17.59,20.10 -add,inplace,4,4,1795623,9,5.55,5.52,19.93 -add,kernel,4,4,6297307,9,3.08,3.03,19.45 -add,floor,4,4,1857651,9,10.78,10.77,20.07 -add,gmp,4,4,8005685,9,2.50,2.50,20.01 -add,gmpz,4,4,4576331,9,4.34,4.34,19.92 -add,auto,8,8,1053123,9,19.11,19.02,20.31 -add,inplace,8,8,1387558,9,7.21,7.20,20.03 -add,kernel,8,8,4396405,9,4.55,4.53,20.06 -add,floor,8,8,1628991,9,12.28,12.28,20.00 -add,gmp,8,8,5425518,9,3.69,3.69,20.00 -add,gmpz,8,8,4310751,9,4.66,4.65,20.09 -add,auto,16,16,811815,9,24.53,24.23,19.93 -add,inplace,16,16,844901,9,11.91,11.87,20.13 -add,kernel,16,16,2645838,9,7.56,7.56,20.02 -add,floor,16,16,1307213,9,15.30,15.30,20.00 -add,gmp,16,16,2917318,9,6.85,6.84,19.98 -add,gmpz,16,16,3074398,9,6.51,6.48,20.02 -add,auto,64,64,314691,9,63.46,63.31,19.97 -add,inplace,64,64,255900,9,38.88,38.73,19.90 -add,kernel,64,64,602089,9,33.17,33.13,19.99 -add,floor,64,64,479579,9,41.14,40.28,19.76 -add,gmp,64,64,1294713,9,15.45,15.45,20.00 -add,gmpz,64,64,1212684,9,16.49,16.46,19.99 -add,auto,256,256,89397,9,223.84,223.68,20.02 -add,inplace,256,256,68743,9,145.55,145.49,20.01 -add,kernel,256,256,140292,9,142.55,142.49,20.00 -add,floor,256,256,126074,9,158.77,158.56,20.01 -add,gmp,256,256,255644,9,78.23,78.23,20.01 -add,gmpz,256,256,251713,9,79.46,79.36,19.99 -add,auto,1024,1024,23679,9,841.66,841.61,19.94 -add,inplace,1024,1024,17146,9,583.17,583.10,20.00 -add,kernel,1024,1024,34516,9,579.53,579.43,20.00 -add,floor,1024,1024,33665,9,594.19,594.09,20.00 -add,gmp,1024,1024,51140,9,391.09,391.06,20.00 -add,gmpz,1024,1024,51015,9,392.04,392.03,20.01 -add,auto,2000,2000,11619,9,1721.38,1721.17,20.06 -add,inplace,2000,2000,8819,9,1133.98,1133.90,20.01 -add,kernel,2000,2000,17651,9,1133.07,1133.03,20.01 -add,floor,2000,2000,17271,9,1150.56,1150.30,19.91 -add,gmp,2000,2000,41815,9,478.31,478.30,20.01 -add,gmpz,2000,2000,41208,9,485.28,483.84,19.99 -add,auto,1024,1,71258,9,280.55,280.15,19.99 -add,inplace,1024,1,17245,9,579.74,579.64,20.00 -add,kernel,1024,1,34563,9,578.68,578.66,20.00 -add,floor,1024,1,33697,9,593.56,593.40,20.00 -add,gmp,1024,1,85979,9,232.65,232.48,20.02 -add,gmpz,1024,1,85506,9,233.95,233.58,20.01 -sub,auto,1,1,2196710,9,8.96,8.95,19.73 -sub,inplace,1,1,2521117,9,3.98,3.97,20.09 -sub,kernel,1,1,13236265,9,1.51,1.51,20.00 -sub,floor,1,1,10523807,9,1.90,1.89,19.98 -sub,gmp,1,1,8824138,9,2.27,2.27,20.00 -sub,gmpz,1,1,4603754,9,4.34,4.34,20.07 -sub,auto,2,2,1057673,9,18.80,18.77,19.90 -sub,inplace,2,2,2174871,9,4.59,4.57,19.98 -sub,kernel,2,2,9293172,9,2.15,2.15,20.02 -sub,floor,2,2,2032481,9,9.83,9.82,19.98 -sub,gmp,2,2,8823761,9,2.27,2.27,20.00 -sub,gmpz,2,2,4589719,9,4.34,4.34,19.95 -sub,auto,4,4,1060688,9,18.91,18.86,20.06 -sub,inplace,4,4,1849859,9,5.37,5.37,19.92 -sub,kernel,4,4,6983596,9,2.88,2.83,20.13 -sub,floor,4,4,1875633,9,10.66,10.61,19.99 -sub,gmp,4,4,8031343,9,2.49,2.49,19.98 -sub,gmpz,4,4,4345250,9,4.57,4.55,19.90 -sub,auto,8,8,985911,9,20.40,20.29,20.11 -sub,inplace,8,8,1406241,9,7.13,7.11,20.04 -sub,kernel,8,8,4586261,9,4.38,4.37,20.10 -sub,floor,8,8,1638711,9,12.20,12.18,20.01 -sub,gmp,8,8,5434737,9,3.68,3.68,20.03 -sub,gmpz,8,8,4048611,9,4.98,4.94,20.12 -sub,auto,16,16,785821,9,25.32,24.92,19.83 -sub,inplace,16,16,951910,9,10.51,10.48,20.01 -sub,kernel,16,16,2492413,9,8.02,8.02,20.00 -sub,floor,16,16,1318289,9,15.17,15.16,20.00 -sub,gmp,16,16,3635895,9,5.50,5.50,20.01 -sub,gmpz,16,16,2938012,9,6.80,6.76,19.97 -sub,auto,64,64,304479,9,65.73,65.54,20.01 -sub,inplace,64,64,263164,9,38.01,37.89,20.00 -sub,kernel,64,64,607810,9,32.83,32.43,19.91 -sub,floor,64,64,475208,9,42.10,42.02,20.01 -sub,gmp,64,64,1292662,9,15.45,15.45,19.97 -sub,gmpz,64,64,1194460,9,16.74,16.71,19.99 -sub,auto,256,256,89441,9,223.72,223.58,20.02 -sub,inplace,256,256,68756,9,145.46,145.34,20.00 -sub,kernel,256,256,136738,9,142.87,142.79,19.56 -sub,floor,256,256,126459,9,158.30,158.23,20.03 -sub,gmp,256,256,255663,9,78.23,78.22,20.00 -sub,gmpz,256,256,250482,9,79.84,79.78,20.00 -sub,auto,1024,1024,23754,9,841.99,841.85,20.00 -sub,inplace,1024,1024,17198,9,581.53,581.50,20.04 -sub,kernel,1024,1024,34494,9,578.97,578.90,19.98 -sub,floor,1024,1024,33645,9,594.34,593.94,20.00 -sub,gmp,1024,1024,51298,9,389.84,389.83,20.00 -sub,gmpz,1024,1024,51039,9,391.21,391.18,19.97 -sub,auto,2000,2000,11482,9,1741.72,1741.59,20.00 -sub,inplace,2000,2000,8817,9,1134.18,1133.86,20.00 -sub,kernel,2000,2000,17636,9,1133.25,1133.24,19.99 -sub,floor,2000,2000,17389,9,1149.85,1149.71,19.99 -sub,gmp,2000,2000,41855,9,477.92,477.87,20.02 -sub,gmpz,2000,2000,40603,9,492.57,491.08,19.99 -sub,auto,1024,1,70544,9,283.52,282.73,20.00 -sub,inplace,1024,1,17252,9,579.71,579.64,20.02 -sub,kernel,1024,1,34618,9,577.80,577.73,20.02 -sub,floor,1024,1,33727,9,593.17,592.95,20.01 -sub,gmp,1024,1,85713,9,233.09,232.98,19.98 -sub,gmpz,1024,1,85426,9,234.09,234.06,20.00 -shl,auto,1,13,1209932,9,16.41,16.32,19.89 -shl,inplace,1,13,2470026,9,4.08,4.05,20.13 -shl,kernel,1,13,9626449,9,2.08,2.06,19.97 -shl,kernelip,1,13,5743715,9,1.74,1.73,20.09 -shl,floor,1,13,2117767,9,9.64,9.63,20.42 -shl,gmp,1,13,9626142,9,1.89,1.89,18.18 -shl,gmpz,1,13,5882669,9,3.40,3.40,20.02 -shl,auto,4,13,1074518,9,18.64,18.57,20.02 -shl,inplace,4,13,1938938,9,5.15,5.13,20.07 -shl,kernel,4,13,5831352,9,3.45,3.44,20.14 -shl,kernelip,4,13,3450738,9,2.94,2.91,20.31 -shl,floor,4,13,1755433,9,11.35,11.18,19.96 -shl,gmp,4,13,8657331,9,2.31,2.31,20.01 -shl,gmpz,4,13,4948302,9,4.03,4.02,19.93 -shl,auto,16,13,817158,9,24.55,24.41,20.07 -shl,inplace,16,13,1088184,9,9.16,9.15,19.95 -shl,kernel,16,13,2728064,9,7.36,7.34,20.09 -shl,kernelip,16,13,1389895,9,7.08,6.90,19.69 -shl,floor,16,13,1278807,9,15.18,15.11,19.40 -shl,gmp,16,13,4959276,9,4.04,4.01,20.01 -shl,gmpz,16,13,3458051,9,5.80,5.78,20.05 -shl,auto,256,13,147858,9,135.56,133.34,20.10 -shl,inplace,256,13,107496,9,93.03,92.89,20.01 -shl,kernel,256,13,214522,9,93.44,93.20,20.04 -shl,kernelip,256,13,102308,9,97.71,97.66,20.00 -shl,floor,256,13,177656,9,116.38,116.32,20.68 -shl,gmp,256,13,419887,9,47.64,47.28,20.00 -shl,gmpz,256,13,387011,9,51.67,51.38,19.98 -shl,auto,2000,13,21634,9,917.77,917.28,19.87 -shl,inplace,2000,13,15225,9,657.73,656.35,20.04 -shl,kernel,2000,13,27711,9,718.68,718.32,19.93 -shl,kernelip,2000,13,13981,9,715.33,715.28,20.00 -shl,floor,2000,13,27200,9,738.69,738.12,20.09 -shl,gmp,2000,13,59616,9,335.89,335.64,20.02 -shl,gmpz,2000,13,59117,9,338.58,338.23,20.03 -shl,auto,2000,77,18750,9,1067.05,1065.35,20.01 -shl,inplace,2000,77,13057,9,765.40,764.58,20.01 -shl,kernel,2000,77,23388,9,853.10,851.71,19.96 -shl,kernelip,2000,77,12157,9,822.46,822.13,20.00 -shl,floor,2000,77,22922,9,874.63,872.01,20.05 -shl,gmp,2000,77,59212,9,337.73,337.72,20.00 -shl,gmpz,2000,77,59096,9,338.39,338.37,20.00 -shr,auto,1,13,1988364,9,10.12,10.06,20.12 -shr,inplace,1,13,2752092,9,3.62,3.58,19.98 -shr,kernel,1,13,11753062,9,1.70,1.70,20.04 -shr,floor,1,13,8824226,9,2.27,2.27,20.03 -shr,gmp,1,13,10589002,9,1.89,1.89,20.01 -shr,gmpz,1,13,6209146,9,3.21,3.21,19.96 -shr,auto,4,13,961189,9,21.35,20.72,20.61 -shr,inplace,4,13,2066358,9,4.69,4.68,19.43 -shr,kernel,4,13,5874827,9,3.41,3.40,20.04 -shr,floor,4,13,1702465,9,11.81,11.77,20.11 -shr,gmp,4,13,8594496,9,2.32,2.31,19.99 -shr,gmpz,4,13,5043387,9,3.96,3.95,20.02 -shr,auto,16,13,783813,9,25.68,25.58,20.14 -shr,inplace,16,13,1147585,9,8.71,8.66,20.00 -shr,kernel,16,13,2450991,9,8.03,7.95,19.71 -shr,floor,16,13,1191568,9,16.76,16.69,19.97 -shr,gmp,16,13,4709545,9,4.27,4.24,20.20 -shr,gmpz,16,13,3173529,9,6.15,6.09,19.58 -shr,auto,256,13,146820,9,136.21,136.15,20.00 -shr,inplace,256,13,106473,9,93.75,93.62,20.01 -shr,kernel,256,13,181488,9,109.99,109.78,19.96 -shr,floor,256,13,152231,9,131.23,131.02,19.97 -shr,gmp,256,13,416132,9,48.05,47.83,19.99 -shr,gmpz,256,13,394979,9,50.59,50.55,19.99 -shr,auto,2000,13,21019,9,951.09,949.71,19.99 -shr,inplace,2000,13,15227,9,656.82,656.76,20.02 -shr,kernel,2000,13,24637,9,811.81,811.80,20.09 -shr,floor,2000,13,23046,9,861.00,833.92,19.82 -shr,gmp,2000,13,59488,9,335.98,335.82,19.99 -shr,gmpz,2000,13,59019,9,338.87,338.74,20.00 -shr,auto,2000,77,18452,9,1083.27,1082.12,19.99 -shr,inplace,2000,77,13078,9,764.84,764.43,20.01 -shr,kernel,2000,77,24139,9,828.48,828.37,20.00 -shr,floor,2000,77,23509,9,850.71,849.84,20.00 -shr,gmp,2000,77,59533,9,335.93,335.91,20.00 -shr,gmpz,2000,77,58959,9,339.27,339.18,20.00 -mul,auto,1,1,1028227,9,18.89,18.84,19.44 -mul,gmp,1,1,5339567,9,3.75,3.61,19.93 -mul,gmpz,1,1,5042168,9,3.97,3.97,20.01 -mul,auto,2,2,724262,9,27.56,27.37,19.94 -mul,kernel,2,2,2830993,9,7.51,7.49,21.28 -mul,floor,2,2,1337485,9,15.05,15.00,20.17 -mul,gmp,2,2,5046744,9,3.98,3.95,20.05 -mul,gmpz,2,2,3304479,9,6.02,5.98,19.91 -mul,auto,3,3,688903,9,29.25,29.00,20.14 -mul,kernel,3,3,2366568,9,9.18,9.13,21.75 -mul,floor,3,3,1211163,9,16.62,16.38,20.08 -mul,gmp,3,3,2490956,9,7.98,7.78,20.08 -mul,gmpz,3,3,2038030,9,9.81,9.76,20.01 -mul,auto,4,4,637480,9,31.50,31.39,20.07 -mul,kernel,4,4,1898350,9,11.00,10.97,20.89 -mul,floor,4,4,1083716,9,18.53,18.46,20.08 -mul,gmp,4,4,2105527,9,9.53,9.47,20.08 -mul,gmpz,4,4,1683148,9,11.91,11.87,20.07 -mul,auto,6,6,481165,9,41.38,40.95,19.86 -mul,kernel,6,6,1218924,9,17.29,17.28,21.08 -mul,floor,6,6,816483,9,24.34,24.20,19.87 -mul,gmp,6,6,1245872,9,16.00,15.64,20.18 -mul,gmpz,6,6,1116327,9,17.87,17.85,19.96 -mul,auto,8,8,430611,9,46.37,46.24,20.02 -mul,kernel,8,8,818226,9,25.16,24.97,20.59 -mul,floor,8,8,623634,9,32.04,31.93,20.01 -mul,gmp,8,8,737620,9,27.22,27.01,20.06 -mul,gmpz,8,8,681142,9,28.94,28.52,19.73 -mul,auto,12,12,290396,9,68.89,68.79,20.00 -mul,kernel,12,12,429865,9,47.10,47.02,20.25 -mul,floor,12,12,371508,9,53.94,53.89,20.04 -mul,gmp,12,12,411804,9,49.99,48.55,20.95 -mul,gmpz,12,12,393836,9,50.77,50.75,20.04 -mul,auto,16,16,199117,9,100.44,100.36,20.01 -mul,kernel,16,16,254229,9,79.51,79.42,20.22 -mul,floor,16,16,232260,9,86.54,86.39,20.11 -mul,gmp,16,16,240628,9,83.21,83.16,20.02 -mul,gmpz,16,16,236523,9,84.62,84.56,20.02 -mul,auto,32,32,91484,9,218.79,218.46,20.03 -mul,kernel,32,32,106992,9,187.95,187.46,20.11 -mul,floor,32,32,102087,9,196.08,195.78,20.03 -mul,gmp,32,32,74649,9,268.01,267.85,20.25 -mul,gmpz,32,32,69540,9,269.79,269.65,18.92 -mul,auto,64,64,38993,9,511.90,511.49,19.97 -mul,kernel,64,64,41282,9,484.45,483.46,20.00 -mul,floor,64,64,40587,9,492.29,491.53,19.99 -mul,gmp,64,64,23335,9,855.42,855.02,19.97 -mul,gmpz,64,64,23282,9,858.91,858.51,20.00 -mul,auto,128,128,11571,9,1727.79,1725.56,19.99 -mul,kernel,128,128,11841,9,1693.77,1688.92,20.08 -mul,floor,128,128,11763,9,1701.07,1698.60,20.02 -mul,gmp,128,128,7380,9,2709.74,2708.98,20.13 -mul,gmpz,128,128,7085,9,2808.73,2722.49,19.73 -mul,auto,256,256,3207,9,6238.98,6236.09,20.01 -mul,kernel,256,256,3245,9,6169.81,6163.50,20.02 -mul,floor,256,256,3242,9,6173.75,6172.18,20.02 -mul,gmp,256,256,2556,9,7827.04,7826.00,20.01 -mul,gmpz,256,256,2552,9,7840.10,7834.62,20.01 -mul,auto,512,512,1020,9,19607.43,19578.55,20.01 -mul,kernel,512,512,1046,9,19090.33,19073.96,19.97 -mul,floor,512,512,1044,9,19164.29,19155.73,20.01 -mul,gmp,512,512,963,9,20769.87,20765.87,20.01 -mul,gmpz,512,512,941,9,21560.89,20831.31,20.35 -mul,auto,1000,1000,332,9,60245.07,60122.47,20.02 -mul,kernel,1000,1000,337,9,59476.06,59423.24,20.06 -mul,floor,1000,1000,337,9,59447.01,59419.42,20.04 -mul,gmp,1000,1000,376,9,53286.43,53274.42,20.08 -mul,gmpz,1000,1000,375,9,53369.49,53346.62,20.02 -mul,auto,2000,2000,113,9,178208.89,178046.33,20.14 -mul,kernel,2000,2000,114,9,176508.97,176386.66,20.12 -mul,floor,2000,2000,114,9,176634.82,176443.71,20.14 -mul,gmp,2000,2000,139,9,144129.16,144112.05,20.03 -mul,gmpz,2000,2000,139,9,149488.87,144142.41,20.91 -mul,auto,2000,100,1120,9,17855.26,17844.57,20.00 -mul,kernel,2000,100,1133,9,17657.43,17654.77,20.07 -mul,floor,2000,100,1132,9,17681.71,17675.93,20.02 -mul,gmp,2000,100,556,9,36094.73,36003.68,20.06 -mul,gmpz,2000,100,556,9,35964.97,35882.06,19.99 -sqr,auto,4,4,608842,9,32.96,32.75,20.05 -sqr,kernel,4,4,2221095,9,8.99,8.90,19.99 -sqr,floor,4,4,1219731,9,16.88,16.83,20.58 -sqr,gmp,4,4,3470567,9,5.78,5.73,20.24 -sqr,gmpz,4,4,2216012,9,8.76,8.61,19.45 -sqr,auto,16,16,250117,9,79.89,79.76,19.99 -sqr,kernel,16,16,342220,9,58.47,58.40,20.03 -sqr,floor,16,16,320669,9,68.94,68.90,22.11 -sqr,gmp,16,16,399347,9,49.82,49.79,19.90 -sqr,gmpz,16,16,383668,9,52.15,52.11,20.01 -sqr,auto,64,64,66987,9,298.55,298.12,20.01 -sqr,kernel,64,64,74206,9,269.51,269.40,20.00 -sqr,floor,64,64,72503,9,279.96,279.39,20.29 -sqr,gmp,64,64,36409,9,567.17,549.40,20.94 -sqr,gmpz,64,64,36324,9,550.75,549.87,20.00 -sqr,auto,512,512,1879,9,10650.06,10642.52,20.01 -sqr,kernel,512,512,1899,9,10518.72,10514.04,19.97 -sqr,floor,512,512,1899,9,10530.70,10525.67,20.00 -sqr,gmp,512,512,1329,9,15057.82,15050.69,20.01 -sqr,gmpz,512,512,1331,9,15041.95,15036.86,20.02 -sqr,auto,2000,2000,203,9,98670.79,98607.71,20.03 -sqr,kernel,2000,2000,206,9,97549.83,97464.60,20.12 -sqr,floor,2000,2000,204,9,98139.81,98108.00,20.02 -sqr,gmp,2000,2000,199,9,102488.24,100575.86,20.35 -sqr,gmpz,2000,2000,192,9,100700.76,100651.23,19.41 -divrem,auto,2,1,497774,9,39.99,39.78,19.93 -divrem,kernel,2,1,3665563,9,5.46,5.35,19.96 -divrem,floor,2,1,1591896,9,12.53,12.51,19.96 -divrem,gmp,2,1,2986211,9,6.70,6.69,20.01 -divrem,gmpz,2,1,1733405,9,11.50,11.46,19.94 -divrem,auto,8,4,170093,9,117.28,115.84,19.91 -divrem,kernel,8,4,398643,9,49.95,49.68,19.91 -divrem,floor,8,4,312360,9,63.23,62.96,19.77 -divrem,gmp,8,4,446791,9,44.91,44.57,20.24 -divrem,gmpz,8,4,409623,9,47.21,46.97,19.65 -divrem,auto,32,16,53937,9,370.86,369.94,20.00 -divrem,kernel,32,16,68830,9,291.29,290.56,20.05 -divrem,floor,32,16,65939,9,303.22,302.54,20.18 -divrem,gmp,32,16,105662,9,189.91,189.41,20.08 -divrem,gmpz,32,16,104130,9,192.68,191.19,20.07 -divrem,auto,128,64,5982,9,3343.08,3342.19,20.00 -divrem,kernel,128,64,6259,9,3196.40,3194.38,20.01 -divrem,floor,128,64,6194,9,3210.66,3208.60,19.89 -divrem,gmp,128,64,11621,9,1721.10,1719.99,20.00 -divrem,gmpz,128,64,11608,9,1779.73,1722.48,20.90 -divrem,auto,512,256,672,9,29681.78,29669.84,19.96 -divrem,kernel,512,256,706,9,28376.83,28352.61,20.05 -divrem,floor,512,256,693,9,28840.02,28826.50,20.00 -divrem,gmp,512,256,1234,9,16211.85,16208.39,20.03 -divrem,gmpz,512,256,1231,9,16260.66,16257.13,20.02 -divrem,auto,2000,1000,110,9,182286.25,182200.82,20.05 -divrem,kernel,2000,1000,111,9,180854.68,180788.84,20.07 -divrem,floor,2000,1000,111,9,180940.17,180760.33,20.09 -divrem,gmp,2000,1000,145,9,137972.68,137951.09,20.01 -divrem,gmpz,2000,1000,139,9,143167.24,138130.73,20.09 -divrem,auto,4000,2000,43,9,467424.53,465693.88,20.10 -divrem,kernel,4000,2000,44,9,467001.70,464064.00,20.55 -divrem,floor,4000,2000,43,9,466584.35,464900.88,20.06 -divrem,gmp,4000,2000,61,9,331962.49,331864.62,20.25 -divrem,gmpz,4000,2000,61,9,332143.92,331885.64,20.27 -divrem,auto,2000,100,140,9,143053.61,143035.37,20.03 -divrem,kernel,2000,100,138,9,145150.30,145124.28,20.03 -divrem,floor,2000,100,138,9,145004.64,144868.80,20.01 -divrem,gmp,2000,100,278,9,72013.75,71983.53,20.02 -divrem,gmpz,2000,100,277,9,74882.24,72618.91,20.86 -divrem,auto,65536,1,103,9,188543.75,188274.09,19.47 -divrem,kernel,65536,1,120,9,167536.56,167256.91,20.10 -divrem,floor,65536,1,115,9,174761.33,174502.60,20.10 -divrem,gmp,65536,1,136,9,148103.00,148095.48,20.15 -divrem,gmpz,65536,1,136,9,148124.12,148116.55,20.15 -fromchars,auto,4,10,100248,9,199.25,198.34,19.98 -fromchars,kernel,4,10,443077,9,44.64,44.45,19.78 -fromchars,gmp,4,10,625711,9,31.97,31.91,20.01 -fromchars,gmpz,4,10,286389,9,69.52,68.97,19.92 -fromchars,auto,16,10,47480,9,429.70,416.67,20.54 -fromchars,kernel,16,10,83925,9,238.55,229.52,19.99 -fromchars,gmp,16,10,161196,9,123.33,123.17,19.89 -fromchars,gmpz,16,10,77840,9,255.47,254.87,19.94 -fromchars,auto,64,10,7230,9,2796.80,2678.12,20.13 -fromchars,kernel,64,10,8962,9,2096.14,2012.76,19.00 -fromchars,gmp,64,10,21540,9,929.42,928.37,20.02 -fromchars,gmpz,64,10,14151,9,1409.92,1409.29,19.96 -fromchars,auto,256,10,686,9,28100.25,28033.18,19.56 -fromchars,kernel,256,10,765,9,25767.25,24962.85,19.61 -fromchars,gmp,256,10,2476,9,8086.84,8079.07,20.13 -fromchars,gmpz,256,10,1916,9,10084.45,9995.28,19.88 -fromchars,auto,2000,10,48,9,422034.17,421810.02,20.26 -fromchars,kernel,2000,10,50,9,401566.02,401344.82,20.13 -fromchars,gmp,2000,10,110,9,182366.71,182277.92,20.08 -fromchars,gmpz,2000,10,102,9,197649.09,197615.27,20.19 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed1.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed1.csv deleted file mode 100644 index 649c8be4..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed1.csv +++ /dev/null @@ -1,24 +0,0 @@ -# spot checks seed=1 bin=/home/mborland/big-int-item1-base/bin/shape_sweep.base64 pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,1333,3,15005.20,15003.86,20.00 -add,inplace,16384,16384,1073,3,9322.52,9322.38,20.02 -add,kernel,16384,16384,2150,3,9307.38,9304.63,20.02 -add,floor,16384,16384,2145,3,9326.73,9326.69,20.01 -add,gmp,16384,16384,2886,3,6930.68,6930.67,20.00 -add,gmpz,16384,16384,2896,3,6907.28,6907.17,20.01 -mul,auto,2000,2000,114,3,176899.65,176844.89,20.17 -mul,kernel,2000,2000,114,3,176510.29,176507.56,20.13 -mul,floor,2000,2000,114,3,176878.80,176871.19,20.17 -mul,gmp,2000,2000,139,3,143960.45,143950.60,20.01 -mul,gmpz,2000,2000,139,3,143947.65,143870.13,20.01 -mul,auto,16384,16384,6,3,3740843.00,3739234.50,22.44 -mul,kernel,16384,16384,6,3,3741315.50,3741093.83,22.45 -mul,floor,16384,16384,6,3,3747882.67,3741536.00,22.48 -mul,gmp,16384,16384,12,3,1767325.08,1767044.92,21.21 -mul,gmpz,16384,16384,12,3,1769182.83,1768649.33,21.23 -divrem,auto,4096,2048,41,3,493351.02,493347.98,20.23 -divrem,kernel,4096,2048,41,3,489031.22,488859.59,20.05 -divrem,floor,4096,2048,41,3,490565.66,490520.80,20.11 -divrem,gmp,4096,2048,54,3,366651.46,366613.98,19.80 -divrem,gmpz,4096,2048,55,3,367188.65,366662.71,20.22 diff --git a/tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed2.csv b/tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed2.csv deleted file mode 100644 index 844014b3..00000000 --- a/tests/beman/big_int/perf/item1/x64_gcc14_base_spot_seed2.csv +++ /dev/null @@ -1,24 +0,0 @@ -# spot checks seed=2 bin=/home/mborland/big-int-item1-base/bin/shape_sweep.base64 pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,1348,3,14847.76,14845.60,20.01 -add,inplace,16384,16384,1076,3,9299.34,9299.26,20.01 -add,kernel,16384,16384,2154,3,9288.21,9287.97,20.02 -add,floor,16384,16384,2149,3,9307.02,9306.99,20.00 -add,gmp,16384,16384,2881,3,6941.72,6941.02,20.01 -add,gmpz,16384,16384,2879,3,6943.86,6943.67,19.99 -mul,auto,2000,2000,113,3,177053.29,176760.51,20.00 -mul,kernel,2000,2000,114,3,176513.31,176483.09,20.12 -mul,floor,2000,2000,114,3,176530.62,176473.11,20.13 -mul,gmp,2000,2000,139,3,145255.02,144078.73,20.19 -mul,gmpz,2000,2000,135,3,155610.47,150907.02,20.97 -mul,auto,16384,16384,6,3,3755523.50,3753062.00,22.65 -mul,kernel,16384,16384,6,3,3758244.17,3755581.83,22.56 -mul,floor,16384,16384,6,3,3743913.50,3736755.00,22.45 -mul,gmp,16384,16384,12,3,1773819.25,1764473.83,21.27 -mul,gmpz,16384,16384,12,3,1766142.08,1766047.83,21.20 -divrem,auto,4096,2048,41,3,489899.90,488919.20,20.08 -divrem,kernel,4096,2048,42,3,487398.90,486833.14,20.49 -divrem,floor,4096,2048,41,3,489369.66,488265.83,20.06 -divrem,gmp,4096,2048,54,3,370644.13,370575.02,20.02 -divrem,gmpz,4096,2048,55,3,370625.07,370493.18,20.38 diff --git a/tests/beman/big_int/perf/item1/x64_new64_seed1a.csv b/tests/beman/big_int/perf/item1/x64_new64_seed1a.csv deleted file mode 100644 index 402d034a..00000000 --- a/tests/beman/big_int/perf/item1/x64_new64_seed1a.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T17:00:35Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2962502,9,6.73,6.66,20.03 -add,inplace,1,1,2029362,9,4.92,4.91,19.96 -add,kernel,1,1,10480457,9,1.95,1.90,20.35 -add,floor,1,1,2035514,9,9.82,9.82,19.99 -add,gmp,1,1,8822761,9,2.27,2.27,20.00 -add,gmpz,1,1,4802919,9,4.16,4.16,20.01 -add,auto,2,2,1255750,9,15.91,15.86,19.98 -add,inplace,2,2,1601019,9,6.26,6.07,19.98 -add,kernel,2,2,8283945,9,2.41,2.33,19.94 -add,floor,2,2,1949435,9,10.28,10.23,20.05 -add,gmp,2,2,8753242,9,2.28,2.27,19.92 -add,gmpz,2,2,4743114,9,4.23,4.22,20.04 -add,auto,4,4,1298091,9,15.41,15.41,20.00 -add,inplace,4,4,1747747,9,5.71,5.70,19.98 -add,kernel,4,4,6475829,9,3.12,3.08,20.15 -add,floor,4,4,1800164,9,11.12,11.06,20.03 -add,gmp,4,4,7893788,9,2.53,2.53,19.99 -add,gmpz,4,4,4507550,9,4.43,4.43,19.97 -add,auto,8,8,1193862,9,16.75,16.75,20.01 -add,inplace,8,8,1413067,9,7.07,7.07,20.01 -add,kernel,8,8,4318515,9,4.62,4.61,19.98 -add,floor,8,8,1585630,9,12.59,12.52,19.98 -add,gmp,8,8,5441151,9,3.68,3.67,20.06 -add,gmpz,8,8,4190526,9,4.75,4.72,19.88 -add,auto,16,16,954205,9,20.93,20.89,19.97 -add,inplace,16,16,842792,9,11.88,11.81,20.03 -add,kernel,16,16,2600166,9,7.66,7.64,19.92 -add,floor,16,16,1282531,9,15.61,15.60,20.03 -add,gmp,16,16,3634700,9,5.50,5.50,20.03 -add,gmpz,16,16,3042912,9,6.58,6.55,20.00 -add,auto,64,64,346832,9,57.55,57.48,19.96 -add,inplace,64,64,208016,9,48.06,48.05,20.00 -add,kernel,64,64,599652,9,33.44,33.05,20.04 -add,floor,64,64,481444,9,41.56,41.29,20.02 -add,gmp,64,64,1294717,9,15.45,15.42,20.00 -add,gmpz,64,64,1212810,9,16.49,16.46,20.00 -add,auto,256,256,93547,9,213.86,213.65,20.01 -add,inplace,256,256,50950,9,196.51,196.40,20.03 -add,kernel,256,256,139648,9,143.19,143.14,20.00 -add,floor,256,256,125574,9,159.26,159.15,20.01 -add,gmp,256,256,255676,9,78.23,78.21,20.03 -add,gmpz,256,256,251595,9,79.49,79.39,19.99 -add,auto,1024,1024,24995,9,800.31,800.21,20.00 -add,inplace,1024,1024,12657,9,790.10,789.88,20.01 -add,kernel,1024,1024,34623,9,577.83,577.67,20.01 -add,floor,1024,1024,33642,9,594.56,594.39,20.00 -add,gmp,1024,1024,51215,9,390.50,390.42,20.00 -add,gmpz,1024,1024,51083,9,391.54,391.48,20.01 -add,auto,2000,2000,13027,9,1535.30,1535.17,20.00 -add,inplace,2000,2000,6569,9,1521.12,1520.90,19.99 -add,kernel,2000,2000,17662,9,1132.38,1132.32,20.00 -add,floor,2000,2000,17382,9,1150.53,1150.31,20.00 -add,gmp,2000,2000,43237,9,462.60,462.56,20.02 -add,gmpz,2000,2000,42260,9,473.16,471.40,19.97 -add,auto,1024,1,79201,9,252.40,252.18,19.99 -add,inplace,1024,1,1958107,9,5.12,5.10,20.11 -add,kernel,1024,1,34585,9,577.40,577.38,19.98 -add,floor,1024,1,33680,9,593.85,593.78,20.00 -add,gmp,1024,1,85778,9,232.96,232.34,19.98 -add,gmpz,1024,1,85415,9,234.15,233.74,19.99 -sub,auto,1,1,2573666,9,7.76,7.74,20.00 -sub,inplace,1,1,2139120,9,4.68,4.68,20.03 -sub,kernel,1,1,13236499,9,1.51,1.51,20.03 -sub,floor,1,1,10588453,9,1.89,1.89,20.00 -sub,gmp,1,1,8824222,9,2.27,2.27,20.01 -sub,gmpz,1,1,4603633,9,4.35,4.34,20.59 -sub,auto,2,2,1238713,9,15.88,15.84,19.68 -sub,inplace,2,2,1930301,9,5.18,5.15,20.05 -sub,kernel,2,2,9504089,9,2.11,2.09,20.11 -sub,floor,2,2,1997813,9,10.01,10.01,20.01 -sub,gmp,2,2,8809857,9,2.27,2.27,19.98 -sub,gmpz,2,2,4221588,9,4.72,4.70,19.92 -sub,auto,4,4,1207591,9,16.58,16.56,20.06 -sub,inplace,4,4,1779911,9,5.59,5.59,19.92 -sub,kernel,4,4,6936672,9,2.88,2.88,19.97 -sub,floor,4,4,1854055,9,10.79,10.78,20.01 -sub,gmp,4,4,7571720,9,2.64,2.63,19.98 -sub,gmpz,4,4,4300611,9,4.66,4.62,20.00 -sub,auto,8,8,1113975,9,17.96,17.94,20.01 -sub,inplace,8,8,1438650,9,6.96,6.95,20.02 -sub,kernel,8,8,4509855,9,4.42,4.39,19.92 -sub,floor,8,8,1610342,9,12.41,12.39,19.99 -sub,gmp,8,8,5419298,9,3.69,3.69,19.99 -sub,gmpz,8,8,3969365,9,5.05,5.03,20.08 -sub,auto,16,16,950788,9,21.01,20.85,19.96 -sub,inplace,16,16,883532,9,11.28,11.22,19.95 -sub,kernel,16,16,2489842,9,8.02,8.02,19.97 -sub,floor,16,16,1292961,9,15.46,15.44,19.99 -sub,gmp,16,16,3636261,9,5.50,5.49,20.03 -sub,gmpz,16,16,2936957,9,6.85,6.78,20.09 -sub,auto,64,64,340501,9,58.76,58.70,20.00 -sub,inplace,64,64,212290,9,47.10,47.08,20.00 -sub,kernel,64,64,611122,9,32.73,32.72,20.06 -sub,floor,64,64,474424,9,42.18,42.04,20.00 -sub,gmp,64,64,1294710,9,15.45,15.45,20.00 -sub,gmpz,64,64,1194619,9,16.74,16.71,19.99 -sub,auto,256,256,92688,9,215.88,215.84,20.02 -sub,inplace,256,256,51048,9,195.93,195.89,20.00 -sub,kernel,256,256,140407,9,142.45,142.42,20.01 -sub,floor,256,256,126574,9,158.11,157.96,20.02 -sub,gmp,256,256,255557,9,78.24,78.24,20.00 -sub,gmpz,256,256,250442,9,79.84,79.79,20.00 -sub,auto,1024,1024,24748,9,808.16,808.03,20.02 -sub,inplace,1024,1024,12634,9,791.54,791.48,20.00 -sub,kernel,1024,1024,34592,9,577.73,577.72,19.99 -sub,floor,1024,1024,33683,9,593.68,593.50,20.05 -sub,gmp,1024,1024,51315,9,389.76,389.75,20.00 -sub,gmpz,1024,1024,51124,9,391.21,391.15,20.00 -sub,auto,2000,2000,12910,9,1549.44,1549.27,20.01 -sub,inplace,2000,2000,6580,9,1519.93,1519.89,20.00 -sub,kernel,2000,2000,17674,9,1131.65,1131.63,20.00 -sub,floor,2000,2000,17438,9,1146.98,1146.80,20.02 -sub,gmp,2000,2000,42573,9,469.72,469.71,20.00 -sub,gmpz,2000,2000,42714,9,468.20,466.20,20.01 -sub,auto,1024,1,79121,9,252.74,252.46,20.00 -sub,inplace,1024,1,2142796,9,4.65,4.64,19.95 -sub,kernel,1024,1,34641,9,576.50,576.50,19.97 -sub,floor,1024,1,33749,9,592.58,592.35,20.00 -sub,gmp,1024,1,85464,9,233.99,233.87,20.00 -sub,gmpz,1024,1,85285,9,234.48,234.12,20.00 -shl,auto,1,13,1575634,9,12.63,12.52,19.92 -shl,inplace,1,13,2716730,9,3.69,3.68,20.04 -shl,kernel,1,13,9626378,9,2.08,2.07,20.00 -shl,kernelip,1,13,5621489,9,1.77,1.73,19.83 -shl,floor,1,13,2077730,9,9.83,9.82,20.42 -shl,gmp,1,13,9527291,9,2.08,2.08,19.85 -shl,gmpz,1,13,6110903,9,3.27,3.27,20.00 -shl,auto,4,13,1489231,9,13.46,13.37,20.03 -shl,inplace,4,13,2160959,9,4.63,4.61,20.01 -shl,kernel,4,13,5769038,9,3.50,3.49,20.19 -shl,kernelip,4,13,3354908,9,3.01,2.97,20.24 -shl,floor,4,13,1775674,9,11.19,11.17,19.89 -shl,gmp,4,13,7991269,9,2.50,2.50,20.00 -shl,gmpz,4,13,4946904,9,4.04,4.04,20.02 -shl,auto,16,13,1171312,9,17.06,16.99,19.97 -shl,inplace,16,13,1087273,9,9.22,9.17,20.08 -shl,kernel,16,13,2682060,9,7.45,7.44,19.99 -shl,kernelip,16,13,1384774,9,7.15,7.06,19.79 -shl,floor,16,13,1336669,9,15.63,15.55,20.97 -shl,gmp,16,13,4588201,9,4.37,4.36,20.08 -shl,gmpz,16,13,3434496,9,5.83,5.82,20.07 -shl,auto,256,13,163974,9,122.01,121.93,20.01 -shl,inplace,256,13,97997,9,102.27,101.92,20.04 -shl,kernel,256,13,210816,9,95.07,94.75,20.04 -shl,kernelip,256,13,102612,9,97.53,97.33,20.01 -shl,floor,256,13,177831,9,116.51,116.39,20.72 -shl,gmp,256,13,424103,9,47.31,47.15,20.06 -shl,gmpz,256,13,400336,9,50.01,49.87,20.02 -shl,auto,2000,13,25883,9,772.85,772.46,20.00 -shl,inplace,2000,13,13498,9,740.60,737.98,19.98 -shl,kernel,2000,13,27823,9,719.10,718.96,20.02 -shl,kernelip,2000,13,13980,9,715.21,715.06,20.00 -shl,floor,2000,13,27186,9,738.26,738.13,20.07 -shl,gmp,2000,13,59632,9,335.46,335.37,20.02 -shl,gmpz,2000,13,58892,9,338.66,337.88,19.95 -shl,auto,2000,77,25786,9,774.85,774.73,20.00 -shl,inplace,2000,77,13490,9,741.40,739.88,20.01 -shl,kernel,2000,77,23467,9,854.17,851.27,20.03 -shl,kernelip,2000,77,12166,9,822.02,822.01,20.00 -shl,floor,2000,77,22897,9,874.77,873.94,20.03 -shl,gmp,2000,77,59112,9,341.89,339.93,20.20 -shl,gmpz,2000,77,58341,9,343.82,342.34,20.05 -shr,auto,1,13,2418427,9,8.22,8.20,19.91 -shr,inplace,1,13,3059258,9,3.31,3.28,20.24 -shr,kernel,1,13,11748798,9,1.70,1.70,19.99 -shr,floor,1,13,8824177,9,2.27,2.27,20.06 -shr,gmp,1,13,10398836,9,1.93,1.92,20.01 -shr,gmpz,1,13,5771325,9,3.47,3.47,20.00 -shr,auto,4,13,1239759,9,16.12,16.08,20.01 -shr,inplace,4,13,2105277,9,4.76,4.72,20.05 -shr,kernel,4,13,5771305,9,3.49,3.47,20.22 -shr,floor,4,13,1800537,9,11.12,11.06,20.03 -shr,gmp,4,13,8590282,9,2.34,2.32,20.06 -shr,gmpz,4,13,4423008,9,4.46,4.41,19.70 -shr,auto,16,13,989289,9,20.23,20.20,20.01 -shr,inplace,16,13,1136702,9,8.82,8.78,20.05 -shr,kernel,16,13,1857816,9,10.77,10.75,20.02 -shr,floor,16,13,1264229,9,15.88,15.78,20.08 -shr,gmp,16,13,4634023,9,4.31,4.31,20.01 -shr,gmpz,16,13,2710927,9,7.42,7.28,20.02 -shr,auto,256,13,160032,9,124.81,124.69,20.00 -shr,inplace,256,13,98260,9,101.70,101.63,19.99 -shr,kernel,256,13,181227,9,110.54,110.39,20.04 -shr,floor,256,13,153219,9,130.39,130.23,19.98 -shr,gmp,256,13,418031,9,47.90,47.82,20.04 -shr,gmpz,256,13,391631,9,50.89,50.67,19.95 -shr,auto,2000,13,26651,9,749.53,748.63,19.98 -shr,inplace,2000,13,13524,9,738.58,737.01,19.98 -shr,kernel,2000,13,24632,9,811.96,811.90,20.06 -shr,floor,2000,13,24024,9,831.93,831.59,19.99 -shr,gmp,2000,13,59595,9,336.15,335.62,20.05 -shr,gmpz,2000,13,58658,9,340.09,339.41,19.95 -shr,auto,2000,77,26738,9,748.04,747.47,20.01 -shr,inplace,2000,77,13518,9,740.13,739.84,20.01 -shr,kernel,2000,77,24055,9,831.48,831.47,20.00 -shr,floor,2000,77,23442,9,853.47,852.24,20.00 -shr,gmp,2000,77,59448,9,336.40,336.17,20.01 -shr,gmpz,2000,77,58804,9,339.58,339.08,19.97 -mul,auto,1,1,1224439,9,16.33,16.32,20.00 -mul,gmp,1,1,5906193,9,3.37,3.37,19.95 -mul,gmpz,1,1,4948325,9,4.04,4.04,20.00 -mul,auto,2,2,1058513,9,18.89,18.88,20.00 -mul,kernel,2,2,2834769,9,7.62,7.58,21.62 -mul,floor,2,2,1363508,9,14.99,14.88,20.41 -mul,gmp,2,2,5189171,9,3.85,3.83,20.00 -mul,gmpz,2,2,3232863,9,6.16,6.09,19.89 -mul,auto,3,3,984125,9,20.34,20.29,20.04 -mul,kernel,3,3,2385504,9,8.95,8.93,21.36 -mul,floor,3,3,1230324,9,16.40,16.31,20.16 -mul,gmp,3,3,2530362,9,7.94,7.81,20.01 -mul,gmpz,3,3,1982705,9,10.00,9.98,19.85 -mul,auto,4,4,892415,9,22.42,22.34,20.01 -mul,kernel,4,4,1932691,9,10.91,10.88,21.12 -mul,floor,4,4,1115209,9,18.18,18.12,20.30 -mul,gmp,4,4,2060716,9,9.68,9.67,19.97 -mul,gmpz,4,4,1644343,9,12.17,12.16,20.02 -mul,auto,6,6,710377,9,28.06,28.05,19.93 -mul,kernel,6,6,1215126,9,17.16,17.15,20.87 -mul,floor,6,6,811742,9,24.34,24.32,19.76 -mul,gmp,6,6,1252509,9,15.97,15.95,20.01 -mul,gmpz,6,6,1098013,9,18.21,18.20,20.04 -mul,auto,8,8,552852,9,36.20,36.14,20.03 -mul,kernel,8,8,804208,9,25.42,25.34,20.44 -mul,floor,8,8,619844,9,32.34,32.24,20.07 -mul,gmp,8,8,732692,9,27.15,26.95,19.88 -mul,gmpz,8,8,686247,9,29.33,29.11,20.15 -mul,auto,12,12,340598,9,58.75,58.72,20.01 -mul,kernel,12,12,420838,9,48.13,48.09,20.25 -mul,floor,12,12,364609,9,54.87,54.84,20.01 -mul,gmp,12,12,391646,9,50.90,50.74,19.93 -mul,gmpz,12,12,387966,9,51.63,51.50,20.06 -mul,auto,16,16,222287,9,90.04,89.73,20.01 -mul,kernel,16,16,251738,9,81.26,81.16,20.46 -mul,floor,16,16,228798,9,88.04,87.82,20.13 -mul,gmp,16,16,242430,9,82.57,82.36,20.02 -mul,gmpz,16,16,235949,9,84.82,84.67,20.01 -mul,auto,32,32,98593,9,202.84,202.42,20.01 -mul,kernel,32,32,100646,9,207.40,206.51,20.90 -mul,floor,32,32,95641,9,209.32,208.90,20.04 -mul,gmp,32,32,68041,9,292.32,290.98,19.90 -mul,gmpz,32,32,71598,9,277.94,277.17,19.91 -mul,auto,64,64,38676,9,516.33,515.61,19.97 -mul,kernel,64,64,40597,9,484.83,484.38,19.69 -mul,floor,64,64,40355,9,495.08,494.60,19.98 -mul,gmp,64,64,22750,9,879.59,879.10,20.02 -mul,gmpz,64,64,22721,9,879.59,877.33,19.98 -mul,auto,128,128,11581,9,1729.61,1725.94,20.03 -mul,kernel,128,128,11700,9,1723.00,1721.03,20.15 -mul,floor,128,128,11628,9,1719.97,1717.75,20.00 -mul,gmp,128,128,7188,9,2782.57,2782.18,20.00 -mul,gmpz,128,128,7221,9,2770.59,2759.08,19.99 -mul,auto,256,256,3209,9,6231.59,6225.66,20.03 -mul,kernel,256,256,3237,9,6246.58,6175.68,20.17 -mul,floor,256,256,3210,9,6248.22,6199.05,20.06 -mul,gmp,256,256,2515,9,7954.80,7944.65,20.05 -mul,gmpz,256,256,2506,9,7973.22,7921.95,19.99 -mul,auto,512,512,1043,9,19210.71,19191.47,20.05 -mul,kernel,512,512,1032,9,19348.34,19338.00,19.97 -mul,floor,512,512,1030,9,19420.18,19413.51,20.00 -mul,gmp,512,512,942,9,21204.07,21020.15,19.94 -mul,gmpz,512,512,947,9,20989.69,20841.79,19.85 -mul,auto,1000,1000,336,9,59627.71,59586.72,20.04 -mul,kernel,1000,1000,337,9,59568.19,59536.55,20.09 -mul,floor,1000,1000,336,9,59524.84,59491.01,20.00 -mul,gmp,1000,1000,368,9,53987.76,53662.93,19.87 -mul,gmpz,1000,1000,373,9,53517.59,53317.96,19.96 -mul,auto,2000,2000,114,9,176444.49,176288.07,20.11 -mul,kernel,2000,2000,114,9,176292.58,176144.32,20.11 -mul,floor,2000,2000,114,9,176503.15,176304.75,20.12 -mul,gmp,2000,2000,137,9,144666.08,144200.43,19.83 -mul,gmpz,2000,2000,139,9,144088.96,144017.68,20.08 -mul,auto,2000,100,1121,9,17841.58,17839.33,20.01 -mul,kernel,2000,100,1121,9,17966.73,17677.10,20.07 -mul,floor,2000,100,1133,9,17819.78,17652.68,20.21 -mul,gmp,2000,100,549,9,36365.86,36327.32,19.98 -mul,gmpz,2000,100,548,9,36340.23,36238.86,19.92 -sqr,auto,4,4,902209,9,22.13,22.13,20.02 -sqr,kernel,4,4,2008458,9,9.94,9.79,19.93 -sqr,floor,4,4,1190789,9,16.78,16.77,19.99 -sqr,gmp,4,4,3450965,9,5.79,5.77,19.99 -sqr,gmpz,4,4,2270932,9,8.85,8.78,20.10 -sqr,auto,16,16,299541,9,66.85,66.78,20.03 -sqr,kernel,16,16,349392,9,57.25,57.20,20.00 -sqr,floor,16,16,319859,9,62.62,62.59,20.03 -sqr,gmp,16,16,393575,9,50.75,50.52,19.97 -sqr,gmpz,16,16,365953,9,54.59,54.39,19.98 -sqr,auto,64,64,72082,9,277.06,276.40,19.97 -sqr,kernel,64,64,69361,9,288.29,287.98,20.05 -sqr,floor,64,64,68269,9,293.03,291.50,20.00 -sqr,gmp,64,64,35592,9,561.48,561.25,19.98 -sqr,gmpz,64,64,35421,9,563.75,562.78,19.97 -sqr,auto,512,512,1896,9,10540.98,10533.37,19.99 -sqr,kernel,512,512,1890,9,10526.71,10521.01,19.90 -sqr,floor,512,512,1883,9,10548.36,10541.54,19.87 -sqr,gmp,512,512,1299,9,15205.89,15117.13,19.76 -sqr,gmpz,512,512,1320,9,15146.42,15139.38,19.99 -sqr,auto,2000,2000,204,9,97774.70,97734.03,19.95 -sqr,kernel,2000,2000,205,9,97963.05,97869.66,20.10 -sqr,floor,2000,2000,205,9,97739.56,97726.85,20.04 -sqr,gmp,2000,2000,196,9,100934.60,100623.90,19.81 -sqr,gmpz,2000,2000,199,9,100641.68,100601.17,20.03 -divrem,auto,2,1,512264,9,39.16,39.03,20.06 -divrem,kernel,2,1,3434863,9,5.81,5.60,19.81 -divrem,floor,2,1,1564086,9,12.75,12.74,19.96 -divrem,gmp,2,1,2267464,9,8.69,8.68,19.71 -divrem,gmpz,2,1,1491943,9,13.38,13.32,19.99 -divrem,auto,8,4,211420,9,95.67,95.36,20.23 -divrem,kernel,8,4,471097,9,42.76,42.62,20.18 -divrem,floor,8,4,313261,9,63.91,63.77,20.05 -divrem,gmp,8,4,499954,9,40.05,39.89,20.03 -divrem,gmpz,8,4,479504,9,41.62,41.33,19.96 -divrem,auto,32,16,58946,9,339.95,339.16,20.03 -divrem,kernel,32,16,68103,9,292.84,291.91,19.97 -divrem,floor,32,16,65200,9,306.79,306.14,20.00 -divrem,gmp,32,16,104029,9,192.14,191.48,19.99 -divrem,gmpz,32,16,102664,9,194.69,193.99,19.99 -divrem,auto,128,64,6055,9,3332.44,3319.71,20.16 -divrem,kernel,128,64,6172,9,3237.50,3229.67,19.99 -divrem,floor,128,64,6152,9,3258.25,3240.84,20.03 -divrem,gmp,128,64,11584,9,1726.33,1725.02,20.00 -divrem,gmpz,128,64,11607,9,1722.98,1722.24,20.04 -divrem,auto,512,256,669,9,29939.76,29926.40,20.05 -divrem,kernel,512,256,681,9,29407.98,29393.44,20.04 -divrem,floor,512,256,680,9,29424.73,29407.55,20.01 -divrem,gmp,512,256,1227,9,16310.02,16308.68,20.01 -divrem,gmpz,512,256,1236,9,16191.73,16188.03,20.02 -divrem,auto,2000,1000,109,9,184678.80,184573.21,20.13 -divrem,kernel,2000,1000,109,9,184069.33,183993.76,20.06 -divrem,floor,2000,1000,109,9,184215.08,184126.77,20.08 -divrem,gmp,2000,1000,145,9,138643.61,138400.55,20.11 -divrem,gmpz,2000,1000,145,9,138381.05,138356.87,20.07 -divrem,auto,4000,2000,42,9,478317.95,478202.14,20.09 -divrem,kernel,4000,2000,43,9,474615.88,474523.14,20.41 -divrem,floor,4000,2000,43,9,474475.00,474184.93,20.40 -divrem,gmp,4000,2000,59,9,340763.22,340657.08,20.12 -divrem,gmpz,4000,2000,59,9,339624.47,338694.59,20.04 -divrem,auto,2000,100,138,9,145113.68,145039.17,20.03 -divrem,kernel,2000,100,137,9,146970.80,146698.25,20.18 -divrem,floor,2000,100,139,9,144437.97,144086.55,20.07 -divrem,gmp,2000,100,276,9,72632.64,72589.14,20.05 -divrem,gmpz,2000,100,276,9,72674.23,72624.81,20.06 -divrem,auto,65536,1,115,9,174563.77,174277.23,20.07 -divrem,kernel,65536,1,120,9,167367.07,167268.24,20.09 -divrem,floor,65536,1,119,9,168452.23,167920.83,20.05 -divrem,gmp,65536,1,136,9,148101.51,148095.52,20.14 -divrem,gmpz,65536,1,136,9,148108.10,148105.15,20.15 -fromchars,auto,4,10,165105,9,121.01,120.64,20.00 -fromchars,kernel,4,10,523099,9,38.29,38.18,20.04 -fromchars,gmp,4,10,633459,9,31.33,31.25,19.85 -fromchars,gmpz,4,10,298235,9,67.25,66.87,20.06 -fromchars,auto,16,10,46066,9,431.68,426.60,19.90 -fromchars,kernel,16,10,93189,9,213.85,209.96,19.99 -fromchars,gmp,16,10,160358,9,124.61,124.45,19.99 -fromchars,gmpz,16,10,77079,9,260.08,259.47,20.07 -fromchars,auto,64,10,6825,9,3014.83,2929.31,20.64 -fromchars,kernel,64,10,8641,9,2446.74,2266.94,21.40 -fromchars,gmp,64,10,23013,9,868.79,867.75,19.99 -fromchars,gmpz,64,10,14792,9,1350.84,1349.69,20.00 -fromchars,auto,256,10,698,9,29723.56,28805.99,20.94 -fromchars,kernel,256,10,713,9,29650.99,26387.09,20.63 -fromchars,gmp,256,10,2508,9,7963.96,7951.79,19.97 -fromchars,gmpz,256,10,1996,9,10046.66,10031.16,20.05 -fromchars,auto,2000,10,47,9,428460.47,428245.89,20.15 -fromchars,kernel,2000,10,50,9,405771.72,405641.00,20.29 -fromchars,gmp,2000,10,108,9,184625.91,183632.33,19.93 -fromchars,gmpz,2000,10,101,9,199377.83,198839.34,20.13 diff --git a/tests/beman/big_int/perf/item1/x64_new64_seed1b.csv b/tests/beman/big_int/perf/item1/x64_new64_seed1b.csv deleted file mode 100644 index d153c77f..00000000 --- a/tests/beman/big_int/perf/item1/x64_new64_seed1b.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T17:03:32Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2990122,9,6.70,6.61,20.03 -add,inplace,1,1,2035995,9,4.91,4.91,20.00 -add,kernel,1,1,10405454,9,1.91,1.89,19.91 -add,floor,1,1,1990852,9,9.82,9.82,19.58 -add,gmp,1,1,8823883,9,2.27,2.27,20.00 -add,gmpz,1,1,4813001,9,4.16,4.16,20.00 -add,auto,2,2,1257542,9,15.91,15.87,20.03 -add,inplace,2,2,1621745,9,6.14,6.06,19.94 -add,kernel,2,2,8621831,9,2.39,2.37,21.10 -add,floor,2,2,1935160,9,10.27,10.23,19.90 -add,gmp,2,2,8821828,9,2.27,2.27,20.00 -add,gmpz,2,2,4742340,9,4.22,4.20,20.03 -add,auto,4,4,1294681,9,15.42,15.41,19.96 -add,inplace,4,4,1747398,9,5.72,5.71,19.98 -add,kernel,4,4,6535811,9,3.07,3.04,20.22 -add,floor,4,4,1800061,9,11.06,11.02,19.94 -add,gmp,4,4,7950474,9,2.51,2.50,19.94 -add,gmpz,4,4,4533944,9,4.42,4.41,20.06 -add,auto,8,8,1193808,9,16.76,16.75,20.00 -add,inplace,8,8,1375185,9,7.30,7.26,20.13 -add,kernel,8,8,4338622,9,4.57,4.56,19.89 -add,floor,8,8,1595788,9,12.59,12.51,20.13 -add,gmp,8,8,5439332,9,3.68,3.67,20.01 -add,gmpz,8,8,4226533,9,4.72,4.71,19.99 -add,auto,16,16,957336,9,20.95,20.90,20.05 -add,inplace,16,16,842822,9,11.88,11.82,20.03 -add,kernel,16,16,2638541,9,7.57,7.56,19.97 -add,floor,16,16,1282861,9,15.63,15.59,20.09 -add,gmp,16,16,3632707,9,5.50,5.50,19.99 -add,gmpz,16,16,3080226,9,6.52,6.50,20.09 -add,auto,64,64,335697,9,59.63,59.58,20.02 -add,inplace,64,64,208032,9,48.07,48.06,20.00 -add,kernel,64,64,614518,9,32.74,32.59,20.12 -add,floor,64,64,477369,9,41.94,40.40,19.89 -add,gmp,64,64,1294538,9,15.45,15.45,20.00 -add,gmpz,64,64,1212843,9,16.49,16.46,20.03 -add,auto,256,256,93494,9,214.00,213.90,20.02 -add,inplace,256,256,50732,9,197.00,196.90,19.99 -add,kernel,256,256,140661,9,142.37,142.18,20.02 -add,floor,256,256,125537,9,159.43,159.27,20.02 -add,gmp,256,256,255678,9,78.22,78.21,20.03 -add,gmpz,256,256,251267,9,79.58,79.49,19.99 -add,auto,1024,1024,24998,9,799.97,799.84,20.00 -add,inplace,1024,1024,12656,9,790.14,789.98,20.00 -add,kernel,1024,1024,34613,9,577.70,577.55,20.00 -add,floor,1024,1024,33634,9,594.81,594.65,20.01 -add,gmp,1024,1024,51212,9,390.51,390.47,20.00 -add,gmpz,1024,1024,51070,9,391.36,391.34,19.99 -add,auto,2000,2000,13026,9,1535.43,1535.26,20.00 -add,inplace,2000,2000,6575,9,1520.97,1520.76,20.00 -add,kernel,2000,2000,17676,9,1131.53,1131.50,20.02 -add,floor,2000,2000,17389,9,1150.36,1150.22,20.01 -add,gmp,2000,2000,42007,9,475.23,475.08,20.02 -add,gmpz,2000,2000,41273,9,484.63,483.29,20.00 -add,auto,1024,1,79254,9,252.57,252.25,20.02 -add,inplace,1024,1,1963786,9,5.10,5.09,20.04 -add,kernel,1024,1,34641,9,577.40,577.38,20.00 -add,floor,1024,1,33681,9,593.83,593.79,20.00 -add,gmp,1024,1,85909,9,233.13,232.57,20.02 -add,gmpz,1024,1,85366,9,234.14,233.89,19.99 -sub,auto,1,1,2574726,9,7.76,7.74,20.00 -sub,inplace,1,1,2141538,9,4.67,4.66,20.01 -sub,kernel,1,1,13236297,9,1.51,1.51,20.00 -sub,floor,1,1,10587857,9,1.89,1.89,20.00 -sub,gmp,1,1,8824236,9,2.27,2.27,20.00 -sub,gmpz,1,1,4603643,9,4.34,4.34,20.09 -sub,auto,2,2,1256126,9,15.86,15.84,19.93 -sub,inplace,2,2,1943401,9,5.12,5.10,19.92 -sub,kernel,2,2,9373265,9,2.12,2.10,19.89 -sub,floor,2,2,2000933,9,10.01,10.00,20.07 -sub,gmp,2,2,8824144,9,2.27,2.27,20.03 -sub,gmpz,2,2,4603740,9,4.36,4.34,20.09 -sub,auto,4,4,1206521,9,16.56,16.56,20.00 -sub,inplace,4,4,1787995,9,5.59,5.59,20.01 -sub,kernel,4,4,7052507,9,2.84,2.83,20.01 -sub,floor,4,4,1854330,9,10.79,10.78,20.01 -sub,gmp,4,4,7985604,9,2.50,2.50,20.00 -sub,gmpz,4,4,4342270,9,4.62,4.61,20.10 -sub,auto,8,8,1113469,9,17.97,17.96,20.02 -sub,inplace,8,8,1438431,9,6.96,6.95,20.01 -sub,kernel,8,8,4570827,9,4.36,4.35,19.95 -sub,floor,8,8,1610836,9,12.40,12.38,19.98 -sub,gmp,8,8,5422569,9,3.69,3.69,20.00 -sub,gmpz,8,8,4022695,9,5.00,4.97,20.11 -sub,auto,16,16,951605,9,21.01,20.91,20.01 -sub,inplace,16,16,888722,9,11.24,11.12,19.97 -sub,kernel,16,16,2493630,9,8.02,8.02,20.01 -sub,floor,16,16,1294702,9,15.46,15.44,20.01 -sub,gmp,16,16,3638982,9,5.50,5.49,20.00 -sub,gmpz,16,16,2948379,9,6.82,6.76,20.07 -sub,auto,64,64,340529,9,58.78,58.68,20.02 -sub,inplace,64,64,211993,9,47.19,47.16,20.01 -sub,kernel,64,64,611402,9,32.70,32.69,19.99 -sub,floor,64,64,473350,9,42.27,41.86,19.98 -sub,gmp,64,64,1294691,9,15.45,15.45,20.00 -sub,gmpz,64,64,1194650,9,16.74,16.71,19.99 -sub,auto,256,256,92630,9,215.90,215.78,20.00 -sub,inplace,256,256,51039,9,195.89,195.81,20.00 -sub,kernel,256,256,140380,9,142.46,142.43,20.00 -sub,floor,256,256,126422,9,158.17,158.06,20.00 -sub,gmp,256,256,255610,9,78.24,78.24,20.00 -sub,gmpz,256,256,250418,9,79.83,79.74,19.99 -sub,auto,1024,1024,24738,9,808.70,808.48,20.10 -sub,inplace,1024,1024,12633,9,791.56,791.46,20.00 -sub,kernel,1024,1024,34618,9,577.76,577.75,20.00 -sub,floor,1024,1024,33681,9,593.90,593.71,20.00 -sub,gmp,1024,1024,51314,9,389.76,389.75,20.01 -sub,gmpz,1024,1024,51126,9,391.20,391.18,20.00 -sub,auto,2000,2000,12910,9,1549.17,1548.92,20.00 -sub,inplace,2000,2000,6579,9,1520.02,1519.87,20.00 -sub,kernel,2000,2000,17680,9,1131.19,1131.18,20.01 -sub,floor,2000,2000,17412,9,1149.13,1148.41,20.01 -sub,gmp,2000,2000,41824,9,478.21,478.20,20.00 -sub,gmpz,2000,2000,40911,9,487.16,485.81,19.93 -sub,auto,1024,1,79100,9,252.87,252.54,20.00 -sub,inplace,1024,1,2152801,9,4.64,4.64,20.00 -sub,kernel,1024,1,34630,9,577.42,577.42,20.01 -sub,floor,1024,1,33746,9,592.67,592.57,20.00 -sub,gmp,1024,1,85577,9,233.66,233.51,20.00 -sub,gmpz,1024,1,85293,9,234.46,234.10,20.00 -shl,auto,1,13,1567282,9,12.66,12.62,19.85 -shl,inplace,1,13,2715531,9,3.68,3.67,20.00 -shl,kernel,1,13,9674640,9,2.08,2.07,20.06 -shl,kernelip,1,13,5755621,9,1.75,1.70,20.02 -shl,floor,1,13,2069328,9,9.82,9.82,20.32 -shl,gmp,1,13,9623693,9,2.08,2.08,19.99 -shl,gmpz,1,13,6110873,9,3.27,3.27,20.00 -shl,auto,4,13,1461518,9,13.71,13.51,20.04 -shl,inplace,4,13,2164852,9,4.62,4.62,20.05 -shl,kernel,4,13,5724422,9,3.50,3.49,20.07 -shl,kernelip,4,13,3342397,9,2.97,2.95,19.86 -shl,floor,4,13,1775712,9,11.28,11.19,20.06 -shl,gmp,4,13,7991441,9,2.50,2.50,20.00 -shl,gmpz,4,13,4946970,9,4.04,4.04,20.02 -shl,auto,16,13,1159849,9,17.17,17.11,19.90 -shl,inplace,16,13,1086855,9,9.13,9.08,19.88 -shl,kernel,16,13,2679891,9,7.45,7.44,19.97 -shl,kernelip,16,13,1390520,9,7.15,7.05,19.86 -shl,floor,16,13,1342707,9,15.24,15.21,20.46 -shl,gmp,16,13,4768546,9,4.16,4.15,19.92 -shl,gmpz,16,13,3435402,9,5.84,5.82,20.06 -shl,auto,256,13,163871,9,122.03,121.96,20.00 -shl,inplace,256,13,97797,9,102.21,102.05,19.99 -shl,kernel,256,13,214329,9,94.23,93.49,20.19 -shl,kernelip,256,13,102386,9,97.42,97.33,19.95 -shl,floor,256,13,179039,9,116.41,116.35,20.84 -shl,gmp,256,13,408199,9,48.71,48.34,19.87 -shl,gmpz,256,13,401316,9,49.88,49.66,20.01 -shl,auto,2000,13,25887,9,772.74,772.53,20.01 -shl,inplace,2000,13,13503,9,740.93,740.49,20.02 -shl,kernel,2000,13,27776,9,719.94,719.71,20.00 -shl,kernelip,2000,13,13981,9,715.19,715.08,20.00 -shl,floor,2000,13,27113,9,739.12,738.54,20.05 -shl,gmp,2000,13,59641,9,335.39,335.34,20.00 -shl,gmpz,2000,13,59163,9,338.01,337.86,20.00 -shl,auto,2000,77,25820,9,774.68,774.40,20.00 -shl,inplace,2000,77,13487,9,741.43,740.43,20.00 -shl,kernel,2000,77,23407,9,848.74,848.23,19.92 -shl,kernelip,2000,77,12166,9,822.02,822.01,20.01 -shl,floor,2000,77,22910,9,871.33,870.42,19.96 -shl,gmp,2000,77,59286,9,337.53,337.53,20.02 -shl,gmpz,2000,77,59039,9,338.76,338.22,20.00 -shr,auto,1,13,2438135,9,8.19,8.19,19.97 -shr,inplace,1,13,3066519,9,3.30,3.27,20.23 -shr,kernel,1,13,11696359,9,1.70,1.70,19.90 -shr,floor,1,13,8824145,9,2.27,2.27,20.02 -shr,gmp,1,13,10558005,9,1.91,1.89,20.15 -shr,gmpz,1,13,5771181,9,3.47,3.47,20.00 -shr,auto,4,13,1246785,9,16.08,16.02,20.08 -shr,inplace,4,13,2278974,9,4.36,4.34,19.96 -shr,kernel,4,13,5578694,9,3.47,3.47,19.38 -shr,floor,4,13,1804091,9,11.07,11.05,19.99 -shr,gmp,4,13,8585217,9,2.33,2.32,19.97 -shr,gmpz,4,13,5056008,9,3.97,3.96,20.13 -shr,auto,16,13,1004422,9,19.92,19.90,20.03 -shr,inplace,16,13,1146805,9,8.70,8.65,19.99 -shr,kernel,16,13,2238583,9,8.92,8.90,20.01 -shr,floor,16,13,1301993,9,15.46,15.33,20.12 -shr,gmp,16,13,4138303,9,4.83,4.83,20.00 -shr,gmpz,16,13,3210635,9,6.34,6.22,20.57 -shr,auto,256,13,159078,9,125.57,125.38,19.97 -shr,inplace,256,13,98349,9,101.65,101.58,19.99 -shr,kernel,256,13,181238,9,110.39,110.32,20.01 -shr,floor,256,13,152571,9,130.26,130.05,19.87 -shr,gmp,256,13,418176,9,47.74,47.44,19.95 -shr,gmpz,256,13,393489,9,50.66,50.50,19.96 -shr,auto,2000,13,26672,9,750.29,749.60,20.02 -shr,inplace,2000,13,13554,9,737.08,735.29,20.00 -shr,kernel,2000,13,24617,9,812.52,812.48,20.00 -shr,floor,2000,13,24028,9,832.37,832.07,20.00 -shr,gmp,2000,13,59562,9,335.65,335.57,20.00 -shr,gmpz,2000,13,59011,9,338.95,338.85,20.01 -shr,auto,2000,77,26646,9,750.54,750.20,20.00 -shr,inplace,2000,77,13507,9,739.89,739.70,19.99 -shr,kernel,2000,77,24094,9,830.09,830.09,20.00 -shr,floor,2000,77,23487,9,852.21,851.86,20.03 -shr,gmp,2000,77,59464,9,336.24,336.04,19.99 -shr,gmpz,2000,77,58987,9,339.03,338.99,20.00 -mul,auto,1,1,1222953,9,16.34,16.31,19.99 -mul,gmp,1,1,6003939,9,3.37,3.36,20.27 -mul,gmpz,1,1,4988555,9,3.99,3.98,19.89 -mul,auto,2,2,1056499,9,18.96,18.87,20.03 -mul,kernel,2,2,2839166,9,7.58,7.55,21.59 -mul,floor,2,2,1358854,9,14.97,14.89,20.32 -mul,gmp,2,2,5162246,9,3.85,3.83,19.87 -mul,gmpz,2,2,3244271,9,6.12,6.09,19.90 -mul,auto,3,3,988244,9,20.28,20.24,20.11 -mul,kernel,3,3,2394574,9,8.92,8.92,21.48 -mul,floor,3,3,1248115,9,16.29,16.23,20.34 -mul,gmp,3,3,2559042,9,7.83,7.75,20.03 -mul,gmpz,3,3,2000264,9,10.02,9.96,20.01 -mul,auto,4,4,877890,9,22.34,22.25,19.62 -mul,kernel,4,4,1926499,9,10.93,10.90,21.11 -mul,floor,4,4,1113084,9,18.20,18.12,20.26 -mul,gmp,4,4,2069228,9,9.68,9.67,20.06 -mul,gmpz,4,4,1641079,9,12.18,12.14,19.99 -mul,auto,6,6,707892,9,28.04,28.03,19.86 -mul,kernel,6,6,1216879,9,17.16,17.15,20.89 -mul,floor,6,6,802901,9,24.37,24.32,19.58 -mul,gmp,6,6,1257101,9,15.91,15.87,20.03 -mul,gmpz,6,6,1098736,9,18.22,18.19,20.02 -mul,auto,8,8,553716,9,36.04,35.98,19.97 -mul,kernel,8,8,805691,9,25.43,25.37,20.48 -mul,floor,8,8,621431,9,32.30,32.24,20.07 -mul,gmp,8,8,736491,9,27.17,26.93,19.98 -mul,gmpz,8,8,691908,9,28.96,28.60,20.04 -mul,auto,12,12,343079,9,58.14,57.96,19.96 -mul,kernel,12,12,421290,9,47.97,47.85,20.21 -mul,floor,12,12,366084,9,54.82,54.74,20.07 -mul,gmp,12,12,411212,9,48.68,48.58,20.02 -mul,gmpz,12,12,391569,9,50.89,50.75,19.93 -mul,auto,16,16,226021,9,88.55,88.41,20.01 -mul,kernel,16,16,255018,9,79.51,79.36,20.27 -mul,floor,16,16,230568,9,86.75,86.30,19.99 -mul,gmp,16,16,244090,9,81.90,81.87,20.02 -mul,gmpz,16,16,236847,9,84.46,84.42,20.02 -mul,auto,32,32,99992,9,199.26,198.44,19.92 -mul,kernel,32,32,107194,9,187.77,187.25,20.14 -mul,floor,32,32,101931,9,196.39,195.59,20.01 -mul,gmp,32,32,73367,9,271.84,270.69,19.95 -mul,gmpz,32,32,73219,9,272.19,270.61,19.92 -mul,auto,64,64,40529,9,492.91,492.50,19.99 -mul,kernel,64,64,41481,9,482.51,481.80,20.03 -mul,floor,64,64,40776,9,490.49,489.93,20.01 -mul,gmp,64,64,22844,9,875.50,875.08,20.00 -mul,gmpz,64,64,22803,9,871.02,866.96,19.86 -mul,auto,128,128,11637,9,1717.82,1716.60,20.00 -mul,kernel,128,128,11762,9,1690.93,1689.67,19.89 -mul,floor,128,128,11736,9,1703.93,1701.91,19.99 -mul,gmp,128,128,7040,9,2840.60,2825.57,19.97 -mul,gmpz,128,128,7179,9,2763.26,2756.09,19.84 -mul,auto,256,256,3240,9,6172.05,6168.73,20.05 -mul,kernel,256,256,3242,9,6163.25,6159.44,20.01 -mul,floor,256,256,3236,9,6183.01,6178.66,20.02 -mul,gmp,256,256,2528,9,7908.39,7855.10,19.95 -mul,gmpz,256,256,2556,9,7767.37,7762.16,19.87 -mul,auto,512,512,1039,9,19255.68,19251.38,20.01 -mul,kernel,512,512,1044,9,19169.71,19138.37,20.03 -mul,floor,512,512,1028,9,19197.93,19176.54,19.74 -mul,gmp,512,512,944,9,20897.81,20827.60,19.76 -mul,gmpz,512,512,961,9,20818.14,20804.84,20.02 -mul,auto,1000,1000,334,9,59947.78,59902.46,20.04 -mul,kernel,1000,1000,336,9,59510.99,59477.81,20.00 -mul,floor,1000,1000,335,9,59613.97,59589.27,19.97 -mul,gmp,1000,1000,367,9,53756.36,53666.53,19.76 -mul,gmpz,1000,1000,374,9,53559.04,53524.48,20.03 -mul,auto,2000,2000,113,9,177185.40,177065.49,20.04 -mul,kernel,2000,2000,114,9,176481.11,176202.05,20.11 -mul,floor,2000,2000,114,9,176485.06,176352.18,20.15 -mul,gmp,2000,2000,139,9,144088.89,144062.60,20.06 -mul,gmpz,2000,2000,139,9,144121.93,144041.25,20.05 -mul,auto,2000,100,1135,9,17632.65,17628.15,20.01 -mul,kernel,2000,100,1133,9,17655.69,17649.80,20.00 -mul,floor,2000,100,1130,9,17706.44,17676.13,20.05 -mul,gmp,2000,100,544,9,36772.44,36526.14,19.99 -mul,gmpz,2000,100,554,9,36100.46,36042.04,20.02 -sqr,auto,4,4,901814,9,22.19,22.14,20.03 -sqr,kernel,4,4,1985896,9,9.99,9.89,19.85 -sqr,floor,4,4,1197027,9,17.02,16.98,20.38 -sqr,gmp,4,4,3007244,9,6.65,6.65,20.00 -sqr,gmpz,4,4,2268298,9,8.82,8.77,20.00 -sqr,auto,16,16,300724,9,66.33,66.16,19.94 -sqr,kernel,16,16,354158,9,56.53,56.50,20.04 -sqr,floor,16,16,319623,9,62.60,62.56,20.01 -sqr,gmp,16,16,393789,9,50.30,50.04,19.82 -sqr,gmpz,16,16,374020,9,53.31,53.30,19.96 -sqr,auto,64,64,72644,9,275.08,274.53,19.98 -sqr,kernel,64,64,73487,9,272.41,271.89,20.03 -sqr,floor,64,64,72752,9,278.29,277.63,20.25 -sqr,gmp,64,64,35720,9,559.93,558.59,19.99 -sqr,gmpz,64,64,35810,9,556.93,555.09,19.95 -sqr,auto,512,512,1888,9,10593.02,10585.90,20.00 -sqr,kernel,512,512,1843,9,10853.41,10849.74,20.00 -sqr,floor,512,512,1870,9,10602.51,10592.82,19.83 -sqr,gmp,512,512,1314,9,15090.21,15080.17,19.85 -sqr,gmpz,512,512,1325,9,15108.31,15098.51,20.02 -sqr,auto,2000,2000,201,9,98168.79,98099.38,19.86 -sqr,kernel,2000,2000,204,9,98059.38,97967.85,20.01 -sqr,floor,2000,2000,205,9,97917.76,97900.34,20.09 -sqr,gmp,2000,2000,198,9,100652.05,100597.78,19.95 -sqr,gmpz,2000,2000,199,9,100653.88,100569.83,20.03 -divrem,auto,2,1,508973,9,39.23,39.06,20.01 -divrem,kernel,2,1,3603029,9,5.76,5.71,20.87 -divrem,floor,2,1,1565799,9,12.77,12.75,20.00 -divrem,gmp,2,1,2266430,9,8.82,8.80,19.99 -divrem,gmpz,2,1,1517237,9,13.19,13.14,20.01 -divrem,auto,8,4,233137,9,87.01,86.64,20.29 -divrem,kernel,8,4,371515,9,53.75,53.50,20.07 -divrem,floor,8,4,323543,9,62.24,61.86,20.17 -divrem,gmp,8,4,498421,9,40.13,39.94,20.00 -divrem,gmpz,8,4,410300,9,49.15,48.85,20.19 -divrem,auto,32,16,58898,9,339.96,338.96,20.03 -divrem,kernel,32,16,69137,9,288.86,288.27,19.98 -divrem,floor,32,16,65914,9,303.74,303.22,20.02 -divrem,gmp,32,16,104749,9,191.37,191.08,20.06 -divrem,gmpz,32,16,98827,9,202.55,202.03,20.03 -divrem,auto,128,64,6036,9,3301.10,3294.04,19.93 -divrem,kernel,128,64,6156,9,3230.88,3227.19,19.90 -divrem,floor,128,64,6031,9,3270.04,3259.74,19.73 -divrem,gmp,128,64,11633,9,1719.63,1718.89,20.04 -divrem,gmpz,128,64,11609,9,1722.61,1721.89,20.00 -divrem,auto,512,256,670,9,29873.66,29860.28,20.02 -divrem,kernel,512,256,671,9,29810.89,29804.71,20.01 -divrem,floor,512,256,680,9,29451.92,29436.56,20.03 -divrem,gmp,512,256,1232,9,16238.38,16237.12,20.01 -divrem,gmpz,512,256,1227,9,16263.92,16257.94,19.96 -divrem,auto,2000,1000,108,9,185285.06,185201.32,20.06 -divrem,kernel,2000,1000,108,9,185917.61,185846.72,20.08 -divrem,floor,2000,1000,108,9,186372.71,186303.73,20.13 -divrem,gmp,2000,1000,146,9,137864.75,137842.10,20.13 -divrem,gmpz,2000,1000,146,9,137811.71,137798.82,20.12 -divrem,auto,4000,2000,43,9,474703.56,474589.86,20.42 -divrem,kernel,4000,2000,43,9,476298.14,476134.60,20.49 -divrem,floor,4000,2000,43,9,475275.74,475097.02,20.44 -divrem,gmp,4000,2000,59,9,337962.17,335528.36,19.93 -divrem,gmpz,4000,2000,60,9,338130.32,337576.18,20.29 -divrem,auto,2000,100,136,9,146849.06,146344.33,19.96 -divrem,kernel,2000,100,139,9,143598.78,142840.83,19.96 -divrem,floor,2000,100,139,9,143494.45,142516.94,19.95 -divrem,gmp,2000,100,276,9,72655.01,72592.06,20.05 -divrem,gmpz,2000,100,275,9,72743.37,72720.30,20.01 -divrem,auto,65536,1,115,9,174391.67,174003.28,20.05 -divrem,kernel,65536,1,120,9,167283.69,167066.54,20.08 -divrem,floor,65536,1,120,9,167871.33,167603.31,20.14 -divrem,gmp,65536,1,136,9,148102.98,148095.32,20.15 -divrem,gmpz,65536,1,136,9,148112.63,148106.90,20.14 -fromchars,auto,4,10,172366,9,114.93,114.67,19.81 -fromchars,kernel,4,10,505472,9,39.49,39.44,19.97 -fromchars,gmp,4,10,638349,9,31.36,31.18,20.02 -fromchars,gmpz,4,10,290003,9,68.80,68.60,19.96 -fromchars,auto,16,10,45753,9,433.94,427.31,19.85 -fromchars,kernel,16,10,94185,9,217.58,210.27,20.44 -fromchars,gmp,16,10,160518,9,124.46,124.11,19.98 -fromchars,gmpz,16,10,78188,9,256.16,255.23,20.06 -fromchars,auto,64,10,6713,9,3198.98,3028.14,21.47 -fromchars,kernel,64,10,8138,9,2420.81,2282.39,19.79 -fromchars,gmp,64,10,22845,9,872.59,871.43,19.95 -fromchars,gmpz,64,10,14696,9,1362.54,1359.58,20.03 -fromchars,auto,256,10,656,9,31928.16,28865.87,20.66 -fromchars,kernel,256,10,636,9,31026.14,28345.69,19.80 -fromchars,gmp,256,10,2493,9,8017.48,8011.83,19.99 -fromchars,gmpz,256,10,2013,9,9939.77,9933.08,20.01 -fromchars,auto,2000,10,47,9,428511.85,427765.43,20.14 -fromchars,kernel,2000,10,50,9,405642.52,405489.92,20.28 -fromchars,gmp,2000,10,110,9,182953.37,182876.15,20.13 -fromchars,gmpz,2000,10,101,9,197927.87,197843.49,19.99 diff --git a/tests/beman/big_int/perf/item1/x64_new64_seed2a.csv b/tests/beman/big_int/perf/item1/x64_new64_seed2a.csv deleted file mode 100644 index 44220890..00000000 --- a/tests/beman/big_int/perf/item1/x64_new64_seed2a.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T17:06:29Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2947162,9,6.68,6.61,19.67 -add,inplace,1,1,2025987,9,4.91,4.89,19.89 -add,kernel,1,1,10441756,9,1.92,1.89,20.08 -add,floor,1,1,2043750,9,9.81,9.81,20.06 -add,gmp,1,1,8823906,9,2.27,2.27,20.00 -add,gmpz,1,1,4812914,9,4.16,4.16,20.00 -add,auto,2,2,1259569,9,15.93,15.86,20.08 -add,inplace,2,2,1675336,9,6.10,5.94,20.46 -add,kernel,2,2,8429919,9,2.39,2.32,20.13 -add,floor,2,2,1951460,9,10.31,10.25,20.10 -add,gmp,2,2,8824123,9,2.27,2.27,20.00 -add,gmpz,2,2,4813114,9,4.16,4.16,20.01 -add,auto,4,4,1297339,9,15.41,15.41,20.00 -add,inplace,4,4,1751736,9,5.71,5.71,20.03 -add,kernel,4,4,6350894,9,3.06,3.02,19.45 -add,floor,4,4,1805112,9,11.13,11.01,20.08 -add,gmp,4,4,8041969,9,2.49,2.49,20.01 -add,gmpz,4,4,4561067,9,4.37,4.35,19.93 -add,auto,8,8,1193848,9,16.75,16.75,20.00 -add,inplace,8,8,1409310,9,7.10,7.07,19.99 -add,kernel,8,8,4402958,9,4.53,4.53,19.96 -add,floor,8,8,1584952,9,12.68,12.59,20.08 -add,gmp,8,8,5435837,9,3.68,3.68,20.00 -add,gmpz,8,8,4304697,9,4.66,4.66,20.09 -add,auto,16,16,955804,9,20.93,20.88,20.01 -add,inplace,16,16,845340,9,11.84,11.73,20.01 -add,kernel,16,16,2646818,9,7.56,7.56,20.00 -add,floor,16,16,1290614,9,15.61,15.59,20.15 -add,gmp,16,16,3633563,9,5.50,5.50,19.99 -add,gmpz,16,16,3062237,9,6.53,6.51,20.00 -add,auto,64,64,347503,9,57.59,57.47,20.01 -add,inplace,64,64,208077,9,48.06,48.05,20.00 -add,kernel,64,64,607226,9,32.86,32.69,19.97 -add,floor,64,64,478994,9,41.56,41.49,20.01 -add,gmp,64,64,1294647,9,15.45,15.45,20.00 -add,gmpz,64,64,1212692,9,16.49,16.46,20.01 -add,auto,256,256,93872,9,213.18,213.11,20.01 -add,inplace,256,256,51114,9,195.68,195.64,20.00 -add,kernel,256,256,140421,9,142.38,142.16,19.99 -add,floor,256,256,125907,9,158.95,158.84,20.01 -add,gmp,256,256,255695,9,78.24,78.22,20.02 -add,gmpz,256,256,251617,9,79.47,79.38,19.99 -add,auto,1024,1024,24990,9,800.36,800.29,20.00 -add,inplace,1024,1024,12647,9,790.76,790.51,20.00 -add,kernel,1024,1024,34610,9,577.73,577.57,20.02 -add,floor,1024,1024,33606,9,594.63,594.44,19.98 -add,gmp,1024,1024,51210,9,390.51,390.40,20.00 -add,gmpz,1024,1024,51093,9,391.47,391.42,20.00 -add,auto,2000,2000,13035,9,1534.55,1534.35,20.02 -add,inplace,2000,2000,6579,9,1520.09,1520.04,20.00 -add,kernel,2000,2000,17376,9,1131.84,1131.81,19.68 -add,floor,2000,2000,17381,9,1151.27,1150.63,20.01 -add,gmp,2000,2000,43685,9,457.83,457.81,20.00 -add,gmpz,2000,2000,41744,9,478.78,477.21,19.97 -add,auto,1024,1,79221,9,252.52,252.19,20.00 -add,inplace,1024,1,1957152,9,5.11,5.09,19.99 -add,kernel,1024,1,34639,9,577.40,577.38,20.00 -add,floor,1024,1,33667,9,594.07,593.98,20.00 -add,gmp,1024,1,85910,9,232.71,232.60,20.00 -add,gmpz,1024,1,85465,9,233.97,233.76,19.99 -sub,auto,1,1,2579299,9,7.77,7.74,20.03 -sub,inplace,1,1,2141071,9,4.69,4.65,20.06 -sub,kernel,1,1,13236180,9,1.51,1.51,20.00 -sub,floor,1,1,10588830,9,1.89,1.89,20.00 -sub,gmp,1,1,8824049,9,2.27,2.27,20.00 -sub,gmpz,1,1,4584985,9,4.34,4.34,19.93 -sub,auto,2,2,1273749,9,15.66,15.61,19.97 -sub,inplace,2,2,1985996,9,5.07,5.00,20.11 -sub,kernel,2,2,9425125,9,2.11,2.10,19.93 -sub,floor,2,2,2020594,9,9.94,9.88,20.07 -sub,gmp,2,2,8816523,9,2.27,2.27,19.98 -sub,gmpz,2,2,4577372,9,4.34,4.34,19.91 -sub,auto,4,4,1207648,9,16.57,16.57,20.02 -sub,inplace,4,4,1787448,9,5.60,5.59,20.02 -sub,kernel,4,4,7051699,9,2.84,2.84,20.00 -sub,floor,4,4,1861829,9,10.75,10.71,20.01 -sub,gmp,4,4,8008164,9,2.50,2.50,20.00 -sub,gmpz,4,4,4375044,9,4.57,4.54,19.99 -sub,auto,8,8,1110720,9,18.01,17.98,19.99 -sub,inplace,8,8,1420766,9,7.05,7.03,20.03 -sub,kernel,8,8,4554947,9,4.39,4.39,20.01 -sub,floor,8,8,1629945,9,12.33,12.21,20.06 -sub,gmp,8,8,5424039,9,3.69,3.69,20.01 -sub,gmpz,8,8,3708706,9,5.34,5.31,19.82 -sub,auto,16,16,951650,9,21.11,20.93,20.09 -sub,inplace,16,16,902853,9,11.11,11.07,20.04 -sub,kernel,16,16,2493322,9,8.02,8.02,20.00 -sub,floor,16,16,1316000,9,15.24,15.22,20.07 -sub,gmp,16,16,3636666,9,5.50,5.49,19.98 -sub,gmpz,16,16,2925172,9,6.80,6.77,19.91 -sub,auto,64,64,341467,9,58.64,58.55,20.02 -sub,inplace,64,64,212442,9,47.09,47.09,20.02 -sub,kernel,64,64,611771,9,32.70,32.70,20.01 -sub,floor,64,64,474192,9,42.15,42.11,19.99 -sub,gmp,64,64,1294668,9,15.45,15.45,20.00 -sub,gmpz,64,64,1194263,9,16.74,16.71,19.99 -sub,auto,256,256,92660,9,215.87,215.76,20.00 -sub,inplace,256,256,51049,9,195.91,195.85,20.00 -sub,kernel,256,256,140395,9,142.45,142.44,20.00 -sub,floor,256,256,126610,9,158.17,157.97,20.06 -sub,gmp,256,256,255593,9,78.24,78.24,20.01 -sub,gmpz,256,256,250367,9,79.82,79.73,19.99 -sub,auto,1024,1024,23744,9,842.62,842.09,20.01 -sub,inplace,1024,1024,12621,9,792.36,792.34,20.00 -sub,kernel,1024,1024,34560,9,578.75,578.72,20.00 -sub,floor,1024,1024,33677,9,593.84,593.56,20.00 -sub,gmp,1024,1024,51198,9,390.65,390.63,20.00 -sub,gmpz,1024,1024,50967,9,392.42,392.37,20.00 -sub,auto,2000,2000,12900,9,1549.32,1549.23,19.99 -sub,inplace,2000,2000,6580,9,1519.93,1519.89,20.00 -sub,kernel,2000,2000,17657,9,1132.72,1132.69,20.02 -sub,floor,2000,2000,17408,9,1149.16,1148.91,20.00 -sub,gmp,2000,2000,41708,9,479.53,479.52,20.00 -sub,gmpz,2000,2000,41016,9,487.57,486.23,19.99 -sub,auto,1024,1,79026,9,253.12,252.89,20.00 -sub,inplace,1024,1,2041191,9,4.90,4.88,20.03 -sub,kernel,1024,1,34635,9,577.45,577.43,20.06 -sub,floor,1024,1,33756,9,592.65,592.53,20.01 -sub,gmp,1024,1,85942,9,232.78,232.73,20.00 -sub,gmpz,1024,1,85482,9,233.94,233.51,19.99 -shl,auto,1,13,1587202,9,12.68,12.58,20.12 -shl,inplace,1,13,2723779,9,3.67,3.66,20.00 -shl,kernel,1,13,9625862,9,2.08,2.06,19.96 -shl,kernelip,1,13,5723149,9,1.75,1.72,20.09 -shl,floor,1,13,2085814,9,9.81,9.79,20.46 -shl,gmp,1,13,9619800,9,2.08,2.08,19.99 -shl,gmpz,1,13,6110909,9,3.27,3.27,20.01 -shl,auto,4,13,1483437,9,13.52,13.48,20.07 -shl,inplace,4,13,2133880,9,4.63,4.62,19.79 -shl,kernel,4,13,5722548,9,3.50,3.48,20.03 -shl,kernelip,4,13,3438275,9,2.93,2.91,20.15 -shl,floor,4,13,1775812,9,11.20,11.18,19.89 -shl,gmp,4,13,7991195,9,2.70,2.50,21.46 -shl,gmpz,4,13,4947026,9,4.04,4.04,20.02 -shl,auto,16,13,1168648,9,17.13,17.08,20.02 -shl,inplace,16,13,1104645,9,9.06,9.04,20.09 -shl,kernel,16,13,2683600,9,7.46,7.44,20.03 -shl,kernelip,16,13,1391376,9,7.12,6.99,19.77 -shl,floor,16,13,1315926,9,15.22,15.21,20.03 -shl,gmp,16,13,4783280,9,4.15,4.13,19.98 -shl,gmpz,16,13,3448899,9,5.81,5.80,20.05 -shl,auto,256,13,163649,9,122.14,122.03,19.99 -shl,inplace,256,13,97750,9,102.25,102.05,19.99 -shl,kernel,256,13,214453,9,93.47,93.30,20.05 -shl,kernelip,256,13,102814,9,97.43,97.33,20.04 -shl,floor,256,13,179217,9,117.08,116.96,20.98 -shl,gmp,256,13,424059,9,47.22,47.13,20.02 -shl,gmpz,256,13,402260,9,49.76,49.60,20.01 -shl,auto,2000,13,25888,9,772.77,772.63,20.01 -shl,inplace,2000,13,13114,9,763.25,739.94,19.90 -shl,kernel,2000,13,27802,9,719.46,719.36,20.01 -shl,kernelip,2000,13,13981,9,715.21,715.08,20.00 -shl,floor,2000,13,27146,9,739.16,738.66,20.07 -shl,gmp,2000,13,59628,9,335.40,335.34,20.00 -shl,gmpz,2000,13,59177,9,338.12,337.88,20.01 -shl,auto,2000,77,25799,9,775.06,774.55,20.00 -shl,inplace,2000,77,13487,9,741.58,740.64,20.00 -shl,kernel,2000,77,23453,9,850.86,849.99,19.95 -shl,kernelip,2000,77,12165,9,822.04,822.02,20.02 -shl,floor,2000,77,22975,9,872.50,870.95,20.04 -shl,gmp,2000,77,59286,9,337.59,337.53,20.03 -shl,gmpz,2000,77,59135,9,338.23,338.20,20.00 -shr,auto,1,13,2439467,9,8.19,8.18,19.99 -shr,inplace,1,13,3032154,9,3.30,3.27,20.01 -shr,kernel,1,13,11756241,9,1.70,1.70,20.01 -shr,floor,1,13,8823980,9,2.27,2.27,20.00 -shr,gmp,1,13,10588341,9,1.89,1.89,20.05 -shr,gmpz,1,13,5772741,9,3.47,3.46,20.00 -shr,auto,4,13,1248254,9,16.02,15.99,20.02 -shr,inplace,4,13,2294995,9,4.36,4.34,20.02 -shr,kernel,4,13,5625705,9,3.56,3.55,20.06 -shr,floor,4,13,1793770,9,11.13,11.09,20.01 -shr,gmp,4,13,8608723,9,2.33,2.31,20.08 -shr,gmpz,4,13,5051974,9,3.98,3.95,20.09 -shr,auto,16,13,1003660,9,19.92,19.90,20.00 -shr,inplace,16,13,1154754,9,8.66,8.62,20.00 -shr,kernel,16,13,2367425,9,8.43,8.39,19.97 -shr,floor,16,13,1292444,9,15.47,15.32,20.00 -shr,gmp,16,13,4635087,9,4.32,4.31,20.02 -shr,gmpz,16,13,3212376,9,6.25,6.22,20.23 -shr,auto,256,13,154938,9,129.14,128.71,20.02 -shr,inplace,256,13,98387,9,101.70,101.50,20.01 -shr,kernel,256,13,181278,9,110.45,110.34,20.04 -shr,floor,256,13,152642,9,130.39,130.26,19.92 -shr,gmp,256,13,416163,9,47.90,47.47,19.92 -shr,gmpz,256,13,395020,9,50.69,50.50,20.02 -shr,auto,2000,13,26671,9,750.55,749.52,20.02 -shr,inplace,2000,13,13488,9,738.72,736.81,19.93 -shr,kernel,2000,13,24634,9,811.97,811.92,20.01 -shr,floor,2000,13,24050,9,831.87,831.70,20.01 -shr,gmp,2000,13,59509,9,335.89,335.63,20.02 -shr,gmpz,2000,13,58877,9,339.01,338.94,19.96 -shr,auto,2000,77,26678,9,750.71,749.77,20.05 -shr,inplace,2000,77,13520,9,740.20,740.02,20.02 -shr,kernel,2000,77,24087,9,830.39,830.35,20.00 -shr,floor,2000,77,23449,9,853.00,851.42,20.00 -shr,gmp,2000,77,59477,9,336.32,336.19,20.00 -shr,gmpz,2000,77,58978,9,339.09,338.99,20.00 -mul,auto,1,1,1224649,9,16.33,16.27,20.00 -mul,gmp,1,1,5971456,9,3.37,3.32,20.15 -mul,gmpz,1,1,4748782,9,4.22,4.21,20.02 -mul,auto,2,2,1055854,9,18.85,18.77,19.92 -mul,kernel,2,2,2856436,9,7.56,7.52,21.68 -mul,floor,2,2,1356617,9,14.93,14.90,20.28 -mul,gmp,2,2,5232787,9,3.84,3.82,20.07 -mul,gmpz,2,2,3285135,9,6.13,6.11,20.14 -mul,auto,3,3,991117,9,20.22,20.18,20.05 -mul,kernel,3,3,2379207,9,8.98,8.92,21.38 -mul,floor,3,3,1236965,9,16.45,16.38,20.36 -mul,gmp,3,3,2583551,9,7.69,7.65,19.88 -mul,gmpz,3,3,2004428,9,9.99,9.93,20.02 -mul,auto,4,4,891210,9,22.33,22.22,19.90 -mul,kernel,4,4,1930737,9,10.92,10.90,21.16 -mul,floor,4,4,1113638,9,18.21,18.12,20.28 -mul,gmp,4,4,2061126,9,9.69,9.66,19.96 -mul,gmpz,4,4,1646933,9,12.15,12.10,20.09 -mul,auto,6,6,713137,9,27.99,27.93,19.96 -mul,kernel,6,6,1215443,9,17.16,17.15,20.86 -mul,floor,6,6,819969,9,24.40,24.35,20.01 -mul,gmp,6,6,1271291,9,15.71,15.68,19.98 -mul,gmpz,6,6,1109290,9,18.06,17.99,20.04 -mul,auto,8,8,556271,9,35.70,35.46,19.89 -mul,kernel,8,8,805210,9,25.40,25.28,20.46 -mul,floor,8,8,620196,9,32.35,32.27,20.07 -mul,gmp,8,8,741889,9,27.09,26.88,20.08 -mul,gmpz,8,8,690182,9,28.88,28.54,19.95 -mul,auto,12,12,346729,9,57.61,57.56,20.00 -mul,kernel,12,12,425661,9,47.55,47.32,20.23 -mul,floor,12,12,368780,9,54.69,54.42,20.16 -mul,gmp,12,12,391054,9,51.05,50.90,19.97 -mul,gmpz,12,12,394035,9,50.75,50.75,20.00 -mul,auto,16,16,226273,9,88.42,88.35,20.01 -mul,kernel,16,16,256481,9,78.59,78.51,20.18 -mul,floor,16,16,233490,9,85.75,85.45,20.02 -mul,gmp,16,16,244143,9,81.89,81.87,19.99 -mul,gmpz,16,16,237835,9,84.07,83.99,19.99 -mul,auto,32,32,99490,9,200.78,200.12,19.97 -mul,kernel,32,32,102922,9,200.01,199.74,20.58 -mul,floor,32,32,98436,9,203.16,202.84,20.01 -mul,gmp,32,32,73361,9,270.19,268.35,19.80 -mul,gmpz,32,32,74166,9,269.78,269.63,20.03 -mul,auto,64,64,39707,9,503.08,502.64,19.98 -mul,kernel,64,64,40915,9,486.34,486.02,19.91 -mul,floor,64,64,40224,9,497.07,495.45,20.00 -mul,gmp,64,64,22852,9,871.90,863.91,19.89 -mul,gmpz,64,64,23179,9,863.01,862.40,20.02 -mul,auto,128,128,11622,9,1720.08,1719.04,19.99 -mul,kernel,128,128,11721,9,1705.83,1703.85,20.02 -mul,floor,128,128,11663,9,1717.29,1716.58,20.06 -mul,gmp,128,128,7220,9,2754.19,2726.54,19.89 -mul,gmpz,128,128,7384,9,2707.48,2707.06,20.00 -mul,auto,256,256,3233,9,6185.07,6183.40,20.01 -mul,kernel,256,256,3252,9,6145.99,6142.48,19.99 -mul,floor,256,256,3246,9,6163.27,6157.64,20.01 -mul,gmp,256,256,2519,9,7889.71,7832.09,19.88 -mul,gmpz,256,256,2553,9,7797.53,7790.37,19.93 -mul,auto,512,512,1043,9,19175.02,19159.57,20.00 -mul,kernel,512,512,1038,9,19195.56,19179.83,19.92 -mul,floor,512,512,1036,9,19309.17,19297.73,20.04 -mul,gmp,512,512,949,9,20861.36,20832.75,19.80 -mul,gmpz,512,512,958,9,20897.88,20891.80,20.02 -mul,auto,1000,1000,335,9,59800.80,59707.52,20.03 -mul,kernel,1000,1000,337,9,59437.95,59411.68,20.04 -mul,floor,1000,1000,336,9,59520.59,59472.57,20.00 -mul,gmp,1000,1000,369,9,54167.95,54162.62,19.99 -mul,gmpz,1000,1000,372,9,53833.36,53827.54,20.06 -mul,auto,2000,2000,113,9,176568.24,176409.13,19.95 -mul,kernel,2000,2000,114,9,176459.43,176175.34,20.11 -mul,floor,2000,2000,114,9,176414.18,176377.71,20.11 -mul,gmp,2000,2000,139,9,144361.71,144279.22,20.07 -mul,gmpz,2000,2000,139,9,144302.91,144268.82,20.06 -mul,auto,2000,100,1134,9,17640.57,17637.72,20.00 -mul,kernel,2000,100,1134,9,17654.16,17652.04,20.05 -mul,floor,2000,100,1132,9,17674.47,17672.16,20.01 -mul,gmp,2000,100,546,9,36198.28,35939.30,19.78 -mul,gmpz,2000,100,557,9,35934.60,35925.21,20.02 -sqr,auto,4,4,897143,9,22.16,22.12,19.93 -sqr,kernel,4,4,1992429,9,9.97,9.84,19.83 -sqr,floor,4,4,1223378,9,16.77,16.75,20.52 -sqr,gmp,4,4,3438398,9,5.80,5.77,19.98 -sqr,gmpz,4,4,2263755,9,8.86,8.78,20.07 -sqr,auto,16,16,300958,9,66.39,66.29,20.00 -sqr,kernel,16,16,349650,9,57.21,57.15,20.02 -sqr,floor,16,16,320318,9,62.64,62.60,20.07 -sqr,gmp,16,16,398797,9,49.83,49.79,19.88 -sqr,gmpz,16,16,383954,9,52.09,52.06,20.00 -sqr,auto,64,64,72796,9,275.16,274.27,20.02 -sqr,kernel,64,64,69636,9,287.26,287.01,20.02 -sqr,floor,64,64,68568,9,294.08,293.86,20.19 -sqr,gmp,64,64,35585,9,558.74,554.52,19.89 -sqr,gmpz,64,64,36061,9,555.23,553.33,20.08 -sqr,auto,512,512,1872,9,10677.59,10666.50,19.98 -sqr,kernel,512,512,1890,9,10540.76,10533.13,19.92 -sqr,floor,512,512,1895,9,10619.49,10606.63,20.13 -sqr,gmp,512,512,1325,9,15074.79,15068.19,19.98 -sqr,gmpz,512,512,1331,9,15036.69,15029.57,20.01 -sqr,auto,2000,2000,204,9,98242.38,98225.75,20.04 -sqr,kernel,2000,2000,201,9,99783.75,99759.32,20.06 -sqr,floor,2000,2000,199,9,98334.50,98311.23,19.62 -sqr,gmp,2000,2000,199,9,100613.18,100549.22,20.04 -sqr,gmpz,2000,2000,199,9,100678.97,100611.17,20.03 -divrem,auto,2,1,632058,9,31.69,31.47,20.02 -divrem,kernel,2,1,3413934,9,5.70,5.58,19.56 -divrem,floor,2,1,1562123,9,12.77,12.74,19.96 -divrem,gmp,2,1,2984206,9,6.70,6.69,20.00 -divrem,gmpz,2,1,1720269,9,11.67,11.62,20.06 -divrem,auto,8,4,204858,9,98.98,98.52,20.29 -divrem,kernel,8,4,373823,9,53.49,53.44,20.01 -divrem,floor,8,4,277984,9,72.11,71.79,20.09 -divrem,gmp,8,4,460146,9,43.67,43.49,20.09 -divrem,gmpz,8,4,434725,9,45.93,45.82,19.97 -divrem,auto,32,16,59117,9,339.40,339.03,20.08 -divrem,kernel,32,16,69197,9,288.57,287.48,19.97 -divrem,floor,32,16,65359,9,306.70,306.24,20.05 -divrem,gmp,32,16,104506,9,190.83,190.08,19.96 -divrem,gmpz,32,16,102918,9,194.41,193.72,20.08 -divrem,auto,128,64,5921,9,3322.12,3319.52,19.67 -divrem,kernel,128,64,6261,9,3194.53,3193.97,20.00 -divrem,floor,128,64,6023,9,3323.00,3320.36,20.02 -divrem,gmp,128,64,11631,9,1720.15,1718.96,20.02 -divrem,gmpz,128,64,11612,9,1722.73,1722.32,20.00 -divrem,auto,512,256,690,9,29143.08,29056.26,20.10 -divrem,kernel,512,256,693,9,28900.29,28883.07,20.03 -divrem,floor,512,256,691,9,28969.89,28948.91,20.01 -divrem,gmp,512,256,1234,9,16207.46,16202.35,20.00 -divrem,gmpz,512,256,1229,9,16284.15,16279.00,20.01 -divrem,auto,2000,1000,108,9,187321.85,187124.81,20.23 -divrem,kernel,2000,1000,109,9,184522.94,184456.74,20.11 -divrem,floor,2000,1000,109,9,184758.56,184650.45,20.16 -divrem,gmp,2000,1000,145,9,138077.55,138039.08,20.03 -divrem,gmpz,2000,1000,144,9,138056.44,137988.78,19.88 -divrem,auto,4000,2000,43,9,475254.30,475004.79,20.44 -divrem,kernel,4000,2000,42,9,476604.83,476442.79,20.05 -divrem,floor,4000,2000,42,9,476838.90,476593.76,20.04 -divrem,gmp,4000,2000,60,9,335032.80,333254.35,20.09 -divrem,gmpz,4000,2000,60,9,333410.83,332825.82,20.01 -divrem,auto,2000,100,141,9,142156.61,141730.06,20.07 -divrem,kernel,2000,100,139,9,144655.21,144391.73,20.11 -divrem,floor,2000,100,142,9,141655.44,141354.01,20.13 -divrem,gmp,2000,100,278,9,71998.38,71967.68,20.01 -divrem,gmpz,2000,100,279,9,71928.63,71908.56,20.08 -divrem,auto,65536,1,115,9,174332.21,174155.90,20.05 -divrem,kernel,65536,1,120,9,167419.08,167195.21,20.09 -divrem,floor,65536,1,119,9,168278.23,167955.12,20.03 -divrem,gmp,65536,1,135,9,148099.85,148091.96,20.00 -divrem,gmpz,65536,1,135,9,148115.63,148099.95,20.02 -fromchars,auto,4,10,172847,9,115.85,115.71,20.07 -fromchars,kernel,4,10,515611,9,38.82,38.72,20.01 -fromchars,gmp,4,10,624445,9,32.06,31.91,20.14 -fromchars,gmpz,4,10,285590,9,69.16,69.06,19.82 -fromchars,auto,16,10,46131,9,433.99,430.82,20.01 -fromchars,kernel,16,10,92819,9,214.14,203.07,19.77 -fromchars,gmp,16,10,162433,9,123.11,122.90,20.00 -fromchars,gmpz,16,10,68653,9,291.15,288.66,19.98 -fromchars,auto,64,10,6770,9,3174.61,3023.44,21.51 -fromchars,kernel,64,10,8672,9,2457.12,2249.98,20.90 -fromchars,gmp,64,10,21121,9,947.92,947.03,20.02 -fromchars,gmpz,64,10,14012,9,1426.78,1425.12,19.99 -fromchars,auto,256,10,672,9,32618.25,30466.41,21.18 -fromchars,kernel,256,10,718,9,28812.51,27449.44,20.86 -fromchars,gmp,256,10,2489,9,8032.21,8029.83,19.99 -fromchars,gmpz,256,10,2011,9,9940.70,9935.96,19.99 -fromchars,auto,2000,10,48,9,426524.38,424169.12,20.45 -fromchars,kernel,2000,10,50,9,405649.66,405317.38,20.28 -fromchars,gmp,2000,10,110,9,182745.08,182606.98,20.15 -fromchars,gmpz,2000,10,102,9,197517.05,197436.79,20.17 diff --git a/tests/beman/big_int/perf/item1/x64_new64_seed2b.csv b/tests/beman/big_int/perf/item1/x64_new64_seed2b.csv deleted file mode 100644 index b650e1f5..00000000 --- a/tests/beman/big_int/perf/item1/x64_new64_seed2b.csv +++ /dev/null @@ -1,370 +0,0 @@ -# gap_sweep date 2026-10-06T17:09:25Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2983927,9,6.73,6.58,20.05 -add,inplace,1,1,2035771,9,4.91,4.91,20.00 -add,kernel,1,1,10365375,9,1.92,1.90,19.95 -add,floor,1,1,2057950,9,9.77,9.74,20.10 -add,gmp,1,1,8823931,9,2.27,2.27,20.00 -add,gmpz,1,1,4812898,9,4.16,4.16,20.00 -add,auto,2,2,1273161,9,15.75,15.68,20.05 -add,inplace,2,2,1658994,9,6.15,5.96,20.34 -add,kernel,2,2,8184278,9,2.40,2.35,19.63 -add,floor,2,2,1949445,9,10.27,10.22,20.02 -add,gmp,2,2,8824062,9,2.27,2.27,20.00 -add,gmpz,2,2,4812022,9,4.16,4.16,20.00 -add,auto,4,4,1298082,9,15.42,15.41,20.01 -add,inplace,4,4,1746165,9,5.72,5.71,19.97 -add,kernel,4,4,6617923,9,3.05,3.03,20.26 -add,floor,4,4,1798412,9,11.08,11.01,19.94 -add,gmp,4,4,8041418,9,2.49,2.49,20.00 -add,gmpz,4,4,4555824,9,4.39,4.38,20.01 -add,auto,8,8,1193885,9,16.75,16.75,20.01 -add,inplace,8,8,1408586,9,7.09,7.08,20.00 -add,kernel,8,8,4411957,9,4.53,4.53,20.02 -add,floor,8,8,1603021,9,12.56,12.48,20.12 -add,gmp,8,8,5434699,9,3.68,3.68,20.01 -add,gmpz,8,8,4302458,9,4.65,4.63,20.04 -add,auto,16,16,949253,9,21.06,21.03,20.00 -add,inplace,16,16,848664,9,11.78,11.72,19.99 -add,kernel,16,16,2647208,9,7.56,7.56,20.00 -add,floor,16,16,1299326,9,15.45,15.37,20.06 -add,gmp,16,16,3634650,9,5.50,5.50,20.00 -add,gmpz,16,16,3078520,9,6.52,6.48,20.06 -add,auto,64,64,347088,9,57.58,57.54,20.06 -add,inplace,64,64,206662,9,48.31,48.30,19.97 -add,kernel,64,64,608229,9,32.88,32.58,19.98 -add,floor,64,64,477222,9,41.93,41.92,20.02 -add,gmp,64,64,1294725,9,15.45,15.45,20.00 -add,gmpz,64,64,1212798,9,16.49,16.46,19.99 -add,auto,256,256,93969,9,212.84,212.80,20.00 -add,inplace,256,256,51103,9,195.67,195.63,20.00 -add,kernel,256,256,140399,9,142.38,142.24,20.01 -add,floor,256,256,125524,9,159.23,159.16,19.99 -add,gmp,256,256,255699,9,78.22,78.21,20.00 -add,gmpz,256,256,251703,9,79.46,79.36,20.00 -add,auto,1024,1024,25006,9,799.90,799.79,20.00 -add,inplace,1024,1024,12659,9,790.06,789.87,20.00 -add,kernel,1024,1024,34616,9,577.86,577.61,20.00 -add,floor,1024,1024,33624,9,594.72,594.58,20.00 -add,gmp,1024,1024,51206,9,390.57,390.55,20.00 -add,gmpz,1024,1024,51099,9,391.40,391.38,20.02 -add,auto,2000,2000,13023,9,1535.78,1535.55,20.00 -add,inplace,2000,2000,6579,9,1520.08,1520.00,20.01 -add,kernel,2000,2000,17655,9,1132.78,1132.75,20.00 -add,floor,2000,2000,17377,9,1150.78,1150.40,20.00 -add,gmp,2000,2000,41798,9,479.14,478.49,20.03 -add,gmpz,2000,2000,41353,9,483.63,482.13,19.98 -add,auto,1024,1,79341,9,252.16,251.83,20.01 -add,inplace,1024,1,1960473,9,5.10,5.10,20.00 -add,kernel,1024,1,34633,9,577.39,577.36,20.00 -add,floor,1024,1,33514,9,593.98,593.90,19.91 -add,gmp,1024,1,85831,9,233.05,232.86,20.00 -add,gmpz,1024,1,85361,9,233.86,233.50,19.96 -sub,auto,1,1,2578774,9,7.77,7.75,20.04 -sub,inplace,1,1,2127122,9,4.68,4.64,19.90 -sub,kernel,1,1,13236253,9,1.51,1.51,20.00 -sub,floor,1,1,10588807,9,1.89,1.89,20.04 -sub,gmp,1,1,8824033,9,2.27,2.27,20.01 -sub,gmpz,1,1,4603712,9,4.34,4.34,20.03 -sub,auto,2,2,1272669,9,15.73,15.64,20.02 -sub,inplace,2,2,1964801,9,5.10,5.09,20.07 -sub,kernel,2,2,9504511,9,2.10,2.10,20.07 -sub,floor,2,2,2035529,9,10.03,9.89,20.38 -sub,gmp,2,2,8824029,9,2.27,2.27,20.00 -sub,gmpz,2,2,4594257,9,4.34,4.34,19.97 -sub,auto,4,4,1205804,9,16.57,16.57,19.99 -sub,inplace,4,4,1787525,9,5.59,5.59,20.02 -sub,kernel,4,4,7054044,9,2.84,2.83,20.00 -sub,floor,4,4,1884463,9,10.73,10.68,20.21 -sub,gmp,4,4,7457020,9,2.68,2.68,20.01 -sub,gmpz,4,4,4391434,9,4.57,4.53,20.06 -sub,auto,8,8,1115997,9,17.92,17.91,20.01 -sub,inplace,8,8,1442450,9,6.93,6.93,20.01 -sub,kernel,8,8,4576631,9,4.37,4.36,19.99 -sub,floor,8,8,1615788,9,12.40,12.37,20.03 -sub,gmp,8,8,4765367,9,4.20,4.20,20.00 -sub,gmpz,8,8,3840915,9,5.20,5.18,19.98 -sub,auto,16,16,948827,9,21.11,20.99,20.02 -sub,inplace,16,16,916254,9,10.98,10.95,20.11 -sub,kernel,16,16,2679158,9,7.46,7.46,20.01 -sub,floor,16,16,1312766,9,15.33,15.25,20.12 -sub,gmp,16,16,3637688,9,5.50,5.49,20.00 -sub,gmpz,16,16,2941291,9,6.80,6.78,20.00 -sub,auto,64,64,335474,9,59.57,59.53,20.00 -sub,inplace,64,64,211889,9,47.19,47.17,20.00 -sub,kernel,64,64,611479,9,32.70,32.69,20.00 -sub,floor,64,64,473456,9,42.26,41.80,20.06 -sub,gmp,64,64,1294709,9,15.45,15.45,20.00 -sub,gmpz,64,64,1190927,9,16.79,16.76,19.99 -sub,auto,256,256,92524,9,216.13,215.99,20.03 -sub,inplace,256,256,50886,9,195.92,195.90,19.94 -sub,kernel,256,256,139495,9,143.38,143.37,20.00 -sub,floor,256,256,126643,9,158.07,157.97,20.02 -sub,gmp,256,256,255606,9,78.24,78.24,20.00 -sub,gmpz,256,256,249971,9,79.85,79.74,19.96 -sub,auto,1024,1024,24733,9,808.45,808.21,19.99 -sub,inplace,1024,1024,12635,9,791.54,791.51,20.01 -sub,kernel,1024,1024,34616,9,577.80,577.76,20.01 -sub,floor,1024,1024,33676,9,593.90,593.78,20.00 -sub,gmp,1024,1024,51315,9,389.76,389.75,20.00 -sub,gmpz,1024,1024,51127,9,391.22,391.18,20.00 -sub,auto,2000,2000,12913,9,1548.79,1548.61,20.00 -sub,inplace,2000,2000,6580,9,1520.00,1519.91,20.01 -sub,kernel,2000,2000,17659,9,1132.59,1132.54,20.00 -sub,floor,2000,2000,17401,9,1149.50,1149.13,20.00 -sub,gmp,2000,2000,42600,9,469.52,469.49,20.00 -sub,gmpz,2000,2000,41776,9,478.76,477.05,20.03 -sub,auto,1024,1,79119,9,252.81,252.58,20.00 -sub,inplace,1024,1,2027790,9,4.89,4.88,19.87 -sub,kernel,1024,1,34691,9,576.51,576.50,20.02 -sub,floor,1024,1,33750,9,592.65,592.51,20.01 -sub,gmp,1024,1,85917,9,232.78,232.71,20.00 -sub,gmpz,1024,1,85490,9,233.94,233.48,19.99 -shl,auto,1,13,1614905,9,12.59,12.48,20.33 -shl,inplace,1,13,2528451,9,3.99,3.97,20.16 -shl,kernel,1,13,9626293,9,2.08,2.07,19.99 -shl,kernelip,1,13,5628671,9,1.74,1.71,19.57 -shl,floor,1,13,2011629,9,9.82,9.80,19.75 -shl,gmp,1,13,9626100,9,2.08,2.08,20.00 -shl,gmpz,1,13,5890106,9,3.39,3.39,19.98 -shl,auto,4,13,1484593,9,13.44,13.38,19.94 -shl,inplace,4,13,2160889,9,4.62,4.61,19.98 -shl,kernel,4,13,5720766,9,3.50,3.48,20.07 -shl,kernelip,4,13,3387956,9,2.94,2.93,20.05 -shl,floor,4,13,1775336,9,11.19,11.17,19.86 -shl,gmp,4,13,7991225,9,2.50,2.50,20.03 -shl,gmpz,4,13,4946379,9,4.04,4.04,20.02 -shl,auto,16,13,1166639,9,17.03,16.97,19.88 -shl,inplace,16,13,1084627,9,9.12,8.99,19.73 -shl,kernel,16,13,2686810,9,7.45,7.44,20.02 -shl,kernelip,16,13,1422901,9,7.10,7.07,20.26 -shl,floor,16,13,1344058,9,15.21,15.21,20.45 -shl,gmp,16,13,4837597,9,4.15,4.13,20.11 -shl,gmpz,16,13,3445982,9,5.80,5.80,20.05 -shl,auto,256,13,163968,9,122.03,121.90,20.01 -shl,inplace,256,13,97727,9,102.25,101.89,19.98 -shl,kernel,256,13,214754,9,93.18,92.91,20.01 -shl,kernelip,256,13,102658,9,97.43,97.35,20.01 -shl,floor,256,13,179755,9,116.53,116.47,20.95 -shl,gmp,256,13,424122,9,47.23,47.10,20.06 -shl,gmpz,256,13,401813,9,49.80,49.59,20.01 -shl,auto,2000,13,25888,9,772.77,772.67,20.02 -shl,inplace,2000,13,13504,9,740.89,739.16,20.01 -shl,kernel,2000,13,27782,9,720.02,719.85,20.01 -shl,kernelip,2000,13,13983,9,715.20,715.08,20.00 -shl,floor,2000,13,27174,9,739.79,739.62,20.11 -shl,gmp,2000,13,59551,9,335.38,335.37,19.97 -shl,gmpz,2000,13,59136,9,338.05,337.86,19.99 -shl,auto,2000,77,25819,9,774.75,774.62,20.01 -shl,inplace,2000,77,13488,9,741.52,741.38,20.00 -shl,kernel,2000,77,23540,9,850.01,848.62,20.00 -shl,kernelip,2000,77,12165,9,822.05,822.02,20.00 -shl,floor,2000,77,22953,9,870.91,870.53,20.00 -shl,gmp,2000,77,59285,9,337.63,337.54,20.02 -shl,gmpz,2000,77,59106,9,338.20,338.16,19.99 -shr,auto,1,13,2441630,9,8.19,8.19,20.01 -shr,inplace,1,13,3040369,9,3.28,3.26,19.99 -shr,kernel,1,13,11755993,9,1.70,1.70,20.02 -shr,floor,1,13,8823766,9,2.27,2.27,20.00 -shr,gmp,1,13,10588710,9,1.89,1.89,20.04 -shr,gmpz,1,13,5777432,9,3.46,3.46,20.02 -shr,auto,4,13,1238732,9,16.14,16.09,20.01 -shr,inplace,4,13,2004483,9,4.97,4.90,19.89 -shr,kernel,4,13,5771346,9,3.51,3.46,20.27 -shr,floor,4,13,1779624,9,11.24,11.21,20.02 -shr,gmp,4,13,8082021,9,2.47,2.47,19.97 -shr,gmpz,4,13,4192651,9,4.76,4.72,19.92 -shr,auto,16,13,998835,9,20.02,19.99,20.01 -shr,inplace,16,13,1155545,9,8.65,8.62,19.98 -shr,kernel,16,13,2291842,9,8.79,8.74,20.14 -shr,floor,16,13,1248350,9,15.72,15.60,19.62 -shr,gmp,16,13,4436465,9,4.51,4.50,20.03 -shr,gmpz,16,13,3237313,9,6.31,6.15,20.35 -shr,auto,256,13,159506,9,125.35,125.07,19.99 -shr,inplace,256,13,98515,9,101.65,101.55,20.03 -shr,kernel,256,13,180719,9,110.70,110.48,20.00 -shr,floor,256,13,153465,9,130.40,130.32,20.02 -shr,gmp,256,13,417967,9,47.77,47.52,19.99 -shr,gmpz,256,13,395372,9,50.70,50.62,20.05 -shr,auto,2000,13,26680,9,750.25,749.19,20.02 -shr,inplace,2000,13,13533,9,739.58,738.32,20.01 -shr,kernel,2000,13,24627,9,812.10,812.02,20.00 -shr,floor,2000,13,24022,9,832.09,831.84,19.99 -shr,gmp,2000,13,59598,9,335.65,335.54,20.02 -shr,gmpz,2000,13,58980,9,339.02,338.88,19.99 -shr,auto,2000,77,26505,9,754.65,754.06,20.01 -shr,inplace,2000,77,13512,9,740.11,738.47,19.99 -shr,kernel,2000,77,24152,9,828.11,828.09,20.00 -shr,floor,2000,77,23521,9,850.91,850.19,20.02 -shr,gmp,2000,77,59153,9,336.34,336.22,19.91 -shr,gmpz,2000,77,58980,9,339.07,339.03,20.00 -mul,auto,1,1,1199372,9,16.34,16.27,19.63 -mul,gmp,1,1,5937981,9,3.34,3.31,19.82 -mul,gmpz,1,1,5042278,9,3.97,3.97,20.02 -mul,auto,2,2,1065869,9,18.87,18.82,20.12 -mul,kernel,2,2,2839987,9,7.59,7.56,21.58 -mul,floor,2,2,1356424,9,14.92,14.87,20.26 -mul,gmp,2,2,5239458,9,3.82,3.80,20.07 -mul,gmpz,2,2,3285598,9,6.11,6.08,20.07 -mul,auto,3,3,989494,9,20.21,20.13,20.02 -mul,kernel,3,3,2393109,9,8.95,8.92,21.71 -mul,floor,3,3,1239907,9,16.44,16.38,20.41 -mul,gmp,3,3,2586523,9,7.78,7.70,20.16 -mul,gmpz,3,3,2013098,9,9.92,9.88,19.98 -mul,auto,4,4,894006,9,22.25,22.15,19.90 -mul,kernel,4,4,1926640,9,10.91,10.89,21.08 -mul,floor,4,4,1113831,9,18.19,18.14,20.28 -mul,gmp,4,4,2060795,9,9.66,9.66,19.93 -mul,gmpz,4,4,1638712,9,12.20,12.10,19.95 -mul,auto,6,6,717334,9,27.89,27.82,20.01 -mul,kernel,6,6,1217364,9,17.15,17.14,20.91 -mul,floor,6,6,820493,9,24.38,24.34,20.00 -mul,gmp,6,6,1269342,9,15.67,15.65,19.89 -mul,gmpz,6,6,1111777,9,17.96,17.92,19.97 -mul,auto,8,8,558143,9,35.56,35.45,19.86 -mul,kernel,8,8,811603,9,25.39,25.27,20.60 -mul,floor,8,8,615497,9,32.35,32.25,19.92 -mul,gmp,8,8,738738,9,27.05,26.90,19.98 -mul,gmpz,8,8,685388,9,28.88,28.70,19.79 -mul,auto,12,12,346995,9,57.61,57.59,20.00 -mul,kernel,12,12,428519,9,47.36,47.24,20.30 -mul,floor,12,12,368472,9,54.48,54.23,20.09 -mul,gmp,12,12,411752,9,48.56,48.55,20.01 -mul,gmpz,12,12,393990,9,50.75,50.73,19.99 -mul,auto,16,16,226275,9,88.38,88.33,20.00 -mul,kernel,16,16,256809,9,78.67,78.51,20.21 -mul,floor,16,16,234436,9,85.54,85.32,20.05 -mul,gmp,16,16,244118,9,81.90,81.89,19.99 -mul,gmpz,16,16,237935,9,84.07,84.03,20.00 -mul,auto,32,32,99671,9,200.21,199.37,19.94 -mul,kernel,32,32,106167,9,188.67,188.47,20.04 -mul,floor,32,32,101145,9,197.45,196.56,19.95 -mul,gmp,32,32,73236,9,269.60,268.80,19.79 -mul,gmpz,32,32,74156,9,269.71,269.66,20.00 -mul,auto,64,64,40330,9,493.60,492.95,19.91 -mul,kernel,64,64,40814,9,488.15,487.57,19.94 -mul,floor,64,64,40385,9,494.40,493.82,19.98 -mul,gmp,64,64,22893,9,866.14,858.83,19.82 -mul,gmpz,64,64,23261,9,860.00,858.34,20.04 -mul,auto,128,128,11557,9,1730.12,1728.78,20.01 -mul,kernel,128,128,11768,9,1694.36,1693.37,19.95 -mul,floor,128,128,11700,9,1707.95,1706.48,20.00 -mul,gmp,128,128,7031,9,2815.54,2790.22,19.79 -mul,gmpz,128,128,7122,9,2808.10,2807.02,20.00 -mul,auto,256,256,3235,9,6185.06,6183.06,20.01 -mul,kernel,256,256,3243,9,6176.11,6173.48,20.03 -mul,floor,256,256,3239,9,6177.23,6176.49,20.01 -mul,gmp,256,256,2527,9,7826.16,7779.29,19.83 -mul,gmpz,256,256,2563,9,7805.31,7801.25,20.01 -mul,auto,512,512,1044,9,19164.13,19142.86,20.01 -mul,kernel,512,512,1046,9,19150.47,19131.22,20.03 -mul,floor,512,512,1044,9,19168.41,19153.77,20.01 -mul,gmp,512,512,952,9,20789.91,20785.44,19.81 -mul,gmpz,512,512,960,9,20841.04,20823.52,20.01 -mul,auto,1000,1000,336,9,59673.24,59554.48,20.05 -mul,kernel,1000,1000,337,9,59462.38,59357.36,20.08 -mul,floor,1000,1000,336,9,59625.59,59573.19,20.05 -mul,gmp,1000,1000,371,9,53567.97,53560.42,19.88 -mul,gmpz,1000,1000,373,9,53749.76,53728.02,20.05 -mul,auto,2000,2000,114,9,176769.88,176633.75,20.17 -mul,kernel,2000,2000,114,9,176371.14,176102.37,20.11 -mul,floor,2000,2000,114,9,176411.07,176232.32,20.11 -mul,gmp,2000,2000,139,9,144123.43,144096.40,20.03 -mul,gmpz,2000,2000,139,9,144181.42,144119.34,20.04 -mul,auto,2000,100,1132,9,17639.44,17633.06,19.97 -mul,kernel,2000,100,1132,9,17664.50,17662.47,20.00 -mul,floor,2000,100,1131,9,17685.31,17682.20,20.01 -mul,gmp,2000,100,543,9,36468.65,36219.48,19.82 -mul,gmpz,2000,100,552,9,36170.94,36111.19,19.98 -sqr,auto,4,4,889675,9,22.15,22.10,19.74 -sqr,kernel,4,4,1985464,9,9.96,9.90,19.77 -sqr,floor,4,4,1208097,9,16.79,16.77,20.29 -sqr,gmp,4,4,3348758,9,5.79,5.76,19.44 -sqr,gmpz,4,4,2274242,9,8.83,8.77,20.06 -sqr,auto,16,16,301298,9,66.31,66.23,19.98 -sqr,kernel,16,16,349154,9,57.22,57.17,19.99 -sqr,floor,16,16,320305,9,62.69,62.59,20.09 -sqr,gmp,16,16,395746,9,49.83,49.81,19.75 -sqr,gmpz,16,16,384148,9,52.10,52.07,20.01 -sqr,auto,64,64,72031,9,277.71,276.97,19.99 -sqr,kernel,64,64,73241,9,273.18,272.86,20.02 -sqr,floor,64,64,71534,9,278.68,277.66,19.95 -sqr,gmp,64,64,35729,9,556.48,552.57,19.88 -sqr,gmpz,64,64,36024,9,552.00,551.02,19.89 -sqr,auto,512,512,1893,9,10571.09,10561.60,20.01 -sqr,kernel,512,512,1892,9,10577.56,10569.78,20.01 -sqr,floor,512,512,1888,9,10588.64,10580.76,19.99 -sqr,gmp,512,512,1332,9,15017.92,15011.03,20.00 -sqr,gmpz,512,512,1331,9,15030.31,15027.51,20.01 -sqr,auto,2000,2000,203,9,98567.38,98339.75,20.02 -sqr,kernel,2000,2000,204,9,98318.25,98274.92,20.06 -sqr,floor,2000,2000,204,9,98527.49,98507.87,20.10 -sqr,gmp,2000,2000,199,9,100651.96,100596.38,20.04 -sqr,gmpz,2000,2000,199,9,100658.40,100615.44,20.04 -divrem,auto,2,1,635819,9,31.60,31.47,20.11 -divrem,kernel,2,1,3578608,9,5.77,5.58,20.69 -divrem,floor,2,1,1533093,9,13.01,12.98,19.96 -divrem,gmp,2,1,2929584,9,6.70,6.70,19.65 -divrem,gmpz,2,1,1727401,9,11.60,11.58,20.05 -divrem,auto,8,4,207251,9,97.11,96.74,20.12 -divrem,kernel,8,4,370902,9,53.71,53.48,19.92 -divrem,floor,8,4,278094,9,72.13,71.47,20.05 -divrem,gmp,8,4,459016,9,43.47,43.42,19.99 -divrem,gmpz,8,4,434273,9,45.92,45.88,19.97 -divrem,auto,32,16,58259,9,341.69,341.61,19.92 -divrem,kernel,32,16,68662,9,291.96,291.26,20.05 -divrem,floor,32,16,65015,9,306.79,306.30,19.97 -divrem,gmp,32,16,104117,9,192.49,191.51,20.03 -divrem,gmpz,32,16,103622,9,194.00,193.65,20.12 -divrem,auto,128,64,6069,9,3295.84,3294.74,20.01 -divrem,kernel,128,64,6204,9,3223.08,3221.79,20.00 -divrem,floor,128,64,6222,9,3216.30,3215.40,20.02 -divrem,gmp,128,64,11394,9,1754.58,1752.55,19.99 -divrem,gmpz,128,64,11587,9,1726.50,1725.94,20.01 -divrem,auto,512,256,693,9,29110.86,28973.95,20.15 -divrem,kernel,512,256,692,9,28924.61,28901.07,20.02 -divrem,floor,512,256,689,9,29017.93,29001.93,19.99 -divrem,gmp,512,256,1233,9,16227.97,16225.90,20.01 -divrem,gmpz,512,256,1234,9,16214.95,16208.95,20.02 -divrem,auto,2000,1000,109,9,185196.28,184530.94,20.19 -divrem,kernel,2000,1000,108,9,186062.36,185996.72,20.09 -divrem,floor,2000,1000,108,9,186182.42,186083.47,20.11 -divrem,gmp,2000,1000,145,9,138335.21,138281.01,20.11 -divrem,gmpz,2000,1000,145,9,138134.63,138123.37,20.03 -divrem,auto,4000,2000,43,9,473971.91,473773.26,20.38 -divrem,kernel,4000,2000,43,9,474786.16,474576.40,20.42 -divrem,floor,4000,2000,43,9,475114.77,474869.26,20.45 -divrem,gmp,4000,2000,60,9,335354.32,334056.93,20.11 -divrem,gmpz,4000,2000,60,9,332544.43,332290.82,19.96 -divrem,auto,2000,100,139,9,144831.12,144819.19,20.15 -divrem,kernel,2000,100,142,9,141401.66,141110.63,20.09 -divrem,floor,2000,100,142,9,141223.35,141142.82,20.09 -divrem,gmp,2000,100,278,9,71952.97,71931.24,20.02 -divrem,gmpz,2000,100,279,9,71874.90,71864.14,20.05 -divrem,auto,65536,1,115,9,174442.58,174261.90,20.06 -divrem,kernel,65536,1,120,9,167187.50,167007.33,20.08 -divrem,floor,65536,1,120,9,167573.87,167288.59,20.11 -divrem,gmp,65536,1,136,9,148102.09,148092.53,20.14 -divrem,gmpz,65536,1,136,9,148112.93,148090.84,20.18 -fromchars,auto,4,10,171613,9,116.41,116.10,19.99 -fromchars,kernel,4,10,516388,9,38.79,38.65,20.02 -fromchars,gmp,4,10,626640,9,32.01,31.92,20.06 -fromchars,gmpz,4,10,289369,9,69.08,68.90,20.04 -fromchars,auto,16,10,46715,9,432.97,429.01,20.26 -fromchars,kernel,16,10,89825,9,225.59,220.22,20.26 -fromchars,gmp,16,10,162268,9,123.27,123.09,20.01 -fromchars,gmpz,16,10,78620,9,254.41,254.19,20.04 -fromchars,auto,64,10,6730,9,2945.58,2821.74,19.98 -fromchars,kernel,64,10,9742,9,2334.51,2103.67,21.02 -fromchars,gmp,64,10,21302,9,939.07,937.69,20.00 -fromchars,gmpz,64,10,14057,9,1423.53,1421.83,20.03 -fromchars,auto,256,10,679,9,28853.69,28141.23,19.86 -fromchars,kernel,256,10,736,9,29469.16,27330.21,21.90 -fromchars,gmp,256,10,2492,9,8016.63,8009.97,19.98 -fromchars,gmpz,256,10,2007,9,9976.02,9970.71,20.02 -fromchars,auto,2000,10,47,9,426673.13,423767.66,20.05 -fromchars,kernel,2000,10,50,9,405997.02,405780.76,20.30 -fromchars,gmp,2000,10,110,9,182764.29,182702.07,20.10 -fromchars,gmpz,2000,10,102,9,197428.02,197379.51,20.14 diff --git a/tests/beman/big_int/perf/item1/x64_new64_shortcut_run1.csv b/tests/beman/big_int/perf/item1/x64_new64_shortcut_run1.csv deleted file mode 100644 index d8f94268..00000000 --- a/tests/beman/big_int/perf/item1/x64_new64_shortcut_run1.csv +++ /dev/null @@ -1,20 +0,0 @@ -# shortcut A/B new64 run1 -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -mul,auto,2,2,1058099,9,18.87,18.84,20.00 -mul,kernel,2,2,2826567,9,7.65,7.60,21.68 -mul,auto,3,3,986605,9,20.29,20.22,20.02 -mul,kernel,3,3,2379337,9,9.38,9.30,22.33 -mul,auto,4,4,895981,9,22.26,22.19,19.98 -mul,kernel,4,4,1935498,9,10.95,10.92,21.21 -mul,auto,6,6,718194,9,27.89,27.82,20.04 -mul,kernel,6,6,1215406,9,17.15,17.14,20.84 -mul,auto,8,8,556105,9,35.67,35.46,19.83 -mul,kernel,8,8,802432,9,25.65,25.53,20.61 -mul,auto,12,12,346220,9,57.71,57.62,20.01 -mul,kernel,12,12,426984,9,47.40,47.31,20.25 -mul,auto,16,16,208058,9,96.06,95.99,19.99 -mul,kernel,16,16,226490,9,88.15,87.98,19.98 -sqr,auto,4,4,903271,9,22.20,22.06,20.04 -sqr,kernel,4,4,1616631,9,12.47,12.28,20.17 -sqr,auto,16,16,291093,9,68.76,68.60,20.02 -sqr,kernel,16,16,343068,9,58.34,58.23,20.01 diff --git a/tests/beman/big_int/perf/item1/x64_new64_shortcut_run2.csv b/tests/beman/big_int/perf/item1/x64_new64_shortcut_run2.csv deleted file mode 100644 index b04b224f..00000000 --- a/tests/beman/big_int/perf/item1/x64_new64_shortcut_run2.csv +++ /dev/null @@ -1,20 +0,0 @@ -# shortcut A/B new64 run2 -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -mul,auto,2,2,1052056,9,18.94,18.87,19.95 -mul,kernel,2,2,2808152,9,7.59,7.52,21.28 -mul,auto,3,3,981985,9,20.43,20.25,20.02 -mul,kernel,3,3,2390276,9,8.93,8.92,21.40 -mul,auto,4,4,888690,9,22.37,22.34,19.92 -mul,kernel,4,4,1931632,9,10.93,10.90,21.13 -mul,auto,6,6,713189,9,28.00,27.96,19.97 -mul,kernel,6,6,1217894,9,17.16,17.14,20.90 -mul,auto,8,8,560338,9,35.68,35.51,20.01 -mul,kernel,8,8,808429,9,25.31,25.23,20.48 -mul,auto,12,12,346907,9,57.65,57.56,20.00 -mul,kernel,12,12,427145,9,47.56,47.44,20.33 -mul,auto,16,16,210630,9,95.03,94.90,20.02 -mul,kernel,16,16,230473,9,87.91,87.80,20.26 -sqr,auto,4,4,907887,9,22.03,21.95,20.00 -sqr,kernel,4,4,2032432,9,9.84,9.75,20.00 -sqr,auto,16,16,301689,9,66.33,66.26,20.01 -sqr,kernel,16,16,349143,9,57.25,57.21,19.99 diff --git a/tests/beman/big_int/perf/item1/x64_new64_shortcut_run3.csv b/tests/beman/big_int/perf/item1/x64_new64_shortcut_run3.csv deleted file mode 100644 index 321c8551..00000000 --- a/tests/beman/big_int/perf/item1/x64_new64_shortcut_run3.csv +++ /dev/null @@ -1,20 +0,0 @@ -# shortcut A/B new64 run3 -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -mul,auto,2,2,1053169,9,18.94,18.89,19.97 -mul,kernel,2,2,2854276,9,7.64,7.61,21.82 -mul,auto,3,3,968130,9,20.29,20.24,19.66 -mul,kernel,3,3,2385658,9,8.94,8.91,21.34 -mul,auto,4,4,886249,9,22.34,22.27,19.82 -mul,kernel,4,4,1899183,9,11.61,11.52,22.03 -mul,auto,6,6,714107,9,27.99,27.86,19.98 -mul,kernel,6,6,1217561,9,17.15,17.13,20.90 -mul,auto,8,8,561084,9,35.69,35.59,20.02 -mul,kernel,8,8,781155,9,25.82,25.70,20.17 -mul,auto,12,12,346370,9,57.78,57.74,20.03 -mul,kernel,12,12,418197,9,47.77,47.67,19.99 -mul,auto,16,16,210696,9,94.97,94.90,20.01 -mul,kernel,16,16,228457,9,88.22,87.95,20.16 -sqr,auto,4,4,908551,9,21.95,21.89,19.96 -sqr,kernel,4,4,2021037,9,9.85,9.80,19.93 -sqr,auto,16,16,260154,9,77.18,76.93,20.07 -sqr,kernel,16,16,352459,9,56.74,56.70,20.00 diff --git a/tests/beman/big_int/perf/item1/x64_new64_spot_seed1.csv b/tests/beman/big_int/perf/item1/x64_new64_spot_seed1.csv deleted file mode 100644 index cfa266c1..00000000 --- a/tests/beman/big_int/perf/item1/x64_new64_spot_seed1.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,1591,3,12437.96,12437.75,19.79 -add,inplace,16384,16384,803,3,12455.50,12455.03,20.00 -add,kernel,16384,16384,2154,3,9288.78,9288.37,20.01 -add,floor,16384,16384,2148,3,9312.95,9312.88,20.00 -add,gmp,16384,16384,2885,3,6934.99,6934.82,20.01 -add,gmpz,16384,16384,2882,3,6927.60,6926.87,19.97 -mul,auto,2000,2000,113,3,176524.72,176519.96,19.95 -mul,kernel,2000,2000,114,3,176559.53,176449.72,20.13 -mul,floor,2000,2000,114,3,176852.52,176736.38,20.16 -mul,gmp,2000,2000,139,3,143955.26,143944.85,20.01 -mul,gmpz,2000,2000,139,3,143997.83,143946.70,20.02 -mul,auto,16384,16384,6,3,3777189.00,3775779.33,22.66 -mul,kernel,16384,16384,6,3,3791482.00,3790272.33,22.75 -mul,floor,16384,16384,6,3,3787669.17,3783454.00,22.73 -mul,gmp,16384,16384,12,3,1761828.42,1761481.58,21.14 -mul,gmpz,16384,16384,12,3,1763531.42,1762290.92,21.16 -divrem,auto,4096,2048,41,3,500795.68,499912.71,20.53 -divrem,kernel,4096,2048,41,3,498583.71,498537.00,20.44 -divrem,floor,4096,2048,41,3,497344.63,497116.76,20.39 -divrem,gmp,4096,2048,55,3,367953.18,367893.25,20.24 -divrem,gmpz,4096,2048,55,3,367482.76,367367.53,20.22 -tochars,auto,10000,10,4,3,5884269.00,5883212.00,23.56 -tochars,kernel,10000,10,4,3,5854447.25,5852018.00,23.43 -tochars,gmp,10000,10,5,3,4185088.20,4183189.00,20.93 -tochars,gmpz,10000,10,5,3,4221363.40,4219639.40,21.11 -fromchars,auto,10000,10,6,3,3649842.50,3648271.33,21.92 -fromchars,kernel,10000,10,6,3,3575054.00,3559428.67,21.43 -fromchars,gmp,10000,10,11,3,1932985.82,1931462.82,21.27 -fromchars,gmpz,10000,10,10,3,2008227.20,2007289.10,20.08 diff --git a/tests/beman/big_int/perf/item1/x64_new64_spot_seed2.csv b/tests/beman/big_int/perf/item1/x64_new64_spot_seed2.csv deleted file mode 100644 index 737e5d92..00000000 --- a/tests/beman/big_int/perf/item1/x64_new64_spot_seed2.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,1609,3,12432.76,12431.98,20.01 -add,inplace,16384,16384,803,3,12455.74,12455.59,20.00 -add,kernel,16384,16384,2149,3,9307.34,9307.30,20.00 -add,floor,16384,16384,2143,3,9328.71,9327.92,20.03 -add,gmp,16384,16384,2536,3,7888.12,7886.73,20.01 -add,gmpz,16384,16384,2535,3,7891.87,7890.30,20.00 -mul,auto,2000,2000,113,3,178054.55,177946.59,20.12 -mul,kernel,2000,2000,114,3,176508.37,176507.18,20.13 -mul,floor,2000,2000,114,3,176551.76,176518.70,20.13 -mul,gmp,2000,2000,139,3,144204.45,144187.40,20.05 -mul,gmpz,2000,2000,139,3,144341.19,144275.71,20.06 -mul,auto,16384,16384,6,3,3771149.50,3770493.17,22.64 -mul,kernel,16384,16384,6,3,3771288.17,3765809.67,22.64 -mul,floor,16384,16384,6,3,3780640.00,3780459.00,22.71 -mul,gmp,16384,16384,11,3,1834016.91,1832816.91,20.17 -mul,gmpz,16384,16384,12,3,1804320.58,1803606.50,21.65 -divrem,auto,4096,2048,41,3,496737.88,496732.44,20.37 -divrem,kernel,4096,2048,41,3,499080.10,498891.59,20.46 -divrem,floor,4096,2048,41,3,499402.51,499394.20,20.48 -divrem,gmp,4096,2048,54,3,370861.43,369023.02,20.00 -divrem,gmpz,4096,2048,55,3,367787.42,367640.15,20.23 -tochars,auto,10000,10,4,3,5873762.50,5871235.00,23.51 -tochars,kernel,10000,10,4,3,5838182.25,5834857.50,23.35 -tochars,gmp,10000,10,5,3,4180554.80,4179733.20,20.91 -tochars,gmpz,10000,10,5,3,4220963.00,4220620.80,21.11 -fromchars,auto,10000,10,6,3,3652930.17,3646335.33,21.92 -fromchars,kernel,10000,10,6,3,3560482.83,3550122.83,21.36 -fromchars,gmp,10000,10,11,3,1933120.55,1931096.09,21.34 -fromchars,gmpz,10000,10,10,3,2005491.20,2005324.10,20.06 diff --git a/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run1.csv b/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run1.csv deleted file mode 100644 index db9039a1..00000000 --- a/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run1.csv +++ /dev/null @@ -1,20 +0,0 @@ -# shortcut A/B nosc64 run1 -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -mul,auto,2,2,868401,9,22.74,22.65,19.76 -mul,kernel,2,2,2773105,9,7.63,7.56,21.19 -mul,auto,3,3,813455,9,24.60,24.50,20.03 -mul,kernel,3,3,2390989,9,8.93,8.92,21.39 -mul,auto,4,4,757720,9,26.27,26.18,19.90 -mul,kernel,4,4,1926421,9,10.93,10.91,21.09 -mul,auto,6,6,599372,9,33.36,33.33,19.99 -mul,kernel,6,6,1215103,9,17.17,17.15,20.88 -mul,auto,8,8,483777,9,41.30,41.22,19.98 -mul,kernel,8,8,807772,9,25.43,25.34,20.54 -mul,auto,12,12,319597,9,62.58,62.41,19.99 -mul,kernel,12,12,425710,9,48.29,48.19,20.56 -mul,auto,16,16,200506,9,99.79,99.66,20.01 -mul,kernel,16,16,249820,9,79.36,79.22,19.84 -sqr,auto,4,4,733701,9,27.32,27.23,20.04 -sqr,kernel,4,4,2008767,9,10.17,9.97,20.39 -sqr,auto,16,16,280965,9,71.24,71.16,20.01 -sqr,kernel,16,16,348113,9,57.42,57.38,19.99 diff --git a/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run2.csv b/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run2.csv deleted file mode 100644 index b0c80651..00000000 --- a/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run2.csv +++ /dev/null @@ -1,20 +0,0 @@ -# shortcut A/B nosc64 run2 -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -mul,auto,2,2,873498,9,22.67,22.62,19.83 -mul,kernel,2,2,2839003,9,7.61,7.58,21.65 -mul,auto,3,3,820849,9,24.45,24.36,20.08 -mul,kernel,3,3,2359197,9,8.94,8.93,21.13 -mul,auto,4,4,757700,9,26.33,26.31,19.96 -mul,kernel,4,4,1933369,9,10.94,10.90,21.16 -mul,auto,6,6,612103,9,32.68,32.64,20.00 -mul,kernel,6,6,1217181,9,17.17,17.15,20.93 -mul,auto,8,8,485020,9,41.15,40.91,19.95 -mul,kernel,8,8,805846,9,25.51,25.30,20.55 -mul,auto,12,12,317224,9,62.61,62.37,19.85 -mul,kernel,12,12,424272,9,47.50,47.40,20.16 -mul,auto,16,16,173590,9,115.51,115.09,20.04 -mul,kernel,16,16,256763,9,78.56,78.45,20.18 -sqr,auto,4,4,733109,9,27.35,27.31,20.05 -sqr,kernel,4,4,2026865,9,9.87,9.77,20.01 -sqr,auto,16,16,272845,9,73.27,73.21,20.00 -sqr,kernel,16,16,345750,9,57.84,57.77,20.03 diff --git a/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run3.csv b/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run3.csv deleted file mode 100644 index b7add623..00000000 --- a/tests/beman/big_int/perf/item1/x64_nosc64_shortcut_run3.csv +++ /dev/null @@ -1,20 +0,0 @@ -# shortcut A/B nosc64 run3 -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -mul,auto,2,2,876250,9,22.72,22.67,19.98 -mul,kernel,2,2,2818407,9,7.57,7.54,21.46 -mul,auto,3,3,812625,9,24.72,24.57,20.18 -mul,kernel,3,3,2388863,9,8.93,8.91,21.59 -mul,auto,4,4,755599,9,26.37,26.31,19.96 -mul,kernel,4,4,1930599,9,10.92,10.91,21.13 -mul,auto,6,6,599281,9,32.77,32.72,19.65 -mul,kernel,6,6,1215955,9,17.17,17.15,20.87 -mul,auto,8,8,488777,9,41.02,40.75,20.04 -mul,kernel,8,8,807898,9,25.38,25.20,20.52 -mul,auto,12,12,319362,9,62.54,62.33,19.98 -mul,kernel,12,12,425897,9,47.55,47.41,20.24 -mul,auto,16,16,171887,9,116.03,115.56,19.94 -mul,kernel,16,16,256109,9,78.91,78.81,20.22 -sqr,auto,4,4,733262,9,27.30,27.27,20.03 -sqr,kernel,4,4,2018549,9,9.89,9.83,19.97 -sqr,auto,16,16,274932,9,72.77,72.70,20.02 -sqr,kernel,16,16,348580,9,57.44,57.36,20.02 diff --git a/tests/beman/big_int/perf/item1/x64_study128_run1.csv b/tests/beman/big_int/perf/item1/x64_study128_run1.csv deleted file mode 100644 index d812b5ee..00000000 --- a/tests/beman/big_int/perf/item1/x64_study128_run1.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:12:16Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new128 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2378345,9,8.32,8.31,19.79 -add,inplace,1,1,2036089,9,4.91,4.89,20.00 -add,kernel,1,1,10420139,9,1.92,1.90,20.03 -add,floor,1,1,7792082,9,2.60,2.53,20.21 -add,gmp,1,1,8642719,9,2.35,2.27,20.16 -add,gmpz,1,1,4811288,9,4.16,4.16,19.99 -add,auto,2,2,1037988,9,19.49,19.28,20.18 -add,inplace,2,2,1457167,9,6.90,6.84,20.20 -add,kernel,2,2,8607393,9,2.36,2.31,20.27 -add,floor,2,2,1958992,9,10.28,10.23,20.12 -add,gmp,2,2,8824093,9,2.27,2.27,20.00 -add,gmpz,2,2,4813126,9,4.16,4.16,20.00 -add,auto,4,4,1133040,9,17.70,17.45,20.02 -add,inplace,4,4,1606523,9,6.17,6.05,19.88 -add,kernel,4,4,6542415,9,3.03,3.02,19.83 -add,floor,4,4,1793675,9,11.17,11.08,20.07 -add,gmp,4,4,8044143,9,2.49,2.49,20.01 -add,gmpz,4,4,4582112,9,4.34,4.34,19.91 -add,auto,8,8,1065413,9,18.79,18.69,20.02 -add,inplace,8,8,1375105,9,7.34,7.20,20.16 -add,kernel,8,8,4411860,9,4.53,4.53,20.03 -add,floor,8,8,1599967,9,12.49,12.45,20.01 -add,gmp,8,8,5437331,9,3.68,3.68,20.00 -add,gmpz,8,8,4297525,9,4.68,4.66,20.11 -add,auto,16,16,797141,9,25.05,24.93,19.96 -add,inplace,16,16,733579,9,13.82,13.60,20.27 -add,kernel,16,16,2642928,9,7.56,7.55,19.97 -add,floor,16,16,1299130,9,15.42,15.40,20.04 -add,gmp,16,16,3635760,9,5.50,5.50,20.02 -add,gmpz,16,16,3071673,9,6.52,6.50,20.02 -sub,auto,1,1,2076016,9,9.63,9.63,20.02 -sub,inplace,1,1,2161159,9,4.65,4.63,20.12 -sub,kernel,1,1,13236266,9,1.51,1.51,20.00 -sub,floor,1,1,10585831,9,1.89,1.89,19.99 -sub,gmp,1,1,8824091,9,2.27,2.27,20.00 -sub,gmpz,1,1,4603697,9,4.34,4.34,20.02 -sub,auto,2,2,1846925,9,10.83,10.80,20.05 -sub,inplace,2,2,1831768,9,5.43,5.36,19.97 -sub,kernel,2,2,9549201,9,2.11,2.10,20.18 -sub,floor,2,2,8137867,9,2.47,2.46,20.18 -sub,gmp,2,2,8824092,9,2.27,2.27,20.00 -sub,gmpz,2,2,4585338,9,4.34,4.34,19.99 -sub,auto,4,4,1041442,9,19.47,19.29,20.27 -sub,inplace,4,4,1686733,9,5.97,5.91,20.13 -sub,kernel,4,4,7051442,9,2.84,2.84,20.03 -sub,floor,4,4,1884929,9,10.70,10.63,20.16 -sub,gmp,4,4,7973618,9,2.50,2.50,19.94 -sub,gmpz,4,4,4386255,9,4.56,4.54,20.03 -sub,auto,8,8,948649,9,20.96,20.76,19.87 -sub,inplace,8,8,1412387,9,6.96,6.95,19.71 -sub,kernel,8,8,4588422,9,4.36,4.36,20.02 -sub,floor,8,8,1621930,9,12.26,12.20,19.89 -sub,gmp,8,8,5423292,9,3.69,3.69,20.02 -sub,gmpz,8,8,3988278,9,4.98,4.95,19.85 -sub,auto,16,16,816229,9,24.64,24.09,20.08 -sub,inplace,16,16,897940,9,11.15,11.09,20.01 -sub,kernel,16,16,2493836,9,8.02,8.02,20.00 -sub,floor,16,16,1310988,9,15.28,15.25,20.05 -sub,gmp,16,16,3640225,9,5.49,5.49,20.01 -sub,gmpz,16,16,2892169,9,6.93,6.91,20.03 -shl,auto,1,13,2795159,9,7.16,7.14,20.02 -shl,inplace,1,13,2320650,9,4.26,4.24,19.82 -shl,kernel,1,13,9626307,9,2.07,2.04,19.88 -shl,kernelip,1,13,5671726,9,1.76,1.73,19.99 -shl,floor,1,13,8860171,9,2.65,2.62,23.62 -shl,gmp,1,13,9626241,9,1.89,1.89,18.19 -shl,gmpz,1,13,6109742,9,3.27,3.27,20.06 -shl,auto,4,13,1333371,9,14.86,14.81,19.81 -shl,inplace,4,13,2107349,9,4.75,4.74,20.01 -shl,kernel,4,13,5707672,9,3.52,3.48,20.06 -shl,kernelip,4,13,3380550,9,2.94,2.91,19.88 -shl,floor,4,13,1836676,9,11.19,11.18,20.55 -shl,gmp,4,13,7991276,9,2.31,2.31,18.48 -shl,gmpz,4,13,4946961,9,4.04,4.04,20.05 -shl,auto,16,13,1095454,9,18.27,18.20,20.00 -shl,inplace,16,13,1128184,9,8.89,8.85,20.05 -shl,kernel,16,13,2683977,9,7.45,7.43,19.99 -shl,kernelip,16,13,1443005,9,7.17,7.12,20.69 -shl,floor,16,13,1345536,9,15.21,15.21,20.48 -shl,gmp,16,13,4790622,9,4.20,4.16,20.20 -shl,gmpz,16,13,3432321,9,5.83,5.81,20.00 -shr,auto,1,13,2245821,9,8.90,8.87,19.99 -shr,inplace,1,13,2846033,9,3.45,3.43,19.67 -shr,kernel,1,13,11752430,9,1.70,1.70,20.01 -shr,floor,1,13,7635598,9,2.60,2.59,19.86 -shr,gmp,1,13,10587331,9,1.89,1.89,20.05 -shr,gmpz,1,13,5772733,9,3.47,3.46,20.06 -shr,auto,4,13,1192992,9,16.80,16.73,20.07 -shr,inplace,4,13,2243652,9,4.45,4.43,19.97 -shr,kernel,4,13,5711959,9,3.47,3.47,19.83 -shr,floor,4,13,1786514,9,11.19,11.17,20.01 -shr,gmp,4,13,8454248,9,2.33,2.31,19.76 -shr,gmpz,4,13,5002944,9,3.97,3.94,19.86 -shr,auto,16,13,959108,9,20.94,20.82,20.07 -shr,inplace,16,13,1178049,9,8.47,8.41,19.95 -shr,kernel,16,13,2389094,9,8.41,8.38,20.11 -shr,floor,16,13,1292450,9,15.54,15.37,20.04 -shr,gmp,16,13,4625023,9,4.30,4.29,19.90 -shr,gmpz,16,13,3249748,9,6.24,6.16,20.41 -mul,auto,1,1,1888258,9,10.57,10.54,19.97 -mul,gmp,1,1,5909109,9,3.40,3.38,20.05 -mul,gmpz,1,1,5032904,9,3.97,3.97,19.98 -mul,auto,2,2,975653,9,20.30,20.25,19.81 -mul,kernel,2,2,2734194,9,7.57,7.54,20.70 -mul,floor,2,2,1353682,9,15.03,14.93,20.55 -mul,gmp,2,2,5201979,9,3.83,3.80,19.91 -mul,gmpz,2,2,3264693,9,6.14,6.09,20.02 -mul,auto,3,3,915260,9,21.90,21.86,20.04 -mul,kernel,3,3,2322088,9,8.93,8.92,20.76 -mul,floor,3,3,1246481,9,16.50,16.25,20.61 -mul,gmp,3,3,2597837,9,7.76,7.73,20.17 -mul,gmpz,3,3,2002592,9,9.94,9.92,19.94 -mul,auto,4,4,830616,9,23.95,23.89,19.91 -mul,kernel,4,4,1891935,9,10.90,10.88,20.65 -mul,floor,4,4,1109132,9,18.50,18.29,20.71 -mul,gmp,4,4,2071348,9,9.67,9.62,20.03 -mul,gmpz,4,4,1640888,9,12.18,12.14,20.00 -mul,auto,6,6,676270,9,29.63,29.55,20.04 -mul,kernel,6,6,1213233,9,17.15,17.13,20.84 -mul,floor,6,6,821652,9,24.65,24.31,20.39 -mul,gmp,6,6,1273880,9,15.68,15.63,19.98 -mul,gmpz,6,6,1109941,9,18.04,17.94,20.02 -mul,auto,8,8,533947,9,37.34,37.24,19.94 -mul,kernel,8,8,809791,9,25.31,25.15,20.49 -mul,floor,8,8,613750,9,32.62,32.56,20.04 -mul,gmp,8,8,734746,9,27.08,27.00,19.91 -mul,gmpz,8,8,695170,9,29.20,28.01,20.21 -mul,auto,12,12,341023,9,58.65,58.62,20.00 -mul,kernel,12,12,419995,9,48.14,48.05,20.23 -mul,floor,12,12,363693,9,55.29,55.13,20.10 -mul,gmp,12,12,411838,9,48.56,48.54,20.01 -mul,gmpz,12,12,385810,9,51.84,51.83,20.00 -mul,auto,16,16,220298,9,90.72,90.63,19.99 -mul,kernel,16,16,254360,9,78.55,78.47,19.98 -mul,floor,16,16,230766,9,86.64,86.43,19.99 -mul,gmp,16,16,244150,9,81.90,81.89,20.01 -mul,gmpz,16,16,238069,9,84.07,84.03,20.04 -sqr,auto,4,4,841580,9,23.78,23.76,20.02 -sqr,kernel,4,4,1838832,9,10.83,10.74,19.92 -sqr,floor,4,4,1144678,9,17.27,17.10,19.84 -sqr,gmp,4,4,3463456,9,5.82,5.76,20.14 -sqr,gmpz,4,4,2270803,9,8.79,8.75,19.98 -sqr,auto,16,16,293598,9,68.05,67.99,19.98 -sqr,kernel,16,16,358060,9,55.85,55.83,20.00 -sqr,floor,16,16,321022,9,62.26,62.18,19.99 -sqr,gmp,16,16,399201,9,49.83,49.80,19.89 -sqr,gmpz,16,16,383752,9,52.09,52.07,19.99 -divrem,auto,2,1,572514,9,35.13,34.96,20.12 -divrem,kernel,2,1,3549375,9,5.68,5.50,20.09 -divrem,floor,2,1,3382456,9,6.01,5.89,20.30 -divrem,gmp,2,1,2305338,9,8.68,8.68,20.02 -divrem,gmpz,2,1,1516423,9,13.20,13.17,20.04 -divrem,auto,8,4,225969,9,89.10,88.28,20.11 -divrem,kernel,8,4,458487,9,43.65,43.44,20.02 -divrem,floor,8,4,364775,9,55.30,54.76,20.13 -divrem,gmp,8,4,501629,9,40.11,39.98,20.11 -divrem,gmpz,8,4,482494,9,41.69,41.38,20.11 -divrem,auto,32,16,57965,9,345.83,344.58,20.04 -divrem,kernel,32,16,69295,9,289.11,288.57,20.03 -divrem,floor,32,16,66065,9,303.25,302.36,20.03 -divrem,gmp,32,16,103712,9,193.23,192.93,20.04 -divrem,gmpz,32,16,102321,9,195.01,194.53,19.95 diff --git a/tests/beman/big_int/perf/item1/x64_study128_run2.csv b/tests/beman/big_int/perf/item1/x64_study128_run2.csv deleted file mode 100644 index 91e2417d..00000000 --- a/tests/beman/big_int/perf/item1/x64_study128_run2.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:14:57Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new128 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2403581,9,8.32,8.31,20.01 -add,inplace,1,1,2042527,9,4.91,4.89,20.06 -add,kernel,1,1,10304700,9,1.94,1.90,19.95 -add,floor,1,1,7820568,9,2.58,2.55,20.21 -add,gmp,1,1,8823957,9,2.27,2.27,20.01 -add,gmpz,1,1,4443627,9,4.38,4.17,19.35 -add,auto,2,2,1034623,9,19.28,19.23,20.01 -add,inplace,2,2,1452779,9,6.97,6.90,20.26 -add,kernel,2,2,8506678,9,2.33,2.30,19.85 -add,floor,2,2,1962077,9,10.30,10.16,20.16 -add,gmp,2,2,8824088,9,2.27,2.27,20.00 -add,gmpz,2,2,4812485,9,4.16,4.16,20.00 -add,auto,4,4,1149976,9,17.43,17.31,20.01 -add,inplace,4,4,1594224,9,6.12,6.07,19.60 -add,kernel,4,4,6597906,9,3.03,3.02,20.16 -add,floor,4,4,1790515,9,11.51,11.11,20.54 -add,gmp,4,4,8002918,9,2.49,2.49,19.94 -add,gmpz,4,4,4566264,9,4.37,4.34,19.94 -add,auto,8,8,1055114,9,18.78,18.61,19.81 -add,inplace,8,8,1387235,9,7.38,7.21,20.47 -add,kernel,8,8,4329729,9,4.69,4.54,20.22 -add,floor,8,8,1597655,9,12.60,12.53,20.13 -add,gmp,8,8,5427795,9,3.68,3.67,19.96 -add,gmpz,8,8,4301488,9,4.66,4.65,20.08 -add,auto,16,16,846113,9,23.33,23.08,19.68 -add,inplace,16,16,802852,9,12.41,12.36,19.93 -add,kernel,16,16,2646873,9,7.56,7.56,20.00 -add,floor,16,16,1302979,9,15.40,15.37,20.08 -add,gmp,16,16,3633245,9,5.50,5.50,20.00 -add,gmpz,16,16,3063794,9,6.52,6.47,19.98 -sub,auto,1,1,2073959,9,9.64,9.63,20.01 -sub,inplace,1,1,2143316,9,4.65,4.63,20.00 -sub,kernel,1,1,13113548,9,1.51,1.51,19.84 -sub,floor,1,1,10588913,9,1.89,1.89,20.01 -sub,gmp,1,1,8821706,9,2.27,2.27,20.00 -sub,gmpz,1,1,4603262,9,4.34,4.34,20.02 -sub,auto,2,2,1847488,9,10.82,10.79,19.99 -sub,inplace,2,2,1836461,9,5.46,5.32,20.00 -sub,kernel,2,2,9423636,9,2.12,2.10,20.03 -sub,floor,2,2,8110625,9,2.49,2.47,20.21 -sub,gmp,2,2,8824271,9,2.27,2.27,20.00 -sub,gmpz,2,2,4603831,9,4.34,4.34,20.04 -sub,auto,4,4,1020420,9,19.53,19.26,19.90 -sub,inplace,4,4,1674366,9,5.95,5.87,19.90 -sub,kernel,4,4,7051747,9,2.84,2.83,20.00 -sub,floor,4,4,1887068,9,10.71,10.64,20.19 -sub,gmp,4,4,8014488,9,2.50,2.50,20.05 -sub,gmpz,4,4,4390256,9,4.56,4.55,20.04 -sub,auto,8,8,952633,9,21.07,20.64,20.08 -sub,inplace,8,8,1420529,9,7.00,6.97,19.91 -sub,kernel,8,8,4522933,9,4.42,4.42,20.00 -sub,floor,8,8,1621377,9,12.33,12.25,19.97 -sub,gmp,8,8,5108635,9,3.92,3.91,20.01 -sub,gmpz,8,8,4026397,9,4.97,4.94,19.98 -sub,auto,16,16,820181,9,24.26,24.08,20.00 -sub,inplace,16,16,908358,9,11.05,11.00,20.07 -sub,kernel,16,16,2678347,9,7.46,7.46,19.99 -sub,floor,16,16,1310867,9,15.24,15.21,19.98 -sub,gmp,16,16,3641388,9,5.50,5.49,20.02 -sub,gmpz,16,16,2933990,9,6.77,6.76,19.91 -shl,auto,1,13,2801475,9,7.16,7.15,20.07 -shl,inplace,1,13,2331311,9,4.29,4.24,19.94 -shl,kernel,1,13,9718535,9,2.07,2.04,20.14 -shl,kernelip,1,13,5552600,9,1.78,1.70,19.64 -shl,floor,1,13,8910312,9,2.68,2.63,23.80 -shl,gmp,1,13,9626414,9,1.90,1.90,18.32 -shl,gmpz,1,13,6110827,9,3.27,3.27,20.02 -shl,auto,4,13,1346922,9,14.93,14.79,20.09 -shl,inplace,4,13,2106247,9,4.75,4.74,20.02 -shl,kernel,4,13,5600980,9,3.50,3.49,19.64 -shl,kernelip,4,13,3390639,9,2.95,2.91,19.98 -shl,floor,4,13,1836873,9,11.66,11.61,21.41 -shl,gmp,4,13,7991490,9,2.31,2.31,18.51 -shl,gmpz,4,13,4916607,9,4.04,4.04,19.92 -shl,auto,16,13,1095572,9,18.18,18.14,19.92 -shl,inplace,16,13,1119001,9,8.88,8.85,19.90 -shl,kernel,16,13,2683369,9,7.45,7.44,20.02 -shl,kernelip,16,13,1390576,9,7.10,7.02,19.74 -shl,floor,16,13,1348953,9,15.22,15.21,20.54 -shl,gmp,16,13,4934249,9,4.05,4.05,20.14 -shl,gmpz,16,13,3451002,9,5.80,5.80,20.06 -shr,auto,1,13,2245414,9,8.90,8.88,20.00 -shr,inplace,1,13,2925232,9,3.44,3.42,20.16 -shr,kernel,1,13,11751753,9,1.70,1.70,20.02 -shr,floor,1,13,8824113,9,2.27,2.27,20.00 -shr,gmp,1,13,10588935,9,1.89,1.89,20.01 -shr,gmpz,1,13,5773912,9,3.47,3.46,20.02 -shr,auto,4,13,1189261,9,16.86,16.67,20.00 -shr,inplace,4,13,2255447,9,4.44,4.42,20.01 -shr,kernel,4,13,5771486,9,3.47,3.47,20.02 -shr,floor,4,13,1785225,9,11.19,11.18,19.98 -shr,gmp,4,13,8657055,9,2.35,2.33,20.31 -shr,gmpz,4,13,5017987,9,3.99,3.95,20.01 -shr,auto,16,13,956593,9,20.87,20.81,20.01 -shr,inplace,16,13,1177200,9,8.48,8.43,19.96 -shr,kernel,16,13,2399805,9,8.38,8.33,20.10 -shr,floor,16,13,1297007,9,15.47,15.35,20.06 -shr,gmp,16,13,4595108,9,4.31,4.31,19.90 -shr,gmpz,16,13,3178125,9,6.41,6.35,20.40 -mul,auto,1,1,1910337,9,10.44,10.42,19.93 -mul,gmp,1,1,5902505,9,3.37,3.34,19.90 -mul,gmpz,1,1,5030143,9,3.99,3.98,20.06 -mul,auto,2,2,983793,9,20.30,20.29,20.00 -mul,kernel,2,2,2731294,9,7.56,7.53,20.67 -mul,floor,2,2,1357742,9,15.22,14.89,20.62 -mul,gmp,2,2,5188396,9,3.84,3.83,20.11 -mul,gmpz,2,2,3182393,9,6.21,6.11,19.77 -mul,auto,3,3,913389,9,21.90,21.88,20.01 -mul,kernel,3,3,2324186,9,8.99,8.97,20.89 -mul,floor,3,3,1244443,9,16.65,16.34,20.67 -mul,gmp,3,3,2538457,9,7.77,7.70,19.72 -mul,gmpz,3,3,1995019,9,10.01,9.98,19.96 -mul,auto,4,4,826402,9,24.04,23.99,19.87 -mul,kernel,4,4,1866855,9,11.02,10.99,20.59 -mul,floor,4,4,1105399,9,18.27,18.11,20.34 -mul,gmp,4,4,2066409,9,9.67,9.64,19.99 -mul,gmpz,4,4,1649126,9,12.15,12.09,20.02 -mul,auto,6,6,678345,9,29.55,29.47,20.04 -mul,kernel,6,6,1216216,9,17.16,17.15,20.88 -mul,floor,6,6,820878,9,25.13,24.83,20.66 -mul,gmp,6,6,1275860,9,15.67,15.65,20.00 -mul,gmpz,6,6,1114426,9,18.01,17.86,20.05 -mul,auto,8,8,532525,9,37.37,37.14,19.89 -mul,kernel,8,8,802610,9,25.36,25.31,20.36 -mul,floor,8,8,618166,9,32.44,32.30,20.06 -mul,gmp,8,8,740564,9,27.07,26.94,20.08 -mul,gmpz,8,8,683171,9,28.88,28.60,19.69 -mul,auto,12,12,340671,9,58.63,58.59,19.98 -mul,kernel,12,12,427928,9,47.44,47.33,20.30 -mul,floor,12,12,368345,9,54.72,54.60,20.16 -mul,gmp,12,12,411926,9,51.17,48.55,20.87 -mul,gmpz,12,12,394232,9,50.76,50.75,20.01 -mul,auto,16,16,222037,9,90.07,90.03,20.01 -mul,kernel,16,16,256523,9,78.54,78.51,20.15 -mul,floor,16,16,234618,9,86.02,85.73,20.17 -mul,gmp,16,16,243670,9,81.91,81.89,19.98 -mul,gmpz,16,16,237897,9,84.06,84.02,20.00 -sqr,auto,4,4,841329,9,23.85,23.72,20.06 -sqr,kernel,4,4,2020761,9,9.91,9.86,20.03 -sqr,floor,4,4,1190254,9,17.19,17.06,20.49 -sqr,gmp,4,4,3449011,9,5.81,5.76,20.00 -sqr,gmpz,4,4,2264093,9,8.80,8.77,19.94 -sqr,auto,16,16,293395,9,67.91,67.84,19.92 -sqr,kernel,16,16,357809,9,55.91,55.85,20.00 -sqr,floor,16,16,321600,9,63.48,63.37,20.41 -sqr,gmp,16,16,398277,9,49.83,49.80,19.85 -sqr,gmpz,16,16,383906,9,52.09,52.07,20.00 -divrem,auto,2,1,591757,9,33.78,33.67,20.00 -divrem,kernel,2,1,3469055,9,5.76,5.68,20.47 -divrem,floor,2,1,3212601,9,6.07,5.96,19.66 -divrem,gmp,2,1,2984307,9,6.70,6.69,20.00 -divrem,gmpz,2,1,1672457,9,12.02,11.96,20.08 -divrem,auto,8,4,199459,9,100.62,100.29,20.08 -divrem,kernel,8,4,306426,9,65.30,65.20,20.00 -divrem,floor,8,4,266198,9,75.42,75.20,20.07 -divrem,gmp,8,4,460005,9,43.91,43.60,20.18 -divrem,gmpz,8,4,435368,9,46.05,45.92,20.05 -divrem,auto,32,16,58102,9,343.32,342.49,19.96 -divrem,kernel,32,16,69311,9,288.98,288.53,20.05 -divrem,floor,32,16,65933,9,302.93,302.55,19.97 -divrem,gmp,32,16,105171,9,189.32,188.59,19.91 -divrem,gmpz,32,16,103236,9,193.38,192.75,19.96 diff --git a/tests/beman/big_int/perf/item1/x64_study128_vecsort_run1.csv b/tests/beman/big_int/perf/item1/x64_study128_vecsort_run1.csv deleted file mode 100644 index 32c1c9f1..00000000 --- a/tests/beman/big_int/perf/item1/x64_study128_vecsort_run1.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:12:55Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new128 seed=1 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,92.58,92.27,27.77 -vecsort,builtin,100000,1,6,9,39.32,39.24,23.59 -vecsort,copy,100000,1,81,9,2.50,2.46,20.19 diff --git a/tests/beman/big_int/perf/item1/x64_study128_vecsort_run2.csv b/tests/beman/big_int/perf/item1/x64_study128_vecsort_run2.csv deleted file mode 100644 index 5478abda..00000000 --- a/tests/beman/big_int/perf/item1/x64_study128_vecsort_run2.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:15:36Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new128 seed=2 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=128 sweep_int_sizeof=24 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,92.04,91.89,27.62 -vecsort,builtin,100000,1,6,9,39.47,39.35,23.72 -vecsort,copy,100000,1,82,9,2.51,2.49,20.62 diff --git a/tests/beman/big_int/perf/item1/x64_study256_run1.csv b/tests/beman/big_int/perf/item1/x64_study256_run1.csv deleted file mode 100644 index 6c0531c5..00000000 --- a/tests/beman/big_int/perf/item1/x64_study256_run1.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:12:56Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new256 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2340269,9,8.62,8.59,20.16 -add,inplace,1,1,2025421,9,4.91,4.89,19.88 -add,kernel,1,1,10235209,9,1.92,1.90,19.70 -add,floor,1,1,7738268,9,2.58,2.54,19.92 -add,gmp,1,1,8810023,9,2.27,2.27,19.97 -add,gmpz,1,1,4813001,9,4.16,4.16,20.00 -add,auto,2,2,1853986,9,10.84,10.81,20.14 -add,inplace,2,2,1499235,9,6.38,6.33,19.21 -add,kernel,2,2,8660080,9,2.33,2.29,20.15 -add,floor,2,2,7036074,9,2.89,2.84,20.35 -add,gmp,2,2,8824159,9,2.27,2.27,20.00 -add,gmpz,2,2,4812736,9,4.16,4.16,20.00 -add,auto,4,4,1884945,9,10.61,10.60,19.99 -add,inplace,4,4,1742011,9,5.73,5.70,19.96 -add,kernel,4,4,6579002,9,3.03,3.02,19.96 -add,floor,4,4,1791604,9,11.12,11.08,19.93 -add,gmp,4,4,8014867,9,2.49,2.49,19.96 -add,gmpz,4,4,4594258,9,4.34,4.34,19.97 -add,auto,8,8,1058990,9,18.89,18.88,20.00 -add,inplace,8,8,1392078,9,7.19,7.17,20.04 -add,kernel,8,8,4412046,9,4.53,4.53,20.01 -add,floor,8,8,1604392,9,12.49,12.41,20.03 -add,gmp,8,8,5435549,9,3.68,3.68,20.00 -add,gmpz,8,8,4298960,9,4.65,4.64,20.03 -add,auto,16,16,849266,9,23.53,23.21,19.94 -add,inplace,16,16,781406,9,12.73,12.68,19.90 -add,kernel,16,16,2647104,9,7.56,7.56,20.00 -add,floor,16,16,1290874,9,15.50,15.45,20.01 -add,gmp,16,16,3054449,9,6.56,6.55,20.04 -add,gmpz,16,16,3059286,9,6.50,6.49,19.92 -sub,auto,1,1,1997786,9,10.02,10.01,20.04 -sub,inplace,1,1,2157618,9,4.63,4.62,19.97 -sub,kernel,1,1,11046739,9,1.83,1.81,20.22 -sub,floor,1,1,10588474,9,1.89,1.89,20.00 -sub,gmp,1,1,8824036,9,2.27,2.27,20.00 -sub,gmpz,1,1,4603737,9,4.36,4.34,20.13 -sub,auto,2,2,1772566,9,11.32,11.26,20.05 -sub,inplace,2,2,1856845,9,5.44,5.37,20.23 -sub,kernel,2,2,9467067,9,2.11,2.09,19.96 -sub,floor,2,2,7999936,9,2.47,2.46,19.81 -sub,gmp,2,2,8824141,9,2.27,2.27,20.02 -sub,gmpz,2,2,4594292,9,4.34,4.34,19.99 -sub,auto,4,4,1662164,9,12.11,12.05,20.11 -sub,inplace,4,4,1774205,9,5.59,5.59,19.84 -sub,kernel,4,4,7052582,9,2.84,2.83,20.03 -sub,floor,4,4,6227479,9,3.21,3.21,20.02 -sub,gmp,4,4,8009848,9,2.50,2.50,20.00 -sub,gmpz,4,4,4387442,9,4.56,4.54,20.05 -sub,auto,8,8,985485,9,20.26,20.25,19.97 -sub,inplace,8,8,1422798,9,7.03,6.99,20.08 -sub,kernel,8,8,4579819,9,4.36,4.35,19.96 -sub,floor,8,8,1622763,9,12.27,12.23,19.93 -sub,gmp,8,8,5425507,9,3.69,3.69,20.02 -sub,gmpz,8,8,4016147,9,4.95,4.94,19.93 -sub,auto,16,16,858397,9,23.35,23.22,20.04 -sub,inplace,16,16,894685,9,11.11,11.07,19.89 -sub,kernel,16,16,2678699,9,7.46,7.46,20.00 -sub,floor,16,16,1301295,9,15.36,15.34,20.02 -sub,gmp,16,16,3607953,9,5.54,5.54,20.00 -sub,gmpz,16,16,2948140,9,6.80,6.77,20.05 -shl,auto,1,13,2463414,9,8.19,8.18,20.20 -shl,inplace,1,13,2331712,9,4.30,4.25,20.10 -shl,kernel,1,13,9769376,9,2.06,2.05,20.12 -shl,kernelip,1,13,5793484,9,1.75,1.69,20.15 -shl,floor,1,13,9626120,9,2.65,2.62,25.62 -shl,gmp,1,13,9626091,9,1.89,1.89,18.18 -shl,gmpz,1,13,6111132,9,3.27,3.27,20.01 -shl,auto,4,13,1212005,9,16.26,16.20,19.76 -shl,inplace,4,13,2109597,9,4.74,4.72,20.04 -shl,kernel,4,13,5706090,9,3.50,3.48,19.94 -shl,kernelip,4,13,3399734,9,2.94,2.91,20.04 -shl,floor,4,13,1829220,9,11.27,11.23,20.60 -shl,gmp,4,13,7991556,9,2.31,2.31,18.48 -shl,gmpz,4,13,4915589,9,4.04,4.04,19.91 -shl,auto,16,13,979904,9,20.63,20.46,20.20 -shl,inplace,16,13,997975,9,10.15,10.04,20.34 -shl,kernel,16,13,2682259,9,7.45,7.44,20.00 -shl,kernelip,16,13,1395534,9,7.08,7.04,19.77 -shl,floor,16,13,1349831,9,15.23,15.21,20.58 -shl,gmp,16,13,4946046,9,4.04,4.04,20.09 -shl,gmpz,16,13,3453246,9,5.81,5.79,20.16 -shr,auto,1,13,2195427,9,9.11,9.09,20.00 -shr,inplace,1,13,2874195,9,3.45,3.42,19.91 -shr,kernel,1,13,11752390,9,1.70,1.70,20.02 -shr,floor,1,13,8824198,9,2.27,2.27,20.06 -shr,gmp,1,13,10580178,9,1.89,1.89,20.02 -shr,gmpz,1,13,5771502,9,3.47,3.46,20.00 -shr,auto,4,13,1669798,9,11.95,11.93,19.96 -shr,inplace,4,13,2244575,9,4.46,4.45,20.01 -shr,kernel,4,13,5771450,9,3.47,3.47,20.04 -shr,floor,4,13,4977935,9,4.04,4.02,20.09 -shr,gmp,4,13,8419899,9,2.35,2.32,19.76 -shr,gmpz,4,13,5061871,9,3.96,3.94,20.09 -shr,auto,16,13,928023,9,21.62,21.56,20.07 -shr,inplace,16,13,1172822,9,8.49,8.43,19.88 -shr,kernel,16,13,2366066,9,8.43,8.41,19.97 -shr,floor,16,13,1297961,9,15.42,15.35,20.03 -shr,gmp,16,13,4596020,9,4.35,4.34,20.00 -shr,gmpz,16,13,3147032,9,6.28,6.21,19.79 -mul,auto,1,1,1884278,9,10.61,10.60,20.00 -mul,gmp,1,1,5891764,9,3.38,3.36,19.95 -mul,gmpz,1,1,4934264,9,3.97,3.97,19.63 -mul,auto,2,2,1401078,9,14.25,14.24,20.01 -mul,kernel,2,2,2852017,9,7.54,7.53,21.54 -mul,floor,2,2,2638249,9,7.70,7.64,20.33 -mul,gmp,2,2,5226651,9,3.82,3.79,19.96 -mul,gmpz,2,2,3263688,9,6.13,6.10,20.05 -mul,auto,3,3,850688,9,23.41,23.26,19.94 -mul,kernel,3,3,2391082,9,8.93,8.91,21.38 -mul,floor,3,3,1250882,9,16.33,16.29,20.44 -mul,gmp,3,3,2559047,9,7.77,7.66,19.91 -mul,gmpz,3,3,2006354,9,9.92,9.88,19.92 -mul,auto,4,4,821247,9,24.36,24.27,20.01 -mul,kernel,4,4,1933930,9,10.91,10.89,21.12 -mul,floor,4,4,1114316,9,18.17,18.13,20.25 -mul,gmp,4,4,2060701,9,9.67,9.64,19.93 -mul,gmpz,4,4,1642101,9,12.15,12.09,19.94 -mul,auto,6,6,661563,9,30.25,30.17,20.04 -mul,kernel,6,6,1209269,9,17.21,17.20,20.82 -mul,floor,6,6,818385,9,24.40,24.34,19.97 -mul,gmp,6,6,1263450,9,15.69,15.66,19.83 -mul,gmpz,6,6,1108244,9,18.05,17.94,19.99 -mul,auto,8,8,525282,9,37.95,37.88,19.98 -mul,kernel,8,8,810520,9,25.44,25.29,20.64 -mul,floor,8,8,616915,9,32.35,32.31,19.96 -mul,gmp,8,8,738197,9,27.03,26.91,19.97 -mul,gmpz,8,8,688721,9,28.99,28.70,19.98 -mul,auto,12,12,336205,9,59.79,59.60,20.11 -mul,kernel,12,12,425133,9,47.47,47.34,20.18 -mul,floor,12,12,368055,9,54.76,54.47,20.14 -mul,gmp,12,12,411823,9,48.56,48.55,20.01 -mul,gmpz,12,12,394107,9,50.76,50.74,20.00 -mul,auto,16,16,217635,9,91.83,91.67,19.99 -mul,kernel,16,16,256135,9,78.56,78.47,20.15 -mul,floor,16,16,235185,9,85.58,85.33,20.14 -mul,gmp,16,16,243951,9,81.91,81.89,19.98 -mul,gmpz,16,16,237816,9,84.08,84.05,20.00 -sqr,auto,4,4,817914,9,24.46,24.22,19.97 -sqr,kernel,4,4,2043336,9,9.83,9.73,20.09 -sqr,floor,4,4,1218507,9,16.78,16.74,20.46 -sqr,gmp,4,4,3177919,9,6.32,6.29,20.06 -sqr,gmpz,4,4,2267874,9,8.81,8.73,19.96 -sqr,auto,16,16,286800,9,69.88,69.71,20.03 -sqr,kernel,16,16,328447,9,60.87,60.83,19.99 -sqr,floor,16,16,316176,9,63.31,63.24,20.36 -sqr,gmp,16,16,400602,9,49.84,49.81,19.97 -sqr,gmpz,16,16,384019,9,52.08,52.07,20.00 -divrem,auto,2,1,536794,9,37.48,37.27,20.12 -divrem,kernel,2,1,3540036,9,5.68,5.52,20.09 -divrem,floor,2,1,3314977,9,6.01,5.86,19.83 -divrem,gmp,2,1,2299662,9,8.68,8.67,19.99 -divrem,gmpz,2,1,1510756,9,13.18,13.17,19.91 -divrem,auto,8,4,240105,9,83.15,82.40,19.93 -divrem,kernel,8,4,498914,9,40.20,40.07,20.06 -divrem,floor,8,4,430831,9,46.92,46.56,20.20 -divrem,gmp,8,4,483822,9,41.49,41.26,20.06 -divrem,gmpz,8,4,480718,9,41.57,41.37,19.99 -divrem,auto,32,16,58164,9,343.94,343.14,20.00 -divrem,kernel,32,16,69186,9,288.87,287.78,19.98 -divrem,floor,32,16,65574,9,304.76,303.91,19.99 -divrem,gmp,32,16,104381,9,192.74,191.18,20.10 -divrem,gmpz,32,16,102697,9,194.56,193.80,19.97 diff --git a/tests/beman/big_int/perf/item1/x64_study256_run2.csv b/tests/beman/big_int/perf/item1/x64_study256_run2.csv deleted file mode 100644 index 05b2d8d8..00000000 --- a/tests/beman/big_int/perf/item1/x64_study256_run2.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:15:37Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new256 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2339650,9,8.62,8.61,20.18 -add,inplace,1,1,2032324,9,4.91,4.90,19.98 -add,kernel,1,1,10125391,9,1.92,1.91,19.47 -add,floor,1,1,7785942,9,2.56,2.53,19.99 -add,gmp,1,1,8797140,9,2.27,2.27,19.94 -add,gmpz,1,1,4802559,9,4.16,4.16,19.96 -add,auto,2,2,1854084,9,10.89,10.81,20.19 -add,inplace,2,2,1543103,9,6.39,6.31,19.83 -add,kernel,2,2,8436887,9,2.33,2.31,19.75 -add,floor,2,2,6812234,9,2.89,2.86,19.75 -add,gmp,2,2,8824016,9,2.27,2.27,20.00 -add,gmpz,2,2,4812878,9,4.16,4.16,20.00 -add,auto,4,4,1883033,9,10.62,10.61,20.00 -add,inplace,4,4,1742722,9,5.72,5.71,19.95 -add,kernel,4,4,6617924,9,3.04,3.02,20.18 -add,floor,4,4,1792524,9,11.21,11.15,20.11 -add,gmp,4,4,7979719,9,2.61,2.55,20.75 -add,gmpz,4,4,4504808,9,4.42,4.40,19.92 -add,auto,8,8,1059077,9,18.89,18.89,20.01 -add,inplace,8,8,1398472,9,7.18,7.16,20.10 -add,kernel,8,8,4407474,9,4.53,4.53,20.00 -add,floor,8,8,1600720,9,12.52,12.49,20.05 -add,gmp,8,8,5435117,9,3.68,3.68,20.01 -add,gmpz,8,8,3500958,9,5.73,5.68,20.03 -add,auto,16,16,850210,9,23.49,23.21,19.94 -add,inplace,16,16,779405,9,12.81,12.72,19.96 -add,kernel,16,16,2642549,9,7.83,7.57,20.54 -add,floor,16,16,1284723,9,15.60,15.57,20.03 -add,gmp,16,16,3634809,9,5.50,5.50,20.00 -add,gmpz,16,16,3039567,9,6.52,6.48,19.81 -sub,auto,1,1,1994602,9,10.06,10.04,20.10 -sub,inplace,1,1,2160976,9,4.63,4.62,20.04 -sub,kernel,1,1,13236257,9,1.51,1.51,20.00 -sub,floor,1,1,10589000,9,1.89,1.89,20.00 -sub,gmp,1,1,8824122,9,2.27,2.27,20.00 -sub,gmpz,1,1,4603707,9,4.34,4.34,20.02 -sub,auto,2,2,1776150,9,11.29,11.26,20.06 -sub,inplace,2,2,1917518,9,5.21,5.18,20.12 -sub,kernel,2,2,9541629,9,2.12,2.10,20.21 -sub,floor,2,2,8078311,9,2.48,2.46,20.00 -sub,gmp,2,2,8824151,9,2.27,2.27,20.00 -sub,gmpz,2,2,4603859,9,4.35,4.34,20.07 -sub,auto,4,4,1666721,9,12.09,12.03,20.15 -sub,inplace,4,4,1786028,9,5.61,5.58,20.05 -sub,kernel,4,4,7054354,9,2.84,2.83,20.00 -sub,floor,4,4,6210881,9,3.22,3.21,20.00 -sub,gmp,4,4,8009083,9,2.50,2.50,20.04 -sub,gmpz,4,4,4368570,9,4.60,4.57,20.11 -sub,auto,8,8,987399,9,20.26,20.25,20.05 -sub,inplace,8,8,1425939,9,7.01,6.97,20.06 -sub,kernel,8,8,4575601,9,4.36,4.35,19.96 -sub,floor,8,8,1630214,9,12.25,12.21,19.96 -sub,gmp,8,8,5416072,9,3.69,3.69,19.99 -sub,gmpz,8,8,4025961,9,4.98,4.95,20.03 -sub,auto,16,16,844574,9,23.56,23.45,19.89 -sub,inplace,16,16,888653,9,11.25,11.16,19.98 -sub,kernel,16,16,2493626,9,8.02,8.02,20.00 -sub,floor,16,16,1316707,9,15.23,15.17,20.04 -sub,gmp,16,16,3608335,9,5.54,5.54,20.00 -sub,gmpz,16,16,2945077,9,6.81,6.78,20.05 -shl,auto,1,13,2423736,9,8.19,8.17,19.87 -shl,inplace,1,13,2312259,9,4.26,4.23,19.77 -shl,kernel,1,13,9820626,9,2.08,2.05,20.33 -shl,kernelip,1,13,5755491,9,1.74,1.71,20.14 -shl,floor,1,13,9545445,9,2.65,2.62,25.32 -shl,gmp,1,13,9626313,9,1.89,1.89,18.19 -shl,gmpz,1,13,5946032,9,3.34,3.33,19.87 -shl,auto,4,13,1213447,9,16.39,16.17,19.84 -shl,inplace,4,13,2115943,9,4.75,4.73,20.11 -shl,kernel,4,13,5547029,9,3.59,3.49,19.85 -shl,kernelip,4,13,3342782,9,2.95,2.91,19.77 -shl,floor,4,13,1823655,9,11.26,11.22,20.54 -shl,gmp,4,13,7991464,9,2.33,2.31,18.60 -shl,gmpz,4,13,4946051,9,4.05,4.04,20.04 -shl,auto,16,13,982716,9,20.35,20.25,20.03 -shl,inplace,16,13,1106985,9,9.01,8.98,19.95 -shl,kernel,16,13,2687496,9,7.44,7.43,20.01 -shl,kernelip,16,13,1400756,9,7.13,7.09,19.99 -shl,floor,16,13,1348972,9,15.22,15.21,20.54 -shl,gmp,16,13,4927268,9,4.05,4.05,20.05 -shl,gmpz,16,13,2803364,9,6.99,6.94,19.58 -shr,auto,1,13,2195920,9,9.12,9.10,20.04 -shr,inplace,1,13,2910315,9,3.46,3.40,20.13 -shr,kernel,1,13,9372854,9,2.13,2.11,19.99 -shr,floor,1,13,8145343,9,2.46,2.46,20.08 -shr,gmp,1,13,10588370,9,1.89,1.89,20.05 -shr,gmpz,1,13,5768737,9,3.47,3.47,20.00 -shr,auto,4,13,1681697,9,11.90,11.89,20.01 -shr,inplace,4,13,2249804,9,4.45,4.45,20.03 -shr,kernel,4,13,5756356,9,3.47,3.47,19.98 -shr,floor,4,13,4998660,9,4.04,4.00,20.16 -shr,gmp,4,13,8656848,9,2.34,2.31,20.29 -shr,gmpz,4,13,5044669,9,3.97,3.95,20.03 -shr,auto,16,13,922786,9,21.71,21.61,20.04 -shr,inplace,16,13,1180707,9,8.47,8.43,20.01 -shr,kernel,16,13,2383155,9,8.36,8.34,19.94 -shr,floor,16,13,1283838,9,15.47,15.33,19.85 -shr,gmp,16,13,4627276,9,4.35,4.32,20.12 -shr,gmpz,16,13,3087865,9,6.33,6.24,19.55 -mul,auto,1,1,1855808,9,10.91,10.61,20.40 -mul,gmp,1,1,5944650,9,3.36,3.31,19.95 -mul,gmpz,1,1,5000987,9,4.00,3.99,20.02 -mul,auto,2,2,1399063,9,14.26,14.25,19.98 -mul,kernel,2,2,2807030,9,7.56,7.53,21.24 -mul,floor,2,2,2567558,9,7.91,7.82,20.38 -mul,gmp,2,2,5210688,9,3.82,3.80,19.92 -mul,gmpz,2,2,3285564,9,6.13,6.11,20.16 -mul,auto,3,3,854294,9,23.50,23.38,20.08 -mul,kernel,3,3,2317357,9,8.93,8.91,20.71 -mul,floor,3,3,1233018,9,16.43,16.40,20.26 -mul,gmp,3,3,2564824,9,7.77,7.72,20.09 -mul,gmpz,3,3,1954367,9,10.03,9.99,19.76 -mul,auto,4,4,822558,9,24.33,24.26,20.04 -mul,kernel,4,4,1929799,9,10.91,10.89,21.08 -mul,floor,4,4,1114873,9,18.12,18.08,20.21 -mul,gmp,4,4,2062474,9,9.69,9.67,19.99 -mul,gmpz,4,4,1638692,9,12.18,12.12,19.95 -mul,auto,6,6,662440,9,30.24,30.18,20.05 -mul,kernel,6,6,1211886,9,17.18,17.16,20.83 -mul,floor,6,6,820565,9,24.36,24.34,20.01 -mul,gmp,6,6,1273774,9,15.74,15.71,20.05 -mul,gmpz,6,6,1105461,9,18.00,17.96,19.93 -mul,auto,8,8,524693,9,38.02,37.94,19.96 -mul,kernel,8,8,808540,9,25.42,25.27,20.54 -mul,floor,8,8,618310,9,32.35,32.30,20.03 -mul,gmp,8,8,742152,9,27.04,26.90,20.07 -mul,gmpz,8,8,696572,9,28.97,28.59,20.16 -mul,auto,12,12,333202,9,60.01,59.72,19.99 -mul,kernel,12,12,421662,9,48.49,48.41,20.46 -mul,floor,12,12,363793,9,55.26,55.08,20.13 -mul,gmp,12,12,402091,9,49.72,49.71,19.99 -mul,gmpz,12,12,378487,9,52.84,52.81,20.00 -mul,auto,16,16,216602,9,91.97,91.76,19.94 -mul,kernel,16,16,256335,9,78.57,78.45,20.15 -mul,floor,16,16,232746,9,85.88,85.70,20.02 -mul,gmp,16,16,242813,9,82.39,82.37,20.01 -mul,gmpz,16,16,237829,9,84.08,84.04,20.00 -sqr,auto,4,4,815683,9,24.39,24.30,19.93 -sqr,kernel,4,4,2049593,9,9.79,9.70,20.04 -sqr,floor,4,4,1220030,9,16.78,16.76,20.50 -sqr,gmp,4,4,3439571,9,5.81,5.76,19.95 -sqr,gmpz,4,4,2259868,9,8.80,8.75,19.91 -sqr,auto,16,16,291458,9,68.68,68.45,20.02 -sqr,kernel,16,16,347584,9,57.51,57.42,20.01 -sqr,floor,16,16,312130,9,62.87,62.84,19.63 -sqr,gmp,16,16,399990,9,49.83,49.81,19.94 -sqr,gmpz,16,16,377560,9,52.09,52.07,19.68 -divrem,auto,2,1,556785,9,35.97,35.82,20.03 -divrem,kernel,2,1,3230255,9,6.12,6.04,19.78 -divrem,floor,2,1,3357282,9,5.98,5.91,20.03 -divrem,gmp,2,1,2637036,9,7.59,7.58,20.02 -divrem,gmpz,2,1,1723108,9,11.71,11.62,20.15 -divrem,auto,8,4,212218,9,95.06,94.48,20.22 -divrem,kernel,8,4,333804,9,58.23,57.93,19.85 -divrem,floor,8,4,313907,9,64.36,64.04,20.21 -divrem,gmp,8,4,458468,9,43.77,43.65,20.11 -divrem,gmpz,8,4,434783,9,46.05,45.96,20.03 -divrem,auto,32,16,58296,9,343.55,342.25,20.03 -divrem,kernel,32,16,69158,9,288.80,288.48,19.99 -divrem,floor,32,16,65973,9,302.78,302.31,19.98 -divrem,gmp,32,16,104926,9,190.06,189.75,19.96 -divrem,gmpz,32,16,103026,9,193.36,192.71,19.93 diff --git a/tests/beman/big_int/perf/item1/x64_study256_vecsort_run1.csv b/tests/beman/big_int/perf/item1/x64_study256_vecsort_run1.csv deleted file mode 100644 index 90002046..00000000 --- a/tests/beman/big_int/perf/item1/x64_study256_vecsort_run1.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:13:36Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new256 seed=1 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,98.87,98.31,29.64 -vecsort,builtin,100000,1,6,9,39.34,39.23,23.60 -vecsort,copy,100000,1,77,9,2.64,2.59,20.32 diff --git a/tests/beman/big_int/perf/item1/x64_study256_vecsort_run2.csv b/tests/beman/big_int/perf/item1/x64_study256_vecsort_run2.csv deleted file mode 100644 index 509a6bf8..00000000 --- a/tests/beman/big_int/perf/item1/x64_study256_vecsort_run2.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:16:17Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new256 seed=2 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=256 sweep_int_sizeof=40 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,98.31,97.92,29.53 -vecsort,builtin,100000,1,6,9,39.48,39.38,23.69 -vecsort,copy,100000,1,75,9,2.61,2.59,19.69 diff --git a/tests/beman/big_int/perf/item1/x64_study512_run1.csv b/tests/beman/big_int/perf/item1/x64_study512_run1.csv deleted file mode 100644 index 7801cf33..00000000 --- a/tests/beman/big_int/perf/item1/x64_study512_run1.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:13:37Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new512 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2267885,9,8.65,8.62,19.65 -add,inplace,1,1,2035667,9,4.91,4.70,19.95 -add,kernel,1,1,10509284,9,1.93,1.89,20.26 -add,floor,1,1,7833272,9,2.58,2.54,20.22 -add,gmp,1,1,8823541,9,2.27,2.27,20.01 -add,gmpz,1,1,4812896,9,4.16,4.16,20.02 -add,auto,2,2,1803044,9,11.01,10.93,19.90 -add,inplace,2,2,1644593,9,6.21,6.12,20.39 -add,kernel,2,2,8590347,9,2.36,2.33,20.33 -add,floor,2,2,6963766,9,2.89,2.84,20.21 -add,gmp,2,2,8824085,9,2.27,2.27,20.00 -add,gmpz,2,2,4813095,9,4.16,4.16,20.00 -add,auto,4,4,1883283,9,10.65,10.62,20.06 -add,inplace,4,4,1748184,9,5.71,5.70,19.98 -add,kernel,4,4,6578994,9,3.04,3.02,19.99 -add,floor,4,4,5341341,9,3.67,3.61,19.54 -add,gmp,4,4,7223345,9,2.77,2.77,20.00 -add,gmpz,4,4,4589319,9,4.34,4.34,19.99 -add,auto,8,8,1658689,9,11.99,11.98,19.90 -add,inplace,8,8,1417844,9,7.04,7.03,19.97 -add,kernel,8,8,4398644,9,4.53,4.53,19.94 -add,floor,8,8,1602134,9,12.54,12.51,20.11 -add,gmp,8,8,5443160,9,3.68,3.68,20.02 -add,gmpz,8,8,4287712,9,4.66,4.64,19.97 -add,auto,16,16,848328,9,23.52,23.40,19.95 -add,inplace,16,16,840701,9,11.89,11.85,20.02 -add,kernel,16,16,2646080,9,7.56,7.56,20.00 -add,floor,16,16,1303170,9,15.36,15.34,20.03 -add,gmp,16,16,3633393,9,5.50,5.50,20.00 -add,gmpz,16,16,3074352,9,6.52,6.49,20.06 -sub,auto,1,1,1997766,9,10.04,10.01,20.05 -sub,inplace,1,1,2160809,9,4.63,4.63,20.04 -sub,kernel,1,1,13236280,9,1.51,1.51,20.00 -sub,floor,1,1,10588750,9,1.89,1.89,20.00 -sub,gmp,1,1,8750993,9,2.27,2.27,19.85 -sub,gmpz,1,1,4603627,9,4.34,4.34,20.00 -sub,auto,2,2,1777515,9,11.30,11.28,20.08 -sub,inplace,2,2,1843481,9,5.39,5.32,19.92 -sub,kernel,2,2,9585450,9,2.11,2.10,20.29 -sub,floor,2,2,8082124,9,2.47,2.46,19.98 -sub,gmp,2,2,8824148,9,2.27,2.27,20.01 -sub,gmpz,2,2,4560099,9,4.34,4.34,19.82 -sub,auto,4,4,1655855,9,12.11,12.06,20.04 -sub,inplace,4,4,1782725,9,5.59,5.58,19.94 -sub,kernel,4,4,7053980,9,2.84,2.83,20.00 -sub,floor,4,4,6210369,9,3.21,3.21,19.95 -sub,gmp,4,4,8008019,9,2.50,2.50,20.01 -sub,gmpz,4,4,4344176,9,4.58,4.53,19.84 -sub,auto,8,8,1483825,9,13.48,13.45,20.00 -sub,inplace,8,8,1437561,9,6.96,6.96,20.01 -sub,kernel,8,8,4584748,9,4.37,4.36,20.07 -sub,floor,8,8,4184797,9,4.78,4.78,20.05 -sub,gmp,8,8,5420846,9,3.69,3.69,19.99 -sub,gmpz,8,8,4034264,9,4.98,4.95,20.09 -sub,auto,16,16,775345,9,25.94,25.65,20.07 -sub,inplace,16,16,908128,9,11.08,10.84,20.05 -sub,kernel,16,16,2684042,9,7.45,7.45,20.00 -sub,floor,16,16,1309992,9,15.28,15.24,20.01 -sub,gmp,16,16,3224190,9,6.20,6.20,20.01 -sub,gmpz,16,16,2939073,9,6.82,6.81,20.04 -shl,auto,1,13,2431347,9,8.26,8.21,20.09 -shl,inplace,1,13,2356462,9,4.26,4.24,20.08 -shl,kernel,1,13,9664569,9,2.06,2.03,19.90 -shl,kernelip,1,13,5613237,9,1.75,1.70,19.60 -shl,floor,1,13,9625907,9,2.66,2.64,25.62 -shl,gmp,1,13,10588962,9,2.08,2.08,22.00 -shl,gmpz,1,13,5893698,9,3.39,3.39,20.02 -shl,auto,4,13,2193738,9,9.14,9.01,20.02 -shl,inplace,4,13,1938352,9,5.18,5.16,20.07 -shl,kernel,4,13,5722355,9,3.50,3.49,20.08 -shl,kernelip,4,13,3370719,9,2.97,2.91,20.00 -shl,floor,4,13,5419702,9,4.14,4.13,22.48 -shl,gmp,4,13,8655980,9,2.50,2.50,21.69 -shl,gmpz,4,13,4946839,9,4.04,4.04,20.00 -shl,auto,16,13,1030851,9,19.44,19.33,20.06 -shl,inplace,16,13,1120507,9,8.89,8.84,19.90 -shl,kernel,16,13,2686011,9,7.45,7.44,20.02 -shl,kernelip,16,13,1407175,9,7.19,7.05,20.20 -shl,floor,16,13,1310247,9,15.21,15.21,19.94 -shl,gmp,16,13,4854826,9,4.17,4.14,20.27 -shl,gmpz,16,13,3406604,9,5.83,5.81,19.95 -shr,auto,1,13,2153186,9,9.29,9.29,20.00 -shr,inplace,1,13,2928727,9,3.42,3.40,20.07 -shr,kernel,1,13,11578799,9,1.70,1.70,19.73 -shr,floor,1,13,8761579,9,2.27,2.27,19.89 -shr,gmp,1,13,10588911,9,1.89,1.89,20.04 -shr,gmpz,1,13,5771371,9,3.47,3.47,20.01 -shr,auto,4,13,1639702,9,12.20,12.16,20.00 -shr,inplace,4,13,2230130,9,4.48,4.46,19.99 -shr,kernel,4,13,4515750,9,4.43,4.43,20.01 -shr,floor,4,13,4972166,9,4.02,3.96,20.00 -shr,gmp,4,13,8560600,9,2.35,2.34,20.15 -shr,gmpz,4,13,5040077,9,3.96,3.95,20.06 -shr,auto,16,13,907169,9,22.00,21.92,19.99 -shr,inplace,16,13,1096427,9,9.11,9.06,19.99 -shr,kernel,16,13,2328264,9,8.61,8.58,20.05 -shr,floor,16,13,1265424,9,15.78,15.74,19.98 -shr,gmp,16,13,4603655,9,4.35,4.34,20.10 -shr,gmpz,16,13,3042011,9,6.29,6.20,19.10 -mul,auto,1,1,1851617,9,10.80,10.79,20.03 -mul,gmp,1,1,5918857,9,3.40,3.37,20.11 -mul,gmpz,1,1,5018300,9,3.99,3.98,20.01 -mul,auto,2,2,1398284,9,14.28,14.25,19.97 -mul,kernel,2,2,2726597,9,7.62,7.58,20.79 -mul,floor,2,2,2590678,9,7.85,7.73,20.48 -mul,gmp,2,2,5212265,9,3.83,3.81,19.92 -mul,gmpz,2,2,3269352,9,6.11,6.09,19.98 -mul,auto,3,3,1281732,9,15.64,15.60,20.05 -mul,kernel,3,3,2325254,9,9.07,9.03,21.08 -mul,floor,3,3,2176578,9,9.29,9.19,20.34 -mul,gmp,3,3,2578441,9,7.80,7.63,20.06 -mul,gmpz,3,3,1994924,9,10.00,9.94,19.95 -mul,auto,4,4,1129330,9,17.73,17.64,20.05 -mul,kernel,4,4,1886007,9,11.02,11.00,20.79 -mul,floor,4,4,1800234,9,11.21,11.12,20.23 -mul,gmp,4,4,2063767,9,9.68,9.66,20.00 -mul,gmpz,4,4,1642285,9,12.17,12.13,20.00 -mul,auto,6,6,664051,9,30.13,30.11,20.00 -mul,kernel,6,6,1203501,9,17.30,17.28,20.81 -mul,floor,6,6,811891,9,25.51,25.21,20.78 -mul,gmp,6,6,1275185,9,15.72,15.65,20.04 -mul,gmpz,6,6,1111347,9,18.08,18.00,20.09 -mul,auto,8,8,523686,9,37.86,37.82,19.83 -mul,kernel,8,8,807961,9,25.49,25.35,20.58 -mul,floor,8,8,594835,9,32.75,32.66,19.51 -mul,gmp,8,8,742291,9,27.05,26.90,20.07 -mul,gmpz,8,8,688619,9,28.84,28.71,19.94 -mul,auto,12,12,335713,9,59.78,59.62,20.07 -mul,kernel,12,12,424770,9,47.51,47.33,20.17 -mul,floor,12,12,364453,9,54.95,54.86,20.03 -mul,gmp,12,12,411893,9,48.56,48.54,20.00 -mul,gmpz,12,12,394118,9,50.76,50.74,20.00 -mul,auto,16,16,218443,9,91.45,91.07,19.98 -mul,kernel,16,16,255457,9,78.66,78.57,20.10 -mul,floor,16,16,229756,9,86.01,85.84,19.76 -mul,gmp,16,16,244324,9,81.91,81.88,20.01 -mul,gmpz,16,16,238016,9,84.06,84.03,20.01 -sqr,auto,4,4,1140184,9,17.45,17.42,19.90 -sqr,kernel,4,4,2024108,9,9.91,9.86,20.09 -sqr,floor,4,4,2138072,9,9.60,9.57,20.52 -sqr,gmp,4,4,3370310,9,5.83,5.82,19.69 -sqr,gmpz,4,4,2262308,9,8.83,8.80,19.99 -sqr,auto,16,16,294060,9,68.07,67.99,20.01 -sqr,kernel,16,16,357951,9,55.86,55.83,20.00 -sqr,floor,16,16,321655,9,62.31,62.24,20.04 -sqr,gmp,16,16,398530,9,49.84,49.83,19.87 -sqr,gmpz,16,16,384001,9,52.11,52.09,20.01 -divrem,auto,2,1,526717,9,37.63,37.47,19.82 -divrem,kernel,2,1,3422383,9,5.73,5.64,19.79 -divrem,floor,2,1,3143256,9,6.29,6.23,19.85 -divrem,gmp,2,1,2301728,9,8.69,8.67,20.00 -divrem,gmpz,2,1,1518261,9,13.17,13.15,20.00 -divrem,auto,8,4,267960,9,75.02,74.59,20.08 -divrem,kernel,8,4,494850,9,40.32,40.06,19.97 -divrem,floor,8,4,512897,9,39.13,38.92,20.07 -divrem,gmp,8,4,502347,9,40.03,39.73,20.09 -divrem,gmpz,8,4,479763,9,41.69,41.55,20.01 -divrem,auto,32,16,58383,9,341.90,341.12,19.97 -divrem,kernel,32,16,69009,9,288.46,287.78,19.92 -divrem,floor,32,16,65779,9,303.91,302.57,19.98 -divrem,gmp,32,16,104039,9,192.27,191.35,20.00 -divrem,gmpz,32,16,102051,9,195.16,194.71,19.93 diff --git a/tests/beman/big_int/perf/item1/x64_study512_run2.csv b/tests/beman/big_int/perf/item1/x64_study512_run2.csv deleted file mode 100644 index 3041c748..00000000 --- a/tests/beman/big_int/perf/item1/x64_study512_run2.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:16:18Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new512 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2317883,9,8.68,8.62,20.11 -add,inplace,1,1,2036037,9,4.91,4.91,20.01 -add,kernel,1,1,10376121,9,1.91,1.90,19.81 -add,floor,1,1,7740466,9,2.56,2.53,19.83 -add,gmp,1,1,8822700,9,2.27,2.27,20.00 -add,gmpz,1,1,4812848,9,4.16,4.16,20.00 -add,auto,2,2,1835149,9,10.99,10.85,20.17 -add,inplace,2,2,1629237,9,6.18,6.09,20.12 -add,kernel,2,2,8269873,9,2.35,2.29,19.46 -add,floor,2,2,6859995,9,2.88,2.85,19.85 -add,gmp,2,2,8823963,9,2.27,2.27,20.01 -add,gmpz,2,2,4813028,9,4.16,4.16,20.00 -add,auto,4,4,1884101,9,10.64,10.61,20.05 -add,inplace,4,4,1748698,9,5.71,5.69,20.00 -add,kernel,4,4,6584012,9,3.04,3.03,20.10 -add,floor,4,4,5572963,9,3.61,3.60,20.18 -add,gmp,4,4,8042646,9,2.49,2.49,20.03 -add,gmpz,4,4,4494086,9,4.54,4.37,20.63 -add,auto,8,8,1667458,9,11.99,11.99,20.01 -add,inplace,8,8,1420461,9,7.05,7.03,20.03 -add,kernel,8,8,4411936,9,4.53,4.53,20.01 -add,floor,8,8,1582843,9,12.57,12.52,19.89 -add,gmp,8,8,5437616,9,3.68,3.68,20.01 -add,gmpz,8,8,4167886,9,4.80,4.80,20.03 -add,auto,16,16,846688,9,23.49,23.40,19.90 -add,inplace,16,16,843387,9,11.95,11.93,20.17 -add,kernel,16,16,2647163,9,7.56,7.56,20.00 -add,floor,16,16,1304780,9,15.47,15.42,20.18 -add,gmp,16,16,3634207,9,5.50,5.50,19.99 -add,gmpz,16,16,3048853,9,6.56,6.50,20.01 -sub,auto,1,1,1913940,9,10.39,10.18,20.17 -sub,inplace,1,1,2160289,9,4.63,4.63,20.02 -sub,kernel,1,1,13236497,9,1.51,1.51,20.00 -sub,floor,1,1,10588920,9,1.89,1.89,20.00 -sub,gmp,1,1,8822495,9,2.27,2.27,20.00 -sub,gmpz,1,1,4550655,9,4.34,4.34,19.78 -sub,auto,2,2,1766883,9,11.35,11.33,20.06 -sub,inplace,2,2,1842731,9,5.37,5.28,19.78 -sub,kernel,2,2,9385991,9,2.11,2.09,19.81 -sub,floor,2,2,8139960,9,2.47,2.46,20.16 -sub,gmp,2,2,8824103,9,2.27,2.27,20.01 -sub,gmpz,2,2,4603558,9,4.34,4.34,20.05 -sub,auto,4,4,1656757,9,12.12,12.10,20.10 -sub,inplace,4,4,1781596,9,5.60,5.59,19.99 -sub,kernel,4,4,6633729,9,3.02,3.01,20.04 -sub,floor,4,4,6184672,9,3.24,3.24,20.08 -sub,gmp,4,4,8010452,9,2.50,2.50,20.06 -sub,gmpz,4,4,4352316,9,4.58,4.56,19.96 -sub,auto,8,8,1482804,9,13.49,13.48,20.01 -sub,inplace,8,8,1441931,9,6.94,6.93,20.03 -sub,kernel,8,8,4522282,9,4.42,4.42,20.00 -sub,floor,8,8,4161944,9,4.81,4.81,20.02 -sub,gmp,8,8,5165763,9,3.87,3.87,20.00 -sub,gmpz,8,8,4018546,9,4.96,4.94,19.95 -sub,auto,16,16,773526,9,25.75,25.59,19.95 -sub,inplace,16,16,911884,9,11.01,10.88,20.06 -sub,kernel,16,16,2679497,9,7.46,7.46,20.01 -sub,floor,16,16,1304487,9,15.39,15.30,20.07 -sub,gmp,16,16,3639766,9,5.49,5.49,20.01 -sub,gmpz,16,16,2920150,9,6.79,6.77,19.84 -shl,auto,1,13,2431431,9,8.29,8.22,20.15 -shl,inplace,1,13,2352459,9,4.26,4.22,20.02 -shl,kernel,1,13,9626133,9,2.08,2.00,19.93 -shl,kernelip,1,13,5809063,9,1.74,1.71,20.24 -shl,floor,1,13,9585832,9,2.65,2.62,25.35 -shl,gmp,1,13,10541927,9,2.08,2.08,21.90 -shl,gmpz,1,13,6110932,9,3.27,3.27,20.01 -shl,auto,4,13,2201509,9,9.15,9.05,20.12 -shl,inplace,4,13,1933852,9,5.18,5.16,20.01 -shl,kernel,4,13,5711450,9,3.50,3.48,20.03 -shl,kernelip,4,13,3339830,9,2.96,2.94,19.79 -shl,floor,4,13,5439020,9,4.14,4.13,22.53 -shl,gmp,4,13,8656909,9,2.55,2.50,22.44 -shl,gmpz,4,13,4941078,9,4.04,4.04,19.99 -shl,auto,16,13,1028204,9,19.48,19.38,20.08 -shl,inplace,16,13,1120977,9,8.85,8.82,19.84 -shl,kernel,16,13,2687364,9,7.45,7.44,20.02 -shl,kernelip,16,13,1397768,9,7.19,7.07,20.08 -shl,floor,16,13,1255226,9,15.21,15.21,19.13 -shl,gmp,16,13,4857971,9,4.16,4.15,20.25 -shl,gmpz,16,13,3409634,9,5.83,5.80,19.89 -shr,auto,1,13,2148196,9,9.32,9.31,20.02 -shr,inplace,1,13,2919026,9,3.43,3.41,20.04 -shr,kernel,1,13,11752128,9,1.70,1.70,20.01 -shr,floor,1,13,8824152,9,2.27,2.27,20.07 -shr,gmp,1,13,10588680,9,1.89,1.89,20.01 -shr,gmpz,1,13,5763703,9,3.46,3.46,19.98 -shr,auto,4,13,1730509,9,11.59,11.55,20.06 -shr,inplace,4,13,2230008,9,4.49,4.46,20.02 -shr,kernel,4,13,5736483,9,3.47,3.47,19.95 -shr,floor,4,13,4957856,9,4.02,4.00,19.93 -shr,gmp,4,13,8524700,9,2.33,2.32,19.90 -shr,gmpz,4,13,5065857,9,3.96,3.94,20.05 -shr,auto,16,13,910252,9,22.01,21.93,20.05 -shr,inplace,16,13,1135543,9,8.83,8.81,20.09 -shr,kernel,16,13,2384103,9,8.40,8.36,20.05 -shr,floor,16,13,1293084,9,15.50,15.40,20.05 -shr,gmp,16,13,4602663,9,4.35,4.34,20.06 -shr,gmpz,16,13,3223298,9,6.23,6.22,20.20 -mul,auto,1,1,1852126,9,10.80,10.79,20.01 -mul,gmp,1,1,5937723,9,3.50,3.36,20.99 -mul,gmpz,1,1,4987953,9,3.99,3.99,19.93 -mul,auto,2,2,1400989,9,14.27,14.25,20.02 -mul,kernel,2,2,2691195,9,7.70,7.63,20.74 -mul,floor,2,2,2508353,9,8.05,7.93,20.27 -mul,gmp,2,2,4911346,9,4.07,4.05,19.98 -mul,gmpz,2,2,3253208,9,6.15,6.11,20.02 -mul,auto,3,3,1278400,9,15.62,15.60,19.98 -mul,kernel,3,3,2349253,9,9.02,9.00,21.19 -mul,floor,3,3,2188708,9,9.18,9.05,20.19 -mul,gmp,3,3,2551206,9,7.82,7.75,19.94 -mul,gmpz,3,3,2012059,9,9.90,9.87,19.96 -mul,auto,4,4,1128210,9,17.80,17.62,20.14 -mul,kernel,4,4,1795681,9,11.28,11.22,20.27 -mul,floor,4,4,1703437,9,11.93,11.76,20.26 -mul,gmp,4,4,2036711,9,9.92,9.73,20.56 -mul,gmpz,4,4,1648531,9,12.18,12.15,20.11 -mul,auto,6,6,663244,9,30.15,30.14,20.00 -mul,kernel,6,6,1203026,9,17.29,17.28,20.80 -mul,floor,6,6,773823,9,25.01,24.63,19.39 -mul,gmp,6,6,1153339,9,17.35,17.30,20.01 -mul,gmpz,6,6,1103394,9,17.99,17.91,19.86 -mul,auto,8,8,528249,9,37.87,37.85,20.02 -mul,kernel,8,8,809170,9,25.64,25.48,20.72 -mul,floor,8,8,611821,9,32.83,32.72,20.08 -mul,gmp,8,8,731920,9,27.05,26.94,19.82 -mul,gmpz,8,8,697824,9,28.52,27.90,19.94 -mul,auto,12,12,334660,9,60.01,59.82,20.10 -mul,kernel,12,12,424171,9,47.59,47.43,20.18 -mul,floor,12,12,364373,9,55.02,54.86,20.04 -mul,gmp,12,12,412034,9,48.56,48.54,20.01 -mul,gmpz,12,12,385127,9,51.92,51.90,20.00 -mul,auto,16,16,220119,9,91.12,90.83,20.06 -mul,kernel,16,16,256314,9,78.65,78.57,20.18 -mul,floor,16,16,230770,9,85.77,85.40,19.79 -mul,gmp,16,16,242546,9,82.47,82.43,20.00 -mul,gmpz,16,16,237952,9,84.12,84.06,20.05 -sqr,auto,4,4,1142352,9,17.44,17.38,19.92 -sqr,kernel,4,4,2016611,9,9.82,9.74,19.78 -sqr,floor,4,4,2146820,9,9.61,9.58,20.63 -sqr,gmp,4,4,3464532,9,5.79,5.76,20.09 -sqr,gmpz,4,4,2271398,9,8.77,8.74,19.92 -sqr,auto,16,16,277092,9,72.23,72.07,20.01 -sqr,kernel,16,16,343305,9,58.27,58.22,20.00 -sqr,floor,16,16,314792,9,66.20,66.12,20.87 -sqr,gmp,16,16,398208,9,49.82,49.77,19.84 -sqr,gmpz,16,16,383948,9,52.09,52.07,20.00 -divrem,auto,2,1,561224,9,35.65,35.42,20.51 -divrem,kernel,2,1,3431112,9,5.72,5.64,19.75 -divrem,floor,2,1,3331197,9,6.01,5.95,20.00 -divrem,gmp,2,1,2985552,9,6.70,6.70,20.00 -divrem,gmpz,2,1,1735360,9,11.59,11.55,20.11 -divrem,auto,8,4,233546,9,85.29,84.78,19.98 -divrem,kernel,8,4,404293,9,49.59,49.24,20.05 -divrem,floor,8,4,391868,9,51.63,51.37,20.25 -divrem,gmp,8,4,457228,9,43.79,43.57,20.00 -divrem,gmpz,8,4,430724,9,46.09,46.01,19.86 -divrem,auto,32,16,58406,9,342.75,341.77,20.01 -divrem,kernel,32,16,68905,9,301.34,288.45,20.79 -divrem,floor,32,16,63901,9,304.33,303.90,19.44 -divrem,gmp,32,16,104966,9,190.01,188.82,19.94 -divrem,gmpz,32,16,100889,9,194.93,194.12,19.71 diff --git a/tests/beman/big_int/perf/item1/x64_study512_vecsort_run1.csv b/tests/beman/big_int/perf/item1/x64_study512_vecsort_run1.csv deleted file mode 100644 index 771cc75d..00000000 --- a/tests/beman/big_int/perf/item1/x64_study512_vecsort_run1.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:14:16Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new512 seed=1 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,2,9,104.26,103.52,20.84 -vecsort,builtin,100000,1,6,9,39.30,39.27,23.58 -vecsort,copy,100000,1,64,9,3.14,3.09,20.13 diff --git a/tests/beman/big_int/perf/item1/x64_study512_vecsort_run2.csv b/tests/beman/big_int/perf/item1/x64_study512_vecsort_run2.csv deleted file mode 100644 index 539ae1eb..00000000 --- a/tests/beman/big_int/perf/item1/x64_study512_vecsort_run2.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:16:57Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new512 seed=2 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=512 sweep_int_sizeof=72 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,2,9,102.61,102.45,20.55 -vecsort,builtin,100000,1,6,9,39.37,39.34,23.62 -vecsort,copy,100000,1,63,9,3.14,3.10,19.84 diff --git a/tests/beman/big_int/perf/item1/x64_study64_run1.csv b/tests/beman/big_int/perf/item1/x64_study64_run1.csv deleted file mode 100644 index 077a2954..00000000 --- a/tests/beman/big_int/perf/item1/x64_study64_run1.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:11:36Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2957529,9,6.66,6.61,19.72 -add,inplace,1,1,2035779,9,4.91,4.91,20.00 -add,kernel,1,1,10340399,9,1.92,1.89,19.83 -add,floor,1,1,2044024,9,9.81,9.81,20.06 -add,gmp,1,1,8823766,9,2.27,2.27,20.05 -add,gmpz,1,1,4813093,9,4.16,4.16,20.04 -add,auto,2,2,1257083,9,15.96,15.89,20.06 -add,inplace,2,2,1610213,9,6.15,5.98,19.68 -add,kernel,2,2,8199515,9,2.41,2.34,19.80 -add,floor,2,2,1961320,9,10.23,10.20,20.09 -add,gmp,2,2,8824154,9,2.27,2.27,20.00 -add,gmpz,2,2,4813017,9,4.16,4.16,20.00 -add,auto,4,4,1297234,9,15.42,15.41,20.01 -add,inplace,4,4,1743098,9,5.71,5.71,19.93 -add,kernel,4,4,6604569,9,3.04,3.02,20.14 -add,floor,4,4,1798459,9,11.09,11.02,19.95 -add,gmp,4,4,8041608,9,2.49,2.49,20.01 -add,gmpz,4,4,4593245,9,4.34,4.34,19.97 -add,auto,8,8,1193770,9,16.75,16.75,20.00 -add,inplace,8,8,1408671,9,7.09,7.07,19.98 -add,kernel,8,8,4412052,9,4.53,4.53,20.02 -add,floor,8,8,1576939,9,12.48,12.36,19.68 -add,gmp,8,8,5440013,9,3.68,3.67,20.01 -add,gmpz,8,8,4307109,9,4.65,4.64,20.04 -add,auto,16,16,954302,9,21.02,20.92,20.05 -add,inplace,16,16,852983,9,11.71,11.62,19.95 -add,kernel,16,16,2647191,9,7.56,7.55,20.00 -add,floor,16,16,1301275,9,15.39,15.34,20.07 -add,gmp,16,16,3540248,9,5.65,5.65,20.00 -add,gmpz,16,16,2565485,9,7.76,7.75,19.92 -sub,auto,1,1,2553405,9,7.76,7.74,19.83 -sub,inplace,1,1,2135430,9,4.68,4.66,19.97 -sub,kernel,1,1,13236224,9,1.51,1.51,20.00 -sub,floor,1,1,10581523,9,1.89,1.89,19.99 -sub,gmp,1,1,8823397,9,2.27,2.27,20.00 -sub,gmpz,1,1,4603644,9,4.34,4.34,20.00 -sub,auto,2,2,1280156,9,15.71,15.63,20.13 -sub,inplace,2,2,1960200,9,5.11,5.10,20.10 -sub,kernel,2,2,9542863,9,2.10,2.09,20.10 -sub,floor,2,2,2020669,9,9.96,9.91,20.11 -sub,gmp,2,2,8824108,9,2.27,2.27,20.00 -sub,gmpz,2,2,4602314,9,4.35,4.34,20.06 -sub,auto,4,4,1204449,9,16.59,16.57,19.98 -sub,inplace,4,4,1787662,9,5.59,5.59,20.01 -sub,kernel,4,4,7052433,9,2.84,2.83,20.00 -sub,floor,4,4,1854606,9,10.81,10.74,20.04 -sub,gmp,4,4,8009859,9,2.50,2.50,20.00 -sub,gmpz,4,4,4372638,9,4.56,4.54,19.96 -sub,auto,8,8,1116542,9,17.91,17.91,20.01 -sub,inplace,8,8,1436638,9,6.95,6.95,19.99 -sub,kernel,8,8,4587303,9,4.36,4.35,20.00 -sub,floor,8,8,1605505,9,12.42,12.40,19.94 -sub,gmp,8,8,5423888,9,3.69,3.69,20.00 -sub,gmpz,8,8,4048090,9,4.96,4.93,20.09 -sub,auto,16,16,941441,9,21.23,21.12,19.99 -sub,inplace,16,16,899680,9,11.05,11.00,19.89 -sub,kernel,16,16,2493743,9,8.02,8.02,20.00 -sub,floor,16,16,1312458,9,15.29,15.24,20.06 -sub,gmp,16,16,3637338,9,5.50,5.49,19.99 -sub,gmpz,16,16,2946398,9,6.81,6.75,20.04 -shl,auto,1,13,1577746,9,12.60,12.41,19.87 -shl,inplace,1,13,2707333,9,3.67,3.67,19.91 -shl,kernel,1,13,9658541,9,2.07,2.07,20.03 -shl,kernelip,1,13,5648390,9,1.74,1.70,19.62 -shl,floor,1,13,2080687,9,9.82,9.80,20.43 -shl,gmp,1,13,9626171,9,2.08,2.08,20.00 -shl,gmpz,1,13,6110834,9,3.27,3.27,20.02 -shl,auto,4,13,1481653,9,13.44,13.36,19.90 -shl,inplace,4,13,2167924,9,4.61,4.59,20.00 -shl,kernel,4,13,5711158,9,3.50,3.47,20.04 -shl,kernelip,4,13,3402982,9,2.94,2.91,20.04 -shl,floor,4,13,1770339,9,11.20,11.19,19.84 -shl,gmp,4,13,7991311,9,2.50,2.50,20.00 -shl,gmpz,4,13,4947049,9,4.04,4.04,20.03 -shl,auto,16,13,1174359,9,17.07,16.96,20.03 -shl,inplace,16,13,1106880,9,9.10,9.00,20.15 -shl,kernel,16,13,2684565,9,7.45,7.44,20.00 -shl,kernelip,16,13,1406483,9,7.13,7.05,20.07 -shl,floor,16,13,1342232,9,15.22,15.21,20.43 -shl,gmp,16,13,4816627,9,4.16,4.15,20.08 -shl,gmpz,16,13,3407164,9,5.84,5.81,19.89 -shr,auto,1,13,2440400,9,8.19,8.18,19.99 -shr,inplace,1,13,2970127,9,3.29,3.25,19.55 -shr,kernel,1,13,11745605,9,1.70,1.70,19.99 -shr,floor,1,13,8822456,9,2.27,2.27,20.00 -shr,gmp,1,13,10589565,9,1.89,1.89,20.01 -shr,gmpz,1,13,5775292,9,3.47,3.46,20.08 -shr,auto,4,13,1247066,9,16.06,15.99,20.03 -shr,inplace,4,13,2284628,9,4.36,4.32,19.91 -shr,kernel,4,13,5690183,9,3.51,3.47,19.98 -shr,floor,4,13,1796223,9,11.15,11.11,20.02 -shr,gmp,4,13,8656115,9,2.33,2.32,20.19 -shr,gmpz,4,13,5042697,9,3.97,3.94,20.06 -shr,auto,16,13,1004547,9,19.93,19.90,20.03 -shr,inplace,16,13,1155662,9,8.65,8.62,19.99 -shr,kernel,16,13,2386072,9,8.34,8.32,19.90 -shr,floor,16,13,1289417,9,15.46,15.36,19.96 -shr,gmp,16,13,4635080,9,4.31,4.31,20.07 -shr,gmpz,16,13,3194500,9,6.24,6.22,20.09 -mul,auto,1,1,1222672,9,16.36,16.33,20.01 -mul,gmp,1,1,5965340,9,3.37,3.35,20.12 -mul,gmpz,1,1,5025922,9,3.97,3.97,19.97 -mul,auto,2,2,1058974,9,18.94,18.90,20.07 -mul,kernel,2,2,2828172,9,7.62,7.55,21.57 -mul,floor,2,2,1356258,9,14.99,14.83,20.35 -mul,gmp,2,2,5208109,9,3.82,3.80,19.89 -mul,gmpz,2,2,3286419,9,6.10,6.07,20.05 -mul,auto,3,3,987599,9,20.25,20.21,20.01 -mul,kernel,3,3,2395772,9,8.93,8.92,21.40 -mul,floor,3,3,1235660,9,16.37,16.32,20.23 -mul,gmp,3,3,2577655,9,7.72,7.70,19.90 -mul,gmpz,3,3,2007431,9,9.99,9.95,20.04 -mul,auto,4,4,898437,9,22.30,22.28,20.07 -mul,kernel,4,4,1927289,9,10.97,10.89,21.13 -mul,floor,4,4,1113593,9,18.20,18.14,20.28 -mul,gmp,4,4,2076741,9,9.62,9.56,19.97 -mul,gmpz,4,4,1653060,9,12.08,12.02,19.99 -mul,auto,6,6,720426,9,27.81,27.70,20.03 -mul,kernel,6,6,1217611,9,17.16,17.14,20.89 -mul,floor,6,6,822429,9,24.35,24.32,20.06 -mul,gmp,6,6,1273561,9,15.68,15.66,19.98 -mul,gmpz,6,6,1113233,9,17.95,17.92,20.02 -mul,auto,8,8,562122,9,35.53,35.37,19.96 -mul,kernel,8,8,808444,9,25.46,25.25,20.58 -mul,floor,8,8,620549,9,32.36,32.27,20.09 -mul,gmp,8,8,742575,9,27.09,26.83,20.09 -mul,gmpz,8,8,692471,9,28.85,28.72,20.01 -mul,auto,12,12,347316,9,57.58,57.54,20.00 -mul,kernel,12,12,428962,9,47.37,47.28,20.32 -mul,floor,12,12,366927,9,54.46,54.24,19.97 -mul,gmp,12,12,411819,9,48.56,48.54,20.00 -mul,gmpz,12,12,385924,9,51.82,51.81,20.00 -mul,auto,16,16,225862,9,88.50,88.48,19.99 -mul,kernel,16,16,255671,9,78.60,78.46,20.10 -mul,floor,16,16,234420,9,85.45,85.28,20.03 -mul,gmp,16,16,243901,9,82.02,81.99,20.00 -mul,gmpz,16,16,235932,9,84.09,84.05,19.85 -sqr,auto,4,4,912984,9,22.02,21.96,20.10 -sqr,kernel,4,4,2029332,9,9.87,9.82,20.04 -sqr,floor,4,4,1216090,9,16.78,16.74,20.44 -sqr,gmp,4,4,3472950,9,5.84,5.77,20.29 -sqr,gmpz,4,4,2278441,9,8.81,8.75,20.08 -sqr,auto,16,16,301487,9,66.34,66.23,19.99 -sqr,kernel,16,16,348800,9,57.36,57.32,20.01 -sqr,floor,16,16,320186,9,62.78,62.77,20.11 -sqr,gmp,16,16,400620,9,49.80,49.78,19.95 -sqr,gmpz,16,16,383769,9,52.10,52.06,19.99 -divrem,auto,2,1,512633,9,39.21,39.13,20.11 -divrem,kernel,2,1,3475117,9,5.74,5.67,19.96 -divrem,floor,2,1,1561097,9,12.83,12.80,20.04 -divrem,gmp,2,1,2302399,9,8.68,8.67,19.99 -divrem,gmpz,2,1,1475329,9,13.56,13.55,20.00 -divrem,auto,8,4,233941,9,86.37,85.82,20.21 -divrem,kernel,8,4,467761,9,42.70,42.57,19.98 -divrem,floor,8,4,324722,9,62.39,62.10,20.28 -divrem,gmp,8,4,498304,9,40.00,39.80,19.93 -divrem,gmpz,8,4,483991,9,41.54,41.37,20.11 -divrem,auto,32,16,59081,9,340.28,339.64,20.12 -divrem,kernel,32,16,68457,9,292.08,290.98,19.98 -divrem,floor,32,16,65163,9,307.11,306.49,20.01 -divrem,gmp,32,16,104591,9,191.39,190.62,20.01 -divrem,gmpz,32,16,102889,9,194.01,193.64,19.96 diff --git a/tests/beman/big_int/perf/item1/x64_study64_run2.csv b/tests/beman/big_int/perf/item1/x64_study64_run2.csv deleted file mode 100644 index 8fbebafb..00000000 --- a/tests/beman/big_int/perf/item1/x64_study64_run2.csv +++ /dev/null @@ -1,166 +0,0 @@ -# gap_sweep date 2026-10-06T17:14:17Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem bands=small pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2972068,9,6.66,6.61,19.88 -add,inplace,1,1,2036014,9,4.91,4.91,20.00 -add,kernel,1,1,10384993,9,1.91,1.90,19.99 -add,floor,1,1,2055798,9,9.79,9.76,20.14 -add,gmp,1,1,8824178,9,2.27,2.27,20.02 -add,gmpz,1,1,4812965,9,4.16,4.16,20.00 -add,auto,2,2,1267554,9,15.83,15.73,20.05 -add,inplace,2,2,1671274,9,6.08,5.94,20.36 -add,kernel,2,2,7948084,9,2.38,2.33,19.08 -add,floor,2,2,1945780,9,10.24,10.19,19.93 -add,gmp,2,2,8824122,9,2.27,2.27,20.00 -add,gmpz,2,2,4812018,9,4.16,4.16,20.00 -add,auto,4,4,1298031,9,15.41,15.41,20.01 -add,inplace,4,4,1745012,9,5.73,5.71,20.09 -add,kernel,4,4,6359359,9,3.12,3.03,19.82 -add,floor,4,4,1754815,9,11.16,11.11,19.81 -add,gmp,4,4,7998427,9,2.50,2.49,20.02 -add,gmpz,4,4,4588389,9,4.37,4.37,20.08 -add,auto,8,8,1193765,9,16.75,16.75,20.00 -add,inplace,8,8,1412399,9,7.09,7.07,20.02 -add,kernel,8,8,4412050,9,4.53,4.53,20.00 -add,floor,8,8,1594328,9,12.54,12.45,20.00 -add,gmp,8,8,5437394,9,3.68,3.68,20.01 -add,gmpz,8,8,4285819,9,4.67,4.62,19.99 -add,auto,16,16,955979,9,20.92,20.89,20.01 -add,inplace,16,16,842392,9,11.78,11.75,19.84 -add,kernel,16,16,2646809,9,7.56,7.56,20.00 -add,floor,16,16,1296921,9,15.51,15.44,20.11 -add,gmp,16,16,3636119,9,5.50,5.50,20.01 -add,gmpz,16,16,3063291,9,6.51,6.48,19.95 -sub,auto,1,1,2581875,9,7.75,7.74,20.01 -sub,inplace,1,1,2141959,9,4.67,4.66,20.02 -sub,kernel,1,1,13236315,9,1.51,1.51,20.00 -sub,floor,1,1,10356243,9,1.89,1.89,19.58 -sub,gmp,1,1,8823900,9,2.27,2.27,20.00 -sub,gmpz,1,1,4603811,9,4.35,4.34,20.05 -sub,auto,2,2,1280316,9,15.73,15.67,20.14 -sub,inplace,2,2,1960883,9,5.14,5.10,20.18 -sub,kernel,2,2,9501366,9,2.11,2.10,20.10 -sub,floor,2,2,2026283,9,9.96,9.94,20.19 -sub,gmp,2,2,8824320,9,2.27,2.27,20.01 -sub,gmpz,2,2,4603317,9,4.35,4.34,20.05 -sub,auto,4,4,1207566,9,16.56,16.56,20.00 -sub,inplace,4,4,1788204,9,5.59,5.59,20.00 -sub,kernel,4,4,7055432,9,2.84,2.83,20.01 -sub,floor,4,4,1880228,9,10.74,10.70,20.19 -sub,gmp,4,4,8009130,9,2.50,2.50,20.00 -sub,gmpz,4,4,4398966,9,4.57,4.54,20.08 -sub,auto,8,8,1113679,9,17.97,17.96,20.01 -sub,inplace,8,8,1442357,9,6.93,6.93,20.03 -sub,kernel,8,8,4581077,9,4.36,4.36,20.00 -sub,floor,8,8,1624103,9,12.30,12.25,19.96 -sub,gmp,8,8,5425119,9,3.69,3.69,20.01 -sub,gmpz,8,8,4046224,9,4.97,4.94,20.11 -sub,auto,16,16,950367,9,20.92,20.80,19.92 -sub,inplace,16,16,900453,9,11.09,11.05,19.98 -sub,kernel,16,16,2493636,9,8.03,8.02,20.22 -sub,floor,16,16,1261677,9,15.46,15.43,19.64 -sub,gmp,16,16,3637955,9,5.50,5.50,20.01 -sub,gmpz,16,16,2839231,9,7.02,6.97,19.94 -shl,auto,1,13,1579749,9,12.63,12.49,19.97 -shl,inplace,1,13,2718002,9,3.68,3.67,20.03 -shl,kernel,1,13,9626338,9,2.08,2.06,19.99 -shl,kernelip,1,13,5842620,9,1.74,1.72,20.45 -shl,floor,1,13,2079196,9,9.83,9.82,20.44 -shl,gmp,1,13,9626109,9,2.08,2.08,20.02 -shl,gmpz,1,13,6110690,9,3.27,3.27,20.02 -shl,auto,4,13,1485851,9,13.45,13.38,19.98 -shl,inplace,4,13,2163240,9,4.62,4.62,20.02 -shl,kernel,4,13,5673925,9,3.50,3.44,19.74 -shl,kernelip,4,13,3368901,9,2.95,2.91,19.92 -shl,floor,4,13,1775609,9,11.19,11.18,19.87 -shl,gmp,4,13,7990288,9,2.50,2.50,20.00 -shl,gmpz,4,13,4935618,9,4.04,4.04,19.98 -shl,auto,16,13,1173739,9,17.07,16.98,20.04 -shl,inplace,16,13,1095143,9,9.17,9.02,20.05 -shl,kernel,16,13,2679239,9,7.45,7.44,19.97 -shl,kernelip,16,13,1426422,9,7.12,7.06,20.33 -shl,floor,16,13,1284540,9,15.30,15.27,19.67 -shl,gmp,16,13,4766976,9,4.19,4.13,19.89 -shl,gmpz,16,13,3445362,9,5.80,5.80,20.05 -shr,auto,1,13,2439078,9,8.19,8.18,19.98 -shr,inplace,1,13,3067022,9,3.30,3.25,20.29 -shr,kernel,1,13,11752764,9,1.70,1.70,19.99 -shr,floor,1,13,8823817,9,2.27,2.27,20.00 -shr,gmp,1,13,10588656,9,1.89,1.89,20.02 -shr,gmpz,1,13,5780859,9,3.46,3.46,20.02 -shr,auto,4,13,1240148,9,15.98,15.95,19.82 -shr,inplace,4,13,2295823,9,4.34,4.32,19.91 -shr,kernel,4,13,5736359,9,3.49,3.47,20.01 -shr,floor,4,13,1789199,9,11.16,11.12,19.98 -shr,gmp,4,13,8531457,9,2.32,2.31,19.89 -shr,gmpz,4,13,4948903,9,3.99,3.96,19.72 -shr,auto,16,13,1002991,9,19.92,19.90,19.98 -shr,inplace,16,13,1162081,9,8.65,8.64,20.12 -shr,kernel,16,13,2372175,9,8.43,8.40,20.00 -shr,floor,16,13,1296791,9,15.46,15.39,20.10 -shr,gmp,16,13,4592473,9,4.41,4.29,20.16 -shr,gmpz,16,13,3223511,9,6.18,6.16,20.07 -mul,auto,1,1,1207058,9,16.61,16.33,20.10 -mul,gmp,1,1,5614789,9,3.37,3.31,19.03 -mul,gmpz,1,1,4954687,9,4.04,4.03,19.99 -mul,auto,2,2,1052939,9,18.92,18.88,20.01 -mul,kernel,2,2,2829443,9,7.60,7.55,21.56 -mul,floor,2,2,1356977,9,15.02,14.90,20.36 -mul,gmp,2,2,4994446,9,3.99,3.97,19.93 -mul,gmpz,2,2,3253564,9,6.13,6.09,19.95 -mul,auto,3,3,986509,9,20.23,20.18,19.98 -mul,kernel,3,3,2369472,9,8.94,8.92,21.24 -mul,floor,3,3,1247175,9,16.30,16.23,20.35 -mul,gmp,3,3,2575770,9,7.75,7.71,19.98 -mul,gmpz,3,3,2010176,9,9.97,9.95,20.05 -mul,auto,4,4,894328,9,22.30,22.26,19.98 -mul,kernel,4,4,1932500,9,10.91,10.89,21.11 -mul,floor,4,4,1102606,9,18.25,18.19,20.16 -mul,gmp,4,4,1942264,9,10.26,10.22,19.95 -mul,gmpz,4,4,1565351,9,12.84,12.78,20.09 -mul,auto,6,6,710454,9,28.27,28.10,20.08 -mul,kernel,6,6,1214782,9,17.59,17.48,21.35 -mul,floor,6,6,816837,9,24.35,24.31,19.91 -mul,gmp,6,6,1276105,9,15.70,15.66,20.03 -mul,gmpz,6,6,1093504,9,18.31,18.27,20.03 -mul,auto,8,8,562701,9,35.61,35.49,20.05 -mul,kernel,8,8,811364,9,26.03,25.88,21.11 -mul,floor,8,8,616931,9,32.45,32.38,20.02 -mul,gmp,8,8,736963,9,27.07,26.86,19.93 -mul,gmpz,8,8,691461,9,29.01,28.66,20.11 -mul,auto,12,12,347122,9,57.65,57.61,20.01 -mul,kernel,12,12,426239,9,47.30,47.12,20.17 -mul,floor,12,12,368203,9,54.37,54.20,20.02 -mul,gmp,12,12,411899,9,48.56,48.55,20.00 -mul,gmpz,12,12,394208,9,50.75,50.73,20.04 -mul,auto,16,16,225900,9,88.44,88.35,19.98 -mul,kernel,16,16,256844,9,78.60,78.46,20.19 -mul,floor,16,16,234526,9,85.38,85.17,20.02 -mul,gmp,16,16,244237,9,81.92,81.90,20.05 -mul,gmpz,16,16,238003,9,84.05,84.01,20.02 -sqr,auto,4,4,919373,9,22.10,21.85,20.29 -sqr,kernel,4,4,2023172,9,9.88,9.75,19.97 -sqr,floor,4,4,1205845,9,16.78,16.76,20.26 -sqr,gmp,4,4,3462359,9,5.81,5.77,20.13 -sqr,gmpz,4,4,2275983,9,8.80,8.74,20.04 -sqr,auto,16,16,293747,9,68.11,66.55,19.93 -sqr,kernel,16,16,345667,9,57.78,57.71,19.97 -sqr,floor,16,16,318094,9,63.79,63.71,20.29 -sqr,gmp,16,16,398528,9,49.85,49.81,19.88 -sqr,gmpz,16,16,383977,9,52.08,52.06,20.00 -divrem,auto,2,1,638234,9,31.56,31.40,20.13 -divrem,kernel,2,1,3487912,9,5.69,5.48,19.78 -divrem,floor,2,1,1563714,9,12.77,12.75,19.97 -divrem,gmp,2,1,2984562,9,6.70,6.70,20.00 -divrem,gmpz,2,1,1711935,9,11.66,11.59,19.95 -divrem,auto,8,4,208951,9,97.40,96.63,20.34 -divrem,kernel,8,4,355219,9,56.35,56.10,20.02 -divrem,floor,8,4,264328,9,72.03,71.73,19.04 -divrem,gmp,8,4,450333,9,44.61,44.33,20.08 -divrem,gmpz,8,4,425589,9,47.00,46.83,20.01 -divrem,auto,32,16,59041,9,338.86,337.62,20.01 -divrem,kernel,32,16,69265,9,288.80,288.24,20.01 -divrem,floor,32,16,65985,9,304.29,303.66,20.07 -divrem,gmp,32,16,105374,9,190.47,189.53,20.06 -divrem,gmpz,32,16,103736,9,192.11,191.53,19.94 diff --git a/tests/beman/big_int/perf/item1/x64_study64_vecsort_run1.csv b/tests/beman/big_int/perf/item1/x64_study64_vecsort_run1.csv deleted file mode 100644 index 84c78bc1..00000000 --- a/tests/beman/big_int/perf/item1/x64_study64_vecsort_run1.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:12:15Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,86.45,86.32,25.95 -vecsort,builtin,100000,1,6,9,39.37,39.18,23.61 -vecsort,copy,100000,1,177,9,1.13,1.13,20.08 diff --git a/tests/beman/big_int/perf/item1/x64_study64_vecsort_run2.csv b/tests/beman/big_int/perf/item1/x64_study64_vecsort_run2.csv deleted file mode 100644 index 95726c1e..00000000 --- a/tests/beman/big_int/perf/item1/x64_study64_vecsort_run2.csv +++ /dev/null @@ -1,7 +0,0 @@ -# gap_sweep date 2026-10-06T17:14:56Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=vecsort bands=medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -vecsort,auto,100000,1,3,9,85.81,85.61,25.78 -vecsort,builtin,100000,1,6,9,39.50,39.45,23.71 -vecsort,copy,100000,1,177,9,1.13,1.13,20.16 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_base64_run1.csv b/tests/beman/big_int/perf/item1/x64_vshift_base64_run1.csv deleted file mode 100644 index 2a14004b..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_base64_run1.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1212583,9,16.47,16.36,19.96 -shl,inplace,1,13,2442254,9,4.06,4.03,19.86 -shl,kernel,1,13,9674426,9,2.08,2.06,20.08 -shl,auto,4,13,1070722,9,18.59,18.53,19.96 -shl,inplace,4,13,1933496,9,5.16,5.15,20.00 -shl,kernel,4,13,5904331,9,3.39,3.37,20.07 -shl,auto,16,13,810068,9,24.68,24.43,19.97 -shl,inplace,16,13,1087699,9,9.16,9.15,19.95 -shl,kernel,16,13,2691284,9,7.47,7.43,20.13 -shl,auto,256,13,149704,9,133.92,133.00,20.14 -shl,inplace,256,13,107075,9,93.12,92.93,19.94 -shl,kernel,256,13,214256,9,93.45,93.07,20.01 -shl,auto,2000,13,21763,9,916.21,914.65,19.94 -shl,inplace,2000,13,15158,9,657.14,656.11,19.93 -shl,kernel,2000,13,27759,9,718.21,718.09,19.94 -shl,auto,2000,77,18854,9,1063.60,1060.19,20.06 -shl,inplace,2000,77,13049,9,765.77,765.07,20.00 -shl,kernel,2000,77,23535,9,851.05,849.71,20.03 -shl,auto,131072,13,205,3,98193.28,97964.54,20.13 -shl,inplace,131072,13,230,3,43553.83,43490.17,20.03 -shl,kernel,131072,13,277,3,72250.91,72239.19,20.01 -shr,auto,1,13,1979168,9,10.13,10.03,20.14 -shr,inplace,1,13,2735852,9,3.66,3.59,19.95 -shr,kernel,1,13,11751860,9,1.70,1.70,20.00 -shr,auto,4,13,955338,9,20.94,20.87,20.00 -shr,inplace,4,13,2127183,9,4.71,4.67,20.09 -shr,kernel,4,13,5812222,9,3.45,3.45,20.08 -shr,auto,16,13,776527,9,25.78,25.74,20.04 -shr,inplace,16,13,1146537,9,8.73,8.69,20.03 -shr,kernel,16,13,2455592,9,8.14,8.08,19.96 -shr,auto,256,13,146559,9,136.11,135.91,19.94 -shr,inplace,256,13,106843,9,93.71,93.49,20.02 -shr,kernel,256,13,181219,9,110.44,109.98,20.00 -shr,auto,2000,13,21015,9,949.69,948.80,19.96 -shr,inplace,2000,13,15201,9,657.15,656.23,19.99 -shr,kernel,2000,13,24633,9,811.92,811.91,20.00 -shr,auto,2000,77,18408,9,1085.91,1085.64,20.02 -shr,inplace,2000,77,13042,9,766.47,766.21,20.04 -shr,kernel,2000,77,24082,9,830.33,830.30,20.02 -shr,auto,131072,13,203,3,98933.21,98926.77,20.08 -shr,inplace,131072,13,229,3,43515.12,43412.33,20.01 -shr,kernel,131072,13,263,3,76088.66,76088.47,20.01 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_base64_run2.csv b/tests/beman/big_int/perf/item1/x64_vshift_base64_run2.csv deleted file mode 100644 index 71c65b9d..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_base64_run2.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1197081,9,16.76,16.68,20.06 -shl,inplace,1,13,2451913,9,4.08,4.05,19.98 -shl,kernel,1,13,9626445,9,2.08,2.07,20.00 -shl,auto,4,13,1069065,9,18.70,18.57,19.98 -shl,inplace,4,13,1937063,9,5.18,5.12,20.08 -shl,kernel,4,13,5934038,9,3.39,3.37,20.12 -shl,auto,16,13,818084,9,24.54,24.47,20.07 -shl,inplace,16,13,1067508,9,9.16,9.12,19.61 -shl,kernel,16,13,2674830,9,7.51,7.44,20.05 -shl,auto,256,13,150596,9,133.28,131.87,20.08 -shl,inplace,256,13,107429,9,92.99,92.81,19.99 -shl,kernel,256,13,213569,9,93.73,93.58,20.03 -shl,auto,2000,13,21742,9,918.36,917.01,19.97 -shl,inplace,2000,13,15186,9,656.46,655.92,19.94 -shl,kernel,2000,13,27794,9,719.22,718.76,20.01 -shl,auto,2000,77,18748,9,1062.89,1060.47,19.94 -shl,inplace,2000,77,13062,9,765.66,765.13,20.00 -shl,kernel,2000,77,23337,9,857.40,853.32,19.98 -shl,auto,131072,13,205,3,97977.28,97959.13,20.09 -shl,inplace,131072,13,231,3,43702.57,43545.87,20.24 -shl,kernel,131072,13,277,3,72261.65,72252.35,20.02 -shr,auto,1,13,1967294,9,10.07,10.05,19.86 -shr,inplace,1,13,2728571,9,3.65,3.61,19.94 -shr,kernel,1,13,11752507,9,1.70,1.70,20.00 -shr,auto,4,13,951357,9,21.06,20.98,20.04 -shr,inplace,4,13,2118785,9,4.70,4.65,19.98 -shr,kernel,4,13,5781339,9,3.46,3.45,20.01 -shr,auto,16,13,777953,9,25.78,25.67,20.06 -shr,inplace,16,13,1148372,9,8.72,8.66,20.02 -shr,kernel,16,13,2478908,9,8.09,8.04,20.06 -shr,auto,256,13,144359,9,136.61,136.13,19.73 -shr,inplace,256,13,106740,9,93.75,93.55,20.02 -shr,kernel,256,13,181794,9,110.21,109.96,20.05 -shr,auto,2000,13,21016,9,952.79,951.14,20.02 -shr,inplace,2000,13,15238,9,656.39,656.24,20.02 -shr,kernel,2000,13,24633,9,811.90,811.88,20.00 -shr,auto,2000,77,18382,9,1087.98,1087.67,20.00 -shr,inplace,2000,77,13058,9,765.54,765.02,20.00 -shr,kernel,2000,77,24012,9,831.59,831.52,19.99 -shr,auto,131072,13,203,3,98985.81,98960.57,20.09 -shr,inplace,131072,13,231,3,43496.05,43417.21,20.10 -shr,kernel,131072,13,263,3,76236.09,76234.58,20.05 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_base64_run3.csv b/tests/beman/big_int/perf/item1/x64_vshift_base64_run3.csv deleted file mode 100644 index 282352c1..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_base64_run3.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1197422,9,16.74,16.70,20.05 -shl,inplace,1,13,2472384,9,4.07,4.03,20.11 -shl,kernel,1,13,9626311,9,2.08,2.07,20.03 -shl,auto,4,13,1065596,9,18.62,18.48,19.84 -shl,inplace,4,13,1928173,9,5.16,5.12,19.92 -shl,kernel,4,13,5906777,9,3.38,3.37,19.99 -shl,auto,16,13,820467,9,24.52,24.34,20.11 -shl,inplace,16,13,1092472,9,9.16,9.14,20.03 -shl,kernel,16,13,2688595,9,7.46,7.45,20.09 -shl,auto,256,13,148733,9,134.29,133.16,20.00 -shl,inplace,256,13,107675,9,93.05,92.84,20.05 -shl,kernel,256,13,214260,9,93.47,93.10,20.08 -shl,auto,2000,13,21728,9,917.53,915.91,19.94 -shl,inplace,2000,13,15228,9,656.70,655.80,20.01 -shl,kernel,2000,13,27806,9,718.92,718.85,19.99 -shl,auto,2000,77,18879,9,1063.41,1061.85,20.09 -shl,inplace,2000,77,13028,9,765.49,765.23,19.96 -shl,kernel,2000,77,23491,9,852.05,849.63,20.01 -shl,auto,131072,13,205,3,97922.73,97773.30,20.07 -shl,inplace,131072,13,231,3,43378.31,43376.60,20.04 -shl,kernel,131072,13,277,3,72272.21,72265.99,20.03 -shr,auto,1,13,1990684,9,10.12,9.98,20.13 -shr,inplace,1,13,2703425,9,3.64,3.59,19.65 -shr,kernel,1,13,11754047,9,1.70,1.70,20.00 -shr,auto,4,13,962924,9,20.91,20.83,20.17 -shr,inplace,4,13,2128635,9,4.72,4.62,20.09 -shr,kernel,4,13,5796931,9,3.45,3.44,20.04 -shr,auto,16,13,775229,9,25.80,25.72,20.00 -shr,inplace,16,13,1141717,9,8.72,8.68,19.89 -shr,kernel,16,13,2475419,9,8.11,8.01,20.07 -shr,auto,256,13,146028,9,136.98,136.38,20.01 -shr,inplace,256,13,106714,9,93.64,93.57,19.99 -shr,kernel,256,13,181876,9,109.97,109.90,20.00 -shr,auto,2000,13,21089,9,949.92,948.85,20.06 -shr,inplace,2000,13,15237,9,657.22,656.35,20.03 -shr,kernel,2000,13,24635,9,811.75,811.74,20.02 -shr,auto,2000,77,18410,9,1086.85,1086.49,20.01 -shr,inplace,2000,77,13063,9,764.91,764.60,19.99 -shr,kernel,2000,77,23985,9,832.62,832.52,19.99 -shr,auto,131072,13,203,3,98844.51,98843.48,20.07 -shr,inplace,131072,13,230,3,43536.70,43428.02,20.02 -shr,kernel,131072,13,263,3,76087.11,76081.78,20.04 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_new64_run1.csv b/tests/beman/big_int/perf/item1/x64_vshift_new64_run1.csv deleted file mode 100644 index 4a878c12..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_new64_run1.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1602238,9,12.52,12.46,20.11 -shl,inplace,1,13,2387491,9,4.19,4.17,20.00 -shl,kernel,1,13,9626375,9,2.08,2.05,19.97 -shl,auto,4,13,1495001,9,13.45,13.39,20.13 -shl,inplace,4,13,1909864,9,5.24,5.22,20.01 -shl,kernel,4,13,5684448,9,3.47,3.40,19.96 -shl,auto,16,13,1171604,9,17.07,17.03,20.02 -shl,inplace,16,13,1083405,9,9.26,9.23,20.05 -shl,kernel,16,13,2493540,9,8.04,8.01,20.03 -shl,auto,256,13,163855,9,122.03,121.95,20.00 -shl,inplace,256,13,100657,9,99.32,99.22,20.02 -shl,kernel,256,13,213834,9,93.56,93.44,20.01 -shl,auto,2000,13,25889,9,772.75,772.51,20.01 -shl,inplace,2000,13,13950,9,717.01,716.87,20.05 -shl,kernel,2000,13,27874,9,717.57,717.49,20.02 -shl,auto,2000,77,25822,9,774.60,774.47,20.01 -shl,inplace,2000,77,13463,9,742.07,740.27,19.98 -shl,kernel,2000,77,23421,9,853.96,851.14,19.99 -shl,auto,131072,13,403,3,49725.22,49721.73,20.04 -shl,inplace,131072,13,215,3,46654.90,46652.15,20.06 -shl,kernel,131072,13,278,3,72178.28,72165.31,20.06 -shr,auto,1,13,2445052,9,8.19,8.19,20.03 -shr,inplace,1,13,2577593,9,3.87,3.84,20.13 -shr,kernel,1,13,11752194,9,1.70,1.70,20.01 -shr,auto,4,13,1253455,9,15.98,15.96,20.04 -shr,inplace,4,13,2021663,9,4.95,4.95,20.02 -shr,kernel,4,13,5813961,9,3.46,3.46,20.14 -shr,auto,16,13,1001036,9,19.99,19.91,20.02 -shr,inplace,16,13,1106749,9,9.00,8.95,19.94 -shr,kernel,16,13,2391031,9,8.33,8.31,19.93 -shr,auto,256,13,159983,9,124.95,124.87,20.46 -shr,inplace,256,13,100824,9,99.08,99.05,20.04 -shr,kernel,256,13,182017,9,110.04,109.84,20.04 -shr,auto,2000,13,26722,9,748.79,748.20,20.02 -shr,inplace,2000,13,13956,9,716.45,716.41,20.00 -shr,kernel,2000,13,24627,9,811.98,811.95,20.00 -shr,auto,2000,77,26726,9,748.97,748.58,20.03 -shr,inplace,2000,77,13487,9,740.83,738.18,19.97 -shr,kernel,2000,77,24081,9,830.57,830.51,20.00 -shr,auto,131072,13,414,3,48304.43,48296.61,20.00 -shr,inplace,131072,13,215,3,46701.23,46694.73,20.09 -shr,kernel,131072,13,263,3,76086.20,76068.17,20.02 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_new64_run2.csv b/tests/beman/big_int/perf/item1/x64_vshift_new64_run2.csv deleted file mode 100644 index 0949a697..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_new64_run2.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1603711,9,12.51,12.39,20.08 -shl,inplace,1,13,2380836,9,4.19,4.17,19.94 -shl,kernel,1,13,9585442,9,2.08,2.08,19.92 -shl,auto,4,13,1510541,9,13.38,13.27,20.25 -shl,inplace,4,13,1914885,9,5.24,5.23,20.06 -shl,kernel,4,13,5723554,9,3.44,3.42,19.84 -shl,auto,16,13,1170684,9,17.03,16.90,19.97 -shl,inplace,16,13,1082675,9,9.24,9.23,20.03 -shl,kernel,16,13,2636474,9,7.59,7.50,20.03 -shl,auto,256,13,163395,9,122.11,121.95,19.98 -shl,inplace,256,13,100681,9,99.30,99.20,20.00 -shl,kernel,256,13,213683,9,93.63,93.50,20.00 -shl,auto,2000,13,25888,9,772.82,772.55,20.02 -shl,inplace,2000,13,13951,9,716.89,716.74,20.01 -shl,kernel,2000,13,27812,9,719.66,719.13,20.03 -shl,auto,2000,77,25812,9,774.60,774.50,20.01 -shl,inplace,2000,77,13481,9,741.42,740.37,19.99 -shl,kernel,2000,77,23481,9,851.94,850.96,20.01 -shl,auto,131072,13,398,3,49722.15,49720.79,19.79 -shl,inplace,131072,13,215,3,46743.24,46690.56,20.15 -shl,kernel,131072,13,278,3,72200.14,72177.27,20.08 -shr,auto,1,13,2438409,9,8.19,8.19,19.98 -shr,inplace,1,13,2595721,9,3.89,3.83,20.21 -shr,kernel,1,13,11754048,9,1.70,1.70,20.01 -shr,auto,4,13,1246250,9,16.15,16.06,20.17 -shr,inplace,4,13,2027220,9,4.94,4.93,20.02 -shr,kernel,4,13,5796694,9,3.46,3.46,20.09 -shr,auto,16,13,996966,9,20.09,19.98,20.05 -shr,inplace,16,13,1127040,9,8.88,8.87,20.03 -shr,kernel,16,13,2375437,9,8.36,8.34,19.87 -shr,auto,256,13,159692,9,125.73,125.47,20.13 -shr,inplace,256,13,100918,9,99.09,98.99,20.00 -shr,kernel,256,13,182060,9,110.03,109.80,20.04 -shr,auto,2000,13,26622,9,751.85,749.96,20.02 -shr,inplace,2000,13,13893,9,716.48,716.37,19.92 -shr,kernel,2000,13,24618,9,812.25,812.23,20.00 -shr,auto,2000,77,25882,9,757.63,755.13,19.61 -shr,inplace,2000,77,13494,9,740.71,738.98,19.98 -shr,kernel,2000,77,24066,9,831.06,831.02,20.00 -shr,auto,131072,13,415,3,48284.48,48283.94,20.04 -shr,inplace,131072,13,215,3,46679.53,46661.05,20.07 -shr,kernel,131072,13,263,3,76237.49,76234.46,20.05 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_new64_run3.csv b/tests/beman/big_int/perf/item1/x64_vshift_new64_run3.csv deleted file mode 100644 index 1436be10..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_new64_run3.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1591457,9,12.56,12.45,20.01 -shl,inplace,1,13,2391228,9,4.19,4.17,20.01 -shl,kernel,1,13,9626487,9,2.08,2.07,20.00 -shl,auto,4,13,1507508,9,13.42,13.35,20.23 -shl,inplace,4,13,1909649,9,5.24,5.23,20.01 -shl,kernel,4,13,5894516,9,3.43,3.39,20.32 -shl,auto,16,13,1162920,9,17.11,17.05,19.90 -shl,inplace,16,13,1081102,9,9.23,9.21,19.97 -shl,kernel,16,13,2601463,9,7.57,7.52,19.71 -shl,auto,256,13,163803,9,121.81,121.68,19.96 -shl,inplace,256,13,100723,9,99.33,99.16,20.01 -shl,kernel,256,13,213341,9,93.50,93.40,19.95 -shl,auto,2000,13,25884,9,772.68,772.45,20.00 -shl,inplace,2000,13,13948,9,716.86,716.79,20.02 -shl,kernel,2000,13,27748,9,718.69,718.45,19.95 -shl,auto,2000,77,25811,9,774.62,774.30,20.01 -shl,inplace,2000,77,13492,9,741.66,741.33,20.01 -shl,kernel,2000,77,23455,9,851.90,850.86,19.98 -shl,auto,131072,13,402,3,49746.96,49744.05,20.00 -shl,inplace,131072,13,215,3,46688.97,46685.92,20.08 -shl,kernel,131072,13,277,3,72301.10,72272.19,20.07 -shr,auto,1,13,2441860,9,8.19,8.19,20.02 -shr,inplace,1,13,2567119,9,3.94,3.87,20.17 -shr,kernel,1,13,11740613,9,1.70,1.70,20.06 -shr,auto,4,13,1245524,9,16.06,15.93,19.97 -shr,inplace,4,13,2027072,9,4.93,4.93,20.01 -shr,kernel,4,13,5766468,9,3.47,3.47,20.00 -shr,auto,16,13,1004806,9,19.93,19.91,20.02 -shr,inplace,16,13,1124803,9,8.89,8.87,20.01 -shr,kernel,16,13,2406055,9,8.32,8.31,20.07 -shr,auto,256,13,160371,9,124.83,124.73,20.03 -shr,inplace,256,13,100859,9,99.08,99.01,19.99 -shr,kernel,256,13,181902,9,109.95,109.87,20.02 -shr,auto,2000,13,26680,9,748.99,748.72,20.04 -shr,inplace,2000,13,13953,9,716.56,716.50,20.00 -shr,kernel,2000,13,24628,9,812.11,812.09,20.02 -shr,auto,2000,77,26706,9,749.55,749.08,20.02 -shr,inplace,2000,77,13505,9,742.60,740.17,20.06 -shr,kernel,2000,77,24111,9,829.57,829.51,20.02 -shr,auto,131072,13,414,3,48306.20,48297.99,20.00 -shr,inplace,131072,13,214,3,46742.96,46739.73,20.01 -shr,kernel,131072,13,263,3,76854.29,76163.44,20.17 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v1_run1.csv b/tests/beman/big_int/perf/item1/x64_vshift_v1_run1.csv deleted file mode 100644 index 9e6b99a7..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_v1_run1.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1605344,9,12.50,12.35,20.07 -shl,inplace,1,13,2755069,9,3.62,3.61,19.97 -shl,kernel,1,13,9626547,9,2.08,2.08,20.00 -shl,auto,4,13,1503092,9,13.40,13.32,20.18 -shl,inplace,4,13,2201142,9,4.55,4.53,20.03 -shl,kernel,4,13,6049051,9,3.31,3.31,20.06 -shl,auto,16,13,1180401,9,16.98,16.91,20.04 -shl,inplace,16,13,1085924,9,9.08,9.03,19.70 -shl,kernel,16,13,2681463,9,7.46,7.45,20.02 -shl,auto,256,13,161885,9,122.37,122.15,19.85 -shl,inplace,256,13,97715,9,102.10,101.80,19.94 -shl,kernel,256,13,214169,9,93.34,93.21,20.00 -shl,auto,2000,13,25856,9,773.42,772.93,20.00 -shl,inplace,2000,13,13550,9,739.20,738.36,20.04 -shl,kernel,2000,13,27774,9,719.01,718.75,19.97 -shl,auto,2000,77,25812,9,775.05,774.65,20.01 -shl,inplace,2000,77,13544,9,740.33,737.00,20.08 -shl,kernel,2000,77,23418,9,853.38,850.65,19.98 -shl,auto,131072,13,402,3,49726.31,49724.18,19.99 -shl,inplace,131072,13,208,3,48259.05,48231.34,20.09 -shl,kernel,131072,13,277,3,72243.32,72237.42,20.01 -shr,auto,1,13,2441693,9,8.20,8.19,20.02 -shr,inplace,1,13,3050536,9,3.32,3.24,20.18 -shr,kernel,1,13,11755109,9,1.70,1.70,20.01 -shr,auto,4,13,1253881,9,16.03,15.98,20.10 -shr,inplace,4,13,2329746,9,4.33,4.29,20.16 -shr,kernel,4,13,5739315,9,3.47,3.46,19.94 -shr,auto,16,13,1004990,9,19.91,19.89,20.01 -shr,inplace,16,13,1153260,9,8.67,8.61,19.99 -shr,kernel,16,13,2301051,9,8.69,8.69,20.05 -shr,auto,256,13,160149,9,125.18,124.70,20.04 -shr,inplace,256,13,98373,9,101.65,101.56,20.00 -shr,kernel,256,13,181347,9,110.37,110.27,20.02 -shr,auto,2000,13,26681,9,749.65,748.54,20.00 -shr,inplace,2000,13,13542,9,736.69,735.76,19.97 -shr,kernel,2000,13,24621,9,812.36,812.28,20.01 -shr,auto,2000,77,26702,9,749.61,748.57,20.02 -shr,inplace,2000,77,13581,9,739.27,736.44,20.08 -shr,kernel,2000,77,24085,9,830.42,830.37,20.00 -shr,auto,131072,13,414,3,48328.01,48317.12,20.02 -shr,inplace,131072,13,208,3,48496.79,48300.52,20.15 -shr,kernel,131072,13,263,3,76186.38,76186.06,20.06 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v1_run2.csv b/tests/beman/big_int/perf/item1/x64_vshift_v1_run2.csv deleted file mode 100644 index 0aa91211..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_v1_run2.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1610617,9,12.58,12.47,20.22 -shl,inplace,1,13,2748786,9,3.63,3.62,19.97 -shl,kernel,1,13,9626387,9,2.08,2.08,20.00 -shl,auto,4,13,1491203,9,13.44,13.34,20.03 -shl,inplace,4,13,2181407,9,4.55,4.54,19.89 -shl,kernel,4,13,5782595,9,3.45,3.42,19.97 -shl,auto,16,13,1179538,9,17.00,16.94,20.05 -shl,inplace,16,13,1108267,9,9.09,9.00,20.16 -shl,kernel,16,13,2693217,9,7.46,7.44,20.09 -shl,auto,256,13,162743,9,121.94,121.85,19.85 -shl,inplace,256,13,98107,9,102.16,101.82,20.04 -shl,kernel,256,13,211861,9,94.45,94.24,20.01 -shl,auto,2000,13,25868,9,773.37,773.00,20.05 -shl,inplace,2000,13,13531,9,738.99,735.17,19.98 -shl,kernel,2000,13,27802,9,718.92,718.77,19.99 -shl,auto,2000,77,25819,9,774.68,774.29,20.00 -shl,inplace,2000,77,13522,9,737.35,736.17,19.96 -shl,kernel,2000,77,23468,9,851.43,849.91,19.98 -shl,auto,131072,13,403,3,49751.88,49748.33,20.05 -shl,inplace,131072,13,208,3,48260.24,48210.62,20.10 -shl,kernel,131072,13,278,3,72127.40,72126.72,20.05 -shr,auto,1,13,2435315,9,8.20,8.18,19.97 -shr,inplace,1,13,3036299,9,3.26,3.24,19.84 -shr,kernel,1,13,11755186,9,1.70,1.70,20.03 -shr,auto,4,13,1247624,9,16.04,16.00,20.03 -shr,inplace,4,13,2304275,9,4.33,4.28,19.99 -shr,kernel,4,13,5756450,9,3.46,3.45,19.94 -shr,auto,16,13,999565,9,20.03,20.00,20.03 -shr,inplace,16,13,1158772,9,8.66,8.64,20.08 -shr,kernel,16,13,2373929,9,8.37,8.35,19.88 -shr,auto,256,13,160262,9,124.82,124.31,20.01 -shr,inplace,256,13,98457,9,101.74,101.52,20.05 -shr,kernel,256,13,180236,9,110.65,110.50,19.95 -shr,auto,2000,13,26731,9,749.19,748.66,20.02 -shr,inplace,2000,13,13556,9,737.66,735.96,20.00 -shr,kernel,2000,13,24628,9,812.13,812.05,20.00 -shr,auto,2000,77,26560,9,753.55,752.99,20.02 -shr,inplace,2000,77,13545,9,737.60,735.90,19.99 -shr,kernel,2000,77,24094,9,829.41,829.36,19.99 -shr,auto,131072,13,414,3,48304.35,48301.36,20.00 -shr,inplace,131072,13,208,3,48481.13,48414.94,20.26 -shr,kernel,131072,13,263,3,76227.84,76226.26,20.05 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v1_run3.csv b/tests/beman/big_int/perf/item1/x64_vshift_v1_run3.csv deleted file mode 100644 index 7781b0a4..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_v1_run3.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1569142,9,12.56,12.43,19.72 -shl,inplace,1,13,2764436,9,3.63,3.62,20.10 -shl,kernel,1,13,9626530,9,2.08,2.08,20.01 -shl,auto,4,13,1500245,9,13.44,13.36,20.15 -shl,inplace,4,13,1991354,9,5.02,4.99,20.10 -shl,kernel,4,13,5772712,9,3.46,3.43,19.95 -shl,auto,16,13,1184111,9,17.02,16.94,20.17 -shl,inplace,16,13,1087725,9,9.11,9.05,19.86 -shl,kernel,16,13,2671512,9,7.46,7.44,19.93 -shl,auto,256,13,163281,9,122.25,122.14,19.96 -shl,inplace,256,13,97215,9,102.57,102.04,19.92 -shl,kernel,256,13,213983,9,93.44,93.12,19.98 -shl,auto,2000,13,25803,9,785.34,772.80,20.19 -shl,inplace,2000,13,13513,9,738.60,735.71,20.00 -shl,kernel,2000,13,27839,9,718.50,718.21,20.01 -shl,auto,2000,77,25802,9,775.00,774.66,20.00 -shl,inplace,2000,77,13539,9,739.01,736.04,20.06 -shl,kernel,2000,77,23337,9,855.19,852.65,19.95 -shl,auto,131072,13,402,3,49770.80,49770.25,20.02 -shl,inplace,131072,13,208,3,48403.35,48372.80,20.15 -shl,kernel,131072,13,277,3,72325.30,72318.99,20.03 -shr,auto,1,13,2439952,9,8.19,8.18,19.99 -shr,inplace,1,13,3066328,9,3.28,3.23,20.17 -shr,kernel,1,13,11693307,9,1.70,1.70,19.94 -shr,auto,4,13,1240725,9,16.11,16.06,20.00 -shr,inplace,4,13,2299100,9,4.33,4.30,19.90 -shr,kernel,4,13,5734050,9,3.47,3.46,19.96 -shr,auto,16,13,996368,9,20.03,20.02,19.98 -shr,inplace,16,13,1158340,9,8.66,8.63,20.08 -shr,kernel,16,13,2390653,9,8.36,8.35,20.02 -shr,auto,256,13,159822,9,125.37,124.93,20.03 -shr,inplace,256,13,98484,9,101.64,101.52,20.05 -shr,kernel,256,13,180794,9,110.51,110.38,19.97 -shr,auto,2000,13,26702,9,749.58,748.97,20.01 -shr,inplace,2000,13,13576,9,737.36,735.92,20.08 -shr,kernel,2000,13,24622,9,812.13,812.01,20.01 -shr,auto,2000,77,26678,9,750.01,749.67,20.01 -shr,inplace,2000,77,13528,9,739.33,737.01,20.00 -shr,kernel,2000,77,24093,9,829.28,829.23,19.98 -shr,auto,131072,13,413,3,48444.86,48319.30,20.00 -shr,inplace,131072,13,208,3,48223.56,48187.90,20.08 -shr,kernel,131072,13,263,3,76072.69,76069.30,20.01 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v2_run1.csv b/tests/beman/big_int/perf/item1/x64_vshift_v2_run1.csv deleted file mode 100644 index 23bda094..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_v2_run1.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1584790,9,12.58,12.45,19.97 -shl,inplace,1,13,2896333,9,3.44,3.43,19.95 -shl,kernel,1,13,9624319,9,2.08,2.08,20.04 -shl,auto,4,13,1503123,9,13.41,13.35,20.14 -shl,inplace,4,13,2272262,9,4.36,4.32,19.86 -shl,kernel,4,13,5838995,9,3.45,3.41,20.12 -shl,auto,16,13,1196896,9,16.73,16.71,20.04 -shl,inplace,16,13,1192344,9,8.40,8.36,20.05 -shl,kernel,16,13,2683444,9,7.46,7.44,20.03 -shl,auto,256,13,163646,9,122.04,121.84,19.97 -shl,inplace,256,13,101029,9,98.73,98.61,19.96 -shl,kernel,256,13,213543,9,93.95,93.83,20.06 -shl,auto,2000,13,25848,9,773.57,773.44,20.01 -shl,inplace,2000,13,14027,9,712.51,712.38,19.99 -shl,kernel,2000,13,27728,9,719.01,718.81,19.94 -shl,auto,2000,77,25827,9,774.54,774.41,20.02 -shl,inplace,2000,77,14034,9,712.58,712.32,20.00 -shl,kernel,2000,77,23536,9,852.91,849.91,20.07 -shl,auto,131072,13,401,3,49864.19,49859.68,20.00 -shl,inplace,131072,13,215,3,46915.22,46570.61,20.16 -shl,kernel,131072,13,277,3,72165.39,72161.54,19.99 -shr,auto,1,13,2395400,9,8.35,8.35,20.05 -shr,inplace,1,13,3327060,9,3.00,2.99,20.03 -shr,kernel,1,13,11755128,9,1.70,1.70,20.01 -shr,auto,4,13,1265315,9,15.84,15.80,20.06 -shr,inplace,4,13,2430668,9,4.10,4.08,19.99 -shr,kernel,4,13,5778908,9,3.47,3.46,20.06 -shr,auto,16,13,988854,9,20.25,20.20,20.02 -shr,inplace,16,13,1254654,9,8.01,7.99,20.15 -shr,kernel,16,13,2330092,9,8.58,8.53,19.98 -shr,auto,256,13,149617,9,133.63,133.57,20.00 -shr,inplace,256,13,101189,9,98.61,98.51,19.96 -shr,kernel,256,13,181348,9,110.39,110.28,20.02 -shr,auto,2000,13,25387,9,787.97,787.14,20.03 -shr,inplace,2000,13,14059,9,711.55,711.27,20.01 -shr,kernel,2000,13,24632,9,811.92,811.85,20.00 -shr,auto,2000,77,25307,9,790.02,789.80,20.00 -shr,inplace,2000,77,14000,9,712.12,711.92,19.96 -shr,kernel,2000,77,24079,9,830.58,830.52,20.04 -shr,auto,131072,13,398,3,50322.43,50308.85,20.03 -shr,inplace,131072,13,215,3,46561.42,46559.43,20.02 -shr,kernel,131072,13,263,3,76048.32,76047.04,20.00 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v2_run2.csv b/tests/beman/big_int/perf/item1/x64_vshift_v2_run2.csv deleted file mode 100644 index 301ab50a..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_v2_run2.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1595065,9,12.56,12.44,20.04 -shl,inplace,1,13,2901092,9,3.44,3.43,19.97 -shl,kernel,1,13,9625072,9,2.08,2.08,20.00 -shl,auto,4,13,1501801,9,13.39,13.36,20.13 -shl,inplace,4,13,2294814,9,4.32,4.30,19.83 -shl,kernel,4,13,5793487,9,3.45,3.43,19.98 -shl,auto,16,13,1195311,9,16.72,16.68,20.03 -shl,inplace,16,13,1183962,9,8.41,8.37,19.90 -shl,kernel,16,13,2567761,9,7.82,7.79,20.09 -shl,auto,256,13,163888,9,122.03,121.93,20.02 -shl,inplace,256,13,101261,9,98.67,98.58,19.99 -shl,kernel,256,13,214006,9,93.44,93.16,19.99 -shl,auto,2000,13,25854,9,773.70,773.50,20.01 -shl,inplace,2000,13,14035,9,712.61,712.23,20.00 -shl,kernel,2000,13,27827,9,717.96,717.84,19.98 -shl,auto,2000,77,25828,9,774.62,774.46,20.01 -shl,inplace,2000,77,14038,9,712.51,712.39,20.01 -shl,kernel,2000,77,23487,9,852.72,849.92,20.01 -shl,auto,131072,13,401,3,49875.00,49864.40,20.00 -shl,inplace,131072,13,215,3,46565.61,46562.81,20.02 -shl,kernel,131072,13,277,3,72309.63,72301.79,20.03 -shr,auto,1,13,2398460,9,8.35,8.34,20.05 -shr,inplace,1,13,3268428,9,3.02,3.01,19.81 -shr,kernel,1,13,11753617,9,1.70,1.70,20.02 -shr,auto,4,13,1270708,9,15.86,15.79,20.15 -shr,inplace,4,13,2431244,9,4.11,4.09,20.00 -shr,kernel,4,13,5788934,9,3.46,3.46,20.08 -shr,auto,16,13,990216,9,20.24,20.20,20.05 -shr,inplace,16,13,1258359,9,8.00,7.96,20.14 -shr,kernel,16,13,2383862,9,8.37,8.35,19.97 -shr,auto,256,13,150203,9,133.19,133.07,20.02 -shr,inplace,256,13,102059,9,98.22,98.03,20.09 -shr,kernel,256,13,181093,9,110.43,110.31,20.01 -shr,auto,2000,13,25373,9,787.82,787.21,20.00 -shr,inplace,2000,13,14052,9,711.86,711.48,20.01 -shr,kernel,2000,13,24633,9,811.93,811.87,20.00 -shr,auto,2000,77,25338,9,789.74,789.31,20.01 -shr,inplace,2000,77,14010,9,714.08,713.79,20.01 -shr,kernel,2000,77,24071,9,831.04,830.89,20.01 -shr,auto,131072,13,398,3,50332.30,50321.12,20.04 -shr,inplace,131072,13,215,3,46905.10,46543.47,20.16 -shr,kernel,131072,13,263,3,76120.43,76117.83,20.03 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v2_run3.csv b/tests/beman/big_int/perf/item1/x64_vshift_v2_run3.csv deleted file mode 100644 index 60fe317a..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_v2_run3.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1595931,9,12.53,12.41,19.99 -shl,inplace,1,13,2922042,9,3.42,3.41,20.01 -shl,kernel,1,13,9626512,9,2.08,2.07,19.99 -shl,auto,4,13,1511110,9,13.36,13.26,20.16 -shl,inplace,4,13,2300337,9,4.31,4.29,19.82 -shl,kernel,4,13,5798258,9,3.46,3.42,20.04 -shl,auto,16,13,1201102,9,16.70,16.63,20.05 -shl,inplace,16,13,1186461,9,8.44,8.35,20.06 -shl,kernel,16,13,2691620,9,7.46,7.45,20.08 -shl,auto,256,13,164209,9,121.85,121.70,20.01 -shl,inplace,256,13,101149,9,98.78,98.58,20.07 -shl,kernel,256,13,214113,9,93.44,93.30,20.03 -shl,auto,2000,13,25867,9,773.33,773.12,20.01 -shl,inplace,2000,13,14032,9,712.55,712.26,20.00 -shl,kernel,2000,13,27691,9,718.04,717.97,19.90 -shl,auto,2000,77,25829,9,774.28,774.13,20.02 -shl,inplace,2000,77,14035,9,712.36,712.09,20.00 -shl,kernel,2000,77,23404,9,852.20,848.88,19.94 -shl,auto,131072,13,402,3,49863.03,49860.41,20.05 -shl,inplace,131072,13,215,3,46560.96,46558.16,20.02 -shl,kernel,131072,13,277,3,72321.32,72303.60,20.05 -shr,auto,1,13,2394029,9,8.35,8.34,20.00 -shr,inplace,1,13,3281846,9,3.05,3.02,19.94 -shr,kernel,1,13,11755631,9,1.70,1.70,20.02 -shr,auto,4,13,1263017,9,15.85,15.81,20.03 -shr,inplace,4,13,2429467,9,4.12,4.10,20.01 -shr,kernel,4,13,5764147,9,3.47,3.47,20.01 -shr,auto,16,13,988679,9,20.24,20.19,20.02 -shr,inplace,16,13,1247349,9,8.00,7.93,20.00 -shr,kernel,16,13,2383745,9,8.39,8.37,20.02 -shr,auto,256,13,149779,9,133.62,133.30,20.01 -shr,inplace,256,13,101743,9,98.31,97.97,20.02 -shr,kernel,256,13,181241,9,110.38,110.23,20.01 -shr,auto,2000,13,25376,9,788.17,787.27,20.00 -shr,inplace,2000,13,14028,9,711.50,711.08,19.96 -shr,kernel,2000,13,24618,9,812.32,812.29,20.02 -shr,auto,2000,77,25293,9,790.38,789.57,20.00 -shr,inplace,2000,77,14038,9,712.05,711.91,20.00 -shr,kernel,2000,77,24093,9,830.10,830.08,20.01 -shr,auto,131072,13,398,3,50321.17,50306.54,20.03 -shr,inplace,131072,13,215,3,46567.50,46563.40,20.03 -shr,kernel,131072,13,263,3,76270.68,76269.11,20.08 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v3_run1.csv b/tests/beman/big_int/perf/item1/x64_vshift_v3_run1.csv deleted file mode 100644 index 96e0e398..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_v3_run1.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1613625,9,12.63,12.53,20.35 -shl,inplace,1,13,2920594,9,3.44,3.42,20.09 -shl,kernel,1,13,9626368,9,2.08,2.08,20.01 -shl,auto,4,13,1505955,9,13.37,13.33,20.14 -shl,inplace,4,13,2288866,9,4.39,4.36,20.12 -shl,kernel,4,13,5788796,9,3.45,3.42,19.97 -shl,auto,16,13,1191934,9,16.75,16.73,19.98 -shl,inplace,16,13,1190701,9,8.43,8.38,20.09 -shl,kernel,16,13,2683856,9,7.46,7.45,20.03 -shl,auto,256,13,163975,9,121.89,121.69,20.00 -shl,inplace,256,13,101228,9,98.69,98.55,19.97 -shl,kernel,256,13,212960,9,93.99,93.91,20.02 -shl,auto,2000,13,25859,9,773.69,773.33,20.01 -shl,inplace,2000,13,14035,9,712.77,712.51,20.02 -shl,kernel,2000,13,27817,9,719.08,718.77,20.02 -shl,auto,2000,77,25827,9,774.47,774.32,20.01 -shl,inplace,2000,77,14031,9,712.49,712.26,20.00 -shl,kernel,2000,77,23364,9,851.80,850.08,19.90 -shl,auto,131072,13,401,3,49854.99,49851.96,20.02 -shl,inplace,131072,13,215,3,46541.56,46538.81,20.01 -shl,kernel,131072,13,277,3,72281.85,72277.82,20.02 -shr,auto,1,13,2395228,9,8.35,8.34,19.99 -shr,inplace,1,13,3337811,9,3.03,3.00,20.18 -shr,kernel,1,13,11755641,9,1.70,1.70,20.01 -shr,auto,4,13,1242391,9,16.15,15.81,19.98 -shr,inplace,4,13,2445361,9,4.10,4.08,20.10 -shr,kernel,4,13,5780801,9,3.46,3.44,19.97 -shr,auto,16,13,988112,9,20.26,20.21,20.04 -shr,inplace,16,13,1241915,9,8.00,7.96,19.91 -shr,kernel,16,13,2301797,9,8.69,8.36,19.83 -shr,auto,256,13,150062,9,133.76,133.48,20.21 -shr,inplace,256,13,101856,9,98.25,98.16,20.03 -shr,kernel,256,13,181294,9,110.38,110.32,20.07 -shr,auto,2000,13,25381,9,788.39,788.01,20.02 -shr,inplace,2000,13,14049,9,711.67,711.33,20.00 -shr,kernel,2000,13,24523,9,811.92,811.86,19.91 -shr,auto,2000,77,25320,9,790.04,789.80,20.01 -shr,inplace,2000,77,14042,9,712.13,711.90,20.00 -shr,kernel,2000,77,23930,9,830.69,830.63,19.88 -shr,auto,131072,13,398,3,50309.94,50299.98,20.03 -shr,inplace,131072,13,215,3,46607.60,46557.56,20.04 -shr,kernel,131072,13,262,3,76160.78,76158.74,19.98 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v3_run2.csv b/tests/beman/big_int/perf/item1/x64_vshift_v3_run2.csv deleted file mode 100644 index 2048b21c..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_v3_run2.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1583657,9,12.64,12.52,20.03 -shl,inplace,1,13,2909128,9,3.44,3.42,20.00 -shl,kernel,1,13,9626486,9,2.08,2.08,20.00 -shl,auto,4,13,1504026,9,13.41,13.32,20.14 -shl,inplace,4,13,2315447,9,4.32,4.29,20.01 -shl,kernel,4,13,5782453,9,3.46,3.43,19.98 -shl,auto,16,13,1197078,9,16.73,16.70,20.02 -shl,inplace,16,13,1190455,9,8.41,8.37,20.03 -shl,kernel,16,13,2554356,9,7.82,7.76,19.96 -shl,auto,256,13,163785,9,121.89,121.79,19.97 -shl,inplace,256,13,101249,9,98.69,98.58,19.99 -shl,kernel,256,13,213118,9,93.40,93.28,19.94 -shl,auto,2000,13,25860,9,773.53,773.35,20.00 -shl,inplace,2000,13,14034,9,712.62,712.37,20.00 -shl,kernel,2000,13,27849,9,718.32,717.89,20.03 -shl,auto,2000,77,25823,9,774.48,774.25,20.00 -shl,inplace,2000,77,14029,9,712.97,712.70,20.01 -shl,kernel,2000,77,23526,9,852.30,850.10,20.09 -shl,auto,131072,13,401,3,49879.59,49875.44,20.00 -shl,inplace,131072,13,215,3,46564.65,46559.91,20.02 -shl,kernel,131072,13,277,3,72241.65,72232.62,20.01 -shr,auto,1,13,2396248,9,8.35,8.34,20.02 -shr,inplace,1,13,3321969,9,3.02,2.99,20.07 -shr,kernel,1,13,11673271,9,1.70,1.70,19.88 -shr,auto,4,13,1270762,9,15.83,15.76,20.11 -shr,inplace,4,13,2437400,9,4.11,4.09,20.02 -shr,kernel,4,13,5772484,9,3.47,3.46,20.05 -shr,auto,16,13,988392,9,20.25,20.20,20.02 -shr,inplace,16,13,1246424,9,8.01,7.97,19.96 -shr,kernel,16,13,2391499,9,8.36,8.35,20.01 -shr,auto,256,13,149802,9,133.65,133.44,20.02 -shr,inplace,256,13,101816,9,98.34,98.25,20.03 -shr,kernel,256,13,181104,9,110.36,110.29,20.00 -shr,auto,2000,13,25399,9,787.84,787.44,20.01 -shr,inplace,2000,13,14046,9,711.97,711.41,20.00 -shr,kernel,2000,13,24634,9,812.03,811.86,20.07 -shr,auto,2000,77,25400,9,787.07,786.18,20.02 -shr,inplace,2000,77,14015,9,712.20,711.97,19.97 -shr,kernel,2000,77,24081,9,830.61,830.54,20.01 -shr,auto,131072,13,398,3,50313.51,50299.43,20.03 -shr,inplace,131072,13,215,3,46537.32,46536.81,20.01 -shr,kernel,131072,13,263,3,76147.46,76132.98,20.05 diff --git a/tests/beman/big_int/perf/item1/x64_vshift_v3_run3.csv b/tests/beman/big_int/perf/item1/x64_vshift_v3_run3.csv deleted file mode 100644 index ecae7be0..00000000 --- a/tests/beman/big_int/perf/item1/x64_vshift_v3_run3.csv +++ /dev/null @@ -1,43 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1586159,9,12.59,12.53,20.02 -shl,inplace,1,13,2900663,9,3.45,3.43,20.01 -shl,kernel,1,13,9672489,9,2.08,2.08,20.10 -shl,auto,4,13,1493808,9,13.41,13.37,20.03 -shl,inplace,4,13,2316444,9,4.33,4.32,20.13 -shl,kernel,4,13,5801045,9,3.46,3.43,20.09 -shl,auto,16,13,1192872,9,16.78,16.70,20.04 -shl,inplace,16,13,1192365,9,8.42,8.36,20.07 -shl,kernel,16,13,2676274,9,7.47,7.45,19.98 -shl,auto,256,13,163719,9,121.72,121.47,19.93 -shl,inplace,256,13,101400,9,98.71,98.56,20.02 -shl,kernel,256,13,214157,9,93.42,93.32,20.01 -shl,auto,2000,13,25860,9,773.52,773.29,20.01 -shl,inplace,2000,13,14036,9,712.63,712.53,20.01 -shl,kernel,2000,13,27823,9,718.95,718.77,20.05 -shl,auto,2000,77,25839,9,774.28,774.13,20.01 -shl,inplace,2000,77,14037,9,712.48,712.24,20.01 -shl,kernel,2000,77,23467,9,851.48,851.31,19.98 -shl,auto,131072,13,401,3,49877.81,49855.59,20.02 -shl,inplace,131072,13,215,3,46554.86,46554.11,20.06 -shl,kernel,131072,13,277,3,72302.95,72297.44,20.03 -shr,auto,1,13,2395967,9,8.35,8.34,20.01 -shr,inplace,1,13,3343782,9,3.03,3.02,20.28 -shr,kernel,1,13,11756115,9,1.70,1.70,20.04 -shr,auto,4,13,1259608,9,15.84,15.79,19.95 -shr,inplace,4,13,2438857,9,4.13,4.11,20.12 -shr,kernel,4,13,5723886,9,3.47,3.47,19.87 -shr,auto,16,13,985887,9,20.25,20.21,19.97 -shr,inplace,16,13,1245236,9,8.00,7.97,19.96 -shr,kernel,16,13,2301402,9,8.70,8.69,20.02 -shr,auto,256,13,149668,9,133.70,133.49,20.01 -shr,inplace,256,13,101745,9,98.36,98.17,20.01 -shr,kernel,256,13,181291,9,110.43,110.31,20.02 -shr,auto,2000,13,25375,9,788.00,787.49,20.00 -shr,inplace,2000,13,14049,9,711.60,711.35,20.00 -shr,kernel,2000,13,24489,9,816.70,816.61,20.00 -shr,auto,2000,77,25329,9,790.35,789.75,20.04 -shr,inplace,2000,77,14047,9,712.09,711.83,20.01 -shr,kernel,2000,77,24081,9,830.63,830.52,20.00 -shr,auto,131072,13,398,3,50435.84,50321.49,20.07 -shr,inplace,131072,13,215,3,46580.59,46577.71,20.03 -shr,kernel,131072,13,263,3,76377.25,76333.08,20.12 diff --git a/tests/beman/big_int/perf/item1/x64r3_base64_seed1a.csv b/tests/beman/big_int/perf/item1/x64r3_base64_seed1a.csv deleted file mode 100644 index 0a7f3cec..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_base64_seed1a.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T17:51:51Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2460101,9,8.22,8.19,20.25 -add,inplace,1,1,2409595,9,4.15,4.14,20.03 -add,kernel,1,1,10587848,9,1.89,1.89,20.00 -add,floor,1,1,2021535,9,9.87,9.82,19.96 -add,gmp,1,1,8821834,9,2.27,2.27,20.00 -add,gmpz,1,1,4812977,9,4.16,4.16,20.02 -add,auto,2,2,1120287,9,17.89,17.86,20.06 -add,inplace,2,2,1661605,9,5.93,5.85,19.70 -add,kernel,2,2,8340684,9,2.37,2.34,19.74 -add,floor,2,2,1948119,9,10.21,10.20,19.91 -add,gmp,2,2,8809787,9,2.27,2.27,20.03 -add,gmpz,2,2,4771845,9,4.20,4.19,20.03 -add,auto,4,4,1106345,9,18.09,18.01,20.00 -add,inplace,4,4,1774849,9,5.66,5.63,20.07 -add,kernel,4,4,6305711,9,3.13,3.09,19.76 -add,floor,4,4,1822571,9,10.98,10.97,20.03 -add,gmp,4,4,7857753,9,2.54,2.54,20.03 -add,gmpz,4,4,4516815,9,4.43,4.43,20.01 -add,auto,8,8,1029454,9,19.40,19.35,19.98 -add,inplace,8,8,1351194,9,7.40,7.38,19.97 -add,kernel,8,8,4328385,9,4.63,4.61,20.07 -add,floor,8,8,1598288,9,12.51,12.51,20.01 -add,gmp,8,8,4342707,9,4.61,4.60,20.00 -add,gmpz,8,8,4219322,9,4.77,4.74,20.16 -add,auto,16,16,786235,9,25.15,25.12,19.80 -add,inplace,16,16,844213,9,11.78,11.75,19.94 -add,kernel,16,16,2606697,9,7.65,7.64,19.96 -add,floor,16,16,1280653,9,15.59,15.59,19.97 -add,gmp,16,16,3642455,9,5.50,5.48,20.03 -add,gmpz,16,16,3061613,9,6.56,6.55,20.09 -add,auto,64,64,311614,9,63.63,63.30,19.83 -add,inplace,64,64,256332,9,38.91,38.75,19.93 -add,kernel,64,64,603273,9,33.19,33.16,20.03 -add,floor,64,64,485165,9,41.29,40.77,20.03 -add,gmp,64,64,1290619,9,15.45,15.45,19.95 -add,gmpz,64,64,1212631,9,16.49,16.46,19.99 -add,auto,256,256,89257,9,223.80,223.72,19.98 -add,inplace,256,256,68436,9,146.07,146.02,20.01 -add,kernel,256,256,140178,9,142.56,142.54,19.99 -add,floor,256,256,126030,9,158.75,158.62,20.01 -add,gmp,256,256,255648,9,78.24,78.23,20.02 -add,gmpz,256,256,251606,9,79.49,79.40,19.99 -add,auto,1024,1024,23769,9,841.69,841.53,20.02 -add,inplace,1024,1024,17155,9,582.94,582.85,20.00 -add,kernel,1024,1024,34571,9,578.48,578.38,20.00 -add,floor,1024,1024,33640,9,594.33,594.08,20.00 -add,gmp,1024,1024,51141,9,391.11,391.09,20.02 -add,gmpz,1024,1024,51015,9,392.05,392.02,20.02 -add,auto,2000,2000,11614,9,1721.96,1721.70,20.03 -add,inplace,2000,2000,8791,9,1135.59,1135.54,19.97 -add,kernel,2000,2000,17539,9,1133.33,1133.23,19.88 -add,floor,2000,2000,17375,9,1150.94,1150.77,20.00 -add,gmp,2000,2000,42553,9,470.04,470.00,20.02 -add,gmpz,2000,2000,41457,9,482.36,480.84,19.99 -add,auto,1024,1,71249,9,280.68,280.32,20.00 -add,inplace,1024,1,17250,9,579.78,579.70,20.00 -add,kernel,1024,1,34618,9,577.70,577.69,20.07 -add,floor,1024,1,33697,9,593.58,593.51,20.01 -add,gmp,1024,1,85989,9,232.64,232.53,20.00 -add,gmpz,1024,1,85488,9,233.98,233.54,20.01 -sub,auto,1,1,2197405,9,9.13,9.08,20.11 -sub,inplace,1,1,2474257,9,4.04,4.02,20.02 -sub,kernel,1,1,13236342,9,1.51,1.51,20.00 -sub,floor,1,1,10589090,9,1.90,1.89,20.11 -sub,gmp,1,1,8779101,9,2.27,2.27,19.91 -sub,gmpz,1,1,4585179,9,4.34,4.34,19.93 -sub,auto,2,2,1040723,9,19.17,19.12,19.98 -sub,inplace,2,2,2134251,9,4.67,4.66,19.95 -sub,kernel,2,2,9544077,9,2.08,2.08,19.88 -sub,floor,2,2,1997601,9,10.01,10.01,20.00 -sub,gmp,2,2,8809804,9,2.27,2.27,19.97 -sub,gmpz,2,2,4563998,9,4.39,4.37,20.03 -sub,auto,4,4,1062911,9,18.93,18.81,20.08 -sub,inplace,4,4,1827269,9,5.48,5.47,20.08 -sub,kernel,4,4,6923261,9,2.88,2.84,19.93 -sub,floor,4,4,1853232,9,10.80,10.79,20.03 -sub,gmp,4,4,7903019,9,2.52,2.51,19.93 -sub,gmpz,4,4,4277822,9,4.64,4.63,19.87 -sub,auto,8,8,974306,9,20.55,20.46,20.04 -sub,inplace,8,8,1375938,9,7.26,7.25,19.98 -sub,kernel,8,8,4522663,9,4.43,4.40,20.04 -sub,floor,8,8,1612661,9,12.40,12.38,20.01 -sub,gmp,8,8,5427273,9,3.68,3.68,19.99 -sub,gmpz,8,8,3906320,9,5.07,5.02,19.77 -sub,auto,16,16,777836,9,25.91,25.65,20.14 -sub,inplace,16,16,934188,9,10.71,10.69,20.01 -sub,kernel,16,16,2492311,9,8.03,8.03,20.01 -sub,floor,16,16,1290962,9,15.46,15.44,19.96 -sub,gmp,16,16,3613794,9,5.50,5.50,19.88 -sub,gmpz,16,16,2942348,9,6.82,6.80,20.11 -sub,auto,64,64,299617,9,66.77,66.62,20.01 -sub,inplace,64,64,263155,9,37.27,36.93,19.66 -sub,kernel,64,64,605109,9,32.93,32.88,19.92 -sub,floor,64,64,474519,9,41.95,41.70,19.91 -sub,gmp,64,64,1292652,9,15.45,15.45,19.97 -sub,gmpz,64,64,1194286,9,16.75,16.71,20.00 -sub,auto,256,256,89091,9,224.53,224.14,20.01 -sub,inplace,256,256,68717,9,145.49,145.30,20.04 -sub,kernel,256,256,140008,9,142.84,142.78,20.00 -sub,floor,256,256,126350,9,158.44,158.17,20.02 -sub,gmp,256,256,255657,9,78.23,78.22,20.00 -sub,gmpz,256,256,249493,9,80.20,80.05,20.01 -sub,auto,1024,1024,23729,9,842.55,842.27,19.99 -sub,inplace,1024,1024,17173,9,582.34,582.29,20.00 -sub,kernel,1024,1024,34592,9,578.19,578.12,20.00 -sub,floor,1024,1024,33623,9,594.56,593.85,19.99 -sub,gmp,1024,1024,51301,9,389.87,389.85,20.05 -sub,gmpz,1024,1024,50919,9,392.77,392.73,20.00 -sub,auto,2000,2000,11476,9,1742.51,1742.19,20.01 -sub,inplace,2000,2000,8818,9,1134.14,1133.86,20.02 -sub,kernel,2000,2000,17647,9,1133.38,1133.37,20.01 -sub,floor,2000,2000,17380,9,1150.50,1150.13,20.00 -sub,gmp,2000,2000,43725,9,457.41,457.41,20.00 -sub,gmpz,2000,2000,41567,9,481.11,479.52,19.99 -sub,auto,1024,1,70388,9,283.98,283.37,19.99 -sub,inplace,1024,1,17210,9,581.05,580.91,20.00 -sub,kernel,1024,1,34675,9,576.78,576.76,20.00 -sub,floor,1024,1,33721,9,593.31,593.08,20.01 -sub,gmp,1024,1,85558,9,233.82,233.69,20.01 -sub,gmpz,1024,1,85455,9,234.04,233.74,20.00 -shl,auto,1,13,1202983,9,16.92,16.71,20.35 -shl,inplace,1,13,2402133,9,4.13,4.10,19.82 -shl,kernel,1,13,9626189,9,2.08,2.06,19.95 -shl,kernelip,1,13,5746809,9,1.76,1.72,20.21 -shl,floor,1,13,2077422,9,9.82,9.82,20.41 -shl,gmp,1,13,9488127,9,1.93,1.92,18.27 -shl,gmpz,1,13,5771536,9,3.47,3.47,20.01 -shl,auto,4,13,1070341,9,18.71,18.49,19.98 -shl,inplace,4,13,1901316,9,5.26,5.24,20.02 -shl,kernel,4,13,5811299,9,3.47,3.44,20.16 -shl,kernelip,4,13,3349191,9,2.99,2.97,20.04 -shl,floor,4,13,1726034,9,11.24,11.21,19.41 -shl,gmp,4,13,7991632,9,2.31,2.31,18.48 -shl,gmpz,4,13,4946569,9,4.04,4.04,20.00 -shl,auto,16,13,815259,9,24.55,24.30,19.97 -shl,inplace,16,13,1065187,9,9.36,9.34,19.95 -shl,kernel,16,13,2615923,9,7.65,7.62,20.00 -shl,kernelip,16,13,1372585,9,7.27,7.21,19.99 -shl,floor,16,13,1260485,9,15.43,15.37,19.44 -shl,gmp,16,13,4895407,9,4.05,4.05,19.96 -shl,gmpz,16,13,3062940,9,6.43,6.41,19.72 -shl,auto,256,13,147008,9,136.11,135.87,20.02 -shl,inplace,256,13,106971,9,93.04,92.79,19.90 -shl,kernel,256,13,210532,9,95.16,94.83,20.03 -shl,kernelip,256,13,102274,9,97.77,97.70,20.01 -shl,floor,256,13,174444,9,116.65,116.42,20.35 -shl,gmp,256,13,423370,9,47.75,47.58,20.21 -shl,gmpz,256,13,394384,9,50.55,50.32,19.96 -shl,auto,2000,13,21812,9,917.46,915.72,20.01 -shl,inplace,2000,13,15231,9,656.91,656.28,20.02 -shl,kernel,2000,13,27836,9,718.43,718.24,20.00 -shl,kernelip,2000,13,13980,9,715.34,715.31,20.00 -shl,floor,2000,13,27244,9,737.70,737.51,20.10 -shl,gmp,2000,13,59645,9,335.48,335.38,20.02 -shl,gmpz,2000,13,59069,9,339.10,338.58,20.04 -shl,auto,2000,77,18773,9,1066.03,1064.68,20.02 -shl,inplace,2000,77,13079,9,764.63,764.15,20.06 -shl,kernel,2000,77,23480,9,850.38,848.80,19.96 -shl,kernelip,2000,77,12158,9,822.56,822.24,20.01 -shl,floor,2000,77,22968,9,871.94,870.96,20.03 -shl,gmp,2000,77,58714,9,341.49,339.91,20.04 -shl,gmpz,2000,77,57932,9,345.16,344.45,19.99 -shr,auto,1,13,1954037,9,10.29,10.18,20.09 -shr,inplace,1,13,2739414,9,3.63,3.60,19.94 -shr,kernel,1,13,11751893,9,1.70,1.70,20.01 -shr,floor,1,13,8809961,9,2.27,2.27,20.01 -shr,gmp,1,13,10417284,9,1.92,1.92,20.05 -shr,gmpz,1,13,6109564,9,3.27,3.27,20.01 -shr,auto,4,13,952412,9,20.98,20.86,19.98 -shr,inplace,4,13,2103064,9,4.79,4.74,20.13 -shr,kernel,4,13,5775015,9,3.47,3.46,20.06 -shr,floor,4,13,1673340,9,11.97,11.94,20.03 -shr,gmp,4,13,8656928,9,2.33,2.31,20.20 -shr,gmpz,4,13,5034992,9,3.96,3.94,19.93 -shr,auto,16,13,775228,9,25.79,25.70,20.01 -shr,inplace,16,13,1114266,9,8.98,8.94,20.01 -shr,kernel,16,13,2388443,9,8.20,8.12,19.58 -shr,floor,16,13,1169430,9,17.15,17.10,20.05 -shr,gmp,16,13,4253359,9,4.72,4.70,20.06 -shr,gmpz,16,13,2711729,9,7.27,7.26,19.90 -shr,auto,256,13,143010,9,139.70,139.53,19.98 -shr,inplace,256,13,106693,9,93.79,93.63,20.02 -shr,kernel,256,13,181584,9,110.29,110.20,20.04 -shr,floor,256,13,151975,9,131.56,130.99,19.97 -shr,gmp,256,13,403968,9,49.48,49.40,19.99 -shr,gmpz,256,13,391861,9,51.05,50.82,20.00 -shr,auto,2000,13,21039,9,949.78,948.54,19.99 -shr,inplace,2000,13,15211,9,657.43,656.61,20.00 -shr,kernel,2000,13,24637,9,811.80,811.78,20.00 -shr,floor,2000,13,24038,9,832.66,832.22,20.06 -shr,gmp,2000,13,59216,9,336.49,335.87,19.96 -shr,gmpz,2000,13,58942,9,339.85,338.80,20.03 -shr,auto,2000,77,18330,9,1083.21,1082.18,19.86 -shr,inplace,2000,77,13072,9,765.29,764.60,20.01 -shr,kernel,2000,77,24152,9,828.18,828.10,20.01 -shr,floor,2000,77,23513,9,850.48,850.24,20.00 -shr,gmp,2000,77,59535,9,336.49,335.92,20.03 -shr,gmpz,2000,77,58853,9,340.81,339.81,20.10 -mul,auto,1,1,990501,9,19.44,19.40,19.26 -mul,gmp,1,1,5870967,9,3.39,3.36,19.86 -mul,gmpz,1,1,4937274,9,4.04,4.04,19.95 -mul,auto,2,2,706674,9,28.38,28.06,20.07 -mul,kernel,2,2,2805749,9,7.60,7.57,21.31 -mul,floor,2,2,1329662,9,15.10,15.00,20.12 -mul,gmp,2,2,5243724,9,3.84,3.81,20.11 -mul,gmpz,2,2,3247928,9,6.13,6.10,19.94 -mul,auto,3,3,675788,9,29.62,29.47,20.02 -mul,kernel,3,3,2356104,9,9.02,9.00,21.27 -mul,floor,3,3,1210835,9,16.62,16.53,20.14 -mul,gmp,3,3,2536380,9,7.98,7.81,20.14 -mul,gmpz,3,3,1989218,9,10.03,10.01,19.96 -mul,auto,4,4,625401,9,31.90,31.76,19.96 -mul,kernel,4,4,1892713,9,11.11,11.09,21.03 -mul,floor,4,4,1087967,9,18.57,18.41,20.20 -mul,gmp,4,4,2058088,9,9.71,9.68,20.00 -mul,gmpz,4,4,1631186,9,12.27,12.21,19.99 -mul,auto,6,6,474442,9,42.00,41.71,19.92 -mul,kernel,6,6,1193195,9,17.49,17.48,20.90 -mul,floor,6,6,807435,9,24.69,24.58,19.93 -mul,gmp,6,6,1250040,9,15.96,15.95,19.97 -mul,gmpz,6,6,1099149,9,18.21,18.18,20.01 -mul,auto,8,8,422159,9,47.38,47.26,20.02 -mul,kernel,8,8,779281,9,25.59,25.45,19.99 -mul,floor,8,8,607785,9,32.63,32.54,19.84 -mul,gmp,8,8,729707,9,27.17,26.98,19.82 -mul,gmpz,8,8,678124,9,29.36,29.14,19.95 -mul,auto,12,12,283710,9,70.53,70.46,20.02 -mul,kernel,12,12,421844,9,47.97,47.91,20.23 -mul,floor,12,12,364608,9,55.03,54.96,20.07 -mul,gmp,12,12,405080,9,49.27,49.04,19.95 -mul,gmpz,12,12,387763,9,51.61,51.51,20.02 -mul,auto,16,16,192763,9,103.83,103.69,20.01 -mul,kernel,16,16,250134,9,80.63,80.57,20.16 -mul,floor,16,16,229373,9,87.39,87.28,20.05 -mul,gmp,16,16,243959,9,82.04,81.88,20.02 -mul,gmpz,16,16,237223,9,84.34,84.17,20.00 -mul,auto,32,32,94558,9,211.51,210.92,19.99 -mul,kernel,32,32,104215,9,188.09,187.90,19.61 -mul,floor,32,32,98990,9,202.15,201.61,20.03 -mul,gmp,32,32,73337,9,272.71,272.62,20.02 -mul,gmpz,32,32,72465,9,275.85,275.35,19.98 -mul,auto,64,64,37575,9,531.60,530.58,19.99 -mul,kernel,64,64,41396,9,481.01,480.55,19.92 -mul,floor,64,64,40795,9,490.81,490.16,20.03 -mul,gmp,64,64,22730,9,879.97,879.78,20.01 -mul,gmpz,64,64,21959,9,909.46,907.82,19.98 -mul,auto,128,128,11519,9,1737.01,1735.08,20.01 -mul,kernel,128,128,11576,9,1722.58,1720.48,19.95 -mul,floor,128,128,11647,9,1717.26,1713.69,20.00 -mul,gmp,128,128,7246,9,2760.23,2759.55,20.01 -mul,gmpz,128,128,7250,9,2757.95,2756.55,19.99 -mul,auto,256,256,3205,9,6244.70,6237.72,20.01 -mul,kernel,256,256,3214,9,6252.70,6169.31,20.05 -mul,floor,256,256,3177,9,6279.19,6232.55,19.97 -mul,gmp,256,256,2522,9,7923.70,7922.12,19.99 -mul,gmpz,256,256,2519,9,7935.03,7897.71,19.98 -mul,auto,512,512,1041,9,19226.39,19187.81,20.04 -mul,kernel,512,512,1047,9,19109.63,19097.02,20.03 -mul,floor,512,512,1045,9,19161.84,19124.87,20.02 -mul,gmp,512,512,940,9,21231.74,21090.78,19.94 -mul,gmpz,512,512,946,9,21096.27,21056.00,19.97 -mul,auto,1000,1000,335,9,59878.43,59824.04,20.06 -mul,kernel,1000,1000,337,9,59508.14,59462.10,20.07 -mul,floor,1000,1000,335,9,59629.41,59587.41,19.98 -mul,gmp,1000,1000,366,9,54541.17,54082.51,19.96 -mul,gmpz,1000,1000,374,9,53633.90,53490.49,20.05 -mul,auto,2000,2000,113,9,177065.12,176955.01,20.04 -mul,kernel,2000,2000,114,9,176273.05,176194.25,20.10 -mul,floor,2000,2000,114,9,176055.41,175914.75,20.07 -mul,gmp,2000,2000,136,9,145574.85,144662.31,19.80 -mul,gmpz,2000,2000,139,9,144579.08,144507.35,20.09 -mul,auto,2000,100,1115,9,17945.04,17938.23,20.01 -mul,kernel,2000,100,1096,9,17804.29,17673.96,19.56 -mul,floor,2000,100,1119,9,17810.83,17677.79,19.92 -mul,gmp,2000,100,551,9,36362.85,36316.31,20.04 -mul,gmpz,2000,100,551,9,36311.42,36253.84,20.02 -sqr,auto,4,4,601003,9,33.24,33.17,20.00 -sqr,kernel,4,4,2184937,9,9.07,9.04,19.83 -sqr,floor,4,4,1208125,9,16.90,16.89,20.43 -sqr,gmp,4,4,3424692,9,5.79,5.76,19.86 -sqr,gmpz,4,4,2267802,9,8.83,8.76,20.09 -sqr,auto,16,16,249427,9,80.25,80.09,20.02 -sqr,kernel,16,16,342088,9,58.51,58.48,20.03 -sqr,floor,16,16,316720,9,62.76,62.73,19.90 -sqr,gmp,16,16,393783,9,50.76,50.50,19.99 -sqr,gmpz,16,16,377735,9,52.91,52.43,19.96 -sqr,auto,64,64,66568,9,301.32,300.27,20.05 -sqr,kernel,64,64,73504,9,272.02,271.82,20.00 -sqr,floor,64,64,72089,9,282.37,282.08,20.38 -sqr,gmp,64,64,35668,9,560.49,560.37,20.00 -sqr,gmpz,64,64,35623,9,561.38,561.16,20.01 -sqr,auto,512,512,1880,9,10626.25,10619.57,19.98 -sqr,kernel,512,512,1899,9,10536.88,10532.74,20.01 -sqr,floor,512,512,1896,9,10551.45,10543.75,20.01 -sqr,gmp,512,512,1297,9,15337.80,15170.00,19.87 -sqr,gmpz,512,512,1324,9,15108.28,15102.17,20.00 -sqr,auto,2000,2000,199,9,100490.97,100304.38,19.99 -sqr,kernel,2000,2000,201,9,99492.16,99360.77,20.00 -sqr,floor,2000,2000,201,9,99351.19,99317.83,19.98 -sqr,gmp,2000,2000,196,9,100759.27,100570.11,19.80 -sqr,gmpz,2000,2000,199,9,100640.55,100594.22,20.03 -divrem,auto,2,1,468837,9,42.68,42.53,20.01 -divrem,kernel,2,1,3651768,9,5.50,5.47,20.12 -divrem,floor,2,1,1569639,9,12.78,12.75,20.06 -divrem,gmp,2,1,2304802,9,8.68,8.67,20.02 -divrem,gmpz,2,1,1496166,9,13.36,13.30,19.98 -divrem,auto,8,4,185482,9,107.69,107.38,19.98 -divrem,kernel,8,4,472664,9,42.43,42.07,20.06 -divrem,floor,8,4,361313,9,54.71,54.52,19.77 -divrem,gmp,8,4,498233,9,39.95,39.67,19.91 -divrem,gmpz,8,4,480642,9,41.53,41.26,19.97 -divrem,auto,32,16,53716,9,372.35,371.64,20.01 -divrem,kernel,32,16,69088,9,289.34,288.92,20.00 -divrem,floor,32,16,65942,9,303.58,302.70,20.01 -divrem,gmp,32,16,103675,9,192.72,192.28,19.98 -divrem,gmpz,32,16,102663,9,195.21,194.38,20.04 -divrem,auto,128,64,5974,9,3385.25,3358.28,20.22 -divrem,kernel,128,64,6186,9,3235.59,3231.28,20.03 -divrem,floor,128,64,5958,9,3361.12,3342.95,20.01 -divrem,gmp,128,64,11623,9,1719.39,1718.62,19.98 -divrem,gmpz,128,64,11608,9,1722.88,1722.30,20.00 -divrem,auto,512,256,672,9,29781.01,29776.47,20.02 -divrem,kernel,512,256,672,9,29623.25,29607.88,19.91 -divrem,floor,512,256,678,9,29520.14,29514.41,20.01 -divrem,gmp,512,256,1227,9,16284.97,16280.53,19.98 -divrem,gmpz,512,256,1227,9,16311.46,16310.75,20.02 -divrem,auto,2000,1000,109,9,184999.72,184936.98,20.17 -divrem,kernel,2000,1000,109,9,183755.50,183694.95,20.04 -divrem,floor,2000,1000,109,9,183741.23,183695.15,20.03 -divrem,gmp,2000,1000,145,9,137761.54,137722.26,19.98 -divrem,gmpz,2000,1000,146,9,137830.84,137780.84,20.13 -divrem,auto,4000,2000,42,9,478977.88,478881.19,20.12 -divrem,kernel,4000,2000,42,9,477096.81,476672.33,20.04 -divrem,floor,4000,2000,42,9,476611.29,476444.55,20.04 -divrem,gmp,4000,2000,59,9,340295.25,339231.02,20.08 -divrem,gmpz,4000,2000,59,9,339517.83,338661.95,20.03 -divrem,auto,2000,100,137,9,146715.70,146446.01,20.10 -divrem,kernel,2000,100,139,9,144471.48,144356.91,20.08 -divrem,floor,2000,100,135,9,148004.76,147374.54,20.00 -divrem,gmp,2000,100,276,9,72568.99,72542.32,20.04 -divrem,gmpz,2000,100,275,9,72948.52,72870.40,20.10 -divrem,auto,65536,1,103,9,194306.22,188065.51,19.89 -divrem,kernel,65536,1,120,9,167188.84,167088.84,20.06 -divrem,floor,65536,1,114,9,174742.37,174633.34,19.92 -divrem,gmp,65536,1,136,9,148095.46,148090.51,20.14 -divrem,gmpz,65536,1,136,9,148114.25,148107.36,20.15 -tochars,auto,1,10,1355384,9,14.75,14.74,20.03 -tochars,kernel,1,10,321427,9,62.10,62.01,19.97 -tochars,gmp,1,10,966714,9,20.66,20.48,19.97 -tochars,gmpz,1,10,593817,9,33.80,33.66,20.07 -tochars,auto,4,10,156285,9,127.59,127.15,19.96 -tochars,kernel,4,10,109751,9,181.24,178.74,19.86 -tochars,gmp,4,10,292207,9,68.43,68.38,19.99 -tochars,gmpz,4,10,209613,9,95.48,95.29,20.02 -tochars,auto,16,10,17125,9,1172.01,1168.17,20.06 -tochars,kernel,16,10,19144,9,1045.16,1037.03,20.05 -tochars,gmp,16,10,39561,9,505.38,505.21,20.00 -tochars,gmpz,16,10,33877,9,590.66,588.55,20.00 -tochars,auto,64,10,3547,9,5622.82,5614.00,19.95 -tochars,kernel,64,10,3813,9,5245.85,5235.32,20.00 -tochars,gmp,64,10,7499,9,2669.13,2665.03,20.02 -tochars,gmpz,64,10,6751,9,2962.23,2959.32,20.00 -tochars,auto,256,10,555,9,36037.45,36030.16,20.00 -tochars,kernel,256,10,579,9,34571.94,34558.92,20.02 -tochars,gmp,256,10,1076,9,18578.48,18561.61,20.03 -tochars,gmpz,256,10,1016,9,19682.64,19671.74,20.00 -tochars,auto,2000,10,33,9,606607.24,606463.03,20.05 -tochars,kernel,2000,10,35,9,584206.80,583924.63,20.46 -tochars,gmp,2000,10,50,9,401055.76,400707.24,20.06 -tochars,gmpz,2000,10,49,9,410112.08,409753.63,20.10 -tochars,auto,16,16,169910,9,117.72,117.55,20.00 -tochars,gmp,16,16,201793,9,99.12,99.00,20.09 -tochars,gmpz,16,16,126880,9,157.67,157.60,20.04 -tochars,auto,2000,16,1469,9,13622.05,13621.39,20.02 -tochars,gmp,2000,16,1801,9,11111.34,11110.04,20.01 -tochars,gmpz,2000,16,1116,9,17933.10,17929.06,20.01 -fromchars,auto,4,10,106245,9,189.10,188.07,20.14 -fromchars,kernel,4,10,533690,9,37.55,37.44,20.03 -fromchars,gmp,4,10,641592,9,31.29,31.19,20.08 -fromchars,gmpz,4,10,299003,9,67.24,66.81,20.10 -fromchars,auto,16,10,48343,9,421.81,418.50,20.37 -fromchars,kernel,16,10,91475,9,218.18,215.64,20.08 -fromchars,gmp,16,10,159396,9,124.77,124.25,19.89 -fromchars,gmpz,16,10,77491,9,259.33,258.17,20.11 -fromchars,auto,64,10,7088,9,2780.36,2636.71,19.76 -fromchars,kernel,64,10,10182,9,2191.76,2084.91,21.01 -fromchars,gmp,64,10,22330,9,894.67,893.50,19.99 -fromchars,gmpz,64,10,14644,9,1369.22,1365.52,20.08 -fromchars,auto,256,10,673,9,29151.19,28738.68,19.58 -fromchars,kernel,256,10,786,9,25644.55,25364.22,20.25 -fromchars,gmp,256,10,2495,9,8028.25,8018.71,20.03 -fromchars,gmpz,256,10,2010,9,9941.79,9905.97,20.00 -fromchars,auto,2000,10,47,9,429789.98,429653.60,20.20 -fromchars,kernel,2000,10,49,9,408531.73,408436.82,20.02 -fromchars,gmp,2000,10,108,9,184397.46,183113.28,19.92 -fromchars,gmpz,2000,10,101,9,198050.92,197815.81,20.02 diff --git a/tests/beman/big_int/perf/item1/x64r3_base64_seed1b.csv b/tests/beman/big_int/perf/item1/x64r3_base64_seed1b.csv deleted file mode 100644 index ae7aa1ac..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_base64_seed1b.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T17:56:38Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2386763,9,8.23,8.16,19.68 -add,inplace,1,1,2414805,9,4.15,4.12,20.04 -add,kernel,1,1,10589068,9,1.89,1.89,20.04 -add,floor,1,1,2018017,9,9.90,9.83,19.97 -add,gmp,1,1,8824060,9,2.27,2.27,20.00 -add,gmpz,1,1,4813065,9,4.16,4.16,20.01 -add,auto,2,2,1121804,9,17.83,17.80,20.02 -add,inplace,2,2,1665551,9,5.93,5.89,19.76 -add,kernel,2,2,8463813,9,2.37,2.34,20.13 -add,floor,2,2,1958202,9,10.25,10.20,20.07 -add,gmp,2,2,8824054,9,2.27,2.27,20.00 -add,gmpz,2,2,4813097,9,4.16,4.16,20.00 -add,auto,4,4,1100845,9,18.08,18.00,19.92 -add,inplace,4,4,1767269,9,5.64,5.62,19.95 -add,kernel,4,4,6477194,9,3.07,3.02,19.96 -add,floor,4,4,1810943,9,10.99,10.97,19.93 -add,gmp,4,4,7956522,9,2.51,2.50,19.94 -add,gmpz,4,4,4552375,9,4.39,4.37,19.98 -add,auto,8,8,1044237,9,19.18,19.10,20.02 -add,inplace,8,8,1354714,9,7.38,7.35,19.99 -add,kernel,8,8,4170485,9,4.56,4.54,19.11 -add,floor,8,8,1596905,9,12.51,12.47,20.01 -add,gmp,8,8,5423634,9,3.69,3.69,20.00 -add,gmpz,8,8,4249638,9,4.69,4.68,19.94 -add,auto,16,16,785905,9,25.67,25.41,20.14 -add,inplace,16,16,852217,9,11.79,11.72,20.11 -add,kernel,16,16,2642029,9,7.56,7.56,19.97 -add,floor,16,16,1283952,9,15.59,15.56,20.02 -add,gmp,16,16,3540165,9,5.64,5.63,20.00 -add,gmpz,16,16,2564242,9,7.78,7.76,19.95 -add,auto,64,64,313974,9,63.75,63.29,20.00 -add,inplace,64,64,257349,9,38.83,38.76,20.00 -add,kernel,64,64,586045,9,34.16,34.07,20.04 -add,floor,64,64,484132,9,41.11,40.37,19.89 -add,gmp,64,64,1294648,9,15.45,15.45,20.00 -add,gmpz,64,64,1212724,9,16.49,16.46,20.00 -add,auto,256,256,89296,9,223.95,223.90,20.00 -add,inplace,256,256,68204,9,146.63,146.52,20.00 -add,kernel,256,256,140299,9,142.56,142.52,20.00 -add,floor,256,256,125919,9,158.87,158.80,20.01 -add,gmp,256,256,255643,9,78.23,78.23,20.00 -add,gmpz,256,256,251602,9,79.50,79.39,20.01 -add,auto,1024,1024,23740,9,842.50,842.29,20.01 -add,inplace,1024,1024,17143,9,583.33,583.26,20.00 -add,kernel,1024,1024,34529,9,579.26,579.16,20.00 -add,floor,1024,1024,33107,9,594.44,594.22,19.69 -add,gmp,1024,1024,51229,9,390.41,390.40,20.00 -add,gmpz,1024,1024,51106,9,391.36,391.34,20.00 -add,auto,2000,2000,11607,9,1723.24,1722.94,20.00 -add,inplace,2000,2000,8806,9,1135.71,1135.65,20.01 -add,kernel,2000,2000,17653,9,1132.96,1132.90,20.00 -add,floor,2000,2000,17378,9,1150.78,1150.61,20.00 -add,gmp,2000,2000,41667,9,478.63,478.59,19.94 -add,gmpz,2000,2000,40900,9,489.04,487.66,20.03 -add,auto,1024,1,71154,9,281.49,281.12,20.03 -add,inplace,1024,1,17216,9,580.45,580.43,19.99 -add,kernel,1024,1,34621,9,577.69,577.68,20.00 -add,floor,1024,1,33690,9,593.71,593.67,20.01 -add,gmp,1024,1,85770,9,233.20,232.27,19.99 -add,gmpz,1024,1,85498,9,233.99,233.58,20.01 -sub,auto,1,1,2214586,9,9.03,8.96,20.00 -sub,inplace,1,1,2503103,9,3.98,3.97,19.97 -sub,kernel,1,1,13236401,9,1.51,1.51,20.01 -sub,floor,1,1,10484933,9,1.90,1.89,19.90 -sub,gmp,1,1,8822116,9,2.27,2.27,20.00 -sub,gmpz,1,1,4585444,9,4.34,4.34,19.98 -sub,auto,2,2,1042877,9,19.08,18.99,19.89 -sub,inplace,2,2,2145551,9,4.64,4.62,19.93 -sub,kernel,2,2,9503830,9,2.09,2.08,19.88 -sub,floor,2,2,2007897,9,10.01,9.99,20.11 -sub,gmp,2,2,8824151,9,2.27,2.27,20.00 -sub,gmpz,2,2,4603797,9,4.35,4.34,20.06 -sub,auto,4,4,1040400,9,19.12,19.06,19.94 -sub,inplace,4,4,1821190,9,5.48,5.45,19.95 -sub,kernel,4,4,6862841,9,2.90,2.84,19.88 -sub,floor,4,4,1863427,9,10.78,10.74,20.08 -sub,gmp,4,4,8042636,9,2.49,2.49,20.01 -sub,gmpz,4,4,4299117,9,4.60,4.59,19.79 -sub,auto,8,8,964012,9,20.65,20.48,19.93 -sub,inplace,8,8,1377096,9,7.24,7.21,19.92 -sub,kernel,8,8,4540408,9,4.37,4.36,19.90 -sub,floor,8,8,1614127,9,12.43,12.40,20.06 -sub,gmp,8,8,5395454,9,3.68,3.68,19.88 -sub,gmpz,8,8,4025572,9,5.00,4.98,20.16 -sub,auto,16,16,779609,9,25.65,25.51,20.02 -sub,inplace,16,16,937961,9,10.63,10.61,19.95 -sub,kernel,16,16,2492457,9,8.03,8.02,20.01 -sub,floor,16,16,1298379,9,15.42,15.39,20.02 -sub,gmp,16,16,3147508,9,6.35,6.35,20.00 -sub,gmpz,16,16,2937799,9,6.79,6.63,19.93 -sub,auto,64,64,304811,9,65.62,65.53,20.01 -sub,inplace,64,64,266691,9,37.48,37.13,19.98 -sub,kernel,64,64,606959,9,32.90,32.70,19.96 -sub,floor,64,64,470535,9,42.48,42.44,20.02 -sub,gmp,64,64,1294689,9,15.45,15.45,20.04 -sub,gmpz,64,64,1192951,9,16.74,16.71,20.01 -sub,auto,256,256,89505,9,223.59,223.45,20.01 -sub,inplace,256,256,68780,9,145.39,145.34,20.00 -sub,kernel,256,256,140013,9,142.83,142.81,20.01 -sub,floor,256,256,126177,9,158.40,158.29,19.99 -sub,gmp,256,256,255664,9,78.23,78.22,20.00 -sub,gmpz,256,256,250511,9,79.86,79.82,20.00 -sub,auto,1024,1024,23755,9,841.96,841.84,20.00 -sub,inplace,1024,1024,17196,9,581.55,581.49,20.00 -sub,kernel,1024,1024,34498,9,578.84,578.78,19.97 -sub,floor,1024,1024,33638,9,594.57,594.31,20.00 -sub,gmp,1024,1024,51304,9,389.84,389.83,20.00 -sub,gmpz,1024,1024,51124,9,391.20,391.17,20.00 -sub,auto,2000,2000,11482,9,1741.79,1741.55,20.00 -sub,inplace,2000,2000,8818,9,1134.21,1133.87,20.01 -sub,kernel,2000,2000,17655,9,1132.07,1132.06,19.99 -sub,floor,2000,2000,17402,9,1153.85,1149.21,20.13 -sub,gmp,2000,2000,41956,9,475.87,475.86,19.97 -sub,gmpz,2000,2000,40488,9,492.46,491.06,19.93 -sub,auto,1024,1,70542,9,282.91,282.62,19.97 -sub,inplace,1024,1,17252,9,579.72,579.64,20.03 -sub,kernel,1024,1,34618,9,577.74,577.73,20.00 -sub,floor,1024,1,33727,9,593.12,592.96,20.00 -sub,gmp,1024,1,85553,9,233.86,233.82,20.01 -sub,gmpz,1024,1,85465,9,234.11,233.40,20.02 -shl,auto,1,13,1198515,9,16.78,16.72,20.12 -shl,inplace,1,13,2452956,9,4.09,4.06,20.04 -shl,kernel,1,13,9432507,9,2.12,2.12,19.99 -shl,kernelip,1,13,5881844,9,1.76,1.70,20.62 -shl,floor,1,13,2076551,9,9.82,9.82,20.40 -shl,gmp,1,13,9626809,9,1.90,1.90,18.30 -shl,gmpz,1,13,5771528,9,3.47,3.47,20.00 -shl,auto,4,13,1075749,9,18.60,18.52,20.03 -shl,inplace,4,13,1919294,9,5.21,5.19,19.98 -shl,kernel,4,13,5653667,9,3.47,3.44,19.64 -shl,kernelip,4,13,3317560,9,3.00,2.97,19.90 -shl,floor,4,13,1722461,9,11.19,11.18,19.27 -shl,gmp,4,13,7991535,9,2.40,2.33,19.19 -shl,gmpz,4,13,4924987,9,4.04,4.04,19.92 -shl,auto,16,13,817680,9,24.57,24.49,20.11 -shl,inplace,16,13,1082825,9,9.18,9.15,19.89 -shl,kernel,16,13,2688842,9,7.45,7.44,20.07 -shl,kernelip,16,13,1390947,9,7.18,7.11,19.98 -shl,floor,16,13,1252967,9,15.22,15.21,19.08 -shl,gmp,16,13,4929157,9,4.05,4.05,20.01 -shl,gmpz,16,13,3439581,9,5.82,5.81,20.04 -shl,auto,256,13,146779,9,134.40,133.41,19.77 -shl,inplace,256,13,107253,9,93.05,92.75,19.97 -shl,kernel,256,13,214374,9,93.60,93.43,20.09 -shl,kernelip,256,13,102253,9,97.77,97.71,20.04 -shl,floor,256,13,178163,9,116.38,116.24,20.74 -shl,gmp,256,13,424043,9,47.24,46.98,20.06 -shl,gmpz,256,13,395872,9,50.38,50.02,19.92 -shl,auto,2000,13,21865,9,915.14,914.76,20.03 -shl,inplace,2000,13,15224,9,657.39,655.93,20.02 -shl,kernel,2000,13,27776,9,720.57,719.84,20.02 -shl,kernelip,2000,13,13980,9,715.35,715.30,20.00 -shl,floor,2000,13,27163,9,739.56,739.32,20.09 -shl,gmp,2000,13,59454,9,335.51,335.36,19.95 -shl,gmpz,2000,13,59105,9,338.53,338.42,20.01 -shl,auto,2000,77,18751,9,1066.28,1063.41,20.01 -shl,inplace,2000,77,13086,9,764.23,764.05,20.02 -shl,kernel,2000,77,23557,9,849.37,848.28,20.01 -shl,kernelip,2000,77,12157,9,822.60,822.35,20.01 -shl,floor,2000,77,23004,9,871.56,870.56,20.06 -shl,gmp,2000,77,59221,9,337.73,337.72,20.02 -shl,gmpz,2000,77,59009,9,339.51,339.17,20.08 -shr,auto,1,13,1943912,9,10.23,10.19,19.92 -shr,inplace,1,13,2744357,9,3.66,3.59,20.02 -shr,kernel,1,13,11752351,9,1.70,1.70,20.00 -shr,floor,1,13,8824237,9,2.27,2.27,20.03 -shr,gmp,1,13,10587555,9,1.89,1.89,20.07 -shr,gmpz,1,13,6108370,9,3.27,3.27,19.99 -shr,auto,4,13,951050,9,20.99,20.94,19.98 -shr,inplace,4,13,2085903,9,4.77,4.72,19.86 -shr,kernel,4,13,5756219,9,3.47,3.46,19.99 -shr,floor,4,13,1671120,9,11.96,11.95,20.00 -shr,gmp,4,13,8513211,9,2.32,2.31,19.79 -shr,gmpz,4,13,5034768,9,3.97,3.96,20.00 -shr,auto,16,13,773519,9,25.81,25.69,19.96 -shr,inplace,16,13,1138406,9,8.80,8.74,20.02 -shr,kernel,16,13,2449639,9,8.22,8.13,20.16 -shr,floor,16,13,1174099,9,17.06,16.98,20.03 -shr,gmp,16,13,4652617,9,4.30,4.30,20.02 -shr,gmpz,16,13,3101427,9,6.33,6.19,19.69 -shr,auto,256,13,144132,9,138.77,138.39,20.02 -shr,inplace,256,13,106722,9,93.78,93.58,20.03 -shr,kernel,256,13,181802,9,110.08,109.96,20.03 -shr,floor,256,13,152231,9,131.17,130.76,19.97 -shr,gmp,256,13,416304,9,48.05,47.89,20.01 -shr,gmpz,256,13,394963,9,50.66,50.59,20.01 -shr,auto,2000,13,21049,9,950.02,949.00,20.00 -shr,inplace,2000,13,15222,9,656.78,656.53,20.00 -shr,kernel,2000,13,24637,9,811.88,811.83,20.01 -shr,floor,2000,13,24054,9,831.50,831.41,20.00 -shr,gmp,2000,13,59568,9,335.96,335.84,20.01 -shr,gmpz,2000,13,58780,9,338.96,338.83,19.93 -shr,auto,2000,77,18440,9,1085.26,1084.25,20.01 -shr,inplace,2000,77,13075,9,764.99,764.77,20.01 -shr,kernel,2000,77,24094,9,830.12,830.08,20.05 -shr,floor,2000,77,23397,9,854.27,852.90,19.99 -shr,gmp,2000,77,59535,9,335.93,335.90,20.00 -shr,gmpz,2000,77,58943,9,339.25,339.13,20.05 -mul,auto,1,1,1029140,9,19.44,19.40,20.02 -mul,gmp,1,1,5734629,9,3.47,3.43,19.86 -mul,gmpz,1,1,4990755,9,4.02,4.01,20.05 -mul,auto,2,2,706694,9,28.26,28.12,19.97 -mul,kernel,2,2,2805542,9,7.58,7.56,21.30 -mul,floor,2,2,1324462,9,15.27,15.18,20.24 -mul,gmp,2,2,5202491,9,3.85,3.85,20.04 -mul,gmpz,2,2,3240526,9,6.19,6.12,20.03 -mul,auto,3,3,668170,9,29.99,29.91,20.09 -mul,kernel,3,3,2348861,9,9.02,9.00,21.21 -mul,floor,3,3,1197571,9,16.80,16.73,20.14 -mul,gmp,3,3,2567449,9,7.83,7.75,20.08 -mul,gmpz,3,3,1996781,9,9.99,9.96,19.96 -mul,auto,4,4,623827,9,32.07,31.96,20.03 -mul,kernel,4,4,1879555,9,11.10,11.06,20.84 -mul,floor,4,4,1090096,9,18.59,18.51,20.27 -mul,gmp,4,4,2065585,9,9.68,9.67,20.02 -mul,gmpz,4,4,1644784,9,12.17,12.12,20.01 -mul,auto,6,6,471426,9,42.13,41.93,19.87 -mul,kernel,6,6,1197284,9,17.49,17.47,20.95 -mul,floor,6,6,797675,9,24.72,24.62,19.72 -mul,gmp,6,6,1262058,9,15.91,15.85,20.07 -mul,gmpz,6,6,1097355,9,18.21,18.19,20.02 -mul,auto,8,8,416128,9,47.80,47.52,19.87 -mul,kernel,8,8,807714,9,25.46,25.43,20.57 -mul,floor,8,8,613440,9,32.60,32.43,20.02 -mul,gmp,8,8,736879,9,27.21,27.03,20.05 -mul,gmpz,8,8,684349,9,28.84,28.67,19.86 -mul,auto,12,12,283879,9,70.45,70.28,20.00 -mul,kernel,12,12,425229,9,47.76,47.49,20.31 -mul,floor,12,12,364086,9,54.93,54.88,20.00 -mul,gmp,12,12,411892,9,48.62,48.55,20.03 -mul,gmpz,12,12,394153,9,50.76,50.74,20.03 -mul,auto,16,16,196050,9,102.06,101.90,20.02 -mul,kernel,16,16,252262,9,79.70,79.34,20.10 -mul,floor,16,16,231252,9,86.81,86.57,20.08 -mul,gmp,16,16,244305,9,81.87,81.86,20.00 -mul,gmpz,16,16,238006,9,84.05,84.02,20.01 -mul,auto,32,32,94931,9,211.44,210.77,20.07 -mul,kernel,32,32,103053,9,200.47,200.17,20.67 -mul,floor,32,32,98471,9,203.39,203.12,20.03 -mul,gmp,32,32,73337,9,270.99,269.65,19.89 -mul,gmpz,32,32,73706,9,270.79,270.27,19.97 -mul,auto,64,64,38785,9,515.31,514.81,19.99 -mul,kernel,64,64,40916,9,486.74,485.60,19.91 -mul,floor,64,64,40253,9,497.24,496.22,20.02 -mul,gmp,64,64,22770,9,878.30,875.64,20.00 -mul,gmpz,64,64,22917,9,872.86,870.73,20.01 -mul,auto,128,128,11608,9,1720.72,1719.35,19.98 -mul,kernel,128,128,11721,9,1705.80,1702.66,19.99 -mul,floor,128,128,11665,9,1717.02,1715.64,20.03 -mul,gmp,128,128,7224,9,2767.29,2758.76,19.98 -mul,gmpz,128,128,7289,9,2737.40,2726.60,19.94 -mul,auto,256,256,3212,9,6225.22,6219.68,20.00 -mul,kernel,256,256,3240,9,6172.90,6153.50,20.04 -mul,floor,256,256,3236,9,6174.29,6165.63,19.98 -mul,gmp,256,256,2530,9,7891.61,7813.72,19.91 -mul,gmpz,256,256,2558,9,7767.54,7763.97,19.89 -mul,auto,512,512,1031,9,19379.09,19359.12,20.00 -mul,kernel,512,512,1038,9,19174.00,19153.74,19.90 -mul,floor,512,512,1038,9,19300.68,19284.94,20.04 -mul,gmp,512,512,945,9,20891.14,20834.01,19.78 -mul,gmpz,512,512,957,9,20916.72,20910.63,20.09 -mul,auto,1000,1000,334,9,59962.75,59854.48,20.04 -mul,kernel,1000,1000,338,9,59424.24,59360.99,20.09 -mul,floor,1000,1000,336,9,59487.65,59417.88,19.99 -mul,gmp,1000,1000,368,9,54129.82,54109.67,19.96 -mul,gmpz,1000,1000,372,9,53805.10,53772.68,20.02 -mul,auto,2000,2000,113,9,177115.44,177035.62,20.01 -mul,kernel,2000,2000,114,9,176487.83,176271.44,20.12 -mul,floor,2000,2000,114,9,176504.29,176464.22,20.12 -mul,gmp,2000,2000,139,9,144326.97,144295.14,20.07 -mul,gmpz,2000,2000,139,9,144182.29,144114.86,20.08 -mul,auto,2000,100,1120,9,17868.01,17856.46,20.01 -mul,kernel,2000,100,1133,9,17657.08,17653.99,20.00 -mul,floor,2000,100,1131,9,17688.49,17681.76,20.03 -mul,gmp,2000,100,550,9,36329.62,36124.79,19.97 -mul,gmpz,2000,100,558,9,35731.70,35643.15,19.95 -sqr,auto,4,4,599752,9,33.29,33.18,19.96 -sqr,kernel,4,4,2209581,9,9.09,9.06,20.15 -sqr,floor,4,4,1209410,9,16.91,16.90,20.46 -sqr,gmp,4,4,3438888,9,5.82,5.77,20.03 -sqr,gmpz,4,4,2276007,9,8.81,8.78,20.06 -sqr,auto,16,16,250371,9,79.91,79.78,20.02 -sqr,kernel,16,16,355697,9,56.23,56.16,20.02 -sqr,floor,16,16,320025,9,62.48,62.42,20.01 -sqr,gmp,16,16,393699,9,49.94,49.81,19.72 -sqr,gmpz,16,16,380814,9,52.16,52.12,19.88 -sqr,auto,64,64,65915,9,303.31,302.58,19.99 -sqr,kernel,64,64,74190,9,269.47,269.33,20.00 -sqr,floor,64,64,72817,9,279.77,279.37,20.38 -sqr,gmp,64,64,35298,9,566.20,563.03,19.95 -sqr,gmpz,64,64,35436,9,561.12,558.41,19.88 -sqr,auto,512,512,1887,9,10603.75,10590.45,20.01 -sqr,kernel,512,512,1895,9,10567.13,10562.20,20.03 -sqr,floor,512,512,1889,9,10581.91,10570.74,20.01 -sqr,gmp,512,512,1317,9,15122.32,15112.47,19.92 -sqr,gmpz,512,512,1326,9,15091.04,15087.07,20.02 -sqr,auto,2000,2000,201,9,99935.43,99921.27,20.09 -sqr,kernel,2000,2000,202,9,99413.92,99400.75,20.08 -sqr,floor,2000,2000,202,9,99437.28,98076.75,20.00 -sqr,gmp,2000,2000,198,9,100880.99,100818.23,19.97 -sqr,gmpz,2000,2000,199,9,100892.93,100840.88,20.09 -divrem,auto,2,1,470823,9,42.73,42.37,20.08 -divrem,kernel,2,1,3613456,9,5.50,5.43,19.87 -divrem,floor,2,1,1570391,9,12.77,12.75,20.07 -divrem,gmp,2,1,2306144,9,8.69,8.67,20.03 -divrem,gmpz,2,1,1519869,9,13.18,13.17,20.05 -divrem,auto,8,4,185326,9,107.43,107.16,19.91 -divrem,kernel,8,4,495861,9,40.42,40.18,20.09 -divrem,floor,8,4,365025,9,55.48,55.32,20.25 -divrem,gmp,8,4,499629,9,40.01,39.79,19.98 -divrem,gmpz,8,4,482169,9,41.52,41.41,20.06 -divrem,auto,32,16,53765,9,369.07,368.21,19.84 -divrem,kernel,32,16,69660,9,286.88,286.33,19.98 -divrem,floor,32,16,65702,9,303.80,303.54,19.96 -divrem,gmp,32,16,102820,9,194.92,194.42,20.04 -divrem,gmpz,32,16,102895,9,193.77,193.33,19.94 -divrem,auto,128,64,5971,9,3340.13,3338.33,19.95 -divrem,kernel,128,64,6253,9,3203.79,3194.20,20.04 -divrem,floor,128,64,6215,9,3225.64,3215.85,20.05 -divrem,gmp,128,64,11622,9,1717.90,1717.09,19.97 -divrem,gmpz,128,64,11574,9,1722.43,1721.81,19.94 -divrem,auto,512,256,671,9,29829.13,29807.98,20.01 -divrem,kernel,512,256,678,9,29452.47,29441.62,19.97 -divrem,floor,512,256,670,9,29889.07,29881.67,20.03 -divrem,gmp,512,256,1234,9,16221.69,16219.18,20.02 -divrem,gmpz,512,256,1235,9,16199.22,16196.45,20.01 -divrem,auto,2000,1000,109,9,185157.94,185042.73,20.19 -divrem,kernel,2000,1000,108,9,184320.98,184201.76,19.96 -divrem,floor,2000,1000,109,9,184020.72,183955.54,20.06 -divrem,gmp,2000,1000,146,9,137716.92,137689.68,20.12 -divrem,gmpz,2000,1000,146,9,137779.55,137751.43,20.12 -divrem,auto,4000,2000,42,9,476000.26,475883.43,20.00 -divrem,kernel,4000,2000,43,9,473213.95,472978.28,20.36 -divrem,floor,4000,2000,43,9,473338.16,472989.95,20.36 -divrem,gmp,4000,2000,59,9,338023.95,336041.69,19.93 -divrem,gmpz,4000,2000,60,9,335917.05,334521.37,20.16 -divrem,auto,2000,100,138,9,145434.80,145285.70,20.08 -divrem,kernel,2000,100,140,9,143211.36,142656.73,20.04 -divrem,floor,2000,100,140,9,143302.54,142762.41,20.05 -divrem,gmp,2000,100,276,9,72563.10,72498.11,20.02 -divrem,gmpz,2000,100,276,9,72555.19,72516.45,20.03 -divrem,auto,65536,1,103,9,193517.06,193091.90,19.93 -divrem,kernel,65536,1,120,9,167046.21,166822.73,20.05 -divrem,floor,65536,1,115,9,174784.26,174449.95,20.14 -divrem,gmp,65536,1,136,9,148107.17,148100.43,20.15 -divrem,gmpz,65536,1,136,9,148120.79,148114.96,20.15 -tochars,auto,1,10,1356261,9,14.77,14.74,20.08 -tochars,kernel,1,10,321943,9,62.16,62.03,20.01 -tochars,gmp,1,10,967856,9,20.66,20.47,19.99 -tochars,gmpz,1,10,593470,9,33.83,33.61,20.06 -tochars,auto,4,10,156487,9,127.79,127.04,20.01 -tochars,kernel,4,10,110993,9,180.71,178.88,20.05 -tochars,gmp,4,10,291454,9,68.65,68.61,20.02 -tochars,gmpz,4,10,209595,9,95.54,95.41,20.02 -tochars,auto,16,10,17102,9,1170.87,1168.85,20.02 -tochars,kernel,16,10,19215,9,1040.55,1036.35,19.99 -tochars,gmp,16,10,39703,9,503.75,503.62,20.00 -tochars,gmpz,16,10,33926,9,590.25,588.41,20.02 -tochars,auto,64,10,3553,9,5622.13,5604.63,19.96 -tochars,kernel,64,10,3818,9,5238.01,5237.18,20.00 -tochars,gmp,64,10,7458,9,2681.80,2675.74,20.05 -tochars,gmpz,64,10,6747,9,2963.53,2957.49,19.99 -tochars,auto,256,10,559,9,35867.11,35852.09,20.05 -tochars,kernel,256,10,579,9,34587.33,34548.90,20.02 -tochars,gmp,256,10,1077,9,18575.51,18550.80,20.01 -tochars,gmpz,256,10,1016,9,19663.29,19653.45,19.98 -tochars,auto,2000,10,33,9,608223.70,607781.91,20.08 -tochars,kernel,2000,10,35,9,583860.26,583597.43,20.43 -tochars,gmp,2000,10,50,9,400810.50,400387.08,20.06 -tochars,gmpz,2000,10,49,9,409241.24,408889.71,20.09 -tochars,auto,16,16,168416,9,117.83,117.50,19.83 -tochars,gmp,16,16,201790,9,99.10,99.04,20.00 -tochars,gmpz,16,16,126181,9,158.56,158.51,20.01 -tochars,auto,2000,16,1469,9,13621.58,13619.98,20.01 -tochars,gmp,2000,16,1794,9,11113.93,11110.85,19.94 -tochars,gmpz,2000,16,1117,9,17925.04,17922.40,20.03 -fromchars,auto,4,10,106170,9,188.47,187.43,20.02 -fromchars,kernel,4,10,533540,9,37.50,37.42,20.01 -fromchars,gmp,4,10,639402,9,31.34,31.23,20.07 -fromchars,gmpz,4,10,301944,9,66.25,66.09,20.02 -fromchars,auto,16,10,47506,9,421.31,417.35,19.98 -fromchars,kernel,16,10,94506,9,216.52,213.62,20.63 -fromchars,gmp,16,10,160673,9,124.82,124.51,20.06 -fromchars,gmpz,16,10,77483,9,257.02,256.51,19.96 -fromchars,auto,64,10,7189,9,2815.18,2714.94,20.24 -fromchars,kernel,64,10,9954,9,2110.02,2038.31,21.11 -fromchars,gmp,64,10,22651,9,884.54,883.13,20.03 -fromchars,gmpz,64,10,14639,9,1366.91,1366.02,20.02 -fromchars,auto,256,10,718,9,28675.05,28235.67,20.71 -fromchars,kernel,256,10,790,9,26417.96,25688.08,20.82 -fromchars,gmp,256,10,2507,9,7976.75,7969.56,20.00 -fromchars,gmpz,256,10,2016,9,9916.89,9911.67,20.00 -fromchars,auto,2000,10,47,9,429679.91,428759.47,20.19 -fromchars,kernel,2000,10,49,9,409146.39,408981.31,20.09 -fromchars,gmp,2000,10,109,9,182842.78,182724.99,19.94 -fromchars,gmpz,2000,10,102,9,197805.98,197698.41,20.18 diff --git a/tests/beman/big_int/perf/item1/x64r3_base64_seed2a.csv b/tests/beman/big_int/perf/item1/x64r3_base64_seed2a.csv deleted file mode 100644 index ae6f60b3..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_base64_seed2a.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T18:01:25Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2381398,9,8.25,8.21,19.70 -add,inplace,1,1,2448503,9,4.11,4.08,20.16 -add,kernel,1,1,10583839,9,1.89,1.89,19.99 -add,floor,1,1,2020794,9,9.85,9.82,19.93 -add,gmp,1,1,8824198,9,2.27,2.27,20.00 -add,gmpz,1,1,4813028,9,4.16,4.16,20.01 -add,auto,2,2,1122973,9,17.81,17.78,20.02 -add,inplace,2,2,1715581,9,5.85,5.82,20.16 -add,kernel,2,2,8481188,9,2.38,2.31,20.04 -add,floor,2,2,1985389,9,10.21,10.13,20.25 -add,gmp,2,2,8824274,9,2.27,2.27,20.01 -add,gmpz,2,2,4813180,9,4.16,4.16,20.00 -add,auto,4,4,1106880,9,18.01,17.93,19.94 -add,inplace,4,4,1785214,9,5.59,5.56,19.96 -add,kernel,4,4,6443033,9,3.07,3.02,19.86 -add,floor,4,4,1823593,9,10.96,10.95,19.99 -add,gmp,4,4,8002814,9,2.50,2.50,19.99 -add,gmpz,4,4,4519109,9,4.36,4.34,19.69 -add,auto,8,8,1037921,9,19.30,19.22,20.03 -add,inplace,8,8,1358408,9,7.32,7.28,19.87 -add,kernel,8,8,4322354,9,4.70,4.53,20.34 -add,floor,8,8,1607329,9,12.45,12.43,20.02 -add,gmp,8,8,5425259,9,3.69,3.69,20.00 -add,gmpz,8,8,4271702,9,4.67,4.65,19.94 -add,auto,16,16,790078,9,25.29,24.99,19.99 -add,inplace,16,16,827232,9,12.00,11.95,19.90 -add,kernel,16,16,2646835,9,7.56,7.56,20.01 -add,floor,16,16,1299636,9,15.38,15.35,20.01 -add,gmp,16,16,3632766,9,5.50,5.49,19.98 -add,gmpz,16,16,3079290,9,6.52,6.50,20.11 -add,auto,64,64,313164,9,63.74,63.42,19.95 -add,inplace,64,64,257730,9,39.04,38.93,20.12 -add,kernel,64,64,600316,9,33.28,33.03,19.97 -add,floor,64,64,478106,9,42.08,41.84,20.19 -add,gmp,64,64,1286490,9,15.45,15.45,19.88 -add,gmpz,64,64,1212747,9,16.49,16.46,19.99 -add,auto,256,256,89272,9,224.04,223.80,20.00 -add,inplace,256,256,68675,9,145.53,145.48,19.99 -add,kernel,256,256,140144,9,142.50,142.47,19.97 -add,floor,256,256,126201,9,158.78,158.58,20.03 -add,gmp,256,256,255009,9,78.42,78.41,20.00 -add,gmpz,256,256,251713,9,79.46,79.35,19.99 -add,auto,1024,1024,23712,9,842.11,841.92,19.97 -add,inplace,1024,1024,17149,9,583.10,582.95,20.01 -add,kernel,1024,1024,34575,9,578.44,578.38,20.01 -add,floor,1024,1024,33664,9,594.17,594.06,20.00 -add,gmp,1024,1024,33646,9,594.43,594.41,20.00 -add,gmpz,1024,1024,33589,9,595.43,595.39,20.00 -add,auto,2000,2000,11619,9,1721.28,1721.15,20.00 -add,inplace,2000,2000,8819,9,1133.94,1133.85,20.00 -add,kernel,2000,2000,17673,9,1131.72,1131.65,20.06 -add,floor,2000,2000,17435,9,1147.27,1147.12,20.00 -add,gmp,2000,2000,42223,9,473.59,473.56,20.00 -add,gmpz,2000,2000,42573,9,469.80,467.85,19.98 -add,auto,1024,1,71188,9,281.12,280.96,20.02 -add,inplace,1024,1,17249,9,579.77,579.70,20.00 -add,kernel,1024,1,34622,9,577.69,577.68,20.01 -add,floor,1024,1,33703,9,593.54,593.35,20.00 -add,gmp,1024,1,85997,9,232.63,232.56,20.05 -add,gmpz,1024,1,85025,9,233.94,233.59,19.89 -sub,auto,1,1,2240675,9,8.97,8.94,20.11 -sub,inplace,1,1,2509796,9,3.97,3.97,19.95 -sub,kernel,1,1,13236355,9,1.51,1.51,20.00 -sub,floor,1,1,10540651,9,1.90,1.89,20.01 -sub,gmp,1,1,8794428,9,2.27,2.27,19.94 -sub,gmpz,1,1,4602659,9,4.34,4.34,20.05 -sub,auto,2,2,1066212,9,18.93,18.87,20.21 -sub,inplace,2,2,2182806,9,4.61,4.58,20.11 -sub,kernel,2,2,9426181,9,2.10,2.08,19.76 -sub,floor,2,2,2015299,9,9.96,9.92,20.07 -sub,gmp,2,2,8824238,9,2.27,2.27,20.13 -sub,gmpz,2,2,4324193,9,4.37,4.36,19.15 -sub,auto,4,4,1054509,9,18.95,18.89,20.00 -sub,inplace,4,4,1835979,9,5.44,5.40,19.94 -sub,kernel,4,4,6926693,9,2.86,2.83,19.76 -sub,floor,4,4,1878978,9,10.72,10.70,20.16 -sub,gmp,4,4,8042932,9,2.49,2.49,20.03 -sub,gmpz,4,4,4390486,9,4.58,4.55,20.10 -sub,auto,8,8,947970,9,20.65,20.30,19.47 -sub,inplace,8,8,1386074,9,7.21,7.16,19.95 -sub,kernel,8,8,4582157,9,4.36,4.36,20.01 -sub,floor,8,8,1624540,9,12.37,12.32,20.08 -sub,gmp,8,8,5430175,9,3.68,3.68,20.00 -sub,gmpz,8,8,4054862,9,4.96,4.94,20.20 -sub,auto,16,16,769383,9,25.64,25.24,19.69 -sub,inplace,16,16,946106,9,10.56,10.53,19.98 -sub,kernel,16,16,2482935,9,8.05,8.05,20.00 -sub,floor,16,16,1294157,9,15.50,15.48,20.09 -sub,gmp,16,16,3346755,9,5.97,5.97,19.99 -sub,gmpz,16,16,2944608,9,6.80,6.75,20.00 -sub,auto,64,64,303083,9,66.11,66.01,20.04 -sub,inplace,64,64,264527,9,38.11,37.32,20.08 -sub,kernel,64,64,607322,9,32.92,32.90,19.99 -sub,floor,64,64,473126,9,42.15,42.07,19.94 -sub,gmp,64,64,1294499,9,15.45,15.45,20.00 -sub,gmpz,64,64,1194650,9,16.74,16.71,19.99 -sub,auto,256,256,89478,9,223.54,223.40,20.02 -sub,inplace,256,256,68769,9,145.40,145.36,20.00 -sub,kernel,256,256,139960,9,142.85,142.81,20.00 -sub,floor,256,256,126109,9,158.46,158.13,20.03 -sub,gmp,256,256,255654,9,78.23,78.22,20.02 -sub,gmpz,256,256,250270,9,79.85,79.74,19.98 -sub,auto,1024,1024,23755,9,841.83,841.71,20.00 -sub,inplace,1024,1024,17197,9,581.53,581.50,20.00 -sub,kernel,1024,1024,34588,9,578.17,578.12,20.01 -sub,floor,1024,1024,33661,9,594.08,593.81,20.00 -sub,gmp,1024,1024,51244,9,390.30,390.29,20.00 -sub,gmpz,1024,1024,51075,9,391.58,391.55,20.01 -sub,auto,2000,2000,11486,9,1741.79,1741.71,20.03 -sub,inplace,2000,2000,8819,9,1134.16,1133.93,20.01 -sub,kernel,2000,2000,17656,9,1132.72,1132.69,20.00 -sub,floor,2000,2000,17395,9,1150.05,1149.75,20.00 -sub,gmp,2000,2000,44066,9,453.87,453.86,20.00 -sub,gmpz,2000,2000,41066,9,487.19,485.90,20.00 -sub,auto,1024,1,70634,9,283.30,282.72,20.01 -sub,inplace,1024,1,17191,9,579.83,579.79,19.94 -sub,kernel,1024,1,34676,9,576.77,576.77,20.05 -sub,floor,1024,1,33725,9,593.10,593.03,20.02 -sub,gmp,1024,1,85917,9,232.83,232.66,20.00 -sub,gmpz,1024,1,85513,9,233.93,233.57,20.00 -shl,auto,1,13,1223516,9,16.74,16.49,20.42 -shl,inplace,1,13,2473930,9,4.08,4.06,20.21 -shl,kernel,1,13,9626059,9,2.08,2.08,20.01 -shl,kernelip,1,13,5672310,9,1.75,1.72,19.82 -shl,floor,1,13,2093678,9,9.85,9.83,20.62 -shl,gmp,1,13,9610359,9,1.89,1.89,18.15 -shl,gmpz,1,13,5708969,9,3.46,3.46,19.78 -shl,auto,4,13,1069217,9,18.66,18.56,19.95 -shl,inplace,4,13,1923850,9,5.18,5.13,19.92 -shl,kernel,4,13,5812518,9,3.44,3.44,20.01 -shl,kernelip,4,13,3443273,9,2.94,2.90,20.26 -shl,floor,4,13,1728491,9,11.35,11.29,19.61 -shl,gmp,4,13,7991573,9,2.31,2.31,18.46 -shl,gmpz,4,13,4947052,9,4.04,4.04,20.04 -shl,auto,16,13,808733,9,24.46,24.43,19.81 -shl,inplace,16,13,1084845,9,9.18,9.17,19.93 -shl,kernel,16,13,2663102,9,7.45,7.44,19.87 -shl,kernelip,16,13,1412730,9,6.92,6.90,19.56 -shl,floor,16,13,1252933,9,15.22,15.21,19.08 -shl,gmp,16,13,4562943,9,4.33,4.32,19.78 -shl,gmpz,16,13,3326879,9,5.96,5.94,19.85 -shl,auto,256,13,150010,9,135.88,133.46,20.32 -shl,inplace,256,13,107375,9,93.08,92.87,20.00 -shl,kernel,256,13,215037,9,93.17,92.97,20.04 -shl,kernelip,256,13,102285,9,97.72,97.53,19.99 -shl,floor,256,13,176132,9,116.61,116.47,20.54 -shl,gmp,256,13,424250,9,47.35,47.22,20.09 -shl,gmpz,256,13,398950,9,50.23,50.01,20.06 -shl,auto,2000,13,21779,9,918.28,917.47,20.01 -shl,inplace,2000,13,15238,9,658.05,656.65,20.08 -shl,kernel,2000,13,27760,9,720.86,720.11,20.04 -shl,kernelip,2000,13,13980,9,715.35,715.30,20.00 -shl,floor,2000,13,27158,9,739.40,738.91,20.09 -shl,gmp,2000,13,59638,9,335.42,335.30,20.00 -shl,gmpz,2000,13,59074,9,338.52,338.19,20.00 -shl,auto,2000,77,18794,9,1065.66,1064.35,20.02 -shl,inplace,2000,77,13073,9,765.08,764.64,20.01 -shl,kernel,2000,77,23486,9,851.62,849.21,19.99 -shl,kernelip,2000,77,12159,9,822.53,822.13,20.05 -shl,floor,2000,77,22921,9,873.35,870.74,20.01 -shl,gmp,2000,77,59185,9,337.73,337.72,19.99 -shl,gmpz,2000,77,59099,9,338.43,338.38,20.01 -shr,auto,1,13,1960124,9,10.10,10.03,19.80 -shr,inplace,1,13,2705985,9,3.67,3.60,19.83 -shr,kernel,1,13,11752121,9,1.70,1.70,20.00 -shr,floor,1,13,8358001,9,2.39,2.39,20.01 -shr,gmp,1,13,10588173,9,1.89,1.89,20.07 -shr,gmpz,1,13,6110652,9,3.27,3.27,20.03 -shr,auto,4,13,950548,9,20.98,20.89,19.97 -shr,inplace,4,13,2093850,9,4.70,4.66,19.69 -shr,kernel,4,13,5738815,9,3.47,3.46,19.92 -shr,floor,4,13,1673323,9,11.96,11.94,20.02 -shr,gmp,4,13,8590249,9,2.32,2.31,19.94 -shr,gmpz,4,13,5025551,9,3.98,3.95,19.97 -shr,auto,16,13,776379,9,25.82,25.71,20.04 -shr,inplace,16,13,1143193,9,8.72,8.69,19.93 -shr,kernel,16,13,2449594,9,8.11,8.09,19.87 -shr,floor,16,13,1173181,9,17.04,16.97,19.98 -shr,gmp,16,13,4650148,9,4.30,4.30,20.01 -shr,gmpz,16,13,3227632,9,6.20,6.15,20.08 -shr,auto,256,13,146129,9,136.65,136.48,19.99 -shr,inplace,256,13,106489,9,93.70,93.62,19.96 -shr,kernel,256,13,181124,9,110.39,110.15,19.99 -shr,floor,256,13,151012,9,131.08,130.90,19.81 -shr,gmp,256,13,415333,9,48.08,47.91,19.96 -shr,gmpz,256,13,393754,9,50.70,50.55,19.95 -shr,auto,2000,13,21036,9,950.30,949.27,20.00 -shr,inplace,2000,13,15223,9,656.81,656.55,20.01 -shr,kernel,2000,13,24559,9,812.17,811.79,20.03 -shr,floor,2000,13,23911,9,832.53,832.11,19.92 -shr,gmp,2000,13,59539,9,336.02,335.79,20.02 -shr,gmpz,2000,13,59020,9,338.88,338.78,20.02 -shr,auto,2000,77,18448,9,1084.17,1083.44,20.00 -shr,inplace,2000,77,13068,9,764.79,764.42,19.99 -shr,kernel,2000,77,24151,9,828.15,828.12,20.00 -shr,floor,2000,77,23503,9,850.99,850.46,20.01 -shr,gmp,2000,77,59493,9,335.94,335.92,20.00 -shr,gmpz,2000,77,58940,9,339.31,339.12,20.00 -mul,auto,1,1,1030208,9,19.37,19.25,19.96 -mul,gmp,1,1,5898281,9,3.38,3.36,19.98 -mul,gmpz,1,1,5041429,9,3.97,3.97,20.02 -mul,auto,2,2,700245,9,28.23,28.08,19.77 -mul,kernel,2,2,2836798,9,7.59,7.54,21.52 -mul,floor,2,2,1329744,9,15.40,15.20,20.47 -mul,gmp,2,2,5249322,9,3.82,3.80,20.03 -mul,gmpz,2,2,3271698,9,6.10,6.07,19.98 -mul,auto,3,3,677316,9,29.67,29.49,20.09 -mul,kernel,3,3,2349037,9,9.03,9.00,21.19 -mul,floor,3,3,1212843,9,16.64,16.43,20.17 -mul,gmp,3,3,2573912,9,7.81,7.74,20.11 -mul,gmpz,3,3,2009423,9,9.92,9.90,19.94 -mul,auto,4,4,617143,9,32.18,32.00,19.88 -mul,kernel,4,4,1897414,9,11.11,11.10,21.09 -mul,floor,4,4,1085971,9,18.78,18.66,20.40 -mul,gmp,4,4,1898471,9,10.57,10.48,20.07 -mul,gmpz,4,4,1651541,9,12.18,12.10,20.12 -mul,auto,6,6,474209,9,42.14,41.96,19.98 -mul,kernel,6,6,1196207,9,18.70,18.67,22.40 -mul,floor,6,6,806967,9,24.76,24.67,19.98 -mul,gmp,6,6,1271674,9,15.71,15.63,19.97 -mul,gmpz,6,6,971386,9,20.63,20.61,20.03 -mul,auto,8,8,420054,9,47.61,47.48,19.99 -mul,kernel,8,8,809763,9,25.60,25.40,20.76 -mul,floor,8,8,602953,9,32.74,32.65,19.75 -mul,gmp,8,8,739723,9,27.24,27.00,20.14 -mul,gmpz,8,8,694409,9,28.87,28.75,20.06 -mul,auto,12,12,285017,9,70.00,69.80,19.94 -mul,kernel,12,12,421226,9,47.88,47.77,20.18 -mul,floor,12,12,359923,9,55.84,55.72,20.10 -mul,gmp,12,12,402862,9,49.65,49.64,20.02 -mul,gmpz,12,12,394088,9,50.76,50.73,20.01 -mul,auto,16,16,198324,9,100.93,100.65,20.02 -mul,kernel,16,16,256157,9,78.94,78.77,20.29 -mul,floor,16,16,233569,9,86.00,85.44,20.09 -mul,gmp,16,16,244222,9,81.88,81.85,20.00 -mul,gmpz,16,16,237939,9,84.06,84.03,20.00 -mul,auto,32,32,93750,9,213.47,212.99,20.02 -mul,kernel,32,32,106446,9,187.08,186.51,19.91 -mul,floor,32,32,100582,9,198.29,197.82,19.95 -mul,gmp,32,32,73349,9,268.78,267.89,19.77 -mul,gmpz,32,32,74141,9,269.72,269.66,20.00 -mul,auto,64,64,36440,9,547.63,547.01,19.96 -mul,kernel,64,64,40876,9,481.40,480.82,19.68 -mul,floor,64,64,40350,9,496.04,495.63,20.02 -mul,gmp,64,64,22625,9,874.36,868.32,19.80 -mul,gmpz,64,64,23188,9,862.76,861.55,20.01 -mul,auto,128,128,11650,9,1716.62,1715.49,20.04 -mul,kernel,128,128,11490,9,1741.89,1739.87,20.02 -mul,floor,128,128,11429,9,1749.50,1747.76,20.00 -mul,gmp,128,128,7241,9,2735.86,2726.65,19.89 -mul,gmpz,128,128,7385,9,2708.02,2706.93,20.06 -mul,auto,256,256,3220,9,6212.26,6209.35,20.00 -mul,kernel,256,256,3203,9,6155.24,6150.75,19.73 -mul,floor,256,256,3208,9,6232.13,6228.60,19.99 -mul,gmp,256,256,2530,9,7848.64,7757.73,19.83 -mul,gmpz,256,256,2574,9,7767.88,7762.70,20.00 -mul,auto,512,512,1040,9,19247.65,19229.18,20.03 -mul,kernel,512,512,1045,9,19160.88,19132.64,20.07 -mul,floor,512,512,1043,9,19194.78,19165.02,20.02 -mul,gmp,512,512,946,9,20938.44,20932.93,19.82 -mul,gmpz,512,512,958,9,20882.65,20876.89,20.01 -mul,auto,1000,1000,335,9,59745.09,59699.86,20.02 -mul,kernel,1000,1000,337,9,59522.41,59497.56,20.06 -mul,floor,1000,1000,337,9,59619.56,59510.06,20.08 -mul,gmp,1000,1000,375,9,53321.38,53313.86,20.01 -mul,gmpz,1000,1000,375,9,53383.14,53345.89,20.03 -mul,auto,2000,2000,113,9,177080.12,176870.63,20.02 -mul,kernel,2000,2000,113,9,176224.81,176044.87,19.91 -mul,floor,2000,2000,114,9,176195.23,176021.59,20.09 -mul,gmp,2000,2000,139,9,144055.47,144031.49,20.03 -mul,gmpz,2000,2000,139,9,144221.55,144160.95,20.05 -mul,auto,2000,100,1122,9,17837.84,17832.09,20.02 -mul,kernel,2000,100,1131,9,17658.29,17649.93,19.97 -mul,floor,2000,100,1130,9,17708.14,17703.98,20.01 -mul,gmp,2000,100,546,9,36248.23,36083.62,19.81 -mul,gmpz,2000,100,558,9,35889.08,35832.80,20.03 -sqr,auto,4,4,583280,9,34.17,33.30,19.79 -sqr,kernel,4,4,2189150,9,9.07,9.05,19.87 -sqr,floor,4,4,1208110,9,16.92,16.91,20.45 -sqr,gmp,4,4,3430145,9,5.80,5.78,19.97 -sqr,gmpz,4,4,2264239,9,8.85,8.80,20.05 -sqr,auto,16,16,229076,9,87.26,87.16,19.99 -sqr,kernel,16,16,355711,9,56.22,56.20,20.06 -sqr,floor,16,16,320714,9,63.16,63.09,20.28 -sqr,gmp,16,16,391032,9,50.42,50.35,19.76 -sqr,gmpz,16,16,374047,9,53.50,53.47,20.01 -sqr,auto,64,64,66666,9,298.75,298.32,19.92 -sqr,kernel,64,64,70503,9,284.11,283.69,20.03 -sqr,floor,64,64,68778,9,299.10,298.28,20.57 -sqr,gmp,64,64,35567,9,560.42,556.00,19.92 -sqr,gmpz,64,64,35820,9,553.96,553.20,19.85 -sqr,auto,512,512,1866,9,10653.34,10644.54,19.88 -sqr,kernel,512,512,1896,9,10558.37,10550.04,20.03 -sqr,floor,512,512,1891,9,10559.54,10554.32,19.97 -sqr,gmp,512,512,1328,9,15064.17,15057.55,20.01 -sqr,gmpz,512,512,1323,9,15122.79,15117.44,20.01 -sqr,auto,2000,2000,201,9,99939.73,99891.97,20.10 -sqr,kernel,2000,2000,202,9,99168.69,99152.25,20.03 -sqr,floor,2000,2000,202,9,99221.29,99021.43,20.04 -sqr,gmp,2000,2000,199,9,100650.09,100584.17,20.08 -sqr,gmpz,2000,2000,199,9,100660.40,100592.80,20.06 -divrem,auto,2,1,491786,9,40.60,40.44,19.98 -divrem,kernel,2,1,3646067,9,5.45,5.40,19.88 -divrem,floor,2,1,1567900,9,12.76,12.74,20.02 -divrem,gmp,2,1,2980726,9,6.70,6.69,19.97 -divrem,gmpz,2,1,1714845,9,11.70,11.66,20.06 -divrem,auto,8,4,168692,9,118.35,118.06,19.98 -divrem,kernel,8,4,404331,9,49.22,48.94,19.91 -divrem,floor,8,4,309187,9,64.34,63.73,19.88 -divrem,gmp,8,4,453465,9,43.94,43.77,19.95 -divrem,gmpz,8,4,432725,9,46.03,45.89,19.92 -divrem,auto,32,16,54110,9,369.60,369.14,20.02 -divrem,kernel,32,16,69585,9,286.95,286.77,19.99 -divrem,floor,32,16,66024,9,302.78,302.28,19.99 -divrem,gmp,32,16,105430,9,189.92,189.33,20.02 -divrem,gmpz,32,16,103980,9,193.09,191.88,20.06 -divrem,auto,128,64,5985,9,3342.05,3340.93,20.01 -divrem,kernel,128,64,6264,9,3193.41,3192.19,20.03 -divrem,floor,128,64,6019,9,3324.73,3322.18,20.02 -divrem,gmp,128,64,11632,9,1719.92,1719.13,20.02 -divrem,gmpz,128,64,11610,9,1722.86,1722.29,20.00 -divrem,auto,512,256,687,9,29280.01,29232.20,20.11 -divrem,kernel,512,256,683,9,29335.31,29275.40,20.03 -divrem,floor,512,256,690,9,29011.85,29001.91,20.02 -divrem,gmp,512,256,1231,9,16250.60,16246.13,20.01 -divrem,gmpz,512,256,1224,9,16341.86,16336.08,20.00 -divrem,auto,2000,1000,109,9,185513.04,185092.02,20.22 -divrem,kernel,2000,1000,109,9,184186.40,184108.03,20.08 -divrem,floor,2000,1000,109,9,184284.67,184248.74,20.09 -divrem,gmp,2000,1000,145,9,138118.32,138089.78,20.03 -divrem,gmpz,2000,1000,145,9,138168.41,138150.78,20.05 -divrem,auto,4000,2000,42,9,478260.02,478033.19,20.10 -divrem,kernel,4000,2000,42,9,478218.76,478051.79,20.13 -divrem,floor,4000,2000,43,9,475879.19,475743.26,20.49 -divrem,gmp,4000,2000,60,9,334263.42,333396.87,20.09 -divrem,gmpz,4000,2000,60,9,333764.55,333110.97,20.02 -divrem,auto,2000,100,140,9,143873.17,143237.19,20.13 -divrem,kernel,2000,100,141,9,141991.99,141828.00,20.03 -divrem,floor,2000,100,142,9,142148.69,141363.97,20.19 -divrem,gmp,2000,100,279,9,71862.71,71825.39,20.05 -divrem,gmpz,2000,100,278,9,71967.62,71943.56,20.02 -divrem,auto,65536,1,103,9,193867.29,193273.09,19.96 -divrem,kernel,65536,1,120,9,167106.91,166952.17,20.07 -divrem,floor,65536,1,115,9,174753.16,174268.59,20.09 -divrem,gmp,65536,1,136,9,148101.89,148092.88,20.15 -divrem,gmpz,65536,1,136,9,148111.58,148099.72,20.14 -tochars,auto,1,10,1374834,9,14.56,14.54,20.05 -tochars,kernel,1,10,311200,9,64.23,64.14,20.00 -tochars,gmp,1,10,1016486,9,19.65,19.47,20.00 -tochars,gmpz,1,10,576260,9,33.83,33.75,19.50 -tochars,auto,4,10,142678,9,140.34,140.01,20.04 -tochars,kernel,4,10,111051,9,180.69,179.07,20.06 -tochars,gmp,4,10,279363,9,71.59,71.54,20.01 -tochars,gmpz,4,10,202808,9,98.66,98.55,20.01 -tochars,auto,16,10,17111,9,1169.86,1168.47,20.02 -tochars,kernel,16,10,19324,9,1037.56,1035.43,20.06 -tochars,gmp,16,10,39639,9,503.59,503.49,19.97 -tochars,gmpz,16,10,33928,9,589.59,587.02,19.99 -tochars,auto,64,10,3561,9,5620.71,5618.98,20.02 -tochars,kernel,64,10,3818,9,5245.38,5235.63,20.03 -tochars,gmp,64,10,7525,9,2662.62,2659.41,20.04 -tochars,gmpz,64,10,6778,9,2949.18,2946.42,19.99 -tochars,auto,256,10,559,9,35837.64,35818.06,20.03 -tochars,kernel,256,10,579,9,34599.82,34567.09,20.03 -tochars,gmp,256,10,1076,9,18611.66,18595.03,20.03 -tochars,gmpz,256,10,1016,9,19686.65,19668.66,20.06 -tochars,auto,2000,10,33,9,609112.79,608780.42,20.13 -tochars,kernel,2000,10,35,9,584798.20,584402.00,20.47 -tochars,gmp,2000,10,51,9,399771.24,399494.51,20.39 -tochars,gmpz,2000,10,49,9,408221.88,408058.18,20.01 -tochars,auto,16,16,163271,9,122.46,122.15,20.00 -tochars,gmp,16,16,208447,9,96.09,95.91,20.06 -tochars,gmpz,16,16,127382,9,156.87,156.69,19.98 -tochars,auto,2000,16,1465,9,13618.13,13615.66,19.95 -tochars,gmp,2000,16,1801,9,11112.48,11110.57,20.04 -tochars,gmpz,2000,16,1116,9,17926.70,17924.78,20.01 -fromchars,auto,4,10,100159,9,199.01,198.26,19.95 -fromchars,kernel,4,10,519400,9,38.75,38.58,20.12 -fromchars,gmp,4,10,625415,9,31.99,31.95,20.01 -fromchars,gmpz,4,10,289937,9,69.10,68.96,20.04 -fromchars,auto,16,10,46784,9,421.73,418.94,19.71 -fromchars,kernel,16,10,91809,9,220.06,214.44,20.16 -fromchars,gmp,16,10,161977,9,123.51,123.39,20.06 -fromchars,gmpz,16,10,78485,9,254.70,254.52,20.05 -fromchars,auto,64,10,7219,9,2800.57,2680.65,20.24 -fromchars,kernel,64,10,9557,9,2130.25,2013.58,20.35 -fromchars,gmp,64,10,21911,9,912.31,911.31,19.99 -fromchars,gmpz,64,10,14189,9,1409.42,1408.60,20.01 -fromchars,auto,256,10,724,9,28049.70,27655.11,20.31 -fromchars,kernel,256,10,789,9,25734.21,25343.37,20.38 -fromchars,gmp,256,10,2472,9,8093.38,8082.46,20.02 -fromchars,gmpz,256,10,2000,9,9998.69,9995.67,20.00 -fromchars,auto,2000,10,48,9,425656.81,423590.75,20.43 -fromchars,kernel,2000,10,49,9,408122.57,407482.86,20.00 -fromchars,gmp,2000,10,110,9,182485.57,182394.81,20.08 -fromchars,gmpz,2000,10,102,9,197755.04,197723.30,20.17 diff --git a/tests/beman/big_int/perf/item1/x64r3_base64_seed2b.csv b/tests/beman/big_int/perf/item1/x64r3_base64_seed2b.csv deleted file mode 100644 index 80ab778c..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_base64_seed2b.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T18:06:11Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2387996,9,8.20,8.18,19.62 -add,inplace,1,1,2424857,9,4.10,4.09,19.90 -add,kernel,1,1,10589098,9,1.89,1.89,20.00 -add,floor,1,1,2037924,9,9.81,9.79,20.03 -add,gmp,1,1,8822598,9,2.27,2.27,20.00 -add,gmpz,1,1,4791446,9,4.16,4.16,19.96 -add,auto,2,2,1123317,9,17.89,17.77,20.11 -add,inplace,2,2,1710963,9,5.85,5.77,20.02 -add,kernel,2,2,8490091,9,2.36,2.34,20.07 -add,floor,2,2,1957175,9,10.19,10.13,19.95 -add,gmp,2,2,8824003,9,2.27,2.27,20.00 -add,gmpz,2,2,4813025,9,4.16,4.16,20.00 -add,auto,4,4,1113620,9,17.94,17.88,19.98 -add,inplace,4,4,1784113,9,5.59,5.57,19.94 -add,kernel,4,4,6453401,9,3.06,3.03,19.83 -add,floor,4,4,1835404,9,10.95,10.91,20.09 -add,gmp,4,4,8009318,9,2.50,2.50,20.00 -add,gmpz,4,4,4597204,9,4.34,4.34,19.98 -add,auto,8,8,1044745,9,19.26,19.14,20.28 -add,inplace,8,8,1369229,9,7.30,7.27,19.99 -add,kernel,8,8,4360536,9,4.63,4.54,20.31 -add,floor,8,8,1607769,9,12.50,12.42,20.08 -add,gmp,8,8,5425615,9,3.69,3.69,20.05 -add,gmpz,8,8,4303077,9,4.66,4.64,20.04 -add,auto,16,16,810163,9,25.32,25.11,20.49 -add,inplace,16,16,832624,9,11.90,11.88,19.86 -add,kernel,16,16,2645915,9,7.56,7.56,20.01 -add,floor,16,16,1299297,9,15.41,15.36,20.04 -add,gmp,16,16,2921277,9,6.85,6.84,20.01 -add,gmpz,16,16,3065987,9,6.51,6.49,20.00 -add,auto,64,64,312848,9,63.47,63.13,19.86 -add,inplace,64,64,257268,9,38.86,38.81,20.00 -add,kernel,64,64,602613,9,33.21,33.18,20.03 -add,floor,64,64,486151,9,41.28,40.92,20.08 -add,gmp,64,64,1294763,9,15.45,15.45,20.00 -add,gmpz,64,64,1212627,9,16.49,16.46,19.99 -add,auto,256,256,89571,9,223.44,223.28,20.04 -add,inplace,256,256,68677,9,145.59,145.55,20.00 -add,kernel,256,256,140273,9,142.56,142.53,20.05 -add,floor,256,256,126002,9,158.77,158.52,20.02 -add,gmp,256,256,255641,9,78.23,78.23,20.00 -add,gmpz,256,256,251685,9,79.46,79.36,19.99 -add,auto,1024,1024,23760,9,841.59,841.45,20.00 -add,inplace,1024,1024,17158,9,582.99,582.85,20.01 -add,kernel,1024,1024,34571,9,578.42,578.41,20.00 -add,floor,1024,1024,33657,9,594.19,594.04,20.00 -add,gmp,1024,1024,51229,9,390.41,390.40,20.00 -add,gmpz,1024,1024,51105,9,391.36,391.34,20.01 -add,auto,2000,2000,11625,9,1720.69,1720.51,20.00 -add,inplace,2000,2000,8820,9,1133.94,1133.92,20.00 -add,kernel,2000,2000,17651,9,1133.16,1133.08,20.02 -add,floor,2000,2000,17393,9,1150.21,1149.85,20.01 -add,gmp,2000,2000,42951,9,463.55,463.52,19.91 -add,gmpz,2000,2000,41361,9,483.50,481.96,20.00 -add,auto,1024,1,71270,9,280.48,280.02,19.99 -add,inplace,1024,1,17201,9,579.77,579.68,20.00 -add,kernel,1024,1,34403,9,577.70,577.66,19.87 -add,floor,1024,1,33707,9,593.56,593.37,20.01 -add,gmp,1024,1,85977,9,232.64,232.57,20.00 -add,gmpz,1024,1,85432,9,234.15,233.75,20.02 -sub,auto,1,1,2224394,9,9.01,8.92,20.05 -sub,inplace,1,1,2521164,9,3.97,3.97,20.03 -sub,kernel,1,1,13236213,9,1.51,1.51,20.00 -sub,floor,1,1,10541215,9,1.90,1.89,20.07 -sub,gmp,1,1,8824143,9,2.27,2.27,20.00 -sub,gmpz,1,1,4603802,9,4.34,4.34,20.05 -sub,auto,2,2,1058712,9,19.29,18.96,20.37 -sub,inplace,2,2,2179572,9,4.62,4.58,20.11 -sub,kernel,2,2,9626246,9,2.09,2.08,20.10 -sub,floor,2,2,2015338,9,9.99,9.94,20.16 -sub,gmp,2,2,8758598,9,2.27,2.27,19.86 -sub,gmpz,2,2,4603796,9,4.35,4.34,20.05 -sub,auto,4,4,1040951,9,19.21,18.83,19.92 -sub,inplace,4,4,1836367,9,5.42,5.41,19.94 -sub,kernel,4,4,7016830,9,2.86,2.83,20.12 -sub,floor,4,4,1874542,9,10.76,10.66,20.12 -sub,gmp,4,4,8045538,9,2.49,2.49,20.03 -sub,gmpz,4,4,4325222,9,4.66,4.62,20.14 -sub,auto,8,8,969633,9,20.58,20.46,19.94 -sub,inplace,8,8,1385596,9,7.17,7.16,19.90 -sub,kernel,8,8,4589758,9,4.37,4.35,20.05 -sub,floor,8,8,1628363,9,12.37,12.31,20.13 -sub,gmp,8,8,5437275,9,3.68,3.68,20.04 -sub,gmpz,8,8,4019672,9,4.96,4.94,19.95 -sub,auto,16,16,783361,9,25.76,25.24,20.16 -sub,inplace,16,16,941215,9,10.55,10.52,19.88 -sub,kernel,16,16,2492892,9,8.02,8.02,20.03 -sub,floor,16,16,1313194,9,15.27,15.26,20.08 -sub,gmp,16,16,3634124,9,5.50,5.50,20.07 -sub,gmpz,16,16,2944036,9,6.79,6.77,20.01 -sub,auto,64,64,304154,9,65.67,65.60,19.97 -sub,inplace,64,64,263928,9,37.85,37.78,19.99 -sub,kernel,64,64,607489,9,32.91,32.89,19.99 -sub,floor,64,64,474881,9,42.13,42.07,20.00 -sub,gmp,64,64,1294743,9,15.45,15.45,20.00 -sub,gmpz,64,64,1191080,9,16.74,16.71,19.94 -sub,auto,256,256,89287,9,224.16,223.99,20.03 -sub,inplace,256,256,68777,9,145.42,145.37,20.00 -sub,kernel,256,256,139989,9,142.84,142.80,20.00 -sub,floor,256,256,126150,9,158.59,158.46,20.01 -sub,gmp,256,256,255618,9,78.23,78.22,20.00 -sub,gmpz,256,256,250525,9,79.87,79.82,20.01 -sub,auto,1024,1024,23717,9,843.14,842.90,20.00 -sub,inplace,1024,1024,17197,9,581.51,581.44,20.00 -sub,kernel,1024,1024,34529,9,578.24,578.22,19.97 -sub,floor,1024,1024,33666,9,594.22,593.95,20.03 -sub,gmp,1024,1024,21188,9,944.29,943.98,20.04 -sub,gmpz,1024,1024,21081,9,948.93,948.57,20.00 -sub,auto,2000,2000,11483,9,1741.81,1741.68,20.00 -sub,inplace,2000,2000,8818,9,1134.19,1134.01,20.02 -sub,kernel,2000,2000,17647,9,1131.67,1131.60,19.97 -sub,floor,2000,2000,17428,9,1147.15,1147.05,19.99 -sub,gmp,2000,2000,41810,9,478.19,478.12,19.99 -sub,gmpz,2000,2000,40523,9,492.22,490.82,20.01 -sub,auto,1024,1,70498,9,283.49,282.93,19.99 -sub,inplace,1024,1,17251,9,579.72,579.64,20.02 -sub,kernel,1024,1,34618,9,577.75,577.73,20.00 -sub,floor,1024,1,33716,9,593.21,593.09,20.00 -sub,gmp,1024,1,85585,9,233.47,233.42,19.98 -sub,gmpz,1024,1,85354,9,234.23,233.90,19.99 -shl,auto,1,13,1207837,9,16.70,16.55,20.19 -shl,inplace,1,13,2454978,9,4.07,4.04,20.01 -shl,kernel,1,13,9637685,9,2.08,2.07,20.01 -shl,kernelip,1,13,5885913,9,1.74,1.71,20.55 -shl,floor,1,13,2084293,9,9.82,9.81,20.47 -shl,gmp,1,13,9624830,9,1.89,1.89,18.19 -shl,gmpz,1,13,5771607,9,3.47,3.46,20.00 -shl,auto,4,13,1062291,9,18.76,18.56,19.90 -shl,inplace,4,13,1930584,9,5.17,5.13,19.94 -shl,kernel,4,13,5815427,9,3.46,3.44,20.11 -shl,kernelip,4,13,3340545,9,2.95,2.90,19.65 -shl,floor,4,13,1714412,9,11.33,11.32,19.45 -shl,gmp,4,13,7991444,9,2.31,2.31,18.46 -shl,gmpz,4,13,4904331,9,4.08,4.08,20.02 -shl,auto,16,13,806072,9,24.98,24.58,20.08 -shl,inplace,16,13,1091710,9,9.17,9.15,20.02 -shl,kernel,16,13,2570501,9,7.78,7.77,20.03 -shl,kernelip,16,13,1412311,9,7.09,6.95,19.94 -shl,floor,16,13,1255572,9,15.22,15.21,19.20 -shl,gmp,16,13,4926520,9,4.05,4.05,20.03 -shl,gmpz,16,13,3442381,9,5.82,5.81,20.05 -shl,auto,256,13,145198,9,134.95,132.38,19.59 -shl,inplace,256,13,107089,9,93.02,92.74,19.92 -shl,kernel,256,13,214715,9,93.15,93.09,20.01 -shl,kernelip,256,13,102352,9,97.72,97.63,20.00 -shl,floor,256,13,178101,9,116.76,116.66,20.79 -shl,gmp,256,13,423545,9,47.31,47.13,20.03 -shl,gmpz,256,13,398786,9,50.32,50.02,20.05 -shl,auto,2000,13,21802,9,916.94,914.99,19.98 -shl,inplace,2000,13,15188,9,657.29,656.27,19.97 -shl,kernel,2000,13,27780,9,720.08,719.92,20.01 -shl,kernelip,2000,13,13980,9,715.35,715.31,20.01 -shl,floor,2000,13,27168,9,739.98,739.79,20.10 -shl,gmp,2000,13,59365,9,335.51,335.38,19.92 -shl,gmpz,2000,13,58776,9,338.52,338.35,19.90 -shl,auto,2000,77,18811,9,1065.41,1063.95,20.05 -shl,inplace,2000,77,13062,9,766.37,765.68,20.05 -shl,kernel,2000,77,23564,9,849.32,848.68,20.02 -shl,kernelip,2000,77,12164,9,822.30,822.02,20.01 -shl,floor,2000,77,22925,9,874.20,871.03,20.02 -shl,gmp,2000,77,59188,9,337.73,337.72,20.01 -shl,gmpz,2000,77,59109,9,338.40,338.35,20.00 -shr,auto,1,13,1973793,9,10.10,10.06,19.95 -shr,inplace,1,13,2767179,9,3.61,3.58,19.99 -shr,kernel,1,13,11735178,9,1.70,1.70,19.97 -shr,floor,1,13,8824200,9,2.27,2.27,20.00 -shr,gmp,1,13,10588587,9,1.89,1.89,20.00 -shr,gmpz,1,13,6110104,9,3.27,3.27,20.01 -shr,auto,4,13,951231,9,21.00,20.90,19.98 -shr,inplace,4,13,2092694,9,4.68,4.59,19.61 -shr,kernel,4,13,5775688,9,3.47,3.46,20.06 -shr,floor,4,13,1673062,9,11.97,11.94,20.06 -shr,gmp,4,13,8655420,9,2.33,2.32,20.19 -shr,gmpz,4,13,5049574,9,3.96,3.94,20.01 -shr,auto,16,13,773196,9,25.80,25.73,19.96 -shr,inplace,16,13,1143486,9,8.71,8.67,19.92 -shr,kernel,16,13,2446214,9,8.11,8.03,19.83 -shr,floor,16,13,1172384,9,17.02,16.98,19.96 -shr,gmp,16,13,4652749,9,4.30,4.30,20.03 -shr,gmpz,16,13,3073857,9,6.20,6.16,19.22 -shr,auto,256,13,145414,9,137.10,136.75,19.94 -shr,inplace,256,13,106633,9,93.76,93.43,19.99 -shr,kernel,256,13,181130,9,110.00,109.92,19.93 -shr,floor,256,13,152437,9,131.34,131.09,20.01 -shr,gmp,256,13,414373,9,48.09,47.90,19.92 -shr,gmpz,256,13,394450,9,50.66,50.55,19.98 -shr,auto,2000,13,21021,9,949.64,949.01,19.99 -shr,inplace,2000,13,15231,9,656.85,656.50,20.01 -shr,kernel,2000,13,24636,9,811.81,811.79,20.03 -shr,floor,2000,13,24026,9,832.67,832.32,20.01 -shr,gmp,2000,13,59529,9,335.97,335.84,20.00 -shr,gmpz,2000,13,59011,9,338.87,338.72,20.00 -shr,auto,2000,77,18460,9,1082.81,1082.24,19.99 -shr,inplace,2000,77,13079,9,764.58,764.29,20.00 -shr,kernel,2000,77,24144,9,828.40,828.34,20.00 -shr,floor,2000,77,23523,9,850.63,850.38,20.01 -shr,gmp,2000,77,59528,9,335.93,335.91,20.00 -shr,gmpz,2000,77,58956,9,339.24,339.20,20.00 -mul,auto,1,1,1039451,9,19.19,19.14,19.95 -mul,gmp,1,1,5891065,9,3.39,3.38,19.99 -mul,gmpz,1,1,5033529,9,3.97,3.97,19.99 -mul,auto,2,2,718415,9,27.91,27.81,20.07 -mul,kernel,2,2,2815099,9,7.61,7.56,21.41 -mul,floor,2,2,1333390,9,15.07,14.96,20.08 -mul,gmp,2,2,5235920,9,3.83,3.81,20.04 -mul,gmpz,2,2,3262002,9,6.13,6.09,19.99 -mul,auto,3,3,675119,9,29.70,29.53,20.05 -mul,kernel,3,3,2339584,9,9.02,9.00,21.11 -mul,floor,3,3,1220773,9,16.59,16.41,20.26 -mul,gmp,3,3,2546003,9,7.85,7.72,19.97 -mul,gmpz,3,3,1998786,9,10.01,9.98,20.01 -mul,auto,4,4,630228,9,31.83,31.55,20.06 -mul,kernel,4,4,1891113,9,11.13,11.07,21.04 -mul,floor,4,4,1082561,9,18.54,18.40,20.07 -mul,gmp,4,4,2062918,9,9.64,9.58,19.88 -mul,gmpz,4,4,1653116,9,12.13,12.11,20.08 -mul,auto,6,6,477854,9,41.90,41.78,20.02 -mul,kernel,6,6,1195121,9,17.48,17.47,20.90 -mul,floor,6,6,806073,9,24.70,24.65,19.93 -mul,gmp,6,6,1273029,9,15.67,15.65,19.97 -mul,gmpz,6,6,1107404,9,18.03,17.96,19.97 -mul,auto,8,8,420366,9,47.27,47.14,19.89 -mul,kernel,8,8,810274,9,25.48,25.40,20.68 -mul,floor,8,8,608944,9,32.60,32.45,19.86 -mul,gmp,8,8,735682,9,27.14,27.00,19.97 -mul,gmpz,8,8,692814,9,28.82,28.51,20.03 -mul,auto,12,12,286772,9,70.05,69.66,20.07 -mul,kernel,12,12,425591,9,47.56,47.31,20.21 -mul,floor,12,12,366176,9,54.87,54.69,20.09 -mul,gmp,12,12,411946,9,48.56,48.53,20.01 -mul,gmpz,12,12,394067,9,50.76,50.75,20.00 -mul,auto,16,16,196518,9,101.57,101.41,19.97 -mul,kernel,16,16,255974,9,78.96,78.79,20.22 -mul,floor,16,16,233172,9,86.05,85.59,20.05 -mul,gmp,16,16,244279,9,81.89,81.88,20.01 -mul,gmpz,16,16,237837,9,84.06,84.03,20.00 -mul,auto,32,32,93890,9,213.09,212.69,20.01 -mul,kernel,32,32,107590,9,187.03,186.43,20.19 -mul,floor,32,32,101897,9,196.51,195.77,20.03 -mul,gmp,32,32,73072,9,270.22,268.49,19.79 -mul,gmpz,32,32,73696,9,271.08,270.92,19.98 -mul,auto,64,64,38650,9,517.30,516.47,20.00 -mul,kernel,64,64,41419,9,484.55,483.79,20.12 -mul,floor,64,64,40719,9,490.60,490.34,19.99 -mul,gmp,64,64,22905,9,869.09,862.08,19.89 -mul,gmpz,64,64,23268,9,858.25,857.85,19.98 -mul,auto,128,128,11580,9,1726.56,1725.57,20.01 -mul,kernel,128,128,11812,9,1698.80,1696.43,20.07 -mul,floor,128,128,11759,9,1701.60,1700.50,20.01 -mul,gmp,128,128,7180,9,2768.13,2750.13,19.87 -mul,gmpz,128,128,7305,9,2719.69,2717.84,19.87 -mul,auto,256,256,3204,9,6237.72,6235.92,19.99 -mul,kernel,256,256,3252,9,6164.94,6161.10,20.07 -mul,floor,256,256,3243,9,6164.99,6161.21,19.99 -mul,gmp,256,256,2504,9,7901.31,7830.60,19.83 -mul,gmpz,256,256,2553,9,7809.47,7805.78,19.94 -mul,auto,512,512,1026,9,19400.17,19369.30,19.92 -mul,kernel,512,512,1041,9,19244.47,19228.01,20.04 -mul,floor,512,512,1039,9,19248.86,19236.27,20.01 -mul,gmp,512,512,945,9,20971.00,20964.31,19.83 -mul,gmpz,512,512,960,9,20836.70,20824.39,20.00 -mul,auto,1000,1000,334,9,59930.25,59818.62,20.02 -mul,kernel,1000,1000,337,9,59559.12,59496.17,20.07 -mul,floor,1000,1000,337,9,59501.96,59443.07,20.05 -mul,gmp,1000,1000,372,9,53557.98,53549.15,19.92 -mul,gmpz,1000,1000,375,9,53364.86,53349.59,20.01 -mul,auto,2000,2000,114,9,176820.36,176705.29,20.16 -mul,kernel,2000,2000,113,9,177691.74,177461.63,20.08 -mul,floor,2000,2000,113,9,177545.32,177408.57,20.07 -mul,gmp,2000,2000,139,9,144100.32,144078.65,20.04 -mul,gmpz,2000,2000,139,9,144190.43,144106.89,20.04 -mul,auto,2000,100,1122,9,17832.22,17827.95,20.02 -mul,kernel,2000,100,1133,9,17660.35,17653.35,20.01 -mul,floor,2000,100,1132,9,17682.28,17674.43,20.03 -mul,gmp,2000,100,547,9,36254.18,35947.20,19.85 -mul,gmpz,2000,100,557,9,35947.20,35818.69,20.01 -sqr,auto,4,4,598669,9,33.30,33.17,19.95 -sqr,kernel,4,4,2197805,9,9.11,9.07,20.03 -sqr,floor,4,4,1205910,9,16.92,16.90,20.40 -sqr,gmp,4,4,3428166,9,5.83,5.79,20.02 -sqr,gmpz,4,4,2240482,9,8.83,8.78,19.80 -sqr,auto,16,16,251289,9,79.56,79.42,20.00 -sqr,kernel,16,16,355855,9,56.22,56.14,20.01 -sqr,floor,16,16,320351,9,62.42,62.38,20.00 -sqr,gmp,16,16,396441,9,49.84,49.77,19.78 -sqr,gmpz,16,16,383935,9,52.09,52.08,20.01 -sqr,auto,64,64,66248,9,301.69,301.21,19.99 -sqr,kernel,64,64,74184,9,269.49,269.23,20.02 -sqr,floor,64,64,72511,9,280.16,279.48,20.33 -sqr,gmp,64,64,35679,9,559.58,557.07,19.95 -sqr,gmpz,64,64,36110,9,552.57,551.17,19.95 -sqr,auto,512,512,1880,9,10628.86,10619.06,19.98 -sqr,kernel,512,512,1884,9,10619.70,10604.28,20.01 -sqr,floor,512,512,1891,9,10585.77,10574.18,20.02 -sqr,gmp,512,512,1326,9,15077.99,15070.25,20.01 -sqr,gmpz,512,512,1327,9,15072.12,15066.99,20.01 -sqr,auto,2000,2000,203,9,98578.09,98547.48,20.02 -sqr,kernel,2000,2000,204,9,98156.43,98077.76,20.03 -sqr,floor,2000,2000,204,9,98275.50,98254.48,20.05 -sqr,gmp,2000,2000,199,9,100587.33,100521.71,20.02 -sqr,gmpz,2000,2000,199,9,100585.44,100523.41,20.02 -divrem,auto,2,1,491595,9,40.63,40.45,19.96 -divrem,kernel,2,1,3620301,9,5.44,5.43,19.73 -divrem,floor,2,1,1567816,9,12.77,12.75,20.02 -divrem,gmp,2,1,2985763,9,6.70,6.69,20.05 -divrem,gmpz,2,1,1716585,9,11.61,11.56,19.93 -divrem,auto,8,4,170082,9,117.38,116.73,19.97 -divrem,kernel,8,4,395233,9,50.76,50.62,20.06 -divrem,floor,8,4,307042,9,64.72,64.37,19.88 -divrem,gmp,8,4,456601,9,43.66,43.51,19.93 -divrem,gmpz,8,4,435352,9,46.03,45.79,20.05 -divrem,auto,32,16,53587,9,372.72,371.84,19.98 -divrem,kernel,32,16,69090,9,291.03,290.57,20.10 -divrem,floor,32,16,65766,9,303.98,303.83,20.00 -divrem,gmp,32,16,105298,9,190.53,190.21,20.07 -divrem,gmpz,32,16,103187,9,193.76,193.13,19.99 -divrem,auto,128,64,5985,9,3342.24,3341.52,20.00 -divrem,kernel,128,64,6256,9,3198.33,3197.07,20.02 -divrem,floor,128,64,6231,9,3209.92,3206.56,20.01 -divrem,gmp,128,64,11627,9,1719.47,1718.62,20.00 -divrem,gmpz,128,64,11612,9,1722.72,1721.76,20.04 -divrem,auto,512,256,685,9,29336.20,29309.22,20.11 -divrem,kernel,512,256,693,9,28866.30,28860.08,20.01 -divrem,floor,512,256,690,9,28992.49,28983.89,20.01 -divrem,gmp,512,256,1230,9,16258.22,16253.48,20.01 -divrem,gmpz,512,256,1229,9,16280.29,16276.74,20.01 -divrem,auto,2000,1000,108,9,185479.68,184796.63,20.02 -divrem,kernel,2000,1000,109,9,184558.23,184463.45,20.13 -divrem,floor,2000,1000,109,9,184452.06,184409.70,20.11 -divrem,gmp,2000,1000,145,9,138090.11,138050.40,20.02 -divrem,gmpz,2000,1000,145,9,138022.53,137992.37,20.01 -divrem,auto,4000,2000,42,9,478703.57,478441.10,20.11 -divrem,kernel,4000,2000,43,9,473096.00,472899.09,20.36 -divrem,floor,4000,2000,43,9,472199.00,472027.47,20.31 -divrem,gmp,4000,2000,60,9,333010.05,331558.02,19.98 -divrem,gmpz,4000,2000,61,9,332909.85,332439.51,20.31 -divrem,auto,2000,100,139,9,143770.04,143207.14,20.00 -divrem,kernel,2000,100,138,9,145378.46,144787.87,20.07 -divrem,floor,2000,100,140,9,142053.14,141345.92,19.88 -divrem,gmp,2000,100,276,9,72564.33,72536.06,20.03 -divrem,gmpz,2000,100,278,9,71983.24,71968.71,20.01 -divrem,auto,65536,1,103,9,193575.36,193136.25,19.93 -divrem,kernel,65536,1,120,9,167139.73,166849.07,20.05 -divrem,floor,65536,1,115,9,174610.75,174532.10,20.09 -divrem,gmp,65536,1,135,9,148100.30,148094.67,19.99 -divrem,gmpz,65536,1,136,9,148107.45,148101.24,20.14 -tochars,auto,1,10,1370647,9,14.62,14.55,20.03 -tochars,kernel,1,10,312078,9,64.25,63.94,20.04 -tochars,gmp,1,10,994385,9,20.06,19.91,19.94 -tochars,gmpz,1,10,582900,9,34.29,34.23,19.99 -tochars,auto,4,10,122160,9,163.47,162.81,19.98 -tochars,kernel,4,10,110343,9,181.47,179.88,20.02 -tochars,gmp,4,10,279275,9,71.62,71.59,20.01 -tochars,gmpz,4,10,202706,9,98.65,98.52,20.00 -tochars,auto,16,10,16954,9,1180.16,1176.64,20.02 -tochars,kernel,16,10,19274,9,1036.47,1034.01,19.98 -tochars,gmp,16,10,39762,9,503.13,502.92,20.01 -tochars,gmpz,16,10,33833,9,589.74,586.97,19.94 -tochars,auto,64,10,3562,9,5623.40,5618.01,20.03 -tochars,kernel,64,10,3810,9,5244.75,5237.66,19.98 -tochars,gmp,64,10,7519,9,2661.97,2658.93,20.02 -tochars,gmpz,64,10,6794,9,2947.78,2945.02,20.03 -tochars,auto,256,10,558,9,35879.65,35863.90,20.09 -tochars,kernel,256,10,579,9,34592.11,34568.03,20.03 -tochars,gmp,256,10,1076,9,18590.38,18577.93,20.02 -tochars,gmpz,256,10,1019,9,19648.49,19617.68,20.02 -tochars,auto,2000,10,33,9,609843.67,609265.33,20.13 -tochars,kernel,2000,10,35,9,584418.23,583824.63,20.45 -tochars,gmp,2000,10,50,9,399474.30,399260.12,19.98 -tochars,gmpz,2000,10,49,9,408981.69,408486.35,20.12 -tochars,auto,16,16,162052,9,122.34,122.10,19.83 -tochars,gmp,16,16,207081,9,96.73,96.55,20.03 -tochars,gmpz,16,16,128283,9,155.86,155.71,19.99 -tochars,auto,2000,16,1454,9,13611.90,13611.20,19.79 -tochars,gmp,2000,16,1800,9,11111.45,11110.50,20.03 -tochars,gmpz,2000,16,1116,9,17926.92,17921.20,20.03 -fromchars,auto,4,10,99594,9,199.97,199.29,19.90 -fromchars,kernel,4,10,447870,9,44.60,44.47,19.98 -fromchars,gmp,4,10,623006,9,31.98,31.92,19.92 -fromchars,gmpz,4,10,289038,9,69.21,69.11,20.05 -fromchars,auto,16,10,47194,9,423.15,419.06,19.97 -fromchars,kernel,16,10,91782,9,214.14,210.88,19.74 -fromchars,gmp,16,10,162459,9,123.30,123.07,20.03 -fromchars,gmpz,16,10,75214,9,267.49,265.60,20.12 -fromchars,auto,64,10,7203,9,2775.57,2679.77,19.98 -fromchars,kernel,64,10,10124,9,2115.40,1969.90,20.97 -fromchars,gmp,64,10,22879,9,870.43,870.19,19.92 -fromchars,gmpz,64,10,14324,9,1355.37,1354.35,19.45 -fromchars,auto,256,10,693,9,28452.83,27661.88,19.71 -fromchars,kernel,256,10,764,9,25391.54,24963.82,19.59 -fromchars,gmp,256,10,2478,9,8064.47,8056.40,19.98 -fromchars,gmpz,256,10,2008,9,9968.97,9962.93,20.02 -fromchars,auto,2000,10,47,9,428686.32,427264.47,20.14 -fromchars,kernel,2000,10,49,9,408811.71,408714.63,20.06 -fromchars,gmp,2000,10,110,9,183303.92,183244.52,20.16 -fromchars,gmpz,2000,10,101,9,198215.80,198144.24,20.02 diff --git a/tests/beman/big_int/perf/item1/x64r3_base64_spot_seed1.csv b/tests/beman/big_int/perf/item1/x64r3_base64_spot_seed1.csv deleted file mode 100644 index 72c07568..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_base64_spot_seed1.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,1353,3,14784.58,14784.33,20.00 -add,inplace,16384,16384,1076,3,9330.72,9298.38,20.06 -add,kernel,16384,16384,2152,3,9295.45,9295.09,20.00 -add,floor,16384,16384,2147,3,9317.86,9315.43,20.01 -add,gmp,16384,16384,2870,3,6970.37,6969.86,20.00 -add,gmpz,16384,16384,2545,3,7862.25,7861.06,20.01 -mul,auto,2000,2000,114,3,176940.58,176911.43,20.17 -mul,kernel,2000,2000,114,3,176232.07,176157.55,20.10 -mul,floor,2000,2000,114,3,176336.03,176141.85,20.10 -mul,gmp,2000,2000,139,3,144476.17,144466.93,20.08 -mul,gmpz,2000,2000,138,3,144578.78,144570.24,19.95 -mul,auto,16384,16384,6,3,3783414.67,3773853.83,22.68 -mul,kernel,16384,16384,6,3,3776078.00,3774677.50,22.66 -mul,floor,16384,16384,6,3,3783033.33,3783005.67,22.71 -mul,gmp,16384,16384,12,3,1765017.50,1764822.50,21.18 -mul,gmpz,16384,16384,11,3,1837808.09,1765515.45,19.96 -divrem,auto,4096,2048,41,3,498866.27,498793.37,20.45 -divrem,kernel,4096,2048,40,3,500623.72,500554.42,20.02 -divrem,floor,4096,2048,41,3,499045.85,498761.59,20.46 -divrem,gmp,4096,2048,55,3,368541.29,368300.78,20.28 -divrem,gmpz,4096,2048,55,3,368662.38,368024.84,20.36 -tochars,auto,10000,10,4,3,5872295.00,5855578.00,23.51 -tochars,kernel,10000,10,4,3,5819560.75,5813242.75,23.29 -tochars,gmp,10000,10,5,3,4182745.00,4179139.00,20.91 -tochars,gmpz,10000,10,5,3,4222820.00,4219535.80,21.11 -fromchars,auto,10000,10,6,3,3668094.00,3657601.33,22.01 -fromchars,kernel,10000,10,6,3,3586443.83,3585116.17,21.54 -fromchars,gmp,10000,10,11,3,1931512.73,1930175.36,21.24 -fromchars,gmpz,10000,10,10,3,2007044.20,2006718.10,20.07 diff --git a/tests/beman/big_int/perf/item1/x64r3_base64_spot_seed2.csv b/tests/beman/big_int/perf/item1/x64r3_base64_spot_seed2.csv deleted file mode 100644 index 78d4265f..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_base64_spot_seed2.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,1349,3,14835.79,14833.96,20.02 -add,inplace,16384,16384,1076,3,9299.46,9299.04,20.01 -add,kernel,16384,16384,2148,3,9313.04,9312.95,20.00 -add,floor,16384,16384,2144,3,9329.65,9328.90,20.00 -add,gmp,16384,16384,2914,3,6865.18,6864.82,20.01 -add,gmpz,16384,16384,2913,3,6867.27,6867.03,20.01 -mul,auto,2000,2000,113,3,177686.62,177631.35,20.08 -mul,kernel,2000,2000,114,3,176442.57,176421.61,20.12 -mul,floor,2000,2000,114,3,176522.79,176385.67,20.13 -mul,gmp,2000,2000,139,3,144096.81,144095.42,20.03 -mul,gmpz,2000,2000,139,3,144267.42,144213.35,20.06 -mul,auto,16384,16384,6,3,3773047.00,3764158.33,22.62 -mul,kernel,16384,16384,6,3,3780110.83,3778739.17,22.69 -mul,floor,16384,16384,6,3,3782571.33,3775308.67,22.69 -mul,gmp,16384,16384,12,3,1779289.42,1760679.50,21.48 -mul,gmpz,16384,16384,12,3,1761074.42,1761063.25,21.15 -divrem,auto,4096,2048,41,3,499201.37,499073.05,20.47 -divrem,kernel,4096,2048,41,3,495269.10,495260.95,20.31 -divrem,floor,4096,2048,41,3,495147.56,495086.98,20.30 -divrem,gmp,4096,2048,54,3,372207.54,371211.26,20.08 -divrem,gmpz,4096,2048,55,3,369766.22,369581.00,20.34 -tochars,auto,10000,10,4,3,5857197.25,5855941.25,23.44 -tochars,kernel,10000,10,4,3,5868474.25,5867433.00,23.57 -tochars,gmp,10000,10,5,3,4189936.00,4185225.00,20.98 -tochars,gmpz,10000,10,5,3,4229456.60,4227716.80,21.15 -fromchars,auto,10000,10,6,3,3672223.83,3664871.17,22.02 -fromchars,kernel,10000,10,6,3,3590244.83,3585550.17,21.54 -fromchars,gmp,10000,10,11,3,1933851.18,1932935.36,21.27 -fromchars,gmpz,10000,10,10,3,2010423.80,2010307.30,20.15 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64_seed1a.csv b/tests/beman/big_int/perf/item1/x64r3_new64_seed1a.csv deleted file mode 100644 index d608d700..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_new64_seed1a.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T17:53:27Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,3643588,9,5.47,5.40,19.90 -add,inplace,1,1,3883833,9,2.58,2.56,20.01 -add,kernel,1,1,10453734,9,1.94,1.91,20.30 -add,floor,1,1,2035530,9,9.83,9.82,20.02 -add,gmp,1,1,8823983,9,2.27,2.27,20.02 -add,gmpz,1,1,4812960,9,4.16,4.16,20.00 -add,auto,2,2,1254879,9,16.03,15.94,20.11 -add,inplace,2,2,1530416,9,6.42,6.23,19.72 -add,kernel,2,2,8704192,9,2.38,2.32,20.68 -add,floor,2,2,1959242,9,10.21,10.20,20.03 -add,gmp,2,2,8824261,9,2.27,2.27,20.01 -add,gmpz,2,2,4773711,9,4.21,4.18,20.07 -add,auto,4,4,1290254,9,15.57,15.44,20.06 -add,inplace,4,4,1680081,9,5.80,5.69,19.41 -add,kernel,4,4,6491531,9,3.06,3.03,19.89 -add,floor,4,4,1819885,9,10.98,10.97,20.00 -add,gmp,4,4,7989761,9,2.51,2.50,20.09 -add,gmpz,4,4,4509221,9,4.42,4.41,19.94 -add,auto,8,8,1177797,9,17.05,16.97,20.10 -add,inplace,8,8,1367267,9,7.45,7.33,20.39 -add,kernel,8,8,4394631,9,4.55,4.53,20.00 -add,floor,8,8,1598254,9,12.51,12.51,20.00 -add,gmp,8,8,4777311,9,4.18,4.18,19.97 -add,gmpz,8,8,4238922,9,4.72,4.71,20.02 -add,auto,16,16,943830,9,21.22,21.19,20.03 -add,inplace,16,16,886860,9,11.28,11.19,20.00 -add,kernel,16,16,2638970,9,7.58,7.57,20.01 -add,floor,16,16,1282575,9,15.59,15.59,20.00 -add,gmp,16,16,3633213,9,5.50,5.50,20.00 -add,gmpz,16,16,3078278,9,6.53,6.52,20.11 -add,auto,64,64,434300,9,46.17,45.89,20.04 -add,inplace,64,64,280324,9,35.66,35.39,20.01 -add,kernel,64,64,605231,9,32.92,32.76,19.92 -add,floor,64,64,481889,9,40.52,39.75,19.47 -add,gmp,64,64,1294508,9,15.45,15.45,20.00 -add,gmpz,64,64,1212443,9,16.49,16.46,19.98 -add,auto,256,256,122291,9,163.84,163.56,20.05 -add,inplace,256,256,68834,9,144.73,144.69,19.93 -add,kernel,256,256,140372,9,142.27,142.20,19.99 -add,floor,256,256,125913,9,158.51,158.25,19.97 -add,gmp,256,256,255715,9,78.22,78.21,20.00 -add,gmpz,256,256,251406,9,79.49,79.40,20.03 -add,auto,1024,1024,33389,9,599.09,598.93,20.01 -add,inplace,1024,1024,17209,9,581.01,580.90,20.00 -add,kernel,1024,1024,34602,9,577.76,577.62,19.99 -add,floor,1024,1024,33682,9,593.89,593.64,20.00 -add,gmp,1024,1024,51218,9,390.50,390.49,20.00 -add,gmpz,1024,1024,51105,9,391.35,391.33,20.01 -add,auto,2000,2000,17327,9,1154.36,1154.19,20.00 -add,inplace,2000,2000,8817,9,1133.42,1133.36,19.99 -add,kernel,2000,2000,17677,9,1131.45,1131.41,20.01 -add,floor,2000,2000,17436,9,1147.20,1146.87,20.01 -add,gmp,2000,2000,42261,9,473.17,473.13,20.00 -add,gmpz,2000,2000,42598,9,469.51,467.53,20.01 -add,auto,1024,1,79383,9,251.67,251.32,19.97 -add,inplace,1024,1,2066466,9,5.01,4.97,20.71 -add,kernel,1024,1,33278,9,598.84,582.86,19.83 -add,floor,1024,1,32375,9,617.73,617.16,20.00 -add,gmp,1024,1,82585,9,242.34,236.25,19.93 -add,gmpz,1024,1,78647,9,244.30,243.37,19.28 -sub,auto,1,1,3475777,9,6.16,5.90,21.43 -sub,inplace,1,1,3995482,9,2.61,2.51,20.85 -sub,kernel,1,1,12378278,9,1.55,1.55,19.53 -sub,floor,1,1,9583355,9,2.05,2.03,19.76 -sub,gmp,1,1,8824005,9,2.27,2.27,20.00 -sub,gmpz,1,1,4536467,9,4.40,4.39,19.96 -sub,auto,2,2,1261519,9,15.84,15.79,20.01 -sub,inplace,2,2,2032972,9,4.93,4.89,20.12 -sub,kernel,2,2,9134024,9,2.22,2.19,20.31 -sub,floor,2,2,1965873,9,10.23,10.14,20.07 -sub,gmp,2,2,8434438,9,2.37,2.33,19.94 -sub,gmpz,2,2,4463280,9,4.48,4.47,19.99 -sub,auto,4,4,1176614,9,17.05,16.88,20.05 -sub,inplace,4,4,1695053,9,5.94,5.88,20.17 -sub,kernel,4,4,6776179,9,2.94,2.92,19.92 -sub,floor,4,4,1816524,9,11.04,10.88,20.02 -sub,gmp,4,4,7683874,9,2.60,2.59,20.02 -sub,gmpz,4,4,4226582,9,4.75,4.73,20.06 -sub,auto,8,8,1067948,9,18.73,18.70,20.01 -sub,inplace,8,8,1315147,9,7.60,7.48,19.98 -sub,kernel,8,8,4346301,9,4.58,4.56,19.89 -sub,floor,8,8,1594898,9,12.53,12.52,19.99 -sub,gmp,8,8,5195100,9,3.83,3.82,19.91 -sub,gmpz,8,8,3869175,9,5.16,5.15,19.98 -sub,auto,16,16,911605,9,21.92,21.91,19.99 -sub,inplace,16,16,953804,9,10.47,10.44,19.97 -sub,kernel,16,16,2569278,9,7.79,7.79,20.03 -sub,floor,16,16,1266855,9,15.78,15.77,19.99 -sub,gmp,16,16,3496294,9,5.69,5.67,19.89 -sub,gmpz,16,16,2862065,9,6.99,6.92,20.00 -sub,auto,64,64,434743,9,47.85,46.34,20.79 -sub,inplace,64,64,277396,9,34.77,34.51,19.39 -sub,kernel,64,64,608421,9,32.70,32.68,19.90 -sub,floor,64,64,475003,9,42.20,42.16,20.07 -sub,gmp,64,64,1294739,9,15.45,15.45,20.00 -sub,gmpz,64,64,1194432,9,16.75,16.74,20.01 -sub,auto,256,256,123112,9,162.57,162.52,20.01 -sub,inplace,256,256,69276,9,144.37,144.35,20.00 -sub,kernel,256,256,139429,9,143.44,143.43,20.00 -sub,floor,256,256,126410,9,158.35,158.11,20.02 -sub,gmp,256,256,255610,9,78.24,78.24,20.00 -sub,gmpz,256,256,250491,9,79.85,79.73,20.00 -sub,auto,1024,1024,33252,9,598.20,597.79,19.91 -sub,inplace,1024,1024,17246,9,579.87,579.85,20.00 -sub,kernel,1024,1024,34617,9,577.77,577.75,20.03 -sub,floor,1024,1024,33672,9,594.07,593.72,20.00 -sub,gmp,1024,1024,51314,9,389.75,389.75,20.00 -sub,gmpz,1024,1024,51128,9,391.21,391.17,20.00 -sub,auto,2000,2000,17083,9,1154.25,1153.94,19.75 -sub,inplace,2000,2000,8836,9,1131.82,1131.77,20.03 -sub,kernel,2000,2000,17664,9,1132.05,1132.01,20.00 -sub,floor,2000,2000,17285,9,1149.99,1149.79,19.88 -sub,gmp,2000,2000,42908,9,466.14,466.12,20.00 -sub,gmpz,2000,2000,42277,9,472.98,471.29,19.98 -sub,auto,1024,1,79462,9,251.69,251.38,19.99 -sub,inplace,1024,1,2315853,9,4.32,4.26,20.00 -sub,kernel,1024,1,34693,9,576.50,576.49,20.00 -sub,floor,1024,1,33698,9,593.25,593.07,19.99 -sub,gmp,1024,1,85526,9,233.84,233.58,20.01 -sub,gmpz,1024,1,85444,9,234.16,233.74,20.02 -shl,auto,1,13,1587415,9,12.50,12.46,19.88 -shl,inplace,1,13,2318311,9,4.26,4.25,19.76 -shl,kernel,1,13,9624782,9,2.08,2.07,19.96 -shl,kernelip,1,13,5755111,9,1.75,1.71,20.14 -shl,floor,1,13,2077715,9,9.83,9.82,20.47 -shl,gmp,1,13,8712049,9,2.08,2.08,18.12 -shl,gmpz,1,13,6106053,9,3.27,3.27,20.00 -shl,auto,4,13,1470039,9,13.45,13.39,19.84 -shl,inplace,4,13,1870422,9,5.33,5.32,19.95 -shl,kernel,4,13,5646552,9,3.48,3.44,19.75 -shl,kernelip,4,13,3404467,9,2.94,2.93,20.01 -shl,floor,4,13,1775705,9,11.21,11.18,19.90 -shl,gmp,4,13,7991471,9,2.51,2.50,20.06 -shl,gmpz,4,13,4935823,9,4.04,4.04,19.97 -shl,auto,16,13,1175652,9,17.09,17.03,20.09 -shl,inplace,16,13,1071818,9,9.34,9.31,20.02 -shl,kernel,16,13,2644025,9,7.56,7.51,20.07 -shl,kernelip,16,13,1392344,9,7.17,7.15,19.97 -shl,floor,16,13,1343830,9,15.21,15.21,20.45 -shl,gmp,16,13,4873284,9,4.17,4.10,20.39 -shl,gmpz,16,13,3447725,9,5.81,5.80,20.05 -shl,auto,256,13,163795,9,121.91,121.79,20.01 -shl,inplace,256,13,100776,9,99.29,99.19,20.01 -shl,kernel,256,13,211877,9,94.85,94.61,20.10 -shl,kernelip,256,13,103049,9,96.87,96.83,19.97 -shl,floor,256,13,178168,9,114.62,113.68,20.40 -shl,gmp,256,13,423862,9,47.19,47.12,20.01 -shl,gmpz,256,13,401268,9,49.84,49.75,20.00 -shl,auto,2000,13,25889,9,772.77,772.40,20.00 -shl,inplace,2000,13,13949,9,716.86,716.75,20.04 -shl,kernel,2000,13,27788,9,719.80,719.68,20.01 -shl,kernelip,2000,13,13996,9,714.50,714.41,20.00 -shl,floor,2000,13,27140,9,740.52,738.97,20.12 -shl,gmp,2000,13,59441,9,335.47,335.37,19.94 -shl,gmpz,2000,13,59146,9,338.14,337.99,20.00 -shl,auto,2000,77,25831,9,774.42,774.28,20.01 -shl,inplace,2000,77,13487,9,741.10,740.46,19.99 -shl,kernel,2000,77,23461,9,853.00,850.08,20.01 -shl,kernelip,2000,77,12165,9,822.17,822.01,20.02 -shl,floor,2000,77,22969,9,873.03,871.74,20.06 -shl,gmp,2000,77,59246,9,338.10,337.54,20.05 -shl,gmpz,2000,77,58744,9,340.23,339.46,20.00 -shr,auto,1,13,2440620,9,8.21,8.19,20.04 -shr,inplace,1,13,2535872,9,3.97,3.91,20.13 -shr,kernel,1,13,11746026,9,1.70,1.70,19.99 -shr,floor,1,13,8824092,9,2.27,2.27,20.00 -shr,gmp,1,13,10558061,9,1.90,1.89,20.09 -shr,gmpz,1,13,5771441,9,3.47,3.47,20.04 -shr,auto,4,13,1253452,9,16.03,15.94,20.08 -shr,inplace,4,13,1985861,9,5.03,5.02,20.00 -shr,kernel,4,13,5771315,9,3.47,3.47,20.04 -shr,floor,4,13,1674664,9,11.96,11.95,20.04 -shr,gmp,4,13,8590352,9,2.32,2.31,19.93 -shr,gmpz,4,13,5039694,9,3.96,3.94,19.99 -shr,auto,16,13,1005970,9,19.91,19.89,20.07 -shr,inplace,16,13,1113088,9,9.00,8.96,20.02 -shr,kernel,16,13,2361120,9,8.47,8.47,20.02 -shr,floor,16,13,1174938,9,17.04,16.99,20.01 -shr,gmp,16,13,4655612,9,4.30,4.30,20.07 -shr,gmpz,16,13,3223759,9,6.26,6.16,20.24 -shr,auto,256,13,159634,9,125.00,124.92,19.96 -shr,inplace,256,13,100846,9,99.08,99.03,19.98 -shr,kernel,256,13,181906,9,110.10,109.84,20.07 -shr,floor,256,13,152637,9,130.95,130.75,20.05 -shr,gmp,256,13,415335,9,48.11,47.76,19.97 -shr,gmpz,256,13,394090,9,50.71,50.56,19.99 -shr,auto,2000,13,26675,9,749.44,748.95,20.00 -shr,inplace,2000,13,13952,9,716.53,716.42,19.99 -shr,kernel,2000,13,24618,9,812.49,812.45,20.01 -shr,floor,2000,13,24013,9,833.00,832.72,20.00 -shr,gmp,2000,13,59535,9,335.93,335.63,20.00 -shr,gmpz,2000,13,58997,9,339.47,339.06,20.07 -shr,auto,2000,77,26686,9,749.52,749.00,20.00 -shr,inplace,2000,77,13496,9,740.05,738.15,19.97 -shr,kernel,2000,77,24094,9,830.10,830.09,20.00 -shr,floor,2000,77,23433,9,853.50,852.98,20.01 -shr,gmp,2000,77,59534,9,335.94,335.91,20.00 -shr,gmpz,2000,77,58981,9,338.99,338.91,20.00 -mul,auto,1,1,1200719,9,16.68,16.55,20.04 -mul,gmp,1,1,5650371,9,3.52,3.46,19.85 -mul,gmpz,1,1,4958617,9,4.03,4.02,19.99 -mul,auto,2,2,1051799,9,18.92,18.88,19.89 -mul,kernel,2,2,2779955,9,7.55,7.53,21.01 -mul,floor,2,2,1346941,9,14.98,14.91,20.19 -mul,gmp,2,2,5173792,9,3.85,3.84,20.00 -mul,gmpz,2,2,3169278,9,6.21,6.17,19.68 -mul,auto,3,3,982255,9,20.34,20.30,19.99 -mul,kernel,3,3,2135802,9,8.94,8.91,19.11 -mul,floor,3,3,1173006,9,16.54,16.44,19.39 -mul,gmp,3,3,2574089,9,7.80,7.77,20.09 -mul,gmpz,3,3,1851952,9,10.65,10.54,19.75 -mul,auto,4,4,890184,9,22.52,22.33,20.02 -mul,kernel,4,4,1920557,9,10.90,10.89,20.95 -mul,floor,4,4,1101060,9,18.22,18.13,20.06 -mul,gmp,4,4,2062707,9,9.68,9.65,19.98 -mul,gmpz,4,4,1638114,9,12.16,12.12,19.93 -mul,auto,6,6,713501,9,28.04,28.03,20.01 -mul,kernel,6,6,1121024,9,18.44,18.42,20.67 -mul,floor,6,6,784260,9,25.28,25.23,19.82 -mul,gmp,6,6,1252576,9,15.97,15.95,20.02 -mul,gmpz,6,6,1095363,9,18.22,18.19,19.96 -mul,auto,8,8,553633,9,36.11,36.06,20.05 -mul,kernel,8,8,809639,9,25.46,25.40,20.61 -mul,floor,8,8,615947,9,32.21,32.18,19.86 -mul,gmp,8,8,739306,9,27.05,26.90,20.01 -mul,gmpz,8,8,686982,9,28.91,28.74,19.88 -mul,auto,12,12,345174,9,57.93,57.70,19.99 -mul,kernel,12,12,422048,9,48.14,48.05,20.31 -mul,floor,12,12,363653,9,55.02,54.98,20.02 -mul,gmp,12,12,408084,9,48.98,48.79,19.98 -mul,gmpz,12,12,388286,9,51.21,51.01,19.87 -mul,auto,16,16,224843,9,88.80,88.50,19.98 -mul,kernel,16,16,253221,9,79.64,79.28,20.16 -mul,floor,16,16,230637,9,86.82,86.51,20.03 -mul,gmp,16,16,244175,9,81.89,81.86,20.01 -mul,gmpz,16,16,237901,9,84.05,84.02,20.00 -mul,auto,32,32,99726,9,199.76,199.47,19.94 -mul,kernel,32,32,106886,9,187.12,186.87,20.00 -mul,floor,32,32,101691,9,196.70,196.22,20.02 -mul,gmp,32,32,73308,9,272.77,271.80,19.99 -mul,gmpz,32,32,73032,9,273.48,272.69,20.00 -mul,auto,64,64,40492,9,493.70,493.48,20.01 -mul,kernel,64,64,41065,9,488.25,487.96,20.05 -mul,floor,64,64,40479,9,493.20,492.78,19.98 -mul,gmp,64,64,22827,9,875.70,875.43,19.99 -mul,gmpz,64,64,22833,9,875.20,869.11,19.96 -mul,auto,128,128,11612,9,1717.40,1711.53,19.94 -mul,kernel,128,128,11586,9,1720.01,1716.90,19.94 -mul,floor,128,128,11514,9,1736.73,1734.89,20.00 -mul,gmp,128,128,7211,9,2773.35,2772.80,20.02 -mul,gmpz,128,128,7218,9,2761.00,2751.08,19.91 -mul,auto,256,256,3241,9,6172.71,6169.25,20.00 -mul,kernel,256,256,3232,9,6203.81,6181.77,20.04 -mul,floor,256,256,3162,9,6299.81,6257.73,19.90 -mul,gmp,256,256,2501,9,7995.78,7984.67,20.00 -mul,gmpz,256,256,2491,9,7942.26,7912.17,19.78 -mul,auto,512,512,1034,9,19346.30,19339.68,20.01 -mul,kernel,512,512,1041,9,19187.58,19179.57,20.02 -mul,floor,512,512,1042,9,19217.76,19199.16,20.03 -mul,gmp,512,512,936,9,21189.63,21049.48,19.85 -mul,gmpz,512,512,955,9,20867.51,20822.30,19.93 -mul,auto,1000,1000,336,9,59670.76,59621.54,20.05 -mul,kernel,1000,1000,337,9,59559.42,59523.47,20.08 -mul,floor,1000,1000,336,9,59527.20,59497.23,20.00 -mul,gmp,1000,1000,369,9,53915.88,53620.49,19.90 -mul,gmpz,1000,1000,375,9,53428.19,53394.76,20.04 -mul,auto,2000,2000,113,9,176816.95,176744.08,19.98 -mul,kernel,2000,2000,112,9,177081.14,176947.52,19.84 -mul,floor,2000,2000,114,9,177058.78,176883.96,20.18 -mul,gmp,2000,2000,138,9,144460.11,144441.09,19.94 -mul,gmpz,2000,2000,139,9,144578.79,144515.27,20.10 -mul,auto,2000,100,1134,9,17643.33,17640.86,20.01 -mul,kernel,2000,100,1133,9,17742.41,17645.87,20.12 -mul,floor,2000,100,1118,9,17962.63,17799.88,20.08 -mul,gmp,2000,100,550,9,36341.19,36228.83,20.02 -mul,gmpz,2000,100,554,9,35926.25,35729.00,19.90 -sqr,auto,4,4,880390,9,22.33,22.13,19.63 -sqr,kernel,4,4,2021340,9,9.95,9.82,20.09 -sqr,floor,4,4,1221284,9,16.77,16.74,20.48 -sqr,gmp,4,4,3359524,9,5.88,5.86,19.77 -sqr,gmpz,4,4,2262128,9,8.86,8.72,20.04 -sqr,auto,16,16,301017,9,66.51,66.29,20.01 -sqr,kernel,16,16,349790,9,57.17,57.15,20.02 -sqr,floor,16,16,319948,9,62.72,62.62,20.07 -sqr,gmp,16,16,393695,9,50.63,50.25,19.91 -sqr,gmpz,16,16,380889,9,52.50,52.36,20.01 -sqr,auto,64,64,67895,9,294.27,293.84,19.97 -sqr,kernel,64,64,72978,9,273.90,273.21,19.99 -sqr,floor,64,64,71500,9,281.75,281.13,20.14 -sqr,gmp,64,64,35682,9,560.60,560.11,20.01 -sqr,gmpz,64,64,35632,9,561.47,557.75,20.01 -sqr,auto,512,512,1885,9,10614.26,10605.80,20.02 -sqr,kernel,512,512,1898,9,10554.10,10543.38,20.03 -sqr,floor,512,512,1893,9,10559.76,10549.94,19.99 -sqr,gmp,512,512,1305,9,15107.73,15075.41,19.72 -sqr,gmpz,512,512,1322,9,15133.31,15129.53,20.01 -sqr,auto,2000,2000,200,9,100476.68,100443.32,20.10 -sqr,kernel,2000,2000,200,9,99604.27,99553.82,19.95 -sqr,floor,2000,2000,201,9,99628.18,99584.37,20.03 -sqr,gmp,2000,2000,199,9,100635.58,100559.77,20.06 -sqr,gmpz,2000,2000,199,9,100661.50,100548.70,20.04 -divrem,auto,2,1,492235,9,40.56,40.49,19.97 -divrem,kernel,2,1,3573976,9,5.64,5.59,20.33 -divrem,floor,2,1,1563757,9,12.79,12.76,20.03 -divrem,gmp,2,1,2302732,9,8.68,8.67,20.00 -divrem,gmpz,2,1,1514291,9,13.21,13.20,20.02 -divrem,auto,8,4,226608,9,88.47,87.87,20.08 -divrem,kernel,8,4,461891,9,43.24,43.08,20.00 -divrem,floor,8,4,325011,9,62.26,61.21,20.24 -divrem,gmp,8,4,499258,9,40.02,39.75,19.95 -divrem,gmpz,8,4,480819,9,41.47,41.40,19.97 -divrem,auto,32,16,57543,9,344.83,342.63,19.85 -divrem,kernel,32,16,67926,9,292.35,291.08,19.86 -divrem,floor,32,16,64730,9,307.23,305.36,19.87 -divrem,gmp,32,16,104599,9,191.82,190.58,20.05 -divrem,gmpz,32,16,103080,9,194.49,193.67,20.06 -divrem,auto,128,64,5792,9,3450.93,3446.94,20.00 -divrem,kernel,128,64,5994,9,3346.97,3336.84,20.06 -divrem,floor,128,64,5913,9,3378.52,3370.72,19.99 -divrem,gmp,128,64,11642,9,1719.42,1718.22,20.02 -divrem,gmpz,128,64,11596,9,1725.92,1724.88,20.02 -divrem,auto,512,256,664,9,30140.93,30104.84,20.01 -divrem,kernel,512,256,671,9,29811.82,29777.53,20.01 -divrem,floor,512,256,669,9,29945.57,29906.97,20.04 -divrem,gmp,512,256,1203,9,16257.49,16250.06,19.58 -divrem,gmpz,512,256,1225,9,16338.53,16333.87,20.03 -divrem,auto,2000,1000,108,9,186027.10,185835.95,20.09 -divrem,kernel,2000,1000,108,9,185280.84,185157.16,20.01 -divrem,floor,2000,1000,108,9,185626.46,185569.84,20.06 -divrem,gmp,2000,1000,145,9,137913.14,137811.79,20.01 -divrem,gmpz,2000,1000,146,9,137838.39,137808.02,20.14 -divrem,auto,4000,2000,42,9,477718.36,477152.05,20.07 -divrem,kernel,4000,2000,42,9,477943.33,477708.60,20.07 -divrem,floor,4000,2000,42,9,478968.69,478794.98,20.12 -divrem,gmp,4000,2000,59,9,339963.07,338966.22,20.06 -divrem,gmpz,4000,2000,59,9,338980.19,337126.64,19.99 -divrem,auto,2000,100,136,9,147406.85,146953.04,20.06 -divrem,kernel,2000,100,138,9,145605.35,145057.78,20.09 -divrem,floor,2000,100,137,9,145848.26,145313.37,19.97 -divrem,gmp,2000,100,276,9,72615.89,72595.00,20.04 -divrem,gmpz,2000,100,276,9,72577.51,72541.49,20.09 -divrem,auto,65536,1,119,9,168976.73,168302.01,20.11 -divrem,kernel,65536,1,120,9,166975.53,166753.27,20.04 -divrem,floor,65536,1,120,9,167441.31,166934.28,20.09 -divrem,gmp,65536,1,136,9,148099.60,148092.46,20.16 -divrem,gmpz,65536,1,136,9,148103.93,148094.42,20.15 -tochars,auto,1,10,1334312,9,15.01,14.97,20.03 -tochars,kernel,1,10,321985,9,62.02,61.95,19.98 -tochars,gmp,1,10,964748,9,20.64,20.58,19.96 -tochars,gmpz,1,10,591561,9,33.86,33.71,20.02 -tochars,auto,4,10,158380,9,126.33,125.79,20.02 -tochars,kernel,4,10,110778,9,181.18,179.60,20.05 -tochars,gmp,4,10,290419,9,68.90,68.84,20.01 -tochars,gmpz,4,10,207326,9,96.47,96.38,20.00 -tochars,auto,16,10,17076,9,1169.98,1166.75,19.97 -tochars,kernel,16,10,19374,9,1032.22,1029.78,20.01 -tochars,gmp,16,10,39707,9,503.76,503.63,20.00 -tochars,gmpz,16,10,33915,9,591.20,588.80,20.07 -tochars,auto,64,10,3519,9,5696.48,5692.25,20.04 -tochars,kernel,64,10,3761,9,5322.01,5312.00,20.01 -tochars,gmp,64,10,7453,9,2681.87,2677.97,19.99 -tochars,gmpz,64,10,6694,9,2964.41,2961.52,19.85 -tochars,auto,256,10,541,9,37034.57,37015.13,20.06 -tochars,kernel,256,10,563,9,35475.75,35449.18,20.01 -tochars,gmp,256,10,1077,9,18583.68,18571.04,20.02 -tochars,gmpz,256,10,1017,9,19672.81,19660.20,20.01 -tochars,auto,2000,10,33,9,619495.58,619338.27,20.46 -tochars,kernel,2000,10,34,9,596405.06,595935.74,20.28 -tochars,gmp,2000,10,50,9,402684.30,402357.38,20.25 -tochars,gmpz,2000,10,49,9,409860.33,409678.18,20.08 -tochars,auto,16,16,182443,9,108.51,107.87,19.81 -tochars,gmp,16,16,201184,9,99.43,99.15,20.00 -tochars,gmpz,16,16,126055,9,158.54,158.36,20.01 -tochars,auto,2000,16,1670,9,11933.93,11931.18,19.98 -tochars,gmp,2000,16,1801,9,11111.16,11109.93,20.04 -tochars,gmpz,2000,16,1116,9,17928.46,17924.78,20.01 -fromchars,auto,4,10,167300,9,119.68,119.52,20.09 -fromchars,kernel,4,10,533168,9,37.46,37.27,19.98 -fromchars,gmp,4,10,635453,9,31.26,31.21,19.89 -fromchars,gmpz,4,10,301151,9,66.57,66.29,20.05 -fromchars,auto,16,10,46561,9,424.70,417.81,19.76 -fromchars,kernel,16,10,103774,9,200.57,186.43,20.70 -fromchars,gmp,16,10,161238,9,124.84,124.17,20.11 -fromchars,gmpz,16,10,77632,9,256.45,255.56,19.92 -fromchars,auto,64,10,7404,9,2916.09,2703.90,21.61 -fromchars,kernel,64,10,10539,9,1859.31,1710.73,19.47 -fromchars,gmp,64,10,22961,9,871.02,870.39,20.02 -fromchars,gmpz,64,10,14650,9,1365.31,1363.90,20.01 -fromchars,auto,256,10,798,9,27466.31,24915.60,21.22 -fromchars,kernel,256,10,929,9,25644.93,22770.09,21.92 -fromchars,gmp,256,10,2477,9,8010.97,8003.20,19.88 -fromchars,gmpz,256,10,2008,9,9989.10,9953.05,20.07 -fromchars,auto,2000,10,52,9,385689.67,385482.23,20.07 -fromchars,kernel,2000,10,56,9,362427.32,362388.29,20.30 -fromchars,gmp,2000,10,109,9,183501.17,183189.60,20.00 -fromchars,gmpz,2000,10,101,9,198189.46,198118.40,20.04 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64_seed1b.csv b/tests/beman/big_int/perf/item1/x64r3_new64_seed1b.csv deleted file mode 100644 index 8dafb255..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_new64_seed1b.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T17:58:14Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,3703470,9,5.40,5.36,20.00 -add,inplace,1,1,3919967,9,2.56,2.55,20.09 -add,kernel,1,1,10297942,9,1.92,1.89,19.76 -add,floor,1,1,2037802,9,9.82,9.82,20.01 -add,gmp,1,1,8824158,9,2.27,2.27,20.01 -add,gmpz,1,1,4812987,9,4.16,4.16,20.03 -add,auto,2,2,1256847,9,15.93,15.85,20.03 -add,inplace,2,2,1565111,9,6.22,6.03,19.61 -add,kernel,2,2,8483138,9,2.37,2.32,20.14 -add,floor,2,2,1964317,9,10.22,10.20,20.07 -add,gmp,2,2,8824120,9,2.27,2.27,20.00 -add,gmpz,2,2,4812030,9,4.16,4.16,20.00 -add,auto,4,4,1277078,9,15.49,15.45,19.80 -add,inplace,4,4,1757570,9,5.72,5.67,20.09 -add,kernel,4,4,6548712,9,3.04,3.02,19.88 -add,floor,4,4,1823299,9,10.97,10.97,20.02 -add,gmp,4,4,7920005,9,2.53,2.52,20.00 -add,gmpz,4,4,4563224,9,4.39,4.37,20.05 -add,auto,8,8,1178114,9,17.08,16.91,20.09 -add,inplace,8,8,1346010,9,7.26,7.15,19.61 -add,kernel,8,8,4392052,9,4.53,4.53,19.94 -add,floor,8,8,1599045,9,12.51,12.49,20.00 -add,gmp,8,8,5428298,9,3.68,3.68,19.99 -add,gmpz,8,8,4254451,9,4.69,4.68,20.01 -add,auto,16,16,948535,9,21.14,21.09,20.05 -add,inplace,16,16,892790,9,11.20,11.15,20.00 -add,kernel,16,16,2641220,9,7.57,7.57,20.02 -add,floor,16,16,1283531,9,15.58,15.56,20.00 -add,gmp,16,16,3544729,9,5.65,5.64,20.02 -add,gmpz,16,16,3067332,9,6.53,6.49,20.01 -add,auto,64,64,432916,9,46.31,46.12,20.10 -add,inplace,64,64,275168,9,36.50,36.25,20.08 -add,kernel,64,64,609386,9,32.80,32.58,19.97 -add,floor,64,64,496172,9,39.88,39.31,19.81 -add,gmp,64,64,1250209,9,15.95,15.94,19.95 -add,gmpz,64,64,1212732,9,16.49,16.46,19.99 -add,auto,256,256,122183,9,163.59,163.45,20.00 -add,inplace,256,256,69123,9,144.74,144.59,20.01 -add,kernel,256,256,140497,9,142.25,142.12,20.01 -add,floor,256,256,126214,9,158.56,158.40,20.01 -add,gmp,256,256,255660,9,78.22,78.21,20.00 -add,gmpz,256,256,251622,9,79.51,79.41,20.01 -add,auto,1024,1024,33397,9,599.02,598.79,20.01 -add,inplace,1024,1024,17215,9,581.03,580.89,20.01 -add,kernel,1024,1024,34616,9,577.81,577.64,20.00 -add,floor,1024,1024,33674,9,593.98,593.83,20.00 -add,gmp,1024,1024,51195,9,390.68,390.67,20.01 -add,gmpz,1024,1024,51071,9,391.56,391.55,20.01 -add,auto,2000,2000,17327,9,1154.27,1154.15,20.00 -add,inplace,2000,2000,8827,9,1132.86,1132.80,20.00 -add,kernel,2000,2000,17606,9,1132.57,1132.50,19.95 -add,floor,2000,2000,17398,9,1149.36,1149.19,20.00 -add,gmp,2000,2000,41132,9,481.77,481.73,19.82 -add,gmpz,2000,2000,41308,9,484.16,482.57,19.99 -add,auto,1024,1,79431,9,251.56,251.29,19.98 -add,inplace,1024,1,2059690,9,4.85,4.82,19.97 -add,kernel,1024,1,34637,9,577.43,577.42,20.00 -add,floor,1024,1,33713,9,593.29,593.24,20.00 -add,gmp,1024,1,85684,9,233.22,232.23,19.98 -add,gmpz,1024,1,85404,9,234.17,233.90,19.99 -sub,auto,1,1,3637458,9,5.46,5.40,19.91 -sub,inplace,1,1,4029744,9,2.47,2.46,19.90 -sub,kernel,1,1,13236105,9,1.51,1.51,20.01 -sub,floor,1,1,9854872,9,2.03,2.03,20.12 -sub,gmp,1,1,8824191,9,2.27,2.27,20.02 -sub,gmpz,1,1,4603805,9,4.34,4.34,20.03 -sub,auto,2,2,1279637,9,15.68,15.64,20.08 -sub,inplace,2,2,2063684,9,4.82,4.78,19.97 -sub,kernel,2,2,9451561,9,2.12,2.09,19.98 -sub,floor,2,2,2042611,9,9.84,9.81,20.11 -sub,gmp,2,2,8824171,9,2.27,2.27,20.00 -sub,gmpz,2,2,4588767,9,4.34,4.34,19.97 -sub,auto,4,4,1208873,9,16.59,16.57,20.08 -sub,inplace,4,4,1747803,9,5.67,5.62,19.84 -sub,kernel,4,4,7052894,9,2.84,2.84,20.00 -sub,floor,4,4,1882922,9,10.64,10.61,20.07 -sub,gmp,4,4,7997656,9,2.50,2.50,19.99 -sub,gmpz,4,4,4338968,9,4.60,4.59,19.97 -sub,auto,8,8,1099479,9,18.20,18.17,20.01 -sub,inplace,8,8,1384607,9,7.26,7.12,20.11 -sub,kernel,8,8,4531445,9,4.36,4.35,19.84 -sub,floor,8,8,1634026,9,12.25,12.21,20.02 -sub,gmp,8,8,5424859,9,3.69,3.69,20.01 -sub,gmpz,8,8,4017598,9,4.98,4.96,20.00 -sub,auto,16,16,949060,9,21.09,21.04,20.02 -sub,inplace,16,16,995466,9,10.04,10.01,19.99 -sub,kernel,16,16,2676904,9,7.47,7.47,20.00 -sub,floor,16,16,1306660,9,15.42,15.32,20.14 -sub,gmp,16,16,3636895,9,5.50,5.49,20.01 -sub,gmpz,16,16,2941252,9,6.80,6.79,20.00 -sub,auto,64,64,441037,9,45.35,45.29,20.01 -sub,inplace,64,64,287182,9,34.60,34.44,19.89 -sub,kernel,64,64,611481,9,32.70,32.70,20.00 -sub,floor,64,64,472498,9,42.33,42.28,20.02 -sub,gmp,64,64,1294510,9,15.45,15.45,20.00 -sub,gmpz,64,64,1145379,9,17.46,17.45,20.00 -sub,auto,256,256,123003,9,162.58,162.50,20.03 -sub,inplace,256,256,69277,9,144.38,144.35,20.01 -sub,kernel,256,256,140378,9,142.45,142.44,20.00 -sub,floor,256,256,126344,9,158.37,158.22,20.01 -sub,gmp,256,256,255609,9,78.24,78.24,20.00 -sub,gmpz,256,256,250354,9,79.88,79.74,20.01 -sub,auto,1024,1024,33393,9,599.09,598.56,20.02 -sub,inplace,1024,1024,17246,9,579.87,579.85,20.01 -sub,kernel,1024,1024,34461,9,577.76,577.76,19.91 -sub,floor,1024,1024,33314,9,594.99,594.72,19.83 -sub,gmp,1024,1024,51299,9,389.87,389.86,20.01 -sub,gmpz,1024,1024,51131,9,391.20,391.17,20.00 -sub,auto,2000,2000,17336,9,1153.99,1153.62,20.01 -sub,inplace,2000,2000,8826,9,1133.09,1133.07,20.00 -sub,kernel,2000,2000,17675,9,1131.49,1131.46,20.00 -sub,floor,2000,2000,17416,9,1148.68,1148.25,20.02 -sub,gmp,2000,2000,41981,9,476.45,476.41,20.00 -sub,gmpz,2000,2000,41181,9,485.78,484.39,20.04 -sub,auto,1024,1,79349,9,252.28,251.84,20.02 -sub,inplace,1024,1,2328146,9,4.33,4.28,20.12 -sub,kernel,1024,1,34687,9,576.50,576.49,20.00 -sub,floor,1024,1,33702,9,593.55,593.42,20.00 -sub,gmp,1024,1,85544,9,233.83,233.73,20.00 -sub,gmpz,1024,1,85270,9,234.57,234.16,20.00 -shl,auto,1,13,1563414,9,12.89,12.69,20.15 -shl,inplace,1,13,2375612,9,4.21,4.21,20.03 -shl,kernel,1,13,9626461,9,2.08,2.07,20.01 -shl,kernelip,1,13,5590441,9,1.75,1.70,19.50 -shl,floor,1,13,2079570,9,9.82,9.82,20.43 -shl,gmp,1,13,9624966,9,2.08,2.08,20.00 -shl,gmpz,1,13,6077103,9,3.28,3.27,19.94 -shl,auto,4,13,1470116,9,13.58,13.51,19.98 -shl,inplace,4,13,1881083,9,5.28,5.24,19.88 -shl,kernel,4,13,5781364,9,3.50,3.48,20.30 -shl,kernelip,4,13,3429605,9,2.92,2.90,19.99 -shl,floor,4,13,1775640,9,11.19,11.18,19.87 -shl,gmp,4,13,7991404,9,2.50,2.50,20.01 -shl,gmpz,4,13,4946919,9,4.04,4.04,20.02 -shl,auto,16,13,1153195,9,17.27,17.21,19.93 -shl,inplace,16,13,1078380,9,9.26,9.23,19.97 -shl,kernel,16,13,2648122,9,7.56,7.49,20.05 -shl,kernelip,16,13,1399063,9,7.18,7.15,20.08 -shl,floor,16,13,1347716,9,15.22,15.21,20.54 -shl,gmp,16,13,4147301,9,4.80,4.79,19.90 -shl,gmpz,16,13,3378760,9,5.92,5.92,20.01 -shl,auto,256,13,163636,9,122.13,122.05,19.99 -shl,inplace,256,13,100320,9,99.68,99.62,20.00 -shl,kernel,256,13,213757,9,93.60,93.40,20.00 -shl,kernelip,256,13,103253,9,96.90,96.86,20.02 -shl,floor,256,13,179724,9,114.70,114.57,20.62 -shl,gmp,256,13,424388,9,47.23,47.12,20.24 -shl,gmpz,256,13,389496,9,51.28,51.20,19.98 -shl,auto,2000,13,25840,9,772.56,772.45,19.97 -shl,inplace,2000,13,13945,9,716.92,716.87,20.01 -shl,kernel,2000,13,27849,9,718.86,718.14,20.02 -shl,kernelip,2000,13,13997,9,714.45,714.40,20.00 -shl,floor,2000,13,27143,9,738.19,737.77,20.04 -shl,gmp,2000,13,59513,9,336.06,335.47,20.01 -shl,gmpz,2000,13,58992,9,339.25,338.98,20.04 -shl,auto,2000,77,25825,9,774.72,774.47,20.01 -shl,inplace,2000,77,13485,9,741.56,741.06,20.04 -shl,kernel,2000,77,23511,9,850.87,850.30,20.01 -shl,kernelip,2000,77,12166,9,822.02,822.01,20.00 -shl,floor,2000,77,22973,9,872.66,870.75,20.04 -shl,gmp,2000,77,59287,9,337.65,337.53,20.02 -shl,gmpz,2000,77,59126,9,338.24,338.20,20.01 -shr,auto,1,13,2441129,9,8.20,8.19,20.01 -shr,inplace,1,13,2548829,9,3.88,3.87,19.89 -shr,kernel,1,13,11750169,9,1.70,1.70,20.00 -shr,floor,1,13,8824217,9,2.27,2.27,20.00 -shr,gmp,1,13,10588866,9,1.89,1.89,20.03 -shr,gmpz,1,13,5771292,9,3.47,3.47,20.00 -shr,auto,4,13,1254434,9,15.97,15.93,20.02 -shr,inplace,4,13,1998600,9,4.98,4.96,19.93 -shr,kernel,4,13,5771246,9,3.47,3.47,20.01 -shr,floor,4,13,1670080,9,11.98,11.95,20.02 -shr,gmp,4,13,8438174,9,2.36,2.31,19.83 -shr,gmpz,4,13,5045990,9,3.97,3.96,20.07 -shr,auto,16,13,1004167,9,19.90,19.88,19.98 -shr,inplace,16,13,1123737,9,8.91,8.89,20.04 -shr,kernel,16,13,2370054,9,8.43,8.39,19.97 -shr,floor,16,13,1163079,9,17.21,17.19,20.04 -shr,gmp,16,13,4559360,9,4.35,4.35,19.91 -shr,gmpz,16,13,3231923,9,6.24,6.14,20.22 -shr,auto,256,13,155483,9,128.87,128.53,20.05 -shr,inplace,256,13,100892,9,99.07,99.01,19.99 -shr,kernel,256,13,181736,9,110.06,109.85,20.00 -shr,floor,256,13,152443,9,131.15,130.93,19.99 -shr,gmp,256,13,410880,9,48.66,48.60,20.02 -shr,gmpz,256,13,394088,9,50.78,50.66,20.01 -shr,auto,2000,13,26713,9,749.20,748.66,20.02 -shr,inplace,2000,13,13957,9,716.50,716.47,20.00 -shr,kernel,2000,13,24296,9,812.11,812.06,19.73 -shr,floor,2000,13,24014,9,832.61,832.38,20.01 -shr,gmp,2000,13,59559,9,336.07,335.87,20.04 -shr,gmpz,2000,13,58985,9,338.97,338.88,19.99 -shr,auto,2000,77,26655,9,749.30,748.93,19.98 -shr,inplace,2000,77,13507,9,740.10,738.44,19.99 -shr,kernel,2000,77,24152,9,828.13,828.10,20.00 -shr,floor,2000,77,23510,9,850.79,850.47,20.01 -shr,gmp,2000,77,59540,9,335.95,335.92,20.06 -shr,gmpz,2000,77,58695,9,339.17,339.10,19.91 -mul,auto,1,1,1209121,9,16.44,16.39,19.92 -mul,gmp,1,1,5934482,9,3.38,3.34,20.05 -mul,gmpz,1,1,5042296,9,3.99,3.98,20.10 -mul,auto,2,2,1058631,9,18.89,18.84,20.00 -mul,kernel,2,2,2786237,9,7.54,7.53,21.08 -mul,floor,2,2,1363437,9,14.85,14.78,20.28 -mul,gmp,2,2,5211894,9,3.85,3.83,20.05 -mul,gmpz,2,2,3276195,9,6.14,6.10,20.09 -mul,auto,3,3,984115,9,20.31,20.24,19.98 -mul,kernel,3,3,2332515,9,8.93,8.92,20.84 -mul,floor,3,3,1246517,9,16.24,16.15,20.27 -mul,gmp,3,3,2551972,9,7.77,7.70,19.81 -mul,gmpz,3,3,1998907,9,10.00,9.98,19.99 -mul,auto,4,4,897423,9,22.42,22.29,20.12 -mul,kernel,4,4,1926987,9,10.90,10.89,21.06 -mul,floor,4,4,1102319,9,18.15,18.12,20.04 -mul,gmp,4,4,2058944,9,9.72,9.67,20.00 -mul,gmpz,4,4,1640771,9,12.20,12.17,20.03 -mul,auto,6,6,711183,9,28.01,27.92,19.93 -mul,kernel,6,6,1213674,9,17.17,17.15,20.84 -mul,floor,6,6,821408,9,24.34,24.32,20.01 -mul,gmp,6,6,1173600,9,17.00,16.96,19.95 -mul,gmpz,6,6,1099580,9,18.12,18.04,19.93 -mul,auto,8,8,551837,9,36.23,35.99,20.01 -mul,kernel,8,8,811683,9,25.43,25.35,20.63 -mul,floor,8,8,609387,9,32.42,32.38,19.78 -mul,gmp,8,8,741516,9,27.02,26.87,20.03 -mul,gmpz,8,8,670699,9,29.57,28.93,19.87 -mul,auto,12,12,348420,9,57.64,57.48,20.08 -mul,kernel,12,12,421272,9,48.22,48.04,20.32 -mul,floor,12,12,365760,9,54.78,54.71,20.06 -mul,gmp,12,12,411710,9,48.57,48.55,20.02 -mul,gmpz,12,12,387320,9,51.64,51.62,20.00 -mul,auto,16,16,226266,9,88.46,88.43,20.02 -mul,kernel,16,16,253211,9,79.56,79.46,20.16 -mul,floor,16,16,230632,9,86.81,86.66,20.03 -mul,gmp,16,16,244273,9,81.93,81.88,20.02 -mul,gmpz,16,16,238002,9,84.08,84.05,20.02 -mul,auto,32,32,98856,9,201.63,201.16,19.94 -mul,kernel,32,32,107922,9,186.37,186.11,20.14 -mul,floor,32,32,101389,9,196.23,195.95,19.93 -mul,gmp,32,32,73320,9,271.17,268.44,19.84 -mul,gmpz,32,32,73368,9,270.36,269.90,19.83 -mul,auto,64,64,40313,9,496.23,495.47,20.02 -mul,kernel,64,64,39689,9,502.18,501.65,19.93 -mul,floor,64,64,39088,9,509.81,509.14,19.93 -mul,gmp,64,64,22200,9,891.23,885.05,19.79 -mul,gmpz,64,64,23048,9,866.31,865.03,20.02 -mul,auto,128,128,11658,9,1718.55,1714.90,20.10 -mul,kernel,128,128,11774,9,1723.15,1720.64,20.30 -mul,floor,128,128,11696,9,1708.70,1707.83,19.99 -mul,gmp,128,128,7247,9,2753.26,2720.48,19.91 -mul,gmpz,128,128,7348,9,2711.85,2708.65,19.93 -mul,auto,256,256,3213,9,6224.37,6220.68,20.00 -mul,kernel,256,256,3247,9,6197.98,6193.74,20.12 -mul,floor,256,256,3241,9,6170.93,6168.12,20.00 -mul,gmp,256,256,2538,9,7835.64,7743.36,19.86 -mul,gmpz,256,256,2568,9,7793.01,7787.31,20.01 -mul,auto,512,512,1028,9,19468.30,19459.54,20.02 -mul,kernel,512,512,1041,9,19267.73,19242.00,20.06 -mul,floor,512,512,1038,9,19262.38,19246.35,20.00 -mul,gmp,512,512,952,9,20835.66,20800.14,19.85 -mul,gmpz,512,512,961,9,20827.39,20815.86,20.02 -mul,auto,1000,1000,336,9,59666.02,59605.26,20.10 -mul,kernel,1000,1000,336,9,59565.92,59526.24,20.06 -mul,floor,1000,1000,335,9,59539.86,59485.24,19.95 -mul,gmp,1000,1000,373,9,53276.92,53263.48,19.89 -mul,gmpz,1000,1000,375,9,53358.82,53330.05,20.01 -mul,auto,2000,2000,114,9,176731.70,176561.92,20.15 -mul,kernel,2000,2000,113,9,177297.03,176984.04,20.04 -mul,floor,2000,2000,114,9,176930.11,176798.65,20.17 -mul,gmp,2000,2000,138,9,145161.09,145141.39,20.04 -mul,gmpz,2000,2000,139,9,144185.06,144098.92,20.04 -mul,auto,2000,100,1135,9,17634.10,17628.85,20.05 -mul,kernel,2000,100,1130,9,17730.26,17723.87,20.03 -mul,floor,2000,100,1131,9,17696.89,17691.90,20.05 -mul,gmp,2000,100,551,9,36187.38,35831.21,19.90 -mul,gmpz,2000,100,555,9,35734.04,35664.05,19.83 -sqr,auto,4,4,896228,9,22.24,22.15,19.95 -sqr,kernel,4,4,2011081,9,9.90,9.74,19.86 -sqr,floor,4,4,1221775,9,16.77,16.75,20.48 -sqr,gmp,4,4,3443012,9,5.83,5.78,20.08 -sqr,gmpz,4,4,2259096,9,8.83,8.73,19.97 -sqr,auto,16,16,284524,9,70.32,70.25,20.01 -sqr,kernel,16,16,336444,9,59.40,59.36,19.99 -sqr,floor,16,16,309258,9,65.63,65.57,20.31 -sqr,gmp,16,16,392223,9,50.33,50.31,19.77 -sqr,gmpz,16,16,384056,9,52.08,52.07,20.00 -sqr,auto,64,64,70671,9,282.11,281.37,19.94 -sqr,kernel,64,64,72398,9,276.60,276.14,20.04 -sqr,floor,64,64,70636,9,279.36,278.98,19.74 -sqr,gmp,64,64,35668,9,558.91,556.75,19.94 -sqr,gmpz,64,64,35978,9,554.05,552.16,19.94 -sqr,auto,512,512,1873,9,10682.43,10678.18,20.04 -sqr,kernel,512,512,1893,9,10563.30,10558.69,20.00 -sqr,floor,512,512,1887,9,10599.45,10590.15,20.00 -sqr,gmp,512,512,1325,9,15080.21,15073.45,19.98 -sqr,gmpz,512,512,1326,9,15077.03,15066.72,20.04 -sqr,auto,2000,2000,198,9,100462.64,100010.69,19.91 -sqr,kernel,2000,2000,203,9,98890.63,98624.14,20.07 -sqr,floor,2000,2000,204,9,98257.14,98236.59,20.05 -sqr,gmp,2000,2000,199,9,100581.42,100518.27,20.02 -sqr,gmpz,2000,2000,199,9,100588.07,100530.73,20.01 -divrem,auto,2,1,490915,9,40.67,40.62,19.97 -divrem,kernel,2,1,3550524,9,5.73,5.56,20.36 -divrem,floor,2,1,1564228,9,12.82,12.80,20.06 -divrem,gmp,2,1,2299545,9,8.69,8.67,19.97 -divrem,gmpz,2,1,1518176,9,13.20,13.18,20.06 -divrem,auto,8,4,226965,9,88.61,88.32,20.11 -divrem,kernel,8,4,440042,9,45.25,44.80,19.99 -divrem,floor,8,4,301609,9,62.68,61.51,18.88 -divrem,gmp,8,4,499524,9,40.16,39.90,20.04 -divrem,gmpz,8,4,479672,9,41.80,41.62,20.05 -divrem,auto,32,16,57605,9,342.36,340.69,19.78 -divrem,kernel,32,16,69689,9,287.71,286.54,20.10 -divrem,floor,32,16,65065,9,306.21,304.77,19.95 -divrem,gmp,32,16,104632,9,191.45,190.55,20.03 -divrem,gmpz,32,16,103295,9,194.05,193.37,20.04 -divrem,auto,128,64,5723,9,3496.08,3489.82,20.01 -divrem,kernel,128,64,5966,9,3339.39,3328.28,19.91 -divrem,floor,128,64,5976,9,3349.92,3341.09,20.02 -divrem,gmp,128,64,11569,9,1729.48,1727.81,20.01 -divrem,gmpz,128,64,11557,9,1730.89,1729.40,20.00 -divrem,auto,512,256,665,9,30157.38,30118.82,20.08 -divrem,kernel,512,256,671,9,29813.71,29738.86,20.00 -divrem,floor,512,256,669,9,29924.97,29870.69,20.03 -divrem,gmp,512,256,1225,9,16321.59,16319.42,19.99 -divrem,gmpz,512,256,1224,9,16343.45,16342.24,20.02 -divrem,auto,2000,1000,108,9,186753.49,186590.49,20.17 -divrem,kernel,2000,1000,108,9,185417.46,185262.08,20.03 -divrem,floor,2000,1000,108,9,185584.86,185484.21,20.05 -divrem,gmp,2000,1000,145,9,137933.79,137889.57,20.03 -divrem,gmpz,2000,1000,146,9,137827.40,137797.63,20.12 -divrem,auto,4000,2000,42,9,479449.57,479269.62,20.14 -divrem,kernel,4000,2000,42,9,479139.33,478966.95,20.12 -divrem,floor,4000,2000,42,9,477316.50,477226.36,20.06 -divrem,gmp,4000,2000,60,9,336729.68,335637.03,20.21 -divrem,gmpz,4000,2000,60,9,335277.03,334856.47,20.13 -divrem,auto,2000,100,138,9,145608.47,145116.06,20.09 -divrem,kernel,2000,100,139,9,144603.18,144337.61,20.11 -divrem,floor,2000,100,139,9,144540.06,144248.25,20.12 -divrem,gmp,2000,100,276,9,72682.72,72654.34,20.06 -divrem,gmpz,2000,100,276,9,72694.53,72653.36,20.06 -divrem,auto,65536,1,119,9,168653.25,168208.69,20.07 -divrem,kernel,65536,1,120,9,166903.51,166849.47,20.03 -divrem,floor,65536,1,119,9,169234.39,168972.40,20.14 -divrem,gmp,65536,1,136,9,148095.88,148089.09,20.14 -divrem,gmpz,65536,1,136,9,148109.55,148098.71,20.19 -tochars,auto,1,10,1326324,9,15.00,14.98,19.89 -tochars,kernel,1,10,322090,9,62.01,61.94,19.98 -tochars,gmp,1,10,967722,9,20.73,20.59,20.07 -tochars,gmpz,1,10,586206,9,34.23,34.05,20.05 -tochars,auto,4,10,157667,9,126.31,125.66,19.93 -tochars,kernel,4,10,111346,9,179.95,177.78,20.00 -tochars,gmp,4,10,292383,9,68.42,68.37,20.00 -tochars,gmpz,4,10,209606,9,95.44,95.29,20.03 -tochars,auto,16,10,16975,9,1172.74,1168.15,19.90 -tochars,kernel,16,10,19379,9,1033.64,1031.80,20.03 -tochars,gmp,16,10,39715,9,503.82,503.58,20.01 -tochars,gmpz,16,10,33949,9,591.21,590.00,20.08 -tochars,auto,64,10,3515,9,5694.22,5690.30,20.02 -tochars,kernel,64,10,3735,9,5355.78,5347.74,20.01 -tochars,gmp,64,10,7491,9,2673.30,2669.89,20.04 -tochars,gmpz,64,10,6755,9,2961.72,2958.55,20.01 -tochars,auto,256,10,542,9,36945.73,36930.03,20.08 -tochars,kernel,256,10,562,9,35611.96,35592.53,20.02 -tochars,gmp,256,10,1078,9,18574.03,18553.55,20.02 -tochars,gmpz,256,10,1016,9,19666.36,19654.64,19.98 -tochars,auto,2000,10,33,9,619673.00,618957.64,20.45 -tochars,kernel,2000,10,34,9,596596.09,596407.29,20.29 -tochars,gmp,2000,10,50,9,400932.38,400742.56,20.05 -tochars,gmpz,2000,10,49,9,409754.98,409587.51,20.09 -tochars,auto,16,16,188942,9,105.77,105.49,20.02 -tochars,gmp,16,16,199927,9,99.92,99.75,20.03 -tochars,gmpz,16,16,126212,9,158.55,158.48,20.01 -tochars,auto,2000,16,1677,9,11930.42,11927.84,20.05 -tochars,gmp,2000,16,1799,9,11111.61,11110.62,19.99 -tochars,gmpz,2000,16,1116,9,17927.07,17924.60,20.01 -fromchars,auto,4,10,176124,9,113.47,113.27,19.98 -fromchars,kernel,4,10,541527,9,36.98,36.82,20.03 -fromchars,gmp,4,10,631960,9,31.30,31.17,19.86 -fromchars,gmpz,4,10,299718,9,66.72,66.55,20.02 -fromchars,auto,16,10,46521,9,429.77,421.03,19.92 -fromchars,kernel,16,10,101149,9,196.02,189.68,19.76 -fromchars,gmp,16,10,160119,9,124.70,124.47,19.98 -fromchars,gmpz,16,10,77605,9,256.86,256.30,19.96 -fromchars,auto,64,10,7181,9,2868.21,2667.32,20.56 -fromchars,kernel,64,10,11638,9,1774.51,1694.17,21.36 -fromchars,gmp,64,10,22869,9,874.67,874.30,20.01 -fromchars,gmpz,64,10,14681,9,1361.81,1360.97,19.99 -fromchars,auto,256,10,715,9,28611.08,26165.38,20.44 -fromchars,kernel,256,10,878,9,24089.06,23442.37,21.21 -fromchars,gmp,256,10,2501,9,7997.19,7993.83,20.01 -fromchars,gmpz,256,10,2012,9,9940.11,9936.66,20.00 -fromchars,auto,2000,10,52,9,385648.46,385284.85,20.05 -fromchars,kernel,2000,10,56,9,362450.00,362399.45,20.30 -fromchars,gmp,2000,10,110,9,182728.86,182651.03,20.11 -fromchars,gmpz,2000,10,100,9,197770.44,197706.21,19.81 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64_seed2a.csv b/tests/beman/big_int/perf/item1/x64r3_new64_seed2a.csv deleted file mode 100644 index 94a5f581..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_new64_seed2a.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T18:03:00Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,3723911,9,5.34,5.30,19.89 -add,inplace,1,1,3914764,9,2.55,2.55,19.97 -add,kernel,1,1,10421407,9,1.94,1.89,20.17 -add,floor,1,1,2053459,9,9.82,9.75,20.15 -add,gmp,1,1,8786008,9,2.27,2.27,19.94 -add,gmpz,1,1,4802647,9,4.16,4.16,19.96 -add,auto,2,2,1272564,9,15.82,15.80,20.14 -add,inplace,2,2,1630635,9,6.11,6.01,20.32 -add,kernel,2,2,8398455,9,2.39,2.30,20.03 -add,floor,2,2,1981155,9,10.16,10.10,20.14 -add,gmp,2,2,8824374,9,2.27,2.27,20.00 -add,gmpz,2,2,4749118,9,4.16,4.16,19.75 -add,auto,4,4,1309358,9,15.34,15.17,20.07 -add,inplace,4,4,1717758,9,5.71,5.66,19.63 -add,kernel,4,4,6598478,9,3.05,3.02,20.13 -add,floor,4,4,1836665,9,10.91,10.86,20.02 -add,gmp,4,4,8040969,9,2.49,2.49,20.00 -add,gmpz,4,4,4603931,9,4.34,4.34,20.01 -add,auto,8,8,1192767,9,16.79,16.74,20.04 -add,inplace,8,8,1392806,9,7.31,7.18,20.44 -add,kernel,8,8,4411999,9,4.53,4.53,20.04 -add,floor,8,8,1574916,9,12.65,12.36,19.82 -add,gmp,8,8,5393530,9,3.68,3.68,19.87 -add,gmpz,8,8,4286448,9,4.66,4.64,19.99 -add,auto,16,16,949004,9,20.94,20.89,19.89 -add,inplace,16,16,892957,9,11.20,11.17,20.00 -add,kernel,16,16,2646976,9,7.56,7.56,20.00 -add,floor,16,16,1300869,9,15.38,15.32,20.02 -add,gmp,16,16,3632926,9,5.50,5.50,20.00 -add,gmpz,16,16,2591933,9,7.73,7.72,20.03 -add,auto,64,64,425588,9,47.08,46.88,20.02 -add,inplace,64,64,277481,9,35.67,35.45,19.78 -add,kernel,64,64,612374,9,32.82,32.61,20.09 -add,floor,64,64,478339,9,41.76,40.77,19.85 -add,gmp,64,64,1294474,9,15.45,15.45,20.00 -add,gmpz,64,64,1212753,9,16.49,16.46,20.05 -add,auto,256,256,123245,9,162.22,162.09,20.00 -add,inplace,256,256,69129,9,144.67,144.63,20.01 -add,kernel,256,256,140629,9,142.32,142.22,20.02 -add,floor,256,256,125822,9,158.79,158.63,19.98 -add,gmp,256,256,255678,9,78.22,78.21,20.00 -add,gmpz,256,256,251322,9,79.55,79.44,20.05 -add,auto,1024,1024,33389,9,599.01,598.91,20.01 -add,inplace,1024,1024,17215,9,580.93,580.88,20.00 -add,kernel,1024,1024,34604,9,577.90,577.80,20.00 -add,floor,1024,1024,33668,9,594.07,593.88,20.00 -add,gmp,1024,1024,51214,9,390.51,390.50,20.01 -add,gmpz,1024,1024,51103,9,391.36,391.33,20.00 -add,auto,2000,2000,17353,9,1152.41,1152.19,20.00 -add,inplace,2000,2000,8834,9,1132.00,1131.96,20.00 -add,kernel,2000,2000,17676,9,1131.55,1131.51,20.01 -add,floor,2000,2000,17401,9,1149.53,1149.29,20.02 -add,gmp,2000,2000,42108,9,474.82,474.81,20.05 -add,gmpz,2000,2000,41116,9,484.31,482.92,19.92 -add,auto,1024,1,79452,9,251.79,251.72,20.03 -add,inplace,1024,1,2074200,9,4.83,4.82,20.03 -add,kernel,1024,1,34636,9,577.39,577.37,20.00 -add,floor,1024,1,33714,9,593.36,593.20,20.01 -add,gmp,1024,1,85931,9,232.71,232.60,20.00 -add,gmpz,1024,1,85429,9,234.13,233.66,20.00 -sub,auto,1,1,3632617,9,5.49,5.47,19.95 -sub,inplace,1,1,4051784,9,2.46,2.46,20.00 -sub,kernel,1,1,13236393,9,1.51,1.51,20.00 -sub,floor,1,1,9684125,9,2.06,2.04,19.96 -sub,gmp,1,1,8822796,9,2.27,2.27,20.01 -sub,gmpz,1,1,4603807,9,4.34,4.34,20.00 -sub,auto,2,2,1286018,9,15.65,15.50,20.10 -sub,inplace,2,2,2082257,9,4.84,4.76,20.24 -sub,kernel,2,2,9464967,9,2.11,2.09,19.96 -sub,floor,2,2,2016268,9,9.84,9.78,19.82 -sub,gmp,2,2,8824302,9,2.27,2.27,20.02 -sub,gmpz,2,2,4599960,9,4.34,4.34,20.01 -sub,auto,4,4,1219376,9,16.41,16.31,20.00 -sub,inplace,4,4,1802685,9,5.62,5.50,20.18 -sub,kernel,4,4,7052509,9,2.84,2.83,20.01 -sub,floor,4,4,1888470,9,10.63,10.58,20.07 -sub,gmp,4,4,7227612,9,2.77,2.77,20.02 -sub,gmpz,4,4,4392433,9,4.56,4.54,20.05 -sub,auto,8,8,1111619,9,18.00,17.94,20.01 -sub,inplace,8,8,1365663,9,7.39,7.10,20.11 -sub,kernel,8,8,4586262,9,4.36,4.36,20.00 -sub,floor,8,8,1647077,9,12.18,12.11,20.06 -sub,gmp,8,8,5425222,9,3.69,3.69,20.02 -sub,gmpz,8,8,4028140,9,4.96,4.93,19.96 -sub,auto,16,16,955037,9,21.00,20.93,20.05 -sub,inplace,16,16,996240,9,10.04,10.02,20.05 -sub,kernel,16,16,2679396,9,7.46,7.46,20.01 -sub,floor,16,16,1321363,9,15.22,15.14,20.10 -sub,gmp,16,16,3636656,9,5.49,5.49,19.98 -sub,gmpz,16,16,2953998,9,6.80,6.77,20.08 -sub,auto,64,64,440853,9,45.31,45.20,19.98 -sub,inplace,64,64,287962,9,34.52,34.41,19.90 -sub,kernel,64,64,611441,9,32.70,32.70,20.01 -sub,floor,64,64,472369,9,42.36,42.29,20.02 -sub,gmp,64,64,1294780,9,15.45,15.45,20.01 -sub,gmpz,64,64,1189650,9,16.81,16.77,19.99 -sub,auto,256,256,123211,9,162.51,162.33,20.03 -sub,inplace,256,256,69254,9,144.36,144.34,20.01 -sub,kernel,256,256,140405,9,142.46,142.44,20.01 -sub,floor,256,256,126318,9,158.45,158.38,20.02 -sub,gmp,256,256,255571,9,78.24,78.22,20.00 -sub,gmpz,256,256,250430,9,79.84,79.75,20.00 -sub,auto,1024,1024,33455,9,598.06,597.77,20.02 -sub,inplace,1024,1024,17246,9,579.85,579.84,20.02 -sub,kernel,1024,1024,34587,9,577.76,577.75,19.98 -sub,floor,1024,1024,33422,9,593.71,593.54,19.86 -sub,gmp,1024,1024,51300,9,389.86,389.86,20.00 -sub,gmpz,1024,1024,51126,9,391.20,391.18,20.01 -sub,auto,2000,2000,17310,9,1153.73,1153.04,19.98 -sub,inplace,2000,2000,8829,9,1132.72,1132.69,20.00 -sub,kernel,2000,2000,17677,9,1131.47,1131.44,20.01 -sub,floor,2000,2000,17436,9,1147.29,1147.03,20.02 -sub,gmp,2000,2000,41595,9,480.85,480.82,20.01 -sub,gmpz,2000,2000,41025,9,487.65,486.17,20.00 -sub,auto,1024,1,79291,9,252.25,252.08,20.00 -sub,inplace,1024,1,2095503,9,4.74,4.72,19.90 -sub,kernel,1024,1,34692,9,576.50,576.49,20.01 -sub,floor,1024,1,33732,9,592.83,592.53,20.00 -sub,gmp,1024,1,85914,9,232.76,232.74,20.04 -sub,gmpz,1024,1,85486,9,233.91,233.54,20.01 -shl,auto,1,13,1612258,9,12.53,12.43,20.20 -shl,inplace,1,13,2388853,9,4.19,4.17,20.04 -shl,kernel,1,13,9626494,9,2.08,2.07,19.99 -shl,kernelip,1,13,5677625,9,1.74,1.72,19.78 -shl,floor,1,13,2080933,9,9.84,9.82,20.47 -shl,gmp,1,13,9625750,9,2.08,2.08,20.00 -shl,gmpz,1,13,6110912,9,3.27,3.27,20.00 -shl,auto,4,13,1465860,9,13.46,13.40,19.76 -shl,inplace,4,13,1906041,9,5.26,5.24,20.07 -shl,kernel,4,13,5715069,9,3.51,3.44,20.00 -shl,kernelip,4,13,3457221,9,2.91,2.88,20.09 -shl,floor,4,13,1761157,9,11.19,11.18,19.71 -shl,gmp,4,13,7966923,9,2.50,2.50,19.94 -shl,gmpz,4,13,4946982,9,4.04,4.04,20.01 -shl,auto,16,13,1175011,9,17.05,16.94,20.02 -shl,inplace,16,13,1082136,9,9.23,9.21,20.05 -shl,kernel,16,13,2491121,9,7.97,7.92,19.87 -shl,kernelip,16,13,1390385,9,7.17,7.15,19.95 -shl,floor,16,13,1323640,9,15.22,15.21,20.15 -shl,gmp,16,13,4564926,9,4.39,4.37,20.08 -shl,gmpz,16,13,3446362,9,5.83,5.80,20.11 -shl,auto,256,13,163486,9,122.01,121.79,19.94 -shl,inplace,256,13,100708,9,99.26,99.20,20.00 -shl,kernel,256,13,213818,9,93.58,93.38,20.01 -shl,kernelip,256,13,103161,9,96.91,96.82,20.00 -shl,floor,256,13,179437,9,113.37,113.31,20.35 -shl,gmp,256,13,423365,9,47.16,47.11,19.97 -shl,gmpz,256,13,402484,9,49.70,49.61,20.02 -shl,auto,2000,13,25884,9,772.65,772.41,20.00 -shl,inplace,2000,13,13952,9,716.89,716.76,20.02 -shl,kernel,2000,13,27705,9,719.79,719.71,19.95 -shl,kernelip,2000,13,13997,9,714.42,714.39,20.05 -shl,floor,2000,13,27167,9,739.70,739.21,20.10 -shl,gmp,2000,13,59623,9,335.39,335.35,20.01 -shl,gmpz,2000,13,59189,9,338.06,337.77,20.02 -shl,auto,2000,77,25815,9,774.73,774.37,20.00 -shl,inplace,2000,77,13490,9,741.55,740.60,20.00 -shl,kernel,2000,77,23485,9,851.82,850.05,20.01 -shl,kernelip,2000,77,12166,9,822.05,822.03,20.01 -shl,floor,2000,77,22946,9,872.29,871.50,20.02 -shl,gmp,2000,77,59286,9,337.54,337.53,20.04 -shl,gmpz,2000,77,59130,9,338.23,338.19,20.00 -shr,auto,1,13,2441094,9,8.19,8.19,20.00 -shr,inplace,1,13,2528012,9,3.88,3.83,19.67 -shr,kernel,1,13,11748027,9,1.70,1.70,20.00 -shr,floor,1,13,8823789,9,2.27,2.27,20.00 -shr,gmp,1,13,10588844,9,1.89,1.89,20.00 -shr,gmpz,1,13,5774635,9,3.47,3.46,20.02 -shr,auto,4,13,1214781,9,16.49,16.45,20.08 -shr,inplace,4,13,2007845,9,4.94,4.93,19.85 -shr,kernel,4,13,5771158,9,3.47,3.47,20.03 -shr,floor,4,13,1672744,9,11.97,11.95,20.03 -shr,gmp,4,13,8657264,9,2.33,2.31,20.20 -shr,gmpz,4,13,5062466,9,3.98,3.96,20.17 -shr,auto,16,13,990052,9,20.23,20.18,20.03 -shr,inplace,16,13,1102139,9,9.08,9.07,20.00 -shr,kernel,16,13,2246548,9,8.89,8.83,19.97 -shr,floor,16,13,1171605,9,17.00,16.96,19.95 -shr,gmp,16,13,4655640,9,4.30,4.30,20.05 -shr,gmpz,16,13,3209033,9,6.28,6.24,20.38 -shr,auto,256,13,159555,9,124.81,124.71,19.92 -shr,inplace,256,13,100930,9,99.09,99.05,20.00 -shr,kernel,256,13,181448,9,110.02,109.89,19.97 -shr,floor,256,13,152782,9,130.90,130.71,20.00 -shr,gmp,256,13,414937,9,47.92,47.87,19.92 -shr,gmpz,256,13,387342,9,50.76,50.58,19.66 -shr,auto,2000,13,26665,9,750.07,749.20,20.02 -shr,inplace,2000,13,13958,9,716.47,716.41,20.00 -shr,kernel,2000,13,24621,9,812.25,812.23,20.00 -shr,floor,2000,13,24014,9,832.64,832.31,20.00 -shr,gmp,2000,13,59541,9,335.95,335.84,20.00 -shr,gmpz,2000,13,58988,9,338.99,338.78,20.01 -shr,auto,2000,77,26690,9,749.35,749.04,20.00 -shr,inplace,2000,77,13493,9,740.20,738.48,19.97 -shr,kernel,2000,77,24094,9,830.10,830.08,20.00 -shr,floor,2000,77,23480,9,851.86,851.19,20.00 -shr,gmp,2000,77,59536,9,335.93,335.90,20.00 -shr,gmpz,2000,77,58990,9,339.08,338.97,20.00 -mul,auto,1,1,1209046,9,16.54,16.46,20.00 -mul,gmp,1,1,5912548,9,3.37,3.32,19.91 -mul,gmpz,1,1,5041071,9,3.97,3.97,20.02 -mul,auto,2,2,1061827,9,18.87,18.75,20.05 -mul,kernel,2,2,2714101,9,7.58,7.55,20.56 -mul,floor,2,2,1350017,9,14.95,14.86,20.19 -mul,gmp,2,2,5203831,9,3.82,3.79,19.85 -mul,gmpz,2,2,3251642,9,6.10,6.07,19.84 -mul,auto,3,3,985959,9,20.13,20.10,19.87 -mul,kernel,3,3,2333180,9,8.95,8.92,20.87 -mul,floor,3,3,1240639,9,16.22,16.13,20.15 -mul,gmp,3,3,2600176,9,7.73,7.69,20.14 -mul,gmpz,3,3,2005051,9,9.98,9.95,20.03 -mul,auto,4,4,894927,9,22.43,22.29,20.08 -mul,kernel,4,4,1881028,9,13.20,13.14,24.83 -mul,floor,4,4,1091044,9,18.29,18.26,19.98 -mul,gmp,4,4,2061814,9,9.66,9.63,19.93 -mul,gmpz,4,4,1464243,9,13.66,13.64,20.00 -mul,auto,6,6,716705,9,27.95,27.78,20.02 -mul,kernel,6,6,1214286,9,17.20,17.19,20.91 -mul,floor,6,6,815595,9,24.39,24.36,19.90 -mul,gmp,6,6,1271120,9,15.71,15.65,20.00 -mul,gmpz,6,6,1106150,9,18.03,17.92,19.94 -mul,auto,8,8,557184,9,35.81,35.62,19.95 -mul,kernel,8,8,808182,9,26.48,26.30,21.39 -mul,floor,8,8,612476,9,32.71,32.68,20.03 -mul,gmp,8,8,738532,9,27.12,27.03,20.03 -mul,gmpz,8,8,703270,9,28.17,27.82,19.89 -mul,auto,12,12,350688,9,56.95,56.90,19.98 -mul,kernel,12,12,423660,9,47.63,47.37,20.17 -mul,floor,12,12,364270,9,54.83,54.72,19.97 -mul,gmp,12,12,411839,9,48.56,48.54,20.00 -mul,gmpz,12,12,393058,9,50.88,50.86,20.00 -mul,auto,16,16,223692,9,89.30,89.26,19.98 -mul,kernel,16,16,256052,9,78.94,78.84,20.22 -mul,floor,16,16,232778,9,85.90,85.51,20.00 -mul,gmp,16,16,244197,9,81.90,81.87,20.09 -mul,gmpz,16,16,234982,9,85.09,85.03,20.00 -mul,auto,32,32,94551,9,211.32,211.07,19.99 -mul,kernel,32,32,107101,9,187.23,186.84,20.05 -mul,floor,32,32,100901,9,197.39,196.91,19.92 -mul,gmp,32,32,73374,9,269.11,267.58,19.74 -mul,gmpz,32,32,74117,9,269.75,269.67,19.99 -mul,auto,64,64,40274,9,496.21,495.75,19.99 -mul,kernel,64,64,41374,9,484.65,484.44,20.05 -mul,floor,64,64,40654,9,491.82,491.47,20.00 -mul,gmp,64,64,22913,9,868.56,863.31,19.91 -mul,gmpz,64,64,23206,9,858.95,858.79,19.95 -mul,auto,128,128,11659,9,1715.86,1715.38,20.02 -mul,kernel,128,128,11836,9,1690.64,1688.50,20.01 -mul,floor,128,128,11754,9,1700.12,1699.63,19.99 -mul,gmp,128,128,7202,9,2766.55,2743.76,19.90 -mul,gmpz,128,128,7304,9,2733.19,2731.50,19.97 -mul,auto,256,256,3166,9,6178.06,6176.44,19.58 -mul,kernel,256,256,3245,9,6159.62,6155.56,20.03 -mul,floor,256,256,3236,9,6177.04,6174.29,19.99 -mul,gmp,256,256,2512,9,7862.20,7814.06,19.79 -mul,gmpz,256,256,2548,9,7851.45,7848.42,20.01 -mul,auto,512,512,1043,9,19208.72,19199.31,20.06 -mul,kernel,512,512,1044,9,19196.54,19180.62,20.04 -mul,floor,512,512,1043,9,19179.96,19167.71,20.01 -mul,gmp,512,512,951,9,20816.84,20812.45,19.84 -mul,gmpz,512,512,956,9,20920.07,20907.65,20.01 -mul,auto,1000,1000,334,9,60054.94,59974.10,20.06 -mul,kernel,1000,1000,336,9,59695.88,59647.53,20.06 -mul,floor,1000,1000,336,9,59558.98,59445.74,20.01 -mul,gmp,1000,1000,374,9,53314.01,53302.87,19.94 -mul,gmpz,1000,1000,375,9,53447.07,53416.15,20.04 -mul,auto,2000,2000,113,9,177424.06,177284.86,20.06 -mul,kernel,2000,2000,113,9,177041.12,176788.28,20.04 -mul,floor,2000,2000,114,9,176518.99,176441.25,20.14 -mul,gmp,2000,2000,139,9,144205.34,144134.57,20.04 -mul,gmpz,2000,2000,139,9,144322.16,144272.15,20.06 -mul,auto,2000,100,1134,9,17643.77,17639.34,20.01 -mul,kernel,2000,100,1133,9,17662.59,17656.57,20.02 -mul,floor,2000,100,1132,9,17677.44,17671.24,20.01 -mul,gmp,2000,100,546,9,36249.71,36073.50,19.83 -mul,gmpz,2000,100,558,9,35953.15,35854.99,20.05 -sqr,auto,4,4,901928,9,22.21,22.13,20.09 -sqr,kernel,4,4,2018133,9,9.94,9.83,20.08 -sqr,floor,4,4,1217137,9,16.78,16.78,20.43 -sqr,gmp,4,4,3418061,9,5.82,5.80,19.93 -sqr,gmpz,4,4,2220138,9,9.14,9.08,20.31 -sqr,auto,16,16,293023,9,68.12,68.07,19.97 -sqr,kernel,16,16,342061,9,58.51,58.41,20.01 -sqr,floor,16,16,299132,9,63.47,63.43,19.00 -sqr,gmp,16,16,395427,9,49.90,49.79,19.81 -sqr,gmpz,16,16,382134,9,52.10,52.07,19.91 -sqr,auto,64,64,69895,9,286.20,285.56,20.01 -sqr,kernel,64,64,73621,9,272.06,271.49,20.03 -sqr,floor,64,64,71848,9,278.70,277.42,20.03 -sqr,gmp,64,64,35696,9,556.22,550.62,19.85 -sqr,gmpz,64,64,35473,9,557.05,556.46,19.76 -sqr,auto,512,512,1893,9,10573.94,10568.86,20.02 -sqr,kernel,512,512,1892,9,10570.88,10566.78,20.00 -sqr,floor,512,512,1780,9,11217.50,11205.54,19.98 -sqr,gmp,512,512,1323,9,15126.31,15117.85,20.02 -sqr,gmpz,512,512,1328,9,15065.40,15057.15,20.05 -sqr,auto,2000,2000,205,9,97771.25,97758.96,20.05 -sqr,kernel,2000,2000,205,9,97740.72,97680.98,20.04 -sqr,floor,2000,2000,205,9,97779.16,97734.35,20.05 -sqr,gmp,2000,2000,199,9,100562.65,100488.54,20.01 -sqr,gmpz,2000,2000,199,9,100559.18,100499.06,20.02 -divrem,auto,2,1,638194,9,31.05,30.94,19.86 -divrem,kernel,2,1,3515822,9,5.69,5.55,20.01 -divrem,floor,2,1,1561599,9,12.80,12.75,20.00 -divrem,gmp,2,1,2987843,9,6.70,6.69,20.02 -divrem,gmpz,2,1,1727219,9,11.56,11.53,19.98 -divrem,auto,8,4,200064,9,100.13,99.94,20.05 -divrem,kernel,8,4,361244,9,55.40,55.10,20.13 -divrem,floor,8,4,263869,9,74.45,73.98,19.67 -divrem,gmp,8,4,457275,9,43.73,43.50,20.00 -divrem,gmpz,8,4,432050,9,46.06,45.91,19.92 -divrem,auto,32,16,58735,9,342.38,337.35,20.12 -divrem,kernel,32,16,69559,9,288.00,286.15,20.03 -divrem,floor,32,16,65209,9,308.86,307.09,20.15 -divrem,gmp,32,16,105891,9,189.36,188.85,20.05 -divrem,gmpz,32,16,104442,9,191.97,191.16,20.05 -divrem,auto,128,64,5824,9,3439.89,3435.32,20.03 -divrem,kernel,128,64,5920,9,3379.87,3374.76,20.05 -divrem,floor,128,64,5866,9,3399.76,3398.14,19.98 -divrem,gmp,128,64,11639,9,1718.81,1717.86,20.01 -divrem,gmpz,128,64,11612,9,1722.59,1721.45,20.01 -divrem,auto,512,256,685,9,29476.72,29365.36,20.19 -divrem,kernel,512,256,685,9,29228.00,29160.54,20.02 -divrem,floor,512,256,682,9,29336.84,29311.68,20.02 -divrem,gmp,512,256,1230,9,16262.94,16257.54,20.00 -divrem,gmpz,512,256,1232,9,16236.24,16232.24,20.00 -divrem,auto,2000,1000,108,9,186794.72,186289.39,20.17 -divrem,kernel,2000,1000,108,9,186649.17,186439.09,20.23 -divrem,floor,2000,1000,107,9,188070.20,187931.15,20.13 -divrem,gmp,2000,1000,145,9,138119.28,138075.79,20.03 -divrem,gmpz,2000,1000,145,9,138140.75,138119.05,20.03 -divrem,auto,4000,2000,43,9,476652.84,476266.72,20.50 -divrem,kernel,4000,2000,42,9,478440.05,478253.71,20.10 -divrem,floor,4000,2000,42,9,478139.17,478087.02,20.09 -divrem,gmp,4000,2000,60,9,333266.35,332479.28,20.08 -divrem,gmpz,4000,2000,61,9,333314.51,332983.10,20.34 -divrem,auto,2000,100,139,9,144334.24,143631.98,20.06 -divrem,kernel,2000,100,139,9,143566.42,143213.91,19.98 -divrem,floor,2000,100,140,9,142981.06,142916.53,20.04 -divrem,gmp,2000,100,278,9,72047.45,72034.13,20.04 -divrem,gmpz,2000,100,278,9,72119.43,72104.07,20.05 -divrem,auto,65536,1,119,9,168694.72,168217.84,20.08 -divrem,kernel,65536,1,120,9,166924.63,166779.73,20.03 -divrem,floor,65536,1,120,9,167429.69,167087.44,20.09 -divrem,gmp,65536,1,136,9,148104.64,148099.69,20.15 -divrem,gmpz,65536,1,136,9,148116.47,148105.24,20.14 -tochars,auto,1,10,1355736,9,14.73,14.73,19.99 -tochars,kernel,1,10,313805,9,63.76,63.72,20.02 -tochars,gmp,1,10,1013145,9,19.68,19.62,19.94 -tochars,gmpz,1,10,589885,9,33.85,33.68,19.97 -tochars,auto,4,10,136501,9,146.17,142.64,19.89 -tochars,kernel,4,10,111570,9,180.63,179.58,20.17 -tochars,gmp,4,10,279381,9,71.56,71.51,19.99 -tochars,gmpz,4,10,202256,9,98.74,98.64,19.98 -tochars,auto,16,10,17140,9,1163.69,1158.52,19.94 -tochars,kernel,16,10,19344,9,1030.72,1029.15,19.95 -tochars,gmp,16,10,39715,9,503.65,503.53,20.00 -tochars,gmpz,16,10,33971,9,589.65,587.33,20.02 -tochars,auto,64,10,3515,9,5693.90,5679.78,20.03 -tochars,kernel,64,10,3758,9,5337.86,5330.92,20.08 -tochars,gmp,64,10,7530,9,2657.06,2652.27,20.01 -tochars,gmpz,64,10,6791,9,2945.97,2943.72,20.02 -tochars,auto,256,10,540,9,37050.67,37043.52,20.01 -tochars,kernel,256,10,563,9,35569.42,35549.32,20.03 -tochars,gmp,256,10,1080,9,18555.92,18538.51,20.05 -tochars,gmpz,256,10,1018,9,19658.96,19643.50,20.01 -tochars,auto,2000,10,33,9,621612.36,621229.94,20.52 -tochars,kernel,2000,10,34,9,598569.21,598492.03,20.40 -tochars,gmp,2000,10,50,9,400844.56,400543.90,20.07 -tochars,gmpz,2000,10,49,9,408430.39,408228.33,20.02 -tochars,auto,16,16,190126,9,103.73,103.34,19.76 -tochars,gmp,16,16,207472,9,96.23,96.14,19.98 -tochars,gmpz,16,16,127490,9,156.93,156.72,20.00 -tochars,auto,2000,16,1670,9,11938.07,11937.22,19.95 -tochars,gmp,2000,16,1800,9,11111.52,11110.56,20.01 -tochars,gmpz,2000,16,1116,9,17929.36,17926.69,20.02 -fromchars,auto,4,10,173167,9,115.47,115.07,20.00 -fromchars,kernel,4,10,518581,9,38.60,38.19,20.00 -fromchars,gmp,4,10,624449,9,32.00,31.96,20.01 -fromchars,gmpz,4,10,287280,9,69.03,68.78,19.82 -fromchars,auto,16,10,47976,9,421.53,419.67,20.25 -fromchars,kernel,16,10,102816,9,199.35,194.22,20.55 -fromchars,gmp,16,10,162453,9,123.18,122.83,20.01 -fromchars,gmpz,16,10,68688,9,291.46,290.11,20.04 -fromchars,auto,64,10,7272,9,2836.33,2772.39,20.79 -fromchars,kernel,64,10,11440,9,1811.07,1699.50,20.82 -fromchars,gmp,64,10,21272,9,939.26,938.49,19.98 -fromchars,gmpz,64,10,14041,9,1423.93,1422.63,20.01 -fromchars,auto,256,10,819,9,27598.24,26234.97,22.57 -fromchars,kernel,256,10,844,9,24158.60,21412.20,20.80 -fromchars,gmp,256,10,2499,9,8015.89,8004.67,20.03 -fromchars,gmpz,256,10,2010,9,9952.60,9940.25,20.01 -fromchars,auto,2000,10,52,9,385854.73,385356.38,20.07 -fromchars,kernel,2000,10,56,9,363042.38,362981.98,20.34 -fromchars,gmp,2000,10,110,9,182303.46,182261.16,20.05 -fromchars,gmpz,2000,10,102,9,197407.15,197383.46,20.14 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64_seed2b.csv b/tests/beman/big_int/perf/item1/x64r3_new64_seed2b.csv deleted file mode 100644 index c333528d..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_new64_seed2b.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T18:07:47Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,3577047,9,5.35,5.32,19.13 -add,inplace,1,1,3921704,9,2.56,2.55,20.08 -add,kernel,1,1,10430436,9,1.93,1.90,20.12 -add,floor,1,1,2035677,9,9.82,9.78,19.99 -add,gmp,1,1,8823398,9,2.27,2.27,20.02 -add,gmpz,1,1,4813001,9,4.16,4.16,20.00 -add,auto,2,2,1267695,9,15.83,15.78,20.10 -add,inplace,2,2,1633467,9,6.26,6.02,20.41 -add,kernel,2,2,8368911,9,2.39,2.30,19.96 -add,floor,2,2,1980836,9,10.18,10.15,20.17 -add,gmp,2,2,8823660,9,2.27,2.27,20.02 -add,gmpz,2,2,4813109,9,4.16,4.16,20.00 -add,auto,4,4,1306219,9,15.35,15.29,20.07 -add,inplace,4,4,1763229,9,5.70,5.64,20.12 -add,kernel,4,4,6598532,9,3.05,3.02,20.11 -add,floor,4,4,1830063,9,10.92,10.87,20.00 -add,gmp,4,4,8042193,9,2.49,2.49,20.01 -add,gmpz,4,4,4595181,9,4.34,4.34,19.98 -add,auto,8,8,1195411,9,16.83,16.77,20.10 -add,inplace,8,8,1383999,9,7.33,7.21,20.43 -add,kernel,8,8,4378986,9,4.53,4.53,19.85 -add,floor,8,8,1610842,9,12.46,12.40,20.05 -add,gmp,8,8,5440624,9,3.68,3.68,20.03 -add,gmpz,8,8,4260457,9,4.66,4.63,19.83 -add,auto,16,16,946810,9,20.98,20.89,19.85 -add,inplace,16,16,893259,9,11.20,11.17,20.01 -add,kernel,16,16,2647252,9,7.56,7.55,20.03 -add,floor,16,16,1297957,9,15.42,15.37,20.00 -add,gmp,16,16,3626203,9,5.50,5.50,19.95 -add,gmpz,16,16,3075764,9,6.51,6.48,20.04 -add,auto,64,64,435056,9,46.16,45.80,20.07 -add,inplace,64,64,276720,9,35.83,35.42,19.82 -add,kernel,64,64,597039,9,33.58,33.44,20.04 -add,floor,64,64,475025,9,41.84,41.75,19.87 -add,gmp,64,64,1294650,9,15.45,15.45,20.00 -add,gmpz,64,64,1212870,9,16.49,16.46,19.99 -add,auto,256,256,123423,9,162.19,161.91,20.02 -add,inplace,256,256,69184,9,144.56,144.53,20.00 -add,kernel,256,256,140593,9,142.32,142.19,20.01 -add,floor,256,256,126526,9,158.25,158.15,20.03 -add,gmp,256,256,255675,9,78.22,78.21,20.03 -add,gmpz,256,256,251597,9,79.47,79.38,20.01 -add,auto,1024,1024,33357,9,599.67,599.52,20.00 -add,inplace,1024,1024,17167,9,581.56,581.50,19.97 -add,kernel,1024,1024,34628,9,577.71,577.58,20.01 -add,floor,1024,1024,33679,9,594.03,593.73,20.01 -add,gmp,1024,1024,51217,9,390.51,390.50,20.00 -add,gmpz,1024,1024,51093,9,391.44,391.43,20.01 -add,auto,2000,2000,17361,9,1152.15,1152.08,20.01 -add,inplace,2000,2000,8826,9,1132.04,1131.93,19.99 -add,kernel,2000,2000,17670,9,1131.81,1131.76,20.00 -add,floor,2000,2000,17378,9,1150.61,1150.29,20.00 -add,gmp,2000,2000,43712,9,457.55,457.54,20.00 -add,gmpz,2000,2000,41790,9,478.53,476.94,19.99 -add,auto,1024,1,79434,9,251.91,251.47,20.01 -add,inplace,1024,1,2072297,9,4.83,4.82,20.07 -add,kernel,1024,1,34636,9,577.39,577.36,20.00 -add,floor,1024,1,33692,9,593.60,593.50,20.05 -add,gmp,1024,1,85939,9,232.75,232.35,20.03 -add,gmpz,1024,1,85469,9,234.04,233.74,20.00 -sub,auto,1,1,3607642,9,5.45,5.37,19.69 -sub,inplace,1,1,3992721,9,2.46,2.46,19.66 -sub,kernel,1,1,13236344,9,1.51,1.51,20.00 -sub,floor,1,1,9820298,9,2.05,2.00,19.98 -sub,gmp,1,1,8823989,9,2.27,2.27,20.01 -sub,gmpz,1,1,4603741,9,4.34,4.34,20.02 -sub,auto,2,2,1282193,9,15.62,15.54,20.05 -sub,inplace,2,2,2048372,9,4.83,4.78,19.91 -sub,kernel,2,2,9518725,9,2.12,2.10,20.20 -sub,floor,2,2,2051190,9,9.84,9.77,20.15 -sub,gmp,2,2,8824305,9,2.27,2.27,20.00 -sub,gmpz,2,2,4603556,9,4.34,4.34,20.06 -sub,auto,4,4,1219577,9,16.43,16.38,20.04 -sub,inplace,4,4,1767929,9,5.61,5.51,19.81 -sub,kernel,4,4,7004924,9,2.84,2.83,19.88 -sub,floor,4,4,1909653,9,10.57,10.54,20.21 -sub,gmp,4,4,8007005,9,2.50,2.50,19.99 -sub,gmpz,4,4,4397969,9,4.55,4.54,20.05 -sub,auto,8,8,1114372,9,18.00,17.96,20.06 -sub,inplace,8,8,1382201,9,7.10,7.04,19.62 -sub,kernel,8,8,4590274,9,4.36,4.36,20.04 -sub,floor,8,8,1645925,9,12.18,12.14,20.04 -sub,gmp,8,8,5423417,9,3.69,3.69,20.01 -sub,gmpz,8,8,4039996,9,4.95,4.93,20.00 -sub,auto,16,16,953025,9,21.00,20.92,20.00 -sub,inplace,16,16,997805,9,10.04,10.02,20.03 -sub,kernel,16,16,2679304,9,7.46,7.46,20.00 -sub,floor,16,16,1325839,9,15.20,15.16,20.16 -sub,gmp,16,16,3637705,9,5.50,5.49,19.99 -sub,gmpz,16,16,2946389,9,6.80,6.77,20.05 -sub,auto,64,64,439726,9,45.15,45.07,19.95 -sub,inplace,64,64,286346,9,34.55,34.16,19.80 -sub,kernel,64,64,611637,9,32.70,32.69,20.00 -sub,floor,64,64,474746,9,42.19,42.09,20.03 -sub,gmp,64,64,1294771,9,15.45,15.45,20.00 -sub,gmpz,64,64,1194635,9,16.74,16.71,19.99 -sub,auto,256,256,123073,9,162.63,162.50,20.02 -sub,inplace,256,256,69277,9,144.36,144.34,20.01 -sub,kernel,256,256,140406,9,142.45,142.44,20.01 -sub,floor,256,256,126436,9,158.52,158.33,20.04 -sub,gmp,256,256,255595,9,78.25,78.24,20.00 -sub,gmpz,256,256,250458,9,79.87,79.75,20.00 -sub,auto,1024,1024,33459,9,598.33,597.77,20.02 -sub,inplace,1024,1024,17227,9,580.54,580.52,20.00 -sub,kernel,1024,1024,34616,9,577.77,577.76,20.01 -sub,floor,1024,1024,33660,9,594.18,594.05,20.01 -sub,gmp,1024,1024,51304,9,389.79,389.78,20.00 -sub,gmpz,1024,1024,51012,9,392.06,392.04,20.01 -sub,auto,2000,2000,17319,9,1154.83,1154.57,20.01 -sub,inplace,2000,2000,8836,9,1131.82,1131.78,20.02 -sub,kernel,2000,2000,17659,9,1132.59,1132.55,20.00 -sub,floor,2000,2000,17397,9,1149.97,1149.74,20.01 -sub,gmp,2000,2000,41766,9,478.89,478.87,20.00 -sub,gmpz,2000,2000,40802,9,490.19,488.82,19.99 -sub,auto,1024,1,79279,9,252.29,251.90,20.00 -sub,inplace,1024,1,2119759,9,4.74,4.71,20.14 -sub,kernel,1024,1,34693,9,576.50,576.49,20.00 -sub,floor,1024,1,33721,9,593.21,593.01,20.00 -sub,gmp,1024,1,85537,9,233.08,233.02,19.94 -sub,gmpz,1024,1,85649,9,233.96,233.51,20.04 -shl,auto,1,13,1603179,9,12.51,12.40,20.05 -shl,inplace,1,13,2386434,9,4.19,4.18,20.02 -shl,kernel,1,13,9553877,9,2.08,2.06,19.81 -shl,kernelip,1,13,5802986,9,1.75,1.72,20.30 -shl,floor,1,13,2078823,9,9.83,9.82,20.46 -shl,gmp,1,13,9626105,9,2.24,2.08,21.38 -shl,gmpz,1,13,6111055,9,3.27,3.27,20.01 -shl,auto,4,13,1484647,9,13.51,13.40,20.06 -shl,inplace,4,13,1885438,9,5.26,5.22,19.85 -shl,kernel,4,13,5530834,9,3.48,3.46,19.33 -shl,kernelip,4,13,3439395,9,2.90,2.89,20.00 -shl,floor,4,13,1775779,9,11.20,11.18,19.88 -shl,gmp,4,13,7991494,9,2.50,2.50,20.03 -shl,gmpz,4,13,4946257,9,4.04,4.04,20.00 -shl,auto,16,13,1170586,9,17.16,17.02,20.06 -shl,inplace,16,13,1084001,9,9.25,9.23,20.05 -shl,kernel,16,13,2648764,9,7.58,7.49,20.02 -shl,kernelip,16,13,1397422,9,7.16,7.12,20.00 -shl,floor,16,13,1344401,9,15.21,15.21,20.45 -shl,gmp,16,13,4812046,9,4.16,4.14,20.00 -shl,gmpz,16,13,3446148,9,5.80,5.80,20.04 -shl,auto,256,13,162560,9,121.93,121.75,19.81 -shl,inplace,256,13,100859,9,99.30,99.21,20.03 -shl,kernel,256,13,212278,9,94.19,94.15,20.01 -shl,kernelip,256,13,103242,9,96.92,96.83,20.02 -shl,floor,256,13,179389,9,114.61,114.26,20.56 -shl,gmp,256,13,424108,9,47.20,47.09,20.02 -shl,gmpz,256,13,394969,9,50.60,50.55,19.99 -shl,auto,2000,13,25884,9,773.04,772.61,20.04 -shl,inplace,2000,13,13951,9,716.84,716.77,20.00 -shl,kernel,2000,13,27715,9,719.54,719.27,19.94 -shl,kernelip,2000,13,13996,9,714.41,714.38,20.00 -shl,floor,2000,13,27130,9,738.84,738.59,20.06 -shl,gmp,2000,13,59629,9,335.46,335.36,20.01 -shl,gmpz,2000,13,59148,9,338.06,337.85,20.00 -shl,auto,2000,77,25774,9,774.47,774.33,19.96 -shl,inplace,2000,77,13486,9,741.62,739.84,20.04 -shl,kernel,2000,77,23431,9,852.52,850.31,19.97 -shl,kernelip,2000,77,12163,9,822.02,822.00,20.00 -shl,floor,2000,77,22965,9,872.53,870.60,20.06 -shl,gmp,2000,77,59273,9,337.55,337.53,20.01 -shl,gmpz,2000,77,59135,9,338.22,338.19,20.01 -shr,auto,1,13,2441463,9,8.19,8.18,20.00 -shr,inplace,1,13,2545431,9,3.87,3.86,19.81 -shr,kernel,1,13,11750523,9,1.70,1.70,20.00 -shr,floor,1,13,8824048,9,2.27,2.27,20.02 -shr,gmp,1,13,10588923,9,1.89,1.89,20.00 -shr,gmpz,1,13,5787687,9,3.46,3.46,20.05 -shr,auto,4,13,1241607,9,16.05,16.02,19.94 -shr,inplace,4,13,1970774,9,5.06,5.05,19.96 -shr,kernel,4,13,5694902,9,3.51,3.51,20.00 -shr,floor,4,13,1503973,9,13.14,12.51,19.64 -shr,gmp,4,13,7252141,9,2.75,2.75,19.97 -shr,gmpz,4,13,4090978,9,4.91,4.78,20.15 -shr,auto,16,13,1000756,9,20.02,19.99,20.03 -shr,inplace,16,13,1126681,9,8.91,8.88,20.07 -shr,kernel,16,13,2262378,9,8.92,8.87,20.18 -shr,floor,16,13,1167292,9,17.13,17.05,20.00 -shr,gmp,16,13,4632687,9,4.32,4.32,20.00 -shr,gmpz,16,13,2946458,9,6.77,6.75,19.98 -shr,auto,256,13,159883,9,125.07,125.00,20.00 -shr,inplace,256,13,100953,9,99.11,99.01,20.02 -shr,kernel,256,13,181782,9,110.03,109.84,20.04 -shr,floor,256,13,150985,9,131.06,130.93,19.81 -shr,gmp,256,13,416223,9,48.10,47.95,20.04 -shr,gmpz,256,13,396290,9,50.77,50.33,20.09 -shr,auto,2000,13,26694,9,749.36,748.68,20.00 -shr,inplace,2000,13,13914,9,718.89,716.45,20.02 -shr,kernel,2000,13,24624,9,812.35,812.22,20.04 -shr,floor,2000,13,24004,9,833.62,832.17,20.07 -shr,gmp,2000,13,59524,9,336.09,335.89,20.02 -shr,gmpz,2000,13,58978,9,339.03,338.99,20.00 -shr,auto,2000,77,26575,9,749.38,749.09,19.92 -shr,inplace,2000,77,13505,9,740.96,739.32,20.01 -shr,kernel,2000,77,24095,9,830.10,830.08,20.02 -shr,floor,2000,77,23478,9,851.98,851.60,20.01 -shr,gmp,2000,77,59534,9,335.93,335.90,20.01 -shr,gmpz,2000,77,58994,9,339.05,338.88,20.00 -mul,auto,1,1,1173119,9,17.10,16.99,20.06 -mul,gmp,1,1,5967497,9,3.40,3.36,20.24 -mul,gmpz,1,1,5042338,9,3.97,3.97,20.01 -mul,auto,2,2,1056194,9,18.88,18.82,19.97 -mul,kernel,2,2,2707977,9,7.57,7.55,20.50 -mul,floor,2,2,1332804,9,15.21,15.16,20.28 -mul,gmp,2,2,5225958,9,3.82,3.80,19.95 -mul,gmpz,2,2,3275568,9,6.11,6.08,20.00 -mul,auto,3,3,982858,9,20.27,20.22,19.95 -mul,kernel,3,3,2247271,9,8.93,8.91,20.06 -mul,floor,3,3,1191248,9,16.83,16.77,20.06 -mul,gmp,3,3,2568668,9,7.75,7.72,19.90 -mul,gmpz,3,3,2018479,9,9.92,9.88,20.03 -mul,auto,4,4,893986,9,22.26,22.24,19.93 -mul,kernel,4,4,1928222,9,10.91,10.89,21.02 -mul,floor,4,4,1081254,9,18.42,18.30,19.92 -mul,gmp,4,4,2071836,9,9.65,9.60,20.00 -mul,gmpz,4,4,1655692,9,12.11,12.04,20.05 -mul,auto,6,6,717007,9,27.82,27.70,19.96 -mul,kernel,6,6,1216350,9,17.16,17.13,20.88 -mul,floor,6,6,812417,9,24.51,24.49,19.95 -mul,gmp,6,6,1170812,9,17.06,17.01,19.95 -mul,gmpz,6,6,1100983,9,18.14,18.11,19.97 -mul,auto,8,8,560496,9,35.66,35.42,19.98 -mul,kernel,8,8,810385,9,25.28,25.14,20.51 -mul,floor,8,8,608691,9,32.78,32.66,19.97 -mul,gmp,8,8,740277,9,26.97,26.89,19.98 -mul,gmpz,8,8,686900,9,29.01,28.68,19.88 -mul,auto,12,12,350075,9,57.15,57.08,20.01 -mul,kernel,12,12,427759,9,47.50,47.32,20.32 -mul,floor,12,12,359364,9,55.84,55.66,20.05 -mul,gmp,12,12,411195,9,48.56,48.54,19.99 -mul,gmpz,12,12,393960,9,50.75,50.73,19.99 -mul,auto,16,16,226282,9,88.40,88.36,20.01 -mul,kernel,16,16,256426,9,78.59,78.52,20.18 -mul,floor,16,16,229393,9,87.58,87.43,20.11 -mul,gmp,16,16,244219,9,81.91,81.84,20.00 -mul,gmpz,16,16,237980,9,84.06,84.03,20.01 -mul,auto,32,32,95147,9,209.91,209.62,19.98 -mul,kernel,32,32,107047,9,186.55,186.45,19.99 -mul,floor,32,32,102204,9,196.07,195.30,20.02 -mul,gmp,32,32,72602,9,271.89,270.70,19.82 -mul,gmpz,32,32,73744,9,270.69,270.59,19.96 -mul,auto,64,64,40152,9,497.87,497.63,20.00 -mul,kernel,64,64,41025,9,485.10,484.55,19.92 -mul,floor,64,64,40656,9,491.23,490.60,19.97 -mul,gmp,64,64,22794,9,870.47,858.90,19.78 -mul,gmpz,64,64,23326,9,858.18,857.47,20.02 -mul,auto,128,128,11641,9,1719.09,1715.69,20.03 -mul,kernel,128,128,11824,9,1691.80,1689.20,20.00 -mul,floor,128,128,11761,9,1699.55,1698.41,19.99 -mul,gmp,128,128,7202,9,2759.94,2735.36,19.85 -mul,gmpz,128,128,7317,9,2732.97,2731.78,20.00 -mul,auto,256,256,3236,9,6174.79,6173.44,19.99 -mul,kernel,256,256,3250,9,6147.58,6144.56,19.98 -mul,floor,256,256,3236,9,6168.85,6166.11,19.96 -mul,gmp,256,256,2512,9,7885.20,7811.98,19.80 -mul,gmpz,256,256,2543,9,7856.20,7851.86,19.98 -mul,auto,512,512,1025,9,19205.85,19195.62,19.70 -mul,kernel,512,512,1046,9,19184.28,19171.67,20.07 -mul,floor,512,512,1043,9,19186.93,19171.79,20.01 -mul,gmp,512,512,952,9,20792.79,20788.22,19.81 -mul,gmpz,512,512,957,9,20902.30,20893.51,20.01 -mul,auto,1000,1000,334,9,60052.82,59942.66,20.05 -mul,kernel,1000,1000,336,9,59770.95,59739.82,20.08 -mul,floor,1000,1000,336,9,59649.54,59571.83,20.04 -mul,gmp,1000,1000,373,9,53371.11,53358.96,19.92 -mul,gmpz,1000,1000,374,9,53535.73,53504.12,20.03 -mul,auto,2000,2000,113,9,177030.50,176902.36,20.01 -mul,kernel,2000,2000,114,9,176932.86,176815.11,20.17 -mul,floor,2000,2000,114,9,176475.61,176333.16,20.12 -mul,gmp,2000,2000,139,9,144051.29,144036.38,20.03 -mul,gmpz,2000,2000,139,9,144121.03,144038.63,20.03 -mul,auto,2000,100,1133,9,17657.84,17653.95,20.01 -mul,kernel,2000,100,1132,9,17655.76,17651.87,20.03 -mul,floor,2000,100,1132,9,17669.94,17665.70,20.02 -mul,gmp,2000,100,546,9,36271.44,36028.86,19.82 -mul,gmpz,2000,100,556,9,35987.60,35857.05,20.00 -sqr,auto,4,4,898995,9,22.20,22.11,20.01 -sqr,kernel,4,4,2004100,9,9.92,9.75,19.81 -sqr,floor,4,4,1180255,9,16.79,16.76,19.82 -sqr,gmp,4,4,3433463,9,5.81,5.79,20.01 -sqr,gmpz,4,4,2273598,9,8.83,8.78,20.12 -sqr,auto,16,16,301575,9,66.32,66.20,20.00 -sqr,kernel,16,16,357147,9,56.09,56.02,20.06 -sqr,floor,16,16,320643,9,62.43,62.39,20.02 -sqr,gmp,16,16,398122,9,49.83,49.81,19.85 -sqr,gmpz,16,16,383936,9,52.08,52.06,20.00 -sqr,auto,64,64,70796,9,282.52,282.13,20.01 -sqr,kernel,64,64,72176,9,277.21,276.68,20.00 -sqr,floor,64,64,71661,9,282.53,281.79,20.24 -sqr,gmp,64,64,35749,9,555.20,549.92,19.89 -sqr,gmpz,64,64,36162,9,551.04,550.94,19.93 -sqr,auto,512,512,1892,9,10567.05,10560.98,20.00 -sqr,kernel,512,512,1890,9,10584.92,10577.92,20.01 -sqr,floor,512,512,1883,9,10619.83,10614.94,20.00 -sqr,gmp,512,512,1331,9,15038.02,15033.59,20.02 -sqr,gmpz,512,512,1331,9,15037.01,15029.12,20.01 -sqr,auto,2000,2000,204,9,98183.77,98175.46,20.03 -sqr,kernel,2000,2000,204,9,98167.33,98117.55,20.03 -sqr,floor,2000,2000,204,9,98253.94,98208.76,20.04 -sqr,gmp,2000,2000,199,9,100635.62,100587.59,20.03 -sqr,gmpz,2000,2000,199,9,100608.89,100568.23,20.02 -divrem,auto,2,1,614468,9,32.52,32.38,20.01 -divrem,kernel,2,1,3501342,9,5.66,5.48,19.71 -divrem,floor,2,1,1558013,9,12.81,12.78,19.97 -divrem,gmp,2,1,2983669,9,6.70,6.70,20.00 -divrem,gmpz,2,1,1725041,9,11.60,11.54,20.02 -divrem,auto,8,4,201575,9,99.04,98.16,19.94 -divrem,kernel,8,4,347047,9,57.29,56.67,19.88 -divrem,floor,8,4,277626,9,71.51,71.31,19.88 -divrem,gmp,8,4,458645,9,43.79,43.72,20.10 -divrem,gmpz,8,4,420666,9,47.43,47.25,19.95 -divrem,auto,32,16,58747,9,339.31,335.26,19.91 -divrem,kernel,32,16,70144,9,285.03,283.82,19.99 -divrem,floor,32,16,66215,9,302.27,301.31,20.04 -divrem,gmp,32,16,105531,9,189.62,188.78,20.00 -divrem,gmpz,32,16,103490,9,193.59,192.61,20.04 -divrem,auto,128,64,5821,9,3441.75,3433.00,20.04 -divrem,kernel,128,64,6005,9,3332.20,3330.56,20.02 -divrem,floor,128,64,5983,9,3347.31,3339.66,20.02 -divrem,gmp,128,64,11631,9,1720.05,1718.73,20.01 -divrem,gmpz,128,64,11600,9,1724.30,1723.50,20.01 -divrem,auto,512,256,679,9,29493.88,29435.07,20.03 -divrem,kernel,512,256,682,9,29370.01,29336.88,20.07 -divrem,floor,512,256,682,9,29353.82,29319.43,20.03 -divrem,gmp,512,256,1232,9,16232.90,16226.93,20.00 -divrem,gmpz,512,256,1236,9,16190.97,16186.41,20.02 -divrem,auto,2000,1000,108,9,186840.69,186275.31,20.17 -divrem,kernel,2000,1000,108,9,186048.68,185803.25,20.10 -divrem,floor,2000,1000,108,9,186283.78,185985.70,20.12 -divrem,gmp,2000,1000,145,9,138003.46,137958.75,20.02 -divrem,gmpz,2000,1000,145,9,137974.21,137945.08,20.01 -divrem,auto,4000,2000,42,9,477535.88,477269.60,20.06 -divrem,kernel,4000,2000,42,9,476384.98,475947.02,20.01 -divrem,floor,4000,2000,42,9,476778.90,476474.64,20.03 -divrem,gmp,4000,2000,60,9,334009.12,332808.88,20.04 -divrem,gmpz,4000,2000,60,9,333192.87,332781.00,20.00 -divrem,auto,2000,100,139,9,144182.16,143873.96,20.04 -divrem,kernel,2000,100,140,9,143385.56,142992.33,20.08 -divrem,floor,2000,100,140,9,143094.35,142856.66,20.05 -divrem,gmp,2000,100,272,9,72001.97,71985.45,19.60 -divrem,gmpz,2000,100,278,9,71981.56,71966.94,20.01 -divrem,auto,65536,1,119,9,168984.07,168310.11,20.09 -divrem,kernel,65536,1,120,9,166968.46,166848.10,20.05 -divrem,floor,65536,1,120,9,167327.78,166866.08,20.07 -divrem,gmp,65536,1,136,9,148095.71,148092.93,20.15 -divrem,gmpz,65536,1,136,9,148111.24,148102.01,20.15 -tochars,auto,1,10,1357390,9,14.74,14.73,20.04 -tochars,kernel,1,10,314244,9,63.74,63.63,20.03 -tochars,gmp,1,10,1012663,9,19.65,19.51,19.89 -tochars,gmpz,1,10,592281,9,33.79,33.69,20.06 -tochars,auto,4,10,145796,9,137.74,136.97,20.07 -tochars,kernel,4,10,109558,9,181.60,180.07,19.89 -tochars,gmp,4,10,278716,9,71.77,71.74,20.02 -tochars,gmpz,4,10,202113,9,98.77,98.70,19.97 -tochars,auto,16,10,17135,9,1166.13,1161.29,19.98 -tochars,kernel,16,10,19261,9,1033.24,1030.61,19.93 -tochars,gmp,16,10,39738,9,503.07,502.94,20.00 -tochars,gmpz,16,10,33829,9,589.31,587.68,19.96 -tochars,auto,64,10,3508,9,5697.18,5694.96,19.99 -tochars,kernel,64,10,3751,9,5327.97,5323.33,19.99 -tochars,gmp,64,10,7531,9,2658.42,2653.99,20.03 -tochars,gmpz,64,10,6791,9,2948.60,2945.23,20.03 -tochars,auto,256,10,539,9,36914.01,36862.59,19.92 -tochars,kernel,256,10,564,9,35488.09,35460.92,20.02 -tochars,gmp,256,10,1055,9,18589.93,18566.66,19.62 -tochars,gmpz,256,10,1016,9,19684.63,19664.20,20.00 -tochars,auto,2000,10,33,9,623341.88,622651.94,20.57 -tochars,kernel,2000,10,34,9,598492.94,598168.12,20.35 -tochars,gmp,2000,10,50,9,400019.86,399802.06,20.00 -tochars,gmpz,2000,10,49,9,408708.10,408537.04,20.03 -tochars,auto,16,16,192800,9,103.35,103.19,19.93 -tochars,gmp,16,16,203772,9,98.17,98.09,20.00 -tochars,gmpz,16,16,127484,9,156.96,156.73,20.05 -tochars,auto,2000,16,1656,9,11925.94,11924.49,19.75 -tochars,gmp,2000,16,1801,9,11111.26,11110.65,20.02 -tochars,gmpz,2000,16,1116,9,17928.43,17924.46,20.01 -fromchars,auto,4,10,173263,9,115.79,115.40,20.10 -fromchars,kernel,4,10,523191,9,38.56,38.46,20.19 -fromchars,gmp,4,10,626621,9,32.00,31.93,20.05 -fromchars,gmpz,4,10,288103,9,69.35,69.02,19.99 -fromchars,auto,16,10,47810,9,425.70,416.99,20.28 -fromchars,kernel,16,10,98722,9,200.83,192.05,19.78 -fromchars,gmp,16,10,162246,9,123.34,123.15,20.01 -fromchars,gmpz,16,10,78503,9,254.87,254.57,20.04 -fromchars,auto,64,10,7077,9,2749.33,2637.69,19.64 -fromchars,kernel,64,10,12017,9,1803.39,1574.96,22.08 -fromchars,gmp,64,10,22071,9,906.67,905.99,20.01 -fromchars,gmpz,64,10,14558,9,1374.30,1372.40,20.01 -fromchars,auto,256,10,780,9,28241.78,25861.71,21.05 -fromchars,kernel,256,10,874,9,24702.66,23384.15,21.56 -fromchars,gmp,256,10,2484,9,8033.81,8030.30,19.96 -fromchars,gmpz,256,10,2000,9,10000.92,9996.04,20.00 -fromchars,auto,2000,10,52,9,385442.77,385206.52,20.05 -fromchars,kernel,2000,10,56,9,362677.02,362558.41,20.33 -fromchars,gmp,2000,10,110,9,182724.77,182639.17,20.12 -fromchars,gmpz,2000,10,102,9,197874.20,197827.13,20.18 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64_spot_seed1.csv b/tests/beman/big_int/perf/item1/x64r3_new64_spot_seed1.csv deleted file mode 100644 index c0f602a4..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_new64_spot_seed1.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,2144,3,9329.80,9329.19,20.00 -add,inplace,16384,16384,1077,3,9291.75,9291.14,20.04 -add,kernel,16384,16384,2152,3,9293.82,9293.61,20.00 -add,floor,16384,16384,2148,3,9314.66,9314.60,20.01 -add,gmp,16384,16384,2881,3,6945.29,6944.91,20.01 -add,gmpz,16384,16384,2893,3,6860.43,6860.09,19.86 -mul,auto,2000,2000,113,3,179055.24,177176.49,20.16 -mul,kernel,2000,2000,114,3,176701.90,176687.54,20.15 -mul,floor,2000,2000,114,3,176650.15,176486.77,20.14 -mul,gmp,2000,2000,139,3,144276.09,144268.36,20.06 -mul,gmpz,2000,2000,139,3,144173.74,144115.35,20.04 -mul,auto,16384,16384,6,3,3766476.00,3766148.67,22.61 -mul,kernel,16384,16384,6,3,3781961.33,3779006.50,22.73 -mul,floor,16384,16384,6,3,3794757.50,3793529.50,22.79 -mul,gmp,16384,16384,12,3,1774134.50,1771316.17,21.28 -mul,gmpz,16384,16384,12,3,1814579.67,1814217.75,21.78 -divrem,auto,4096,2048,41,3,498066.44,497803.59,20.42 -divrem,kernel,4096,2048,41,3,496244.41,496212.00,20.35 -divrem,floor,4096,2048,41,3,496228.83,496055.51,20.34 -divrem,gmp,4096,2048,54,3,369301.74,369054.00,20.00 -divrem,gmpz,4096,2048,55,3,368368.25,367991.47,20.25 -tochars,auto,10000,10,4,3,5976527.25,5952167.50,23.93 -tochars,kernel,10000,10,4,3,5926680.25,5923800.75,23.71 -tochars,gmp,10000,10,5,3,4184725.80,4183034.60,20.92 -tochars,gmpz,10000,10,5,3,4222464.20,4217894.20,21.11 -fromchars,auto,10000,10,6,3,3474352.83,3472772.17,20.85 -fromchars,kernel,10000,10,6,3,3359406.50,3357105.00,20.15 -fromchars,gmp,10000,10,11,3,1933487.18,1931693.82,21.26 -fromchars,gmpz,10000,10,10,3,2007158.70,2006656.40,20.07 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64_spot_seed2.csv b/tests/beman/big_int/perf/item1/x64r3_new64_spot_seed2.csv deleted file mode 100644 index 73a6769e..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_new64_spot_seed2.csv +++ /dev/null @@ -1,31 +0,0 @@ -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,16384,16384,2144,3,9329.67,9329.50,20.00 -add,inplace,16384,16384,1075,3,9291.73,9291.62,19.99 -add,kernel,16384,16384,2152,3,9293.32,9293.02,20.01 -add,floor,16384,16384,2147,3,9316.42,9316.23,20.00 -add,gmp,16384,16384,2887,3,6928.55,6927.34,20.00 -add,gmpz,16384,16384,2884,3,6935.64,6935.29,20.00 -mul,auto,2000,2000,113,3,176661.13,176657.92,19.97 -mul,kernel,2000,2000,114,3,176779.55,176751.55,20.15 -mul,floor,2000,2000,114,3,176584.38,176484.81,20.13 -mul,gmp,2000,2000,139,3,144195.17,144186.34,20.04 -mul,gmpz,2000,2000,139,3,144900.69,144168.84,20.15 -mul,auto,16384,16384,6,3,3792455.83,3783313.67,22.74 -mul,kernel,16384,16384,6,3,3794410.00,3794187.50,22.77 -mul,floor,16384,16384,6,3,3792077.17,3788301.17,22.75 -mul,gmp,16384,16384,12,3,1763534.08,1762809.08,21.16 -mul,gmpz,16384,16384,12,3,1763792.83,1763491.92,21.17 -divrem,auto,4096,2048,41,3,498887.49,497503.85,20.46 -divrem,kernel,4096,2048,41,3,494892.93,494711.12,20.29 -divrem,floor,4096,2048,41,3,494773.02,494563.73,20.28 -divrem,gmp,4096,2048,55,3,369379.02,369046.56,20.31 -divrem,gmpz,4096,2048,55,3,369045.49,368691.65,20.29 -tochars,auto,10000,10,4,3,5945137.00,5941633.25,23.80 -tochars,kernel,10000,10,4,3,5914946.50,5895661.75,23.64 -tochars,gmp,10000,10,5,3,4186712.60,4185394.80,21.06 -tochars,gmpz,10000,10,5,3,4225421.00,4221150.00,21.14 -fromchars,auto,10000,10,6,3,3477433.17,3474003.00,20.91 -fromchars,kernel,10000,10,6,3,3365123.83,3359244.83,20.26 -fromchars,gmp,10000,10,11,3,1932320.18,1932008.91,21.26 -fromchars,gmpz,10000,10,10,3,2004834.50,2004749.70,20.05 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64a_seed1a.csv b/tests/beman/big_int/perf/item1/x64r3_new64a_seed1a.csv deleted file mode 100644 index 21a941c0..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_new64a_seed1a.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T17:55:02Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64a seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2967090,9,6.73,6.66,19.97 -add,inplace,1,1,2035959,9,4.91,4.91,20.00 -add,kernel,1,1,10390530,9,1.92,1.89,19.93 -add,floor,1,1,2035044,9,9.83,9.82,19.99 -add,gmp,1,1,8810824,9,2.27,2.27,19.97 -add,gmpz,1,1,4813082,9,4.16,4.16,20.01 -add,auto,2,2,1259173,9,15.91,15.89,20.04 -add,inplace,2,2,1658871,9,6.21,6.11,20.56 -add,kernel,2,2,8349818,9,2.38,2.34,20.01 -add,floor,2,2,1952967,9,10.29,10.22,20.10 -add,gmp,2,2,8824180,9,2.27,2.27,20.05 -add,gmpz,2,2,4813198,9,4.16,4.16,20.05 -add,auto,4,4,1298091,9,15.41,15.41,20.01 -add,inplace,4,4,1749186,9,5.72,5.71,20.01 -add,kernel,4,4,6560176,9,3.06,3.03,20.09 -add,floor,4,4,1802134,9,11.10,10.99,20.02 -add,gmp,4,4,7976811,9,2.51,2.50,20.02 -add,gmpz,4,4,4520677,9,4.42,4.40,19.99 -add,auto,8,8,1190045,9,16.75,16.75,19.94 -add,inplace,8,8,1416722,9,7.07,7.06,20.04 -add,kernel,8,8,4346276,9,4.58,4.55,19.92 -add,floor,8,8,1585120,9,12.60,12.52,20.03 -add,gmp,8,8,5440092,9,3.68,3.68,20.01 -add,gmpz,8,8,4212103,9,4.74,4.73,20.00 -add,auto,16,16,954273,9,20.91,20.88,19.96 -add,inplace,16,16,844166,9,11.89,11.81,20.06 -add,kernel,16,16,2612332,9,7.62,7.59,19.89 -add,floor,16,16,1282509,9,15.60,15.59,20.02 -add,gmp,16,16,3633882,9,5.50,5.50,20.00 -add,gmpz,16,16,3044348,9,6.51,6.50,19.86 -add,auto,64,64,339886,9,57.75,57.67,19.63 -add,inplace,64,64,208070,9,48.07,48.06,20.01 -add,kernel,64,64,610300,9,32.79,32.65,20.04 -add,floor,64,64,470456,9,42.08,41.20,19.83 -add,gmp,64,64,1286517,9,15.55,15.54,20.00 -add,gmpz,64,64,1212719,9,16.49,16.46,19.99 -add,auto,256,256,93590,9,213.73,213.64,20.01 -add,inplace,256,256,50876,9,196.45,196.39,19.99 -add,kernel,256,256,140479,9,142.34,142.10,20.00 -add,floor,256,256,125485,9,159.29,159.20,19.99 -add,gmp,256,256,255689,9,78.32,78.22,20.03 -add,gmpz,256,256,251618,9,79.49,79.40,20.00 -add,auto,1024,1024,24986,9,800.30,800.19,20.00 -add,inplace,1024,1024,12659,9,790.10,789.89,20.05 -add,kernel,1024,1024,34601,9,577.88,577.74,20.01 -add,floor,1024,1024,33629,9,594.66,594.54,20.04 -add,gmp,1024,1024,51210,9,390.52,390.46,20.02 -add,gmpz,1024,1024,51103,9,391.36,391.32,20.00 -add,auto,2000,2000,13018,9,1536.38,1536.11,20.02 -add,inplace,2000,2000,6575,9,1521.07,1520.85,20.03 -add,kernel,2000,2000,17660,9,1132.57,1132.51,20.00 -add,floor,2000,2000,17391,9,1150.24,1149.98,20.00 -add,gmp,2000,2000,41885,9,477.52,477.48,20.02 -add,gmpz,2000,2000,41934,9,476.93,475.17,19.98 -add,auto,1024,1,79200,9,252.26,252.10,19.98 -add,inplace,1024,1,1949952,9,5.10,5.10,19.92 -add,kernel,1024,1,34639,9,577.41,577.39,20.00 -add,floor,1024,1,33677,9,593.89,593.81,20.02 -add,gmp,1024,1,85951,9,232.69,232.62,20.01 -add,gmpz,1024,1,85480,9,233.99,233.43,19.99 -sub,auto,1,1,2567081,9,7.76,7.74,19.96 -sub,inplace,1,1,2144988,9,4.68,4.67,20.08 -sub,kernel,1,1,13233754,9,1.51,1.51,20.00 -sub,floor,1,1,10588972,9,1.89,1.89,20.00 -sub,gmp,1,1,8824212,9,2.27,2.27,20.01 -sub,gmpz,1,1,4603706,9,4.35,4.34,20.06 -sub,auto,2,2,1261834,9,15.84,15.81,20.02 -sub,inplace,2,2,1954185,9,5.14,5.10,20.12 -sub,kernel,2,2,9427173,9,2.11,2.10,19.91 -sub,floor,2,2,1997592,9,10.01,10.01,20.03 -sub,gmp,2,2,8824108,9,2.27,2.27,20.03 -sub,gmpz,2,2,4603821,9,4.35,4.34,20.04 -sub,auto,4,4,1205969,9,16.57,16.57,19.99 -sub,inplace,4,4,1773806,9,5.60,5.59,19.87 -sub,kernel,4,4,7052914,9,2.84,2.84,20.00 -sub,floor,4,4,1853499,9,10.80,10.79,20.03 -sub,gmp,4,4,7945905,9,2.52,2.51,20.05 -sub,gmpz,4,4,4329947,9,4.65,4.63,20.13 -sub,auto,8,8,1115468,9,17.93,17.92,20.00 -sub,inplace,8,8,1442139,9,6.94,6.93,20.00 -sub,kernel,8,8,4570997,9,4.37,4.36,19.98 -sub,floor,8,8,1611378,9,12.42,12.40,20.01 -sub,gmp,8,8,5416969,9,3.69,3.69,19.98 -sub,gmpz,8,8,4010719,9,5.01,5.00,20.09 -sub,auto,16,16,945849,9,21.26,21.14,20.10 -sub,inplace,16,16,865387,9,11.52,11.46,19.93 -sub,kernel,16,16,2493839,9,8.02,8.02,20.00 -sub,floor,16,16,1294636,9,15.47,15.46,20.02 -sub,gmp,16,16,3563208,9,5.61,5.60,19.99 -sub,gmpz,16,16,2757198,9,7.27,7.20,20.05 -sub,auto,64,64,340876,9,58.67,58.59,20.00 -sub,inplace,64,64,210127,9,47.60,47.58,20.01 -sub,kernel,64,64,595438,9,33.59,33.39,19.99 -sub,floor,64,64,464002,9,42.15,42.09,19.57 -sub,gmp,64,64,1287511,9,15.52,15.52,19.99 -sub,gmpz,64,64,1194484,9,16.74,16.71,20.00 -sub,auto,256,256,92612,9,215.88,215.84,20.00 -sub,inplace,256,256,50926,9,196.35,196.32,20.00 -sub,kernel,256,256,140404,9,142.46,142.43,20.00 -sub,floor,256,256,126431,9,158.11,158.02,20.00 -sub,gmp,256,256,255598,9,78.25,78.24,20.01 -sub,gmpz,256,256,250541,9,79.88,79.80,20.03 -sub,auto,1024,1024,24747,9,808.32,808.24,20.01 -sub,inplace,1024,1024,12634,9,791.60,791.45,20.00 -sub,kernel,1024,1024,34617,9,577.76,577.75,20.00 -sub,floor,1024,1024,33676,9,593.86,593.71,20.00 -sub,gmp,1024,1024,51314,9,389.75,389.75,20.00 -sub,gmpz,1024,1024,51123,9,391.21,391.16,20.00 -sub,auto,2000,2000,12909,9,1549.46,1549.27,20.00 -sub,inplace,2000,2000,6579,9,1519.94,1519.90,20.05 -sub,kernel,2000,2000,17681,9,1131.15,1131.09,20.01 -sub,floor,2000,2000,17409,9,1149.19,1148.72,20.01 -sub,gmp,2000,2000,44107,9,453.46,453.44,20.00 -sub,gmpz,2000,2000,42051,9,475.61,473.90,20.00 -sub,auto,1024,1,79039,9,253.04,252.53,20.00 -sub,inplace,1024,1,2144015,9,4.65,4.65,19.95 -sub,kernel,1024,1,34670,9,576.50,576.49,19.99 -sub,floor,1024,1,33740,9,592.65,592.52,20.00 -sub,gmp,1024,1,85530,9,233.87,233.71,20.01 -sub,gmpz,1024,1,85424,9,234.14,233.75,20.03 -shl,auto,1,13,1578917,9,12.69,12.55,20.03 -shl,inplace,1,13,2700416,9,3.68,3.67,19.90 -shl,kernel,1,13,9626405,9,2.08,2.07,19.98 -shl,kernelip,1,13,5722147,9,1.75,1.71,19.92 -shl,floor,1,13,2077739,9,9.83,9.82,20.41 -shl,gmp,1,13,9581726,9,2.08,2.08,19.96 -shl,gmpz,1,13,6110897,9,3.27,3.27,20.06 -shl,auto,4,13,1481394,9,13.48,13.43,19.99 -shl,inplace,4,13,2164052,9,4.63,4.62,20.04 -shl,kernel,4,13,5782151,9,3.49,3.43,20.14 -shl,kernelip,4,13,3369268,9,2.97,2.93,19.97 -shl,floor,4,13,1761473,9,11.20,11.18,19.75 -shl,gmp,4,13,7991240,9,2.50,2.50,20.00 -shl,gmpz,4,13,4946821,9,4.04,4.04,20.04 -shl,auto,16,13,1161843,9,17.12,17.06,19.89 -shl,inplace,16,13,1084279,9,9.20,9.06,19.96 -shl,kernel,16,13,2676291,9,7.45,7.44,19.94 -shl,kernelip,16,13,1397062,9,7.15,7.08,19.99 -shl,floor,16,13,1344463,9,15.21,15.21,20.46 -shl,gmp,16,13,4816501,9,4.16,4.14,20.08 -shl,gmpz,16,13,3404528,9,5.83,5.82,19.86 -shl,auto,256,13,164141,9,121.77,121.66,20.00 -shl,inplace,256,13,97818,9,102.19,101.89,20.03 -shl,kernel,256,13,213282,9,94.44,94.06,20.15 -shl,kernelip,256,13,102707,9,97.40,97.22,20.00 -shl,floor,256,13,179590,9,116.44,116.38,20.92 -shl,gmp,256,13,424303,9,47.15,47.12,20.01 -shl,gmpz,256,13,400199,9,49.70,49.54,19.90 -shl,auto,2000,13,25885,9,772.76,772.51,20.00 -shl,inplace,2000,13,13508,9,740.76,738.72,20.00 -shl,kernel,2000,13,27782,9,720.16,719.82,20.04 -shl,kernelip,2000,13,13985,9,715.32,714.93,20.02 -shl,floor,2000,13,27171,9,739.67,739.19,20.11 -shl,gmp,2000,13,59630,9,335.49,335.36,20.01 -shl,gmpz,2000,13,58761,9,338.08,337.85,19.87 -shl,auto,2000,77,25811,9,774.74,774.54,20.01 -shl,inplace,2000,77,13487,9,741.59,739.86,20.01 -shl,kernel,2000,77,23555,9,851.08,848.18,20.02 -shl,kernelip,2000,77,12166,9,822.02,822.00,20.00 -shl,floor,2000,77,22971,9,873.83,870.74,20.08 -shl,gmp,2000,77,59284,9,337.74,337.53,20.06 -shl,gmpz,2000,77,58753,9,339.77,338.69,19.97 -shr,auto,1,13,2440769,9,8.19,8.19,20.00 -shr,inplace,1,13,3049475,9,3.30,3.27,20.15 -shr,kernel,1,13,11755992,9,1.70,1.70,20.02 -shr,floor,1,13,8809223,9,2.27,2.27,19.97 -shr,gmp,1,13,10479164,9,1.92,1.90,20.07 -shr,gmpz,1,13,5771415,9,3.47,3.47,20.00 -shr,auto,4,13,1240537,9,16.05,16.00,19.94 -shr,inplace,4,13,2255666,9,4.37,4.34,19.70 -shr,kernel,4,13,5771249,9,3.49,3.47,20.12 -shr,floor,4,13,1799609,9,11.13,11.12,20.03 -shr,gmp,4,13,8396765,9,2.31,2.31,19.45 -shr,gmpz,4,13,5049402,9,3.96,3.96,20.04 -shr,auto,16,13,1003989,9,19.91,19.90,20.00 -shr,inplace,16,13,1135523,9,8.79,8.69,19.92 -shr,kernel,16,13,2301735,9,8.48,8.47,19.54 -shr,floor,16,13,1293396,9,15.44,15.34,19.98 -shr,gmp,16,13,4634787,9,4.32,4.31,20.06 -shr,gmpz,16,13,3199932,9,6.27,6.20,20.23 -shr,auto,256,13,158927,9,125.70,125.55,19.98 -shr,inplace,256,13,98341,9,101.68,101.59,20.00 -shr,kernel,256,13,180370,9,110.40,110.21,19.91 -shr,floor,256,13,153487,9,130.33,130.12,20.00 -shr,gmp,256,13,416001,9,47.62,47.48,19.83 -shr,gmpz,256,13,395816,9,50.71,50.62,20.07 -shr,auto,2000,13,26694,9,749.94,749.18,20.03 -shr,inplace,2000,13,13507,9,740.17,737.82,19.99 -shr,kernel,2000,13,24621,9,812.33,812.28,20.00 -shr,floor,2000,13,24039,9,832.20,831.65,20.01 -shr,gmp,2000,13,59540,9,335.63,335.58,19.98 -shr,gmpz,2000,13,59001,9,339.02,338.88,20.00 -shr,auto,2000,77,26660,9,750.94,750.07,20.07 -shr,inplace,2000,77,13498,9,740.90,740.59,20.01 -shr,kernel,2000,77,24094,9,830.10,830.09,20.00 -shr,floor,2000,77,23470,9,851.55,851.26,19.99 -shr,gmp,2000,77,59525,9,336.35,336.13,20.02 -shr,gmpz,2000,77,58983,9,339.07,338.98,20.01 -mul,auto,1,1,1224548,9,16.32,16.30,19.99 -mul,gmp,1,1,5895922,9,3.38,3.36,19.91 -mul,gmpz,1,1,4961964,9,4.03,4.02,19.98 -mul,auto,2,2,1040224,9,18.95,18.87,19.72 -mul,kernel,2,2,2833549,9,7.57,7.53,21.48 -mul,floor,2,2,1357527,9,14.99,14.92,20.33 -mul,gmp,2,2,5166436,9,3.85,3.82,19.89 -mul,gmpz,2,2,3263442,9,6.15,6.11,20.08 -mul,auto,3,3,987374,9,20.27,20.24,20.04 -mul,kernel,3,3,2395178,9,8.93,8.91,21.41 -mul,floor,3,3,1216355,9,16.66,16.57,20.25 -mul,gmp,3,3,2507578,9,7.92,7.85,19.88 -mul,gmpz,3,3,1995266,9,10.00,9.98,19.97 -mul,auto,4,4,885157,9,22.40,22.30,19.82 -mul,kernel,4,4,1924970,9,10.90,10.88,21.02 -mul,floor,4,4,1101214,9,18.37,18.25,20.21 -mul,gmp,4,4,2056730,9,9.71,9.69,19.96 -mul,gmpz,4,4,1539827,9,12.99,12.97,20.00 -mul,auto,6,6,712283,9,28.11,28.07,20.03 -mul,kernel,6,6,1215033,9,17.16,17.14,20.88 -mul,floor,6,6,807525,9,24.50,24.47,19.84 -mul,gmp,6,6,1252696,9,15.97,15.91,19.99 -mul,gmpz,6,6,1096473,9,18.25,18.20,20.00 -mul,auto,8,8,550745,9,36.18,36.00,19.92 -mul,kernel,8,8,807296,9,25.41,25.34,20.54 -mul,floor,8,8,619716,9,32.50,32.36,20.14 -mul,gmp,8,8,739008,9,26.95,26.85,19.92 -mul,gmpz,8,8,694584,9,29.07,28.61,20.19 -mul,auto,12,12,340882,9,58.49,58.26,19.93 -mul,kernel,12,12,421043,9,48.05,48.00,20.23 -mul,floor,12,12,363588,9,54.82,54.78,19.94 -mul,gmp,12,12,410060,9,48.82,48.60,20.00 -mul,gmpz,12,12,390428,9,50.91,50.90,19.91 -mul,auto,16,16,225316,9,88.81,88.63,20.02 -mul,kernel,16,16,253221,9,79.43,79.22,20.11 -mul,floor,16,16,230397,9,86.96,86.55,20.03 -mul,gmp,16,16,243912,9,81.90,81.85,19.98 -mul,gmpz,16,16,238023,9,84.07,84.03,20.01 -mul,auto,32,32,95369,9,209.18,208.78,19.95 -mul,kernel,32,32,99346,9,207.85,207.56,20.68 -mul,floor,32,32,94509,9,212.03,211.39,20.05 -mul,gmp,32,32,68763,9,287.23,286.03,19.78 -mul,gmpz,32,32,72932,9,273.02,272.03,19.91 -mul,auto,64,64,40414,9,494.98,494.54,20.01 -mul,kernel,64,64,41165,9,489.93,488.03,20.21 -mul,floor,64,64,40782,9,491.03,490.47,20.02 -mul,gmp,64,64,22824,9,876.25,875.59,20.00 -mul,gmpz,64,64,22807,9,875.01,868.70,19.93 -mul,auto,128,128,11575,9,1727.23,1724.17,19.99 -mul,kernel,128,128,11780,9,1695.97,1694.18,19.98 -mul,floor,128,128,11701,9,1708.47,1705.25,19.99 -mul,gmp,128,128,7242,9,2761.63,2758.77,20.00 -mul,gmpz,128,128,7293,9,2742.66,2727.33,20.01 -mul,auto,256,256,3236,9,6180.33,6176.90,20.00 -mul,kernel,256,256,3237,9,6166.98,6160.77,19.98 -mul,floor,256,256,3234,9,6263.65,6208.95,20.27 -mul,gmp,256,256,2518,9,7935.02,7920.55,19.98 -mul,gmpz,256,256,2546,9,7853.83,7819.33,19.98 -mul,auto,512,512,1029,9,19423.36,19405.31,20.00 -mul,kernel,512,512,1026,9,19289.41,19273.72,19.79 -mul,floor,512,512,1025,9,19530.94,19512.64,20.02 -mul,gmp,512,512,941,9,21085.64,20854.14,19.84 -mul,gmpz,512,512,959,9,20879.75,20869.01,20.03 -mul,auto,1000,1000,336,9,59526.43,59490.43,20.01 -mul,kernel,1000,1000,335,9,59938.68,59867.51,20.08 -mul,floor,1000,1000,334,9,59935.16,59877.40,20.03 -mul,gmp,1000,1000,369,9,53504.28,53259.88,19.74 -mul,gmpz,1000,1000,376,9,53301.96,53275.08,20.04 -mul,auto,2000,2000,114,9,176591.39,176491.97,20.13 -mul,kernel,2000,2000,113,9,177249.66,177017.07,20.03 -mul,floor,2000,2000,114,9,177010.55,176759.54,20.18 -mul,gmp,2000,2000,138,9,144034.86,144016.25,19.89 -mul,gmpz,2000,2000,139,9,144027.09,143962.30,20.02 -mul,auto,2000,100,1134,9,17634.95,17630.49,20.00 -mul,kernel,2000,100,1133,9,17834.70,17649.84,20.21 -mul,floor,2000,100,1126,9,17954.62,17738.56,20.17 -mul,gmp,2000,100,549,9,36369.51,36346.55,19.98 -mul,gmpz,2000,100,550,9,36236.50,36136.84,19.97 -sqr,auto,4,4,895656,9,22.19,22.13,19.89 -sqr,kernel,4,4,2003879,9,9.94,9.75,19.93 -sqr,floor,4,4,1215976,9,16.78,16.75,20.41 -sqr,gmp,4,4,3425135,9,5.80,5.78,19.89 -sqr,gmpz,4,4,2286989,9,8.88,8.80,20.34 -sqr,auto,16,16,300405,9,66.50,66.41,19.98 -sqr,kernel,16,16,356110,9,56.16,56.11,20.01 -sqr,floor,16,16,319929,9,63.52,63.47,20.32 -sqr,gmp,16,16,393976,9,50.61,50.14,19.91 -sqr,gmpz,16,16,371224,9,53.98,53.78,20.02 -sqr,auto,64,64,71945,9,277.63,277.18,19.99 -sqr,kernel,64,64,73118,9,273.55,273.32,20.00 -sqr,floor,64,64,71321,9,278.25,276.90,19.85 -sqr,gmp,64,64,35331,9,566.28,565.73,20.01 -sqr,gmpz,64,64,35641,9,557.87,555.84,19.91 -sqr,auto,512,512,1895,9,10554.41,10552.77,20.01 -sqr,kernel,512,512,1892,9,10589.22,10571.12,20.07 -sqr,floor,512,512,1891,9,10614.15,10597.74,20.07 -sqr,gmp,512,512,1306,9,15093.07,15077.28,19.75 -sqr,gmpz,512,512,1324,9,15097.67,15095.02,19.99 -sqr,auto,2000,2000,204,9,97919.68,97895.16,19.98 -sqr,kernel,2000,2000,204,9,98206.93,98148.01,20.04 -sqr,floor,2000,2000,205,9,97947.45,97899.36,20.08 -sqr,gmp,2000,2000,197,9,100644.94,100555.42,19.83 -sqr,gmpz,2000,2000,199,9,100602.37,100585.30,20.04 -divrem,auto,2,1,508571,9,39.24,39.16,19.96 -divrem,kernel,2,1,3432161,9,5.70,5.44,19.50 -divrem,floor,2,1,1559233,9,12.77,12.73,19.90 -divrem,gmp,2,1,2306334,9,8.68,8.67,20.02 -divrem,gmpz,2,1,1466526,9,13.68,13.60,20.06 -divrem,auto,8,4,231144,9,87.33,86.98,20.19 -divrem,kernel,8,4,463076,9,42.76,42.61,19.81 -divrem,floor,8,4,324151,9,62.43,61.84,20.24 -divrem,gmp,8,4,489090,9,41.02,40.87,20.07 -divrem,gmpz,8,4,479534,9,41.88,41.60,20.06 -divrem,auto,32,16,58617,9,340.26,339.40,19.96 -divrem,kernel,32,16,68890,9,289.26,288.83,19.93 -divrem,floor,32,16,65649,9,305.13,304.50,20.05 -divrem,gmp,32,16,104715,9,191.31,190.79,20.04 -divrem,gmpz,32,16,102640,9,195.12,194.32,20.02 -divrem,auto,128,64,6052,9,3307.64,3292.29,20.01 -divrem,kernel,128,64,6243,9,3218.12,3212.30,20.10 -divrem,floor,128,64,6173,9,3246.14,3234.99,20.03 -divrem,gmp,128,64,11628,9,1719.91,1718.60,20.01 -divrem,gmpz,128,64,11590,9,1723.23,1722.97,19.97 -divrem,auto,512,256,670,9,29667.54,29655.00,19.88 -divrem,kernel,512,256,679,9,29453.04,29430.13,20.00 -divrem,floor,512,256,678,9,29494.28,29478.68,20.00 -divrem,gmp,512,256,1231,9,16240.94,16238.87,19.99 -divrem,gmpz,512,256,1236,9,16187.11,16183.04,20.08 -divrem,auto,2000,1000,109,9,184977.00,184926.30,20.19 -divrem,kernel,2000,1000,108,9,185697.87,185564.46,20.07 -divrem,floor,2000,1000,109,9,184470.67,184293.19,20.12 -divrem,gmp,2000,1000,146,9,137819.51,137771.90,20.12 -divrem,gmpz,2000,1000,146,9,137899.75,137873.03,20.13 -divrem,auto,4000,2000,43,9,475845.93,475648.09,20.46 -divrem,kernel,4000,2000,43,9,474159.30,473951.79,20.39 -divrem,floor,4000,2000,43,9,473725.58,473641.95,20.37 -divrem,gmp,4000,2000,59,9,338293.32,337280.31,19.97 -divrem,gmpz,4000,2000,60,9,337143.95,336193.98,20.24 -divrem,auto,2000,100,139,9,144590.04,144112.33,20.11 -divrem,kernel,2000,100,137,9,146162.98,145493.50,20.02 -divrem,floor,2000,100,138,9,145364.18,145113.88,20.08 -divrem,gmp,2000,100,276,9,72693.22,72648.03,20.06 -divrem,gmpz,2000,100,276,9,72571.91,72542.45,20.03 -divrem,auto,65536,1,115,9,174373.44,174170.99,20.08 -divrem,kernel,65536,1,120,9,167086.28,166906.01,20.07 -divrem,floor,65536,1,120,9,167722.40,167271.92,20.12 -divrem,gmp,65536,1,136,9,148102.05,148096.75,20.14 -divrem,gmpz,65536,1,136,9,148110.09,148102.89,20.14 -tochars,auto,1,10,1317402,9,15.03,14.99,19.83 -tochars,kernel,1,10,322544,9,62.00,61.93,20.00 -tochars,gmp,1,10,961438,9,20.64,20.46,19.82 -tochars,gmpz,1,10,594824,9,33.77,33.65,20.10 -tochars,auto,4,10,155788,9,127.88,127.13,19.95 -tochars,kernel,4,10,107799,9,185.46,183.34,19.99 -tochars,gmp,4,10,292486,9,68.41,68.38,20.01 -tochars,gmpz,4,10,209654,9,95.45,95.29,20.01 -tochars,auto,16,10,16999,9,1169.01,1163.99,19.88 -tochars,kernel,16,10,19307,9,1030.31,1027.29,19.89 -tochars,gmp,16,10,39648,9,504.38,504.26,20.00 -tochars,gmpz,16,10,33975,9,591.98,589.65,20.10 -tochars,auto,64,10,3557,9,5614.82,5606.93,20.01 -tochars,kernel,64,10,3826,9,5227.94,5220.40,20.02 -tochars,gmp,64,10,7493,9,2670.32,2667.28,20.02 -tochars,gmpz,64,10,6755,9,2961.38,2956.03,20.00 -tochars,auto,256,10,556,9,36044.67,36027.56,20.04 -tochars,kernel,256,10,579,9,34596.69,34572.52,20.03 -tochars,gmp,256,10,1077,9,18595.42,18584.37,20.03 -tochars,gmpz,256,10,1017,9,19664.90,19649.38,20.00 -tochars,auto,2000,10,33,9,608568.36,608119.55,20.09 -tochars,kernel,2000,10,35,9,585880.17,585724.97,20.51 -tochars,gmp,2000,10,49,9,401473.59,401367.43,19.68 -tochars,gmpz,2000,10,49,9,410183.49,409930.14,20.11 -tochars,auto,16,16,185152,9,105.35,105.25,19.51 -tochars,gmp,16,16,201319,9,99.38,99.22,20.01 -tochars,gmpz,16,16,125487,9,158.52,158.48,19.90 -tochars,auto,2000,16,1677,9,11932.67,11931.58,20.12 -tochars,gmp,2000,16,1799,9,11120.43,11118.87,20.02 -tochars,gmpz,2000,16,1116,9,17923.73,17922.21,20.08 -fromchars,auto,4,10,172610,9,115.12,114.52,19.91 -fromchars,kernel,4,10,531247,9,37.54,37.43,19.93 -fromchars,gmp,4,10,639249,9,31.30,31.17,20.02 -fromchars,gmpz,4,10,302523,9,66.42,66.18,20.12 -fromchars,auto,16,10,46269,9,433.34,427.77,20.01 -fromchars,kernel,16,10,94804,9,215.47,211.74,20.50 -fromchars,gmp,16,10,160509,9,124.67,124.26,20.03 -fromchars,gmpz,16,10,77749,9,257.77,257.00,20.05 -fromchars,auto,64,10,6478,9,3154.48,3050.65,20.52 -fromchars,kernel,64,10,9371,9,2436.66,2269.71,21.92 -fromchars,gmp,64,10,22349,9,897.06,895.98,20.06 -fromchars,gmpz,64,10,14544,9,1372.52,1371.20,19.97 -fromchars,auto,256,10,677,9,31239.47,29242.84,21.25 -fromchars,kernel,256,10,688,9,30415.04,29192.92,21.30 -fromchars,gmp,256,10,2500,9,8001.93,7997.93,20.00 -fromchars,gmpz,256,10,2013,9,9938.38,9930.41,20.05 -fromchars,auto,2000,10,47,9,428831.85,428664.15,20.17 -fromchars,kernel,2000,10,50,9,405472.10,405375.00,20.29 -fromchars,gmp,2000,10,109,9,182872.49,182796.21,19.96 -fromchars,gmpz,2000,10,102,9,197703.54,197584.77,20.18 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64a_seed1b.csv b/tests/beman/big_int/perf/item1/x64r3_new64a_seed1b.csv deleted file mode 100644 index 0ab8028a..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_new64a_seed1b.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T17:59:49Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64a seed=1 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2964446,9,6.65,6.58,19.74 -add,inplace,1,1,2036122,9,4.91,4.91,20.00 -add,kernel,1,1,10310792,9,1.93,1.89,19.85 -add,floor,1,1,2046566,9,9.81,9.77,20.06 -add,gmp,1,1,8824158,9,2.27,2.27,20.00 -add,gmpz,1,1,4808898,9,4.16,4.16,19.98 -add,auto,2,2,1261693,9,15.83,15.74,19.95 -add,inplace,2,2,1602218,9,6.05,5.94,19.44 -add,kernel,2,2,8443196,9,2.36,2.30,19.96 -add,floor,2,2,1954529,9,10.25,10.20,20.08 -add,gmp,2,2,8818885,9,2.27,2.27,19.99 -add,gmpz,2,2,4802673,9,4.16,4.16,19.96 -add,auto,4,4,1293066,9,15.45,15.43,19.99 -add,inplace,4,4,1752313,9,5.73,5.70,20.09 -add,kernel,4,4,6574562,9,3.07,3.02,20.16 -add,floor,4,4,1794089,9,11.12,11.01,20.04 -add,gmp,4,4,7978964,9,2.49,2.49,19.86 -add,gmpz,4,4,4588719,9,4.35,4.34,20.00 -add,auto,8,8,1193828,9,16.75,16.75,20.03 -add,inplace,8,8,1410273,9,7.07,7.06,19.93 -add,kernel,8,8,4404686,9,4.53,4.53,19.98 -add,floor,8,8,1573103,9,12.61,12.53,19.84 -add,gmp,8,8,5440982,9,3.68,3.67,20.02 -add,gmpz,8,8,4312977,9,4.65,4.64,20.09 -add,auto,16,16,951721,9,21.04,20.99,20.02 -add,inplace,16,16,845007,9,11.85,11.71,19.98 -add,kernel,16,16,2646802,9,7.56,7.56,20.02 -add,floor,16,16,1293009,9,15.57,15.52,20.13 -add,gmp,16,16,3634550,9,5.50,5.50,19.99 -add,gmpz,16,16,3074272,9,6.52,6.49,20.06 -add,auto,64,64,341829,9,58.51,58.46,20.00 -add,inplace,64,64,205586,9,48.62,48.60,19.99 -add,kernel,64,64,607346,9,32.81,32.61,19.94 -add,floor,64,64,476873,9,41.77,41.08,19.89 -add,gmp,64,64,1294694,9,15.45,15.45,20.01 -add,gmpz,64,64,1157954,9,17.27,17.26,20.00 -add,auto,256,256,93522,9,213.75,213.64,19.99 -add,inplace,256,256,50928,9,196.49,196.27,20.02 -add,kernel,256,256,140547,9,142.36,142.10,20.00 -add,floor,256,256,125194,9,160.02,159.65,20.03 -add,gmp,256,256,255666,9,78.22,78.22,20.00 -add,gmpz,256,256,251535,9,79.50,79.40,19.99 -add,auto,1024,1024,25006,9,800.06,799.93,20.02 -add,inplace,1024,1024,12641,9,790.12,789.97,19.98 -add,kernel,1024,1024,34614,9,577.93,577.65,20.00 -add,floor,1024,1024,33356,9,595.21,594.86,20.12 -add,gmp,1024,1024,51068,9,391.39,391.38,19.99 -add,gmpz,1024,1024,51016,9,392.04,392.02,20.00 -add,auto,2000,2000,13028,9,1535.54,1535.35,20.04 -add,inplace,2000,2000,6562,9,1521.69,1521.50,20.00 -add,kernel,2000,2000,17676,9,1131.49,1131.43,20.00 -add,floor,2000,2000,17392,9,1149.64,1149.38,20.00 -add,gmp,2000,2000,41853,9,477.88,477.85,20.01 -add,gmpz,2000,2000,41352,9,483.61,482.00,19.98 -add,auto,1024,1,79260,9,252.24,251.89,19.99 -add,inplace,1024,1,1960766,9,5.10,5.10,20.02 -add,kernel,1024,1,34638,9,577.41,577.39,20.00 -add,floor,1024,1,33660,9,594.23,593.99,20.00 -add,gmp,1024,1,85772,9,233.04,232.66,19.98 -add,gmpz,1024,1,85469,9,234.01,233.55,19.99 -sub,auto,1,1,2582425,9,7.76,7.74,20.06 -sub,inplace,1,1,2136025,9,4.68,4.65,19.98 -sub,kernel,1,1,13233614,9,1.51,1.51,20.00 -sub,floor,1,1,10586132,9,1.89,1.89,20.00 -sub,gmp,1,1,8824034,9,2.27,2.27,20.00 -sub,gmpz,1,1,4585374,9,4.37,4.34,20.04 -sub,auto,2,2,1278989,9,15.69,15.60,20.06 -sub,inplace,2,2,1961030,9,5.11,5.10,20.04 -sub,kernel,2,2,9385710,9,2.12,2.10,19.90 -sub,floor,2,2,2002751,9,9.99,9.95,20.00 -sub,gmp,2,2,8824135,9,2.27,2.27,20.00 -sub,gmpz,2,2,4540744,9,4.34,4.34,19.74 -sub,auto,4,4,1207436,9,16.56,16.56,20.00 -sub,inplace,4,4,1788619,9,5.60,5.59,20.03 -sub,kernel,4,4,7050802,9,2.84,2.83,19.99 -sub,floor,4,4,1868867,9,10.75,10.72,20.08 -sub,gmp,4,4,8009126,9,2.50,2.50,20.00 -sub,gmpz,4,4,4366767,9,4.57,4.55,19.95 -sub,auto,8,8,1112638,9,17.98,17.96,20.00 -sub,inplace,8,8,1442180,9,6.93,6.93,20.00 -sub,kernel,8,8,4575465,9,4.36,4.36,19.98 -sub,floor,8,8,1619682,9,12.38,12.35,20.09 -sub,gmp,8,8,5424694,9,3.69,3.69,20.04 -sub,gmpz,8,8,4059855,9,4.95,4.94,20.10 -sub,auto,16,16,954370,9,20.89,20.81,19.95 -sub,inplace,16,16,902381,9,11.10,11.00,20.02 -sub,kernel,16,16,2493732,9,8.02,8.02,20.01 -sub,floor,16,16,1303668,9,15.32,15.22,19.96 -sub,gmp,16,16,3438558,9,5.81,5.81,20.00 -sub,gmpz,16,16,2930847,9,6.79,6.73,19.88 -sub,auto,64,64,340784,9,58.72,58.67,20.01 -sub,inplace,64,64,212321,9,47.09,47.08,20.00 -sub,kernel,64,64,611286,9,32.72,32.71,20.01 -sub,floor,64,64,473631,9,42.11,41.64,19.93 -sub,gmp,64,64,1282647,9,15.59,15.59,20.00 -sub,gmpz,64,64,1194684,9,16.74,16.71,20.00 -sub,auto,256,256,92725,9,215.90,215.79,20.02 -sub,inplace,256,256,51053,9,195.91,195.86,20.00 -sub,kernel,256,256,140407,9,142.87,142.44,20.07 -sub,floor,256,256,126380,9,158.14,157.89,19.98 -sub,gmp,256,256,255607,9,78.25,78.24,20.00 -sub,gmpz,256,256,250383,9,79.84,79.75,20.00 -sub,auto,1024,1024,24744,9,808.30,808.20,20.01 -sub,inplace,1024,1024,12634,9,791.54,791.50,20.00 -sub,kernel,1024,1024,34613,9,577.76,577.75,20.00 -sub,floor,1024,1024,33686,9,593.87,593.76,20.02 -sub,gmp,1024,1024,51314,9,389.77,389.75,20.05 -sub,gmpz,1024,1024,51123,9,391.21,391.18,20.00 -sub,auto,2000,2000,12917,9,1548.32,1548.15,20.00 -sub,inplace,2000,2000,6579,9,1519.97,1519.91,20.01 -sub,kernel,2000,2000,17661,9,1132.45,1132.42,20.00 -sub,floor,2000,2000,17411,9,1149.06,1148.83,20.01 -sub,gmp,2000,2000,42455,9,471.00,470.99,20.00 -sub,gmpz,2000,2000,41871,9,477.61,475.81,19.97 -sub,auto,1024,1,79072,9,252.80,252.67,19.99 -sub,inplace,1024,1,2150214,9,4.66,4.64,20.05 -sub,kernel,1024,1,34682,9,576.49,576.49,19.99 -sub,floor,1024,1,33744,9,592.62,592.50,20.00 -sub,gmp,1024,1,85718,9,233.45,233.04,20.01 -sub,gmpz,1024,1,85398,9,234.06,233.71,19.99 -shl,auto,1,13,1586041,9,12.72,12.54,20.16 -shl,inplace,1,13,2730442,9,3.67,3.66,20.05 -shl,kernel,1,13,9626531,9,2.08,2.07,19.96 -shl,kernelip,1,13,5826739,9,1.75,1.72,20.39 -shl,floor,1,13,2078060,9,9.88,9.85,20.55 -shl,gmp,1,13,9626441,9,2.08,2.08,20.01 -shl,gmpz,1,13,6048998,9,3.31,3.30,20.01 -shl,auto,4,13,1487467,9,13.45,13.41,20.02 -shl,inplace,4,13,2162594,9,4.62,4.61,20.01 -shl,kernel,4,13,4762717,9,4.17,4.14,19.97 -shl,kernelip,4,13,3323416,9,2.94,2.92,19.59 -shl,floor,4,13,1775708,9,11.26,11.23,20.07 -shl,gmp,4,13,7921389,9,2.50,2.50,19.84 -shl,gmpz,4,13,4933622,9,4.04,4.04,19.97 -shl,auto,16,13,1173368,9,17.05,17.01,20.01 -shl,inplace,16,13,1078400,9,9.10,8.99,19.63 -shl,kernel,16,13,2673299,9,7.45,7.43,19.92 -shl,kernelip,16,13,1423547,9,7.15,7.04,20.32 -shl,floor,16,13,1345542,9,15.41,15.37,20.82 -shl,gmp,16,13,4807649,9,4.18,4.15,20.11 -shl,gmpz,16,13,3439461,9,5.84,5.81,20.16 -shl,auto,256,13,163679,9,122.10,122.00,19.99 -shl,inplace,256,13,97959,9,102.27,102.09,20.03 -shl,kernel,256,13,214403,9,93.45,93.36,20.04 -shl,kernelip,256,13,102472,9,97.44,97.23,19.97 -shl,floor,256,13,179735,9,116.57,116.45,20.95 -shl,gmp,256,13,424180,9,47.13,47.10,19.99 -shl,gmpz,256,13,400041,9,49.72,49.55,19.89 -shl,auto,2000,13,25888,9,772.31,772.05,20.02 -shl,inplace,2000,13,13498,9,740.89,738.24,20.01 -shl,kernel,2000,13,27841,9,718.72,718.41,20.01 -shl,kernelip,2000,13,13982,9,715.24,715.15,20.00 -shl,floor,2000,13,27130,9,738.72,738.21,20.04 -shl,gmp,2000,13,59622,9,335.40,335.32,20.00 -shl,gmpz,2000,13,59156,9,338.07,337.83,20.00 -shl,auto,2000,77,25805,9,774.85,774.65,19.99 -shl,inplace,2000,77,13446,9,741.51,741.25,19.96 -shl,kernel,2000,77,23495,9,850.73,848.68,20.00 -shl,kernelip,2000,77,12165,9,822.09,822.03,20.02 -shl,floor,2000,77,22894,9,871.81,870.84,19.96 -shl,gmp,2000,77,59285,9,337.58,337.53,20.02 -shl,gmpz,2000,77,59131,9,338.23,338.20,20.01 -shr,auto,1,13,2439731,9,8.19,8.19,19.99 -shr,inplace,1,13,3049792,9,3.30,3.27,20.13 -shr,kernel,1,13,11755382,9,1.70,1.70,20.05 -shr,floor,1,13,8810180,9,2.27,2.27,20.00 -shr,gmp,1,13,10588825,9,1.89,1.89,20.02 -shr,gmpz,1,13,5771447,9,3.47,3.46,20.01 -shr,auto,4,13,1235547,9,16.20,16.10,20.01 -shr,inplace,4,13,2291237,9,4.33,4.32,19.86 -shr,kernel,4,13,5673403,9,3.51,3.47,19.93 -shr,floor,4,13,1793579,9,11.13,11.06,19.95 -shr,gmp,4,13,8524308,9,2.35,2.33,19.98 -shr,gmpz,4,13,5071943,9,3.97,3.95,20.12 -shr,auto,16,13,1005314,9,19.92,19.89,20.02 -shr,inplace,16,13,1150778,9,8.64,8.62,19.91 -shr,kernel,16,13,2374946,9,8.44,8.41,20.03 -shr,floor,16,13,1292133,9,15.49,15.40,20.00 -shr,gmp,16,13,4636025,9,4.32,4.31,20.04 -shr,gmpz,16,13,3207871,9,6.23,6.18,20.16 -shr,auto,256,13,160404,9,124.46,124.17,19.95 -shr,inplace,256,13,96074,9,101.71,101.57,19.55 -shr,kernel,256,13,181316,9,110.45,110.28,20.03 -shr,floor,256,13,153432,9,130.32,130.26,19.99 -shr,gmp,256,13,421732,9,47.53,47.39,20.05 -shr,gmpz,256,13,394236,9,50.66,50.46,19.97 -shr,auto,2000,13,26652,9,750.55,749.79,20.00 -shr,inplace,2000,13,13541,9,740.22,739.01,20.05 -shr,kernel,2000,13,24632,9,811.94,811.90,20.00 -shr,floor,2000,13,24062,9,831.15,831.08,20.01 -shr,gmp,2000,13,59591,9,335.61,335.54,20.00 -shr,gmpz,2000,13,59010,9,339.02,338.85,20.01 -shr,auto,2000,77,26724,9,748.97,748.20,20.02 -shr,inplace,2000,77,13566,9,740.75,740.42,20.10 -shr,kernel,2000,77,24149,9,828.17,828.14,20.00 -shr,floor,2000,77,23485,9,851.79,851.43,20.01 -shr,gmp,2000,77,59499,9,336.22,336.08,20.01 -shr,gmpz,2000,77,58775,9,340.32,340.16,20.00 -mul,auto,1,1,1223675,9,16.33,16.33,20.04 -mul,gmp,1,1,5688328,9,3.47,3.44,19.75 -mul,gmpz,1,1,5042239,9,3.97,3.97,20.04 -mul,auto,2,2,1058846,9,18.94,18.88,20.09 -mul,kernel,2,2,2809510,9,7.58,7.56,21.32 -mul,floor,2,2,1349495,9,14.98,14.89,20.25 -mul,gmp,2,2,5026608,9,3.96,3.94,19.91 -mul,gmpz,2,2,3260124,9,6.13,6.10,19.98 -mul,auto,3,3,974980,9,20.26,20.22,19.76 -mul,kernel,3,3,2382034,9,8.93,8.91,21.33 -mul,floor,3,3,1234021,9,16.39,16.33,20.23 -mul,gmp,3,3,2547055,9,7.80,7.72,19.85 -mul,gmpz,3,3,2002838,9,10.02,9.98,20.07 -mul,auto,4,4,889479,9,22.48,22.35,20.02 -mul,kernel,4,4,1836067,9,11.51,11.41,21.12 -mul,floor,4,4,1083743,9,18.65,18.57,20.22 -mul,gmp,4,4,1959644,9,10.20,10.14,19.99 -mul,gmpz,4,4,1564012,9,12.75,12.69,19.93 -mul,auto,6,6,716867,9,27.92,27.81,20.01 -mul,kernel,6,6,1216384,9,17.17,17.15,20.90 -mul,floor,6,6,819872,9,24.37,24.32,19.99 -mul,gmp,6,6,1269606,9,15.74,15.67,19.98 -mul,gmpz,6,6,1019490,9,19.65,19.58,20.04 -mul,auto,8,8,558786,9,35.83,35.71,20.03 -mul,kernel,8,8,791027,9,25.52,25.35,20.18 -mul,floor,8,8,604202,9,33.24,33.14,20.10 -mul,gmp,8,8,744507,9,26.96,26.64,20.06 -mul,gmpz,8,8,692043,9,28.81,28.67,19.94 -mul,auto,12,12,347131,9,57.64,57.58,20.01 -mul,kernel,12,12,424526,9,47.56,47.46,20.20 -mul,floor,12,12,367639,9,54.57,54.42,20.07 -mul,gmp,12,12,406829,9,49.16,49.13,20.01 -mul,gmpz,12,12,393638,9,50.78,50.76,20.08 -mul,auto,16,16,225734,9,88.65,88.58,20.03 -mul,kernel,16,16,253698,9,79.46,79.31,20.16 -mul,floor,16,16,232304,9,86.53,86.33,20.16 -mul,gmp,16,16,241678,9,82.75,82.72,20.02 -mul,gmpz,16,16,235361,9,84.98,84.94,20.00 -mul,auto,32,32,100177,9,199.52,199.04,20.00 -mul,kernel,32,32,107030,9,188.38,187.95,20.18 -mul,floor,32,32,101218,9,197.56,196.71,19.97 -mul,gmp,32,32,73277,9,269.46,267.72,19.77 -mul,gmpz,32,32,74065,9,270.02,269.97,20.00 -mul,auto,64,64,40027,9,498.23,495.17,19.92 -mul,kernel,64,64,41422,9,483.88,481.70,20.05 -mul,floor,64,64,40467,9,492.20,490.55,19.92 -mul,gmp,64,64,22310,9,887.01,881.20,19.82 -mul,gmpz,64,64,22994,9,867.49,864.45,19.94 -mul,auto,128,128,11619,9,1717.53,1715.74,19.97 -mul,kernel,128,128,11820,9,1693.61,1692.03,20.06 -mul,floor,128,128,11746,9,1706.53,1702.57,20.10 -mul,gmp,128,128,7234,9,2737.62,2726.13,19.84 -mul,gmpz,128,128,7213,9,2769.35,2766.34,19.99 -mul,auto,256,256,3235,9,6176.66,6170.37,19.98 -mul,kernel,256,256,3255,9,6146.88,6131.20,20.02 -mul,floor,256,256,3254,9,6152.33,6146.34,20.02 -mul,gmp,256,256,2526,9,7809.66,7757.34,19.76 -mul,gmpz,256,256,2581,9,7731.96,7725.21,19.97 -mul,auto,512,512,1044,9,19160.53,19152.54,20.03 -mul,kernel,512,512,1043,9,19236.46,19223.01,20.06 -mul,floor,512,512,1041,9,19214.12,19201.91,20.01 -mul,gmp,512,512,952,9,20814.43,20782.41,19.82 -mul,gmpz,512,512,964,9,20784.90,20767.85,20.06 -mul,auto,1000,1000,335,9,59843.07,59795.49,20.06 -mul,kernel,1000,1000,337,9,59513.10,59467.26,20.06 -mul,floor,1000,1000,334,9,59631.03,59620.13,19.92 -mul,gmp,1000,1000,373,9,53341.36,53327.01,19.96 -mul,gmpz,1000,1000,375,9,53470.43,53444.86,20.05 -mul,auto,2000,2000,113,9,177105.39,177065.04,20.02 -mul,kernel,2000,2000,114,9,176102.89,175949.34,20.07 -mul,floor,2000,2000,114,9,176521.53,176360.92,20.12 -mul,gmp,2000,2000,139,9,143999.49,143971.20,20.02 -mul,gmpz,2000,2000,139,9,144072.75,143981.53,20.03 -mul,auto,2000,100,1134,9,17650.25,17645.95,20.02 -mul,kernel,2000,100,1133,9,17675.11,17666.49,20.03 -mul,floor,2000,100,1132,9,17675.38,17669.09,20.01 -mul,gmp,2000,100,547,9,36166.19,36032.16,19.83 -mul,gmpz,2000,100,555,9,36041.88,36025.75,20.01 -sqr,auto,4,4,902287,9,22.16,22.07,19.99 -sqr,kernel,4,4,2020126,9,9.94,9.86,20.10 -sqr,floor,4,4,1205589,9,16.81,16.78,20.26 -sqr,gmp,4,4,3442933,9,5.81,5.78,20.01 -sqr,gmpz,4,4,2274288,9,8.84,8.75,20.13 -sqr,auto,16,16,301439,9,66.41,66.29,20.03 -sqr,kernel,16,16,356968,9,56.05,56.01,20.01 -sqr,floor,16,16,320554,9,62.43,62.36,20.02 -sqr,gmp,16,16,395586,9,49.83,49.78,19.73 -sqr,gmpz,16,16,383971,9,52.11,52.08,20.01 -sqr,auto,64,64,71805,9,277.33,276.34,19.90 -sqr,kernel,64,64,72669,9,275.39,275.12,20.01 -sqr,floor,64,64,70627,9,283.48,282.33,20.01 -sqr,gmp,64,64,35707,9,559.32,553.25,19.90 -sqr,gmpz,64,64,36186,9,552.26,551.23,19.99 -sqr,auto,512,512,1896,9,10558.87,10552.94,20.03 -sqr,kernel,512,512,1894,9,10560.98,10551.45,20.00 -sqr,floor,512,512,1893,9,10591.83,10584.11,20.05 -sqr,gmp,512,512,1323,9,15126.49,15118.11,20.03 -sqr,gmpz,512,512,1325,9,15101.53,15094.32,20.01 -sqr,auto,2000,2000,204,9,98426.27,98393.88,20.08 -sqr,kernel,2000,2000,204,9,98482.74,98391.67,20.14 -sqr,floor,2000,2000,204,9,98327.17,98307.09,20.08 -sqr,gmp,2000,2000,199,9,100611.54,100575.95,20.02 -sqr,gmpz,2000,2000,199,9,100630.21,100581.59,20.02 -divrem,auto,2,1,505528,9,39.47,39.25,19.92 -divrem,kernel,2,1,3505453,9,5.72,5.58,20.07 -divrem,floor,2,1,1552477,9,12.90,12.87,20.04 -divrem,gmp,2,1,2302376,9,8.68,8.67,19.98 -divrem,gmpz,2,1,1516757,9,13.17,13.15,19.98 -divrem,auto,8,4,232283,9,87.00,86.56,20.21 -divrem,kernel,8,4,468974,9,42.82,42.52,20.05 -divrem,floor,8,4,309930,9,64.64,64.37,20.06 -divrem,gmp,8,4,502427,9,40.10,40.04,20.17 -divrem,gmpz,8,4,478947,9,41.54,41.37,19.92 -divrem,auto,32,16,58766,9,341.50,340.77,20.07 -divrem,kernel,32,16,68985,9,288.98,288.85,19.96 -divrem,floor,32,16,65546,9,305.26,304.06,19.99 -divrem,gmp,32,16,102722,9,191.60,191.11,19.73 -divrem,gmpz,32,16,100076,9,200.63,199.05,20.05 -divrem,auto,128,64,6072,9,3293.97,3291.08,20.01 -divrem,kernel,128,64,6060,9,3302.53,3300.28,20.02 -divrem,floor,128,64,6242,9,3208.45,3203.73,20.03 -divrem,gmp,128,64,11562,9,1729.88,1728.56,20.00 -divrem,gmpz,128,64,11610,9,1722.07,1721.21,19.99 -divrem,auto,512,256,683,9,29685.31,29399.42,20.23 -divrem,kernel,512,256,675,9,29618.81,29615.11,19.99 -divrem,floor,512,256,669,9,29896.67,29879.14,20.00 -divrem,gmp,512,256,1230,9,16267.05,16264.68,20.01 -divrem,gmpz,512,256,1227,9,16303.74,16301.47,20.00 -divrem,auto,2000,1000,108,9,185632.79,185505.42,20.05 -divrem,kernel,2000,1000,109,9,183912.63,183864.06,20.07 -divrem,floor,2000,1000,109,9,184042.07,183958.39,20.07 -divrem,gmp,2000,1000,146,9,137794.93,137776.38,20.13 -divrem,gmpz,2000,1000,146,9,137782.92,137757.03,20.18 -divrem,auto,4000,2000,43,9,474942.05,474821.88,20.43 -divrem,kernel,4000,2000,42,9,474623.52,474298.45,19.95 -divrem,floor,4000,2000,42,9,479127.17,477166.12,20.10 -divrem,gmp,4000,2000,59,9,335421.78,333823.07,19.81 -divrem,gmpz,4000,2000,60,9,334573.93,334159.75,20.08 -divrem,auto,2000,100,141,9,143011.59,142810.28,20.17 -divrem,kernel,2000,100,141,9,142625.72,142284.67,20.12 -divrem,floor,2000,100,141,9,142607.39,142258.40,20.12 -divrem,gmp,2000,100,276,9,72623.04,72586.46,20.06 -divrem,gmpz,2000,100,275,9,72742.10,72726.37,20.01 -divrem,auto,65536,1,116,9,173737.63,173227.72,20.15 -divrem,kernel,65536,1,120,9,167315.89,167187.48,20.09 -divrem,floor,65536,1,119,9,168848.58,168511.95,20.09 -divrem,gmp,65536,1,136,9,148101.05,148091.52,20.16 -divrem,gmpz,65536,1,136,9,148115.32,148107.93,20.15 -tochars,auto,1,10,1327387,9,15.03,14.99,19.95 -tochars,kernel,1,10,322261,9,62.04,61.89,20.02 -tochars,gmp,1,10,965523,9,20.71,20.63,20.02 -tochars,gmpz,1,10,587832,9,33.97,33.84,19.96 -tochars,auto,4,10,155385,9,128.65,127.66,19.97 -tochars,kernel,4,10,110060,9,182.80,180.29,20.10 -tochars,gmp,4,10,287493,9,69.58,69.49,20.00 -tochars,gmpz,4,10,208827,9,95.80,95.71,20.01 -tochars,auto,16,10,17141,9,1168.63,1161.13,20.02 -tochars,kernel,16,10,19310,9,1031.29,1028.98,19.95 -tochars,gmp,16,10,39542,9,505.76,505.58,20.01 -tochars,gmpz,16,10,33884,9,590.66,588.35,20.04 -tochars,auto,64,10,3560,9,5615.18,5603.18,19.99 -tochars,kernel,64,10,3825,9,5228.96,5217.13,20.00 -tochars,gmp,64,10,7463,9,2681.18,2677.12,20.02 -tochars,gmpz,64,10,6744,9,2965.84,2963.93,20.01 -tochars,auto,256,10,558,9,35851.03,35842.40,20.01 -tochars,kernel,256,10,579,9,34534.57,34511.50,20.00 -tochars,gmp,256,10,1078,9,18570.43,18538.99,20.03 -tochars,gmpz,256,10,1017,9,19664.08,19658.65,20.01 -tochars,auto,2000,10,33,9,607493.64,607102.30,20.06 -tochars,kernel,2000,10,35,9,584360.80,584029.40,20.45 -tochars,gmp,2000,10,50,9,400672.16,400516.20,20.04 -tochars,gmpz,2000,10,49,9,409127.20,408867.00,20.05 -tochars,auto,16,16,189827,9,105.40,105.20,20.07 -tochars,gmp,16,16,201399,9,99.27,99.14,20.00 -tochars,gmpz,16,16,126163,9,158.65,158.50,20.03 -tochars,auto,2000,16,1678,9,11921.22,11919.25,20.00 -tochars,gmp,2000,16,1801,9,11110.96,11110.62,20.01 -tochars,gmpz,2000,16,1117,9,17922.99,17920.66,20.02 -fromchars,auto,4,10,173565,9,115.22,114.55,20.03 -fromchars,kernel,4,10,531771,9,37.56,37.48,19.99 -fromchars,gmp,4,10,637458,9,31.28,31.06,19.90 -fromchars,gmpz,4,10,301616,9,66.36,66.17,20.03 -fromchars,auto,16,10,45988,9,433.45,431.48,19.97 -fromchars,kernel,16,10,93395,9,215.49,211.83,20.15 -fromchars,gmp,16,10,159894,9,124.83,124.32,19.96 -fromchars,gmpz,16,10,77191,9,257.87,257.11,19.93 -fromchars,auto,64,10,6625,9,3082.05,2986.03,20.48 -fromchars,kernel,64,10,9584,9,2402.41,2111.41,22.05 -fromchars,gmp,64,10,22736,9,879.40,878.49,20.00 -fromchars,gmpz,64,10,14770,9,1354.25,1352.94,20.01 -fromchars,auto,256,10,651,9,30439.83,28278.63,19.77 -fromchars,kernel,256,10,780,9,29381.36,27595.75,22.89 -fromchars,gmp,256,10,2489,9,8020.65,8008.72,19.97 -fromchars,gmpz,256,10,2004,9,9991.62,9984.55,20.04 -fromchars,auto,2000,10,48,9,426913.12,426109.21,20.50 -fromchars,kernel,2000,10,50,9,405652.10,405240.04,20.29 -fromchars,gmp,2000,10,110,9,182675.95,182644.75,20.09 -fromchars,gmpz,2000,10,102,9,197879.96,197847.51,20.20 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64a_seed2a.csv b/tests/beman/big_int/perf/item1/x64r3_new64a_seed2a.csv deleted file mode 100644 index 477300bd..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_new64a_seed2a.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T18:04:36Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64a seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2978951,9,6.62,6.55,19.72 -add,inplace,1,1,2036082,9,4.91,4.89,19.99 -add,kernel,1,1,10300526,9,1.93,1.90,19.91 -add,floor,1,1,2053807,9,9.79,9.74,20.08 -add,gmp,1,1,8824143,9,2.27,2.27,20.07 -add,gmpz,1,1,4813035,9,4.16,4.16,20.02 -add,auto,2,2,1270530,9,15.81,15.72,20.09 -add,inplace,2,2,1670035,9,6.05,5.91,20.28 -add,kernel,2,2,8429094,9,2.39,2.31,20.09 -add,floor,2,2,1963084,9,10.26,10.21,20.15 -add,gmp,2,2,8824206,9,2.27,2.27,20.00 -add,gmpz,2,2,4813063,9,4.16,4.16,20.00 -add,auto,4,4,1297942,9,15.41,15.40,20.02 -add,inplace,4,4,1753317,9,5.72,5.70,20.05 -add,kernel,4,4,6579025,9,3.07,3.04,20.19 -add,floor,4,4,1823311,9,11.12,10.97,20.23 -add,gmp,4,4,8018441,9,2.49,2.49,19.94 -add,gmpz,4,4,4594246,9,4.35,4.34,19.98 -add,auto,8,8,1193545,9,16.75,16.75,20.01 -add,inplace,8,8,1411680,9,7.09,7.07,20.02 -add,kernel,8,8,4412053,9,4.53,4.53,20.04 -add,floor,8,8,1602266,9,12.52,12.39,20.03 -add,gmp,8,8,5434667,9,3.68,3.68,20.00 -add,gmpz,8,8,4305215,9,4.66,4.65,20.07 -add,auto,16,16,911350,9,21.96,21.90,20.01 -add,inplace,16,16,754337,9,13.23,13.20,20.00 -add,kernel,16,16,2647203,9,7.56,7.55,20.00 -add,floor,16,16,1307240,9,15.39,15.35,20.12 -add,gmp,16,16,3634431,9,5.50,5.50,19.99 -add,gmpz,16,16,3069645,9,6.54,6.51,20.10 -add,auto,64,64,347732,9,57.61,57.51,20.07 -add,inplace,64,64,208064,9,48.07,48.05,20.00 -add,kernel,64,64,604578,9,32.74,32.62,19.81 -add,floor,64,64,480831,9,41.85,41.25,20.11 -add,gmp,64,64,1294686,9,15.45,15.45,20.00 -add,gmpz,64,64,1211907,9,16.49,16.46,19.97 -add,auto,256,256,93800,9,213.21,213.15,20.00 -add,inplace,256,256,51109,9,195.68,195.65,20.09 -add,kernel,256,256,140374,9,142.39,142.15,19.99 -add,floor,256,256,125571,9,159.35,159.20,20.01 -add,gmp,256,256,255693,9,78.24,78.22,20.02 -add,gmpz,256,256,251719,9,79.46,79.36,20.00 -add,auto,1024,1024,24991,9,800.27,800.22,20.00 -add,inplace,1024,1024,12659,9,790.14,790.02,20.03 -add,kernel,1024,1024,34607,9,577.82,577.55,20.00 -add,floor,1024,1024,33636,9,594.54,594.41,20.00 -add,gmp,1024,1024,51214,9,390.51,390.45,20.00 -add,gmpz,1024,1024,51104,9,391.36,391.34,20.02 -add,auto,2000,2000,13031,9,1534.80,1534.65,20.01 -add,inplace,2000,2000,6578,9,1520.05,1520.01,20.00 -add,kernel,2000,2000,17665,9,1132.31,1132.25,20.01 -add,floor,2000,2000,17384,9,1150.56,1150.03,20.01 -add,gmp,2000,2000,44022,9,454.38,454.32,20.01 -add,gmpz,2000,2000,42408,9,471.57,469.80,19.97 -add,auto,1024,1,78283,9,252.43,252.01,19.80 -add,inplace,1024,1,1962045,9,5.10,5.09,20.01 -add,kernel,1024,1,34603,9,577.40,577.38,19.99 -add,floor,1024,1,33674,9,593.89,593.82,20.00 -add,gmp,1024,1,85883,9,232.69,232.64,19.98 -add,gmpz,1024,1,85479,9,233.95,233.55,19.99 -sub,auto,1,1,2577575,9,7.76,7.74,20.01 -sub,inplace,1,1,2138063,9,4.69,4.67,20.04 -sub,kernel,1,1,13236403,9,1.51,1.51,20.03 -sub,floor,1,1,10588884,9,1.89,1.89,20.01 -sub,gmp,1,1,8822803,9,2.27,2.27,20.03 -sub,gmpz,1,1,4600464,9,4.34,4.34,20.00 -sub,auto,2,2,1279620,9,15.67,15.60,20.07 -sub,inplace,2,2,1953301,9,5.09,5.08,19.91 -sub,kernel,2,2,9449646,9,2.10,2.08,19.88 -sub,floor,2,2,2027427,9,9.95,9.90,20.17 -sub,gmp,2,2,8823272,9,2.27,2.27,20.05 -sub,gmpz,2,2,4603805,9,4.34,4.34,20.04 -sub,auto,4,4,1202434,9,16.57,16.56,19.95 -sub,inplace,4,4,1787423,9,5.59,5.59,20.02 -sub,kernel,4,4,7054382,9,2.84,2.83,20.02 -sub,floor,4,4,1877854,9,10.72,10.70,20.14 -sub,gmp,4,4,8012237,9,2.50,2.50,20.01 -sub,gmpz,4,4,4321323,9,4.57,4.53,19.74 -sub,auto,8,8,1109854,9,17.97,17.96,19.95 -sub,inplace,8,8,1436644,9,6.95,6.95,19.98 -sub,kernel,8,8,4516504,9,4.36,4.36,19.72 -sub,floor,8,8,1639261,9,12.26,12.23,20.09 -sub,gmp,8,8,5425181,9,3.69,3.69,20.00 -sub,gmpz,8,8,4041305,9,4.96,4.93,20.04 -sub,auto,16,16,927523,9,21.59,21.44,20.04 -sub,inplace,16,16,913665,9,11.01,10.92,20.12 -sub,kernel,16,16,2677618,9,7.46,7.46,19.99 -sub,floor,16,16,1277530,9,15.34,15.22,19.59 -sub,gmp,16,16,2950945,9,6.78,6.78,20.01 -sub,gmpz,16,16,2937610,9,6.80,6.78,19.98 -sub,auto,64,64,336935,9,59.24,59.11,19.95 -sub,inplace,64,64,212335,9,47.10,47.08,20.00 -sub,kernel,64,64,611590,9,32.70,32.69,20.00 -sub,floor,64,64,469796,9,42.67,42.57,20.04 -sub,gmp,64,64,1294741,9,15.45,15.45,20.00 -sub,gmpz,64,64,1194452,9,16.74,16.71,20.03 -sub,auto,256,256,92640,9,215.89,215.85,20.00 -sub,inplace,256,256,50801,9,195.89,195.84,19.91 -sub,kernel,256,256,140414,9,142.47,142.44,20.01 -sub,floor,256,256,126241,9,158.33,158.09,20.00 -sub,gmp,256,256,255612,9,78.25,78.24,20.01 -sub,gmpz,256,256,250404,9,79.88,79.83,20.01 -sub,auto,1024,1024,22935,9,871.56,871.12,19.99 -sub,inplace,1024,1024,10911,9,927.37,915.91,20.26 -sub,kernel,1024,1024,34616,9,577.77,577.75,20.01 -sub,floor,1024,1024,33675,9,593.89,593.75,20.01 -sub,gmp,1024,1024,51247,9,390.21,390.20,20.00 -sub,gmpz,1024,1024,51036,9,391.80,391.75,20.07 -sub,auto,2000,2000,12910,9,1549.22,1549.04,20.02 -sub,inplace,2000,2000,6579,9,1520.00,1519.94,20.00 -sub,kernel,2000,2000,17670,9,1131.85,1131.81,20.00 -sub,floor,2000,2000,17405,9,1148.98,1148.73,20.00 -sub,gmp,2000,2000,41605,9,479.17,479.15,19.94 -sub,gmpz,2000,2000,41310,9,484.10,482.73,20.01 -sub,auto,1024,1,79006,9,253.12,252.66,19.99 -sub,inplace,1024,1,2052317,9,4.88,4.87,20.11 -sub,kernel,1024,1,34691,9,576.51,576.50,20.00 -sub,floor,1024,1,33746,9,592.68,592.56,20.01 -sub,gmp,1024,1,85926,9,232.76,232.73,20.00 -sub,gmpz,1024,1,85488,9,233.91,233.49,19.99 -shl,auto,1,13,1606746,9,12.61,12.49,20.28 -shl,inplace,1,13,2727876,9,3.67,3.65,20.01 -shl,kernel,1,13,9674667,9,2.08,2.07,20.07 -shl,kernelip,1,13,5666556,9,1.74,1.70,19.76 -shl,floor,1,13,2079145,9,9.82,9.81,20.43 -shl,gmp,1,13,9625974,9,2.08,2.08,20.01 -shl,gmpz,1,13,6110876,9,3.27,3.27,20.02 -shl,auto,4,13,1486851,9,13.45,13.40,20.00 -shl,inplace,4,13,2164470,9,4.61,4.60,19.97 -shl,kernel,4,13,5654042,9,3.51,3.49,19.87 -shl,kernelip,4,13,3383201,9,2.94,2.92,19.94 -shl,floor,4,13,1774940,9,11.21,11.19,19.90 -shl,gmp,4,13,7988309,9,2.50,2.50,19.99 -shl,gmpz,4,13,4935714,9,4.04,4.04,19.98 -shl,auto,16,13,1172991,9,17.07,17.00,20.01 -shl,inplace,16,13,1098985,9,9.08,8.97,19.99 -shl,kernel,16,13,2671536,9,7.49,7.49,20.01 -shl,kernelip,16,13,1396881,9,7.11,7.02,19.83 -shl,floor,16,13,1337224,9,15.21,15.21,20.39 -shl,gmp,16,13,4806594,9,4.15,4.14,19.97 -shl,gmpz,16,13,3428214,9,5.82,5.81,20.00 -shl,auto,256,13,163730,9,122.14,121.97,20.00 -shl,inplace,256,13,97475,9,102.75,102.71,20.04 -shl,kernel,256,13,213754,9,93.41,93.34,19.97 -shl,kernelip,256,13,102632,9,97.42,97.23,19.99 -shl,floor,256,13,179528,9,116.48,116.38,20.91 -shl,gmp,256,13,424362,9,47.22,47.11,20.03 -shl,gmpz,256,13,397844,9,49.94,49.84,19.87 -shl,auto,2000,13,25723,9,772.66,772.39,19.88 -shl,inplace,2000,13,13557,9,740.65,737.00,20.07 -shl,kernel,2000,13,27834,9,718.59,718.49,20.02 -shl,kernelip,2000,13,13986,9,715.24,715.11,20.01 -shl,floor,2000,13,27135,9,739.11,738.64,20.06 -shl,gmp,2000,13,59629,9,335.38,335.33,20.03 -shl,gmpz,2000,13,59177,9,338.02,337.71,20.02 -shl,auto,2000,77,25813,9,774.85,774.68,20.05 -shl,inplace,2000,77,13489,9,741.55,740.69,20.00 -shl,kernel,2000,77,23533,9,850.97,848.34,20.02 -shl,kernelip,2000,77,12166,9,822.04,822.01,20.01 -shl,floor,2000,77,22958,9,872.55,871.88,20.04 -shl,gmp,2000,77,59286,9,337.55,337.53,20.01 -shl,gmpz,2000,77,59049,9,338.81,338.64,20.03 -shr,auto,1,13,2435139,9,8.19,8.18,19.95 -shr,inplace,1,13,3002954,9,3.30,3.26,19.82 -shr,kernel,1,13,11756892,9,1.70,1.70,20.04 -shr,floor,1,13,8823122,9,2.27,2.27,20.00 -shr,gmp,1,13,10588892,9,1.89,1.89,20.05 -shr,gmpz,1,13,5771528,9,3.47,3.46,20.00 -shr,auto,4,13,1247189,9,16.03,15.98,20.00 -shr,inplace,4,13,2286062,9,4.38,4.34,20.01 -shr,kernel,4,13,5700916,9,3.49,3.47,19.85 -shr,floor,4,13,1780707,9,11.23,11.19,20.00 -shr,gmp,4,13,8656280,9,2.32,2.31,20.15 -shr,gmpz,4,13,5027927,9,3.98,3.95,20.03 -shr,auto,16,13,1005413,9,19.93,19.91,20.08 -shr,inplace,16,13,1153254,9,8.66,8.63,19.99 -shr,kernel,16,13,2368385,9,8.43,8.40,19.98 -shr,floor,16,13,1289178,9,15.60,15.42,20.08 -shr,gmp,16,13,4660104,9,4.29,4.29,20.11 -shr,gmpz,16,13,3129106,9,6.24,6.16,19.58 -shr,auto,256,13,159094,9,125.48,125.43,19.99 -shr,inplace,256,13,98516,9,101.63,101.42,20.02 -shr,kernel,256,13,181338,9,110.42,110.27,20.03 -shr,floor,256,13,153496,9,130.31,130.13,20.01 -shr,gmp,256,13,415437,9,48.00,47.78,19.95 -shr,gmpz,256,13,393864,9,50.63,50.42,19.94 -shr,auto,2000,13,26504,9,750.32,749.79,19.95 -shr,inplace,2000,13,13529,9,739.96,736.44,20.01 -shr,kernel,2000,13,24617,9,812.64,812.41,20.01 -shr,floor,2000,13,24044,9,832.10,831.77,20.01 -shr,gmp,2000,13,59583,9,335.62,335.51,20.02 -shr,gmpz,2000,13,58999,9,338.97,338.90,20.00 -shr,auto,2000,77,26656,9,750.74,750.10,20.03 -shr,inplace,2000,77,13514,9,739.87,738.63,20.00 -shr,kernel,2000,77,24117,9,829.38,829.26,20.01 -shr,floor,2000,77,23488,9,850.51,850.22,19.98 -shr,gmp,2000,77,59467,9,336.30,336.09,20.00 -shr,gmpz,2000,77,58985,9,339.04,338.97,20.00 -mul,auto,1,1,1226032,9,16.35,16.31,20.03 -mul,gmp,1,1,5950666,9,3.34,3.28,19.89 -mul,gmpz,1,1,5042274,9,3.97,3.97,20.04 -mul,auto,2,2,1064801,9,18.88,18.70,20.10 -mul,kernel,2,2,2753669,9,7.63,7.58,21.01 -mul,floor,2,2,1339569,9,15.19,15.10,20.35 -mul,gmp,2,2,5217217,9,3.83,3.82,19.98 -mul,gmpz,2,2,3269332,9,6.11,6.06,19.98 -mul,auto,3,3,981898,9,20.30,20.17,19.95 -mul,kernel,3,3,2238111,9,9.24,9.14,20.67 -mul,floor,3,3,1214046,9,16.64,16.59,20.21 -mul,gmp,3,3,2538155,9,7.80,7.71,19.77 -mul,gmpz,3,3,2004208,9,9.99,9.96,20.02 -mul,auto,4,4,893640,9,22.43,22.27,20.03 -mul,kernel,4,4,1931467,9,10.91,10.90,21.11 -mul,floor,4,4,1104836,9,18.32,18.28,20.29 -mul,gmp,4,4,2066044,9,9.67,9.66,19.99 -mul,gmpz,4,4,1649464,9,12.16,12.12,20.08 -mul,auto,6,6,714870,9,27.89,27.76,19.92 -mul,kernel,6,6,1216657,9,17.15,17.14,20.88 -mul,floor,6,6,820016,9,24.40,24.37,20.02 -mul,gmp,6,6,1264344,9,15.77,15.67,19.96 -mul,gmpz,6,6,1110946,9,18.05,17.89,20.05 -mul,auto,8,8,553607,9,35.66,35.44,19.74 -mul,kernel,8,8,808064,9,25.48,25.31,20.58 -mul,floor,8,8,613814,9,32.53,32.47,19.98 -mul,gmp,8,8,736045,9,27.01,26.95,19.88 -mul,gmpz,8,8,695250,9,29.00,28.74,20.16 -mul,auto,12,12,346515,9,57.75,57.73,20.02 -mul,kernel,12,12,426321,9,48.54,48.42,20.71 -mul,floor,12,12,362891,9,54.97,54.68,19.94 -mul,gmp,12,12,411875,9,48.57,48.55,20.02 -mul,gmpz,12,12,384696,9,52.00,51.98,20.02 -mul,auto,16,16,225619,9,88.50,88.45,19.97 -mul,kernel,16,16,252942,9,79.25,79.15,20.05 -mul,floor,16,16,230449,9,87.33,86.88,20.11 -mul,gmp,16,16,244186,9,81.91,81.87,20.01 -mul,gmpz,16,16,237960,9,84.07,84.03,20.01 -mul,auto,32,32,99881,9,199.59,199.14,19.94 -mul,kernel,32,32,107190,9,188.62,188.53,20.23 -mul,floor,32,32,102022,9,196.44,195.85,20.04 -mul,gmp,32,32,73315,9,270.27,268.59,19.84 -mul,gmpz,32,32,73917,9,269.74,269.72,19.95 -mul,auto,64,64,40294,9,495.25,494.48,19.96 -mul,kernel,64,64,39732,9,491.89,490.62,19.54 -mul,floor,64,64,39364,9,508.14,507.67,20.02 -mul,gmp,64,64,22902,9,869.20,860.55,19.89 -mul,gmpz,64,64,23226,9,861.27,859.57,20.01 -mul,auto,128,128,11560,9,1726.86,1725.05,19.99 -mul,kernel,128,128,11432,9,1716.73,1713.92,19.62 -mul,floor,128,128,11354,9,1759.24,1757.55,19.98 -mul,gmp,128,128,7230,9,2757.05,2723.18,19.88 -mul,gmpz,128,128,7366,9,2715.27,2714.64,20.03 -mul,auto,256,256,3214,9,6200.68,6195.02,19.93 -mul,kernel,256,256,3236,9,6142.48,6135.32,19.93 -mul,floor,256,256,3228,9,6196.55,6187.80,20.02 -mul,gmp,256,256,2496,9,7925.19,7880.44,19.80 -mul,gmpz,256,256,2547,9,7853.41,7848.69,20.00 -mul,auto,512,512,1041,9,19196.84,19184.14,20.00 -mul,kernel,512,512,1046,9,19129.71,19110.77,20.01 -mul,floor,512,512,1045,9,19164.72,19139.82,20.02 -mul,gmp,512,512,954,9,20851.78,20828.22,19.93 -mul,gmpz,512,512,959,9,20846.04,20836.45,19.99 -mul,auto,1000,1000,336,9,59647.14,59533.43,20.06 -mul,kernel,1000,1000,335,9,59733.90,59651.04,20.02 -mul,floor,1000,1000,336,9,59671.33,59620.19,20.05 -mul,gmp,1000,1000,373,9,53491.57,53480.07,19.96 -mul,gmpz,1000,1000,374,9,53556.80,53532.65,20.03 -mul,auto,2000,2000,114,9,176860.41,176707.64,20.17 -mul,kernel,2000,2000,114,9,176342.11,176196.44,20.13 -mul,floor,2000,2000,114,9,176213.56,176039.79,20.09 -mul,gmp,2000,2000,139,9,144188.32,144123.40,20.10 -mul,gmpz,2000,2000,139,9,144222.81,144155.16,20.05 -mul,auto,2000,100,1133,9,17656.69,17650.02,20.00 -mul,kernel,2000,100,1128,9,17702.67,17700.07,19.97 -mul,floor,2000,100,1127,9,17752.62,17749.51,20.01 -mul,gmp,2000,100,548,9,36165.78,35896.66,19.82 -mul,gmpz,2000,100,559,9,35875.11,35782.18,20.06 -sqr,auto,4,4,887101,9,22.21,22.11,19.69 -sqr,kernel,4,4,2015843,9,9.98,9.84,20.08 -sqr,floor,4,4,1219206,9,16.78,16.75,20.48 -sqr,gmp,4,4,3033936,9,6.55,6.53,19.87 -sqr,gmpz,4,4,2157459,9,9.41,9.29,20.30 -sqr,auto,16,16,294035,9,68.03,67.95,20.01 -sqr,kernel,16,16,356933,9,56.10,56.01,20.02 -sqr,floor,16,16,320275,9,64.86,64.69,20.77 -sqr,gmp,16,16,395445,9,49.85,49.80,19.75 -sqr,gmpz,16,16,383125,9,52.18,52.15,20.01 -sqr,auto,64,64,71550,9,274.85,274.46,19.68 -sqr,kernel,64,64,65718,9,304.29,303.85,20.00 -sqr,floor,64,64,65269,9,305.08,304.50,19.91 -sqr,gmp,64,64,35514,9,559.55,555.50,19.87 -sqr,gmpz,64,64,35864,9,555.52,553.39,19.93 -sqr,auto,512,512,1890,9,10558.87,10553.37,19.96 -sqr,kernel,512,512,1898,9,10533.04,10524.79,19.99 -sqr,floor,512,512,1893,9,10570.49,10567.14,20.01 -sqr,gmp,512,512,1330,9,15039.42,15028.77,20.01 -sqr,gmpz,512,512,1327,9,15067.84,15063.54,20.00 -sqr,auto,2000,2000,204,9,98077.00,98020.49,20.01 -sqr,kernel,2000,2000,205,9,97633.24,97589.05,20.01 -sqr,floor,2000,2000,204,9,98142.90,98105.17,20.05 -sqr,gmp,2000,2000,199,9,100645.78,100578.46,20.03 -sqr,gmpz,2000,2000,199,9,100599.17,100542.67,20.03 -divrem,auto,2,1,638045,9,31.59,31.50,20.19 -divrem,kernel,2,1,3558055,9,5.75,5.58,20.56 -divrem,floor,2,1,1569700,9,12.79,12.75,20.09 -divrem,gmp,2,1,2985603,9,6.70,6.70,20.01 -divrem,gmpz,2,1,1707975,9,11.75,11.70,20.06 -divrem,auto,8,4,206779,9,97.64,97.11,20.19 -divrem,kernel,8,4,348109,9,57.10,56.79,19.92 -divrem,floor,8,4,272675,9,74.14,73.76,20.21 -divrem,gmp,8,4,457425,9,43.77,43.53,20.03 -divrem,gmpz,8,4,418120,9,47.95,47.89,20.05 -divrem,auto,32,16,58593,9,339.12,338.24,19.87 -divrem,kernel,32,16,69263,9,289.31,288.74,20.05 -divrem,floor,32,16,65601,9,305.24,304.96,20.04 -divrem,gmp,32,16,105559,9,189.20,188.53,19.97 -divrem,gmpz,32,16,104088,9,192.46,191.52,20.02 -divrem,auto,128,64,5861,9,3409.06,3407.15,19.98 -divrem,kernel,128,64,5893,9,3394.47,3393.32,20.03 -divrem,floor,128,64,6220,9,3216.79,3216.04,20.02 -divrem,gmp,128,64,11645,9,1718.75,1717.21,20.06 -divrem,gmpz,128,64,11579,9,1721.79,1721.66,19.94 -divrem,auto,512,256,691,9,29155.29,29101.96,20.15 -divrem,kernel,512,256,682,9,29360.82,29346.65,20.03 -divrem,floor,512,256,681,9,29395.38,29376.73,20.02 -divrem,gmp,512,256,1231,9,16261.26,16256.19,20.02 -divrem,gmpz,512,256,1229,9,16272.57,16269.38,20.01 -divrem,auto,2000,1000,109,9,185658.99,185229.87,20.24 -divrem,kernel,2000,1000,109,9,184585.21,184452.82,20.13 -divrem,floor,2000,1000,109,9,184623.49,184528.36,20.12 -divrem,gmp,2000,1000,145,9,138180.45,138156.04,20.04 -divrem,gmpz,2000,1000,145,9,138049.69,138038.47,20.03 -divrem,auto,4000,2000,43,9,474346.35,473612.56,20.39 -divrem,kernel,4000,2000,43,9,474294.79,474143.63,20.39 -divrem,floor,4000,2000,42,9,476518.21,476370.10,20.03 -divrem,gmp,4000,2000,60,9,333725.30,332526.40,20.01 -divrem,gmpz,4000,2000,61,9,332844.51,332746.00,20.31 -divrem,auto,2000,100,140,9,142430.36,142313.34,19.96 -divrem,kernel,2000,100,141,9,141728.69,141160.52,20.00 -divrem,floor,2000,100,142,9,141371.90,141208.99,20.10 -divrem,gmp,2000,100,277,9,72364.08,72328.51,20.05 -divrem,gmpz,2000,100,278,9,72093.95,72081.37,20.06 -divrem,auto,65536,1,115,9,174187.94,174110.66,20.04 -divrem,kernel,65536,1,120,9,167197.21,166997.86,20.07 -divrem,floor,65536,1,119,9,167743.85,167429.68,19.96 -divrem,gmp,65536,1,136,9,148098.83,148094.18,20.15 -divrem,gmpz,65536,1,136,9,148121.62,148112.24,20.15 -tochars,auto,1,10,1357324,9,14.80,14.74,20.08 -tochars,kernel,1,10,313741,9,63.79,63.71,20.02 -tochars,gmp,1,10,1010039,9,19.61,19.49,19.81 -tochars,gmpz,1,10,591240,9,33.97,33.78,20.08 -tochars,auto,4,10,141218,9,140.21,139.86,19.85 -tochars,kernel,4,10,109569,9,182.17,180.82,19.99 -tochars,gmp,4,10,266842,9,74.95,74.86,20.04 -tochars,gmpz,4,10,201457,9,99.17,98.94,20.02 -tochars,auto,16,10,17145,9,1167.69,1164.14,20.02 -tochars,kernel,16,10,19527,9,1033.14,1028.42,20.18 -tochars,gmp,16,10,39619,9,503.09,502.94,19.93 -tochars,gmpz,16,10,33847,9,589.61,588.00,19.96 -tochars,auto,64,10,3564,9,5613.13,5605.74,20.02 -tochars,kernel,64,10,3816,9,5246.87,5234.91,20.01 -tochars,gmp,64,10,7529,9,2657.68,2654.63,20.05 -tochars,gmpz,64,10,6770,9,2949.29,2946.83,19.98 -tochars,auto,256,10,558,9,35891.24,35859.90,20.05 -tochars,kernel,256,10,577,9,34736.77,34704.50,20.04 -tochars,gmp,256,10,1078,9,18547.03,18530.25,19.99 -tochars,gmpz,256,10,1016,9,19660.90,19644.57,19.97 -tochars,auto,2000,10,33,9,609489.61,609211.36,20.12 -tochars,kernel,2000,10,34,9,585338.26,585016.09,19.90 -tochars,gmp,2000,10,51,9,399868.90,399466.12,20.39 -tochars,gmpz,2000,10,49,9,408373.57,408181.27,20.04 -tochars,auto,16,16,192160,9,103.32,103.07,19.86 -tochars,gmp,16,16,208058,9,96.14,96.05,20.01 -tochars,gmpz,16,16,127991,9,155.90,155.53,19.95 -tochars,auto,2000,16,1678,9,11919.39,11917.82,20.01 -tochars,gmp,2000,16,1801,9,11111.72,11110.12,20.01 -tochars,gmpz,2000,16,1116,9,17924.19,17921.44,20.00 -fromchars,auto,4,10,170801,9,116.14,115.86,19.85 -fromchars,kernel,4,10,517381,9,38.90,38.78,20.12 -fromchars,gmp,4,10,625297,9,32.14,32.00,20.10 -fromchars,gmpz,4,10,289560,9,69.82,69.06,20.16 -fromchars,auto,16,10,46706,9,430.80,426.69,20.11 -fromchars,kernel,16,10,92560,9,218.76,211.17,20.17 -fromchars,gmp,16,10,161241,9,124.01,123.86,19.98 -fromchars,gmpz,16,10,78617,9,254.55,254.13,20.05 -fromchars,auto,64,10,6856,9,3169.44,2850.27,21.39 -fromchars,kernel,64,10,9356,9,2398.25,2207.33,21.57 -fromchars,gmp,64,10,22149,9,903.29,902.80,20.01 -fromchars,gmpz,64,10,14346,9,1390.87,1389.81,19.96 -fromchars,auto,256,10,640,9,31831.81,29968.17,20.28 -fromchars,kernel,256,10,728,9,29584.46,26379.06,20.29 -fromchars,gmp,256,10,2447,9,8169.62,8161.94,20.00 -fromchars,gmpz,256,10,1994,9,10032.50,10025.73,20.00 -fromchars,auto,2000,10,48,9,427271.50,426671.75,20.51 -fromchars,kernel,2000,10,50,9,405808.84,405734.02,20.31 -fromchars,gmp,2000,10,110,9,182547.48,182417.65,20.08 -fromchars,gmpz,2000,10,102,9,197317.05,197274.28,20.13 diff --git a/tests/beman/big_int/perf/item1/x64r3_new64a_seed2b.csv b/tests/beman/big_int/perf/item1/x64r3_new64a_seed2b.csv deleted file mode 100644 index 0bd94e5e..00000000 --- a/tests/beman/big_int/perf/item1/x64r3_new64a_seed2b.csv +++ /dev/null @@ -1,400 +0,0 @@ -# gap_sweep date 2026-10-06T18:09:23Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64a seed=2 ops=add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2999362,9,6.70,6.55,20.09 -add,inplace,1,1,2035934,9,4.91,4.91,20.00 -add,kernel,1,1,10398907,9,1.92,1.90,20.09 -add,floor,1,1,2045496,9,9.82,9.79,20.07 -add,gmp,1,1,8824186,9,2.27,2.27,20.02 -add,gmpz,1,1,4812991,9,4.16,4.16,20.01 -add,auto,2,2,1256718,9,15.89,15.82,19.98 -add,inplace,2,2,1645573,9,6.03,5.95,19.89 -add,kernel,2,2,8225091,9,2.43,2.32,20.03 -add,floor,2,2,1956301,9,10.30,10.21,20.15 -add,gmp,2,2,8824030,9,2.27,2.27,20.00 -add,gmpz,2,2,4813158,9,4.16,4.16,20.00 -add,auto,4,4,1293666,9,15.41,15.41,19.94 -add,inplace,4,4,1743605,9,5.72,5.71,19.97 -add,kernel,4,4,6426391,9,3.05,3.02,19.59 -add,floor,4,4,1781820,9,11.15,11.09,19.87 -add,gmp,4,4,7933827,9,2.52,2.52,20.02 -add,gmpz,4,4,4596324,9,4.35,4.35,20.05 -add,auto,8,8,1193687,9,16.75,16.75,20.00 -add,inplace,8,8,1413567,9,7.09,7.07,20.04 -add,kernel,8,8,4395164,9,4.53,4.53,19.94 -add,floor,8,8,1608327,9,12.55,12.51,20.19 -add,gmp,8,8,5436300,9,3.68,3.67,20.00 -add,gmpz,8,8,4282535,9,4.66,4.64,19.95 -add,auto,16,16,956067,9,20.98,20.94,20.06 -add,inplace,16,16,849935,9,11.84,11.70,20.11 -add,kernel,16,16,2647191,9,7.56,7.55,20.02 -add,floor,16,16,1288806,9,15.53,15.46,20.01 -add,gmp,16,16,3541958,9,5.65,5.64,20.01 -add,gmpz,16,16,3073153,9,6.54,6.50,20.06 -add,auto,64,64,345492,9,57.79,57.74,19.97 -add,inplace,64,64,208113,9,48.07,48.06,20.01 -add,kernel,64,64,609086,9,32.86,32.57,20.01 -add,floor,64,64,451997,9,44.28,44.13,20.01 -add,gmp,64,64,1294672,9,15.45,15.42,20.00 -add,gmpz,64,64,1212861,9,16.49,16.46,19.99 -add,auto,256,256,93985,9,213.02,212.72,20.04 -add,inplace,256,256,51103,9,195.69,195.63,20.00 -add,kernel,256,256,140790,9,142.22,142.10,20.03 -add,floor,256,256,125678,9,159.13,159.02,20.00 -add,gmp,256,256,251606,9,79.50,79.48,20.04 -add,gmpz,256,256,251570,9,79.51,79.40,20.00 -add,auto,1024,1024,24724,9,800.17,800.07,19.84 -add,inplace,1024,1024,12654,9,790.17,790.02,20.00 -add,kernel,1024,1024,34621,9,577.88,577.74,20.01 -add,floor,1024,1024,33623,9,594.84,594.73,20.00 -add,gmp,1024,1024,50980,9,391.93,391.67,19.98 -add,gmpz,1024,1024,50892,9,393.01,392.98,20.01 -add,auto,2000,2000,13033,9,1534.64,1534.50,20.00 -add,inplace,2000,2000,6576,9,1520.88,1520.81,20.01 -add,kernel,2000,2000,17679,9,1131.33,1131.30,20.02 -add,floor,2000,2000,17380,9,1150.91,1150.53,20.02 -add,gmp,2000,2000,42404,9,471.79,471.65,20.02 -add,gmpz,2000,2000,43250,9,462.43,460.43,20.00 -add,auto,1024,1,79279,9,252.37,251.97,20.01 -add,inplace,1024,1,1961380,9,5.10,5.09,20.02 -add,kernel,1024,1,34637,9,577.44,577.42,20.00 -add,floor,1024,1,33674,9,593.93,593.82,20.00 -add,gmp,1024,1,85909,9,232.88,232.78,20.02 -add,gmpz,1024,1,85470,9,234.15,234.03,20.03 -sub,auto,1,1,2545053,9,7.75,7.74,19.78 -sub,inplace,1,1,2156824,9,4.68,4.67,20.18 -sub,kernel,1,1,13231398,9,1.51,1.51,19.99 -sub,floor,1,1,10588937,9,1.89,1.89,20.02 -sub,gmp,1,1,8824172,9,2.27,2.27,20.00 -sub,gmpz,1,1,4603812,9,4.34,4.34,20.00 -sub,auto,2,2,1276109,9,15.78,15.68,20.16 -sub,inplace,2,2,1937183,9,5.11,5.10,19.85 -sub,kernel,2,2,9529523,9,2.11,2.10,20.22 -sub,floor,2,2,2019922,9,10.00,9.93,20.16 -sub,gmp,2,2,8824215,9,2.27,2.27,20.01 -sub,gmpz,2,2,4602675,9,4.34,4.34,20.03 -sub,auto,4,4,1206252,9,16.59,16.58,20.02 -sub,inplace,4,4,1788161,9,5.59,5.59,20.04 -sub,kernel,4,4,7052696,9,2.84,2.84,20.00 -sub,floor,4,4,1872212,9,10.75,10.69,20.14 -sub,gmp,4,4,8008491,9,2.50,2.50,20.00 -sub,gmpz,4,4,4369845,9,4.57,4.56,20.00 -sub,auto,8,8,1113467,9,17.97,17.96,20.01 -sub,inplace,8,8,1438439,9,6.95,6.95,20.01 -sub,kernel,8,8,4591462,9,4.36,4.35,20.04 -sub,floor,8,8,1628391,9,12.35,12.30,20.10 -sub,gmp,8,8,5425394,9,3.69,3.69,20.01 -sub,gmpz,8,8,4021691,9,4.97,4.95,19.99 -sub,auto,16,16,951489,9,21.01,20.86,19.97 -sub,inplace,16,16,911433,9,11.01,10.96,20.07 -sub,kernel,16,16,2662977,9,7.51,7.51,20.01 -sub,floor,16,16,1307183,9,15.35,15.30,20.08 -sub,gmp,16,16,3339667,9,5.99,5.98,20.00 -sub,gmpz,16,16,2960042,9,6.80,6.76,20.11 -sub,auto,64,64,341047,9,58.60,58.55,19.98 -sub,inplace,64,64,212327,9,47.10,47.08,20.08 -sub,kernel,64,64,611723,9,32.71,32.70,20.03 -sub,floor,64,64,465091,9,42.93,42.88,19.99 -sub,gmp,64,64,1286482,9,15.55,15.55,20.00 -sub,gmpz,64,64,1136309,9,17.60,17.58,20.00 -sub,auto,256,256,92648,9,215.90,215.72,20.00 -sub,inplace,256,256,51052,9,195.88,195.79,20.01 -sub,kernel,256,256,140305,9,142.46,142.44,20.00 -sub,floor,256,256,126482,9,158.20,158.09,20.01 -sub,gmp,256,256,255608,9,78.24,78.24,20.00 -sub,gmpz,256,256,250487,9,79.84,79.74,20.00 -sub,auto,1024,1024,24732,9,808.66,808.43,20.01 -sub,inplace,1024,1024,12635,9,791.51,791.47,20.02 -sub,kernel,1024,1024,34617,9,577.76,577.75,20.00 -sub,floor,1024,1024,33686,9,593.85,593.77,20.01 -sub,gmp,1024,1024,51314,9,389.77,389.75,20.01 -sub,gmpz,1024,1024,51125,9,391.20,391.15,20.00 -sub,auto,2000,2000,12913,9,1549.03,1548.82,20.04 -sub,inplace,2000,2000,6566,9,1519.99,1519.93,19.98 -sub,kernel,2000,2000,17675,9,1131.59,1131.50,20.02 -sub,floor,2000,2000,17418,9,1148.56,1148.17,20.01 -sub,gmp,2000,2000,41518,9,481.68,481.65,20.00 -sub,gmpz,2000,2000,41301,9,484.44,483.07,19.99 -sub,auto,1024,1,78974,9,252.95,252.57,19.98 -sub,inplace,1024,1,2049547,9,4.89,4.87,20.08 -sub,kernel,1024,1,34688,9,576.49,576.49,20.00 -sub,floor,1024,1,33648,9,594.21,593.99,19.99 -sub,gmp,1024,1,85906,9,232.82,232.78,20.00 -sub,gmpz,1024,1,85429,9,234.06,233.66,19.99 -shl,auto,1,13,1605653,9,12.61,12.48,20.25 -shl,inplace,1,13,2733692,9,3.67,3.65,20.03 -shl,kernel,1,13,9674415,9,2.07,2.05,20.01 -shl,kernelip,1,13,5752051,9,1.75,1.72,20.15 -shl,floor,1,13,2069336,9,9.83,9.82,20.35 -shl,gmp,1,13,9625814,9,2.08,2.08,20.02 -shl,gmpz,1,13,6110898,9,3.27,3.27,20.00 -shl,auto,4,13,1489878,9,13.41,13.37,20.00 -shl,inplace,4,13,2163241,9,4.62,4.61,20.00 -shl,kernel,4,13,5724717,9,3.51,3.48,20.07 -shl,kernelip,4,13,3416069,9,2.94,2.91,20.08 -shl,floor,4,13,1775196,9,11.21,11.19,19.91 -shl,gmp,4,13,7865231,9,2.50,2.50,19.69 -shl,gmpz,4,13,4920409,9,4.04,4.04,19.91 -shl,auto,16,13,1178854,9,17.04,16.99,20.10 -shl,inplace,16,13,1083379,9,9.08,8.98,19.67 -shl,kernel,16,13,2663697,9,7.49,7.47,19.96 -shl,kernelip,16,13,1433324,9,7.12,7.00,20.40 -shl,floor,16,13,1334896,9,15.24,15.23,20.36 -shl,gmp,16,13,4819799,9,4.19,4.14,20.16 -shl,gmpz,16,13,3431573,9,5.84,5.81,20.06 -shl,auto,256,13,163922,9,122.24,122.07,20.10 -shl,inplace,256,13,96818,9,102.71,102.28,19.88 -shl,kernel,256,13,214168,9,93.37,93.25,19.99 -shl,kernelip,256,13,102614,9,97.43,97.29,19.99 -shl,floor,256,13,179537,9,116.45,116.38,20.92 -shl,gmp,256,13,423810,9,47.22,47.17,20.01 -shl,gmpz,256,13,394928,9,50.69,50.47,20.01 -shl,auto,2000,13,25892,9,772.64,772.22,20.01 -shl,inplace,2000,13,13486,9,740.74,738.78,19.96 -shl,kernel,2000,13,27779,9,718.54,718.36,19.98 -shl,kernelip,2000,13,13983,9,715.24,715.17,20.00 -shl,floor,2000,13,27183,9,739.01,738.36,20.10 -shl,gmp,2000,13,59611,9,335.60,335.48,20.00 -shl,gmpz,2000,13,59195,9,338.04,337.84,20.01 -shl,auto,2000,77,25805,9,775.06,774.83,20.00 -shl,inplace,2000,77,13485,9,741.51,741.37,20.00 -shl,kernel,2000,77,23477,9,849.53,848.50,19.95 -shl,kernelip,2000,77,12166,9,822.03,822.02,20.06 -shl,floor,2000,77,22960,9,872.06,870.67,20.02 -shl,gmp,2000,77,59287,9,337.53,337.53,20.01 -shl,gmpz,2000,77,58954,9,338.44,338.18,19.96 -shr,auto,1,13,2439368,9,8.19,8.19,20.00 -shr,inplace,1,13,3089975,9,3.28,3.25,20.28 -shr,kernel,1,13,11756393,9,1.70,1.70,20.00 -shr,floor,1,13,8824230,9,2.27,2.27,20.01 -shr,gmp,1,13,10589014,9,1.89,1.89,20.03 -shr,gmpz,1,13,5771095,9,3.47,3.46,20.00 -shr,auto,4,13,1252128,9,16.08,16.00,20.20 -shr,inplace,4,13,2291154,9,4.36,4.34,20.01 -shr,kernel,4,13,5630194,9,3.49,3.47,19.65 -shr,floor,4,13,1801205,9,11.13,11.06,20.05 -shr,gmp,4,13,8656692,9,2.35,2.32,20.32 -shr,gmpz,4,13,5083916,9,3.97,3.95,20.18 -shr,auto,16,13,1002174,9,19.93,19.90,20.01 -shr,inplace,16,13,1148790,9,8.66,8.63,19.91 -shr,kernel,16,13,2366677,9,8.46,8.44,20.03 -shr,floor,16,13,1301350,9,15.43,15.35,20.08 -shr,gmp,16,13,4635188,9,4.31,4.31,20.00 -shr,gmpz,16,13,3210771,9,6.31,6.23,20.47 -shr,auto,256,13,146685,9,136.55,136.04,20.03 -shr,inplace,256,13,98427,9,101.68,101.60,20.03 -shr,kernel,256,13,181323,9,110.33,110.27,20.01 -shr,floor,256,13,153267,9,130.40,130.32,19.99 -shr,gmp,256,13,419560,9,47.89,47.52,20.08 -shr,gmpz,256,13,396510,9,50.61,50.51,20.07 -shr,auto,2000,13,26690,9,750.53,749.68,20.04 -shr,inplace,2000,13,13546,9,739.50,738.63,20.04 -shr,kernel,2000,13,24634,9,811.93,811.91,20.00 -shr,floor,2000,13,23898,9,832.25,831.94,19.89 -shr,gmp,2000,13,59579,9,335.67,335.55,20.00 -shr,gmpz,2000,13,58782,9,340.31,340.09,20.08 -shr,auto,2000,77,26540,9,750.93,750.48,19.94 -shr,inplace,2000,77,13512,9,740.03,739.74,20.00 -shr,kernel,2000,77,24094,9,830.12,830.09,20.01 -shr,floor,2000,77,23442,9,853.28,852.98,20.00 -shr,gmp,2000,77,59439,9,336.22,336.03,19.98 -shr,gmpz,2000,77,58982,9,339.03,338.99,20.00 -mul,auto,1,1,1204777,9,16.57,16.50,19.96 -mul,gmp,1,1,5943135,9,3.37,3.34,20.03 -mul,gmpz,1,1,5042269,9,3.97,3.97,20.04 -mul,auto,2,2,1058002,9,18.92,18.82,19.99 -mul,kernel,2,2,2831841,9,7.60,7.56,21.54 -mul,floor,2,2,1350883,9,14.98,14.85,20.23 -mul,gmp,2,2,5210937,9,3.83,3.81,19.94 -mul,gmpz,2,2,3271108,9,6.10,6.07,19.98 -mul,auto,3,3,990441,9,20.21,20.16,20.01 -mul,kernel,3,3,2398985,9,8.96,8.91,21.54 -mul,floor,3,3,1236122,9,16.44,16.33,20.29 -mul,gmp,3,3,2563600,9,7.83,7.76,20.18 -mul,gmpz,3,3,1997579,9,10.00,9.96,19.98 -mul,auto,4,4,901198,9,22.35,22.17,20.14 -mul,kernel,4,4,1925812,9,11.37,11.33,21.91 -mul,floor,4,4,1113159,9,18.28,18.17,20.33 -mul,gmp,4,4,2064684,9,9.68,9.66,20.00 -mul,gmpz,4,4,1640829,9,12.20,12.16,20.03 -mul,auto,6,6,715267,9,27.91,27.80,19.95 -mul,kernel,6,6,1216664,9,17.19,17.14,20.90 -mul,floor,6,6,822020,9,24.37,24.33,20.04 -mul,gmp,6,6,1268148,9,15.71,15.68,19.93 -mul,gmpz,6,6,1102860,9,18.03,17.96,19.93 -mul,auto,8,8,560276,9,35.68,35.43,19.97 -mul,kernel,8,8,810240,9,25.47,25.21,20.63 -mul,floor,8,8,615215,9,32.38,32.27,19.92 -mul,gmp,8,8,739779,9,27.10,26.94,20.07 -mul,gmpz,8,8,694643,9,29.02,28.73,20.19 -mul,auto,12,12,346876,9,57.72,57.69,20.02 -mul,kernel,12,12,426535,9,47.36,47.26,20.21 -mul,floor,12,12,369153,9,54.59,54.43,20.15 -mul,gmp,12,12,402770,9,49.66,49.64,20.00 -mul,gmpz,12,12,393990,9,50.75,50.75,20.00 -mul,auto,16,16,226041,9,88.38,88.34,19.98 -mul,kernel,16,16,256005,9,78.59,78.53,20.12 -mul,floor,16,16,232110,9,86.39,86.24,20.07 -mul,gmp,16,16,240761,9,82.83,82.81,19.94 -mul,gmpz,16,16,215183,9,92.63,91.75,19.92 -mul,auto,32,32,99515,9,200.65,200.18,19.99 -mul,kernel,32,32,107109,9,188.56,188.15,20.22 -mul,floor,32,32,101922,9,195.90,195.00,19.97 -mul,gmp,32,32,71242,9,276.41,275.61,19.70 -mul,gmpz,32,32,68982,9,289.94,289.86,20.05 -mul,auto,64,64,40522,9,492.35,490.93,19.95 -mul,kernel,64,64,41641,9,484.28,482.73,20.16 -mul,floor,64,64,40883,9,489.17,488.98,20.00 -mul,gmp,64,64,22909,9,864.58,860.44,19.83 -mul,gmpz,64,64,23275,9,859.42,857.97,20.01 -mul,auto,128,128,11610,9,1722.19,1721.51,20.00 -mul,kernel,128,128,11815,9,1697.97,1695.59,20.06 -mul,floor,128,128,11748,9,1703.51,1701.44,20.02 -mul,gmp,128,128,7198,9,2761.78,2739.24,19.88 -mul,gmpz,128,128,7349,9,2710.67,2709.53,19.93 -mul,auto,256,256,3221,9,6212.35,6207.67,20.01 -mul,kernel,256,256,3252,9,6163.70,6160.10,20.07 -mul,floor,256,256,3247,9,6161.59,6158.75,20.01 -mul,gmp,256,256,2513,9,7864.35,7826.28,19.82 -mul,gmpz,256,256,2564,9,7798.91,7794.28,20.00 -mul,auto,512,512,1034,9,19369.37,19362.41,20.05 -mul,kernel,512,512,1038,9,19354.03,19336.87,20.14 -mul,floor,512,512,1037,9,19314.78,19307.31,20.04 -mul,gmp,512,512,948,9,20883.51,20878.26,19.81 -mul,gmpz,512,512,960,9,20845.17,20830.48,20.05 -mul,auto,1000,1000,335,9,59750.78,59713.01,20.02 -mul,kernel,1000,1000,337,9,59539.75,59496.04,20.07 -mul,floor,1000,1000,337,9,59550.21,59503.48,20.07 -mul,gmp,1000,1000,371,9,53522.63,53514.37,19.87 -mul,gmpz,1000,1000,375,9,53404.12,53386.70,20.05 -mul,auto,2000,2000,114,9,176347.90,176188.49,20.11 -mul,kernel,2000,2000,113,9,177652.98,177591.73,20.08 -mul,floor,2000,2000,113,9,177509.90,177367.21,20.06 -mul,gmp,2000,2000,139,9,144056.35,144044.20,20.03 -mul,gmpz,2000,2000,139,9,144173.60,144099.44,20.04 -mul,auto,2000,100,1133,9,17662.92,17659.45,20.01 -mul,kernel,2000,100,1132,9,17672.75,17668.19,20.01 -mul,floor,2000,100,1132,9,17682.62,17678.88,20.03 -mul,gmp,2000,100,547,9,36228.31,36076.04,19.91 -mul,gmpz,2000,100,556,9,35920.65,35900.76,19.97 -sqr,auto,4,4,895757,9,22.31,22.21,19.96 -sqr,kernel,4,4,2013807,9,9.93,9.86,20.02 -sqr,floor,4,4,1218222,9,16.78,16.75,20.44 -sqr,gmp,4,4,3438067,9,5.82,5.78,20.00 -sqr,gmpz,4,4,2264127,9,8.82,8.75,19.98 -sqr,auto,16,16,301858,9,66.34,66.32,20.03 -sqr,kernel,16,16,349522,9,57.19,57.15,19.99 -sqr,floor,16,16,319742,9,63.33,63.26,20.28 -sqr,gmp,16,16,397464,9,49.83,49.79,19.85 -sqr,gmpz,16,16,383625,9,52.09,52.06,19.98 -sqr,auto,64,64,71923,9,277.87,277.39,19.99 -sqr,kernel,64,64,73087,9,273.14,272.83,19.96 -sqr,floor,64,64,71408,9,277.88,276.59,19.85 -sqr,gmp,64,64,35703,9,555.35,551.00,19.84 -sqr,gmpz,64,64,36272,9,551.30,550.63,20.05 -sqr,auto,512,512,1890,9,10585.15,10572.53,20.02 -sqr,kernel,512,512,1889,9,10590.42,10586.56,20.01 -sqr,floor,512,512,1888,9,10589.36,10583.20,19.99 -sqr,gmp,512,512,1323,9,15099.82,15082.86,19.99 -sqr,gmpz,512,512,1326,9,15101.96,15088.36,20.02 -sqr,auto,2000,2000,200,9,100478.60,100149.88,20.09 -sqr,kernel,2000,2000,203,9,98626.55,98606.61,20.03 -sqr,floor,2000,2000,203,9,98760.94,98722.80,20.05 -sqr,gmp,2000,2000,199,9,100606.39,100571.65,20.04 -sqr,gmpz,2000,2000,199,9,100646.45,100585.96,20.03 -divrem,auto,2,1,637761,9,31.35,31.28,20.01 -divrem,kernel,2,1,3421178,9,5.72,5.56,19.45 -divrem,floor,2,1,1564195,9,12.77,12.75,19.98 -divrem,gmp,2,1,2985091,9,6.70,6.70,20.00 -divrem,gmpz,2,1,1725579,9,11.63,11.55,20.04 -divrem,auto,8,4,207662,9,97.13,96.69,20.17 -divrem,kernel,8,4,373838,9,53.58,53.36,20.05 -divrem,floor,8,4,277634,9,72.11,71.80,20.03 -divrem,gmp,8,4,456481,9,43.70,43.52,19.95 -divrem,gmpz,8,4,433976,9,45.99,45.94,19.98 -divrem,auto,32,16,58937,9,339.02,338.75,19.99 -divrem,kernel,32,16,68981,9,288.94,288.56,19.96 -divrem,floor,32,16,64858,9,307.56,306.67,19.96 -divrem,gmp,32,16,104548,9,191.22,190.37,19.98 -divrem,gmpz,32,16,103927,9,192.55,192.15,20.03 -divrem,auto,128,64,6061,9,3295.08,3293.44,19.98 -divrem,kernel,128,64,6256,9,3201.38,3196.64,20.04 -divrem,floor,128,64,6238,9,3210.61,3207.45,20.02 -divrem,gmp,128,64,11390,9,1755.21,1754.18,20.00 -divrem,gmpz,128,64,11394,9,1754.56,1754.01,20.00 -divrem,auto,512,256,685,9,29396.27,29293.44,20.12 -divrem,kernel,512,256,690,9,28971.96,28949.60,19.99 -divrem,floor,512,256,690,9,28990.86,28961.93,20.01 -divrem,gmp,512,256,1228,9,16222.78,16217.50,19.97 -divrem,gmpz,512,256,1235,9,16202.95,16200.60,20.01 -divrem,auto,2000,1000,109,9,185168.46,184921.06,20.18 -divrem,kernel,2000,1000,109,9,184850.28,184737.40,20.17 -divrem,floor,2000,1000,108,9,184945.93,184825.68,19.97 -divrem,gmp,2000,1000,145,9,137992.93,137979.06,20.01 -divrem,gmpz,2000,1000,145,9,138175.48,138157.34,20.04 -divrem,auto,4000,2000,43,9,476876.44,476357.28,20.50 -divrem,kernel,4000,2000,43,9,473364.37,473293.70,20.36 -divrem,floor,4000,2000,43,9,473370.14,473106.88,20.38 -divrem,gmp,4000,2000,60,9,333426.13,332441.55,20.01 -divrem,gmpz,4000,2000,61,9,332181.02,331984.08,20.27 -divrem,auto,2000,100,141,9,142081.74,141685.47,20.03 -divrem,kernel,2000,100,141,9,141923.83,141666.28,20.01 -divrem,floor,2000,100,142,9,141263.35,141090.37,20.08 -divrem,gmp,2000,100,276,9,72645.63,72626.40,20.06 -divrem,gmpz,2000,100,277,9,72275.98,72243.77,20.11 -divrem,auto,65536,1,115,9,174548.60,174346.45,20.08 -divrem,kernel,65536,1,120,9,167482.71,167255.02,20.10 -divrem,floor,65536,1,120,9,168242.05,168026.77,20.18 -divrem,gmp,65536,1,136,9,148102.46,148093.07,20.14 -divrem,gmpz,65536,1,135,9,148110.86,148100.36,20.00 -tochars,auto,1,10,1350322,9,14.75,14.73,19.95 -tochars,kernel,1,10,313605,9,63.80,63.69,20.00 -tochars,gmp,1,10,1007234,9,19.88,19.80,20.02 -tochars,gmpz,1,10,586825,9,33.93,33.72,19.89 -tochars,auto,4,10,142718,9,140.10,138.05,19.99 -tochars,kernel,4,10,110059,9,182.28,181.56,20.06 -tochars,gmp,4,10,279992,9,71.45,71.35,20.00 -tochars,gmpz,4,10,202847,9,98.61,98.54,20.01 -tochars,auto,16,10,17174,9,1168.35,1162.17,20.06 -tochars,kernel,16,10,19329,9,1028.02,1025.65,19.89 -tochars,gmp,16,10,39762,9,503.12,503.01,20.01 -tochars,gmpz,16,10,33757,9,592.14,588.66,20.04 -tochars,auto,64,10,3554,9,5627.73,5620.50,20.00 -tochars,kernel,64,10,3814,9,5238.68,5234.47,19.98 -tochars,gmp,64,10,7517,9,2656.93,2653.44,19.98 -tochars,gmpz,64,10,6794,9,2946.06,2943.46,20.02 -tochars,auto,256,10,556,9,36045.62,36016.91,20.04 -tochars,kernel,256,10,576,9,34727.76,34625.93,20.00 -tochars,gmp,256,10,1076,9,18588.26,18580.65,20.00 -tochars,gmpz,256,10,1017,9,19673.05,19643.39,20.01 -tochars,auto,2000,10,33,9,609583.64,609383.03,20.12 -tochars,kernel,2000,10,35,9,587731.89,587391.09,20.57 -tochars,gmp,2000,10,51,9,400063.45,399851.27,20.40 -tochars,gmpz,2000,10,49,9,409462.82,409087.84,20.07 -tochars,auto,16,16,193389,9,103.30,103.22,19.98 -tochars,gmp,16,16,205924,9,97.30,96.51,20.02 -tochars,gmpz,16,16,127599,9,156.73,156.60,20.00 -tochars,auto,2000,16,1677,9,11931.35,11929.93,20.01 -tochars,gmp,2000,16,1800,9,11111.16,11110.37,20.01 -tochars,gmpz,2000,16,1116,9,17925.95,17920.67,20.01 -fromchars,auto,4,10,172616,9,116.39,115.89,20.08 -fromchars,kernel,4,10,515595,9,38.72,38.68,20.01 -fromchars,gmp,4,10,623953,9,31.99,31.92,19.98 -fromchars,gmpz,4,10,282312,9,69.16,69.06,19.55 -fromchars,auto,16,10,46301,9,430.00,427.56,19.96 -fromchars,kernel,16,10,93057,9,217.19,211.35,20.16 -fromchars,gmp,16,10,161908,9,123.60,123.50,20.01 -fromchars,gmpz,16,10,78627,9,255.96,254.23,20.11 -fromchars,auto,64,10,7214,9,3046.76,2975.37,21.65 -fromchars,kernel,64,10,8600,9,2324.29,2234.86,20.14 -fromchars,gmp,64,10,21966,9,912.03,910.29,20.03 -fromchars,gmpz,64,10,14210,9,1409.19,1407.81,20.04 -fromchars,auto,256,10,637,9,31228.55,29594.66,19.80 -fromchars,kernel,256,10,638,9,29694.91,28325.09,19.34 -fromchars,gmp,256,10,2482,9,8076.05,8070.30,20.10 -fromchars,gmpz,256,10,1992,9,10011.13,9990.94,19.95 -fromchars,auto,2000,10,48,9,426609.29,424902.50,20.47 -fromchars,kernel,2000,10,50,9,405536.58,405324.58,20.29 -fromchars,gmp,2000,10,110,9,182606.07,182537.25,20.10 -fromchars,gmpz,2000,10,102,9,197611.50,197555.64,20.17 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_big1a.csv b/tests/beman/big_int/perf/item1/x64r4_base64_big1a.csv deleted file mode 100644 index d1128a0d..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_base64_big1a.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,204,3,98137.21,98080.80,20.02 -shl,inplace,131072,13,230,3,43576.05,43459.11,20.03 -shl,kernel,131072,13,277,3,72237.17,72234.57,20.01 -shr,auto,131072,13,203,3,98840.91,98829.32,20.07 -shr,inplace,131072,13,230,3,43341.62,43328.00,19.95 -shr,kernel,131072,13,263,3,76157.97,76155.73,20.03 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_big1b.csv b/tests/beman/big_int/perf/item1/x64r4_base64_big1b.csv deleted file mode 100644 index 7519eff3..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_base64_big1b.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,204,3,98019.38,97963.15,20.00 -shl,inplace,131072,13,232,3,43564.51,43420.57,20.21 -shl,kernel,131072,13,277,3,72274.31,72264.16,20.02 -shr,auto,131072,13,202,3,99122.86,99100.51,20.07 -shr,inplace,131072,13,230,3,43370.20,43328.56,19.96 -shr,kernel,131072,13,263,3,76166.26,76164.95,20.03 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_big2a.csv b/tests/beman/big_int/perf/item1/x64r4_base64_big2a.csv deleted file mode 100644 index 516a4937..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_base64_big2a.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,205,3,97808.13,97713.30,20.05 -shl,inplace,131072,13,230,3,43514.25,43438.96,20.01 -shl,kernel,131072,13,277,3,72194.55,72189.25,20.00 -shr,auto,131072,13,203,3,98936.46,98914.51,20.08 -shr,inplace,131072,13,232,3,43479.77,43433.08,20.18 -shr,kernel,131072,13,263,3,76106.58,76102.68,20.02 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_big2b.csv b/tests/beman/big_int/perf/item1/x64r4_base64_big2b.csv deleted file mode 100644 index 7a93aa8e..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_base64_big2b.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,204,3,98286.17,98185.45,20.04 -shl,inplace,131072,13,231,3,43429.75,43386.13,20.08 -shl,kernel,131072,13,277,3,72286.09,72282.12,20.02 -shr,auto,131072,13,203,3,98877.62,98867.00,20.07 -shr,inplace,131072,13,231,3,43363.34,43191.36,20.03 -shr,kernel,131072,13,263,3,76208.00,76133.25,20.04 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_other_seed1a.csv b/tests/beman/big_int/perf/item1/x64r4_base64_other_seed1a.csv deleted file mode 100644 index 1c328a73..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_base64_other_seed1a.csv +++ /dev/null @@ -1,127 +0,0 @@ -# gap_sweep date 2026-10-06T18:28:03Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=add,sub,mul,sqr,divrem bands=small pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,2394698,9,8.23,8.18,19.69 -add,inplace,1,1,2398314,9,4.15,4.13,19.88 -add,kernel,1,1,10589168,9,1.89,1.89,20.00 -add,floor,1,1,2027317,9,9.87,9.82,20.01 -add,gmp,1,1,8823941,9,2.27,2.27,20.00 -add,gmpz,1,1,4813008,9,4.16,4.16,20.02 -add,auto,2,2,1122324,9,17.82,17.79,20.01 -add,inplace,2,2,1677518,9,5.93,5.88,19.90 -add,kernel,2,2,8407856,9,2.35,2.34,19.87 -add,floor,2,2,1948051,9,10.23,10.21,19.94 -add,gmp,2,2,8804934,9,2.27,2.27,19.96 -add,gmpz,2,2,4805943,9,4.17,4.16,20.02 -add,auto,4,4,1111306,9,17.99,17.87,19.99 -add,inplace,4,4,1775941,9,5.64,5.62,20.03 -add,kernel,4,4,6272134,9,3.09,3.04,19.42 -add,floor,4,4,1820378,9,10.99,10.98,20.01 -add,gmp,4,4,7884143,9,2.53,2.52,19.94 -add,gmpz,4,4,4516771,9,4.42,4.42,20.01 -add,auto,8,8,1046110,9,19.12,19.08,20.00 -add,inplace,8,8,1354460,9,7.39,7.38,20.03 -add,kernel,8,8,4311868,9,4.62,4.60,19.98 -add,floor,8,8,1598278,9,12.51,12.51,20.00 -add,gmp,8,8,5424808,9,3.69,3.69,20.00 -add,gmpz,8,8,4242002,9,4.73,4.71,20.05 -add,auto,16,16,787225,9,25.05,24.57,19.77 -add,inplace,16,16,847723,9,11.86,11.75,20.07 -add,kernel,16,16,2638226,9,7.58,7.56,20.00 -add,floor,16,16,1281791,9,15.59,15.59,19.99 -add,gmp,16,16,3643448,9,5.49,5.49,20.02 -add,gmpz,16,16,3068733,9,6.53,6.51,20.04 -sub,auto,1,1,2171665,9,9.16,9.09,19.89 -sub,inplace,1,1,2479004,9,4.04,4.03,20.04 -sub,kernel,1,1,13236301,9,1.51,1.51,20.00 -sub,floor,1,1,10540432,9,1.90,1.89,20.01 -sub,gmp,1,1,8823997,9,2.27,2.27,20.01 -sub,gmpz,1,1,4603723,9,4.34,4.34,20.02 -sub,auto,2,2,1042904,9,19.14,19.05,19.97 -sub,inplace,2,2,2152961,9,4.66,4.65,20.08 -sub,kernel,2,2,9462210,9,2.10,2.08,19.84 -sub,floor,2,2,1995821,9,10.01,10.01,19.99 -sub,gmp,2,2,8823067,9,2.27,2.27,20.00 -sub,gmpz,2,2,4576975,9,4.37,4.36,20.02 -sub,auto,4,4,1052733,9,18.97,18.90,19.97 -sub,inplace,4,4,1815902,9,5.49,5.48,19.93 -sub,kernel,4,4,7054315,9,2.89,2.83,20.28 -sub,floor,4,4,1851714,9,10.80,10.78,20.00 -sub,gmp,4,4,7899873,9,2.51,2.49,19.83 -sub,gmpz,4,4,4291745,9,4.66,4.62,20.02 -sub,auto,8,8,939506,9,21.22,21.03,19.93 -sub,inplace,8,8,1377750,9,7.26,7.25,20.01 -sub,kernel,8,8,4551623,9,4.40,4.38,20.03 -sub,floor,8,8,1608635,9,12.47,12.42,20.08 -sub,gmp,8,8,5424536,9,3.68,3.68,19.99 -sub,gmpz,8,8,3833115,9,5.16,5.11,19.78 -sub,auto,16,16,784262,9,25.70,24.97,20.09 -sub,inplace,16,16,933846,9,10.70,10.68,19.98 -sub,kernel,16,16,2572974,9,7.78,7.77,20.01 -sub,floor,16,16,1293287,9,15.47,15.46,20.02 -sub,gmp,16,16,3619203,9,5.50,5.50,19.92 -sub,gmpz,16,16,2938678,9,6.80,6.75,20.00 -mul,auto,1,1,1039754,9,19.20,19.14,19.96 -mul,gmp,1,1,5877344,9,3.39,3.38,19.94 -mul,gmpz,1,1,4939273,9,4.04,4.03,19.96 -mul,auto,2,2,711602,9,28.02,27.93,19.95 -mul,kernel,2,2,2817900,9,7.57,7.54,21.33 -mul,floor,2,2,1328979,9,15.04,14.89,20.00 -mul,gmp,2,2,5175433,9,3.85,3.84,19.93 -mul,gmpz,2,2,3255104,9,6.16,6.10,20.04 -mul,auto,3,3,658610,9,30.32,30.14,19.97 -mul,kernel,3,3,2345411,9,9.03,9.00,21.23 -mul,floor,3,3,1212215,9,16.64,16.49,20.18 -mul,gmp,3,3,2513777,9,7.91,7.82,19.87 -mul,gmpz,3,3,1987843,9,10.02,9.97,19.93 -mul,auto,4,4,625763,9,31.96,31.89,20.09 -mul,kernel,4,4,1891123,9,11.08,11.06,20.98 -mul,floor,4,4,1085043,9,18.56,18.51,20.13 -mul,gmp,4,4,2063455,9,9.70,9.67,20.03 -mul,gmpz,4,4,1649311,9,12.15,12.13,20.06 -mul,auto,6,6,477251,9,41.99,41.88,20.03 -mul,kernel,6,6,1128157,9,17.78,17.76,20.06 -mul,floor,6,6,773670,9,25.68,25.54,19.87 -mul,gmp,6,6,1179592,9,16.88,16.80,19.92 -mul,gmpz,6,6,1044350,9,19.16,19.02,19.98 -mul,auto,8,8,421650,9,47.18,47.13,19.94 -mul,kernel,8,8,803295,9,25.65,25.44,20.58 -mul,floor,8,8,610319,9,32.60,32.56,19.92 -mul,gmp,8,8,734258,9,27.20,27.09,19.97 -mul,gmpz,8,8,681089,9,28.80,28.62,19.65 -mul,auto,12,12,284464,9,70.34,70.22,20.02 -mul,kernel,12,12,421815,9,47.99,47.91,20.24 -mul,floor,12,12,364555,9,55.23,55.11,20.14 -mul,gmp,12,12,405427,9,49.12,48.98,19.91 -mul,gmpz,12,12,387314,9,51.43,51.24,19.92 -mul,auto,16,16,196087,9,102.12,101.96,20.05 -mul,kernel,16,16,251160,9,80.26,80.16,20.16 -mul,floor,16,16,231084,9,86.96,86.87,20.10 -mul,gmp,16,16,243724,9,81.91,81.86,19.97 -mul,gmpz,16,16,237667,9,84.09,84.02,19.99 -sqr,auto,4,4,602234,9,33.37,33.16,20.08 -sqr,kernel,4,4,2194915,9,9.07,9.04,19.90 -sqr,floor,4,4,1216959,9,16.92,16.91,20.59 -sqr,gmp,4,4,3445401,9,5.83,5.79,20.08 -sqr,gmpz,4,4,2266494,9,8.84,8.80,20.05 -sqr,auto,16,16,224879,9,89.07,89.02,20.03 -sqr,kernel,16,16,351734,9,56.82,56.80,19.99 -sqr,floor,16,16,318916,9,63.35,63.32,20.24 -sqr,gmp,16,16,382296,9,51.82,51.49,19.81 -sqr,gmpz,16,16,371924,9,53.63,53.35,19.96 -divrem,auto,2,1,468376,9,42.62,42.50,19.97 -divrem,kernel,2,1,3623476,9,5.50,5.38,19.88 -divrem,floor,2,1,1564089,9,12.76,12.73,19.97 -divrem,gmp,2,1,2302157,9,8.69,8.66,19.99 -divrem,gmpz,2,1,1499922,9,13.36,13.34,20.04 -divrem,auto,8,4,185131,9,107.82,107.75,19.98 -divrem,kernel,8,4,476295,9,41.58,41.28,19.80 -divrem,floor,8,4,358252,9,56.14,55.67,20.08 -divrem,gmp,8,4,500204,9,40.00,39.72,20.05 -divrem,gmpz,8,4,479781,9,41.55,41.28,19.92 -divrem,auto,32,16,53905,9,369.91,369.36,19.95 -divrem,kernel,32,16,69534,9,286.55,285.36,19.93 -divrem,floor,32,16,65664,9,304.69,303.97,20.01 -divrem,gmp,32,16,103689,9,192.69,192.40,19.99 -divrem,gmpz,32,16,102071,9,195.66,194.61,19.96 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_seed1a.csv b/tests/beman/big_int/perf/item1/x64r4_base64_seed1a.csv deleted file mode 100644 index 8f4a9ba9..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_base64_seed1a.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:25:27Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=shl,shr bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1187145,9,16.87,16.74,20.03 -shl,inplace,1,13,2399680,9,4.15,4.12,19.92 -shl,kernel,1,13,9660312,9,2.08,2.06,20.06 -shl,kernelip,1,13,5642302,9,1.79,1.73,20.14 -shl,floor,1,13,2077646,9,9.82,9.82,20.42 -shl,gmp,1,13,9444230,9,1.93,1.93,18.18 -shl,gmpz,1,13,5771463,9,3.47,3.47,20.00 -shl,auto,4,13,1070073,9,18.71,18.62,20.02 -shl,inplace,4,13,1901040,9,5.24,5.22,19.98 -shl,kernel,4,13,4530248,9,4.42,4.41,20.01 -shl,kernelip,4,13,3283767,9,3.03,3.00,19.96 -shl,floor,4,13,1738688,9,11.19,11.18,19.50 -shl,gmp,4,13,8649368,9,2.31,2.31,20.17 -shl,gmpz,4,13,4947025,9,4.04,4.04,20.01 -shl,auto,16,13,809284,9,24.65,24.37,20.00 -shl,inplace,16,13,1071692,9,9.34,9.32,20.03 -shl,kernel,16,13,2664441,9,7.45,7.44,19.87 -shl,kernelip,16,13,1374104,9,7.18,7.04,19.80 -shl,floor,16,13,1258322,9,15.21,15.21,19.16 -shl,gmp,16,13,4913508,9,4.05,4.05,20.01 -shl,gmpz,16,13,3434214,9,5.83,5.81,20.01 -shl,auto,256,13,145240,9,136.31,135.29,19.81 -shl,inplace,256,13,106509,9,93.26,92.90,19.87 -shl,kernel,256,13,210278,9,95.24,95.10,20.02 -shl,kernelip,256,13,102328,9,97.75,97.66,20.01 -shl,floor,256,13,170172,9,118.58,118.47,20.21 -shl,gmp,256,13,416038,9,48.12,47.97,20.03 -shl,gmpz,256,13,389806,9,51.28,51.18,20.00 -shl,auto,2000,13,21774,9,916.93,915.06,19.97 -shl,inplace,2000,13,15147,9,657.52,656.27,19.94 -shl,kernel,2000,13,27694,9,724.92,722.13,20.07 -shl,kernelip,2000,13,13980,9,715.35,715.30,20.00 -shl,floor,2000,13,27149,9,740.92,739.17,20.12 -shl,gmp,2000,13,58627,9,341.58,341.31,20.02 -shl,gmpz,2000,13,57926,9,345.06,344.87,20.00 -shl,auto,2000,77,18750,9,1066.37,1064.63,20.01 -shl,inplace,2000,77,13049,9,764.93,764.19,19.98 -shl,kernel,2000,77,23499,9,851.78,848.91,20.01 -shl,kernelip,2000,77,12157,9,822.56,822.24,20.00 -shl,floor,2000,77,22936,9,871.73,870.76,20.01 -shl,gmp,2000,77,57843,9,344.23,344.22,19.93 -shl,gmpz,2000,77,57993,9,344.93,344.90,20.04 -shr,auto,1,13,1943583,9,10.32,10.25,20.03 -shr,inplace,1,13,2710146,9,3.72,3.67,20.16 -shr,kernel,1,13,11572204,9,1.72,1.72,19.95 -shr,floor,1,13,8661218,9,2.31,2.31,20.01 -shr,gmp,1,13,10388674,9,1.93,1.93,20.01 -shr,gmpz,1,13,6108278,9,3.27,3.27,20.00 -shr,auto,4,13,955467,9,20.94,20.86,20.02 -shr,inplace,4,13,2079841,9,4.80,4.75,19.93 -shr,kernel,4,13,5754895,9,3.48,3.46,20.01 -shr,floor,4,13,1669329,9,11.96,11.94,19.97 -shr,gmp,4,13,8492841,9,2.33,2.31,19.72 -shr,gmpz,4,13,5040929,9,3.98,3.95,20.03 -shr,auto,16,13,768854,9,26.08,25.93,20.04 -shr,inplace,16,13,1113204,9,9.01,8.97,20.06 -shr,kernel,16,13,2415070,9,8.21,8.14,19.83 -shr,floor,16,13,1167966,9,17.10,16.99,19.97 -shr,gmp,16,13,4304490,9,4.65,4.64,20.02 -shr,gmpz,16,13,2693889,9,7.39,7.28,19.86 -shr,auto,256,13,143347,9,139.41,139.07,19.98 -shr,inplace,256,13,106627,9,93.69,93.58,19.99 -shr,kernel,256,13,178828,9,112.01,111.78,20.03 -shr,floor,256,13,150319,9,133.50,133.17,20.06 -shr,gmp,256,13,408460,9,49.05,48.81,20.01 -shr,gmpz,256,13,387537,9,51.61,51.55,20.00 -shr,auto,2000,13,21049,9,949.33,948.64,20.00 -shr,inplace,2000,13,15224,9,656.87,656.47,20.02 -shr,kernel,2000,13,24636,9,811.81,811.79,20.03 -shr,floor,2000,13,24020,9,832.44,831.95,19.99 -shr,gmp,2000,13,58435,9,342.42,342.25,20.01 -shr,gmpz,2000,13,57901,9,345.41,345.25,20.03 -shr,auto,2000,77,18451,9,1084.61,1083.51,20.02 -shr,inplace,2000,77,13076,9,764.73,764.48,20.01 -shr,kernel,2000,77,24144,9,828.40,828.34,20.00 -shr,floor,2000,77,23508,9,850.68,850.48,20.02 -shr,gmp,2000,77,58552,9,342.33,341.33,20.04 -shr,gmpz,2000,77,57829,9,345.78,345.67,20.00 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_seed1b.csv b/tests/beman/big_int/perf/item1/x64r4_base64_seed1b.csv deleted file mode 100644 index 7d8cd39a..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_base64_seed1b.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:26:06Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=1 ops=shl,shr bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1176892,9,17.03,16.95,20.05 -shl,inplace,1,13,2368752,9,4.17,4.11,19.71 -shl,kernel,1,13,9671060,9,2.08,2.07,20.09 -shl,kernelip,1,13,5768354,9,1.77,1.74,20.45 -shl,floor,1,13,2077704,9,10.10,9.85,20.87 -shl,gmp,1,13,9464413,9,1.93,1.93,18.24 -shl,gmpz,1,13,5771580,9,3.47,3.47,20.00 -shl,auto,4,13,1068675,9,18.65,18.57,19.93 -shl,inplace,4,13,1901255,9,5.26,5.22,20.04 -shl,kernel,4,13,5777393,9,3.44,3.44,19.92 -shl,kernelip,4,13,3354613,9,3.00,2.97,20.16 -shl,floor,4,13,1712389,9,11.37,11.35,19.47 -shl,gmp,4,13,8525548,9,2.35,2.35,20.18 -shl,gmpz,4,13,4945183,9,4.05,4.04,20.05 -shl,auto,16,13,817688,9,24.53,24.35,20.04 -shl,inplace,16,13,1069982,9,9.36,9.33,20.04 -shl,kernel,16,13,2522678,9,7.94,7.93,20.05 -shl,kernelip,16,13,1359588,9,7.22,7.12,19.61 -shl,floor,16,13,1257542,9,15.32,15.29,19.30 -shl,gmp,16,13,4912791,9,4.05,4.05,19.98 -shl,gmpz,16,13,3433394,9,5.82,5.81,20.04 -shl,auto,256,13,144371,9,137.76,136.11,19.93 -shl,inplace,256,13,107576,9,93.06,92.87,20.02 -shl,kernel,256,13,209921,9,95.28,94.88,19.99 -shl,kernelip,256,13,102321,9,97.73,97.68,20.01 -shl,floor,256,13,173249,9,117.56,117.18,20.37 -shl,gmp,256,13,419221,9,47.96,47.48,20.08 -shl,gmpz,256,13,389321,9,51.15,50.67,19.91 -shl,auto,2000,13,21827,9,918.09,916.53,20.05 -shl,inplace,2000,13,15187,9,659.58,656.85,20.04 -shl,kernel,2000,13,27837,9,718.69,718.28,20.03 -shl,kernelip,2000,13,13981,9,715.37,715.32,20.03 -shl,floor,2000,13,27208,9,738.65,737.78,20.09 -shl,gmp,2000,13,59427,9,339.56,337.72,20.17 -shl,gmpz,2000,13,58170,9,341.70,340.31,19.87 -shl,auto,2000,77,18770,9,1066.76,1064.54,20.02 -shl,inplace,2000,77,13086,9,764.76,763.98,20.01 -shl,kernel,2000,77,23517,9,848.71,848.54,19.96 -shl,kernelip,2000,77,12157,9,822.51,822.05,20.05 -shl,floor,2000,77,22907,9,871.99,871.11,19.97 -shl,gmp,2000,77,58281,9,344.07,343.86,20.06 -shl,gmpz,2000,77,57998,9,344.92,344.87,20.03 -shr,auto,1,13,1930643,9,10.28,10.16,19.81 -shr,inplace,1,13,2704664,9,3.67,3.65,19.86 -shr,kernel,1,13,11746781,9,1.70,1.70,20.02 -shr,floor,1,13,8757515,9,2.29,2.28,20.09 -shr,gmp,1,13,10388960,9,1.93,1.93,20.02 -shr,gmpz,1,13,6109315,9,3.27,3.27,20.01 -shr,auto,4,13,948520,9,21.05,21.02,19.98 -shr,inplace,4,13,2086326,9,4.79,4.76,20.04 -shr,kernel,4,13,5773249,9,3.48,3.46,20.09 -shr,floor,4,13,1669530,9,11.97,11.95,19.99 -shr,gmp,4,13,8657095,9,2.33,2.31,20.18 -shr,gmpz,4,13,5070157,9,3.96,3.95,20.13 -shr,auto,16,13,770193,9,25.97,25.87,20.02 -shr,inplace,16,13,1113451,9,9.01,8.95,20.07 -shr,kernel,16,13,2414374,9,8.28,8.22,20.06 -shr,floor,16,13,1173279,9,17.04,16.99,20.00 -shr,gmp,16,13,4653782,9,4.30,4.30,20.03 -shr,gmpz,16,13,2873107,9,6.85,6.83,19.82 -shr,auto,256,13,143348,9,139.72,139.33,20.03 -shr,inplace,256,13,106595,9,93.61,93.47,19.96 -shr,kernel,256,13,180201,9,111.21,110.93,20.05 -shr,floor,256,13,150577,9,133.03,132.07,20.01 -shr,gmp,256,13,409574,9,48.90,48.66,20.04 -shr,gmpz,256,13,387278,9,51.62,51.53,19.99 -shr,auto,2000,13,21024,9,950.51,949.93,19.99 -shr,inplace,2000,13,15184,9,657.57,656.79,19.96 -shr,kernel,2000,13,24636,9,811.80,811.79,20.00 -shr,floor,2000,13,24016,9,832.43,831.68,19.99 -shr,gmp,2000,13,58779,9,341.25,339.18,20.05 -shr,gmpz,2000,13,58054,9,344.66,343.48,20.00 -shr,auto,2000,77,18449,9,1084.31,1083.30,20.00 -shr,inplace,2000,77,13082,9,765.12,764.55,20.02 -shr,kernel,2000,77,24144,9,828.36,828.32,20.00 -shr,floor,2000,77,23495,9,850.71,850.32,19.99 -shr,gmp,2000,77,59097,9,340.34,339.48,20.13 -shr,gmpz,2000,77,58101,9,344.69,343.88,20.02 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_seed2a.csv b/tests/beman/big_int/perf/item1/x64r4_base64_seed2a.csv deleted file mode 100644 index 536cf289..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_base64_seed2a.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:26:45Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=shl,shr bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1186717,9,16.83,16.68,19.97 -shl,inplace,1,13,2420712,9,4.17,4.15,20.23 -shl,kernel,1,13,9623702,9,2.08,2.07,19.99 -shl,kernelip,1,13,5656193,9,1.78,1.73,20.04 -shl,floor,1,13,2077641,9,9.82,9.82,20.42 -shl,gmp,1,13,9496367,9,1.93,1.92,18.28 -shl,gmpz,1,13,5771619,9,3.47,3.47,20.02 -shl,auto,4,13,1064042,9,18.78,18.60,19.96 -shl,inplace,4,13,1891680,9,5.27,5.23,19.94 -shl,kernel,4,13,5807490,9,3.46,3.44,20.12 -shl,kernelip,4,13,3376363,9,3.02,2.98,20.33 -shl,floor,4,13,1735860,9,11.20,11.19,19.45 -shl,gmp,4,13,7991570,9,2.31,2.31,18.47 -shl,gmpz,4,13,4947094,9,4.04,4.04,20.01 -shl,auto,16,13,808914,9,24.61,24.44,19.92 -shl,inplace,16,13,1072028,9,9.33,9.31,20.03 -shl,kernel,16,13,2681845,9,7.48,7.45,20.06 -shl,kernelip,16,13,1391971,9,7.24,7.16,20.24 -shl,floor,16,13,1262146,9,15.23,15.21,19.26 -shl,gmp,16,13,4929921,9,4.10,4.07,20.22 -shl,gmpz,16,13,3442709,9,5.82,5.81,20.08 -shl,auto,256,13,147552,9,135.90,134.29,20.04 -shl,inplace,256,13,107491,9,93.10,92.82,20.01 -shl,kernel,256,13,210143,9,95.22,95.13,20.02 -shl,kernelip,256,13,102298,9,97.71,97.61,19.99 -shl,floor,256,13,175668,9,116.88,116.40,20.55 -shl,gmp,256,13,422726,9,47.50,47.17,20.05 -shl,gmpz,256,13,394844,9,50.50,50.32,19.96 -shl,auto,2000,13,21744,9,916.48,915.38,19.93 -shl,inplace,2000,13,15240,9,657.90,656.03,20.05 -shl,kernel,2000,13,27785,9,719.82,718.91,20.01 -shl,kernelip,2000,13,13980,9,715.33,715.29,20.00 -shl,floor,2000,13,27180,9,739.06,738.69,20.09 -shl,gmp,2000,13,59541,9,336.43,335.53,20.03 -shl,gmpz,2000,13,58892,9,340.25,338.87,20.05 -shl,auto,2000,77,18773,9,1065.64,1063.19,20.00 -shl,inplace,2000,77,13079,9,764.51,764.14,20.00 -shl,kernel,2000,77,23501,9,849.09,849.00,19.96 -shl,kernelip,2000,77,12160,9,822.84,822.01,20.01 -shl,floor,2000,77,23010,9,872.90,872.51,20.09 -shl,gmp,2000,77,58905,9,341.58,338.65,20.11 -shl,gmpz,2000,77,58198,9,344.33,343.15,20.03 -shr,auto,1,13,1941979,9,10.26,10.21,19.92 -shr,inplace,1,13,2741272,9,3.63,3.60,19.98 -shr,kernel,1,13,11751655,9,1.70,1.70,20.03 -shr,floor,1,13,8817003,9,2.27,2.27,20.05 -shr,gmp,1,13,10436227,9,1.92,1.91,20.03 -shr,gmpz,1,13,6089140,9,3.27,3.27,19.96 -shr,auto,4,13,950925,9,21.00,20.94,19.98 -shr,inplace,4,13,2109365,9,4.80,4.78,20.27 -shr,kernel,4,13,5773249,9,3.48,3.46,20.11 -shr,floor,4,13,1674285,9,11.99,11.95,20.07 -shr,gmp,4,13,8650219,9,2.32,2.31,20.10 -shr,gmpz,4,13,5054237,9,3.97,3.96,20.08 -shr,auto,16,13,771856,9,25.89,25.78,19.97 -shr,inplace,16,13,1120647,9,8.93,8.89,20.01 -shr,kernel,16,13,2451240,9,8.18,8.14,20.06 -shr,floor,16,13,1174927,9,17.41,17.06,20.39 -shr,gmp,16,13,4655140,9,4.30,4.30,20.03 -shr,gmpz,16,13,3122639,9,6.20,6.15,19.38 -shr,auto,256,13,142644,9,140.04,139.76,19.98 -shr,inplace,256,13,106786,9,93.64,93.51,20.00 -shr,kernel,256,13,181557,9,110.18,110.10,20.01 -shr,floor,256,13,152413,9,131.36,131.14,20.06 -shr,gmp,256,13,411030,9,48.70,48.51,20.01 -shr,gmpz,256,13,386286,9,51.94,51.74,20.06 -shr,auto,2000,13,21034,9,951.46,950.66,20.04 -shr,inplace,2000,13,15201,9,656.95,656.66,20.00 -shr,kernel,2000,13,24632,9,811.99,811.94,20.02 -shr,floor,2000,13,24032,9,832.67,832.39,20.01 -shr,gmp,2000,13,59515,9,336.79,335.95,20.05 -shr,gmpz,2000,13,58731,9,340.40,339.51,20.02 -shr,auto,2000,77,18440,9,1084.29,1083.45,20.02 -shr,inplace,2000,77,13053,9,766.00,765.60,20.01 -shr,kernel,2000,77,24113,9,829.06,829.00,20.02 -shr,floor,2000,77,23514,9,851.23,850.57,20.04 -shr,gmp,2000,77,59535,9,336.81,335.96,20.05 -shr,gmpz,2000,77,58948,9,341.24,340.98,20.13 diff --git a/tests/beman/big_int/perf/item1/x64r4_base64_seed2b.csv b/tests/beman/big_int/perf/item1/x64r4_base64_seed2b.csv deleted file mode 100644 index 3f8f8826..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_base64_seed2b.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:27:24Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.base64 seed=2 ops=shl,shr bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1197930,9,16.74,16.59,20.07 -shl,inplace,1,13,2413913,9,4.14,4.12,20.03 -shl,kernel,1,13,9612361,9,2.08,2.08,19.97 -shl,kernelip,1,13,5680291,9,1.75,1.69,19.93 -shl,floor,1,13,2077378,9,9.82,9.82,20.43 -shl,gmp,1,13,9590832,9,1.92,1.92,18.46 -shl,gmpz,1,13,5771583,9,3.47,3.47,20.02 -shl,auto,4,13,1069699,9,18.67,18.60,20.00 -shl,inplace,4,13,1890648,9,5.28,5.24,19.99 -shl,kernel,4,13,5781169,9,3.45,3.44,20.06 -shl,kernelip,4,13,3316565,9,3.00,2.98,19.92 -shl,floor,4,13,1724136,9,11.20,11.18,19.31 -shl,gmp,4,13,7984450,9,2.31,2.31,18.48 -shl,gmpz,4,13,4946905,9,4.04,4.04,20.01 -shl,auto,16,13,816397,9,24.50,24.41,20.02 -shl,inplace,16,13,1073708,9,9.32,9.25,20.00 -shl,kernel,16,13,2680610,9,7.47,7.43,20.04 -shl,kernelip,16,13,1360266,9,7.08,7.02,19.36 -shl,floor,16,13,1256339,9,15.22,15.21,19.13 -shl,gmp,16,13,4931437,9,4.05,4.05,20.13 -shl,gmpz,16,13,3434007,9,5.82,5.81,20.08 -shl,auto,256,13,145082,9,137.59,135.15,19.90 -shl,inplace,256,13,107545,9,93.08,92.83,20.02 -shl,kernel,256,13,210689,9,95.14,94.95,20.05 -shl,kernelip,256,13,102324,9,97.76,97.71,20.00 -shl,floor,256,13,174424,9,116.64,116.44,20.35 -shl,gmp,256,13,423596,9,47.45,47.21,20.09 -shl,gmpz,256,13,396323,9,50.40,49.88,19.98 -shl,auto,2000,13,21852,9,916.20,914.17,20.02 -shl,inplace,2000,13,15228,9,657.25,656.41,20.03 -shl,kernel,2000,13,27807,9,719.14,718.66,20.04 -shl,kernelip,2000,13,13980,9,715.35,715.31,20.01 -shl,floor,2000,13,27291,9,737.95,737.71,20.16 -shl,gmp,2000,13,59626,9,335.62,335.36,20.02 -shl,gmpz,2000,13,59055,9,338.66,338.09,20.01 -shl,auto,2000,77,18776,9,1065.84,1064.35,20.01 -shl,inplace,2000,77,13050,9,764.99,764.31,19.96 -shl,kernel,2000,77,23488,9,851.07,850.42,20.03 -shl,kernelip,2000,77,12159,9,822.32,822.09,20.01 -shl,floor,2000,77,22940,9,871.56,870.57,20.00 -shl,gmp,2000,77,59221,9,339.00,338.77,20.09 -shl,gmpz,2000,77,58714,9,342.38,341.10,20.11 -shr,auto,1,13,1953898,9,10.26,10.23,20.09 -shr,inplace,1,13,2707073,9,3.63,3.60,19.64 -shr,kernel,1,13,11751311,9,1.70,1.70,20.00 -shr,floor,1,13,8824112,9,2.27,2.27,20.01 -shr,gmp,1,13,10469364,9,1.92,1.91,20.06 -shr,gmpz,1,13,6110035,9,3.27,3.27,20.01 -shr,auto,4,13,953576,9,20.96,20.89,19.98 -shr,inplace,4,13,2079713,9,4.77,4.73,19.83 -shr,kernel,4,13,5772651,9,3.47,3.46,20.04 -shr,floor,4,13,1672910,9,11.97,11.95,20.04 -shr,gmp,4,13,8556791,9,2.33,2.31,19.88 -shr,gmpz,4,13,5059033,9,3.97,3.94,20.09 -shr,auto,16,13,774442,9,25.86,25.79,20.04 -shr,inplace,16,13,1121300,9,8.87,8.82,19.88 -shr,kernel,16,13,2445450,9,8.20,8.14,20.06 -shr,floor,16,13,1173299,9,17.04,17.00,20.01 -shr,gmp,16,13,4143221,9,4.81,4.81,19.95 -shr,gmpz,16,13,3248560,9,6.23,6.16,20.39 -shr,auto,256,13,143540,9,139.61,139.13,20.05 -shr,inplace,256,13,106772,9,93.74,93.61,20.03 -shr,kernel,256,13,177812,9,112.61,112.08,20.01 -shr,floor,256,13,152750,9,131.06,130.88,20.02 -shr,gmp,256,13,404479,9,49.50,49.43,20.03 -shr,gmpz,256,13,391378,9,50.86,50.78,19.94 -shr,auto,2000,13,21044,9,950.86,949.29,20.01 -shr,inplace,2000,13,15172,9,657.45,656.76,19.94 -shr,kernel,2000,13,24636,9,811.83,811.81,20.01 -shr,floor,2000,13,24017,9,833.56,832.48,20.03 -shr,gmp,2000,13,59552,9,336.18,335.91,20.04 -shr,gmpz,2000,13,58812,9,339.90,338.85,19.99 -shr,auto,2000,77,18458,9,1083.69,1083.45,20.01 -shr,inplace,2000,77,13071,9,764.79,764.52,20.01 -shr,kernel,2000,77,24151,9,828.19,828.15,20.00 -shr,floor,2000,77,23524,9,850.49,850.08,20.01 -shr,gmp,2000,77,59540,9,336.42,335.92,20.03 -shr,gmpz,2000,77,58760,9,340.17,339.78,20.00 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_big1a.csv b/tests/beman/big_int/perf/item1/x64r4_new64_big1a.csv deleted file mode 100644 index 54b20d31..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_new64_big1a.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,402,3,49867.10,49865.77,20.05 -shl,inplace,131072,13,215,3,46573.43,46559.61,20.03 -shl,kernel,131072,13,277,3,72217.80,72204.00,20.09 -shr,auto,131072,13,398,3,50331.96,50317.54,20.03 -shr,inplace,131072,13,215,3,46580.57,46575.43,20.03 -shr,kernel,131072,13,263,3,76173.24,76172.54,20.03 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_big1b.csv b/tests/beman/big_int/perf/item1/x64r4_new64_big1b.csv deleted file mode 100644 index 9a74f523..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_new64_big1b.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,402,3,49864.70,49861.24,20.06 -shl,inplace,131072,13,215,3,46539.91,46534.17,20.02 -shl,kernel,131072,13,277,3,72277.12,72255.00,20.03 -shr,auto,131072,13,398,3,50330.40,50310.78,20.03 -shr,inplace,131072,13,215,3,46566.34,46565.77,20.02 -shr,kernel,131072,13,262,3,76002.75,75999.04,19.91 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_big2a.csv b/tests/beman/big_int/perf/item1/x64r4_new64_big2a.csv deleted file mode 100644 index c57db6dd..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_new64_big2a.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,402,3,49874.07,49870.87,20.05 -shl,inplace,131072,13,215,3,46560.50,46560.40,20.02 -shl,kernel,131072,13,277,3,72222.09,72212.74,20.01 -shr,auto,131072,13,398,3,50323.26,50314.13,20.03 -shr,inplace,131072,13,215,3,46536.05,46532.60,20.02 -shr,kernel,131072,13,263,3,76222.71,76218.63,20.05 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_big2b.csv b/tests/beman/big_int/perf/item1/x64r4_new64_big2b.csv deleted file mode 100644 index e6e80733..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_new64_big2b.csv +++ /dev/null @@ -1,7 +0,0 @@ -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,131072,13,401,3,49874.14,49874.12,20.00 -shl,inplace,131072,13,215,3,46582.80,46573.65,20.06 -shl,kernel,131072,13,277,3,72219.04,72209.92,20.01 -shr,auto,131072,13,398,3,50314.08,50309.06,20.02 -shr,inplace,131072,13,215,3,46563.57,46552.11,20.02 -shr,kernel,131072,13,263,3,76220.87,76215.93,20.07 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_other_seed1a.csv b/tests/beman/big_int/perf/item1/x64r4_new64_other_seed1a.csv deleted file mode 100644 index a5de9d9c..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_new64_other_seed1a.csv +++ /dev/null @@ -1,127 +0,0 @@ -# gap_sweep date 2026-10-06T18:28:33Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=add,sub,mul,sqr,divrem bands=small pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -add,auto,1,1,3715316,9,5.47,5.44,20.38 -add,inplace,1,1,3898623,9,2.56,2.55,20.01 -add,kernel,1,1,10420041,9,1.92,1.91,20.13 -add,floor,1,1,2036675,9,9.82,9.82,20.00 -add,gmp,1,1,8824067,9,2.27,2.27,20.00 -add,gmpz,1,1,4789569,9,4.16,4.16,19.94 -add,auto,2,2,1230756,9,16.21,16.02,19.92 -add,inplace,2,2,1513737,9,6.52,6.00,19.40 -add,kernel,2,2,8375668,9,2.34,2.31,19.64 -add,floor,2,2,1907833,9,10.26,10.20,19.62 -add,gmp,2,2,8823123,9,2.27,2.27,20.01 -add,gmpz,2,2,4811152,9,4.16,4.16,20.05 -add,auto,4,4,1284722,9,15.79,15.52,20.32 -add,inplace,4,4,1764199,9,5.66,5.63,20.00 -add,kernel,4,4,6521374,9,3.04,3.03,19.87 -add,floor,4,4,1819078,9,11.07,10.97,20.16 -add,gmp,4,4,7961571,9,2.51,2.50,19.97 -add,gmpz,4,4,4519981,9,4.42,4.42,20.00 -add,auto,8,8,1179097,9,17.01,16.96,20.12 -add,inplace,8,8,1375559,9,7.36,7.18,20.20 -add,kernel,8,8,4354738,9,4.57,4.55,19.90 -add,floor,8,8,1589871,9,12.56,12.53,20.00 -add,gmp,8,8,5082657,9,3.93,3.93,19.99 -add,gmpz,8,8,4215397,9,4.73,4.72,19.97 -add,auto,16,16,935742,9,21.47,21.20,20.12 -add,inplace,16,16,887392,9,11.32,11.24,20.08 -add,kernel,16,16,2639056,9,7.59,7.56,20.01 -add,floor,16,16,1281833,9,15.59,15.59,20.01 -add,gmp,16,16,3633914,9,5.50,5.50,20.00 -add,gmpz,16,16,3063106,9,6.52,6.48,20.02 -sub,auto,1,1,3706939,9,5.39,5.33,19.97 -sub,inplace,1,1,4045998,9,2.48,2.46,20.03 -sub,kernel,1,1,13236203,9,1.51,1.51,20.01 -sub,floor,1,1,10589155,9,1.89,1.89,20.01 -sub,gmp,1,1,8760969,9,2.27,2.27,19.86 -sub,gmpz,1,1,4584641,9,4.34,4.34,19.94 -sub,auto,2,2,1252059,9,15.96,15.80,20.02 -sub,inplace,2,2,2065654,9,4.80,4.77,19.83 -sub,kernel,2,2,9626598,9,2.08,2.08,20.06 -sub,floor,2,2,1995722,9,10.01,10.01,19.99 -sub,gmp,2,2,8823128,9,2.27,2.27,20.00 -sub,gmpz,2,2,4596121,9,4.38,4.35,20.15 -sub,auto,4,4,1192110,9,16.85,16.64,20.08 -sub,inplace,4,4,1808085,9,5.53,5.49,20.04 -sub,kernel,4,4,7058065,9,2.83,2.83,20.01 -sub,floor,4,4,1854951,9,10.80,10.79,20.05 -sub,gmp,4,4,7952181,9,2.51,2.50,20.00 -sub,gmpz,4,4,4324058,9,4.63,4.62,20.00 -sub,auto,8,8,1095709,9,18.36,18.20,20.15 -sub,inplace,8,8,1410372,9,7.10,7.04,20.10 -sub,kernel,8,8,4590714,9,4.36,4.35,20.03 -sub,floor,8,8,1613226,9,12.43,12.41,20.05 -sub,gmp,8,8,5417457,9,3.69,3.69,19.98 -sub,gmpz,8,8,4015547,9,5.01,4.99,20.10 -sub,auto,16,16,934450,9,21.39,21.32,20.04 -sub,inplace,16,16,995605,9,10.03,10.02,19.98 -sub,kernel,16,16,2491112,9,8.03,8.03,20.02 -sub,floor,16,16,1290508,9,15.51,15.49,20.01 -sub,gmp,16,16,3155260,9,6.34,6.34,20.01 -sub,gmpz,16,16,2946666,9,6.81,6.77,20.05 -mul,auto,1,1,1196836,9,16.73,16.71,20.03 -mul,gmp,1,1,5912662,9,3.39,3.36,20.03 -mul,gmpz,1,1,4902829,9,4.04,4.04,19.81 -mul,auto,2,2,1037421,9,19.30,19.21,20.04 -mul,kernel,2,2,2854532,9,7.61,7.53,21.71 -mul,floor,2,2,1347671,9,15.01,14.92,20.28 -mul,gmp,2,2,5184309,9,3.86,3.84,20.01 -mul,gmpz,2,2,3238334,9,6.15,6.10,19.91 -mul,auto,3,3,955572,9,20.91,20.86,19.99 -mul,kernel,3,3,2397122,9,8.92,8.91,21.41 -mul,floor,3,3,1237491,9,16.47,16.39,20.38 -mul,gmp,3,3,2516378,9,7.90,7.88,19.92 -mul,gmpz,3,3,1991702,9,9.99,9.96,19.91 -mul,auto,4,4,889747,9,22.46,22.34,19.98 -mul,kernel,4,4,1936237,9,10.90,10.88,21.12 -mul,floor,4,4,1105557,9,18.44,18.35,20.39 -mul,gmp,4,4,2053160,9,9.67,9.66,19.89 -mul,gmpz,4,4,1637903,9,12.16,12.13,19.93 -mul,auto,6,6,712401,9,28.08,28.04,20.01 -mul,kernel,6,6,1216275,9,17.17,17.15,20.89 -mul,floor,6,6,818626,9,24.51,24.47,20.08 -mul,gmp,6,6,1215767,9,16.50,16.41,20.05 -mul,gmpz,6,6,1097887,9,18.25,18.22,20.05 -mul,auto,8,8,548100,9,36.13,36.07,19.81 -mul,kernel,8,8,806042,9,25.38,25.35,20.46 -mul,floor,8,8,615951,9,32.51,32.44,20.03 -mul,gmp,8,8,738866,9,27.01,26.76,19.95 -mul,gmpz,8,8,680255,9,28.71,28.48,19.61 -mul,auto,12,12,344775,9,57.99,57.73,19.99 -mul,kernel,12,12,420730,9,48.07,48.02,20.23 -mul,floor,12,12,361885,9,55.46,55.35,20.07 -mul,gmp,12,12,409361,9,48.83,48.71,19.98 -mul,gmpz,12,12,392222,9,50.96,50.89,20.02 -mul,auto,16,16,225033,9,88.62,88.46,19.95 -mul,kernel,16,16,253035,9,79.65,79.34,20.14 -mul,floor,16,16,228460,9,87.16,87.02,19.93 -mul,gmp,16,16,244319,9,81.89,81.87,20.01 -mul,gmpz,16,16,237667,9,84.06,84.04,19.99 -sqr,auto,4,4,899342,9,22.23,22.19,19.99 -sqr,kernel,4,4,1720243,9,11.27,11.26,19.45 -sqr,floor,4,4,1142295,9,17.14,17.02,19.61 -sqr,gmp,4,4,3427341,9,5.83,5.79,19.98 -sqr,gmpz,4,4,2258256,9,8.92,8.81,20.12 -sqr,auto,16,16,301410,9,66.25,66.19,19.99 -sqr,kernel,16,16,349991,9,57.18,57.13,20.02 -sqr,floor,16,16,319771,9,62.68,62.62,20.04 -sqr,gmp,16,16,393749,9,50.61,50.23,19.89 -sqr,gmpz,16,16,380264,9,52.46,52.24,19.94 -divrem,auto,2,1,530525,9,37.77,37.62,20.02 -divrem,kernel,2,1,3555178,9,5.85,5.48,20.62 -divrem,floor,2,1,1567186,9,12.77,12.76,20.03 -divrem,gmp,2,1,2292018,9,8.74,8.73,20.05 -divrem,gmpz,2,1,1510281,9,13.27,13.19,20.06 -divrem,auto,8,4,232091,9,85.96,85.35,19.96 -divrem,kernel,8,4,466107,9,43.06,42.69,20.04 -divrem,floor,8,4,321317,9,62.97,62.20,20.22 -divrem,gmp,8,4,487102,9,41.24,41.08,20.08 -divrem,gmpz,8,4,445421,9,45.22,45.06,20.15 -divrem,auto,32,16,58958,9,340.46,339.03,20.07 -divrem,kernel,32,16,68615,9,291.48,291.17,20.01 -divrem,floor,32,16,65135,9,307.10,306.15,20.00 -divrem,gmp,32,16,104212,9,191.11,190.72,19.92 -divrem,gmpz,32,16,102819,9,194.18,192.99,19.96 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_seed1a.csv b/tests/beman/big_int/perf/item1/x64r4_new64_seed1a.csv deleted file mode 100644 index 949e3f13..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_new64_seed1a.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:25:46Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=shl,shr bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1552758,9,12.84,12.72,19.92 -shl,inplace,1,13,2867535,9,3.48,3.48,20.00 -shl,kernel,1,13,9606198,9,2.08,2.08,19.98 -shl,kernelip,1,13,5618834,9,1.77,1.70,19.85 -shl,floor,1,13,2077680,9,9.82,9.82,20.41 -shl,gmp,1,13,9444435,9,2.12,2.11,19.99 -shl,gmpz,1,13,6110983,9,3.27,3.27,20.01 -shl,auto,4,13,1472495,9,13.52,13.44,19.91 -shl,inplace,4,13,2258513,9,4.39,4.38,19.83 -shl,kernel,4,13,5695336,9,3.51,3.49,19.97 -shl,kernelip,4,13,3364169,9,2.95,2.93,19.95 -shl,floor,4,13,1775771,9,11.23,11.20,19.95 -shl,gmp,4,13,7965969,9,2.50,2.50,19.96 -shl,gmpz,4,13,4946977,9,4.04,4.04,20.01 -shl,auto,16,13,1161317,9,17.24,17.19,20.01 -shl,inplace,16,13,1158185,9,8.55,8.50,19.81 -shl,kernel,16,13,2681196,9,7.46,7.45,20.00 -shl,kernelip,16,13,1402168,9,7.09,7.02,19.90 -shl,floor,16,13,1349073,9,15.24,15.23,20.57 -shl,gmp,16,13,4835409,9,4.17,4.07,20.09 -shl,gmpz,16,13,3327112,9,6.00,5.99,20.01 -shl,auto,256,13,163315,9,122.28,122.07,19.97 -shl,inplace,256,13,101412,9,98.69,98.64,20.03 -shl,kernel,256,13,211057,9,95.00,94.95,20.07 -shl,kernelip,256,13,102355,9,97.69,97.54,20.01 -shl,floor,256,13,176338,9,118.36,118.10,20.89 -shl,gmp,256,13,414031,9,48.03,47.92,19.88 -shl,gmpz,256,13,393918,9,50.72,50.55,19.99 -shl,auto,2000,13,25858,9,773.33,773.22,20.01 -shl,inplace,2000,13,14032,9,712.65,712.44,20.01 -shl,kernel,2000,13,27784,9,720.28,719.73,20.01 -shl,kernelip,2000,13,13979,9,715.31,715.04,20.00 -shl,floor,2000,13,27157,9,740.37,739.45,20.12 -shl,gmp,2000,13,59070,9,339.50,338.28,20.05 -shl,gmpz,2000,13,58273,9,343.58,342.64,20.02 -shl,auto,2000,77,25827,9,774.41,774.18,20.00 -shl,inplace,2000,77,14034,9,712.59,712.32,20.01 -shl,kernel,2000,77,23525,9,848.98,848.25,20.01 -shl,kernelip,2000,77,12138,9,822.03,822.02,19.96 -shl,floor,2000,77,22949,9,872.27,870.53,20.01 -shl,gmp,2000,77,58197,9,344.17,343.94,20.03 -shl,gmpz,2000,77,57945,9,344.73,344.69,19.98 -shr,auto,1,13,2361519,9,8.47,8.44,19.99 -shr,inplace,1,13,3258906,9,3.07,3.05,20.02 -shr,kernel,1,13,11582405,9,1.72,1.71,19.93 -shr,floor,1,13,8671328,9,2.31,2.30,20.00 -shr,gmp,1,13,10341973,9,1.93,1.93,19.91 -shr,gmpz,1,13,6108182,9,3.27,3.27,20.00 -shr,auto,4,13,1252446,9,15.96,15.91,20.00 -shr,inplace,4,13,2378961,9,4.17,4.16,19.86 -shr,kernel,4,13,5736260,9,3.49,3.48,20.02 -shr,floor,4,13,1786837,9,11.19,11.18,20.00 -shr,gmp,4,13,8622665,9,2.34,2.32,20.13 -shr,gmpz,4,13,5017909,9,3.97,3.95,19.95 -shr,auto,16,13,986406,9,20.22,20.19,19.96 -shr,inplace,16,13,1210655,9,8.17,8.09,19.75 -shr,kernel,16,13,2357867,9,8.48,8.48,20.06 -shr,floor,16,13,1280101,9,15.49,15.37,19.86 -shr,gmp,16,13,4657469,9,4.29,4.29,20.04 -shr,gmpz,16,13,3229074,9,6.20,6.17,20.13 -shr,auto,256,13,149115,9,133.69,133.38,19.93 -shr,inplace,256,13,101716,9,98.28,97.99,20.00 -shr,kernel,256,13,179825,9,112.10,111.74,20.15 -shr,floor,256,13,150383,9,132.52,131.98,19.93 -shr,gmp,256,13,410569,9,48.51,48.32,19.95 -shr,gmpz,256,13,387216,9,51.61,51.55,19.99 -shr,auto,2000,13,25408,9,787.83,786.96,20.02 -shr,inplace,2000,13,14036,9,711.64,711.40,19.98 -shr,kernel,2000,13,24633,9,811.94,811.90,20.00 -shr,floor,2000,13,24036,9,831.94,831.48,20.01 -shr,gmp,2000,13,58857,9,341.77,340.50,20.11 -shr,gmpz,2000,13,57889,9,345.17,344.96,19.98 -shr,auto,2000,77,25313,9,789.85,789.48,20.00 -shr,inplace,2000,77,14047,9,712.11,711.94,20.01 -shr,kernel,2000,77,24140,9,828.47,828.29,20.00 -shr,floor,2000,77,23522,9,850.58,850.28,20.01 -shr,gmp,2000,77,58913,9,341.71,340.28,20.11 -shr,gmpz,2000,77,57913,9,344.17,342.95,19.96 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_seed1b.csv b/tests/beman/big_int/perf/item1/x64r4_new64_seed1b.csv deleted file mode 100644 index b812acfc..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_new64_seed1b.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:26:25Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=1 ops=shl,shr bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1595590,9,12.60,12.51,20.12 -shl,inplace,1,13,2870066,9,3.48,3.48,20.00 -shl,kernel,1,13,9626355,9,2.08,2.08,20.01 -shl,kernelip,1,13,5620285,9,1.79,1.70,20.09 -shl,floor,1,13,2056346,9,9.83,9.82,20.21 -shl,gmp,1,13,9447300,9,2.11,2.10,19.90 -shl,gmpz,1,13,6110968,9,3.27,3.27,20.03 -shl,auto,4,13,1494189,9,13.41,13.38,20.04 -shl,inplace,4,13,2284590,9,4.41,4.39,20.13 -shl,kernel,4,13,4945125,9,4.06,4.05,20.08 -shl,kernelip,4,13,3330446,9,2.97,2.94,19.77 -shl,floor,4,13,1775677,9,11.20,11.18,19.90 -shl,gmp,4,13,7991421,9,2.50,2.50,20.00 -shl,gmpz,4,13,4935786,9,4.04,4.04,19.97 -shl,auto,16,13,1193368,9,16.75,16.70,19.98 -shl,inplace,16,13,1174965,9,8.62,8.55,20.24 -shl,kernel,16,13,2683081,9,7.45,7.43,20.00 -shl,kernelip,16,13,1406547,9,7.03,7.00,19.93 -shl,floor,16,13,1349163,9,15.23,15.21,20.55 -shl,gmp,16,13,4925221,9,4.09,4.06,20.14 -shl,gmpz,16,13,3434684,9,5.80,5.79,19.93 -shl,auto,256,13,164281,9,121.75,121.62,20.00 -shl,inplace,256,13,101332,9,98.65,98.53,19.99 -shl,kernel,256,13,210258,9,95.26,95.01,20.03 -shl,kernelip,256,13,102466,9,97.67,97.59,20.02 -shl,floor,256,13,176392,9,118.16,118.01,20.86 -shl,gmp,256,13,421077,9,47.72,47.28,20.07 -shl,gmpz,256,13,395497,9,50.25,50.01,19.87 -shl,auto,2000,13,25862,9,773.41,773.07,20.00 -shl,inplace,2000,13,14033,9,712.54,712.32,20.01 -shl,kernel,2000,13,27816,9,719.74,718.92,20.02 -shl,kernelip,2000,13,13979,9,715.31,715.16,20.05 -shl,floor,2000,13,27165,9,739.43,738.79,20.10 -shl,gmp,2000,13,59530,9,336.75,335.33,20.04 -shl,gmpz,2000,13,58890,9,339.71,339.08,20.03 -shl,auto,2000,77,25834,9,774.29,774.19,20.00 -shl,inplace,2000,77,14036,9,712.67,712.33,20.04 -shl,kernel,2000,77,23551,9,850.12,848.92,20.02 -shl,kernelip,2000,77,12164,9,822.04,822.03,20.00 -shl,floor,2000,77,22953,9,873.19,872.37,20.05 -shl,gmp,2000,77,58624,9,343.71,342.74,20.14 -shl,gmpz,2000,77,58019,9,344.74,344.66,20.00 -shr,auto,1,13,2388164,9,8.38,8.37,20.01 -shr,inplace,1,13,3267229,9,3.07,3.05,20.07 -shr,kernel,1,13,11634106,9,1.71,1.70,19.86 -shr,floor,1,13,8656750,9,2.28,2.27,19.71 -shr,gmp,1,13,10388735,9,1.93,1.93,20.00 -shr,gmpz,1,13,6091114,9,3.27,3.27,19.95 -shr,auto,4,13,1255257,9,15.90,15.83,19.97 -shr,inplace,4,13,2381773,9,4.18,4.16,19.96 -shr,kernel,4,13,5771391,9,3.47,3.47,20.03 -shr,floor,4,13,1785242,9,11.20,11.18,20.00 -shr,gmp,4,13,8430210,9,2.35,2.31,19.79 -shr,gmpz,4,13,5069715,9,3.97,3.95,20.10 -shr,auto,16,13,990091,9,20.24,20.20,20.05 -shr,inplace,16,13,1221984,9,8.18,8.15,19.98 -shr,kernel,16,13,2358801,9,8.50,8.48,20.11 -shr,floor,16,13,1297666,9,15.50,15.34,20.13 -shr,gmp,16,13,4599452,9,4.29,4.29,19.75 -shr,gmpz,16,13,3168474,9,6.20,6.13,19.89 -shr,auto,256,13,149769,9,133.74,133.47,20.03 -shr,inplace,256,13,101932,9,98.24,98.14,20.03 -shr,kernel,256,13,181214,9,110.68,110.24,20.05 -shr,floor,256,13,152999,9,130.97,130.58,20.04 -shr,gmp,256,13,413592,9,48.27,48.00,19.96 -shr,gmpz,256,13,382347,9,51.41,51.21,19.65 -shr,auto,2000,13,25375,9,788.01,787.50,20.00 -shr,inplace,2000,13,14044,9,711.49,711.34,19.98 -shr,kernel,2000,13,24613,9,812.44,812.38,20.00 -shr,floor,2000,13,23987,9,832.49,832.06,19.97 -shr,gmp,2000,13,59495,9,338.84,336.57,20.14 -shr,gmpz,2000,13,58388,9,342.42,341.21,19.99 -shr,auto,2000,77,25317,9,790.00,789.27,20.00 -shr,inplace,2000,77,14046,9,712.05,711.89,20.04 -shr,kernel,2000,77,24094,9,830.10,830.09,20.00 -shr,floor,2000,77,23434,9,852.88,852.52,19.99 -shr,gmp,2000,77,59508,9,338.15,336.70,20.12 -shr,gmpz,2000,77,58487,9,343.51,342.01,20.08 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_seed2a.csv b/tests/beman/big_int/perf/item1/x64r4_new64_seed2a.csv deleted file mode 100644 index 9c79517c..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_new64_seed2a.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:27:04Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=shl,shr bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1538183,9,12.74,12.57,19.60 -shl,inplace,1,13,2869941,9,3.49,3.48,20.00 -shl,kernel,1,13,9626463,9,2.08,2.07,20.03 -shl,kernelip,1,13,5585569,9,1.82,1.73,20.18 -shl,floor,1,13,2077050,9,9.83,9.82,20.43 -shl,gmp,1,13,9497462,9,2.08,2.08,19.76 -shl,gmpz,1,13,6110942,9,3.27,3.27,20.03 -shl,auto,4,13,1478766,9,13.42,13.40,19.87 -shl,inplace,4,13,2279246,9,4.39,4.37,20.04 -shl,kernel,4,13,5698166,9,3.51,3.50,19.98 -shl,kernelip,4,13,3330556,9,2.99,2.94,19.88 -shl,floor,4,13,1773152,9,11.95,11.48,21.03 -shl,gmp,4,13,7885845,9,2.50,2.50,19.77 -shl,gmpz,4,13,4304461,9,4.64,4.63,19.98 -shl,auto,16,13,1194088,9,16.77,16.72,20.02 -shl,inplace,16,13,1152244,9,8.57,8.54,19.80 -shl,kernel,16,13,2440446,9,8.17,8.13,19.94 -shl,kernelip,16,13,1411608,9,7.14,7.05,20.18 -shl,floor,16,13,1320296,9,15.33,15.23,20.23 -shl,gmp,16,13,4767327,9,4.21,4.17,20.09 -shl,gmpz,16,13,3427179,9,5.83,5.83,20.00 -shl,auto,256,13,164275,9,121.80,121.68,20.01 -shl,inplace,256,13,101250,9,98.61,98.47,20.00 -shl,kernel,256,13,211123,9,95.12,94.82,20.09 -shl,kernelip,256,13,101831,9,97.62,97.40,19.89 -shl,floor,256,13,177142,9,117.43,117.22,20.80 -shl,gmp,256,13,422386,9,47.37,47.24,20.01 -shl,gmpz,256,13,400465,9,49.89,49.72,19.99 -shl,auto,2000,13,25860,9,773.44,773.36,20.00 -shl,inplace,2000,13,14031,9,712.52,712.36,20.00 -shl,kernel,2000,13,27813,9,719.12,719.06,20.01 -shl,kernelip,2000,13,13980,9,715.31,715.26,20.00 -shl,floor,2000,13,27183,9,738.88,738.56,20.08 -shl,gmp,2000,13,59636,9,335.42,335.39,20.00 -shl,gmpz,2000,13,58957,9,339.12,337.89,19.99 -shl,auto,2000,77,25828,9,774.30,774.20,20.03 -shl,inplace,2000,77,14024,9,712.54,712.25,19.99 -shl,kernel,2000,77,23449,9,851.39,849.90,19.98 -shl,kernelip,2000,77,12166,9,822.04,822.04,20.02 -shl,floor,2000,77,22970,9,872.79,871.10,20.04 -shl,gmp,2000,77,58927,9,341.34,338.57,20.10 -shl,gmpz,2000,77,58442,9,344.15,343.05,20.10 -shr,auto,1,13,2396017,9,8.36,8.35,20.02 -shr,inplace,1,13,3231181,9,3.08,3.07,19.93 -shr,kernel,1,13,11753628,9,1.70,1.70,20.03 -shr,floor,1,13,8811462,9,2.27,2.27,20.03 -shr,gmp,1,13,10403895,9,1.92,1.92,20.01 -shr,gmpz,1,13,6109661,9,3.28,3.27,20.05 -shr,auto,4,13,1259059,9,15.89,15.82,20.00 -shr,inplace,4,13,2404047,9,4.18,4.16,20.10 -shr,kernel,4,13,5741846,9,3.47,3.47,19.97 -shr,floor,4,13,1767391,9,11.26,11.24,19.90 -shr,gmp,4,13,8590053,9,2.36,2.32,20.22 -shr,gmpz,4,13,5052812,9,3.96,3.94,20.01 -shr,auto,16,13,987790,9,20.27,20.22,20.03 -shr,inplace,16,13,1237067,9,8.17,8.14,20.24 -shr,kernel,16,13,2358901,9,8.48,8.48,20.02 -shr,floor,16,13,1243105,9,15.97,15.90,19.86 -shr,gmp,16,13,4619485,9,4.31,4.31,19.96 -shr,gmpz,16,13,3205944,9,6.24,6.20,20.19 -shr,auto,256,13,150073,9,133.27,133.00,20.00 -shr,inplace,256,13,101620,9,98.43,98.33,20.04 -shr,kernel,256,13,181110,9,110.37,110.27,20.00 -shr,floor,256,13,153290,9,130.43,130.18,20.00 -shr,gmp,256,13,417003,9,48.01,47.93,20.02 -shr,gmpz,256,13,390024,9,51.02,50.92,19.91 -shr,auto,2000,13,25402,9,788.19,787.47,20.04 -shr,inplace,2000,13,14055,9,711.58,711.39,20.00 -shr,kernel,2000,13,24633,9,811.99,811.95,20.02 -shr,floor,2000,13,24046,9,832.11,831.38,20.02 -shr,gmp,2000,13,59579,9,336.15,335.55,20.03 -shr,gmpz,2000,13,59028,9,339.48,338.85,20.06 -shr,auto,2000,77,25288,9,789.73,789.21,19.97 -shr,inplace,2000,77,14047,9,712.14,711.78,20.01 -shr,kernel,2000,77,24094,9,830.10,830.08,20.00 -shr,floor,2000,77,23490,9,850.73,850.40,19.99 -shr,gmp,2000,77,59501,9,336.17,335.97,20.01 -shr,gmpz,2000,77,58937,9,339.46,339.17,20.01 diff --git a/tests/beman/big_int/perf/item1/x64r4_new64_seed2b.csv b/tests/beman/big_int/perf/item1/x64r4_new64_seed2b.csv deleted file mode 100644 index e73272e6..00000000 --- a/tests/beman/big_int/perf/item1/x64r4_new64_seed2b.csv +++ /dev/null @@ -1,82 +0,0 @@ -# gap_sweep date 2026-10-06T18:27:43Z host mborland-MS-7C75 Linux x86_64 -# gap_sweep bin /home/mborland/big-int-item1-base/bin/shape_sweep.new64 seed=2 ops=shl,shr bands=small,medium pin=taskset -c 2 -#const square_long_cutoff=10 karatsuba_cutoff=260 karatsuba_fallback=230 square_karatsuba_cutoff=257 toom_cook_3_cutoff=1600 toom_cook_4_cutoff=4000 toom_cook_6_5_cutoff=4000 toom_cook_8_5_cutoff=6000 square_toom_cook_3_cutoff=4200 square_toom_cook_4_cutoff=6000 square_toom_cook_6_5_cutoff=9000 square_toom_cook_8_5_cutoff=14000 fft_mul_min_limbs=16000 fft_mul_model_num=15 fft_mul_model_den=64 square_fft_min_limbs=8000 square_fft_model_num=75 square_fft_model_den=512 fft_model_log_power=1 fft_model_root_degree=2 fft_cyclic_cutoff=8192 multiply_mod_bnm1_cutoff=16 mul_slice_z0_min=260 mul_slice_z0_num=7 mul_slice_z0_den=4 mul_slice_z1_min=1600 mul_slice_z1_num=3 mul_slice_z1_den=2 mul_slice_z2_min=30000 mul_slice_z2_num=4 mul_slice_z2_den=3 mul_slice_z3_min=0 mul_slice_z3_num=3 mul_slice_z3_den=2 mul_slice_z4_min=0 mul_slice_z4_num=3 mul_slice_z4_den=2 mul_slice_z5_min=0 mul_slice_z5_num=3 mul_slice_z5_den=2 mul_slice_zone_count=3 ifma_multiply_min_limbs=6 ifma_multiply_mid_limbs=8 ifma_multiply_high_limbs=13 ifma_multiply_always_limbs=20 ifma_multiply_min_product_low=900 ifma_multiply_min_product_mid=450 ifma_multiply_min_product_high=330 ifma_square_min_limbs=16 ifma_square_native_max_limbs=256 burnikel_ziegler_cutoff=160 burnikel_ziegler_offset=64 barrett_march_cutoff=512 barrett_march8_cutoff=4096 barrett_quarter_cutoff=49152 barrett_balanced_cutoff=196608 reciprocal_span_cutoff=512 fast_input_basecase_chunks=512 fast_output_basecase_chunks=16 fast_input_charconv_min_chunks=8 fast_output_preinv_min_limbs=98304 ARCH=x86_64 BMI2_ADX=1 AVX512_IFMA=1 SIMD_MUL=1 limb_bits=64 sweep_inline_bits=64 sweep_int_sizeof=16 ndebug=1 optimize=1 isa_bmi2=1 isa_adx=1 isa_avx2=1 isa_avx512f=1 isa_avx512ifma=1 compiler=gcc-14.3.0 via=cmake build_type=RelWithDebInfo cxx_flags=-march=native_-O3__-O2_-g_-DNDEBUG_defs:BEMAN_BIG_INT_SIMD_MUL -op,path,la,lb,reps,rounds,median_ns,min_ns,round_ms_actual -shl,auto,1,13,1574013,9,12.63,12.54,19.90 -shl,inplace,1,13,2869582,9,3.48,3.48,19.99 -shl,kernel,1,13,9626398,9,2.08,2.07,19.99 -shl,kernelip,1,13,5659475,9,1.77,1.72,19.99 -shl,floor,1,13,2077681,9,9.82,9.82,20.41 -shl,gmp,1,13,9626734,9,2.08,1.92,19.87 -shl,gmpz,1,13,6111105,9,3.27,3.27,20.06 -shl,auto,4,13,1481395,9,13.45,13.42,19.92 -shl,inplace,4,13,2276672,9,4.40,4.38,20.03 -shl,kernel,4,13,5703643,9,3.51,3.50,20.04 -shl,kernelip,4,13,3360949,9,2.97,2.95,19.97 -shl,floor,4,13,1775457,9,11.19,11.18,19.88 -shl,gmp,4,13,7991576,9,2.50,2.50,20.03 -shl,gmpz,4,13,4946819,9,4.05,4.04,20.02 -shl,auto,16,13,1189741,9,16.73,16.68,19.92 -shl,inplace,16,13,1158356,9,8.59,8.56,19.92 -shl,kernel,16,13,2680152,9,7.46,7.43,19.98 -shl,kernelip,16,13,1368443,9,7.12,7.04,19.52 -shl,floor,16,13,1339223,9,15.23,15.21,20.40 -shl,gmp,16,13,4815320,9,4.18,4.16,20.19 -shl,gmpz,16,13,3433988,9,5.80,5.80,19.95 -shl,auto,256,13,164296,9,121.82,121.05,20.01 -shl,inplace,256,13,101285,9,98.74,98.66,20.02 -shl,kernel,256,13,211129,9,95.58,94.88,20.17 -shl,kernelip,256,13,102360,9,97.66,97.58,20.00 -shl,floor,256,13,179051,9,116.58,116.47,20.87 -shl,gmp,256,13,424362,9,47.14,47.09,20.01 -shl,gmpz,256,13,398900,9,49.81,49.56,19.87 -shl,auto,2000,13,25849,9,773.69,773.55,20.00 -shl,inplace,2000,13,14035,9,712.46,712.26,20.00 -shl,kernel,2000,13,27787,9,719.01,718.98,19.98 -shl,kernelip,2000,13,13970,9,715.43,715.27,20.00 -shl,floor,2000,13,27130,9,739.42,738.90,20.06 -shl,gmp,2000,13,59639,9,335.38,335.32,20.00 -shl,gmpz,2000,13,58950,9,338.11,337.87,19.94 -shl,auto,2000,77,25823,9,774.47,774.28,20.00 -shl,inplace,2000,77,14033,9,712.69,712.41,20.02 -shl,kernel,2000,77,23570,9,849.67,848.28,20.02 -shl,kernelip,2000,77,12166,9,822.05,822.02,20.00 -shl,floor,2000,77,22947,9,872.77,871.72,20.06 -shl,gmp,2000,77,59286,9,339.29,338.27,20.11 -shl,gmpz,2000,77,58518,9,341.43,340.52,19.98 -shr,auto,1,13,2387258,9,8.35,8.34,19.93 -shr,inplace,1,13,3246180,9,3.09,3.05,20.06 -shr,kernel,1,13,11755384,9,1.70,1.70,20.01 -shr,floor,1,13,8824090,9,2.27,2.27,20.02 -shr,gmp,1,13,10507115,9,1.92,1.91,20.17 -shr,gmpz,1,13,6105395,9,3.27,3.27,20.00 -shr,auto,4,13,1258526,9,15.85,15.81,19.95 -shr,inplace,4,13,2363520,9,4.17,4.16,19.74 -shr,kernel,4,13,5771604,9,3.49,3.47,20.14 -shr,floor,4,13,1785715,9,11.20,11.19,20.00 -shr,gmp,4,13,8524766,9,2.34,2.32,19.99 -shr,gmpz,4,13,5018688,9,3.96,3.95,19.91 -shr,auto,16,13,989128,9,20.24,20.18,20.02 -shr,inplace,16,13,1220471,9,8.14,8.11,19.88 -shr,kernel,16,13,2343265,9,8.50,8.48,19.95 -shr,floor,16,13,1281055,9,15.53,15.43,19.89 -shr,gmp,16,13,4659186,9,4.29,4.29,20.03 -shr,gmpz,16,13,3251518,9,6.18,6.15,20.37 -shr,auto,256,13,149813,9,133.65,133.48,20.03 -shr,inplace,256,13,101914,9,98.20,98.08,20.01 -shr,kernel,256,13,181262,9,110.34,110.18,20.00 -shr,floor,256,13,153295,9,130.57,130.38,20.02 -shr,gmp,256,13,420431,9,47.90,47.57,20.11 -shr,gmpz,256,13,394316,9,50.68,50.55,19.99 -shr,auto,2000,13,25384,9,787.72,787.23,20.00 -shr,inplace,2000,13,14060,9,711.52,711.38,20.02 -shr,kernel,2000,13,24624,9,812.07,812.04,20.02 -shr,floor,2000,13,24031,9,832.03,831.45,19.99 -shr,gmp,2000,13,59585,9,335.67,335.45,20.01 -shr,gmpz,2000,13,58932,9,338.98,338.92,19.99 -shr,auto,2000,77,25289,9,789.63,789.00,19.98 -shr,inplace,2000,77,14047,9,712.20,711.93,20.02 -shr,kernel,2000,77,24148,9,828.31,828.22,20.00 -shr,floor,2000,77,23531,9,850.35,850.06,20.02 -shr,gmp,2000,77,59463,9,336.26,336.13,20.01 -shr,gmpz,2000,77,58955,9,339.21,339.16,20.01 diff --git a/tests/beman/big_int/perf/item1_frontend_results.md b/tests/beman/big_int/perf/item1_frontend_results.md index f69e1c3a..acab01fb 100644 --- a/tests/beman/big_int/perf/item1_frontend_results.md +++ b/tests/beman/big_int/perf/item1_frontend_results.md @@ -60,8 +60,9 @@ benefits without recommending a default. - **Runs.** Before and after binaries were interleaved: seeds 1 and 2, two repeats each, so four runs per binary and machine (`gap_sweep.sh --ops add,sub,shl,shr,mul,sqr,divrem,fromchars --bands small,medium`). Reported values are the median of the four runs; divrem shapes of up to 32 limbs are the mean over the two seeds (the operands change the Knuth D path, see - caveats). Large-band spot checks are 3-round runs per seed. Raw CSVs are in `perf/item1/` - (`x64_*`, `mac_*`; `x64_gcc14_base*` and `x64_gcc14_base{64,128,256}_vecsort_*` are the earlier cf1cf54 baseline runs). + caveats). Large-band spot checks are 3-round runs per seed. The per-run CSVs (183 files) were aggregated and removed; the medians + and means behind every table here are in `perf/item1/` (section 10 lists the files): `final_x64.csv`, `final_m4.csv`, + `study.csv`, `shortcut.csv` and `shift_ab.csv`, each with its build configuration (`#const` keys) in the header. - **Binaries.** Before: harness at cf1cf54 (`base64`). After: `opt_1` (`new64`). The inline-capacity study uses `new64`, `new128`, `new256`, `new512` (`-DBEMAN_BIG_INT_SWEEP_INLINE_BITS`). The `#const` line of every binary was checked (`SIMD_MUL=1`, `ndebug=1`, `sweep_inline_bits`, `sweep_int_sizeof`, x64 `BMI2_ADX=1 AVX512_IFMA=1`, `gcc-14.3.0`), and @@ -71,8 +72,9 @@ benefits without recommending a default. Cells read `before -> after`. `auto/gmpz` is the user-visible gap to GMP (above 1 means `big_int` is slower). The tables are the re-measurement on `opt_1` (the add/sub, shift and single-limb follow-ups and the mul-add fix included): all rows come -from the d689f75 runs (`macr3_*`, `x64r3_*`) except the shl/shr rows, which were re-measured at b823c5f (`macr4_*`, -`x64r4_*`), the commit that changes only the shift code; one interleaved check of add/sub/mul/sqr/divrem at b823c5f found +from the d689f75 runs except the shl/shr rows, which were re-measured at b823c5f, the commit that changes only the shift +code (`final_x64.csv` and `final_m4.csv`: `after_commit` says which; `d689f75_ns` and `first_9145b4e_ns` hold the earlier +measurements); one interleaved check of add/sub/mul/sqr/divrem at b823c5f found nothing else moved. Rows are the median of four runs per binary. An earlier measurement of 9145b4e is described in section 3.6. @@ -265,7 +267,7 @@ M4: (+35%) because `add_n_tail` did not reach the speed of `add_unsigned_spans` on x64; the follow-up loop shape (a plain loop under GCC, the 4-way one under clang) brings it to 581 ns, the baseline. - **Decimal `fromchars` regression is fixed** (it was +8-11% at 64-256 limbs-worth of digits at 9145b4e); see section 3.7 - for the cause. Now x64 `auto` 64x10 2791 -> 2852 ns (+2%), 256x10 28564 -> 27920 (-2%), 2000x10 429k -> 386k (-10%), + for the cause. Now x64 `auto` 64x10 2790 -> 2852 ns (+2%), 256x10 28564 -> 27920 (-2%), 2000x10 429k -> 386k (-10%), 16x10 +0.8%; 10000x10 is -5.3%. M4 is unchanged (<= +-1%). - **In-place shifts (`c <<= s; c >>= s`, per op) after the shift fix (b823c5f).** The history is: the first build (9145b4e, single in-place `lshift_copy`/`rshift_copy` pass) was faster than the baseline on M4 and slower on x64; @@ -302,7 +304,7 @@ M4: - These are the open items for item 2: the x64 GCC in-place shift gap at >= 256 limbs (+5-8%; the baseline in-place path is faster than every variant tried), the sub-nanosecond small add/sub in-place rows on both machines, and the M4 small add `auto` rows (+1.1-1.3 ns). -- **History.** The first measurement (opt_1 at 9145b4e, CSVs `x64_*`/`mac_*`) showed x64 add/sub `inplace` +23..+35% at +- **History.** The first measurement (opt_1 at 9145b4e, the `first_9145b4e_ns` column) showed x64 add/sub `inplace` +23..+35% at >= 64 limbs, decimal `fromchars` +8-11%, and in-place shifts +10-13% on x64 but -30..-35% on M4. The follow-ups fixed the first two and the add/sub `auto` rows improved a further 20-26%; the in-place shift change in d689f75 traded the x64 result for an M4 loss, and b823c5f (revert plus per-compiler loops) restored the M4 result and kept most of the x64 one. @@ -557,6 +559,9 @@ The A/B was not repeated on d689f75. ## 7. Inline-capacity study +**Decision (2026-10-06): the default inline capacity stays at 64 bits (`big_int`, one limb).** The data below (`study.csv`) +is kept for reference. + Measured on the 9145b4e tree (before the add/sub, shift and single-limb follow-ups and the mul-add fix); the study was not repeated on d689f75, so small add/sub/shift rows are a few ns better there at every N. The same front-end code with the inline capacity of the integer type set to N = 64 (`big_int`), 128, 256 and 512 bits. @@ -745,14 +750,30 @@ tools/gap_sweep.sh out.csv --seed S --ops add,sub,shl,shr,mul,sqr,divrem,f # mul 2000x2000 and 16384x16384; divrem 4096x2048; tochars/fromchars 10000x10 # study: tools/gap_sweep.sh out.csv --seed S --ops add,sub,shl,shr,mul,sqr,divrem --bands small # tools/gap_sweep.sh out.csv --ops vecsort --bands medium -# tables: python3 -I tools/item1_tables.py item1 x64r3 (x64, mac, macr3 for the other sets) [small medium spots shortcut study] -# regression check (rows more than 3% slower than base64): python3 -I tools/item1_regress.py item1 x64r3 3 [rows] -# in-place shift A/B tables: python3 -I tools/item1_vshift.py item1 x64 (or: mac) +# raw per-run CSVs (named __seed.csv etc.) are written by tools/item1_bench.sh and by the +# re-measurement and A/B variants of it into any directory; they are not kept in the repository. Tables, the regression +# check and the summaries are produced from such a directory: +# tables: python3 -I tools/item1_tables.py x64r3 (x64, mac, macr3 for the other sets) [small medium spots shortcut study] +# regression check (rows more than 3% slower than base64): python3 -I tools/item1_regress.py x64r3 3 [rows] +# in-place shift A/B tables: python3 -I tools/item1_vshift.py x64 (or: mac) +# the summary CSVs kept in perf/item1: python3 -I tools/item1_summary.py perf/item1 # re-measurement driver (base64 vs new64 vs previous build): the same loop as tools/item1_bench.sh over # --ops add,sub,shl,shr,mul,sqr,divrem,fromchars,tochars --bands small,medium # allocation counts: cmake --build --target beman.big_int.tests.alloc_count; run the binary and read the # "[alloc_count]" lines ``` +Kept data files in `perf/item1/` (medians as used by the tables above; ns per operation; the header comments hold the +build configuration): + +| file | content | +|---|---| +| `final_x64.csv`, `final_m4.csv` | op, shape, row, `base_ns` (cf1cf54), `first_9145b4e_ns`, `d689f75_ns`, `after_ns`, `after_commit`; small and medium bands and the large spot checks (sections 3-4) | +| `study.csv` | machine, inline_bits, op, shape, row, ns, including the vecsort rows (section 7) | +| `shortcut.csv` | machine, op, shape, row, `on_ns`, `off_ns` (section 6) | +| `shift_ab.csv` | machine, variant, op, shape, row, ns (section 3.8) | + +The raw-run figures quoted in section 8 (individual-run noise values) come from per-run CSVs that are not kept. + The shortcut comparison builds a copy of the tree with `mul_header_basecase_enabled = false` in `include/beman/big_int/detail/mul_impl.hpp` and otherwise identical flags. diff --git a/tests/beman/big_int/perf/tools/README.md b/tests/beman/big_int/perf/tools/README.md index 49695e86..f64cc768 100644 --- a/tests/beman/big_int/perf/tools/README.md +++ b/tests/beman/big_int/perf/tools/README.md @@ -18,6 +18,7 @@ of the CMake build or the test suite. | `compare.py` | `compare.py [heat\|tables]`: the report's cross-configuration tables (comma-separated CSV lists average seeds). | | `probe_tables.py` | `probe_tables.py [n] [opt]`: the report's probe table (cycles/limb per compiler, M4 ns/limb x 4.47). | | `item1_bench.sh` / `item1_tables.py` | The item 1 before/after driver (`item1_bench.sh [pin]`, needs binaries `shape_sweep.{base64,new64,new128,new256,new512,nosc64}`) and the tables for [`../item1_frontend_results.md`](../item1_frontend_results.md) (`python3 -I item1_tables.py [small medium spots shortcut study]`). | +| `item1_regress.py` / `item1_vshift.py` / `item1_summary.py` | Regression check (rows more than 3% slower than `base64`), the in-place shift A/B tables, and the aggregation of the raw per-run CSVs into the summary CSVs kept in `../item1/` (`final_x64.csv`, `final_m4.csv`, `study.csv`, `shortcut.csv`, `shift_ab.csv`). The raw per-run CSVs are not kept in the repository. | | `bucket_tables.py` | `bucket_tables.py `: compact profile table plus the "time saved if linear helpers ran at GMP speed" estimate. | | `prof.sh` | `prof.sh [filter]` (Linux x86-64, `perf`, `kernel.perf_event_paranoid<=1`): LBR profiles and flame graphs for the report's 12 shapes. Env: `FLAMEGRAPH_DIR` (default `$HOME/FlameGraph`), `PIN`, `MINW`, `LABEL`, `SEED`. | | `classify.py` | `classify.py > buckets.md`: buckets the folded stacks from `prof.sh` by the frame nearest the leaf and scales by the median. | diff --git a/tests/beman/big_int/perf/tools/item1_summary.py b/tests/beman/big_int/perf/tools/item1_summary.py new file mode 100644 index 00000000..9d082dbf --- /dev/null +++ b/tests/beman/big_int/perf/tools/item1_summary.py @@ -0,0 +1,165 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# SPDX-License-Identifier: BSL-1.0 +# item1_summary.py +# Aggregates the raw per-run CSVs written by item1_bench.sh (and the re-measurement and A/B variants of it) into the +# summary CSVs kept under perf/item1: final_x64.csv, final_m4.csv, study.csv, shortcut.csv, shift_ab.csv. Aggregation is +# the one item1_tables.py uses for the tables of item1_frontend_results.md (median of runs; divrem up to 32 limbs: mean +# of seeds). The raw inputs are named __seed.csv (sweeps), __spot_seed.csv, +# __big.csv (131072x13 shift spot), __shortcut_run.csv, +# _study_run.csv, _study_vecsort_run.csv and _vshift__run.csv. +# Run with python3 -I. +import glob +import os +import statistics +import sys +from collections import defaultdict + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +import item1_tables as t # noqa: E402 + +KEYS = ["sweep_inline_bits", "sweep_int_sizeof", "ARCH", "BMI2_ADX", "AVX512_IFMA", "SIMD_MUL", "limb_bits", "ndebug", + "compiler", "build_type", "cxx_flags"] # fmt: skip + + +def const_keys(path): + """The provenance keys of the first #const line of a raw CSV, as one 'key=value ...' string.""" + with open(path) as f: + for line in f: + if line.startswith("#const"): + kv = dict(tok.split("=", 1) for tok in line.split()[1:] if "=" in tok) + return " ".join(f"{k}={kv[k]}" for k in KEYS if k in kv) + return "" + + +def fmt(v): + return "" if v is None else f"{v:.2f}" + + +def big_runs(d, prefix, variant): + out = defaultdict(list) + for p in sorted(glob.glob(os.path.join(d, f"{prefix}_{variant}_big*.csv"))): + for k, v in t.load(p).items(): + out[k].append(v) + return {k: statistics.median(v) for k, v in out.items()} + + +def final(d, out, machine, pfirst, pr3, pr4): + """pfirst: 9145b4e measurement; pr3: d689f75 re-measurement; pr4: b823c5f shift re-measurement.""" + base3, new3 = t.sweep_runs(d, pr3, "base64"), t.sweep_runs(d, pr3, "new64") + base4, new4 = t.sweep_runs(d, pr4, "base64"), t.sweep_runs(d, pr4, "new64") + first = t.sweep_runs(d, pfirst, "new64") + sbase3, snew3 = t.spot_runs(d, pr3, "base64"), t.spot_runs(d, pr3, "new64") + sfirst = t.spot_runs(d, pfirst, "new64") + bbase4, bnew4 = big_runs(d, pr4, "base64"), big_runs(d, pr4, "new64") + rows = [] + keys = set(base3) | set(base4) | set(sbase3) | set(bbase4) + for key in sorted(keys, key=lambda k: (k[0], k[1], k[2], k[3])): + op, la, lb, row = key + shift = op in ("shl", "shr") + if key in bbase4: + base, after, d689, commit = bbase4[key], bnew4.get(key), None, "b823c5f" + nine = None + elif shift and key in base4: + base, after, d689, commit = t.agg(base4, key), t.agg(new4, key), t.agg(new3, key), "b823c5f" + nine = t.agg(first, key) + elif key in base3: + base, after, d689, commit = t.agg(base3, key), t.agg(new3, key), t.agg(new3, key), "d689f75" + nine = t.agg(first, key) + else: + base, after, d689, commit = t.agg(sbase3, key), t.agg(snew3, key), t.agg(snew3, key), "d689f75" + nine = t.agg(sfirst, key) + if base is None and after is None: + continue + rows.append((op, f"{la}x{lb}", row, fmt(base), fmt(nine), fmt(d689), fmt(after), commit)) + path = os.path.join(out, f"final_{machine}.csv") + with open(path, "w") as f: + f.write(f"# item 1 before/after medians, {machine}; ns per operation (vecsort and the study are in study.csv)\n") + f.write("# base_ns: cf1cf54 harness (base64); first_9145b4e_ns: first measurement of opt_1; d689f75_ns: re-measurement;\n") + f.write("# after_ns: final value (b823c5f for shl/shr, d689f75 for the other ops); empty cells were not measured\n") + f.write("# aggregation: median of the runs, divrem up to 32 limbs the mean of seeds 1 and 2; shl/shr base_ns from the\n") + f.write("# b823c5f runs; spots (large band, 3-round runs) are medians of two seeds\n") + for lab, pre, var in (("base64", pr3, "base64"), ("after", pr3, "new64"), ("after_shifts", pr4, "new64")): + probe = sorted(glob.glob(os.path.join(d, f"{pre}_{var}_seed*.csv"))) + if probe: + f.write(f"# {lab}: {const_keys(probe[0])}\n") + f.write("op,shape,row,base_ns,first_9145b4e_ns,d689f75_ns,after_ns,after_commit\n") + for r in rows: + f.write(",".join(r) + "\n") + return path + + +def study(d, out): + path = os.path.join(out, "study.csv") + with open(path, "w") as f: + f.write("# inline-capacity study (opt_1 at 9145b4e, before the add/sub/shift/single-limb follow-ups); ns per operation\n") + f.write("# (vecsort: ns per element for 100000 one-limb values, rows auto/builtin/copy); median of two runs (seeds 1 and 2,\n") + f.write("# divrem the mean of seeds); small band, add/sub/shl/shr/mul/sqr/divrem\n") + for machine, pre in (("x64", "x64"), ("m4", "mac")): + for n in (64, 128, 256, 512): + probe = sorted(glob.glob(os.path.join(d, f"{pre}_study{n}_run1.csv"))) + if probe: + f.write(f"# {machine} N={n}: {const_keys(probe[0])}\n") + f.write("machine,inline_bits,op,shape,row,ns\n") + for machine, pre in (("x64", "x64"), ("m4", "mac")): + for n in (64, 128, 256, 512): + files = [(os.path.basename(p).split("_run")[1].split(".")[0], p) + for p in sorted(glob.glob(os.path.join(d, f"{pre}_study{n}_run*.csv"))) if "vecsort" not in p] + runs = t.collect(files) + for key in sorted(runs): + f.write(f"{machine},{n},{key[0]},{key[1]}x{key[2]},{key[3]},{fmt(t.agg(runs, key))}\n") + vfiles = [(os.path.basename(p).split("_run")[1].split(".")[0], p) + for p in sorted(glob.glob(os.path.join(d, f"{pre}_study{n}_vecsort_run*.csv")))] + vruns = t.collect(vfiles) + for key in sorted(vruns): + f.write(f"{machine},{n},{key[0]},{key[1]}x{key[2]},{key[3]},{fmt(t.agg(vruns, key))}\n") + return path + + +def shortcut(d, out): + path = os.path.join(out, "shortcut.csv") + with open(path, "w") as f: + f.write("# mul_header_basecase_enabled A/B (opt_1 at 9145b4e; the 'off' build is a scratch copy with the constant\n") + f.write("# set to false, not committed); ns per operation, median of three interleaved runs\n") + f.write("machine,op,shape,row,on_ns,off_ns\n") + for machine, pre in (("x64", "x64"), ("m4", "mac")): + res = {} + for v in ("new64", "nosc64"): + files = [(os.path.basename(p), p) for p in sorted(glob.glob(os.path.join(d, f"{pre}_{v}_shortcut_run*.csv")))] + res[v] = t.collect(files) + for key in sorted(res["new64"]): + on = [x for _, x in res["new64"][key]] + off = [x for _, x in res["nosc64"].get(key, [])] + if on and off: + f.write(f"{machine},{key[0]},{key[1]}x{key[2]},{key[3]},{statistics.median(on):.2f},{statistics.median(off):.2f}\n") + return path + + +def shift_ab(d, out): + path = os.path.join(out, "shift_ab.csv") + with open(path, "w") as f: + f.write("# in-place shift A/B (variants built from scratch copies of d689f75; new64 = d689f75, v1 = revert of 2f9150b,\n") + f.write("# v2 = v1 + register-carried lshift_copy/rshift_copy loops, v3 = v2 with funnel_shl/funnel_shr); ns per operation,\n") + f.write("# median of three interleaved runs; same compiler and flags as new64 (see final_*.csv)\n") + f.write("machine,variant,op,shape,row,ns\n") + for machine, pre in (("x64", "x64"), ("m4", "mac")): + for v in ("base64", "new64", "v1", "v2", "v3"): + data = defaultdict(list) + for p in sorted(glob.glob(os.path.join(d, f"{pre}_vshift_{v}_run*.csv"))): + for k, val in t.load(p).items(): + data[k].append(val) + for key in sorted(data): + f.write(f"{machine},{v},{key[0]},{key[1]}x{key[2]},{key[3]},{statistics.median(data[key]):.2f}\n") + return path + + +def main(): + d, out = sys.argv[1], sys.argv[2] + os.makedirs(out, exist_ok=True) + for p in (final(d, out, "x64", "x64", "x64r3", "x64r4"), final(d, out, "m4", "mac", "macr3", "macr4"), + study(d, out), shortcut(d, out), shift_ab(d, out)): + print(p, os.path.getsize(p)) + + +if __name__ == "__main__": + main() From 8e84db37c473a59c520d3f90f267ad2c00e00881 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Tue, 6 Oct 2026 15:34:45 -0400 Subject: [PATCH 35/36] Fix MSVC /W4 /WX errors in the item 1 code and tests C4459: rename the add_in_place/add_into local span alias (span_t -> limb_view) so it cannot hide a user's global, and the span_primitives test's max_limb, which hid a wide_ops local. C4146: no unary minus on uint64_t in muldiv_frontend. C4127 (VS 2022): if constexpr for the inline-capacity check in alloc_count. --- include/beman/big_int/basic_big_int.hpp | 20 ++++++++++---------- tests/beman/big_int/alloc_count.test.cpp | 5 +++-- tests/beman/big_int/muldiv_frontend.test.cpp | 5 +++-- tests/beman/big_int/span_primitives.test.cpp | 10 +++++----- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/include/beman/big_int/basic_big_int.hpp b/include/beman/big_int/basic_big_int.hpp index dfe02346..92f822b8 100644 --- a/include/beman/big_int/basic_big_int.hpp +++ b/include/beman/big_int/basic_big_int.hpp @@ -2367,8 +2367,8 @@ template constexpr void basic_big_int::add_in_place(const std::span other_in, const bool other_neg) { - using span_t = std::span; - const span_t other = other_in.first(detail::trimmed_size_span(other_in)); + using limb_view = std::span; + const limb_view other = other_in.first(detail::trimmed_size_span(other_in)); const bool this_neg = is_negative(); const std::size_t n = limb_count(); const std::size_t m = other.size(); @@ -2423,7 +2423,7 @@ basic_big_int::add_in_place(const std::span::add_into(const std::span b_in, bool b_neg) { - using span_t = std::span; - span_t a = a_in.first(detail::trimmed_size_span(a_in)); - span_t bs = b_in.first(detail::trimmed_size_span(b_in)); + using limb_view = std::span; + limb_view a = a_in.first(detail::trimmed_size_span(a_in)); + limb_view bs = b_in.first(detail::trimmed_size_span(b_in)); if (a.size() < bs.size()) { std::swap(a, bs); std::swap(a_neg, b_neg); @@ -2521,10 +2521,10 @@ constexpr void basic_big_int::add_into(const std::span(int_t::inplace_capacity)); GTEST_SKIP() << "the 2-limb quotient only fits inline at inline capacity >= 2"; + } else { + ALLOC_EXPECT(TypeParam, "c = a / b (2x1, inline q)", n, 0.0, (baseline_counts{1.0, 1.0, 0.0, -1.0, -1.0})); } - ALLOC_EXPECT(TypeParam, "c = a / b (2x1, inline q)", n, 0.0, (baseline_counts{1.0, 1.0, 0.0, -1.0, -1.0})); } // Stretch: in the schoolbook band the quotient could be built in the object's own limbs. diff --git a/tests/beman/big_int/muldiv_frontend.test.cpp b/tests/beman/big_int/muldiv_frontend.test.cpp index 82b6763f..477683f7 100644 --- a/tests/beman/big_int/muldiv_frontend.test.cpp +++ b/tests/beman/big_int/muldiv_frontend.test.cpp @@ -400,8 +400,9 @@ TEST(MulDivFrontend, CompoundWithIntegers) { for (const std::int64_t v : {std::int64_t{3}, std::int64_t{-7}, std::int64_t{1} << 40, std::numeric_limits::max()}) { // The 64-bit magnitude split into limbs of whatever width the build uses. - const std::uint64_t vmag = v < 0 ? -static_cast(v) : static_cast(v); - limbs_t vm; + const std::uint64_t vmag = + v < 0 ? std::uint64_t{0} - static_cast(v) : static_cast(v); + limbs_t vm; for (std::size_t sh = 0; sh < 64; sh += limb_bits) { vm.push_back(to_limb(vmag >> sh)); } diff --git a/tests/beman/big_int/span_primitives.test.cpp b/tests/beman/big_int/span_primitives.test.cpp index 240e3558..7c1ce014 100644 --- a/tests/beman/big_int/span_primitives.test.cpp +++ b/tests/beman/big_int/span_primitives.test.cpp @@ -20,7 +20,7 @@ namespace { using limb = bb::uint_multiprecision_t; constexpr unsigned limb_width = static_cast(std::numeric_limits::digits); -constexpr limb max_limb = std::numeric_limits::max(); +constexpr limb limb_max = std::numeric_limits::max(); // Converts without a cast when the types already agree (GCC's -Wuseless-cast), and with one otherwise. template @@ -80,7 +80,7 @@ limb pick(std::mt19937_64& rng) { case 0: return 0; case 1: - return max_limb; + return limb_max; case 2: return 1; default: @@ -108,7 +108,7 @@ void check_addsub(const bool in_place) { std::vector b = random_limbs(rng, n); if (trial % 7 == 0) { // long carry / borrow ripples for (auto& x : a) { - x = Sub ? limb{0} : max_limb; + x = Sub ? limb{0} : limb_max; } if (n != 0) { b[0] = 1; @@ -234,7 +234,7 @@ TEST(SpanPrimitives, RshiftCopyOverlapping) { check_shift_overlap(false); } namespace { consteval bool constexpr_primitives() { - std::array a{max_limb, max_limb, max_limb, max_limb, 5}; + std::array a{limb_max, limb_max, limb_max, limb_max, 5}; std::array b{1, 0}; std::array dst{}; // a + b: the carry ripples through four limbs. @@ -249,7 +249,7 @@ consteval bool constexpr_primitives() { // 0 - 1 borrows out of the top. std::array z{}; std::array one{1, 0}; - if (!bb::detail::sub_n_tail(z, std::array{}, one) || z[0] != max_limb || z[1] != max_limb) { + if (!bb::detail::sub_n_tail(z, std::array{}, one) || z[0] != limb_max || z[1] != limb_max) { return false; } // Shifts round-trip. From 8957eca27ec5a7ae91e0af59d94795fe46cf0a7d Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Fri, 9 Oct 2026 08:28:34 -0400 Subject: [PATCH 36/36] Fix flag forking --- include/beman/big_int/basic_big_int.hpp | 2 +- include/beman/big_int/detail/config.hpp | 6 ++++++ include/beman/big_int/detail/mul_impl.hpp | 7 +++---- include/beman/big_int/detail/span_ops.hpp | 8 ++++---- tests/beman/big_int/perf/shape_sweep.cpp | 4 ++-- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/include/beman/big_int/basic_big_int.hpp b/include/beman/big_int/basic_big_int.hpp index 92f822b8..99d642b4 100644 --- a/include/beman/big_int/basic_big_int.hpp +++ b/include/beman/big_int/basic_big_int.hpp @@ -3478,7 +3478,7 @@ constexpr auto basic_big_int::storage_for_overwrite(const size_type n) const size_type new_cap = std::min(std::max(n, 2 * current_cap), max_limbs); const alloc_result allocation = alloc_limbs(new_cap); if BEMAN_BIG_INT_IS_NOT_CONSTEVAL { -#ifndef NDEBUG +#ifdef BEMAN_BIG_INT_DEBUG std::uninitialized_fill_n(allocation.ptr, allocation.count, limb_type{~limb_type{0} / 0xFF * 0xA5}); #endif } else { diff --git a/include/beman/big_int/detail/config.hpp b/include/beman/big_int/detail/config.hpp index c41aa589..3f9ec1fa 100644 --- a/include/beman/big_int/detail/config.hpp +++ b/include/beman/big_int/detail/config.hpp @@ -1080,7 +1080,13 @@ BEMAN_BIG_INT_END_NAMESPACE // GCOVR_EXCL_STOP // LCOV_EXCL_STOP +// BEMAN_BIG_INT_DEBUG is defined when NDEBUG is not. Debug-only code, such as +// BEMAN_BIG_INT_DEBUG_ASSERT, tests it instead of NDEBUG. #ifndef NDEBUG + #define BEMAN_BIG_INT_DEBUG 1 +#endif + +#ifdef BEMAN_BIG_INT_DEBUG #define BEMAN_BIG_INT_DEBUG_ASSERT(...) BEMAN_BIG_INT_ASSERT(__VA_ARGS__) #else // The requires expression makes sure that we still check for expression validity, diff --git a/include/beman/big_int/detail/mul_impl.hpp b/include/beman/big_int/detail/mul_impl.hpp index c4a11253..b7afb66d 100644 --- a/include/beman/big_int/detail/mul_impl.hpp +++ b/include/beman/big_int/detail/mul_impl.hpp @@ -1371,10 +1371,9 @@ std::size_t multiply_runtime_any(std::span result, inline constexpr bool mul_header_basecase_enabled = true; // Operand length below which multiply_dispatch calls multiply_basecase_runtime -// instead of building the scratch hooks and entering the ladder. A fixed -// constant, deliberately not an arch cutoff: AUTO-mode ISA macros can differ -// between a user TU and the library. src/mul_dispatch.cpp static_asserts that -// it is at most every Karatsuba cutoff of the compiled configuration. +// instead of building the scratch hooks and entering the ladder. One constant +// for every configuration; src/mul_dispatch.cpp static_asserts that it is at +// most every Karatsuba cutoff of the compiled configuration. inline constexpr std::size_t mul_header_basecase_limbs = 32; // Product (or square, when a and b are the same span) of trimmed operands with diff --git a/include/beman/big_int/detail/span_ops.hpp b/include/beman/big_int/detail/span_ops.hpp index 5254b6aa..b091be8b 100644 --- a/include/beman/big_int/detail/span_ops.hpp +++ b/include/beman/big_int/detail/span_ops.hpp @@ -1169,7 +1169,7 @@ struct subsystem_signs { const std::size_t total = a.size(); bool carry = false; std::size_t i = 0; -#if !defined(__GNUC__) || defined(__clang__) +#ifndef BEMAN_BIG_INT_GCC // GCC re-materializes the carry flag per limb in an unrolled chain and runs the one-limb loop below faster. for (; i + 4 <= common; i += 4) { const auto [v0, c0] = carrying_add(a[i + 0], b[i + 0], carry); @@ -1212,7 +1212,7 @@ struct subsystem_signs { const std::size_t total = a.size(); bool borrow = false; std::size_t i = 0; -#if !defined(__GNUC__) || defined(__clang__) +#ifndef BEMAN_BIG_INT_GCC for (; i + 4 <= common; i += 4) { const auto [v0, b0] = borrowing_sub(a[i + 0], b[i + 0], borrow); const auto [v1, b1] = borrowing_sub(a[i + 1], b[i + 1], b0); @@ -1257,7 +1257,7 @@ constexpr uint_multiprecision_t lshift_copy(uint_multiprecision_t* const d return 0; } const unsigned back = limb_bits - bits; -#if defined(__GNUC__) && !defined(__clang__) +#ifdef BEMAN_BIG_INT_GCC // GCC reloads src[i - 1] each iteration when dst may alias src; carry it in a register. // Clang compiles the two-load form below better. uint_multiprecision_t hi = src[n - 1]; @@ -1291,7 +1291,7 @@ constexpr uint_multiprecision_t rshift_copy(uint_multiprecision_t* const d return 0; } const unsigned back = limb_bits - bits; -#if defined(__GNUC__) && !defined(__clang__) +#ifdef BEMAN_BIG_INT_GCC // See lshift_copy. uint_multiprecision_t lo = src[0]; const uint_multiprecision_t out = lo << back; diff --git a/tests/beman/big_int/perf/shape_sweep.cpp b/tests/beman/big_int/perf/shape_sweep.cpp index 3f2b1588..5703a470 100644 --- a/tests/beman/big_int/perf/shape_sweep.cpp +++ b/tests/beman/big_int/perf/shape_sweep.cpp @@ -2015,7 +2015,7 @@ void run_vecsort(const options& opt, const std::size_t n, const std::size_t valu const auto sh = shape_str(n, 1); const double scale = 1.0 / static_cast(n); -#if defined(__SIZEOF_INT128__) +#ifdef BEMAN_BIG_INT_HAS_INT128_EXTENSION __int128 ref_sum = 0; for (const auto x : raw) { ref_sum += x; @@ -2055,7 +2055,7 @@ void run_vecsort(const options& opt, const std::size_t n, const std::size_t valu fail("vecsort auto: element " + std::to_string(i) + " out of order at " + sh); } } -#if defined(__SIZEOF_INT128__) +#ifdef BEMAN_BIG_INT_HAS_INT128_EXTENSION if (!(total == want_total)) { fail("vecsort auto: wrong sum at " + sh); }