Implementation notes: amd64, cel02, crypto_sign/rainbow5ccyclicc963664

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_sign
Primitive: rainbow5ccyclicc963664
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
5767780496766 8 0136262 936 1688T:ssse3gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
5927250253217 8 0100014 928 1656T:ssse3gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
64660210168293 0 0223126 928 1720T:amd64gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
96543910167747 8 0188126 936 1720T:ssse3gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
11080278497960 8 0138222 936 1688T:ssse3gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
113295624103743 8 0143049 904 1656T:avx2clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
11429780684557 8 0124593 904 1656T:ssse3clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
11645705694530 0 0146702 928 1688T:amd64gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
11678576267030 0 0117769 896 1656T:amd64clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
11777702295708 0 0147558 928 1688T:amd64gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
121046134126579 0 0178615 904 1656T:amd64clang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
125779472116833 0 0167855 904 1656T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
13390244231657 0 083054 920 1656T:amd64gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
13639956254365 0 0105089 896 1656T:refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
136964062128133 0 0183006 928 1720T:refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
14056068858946 0 0111150 928 1688T:refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
14338350259687 0 0111526 928 1688T:refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
15030578428027 0 079238 920 1656T:refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130

Compiler output

Implementation: T:amd64
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x5613368da670: v4i64 = X86ISD::VTRUNC 0x5613368da540
try.c: 0x5613368da540: v16i32 = vselect 0x5613368f2c00, 0x5613368789a0, 0x5613368da410
try.c: 0x5613368f2c00: v4i1 = X86ISD::PCMPGTM 0x5613368d5040, 0x5613368d0bd0
try.c: 0x5613368d5040: v4i64 = X86ISD::VBROADCAST 0x561336882200
try.c: 0x561336882200: i64,ch = load<LD8[%lsr.iv6971]> 0x5613367e5960, 0x5613368c8320, undef:i64
try.c: 0x5613368c8320: i64,ch = CopyFromReg 0x5613367e5960, Register:i64 %vreg50
try.c: 0x5613368d0e30: i64 = Register %vreg50
try.c: 0x5613368836d0: i64 = undef
try.c: 0x5613368d0bd0: v4i64,ch = CopyFromReg 0x5613367e5960, Register:v4i64 %vreg13
try.c: 0x5613368d5890: v4i64 = Register %vreg13
try.c: 0x5613368789a0: v16i32 = X86ISD::VBROADCAST 0x5613368d52a0
try.c: 0x5613368d52a0: i32,ch = load<LD4[ConstantPool]> 0x5613367e5960, 0x5613368a17b0, undef:i64
try.c: 0x5613368a17b0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5613368bc720: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5613368836d0: i64 = undef
try.c: 0x5613368da410: 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: 0x5613368da2e0: i32 = Constant<0>
try.c: 0x5613368da2e0: i32 = Constant<0>
try.c: 0x5613368da2e0: i32 = Constant<0>
try.c: 0x5613368da2e0: i32 = Constant<0>
try.c: 0x5613368da2e0: i32 = Constant<0>
try.c: 0x5613368da2e0: i32 = Constant<0>
try.c: 0x5613368da2e0: i32 = Constant<0>
try.c: 0x5613368da2e0: i32 = Constant<0>
try.c: 0x5613368da2e0: 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:amd64

Compiler output

Implementation: T:amd64
Security model: timingleaks
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55edbfd16e00: v4i64 = X86ISD::VTRUNC 0x55edbfd16cd0
try.c: 0x55edbfd16cd0: v16i32 = vselect 0x55edbfd08570, 0x55edbfc90e00, 0x55edbfd16ba0
try.c: 0x55edbfd08570: v4i1 = X86ISD::PCMPGTM 0x55edbfcf1010, 0x55edbfcec590
try.c: 0x55edbfcf1010: v4i64 = X86ISD::VBROADCAST 0x55edbfc912c0
try.c: 0x55edbfc912c0: i64,ch = load<LD8[%lsr.iv6971]> 0x55edbfbeaa40, 0x55edbfc703b0, undef:i64
try.c: 0x55edbfc703b0: i64,ch = CopyFromReg 0x55edbfbeaa40, Register:i64 %vreg50
try.c: 0x55edbfcec7f0: i64 = Register %vreg50
try.c: 0x55edbfc935b0: i64 = undef
try.c: 0x55edbfcec590: v4i64,ch = CopyFromReg 0x55edbfbeaa40, Register:v4i64 %vreg13
try.c: 0x55edbfcf1860: v4i64 = Register %vreg13
try.c: 0x55edbfc90e00: v16i32 = X86ISD::VBROADCAST 0x55edbfcf1270
try.c: 0x55edbfcf1270: i32,ch = load<LD4[ConstantPool]> 0x55edbfbeaa40, 0x55edbfc8f0b0, undef:i64
try.c: 0x55edbfc8f0b0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55edbfc93f30: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55edbfc935b0: i64 = undef
try.c: 0x55edbfd16ba0: 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: 0x55edbfd16a70: i32 = Constant<0>
try.c: 0x55edbfd16a70: i32 = Constant<0>
try.c: 0x55edbfd16a70: i32 = Constant<0>
try.c: 0x55edbfd16a70: i32 = Constant<0>
try.c: 0x55edbfd16a70: i32 = Constant<0>
try.c: 0x55edbfd16a70: i32 = Constant<0>
try.c: 0x55edbfd16a70: i32 = Constant<0>
try.c: 0x55edbfd16a70: i32 = Constant<0>
try.c: 0x55edbfd16a70: 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:amd64

Compiler output

Implementation: T:amd64
Security model: timingleaks
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x557c5bd43e80: v4i64 = X86ISD::VTRUNC 0x557c5bd43d50
try.c: 0x557c5bd43d50: v16i32 = vselect 0x557c5bd3e850, 0x557c5bcec150, 0x557c5bd43c20
try.c: 0x557c5bd3e850: v4i1 = X86ISD::PCMPGTM 0x557c5bd3d840, 0x557c5bd393d0
try.c: 0x557c5bd3d840: v4i64 = X86ISD::VBROADCAST 0x557c5bce19d0
try.c: 0x557c5bce19d0: i64,ch = load<LD8[%lsr.iv6971]> 0x557c5bc4e950, 0x557c5bd27800, undef:i64
try.c: 0x557c5bd27800: i64,ch = CopyFromReg 0x557c5bc4e950, Register:i64 %vreg50
try.c: 0x557c5bd39630: i64 = Register %vreg50
try.c: 0x557c5bcea7c0: i64 = undef
try.c: 0x557c5bd393d0: v4i64,ch = CopyFromReg 0x557c5bc4e950, Register:v4i64 %vreg13
try.c: 0x557c5bd3e090: v4i64 = Register %vreg13
try.c: 0x557c5bcec150: v16i32 = X86ISD::VBROADCAST 0x557c5bd3daa0
try.c: 0x557c5bd3daa0: i32,ch = load<LD4[ConstantPool]> 0x557c5bc4e950, 0x557c5bce0fb0, undef:i64
try.c: 0x557c5bce0fb0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x557c5bd28a00: i64 = TargetConstantPool<i32 1> 0
try.c: 0x557c5bcea7c0: i64 = undef
try.c: 0x557c5bd43c20: 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: 0x557c5bd43af0: i32 = Constant<0>
try.c: 0x557c5bd43af0: i32 = Constant<0>
try.c: 0x557c5bd43af0: i32 = Constant<0>
try.c: 0x557c5bd43af0: i32 = Constant<0>
try.c: 0x557c5bd43af0: i32 = Constant<0>
try.c: 0x557c5bd43af0: i32 = Constant<0>
try.c: 0x557c5bd43af0: i32 = Constant<0>
try.c: 0x557c5bd43af0: i32 = Constant<0>
try.c: 0x557c5bd43af0: 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:amd64

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55db51a63040: v4i64 = X86ISD::VTRUNC 0x55db51a62f10
try.c: 0x55db51a62f10: v16i32 = vselect 0x55db51a53e20, 0x55db51a18e80, 0x55db51a62de0
try.c: 0x55db51a53e20: v4i1 = X86ISD::PCMPGTM 0x55db51a5da10, 0x55db51a595a0
try.c: 0x55db51a5da10: v4i64 = X86ISD::VBROADCAST 0x55db51a06430
try.c: 0x55db51a06430: i64,ch = load<LD8[%lsr.iv6971]> 0x55db5196e940, 0x55db51a4b090, undef:i64
try.c: 0x55db51a4b090: i64,ch = CopyFromReg 0x55db5196e940, Register:i64 %vreg50
try.c: 0x55db51a59800: i64 = Register %vreg50
try.c: 0x55db51a174f0: i64 = undef
try.c: 0x55db51a595a0: v4i64,ch = CopyFromReg 0x55db5196e940, Register:v4i64 %vreg13
try.c: 0x55db51a5e260: v4i64 = Register %vreg13
try.c: 0x55db51a18e80: v16i32 = X86ISD::VBROADCAST 0x55db51a5dc70
try.c: 0x55db51a5dc70: i32,ch = load<LD4[ConstantPool]> 0x55db5196e940, 0x55db51a05a10, undef:i64
try.c: 0x55db51a05a10: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55db51a43710: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55db51a174f0: i64 = undef
try.c: 0x55db51a62de0: 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: 0x55db51a62cb0: i32 = Constant<0>
try.c: 0x55db51a62cb0: i32 = Constant<0>
try.c: 0x55db51a62cb0: i32 = Constant<0>
try.c: 0x55db51a62cb0: i32 = Constant<0>
try.c: 0x55db51a62cb0: i32 = Constant<0>
try.c: 0x55db51a62cb0: i32 = Constant<0>
try.c: 0x55db51a62cb0: i32 = Constant<0>
try.c: 0x55db51a62cb0: i32 = Constant<0>
try.c: 0x55db51a62cb0: 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:avx2

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55fd5c4d21e0: v4i64 = X86ISD::VTRUNC 0x55fd5c4d20b0
try.c: 0x55fd5c4d20b0: v16i32 = vselect 0x55fd5c4dfed0, 0x55fd5c464d10, 0x55fd5c4d1f80
try.c: 0x55fd5c4dfed0: v4i1 = X86ISD::PCMPGTM 0x55fd5c4c8f70, 0x55fd5c4c4b00
try.c: 0x55fd5c4c8f70: v4i64 = X86ISD::VBROADCAST 0x55fd5c4651d0
try.c: 0x55fd5c4651d0: i64,ch = load<LD8[%lsr.iv6971]> 0x55fd5c3c2a30, 0x55fd5c487800, undef:i64
try.c: 0x55fd5c487800: i64,ch = CopyFromReg 0x55fd5c3c2a30, Register:i64 %vreg50
try.c: 0x55fd5c4c4d60: i64 = Register %vreg50
try.c: 0x55fd5c45d0e0: i64 = undef
try.c: 0x55fd5c4c4b00: v4i64,ch = CopyFromReg 0x55fd5c3c2a30, Register:v4i64 %vreg13
try.c: 0x55fd5c4c97c0: v4i64 = Register %vreg13
try.c: 0x55fd5c464d10: v16i32 = X86ISD::VBROADCAST 0x55fd5c4c91d0
try.c: 0x55fd5c4c91d0: i32,ch = load<LD4[ConstantPool]> 0x55fd5c3c2a30, 0x55fd5c485dd0, undef:i64
try.c: 0x55fd5c485dd0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55fd5c45da60: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55fd5c45d0e0: i64 = undef
try.c: 0x55fd5c4d1f80: 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: 0x55fd5c4d1e50: i32 = Constant<0>
try.c: 0x55fd5c4d1e50: i32 = Constant<0>
try.c: 0x55fd5c4d1e50: i32 = Constant<0>
try.c: 0x55fd5c4d1e50: i32 = Constant<0>
try.c: 0x55fd5c4d1e50: i32 = Constant<0>
try.c: 0x55fd5c4d1e50: i32 = Constant<0>
try.c: 0x55fd5c4d1e50: i32 = Constant<0>
try.c: 0x55fd5c4d1e50: i32 = Constant<0>
try.c: 0x55fd5c4d1e50: 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:avx2

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55d6d77aa320: v4i64 = X86ISD::VTRUNC 0x55d6d77aa1f0
try.c: 0x55d6d77aa1f0: v16i32 = vselect 0x55d6d779e4c0, 0x55d6d7736a20, 0x55d6d77aa0c0
try.c: 0x55d6d779e4c0: v4i1 = X86ISD::PCMPGTM 0x55d6d77929c0, 0x55d6d778e550
try.c: 0x55d6d77929c0: v4i64 = X86ISD::VBROADCAST 0x55d6d7738dc0
try.c: 0x55d6d7738dc0: i64,ch = load<LD8[%lsr.iv6971]> 0x55d6d76a3950, 0x55d6d77893b0, undef:i64
try.c: 0x55d6d77893b0: i64,ch = CopyFromReg 0x55d6d76a3950, Register:i64 %vreg50
try.c: 0x55d6d778e7b0: i64 = Register %vreg50
try.c: 0x55d6d773a290: i64 = undef
try.c: 0x55d6d778e550: v4i64,ch = CopyFromReg 0x55d6d76a3950, Register:v4i64 %vreg13
try.c: 0x55d6d7793210: v4i64 = Register %vreg13
try.c: 0x55d6d7736a20: v16i32 = X86ISD::VBROADCAST 0x55d6d7792c20
try.c: 0x55d6d7792c20: i32,ch = load<LD4[ConstantPool]> 0x55d6d76a3950, 0x55d6d774f0e0, undef:i64
try.c: 0x55d6d774f0e0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55d6d7730930: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55d6d773a290: i64 = undef
try.c: 0x55d6d77aa0c0: 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: 0x55d6d77a9f90: i32 = Constant<0>
try.c: 0x55d6d77a9f90: i32 = Constant<0>
try.c: 0x55d6d77a9f90: i32 = Constant<0>
try.c: 0x55d6d77a9f90: i32 = Constant<0>
try.c: 0x55d6d77a9f90: i32 = Constant<0>
try.c: 0x55d6d77a9f90: i32 = Constant<0>
try.c: 0x55d6d77a9f90: i32 = Constant<0>
try.c: 0x55d6d77a9f90: i32 = Constant<0>
try.c: 0x55d6d77a9f90: 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:avx2

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
blas_comm.c: In file included from blas_comm.c:6:
blas_comm.c: In file included from ./blas.h:25:
blas_comm.c: ./blas_avx2.h:88:17: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'gf256v_add_avx2' that is compiled without support for 'sse4.2'
blas_comm.c: __m256i inp = _mm256_loadu_si256( (__m256i*) (a+i*32) );
blas_comm.c: ^
blas_comm.c: ./blas_avx2.h:89:17: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'gf256v_add_avx2' that is compiled without support for 'sse4.2'
blas_comm.c: __m256i out = _mm256_loadu_si256( (__m256i*) (accu_b+i*32) );
blas_comm.c: ^
blas_comm.c: ./blas_avx2.h:91:3: error: always_inline function '_mm256_storeu_si256' requires target feature 'sse4.2', but would be inlined into function 'gf256v_add_avx2' that is compiled without support for 'sse4.2'
blas_comm.c: _mm256_storeu_si256( (__m256i*) (accu_b+i*32) , out );
blas_comm.c: ^
blas_comm.c: fatal error: error in backend: Do not know how to split this operator's operand!
blas_comm.c:
blas_comm.c: clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
blas_comm.c: clang version 3.8.1-24 (tags/RELEASE_381/final)
blas_comm.c: Target: x86_64-pc-linux-gnu
blas_comm.c: Thread model: posix
blas_comm.c: InstalledDir: /usr/bin
blas_comm.c: clang: note: diagnostic msg: PLEASE submit a bug report to http://llvm.org/bugs/ and include the crash backtrace, preprocessed source, and associated run script.
blas_comm.c: clang: note: diagnostic msg:
blas_comm.c: ********************
blas_comm.c:
blas_comm.c: PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
blas_comm.c: Preprocessed source(s) and associated run script(s) are located at:
blas_comm.c: clang: note: diagnostic msg: /tmp/blas_comm-1e4c7c.c
blas_comm.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:avx2

Compiler output

Implementation: T:avx2
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
blas_matrix_avx2.c: blas_matrix_avx2.c: In function '_gf256mat_gauss_elim_avx2_32x':
blas_matrix_avx2.c: blas_matrix_avx2.c:479:19: warning: implicit declaration of function '_mm256_setr_m128i' [-Wimplicit-function-declaration]
blas_matrix_avx2.c: __m256i mask = _mm256_setr_m128i( add_mask , add_mask );
blas_matrix_avx2.c: ^~~~~~~~~~~~~~~~~
blas_matrix_avx2.c: blas_matrix_avx2.c:479:19: error: incompatible types when initializing type '__m256i {aka __vector(4) long long int}' using type 'int'
blas_matrix_avx2.c: blas_matrix_avx2.c:495:17: error: incompatible types when initializing type '__m256i {aka __vector(4) long long int}' using type 'int'
blas_matrix_avx2.c: __m256i pi2 = _mm256_setr_m128i( pi1 , pi1 );
blas_matrix_avx2.c: ^~~~~~~~~~~~~~~~~

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

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x564fb3a65540: v4i64 = X86ISD::VTRUNC 0x564fb3a65410
try.c: 0x564fb3a65410: v16i32 = vselect 0x564fb3a6d090, 0x564fb39f98d0, 0x564fb3a652e0
try.c: 0x564fb3a6d090: v4i1 = X86ISD::PCMPGTM 0x564fb3a4bbd0, 0x564fb3a47760
try.c: 0x564fb3a4bbd0: v4i64 = X86ISD::VBROADCAST 0x564fb39ef480
try.c: 0x564fb39ef480: i64,ch = load<LD8[%lsr.iv6971]> 0x564fb395c920, 0x564fb3a3ed30, undef:i64
try.c: 0x564fb3a3ed30: i64,ch = CopyFromReg 0x564fb395c920, Register:i64 %vreg50
try.c: 0x564fb3a479c0: i64 = Register %vreg50
try.c: 0x564fb39f0950: i64 = undef
try.c: 0x564fb3a47760: v4i64,ch = CopyFromReg 0x564fb395c920, Register:v4i64 %vreg13
try.c: 0x564fb3a4c420: v4i64 = Register %vreg13
try.c: 0x564fb39f98d0: v16i32 = X86ISD::VBROADCAST 0x564fb3a4be30
try.c: 0x564fb3a4be30: i32,ch = load<LD4[ConstantPool]> 0x564fb395c920, 0x564fb3a0eec0, undef:i64
try.c: 0x564fb3a0eec0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x564fb3a35150: i64 = TargetConstantPool<i32 1> 0
try.c: 0x564fb39f0950: i64 = undef
try.c: 0x564fb3a652e0: 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: 0x564fb3a651b0: i32 = Constant<0>
try.c: 0x564fb3a651b0: i32 = Constant<0>
try.c: 0x564fb3a651b0: i32 = Constant<0>
try.c: 0x564fb3a651b0: i32 = Constant<0>
try.c: 0x564fb3a651b0: i32 = Constant<0>
try.c: 0x564fb3a651b0: i32 = Constant<0>
try.c: 0x564fb3a651b0: i32 = Constant<0>
try.c: 0x564fb3a651b0: i32 = Constant<0>
try.c: 0x564fb3a651b0: 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
try.c: fatal error: error in backend: Cannot select: 0x55b0657dd180: v4i64 = X86ISD::VTRUNC 0x55b0657dd050
try.c: 0x55b0657dd050: v16i32 = vselect 0x55b0657d7b50, 0x55b06576c5f0, 0x55b0657dcf20
try.c: 0x55b0657d7b50: v4i1 = X86ISD::PCMPGTM 0x55b0657d0730, 0x55b0657cccc0
try.c: 0x55b0657d0730: v4i64 = X86ISD::VBROADCAST 0x55b06576cab0
try.c: 0x55b06576cab0: i64,ch = load<LD8[%lsr.iv6971]> 0x55b0656caa30, 0x55b065772290, undef:i64
try.c: 0x55b065772290: i64,ch = CopyFromReg 0x55b0656caa30, Register:i64 %vreg50
try.c: 0x55b0657ccf20: i64 = Register %vreg50
try.c: 0x55b0657796a0: i64 = undef
try.c: 0x55b0657cccc0: v4i64,ch = CopyFromReg 0x55b0656caa30, Register:v4i64 %vreg13
try.c: 0x55b0657d0f80: v4i64 = Register %vreg13
try.c: 0x55b06576c5f0: v16i32 = X86ISD::VBROADCAST 0x55b0657d0990
try.c: 0x55b0657d0990: i32,ch = load<LD4[ConstantPool]> 0x55b0656caa30, 0x55b065770860, undef:i64
try.c: 0x55b065770860: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55b06577a020: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55b0657796a0: i64 = undef
try.c: 0x55b0657dcf20: 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: 0x55b0657dcdf0: i32 = Constant<0>
try.c: 0x55b0657dcdf0: i32 = Constant<0>
try.c: 0x55b0657dcdf0: i32 = Constant<0>
try.c: 0x55b0657dcdf0: i32 = Constant<0>
try.c: 0x55b0657dcdf0: i32 = Constant<0>
try.c: 0x55b0657dcdf0: i32 = Constant<0>
try.c: 0x55b0657dcdf0: i32 = Constant<0>
try.c: 0x55b0657dcdf0: i32 = Constant<0>
try.c: 0x55b0657dcdf0: 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
try.c: fatal error: error in backend: Cannot select: 0x556701c00750: v4i64 = X86ISD::VTRUNC 0x556701c00620
try.c: 0x556701c00620: v16i32 = vselect 0x556701bfd130, 0x556701baa9f0, 0x556701c004f0
try.c: 0x556701bfd130: v4i1 = X86ISD::PCMPGTM 0x556701bdd940, 0x556701bd94d0
try.c: 0x556701bdd940: v4i64 = X86ISD::VBROADCAST 0x556701ba7240
try.c: 0x556701ba7240: i64,ch = load<LD8[%lsr.iv6971]> 0x556701aee940, 0x556701bc9690, undef:i64
try.c: 0x556701bc9690: i64,ch = CopyFromReg 0x556701aee940, Register:i64 %vreg50
try.c: 0x556701bd9730: i64 = Register %vreg50
try.c: 0x556701ba9060: i64 = undef
try.c: 0x556701bd94d0: v4i64,ch = CopyFromReg 0x556701aee940, Register:v4i64 %vreg13
try.c: 0x556701bde190: v4i64 = Register %vreg13
try.c: 0x556701baa9f0: v16i32 = X86ISD::VBROADCAST 0x556701bddba0
try.c: 0x556701bddba0: i32,ch = load<LD4[ConstantPool]> 0x556701aee940, 0x556701ba6820, undef:i64
try.c: 0x556701ba6820: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x556701bcc500: i64 = TargetConstantPool<i32 1> 0
try.c: 0x556701ba9060: i64 = undef
try.c: 0x556701c004f0: 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: 0x556701c003c0: i32 = Constant<0>
try.c: 0x556701c003c0: i32 = Constant<0>
try.c: 0x556701c003c0: i32 = Constant<0>
try.c: 0x556701c003c0: i32 = Constant<0>
try.c: 0x556701c003c0: i32 = Constant<0>
try.c: 0x556701c003c0: i32 = Constant<0>
try.c: 0x556701c003c0: i32 = Constant<0>
try.c: 0x556701c003c0: i32 = Constant<0>
try.c: 0x556701c003c0: 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:ssse3
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55c3749700f0: v4i64 = X86ISD::VTRUNC 0x55c37496ffc0
try.c: 0x55c37496ffc0: v16i32 = vselect 0x55c37496aac0, 0x55c37490f610, 0x55c37496fe90
try.c: 0x55c37496aac0: v4i1 = X86ISD::PCMPGTM 0x55c374969ab0, 0x55c374966040
try.c: 0x55c374969ab0: v4i64 = X86ISD::VBROADCAST 0x55c3749169e0
try.c: 0x55c3749169e0: i64,ch = load<LD8[%lsr.iv6971]> 0x55c37487b960, 0x55c3749505f0, undef:i64
try.c: 0x55c3749505f0: i64,ch = CopyFromReg 0x55c37487b960, Register:i64 %vreg50
try.c: 0x55c3749662a0: i64 = Register %vreg50
try.c: 0x55c37490dc80: i64 = undef
try.c: 0x55c374966040: v4i64,ch = CopyFromReg 0x55c37487b960, Register:v4i64 %vreg13
try.c: 0x55c37496a300: v4i64 = Register %vreg13
try.c: 0x55c37490f610: v16i32 = X86ISD::VBROADCAST 0x55c374969d10
try.c: 0x55c374969d10: i32,ch = load<LD4[ConstantPool]> 0x55c37487b960, 0x55c374915fc0, undef:i64
try.c: 0x55c374915fc0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55c37495d080: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55c37490dc80: i64 = undef
try.c: 0x55c37496fe90: 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: 0x55c37496fd60: i32 = Constant<0>
try.c: 0x55c37496fd60: i32 = Constant<0>
try.c: 0x55c37496fd60: i32 = Constant<0>
try.c: 0x55c37496fd60: i32 = Constant<0>
try.c: 0x55c37496fd60: i32 = Constant<0>
try.c: 0x55c37496fd60: i32 = Constant<0>
try.c: 0x55c37496fd60: i32 = Constant<0>
try.c: 0x55c37496fd60: i32 = Constant<0>
try.c: 0x55c37496fd60: 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:ssse3

Compiler output

Implementation: T:ssse3
Security model: timingleaks
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x5575db8fd2f0: v4i64 = X86ISD::VTRUNC 0x5575db8fd1c0
try.c: 0x5575db8fd1c0: v16i32 = vselect 0x5575db8e0120, 0x5575db873e10, 0x5575db8fd090
try.c: 0x5575db8e0120: v4i1 = X86ISD::PCMPGTM 0x5575db8d7ca0, 0x5575db8d3830
try.c: 0x5575db8d7ca0: v4i64 = X86ISD::VBROADCAST 0x5575db8742d0
try.c: 0x5575db8742d0: i64,ch = load<LD8[%lsr.iv6971]> 0x5575db7d1a40, 0x5575db879640, undef:i64
try.c: 0x5575db879640: i64,ch = CopyFromReg 0x5575db7d1a40, Register:i64 %vreg50
try.c: 0x5575db8d3a90: i64 = Register %vreg50
try.c: 0x5575db86c230: i64 = undef
try.c: 0x5575db8d3830: v4i64,ch = CopyFromReg 0x5575db7d1a40, Register:v4i64 %vreg13
try.c: 0x5575db8d84f0: v4i64 = Register %vreg13
try.c: 0x5575db873e10: v16i32 = X86ISD::VBROADCAST 0x5575db8d7f00
try.c: 0x5575db8d7f00: i32,ch = load<LD4[ConstantPool]> 0x5575db7d1a40, 0x5575db8767b0, undef:i64
try.c: 0x5575db8767b0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5575db86cbb0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5575db86c230: i64 = undef
try.c: 0x5575db8fd090: 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: 0x5575db8fcf60: i32 = Constant<0>
try.c: 0x5575db8fcf60: i32 = Constant<0>
try.c: 0x5575db8fcf60: i32 = Constant<0>
try.c: 0x5575db8fcf60: i32 = Constant<0>
try.c: 0x5575db8fcf60: i32 = Constant<0>
try.c: 0x5575db8fcf60: i32 = Constant<0>
try.c: 0x5575db8fcf60: i32 = Constant<0>
try.c: 0x5575db8fcf60: i32 = Constant<0>
try.c: 0x5575db8fcf60: 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:ssse3

Compiler output

Implementation: T:ssse3
Security model: timingleaks
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x563c713b23f0: v4i64 = X86ISD::VTRUNC 0x563c713b22c0
try.c: 0x563c713b22c0: v16i32 = vselect 0x563c713a18c0, 0x563c7134c670, 0x563c713b2190
try.c: 0x563c713a18c0: v4i1 = X86ISD::PCMPGTM 0x563c71396a60, 0x563c713925f0
try.c: 0x563c71396a60: v4i64 = X86ISD::VBROADCAST 0x563c71338ef0
try.c: 0x563c71338ef0: i64,ch = load<LD8[%lsr.iv6971]> 0x563c712a7950, 0x563c71380760, undef:i64
try.c: 0x563c71380760: i64,ch = CopyFromReg 0x563c712a7950, Register:i64 %vreg50
try.c: 0x563c71392850: i64 = Register %vreg50
try.c: 0x563c7133a3c0: i64 = undef
try.c: 0x563c713925f0: v4i64,ch = CopyFromReg 0x563c712a7950, Register:v4i64 %vreg13
try.c: 0x563c713972b0: v4i64 = Register %vreg13
try.c: 0x563c7134c670: v16i32 = X86ISD::VBROADCAST 0x563c71396cc0
try.c: 0x563c71396cc0: i32,ch = load<LD4[ConstantPool]> 0x563c712a7950, 0x563c7133d640, undef:i64
try.c: 0x563c7133d640: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x563c7137ef90: i64 = TargetConstantPool<i32 1> 0
try.c: 0x563c7133a3c0: i64 = undef
try.c: 0x563c713b2190: 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: 0x563c713b2060: i32 = Constant<0>
try.c: 0x563c713b2060: i32 = Constant<0>
try.c: 0x563c713b2060: i32 = Constant<0>
try.c: 0x563c713b2060: i32 = Constant<0>
try.c: 0x563c713b2060: i32 = Constant<0>
try.c: 0x563c713b2060: i32 = Constant<0>
try.c: 0x563c713b2060: i32 = Constant<0>
try.c: 0x563c713b2060: i32 = Constant<0>
try.c: 0x563c713b2060: 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:ssse3

Compiler output

Implementation: T:ssse3
Security model: timingleaks
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
blas_matrix_ref.c: In file included from blas_matrix_ref.c:6:
blas_matrix_ref.c: In file included from ./blas.h:25:
blas_matrix_ref.c: In file included from ./blas_sse.h:16:
blas_matrix_ref.c: ./gf16_sse.h:34:9: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'linear_transform_8x8_128b' that is compiled without support for 'ssse3'
blas_matrix_ref.c: return _mm_shuffle_epi8(tab_l,v&mask_f)^_mm_shuffle_epi8(tab_h,_mm_srli_epi16(v,4)&mask_f);
blas_matrix_ref.c: ^
blas_matrix_ref.c: ./gf16_sse.h:34:42: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'linear_transform_8x8_128b' that is compiled without support for 'ssse3'
blas_matrix_ref.c: return _mm_shuffle_epi8(tab_l,v&mask_f)^_mm_shuffle_epi8(tab_h,_mm_srli_epi16(v,4)&mask_f);
blas_matrix_ref.c: ^
blas_matrix_ref.c: fatal error: error in backend: Cannot select: 0x55b1f22f0ab0: v16i8 = X86ISD::PSHUFB 0x55b1f23b8ac0, 0x55b1f22a28e0
blas_matrix_ref.c: 0x55b1f23b8ac0: v16i8,ch = CopyFromReg 0x55b1f21c75a0, Register:v16i8 %vreg15
blas_matrix_ref.c: 0x55b1f22a1d00: v16i8 = Register %vreg15
blas_matrix_ref.c: 0x55b1f22a28e0: v16i8 = bitcast 0x55b1f2223c70
blas_matrix_ref.c: 0x55b1f2223c70: v2i64 = and 0x55b1f235df30, 0x55b1f22245f0
blas_matrix_ref.c: 0x55b1f235df30: v2i64 = bitcast 0x55b1f235d5b0
blas_matrix_ref.c: 0x55b1f235d5b0: v8i16 = X86ISD::VSRLI 0x55b1f23b8f80, Constant:i8<4>
blas_matrix_ref.c: 0x55b1f23b8f80: v8i16 = bitcast 0x55b1f235da70
blas_matrix_ref.c: 0x55b1f235da70: v2i64,ch = load<LD16[%uglygep1617](align=1)(tbaa=<0x55b1f1e4c628>)> 0x55b1f21c75a0, 0x55b1f22237b0, undef:i64
blas_matrix_ref.c: 0x55b1f22237b0: i64 = add 0x55b1f235d6e0, 0x55b1f235e190
blas_matrix_ref.c: 0x55b1f235d6e0: i64,ch = CopyFromReg 0x55b1f21c75a0, Register:i64 %vreg12
blas_matrix_ref.c: 0x55b1f235e3f0: i64 = Register %vreg12
blas_matrix_ref.c: 0x55b1f235e190: i64,ch = CopyFromReg 0x55b1f21c75a0, Register:i64 %vreg17
blas_matrix_ref.c: 0x55b1f235dcd0: i64 = Register %vreg17
blas_matrix_ref.c: 0x55b1f23b90b0: i64 = undef
blas_matrix_ref.c: 0x55b1f22a27b0: i8 = Constant<4>
blas_matrix_ref.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:ssse3