Implementation notes: amd64, cel02, crypto_sign/sphincss256sha256robust

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_sign
Primitive: sphincss256sha256robust
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
451561091652101 0 077778 808 1640T:avx2clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
763000534053813 0 081207 840 1672T:avx2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
791793798652445 0 079455 840 1672T:avx2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
823854314462296 0 092903 840 1704T:avx2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
867174908050196 0 075919 832 1640T:avx2gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
1253127074221834 0 048879 840 1672T:refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
1345406518624282 0 051784 816 1640T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
1785747078626044 0 056575 840 1704T:refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
2001912917420704 0 046370 808 1640T:refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
2011091914621428 0 048839 840 1672T:refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
2387929130619531 0 045319 832 1640T:refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x5617dbe1e1a0: v4i64 = X86ISD::VTRUNC 0x5617dbe1e070
try.c: 0x5617dbe1e070: v16i32 = vselect 0x5617dbe2fad0, 0x5617dbdb7b10, 0x5617dbe1df40
try.c: 0x5617dbe2fad0: v4i1 = X86ISD::PCMPGTM 0x5617dbe17750, 0x5617dbe132e0
try.c: 0x5617dbe17750: v4i64 = X86ISD::VBROADCAST 0x5617dbdbfeb0
try.c: 0x5617dbdbfeb0: i64,ch = load<LD8[%lsr.iv6971]> 0x5617dbd28930, 0x5617dbdfded0, undef:i64
try.c: 0x5617dbdfded0: i64,ch = CopyFromReg 0x5617dbd28930, Register:i64 %vreg50
try.c: 0x5617dbe13540: i64 = Register %vreg50
try.c: 0x5617dbdb6180: i64 = undef
try.c: 0x5617dbe132e0: v4i64,ch = CopyFromReg 0x5617dbd28930, Register:v4i64 %vreg13
try.c: 0x5617dbe17fa0: v4i64 = Register %vreg13
try.c: 0x5617dbdb7b10: v16i32 = X86ISD::VBROADCAST 0x5617dbe179b0
try.c: 0x5617dbe179b0: i32,ch = load<LD4[ConstantPool]> 0x5617dbd28930, 0x5617dbdbf490, undef:i64
try.c: 0x5617dbdbf490: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5617dbdbe270: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5617dbdb6180: i64 = undef
try.c: 0x5617dbe1df40: 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: 0x5617dbe1de10: i32 = Constant<0>
try.c: 0x5617dbe1de10: i32 = Constant<0>
try.c: 0x5617dbe1de10: i32 = Constant<0>
try.c: 0x5617dbe1de10: i32 = Constant<0>
try.c: 0x5617dbe1de10: i32 = Constant<0>
try.c: 0x5617dbe1de10: i32 = Constant<0>
try.c: 0x5617dbe1de10: i32 = Constant<0>
try.c: 0x5617dbe1de10: i32 = Constant<0>
try.c: 0x5617dbe1de10: 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 T:avx2

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55bdbac36390: v4i64 = X86ISD::VTRUNC 0x55bdbac36260
try.c: 0x55bdbac36260: v16i32 = vselect 0x55bdbac28460, 0x55bdbabcf8f0, 0x55bdbac36130
try.c: 0x55bdbac28460: v4i1 = X86ISD::PCMPGTM 0x55bdbac12280, 0x55bdbac0e050
try.c: 0x55bdbac12280: v4i64 = X86ISD::VBROADCAST 0x55bdbabcfdb0
try.c: 0x55bdbabcfdb0: i64,ch = load<LD8[%lsr.iv6971]> 0x55bdbab0ba40, 0x55bdbabbb810, undef:i64
try.c: 0x55bdbabbb810: i64,ch = CopyFromReg 0x55bdbab0ba40, Register:i64 %vreg50
try.c: 0x55bdbac0e2b0: i64 = Register %vreg50
try.c: 0x55bdbabac360: i64 = undef
try.c: 0x55bdbac0e050: v4i64,ch = CopyFromReg 0x55bdbab0ba40, Register:v4i64 %vreg13
try.c: 0x55bdbac12ad0: v4i64 = Register %vreg13
try.c: 0x55bdbabcf8f0: v16i32 = X86ISD::VBROADCAST 0x55bdbac124e0
try.c: 0x55bdbac124e0: i32,ch = load<LD4[ConstantPool]> 0x55bdbab0ba40, 0x55bdbabd2290, undef:i64
try.c: 0x55bdbabd2290: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55bdbabacce0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55bdbabac360: i64 = undef
try.c: 0x55bdbac36130: 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: 0x55bdbac36000: i32 = Constant<0>
try.c: 0x55bdbac36000: i32 = Constant<0>
try.c: 0x55bdbac36000: i32 = Constant<0>
try.c: 0x55bdbac36000: i32 = Constant<0>
try.c: 0x55bdbac36000: i32 = Constant<0>
try.c: 0x55bdbac36000: i32 = Constant<0>
try.c: 0x55bdbac36000: i32 = Constant<0>
try.c: 0x55bdbac36000: i32 = Constant<0>
try.c: 0x55bdbac36000: 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 T:avx2

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x56018d589000: v4i64 = X86ISD::VTRUNC 0x56018d588ed0
try.c: 0x56018d588ed0: v16i32 = vselect 0x56018d533620, 0x56018d528e90, 0x56018d588da0
try.c: 0x56018d533620: v4i1 = X86ISD::PCMPGTM 0x56018d5716a0, 0x56018d56d230
try.c: 0x56018d5716a0: v4i64 = X86ISD::VBROADCAST 0x56018d512ad0
try.c: 0x56018d512ad0: i64,ch = load<LD8[%lsr.iv6971]> 0x56018d482960, 0x56018d55f350, undef:i64
try.c: 0x56018d55f350: i64,ch = CopyFromReg 0x56018d482960, Register:i64 %vreg50
try.c: 0x56018d56d490: i64 = Register %vreg50
try.c: 0x56018d527500: i64 = undef
try.c: 0x56018d56d230: v4i64,ch = CopyFromReg 0x56018d482960, Register:v4i64 %vreg13
try.c: 0x56018d571ef0: v4i64 = Register %vreg13
try.c: 0x56018d528e90: v16i32 = X86ISD::VBROADCAST 0x56018d571900
try.c: 0x56018d571900: i32,ch = load<LD4[ConstantPool]> 0x56018d482960, 0x56018d5120b0, undef:i64
try.c: 0x56018d5120b0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x56018d559820: i64 = TargetConstantPool<i32 1> 0
try.c: 0x56018d527500: i64 = undef
try.c: 0x56018d588da0: 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: 0x56018d588c70: i32 = Constant<0>
try.c: 0x56018d588c70: i32 = Constant<0>
try.c: 0x56018d588c70: i32 = Constant<0>
try.c: 0x56018d588c70: i32 = Constant<0>
try.c: 0x56018d588c70: i32 = Constant<0>
try.c: 0x56018d588c70: i32 = Constant<0>
try.c: 0x56018d588c70: i32 = Constant<0>
try.c: 0x56018d588c70: i32 = Constant<0>
try.c: 0x56018d588c70: 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 T:avx2

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
sha256avx.c: sha256avx.c:11:15: error: always_inline function '_mm256_unpacklo_epi32' requires target feature 'sse4.2', but would be inlined into function 'transpose' that is compiled without support for 'sse4.2'
sha256avx.c: tmp0[0] = _mm256_unpacklo_epi32(s[0], s[1]);
sha256avx.c: ^
sha256avx.c: sha256avx.c:12:15: error: always_inline function '_mm256_unpackhi_epi32' requires target feature 'sse4.2', but would be inlined into function 'transpose' that is compiled without support for 'sse4.2'
sha256avx.c: tmp0[1] = _mm256_unpackhi_epi32(s[0], s[1]);
sha256avx.c: ^
sha256avx.c: sha256avx.c:13:15: error: always_inline function '_mm256_unpacklo_epi32' requires target feature 'sse4.2', but would be inlined into function 'transpose' that is compiled without support for 'sse4.2'
sha256avx.c: tmp0[2] = _mm256_unpacklo_epi32(s[2], s[3]);
sha256avx.c: ^
sha256avx.c: sha256avx.c:14:15: error: always_inline function '_mm256_unpackhi_epi32' requires target feature 'sse4.2', but would be inlined into function 'transpose' that is compiled without support for 'sse4.2'
sha256avx.c: tmp0[3] = _mm256_unpackhi_epi32(s[2], s[3]);
sha256avx.c: ^
sha256avx.c: sha256avx.c:15:15: error: always_inline function '_mm256_unpacklo_epi32' requires target feature 'sse4.2', but would be inlined into function 'transpose' that is compiled without support for 'sse4.2'
sha256avx.c: tmp0[4] = _mm256_unpacklo_epi32(s[4], s[5]);
sha256avx.c: ^
sha256avx.c: sha256avx.c:16:15: error: always_inline function '_mm256_unpackhi_epi32' requires target feature 'sse4.2', but would be inlined into function 'transpose' that is compiled without support for 'sse4.2'
sha256avx.c: tmp0[5] = _mm256_unpackhi_epi32(s[4], s[5]);
sha256avx.c: ^
sha256avx.c: sha256avx.c:17:15: error: always_inline function '_mm256_unpacklo_epi32' requires target feature 'sse4.2', but would be inlined into function 'transpose' that is compiled without support for 'sse4.2'
sha256avx.c: tmp0[6] = _mm256_unpacklo_epi32(s[6], s[7]);
sha256avx.c: ^
sha256avx.c: sha256avx.c:18:15: error: always_inline function '_mm256_unpackhi_epi32' requires target feature 'sse4.2', but would be inlined into function 'transpose' that is compiled without support for 'sse4.2'
sha256avx.c: tmp0[7] = _mm256_unpackhi_epi32(s[6], s[7]);
sha256avx.c: ^
sha256avx.c: sha256avx.c:19:15: error: always_inline function '_mm256_unpacklo_epi64' requires target feature 'sse4.2', but would be inlined into function 'transpose' that is compiled without support for 'sse4.2'
sha256avx.c: ...

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

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55daf551e580: v4i64 = X86ISD::VTRUNC 0x55daf551e450
try.c: 0x55daf551e450: v16i32 = vselect 0x55daf5524280, 0x55daf54d1de0, 0x55daf551e320
try.c: 0x55daf5524280: v4i1 = X86ISD::PCMPGTM 0x55daf5518f50, 0x55daf5514ae0
try.c: 0x55daf5518f50: v4i64 = X86ISD::VBROADCAST 0x55daf54b6ec0
try.c: 0x55daf54b6ec0: i64,ch = load<LD8[%lsr.iv6971]> 0x55daf5429940, 0x55daf550be50, undef:i64
try.c: 0x55daf550be50: i64,ch = CopyFromReg 0x55daf5429940, Register:i64 %vreg50
try.c: 0x55daf5514d40: i64 = Register %vreg50
try.c: 0x55daf54b8390: i64 = undef
try.c: 0x55daf5514ae0: v4i64,ch = CopyFromReg 0x55daf5429940, Register:v4i64 %vreg13
try.c: 0x55daf55197a0: v4i64 = Register %vreg13
try.c: 0x55daf54d1de0: v16i32 = X86ISD::VBROADCAST 0x55daf55191b0
try.c: 0x55daf55191b0: i32,ch = load<LD4[ConstantPool]> 0x55daf5429940, 0x55daf54bdb30, undef:i64
try.c: 0x55daf54bdb30: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55daf54d6710: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55daf54b8390: i64 = undef
try.c: 0x55daf551e320: 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: 0x55daf551e1f0: i32 = Constant<0>
try.c: 0x55daf551e1f0: i32 = Constant<0>
try.c: 0x55daf551e1f0: i32 = Constant<0>
try.c: 0x55daf551e1f0: i32 = Constant<0>
try.c: 0x55daf551e1f0: i32 = Constant<0>
try.c: 0x55daf551e1f0: i32 = Constant<0>
try.c: 0x55daf551e1f0: i32 = Constant<0>
try.c: 0x55daf551e1f0: i32 = Constant<0>
try.c: 0x55daf551e1f0: 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 T:ref

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55b673290dc0: v4i64 = X86ISD::VTRUNC 0x55b673290c90
try.c: 0x55b673290c90: v16i32 = vselect 0x55b67327abb0, 0x55b673210da0, 0x55b673290b60
try.c: 0x55b67327abb0: v4i1 = X86ISD::PCMPGTM 0x55b673276010, 0x55b673271ba0
try.c: 0x55b673276010: v4i64 = X86ISD::VBROADCAST 0x55b673211260
try.c: 0x55b673211260: i64,ch = load<LD8[%lsr.iv6971]> 0x55b67316fa30, 0x55b67320b2a0, undef:i64
try.c: 0x55b67320b2a0: i64,ch = CopyFromReg 0x55b67316fa30, Register:i64 %vreg50
try.c: 0x55b673271e00: i64 = Register %vreg50
try.c: 0x55b673218050: i64 = undef
try.c: 0x55b673271ba0: v4i64,ch = CopyFromReg 0x55b67316fa30, Register:v4i64 %vreg13
try.c: 0x55b673276860: v4i64 = Register %vreg13
try.c: 0x55b673210da0: v16i32 = X86ISD::VBROADCAST 0x55b673276270
try.c: 0x55b673276270: i32,ch = load<LD4[ConstantPool]> 0x55b67316fa30, 0x55b673209870, undef:i64
try.c: 0x55b673209870: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55b6732189d0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55b673218050: i64 = undef
try.c: 0x55b673290b60: 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: 0x55b673290a30: i32 = Constant<0>
try.c: 0x55b673290a30: i32 = Constant<0>
try.c: 0x55b673290a30: i32 = Constant<0>
try.c: 0x55b673290a30: i32 = Constant<0>
try.c: 0x55b673290a30: i32 = Constant<0>
try.c: 0x55b673290a30: i32 = Constant<0>
try.c: 0x55b673290a30: i32 = Constant<0>
try.c: 0x55b673290a30: i32 = Constant<0>
try.c: 0x55b673290a30: 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 T:ref

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x5557764f7910: v4i64 = X86ISD::VTRUNC 0x5557764f77e0
try.c: 0x5557764f77e0: v16i32 = vselect 0x5557764f42f0, 0x555776498000, 0x5557764f76b0
try.c: 0x5557764f42f0: v4i1 = X86ISD::PCMPGTM 0x5557764dcf80, 0x5557764d8b10
try.c: 0x5557764dcf80: v4i64 = X86ISD::VBROADCAST 0x555776482ea0
try.c: 0x555776482ea0: i64,ch = load<LD8[%lsr.iv6971]> 0x5557763ed950, 0x55577649c500, undef:i64
try.c: 0x55577649c500: i64,ch = CopyFromReg 0x5557763ed950, Register:i64 %vreg50
try.c: 0x5557764d8d70: i64 = Register %vreg50
try.c: 0x555776484370: i64 = undef
try.c: 0x5557764d8b10: v4i64,ch = CopyFromReg 0x5557763ed950, Register:v4i64 %vreg13
try.c: 0x5557764dd7d0: v4i64 = Register %vreg13
try.c: 0x555776498000: v16i32 = X86ISD::VBROADCAST 0x5557764dd1e0
try.c: 0x5557764dd1e0: i32,ch = load<LD4[ConstantPool]> 0x5557763ed950, 0x55577647d590, undef:i64
try.c: 0x55577647d590: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5557764c19b0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x555776484370: i64 = undef
try.c: 0x5557764f76b0: 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: 0x5557764f7580: i32 = Constant<0>
try.c: 0x5557764f7580: i32 = Constant<0>
try.c: 0x5557764f7580: i32 = Constant<0>
try.c: 0x5557764f7580: i32 = Constant<0>
try.c: 0x5557764f7580: i32 = Constant<0>
try.c: 0x5557764f7580: i32 = Constant<0>
try.c: 0x5557764f7580: i32 = Constant<0>
try.c: 0x5557764f7580: i32 = Constant<0>
try.c: 0x5557764f7580: 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 T:ref