Implementation notes: x86, thoth, crypto_stream/rabbit

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_stream
Primitive: rabbit
TimeImplementationCompilerBenchmark dateSUPERCOP version
9625e/opt/2/3gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
9638e/opt/2/3gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
9683e/opt/1/4gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
9683e/opt/1/4gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
9716e/opt/2/4gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
9717e/opt/2/4gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
9834e/opt/2/4gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
9927e/opt/1/3gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
10054e/opt/2/4gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
10087e/opt/1/3gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
10099e/opt/2/3gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
10108e/opt/1/4gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
10156e/opt/1/3gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
10368e/opt/1/3clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
10381e/opt/2/2clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
10435e/opt/1/4gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
10441e/opt/2/3gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
10476e/opt/1/2clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
10693e/opt/1/3gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
11130e/opt/2/4clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
11156e/opt/2/3clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
11206e/opt/1/4clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
11453e/opt/1/2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
11455e/opt/2/2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
11533e/opt/2/2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
11544e/opt/2/2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
11579e/opt/1/2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
11731e/opt/1/2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
13061e/opt/2/2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
13212e/opt/1/2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
18020e/opt/1/1gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
18036e/opt/2/1gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
18316e/opt/1/1gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
18377e/opt/2/1clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
18456e/opt/1/1clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
18485e/opt/2/1gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
18857e/refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
19222e/opt/1/1gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
19340e/opt/2/1gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
19776e/opt/2/1gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
19942e/opt/1/1gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
21375e/refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
25193e/refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
25363e/refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
25439e/refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724

Test failure

Implementation: crypto_stream/rabbit/e/opt/2/5
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
error 111

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv e/opt/2/5
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv e/opt/2/5
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv e/opt/2/5

Compiler output

Implementation: crypto_stream/rabbit/e/opt/2/5
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
rabbit.c: In file included from rabbit.c:1:
rabbit.c: ./e/rabbit.c:958:7: error: invalid symbol redefinition
rabbit.c: ".intel_syntax noprefix;"
rabbit.c: ^
rabbit.c: gt;:1:323: note: instantiated into assembly here
rabbit.c: .intel_syntax noprefix;sub esp, 8;mov dword ptr [esp+ 4], ebp;mov dword ptr [esp+ 0], esi;movq mm0, qword ptr [eax+ 0];movq mm1, qword ptr [eax+ 8];movq mm3, qword ptr [eax+24];movq mm4, qword ptr [eax+32];movq mm5, qword ptr [eax+40];mov esi, dword ptr [eax+64];mov ebx, 0;.align 16;nextstate_opt_loop:paddd mm0, mm4;movq mm6, qword ptr [eax+48];add dword ptr [eax+32], esi;pshufw mm7, mm0, 0x4E;paddd mm1, mm5;movq mm2, qword ptr [eax+16];pmuludq mm0, mm0;paddd mm2, mm6;movq mm6, qword ptr [eax+56];pmuludq mm7, mm7;movq mm4, mm0;adc dword ptr [eax+40], 0xD34D34D3;paddd mm3, mm6;pshufw mm6, mm1, 0x4E;punpckhdq mm0, mm7;pmuludq mm1, mm1;punpckldq mm4, mm7;pshufw mm7, mm2, 0x4E;pmuludq mm6, mm6;pxor mm4, mm0;pmuludq mm2, mm2;adc dword ptr [eax+48], 0x34d34d34;movq mm5, mm1;pmuludq mm7, mm7;punpckldq mm5, mm6;punpckhdq mm1, mm6;pxor mm5, mm1;movq mm6, mm2;pshufw mm1, mm3, 0x4E;pmuludq mm3, mm3;punpckldq mm6, mm7;adc dword ptr [eax+56], 0x4D34D34D;punpckhdq mm2, mm7;pmuludq mm1, mm1;pshufw mm0, mm4, 0xB1;movq mm7, mm3;pxor mm6, mm2;pshufw mm2, mm5, 0xB1;paddd mm2, mm0;pshufw mm0, mm6, 0x1B;punpckldq mm7, mm1;adc dword ptr [eax+36], 0xD34D34D3;punpckhdq mm3, mm1;movq mm1, mm4;paddd mm0, mm4;pslld mm4, 8;pxor mm7, mm3;pshufw mm3, mm7, 0x1B;paddd mm0, mm3;movq mm3, mm6;paddd mm2, mm6;adc dword ptr [eax+44], 0x34D34D34;psrld mm1, 24;por mm1, mm4;psrld mm3, 24;pslld mm6, 8;paddd mm1, mm5;pshufw mm4, mm7, 0x4E;por mm3, mm6;paddd mm7, mm5;adc dword ptr [eax+52], 0x4D34D34D;paddd mm1, mm4;paddd mm3, mm7;movq qword ptr [eax+16], mm2;adc dword ptr [eax+60], 0xD34D34D3;mov esi, 0;adc esi, 0x4D34D34D;add ebx, 1;movq mm4, qword ptr [eax+32];cmp ebx, edx;movq mm5, qword ptr [eax+40];jb nextstate_opt_loop;movq qword ptr [eax+ 0], mm0;movq qword ptr [eax+ 8], mm1;movq qword ptr [eax+24], mm3;mov dword ptr [eax+64], esi;mov ebp, dword ptr [esp+ 4];mov esi, dword ptr [esp+ 0];add esp, 8;emms;.att_syntax prefix;
rabbit.c: ^
rabbit.c: In file included from rabbit.c:1:
rabbit.c: ./e/rabbit.c:958:7: error: invalid symbol redefinition
rabbit.c: ".intel_syntax noprefix;"
rabbit.c: ^
rabbit.c: gt;:1:323: note: instantiated into assembly here
rabbit.c: .intel_syntax noprefix;sub esp, 8;mov dword ptr [esp+ 4], ebp;mov dword ptr [esp+ 0], esi;movq mm0, qword ptr [eax+ 0];movq mm1, qword ptr [eax+ 8];movq mm3, qword ptr [eax+24];movq mm4, qword ptr [eax+32];movq mm5, qword ptr [eax+40];mov esi, dword ptr [eax+64];mov ebx, 0;.align 16;nextstate_opt_loop:paddd mm0, mm4;movq mm6, qword ptr [eax+48];add dword ptr [eax+32], esi;pshufw mm7, mm0, 0x4E;paddd mm1, mm5;movq mm2, qword ptr [eax+16];pmuludq mm0, mm0;paddd mm2, mm6;movq mm6, qword ptr [eax+56];pmuludq mm7, mm7;movq mm4, mm0;adc dword ptr [eax+40], 0xD34D34D3;paddd mm3, mm6;pshufw mm6, mm1, 0x4E;punpckhdq mm0, mm7;pmuludq mm1, mm1;punpckldq mm4, mm7;pshufw mm7, mm2, 0x4E;pmuludq mm6, mm6;pxor mm4, mm0;pmuludq mm2, mm2;adc dword ptr [eax+48], 0x34d34d34;movq mm5, mm1;pmuludq mm7, mm7;punpckldq mm5, mm6;punpckhdq mm1, mm6;pxor mm5, mm1;movq mm6, mm2;pshufw mm1, mm3, 0x4E;pmuludq mm3, mm3;punpckldq mm6, mm7;adc dword ptr [eax+56], 0x4D34D34D;punpckhdq mm2, mm7;pmuludq mm1, mm1;pshufw mm0, mm4, 0xB1;movq mm7, mm3;pxor mm6, mm2;pshufw mm2, mm5, 0xB1;paddd mm2, mm0;pshufw mm0, mm6, 0x1B;punpckldq mm7, mm1;adc dword ptr [eax+36], 0xD34D34D3;punpckhdq mm3, mm1;movq mm1, mm4;paddd mm0, mm4;pslld mm4, 8;pxor mm7, mm3;pshufw mm3, mm7, 0x1B;paddd mm0, mm3;movq mm3, mm6;paddd mm2, mm6;adc dword ptr [eax+44], 0x34D34D34;psrld mm1, 24;por mm1, mm4;psrld mm3, 24;pslld mm6, 8;paddd mm1, mm5;pshufw mm4, mm7, 0x4E;por mm3, mm6;paddd mm7, mm5;adc dword ptr [eax+52], 0x4D34D34D;paddd mm1, mm4;paddd mm3, mm7;movq qword ptr [eax+16], mm2;adc dword ptr [eax+60], 0xD34D34D3;mov esi, 0;adc esi, 0x4D34D34D;add ebx, 1;movq mm4, qword ptr [eax+32];cmp ebx, edx;movq mm5, qword ptr [eax+40];jb nextstate_opt_loop;movq qword ptr [eax+ 0], mm0;movq qword ptr [eax+ 8], mm1;movq qword ptr [eax+24], mm3;mov dword ptr [eax+64], esi;mov ebp, dword ptr [esp+ 4];mov esi, dword ptr [esp+ 0];add esp, 8;emms;.att_syntax prefix;
rabbit.c: ^
rabbit.c: In file included from rabbit.c:1:
rabbit.c: ./e/rabbit.c:712:7: error: invalid symbol redefinition
rabbit.c: ".intel_syntax noprefix;"
rabbit.c: ^
rabbit.c: gt;:1:308: note: instantiated into assembly here
rabbit.c: .intel_syntax noprefix;sub esp, 8;mov dword ptr [esp+ 4], ebp;mov dword ptr [esp+ 0], esi;movq mm0, qword ptr [eax+ 0];movq mm1, qword ptr [eax+ 8];movq mm3, qword ptr [eax+24];movq mm4, qword ptr [eax+32];movq mm5, qword ptr [eax+40];mov esi, dword ptr [eax+64];.align 16;process_opt_loop:paddd mm0, mm4;movq mm6, qword ptr [eax+48];add dword ptr [eax+32], esi;pshufw mm7, mm0, 0x4E;paddd mm1, mm5;movq mm2, qword ptr [eax+16];pmuludq mm0, mm0;paddd mm2, mm6;movq mm6, qword ptr [eax+56];pmuludq mm7, mm7;movq mm4, mm0;adc dword ptr [eax+40], 0xD34D34D3;paddd mm3, mm6;pshufw mm6, mm1, 0x4E;punpckhdq mm0, mm7;pmuludq mm1, mm1;punpckldq mm4, mm7;pshufw mm7, mm2, 0x4E;pmuludq mm6, mm6;pxor mm4, mm0;pmuludq mm2, mm2;adc dword ptr [eax+48], 0x34d34d34;movq mm5, mm1;pmuludq mm7, mm7;punpckldq mm5, mm6;punpckhdq mm1, mm6;pxor mm5, mm1;movq mm6, mm2;pshufw mm1, mm3, 0x4E;pmuludq mm3, mm3;punpckldq mm6, mm7;adc dword ptr [eax+56], 0x4D34D34D;punpckhdq mm2, mm7;pmuludq mm1, mm1;pshufw mm0, mm4, 0xB1;movq mm7, mm3;pxor mm6, mm2;pshufw mm2, mm5, 0xB1;paddd mm2, mm0;pshufw mm0, mm6, 0x1B;punpckldq mm7, mm1;adc dword ptr [eax+36], 0xD34D34D3;punpckhdq mm3, mm1;movq mm1, mm4;paddd mm0, mm4;pslld mm4, 8;pxor mm7, mm3;pshufw mm3, mm7, 0x1B;paddd mm0, mm3;movq mm3, mm6;paddd mm2, mm6;adc dword ptr [eax+44], 0x34D34D34;psrld mm1, 24;por mm1, mm4;psrld mm3, 24;pslld mm6, 8;paddd mm1, mm5;pshufw mm4, mm7, 0x4E;por mm3, mm6;paddd mm7, mm5;adc dword ptr [eax+52], 0x4D34D34D;paddd mm1, mm4;paddd mm3, mm7;pshufw mm7, mm1, 0x27;pshufw mm5, mm3, 0x78;movq qword ptr [eax+16], mm2;movq mm4, mm5;punpckhwd mm5, mm7;adc dword ptr [eax+60], 0xD34D34D3;punpcklwd mm7, mm4;movq mm4, qword ptr [ebx];pxor mm7, mm0;pxor mm5, mm2;pshufw mm6, mm7, 0xE4;movq mm2, qword ptr [ebx+ 8];punpckldq mm7, mm5;mov esi, 0;adc esi, 0x4D34D34D;add ebx, 16;pxor mm7, mm4;movq mm4, qword ptr [eax+32];movq qword ptr [ebx+ecx-16], mm7;punpckhdq mm6, mm5;cmp ebx, edx;movq mm5, qword ptr [eax+40];pxor mm6, mm2;movq qword ptr [ebx+ecx- 8], mm6;jb process_opt_loop;movq qword ptr [eax+ 0], mm0;movq qword ptr [eax+ 8], mm1;movq qword ptr [eax+24], mm3;mov dword ptr [eax+64], esi;mov ebp, dword ptr [esp+ 4];mov esi, dword ptr [esp+ 0];add esp, 8;emms;.att_syntax prefix;
rabbit.c: ^
rabbit.c: In file included from rabbit.c:1:
rabbit.c: ./e/rabbit.c:842:7: error: invalid symbol redefinition
rabbit.c: ".intel_syntax noprefix;"
rabbit.c: ^
rabbit.c: ...

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

Compiler output

Implementation: crypto_stream/rabbit/e/opt/2/5
Compiler: gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv
rabbit.c: e/rabbit.c: Assembler messages:
rabbit.c: e/rabbit.c:711: Error: symbol `process_opt_loop' is already defined

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv e/opt/2/5