Implementation notes: amd64, cel02, crypto_core/mult3sntrup857

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_core
Primitive: mult3sntrup857
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
1519016689 0 032093 824 864avxgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
1968612706 0 023644 792 760avxclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
3328412019 0 024164 816 800avxgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
3690811830 0 023676 816 800avxgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
4863013548 0 024312 800 800avxgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
8117021727 0 014490 800 760refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
1667954584 0 012684 816 800refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
2841482463 0 011340 792 760refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
32088666749 0 022141 824 864refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
3237446637 0 012444 816 800refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
3321870515 0 011192 800 800refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130

Compiler output

Implementation: avx
Security model: constbranchindex
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x564c9bf73650: v4i64 = X86ISD::VTRUNC 0x564c9bf73520
try.c: 0x564c9bf73520: v16i32 = vselect 0x564c9bf6f9b0, 0x564c9bf13590, 0x564c9bf733f0
try.c: 0x564c9bf6f9b0: v4i1 = X86ISD::PCMPGTM 0x564c9bf6e9a0, 0x564c9bf6a530
try.c: 0x564c9bf6e9a0: v4i64 = X86ISD::VBROADCAST 0x564c9bf18d10
try.c: 0x564c9bf18d10: i64,ch = load<LD8[%lsr.iv6971]> 0x564c9be7f950, 0x564c9bf65390, undef:i64
try.c: 0x564c9bf65390: i64,ch = CopyFromReg 0x564c9be7f950, Register:i64 %vreg50
try.c: 0x564c9bf6a790: i64 = Register %vreg50
try.c: 0x564c9bf11c00: i64 = undef
try.c: 0x564c9bf6a530: v4i64,ch = CopyFromReg 0x564c9be7f950, Register:v4i64 %vreg13
try.c: 0x564c9bf6f1f0: v4i64 = Register %vreg13
try.c: 0x564c9bf13590: v16i32 = X86ISD::VBROADCAST 0x564c9bf6ec00
try.c: 0x564c9bf6ec00: i32,ch = load<LD4[ConstantPool]> 0x564c9be7f950, 0x564c9bf182f0, undef:i64
try.c: 0x564c9bf182f0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x564c9bf248a0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x564c9bf11c00: i64 = undef
try.c: 0x564c9bf733f0: 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: 0x564c9bf732c0: i32 = Constant<0>
try.c: 0x564c9bf732c0: i32 = Constant<0>
try.c: 0x564c9bf732c0: i32 = Constant<0>
try.c: 0x564c9bf732c0: i32 = Constant<0>
try.c: 0x564c9bf732c0: i32 = Constant<0>
try.c: 0x564c9bf732c0: i32 = Constant<0>
try.c: 0x564c9bf732c0: i32 = Constant<0>
try.c: 0x564c9bf732c0: i32 = Constant<0>
try.c: 0x564c9bf732c0: i32 = Constant<0>
try.c: ...

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

Compiler output

Implementation: avx
Security model: constbranchindex
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x5562450ad420: v4i64 = X86ISD::VTRUNC 0x5562450ad2f0
try.c: 0x5562450ad2f0: v16i32 = vselect 0x5562450bf160, 0x556245039f80, 0x5562450ad1c0
try.c: 0x5562450bf160: v4i1 = X86ISD::PCMPGTM 0x5562450a5de0, 0x5562450a1970
try.c: 0x5562450a5de0: v4i64 = X86ISD::VBROADCAST 0x55624503a440
try.c: 0x55624503a440: i64,ch = load<LD8[%lsr.iv6971]> 0x556244f9fa30, 0x5562450421a0, undef:i64
try.c: 0x5562450421a0: i64,ch = CopyFromReg 0x556244f9fa30, Register:i64 %vreg50
try.c: 0x5562450a1bd0: i64 = Register %vreg50
try.c: 0x55624501d640: i64 = undef
try.c: 0x5562450a1970: v4i64,ch = CopyFromReg 0x556244f9fa30, Register:v4i64 %vreg13
try.c: 0x5562450a6630: v4i64 = Register %vreg13
try.c: 0x556245039f80: v16i32 = X86ISD::VBROADCAST 0x5562450a6040
try.c: 0x5562450a6040: i32,ch = load<LD4[ConstantPool]> 0x556244f9fa30, 0x556245040770, undef:i64
try.c: 0x556245040770: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55624501dfc0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55624501d640: i64 = undef
try.c: 0x5562450ad1c0: 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: 0x5562450ad090: i32 = Constant<0>
try.c: 0x5562450ad090: i32 = Constant<0>
try.c: 0x5562450ad090: i32 = Constant<0>
try.c: 0x5562450ad090: i32 = Constant<0>
try.c: 0x5562450ad090: i32 = Constant<0>
try.c: 0x5562450ad090: i32 = Constant<0>
try.c: 0x5562450ad090: i32 = Constant<0>
try.c: 0x5562450ad090: i32 = Constant<0>
try.c: 0x5562450ad090: i32 = Constant<0>
try.c: ...

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

Compiler output

Implementation: avx
Security model: constbranchindex
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x5641de315200: v4i64 = X86ISD::VTRUNC 0x5641de3150d0
try.c: 0x5641de3150d0: v16i32 = vselect 0x5641de2f2cb0, 0x5641de2a6820, 0x5641de314fa0
try.c: 0x5641de2f2cb0: v4i1 = X86ISD::PCMPGTM 0x5641de2fa880, 0x5641de2f6410
try.c: 0x5641de2fa880: v4i64 = X86ISD::VBROADCAST 0x5641de2a1db0
try.c: 0x5641de2a1db0: i64,ch = load<LD8[%lsr.iv6971]> 0x5641de20b920, 0x5641de2e5d50, undef:i64
try.c: 0x5641de2e5d50: i64,ch = CopyFromReg 0x5641de20b920, Register:i64 %vreg50
try.c: 0x5641de2f6670: i64 = Register %vreg50
try.c: 0x5641de2a3280: i64 = undef
try.c: 0x5641de2f6410: v4i64,ch = CopyFromReg 0x5641de20b920, Register:v4i64 %vreg13
try.c: 0x5641de2fb0d0: v4i64 = Register %vreg13
try.c: 0x5641de2a6820: v16i32 = X86ISD::VBROADCAST 0x5641de2faae0
try.c: 0x5641de2faae0: i32,ch = load<LD4[ConstantPool]> 0x5641de20b920, 0x5641de2a1390, undef:i64
try.c: 0x5641de2a1390: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5641de267ce0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5641de2a3280: i64 = undef
try.c: 0x5641de314fa0: 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: 0x5641de314e70: i32 = Constant<0>
try.c: 0x5641de314e70: i32 = Constant<0>
try.c: 0x5641de314e70: i32 = Constant<0>
try.c: 0x5641de314e70: i32 = Constant<0>
try.c: 0x5641de314e70: i32 = Constant<0>
try.c: 0x5641de314e70: i32 = Constant<0>
try.c: 0x5641de314e70: i32 = Constant<0>
try.c: 0x5641de314e70: i32 = Constant<0>
try.c: 0x5641de314e70: i32 = Constant<0>
try.c: ...

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

Compiler output

Implementation: avx
Security model: constbranchindex
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
mult1024.c: mult1024.c:212:7: error: always_inline function '_mm256_set1_epi16' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_mult3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
mult1024.c: x = const_x16(0);
mult1024.c: ^
mult1024.c: mult1024.c:10:19: note: expanded from macro 'const_x16'
mult1024.c: #define const_x16 _mm256_set1_epi16
mult1024.c: ^
mult1024.c: mult1024.c:213:36: error: always_inline function '_mm256_storeu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_mult3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
mult1024.c: for (i = p&~15;i < 1024;i += 16) store_x16(&f[i],x);
mult1024.c: ^
mult1024.c: mult1024.c:9:24: note: expanded from macro 'store_x16'
mult1024.c: #define store_x16(p,v) _mm256_storeu_si256((int16x16 *) (p),(v))
mult1024.c: ^
mult1024.c: mult1024.c:214:36: error: always_inline function '_mm256_storeu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_mult3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
mult1024.c: for (i = p&~15;i < 1024;i += 16) store_x16(&g[i],x);
mult1024.c: ^
mult1024.c: mult1024.c:9:24: note: expanded from macro 'store_x16'
mult1024.c: #define store_x16(p,v) _mm256_storeu_si256((int16x16 *) (p),(v))
mult1024.c: ^
mult1024.c: mult1024.c:231:20: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_mult3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
mult1024.c: int16x16 fgi = load_x16(&fg[i]);
mult1024.c: ^
mult1024.c: mult1024.c:8:21: note: expanded from macro 'load_x16'
mult1024.c: #define load_x16(p) _mm256_loadu_si256((int16x16 *) (p))
mult1024.c: ^
mult1024.c: mult1024.c:232:21: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_mult3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
mult1024.c: ...

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

Compiler output

Implementation: ref
Security model: constbranchindex
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x557f9194dc60: v4i64 = X86ISD::VTRUNC 0x557f9194db30
try.c: 0x557f9194db30: v16i32 = vselect 0x557f91922600, 0x557f918d0bc0, 0x557f9194da00
try.c: 0x557f91922600: v4i1 = X86ISD::PCMPGTM 0x557f91929a10, 0x557f919255a0
try.c: 0x557f91929a10: v4i64 = X86ISD::VBROADCAST 0x557f918c9940
try.c: 0x557f918c9940: i64,ch = load<LD8[%lsr.iv6971]> 0x557f9183a920, 0x557f9191c950, undef:i64
try.c: 0x557f9191c950: i64,ch = CopyFromReg 0x557f9183a920, Register:i64 %vreg50
try.c: 0x557f91925800: i64 = Register %vreg50
try.c: 0x557f918cae10: i64 = undef
try.c: 0x557f919255a0: v4i64,ch = CopyFromReg 0x557f9183a920, Register:v4i64 %vreg13
try.c: 0x557f9192a260: v4i64 = Register %vreg13
try.c: 0x557f918d0bc0: v16i32 = X86ISD::VBROADCAST 0x557f91929c70
try.c: 0x557f91929c70: i32,ch = load<LD4[ConstantPool]> 0x557f9183a920, 0x557f918cdf80, undef:i64
try.c: 0x557f918cdf80: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x557f91913560: i64 = TargetConstantPool<i32 1> 0
try.c: 0x557f918cae10: i64 = undef
try.c: 0x557f9194da00: 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: 0x557f9194d8d0: i32 = Constant<0>
try.c: 0x557f9194d8d0: i32 = Constant<0>
try.c: 0x557f9194d8d0: i32 = Constant<0>
try.c: 0x557f9194d8d0: i32 = Constant<0>
try.c: 0x557f9194d8d0: i32 = Constant<0>
try.c: 0x557f9194d8d0: i32 = Constant<0>
try.c: 0x557f9194d8d0: i32 = Constant<0>
try.c: 0x557f9194d8d0: i32 = Constant<0>
try.c: 0x557f9194d8d0: i32 = Constant<0>
try.c: ...

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

Compiler output

Implementation: ref
Security model: constbranchindex
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55dfd9958f60: v4i64 = X86ISD::VTRUNC 0x55dfd9958e30
try.c: 0x55dfd9958e30: v16i32 = vselect 0x55dfd9953930, 0x55dfd98e6f70, 0x55dfd9958d00
try.c: 0x55dfd9953930: v4i1 = X86ISD::PCMPGTM 0x55dfd9950910, 0x55dfd994c4a0
try.c: 0x55dfd9950910: v4i64 = X86ISD::VBROADCAST 0x55dfd98e7430
try.c: 0x55dfd98e7430: i64,ch = load<LD8[%lsr.iv6971]> 0x55dfd9849a30, 0x55dfd98eb9e0, undef:i64
try.c: 0x55dfd98eb9e0: i64,ch = CopyFromReg 0x55dfd9849a30, Register:i64 %vreg50
try.c: 0x55dfd994c700: i64 = Register %vreg50
try.c: 0x55dfd9901bc0: i64 = undef
try.c: 0x55dfd994c4a0: v4i64,ch = CopyFromReg 0x55dfd9849a30, Register:v4i64 %vreg13
try.c: 0x55dfd9951160: v4i64 = Register %vreg13
try.c: 0x55dfd98e6f70: v16i32 = X86ISD::VBROADCAST 0x55dfd9950b70
try.c: 0x55dfd9950b70: i32,ch = load<LD4[ConstantPool]> 0x55dfd9849a30, 0x55dfd98e9910, undef:i64
try.c: 0x55dfd98e9910: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55dfd9902540: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55dfd9901bc0: i64 = undef
try.c: 0x55dfd9958d00: 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: 0x55dfd9958bd0: i32 = Constant<0>
try.c: 0x55dfd9958bd0: i32 = Constant<0>
try.c: 0x55dfd9958bd0: i32 = Constant<0>
try.c: 0x55dfd9958bd0: i32 = Constant<0>
try.c: 0x55dfd9958bd0: i32 = Constant<0>
try.c: 0x55dfd9958bd0: i32 = Constant<0>
try.c: 0x55dfd9958bd0: i32 = Constant<0>
try.c: 0x55dfd9958bd0: i32 = Constant<0>
try.c: 0x55dfd9958bd0: i32 = Constant<0>
try.c: ...

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

Compiler output

Implementation: ref
Security model: constbranchindex
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55aba00e3050: v4i64 = X86ISD::VTRUNC 0x55aba00e2f20
try.c: 0x55aba00e2f20: v16i32 = vselect 0x55aba00beae0, 0x55aba00827b0, 0x55aba00e2df0
try.c: 0x55aba00beae0: v4i1 = X86ISD::PCMPGTM 0x55aba00c86d0, 0x55aba00c4260
try.c: 0x55aba00c86d0: v4i64 = X86ISD::VBROADCAST 0x55aba0074e80
try.c: 0x55aba0074e80: i64,ch = load<LD8[%lsr.iv6971]> 0x55ab9ffd9950, 0x55aba00b26c0, undef:i64
try.c: 0x55aba00b26c0: i64,ch = CopyFromReg 0x55ab9ffd9950, Register:i64 %vreg50
try.c: 0x55aba00c44c0: i64 = Register %vreg50
try.c: 0x55aba0080e20: i64 = undef
try.c: 0x55aba00c4260: v4i64,ch = CopyFromReg 0x55ab9ffd9950, Register:v4i64 %vreg13
try.c: 0x55aba00c8f20: v4i64 = Register %vreg13
try.c: 0x55aba00827b0: v16i32 = X86ISD::VBROADCAST 0x55aba00c8930
try.c: 0x55aba00c8930: i32,ch = load<LD4[ConstantPool]> 0x55ab9ffd9950, 0x55aba0074460, undef:i64
try.c: 0x55aba0074460: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55aba00bb2c0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55aba0080e20: i64 = undef
try.c: 0x55aba00e2df0: 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: 0x55aba00e2cc0: i32 = Constant<0>
try.c: 0x55aba00e2cc0: i32 = Constant<0>
try.c: 0x55aba00e2cc0: i32 = Constant<0>
try.c: 0x55aba00e2cc0: i32 = Constant<0>
try.c: 0x55aba00e2cc0: i32 = Constant<0>
try.c: 0x55aba00e2cc0: i32 = Constant<0>
try.c: 0x55aba00e2cc0: i32 = Constant<0>
try.c: 0x55aba00e2cc0: i32 = Constant<0>
try.c: 0x55aba00e2cc0: i32 = Constant<0>
try.c: ...

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