Skip to content

Commit 8a35b3d

Browse files
committed
prep Montgomery 2^k-ary pow for benchmarking
1 parent 8ef0dc0 commit 8a35b3d

File tree

10 files changed

+2077
-239
lines changed

10 files changed

+2077
-239
lines changed

modular_arithmetic/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ include(FetchContent)
7575
FetchContent_Declare(
7676
hurchalla_util
7777
GIT_REPOSITORY https://github.com/hurchalla/util.git
78-
GIT_TAG ea4d95c8852d8351cbd1529bbb48a9c10e7d61bf
78+
GIT_TAG 8e03b87c7b6d5c3bf3c0e439a153768c59c512c5
7979
)
8080
FetchContent_MakeAvailable(hurchalla_util)
8181

montgomery_arithmetic/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ include(FetchContent)
8080
FetchContent_Declare(
8181
hurchalla_util
8282
GIT_REPOSITORY https://github.com/hurchalla/util.git
83-
GIT_TAG ea4d95c8852d8351cbd1529bbb48a9c10e7d61bf
83+
GIT_TAG 8e03b87c7b6d5c3bf3c0e439a153768c59c512c5
8484
)
8585
FetchContent_MakeAvailable(hurchalla_util)
8686

montgomery_arithmetic/include/hurchalla/montgomery_arithmetic/detail/experimental/montgomery_pow_2kary/experimental_montgomery_pow_2kary.h

Lines changed: 352 additions & 49 deletions
Large diffs are not rendered by default.

montgomery_arithmetic/include/hurchalla/montgomery_arithmetic/detail/experimental/montgomery_pow_2kary/testbench_2kary.sh

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,39 +7,22 @@
77
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
88

99

10-
exit_on_failure () {
11-
if [ $? -ne 0 ]; then
12-
exit 1
13-
fi
14-
}
15-
16-
17-
#cppcompiler=g++
18-
#cppcompiler=clang++
19-
cppcompiler=$1
20-
21-
#optimization_level=O2
22-
#optimization_level=O3
23-
optimization_level=$2
24-
25-
#define_mont_type=-DDEF_MONT_TYPE=MontgomeryQuarter<U>
26-
define_mont_type=-DDEF_MONT_TYPE=$3
27-
define_uint_type=-DDEF_UINT_TYPE=$4
28-
29-
30-
cpp_standard=c++17
3110

3211

3312
# You need to clone the util, factoring, and modular_arithmetic repos
3413
# from https://github.com/hurchalla
3514

36-
3715
# SET repo_directory TO THE DIRECTORY WHERE YOU CLONED THE HURCHALLA GIT
3816
# REPOSITORIES. (or otherwise ensure the compiler /I flags correctly specify
3917
# the needed hurchalla include directories)
18+
4019
repo_directory=/Users/jeffreyhurchalla/Desktop
20+
#repo_directory=/home/jeff/repos
4121

4222

23+
# you would ordinarily use either g++ or clang++ for $1
24+
cppcompiler=$1
25+
4326

4427
if [[ $cppcompiler == "g++" ]]; then
4528
error_limit=-fmax-errors=3
@@ -50,27 +33,50 @@ fi
5033

5134

5235

53-
# You can use arguments $8 and $9 and ${10} etc to define macros such as
36+
37+
exit_on_failure () {
38+
if [ $? -ne 0 ]; then
39+
exit 1
40+
fi
41+
}
42+
43+
#optimization_level=O2
44+
#optimization_level=O3
45+
optimization_level=$2
46+
47+
#define_mont_type=-DDEF_MONT_TYPE=MontgomeryQuarter
48+
define_mont_type=-DDEF_MONT_TYPE=$3
49+
define_uint_type=-DDEF_UINT_TYPE=$4
50+
51+
# you must specify either -DTEST_ARRAY or -DTEST_SCALAR or -DTEST_PARTIAL_ARRAY for $8
52+
define_test_type=$8
53+
54+
55+
cpp_standard=c++17
56+
57+
58+
# You can use arguments $9 and ${10} and ${11} etc to define macros such as
5459
# -DHURCHALLA_ALLOW_INLINE_ASM_ALL
5560
# for debugging, defining the following macros may be useful
5661
# -DHURCHALLA_CLOCKWORK_ENABLE_ASSERTS -DHURCHALLA_UTIL_ENABLE_ASSERTS
5762

5863

5964
# we could also use -g to get debug symbols (for lldb/gdb, and objdump)
6065

61-
$cppcompiler \
66+
$cppcompiler \
6267
$error_limit -$optimization_level \
63-
$define_mont_type $define_uint_type $8 $9 ${10} ${11} ${12} ${13} ${14} \
64-
-Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion $warn_nrvo \
68+
$define_mont_type $define_uint_type $define_test_type \
69+
$9 ${10} ${11} ${12} ${13} ${14} \
70+
-Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion $warn_nrvo \
6571
-std=$cpp_standard \
6672
-I${repo_directory}/modular_arithmetic/modular_arithmetic/include \
6773
-I${repo_directory}/modular_arithmetic/montgomery_arithmetic/include \
6874
-I${repo_directory}/util/include \
6975
-c testbench_montgomery_pow_2kary.cpp
7076

71-
$cppcompiler -$optimization_level -std=$cpp_standard -o testbench_montgomery_pow_2kary testbench_montgomery_pow_2kary.o -lm
72-
77+
exit_on_failure
7378

79+
$cppcompiler -$optimization_level -std=$cpp_standard -o testbench_montgomery_pow_2kary testbench_montgomery_pow_2kary.o -lm
7480

7581
exit_on_failure
7682

@@ -84,6 +90,6 @@ echo "compilation finished, now executing:"
8490
./testbench_montgomery_pow_2kary $5 $6 $7
8591

8692
# To give you an example of invoking this script at the command line:
87-
# ./testbench.sh clang++ O3 MontgomeryFull __uint128_t 191 8 50 -DHURCHALLA_ALLOW_INLINE_ASM_ALL
93+
# ./testbench.sh clang++ O3 MontgomeryFull __uint128_t 191 8 50 -DTEST_ARRAY -DHURCHALLA_ALLOW_INLINE_ASM_ALL
8894

8995

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
#!/bin/bash
2+
3+
# Copyright (c) 2025 Jeffrey Hurchalla.
4+
#
5+
# This Source Code Form is subject to the terms of the Mozilla Public
6+
# License, v. 2.0. If a copy of the MPL was not distributed with this
7+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
8+
9+
10+
invoke_test() {
11+
(
12+
set -e
13+
echo ""
14+
shift
15+
echo $@
16+
echo ""
17+
$@
18+
) 2>&1 | tee $1
19+
20+
# Check if the subshell failed
21+
if [ "${PIPESTATUS[0]}" -ne 0 ]; then
22+
echo "One of the commands failed. Exiting."
23+
exit 1
24+
fi
25+
}
26+
27+
28+
29+
invoke_test 64_quarter_gcc_asm_scalar.txt ./testbench_2kary.sh g++ O3 MontgomeryQuarter uint64_t 191 8 22 \
30+
-DTEST_SCALAR -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
31+
32+
invoke_test 64_quarter_gcc_asm_array.txt ./testbench_2kary.sh g++ O3 MontgomeryQuarter uint64_t 191 8 22 \
33+
-DTEST_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
34+
35+
invoke_test 64_quarter_gcc_asm_partial_array.txt ./testbench_2kary.sh g++ O3 MontgomeryQuarter uint64_t 191 8 22 \
36+
-DTEST_PARTIAL_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
37+
38+
invoke_test 64_quarter_clang_asm_scalar.txt ./testbench_2kary.sh clang++ O3 MontgomeryQuarter uint64_t 191 8 22 \
39+
-DTEST_SCALAR -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
40+
41+
invoke_test 64_quarter_clang_asm_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryQuarter uint64_t 191 8 22 \
42+
-DTEST_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
43+
44+
invoke_test 64_quarter_clang_asm_partial_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryQuarter uint64_t 191 8 22 \
45+
-DTEST_PARTIAL_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
46+
47+
invoke_test 64_quarter_gcc_noasm_scalar.txt ./testbench_2kary.sh g++ O3 MontgomeryQuarter uint64_t 191 8 22 \
48+
-DTEST_SCALAR
49+
50+
invoke_test 64_quarter_gcc_noasm_array.txt ./testbench_2kary.sh g++ O3 MontgomeryQuarter uint64_t 191 8 22 \
51+
-DTEST_ARRAY
52+
53+
invoke_test 64_quarter_gcc_noasm_partial_array.txt ./testbench_2kary.sh g++ O3 MontgomeryQuarter uint64_t 191 8 22 \
54+
-DTEST_PARTIAL_ARRAY
55+
56+
invoke_test 64_quarter_clang_noasm_scalar.txt ./testbench_2kary.sh clang++ O3 MontgomeryQuarter uint64_t 191 8 22 \
57+
-DTEST_SCALAR
58+
59+
invoke_test 64_quarter_clang_noasm_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryQuarter uint64_t 191 8 22 \
60+
-DTEST_ARRAY
61+
62+
invoke_test 64_quarter_clang_noasm_partial_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryQuarter uint64_t 191 8 22 \
63+
-DTEST_PARTIAL_ARRAY
64+
65+
66+
67+
invoke_test 64_half_gcc_asm_scalar.txt ./testbench_2kary.sh g++ O3 MontgomeryHalf uint64_t 191 8 22 \
68+
-DTEST_SCALAR -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
69+
70+
invoke_test 64_half_gcc_asm_array.txt ./testbench_2kary.sh g++ O3 MontgomeryHalf uint64_t 191 8 22 \
71+
-DTEST_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
72+
73+
invoke_test 64_half_gcc_asm_partial_array.txt ./testbench_2kary.sh g++ O3 MontgomeryHalf uint64_t 191 8 22 \
74+
-DTEST_PARTIAL_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
75+
76+
invoke_test 64_half_clang_asm_scalar.txt ./testbench_2kary.sh clang++ O3 MontgomeryHalf uint64_t 191 8 22 \
77+
-DTEST_SCALAR -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
78+
79+
invoke_test 64_half_clang_asm_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryHalf uint64_t 191 8 22 \
80+
-DTEST_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
81+
82+
invoke_test 64_half_clang_asm_partial_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryHalf uint64_t 191 8 22 \
83+
-DTEST_PARTIAL_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
84+
85+
invoke_test 64_half_gcc_noasm_scalar.txt ./testbench_2kary.sh g++ O3 MontgomeryHalf uint64_t 191 8 22 \
86+
-DTEST_SCALAR
87+
88+
invoke_test 64_half_gcc_noasm_array.txt ./testbench_2kary.sh g++ O3 MontgomeryHalf uint64_t 191 8 22 \
89+
-DTEST_ARRAY
90+
91+
invoke_test 64_half_gcc_noasm_partial_array.txt ./testbench_2kary.sh g++ O3 MontgomeryHalf uint64_t 191 8 22 \
92+
-DTEST_PARTIAL_ARRAY
93+
94+
invoke_test 64_half_clang_noasm_scalar.txt ./testbench_2kary.sh clang++ O3 MontgomeryHalf uint64_t 191 8 22 \
95+
-DTEST_SCALAR
96+
97+
invoke_test 64_half_clang_noasm_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryHalf uint64_t 191 8 22 \
98+
-DTEST_ARRAY
99+
100+
invoke_test 64_half_clang_noasm_partial_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryHalf uint64_t 191 8 22 \
101+
-DTEST_PARTIAL_ARRAY
102+
103+
104+
105+
invoke_test 64_full_gcc_asm_scalar.txt ./testbench_2kary.sh g++ O3 MontgomeryFull uint64_t 191 8 22 \
106+
-DTEST_SCALAR -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
107+
108+
invoke_test 64_full_gcc_asm_array.txt ./testbench_2kary.sh g++ O3 MontgomeryFull uint64_t 191 8 22 \
109+
-DTEST_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
110+
111+
invoke_test 64_full_gcc_asm_partial_array.txt ./testbench_2kary.sh g++ O3 MontgomeryFull uint64_t 191 8 22 \
112+
-DTEST_PARTIAL_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
113+
114+
invoke_test 64_full_clang_asm_scalar.txt ./testbench_2kary.sh clang++ O3 MontgomeryFull uint64_t 191 8 22 \
115+
-DTEST_SCALAR -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
116+
117+
invoke_test 64_full_clang_asm_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryFull uint64_t 191 8 22 \
118+
-DTEST_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
119+
120+
invoke_test 64_full_clang_asm_partial_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryFull uint64_t 191 8 22 \
121+
-DTEST_PARTIAL_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
122+
123+
invoke_test 64_full_gcc_noasm_scalar.txt ./testbench_2kary.sh g++ O3 MontgomeryFull uint64_t 191 8 22 \
124+
-DTEST_SCALAR
125+
126+
invoke_test 64_full_gcc_noasm_array.txt ./testbench_2kary.sh g++ O3 MontgomeryFull uint64_t 191 8 22 \
127+
-DTEST_ARRAY
128+
129+
invoke_test 64_full_gcc_noasm_partial_array.txt ./testbench_2kary.sh g++ O3 MontgomeryFull uint64_t 191 8 22 \
130+
-DTEST_PARTIAL_ARRAY
131+
132+
invoke_test 64_full_clang_noasm_scalar.txt ./testbench_2kary.sh clang++ O3 MontgomeryFull uint64_t 191 8 22 \
133+
-DTEST_SCALAR
134+
135+
invoke_test 64_full_clang_noasm_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryFull uint64_t 191 8 22 \
136+
-DTEST_ARRAY
137+
138+
invoke_test 64_full_clang_noasm_partial_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryFull uint64_t 191 8 22 \
139+
-DTEST_PARTIAL_ARRAY
140+
141+
142+
143+
144+
145+
146+
invoke_test 128_quarter_gcc_asm_scalar.txt ./testbench_2kary.sh g++ O3 MontgomeryQuarter __uint128_t 191 8 40 \
147+
-DTEST_SCALAR -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
148+
149+
invoke_test 128_quarter_gcc_asm_array.txt ./testbench_2kary.sh g++ O3 MontgomeryQuarter __uint128_t 191 8 40 \
150+
-DTEST_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
151+
152+
invoke_test 128_quarter_gcc_asm_partial_array.txt ./testbench_2kary.sh g++ O3 MontgomeryQuarter __uint128_t 191 8 40 \
153+
-DTEST_PARTIAL_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
154+
155+
invoke_test 128_quarter_clang_asm_scalar.txt ./testbench_2kary.sh clang++ O3 MontgomeryQuarter __uint128_t 191 8 40 \
156+
-DTEST_SCALAR -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
157+
158+
invoke_test 128_quarter_clang_asm_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryQuarter __uint128_t 191 8 40 \
159+
-DTEST_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
160+
161+
invoke_test 128_quarter_clang_asm_partial_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryQuarter __uint128_t 191 8 40 \
162+
-DTEST_PARTIAL_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
163+
164+
invoke_test 128_quarter_gcc_noasm_scalar.txt ./testbench_2kary.sh g++ O3 MontgomeryQuarter __uint128_t 191 8 40 \
165+
-DTEST_SCALAR
166+
167+
invoke_test 128_quarter_gcc_noasm_array.txt ./testbench_2kary.sh g++ O3 MontgomeryQuarter __uint128_t 191 8 40 \
168+
-DTEST_ARRAY
169+
170+
invoke_test 128_quarter_gcc_noasm_partial_array.txt ./testbench_2kary.sh g++ O3 MontgomeryQuarter __uint128_t 191 8 40 \
171+
-DTEST_PARTIAL_ARRAY
172+
173+
invoke_test 128_quarter_clang_noasm_scalar.txt ./testbench_2kary.sh clang++ O3 MontgomeryQuarter __uint128_t 191 8 40 \
174+
-DTEST_SCALAR
175+
176+
invoke_test 128_quarter_clang_noasm_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryQuarter __uint128_t 191 8 40 \
177+
-DTEST_ARRAY
178+
179+
invoke_test 128_quarter_clang_noasm_partial_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryQuarter __uint128_t 191 8 40 \
180+
-DTEST_PARTIAL_ARRAY
181+
182+
183+
184+
invoke_test 128_half_gcc_asm_scalar.txt ./testbench_2kary.sh g++ O3 MontgomeryHalf __uint128_t 191 8 40 \
185+
-DTEST_SCALAR -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
186+
187+
invoke_test 128_half_gcc_asm_array.txt ./testbench_2kary.sh g++ O3 MontgomeryHalf __uint128_t 191 8 40 \
188+
-DTEST_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
189+
190+
invoke_test 128_half_gcc_asm_partial_array.txt ./testbench_2kary.sh g++ O3 MontgomeryHalf __uint128_t 191 8 40 \
191+
-DTEST_PARTIAL_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
192+
193+
invoke_test 128_half_clang_asm_scalar.txt ./testbench_2kary.sh clang++ O3 MontgomeryHalf __uint128_t 191 8 40 \
194+
-DTEST_SCALAR -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
195+
196+
invoke_test 128_half_clang_asm_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryHalf __uint128_t 191 8 40 \
197+
-DTEST_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
198+
199+
invoke_test 128_half_clang_asm_partial_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryHalf __uint128_t 191 8 40 \
200+
-DTEST_PARTIAL_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
201+
202+
invoke_test 128_half_gcc_noasm_scalar.txt ./testbench_2kary.sh g++ O3 MontgomeryHalf __uint128_t 191 8 40 \
203+
-DTEST_SCALAR
204+
205+
invoke_test 128_half_gcc_noasm_array.txt ./testbench_2kary.sh g++ O3 MontgomeryHalf __uint128_t 191 8 40 \
206+
-DTEST_ARRAY
207+
208+
invoke_test 128_half_gcc_noasm_partial_array.txt ./testbench_2kary.sh g++ O3 MontgomeryHalf __uint128_t 191 8 40 \
209+
-DTEST_PARTIAL_ARRAY
210+
211+
invoke_test 128_half_clang_noasm_scalar.txt ./testbench_2kary.sh clang++ O3 MontgomeryHalf __uint128_t 191 8 40 \
212+
-DTEST_SCALAR
213+
214+
invoke_test 128_half_clang_noasm_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryHalf __uint128_t 191 8 40 \
215+
-DTEST_ARRAY
216+
217+
invoke_test 128_half_clang_noasm_partial_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryHalf __uint128_t 191 8 40 \
218+
-DTEST_PARTIAL_ARRAY
219+
220+
221+
222+
invoke_test 128_full_gcc_asm_scalar.txt ./testbench_2kary.sh g++ O3 MontgomeryFull __uint128_t 191 8 40 \
223+
-DTEST_SCALAR -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
224+
225+
invoke_test 128_full_gcc_asm_array.txt ./testbench_2kary.sh g++ O3 MontgomeryFull __uint128_t 191 8 40 \
226+
-DTEST_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
227+
228+
invoke_test 128_full_gcc_asm_partial_array.txt ./testbench_2kary.sh g++ O3 MontgomeryFull __uint128_t 191 8 40 \
229+
-DTEST_PARTIAL_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
230+
231+
invoke_test 128_full_clang_asm_scalar.txt ./testbench_2kary.sh clang++ O3 MontgomeryFull __uint128_t 191 8 40 \
232+
-DTEST_SCALAR -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
233+
234+
invoke_test 128_full_clang_asm_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryFull __uint128_t 191 8 40 \
235+
-DTEST_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
236+
237+
invoke_test 128_full_clang_asm_partial_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryFull __uint128_t 191 8 40 \
238+
-DTEST_PARTIAL_ARRAY -DHURCHALLA_MONTGOMERY_TWO_POW_USE_CSELECT_ON_BIT -DHURCHALLA_ALLOW_INLINE_ASM_ALL
239+
240+
invoke_test 128_full_gcc_noasm_scalar.txt ./testbench_2kary.sh g++ O3 MontgomeryFull __uint128_t 191 8 40 \
241+
-DTEST_SCALAR
242+
243+
invoke_test 128_full_gcc_noasm_array.txt ./testbench_2kary.sh g++ O3 MontgomeryFull __uint128_t 191 8 40 \
244+
-DTEST_ARRAY
245+
246+
invoke_test 128_full_gcc_noasm_partial_array.txt ./testbench_2kary.sh g++ O3 MontgomeryFull __uint128_t 191 8 40 \
247+
-DTEST_PARTIAL_ARRAY
248+
249+
invoke_test 128_full_clang_noasm_scalar.txt ./testbench_2kary.sh clang++ O3 MontgomeryFull __uint128_t 191 8 40 \
250+
-DTEST_SCALAR
251+
252+
invoke_test 128_full_clang_noasm_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryFull __uint128_t 191 8 40 \
253+
-DTEST_ARRAY
254+
255+
invoke_test 128_full_clang_noasm_partial_array.txt ./testbench_2kary.sh clang++ O3 MontgomeryFull __uint128_t 191 8 40 \
256+
-DTEST_PARTIAL_ARRAY

0 commit comments

Comments
 (0)