Implementation notes: amd64, oki, crypto_kem/remblem1056

Computer: oki
Architecture: amd64
CPU ID: GenuineIntel-00050654-bfebfbff
SUPERCOP version: 20181123
Operation: crypto_kem
Primitive: remblem1056
TimeImplementationCompilerBenchmark dateSUPERCOP version
10999330refgcc -m64 -march=core-avx2 -O3 -fomit-frame-pointer2019012120181123
11008654refgcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer2019012120181123
11017756refgcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer2019012120181123
11026124refgcc -m64 -march=corei7 -O3 -fomit-frame-pointer2019012120181123
11030494refgcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2019012120181123
11034496refgcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer2019012120181123
11044654refgcc -m64 -march=core2 -O3 -fomit-frame-pointer2019012120181123
11052708refgcc -m64 -march=core-avx-i -O3 -fomit-frame-pointer2019012120181123
11053500refgcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer2019012120181123
11054786refgcc -m64 -O3 -fomit-frame-pointer2019012120181123
11057616refgcc -fno-schedule-insns -O3 -fomit-frame-pointer2019012120181123
11072426refgcc -m64 -march=nocona -O3 -fomit-frame-pointer2019012120181123
11078868refgcc -funroll-loops -O3 -fomit-frame-pointer2019012120181123
11089028refgcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer2019012120181123
11091982refgcc -funroll-loops -m64 -O3 -fomit-frame-pointer2019012120181123
11098778refgcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer2019012120181123
11102704refgcc -march=nocona -O3 -fomit-frame-pointer2019012120181123
11118416refgcc -O3 -fomit-frame-pointer2019012120181123
11128690refgcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer2019012120181123
11131988refgcc -march=k8 -O3 -fomit-frame-pointer2019012120181123
11147950refgcc -m64 -march=barcelona -O3 -fomit-frame-pointer2019012120181123
11153626refclang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fomit-frame-pointer -Qunused-arguments2019012120181123
11161014refgcc -m64 -march=corei7-avx -O3 -fomit-frame-pointer2019012120181123
11164100refgcc -m64 -march=k8 -O3 -fomit-frame-pointer2019012120181123
11178720refgcc -march=barcelona -O3 -fomit-frame-pointer2019012120181123
11199040refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2019012120181123
11226860refclang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments2019012120181123
11250944refclang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments2019012120181123
11263376refclang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2019012120181123
11265086refclang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments2019012120181123
11290248refclang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2019012120181123
11303560refclang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2019012120181123
11332350refclang -O3 -fomit-frame-pointer -Qunused-arguments2019012120181123
11396554refgcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer2019012120181123
11400410refgcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer2019012120181123
11405334refgcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer2019012120181123
11412028refgcc -funroll-loops -m64 -O2 -fomit-frame-pointer2019012120181123
11432994refgcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer2019012120181123
11436206refgcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer2019012120181123
11464978refgcc -funroll-loops -O2 -fomit-frame-pointer2019012120181123
11493024refgcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer2019012120181123
11499564refgcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer2019012120181123
11537046refgcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer2019012120181123
11543136refgcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer2019012120181123
11548532refgcc -m64 -march=core-avx2 -O2 -fomit-frame-pointer2019012120181123
11566066refgcc -m64 -march=nocona -O2 -fomit-frame-pointer2019012120181123
11600686refgcc -m64 -march=corei7 -O2 -fomit-frame-pointer2019012120181123
11601882refgcc -m64 -march=corei7-avx -O2 -fomit-frame-pointer2019012120181123
11602858refgcc -march=nocona -O2 -fomit-frame-pointer2019012120181123
11607440refgcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer2019012120181123
11653530refgcc -m64 -march=barcelona -O2 -fomit-frame-pointer2019012120181123
11674124refgcc -m64 -march=k8 -O2 -fomit-frame-pointer2019012120181123
11679554refgcc -march=barcelona -O2 -fomit-frame-pointer2019012120181123
11691934refgcc -march=k8 -O2 -fomit-frame-pointer2019012120181123
11700996refgcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer2019012120181123
11705506refgcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer2019012120181123
11710786refgcc -funroll-loops -O -fomit-frame-pointer2019012120181123
11715884refgcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer2019012120181123
11731268refgcc -funroll-loops -m64 -O -fomit-frame-pointer2019012120181123
11749520refgcc -O2 -fomit-frame-pointer2019012120181123
11752174refgcc -fno-schedule-insns -O2 -fomit-frame-pointer2019012120181123
11772674refgcc -m64 -O2 -fomit-frame-pointer2019012120181123
11781526refgcc -m64 -march=core-avx2 -O -fomit-frame-pointer2019012120181123
11786152refgcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2019012120181123
11788240refgcc -m64 -march=core-avx-i -O -fomit-frame-pointer2019012120181123
11802236refgcc -m64 -march=corei7 -O -fomit-frame-pointer2019012120181123
11802952refgcc -m64 -march=core2 -O2 -fomit-frame-pointer2019012120181123
11843506refgcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer2019012120181123
11857672refgcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer2019012120181123
11859738refgcc -funroll-loops -march=nocona -O -fomit-frame-pointer2019012120181123
11877334refgcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer2019012120181123
11884826refgcc -m64 -march=core2 -O -fomit-frame-pointer2019012120181123
11893150refgcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer2019012120181123
11896526refgcc -march=nocona -O -fomit-frame-pointer2019012120181123
11897792refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2019012120181123
11912336refgcc -O -fomit-frame-pointer2019012120181123
11919402refgcc -m64 -O -fomit-frame-pointer2019012120181123
11929348refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2019012120181123
11939328refgcc -m64 -march=nocona -O -fomit-frame-pointer2019012120181123
11952734refgcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer2019012120181123
11960498refgcc -funroll-loops -march=barcelona -O -fomit-frame-pointer2019012120181123
11971938refgcc -funroll-loops -march=k8 -O -fomit-frame-pointer2019012120181123
11986218refgcc -fno-schedule-insns -O -fomit-frame-pointer2019012120181123
12000754refgcc -march=barcelona -O -fomit-frame-pointer2019012120181123
12003228refgcc -march=k8 -O -fomit-frame-pointer2019012120181123
12007856refgcc -m64 -march=native -mtune=native -O -fomit-frame-pointer2019012120181123
12051476refgcc -m64 -march=k8 -O -fomit-frame-pointer2019012120181123
12119984refgcc -m64 -march=corei7-avx -O -fomit-frame-pointer2019012120181123
12412412refgcc -m64 -march=corei7 -Os -fomit-frame-pointer2019012120181123
12419804refgcc -fno-schedule-insns -Os -fomit-frame-pointer2019012120181123
12420814refgcc -Os -fomit-frame-pointer2019012120181123
12426662refgcc -m64 -march=core2 -Os -fomit-frame-pointer2019012120181123
12435580refgcc -m64 -march=k8 -Os -fomit-frame-pointer2019012120181123
12443706refgcc -m64 -Os -fomit-frame-pointer2019012120181123
12443882refgcc -march=k8 -Os -fomit-frame-pointer2019012120181123
12454614refgcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer2019012120181123
12457102refgcc -march=barcelona -Os -fomit-frame-pointer2019012120181123
12491244refgcc -m64 -march=barcelona -Os -fomit-frame-pointer2019012120181123
12527522refgcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer2019012120181123
12530386refgcc -m64 -march=nocona -Os -fomit-frame-pointer2019012120181123
12540616refgcc -m64 -march=core-avx2 -Os -fomit-frame-pointer2019012120181123
12544720refgcc -march=nocona -Os -fomit-frame-pointer2019012120181123
12578946refgcc -funroll-loops -Os -fomit-frame-pointer2019012120181123
12580922refgcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer2019012120181123
12603416refgcc -funroll-loops -m64 -Os -fomit-frame-pointer2019012120181123
12605840refgcc -m64 -march=core-avx-i -Os -fomit-frame-pointer2019012120181123
12620214refgcc -m64 -march=corei7-avx -Os -fomit-frame-pointer2019012120181123
12628668refgcc -funroll-loops -march=nocona -Os -fomit-frame-pointer2019012120181123
12632000refgcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer2019012120181123
12658372refgcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer2019012120181123
12670456refgcc -funroll-loops -march=k8 -Os -fomit-frame-pointer2019012120181123
12670926refgcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer2019012120181123
12674070refgcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer2019012120181123
12677408refgcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer2019012120181123
12841970refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2019012120181123
13766984refgcc2019012120181123
13803668refgcc -funroll-loops2019012120181123
14188012refgcc -m64 -march=barcelona -O -fomit-frame-pointer2019012120181123

Compiler output

Implementation: crypto_kem/remblem1056/ref
Compiler: cc
rng.c: rng.c: In function 'seedexpander':
rng.c: rng.c:91:3: error: 'for' loop initial declarations are only allowed in C99 mode
rng.c: for (int i = 15; i >gt;= 12; i--) {
rng.c: ^
rng.c: rng.c:91:3: note: use option -std=c99 or -std=gnu99 to compile your code
rng.c: rng.c: In function 'xrandombytes_init':
rng.c: rng.c:151:3: error: 'for' loop initial declarations are only allowed in C99 mode
rng.c: for (int i = 0; i rng.c: ^
rng.c: rng.c: In function 'xrandombytes':
rng.c: rng.c:168:3: error: 'for' loop initial declarations are only allowed in C99 mode
rng.c: for (int j = 15; j >gt;= 0; j--) {
rng.c: ^
rng.c: rng.c: In function 'AES256_CTR_DRBG_Update':
rng.c: rng.c:200:2: error: 'for' loop initial declarations are only allowed in C99 mode
rng.c: for (int i = 0; i rng.c: ^
rng.c: rng.c:202:3: error: 'for' loop initial declarations are only allowed in C99 mode
rng.c: for (int j = 15; j >gt;= 0; j--) {
rng.c: ^
rng.c: rng.c:214:12: error: redefinition of 'i'
rng.c: for (int i = 0; i rng.c: ^
rng.c: rng.c:200:11: note: previous definition of 'i' was here
rng.c: for (int i = 0; i rng.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
cc ref

Compiler output

Implementation: crypto_kem/remblem1056/ref
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
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: 8, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments ref
clang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments ref
clang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments ref
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments ref

Compiler output

Implementation: crypto_kem/remblem1056/ref
Compiler: clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments
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: 0x23c07e0: v4i64 = X86ISD::VTRUNC 0x23c0610
try.c: 0x23c0610: v16i32 = vselect 0x23c6190, 0x2334870, 0x23c04e0
try.c: 0x23c6190: v4i1 = X86ISD::PCMPGTM 0x23a90e0, 0x234f220
try.c: 0x23a90e0: v4i64 = X86ISD::VBROADCAST 0x234f5b0
try.c: 0x234f5b0: i64,ch = loadgt; 0x22a2dd0, 0x23972f0, undef:i64
try.c: 0x23972f0: i64 = add 0x23a9fc0, 0x2347850
try.c: 0x23a9fc0: i64 = X86ISD::Wrapper TargetGlobalAddress:i64gt; 0
try.c: 0x2365fe0: i64 = TargetGlobalAddressgt; 0
try.c: 0x2347850: i64 = shl 0x2365790, Constant:i8gt;
try.c: 0x2365790: i64,ch = CopyFromReg 0x22a2dd0, Register:i64 %vreg50
try.c: 0x23aa480: i64 = Register %vreg50
try.c: 0x2342a60: i8 = Constantgt;
try.c: 0x23a6f40: i64 = undef
try.c: 0x234f220: v4i64,ch = CopyFromReg 0x22a2dd0, Register:v4i64 %vreg13
try.c: 0x2367b70: v4i64 = Register %vreg13
try.c: 0x2334870: v16i32 = X86ISD::VBROADCAST 0x23659f0
try.c: 0x23659f0: i32,ch = loadgt; 0x22a2dd0, 0x23c0150, undef:i64
try.c: 0x23c0150: i64 = X86ISD::Wrapper TargetConstantPool:i64gt; 0
try.c: 0x233c0c0: i64 = TargetConstantPoolgt; 0
try.c: 0x23a6f40: i64 = undef
try.c: 0x23c04e0: v16i32 = BUILD_VECTOR Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;
try.c: 0x23c03b0: i32 = Constantgt;
try.c: 0x23c03b0: i32 = Constantgt;
try.c: 0x23c03b0: i32 = Constantgt;
try.c: 0x23c03b0: i32 = Constantgt;
try.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments ref

Compiler output

Implementation: crypto_kem/remblem1056/ref
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
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: 0x179e490: v4i64 = X86ISD::VTRUNC 0x179e2c0
try.c: 0x179e2c0: v16i32 = vselect 0x178f4c0, 0x17202c0, 0x179e190
try.c: 0x178f4c0: v4i1 = X86ISD::PCMPGTM 0x17778f0, 0x1721070
try.c: 0x17778f0: v4i64 = X86ISD::VBROADCAST 0x1721400
try.c: 0x1721400: i64,ch = loadgt; 0x1683dd0, 0x1735fd0, undef:i64
try.c: 0x1735fd0: i64 = add 0x1788c60, 0x17066e0
try.c: 0x1788c60: i64 = X86ISD::Wrapper TargetGlobalAddress:i64gt; 0
try.c: 0x1748530: i64 = TargetGlobalAddressgt; 0
try.c: 0x17066e0: i64 = shl 0x1747ce0, Constant:i8gt;
try.c: 0x1747ce0: i64,ch = CopyFromReg 0x1683dd0, Register:i64 %vreg50
try.c: 0x1789120: i64 = Register %vreg50
try.c: 0x1742ae0: i8 = Constantgt;
try.c: 0x1787400: i64 = undef
try.c: 0x1721070: v4i64,ch = CopyFromReg 0x1683dd0, Register:v4i64 %vreg13
try.c: 0x172e940: v4i64 = Register %vreg13
try.c: 0x17202c0: v16i32 = X86ISD::VBROADCAST 0x1747f40
try.c: 0x1747f40: i32,ch = loadgt; 0x1683dd0, 0x179de00, undef:i64
try.c: 0x179de00: i64 = X86ISD::Wrapper TargetConstantPool:i64gt; 0
try.c: 0x1723a50: i64 = TargetConstantPoolgt; 0
try.c: 0x1787400: i64 = undef
try.c: 0x179e190: v16i32 = BUILD_VECTOR Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;, Constant:i32gt;
try.c: 0x179e060: i32 = Constantgt;
try.c: 0x179e060: i32 = Constantgt;
try.c: 0x179e060: i32 = Constantgt;
try.c: 0x179e060: i32 = Constantgt;
try.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments ref