Implementation notes: amd64, speed2supercop, crypto_sign/rainbow6440

Computer: speed2supercop
Microarchitecture: amd64; Haswell+AES (306c3)
Architecture: amd64
CPU ID: GenuineIntel-000306c3-1fc9cbf5
SUPERCOP version: 20240808
Operation: crypto_sign
Primitive: rainbow6440
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
16884818306 0 038182 824 1664T:refg++_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070920240625
19561216868 0 036462 824 1664T:refg++_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070920240625
19806415009 0 033590 816 1632T:refg++_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024070920240625

Test failure


error 111
crypto_sign_open returns nonzero

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:refg++ -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.3.0)

Compiler output


rainbow_w-test.cpp: In file included from rainbow_w-test.cpp:6:
rainbow_w-test.cpp: In file included from ./rainbow_w.h:7:
rainbow_w-test.cpp: In file included from ./bqas.h:79:
rainbow_w-test.cpp: ./transpose8.h:38:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:         ^~~~~~~~~
rainbow_w-test.cpp: ./transpose8.h:38:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:         ^~~~~~~~~
rainbow_w-test.cpp: ./transpose8.h:38:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:         ^~~~~~~~~
rainbow_w-test.cpp: ./transpose8.h:38:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:         ^~~~~~~~~
rainbow_w-test.cpp: ./transpose8.h:38:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:         ^~~~~~~~~
rainbow_w-test.cpp: ./transpose8.h:38:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:         ^~~~~~~~~
rainbow_w-test.cpp: ./transpose8.h:38:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:         ^~~~~~~~~
rainbow_w-test.cpp: ./transpose8.h:38:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp: ...

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:refclang++ -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:refclang++ -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:refclang++ -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_16.0.6_(27+b1))
T:refclang++ -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall

Compiler output


rainbow_w-test.cpp: In file included from bqas.h:79,
rainbow_w-test.cpp:                  from rainbow_w.h:7,
rainbow_w-test.cpp:                  from rainbow_w-test.cpp:6:
rainbow_w-test.cpp: transpose8.h: In function 'void transpose8(__m128i*, const __m128i*)':
rainbow_w-test.cpp: transpose8.h:38:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:    38 |         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:       |                          ^
rainbow_w-test.cpp: transpose8.h:38:33: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:    38 |         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:       |                                 ^
rainbow_w-test.cpp: transpose8.h:38:40: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:    38 |         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:       |                                        ^
rainbow_w-test.cpp: transpose8.h:38:47: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:    38 |         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:       |                                               ^
rainbow_w-test.cpp: transpose8.h:38:54: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:    38 |         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:       |                                                      ^
rainbow_w-test.cpp: transpose8.h:38:61: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:    38 |         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:       |                                                             ^
rainbow_w-test.cpp: transpose8.h:38:68: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
rainbow_w-test.cpp:    38 |         register __m128i a=s[0],b=s[1],c=s[2],d=s[3],e=s[4],f=s[5],g=s[6],h=s[7];
rainbow_w-test.cpp:       |                                                                    ^
rainbow_w-test.cpp: ...
usehash.cpp: usehash.cpp: In function 'int crypto_sign_rainbow6440_ref_timingleaks(unsigned char*, long long unsigned int*, const unsigned char*, long long unsigned int, const unsigned char*)':
usehash.cpp: usehash.cpp:39:16: warning: comparison of integer expressions of different signedness: 'int' and 'long long unsigned int' [-Wsign-compare]
usehash.cpp:    39 |   for (i = 0;i < mlen;++i) {
usehash.cpp:       |              ~~^~~~~~
usehash.cpp: usehash.cpp: In function 'int crypto_sign_rainbow6440_ref_timingleaks_open(unsigned char*, long long unsigned int*, const unsigned char*, long long unsigned int, const unsigned char*)':
usehash.cpp: usehash.cpp:59:30: warning: comparison of integer expressions of different signedness: 'int' and 'long long unsigned int' [-Wsign-compare]
usehash.cpp:    59 |   for (i = SIGNATURE_BYTES;i < smlen;++i) m[i - SIGNATURE_BYTES] = sm[i];
usehash.cpp:       |                            ~~^~~~~~~

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:refg++ -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.3.0)
T:refg++ -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.3.0)
T:refg++ -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (13.3.0)
T:refg++ -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall