Implementation notes: amd64, oki, crypto_sign/sphincss128shake256

Computer: oki
Architecture: amd64
CPU ID: GenuineIntel-00050654-bfebfbff
SUPERCOP version: 20181123
Operation: crypto_sign
Primitive: sphincss128shake256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
3666257104? ? ?? ? ?avx2clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019011520181123
3670773166? ? ?? ? ?avx2clang_-O3_-fwrapv_-march=x86-64_-mcpu=core-avx2_-mavx2_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019011520181123
3976686014? ? ?? ? ?avx2gcc_-m64_-march=core-avx2_-O3_-fomit-frame-pointer2019011520181123
4229061422? ? ?? ? ?avx2gcc_-m64_-march=native_-mtune=native_-O3_-fomit-frame-pointer2019011520181123
4245967582? ? ?? ? ?avx2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019011520181123
5228478822? ? ?? ? ?avx2gcc_-m64_-march=core-avx2_-O2_-fomit-frame-pointer2019011520181123
5306130808? ? ?? ? ?avx2gcc_-m64_-march=native_-mtune=native_-O2_-fomit-frame-pointer2019011520181123
5626893874? ? ?? ? ?avx2gcc_-m64_-march=native_-mtune=native_-Os_-fomit-frame-pointer2019011520181123
5654271972? ? ?? ? ?avx2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019011520181123
5761512562? ? ?? ? ?avx2gcc_-m64_-march=core-avx2_-Os_-fomit-frame-pointer2019011520181123
5792126574? ? ?? ? ?avx2gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019011520181123
5820691746? ? ?? ? ?avx2gcc_-m64_-march=core-avx2_-O_-fomit-frame-pointer2019011520181123
5998617354? ? ?? ? ?avx2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019011520181123
6030944090? ? ?? ? ?avx2gcc_-m64_-march=native_-mtune=native_-O_-fomit-frame-pointer2019011520181123

Compiler output

Implementation: avx2
Security model: unknown
Compiler: cc
fips202x4.c: fips202x4.c:30:51: error: unknown type name '__m256i'
fips202x4.c: extern void KeccakP1600times4_PermuteAll_24rounds(__m256i *s);
fips202x4.c: ^
fips202x4.c: fips202x4.c:33:29: error: unknown type name '__m256i'
fips202x4.c: static void keccak_absorb4x(__m256i *s,
fips202x4.c: ^
fips202x4.c: fips202x4.c:109:36: error: unknown type name '__m256i'
fips202x4.c: __m256i *s,
fips202x4.c: ^
fips202x4.c: fips202x4.c: In function 'shake128x4':
fips202x4.c: fips202x4.c:145:3: error: unknown type name '__m256i'
fips202x4.c: __m256i s[25];
fips202x4.c: ^
fips202x4.c: fips202x4.c: In function 'shake256x4':
fips202x4.c: fips202x4.c:190:3: error: unknown type name '__m256i'
fips202x4.c: __m256i s[25];
fips202x4.c: ^

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
cc avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
fips202x4.c: fips202x4.c:154:12: error: always_inline function '_mm256_xor_si256' requires target feature 'sse4.2', but would be inlined into function 'shake128x4' that is compiled without support for 'sse4.2'
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ^
fips202x4.c: 1 error generated.

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments avx2
clang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avx2
clang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avx2
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments
try.c: fatal error: error in backend: Cannot select: 0x15bc030: v4i64 = X86ISD::VTRUNC 0x15bbe60
try.c: 0x15bbe60: v16i32 = vselect 0x15c49e0, 0x1523420, 0x15bbd30
try.c: 0x15c49e0: v4i1 = X86ISD::PCMPGTM 0x15a6530, 0x153a490
try.c: 0x15a6530: v4i64 = X86ISD::VBROADCAST 0x153a820
try.c: 0x153a820: i64,ch = load<LD8[%uglygep72]> 0x149fde0, 0x1540790, undef:i64
try.c: 0x1540790: i64 = add 0x15a7410, 0x1544dc0
try.c: 0x15a7410: i64 = X86ISD::Wrapper TargetGlobalAddress:i64<[64 x i64]* @cycles> 0
try.c: 0x1558c70: i64 = TargetGlobalAddress<[64 x i64]* @cycles> 0
try.c: 0x1544dc0: i64 = shl 0x1558420, Constant:i8<3>
try.c: 0x1558420: i64,ch = CopyFromReg 0x149fde0, Register:i64 %vreg50
try.c: 0x15a78d0: i64 = Register %vreg50
try.c: 0x15463c0: i8 = Constant<3>
try.c: 0x15a4ba0: i64 = undef
try.c: 0x153a490: v4i64,ch = CopyFromReg 0x149fde0, Register:v4i64 %vreg13
try.c: 0x1564f70: v4i64 = Register %vreg13
try.c: 0x1523420: v16i32 = X86ISD::VBROADCAST 0x1558680
try.c: 0x1558680: i32,ch = load<LD4[ConstantPool]> 0x149fde0, 0x15bb9a0, undef:i64
try.c: 0x15bb9a0: i64 = X86ISD::Wrapper TargetConstantPool:i64<i32 1> 0
try.c: 0x1551f90: i64 = TargetConstantPool<i32 1> 0
try.c: 0x15a4ba0: i64 = undef
try.c: 0x15bbd30: v16i32 = BUILD_VECTOR Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>
try.c: 0x15bbc00: i32 = Constant<0>
try.c: 0x15bbc00: i32 = Constant<0>
try.c: 0x15bbc00: i32 = Constant<0>
try.c: 0x15bbc00: i32 = Constant<0>
try.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments
fips202x4.c: fips202x4.c:154:12: error: always_inline function '_mm256_xor_si256' requires target feature 'avx2', but would be inlined into function 'shake128x4' that is compiled without support for 'avx2'
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ^
fips202x4.c: 1 error generated.

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments avx2
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: fatal error: error in backend: Cannot select: 0x1dc4ed0: v4i64 = X86ISD::VTRUNC 0x1dc4d00
try.c: 0x1dc4d00: v16i32 = vselect 0x1dd0f30, 0x1d480e0, 0x1dc4bd0
try.c: 0x1dd0f30: v4i1 = X86ISD::PCMPGTM 0x1daec10, 0x1d48e90
try.c: 0x1daec10: v4i64 = X86ISD::VBROADCAST 0x1d49220
try.c: 0x1d49220: i64,ch = load<LD8[%uglygep72]> 0x1ca9dd0, 0x1daa420, undef:i64
try.c: 0x1daa420: i64 = add 0x1dafaf0, 0x1d5e2b0
try.c: 0x1dafaf0: i64 = X86ISD::Wrapper TargetGlobalAddress:i64<[64 x i64]* @cycles> 0
try.c: 0x1da6a60: i64 = TargetGlobalAddress<[64 x i64]* @cycles> 0
try.c: 0x1d5e2b0: i64 = shl 0x1da6210, Constant:i8<3>
try.c: 0x1da6210: i64,ch = CopyFromReg 0x1ca9dd0, Register:i64 %vreg50
try.c: 0x1daffb0: i64 = Register %vreg50
try.c: 0x1d5f8b0: i8 = Constant<3>
try.c: 0x1dad280: i64 = undef
try.c: 0x1d48e90: v4i64,ch = CopyFromReg 0x1ca9dd0, Register:v4i64 %vreg13
try.c: 0x1d45960: v4i64 = Register %vreg13
try.c: 0x1d480e0: v16i32 = X86ISD::VBROADCAST 0x1da6470
try.c: 0x1da6470: i32,ch = load<LD4[ConstantPool]> 0x1ca9dd0, 0x1dc4840, undef:i64
try.c: 0x1dc4840: i64 = X86ISD::Wrapper TargetConstantPool:i64<i32 1> 0
try.c: 0x1d43480: i64 = TargetConstantPool<i32 1> 0
try.c: 0x1dad280: i64 = undef
try.c: 0x1dc4bd0: v16i32 = BUILD_VECTOR Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>
try.c: 0x1dc4aa0: i32 = Constant<0>
try.c: 0x1dc4aa0: i32 = Constant<0>
try.c: 0x1dc4aa0: i32 = Constant<0>
try.c: 0x1dc4aa0: i32 = Constant<0>
try.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: gcc
fips202x4.c: fips202x4.c: In function 'shake128x4':
fips202x4.c: fips202x4.c:154:10: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fips202x4.c: In file included from /usr/lib64/gcc/x86_64-suse-linux/7/include/immintrin.h:43:0,
fips202x4.c: from fips202x4.c:1:
fips202x4.c: /usr/lib64/gcc/x86_64-suse-linux/7/include/avx2intrin.h:913:1: error: inlining failed in call to always_inline '_mm256_xor_si256': target specific option mismatch
fips202x4.c: _mm256_xor_si256 (__m256i __A, __m256i __B)
fips202x4.c: ^~~~~~~~~~~~~~~~
fips202x4.c: fips202x4.c:154:12: note: called from here
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 86, namely:
CompilerImplementations
gcc avx2
gcc -O2 -fomit-frame-pointer avx2
gcc -O3 -fomit-frame-pointer avx2
gcc -O -fomit-frame-pointer avx2
gcc -Os -fomit-frame-pointer avx2
gcc -fno-schedule-insns -O2 -fomit-frame-pointer avx2
gcc -fno-schedule-insns -O3 -fomit-frame-pointer avx2
gcc -fno-schedule-insns -O -fomit-frame-pointer avx2
gcc -fno-schedule-insns -Os -fomit-frame-pointer avx2
gcc -funroll-loops avx2
gcc -funroll-loops -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -O -fomit-frame-pointer avx2
gcc -funroll-loops -Os -fomit-frame-pointer avx2
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer avx2
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -O -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -Os -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer avx2
gcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -march=barcelona -O -fomit-frame-pointer avx2
gcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer avx2
gcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -march=k8 -O -fomit-frame-pointer avx2
gcc -funroll-loops -march=k8 -Os -fomit-frame-pointer avx2
gcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -march=nocona -O -fomit-frame-pointer avx2
gcc -funroll-loops -march=nocona -Os -fomit-frame-pointer avx2
gcc -m64 -O2 -fomit-frame-pointer avx2
gcc -m64 -O3 -fomit-frame-pointer avx2
gcc -m64 -O -fomit-frame-pointer avx2
gcc -m64 -Os -fomit-frame-pointer avx2
gcc -m64 -march=core2 -O2 -fomit-frame-pointer avx2
gcc -m64 -march=core2 -O3 -fomit-frame-pointer avx2
gcc -m64 -march=core2 -O -fomit-frame-pointer avx2
gcc -m64 -march=core2 -Os -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer avx2
gcc -m64 -march=corei7 -O2 -fomit-frame-pointer avx2
gcc -m64 -march=corei7 -O3 -fomit-frame-pointer avx2
gcc -m64 -march=corei7 -O -fomit-frame-pointer avx2
gcc -m64 -march=corei7 -Os -fomit-frame-pointer avx2
gcc -m64 -march=k8 -O2 -fomit-frame-pointer avx2
gcc -m64 -march=k8 -O3 -fomit-frame-pointer avx2
gcc -m64 -march=k8 -O -fomit-frame-pointer avx2
gcc -m64 -march=k8 -Os -fomit-frame-pointer avx2
gcc -m64 -march=nocona -O2 -fomit-frame-pointer avx2
gcc -m64 -march=nocona -O3 -fomit-frame-pointer avx2
gcc -m64 -march=nocona -O -fomit-frame-pointer avx2
gcc -m64 -march=nocona -Os -fomit-frame-pointer avx2
gcc -march=barcelona -O2 -fomit-frame-pointer avx2
gcc -march=barcelona -O3 -fomit-frame-pointer avx2
gcc -march=barcelona -O -fomit-frame-pointer avx2
gcc -march=barcelona -Os -fomit-frame-pointer avx2
gcc -march=k8 -O2 -fomit-frame-pointer avx2
gcc -march=k8 -O3 -fomit-frame-pointer avx2
gcc -march=k8 -O -fomit-frame-pointer avx2
gcc -march=k8 -Os -fomit-frame-pointer avx2
gcc -march=nocona -O2 -fomit-frame-pointer avx2
gcc -march=nocona -O3 -fomit-frame-pointer avx2
gcc -march=nocona -O -fomit-frame-pointer avx2
gcc -march=nocona -Os -fomit-frame-pointer avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: gcc -m64 -march=barcelona -O2 -fomit-frame-pointer
fips202x4.c: fips202x4.c: In function 'shake128x4':
fips202x4.c: fips202x4.c:154:10: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fips202x4.c: In file included from /usr/lib64/gcc/x86_64-suse-linux/7/include/immintrin.h:43:0,
fips202x4.c: from fips202x4.c:1:
fips202x4.c: /usr/lib64/gcc/x86_64-suse-linux/7/include/avx2intrin.h:913:1: error: inlining failed in call to always_inline '_mm256_xor_si256': target specific option mismatch
fips202x4.c: _mm256_xor_si256 (__m256i __A, __m256i __B)
fips202x4.c: ^~~~~~~~~~~~~~~~
fips202x4.c: fips202x4.c:154:12: note: called from here
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
fips202x4.c: fips202x4.c: In function 'shake128x4':
fips202x4.c: fips202x4.c:154:10: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fips202x4.c: In file included from /usr/lib64/gcc/x86_64-suse-linux/7/include/immintrin.h:43:0,
fips202x4.c: from fips202x4.c:1:
fips202x4.c: /usr/lib64/gcc/x86_64-suse-linux/7/include/avx2intrin.h:913:1: error: inlining failed in call to always_inline '_mm256_xor_si256': target specific option mismatch
fips202x4.c: _mm256_xor_si256 (__m256i __A, __m256i __B)
fips202x4.c: ^~~~~~~~~~~~~~~~
fips202x4.c: fips202x4.c:154:12: note: called from here
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -m64 -march=barcelona -O2 -fomit-frame-pointer avx2
gcc -m64 -march=barcelona -O3 -fomit-frame-pointer avx2
gcc -m64 -march=barcelona -O -fomit-frame-pointer avx2
gcc -m64 -march=barcelona -Os -fomit-frame-pointer avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: gcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer
fips202x4.c: In file included from /usr/lib64/gcc/x86_64-suse-linux/7/include/immintrin.h:43:0,
fips202x4.c: from fips202x4.c:1:
fips202x4.c: fips202x4.c: In function 'shake128x4':
fips202x4.c: /usr/lib64/gcc/x86_64-suse-linux/7/include/avx2intrin.h:913:1: error: inlining failed in call to always_inline '_mm256_xor_si256': target specific option mismatch
fips202x4.c: _mm256_xor_si256 (__m256i __A, __m256i __B)
fips202x4.c: ^~~~~~~~~~~~~~~~
fips202x4.c: fips202x4.c:154:12: note: called from here
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 8, namely:
CompilerImplementations
gcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer avx2
gcc -m64 -march=core-avx-i -O3 -fomit-frame-pointer avx2
gcc -m64 -march=core-avx-i -O -fomit-frame-pointer avx2
gcc -m64 -march=core-avx-i -Os -fomit-frame-pointer avx2
gcc -m64 -march=corei7-avx -O2 -fomit-frame-pointer avx2
gcc -m64 -march=corei7-avx -O3 -fomit-frame-pointer avx2
gcc -m64 -march=corei7-avx -O -fomit-frame-pointer avx2
gcc -m64 -march=corei7-avx -Os -fomit-frame-pointer avx2