Implementation notes: amd64, enigma, crypto_aead/aes128poetv1aes128

Computer: enigma
Architecture: amd64
CPU ID: GenuineIntel-000006fb-bfebfbff
SUPERCOP version: 20140529
Operation: crypto_aead
Primitive: aes128poetv1aes128
TimeImplementationCompilerBenchmark dateSUPERCOP version
6466446refgcc -funroll-loops -O3 -fomit-frame-pointer2014060120140529
6506055refgcc -funroll-loops -m64 -O3 -fomit-frame-pointer2014060120140529
6512787refgcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer2014060120140529
6513336refgcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer2014060120140529
6629364refgcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer2014060120140529
6641559refgcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer2014060120140529
6776172refgcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer2014060120140529
6778224refgcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer2014060120140529
6883893refgcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer2014060120140529
8743950refgcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer2014060120140529
8746713refgcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2014060120140529
8766882refgcc -march=barcelona -O3 -fomit-frame-pointer2014060120140529
8851158refgcc -m64 -O3 -fomit-frame-pointer2014060120140529
8851257refgcc -O3 -fomit-frame-pointer2014060120140529
8851500refgcc -fno-schedule-insns -O3 -fomit-frame-pointer2014060120140529
8909244refgcc -march=k8 -O3 -fomit-frame-pointer2014060120140529
8932725refgcc -march=nocona -O3 -fomit-frame-pointer2014060120140529
8971443refgcc -m64 -march=core2 -O3 -fomit-frame-pointer2014060120140529
8976312refgcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer2014060120140529
9014436refgcc -m64 -march=k8 -O3 -fomit-frame-pointer2014060120140529
9021663refgcc -m64 -march=barcelona -O3 -fomit-frame-pointer2014060120140529
9025281refgcc -m64 -march=barcelona -O3 -fomit-frame-pointer2014060120140529
9243108refgcc -m64 -march=nocona -O3 -fomit-frame-pointer2014060120140529
16029954refgcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer2014060120140529
16032456refgcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer2014060120140529
16697610refgcc -funroll-loops -march=nocona -O -fomit-frame-pointer2014060120140529
16701786refgcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer2014060120140529
16779141refgcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer2014060120140529
16780077refgcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer2014060120140529
16797951refgcc -funroll-loops -O2 -fomit-frame-pointer2014060120140529
16798329refgcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer2014060120140529
16798896refgcc -funroll-loops -m64 -O2 -fomit-frame-pointer2014060120140529
16881111refgcc -funroll-loops -march=k8 -O -fomit-frame-pointer2014060120140529
16890282refgcc -funroll-loops -m64 -O -fomit-frame-pointer2014060120140529
16890912refgcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer2014060120140529
16903170refgcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer2014060120140529
16907580refgcc -funroll-loops -march=barcelona -O -fomit-frame-pointer2014060120140529
16911225refgcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer2014060120140529
16914276refgcc -funroll-loops -O -fomit-frame-pointer2014060120140529
17060229refgcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer2014060120140529
17060238refgcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer2014060120140529
21649635refgcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2014060120140529
21649698refgcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer2014060120140529
21649905refgcc -m64 -march=core2 -O2 -fomit-frame-pointer2014060120140529
21651750refgcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer2014060120140529
21694671refgcc -m64 -march=k8 -O2 -fomit-frame-pointer2014060120140529
21697452refgcc -march=k8 -O2 -fomit-frame-pointer2014060120140529
21741354refgcc -m64 -O2 -fomit-frame-pointer2014060120140529
21742146refgcc -O2 -fomit-frame-pointer2014060120140529
21742227refgcc -fno-schedule-insns -O2 -fomit-frame-pointer2014060120140529
21742272refgcc -m64 -march=barcelona -O2 -fomit-frame-pointer2014060120140529
21744099refgcc -m64 -march=barcelona -O2 -fomit-frame-pointer2014060120140529
21744360refgcc -march=barcelona -O2 -fomit-frame-pointer2014060120140529
21753396refgcc -funroll-loops -Os -fomit-frame-pointer2014060120140529
21753711refgcc -funroll-loops -march=k8 -Os -fomit-frame-pointer2014060120140529
21753864refgcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer2014060120140529
21753891refgcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer2014060120140529
21759075refgcc -march=barcelona -Os -fomit-frame-pointer2014060120140529
21759570refgcc -m64 -march=barcelona -Os -fomit-frame-pointer2014060120140529
21760146refgcc -m64 -march=barcelona -Os -fomit-frame-pointer2014060120140529
21762918refgcc -march=k8 -Os -fomit-frame-pointer2014060120140529
21764061refgcc -Os -fomit-frame-pointer2014060120140529
21764241refgcc -m64 -Os -fomit-frame-pointer2014060120140529
21764313refgcc -fno-schedule-insns -Os -fomit-frame-pointer2014060120140529
21770559refgcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer2014060120140529
21770613refgcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer2014060120140529
21771927refgcc -funroll-loops -m64 -Os -fomit-frame-pointer2014060120140529
21788820refgcc -m64 -march=k8 -Os -fomit-frame-pointer2014060120140529
21790278refgcc -m64 -march=nocona -O2 -fomit-frame-pointer2014060120140529
21801222refgcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer2014060120140529
21802761refgcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer2014060120140529
21803400refgcc -march=nocona -O2 -fomit-frame-pointer2014060120140529
21812004refgcc -march=nocona -Os -fomit-frame-pointer2014060120140529
21812175refgcc -m64 -march=nocona -Os -fomit-frame-pointer2014060120140529
21828384refgcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer2014060120140529
21829176refgcc -m64 -march=core2 -Os -fomit-frame-pointer2014060120140529
21858318refgcc -funroll-loops -march=nocona -Os -fomit-frame-pointer2014060120140529
21859992refgcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer2014060120140529
22141251refgcc -march=nocona -O -fomit-frame-pointer2014060120140529
22149585refgcc -m64 -march=nocona -O -fomit-frame-pointer2014060120140529
22354083refgcc -fno-schedule-insns -O -fomit-frame-pointer2014060120140529
22360473refgcc -m64 -march=k8 -O -fomit-frame-pointer2014060120140529
22366620refgcc -march=k8 -O -fomit-frame-pointer2014060120140529
22370310refgcc -O -fomit-frame-pointer2014060120140529
22370544refgcc -m64 -O -fomit-frame-pointer2014060120140529
22399002refgcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer2014060120140529
22399776refgcc -m64 -march=core2 -O -fomit-frame-pointer2014060120140529
22415967refgcc -march=barcelona -O -fomit-frame-pointer2014060120140529
22418460refgcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer2014060120140529
22418910refgcc -m64 -march=native -mtune=native -O -fomit-frame-pointer2014060120140529
22425768refgcc -m64 -march=barcelona -O -fomit-frame-pointer2014060120140529
22425921refgcc -m64 -march=barcelona -O -fomit-frame-pointer2014060120140529
88668306refcc2014060120140529
88681815refgcc -funroll-loops2014060120140529
88734195refgcc2014060120140529

Compiler output

Implementation: crypto_aead/aes128poetv1aes128/ni
Compiler: cc
aes-ni.c: In file included from aes-ni.h:4,
aes-ni.c: from aes-ni.c:1:
aes-ni.c: /usr/lib/gcc/x86_64-linux-gnu/4.4.3/include/wmmintrin.h:34:3: error: #error "AES/PCLMUL instructions not enabled"
aes-ni.c: In file included from aes-ni.h:6,
aes-ni.c: from aes-ni.c:1:
aes-ni.c: /usr/lib/gcc/x86_64-linux-gnu/4.4.3/include/smmintrin.h:32:3: error: #error "SSE4.1 instruction set not enabled"
aes-ni.c: aes-ni.c: In function 'AES_Key_Dec':
aes-ni.c: aes-ni.c:6: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:7: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:8: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: ...
aes-ni.c: aes-ni.c:101: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:102: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:103: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:104: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:105: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:106: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:107: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:108: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:109: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:110: error: incompatible types when assigning to type '__m128i' from type 'int'

Number of similar (compiler,implementation) pairs: 79, namely:
CompilerImplementations
cc ni
gcc ni
gcc -O2 -fomit-frame-pointer ni
gcc -O3 -fomit-frame-pointer ni
gcc -O -fomit-frame-pointer ni
gcc -Os -fomit-frame-pointer ni
gcc -fno-schedule-insns -O2 -fomit-frame-pointer ni
gcc -fno-schedule-insns -O3 -fomit-frame-pointer ni
gcc -fno-schedule-insns -O -fomit-frame-pointer ni
gcc -fno-schedule-insns -Os -fomit-frame-pointer ni
gcc -funroll-loops ni
gcc -funroll-loops -O2 -fomit-frame-pointer ni
gcc -funroll-loops -O3 -fomit-frame-pointer ni
gcc -funroll-loops -O -fomit-frame-pointer ni
gcc -funroll-loops -Os -fomit-frame-pointer ni
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer ni
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer ni
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer ni
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer ni
gcc -funroll-loops -m64 -O2 -fomit-frame-pointer ni
gcc -funroll-loops -m64 -O3 -fomit-frame-pointer ni
gcc -funroll-loops -m64 -O -fomit-frame-pointer ni
gcc -funroll-loops -m64 -Os -fomit-frame-pointer ni
gcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer ni
gcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer ni
gcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer ni
gcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer ni
gcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer ni
gcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer ni
gcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer ni
gcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer ni
gcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer ni
gcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer ni
gcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer ni
gcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer ni
gcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer ni
gcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer ni
gcc -funroll-loops -march=barcelona -O -fomit-frame-pointer ni
gcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer ni
gcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer ni
gcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer ni
gcc -funroll-loops -march=k8 -O -fomit-frame-pointer ni
gcc -funroll-loops -march=k8 -Os -fomit-frame-pointer ni
gcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer ni
gcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer ni
gcc -funroll-loops -march=nocona -O -fomit-frame-pointer ni
gcc -funroll-loops -march=nocona -Os -fomit-frame-pointer ni
gcc -m64 -O2 -fomit-frame-pointer ni
gcc -m64 -O3 -fomit-frame-pointer ni
gcc -m64 -O -fomit-frame-pointer ni
gcc -m64 -Os -fomit-frame-pointer ni
gcc -m64 -march=core2 -O2 -fomit-frame-pointer ni
gcc -m64 -march=core2 -O3 -fomit-frame-pointer ni
gcc -m64 -march=core2 -O -fomit-frame-pointer ni
gcc -m64 -march=core2 -Os -fomit-frame-pointer ni
gcc -m64 -march=k8 -O2 -fomit-frame-pointer ni
gcc -m64 -march=k8 -O3 -fomit-frame-pointer ni
gcc -m64 -march=k8 -O -fomit-frame-pointer ni
gcc -m64 -march=k8 -Os -fomit-frame-pointer ni
gcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer ni
gcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer ni
gcc -m64 -march=native -mtune=native -O -fomit-frame-pointer ni
gcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer ni
gcc -m64 -march=nocona -O2 -fomit-frame-pointer ni
gcc -m64 -march=nocona -O3 -fomit-frame-pointer ni
gcc -m64 -march=nocona -O -fomit-frame-pointer ni
gcc -m64 -march=nocona -Os -fomit-frame-pointer ni
gcc -march=barcelona -O2 -fomit-frame-pointer ni
gcc -march=barcelona -O3 -fomit-frame-pointer ni
gcc -march=barcelona -O -fomit-frame-pointer ni
gcc -march=barcelona -Os -fomit-frame-pointer ni
gcc -march=k8 -O2 -fomit-frame-pointer ni
gcc -march=k8 -O3 -fomit-frame-pointer ni
gcc -march=k8 -O -fomit-frame-pointer ni
gcc -march=k8 -Os -fomit-frame-pointer ni
gcc -march=nocona -O2 -fomit-frame-pointer ni
gcc -march=nocona -O3 -fomit-frame-pointer ni
gcc -march=nocona -O -fomit-frame-pointer ni
gcc -march=nocona -Os -fomit-frame-pointer ni

Compiler output

Implementation: crypto_aead/aes128poetv1aes128/ni
Compiler: gcc -m64 -march=barcelona -O2 -fomit-frame-pointer
aes-ni.c: In file included from aes-ni.h:4,
aes-ni.c: from aes-ni.c:1:
aes-ni.c: /usr/lib/gcc/x86_64-linux-gnu/4.4.3/include/wmmintrin.h:34:3: error: #error "AES/PCLMUL instructions not enabled"
aes-ni.c: In file included from aes-ni.h:6,
aes-ni.c: from aes-ni.c:1:
aes-ni.c: /usr/lib/gcc/x86_64-linux-gnu/4.4.3/include/smmintrin.h:32:3: error: #error "SSE4.1 instruction set not enabled"
aes-ni.c: aes-ni.c: In function 'AES_Key_Dec':
aes-ni.c: aes-ni.c:6: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:7: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:8: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: ...
aes-ni.c: aes-ni.c:101: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:102: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:103: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:104: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:105: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:106: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:107: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:108: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:109: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:110: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: In file included from aes-ni.h:4,
aes-ni.c: from aes-ni.c:1:
aes-ni.c: /usr/lib/gcc/x86_64-linux-gnu/4.4.3/include/wmmintrin.h:34:3: error: #error "AES/PCLMUL instructions not enabled"
aes-ni.c: In file included from aes-ni.h:6,
aes-ni.c: from aes-ni.c:1:
aes-ni.c: /usr/lib/gcc/x86_64-linux-gnu/4.4.3/include/smmintrin.h:32:3: error: #error "SSE4.1 instruction set not enabled"
aes-ni.c: aes-ni.c: In function 'AES_Key_Dec':
aes-ni.c: aes-ni.c:6: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:7: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:8: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: ...
aes-ni.c: aes-ni.c:101: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:102: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:103: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:104: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:105: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:106: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:107: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:108: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:109: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:110: error: incompatible types when assigning to type '__m128i' from type 'int'

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

Compiler output

Implementation: crypto_aead/aes128poetv1aes128/ni
Compiler: gcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer
aes-ni.c: In file included from aes-ni.h:4,
aes-ni.c: from aes-ni.c:1:
aes-ni.c: /usr/lib/gcc/x86_64-linux-gnu/4.4.3/include/wmmintrin.h:34:3: error: #error "AES/PCLMUL instructions not enabled"
aes-ni.c: aes-ni.c: In function 'AES_Key_Dec':
aes-ni.c: aes-ni.c:6: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:7: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:8: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:9: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:10: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:11: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: ...
aes-ni.c: aes-ni.c:101: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:102: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:103: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:104: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:105: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:106: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:107: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:108: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:109: error: incompatible types when assigning to type '__m128i' from type 'int'
aes-ni.c: aes-ni.c:110: error: incompatible types when assigning to type '__m128i' from type 'int'

Number of similar (compiler,implementation) pairs: 8, namely:
CompilerImplementations
gcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer ni
gcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer ni
gcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer ni
gcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer ni
gcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer ni
gcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer ni
gcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer ni
gcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer ni