Implementation notes: amd64, cel02, crypto_sign/pflash1

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

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
SignScheme.c: SignScheme.c:211:19: warning: passing 'const unsigned char *' to parameter of type 'byte *' (aka 'unsigned char *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
SignScheme.c: SignScheme_sign( sk , h , mlen , sm );
SignScheme.c: ^~
SignScheme.c: SignScheme.c:95:29: note: passing argument to parameter 'pri' here
SignScheme.c: int SignScheme_sign( byte * pri , byte * Y , int Ylen , byte * outX )
SignScheme.c: ^
SignScheme.c: SignScheme.c:227:19: warning: passing 'const unsigned char *' to parameter of type 'byte *' (aka 'unsigned char *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
SignScheme.c: SignScheme_GMap( pk , sm , h );
SignScheme.c: ^~
SignScheme.c: SignScheme.c:152:29: note: passing argument to parameter 'pub' here
SignScheme.c: int SignScheme_GMap( byte * pub , byte * X , byte * outY )
SignScheme.c: ^
SignScheme.c: SignScheme.c:227:24: warning: passing 'const unsigned char *' to parameter of type 'byte *' (aka 'unsigned char *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
SignScheme.c: SignScheme_GMap( pk , sm , h );
SignScheme.c: ^~
SignScheme.c: SignScheme.c:152:42: note: passing argument to parameter 'X' here
SignScheme.c: int SignScheme_GMap( byte * pub , byte * X , byte * outY )
SignScheme.c: ^
SignScheme.c: 3 warnings generated.
try.c: fatal error: error in backend: Cannot select: 0x56190e4798c0: v4i64 = X86ISD::VTRUNC 0x56190e479790
try.c: 0x56190e479790: v16i32 = vselect 0x56190e458940, 0x56190e3fe6a0, 0x56190e479660
try.c: 0x56190e458940: v4i1 = X86ISD::PCMPGTM 0x56190e455910, 0x56190e4514a0
try.c: 0x56190e455910: v4i64 = X86ISD::VBROADCAST 0x56190e3fb840
try.c: 0x56190e3fb840: i64,ch = load<LD8[%lsr.iv6971]> 0x56190e366920, 0x56190e443130, undef:i64
try.c: 0x56190e443130: i64,ch = CopyFromReg 0x56190e366920, Register:i64 %vreg50
try.c: 0x56190e451700: i64 = Register %vreg50
try.c: 0x56190e3fcd10: i64 = undef
try.c: 0x56190e4514a0: v4i64,ch = CopyFromReg 0x56190e366920, Register:v4i64 %vreg13
try.c: 0x56190e456160: v4i64 = Register %vreg13
try.c: 0x56190e3fe6a0: v16i32 = X86ISD::VBROADCAST 0x56190e455b70
try.c: 0x56190e455b70: i32,ch = load<LD4[ConstantPool]> 0x56190e366920, 0x56190e410ff0, undef:i64
try.c: 0x56190e410ff0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x56190e43d2c0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x56190e3fcd10: i64 = undef
try.c: 0x56190e479660: 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: 0x56190e479530: i32 = Constant<0>
try.c: 0x56190e479530: i32 = Constant<0>
try.c: 0x56190e479530: i32 = Constant<0>
try.c: 0x56190e479530: i32 = Constant<0>
try.c: 0x56190e479530: i32 = Constant<0>
try.c: 0x56190e479530: i32 = Constant<0>
try.c: 0x56190e479530: i32 = Constant<0>
try.c: 0x56190e479530: i32 = Constant<0>
try.c: 0x56190e479530: 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
SignScheme.c: SignScheme.c:211:19: warning: passing 'const unsigned char *' to parameter of type 'byte *' (aka 'unsigned char *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
SignScheme.c: SignScheme_sign( sk , h , mlen , sm );
SignScheme.c: ^~
SignScheme.c: SignScheme.c:95:29: note: passing argument to parameter 'pri' here
SignScheme.c: int SignScheme_sign( byte * pri , byte * Y , int Ylen , byte * outX )
SignScheme.c: ^
SignScheme.c: SignScheme.c:227:19: warning: passing 'const unsigned char *' to parameter of type 'byte *' (aka 'unsigned char *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
SignScheme.c: SignScheme_GMap( pk , sm , h );
SignScheme.c: ^~
SignScheme.c: SignScheme.c:152:29: note: passing argument to parameter 'pub' here
SignScheme.c: int SignScheme_GMap( byte * pub , byte * X , byte * outY )
SignScheme.c: ^
SignScheme.c: SignScheme.c:227:24: warning: passing 'const unsigned char *' to parameter of type 'byte *' (aka 'unsigned char *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
SignScheme.c: SignScheme_GMap( pk , sm , h );
SignScheme.c: ^~
SignScheme.c: SignScheme.c:152:42: note: passing argument to parameter 'X' here
SignScheme.c: int SignScheme_GMap( byte * pub , byte * X , byte * outY )
SignScheme.c: ^
SignScheme.c: 3 warnings generated.
try.c: fatal error: error in backend: Cannot select: 0x559af3d4ae30: v4i64 = X86ISD::VTRUNC 0x559af3d4ad00
try.c: 0x559af3d4ad00: v16i32 = vselect 0x559af3d45800, 0x559af3cc8c00, 0x559af3d4abd0
try.c: 0x559af3d45800: v4i1 = X86ISD::PCMPGTM 0x559af3d30c60, 0x559af3d2d800
try.c: 0x559af3d30c60: v4i64 = X86ISD::VBROADCAST 0x559af3cc90c0
try.c: 0x559af3cc90c0: i64,ch = load<LD8[%lsr.iv6971]> 0x559af3c2a9f0, 0x559af3cdcc50, undef:i64
try.c: 0x559af3cdcc50: i64,ch = CopyFromReg 0x559af3c2a9f0, Register:i64 %vreg50
try.c: 0x559af3d2da60: i64 = Register %vreg50
try.c: 0x559af3cbfa90: i64 = undef
try.c: 0x559af3d2d800: v4i64,ch = CopyFromReg 0x559af3c2a9f0, Register:v4i64 %vreg13
try.c: 0x559af3d314b0: v4i64 = Register %vreg13
try.c: 0x559af3cc8c00: v16i32 = X86ISD::VBROADCAST 0x559af3d30ec0
try.c: 0x559af3d30ec0: i32,ch = load<LD4[ConstantPool]> 0x559af3c2a9f0, 0x559af3cc5930, undef:i64
try.c: 0x559af3cc5930: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x559af3cc0410: i64 = TargetConstantPool<i32 1> 0
try.c: 0x559af3cbfa90: i64 = undef
try.c: 0x559af3d4abd0: 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: 0x559af3d4aaa0: i32 = Constant<0>
try.c: 0x559af3d4aaa0: i32 = Constant<0>
try.c: 0x559af3d4aaa0: i32 = Constant<0>
try.c: 0x559af3d4aaa0: i32 = Constant<0>
try.c: 0x559af3d4aaa0: i32 = Constant<0>
try.c: 0x559af3d4aaa0: i32 = Constant<0>
try.c: 0x559af3d4aaa0: i32 = Constant<0>
try.c: 0x559af3d4aaa0: i32 = Constant<0>
try.c: 0x559af3d4aaa0: 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
SignScheme.c: SignScheme.c:211:19: warning: passing 'const unsigned char *' to parameter of type 'byte *' (aka 'unsigned char *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
SignScheme.c: SignScheme_sign( sk , h , mlen , sm );
SignScheme.c: ^~
SignScheme.c: SignScheme.c:95:29: note: passing argument to parameter 'pri' here
SignScheme.c: int SignScheme_sign( byte * pri , byte * Y , int Ylen , byte * outX )
SignScheme.c: ^
SignScheme.c: SignScheme.c:227:19: warning: passing 'const unsigned char *' to parameter of type 'byte *' (aka 'unsigned char *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
SignScheme.c: SignScheme_GMap( pk , sm , h );
SignScheme.c: ^~
SignScheme.c: SignScheme.c:152:29: note: passing argument to parameter 'pub' here
SignScheme.c: int SignScheme_GMap( byte * pub , byte * X , byte * outY )
SignScheme.c: ^
SignScheme.c: SignScheme.c:227:24: warning: passing 'const unsigned char *' to parameter of type 'byte *' (aka 'unsigned char *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
SignScheme.c: SignScheme_GMap( pk , sm , h );
SignScheme.c: ^~
SignScheme.c: SignScheme.c:152:42: note: passing argument to parameter 'X' here
SignScheme.c: int SignScheme_GMap( byte * pub , byte * X , byte * outY )
SignScheme.c: ^
SignScheme.c: 3 warnings generated.
try.c: fatal error: error in backend: Cannot select: 0x55798fb011e0: v4i64 = X86ISD::VTRUNC 0x55798fb010b0
try.c: 0x55798fb010b0: v16i32 = vselect 0x55798faf1eb0, 0x55798fa8f260, 0x55798fb00f80
try.c: 0x55798faf1eb0: v4i1 = X86ISD::PCMPGTM 0x55798fae6860, 0x55798fae23f0
try.c: 0x55798fae6860: v4i64 = X86ISD::VBROADCAST 0x55798fa8b280
try.c: 0x55798fa8b280: i64,ch = load<LD8[%lsr.iv6971]> 0x55798f9f7920, 0x55798fad0800, undef:i64
try.c: 0x55798fad0800: i64,ch = CopyFromReg 0x55798f9f7920, Register:i64 %vreg50
try.c: 0x55798fae2650: i64 = Register %vreg50
try.c: 0x55798fa8d8d0: i64 = undef
try.c: 0x55798fae23f0: v4i64,ch = CopyFromReg 0x55798f9f7920, Register:v4i64 %vreg13
try.c: 0x55798fae70b0: v4i64 = Register %vreg13
try.c: 0x55798fa8f260: v16i32 = X86ISD::VBROADCAST 0x55798fae6ac0
try.c: 0x55798fae6ac0: i32,ch = load<LD4[ConstantPool]> 0x55798f9f7920, 0x55798fa8a860, undef:i64
try.c: 0x55798fa8a860: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55798fad1a00: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55798fa8d8d0: i64 = undef
try.c: 0x55798fb00f80: 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: 0x55798fb00e50: i32 = Constant<0>
try.c: 0x55798fb00e50: i32 = Constant<0>
try.c: 0x55798fb00e50: i32 = Constant<0>
try.c: 0x55798fb00e50: i32 = Constant<0>
try.c: 0x55798fb00e50: i32 = Constant<0>
try.c: 0x55798fb00e50: i32 = Constant<0>
try.c: 0x55798fb00e50: i32 = Constant<0>
try.c: 0x55798fb00e50: i32 = Constant<0>
try.c: 0x55798fb00e50: 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
SignScheme.c: SignScheme.c:211:19: warning: passing 'const unsigned char *' to parameter of type 'byte *' (aka 'unsigned char *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
SignScheme.c: SignScheme_sign( sk , h , mlen , sm );
SignScheme.c: ^~
SignScheme.c: SignScheme.c:95:29: note: passing argument to parameter 'pri' here
SignScheme.c: int SignScheme_sign( byte * pri , byte * Y , int Ylen , byte * outX )
SignScheme.c: ^
SignScheme.c: SignScheme.c:227:19: warning: passing 'const unsigned char *' to parameter of type 'byte *' (aka 'unsigned char *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
SignScheme.c: SignScheme_GMap( pk , sm , h );
SignScheme.c: ^~
SignScheme.c: SignScheme.c:152:29: note: passing argument to parameter 'pub' here
SignScheme.c: int SignScheme_GMap( byte * pub , byte * X , byte * outY )
SignScheme.c: ^
SignScheme.c: SignScheme.c:227:24: warning: passing 'const unsigned char *' to parameter of type 'byte *' (aka 'unsigned char *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
SignScheme.c: SignScheme_GMap( pk , sm , h );
SignScheme.c: ^~
SignScheme.c: SignScheme.c:152:42: note: passing argument to parameter 'X' here
SignScheme.c: int SignScheme_GMap( byte * pub , byte * X , byte * outY )
SignScheme.c: ^
SignScheme.c: 3 warnings generated.
try.c: crypto_sign_pflash1.a(PFLASH.o): In function `PFLASH_QMap':
try.c: PFLASH.c:(.text+0x...): undefined reference to `polyPow88'
try.c: crypto_sign_pflash1.a(PFLASH.o): In function `PFLASH_ivsQMap':
try.c: PFLASH.c:(.text+0x...): undefined reference to `polyPow24'
try.c: PFLASH.c:(.text+0x...): undefined reference to `polyPow8'
try.c: PFLASH.c:(.text+0x...): undefined reference to `polyPow8'
try.c: PFLASH.c:(.text+0x...): undefined reference to `polyPow8'
try.c: PFLASH.c:(.text+0x...): undefined reference to `polyPow8'
try.c: PFLASH.c:(.text+0x...): undefined reference to `polyPow56'
try.c: PFLASH.c:(.text+0x...): undefined reference to `polyPow56'
try.c: PFLASH.c:(.text+0x...): undefined reference to `polyPow56'
try.c: PFLASH.c:(.text+0x...): undefined reference to `polyPow8'
try.c: PFLASH.c:(.text+0x...): undefined reference to `polyPow56'
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
PFLASH.c: PFLASH.c:152:16: warning: '_Z' is static but used in inline function 'polyMul' which is not static
PFLASH.c: memcpy( outZ ,_Z,37);
PFLASH.c: ^~
PFLASH.c: PFLASH.c:149:4: warning: '_Z' is static but used in inline function 'polyMul' which is not static
PFLASH.c: _Z[i-(37- 0)] ^= temp;
PFLASH.c: ^~
PFLASH.c: PFLASH.c:148:4: warning: '_Z' is static but used in inline function 'polyMul' which is not static
PFLASH.c: _Z[i-(37- 2)] ^= temp;
PFLASH.c: ^~
PFLASH.c: PFLASH.c:147:4: warning: '_Z' is static but used in inline function 'polyMul' which is not static
PFLASH.c: _Z[i-(37-10)] ^= temp;
PFLASH.c: ^~
PFLASH.c: PFLASH.c:146:4: warning: '_Z' is static but used in inline function 'polyMul' which is not static
PFLASH.c: _Z[i-(37-12)] ^= temp;
PFLASH.c: ^~
PFLASH.c: PFLASH.c:143:10: warning: '_Z' is static but used in inline function 'polyMul' which is not static
PFLASH.c: temp = _Z[i];
PFLASH.c: ^~
PFLASH.c: PFLASH.c:136:15: warning: '_Z' is static but used in inline function 'polyMul' which is not static
PFLASH.c: if( logY ) _Z[i+j] ^= alogtab[logX+logY];
PFLASH.c: ^~
PFLASH.c: PFLASH.c:128:11: warning: '_Z' is static but used in inline function 'polyMul' which is not static
PFLASH.c: memset(_Z,0,73);
PFLASH.c: ^~
PFLASH.c: PFLASH.c:122:16: warning: '_Z' is static but used in inline function 'polySqu' which is not static
PFLASH.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref
gcc -march=native -mtune=native -O3 -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