Implementation notes: amd64, cel02, crypto_hash/rhash

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

Test failure

Implementation: T:ref
Security model: timingleaks
Compiler: clang++ -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
error 111
crypto_hash is nondeterministic

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang++ -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:ref
g++ -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref
g++ -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref
g++ -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref
g++ -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang++ -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
Hash.cpp: In file included from Hash.cpp:9:
Hash.cpp: ./Hash.h:6:37: warning: '&' within '^' [-Wbitwise-op-parentheses]
Hash.cpp: ulong out = ulong (num ^ (num>>32) & 0xffffffff);
Hash.cpp: ~ ~~~~~~~~~~^~~~~~~~~~~~
Hash.cpp: ./Hash.h:6:37: note: place parentheses around the '&' expression to silence this warning
Hash.cpp: ulong out = ulong (num ^ (num>>32) & 0xffffffff);
Hash.cpp: ^
Hash.cpp: ( )
Hash.cpp: 1 warning generated.
try.cpp: fatal error: error in backend: Cannot select: 0x563766ffc300: v4i64 = X86ISD::VTRUNC 0x563766ffc1d0
try.cpp: 0x563766ffc1d0: v16i32 = vselect 0x563767011060, 0x563766fa5fb0, 0x563766ffc0a0
try.cpp: 0x563767011060: v4i1 = X86ISD::PCMPGTM 0x563766ff7ce0, 0x563766ff3870
try.cpp: 0x563766ff7ce0: v4i64 = X86ISD::VBROADCAST 0x563766fb7660
try.cpp: 0x563766fb7660: i64,ch = load<LD8[%lsr.iv6971]> 0x563766f069c0, 0x563766fe9210, undef:i64
try.cpp: 0x563766fe9210: i64,ch = CopyFromReg 0x563766f069c0, Register:i64 %vreg50
try.cpp: 0x563766ff3ad0: i64 = Register %vreg50
try.cpp: 0x563766fb8b30: i64 = undef
try.cpp: 0x563766ff3870: v4i64,ch = CopyFromReg 0x563766f069c0, Register:v4i64 %vreg13
try.cpp: 0x563766ff8530: v4i64 = Register %vreg13
try.cpp: 0x563766fa5fb0: v16i32 = X86ISD::VBROADCAST 0x563766ff7f40
try.cpp: 0x563766ff7f40: i32,ch = load<LD4[ConstantPool]> 0x563766f069c0, 0x563766f9a4e0, undef:i64
try.cpp: 0x563766f9a4e0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.cpp: 0x563766f9c7b0: i64 = TargetConstantPool<i32 1> 0
try.cpp: 0x563766fb8b30: i64 = undef
try.cpp: 0x563766ffc0a0: 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.cpp: 0x563766ffbf70: i32 = Constant<0>
try.cpp: 0x563766ffbf70: i32 = Constant<0>
try.cpp: 0x563766ffbf70: i32 = Constant<0>
try.cpp: 0x563766ffbf70: i32 = Constant<0>
try.cpp: 0x563766ffbf70: i32 = Constant<0>
try.cpp: 0x563766ffbf70: i32 = Constant<0>
try.cpp: 0x563766ffbf70: i32 = Constant<0>
try.cpp: 0x563766ffbf70: i32 = Constant<0>
try.cpp: 0x563766ffbf70: i32 = Constant<0>
try.cpp: ...

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
Hash.cpp: In file included from Hash.cpp:9:
Hash.cpp: ./Hash.h:6:37: warning: '&' within '^' [-Wbitwise-op-parentheses]
Hash.cpp: ulong out = ulong (num ^ (num>>32) & 0xffffffff);
Hash.cpp: ~ ~~~~~~~~~~^~~~~~~~~~~~
Hash.cpp: ./Hash.h:6:37: note: place parentheses around the '&' expression to silence this warning
Hash.cpp: ulong out = ulong (num ^ (num>>32) & 0xffffffff);
Hash.cpp: ^
Hash.cpp: ( )
Hash.cpp: 1 warning generated.
try.cpp: fatal error: error in backend: Cannot select: 0x55ad6ffa2e00: v4i64 = X86ISD::VTRUNC 0x55ad6ffa2cd0
try.cpp: 0x55ad6ffa2cd0: v16i32 = vselect 0x55ad6ff86140, 0x55ad6ff21990, 0x55ad6ffa2ba0
try.cpp: 0x55ad6ff86140: v4i1 = X86ISD::PCMPGTM 0x55ad6ff7ccf0, 0x55ad6ff78880
try.cpp: 0x55ad6ff7ccf0: v4i64 = X86ISD::VBROADCAST 0x55ad6ff21e50
try.cpp: 0x55ad6ff21e50: i64,ch = load<LD8[%lsr.iv6971]> 0x55ad6fe75a90, 0x55ad6ff17cc0, undef:i64
try.cpp: 0x55ad6ff17cc0: i64,ch = CopyFromReg 0x55ad6fe75a90, Register:i64 %vreg50
try.cpp: 0x55ad6ff78ae0: i64 = Register %vreg50
try.cpp: 0x55ad6ff0fc10: i64 = undef
try.cpp: 0x55ad6ff78880: v4i64,ch = CopyFromReg 0x55ad6fe75a90, Register:v4i64 %vreg13
try.cpp: 0x55ad6ff7d540: v4i64 = Register %vreg13
try.cpp: 0x55ad6ff21990: v16i32 = X86ISD::VBROADCAST 0x55ad6ff7cf50
try.cpp: 0x55ad6ff7cf50: i32,ch = load<LD4[ConstantPool]> 0x55ad6fe75a90, 0x55ad6ff24330, undef:i64
try.cpp: 0x55ad6ff24330: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.cpp: 0x55ad6ff10590: i64 = TargetConstantPool<i32 1> 0
try.cpp: 0x55ad6ff0fc10: i64 = undef
try.cpp: 0x55ad6ffa2ba0: 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.cpp: 0x55ad6ffa2a70: i32 = Constant<0>
try.cpp: 0x55ad6ffa2a70: i32 = Constant<0>
try.cpp: 0x55ad6ffa2a70: i32 = Constant<0>
try.cpp: 0x55ad6ffa2a70: i32 = Constant<0>
try.cpp: 0x55ad6ffa2a70: i32 = Constant<0>
try.cpp: 0x55ad6ffa2a70: i32 = Constant<0>
try.cpp: 0x55ad6ffa2a70: i32 = Constant<0>
try.cpp: 0x55ad6ffa2a70: i32 = Constant<0>
try.cpp: 0x55ad6ffa2a70: i32 = Constant<0>
try.cpp: ...

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
Hash.cpp: In file included from Hash.cpp:9:
Hash.cpp: ./Hash.h:6:37: warning: '&' within '^' [-Wbitwise-op-parentheses]
Hash.cpp: ulong out = ulong (num ^ (num>>32) & 0xffffffff);
Hash.cpp: ~ ~~~~~~~~~~^~~~~~~~~~~~
Hash.cpp: ./Hash.h:6:37: note: place parentheses around the '&' expression to silence this warning
Hash.cpp: ulong out = ulong (num ^ (num>>32) & 0xffffffff);
Hash.cpp: ^
Hash.cpp: ( )
Hash.cpp: 1 warning generated.
try.cpp: fatal error: error in backend: Cannot select: 0x55c3ded42bc0: v4i64 = X86ISD::VTRUNC 0x55c3ded42a90
try.cpp: 0x55c3ded42a90: v16i32 = vselect 0x55c3ded236a0, 0x55c3decd3550, 0x55c3ded42960
try.cpp: 0x55c3ded236a0: v4i1 = X86ISD::PCMPGTM 0x55c3ded2b270, 0x55c3ded26e00
try.cpp: 0x55c3ded2b270: v4i64 = X86ISD::VBROADCAST 0x55c3decd06f0
try.cpp: 0x55c3decd06f0: i64,ch = load<LD8[%lsr.iv6971]> 0x55c3dec3a9c0, 0x55c3ded0f870, undef:i64
try.cpp: 0x55c3ded0f870: i64,ch = CopyFromReg 0x55c3dec3a9c0, Register:i64 %vreg50
try.cpp: 0x55c3ded27060: i64 = Register %vreg50
try.cpp: 0x55c3decd1bc0: i64 = undef
try.cpp: 0x55c3ded26e00: v4i64,ch = CopyFromReg 0x55c3dec3a9c0, Register:v4i64 %vreg13
try.cpp: 0x55c3ded2bac0: v4i64 = Register %vreg13
try.cpp: 0x55c3decd3550: v16i32 = X86ISD::VBROADCAST 0x55c3ded2b4d0
try.cpp: 0x55c3ded2b4d0: i32,ch = load<LD4[ConstantPool]> 0x55c3dec3a9c0, 0x55c3decceb50, undef:i64
try.cpp: 0x55c3decceb50: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.cpp: 0x55c3ded18d20: i64 = TargetConstantPool<i32 1> 0
try.cpp: 0x55c3decd1bc0: i64 = undef
try.cpp: 0x55c3ded42960: 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.cpp: 0x55c3ded42830: i32 = Constant<0>
try.cpp: 0x55c3ded42830: i32 = Constant<0>
try.cpp: 0x55c3ded42830: i32 = Constant<0>
try.cpp: 0x55c3ded42830: i32 = Constant<0>
try.cpp: 0x55c3ded42830: i32 = Constant<0>
try.cpp: 0x55c3ded42830: i32 = Constant<0>
try.cpp: 0x55c3ded42830: i32 = Constant<0>
try.cpp: 0x55c3ded42830: i32 = Constant<0>
try.cpp: 0x55c3ded42830: i32 = Constant<0>
try.cpp: ...

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
Hash.cpp: In file included from Hash.cpp:9:
Hash.cpp: ./Hash.h:6:37: warning: '&' within '^' [-Wbitwise-op-parentheses]
Hash.cpp: ulong out = ulong (num ^ (num>>32) & 0xffffffff);
Hash.cpp: ~ ~~~~~~~~~~^~~~~~~~~~~~
Hash.cpp: ./Hash.h:6:37: note: place parentheses around the '&' expression to silence this warning
Hash.cpp: ulong out = ulong (num ^ (num>>32) & 0xffffffff);
Hash.cpp: ^
Hash.cpp: ( )
Hash.cpp: 1 warning generated.

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