From: tornaria <tornaria@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: [PR PATCH] New package: zn_poly-0.9.2
Date: Tue, 09 Nov 2021 02:24:59 +0100 [thread overview]
Message-ID: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-33969@inbox.vuxu.org> (raw)
[-- Attachment #1: Type: text/plain, Size: 645 bytes --]
There is a new pull request by tornaria against master on the void-packages repository
https://github.com/tornaria/void-packages zn_poly
https://github.com/void-linux/void-packages/pull/33969
New package: zn_poly-0.9.2
Dependency for sage. I compiled sage-9.4 using this.
I run tuning in my box, once in 64 bit mode, once in 32 bit mode, and hardcoded the resulting tuning files. Won't be optimal for all cpus, particularly for non-x86, but it seems a fair solution and avoids running tuning each time. Tuning won't work for cross compiling anyway.
A patch file from https://github.com/void-linux/void-packages/pull/33969.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-zn_poly-33969.patch --]
[-- Type: text/x-diff, Size: 61814 bytes --]
From 1d3c308df5307cad2f353c7b1af2395d495b109d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Sun, 29 Aug 2021 20:05:24 -0300
Subject: [PATCH] New package: zn_poly-0.9.2
---
srcpkgs/zn_poly/files/tuning-32.c | 444 +++++++++++++++
srcpkgs/zn_poly/files/tuning-64.c | 860 ++++++++++++++++++++++++++++++
srcpkgs/zn_poly/template | 32 ++
3 files changed, 1336 insertions(+)
create mode 100644 srcpkgs/zn_poly/files/tuning-32.c
create mode 100644 srcpkgs/zn_poly/files/tuning-64.c
create mode 100644 srcpkgs/zn_poly/template
diff --git a/srcpkgs/zn_poly/files/tuning-32.c b/srcpkgs/zn_poly/files/tuning-32.c
new file mode 100644
index 000000000000..18396ce3d444
--- /dev/null
+++ b/srcpkgs/zn_poly/files/tuning-32.c
@@ -0,0 +1,444 @@
+/*
+ NOTE: do not edit this file! It is auto-generated by the "tune" program.
+ (Run "make tune" and then "./tune > tuning.c" to regenerate it.)
+*/
+
+/*
+ tuning.c: global tuning values
+
+ Copyright (C) 2007, 2008, David Harvey
+
+ This file is part of the zn_poly library (version 0.9).
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) version 3 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "zn_poly_internal.h"
+
+size_t ZNP_mpn_smp_kara_thresh = 43;
+size_t ZNP_mpn_mulmid_fallback_thresh = 551;
+
+tuning_info_t tuning_info[] =
+{
+ { // bits = 0
+ },
+ { // bits = 1
+ },
+ { // bits = 2
+ 47, // KS1 -> KS2 multiplication threshold
+ 1053, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 43, // KS1 -> KS2 squaring threshold
+ 1053, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 56, // KS1 -> KS2 middle product threshold
+ 689, // KS2 -> KS4 middle product threshold
+ 23040, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 3
+ 39, // KS1 -> KS2 multiplication threshold
+ 412, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 39, // KS1 -> KS2 squaring threshold
+ 315, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 43, // KS1 -> KS2 middle product threshold
+ 264, // KS2 -> KS4 middle product threshold
+ 23040, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 12 // nussbaumer squaring threshold
+ },
+ { // bits = 4
+ 39, // KS1 -> KS2 multiplication threshold
+ 901, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 33, // KS1 -> KS2 squaring threshold
+ 901, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 43, // KS1 -> KS2 middle product threshold
+ 185, // KS2 -> KS4 middle product threshold
+ 23040, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 5
+ 35, // KS1 -> KS2 multiplication threshold
+ 264, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 31, // KS1 -> KS2 squaring threshold
+ 264, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 35, // KS1 -> KS2 middle product threshold
+ 144, // KS2 -> KS4 middle product threshold
+ 21569, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 6
+ 33, // KS1 -> KS2 multiplication threshold
+ 247, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 31, // KS1 -> KS2 squaring threshold
+ 173, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 33, // KS1 -> KS2 middle product threshold
+ 116, // KS2 -> KS4 middle product threshold
+ 14044, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 12 // nussbaumer squaring threshold
+ },
+ { // bits = 7
+ 33, // KS1 -> KS2 multiplication threshold
+ 247, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 23, // KS1 -> KS2 squaring threshold
+ 226, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 33, // KS1 -> KS2 middle product threshold
+ 116, // KS2 -> KS4 middle product threshold
+ 12720, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 8
+ 27, // KS1 -> KS2 multiplication threshold
+ 123, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 21, // KS1 -> KS2 squaring threshold
+ 112, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 33, // KS1 -> KS2 middle product threshold
+ 94, // KS2 -> KS4 middle product threshold
+ 7753, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 9
+ 24, // KS1 -> KS2 multiplication threshold
+ 206, // KS2 -> KS4 multiplication threshold
+ 62020, // KS4 -> FFT multiplication threshold
+ 21, // KS1 -> KS2 squaring threshold
+ 158, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 27, // KS1 -> KS2 middle product threshold
+ 86, // KS2 -> KS4 middle product threshold
+ 9451, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 10
+ 25, // KS1 -> KS2 multiplication threshold
+ 86, // KS2 -> KS4 multiplication threshold
+ 68475, // KS4 -> FFT multiplication threshold
+ 17, // KS1 -> KS2 squaring threshold
+ 66, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 24, // KS1 -> KS2 middle product threshold
+ 70, // KS2 -> KS4 middle product threshold
+ 4726, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 11
+ 23, // KS1 -> KS2 multiplication threshold
+ 134, // KS2 -> KS4 multiplication threshold
+ 62020, // KS4 -> FFT multiplication threshold
+ 21, // KS1 -> KS2 squaring threshold
+ 107, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 23, // KS1 -> KS2 middle product threshold
+ 75, // KS2 -> KS4 middle product threshold
+ 5393, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 12
+ 17, // KS1 -> KS2 multiplication threshold
+ 78, // KS2 -> KS4 multiplication threshold
+ 75603, // KS4 -> FFT multiplication threshold
+ 16, // KS1 -> KS2 squaring threshold
+ 72, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 19, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 4280, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 13
+ 17, // KS1 -> KS2 multiplication threshold
+ 86, // KS2 -> KS4 multiplication threshold
+ 56173, // KS4 -> FFT multiplication threshold
+ 14, // KS1 -> KS2 squaring threshold
+ 78, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 19, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 4726, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 14
+ 19, // KS1 -> KS2 multiplication threshold
+ 66, // KS2 -> KS4 multiplication threshold
+ 62020, // KS4 -> FFT multiplication threshold
+ 16, // KS1 -> KS2 squaring threshold
+ 62, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 21, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 15
+ 16, // KS1 -> KS2 multiplication threshold
+ 67, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 13, // KS1 -> KS2 squaring threshold
+ 43, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 51, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 16
+ 14, // KS1 -> KS2 multiplication threshold
+ 66, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 13, // KS1 -> KS2 squaring threshold
+ 56, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 54, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 17
+ 14, // KS1 -> KS2 multiplication threshold
+ 47, // KS2 -> KS4 multiplication threshold
+ 50877, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 33, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 47, // KS2 -> KS4 middle product threshold
+ 3077, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 18
+ 13, // KS1 -> KS2 multiplication threshold
+ 47, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 13, // KS1 -> KS2 squaring threshold
+ 33, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 14, // KS1 -> KS2 middle product threshold
+ 47, // KS2 -> KS4 middle product threshold
+ 3077, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 19
+ 13, // KS1 -> KS2 multiplication threshold
+ 31, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 27, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 38, // KS2 -> KS4 middle product threshold
+ 2363, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 20
+ 12, // KS1 -> KS2 multiplication threshold
+ 43, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 33, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 39, // KS2 -> KS4 middle product threshold
+ 2363, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 21
+ 13, // KS1 -> KS2 multiplication threshold
+ 32, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 25, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 35, // KS2 -> KS4 middle product threshold
+ 1756, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 22
+ 12, // KS1 -> KS2 multiplication threshold
+ 31, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 24, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 35, // KS2 -> KS4 middle product threshold
+ 2071, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 23
+ 12, // KS1 -> KS2 multiplication threshold
+ 24, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 21, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 27, // KS2 -> KS4 middle product threshold
+ 1539, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 24
+ 9, // KS1 -> KS2 multiplication threshold
+ 28, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 23, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 29, // KS2 -> KS4 middle product threshold
+ 1756, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 25
+ 12, // KS1 -> KS2 multiplication threshold
+ 21, // KS2 -> KS4 multiplication threshold
+ 25439, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 21, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 25, // KS2 -> KS4 middle product threshold
+ 1305, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 26
+ 10, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ 31010, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 19, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 25, // KS2 -> KS4 middle product threshold
+ 1349, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 27
+ 9, // KS1 -> KS2 multiplication threshold
+ 17, // KS2 -> KS4 multiplication threshold
+ 28087, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 23, // KS2 -> KS4 middle product threshold
+ 1070, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 28
+ 10, // KS1 -> KS2 multiplication threshold
+ 17, // KS2 -> KS4 multiplication threshold
+ 28087, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 21, // KS2 -> KS4 middle product threshold
+ 1070, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 29
+ 8, // KS1 -> KS2 multiplication threshold
+ 17, // KS2 -> KS4 multiplication threshold
+ 20868, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 14, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 21, // KS2 -> KS4 middle product threshold
+ 970, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 8 // nussbaumer squaring threshold
+ },
+ { // bits = 30
+ 8, // KS1 -> KS2 multiplication threshold
+ 27, // KS2 -> KS4 multiplication threshold
+ 28087, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 23, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 27, // KS2 -> KS4 middle product threshold
+ 1305, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 8 // nussbaumer squaring threshold
+ },
+ { // bits = 31
+ 9, // KS1 -> KS2 multiplication threshold
+ 23, // KS2 -> KS4 multiplication threshold
+ 28087, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 23, // KS2 -> KS4 middle product threshold
+ 1070, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 32
+ 8, // KS1 -> KS2 multiplication threshold
+ 25, // KS2 -> KS4 multiplication threshold
+ 28087, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 19, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 8, // KS1 -> KS2 middle product threshold
+ 27, // KS2 -> KS4 middle product threshold
+ 1539, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+};
+
+// end of file ****************************************************************
diff --git a/srcpkgs/zn_poly/files/tuning-64.c b/srcpkgs/zn_poly/files/tuning-64.c
new file mode 100644
index 000000000000..34ac692c83b0
--- /dev/null
+++ b/srcpkgs/zn_poly/files/tuning-64.c
@@ -0,0 +1,860 @@
+/*
+ NOTE: do not edit this file! It is auto-generated by the "tune" program.
+ (Run "make tune" and then "./tune > tuning.c" to regenerate it.)
+*/
+
+/*
+ tuning.c: global tuning values
+
+ Copyright (C) 2007, 2008, David Harvey
+
+ This file is part of the zn_poly library (version 0.9).
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) version 3 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "zn_poly_internal.h"
+
+size_t ZNP_mpn_smp_kara_thresh = 35;
+size_t ZNP_mpn_mulmid_fallback_thresh = 458;
+
+tuning_info_t tuning_info[] =
+{
+ { // bits = 0
+ },
+ { // bits = 1
+ },
+ { // bits = 2
+ 141, // KS1 -> KS2 multiplication threshold
+ 14733, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 102, // KS1 -> KS2 squaring threshold
+ 3602, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 102, // KS1 -> KS2 middle product threshold
+ 1378, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 3
+ 112, // KS1 -> KS2 multiplication threshold
+ 4308, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 61, // KS1 -> KS2 squaring threshold
+ 4817, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 102, // KS1 -> KS2 middle product threshold
+ 2356, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 4
+ 80, // KS1 -> KS2 multiplication threshold
+ 2576, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 57, // KS1 -> KS2 squaring threshold
+ 1801, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 72, // KS1 -> KS2 middle product threshold
+ 1053, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 5
+ 67, // KS1 -> KS2 multiplication threshold
+ 3294, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 56, // KS1 -> KS2 squaring threshold
+ 2303, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 65, // KS1 -> KS2 middle product threshold
+ 901, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 6
+ 57, // KS1 -> KS2 multiplication threshold
+ 1152, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 51, // KS1 -> KS2 squaring threshold
+ 985, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 62, // KS1 -> KS2 middle product threshold
+ 985, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 7
+ 47, // KS1 -> KS2 multiplication threshold
+ 1540, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 43, // KS1 -> KS2 squaring threshold
+ 788, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 51, // KS1 -> KS2 middle product threshold
+ 451, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 8
+ 47, // KS1 -> KS2 multiplication threshold
+ 901, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 35, // KS1 -> KS2 squaring threshold
+ 753, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 43, // KS1 -> KS2 middle product threshold
+ 576, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 9
+ 43, // KS1 -> KS2 multiplication threshold
+ 589, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 43, // KS1 -> KS2 squaring threshold
+ 493, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 39, // KS1 -> KS2 middle product threshold
+ 302, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 10
+ 38, // KS1 -> KS2 multiplication threshold
+ 824, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 35, // KS1 -> KS2 squaring threshold
+ 576, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 38, // KS1 -> KS2 middle product threshold
+ 337, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 11
+ 43, // KS1 -> KS2 multiplication threshold
+ 431, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 33, // KS1 -> KS2 squaring threshold
+ 377, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 33, // KS1 -> KS2 middle product threshold
+ 247, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 12
+ 38, // KS1 -> KS2 multiplication threshold
+ 482, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 33, // KS1 -> KS2 squaring threshold
+ 403, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 33, // KS1 -> KS2 middle product threshold
+ 216, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 13
+ 33, // KS1 -> KS2 multiplication threshold
+ 345, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 30, // KS1 -> KS2 squaring threshold
+ 315, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 33, // KS1 -> KS2 middle product threshold
+ 189, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 14
+ 33, // KS1 -> KS2 multiplication threshold
+ 345, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 29, // KS1 -> KS2 squaring threshold
+ 286, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 31, // KS1 -> KS2 middle product threshold
+ 116, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 15
+ 31, // KS1 -> KS2 multiplication threshold
+ 322, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 23, // KS1 -> KS2 squaring threshold
+ 226, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 29, // KS1 -> KS2 middle product threshold
+ 121, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 16
+ 29, // KS1 -> KS2 multiplication threshold
+ 337, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 25, // KS1 -> KS2 squaring threshold
+ 173, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 29, // KS1 -> KS2 middle product threshold
+ 101, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 17
+ 29, // KS1 -> KS2 multiplication threshold
+ 231, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 23, // KS1 -> KS2 squaring threshold
+ 216, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 27, // KS1 -> KS2 middle product threshold
+ 94, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 18
+ 25, // KS1 -> KS2 multiplication threshold
+ 189, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 23, // KS1 -> KS2 squaring threshold
+ 134, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 23, // KS1 -> KS2 middle product threshold
+ 94, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 19
+ 27, // KS1 -> KS2 multiplication threshold
+ 226, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 21, // KS1 -> KS2 squaring threshold
+ 216, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 21, // KS1 -> KS2 middle product threshold
+ 86, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 20
+ 22, // KS1 -> KS2 multiplication threshold
+ 144, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 21, // KS1 -> KS2 squaring threshold
+ 119, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 21, // KS1 -> KS2 middle product threshold
+ 80, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 21
+ 25, // KS1 -> KS2 multiplication threshold
+ 189, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 19, // KS1 -> KS2 squaring threshold
+ 121, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 21, // KS1 -> KS2 middle product threshold
+ 80, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 22
+ 21, // KS1 -> KS2 multiplication threshold
+ 102, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 21, // KS1 -> KS2 squaring threshold
+ 102, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 21, // KS1 -> KS2 middle product threshold
+ 70, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 23
+ 22, // KS1 -> KS2 multiplication threshold
+ 147, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 17, // KS1 -> KS2 squaring threshold
+ 102, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 19, // KS1 -> KS2 middle product threshold
+ 72, // KS2 -> KS4 middle product threshold
+ 23040, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 12 // nussbaumer squaring threshold
+ },
+ { // bits = 24
+ 19, // KS1 -> KS2 multiplication threshold
+ 86, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 19, // KS1 -> KS2 squaring threshold
+ 72, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 19, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 20868, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 12 // nussbaumer squaring threshold
+ },
+ { // bits = 25
+ 21, // KS1 -> KS2 multiplication threshold
+ 149, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 19, // KS1 -> KS2 squaring threshold
+ 102, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 21, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 20868, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 12 // nussbaumer squaring threshold
+ },
+ { // bits = 26
+ 17, // KS1 -> KS2 multiplication threshold
+ 86, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 16, // KS1 -> KS2 squaring threshold
+ 72, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 16026, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 12 // nussbaumer squaring threshold
+ },
+ { // bits = 27
+ 17, // KS1 -> KS2 multiplication threshold
+ 119, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 16, // KS1 -> KS2 squaring threshold
+ 64, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 16, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 16026, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 28
+ 23, // KS1 -> KS2 multiplication threshold
+ 107, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 14, // KS1 -> KS2 squaring threshold
+ 62, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 9451, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 29
+ 17, // KS1 -> KS2 multiplication threshold
+ 85, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 14, // KS1 -> KS2 squaring threshold
+ 65, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 16, // KS1 -> KS2 middle product threshold
+ 61, // KS2 -> KS4 middle product threshold
+ 14044, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 30
+ 17, // KS1 -> KS2 multiplication threshold
+ 66, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 17, // KS1 -> KS2 squaring threshold
+ 43, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 61, // KS2 -> KS4 middle product threshold
+ 12307, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 31
+ 17, // KS1 -> KS2 multiplication threshold
+ 73, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 13, // KS1 -> KS2 squaring threshold
+ 35, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 57, // KS2 -> KS4 middle product threshold
+ 16026, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 32
+ 17, // KS1 -> KS2 multiplication threshold
+ 56, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 14, // KS1 -> KS2 squaring threshold
+ 40, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 56, // KS2 -> KS4 middle product threshold
+ 8013, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 33
+ 16, // KS1 -> KS2 multiplication threshold
+ 47, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 15, // KS1 -> KS2 squaring threshold
+ 29, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 14, // KS1 -> KS2 middle product threshold
+ 51, // KS2 -> KS4 middle product threshold
+ 8560, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 34
+ 16, // KS1 -> KS2 multiplication threshold
+ 47, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 15, // KS1 -> KS2 squaring threshold
+ 27, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 47, // KS2 -> KS4 middle product threshold
+ 6154, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 35
+ 16, // KS1 -> KS2 multiplication threshold
+ 47, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 13, // KS1 -> KS2 squaring threshold
+ 29, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 43, // KS2 -> KS4 middle product threshold
+ 7022, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 36
+ 16, // KS1 -> KS2 multiplication threshold
+ 36, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 29, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 43, // KS2 -> KS4 middle product threshold
+ 6154, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 37
+ 14, // KS1 -> KS2 multiplication threshold
+ 36, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 25, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 14, // KS1 -> KS2 middle product threshold
+ 47, // KS2 -> KS4 middle product threshold
+ 7022, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 38
+ 16, // KS1 -> KS2 multiplication threshold
+ 30, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 13, // KS1 -> KS2 squaring threshold
+ 25, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 14, // KS1 -> KS2 middle product threshold
+ 43, // KS2 -> KS4 middle product threshold
+ 4726, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 39
+ 15, // KS1 -> KS2 multiplication threshold
+ 32, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 23, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 40, // KS2 -> KS4 middle product threshold
+ 5393, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 40
+ 13, // KS1 -> KS2 multiplication threshold
+ 32, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 23, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 38, // KS2 -> KS4 middle product threshold
+ 4726, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 41
+ 13, // KS1 -> KS2 multiplication threshold
+ 25, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 21, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 33, // KS2 -> KS4 middle product threshold
+ 4726, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 42
+ 13, // KS1 -> KS2 multiplication threshold
+ 27, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 23, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 33, // KS2 -> KS4 middle product threshold
+ 4280, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 43
+ 13, // KS1 -> KS2 multiplication threshold
+ 24, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 21, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 31, // KS2 -> KS4 middle product threshold
+ 4726, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 44
+ 13, // KS1 -> KS2 multiplication threshold
+ 33, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 18, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 33, // KS2 -> KS4 middle product threshold
+ 4280, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 45
+ 12, // KS1 -> KS2 multiplication threshold
+ 23, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 19, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 29, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 46
+ 15, // KS1 -> KS2 multiplication threshold
+ 25, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 31, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 47
+ 12, // KS1 -> KS2 multiplication threshold
+ 23, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 29, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 48
+ 13, // KS1 -> KS2 multiplication threshold
+ 23, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 25, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 49
+ 12, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 16, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 25, // KS2 -> KS4 middle product threshold
+ 3511, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 50
+ 10, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 27, // KS2 -> KS4 middle product threshold
+ 3511, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 51
+ 10, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 16, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 23, // KS2 -> KS4 middle product threshold
+ 2363, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 52
+ 12, // KS1 -> KS2 multiplication threshold
+ 21, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 16, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 24, // KS2 -> KS4 middle product threshold
+ 2697, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 53
+ 12, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 16, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 24, // KS2 -> KS4 middle product threshold
+ 2140, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 54
+ 12, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 16, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 23, // KS2 -> KS4 middle product threshold
+ 2363, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 55
+ 9, // KS1 -> KS2 multiplication threshold
+ 16, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 12, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 19, // KS2 -> KS4 middle product threshold
+ 1939, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 56
+ 9, // KS1 -> KS2 multiplication threshold
+ 16, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 13, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 19, // KS2 -> KS4 middle product threshold
+ 2140, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 57
+ 10, // KS1 -> KS2 multiplication threshold
+ 16, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 15, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 21, // KS2 -> KS4 middle product threshold
+ 2071, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 58
+ 12, // KS1 -> KS2 multiplication threshold
+ 16, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 12, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 25, // KS2 -> KS4 middle product threshold
+ 2071, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 59
+ 8, // KS1 -> KS2 multiplication threshold
+ 16, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 13, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 8, // KS1 -> KS2 middle product threshold
+ 19, // KS2 -> KS4 middle product threshold
+ 1756, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 60
+ 8, // KS1 -> KS2 multiplication threshold
+ 16, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 13, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 8, // KS1 -> KS2 middle product threshold
+ 17, // KS2 -> KS4 middle product threshold
+ 1756, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 61
+ 8, // KS1 -> KS2 multiplication threshold
+ 12, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 12, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 8, // KS1 -> KS2 middle product threshold
+ 19, // KS2 -> KS4 middle product threshold
+ 1939, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 62
+ 10, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 14, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 23, // KS2 -> KS4 middle product threshold
+ 2697, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 63
+ 9, // KS1 -> KS2 multiplication threshold
+ 25, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 19, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 23, // KS2 -> KS4 middle product threshold
+ 2363, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 64
+ 9, // KS1 -> KS2 multiplication threshold
+ 31, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 25, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 25, // KS2 -> KS4 middle product threshold
+ 2697, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+};
+
+// end of file ****************************************************************
diff --git a/srcpkgs/zn_poly/template b/srcpkgs/zn_poly/template
new file mode 100644
index 000000000000..ca6d0c764f16
--- /dev/null
+++ b/srcpkgs/zn_poly/template
@@ -0,0 +1,32 @@
+# Template file for 'zn_poly'
+pkgname=zn_poly
+version=0.9.2
+revision=1
+build_style=configure
+configure_args="--prefix=\$(DESTDIR)/usr"
+hostmakedepends="python3"
+makedepends="gmp-devel"
+short_desc="Library for polynomial arithmetic in Z/nZ[x], for unsigned long n"
+maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
+license="GPL-2.0-only, GPL-3.0-only"
+homepage="https://gitlab.com/sagemath/zn_poly"
+distfiles="https://gitlab.com/sagemath/zn_poly/-/archive/${version}/zn_poly-${version}.tar.bz2"
+checksum=29d88ce19939f53e920adf118d8cd6c8c9594bc8cb71a992a6137bd86f6fb7f5
+
+CFLAGS=-fPIC
+
+build_options="native_build"
+
+if [ -z "$build_option_native_build" ]; then
+ configure_args+=" --disable-tuning"
+fi
+
+post_extract() {
+ cp -v ${FILESDIR}/tuning-${XBPS_WORDSIZE}.c tune/tuning.c
+}
+
+do_configure() {
+ ./configure ${configure_args} \
+ --cflags="$CFLAGS" --ldflags="$LDFLAGS" \
+ --cppflags="$CPPFLAGS" --cxxflags="$CXXFLAGS"
+}
next reply other threads:[~2021-11-09 1:24 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-09 1:24 tornaria [this message]
2021-11-09 1:28 ` tornaria
2021-11-09 12:19 ` dkwo
2021-11-09 12:42 ` tornaria
2021-11-09 23:10 ` [PR PATCH] [Merged]: " leahneukirchen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-33969@inbox.vuxu.org \
--to=tornaria@users.noreply.github.com \
--cc=ml@inbox.vuxu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).