Implementation notes: amd64, glyme, crypto_sign/rainbowbinary256181212

Computer: glyme
Architecture: amd64
CPU ID: GenuineIntel-00020652-bfebfbff
SUPERCOP version: 201720170105
Operation: crypto_sign
Primitive: rainbowbinary256181212
TimeImplementationCompilerBenchmark dateSUPERCOP version
86532refg++ -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2017020520170105
86576refg++ -m64 -march=corei7 -O3 -fomit-frame-pointer2017020520170105
86988refg++ -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer2017020520170105
87032refg++ -m64 -march=core2 -O3 -fomit-frame-pointer2017020520170105
87044refg++ -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer2017020520170105
88676refclang++ -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2017020520170105
88728refclang++ -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments2017020520170105
90480refg++ -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2017020520170105
90548refg++ -m64 -march=corei7 -O2 -fomit-frame-pointer2017020520170105
90752refg++ -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer2017020520170105
90780refg++ -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer2017020520170105
90800refg++ -m64 -march=core2 -O2 -fomit-frame-pointer2017020520170105
90908refg++ -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2017020520170105
91980refg++ -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2017020520170105
110280refg++ -m64 -march=core2 -msse4 -O -fomit-frame-pointer2017020520170105
110300refg++ -m64 -march=native -mtune=native -O -fomit-frame-pointer2017020520170105
110300refg++ -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2017020520170105
110332refg++ -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer2017020520170105
110336refg++ -m64 -march=corei7 -O -fomit-frame-pointer2017020520170105
110900refg++ -m64 -march=core2 -O -fomit-frame-pointer2017020520170105
152132refg++ -m64 -march=core2 -msse4 -Os -fomit-frame-pointer2017020520170105
152152refg++ -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer2017020520170105
152964refg++ -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2017020520170105
153492refg++ -m64 -march=core2 -Os -fomit-frame-pointer2017020520170105
154976refg++ -m64 -march=corei7 -Os -fomit-frame-pointer2017020520170105
155732refg++ -m64 -march=native -mtune=native -Os -fomit-frame-pointer2017020520170105

Compiler output

Implementation: crypto_sign/rainbowbinary256181212/ref
Compiler: CC
rainbow-test.cpp: In file included from rainbow-test.cpp:1:
rainbow-test.cpp: ./gf.h:171:46: warning: while loop has empty body [-Wempty-body]
rainbow-test.cpp: if( M==n_read ) { while( ttt.set(fp)==16 ) ; break; }
rainbow-test.cpp: ^
rainbow-test.cpp: ./gf.h:171:46: note: put the semicolon on a separate line to silence this warning
rainbow-test.cpp: In file included from rainbow-test.cpp:1:
rainbow-test.cpp: In file included from ./gf.h:182:
rainbow-test.cpp: ./gf256.h:364:24: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function '_mul' that is compiled without support for 'ssse3'
rainbow-test.cpp: return _mm_xor_si128( _mm_shuffle_epi8(multable(b.v), _mm_and_si128(a.v,_mask_low))
rainbow-test.cpp: ^
rainbow-test.cpp: ./gf256.h:365:7: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function '_mul' that is compiled without support for 'ssse3'
rainbow-test.cpp: , _mm_shuffle_epi8(multable_h(b.v), _mm_and_si128( _mm_srli_epi16(a.v,4) ,_mask_low) ) );
rainbow-test.cpp: ^
rainbow-test.cpp: fatal error: error in backend: Cannot select: 0x803db76e0: v16i8 = X86ISD::PSHUFB 0x803b11980, 0x803b12be0
rainbow-test.cpp: 0x803b11980: v16i8,ch = CopyFromReg 0x80323f430, Register:v16i8 %vreg16
rainbow-test.cpp: 0x803ae04c0: v16i8 = Register %vreg16
rainbow-test.cpp: 0x803b12be0: v16i8,ch = CopyFromReg 0x80323f430, Register:v16i8 %vreg17
rainbow-test.cpp: 0x803ad64c0: v16i8 = Register %vreg17
rainbow-test.cpp: In function: _Z4_mulILj256EEK8gfv_unitIXT_EERS2_RK2gfIXT_EE
rainbow-test.cpp: c++: error: clang frontend command failed with exit code 70 (use -v to see invocation)
rainbow-test.cpp: FreeBSD clang version 3.8.0 (tags/RELEASE_380/final 262564) (based on LLVM 3.8.0)
rainbow-test.cpp: Target: x86_64-unknown-freebsd11.0
rainbow-test.cpp: Thread model: posix
rainbow-test.cpp: InstalledDir: /usr/bin
rainbow-test.cpp: c++: note: diagnostic msg: PLEASE submit a bug report to https://bugs.freebsd.org/submit/ and include the crash backtrace, preprocessed source, and associated run script.
rainbow-test.cpp: ...

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

Compiler output

Implementation: crypto_sign/rainbowbinary256181212/ref
Compiler: clang++ -O3 -fomit-frame-pointer -Qunused-arguments
rainbow-test.cpp: In file included from rainbow-test.cpp:1:
rainbow-test.cpp: ./gf.h:171:46: warning: while loop has empty body [-Wempty-body]
rainbow-test.cpp: if( M==n_read ) { while( ttt.set(fp)==16 ) ; break; }
rainbow-test.cpp: ^
rainbow-test.cpp: ./gf.h:171:46: note: put the semicolon on a separate line to silence this warning
rainbow-test.cpp: In file included from rainbow-test.cpp:1:
rainbow-test.cpp: In file included from ./gf.h:182:
rainbow-test.cpp: ./gf256.h:364:24: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function '_mul' that is compiled without support for 'ssse3'
rainbow-test.cpp: return _mm_xor_si128( _mm_shuffle_epi8(multable(b.v), _mm_and_si128(a.v,_mask_low))
rainbow-test.cpp: ^
rainbow-test.cpp: ./gf256.h:365:7: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function '_mul' that is compiled without support for 'ssse3'
rainbow-test.cpp: , _mm_shuffle_epi8(multable_h(b.v), _mm_and_si128( _mm_srli_epi16(a.v,4) ,_mask_low) ) );
rainbow-test.cpp: ^
rainbow-test.cpp: fatal error: error in backend: Cannot select: 0x803ace980: v16i8 = X86ISD::PSHUFB 0x803b9f980, 0x803b9a720
rainbow-test.cpp: 0x803b9f980: v16i8 = bitcast 0x803b9b260
rainbow-test.cpp: 0x803b9b260: v2i64,ch = loadgt;)(noalias=gt;,gt;,gt;)>gt; 0x80323f430, 0x803ba3000, undef:i64
rainbow-test.cpp: 0x803ba3000: i64 = add 0x803aa0d10, 0x803aae390
rainbow-test.cpp: 0x803aa0d10: i64 = X86ISD::Wrapper TargetGlobalAddress:i64gt;]* @_ZL8GFV16Mul>gt; 0
rainbow-test.cpp: 0x803aa0ab0: i64 = TargetGlobalAddressgt;]* @_ZL8GFV16Mul>gt; 0
rainbow-test.cpp: 0x803aae390: i64 = shl 0x803b9eab0, Constant:i8gt;
rainbow-test.cpp: 0x803b9eab0: i64,ch = loadgt;)(noalias=gt;,gt;,gt;), zext from i8>gt; 0x80323f430, 0x803938260, undef:i64
rainbow-test.cpp: 0x803938260: i64 = or 0x803938ab0, 0x803aa0be0
rainbow-test.cpp: 0x803938ab0: i64 = add FrameIndex:i64gt;, 0x803b9e000
rainbow-test.cpp: 0x803aa1720: i64 = FrameIndexgt;
rainbow-test.cpp: 0x803b9e000: i64 = and 0x803ba1850, Constant:i64gt;
rainbow-test.cpp: ...

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

Compiler output

Implementation: crypto_sign/rainbowbinary256181212/ref
Compiler: clang++ -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments
rainbow-test.cpp: In file included from rainbow-test.cpp:1:
rainbow-test.cpp: ./gf.h:171:46: warning: while loop has empty body [-Wempty-body]
rainbow-test.cpp: if( M==n_read ) { while( ttt.set(fp)==16 ) ; break; }
rainbow-test.cpp: ^
rainbow-test.cpp: ./gf.h:171:46: note: put the semicolon on a separate line to silence this warning
rainbow-test.cpp: 1 warning generated.

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

Compiler output

Implementation: crypto_sign/rainbowbinary256181212/ref
Compiler: clang++ -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
rainbow-test.cpp: In file included from rainbow-test.cpp:1:
rainbow-test.cpp: ./gf.h:171:46: warning: while loop has empty body [-Wempty-body]
rainbow-test.cpp: if( M==n_read ) { while( ttt.set(fp)==16 ) ; break; }
rainbow-test.cpp: ^
rainbow-test.cpp: ./gf.h:171:46: note: put the semicolon on a separate line to silence this warning
rainbow-test.cpp: In file included from rainbow-test.cpp:1:
rainbow-test.cpp: In file included from ./gf.h:182:
rainbow-test.cpp: ./gf256.h:364:24: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function '_mul' that is compiled without support for 'ssse3'
rainbow-test.cpp: return _mm_xor_si128( _mm_shuffle_epi8(multable(b.v), _mm_and_si128(a.v,_mask_low))
rainbow-test.cpp: ^
rainbow-test.cpp: ./gf256.h:365:7: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function '_mul' that is compiled without support for 'ssse3'
rainbow-test.cpp: , _mm_shuffle_epi8(multable_h(b.v), _mm_and_si128( _mm_srli_epi16(a.v,4) ,_mask_low) ) );
rainbow-test.cpp: ^
rainbow-test.cpp: fatal error: error in backend: Cannot select: 0x803aeb980: v16i8 = X86ISD::PSHUFB 0x803b41980, 0x803b16720
rainbow-test.cpp: 0x803b41980: v16i8 = bitcast 0x803b3d260
rainbow-test.cpp: 0x803b3d260: v2i64,ch = loadgt;)(noalias=gt;,gt;,gt;)>gt; 0x80323f430, 0x803b45000, undef:i64
rainbow-test.cpp: 0x803b45000: i64 = add 0x803abad10, 0x803a4c390
rainbow-test.cpp: 0x803abad10: i64 = X86ISD::Wrapper TargetGlobalAddress:i64gt;]* @_ZL8GFV16Mul>gt; 0
rainbow-test.cpp: 0x803abaab0: i64 = TargetGlobalAddressgt;]* @_ZL8GFV16Mul>gt; 0
rainbow-test.cpp: 0x803a4c390: i64 = shl 0x803b40ab0, Constant:i8gt;
rainbow-test.cpp: 0x803b40ab0: i64,ch = loadgt;)(noalias=gt;,gt;,gt;), zext from i8>gt; 0x80323f430, 0x803ae9260, undef:i64
rainbow-test.cpp: 0x803ae9260: i64 = or 0x803ae9ab0, 0x803ababe0
rainbow-test.cpp: 0x803ae9ab0: i64 = add FrameIndex:i64gt;, 0x803b40000
rainbow-test.cpp: 0x803aca720: i64 = FrameIndexgt;
rainbow-test.cpp: 0x803b40000: i64 = and 0x803b43850, Constant:i64gt;
rainbow-test.cpp: ...

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
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_sign/rainbowbinary256181212/ref
Compiler: g++
rainbow-test.cpp: In file included from gf16.h:4:0,
rainbow-test.cpp: from gf.h:181,
rainbow-test.cpp: from rainbow-test.cpp:1:
rainbow-test.cpp: /usr/local/lib/gcc6/gcc/x86_64-portbld-freebsd11.0/6.3.0/include/tmmintrin.h: In function 'const gfv_unitgt; _mul(const gfv_unitgt;&, const gfgt;&) [with unsigned int p = 256u]':
rainbow-test.cpp: /usr/local/lib/gcc6/gcc/x86_64-portbld-freebsd11.0/6.3.0/include/tmmintrin.h:136:1: error: inlining failed in call to always_inline '__m128i _mm_shuffle_epi8(__m128i, __m128i)': target specific option mismatch
rainbow-test.cpp: _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
rainbow-test.cpp: ^~~~~~~~~~~~~~~~
rainbow-test.cpp: In file included from gf.h:182:0,
rainbow-test.cpp: from rainbow-test.cpp:1:
rainbow-test.cpp: gf256.h:364:22: note: called from here
rainbow-test.cpp: return _mm_xor_si128( _mm_shuffle_epi8(multable(b.v), _mm_and_si128(a.v,_mask_low))
rainbow-test.cpp: ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rainbow-test.cpp: , _mm_shuffle_epi8(multable_h(b.v), _mm_and_si128( _mm_srli_epi16(a.v,4) ,_mask_low) ) );
rainbow-test.cpp: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rainbow-test.cpp: In file included from gf16.h:4:0,
rainbow-test.cpp: from gf.h:181,
rainbow-test.cpp: from rainbow-test.cpp:1:
rainbow-test.cpp: /usr/local/lib/gcc6/gcc/x86_64-portbld-freebsd11.0/6.3.0/include/tmmintrin.h:136:1: error: inlining failed in call to always_inline '__m128i _mm_shuffle_epi8(__m128i, __m128i)': target specific option mismatch
rainbow-test.cpp: _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
rainbow-test.cpp: ^~~~~~~~~~~~~~~~
rainbow-test.cpp: In file included from gf.h:182:0,
rainbow-test.cpp: from rainbow-test.cpp:1:
rainbow-test.cpp: gf256.h:364:22: note: called from here
rainbow-test.cpp: return _mm_xor_si128( _mm_shuffle_epi8(multable(b.v), _mm_and_si128(a.v,_mask_low))
rainbow-test.cpp: ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rainbow-test.cpp: ...

Number of similar (compiler,implementation) pairs: 37, namely:
CompilerImplementations
g++ ref
g++ -O2 -fomit-frame-pointer ref
g++ -O3 -fomit-frame-pointer ref
g++ -O -fomit-frame-pointer ref
g++ -Os -fomit-frame-pointer ref
g++ -fno-schedule-insns -O2 -fomit-frame-pointer ref
g++ -fno-schedule-insns -O3 -fomit-frame-pointer ref
g++ -fno-schedule-insns -O -fomit-frame-pointer ref
g++ -fno-schedule-insns -Os -fomit-frame-pointer ref
g++ -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer ref
g++ -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer ref
g++ -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer ref
g++ -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer ref
g++ -m64 -O2 -fomit-frame-pointer ref
g++ -m64 -O3 -fomit-frame-pointer ref
g++ -m64 -O -fomit-frame-pointer ref
g++ -m64 -Os -fomit-frame-pointer ref
g++ -m64 -march=k8 -O2 -fomit-frame-pointer ref
g++ -m64 -march=k8 -O3 -fomit-frame-pointer ref
g++ -m64 -march=k8 -O -fomit-frame-pointer ref
g++ -m64 -march=k8 -Os -fomit-frame-pointer ref
g++ -m64 -march=nocona -O2 -fomit-frame-pointer ref
g++ -m64 -march=nocona -O3 -fomit-frame-pointer ref
g++ -m64 -march=nocona -O -fomit-frame-pointer ref
g++ -m64 -march=nocona -Os -fomit-frame-pointer ref
g++ -march=barcelona -O2 -fomit-frame-pointer ref
g++ -march=barcelona -O3 -fomit-frame-pointer ref
g++ -march=barcelona -O -fomit-frame-pointer ref
g++ -march=barcelona -Os -fomit-frame-pointer ref
g++ -march=k8 -O2 -fomit-frame-pointer ref
g++ -march=k8 -O3 -fomit-frame-pointer ref
g++ -march=k8 -O -fomit-frame-pointer ref
g++ -march=k8 -Os -fomit-frame-pointer ref
g++ -march=nocona -O2 -fomit-frame-pointer ref
g++ -march=nocona -O3 -fomit-frame-pointer ref
g++ -march=nocona -O -fomit-frame-pointer ref
g++ -march=nocona -Os -fomit-frame-pointer ref

Compiler output

Implementation: crypto_sign/rainbowbinary256181212/ref
Compiler: g++ -m64 -march=barcelona -O2 -fomit-frame-pointer
rainbow-test.cpp: In file included from gf16.h:4:0,
rainbow-test.cpp: from gf.h:181,
rainbow-test.cpp: from rainbow-test.cpp:1:
rainbow-test.cpp: /usr/local/lib/gcc6/gcc/x86_64-portbld-freebsd11.0/6.3.0/include/tmmintrin.h: In function 'const gfv_unitgt; _mul(const gfv_unitgt;&, const gfgt;&) [with unsigned int p = 256u]':
rainbow-test.cpp: /usr/local/lib/gcc6/gcc/x86_64-portbld-freebsd11.0/6.3.0/include/tmmintrin.h:136:1: error: inlining failed in call to always_inline '__m128i _mm_shuffle_epi8(__m128i, __m128i)': target specific option mismatch
rainbow-test.cpp: _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
rainbow-test.cpp: ^~~~~~~~~~~~~~~~
rainbow-test.cpp: In file included from gf.h:182:0,
rainbow-test.cpp: from rainbow-test.cpp:1:
rainbow-test.cpp: gf256.h:364:22: note: called from here
rainbow-test.cpp: return _mm_xor_si128( _mm_shuffle_epi8(multable(b.v), _mm_and_si128(a.v,_mask_low))
rainbow-test.cpp: ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rainbow-test.cpp: , _mm_shuffle_epi8(multable_h(b.v), _mm_and_si128( _mm_srli_epi16(a.v,4) ,_mask_low) ) );
rainbow-test.cpp: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rainbow-test.cpp: In file included from gf16.h:4:0,
rainbow-test.cpp: from gf.h:181,
rainbow-test.cpp: from rainbow-test.cpp:1:
rainbow-test.cpp: /usr/local/lib/gcc6/gcc/x86_64-portbld-freebsd11.0/6.3.0/include/tmmintrin.h:136:1: error: inlining failed in call to always_inline '__m128i _mm_shuffle_epi8(__m128i, __m128i)': target specific option mismatch
rainbow-test.cpp: _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
rainbow-test.cpp: ^~~~~~~~~~~~~~~~
rainbow-test.cpp: In file included from gf.h:182:0,
rainbow-test.cpp: from rainbow-test.cpp:1:
rainbow-test.cpp: gf256.h:364:22: note: called from here
rainbow-test.cpp: return _mm_xor_si128( _mm_shuffle_epi8(multable(b.v), _mm_and_si128(a.v,_mask_low))
rainbow-test.cpp: ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rainbow-test.cpp: ...
rainbow-test.cpp: In file included from gf16.h:4:0,
rainbow-test.cpp: from gf.h:181,
rainbow-test.cpp: from rainbow-test.cpp:1:
rainbow-test.cpp: /usr/local/lib/gcc6/gcc/x86_64-portbld-freebsd11.0/6.3.0/include/tmmintrin.h: In function 'const gfv_unitgt; _mul(const gfv_unitgt;&, const gfgt;&) [with unsigned int p = 256u]':
rainbow-test.cpp: /usr/local/lib/gcc6/gcc/x86_64-portbld-freebsd11.0/6.3.0/include/tmmintrin.h:136:1: error: inlining failed in call to always_inline '__m128i _mm_shuffle_epi8(__m128i, __m128i)': target specific option mismatch
rainbow-test.cpp: _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
rainbow-test.cpp: ^~~~~~~~~~~~~~~~
rainbow-test.cpp: In file included from gf.h:182:0,
rainbow-test.cpp: from rainbow-test.cpp:1:
rainbow-test.cpp: gf256.h:364:22: note: called from here
rainbow-test.cpp: return _mm_xor_si128( _mm_shuffle_epi8(multable(b.v), _mm_and_si128(a.v,_mask_low))
rainbow-test.cpp: ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rainbow-test.cpp: , _mm_shuffle_epi8(multable_h(b.v), _mm_and_si128( _mm_srli_epi16(a.v,4) ,_mask_low) ) );
rainbow-test.cpp: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rainbow-test.cpp: In file included from gf16.h:4:0,
rainbow-test.cpp: from gf.h:181,
rainbow-test.cpp: from rainbow-test.cpp:1:
rainbow-test.cpp: /usr/local/lib/gcc6/gcc/x86_64-portbld-freebsd11.0/6.3.0/include/tmmintrin.h:136:1: error: inlining failed in call to always_inline '__m128i _mm_shuffle_epi8(__m128i, __m128i)': target specific option mismatch
rainbow-test.cpp: _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
rainbow-test.cpp: ^~~~~~~~~~~~~~~~
rainbow-test.cpp: In file included from gf.h:182:0,
rainbow-test.cpp: from rainbow-test.cpp:1:
rainbow-test.cpp: gf256.h:364:22: note: called from here
rainbow-test.cpp: return _mm_xor_si128( _mm_shuffle_epi8(multable(b.v), _mm_and_si128(a.v,_mask_low))
rainbow-test.cpp: ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rainbow-test.cpp: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
g++ -m64 -march=barcelona -O2 -fomit-frame-pointer ref
g++ -m64 -march=barcelona -O3 -fomit-frame-pointer ref
g++ -m64 -march=barcelona -O -fomit-frame-pointer ref
g++ -m64 -march=barcelona -Os -fomit-frame-pointer ref