Implementation notes: amd64, cel02, crypto_kem/remblem928

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_kem
Primitive: remblem928
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
1229975816685 4116 1745080 5040 1656T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
128780987821 4128 2035471 5072 1720T:refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
238610026303 4128 2032735 5064 1688T:refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
2431345612281 4116 1738890 5032 1656T:refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
248306148840 4128 2036855 5072 1720T:refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
2598895832681 4128 2063839 5072 1752T:refgcc_-march=native_-mtune=native_-O3_-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: 0x56282a50c790: v4i64 = X86ISD::VTRUNC 0x56282a50c660
try.c: 0x56282a50c660: v16i32 = vselect 0x56282a4fee70, 0x56282a4a9230, 0x56282a50c530
try.c: 0x56282a4fee70: v4i1 = X86ISD::PCMPGTM 0x56282a4f29c0, 0x56282a4ef160
try.c: 0x56282a4f29c0: v4i64 = X86ISD::VBROADCAST 0x56282a49a1e0
try.c: 0x56282a49a1e0: i64,ch = load<LD8[%lsr.iv6971]> 0x56282a403940, 0x56282a4e9080, undef:i64
try.c: 0x56282a4e9080: i64,ch = CopyFromReg 0x56282a403940, Register:i64 %vreg50
try.c: 0x56282a4ef3c0: i64 = Register %vreg50
try.c: 0x56282a49b6b0: i64 = undef
try.c: 0x56282a4ef160: v4i64,ch = CopyFromReg 0x56282a403940, Register:v4i64 %vreg13
try.c: 0x56282a4f3210: v4i64 = Register %vreg13
try.c: 0x56282a4a9230: v16i32 = X86ISD::VBROADCAST 0x56282a4f2c20
try.c: 0x56282a4f2c20: i32,ch = load<LD4[ConstantPool]> 0x56282a403940, 0x56282a4974b0, undef:i64
try.c: 0x56282a4974b0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x56282a4b8390: i64 = TargetConstantPool<i32 1> 0
try.c: 0x56282a49b6b0: i64 = undef
try.c: 0x56282a50c530: 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: 0x56282a50c400: i32 = Constant<0>
try.c: 0x56282a50c400: i32 = Constant<0>
try.c: 0x56282a50c400: i32 = Constant<0>
try.c: 0x56282a50c400: i32 = Constant<0>
try.c: 0x56282a50c400: i32 = Constant<0>
try.c: 0x56282a50c400: i32 = Constant<0>
try.c: 0x56282a50c400: i32 = Constant<0>
try.c: 0x56282a50c400: i32 = Constant<0>
try.c: 0x56282a50c400: 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: 0x55727cb2b110: v4i64 = X86ISD::VTRUNC 0x55727cb2afe0
try.c: 0x55727cb2afe0: v16i32 = vselect 0x55727cb25ae0, 0x55727caccd40, 0x55727cb2aeb0
try.c: 0x55727cb25ae0: v4i1 = X86ISD::PCMPGTM 0x55727cb1ef10, 0x55727cb1a490
try.c: 0x55727cb1ef10: v4i64 = X86ISD::VBROADCAST 0x55727cacd200
try.c: 0x55727cacd200: i64,ch = load<LD8[%lsr.iv6971]> 0x55727ca18a30, 0x55727cac8bd0, undef:i64
try.c: 0x55727cac8bd0: i64,ch = CopyFromReg 0x55727ca18a30, Register:i64 %vreg50
try.c: 0x55727cb1a6f0: i64 = Register %vreg50
try.c: 0x55727cab6750: i64 = undef
try.c: 0x55727cb1a490: v4i64,ch = CopyFromReg 0x55727ca18a30, Register:v4i64 %vreg13
try.c: 0x55727cb1f760: v4i64 = Register %vreg13
try.c: 0x55727caccd40: v16i32 = X86ISD::VBROADCAST 0x55727cb1f170
try.c: 0x55727cb1f170: i32,ch = load<LD4[ConstantPool]> 0x55727ca18a30, 0x55727cacf6e0, undef:i64
try.c: 0x55727cacf6e0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55727cab70d0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55727cab6750: i64 = undef
try.c: 0x55727cb2aeb0: 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: 0x55727cb2ad80: i32 = Constant<0>
try.c: 0x55727cb2ad80: i32 = Constant<0>
try.c: 0x55727cb2ad80: i32 = Constant<0>
try.c: 0x55727cb2ad80: i32 = Constant<0>
try.c: 0x55727cb2ad80: i32 = Constant<0>
try.c: 0x55727cb2ad80: i32 = Constant<0>
try.c: 0x55727cb2ad80: i32 = Constant<0>
try.c: 0x55727cb2ad80: i32 = Constant<0>
try.c: 0x55727cb2ad80: 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: 0x55ca1a066830: v4i64 = X86ISD::VTRUNC 0x55ca1a066700
try.c: 0x55ca1a066700: v16i32 = vselect 0x55ca1a054330, 0x55ca1a0097f0, 0x55ca1a0665d0
try.c: 0x55ca1a054330: v4i1 = X86ISD::PCMPGTM 0x55ca1a04cec0, 0x55ca1a048a50
try.c: 0x55ca1a04cec0: v4i64 = X86ISD::VBROADCAST 0x55ca1a006990
try.c: 0x55ca1a006990: i64,ch = load<LD8[%lsr.iv6971]> 0x55ca19f5d950, 0x55ca1a03f300, undef:i64
try.c: 0x55ca1a03f300: i64,ch = CopyFromReg 0x55ca19f5d950, Register:i64 %vreg50
try.c: 0x55ca1a048cb0: i64 = Register %vreg50
try.c: 0x55ca1a007e60: i64 = undef
try.c: 0x55ca1a048a50: v4i64,ch = CopyFromReg 0x55ca19f5d950, Register:v4i64 %vreg13
try.c: 0x55ca1a04d710: v4i64 = Register %vreg13
try.c: 0x55ca1a0097f0: v16i32 = X86ISD::VBROADCAST 0x55ca1a04d120
try.c: 0x55ca1a04d120: i32,ch = load<LD4[ConstantPool]> 0x55ca19f5d950, 0x55ca19fede60, undef:i64
try.c: 0x55ca19fede60: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55ca1a004b40: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55ca1a007e60: i64 = undef
try.c: 0x55ca1a0665d0: 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: 0x55ca1a0664a0: i32 = Constant<0>
try.c: 0x55ca1a0664a0: i32 = Constant<0>
try.c: 0x55ca1a0664a0: i32 = Constant<0>
try.c: 0x55ca1a0664a0: i32 = Constant<0>
try.c: 0x55ca1a0664a0: i32 = Constant<0>
try.c: 0x55ca1a0664a0: i32 = Constant<0>
try.c: 0x55ca1a0664a0: i32 = Constant<0>
try.c: 0x55ca1a0664a0: i32 = Constant<0>
try.c: 0x55ca1a0664a0: 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