Implementation notes: amd64, devoptimis, crypto_sort/int32

Computer: devoptimis
Architecture: amd64
CPU ID: GenuineIntel-000206c2-bfebfbff
SUPERCOP version: 20190910
Operation: crypto_sort
Primitive: int32
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
44440566 0 09601 752 776herfgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
46532634 0 010549 768 808herfgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
59948601 0 012742 776 808herfgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
76858631 0 010541 768 808herfgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
86523941 0 010083 760 784stdsortg++_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
896891115 0 010145 752 776x86gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
970101347 0 011351 776 816stdsortg++_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
1007261352 0 011375 776 816stdsortg++_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
1032831358 0 013576 784 816stdsortg++_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
152068339 0 09369 752 776portable3gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
1852561293 0 011213 768 808x86gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
2097421293 0 013430 776 808x86gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
211095669 0 09705 752 776portable4gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
228135893 0 010813 768 808portable4gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
230572438 0 010357 768 808portable3gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
2412491402 0 011325 768 808x86gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
241868426 0 010349 768 808portable3gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
2448302497 0 014638 776 808portable4gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
2451021285 0 010321 752 776portable5gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
256144426 0 012566 776 808portable3gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
256932830 0 010741 768 808portable4gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
2636271483 0 011405 768 808portable5gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
2776123135 0 015270 776 808portable5gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
3181721623 0 011549 768 808portable5gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910

Test failure

Implementation: krasnov
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
error 111

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE krasnov
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE krasnov
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE krasnov
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE krasnov

Compiler output

Implementation: aspas
Security model: unknown
Compiler: g++ -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.cpp: crypto_sort_int32.a(api.o): In function `crypto_sort_int32_aspas':
try.cpp: api.cpp:(.text+0x...): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::internal::sorter<int>(int*&, unsigned int)'
try.cpp: crypto_sort_int32.a(api.o): In function `void aspas::internal::merger<int>(int*&, unsigned int)':
try.cpp: api.cpp:(.text._ZN5aspas8internal6mergerIiEEvRPT_j[_ZN5aspas8internal6mergerIiEEvRPT_j]+0x11a): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::merge<int>(int*, unsigned int, int*, unsigned int, int*)'
try.cpp: api.cpp:(.text._ZN5aspas8internal6mergerIiEEvRPT_j[_ZN5aspas8internal6mergerIiEEvRPT_j]+0x2b0): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::merge<int>(int*, unsigned int, int*, unsigned int, int*)'
try.cpp: collect2: error: ld returned 1 exit status

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
g++ -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE aspas

Compiler output

Implementation: aspas
Security model: unknown
Compiler: g++ -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.cpp: crypto_sort_int32.a(api.o): In function `crypto_sort_int32_aspas':
try.cpp: api.cpp:(.text+0x...): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::internal::sorter<int>(int*&, unsigned int)'
try.cpp: crypto_sort_int32.a(api.o): In function `void aspas::internal::merger<int>(int*&, unsigned int)':
try.cpp: api.cpp:(.text._ZN5aspas8internal6mergerIiEEvRPT_j[_ZN5aspas8internal6mergerIiEEvRPT_j]+0x114): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::merge<int>(int*, unsigned int, int*, unsigned int, int*)'
try.cpp: api.cpp:(.text._ZN5aspas8internal6mergerIiEEvRPT_j[_ZN5aspas8internal6mergerIiEEvRPT_j]+0x175): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::merge<int>(int*, unsigned int, int*, unsigned int, int*)'
try.cpp: api.cpp:(.text._ZN5aspas8internal6mergerIiEEvRPT_j[_ZN5aspas8internal6mergerIiEEvRPT_j]+0x23f): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::merge<int>(int*, unsigned int, int*, unsigned int, int*)'
try.cpp: api.cpp:(.text._ZN5aspas8internal6mergerIiEEvRPT_j[_ZN5aspas8internal6mergerIiEEvRPT_j]+0x2cf): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::merge<int>(int*, unsigned int, int*, unsigned int, int*)'
try.cpp: collect2: error: ld returned 1 exit status

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
g++ -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE aspas

Compiler output

Implementation: aspas
Security model: unknown
Compiler: g++ -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.cpp: crypto_sort_int32.a(api.o): In function `crypto_sort_int32_aspas':
try.cpp: api.cpp:(.text+0x...): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::internal::sorter<int>(int*&, unsigned int)'
try.cpp: crypto_sort_int32.a(api.o): In function `void aspas::internal::merger<int>(int*&, unsigned int)':
try.cpp: api.cpp:(.text._ZN5aspas8internal6mergerIiEEvRPT_j[_ZN5aspas8internal6mergerIiEEvRPT_j]+0x264): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::merge<int>(int*, unsigned int, int*, unsigned int, int*)'
try.cpp: api.cpp:(.text._ZN5aspas8internal6mergerIiEEvRPT_j[_ZN5aspas8internal6mergerIiEEvRPT_j]+0x35e): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::merge<int>(int*, unsigned int, int*, unsigned int, int*)'
try.cpp: collect2: error: ld returned 1 exit status

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
g++ -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE aspas

Compiler output

Implementation: aspas
Security model: unknown
Compiler: g++ -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.cpp: crypto_sort_int32.a(api.o): In function `crypto_sort_int32_aspas':
try.cpp: api.cpp:(.text+0x...): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::internal::sorter<int>(int*&, unsigned int)'
try.cpp: crypto_sort_int32.a(api.o): In function `void aspas::internal::merger<int>(int*&, unsigned int)':
try.cpp: api.cpp:(.text._ZN5aspas8internal6mergerIiEEvRPT_j[_ZN5aspas8internal6mergerIiEEvRPT_j]+0x12a): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::merge<int>(int*, unsigned int, int*, unsigned int, int*)'
try.cpp: api.cpp:(.text._ZN5aspas8internal6mergerIiEEvRPT_j[_ZN5aspas8internal6mergerIiEEvRPT_j]+0x1e4): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::merge<int>(int*, unsigned int, int*, unsigned int, int*)'
try.cpp: api.cpp:(.text._ZN5aspas8internal6mergerIiEEvRPT_j[_ZN5aspas8internal6mergerIiEEvRPT_j]+0x27a): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::merge<int>(int*, unsigned int, int*, unsigned int, int*)'
try.cpp: api.cpp:(.text._ZN5aspas8internal6mergerIiEEvRPT_j[_ZN5aspas8internal6mergerIiEEvRPT_j]+0x2bd): undefined reference to `std::enable_if<std::is_same<int, int>::value, void>::type aspas::merge<int>(int*, unsigned int, int*, unsigned int, int*)'
try.cpp: collect2: error: ld returned 1 exit status

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
g++ -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE aspas

Compiler output

Implementation: avx2
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
sort.c: sort.c: In function 'int32_sort':
sort.c: sort.c:940:38: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
sort.c: for (i = q>>3;i < q>>2;++i) y[i] = _mm256_set1_epi32(0x7fffffff);
sort.c: ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sort.c: sort.c: In function 'merge16_finish':
sort.c: sort.c:55:13: note: The ABI for passing parameters with 32-byte alignment has changed in GCC 4.6
sort.c: static void merge16_finish(int32 *x,int32x8 x0,int32x8 x1,int flagdown)
sort.c: ^~~~~~~~~~~~~~
sort.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:41:0,
sort.c: from sort.c:4:
sort.c: sort.c: In function 'minmax_vector':
sort.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avxintrin.h:925:1: error: inlining failed in call to always_inline '_mm256_storeu_si256': target specific option mismatch
sort.c: _mm256_storeu_si256 (__m256i_u *__P, __m256i __A)
sort.c: ^~~~~~~~~~~~~~~~~~~
sort.c: sort.c:10:28: note: called from here
sort.c: #define int32x8_store(z,i) _mm256_storeu_si256((__m256i *) (z),(i))
sort.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sort.c: sort.c:38:5: note: in expansion of macro 'int32x8_store'
sort.c: int32x8_store(y + n - 8,y0);
sort.c: ^~~~~~~~~~~~~
sort.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:41:0,
sort.c: from sort.c:4:
sort.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avxintrin.h:925:1: error: inlining failed in call to always_inline '_mm256_storeu_si256': target specific option mismatch
sort.c: _mm256_storeu_si256 (__m256i_u *__P, __m256i __A)
sort.c: ^~~~~~~~~~~~~~~~~~~
sort.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE avx2
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE avx2
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE avx2
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE avx2

Compiler output

Implementation: oldavx2
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
int32_sort.c: int32_sort.c: In function 'minmax8':
int32_sort.c: int32_sort.c:330:11: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
int32_sort.c: __m256i a = _mm256_loadu_si256((__m256i *) x);
int32_sort.c: ^
int32_sort.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:41:0,
int32_sort.c: from int32_sort.c:3:
int32_sort.c: int32_sort.c: In function 'minmax02through1315':
int32_sort.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avxintrin.h:925:1: error: inlining failed in call to always_inline '_mm256_storeu_si256': target specific option mismatch
int32_sort.c: _mm256_storeu_si256 (__m256i_u *__P, __m256i __A)
int32_sort.c: ^~~~~~~~~~~~~~~~~~~
int32_sort.c: int32_sort.c:25:3: note: called from here
int32_sort.c: _mm256_storeu_si256((__m256i *) (x + 8),b);
int32_sort.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int32_sort.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:41:0,
int32_sort.c: from int32_sort.c:3:
int32_sort.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avxintrin.h:925:1: error: inlining failed in call to always_inline '_mm256_storeu_si256': target specific option mismatch
int32_sort.c: _mm256_storeu_si256 (__m256i_u *__P, __m256i __A)
int32_sort.c: ^~~~~~~~~~~~~~~~~~~
int32_sort.c: int32_sort.c:24:3: note: called from here
int32_sort.c: _mm256_storeu_si256((__m256i *) x,a);
int32_sort.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int32_sort.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:43:0,
int32_sort.c: from int32_sort.c:3:
int32_sort.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avx2intrin.h:878:1: error: inlining failed in call to always_inline '_mm256_unpackhi_epi64': target specific option mismatch
int32_sort.c: _mm256_unpackhi_epi64 (__m256i __A, __m256i __B)
int32_sort.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE oldavx2
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE oldavx2
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE oldavx2
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE oldavx2

Compiler output

Implementation: sid1607
Security model: unknown
Compiler: g++ -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
api.cpp: In file included from api.cpp:3:0:
api.cpp: merge_sort.h: In function '__m256i load_reg256(int*)':
api.cpp: merge_sort.h:17:34: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
api.cpp: inline __m256i load_reg256(int *a) {
api.cpp: ^
merge_sort.cpp: In file included from merge_sort.cpp:1:0:
merge_sort.cpp: merge_sort.h: In function '__m256i load_reg256(int*)':
merge_sort.cpp: merge_sort.h:17:34: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
merge_sort.cpp: inline __m256i load_reg256(int *a) {
merge_sort.cpp: ^
merge_sort.cpp: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:43:0,
merge_sort.cpp: from merge_sort.h:1,
merge_sort.cpp: from merge_sort.cpp:1:
merge_sort.cpp: /usr/lib/gcc/x86_64-linux-gnu/7/include/avx2intrin.h: In function '__m256i reverse(__m256i&)':
merge_sort.cpp: /usr/lib/gcc/x86_64-linux-gnu/7/include/avx2intrin.h:1041:1: error: inlining failed in call to always_inline '__m256i _mm256_permutevar8x32_epi32(__m256i, __m256i)': target specific option mismatch
merge_sort.cpp: _mm256_permutevar8x32_epi32 (__m256i __X, __m256i __Y)
merge_sort.cpp: ^~~~~~~~~~~~~~~~~~~~~~~~~~~
merge_sort.cpp: merge_sort.cpp:11:37: note: called from here
merge_sort.cpp: return _mm256_permutevar8x32_epi32(v, global_masks.rev_idx_mask);
merge_sort.cpp: ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
g++ -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE sid1607
g++ -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE sid1607
g++ -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE sid1607
g++ -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE sid1607