Implementation notes: amd64, cel02, crypto_kem/remblem1056

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_kem
Primitive: remblem1056
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
1177852617693 4312 1746088 5232 1656T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
127564347821 4320 2035487 5264 1720T:refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
2046408437670 4320 2068855 5296 1752T:refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
216760368840 4320 2036887 5264 1720T:refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
2387053612356 4312 1738970 5224 1656T:refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
246971066306 4320 2032735 5256 1688T:refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
kem.c: kem.c:366:24: warning: passing 'int *' to parameter of type 'unsigned int *' converts between pointers to integer types with different sign [-Wpointer-sign]
kem.c: bytes_from_modq(pk+32,pPubKey_B,CRYPTO_R_n);
kem.c: ^~~~~~~~~
kem.c: kem.c:27:60: note: passing argument to parameter 'x' here
kem.c: static void bytes_from_modq(unsigned char *y,unsigned int *x,int xlen)
kem.c: ^
kem.c: kem.c:571:24: warning: passing 'int *' to parameter of type 'unsigned int *' converts between pointers to integer types with different sign [-Wpointer-sign]
kem.c: bytes_from_modq(ct+32,C_KEM,CRYPTO_R_n + CRYPTO_R_msg);
kem.c: ^~~~~
kem.c: kem.c:27:60: note: passing argument to parameter 'x' here
kem.c: static void bytes_from_modq(unsigned char *y,unsigned int *x,int xlen)
kem.c: ^
kem.c: 2 warnings generated.
try.c: fatal error: error in backend: Cannot select: 0x560d2c865190: v4i64 = X86ISD::VTRUNC 0x560d2c865060
try.c: 0x560d2c865060: v16i32 = vselect 0x560d2c861b70, 0x560d2c805ad0, 0x560d2c864f30
try.c: 0x560d2c861b70: v4i1 = X86ISD::PCMPGTM 0x560d2c84a800, 0x560d2c846390
try.c: 0x560d2c84a800: v4i64 = X86ISD::VBROADCAST 0x560d2c7eeb50
try.c: 0x560d2c7eeb50: i64,ch = load<LD8[%lsr.iv6971]> 0x560d2c75b950, 0x560d2c8300e0, undef:i64
try.c: 0x560d2c8300e0: i64,ch = CopyFromReg 0x560d2c75b950, Register:i64 %vreg50
try.c: 0x560d2c8465f0: i64 = Register %vreg50
try.c: 0x560d2c804140: i64 = undef
try.c: 0x560d2c846390: v4i64,ch = CopyFromReg 0x560d2c75b950, Register:v4i64 %vreg13
try.c: 0x560d2c84b050: v4i64 = Register %vreg13
try.c: 0x560d2c805ad0: v16i32 = X86ISD::VBROADCAST 0x560d2c84aa60
try.c: 0x560d2c84aa60: i32,ch = load<LD4[ConstantPool]> 0x560d2c75b950, 0x560d2c7ee130, undef:i64
try.c: 0x560d2c7ee130: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x560d2c839750: i64 = TargetConstantPool<i32 1> 0
try.c: 0x560d2c804140: i64 = undef
try.c: 0x560d2c864f30: 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: 0x560d2c864e00: i32 = Constant<0>
try.c: 0x560d2c864e00: i32 = Constant<0>
try.c: 0x560d2c864e00: i32 = Constant<0>
try.c: 0x560d2c864e00: i32 = Constant<0>
try.c: 0x560d2c864e00: i32 = Constant<0>
try.c: 0x560d2c864e00: i32 = Constant<0>
try.c: 0x560d2c864e00: i32 = Constant<0>
try.c: 0x560d2c864e00: i32 = Constant<0>
try.c: 0x560d2c864e00: 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
kem.c: kem.c:366:24: warning: passing 'int *' to parameter of type 'unsigned int *' converts between pointers to integer types with different sign [-Wpointer-sign]
kem.c: bytes_from_modq(pk+32,pPubKey_B,CRYPTO_R_n);
kem.c: ^~~~~~~~~
kem.c: kem.c:27:60: note: passing argument to parameter 'x' here
kem.c: static void bytes_from_modq(unsigned char *y,unsigned int *x,int xlen)
kem.c: ^
kem.c: kem.c:571:24: warning: passing 'int *' to parameter of type 'unsigned int *' converts between pointers to integer types with different sign [-Wpointer-sign]
kem.c: bytes_from_modq(ct+32,C_KEM,CRYPTO_R_n + CRYPTO_R_msg);
kem.c: ^~~~~
kem.c: kem.c:27:60: note: passing argument to parameter 'x' here
kem.c: static void bytes_from_modq(unsigned char *y,unsigned int *x,int xlen)
kem.c: ^
kem.c: 2 warnings generated.
try.c: fatal error: error in backend: Cannot select: 0x5626bc593720: v4i64 = X86ISD::VTRUNC 0x5626bc5935f0
try.c: 0x5626bc5935f0: v16i32 = vselect 0x5626bc58e0f0, 0x5626bc535680, 0x5626bc5934c0
try.c: 0x5626bc58e0f0: v4i1 = X86ISD::PCMPGTM 0x5626bc589700, 0x5626bc585290
try.c: 0x5626bc589700: v4i64 = X86ISD::VBROADCAST 0x5626bc535b40
try.c: 0x5626bc535b40: i64,ch = load<LD8[%lsr.iv6971]> 0x5626bc483a30, 0x5626bc52a890, undef:i64
try.c: 0x5626bc52a890: i64,ch = CopyFromReg 0x5626bc483a30, Register:i64 %vreg50
try.c: 0x5626bc5854f0: i64 = Register %vreg50
try.c: 0x5626bc51e090: i64 = undef
try.c: 0x5626bc585290: v4i64,ch = CopyFromReg 0x5626bc483a30, Register:v4i64 %vreg13
try.c: 0x5626bc589f50: v4i64 = Register %vreg13
try.c: 0x5626bc535680: v16i32 = X86ISD::VBROADCAST 0x5626bc589960
try.c: 0x5626bc589960: i32,ch = load<LD4[ConstantPool]> 0x5626bc483a30, 0x5626bc538020, undef:i64
try.c: 0x5626bc538020: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5626bc51ea10: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5626bc51e090: i64 = undef
try.c: 0x5626bc5934c0: 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: 0x5626bc593390: i32 = Constant<0>
try.c: 0x5626bc593390: i32 = Constant<0>
try.c: 0x5626bc593390: i32 = Constant<0>
try.c: 0x5626bc593390: i32 = Constant<0>
try.c: 0x5626bc593390: i32 = Constant<0>
try.c: 0x5626bc593390: i32 = Constant<0>
try.c: 0x5626bc593390: i32 = Constant<0>
try.c: 0x5626bc593390: i32 = Constant<0>
try.c: 0x5626bc593390: 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
kem.c: kem.c:366:24: warning: passing 'int *' to parameter of type 'unsigned int *' converts between pointers to integer types with different sign [-Wpointer-sign]
kem.c: bytes_from_modq(pk+32,pPubKey_B,CRYPTO_R_n);
kem.c: ^~~~~~~~~
kem.c: kem.c:27:60: note: passing argument to parameter 'x' here
kem.c: static void bytes_from_modq(unsigned char *y,unsigned int *x,int xlen)
kem.c: ^
kem.c: kem.c:571:24: warning: passing 'int *' to parameter of type 'unsigned int *' converts between pointers to integer types with different sign [-Wpointer-sign]
kem.c: bytes_from_modq(ct+32,C_KEM,CRYPTO_R_n + CRYPTO_R_msg);
kem.c: ^~~~~
kem.c: kem.c:27:60: note: passing argument to parameter 'x' here
kem.c: static void bytes_from_modq(unsigned char *y,unsigned int *x,int xlen)
kem.c: ^
kem.c: 2 warnings generated.
try.c: fatal error: error in backend: Cannot select: 0x55ccd0302b10: v4i64 = X86ISD::VTRUNC 0x55ccd03029e0
try.c: 0x55ccd03029e0: v16i32 = vselect 0x55ccd030a9b0, 0x55ccd02a2c50, 0x55ccd03028b0
try.c: 0x55ccd030a9b0: v4i1 = X86ISD::PCMPGTM 0x55ccd02faa50, 0x55ccd02f65e0
try.c: 0x55ccd02faa50: v4i64 = X86ISD::VBROADCAST 0x55ccd02c82f0
try.c: 0x55ccd02c82f0: i64,ch = load<LD8[%lsr.iv6971]> 0x55ccd020b950, 0x55ccd02e61d0, undef:i64
try.c: 0x55ccd02e61d0: i64,ch = CopyFromReg 0x55ccd020b950, Register:i64 %vreg50
try.c: 0x55ccd02f6840: i64 = Register %vreg50
try.c: 0x55ccd02a12c0: i64 = undef
try.c: 0x55ccd02f65e0: v4i64,ch = CopyFromReg 0x55ccd020b950, Register:v4i64 %vreg13
try.c: 0x55ccd02fb2a0: v4i64 = Register %vreg13
try.c: 0x55ccd02a2c50: v16i32 = X86ISD::VBROADCAST 0x55ccd02facb0
try.c: 0x55ccd02facb0: i32,ch = load<LD4[ConstantPool]> 0x55ccd020b950, 0x55ccd02c78d0, undef:i64
try.c: 0x55ccd02c78d0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55ccd02e0410: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55ccd02a12c0: i64 = undef
try.c: 0x55ccd03028b0: 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: 0x55ccd0302780: i32 = Constant<0>
try.c: 0x55ccd0302780: i32 = Constant<0>
try.c: 0x55ccd0302780: i32 = Constant<0>
try.c: 0x55ccd0302780: i32 = Constant<0>
try.c: 0x55ccd0302780: i32 = Constant<0>
try.c: 0x55ccd0302780: i32 = Constant<0>
try.c: 0x55ccd0302780: i32 = Constant<0>
try.c: 0x55ccd0302780: i32 = Constant<0>
try.c: 0x55ccd0302780: 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

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
kem.c: kem.c:366:24: warning: passing 'int *' to parameter of type 'unsigned int *' converts between pointers to integer types with different sign [-Wpointer-sign]
kem.c: bytes_from_modq(pk+32,pPubKey_B,CRYPTO_R_n);
kem.c: ^~~~~~~~~
kem.c: kem.c:27:60: note: passing argument to parameter 'x' here
kem.c: static void bytes_from_modq(unsigned char *y,unsigned int *x,int xlen)
kem.c: ^
kem.c: kem.c:571:24: warning: passing 'int *' to parameter of type 'unsigned int *' converts between pointers to integer types with different sign [-Wpointer-sign]
kem.c: bytes_from_modq(ct+32,C_KEM,CRYPTO_R_n + CRYPTO_R_msg);
kem.c: ^~~~~
kem.c: kem.c:27:60: note: passing argument to parameter 'x' here
kem.c: static void bytes_from_modq(unsigned char *y,unsigned int *x,int xlen)
kem.c: ^
kem.c: 2 warnings generated.

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