Implementation notes: amd64, cel02, crypto_stream/cryptmtv3

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_stream
Primitive: cryptmtv3
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
679012523 4 425604 820 864T:e/v3gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
722011188 4 125042 804 808T:e/v3clang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
733610756 4 122796 796 800T:e/v3clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
806811102 4 424556 820 864T:e/v3gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
808413643 4 430357 828 896T:e/v3gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
83185886 4 417928 804 832T:e/v3gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130

Compiler output

Implementation: T:e/v3
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
cryptmt-v3.c: In file included from cryptmt-v3.c:1:
cryptmt-v3.c: ./e/cryptmt-v3.c:189:18: warning: array index 156 is past the end of the array (which contains 156 elements) [-Warray-bounds]
cryptmt-v3.c: do_recursion(ps->sfmt[N], ps->sfmt[POS1], ps->sfmt[N - 1]);
cryptmt-v3.c: ^ ~
cryptmt-v3.c: ./e/cryptmt-v3.c:25:5: note: array 'sfmt' declared here
cryptmt-v3.c: u32 sfmt[N][4];
cryptmt-v3.c: ^
cryptmt-v3.c: 1 warning generated.
try.c: fatal error: error in backend: Cannot select: 0x55aea1e78280: v4i64 = X86ISD::VTRUNC 0x55aea1e78150
try.c: 0x55aea1e78150: v16i32 = vselect 0x55aea1e72c50, 0x55aea1df93b0, 0x55aea1e78020
try.c: 0x55aea1e72c50: v4i1 = X86ISD::PCMPGTM 0x55aea1e5a8d0, 0x55aea1e56460
try.c: 0x55aea1e5a8d0: v4i64 = X86ISD::VBROADCAST 0x55aea1e067b0
try.c: 0x55aea1e067b0: i64,ch = load<LD8[%lsr.iv6971]> 0x55aea1d6b900, 0x55aea1e44180, undef:i64
try.c: 0x55aea1e44180: i64,ch = CopyFromReg 0x55aea1d6b900, Register:i64 %vreg50
try.c: 0x55aea1e566c0: i64 = Register %vreg50
try.c: 0x55aea1df7a20: i64 = undef
try.c: 0x55aea1e56460: v4i64,ch = CopyFromReg 0x55aea1d6b900, Register:v4i64 %vreg13
try.c: 0x55aea1e5b120: v4i64 = Register %vreg13
try.c: 0x55aea1df93b0: v16i32 = X86ISD::VBROADCAST 0x55aea1e5ab30
try.c: 0x55aea1e5ab30: i32,ch = load<LD4[ConstantPool]> 0x55aea1d6b900, 0x55aea1e05d90, undef:i64
try.c: 0x55aea1e05d90: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55aea1e45380: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55aea1df7a20: i64 = undef
try.c: 0x55aea1e78020: 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: 0x55aea1e77ef0: i32 = Constant<0>
try.c: 0x55aea1e77ef0: i32 = Constant<0>
try.c: 0x55aea1e77ef0: i32 = Constant<0>
try.c: 0x55aea1e77ef0: i32 = Constant<0>
try.c: 0x55aea1e77ef0: i32 = Constant<0>
try.c: 0x55aea1e77ef0: i32 = Constant<0>
try.c: 0x55aea1e77ef0: i32 = Constant<0>
try.c: 0x55aea1e77ef0: i32 = Constant<0>
try.c: 0x55aea1e77ef0: 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:e/v3

Compiler output

Implementation: T:e/v3
Security model: timingleaks
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
cryptmt-v3.c: In file included from cryptmt-v3.c:1:
cryptmt-v3.c: ./e/cryptmt-v3.c:189:18: warning: array index 156 is past the end of the array (which contains 156 elements) [-Warray-bounds]
cryptmt-v3.c: do_recursion(ps->sfmt[N], ps->sfmt[POS1], ps->sfmt[N - 1]);
cryptmt-v3.c: ^ ~
cryptmt-v3.c: ./e/cryptmt-v3.c:25:5: note: array 'sfmt' declared here
cryptmt-v3.c: u32 sfmt[N][4];
cryptmt-v3.c: ^
cryptmt-v3.c: 1 warning generated.
try.c: fatal error: error in backend: Cannot select: 0x562dd7aa3cd0: v4i64 = X86ISD::VTRUNC 0x562dd7aa3ba0
try.c: 0x562dd7aa3ba0: v16i32 = vselect 0x562dd7a91b60, 0x562dd7a1eec0, 0x562dd7aa3a70
try.c: 0x562dd7a91b60: v4i1 = X86ISD::PCMPGTM 0x562dd7a8aef0, 0x562dd7a86ed0
try.c: 0x562dd7a8aef0: v4i64 = X86ISD::VBROADCAST 0x562dd7a1f380
try.c: 0x562dd7a1f380: i64,ch = load<LD8[%lsr.iv6971]> 0x562dd7984a30, 0x562dd7a27c20, undef:i64
try.c: 0x562dd7a27c20: i64,ch = CopyFromReg 0x562dd7984a30, Register:i64 %vreg50
try.c: 0x562dd7a87130: i64 = Register %vreg50
try.c: 0x562dd7a467a0: i64 = undef
try.c: 0x562dd7a86ed0: v4i64,ch = CopyFromReg 0x562dd7984a30, Register:v4i64 %vreg13
try.c: 0x562dd7a8b740: v4i64 = Register %vreg13
try.c: 0x562dd7a1eec0: v16i32 = X86ISD::VBROADCAST 0x562dd7a8b150
try.c: 0x562dd7a8b150: i32,ch = load<LD4[ConstantPool]> 0x562dd7984a30, 0x562dd7a259e0, undef:i64
try.c: 0x562dd7a259e0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x562dd7a47120: i64 = TargetConstantPool<i32 1> 0
try.c: 0x562dd7a467a0: i64 = undef
try.c: 0x562dd7aa3a70: 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: 0x562dd7aa3940: i32 = Constant<0>
try.c: 0x562dd7aa3940: i32 = Constant<0>
try.c: 0x562dd7aa3940: i32 = Constant<0>
try.c: 0x562dd7aa3940: i32 = Constant<0>
try.c: 0x562dd7aa3940: i32 = Constant<0>
try.c: 0x562dd7aa3940: i32 = Constant<0>
try.c: 0x562dd7aa3940: i32 = Constant<0>
try.c: 0x562dd7aa3940: i32 = Constant<0>
try.c: 0x562dd7aa3940: 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:e/v3

Compiler output

Implementation: T:e/v3
Security model: timingleaks
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
cryptmt-v3.c: In file included from cryptmt-v3.c:1:
cryptmt-v3.c: ./e/cryptmt-v3.c:189:18: warning: array index 156 is past the end of the array (which contains 156 elements) [-Warray-bounds]
cryptmt-v3.c: do_recursion(ps->sfmt[N], ps->sfmt[POS1], ps->sfmt[N - 1]);
cryptmt-v3.c: ^ ~
cryptmt-v3.c: ./e/cryptmt-v3.c:25:5: note: array 'sfmt' declared here
cryptmt-v3.c: u32 sfmt[N][4];
cryptmt-v3.c: ^
cryptmt-v3.c: 1 warning generated.
try.c: fatal error: error in backend: Cannot select: 0x563ecc8d3600: v4i64 = X86ISD::VTRUNC 0x563ecc8d34d0
try.c: 0x563ecc8d34d0: v16i32 = vselect 0x563ecc8f1140, 0x563ecc888ba0, 0x563ecc8d33a0
try.c: 0x563ecc8f1140: v4i1 = X86ISD::PCMPGTM 0x563ecc8cdfd0, 0x563ecc8c9b60
try.c: 0x563ecc8cdfd0: v4i64 = X86ISD::VBROADCAST 0x563ecc885d40
try.c: 0x563ecc885d40: i64,ch = load<LD8[%lsr.iv6971]> 0x563ecc7de950, 0x563ecc8c0c10, undef:i64
try.c: 0x563ecc8c0c10: i64,ch = CopyFromReg 0x563ecc7de950, Register:i64 %vreg50
try.c: 0x563ecc8c9dc0: i64 = Register %vreg50
try.c: 0x563ecc887210: i64 = undef
try.c: 0x563ecc8c9b60: v4i64,ch = CopyFromReg 0x563ecc7de950, Register:v4i64 %vreg13
try.c: 0x563ecc8ce820: v4i64 = Register %vreg13
try.c: 0x563ecc888ba0: v16i32 = X86ISD::VBROADCAST 0x563ecc8ce230
try.c: 0x563ecc8ce230: i32,ch = load<LD4[ConstantPool]> 0x563ecc7de950, 0x563ecc871b30, undef:i64
try.c: 0x563ecc871b30: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x563ecc85cea0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x563ecc887210: i64 = undef
try.c: 0x563ecc8d33a0: 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: 0x563ecc8d3270: i32 = Constant<0>
try.c: 0x563ecc8d3270: i32 = Constant<0>
try.c: 0x563ecc8d3270: i32 = Constant<0>
try.c: 0x563ecc8d3270: i32 = Constant<0>
try.c: 0x563ecc8d3270: i32 = Constant<0>
try.c: 0x563ecc8d3270: i32 = Constant<0>
try.c: 0x563ecc8d3270: i32 = Constant<0>
try.c: 0x563ecc8d3270: i32 = Constant<0>
try.c: 0x563ecc8d3270: 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:e/v3

Compiler output

Implementation: T:e/v3
Security model: timingleaks
Compiler: clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
cryptmt-v3.c: In file included from cryptmt-v3.c:1:
cryptmt-v3.c: ./e/cryptmt-v3.c:189:18: warning: array index 156 is past the end of the array (which contains 156 elements) [-Warray-bounds]
cryptmt-v3.c: do_recursion(ps->sfmt[N], ps->sfmt[POS1], ps->sfmt[N - 1]);
cryptmt-v3.c: ^ ~
cryptmt-v3.c: ./e/cryptmt-v3.c:25:5: note: array 'sfmt' declared here
cryptmt-v3.c: u32 sfmt[N][4];
cryptmt-v3.c: ^
cryptmt-v3.c: 1 warning generated.

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:e/v3
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:e/v3