Implementation notes: amd64, oki, crypto_encrypt/pqrsa15

Computer: oki
Architecture: amd64
CPU ID: GenuineIntel-00050654-bfebfbff
SUPERCOP version: 20181123
Operation: crypto_encrypt
Primitive: pqrsa15
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
142082192? ? ?? ? ?refgcc_-O3_-fomit-frame-pointer2019012220181123
142741166? ? ?? ? ?refgcc_-m64_-march=corei7-avx_-O3_-fomit-frame-pointer2019012220181123
142801658? ? ?? ? ?refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019012220181123
142809658? ? ?? ? ?refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019012220181123
142819580? ? ?? ? ?refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019012220181123
142832796? ? ?? ? ?refgcc_-funroll-loops_-m64_-march=barcelona_-O3_-fomit-frame-pointer2019012220181123
142833656? ? ?? ? ?refgcc_-m64_-march=nocona_-O3_-fomit-frame-pointer2019012220181123
142847348? ? ?? ? ?refgcc_-funroll-loops_-m64_-march=nocona_-O3_-fomit-frame-pointer2019012220181123
142857350? ? ?? ? ?refgcc_-march=nocona_-O3_-fomit-frame-pointer2019012220181123
142868662? ? ?? ? ?refgcc_-m64_-march=core2_-msse4_-O3_-fomit-frame-pointer2019012220181123
142873432? ? ?? ? ?refgcc_-m64_-march=core-avx-i_-O3_-fomit-frame-pointer2019012220181123
142887072? ? ?? ? ?refgcc_-march=k8_-O2_-fomit-frame-pointer2019012220181123
142887684? ? ?? ? ?refgcc_-funroll-loops_-march=k8_-O_-fomit-frame-pointer2019012220181123
142888568? ? ?? ? ?refgcc_-m64_-march=core2_-msse4.1_-O3_-fomit-frame-pointer2019012220181123
142895518? ? ?? ? ?refgcc_-funroll-loops_-march=k8_-O3_-fomit-frame-pointer2019012220181123
142900126? ? ?? ? ?refgcc_-funroll-loops_-march=nocona_-O3_-fomit-frame-pointer2019012220181123
142915312? ? ?? ? ?refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019012220181123
142926550? ? ?? ? ?refgcc_-m64_-march=native_-mtune=native_-O3_-fomit-frame-pointer2019012220181123
142932958? ? ?? ? ?refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019012220181123
142933918? ? ?? ? ?refgcc_-funroll-loops_-m64_-march=k8_-O3_-fomit-frame-pointer2019012220181123
142949468? ? ?? ? ?refgcc_-m64_-march=corei7_-O3_-fomit-frame-pointer2019012220181123
142953314? ? ?? ? ?refgcc_-m64_-march=native_-mtune=native_-Os_-fomit-frame-pointer2019012220181123
142961258? ? ?? ? ?refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019012220181123
142968642? ? ?? ? ?refgcc_-march=barcelona_-O2_-fomit-frame-pointer2019012220181123
142971368? ? ?? ? ?refgcc_-m64_-march=k8_-O2_-fomit-frame-pointer2019012220181123
142972198? ? ?? ? ?refgcc_-m64_-march=barcelona_-O2_-fomit-frame-pointer2019012220181123
142980822? ? ?? ? ?refgcc_-march=k8_-O3_-fomit-frame-pointer2019012220181123
142980930? ? ?? ? ?refgcc_-funroll-loops_-march=barcelona_-O3_-fomit-frame-pointer2019012220181123
142985588? ? ?? ? ?refgcc_-m64_-march=core-avx2_-O3_-fomit-frame-pointer2019012220181123
142987464? ? ?? ? ?refclang_-O3_-fwrapv_-march=x86-64_-mcpu=core-avx2_-mavx2_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019012220181123
142995800? ? ?? ? ?refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019012220181123
142998040? ? ?? ? ?refgcc_-Os_-fomit-frame-pointer2019012220181123
143001322? ? ?? ? ?refgcc_-m64_-march=k8_-O_-fomit-frame-pointer2019012220181123
143004504? ? ?? ? ?refgcc_-m64_-march=corei7_-Os_-fomit-frame-pointer2019012220181123
143006474? ? ?? ? ?refgcc_-march=barcelona_-O_-fomit-frame-pointer2019012220181123
143012688? ? ?? ? ?refclang_-mcpu=cortex-a8_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019012220181123
143013618? ? ?? ? ?refgcc_-march=nocona_-O_-fomit-frame-pointer2019012220181123
143013632? ? ?? ? ?refgcc_-funroll-loops_-m64_-O_-fomit-frame-pointer2019012220181123
143021412? ? ?? ? ?refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019012220181123
143024528? ? ?? ? ?refgcc_-m64_-march=k8_-O3_-fomit-frame-pointer2019012220181123
143025490? ? ?? ? ?refgcc_-m64_-march=barcelona_-O_-fomit-frame-pointer2019012220181123
143036326? ? ?? ? ?refgcc_-march=k8_-O_-fomit-frame-pointer2019012220181123
143040730? ? ?? ? ?refgcc_-funroll-loops_-m64_-O2_-fomit-frame-pointer2019012220181123
143050158? ? ?? ? ?refgcc_-funroll-loops_-m64_-march=barcelona_-O2_-fomit-frame-pointer2019012220181123
143053388? ? ?? ? ?refgcc_-march=barcelona_-Os_-fomit-frame-pointer2019012220181123
143070776? ? ?? ? ?refgcc_-m64_-march=core2_-msse4_-Os_-fomit-frame-pointer2019012220181123
143071212? ? ?? ? ?refgcc_-funroll-loops_-march=barcelona_-O_-fomit-frame-pointer2019012220181123
143074670? ? ?? ? ?refgcc_-m64_-march=core2_-Os_-fomit-frame-pointer2019012220181123
143075860? ? ?? ? ?refgcc_-m64_-march=barcelona_-Os_-fomit-frame-pointer2019012220181123
143085010? ? ?? ? ?refgcc_-m64_-march=nocona_-Os_-fomit-frame-pointer2019012220181123
143087844? ? ?? ? ?refgcc_-m64_-march=core2_-O_-fomit-frame-pointer2019012220181123
143089504? ? ?? ? ?refgcc_-m64_-march=core-avx-i_-Os_-fomit-frame-pointer2019012220181123
143090816? ? ?? ? ?refgcc_-m64_-Os_-fomit-frame-pointer2019012220181123
143111880? ? ?? ? ?refgcc_-march=k8_-Os_-fomit-frame-pointer2019012220181123
143112024? ? ?? ? ?refgcc_-m64_-march=native_-mtune=native_-O_-fomit-frame-pointer2019012220181123
143113692? ? ?? ? ?refgcc_-m64_-march=corei7-avx_-O_-fomit-frame-pointer2019012220181123
143114686? ? ?? ? ?refgcc_-m64_-march=corei7-avx_-Os_-fomit-frame-pointer2019012220181123
143121612? ? ?? ? ?refgcc_-m64_-march=barcelona_-O3_-fomit-frame-pointer2019012220181123
143124162? ? ?? ? ?refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019012220181123
143132330? ? ?? ? ?refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019012220181123
143134728? ? ?? ? ?refgcc_-march=nocona_-Os_-fomit-frame-pointer2019012220181123
143136148? ? ?? ? ?refgcc_-m64_-O2_-fomit-frame-pointer2019012220181123
143145144? ? ?? ? ?refgcc_-funroll-loops_-m64_-O3_-fomit-frame-pointer2019012220181123
143155192? ? ?? ? ?refgcc_-funroll-loops_-m64_-march=k8_-O2_-fomit-frame-pointer2019012220181123
143162376? ? ?? ? ?refgcc_-m64_-O3_-fomit-frame-pointer2019012220181123
143182758? ? ?? ? ?refgcc_-funroll-loops_-m64_-march=nocona_-O2_-fomit-frame-pointer2019012220181123
143185496? ? ?? ? ?refclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019012220181123
143192592? ? ?? ? ?refgcc_-funroll-loops_-O_-fomit-frame-pointer2019012220181123
143193554? ? ?? ? ?refgcc_-funroll-loops_-m64_-march=k8_-O_-fomit-frame-pointer2019012220181123
143196692? ? ?? ? ?refgcc_-m64_-march=core2_-msse4.1_-O_-fomit-frame-pointer2019012220181123
143202484? ? ?? ? ?refgcc_-m64_-march=core2_-msse4_-O_-fomit-frame-pointer2019012220181123
143206960? ? ?? ? ?refgcc_-m64_-march=nocona_-O_-fomit-frame-pointer2019012220181123
143210634? ? ?? ? ?refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019012220181123
143210908? ? ?? ? ?refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019012220181123
143212064? ? ?? ? ?refgcc_-m64_-march=core2_-msse4.1_-Os_-fomit-frame-pointer2019012220181123
143212174? ? ?? ? ?refgcc_-m64_-march=core2_-msse4.1_-O2_-fomit-frame-pointer2019012220181123
143212200? ? ?? ? ?refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019012220181123
143214112? ? ?? ? ?refgcc_-m64_-march=core2_-msse4_-O2_-fomit-frame-pointer2019012220181123
143214316? ? ?? ? ?refgcc_-m64_-march=core-avx2_-O_-fomit-frame-pointer2019012220181123
143214318? ? ?? ? ?refclang_-mcpu=cortex-a9_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019012220181123
143215144? ? ?? ? ?refgcc_-m64_-march=k8_-Os_-fomit-frame-pointer2019012220181123
143218934? ? ?? ? ?refgcc_-funroll-loops_-march=nocona_-Os_-fomit-frame-pointer2019012220181123
143219704? ? ?? ? ?refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019012220181123
143222196? ? ?? ? ?refgcc_-funroll-loops_-march=k8_-Os_-fomit-frame-pointer2019012220181123
143225862? ? ?? ? ?refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019012220181123
143227768? ? ?? ? ?refgcc_-m64_-march=core-avx-i_-O2_-fomit-frame-pointer2019012220181123
143233524? ? ?? ? ?refgcc_-m64_-march=core2_-O3_-fomit-frame-pointer2019012220181123
143237042? ? ?? ? ?refgcc_-O_-fomit-frame-pointer2019012220181123
143245022? ? ?? ? ?refgcc_-m64_-march=core2_-O2_-fomit-frame-pointer2019012220181123
143246128? ? ?? ? ?refgcc_-funroll-loops_-m64_-Os_-fomit-frame-pointer2019012220181123
143249986? ? ?? ? ?refgcc_-m64_-march=core-avx2_-Os_-fomit-frame-pointer2019012220181123
143253004? ? ?? ? ?refgcc_-m64_-march=corei7_-O_-fomit-frame-pointer2019012220181123
143255990? ? ?? ? ?refgcc_-m64_-march=core-avx-i_-O_-fomit-frame-pointer2019012220181123
143260340? ? ?? ? ?refgcc_-O2_-fomit-frame-pointer2019012220181123
143261134? ? ?? ? ?refgcc_-m64_-march=corei7-avx_-O2_-fomit-frame-pointer2019012220181123
143261552? ? ?? ? ?refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019012220181123
143272766? ? ?? ? ?refgcc_-m64_-O_-fomit-frame-pointer2019012220181123
143274414? ? ?? ? ?refgcc_-funroll-loops_-march=barcelona_-Os_-fomit-frame-pointer2019012220181123
143281810? ? ?? ? ?refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019012220181123
143283400? ? ?? ? ?refgcc_-funroll-loops_-m64_-march=nocona_-Os_-fomit-frame-pointer2019012220181123
143283824? ? ?? ? ?refgcc_-m64_-march=corei7_-O2_-fomit-frame-pointer2019012220181123
143290976? ? ?? ? ?refgcc_-m64_-march=core-avx2_-O2_-fomit-frame-pointer2019012220181123
143291302? ? ?? ? ?refgcc_-funroll-loops_-m64_-march=barcelona_-O_-fomit-frame-pointer2019012220181123
143292480? ? ?? ? ?refgcc_-funroll-loops_-m64_-march=k8_-Os_-fomit-frame-pointer2019012220181123
143309414? ? ?? ? ?refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019012220181123
143326756? ? ?? ? ?refgcc_-march=nocona_-O2_-fomit-frame-pointer2019012220181123
143347830? ? ?? ? ?refgcc_-funroll-loops_-m64_-march=barcelona_-Os_-fomit-frame-pointer2019012220181123
143367764? ? ?? ? ?refgcc_-funroll-loops_-march=barcelona_-O2_-fomit-frame-pointer2019012220181123
143388560? ? ?? ? ?refgcc_-funroll-loops_-march=nocona_-O_-fomit-frame-pointer2019012220181123
143414626? ? ?? ? ?refgcc_-march=barcelona_-O3_-fomit-frame-pointer2019012220181123
143470208? ? ?? ? ?refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019012220181123
143478056? ? ?? ? ?refgcc_-funroll-loops_-march=nocona_-O2_-fomit-frame-pointer2019012220181123
143515416? ? ?? ? ?refgcc_-m64_-march=nocona_-O2_-fomit-frame-pointer2019012220181123
143540148? ? ?? ? ?refgcc_-funroll-loops_-m64_-march=nocona_-O_-fomit-frame-pointer2019012220181123
143542488? ? ?? ? ?refgcc_-m64_-march=native_-mtune=native_-O2_-fomit-frame-pointer2019012220181123
143637524? ? ?? ? ?refgcc_-funroll-loops_-march=k8_-O2_-fomit-frame-pointer2019012220181123
144227630? ? ?? ? ?refgcc2019012220181123
144286734? ? ?? ? ?refgcc_-funroll-loops2019012220181123

Compiler output

Implementation: ref
Security model: unknown
Compiler: cc
dec.c: dec.c: In function 'remainders_via_tree':
dec.c: dec.c:102:3: warning: passing argument 3 of 'remainders_via_tree' from incompatible pointer type [enabled by default]
dec.c: remainders_via_tree(xmodq,x,q,qlen);
dec.c: ^
dec.c: dec.c:75:13: note: expected 'const struct __mpz_struct (*)[1]' but argument is of type 'struct __mpz_struct (*)[1]'
dec.c: static void remainders_via_tree(mpz_t *xmodp,const mpz_t x,const mpz_t *p,long long plen)
dec.c: ^
dec.c: dec.c: In function 'cuberoot':
dec.c: dec.c:185:3: warning: passing argument 3 of 'sumfrac' from incompatible pointer type [enabled by default]
dec.c: sumfrac(x,t,xmodp,p,K);
dec.c: ^
dec.c: dec.c:31:13: note: expected 'const struct __mpz_struct (*)[1]' but argument is of type 'struct __mpz_struct (*)[1]'
dec.c: static void sumfrac(mpz_t num,mpz_t den,const mpz_t *x,const mpz_t *p,long long plen)
dec.c: ^
dec.c: dec.c: In function 'crypto_encrypt_pqrsa15_ref_open':
dec.c: dec.c:246:3: warning: passing argument 2 of 'cuberoot' from incompatible pointer type [enabled by default]
dec.c: cuberoot(xint,p,pinv,N);
dec.c: ^
dec.c: dec.c:142:12: note: expected 'const struct __mpz_struct (*)[1]' but argument is of type 'struct __mpz_struct (*)[1]'
dec.c: static int cuberoot(mpz_t x,const mpz_t *p,const mpz_t *pinv,const mpz_t N)
dec.c: ^
dec.c: dec.c:246:3: warning: passing argument 3 of 'cuberoot' from incompatible pointer type [enabled by default]
dec.c: cuberoot(xint,p,pinv,N);
dec.c: ^
dec.c: dec.c:142:12: note: expected 'const struct __mpz_struct (*)[1]' but argument is of type 'struct __mpz_struct (*)[1]'
dec.c: ...

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

Compiler output

Implementation: ref
Security model: unknown
Compiler: clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments
try.c: fatal error: error in backend: Cannot select: 0x190ec80: v4i64 = X86ISD::VTRUNC 0x190eab0
try.c: 0x190eab0: v16i32 = vselect 0x1904810, 0x18a8c90, 0x190e980
try.c: 0x1904810: v4i1 = X86ISD::PCMPGTM 0x18f6d70, 0x18a9a40
try.c: 0x18f6d70: v4i64 = X86ISD::VBROADCAST 0x18a9dd0
try.c: 0x18a9dd0: i64,ch = load<LD8[%uglygep72]> 0x17f2dd0, 0x18ea6b0, undef:i64
try.c: 0x18ea6b0: i64 = add 0x18f7c50, 0x188bd10
try.c: 0x18f7c50: i64 = X86ISD::Wrapper TargetGlobalAddress:i64<[64 x i64]* @cycles> 0
try.c: 0x18ef1b0: i64 = TargetGlobalAddress<[64 x i64]* @cycles> 0
try.c: 0x188bd10: i64 = shl 0x18ee960, Constant:i8<3>
try.c: 0x18ee960: i64,ch = CopyFromReg 0x17f2dd0, Register:i64 %vreg50
try.c: 0x18f8110: i64 = Register %vreg50
try.c: 0x18991c0: i8 = Constant<3>
try.c: 0x18f53e0: i64 = undef
try.c: 0x18a9a40: v4i64,ch = CopyFromReg 0x17f2dd0, Register:v4i64 %vreg13
try.c: 0x18a4480: v4i64 = Register %vreg13
try.c: 0x18a8c90: v16i32 = X86ISD::VBROADCAST 0x18eebc0
try.c: 0x18eebc0: i32,ch = load<LD4[ConstantPool]> 0x17f2dd0, 0x190e5f0, undef:i64
try.c: 0x190e5f0: i64 = X86ISD::Wrapper TargetConstantPool:i64<i32 1> 0
try.c: 0x18b9ee0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x18f53e0: i64 = undef
try.c: 0x190e980: 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: 0x190e850: i32 = Constant<0>
try.c: 0x190e850: i32 = Constant<0>
try.c: 0x190e850: i32 = Constant<0>
try.c: 0x190e850: i32 = Constant<0>
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: ref
Security model: unknown
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: fatal error: error in backend: Cannot select: 0x11839d0: v4i64 = X86ISD::VTRUNC 0x11779d0
try.c: 0x11779d0: v16i32 = vselect 0x1174610, 0x11087b0, 0x11778a0
try.c: 0x1174610: v4i1 = X86ISD::PCMPGTM 0x1160480, 0x111cb40
try.c: 0x1160480: v4i64 = X86ISD::VBROADCAST 0x111ced0
try.c: 0x111ced0: i64,ch = load<LD8[%uglygep72]> 0x105add0, 0x114f200, undef:i64
try.c: 0x114f200: i64 = add 0x1161360, 0x10f0280
try.c: 0x1161360: i64 = X86ISD::Wrapper TargetGlobalAddress:i64<[64 x i64]* @cycles> 0
try.c: 0x115b330: i64 = TargetGlobalAddress<[64 x i64]* @cycles> 0
try.c: 0x10f0280: i64 = shl 0x115aae0, Constant:i8<3>
try.c: 0x115aae0: i64,ch = CopyFromReg 0x105add0, Register:i64 %vreg50
try.c: 0x1161820: i64 = Register %vreg50
try.c: 0x10dcc30: i8 = Constant<3>
try.c: 0x115eaf0: i64 = undef
try.c: 0x111cb40: v4i64,ch = CopyFromReg 0x105add0, Register:v4i64 %vreg13
try.c: 0x10f78d0: v4i64 = Register %vreg13
try.c: 0x11087b0: v16i32 = X86ISD::VBROADCAST 0x115ad40
try.c: 0x115ad40: i32,ch = load<LD4[ConstantPool]> 0x105add0, 0x1177510, undef:i64
try.c: 0x1177510: i64 = X86ISD::Wrapper TargetConstantPool:i64<i32 1> 0
try.c: 0x10f53f0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x115eaf0: i64 = undef
try.c: 0x11778a0: 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: 0x1177770: i32 = Constant<0>
try.c: 0x1177770: i32 = Constant<0>
try.c: 0x1177770: i32 = Constant<0>
try.c: 0x1177770: i32 = Constant<0>
try.c: ...

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