Implementation notes: amd64, cel02, crypto_encrypt/mceliece

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_encrypt
Primitive: mceliece

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
misc.c: misc.c:6:44: warning: passing 'char *' to parameter of type 'unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign]
misc.c: __inline int u8rnd() { char c; randombytes(&c,1); return 255 & (int) c; }
misc.c: ^~
misc.c: /dev/shm/supercop-20201130/supercop-data/cel02/amd64/include/randombytes.h:8:40: note: passing argument to parameter here
misc.c: extern void randombytes(unsigned char *,unsigned long long);
misc.c: ^
misc.c: 1 warning generated.
try.c: fatal error: error in backend: Cannot select: 0x5599ac304b60: v4i64 = X86ISD::VTRUNC 0x5599ac304a30
try.c: 0x5599ac304a30: v16i32 = vselect 0x5599ac301540, 0x5599ac2a4430, 0x5599ac304900
try.c: 0x5599ac301540: v4i1 = X86ISD::PCMPGTM 0x5599ac2fc8f0, 0x5599ac2f8480
try.c: 0x5599ac2fc8f0: v4i64 = X86ISD::VBROADCAST 0x5599ac29d740
try.c: 0x5599ac29d740: i64,ch = load<LD8[%lsr.iv6971]> 0x5599ac20d950, 0x5599ac2a91a0, undef:i64
try.c: 0x5599ac2a91a0: i64,ch = CopyFromReg 0x5599ac20d950, Register:i64 %vreg50
try.c: 0x5599ac2f86e0: i64 = Register %vreg50
try.c: 0x5599ac2a2aa0: i64 = undef
try.c: 0x5599ac2f8480: v4i64,ch = CopyFromReg 0x5599ac20d950, Register:v4i64 %vreg13
try.c: 0x5599ac2fd140: v4i64 = Register %vreg13
try.c: 0x5599ac2a4430: v16i32 = X86ISD::VBROADCAST 0x5599ac2fcb50
try.c: 0x5599ac2fcb50: i32,ch = load<LD4[ConstantPool]> 0x5599ac20d950, 0x5599ac29cd20, undef:i64
try.c: 0x5599ac29cd20: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5599ac2e0c60: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5599ac2a2aa0: i64 = undef
try.c: 0x5599ac304900: 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: 0x5599ac3047d0: i32 = Constant<0>
try.c: 0x5599ac3047d0: i32 = Constant<0>
try.c: 0x5599ac3047d0: i32 = Constant<0>
try.c: 0x5599ac3047d0: i32 = Constant<0>
try.c: 0x5599ac3047d0: i32 = Constant<0>
try.c: 0x5599ac3047d0: i32 = Constant<0>
try.c: 0x5599ac3047d0: i32 = Constant<0>
try.c: 0x5599ac3047d0: i32 = Constant<0>
try.c: 0x5599ac3047d0: 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
misc.c: misc.c:6:44: warning: passing 'char *' to parameter of type 'unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign]
misc.c: __inline int u8rnd() { char c; randombytes(&c,1); return 255 & (int) c; }
misc.c: ^~
misc.c: /dev/shm/supercop-20201130/supercop-data/cel02/amd64/include/randombytes.h:8:40: note: passing argument to parameter here
misc.c: extern void randombytes(unsigned char *,unsigned long long);
misc.c: ^
misc.c: 1 warning generated.
try.c: fatal error: error in backend: Cannot select: 0x5598f9c77190: v4i64 = X86ISD::VTRUNC 0x5598f9c77060
try.c: 0x5598f9c77060: v16i32 = vselect 0x5598f9c71b60, 0x5598f9bfe180, 0x5598f9c76f30
try.c: 0x5598f9c71b60: v4i1 = X86ISD::PCMPGTM 0x5598f9c6b050, 0x5598f9c665d0
try.c: 0x5598f9c6b050: v4i64 = X86ISD::VBROADCAST 0x5598f9bfe640
try.c: 0x5598f9bfe640: i64,ch = load<LD8[%lsr.iv6971]> 0x5598f9b64a30, 0x5598f9c073b0, undef:i64
try.c: 0x5598f9c073b0: i64,ch = CopyFromReg 0x5598f9b64a30, Register:i64 %vreg50
try.c: 0x5598f9c66830: i64 = Register %vreg50
try.c: 0x5598f9c19960: i64 = undef
try.c: 0x5598f9c665d0: v4i64,ch = CopyFromReg 0x5598f9b64a30, Register:v4i64 %vreg13
try.c: 0x5598f9c6b8a0: v4i64 = Register %vreg13
try.c: 0x5598f9bfe180: v16i32 = X86ISD::VBROADCAST 0x5598f9c6b2b0
try.c: 0x5598f9c6b2b0: i32,ch = load<LD4[ConstantPool]> 0x5598f9b64a30, 0x5598f9c05980, undef:i64
try.c: 0x5598f9c05980: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5598f9c1a2e0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5598f9c19960: i64 = undef
try.c: 0x5598f9c76f30: 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: 0x5598f9c76e00: i32 = Constant<0>
try.c: 0x5598f9c76e00: i32 = Constant<0>
try.c: 0x5598f9c76e00: i32 = Constant<0>
try.c: 0x5598f9c76e00: i32 = Constant<0>
try.c: 0x5598f9c76e00: i32 = Constant<0>
try.c: 0x5598f9c76e00: i32 = Constant<0>
try.c: 0x5598f9c76e00: i32 = Constant<0>
try.c: 0x5598f9c76e00: i32 = Constant<0>
try.c: 0x5598f9c76e00: 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
misc.c: misc.c:6:44: warning: passing 'char *' to parameter of type 'unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign]
misc.c: __inline int u8rnd() { char c; randombytes(&c,1); return 255 & (int) c; }
misc.c: ^~
misc.c: /dev/shm/supercop-20201130/supercop-data/cel02/amd64/include/randombytes.h:8:40: note: passing argument to parameter here
misc.c: extern void randombytes(unsigned char *,unsigned long long);
misc.c: ^
misc.c: 1 warning generated.
try.c: fatal error: error in backend: Cannot select: 0x55b255aee290: v4i64 = X86ISD::VTRUNC 0x55b255aee160
try.c: 0x55b255aee160: v16i32 = vselect 0x55b255adad70, 0x55b255a7a220, 0x55b255aee030
try.c: 0x55b255adad70: v4i1 = X86ISD::PCMPGTM 0x55b255ad2900, 0x55b255ace490
try.c: 0x55b255ad2900: v4i64 = X86ISD::VBROADCAST 0x55b255a761d0
try.c: 0x55b255a761d0: i64,ch = load<LD8[%lsr.iv6971]> 0x55b2559e3950, 0x55b255ac92f0, undef:i64
try.c: 0x55b255ac92f0: i64,ch = CopyFromReg 0x55b2559e3950, Register:i64 %vreg50
try.c: 0x55b255ace6f0: i64 = Register %vreg50
try.c: 0x55b255a78890: i64 = undef
try.c: 0x55b255ace490: v4i64,ch = CopyFromReg 0x55b2559e3950, Register:v4i64 %vreg13
try.c: 0x55b255ad3150: v4i64 = Register %vreg13
try.c: 0x55b255a7a220: v16i32 = X86ISD::VBROADCAST 0x55b255ad2b60
try.c: 0x55b255ad2b60: i32,ch = load<LD4[ConstantPool]> 0x55b2559e3950, 0x55b255a757b0, undef:i64
try.c: 0x55b255a757b0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55b255a908b0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55b255a78890: i64 = undef
try.c: 0x55b255aee030: 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: 0x55b255aedf00: i32 = Constant<0>
try.c: 0x55b255aedf00: i32 = Constant<0>
try.c: 0x55b255aedf00: i32 = Constant<0>
try.c: 0x55b255aedf00: i32 = Constant<0>
try.c: 0x55b255aedf00: i32 = Constant<0>
try.c: 0x55b255aedf00: i32 = Constant<0>
try.c: 0x55b255aedf00: i32 = Constant<0>
try.c: 0x55b255aedf00: i32 = Constant<0>
try.c: 0x55b255aedf00: 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
misc.c: misc.c:6:44: warning: passing 'char *' to parameter of type 'unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign]
misc.c: __inline int u8rnd() { char c; randombytes(&c,1); return 255 & (int) c; }
misc.c: ^~
misc.c: /dev/shm/supercop-20201130/supercop-data/cel02/amd64/include/randombytes.h:8:40: note: passing argument to parameter here
misc.c: extern void randombytes(unsigned char *,unsigned long long);
misc.c: ^
misc.c: 1 warning generated.
try.c: crypto_encrypt_mceliece.a(keypair.o): In function `gop_supr':
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: crypto_encrypt_mceliece.a(keypair.o): In function `crypto_encrypt_mceliece_ref_timingleaks_keypair':
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: crypto_encrypt_mceliece.a(keypair.o):keypair.c:(.text+0x...): more undefined references to `u8rnd' follow
try.c: clang: error: linker command failed with exit code 1 (use -v to see invocation)

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

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: crypto_encrypt_mceliece.a(keypair.o): In function `gop_supr':
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: crypto_encrypt_mceliece.a(keypair.o): In function `crypto_encrypt_mceliece_ref_timingleaks_keypair':
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: collect2: error: ld returned 1 exit status

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: crypto_encrypt_mceliece.a(keypair.o): In function `gop_supr':
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: crypto_encrypt_mceliece.a(keypair.o): In function `crypto_encrypt_mceliece_ref_timingleaks_keypair':
try.c: keypair.c:(.text+0x...): undefined reference to `u8rnd'
try.c: crypto_encrypt_mceliece.a(keypair.o):keypair.c:(.text+0x...): more undefined references to `u8rnd' follow
try.c: collect2: error: ld returned 1 exit status

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref