Implementation notes: amd64, skylake, crypto_aead/aes128marble4rv1

Computer: skylake
Architecture: amd64
CPU ID: GenuineIntel-000506e3-bfebfbff
SUPERCOP version: 20161026
Operation: crypto_aead
Primitive: aes128marble4rv1
TimeImplementationCompilerBenchmark dateSUPERCOP version
190060refclang -O3 -fomit-frame-pointer -Qunused-arguments2016121620161026
190232refclang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016121620161026
190368refclang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016121620161026
190546refclang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016121620161026
209230refgcc -funroll-loops -O2 -fomit-frame-pointer2016121620161026
209268refgcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer2016121620161026
210580refgcc -funroll-loops -m64 -O2 -fomit-frame-pointer2016121620161026
210692refgcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer2016121620161026
211068refgcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer2016121620161026
211482refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016121620161026
211490refgcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer2016121620161026
211530refgcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer2016121620161026
211694refgcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer2016121620161026
211722refclang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments2016121620161026
211730refgcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer2016121620161026
212196refclang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments2016121620161026
212504refclang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments2016121620161026
212712refgcc -funroll-loops -m64 -O3 -fomit-frame-pointer2016121620161026
212780refgcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer2016121620161026
212782refgcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer2016121620161026
213020refgcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer2016121620161026
213082refgcc -funroll-loops -O3 -fomit-frame-pointer2016121620161026
213312refgcc -m64 -march=core-avx-i -O3 -fomit-frame-pointer2016121620161026
213318refgcc -m64 -march=corei7-avx -O3 -fomit-frame-pointer2016121620161026
213566refgcc -march=k8 -O3 -fomit-frame-pointer2016121620161026
213604refclang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments2016121620161026
213750refgcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer2016121620161026
213856refgcc -O3 -fomit-frame-pointer2016121620161026
213862refgcc -fno-schedule-insns -O3 -fomit-frame-pointer2016121620161026
213958refgcc -m64 -march=k8 -O3 -fomit-frame-pointer2016121620161026
214048refgcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer2016121620161026
214142refgcc -m64 -march=core-avx2 -O3 -fomit-frame-pointer2016121620161026
214288refclang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fomit-frame-pointer -Qunused-arguments2016121620161026
214616refgcc -m64 -O3 -fomit-frame-pointer2016121620161026
214908refgcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer2016121620161026
214972refgcc -funroll-loops -m64 -O -fomit-frame-pointer2016121620161026
215010refgcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer2016121620161026
215506refgcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer2016121620161026
215524refgcc -m64 -march=corei7 -O3 -fomit-frame-pointer2016121620161026
215594refgcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer2016121620161026
215654refgcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer2016121620161026
216064refgcc -funroll-loops -march=k8 -O -fomit-frame-pointer2016121620161026
216968refgcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer2016121620161026
217262refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016121620161026
217300refgcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2016121620161026
217364refgcc -funroll-loops -O -fomit-frame-pointer2016121620161026
218408refgcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer2016121620161026
218588refgcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer2016121620161026
218750refgcc -funroll-loops -march=nocona -O -fomit-frame-pointer2016121620161026
220640refgcc -m64 -march=nocona -O3 -fomit-frame-pointer2016121620161026
220690refgcc -march=nocona -O3 -fomit-frame-pointer2016121620161026
220722refgcc -m64 -march=core2 -O3 -fomit-frame-pointer2016121620161026
220942refgcc -m64 -march=core-avx2 -O2 -fomit-frame-pointer2016121620161026
220972refgcc -funroll-loops -march=barcelona -O -fomit-frame-pointer2016121620161026
221158refgcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2016121620161026
221210refgcc -m64 -march=corei7 -O2 -fomit-frame-pointer2016121620161026
223644refgcc -O2 -fomit-frame-pointer2016121620161026
223820refgcc -fno-schedule-insns -O2 -fomit-frame-pointer2016121620161026
224178refgcc -m64 -march=corei7-avx -O -fomit-frame-pointer2016121620161026
224374refgcc -m64 -O2 -fomit-frame-pointer2016121620161026
224666refgcc -m64 -march=corei7 -O -fomit-frame-pointer2016121620161026
224730refgcc -m64 -march=core-avx-i -O -fomit-frame-pointer2016121620161026
224918refgcc -m64 -O -fomit-frame-pointer2016121620161026
225018refgcc -march=barcelona -O3 -fomit-frame-pointer2016121620161026
225190refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016121620161026
225278refgcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer2016121620161026
225334refgcc -fno-schedule-insns -O -fomit-frame-pointer2016121620161026
225626refgcc -m64 -march=corei7-avx -O2 -fomit-frame-pointer2016121620161026
225860refgcc -m64 -march=core2 -O2 -fomit-frame-pointer2016121620161026
225916refgcc -m64 -march=core2 -O -fomit-frame-pointer2016121620161026
225922refgcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer2016121620161026
226058refgcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer2016121620161026
226076refgcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer2016121620161026
226098refgcc -O -fomit-frame-pointer2016121620161026
226522refgcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer2016121620161026
226904refgcc -m64 -march=barcelona -O3 -fomit-frame-pointer2016121620161026
226914refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016121620161026
228568refgcc -m64 -march=k8 -O -fomit-frame-pointer2016121620161026
229100refgcc -march=k8 -O -fomit-frame-pointer2016121620161026
231282refgcc -m64 -march=k8 -O2 -fomit-frame-pointer2016121620161026
232534refgcc -march=k8 -O2 -fomit-frame-pointer2016121620161026
233920refgcc -m64 -march=barcelona -O2 -fomit-frame-pointer2016121620161026
234332refgcc -march=barcelona -O2 -fomit-frame-pointer2016121620161026
240062refgcc -m64 -march=native -mtune=native -O -fomit-frame-pointer2016121620161026
240214refgcc -m64 -march=core-avx2 -O -fomit-frame-pointer2016121620161026
240940refgcc -march=nocona -O -fomit-frame-pointer2016121620161026
240952refgcc -m64 -march=nocona -O2 -fomit-frame-pointer2016121620161026
241352refgcc -m64 -march=nocona -O -fomit-frame-pointer2016121620161026
241378refgcc -march=nocona -O2 -fomit-frame-pointer2016121620161026
248812refgcc -march=k8 -Os -fomit-frame-pointer2016121620161026
248950refgcc -march=barcelona -Os -fomit-frame-pointer2016121620161026
249180refgcc -Os -fomit-frame-pointer2016121620161026
249184refgcc -fno-schedule-insns -Os -fomit-frame-pointer2016121620161026
249348refgcc -m64 -Os -fomit-frame-pointer2016121620161026
249432refgcc -m64 -march=k8 -Os -fomit-frame-pointer2016121620161026
249816refgcc -m64 -march=barcelona -Os -fomit-frame-pointer2016121620161026
253614refgcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer2016121620161026
254008refgcc -funroll-loops -march=nocona -Os -fomit-frame-pointer2016121620161026
255308refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016121620161026
257394refgcc -march=barcelona -O -fomit-frame-pointer2016121620161026
257542refgcc -m64 -march=barcelona -O -fomit-frame-pointer2016121620161026
257742refgcc -funroll-loops -march=k8 -Os -fomit-frame-pointer2016121620161026
257898refgcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer2016121620161026
258080refgcc -funroll-loops -m64 -Os -fomit-frame-pointer2016121620161026
258206refgcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer2016121620161026
258590refgcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer2016121620161026
259546refgcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer2016121620161026
260600refgcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer2016121620161026
260856refgcc -funroll-loops -Os -fomit-frame-pointer2016121620161026
262526refgcc -m64 -march=core-avx2 -Os -fomit-frame-pointer2016121620161026
263740refgcc -m64 -march=corei7-avx -Os -fomit-frame-pointer2016121620161026
264126refgcc -m64 -march=core-avx-i -Os -fomit-frame-pointer2016121620161026
266724refgcc -m64 -march=nocona -Os -fomit-frame-pointer2016121620161026
267568refgcc -march=nocona -Os -fomit-frame-pointer2016121620161026
267776refgcc -m64 -march=corei7 -Os -fomit-frame-pointer2016121620161026
267822refgcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer2016121620161026
267934refgcc -m64 -march=core2 -Os -fomit-frame-pointer2016121620161026
267958refgcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer2016121620161026
867572refgcc2016121620161026
867630refcc2016121620161026
871688refgcc -funroll-loops2016121620161026

Compiler output

Implementation: crypto_aead/aes128marble4rv1/ref
Compiler: cc
encrypt.c: encrypt.c: In function 'crypto_aead_aes128marble4rv1_ref_encrypt':
encrypt.c: encrypt.c:34:2: warning: implicit declaration of function 'free' [-Wimplicit-function-declaration]
encrypt.c: free(cxt);
encrypt.c: ^~~~
encrypt.c: encrypt.c:34:2: warning: incompatible implicit declaration of built-in function 'free'
encrypt.c: encrypt.c:34:2: note: include 'gt;' or provide a declaration of 'free'
encrypt.c: encrypt.c: In function 'crypto_aead_aes128marble4rv1_ref_decrypt':
encrypt.c: encrypt.c:67:2: warning: incompatible implicit declaration of built-in function 'free'
encrypt.c: free(cxt);
encrypt.c: ^~~~
encrypt.c: encrypt.c:67:2: note: include 'gt;' or provide a declaration of 'free'

Number of similar (compiler,implementation) pairs: 107, namely:
CompilerImplementations
cc ref
gcc ref
gcc -O2 -fomit-frame-pointer ref
gcc -O3 -fomit-frame-pointer ref
gcc -O -fomit-frame-pointer ref
gcc -Os -fomit-frame-pointer ref
gcc -fno-schedule-insns -O2 -fomit-frame-pointer ref
gcc -fno-schedule-insns -O3 -fomit-frame-pointer ref
gcc -fno-schedule-insns -O -fomit-frame-pointer ref
gcc -fno-schedule-insns -Os -fomit-frame-pointer ref
gcc -funroll-loops ref
gcc -funroll-loops -O2 -fomit-frame-pointer ref
gcc -funroll-loops -O3 -fomit-frame-pointer ref
gcc -funroll-loops -O -fomit-frame-pointer ref
gcc -funroll-loops -Os -fomit-frame-pointer ref
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer ref
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer ref
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer ref
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer ref
gcc -funroll-loops -m64 -O2 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -O3 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -O -fomit-frame-pointer ref
gcc -funroll-loops -m64 -Os -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer ref
gcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer ref
gcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer ref
gcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer ref
gcc -funroll-loops -march=barcelona -O -fomit-frame-pointer ref
gcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer ref
gcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer ref
gcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer ref
gcc -funroll-loops -march=k8 -O -fomit-frame-pointer ref
gcc -funroll-loops -march=k8 -Os -fomit-frame-pointer ref
gcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer ref
gcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer ref
gcc -funroll-loops -march=nocona -O -fomit-frame-pointer ref
gcc -funroll-loops -march=nocona -Os -fomit-frame-pointer ref
gcc -m64 -O2 -fomit-frame-pointer ref
gcc -m64 -O3 -fomit-frame-pointer ref
gcc -m64 -O -fomit-frame-pointer ref
gcc -m64 -Os -fomit-frame-pointer ref
gcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer ref
gcc -m64 -march=core-avx-i -O3 -fomit-frame-pointer ref
gcc -m64 -march=core-avx-i -O -fomit-frame-pointer ref
gcc -m64 -march=core-avx-i -Os -fomit-frame-pointer ref
gcc -m64 -march=core-avx2 -O2 -fomit-frame-pointer ref
gcc -m64 -march=core-avx2 -O3 -fomit-frame-pointer ref
gcc -m64 -march=core-avx2 -O -fomit-frame-pointer ref
gcc -m64 -march=core-avx2 -Os -fomit-frame-pointer ref
gcc -m64 -march=core2 -O2 -fomit-frame-pointer ref
gcc -m64 -march=core2 -O3 -fomit-frame-pointer ref
gcc -m64 -march=core2 -O -fomit-frame-pointer ref
gcc -m64 -march=core2 -Os -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer ref
gcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer ref
gcc -m64 -march=corei7-avx -O2 -fomit-frame-pointer ref
gcc -m64 -march=corei7-avx -O3 -fomit-frame-pointer ref
gcc -m64 -march=corei7-avx -O -fomit-frame-pointer ref
gcc -m64 -march=corei7-avx -Os -fomit-frame-pointer ref
gcc -m64 -march=corei7 -O2 -fomit-frame-pointer ref
gcc -m64 -march=corei7 -O3 -fomit-frame-pointer ref
gcc -m64 -march=corei7 -O -fomit-frame-pointer ref
gcc -m64 -march=corei7 -Os -fomit-frame-pointer ref
gcc -m64 -march=k8 -O2 -fomit-frame-pointer ref
gcc -m64 -march=k8 -O3 -fomit-frame-pointer ref
gcc -m64 -march=k8 -O -fomit-frame-pointer ref
gcc -m64 -march=k8 -Os -fomit-frame-pointer ref
gcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer ref
gcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer ref
gcc -m64 -march=native -mtune=native -O -fomit-frame-pointer ref
gcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer ref
gcc -m64 -march=nocona -O2 -fomit-frame-pointer ref
gcc -m64 -march=nocona -O3 -fomit-frame-pointer ref
gcc -m64 -march=nocona -O -fomit-frame-pointer ref
gcc -m64 -march=nocona -Os -fomit-frame-pointer ref
gcc -march=barcelona -O2 -fomit-frame-pointer ref
gcc -march=barcelona -O3 -fomit-frame-pointer ref
gcc -march=barcelona -O -fomit-frame-pointer ref
gcc -march=barcelona -Os -fomit-frame-pointer ref
gcc -march=k8 -O2 -fomit-frame-pointer ref
gcc -march=k8 -O3 -fomit-frame-pointer ref
gcc -march=k8 -O -fomit-frame-pointer ref
gcc -march=k8 -Os -fomit-frame-pointer ref
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv ref
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv ref
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv ref
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv ref
gcc -march=nocona -O2 -fomit-frame-pointer ref
gcc -march=nocona -O3 -fomit-frame-pointer ref
gcc -march=nocona -O -fomit-frame-pointer ref
gcc -march=nocona -Os -fomit-frame-pointer ref

Compiler output

Implementation: crypto_aead/aes128marble4rv1/ref
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
encrypt.c: encrypt.c:34:2: warning: implicit declaration of function 'free' is invalid in C99 [-Wimplicit-function-declaration]
encrypt.c: free(cxt);
encrypt.c: ^
encrypt.c: 1 warning generated.

Number of similar (compiler,implementation) pairs: 10, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments ref
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments ref
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments ref
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_aead/aes128marble4rv1/ref
Compiler: gcc -m64 -march=barcelona -O2 -fomit-frame-pointer
encrypt.c: encrypt.c: In function 'crypto_aead_aes128marble4rv1_ref_encrypt':
encrypt.c: encrypt.c:34:2: warning: implicit declaration of function 'free' [-Wimplicit-function-declaration]
encrypt.c: free(cxt);
encrypt.c: ^~~~
encrypt.c: encrypt.c:34:2: warning: incompatible implicit declaration of built-in function 'free'
encrypt.c: encrypt.c:34:2: note: include 'gt;' or provide a declaration of 'free'
encrypt.c: encrypt.c: In function 'crypto_aead_aes128marble4rv1_ref_decrypt':
encrypt.c: encrypt.c:67:2: warning: incompatible implicit declaration of built-in function 'free'
encrypt.c: free(cxt);
encrypt.c: ^~~~
encrypt.c: encrypt.c:67:2: note: include 'gt;' or provide a declaration of 'free'
encrypt.c: encrypt.c: In function 'crypto_aead_aes128marble4rv1_ref_encrypt':
encrypt.c: encrypt.c:34:2: warning: implicit declaration of function 'free' [-Wimplicit-function-declaration]
encrypt.c: free(cxt);
encrypt.c: ^~~~
encrypt.c: encrypt.c:34:2: warning: incompatible implicit declaration of built-in function 'free'
encrypt.c: encrypt.c:34:2: note: include 'gt;' or provide a declaration of 'free'
encrypt.c: encrypt.c: In function 'crypto_aead_aes128marble4rv1_ref_decrypt':
encrypt.c: encrypt.c:67:2: warning: incompatible implicit declaration of built-in function 'free'
encrypt.c: free(cxt);
encrypt.c: ^~~~
encrypt.c: encrypt.c:67:2: note: include 'gt;' or provide a declaration of 'free'

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