Implementation notes: amd64, cel02, crypto_core/mult3sntrup653

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_core
Primitive: mult3sntrup653
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
793415735 0 031141 824 864avxgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
1282011907 0 022836 792 760avxclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
1564611163 0 023308 816 800avxgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
2421410690 0 022532 816 800avxgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
2586812048 0 022808 800 800avxgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
5313162015 0 014778 800 760refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
1787350463 0 011340 792 760refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
1864462515 0 011192 800 800refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
1896798584 0 012684 816 800refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
1906738637 0 012444 816 800refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
19516687230 0 022621 824 864refgcc_-march=native_-mtune=native_-O3_-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: 0x556f32da0370: v4i64 = X86ISD::VTRUNC 0x556f32da0240
try.c: 0x556f32da0240: v16i32 = vselect 0x556f32da3ba0, 0x556f32d46d90, 0x556f32da0110
try.c: 0x556f32da3ba0: v4i1 = X86ISD::PCMPGTM 0x556f32d98140, 0x556f32d93cd0
try.c: 0x556f32d98140: v4i64 = X86ISD::VBROADCAST 0x556f32d5e6b0
try.c: 0x556f32d5e6b0: i64,ch = load<LD8[%lsr.iv6971]> 0x556f32ca8960, 0x556f32d7d160, undef:i64
try.c: 0x556f32d7d160: i64,ch = CopyFromReg 0x556f32ca8960, Register:i64 %vreg50
try.c: 0x556f32d93f30: i64 = Register %vreg50
try.c: 0x556f32d45400: i64 = undef
try.c: 0x556f32d93cd0: v4i64,ch = CopyFromReg 0x556f32ca8960, Register:v4i64 %vreg13
try.c: 0x556f32d98990: v4i64 = Register %vreg13
try.c: 0x556f32d46d90: v16i32 = X86ISD::VBROADCAST 0x556f32d983a0
try.c: 0x556f32d983a0: i32,ch = load<LD4[ConstantPool]> 0x556f32ca8960, 0x556f32d5dc90, undef:i64
try.c: 0x556f32d5dc90: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x556f32d89f80: i64 = TargetConstantPool<i32 1> 0
try.c: 0x556f32d45400: i64 = undef
try.c: 0x556f32da0110: 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: 0x556f32d9ffe0: i32 = Constant<0>
try.c: 0x556f32d9ffe0: i32 = Constant<0>
try.c: 0x556f32d9ffe0: i32 = Constant<0>
try.c: 0x556f32d9ffe0: i32 = Constant<0>
try.c: 0x556f32d9ffe0: i32 = Constant<0>
try.c: 0x556f32d9ffe0: i32 = Constant<0>
try.c: 0x556f32d9ffe0: i32 = Constant<0>
try.c: 0x556f32d9ffe0: i32 = Constant<0>
try.c: 0x556f32d9ffe0: 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: 0x55595d20b830: v4i64 = X86ISD::VTRUNC 0x55595d20b700
try.c: 0x55595d20b700: v16i32 = vselect 0x55595d1fc1a0, 0x55595d192530, 0x55595d20b5d0
try.c: 0x55595d1fc1a0: v4i1 = X86ISD::PCMPGTM 0x55595d1e7a60, 0x55595d1e35f0
try.c: 0x55595d1e7a60: v4i64 = X86ISD::VBROADCAST 0x55595d1929f0
try.c: 0x55595d1929f0: i64,ch = load<LD8[%lsr.iv6971]> 0x55595d0e1a30, 0x55595d1974c0, undef:i64
try.c: 0x55595d1974c0: i64,ch = CopyFromReg 0x55595d0e1a30, Register:i64 %vreg50
try.c: 0x55595d1e3850: i64 = Register %vreg50
try.c: 0x55595d181cf0: i64 = undef
try.c: 0x55595d1e35f0: v4i64,ch = CopyFromReg 0x55595d0e1a30, Register:v4i64 %vreg13
try.c: 0x55595d1e82b0: v4i64 = Register %vreg13
try.c: 0x55595d192530: v16i32 = X86ISD::VBROADCAST 0x55595d1e7cc0
try.c: 0x55595d1e7cc0: i32,ch = load<LD4[ConstantPool]> 0x55595d0e1a30, 0x55595d194ed0, undef:i64
try.c: 0x55595d194ed0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55595d182670: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55595d181cf0: i64 = undef
try.c: 0x55595d20b5d0: 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: 0x55595d20b4a0: i32 = Constant<0>
try.c: 0x55595d20b4a0: i32 = Constant<0>
try.c: 0x55595d20b4a0: i32 = Constant<0>
try.c: 0x55595d20b4a0: i32 = Constant<0>
try.c: 0x55595d20b4a0: i32 = Constant<0>
try.c: 0x55595d20b4a0: i32 = Constant<0>
try.c: 0x55595d20b4a0: i32 = Constant<0>
try.c: 0x55595d20b4a0: i32 = Constant<0>
try.c: 0x55595d20b4a0: 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: 0x55d6bf6f82f0: v4i64 = X86ISD::VTRUNC 0x55d6bf6f81c0
try.c: 0x55d6bf6f81c0: v16i32 = vselect 0x55d6bf6d8dc0, 0x55d6bf68d670, 0x55d6bf6f8090
try.c: 0x55d6bf6d8dc0: v4i1 = X86ISD::PCMPGTM 0x55d6bf6e0990, 0x55d6bf6dc520
try.c: 0x55d6bf6e0990: v4i64 = X86ISD::VBROADCAST 0x55d6bf6878d0
try.c: 0x55d6bf6878d0: i64,ch = load<LD8[%lsr.iv6971]> 0x55d6bf5f1950, 0x55d6bf68aaa0, undef:i64
try.c: 0x55d6bf68aaa0: i64,ch = CopyFromReg 0x55d6bf5f1950, Register:i64 %vreg50
try.c: 0x55d6bf6dc780: i64 = Register %vreg50
try.c: 0x55d6bf688da0: i64 = undef
try.c: 0x55d6bf6dc520: v4i64,ch = CopyFromReg 0x55d6bf5f1950, Register:v4i64 %vreg13
try.c: 0x55d6bf6e11e0: v4i64 = Register %vreg13
try.c: 0x55d6bf68d670: v16i32 = X86ISD::VBROADCAST 0x55d6bf6e0bf0
try.c: 0x55d6bf6e0bf0: i32,ch = load<LD4[ConstantPool]> 0x55d6bf5f1950, 0x55d6bf686eb0, undef:i64
try.c: 0x55d6bf686eb0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55d6bf6cbd00: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55d6bf688da0: i64 = undef
try.c: 0x55d6bf6f8090: 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: 0x55d6bf6f7f60: i32 = Constant<0>
try.c: 0x55d6bf6f7f60: i32 = Constant<0>
try.c: 0x55d6bf6f7f60: i32 = Constant<0>
try.c: 0x55d6bf6f7f60: i32 = Constant<0>
try.c: 0x55d6bf6f7f60: i32 = Constant<0>
try.c: 0x55d6bf6f7f60: i32 = Constant<0>
try.c: 0x55d6bf6f7f60: i32 = Constant<0>
try.c: 0x55d6bf6f7f60: i32 = Constant<0>
try.c: 0x55d6bf6f7f60: 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
mult768.c: mult768.c:208:7: error: always_inline function '_mm256_set1_epi16' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_mult3sntrup653_avx_constbranchindex' that is compiled without support for 'sse4.2'
mult768.c: x = const_x16(0);
mult768.c: ^
mult768.c: mult768.c:10:19: note: expanded from macro 'const_x16'
mult768.c: #define const_x16 _mm256_set1_epi16
mult768.c: ^
mult768.c: mult768.c:209:35: error: always_inline function '_mm256_storeu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_mult3sntrup653_avx_constbranchindex' that is compiled without support for 'sse4.2'
mult768.c: for (i = p&~15;i < 768;i += 16) store_x16(&f[i],x);
mult768.c: ^
mult768.c: mult768.c:9:24: note: expanded from macro 'store_x16'
mult768.c: #define store_x16(p,v) _mm256_storeu_si256((int16x16 *) (p),(v))
mult768.c: ^
mult768.c: mult768.c:210:35: error: always_inline function '_mm256_storeu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_mult3sntrup653_avx_constbranchindex' that is compiled without support for 'sse4.2'
mult768.c: for (i = p&~15;i < 768;i += 16) store_x16(&g[i],x);
mult768.c: ^
mult768.c: mult768.c:9:24: note: expanded from macro 'store_x16'
mult768.c: #define store_x16(p,v) _mm256_storeu_si256((int16x16 *) (p),(v))
mult768.c: ^
mult768.c: mult768.c:227:20: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_mult3sntrup653_avx_constbranchindex' that is compiled without support for 'sse4.2'
mult768.c: int16x16 fgi = load_x16(&fg[i]);
mult768.c: ^
mult768.c: mult768.c:8:21: note: expanded from macro 'load_x16'
mult768.c: #define load_x16(p) _mm256_loadu_si256((int16x16 *) (p))
mult768.c: ^
mult768.c: mult768.c:228:21: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_mult3sntrup653_avx_constbranchindex' that is compiled without support for 'sse4.2'
mult768.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: 0x55b8761e1040: v4i64 = X86ISD::VTRUNC 0x55b8761e0f10
try.c: 0x55b8761e0f10: v16i32 = vselect 0x55b8761da100, 0x55b8761859b0, 0x55b8761e0de0
try.c: 0x55b8761da100: v4i1 = X86ISD::PCMPGTM 0x55b8761dca20, 0x55b8761d85b0
try.c: 0x55b8761dca20: v4i64 = X86ISD::VBROADCAST 0x55b876182b50
try.c: 0x55b876182b50: i64,ch = load<LD8[%lsr.iv6971]> 0x55b8760ed9d0, 0x55b8761c6b40, undef:i64
try.c: 0x55b8761c6b40: i64,ch = CopyFromReg 0x55b8760ed9d0, Register:i64 %vreg50
try.c: 0x55b8761d8810: i64 = Register %vreg50
try.c: 0x55b876184020: i64 = undef
try.c: 0x55b8761d85b0: v4i64,ch = CopyFromReg 0x55b8760ed9d0, Register:v4i64 %vreg13
try.c: 0x55b8761dd270: v4i64 = Register %vreg13
try.c: 0x55b8761859b0: v16i32 = X86ISD::VBROADCAST 0x55b8761dcc80
try.c: 0x55b8761dcc80: i32,ch = load<LD4[ConstantPool]> 0x55b8760ed9d0, 0x55b87617df20, undef:i64
try.c: 0x55b87617df20: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55b8761c7d40: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55b876184020: i64 = undef
try.c: 0x55b8761e0de0: 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: 0x55b8761e0cb0: i32 = Constant<0>
try.c: 0x55b8761e0cb0: i32 = Constant<0>
try.c: 0x55b8761e0cb0: i32 = Constant<0>
try.c: 0x55b8761e0cb0: i32 = Constant<0>
try.c: 0x55b8761e0cb0: i32 = Constant<0>
try.c: 0x55b8761e0cb0: i32 = Constant<0>
try.c: 0x55b8761e0cb0: i32 = Constant<0>
try.c: 0x55b8761e0cb0: i32 = Constant<0>
try.c: 0x55b8761e0cb0: 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: 0x55faa4926ea0: v4i64 = X86ISD::VTRUNC 0x55faa4926d70
try.c: 0x55faa4926d70: v16i32 = vselect 0x55faa493ff90, 0x55faa48bfdf0, 0x55faa4926c40
try.c: 0x55faa493ff90: v4i1 = X86ISD::PCMPGTM 0x55faa4920d10, 0x55faa491c0e0
try.c: 0x55faa4920d10: v4i64 = X86ISD::VBROADCAST 0x55faa48c02b0
try.c: 0x55faa48c02b0: i64,ch = load<LD8[%lsr.iv6971]> 0x55faa481aa40, 0x55faa48bcd60, undef:i64
try.c: 0x55faa48bcd60: i64,ch = CopyFromReg 0x55faa481aa40, Register:i64 %vreg50
try.c: 0x55faa491c340: i64 = Register %vreg50
try.c: 0x55faa48c4170: i64 = undef
try.c: 0x55faa491c0e0: v4i64,ch = CopyFromReg 0x55faa481aa40, Register:v4i64 %vreg13
try.c: 0x55faa4921560: v4i64 = Register %vreg13
try.c: 0x55faa48bfdf0: v16i32 = X86ISD::VBROADCAST 0x55faa4920f70
try.c: 0x55faa4920f70: i32,ch = load<LD4[ConstantPool]> 0x55faa481aa40, 0x55faa48c2790, undef:i64
try.c: 0x55faa48c2790: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55faa48c4af0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55faa48c4170: i64 = undef
try.c: 0x55faa4926c40: 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: 0x55faa4926b10: i32 = Constant<0>
try.c: 0x55faa4926b10: i32 = Constant<0>
try.c: 0x55faa4926b10: i32 = Constant<0>
try.c: 0x55faa4926b10: i32 = Constant<0>
try.c: 0x55faa4926b10: i32 = Constant<0>
try.c: 0x55faa4926b10: i32 = Constant<0>
try.c: 0x55faa4926b10: i32 = Constant<0>
try.c: 0x55faa4926b10: i32 = Constant<0>
try.c: 0x55faa4926b10: 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: 0x55577266a970: v4i64 = X86ISD::VTRUNC 0x55577266a840
try.c: 0x55577266a840: v16i32 = vselect 0x55577266e150, 0x555772618b40, 0x55577266a710
try.c: 0x55577266e150: v4i1 = X86ISD::PCMPGTM 0x555772662710, 0x55577265e2a0
try.c: 0x555772662710: v4i64 = X86ISD::VBROADCAST 0x555772604fe0
try.c: 0x555772604fe0: i64,ch = load<LD8[%lsr.iv6971]> 0x555772573940, 0x5557726503c0, undef:i64
try.c: 0x5557726503c0: i64,ch = CopyFromReg 0x555772573940, Register:i64 %vreg50
try.c: 0x55577265e500: i64 = Register %vreg50
try.c: 0x5557726064b0: i64 = undef
try.c: 0x55577265e2a0: v4i64,ch = CopyFromReg 0x555772573940, Register:v4i64 %vreg13
try.c: 0x555772662f60: v4i64 = Register %vreg13
try.c: 0x555772618b40: v16i32 = X86ISD::VBROADCAST 0x555772662970
try.c: 0x555772662970: i32,ch = load<LD4[ConstantPool]> 0x555772573940, 0x55577260b400, undef:i64
try.c: 0x55577260b400: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55577264a7b0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5557726064b0: i64 = undef
try.c: 0x55577266a710: 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: 0x55577266a5e0: i32 = Constant<0>
try.c: 0x55577266a5e0: i32 = Constant<0>
try.c: 0x55577266a5e0: i32 = Constant<0>
try.c: 0x55577266a5e0: i32 = Constant<0>
try.c: 0x55577266a5e0: i32 = Constant<0>
try.c: 0x55577266a5e0: i32 = Constant<0>
try.c: 0x55577266a5e0: i32 = Constant<0>
try.c: 0x55577266a5e0: i32 = Constant<0>
try.c: 0x55577266a5e0: 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