Implementation notes: amd64, h9trinity, crypto_kem/bikel3

Computer: h9trinity
Architecture: amd64
CPU ID: AuthenticAMD-00610f01-178bfbff
SUPERCOP version: 20200618
Operation: crypto_kem
Primitive: bikel3
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
4078895646342 56 465334 848 1612aes-ni-and-pclmulgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020053120200531
5287957925819 56 442510 848 1612aes-ni-and-pclmulgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020053120200531
5370184725826 56 442398 848 1612aes-ni-and-pclmulgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020053120200531
5395761714454 56 429527 840 1580aes-ni-and-pclmulclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020053120200531
5443674214184 56 429934 840 1580aes-ni-and-pclmulgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020053120200531
7243582721891 56 439593 848 1580aes-ni-and-pclmulclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020053120200531
7245226521891 56 439593 848 1580aes-ni-and-pclmulclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020053120200531
7751700329413 48 448259 896 1580portableclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020053120200531
8344494330471 56 449769 848 1580aes-ni-and-pclmulclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020053120200531
8942353464830 56 483822 848 1612aes-ni-onlygcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020053120200531
8969798560971 48 480577 912 1612portablegcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020053120200531
10813236327083 56 443774 848 1612aes-ni-onlygcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020053120200531
10862758924028 48 441353 912 1612portablegcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020053120200531
10936989711719 48 427401 888 1580portableclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020053120200531
10959166713844 56 428895 840 1580aes-ni-onlyclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020053120200531
11008338511765 48 428097 904 1580portablegcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020053120200531
11021459013900 56 429614 840 1580aes-ni-onlygcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020053120200531
11076867327601 56 444174 848 1612aes-ni-onlygcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020053120200531
11350811324835 48 442041 912 1612portablegcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020053120200531
11591397419379 48 437683 896 1580portableclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020053120200531
11596445719379 48 437683 896 1580portableclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020053120200531
11715910021857 56 439553 848 1580aes-ni-onlyclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020053120200531
11749119021857 56 439553 848 1580aes-ni-onlyclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020053120200531
12698995327399 48 447299 896 1580portableclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020053120200531
12706598430437 56 449729 848 1580aes-ni-onlyclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020053120200531

Compiler output

Implementation: aes-ni-and-pclmul
Security model: unknown
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
aes.c: aes.c:9:4: error: "This code requries support for AES_NI and SSSE3"
aes.c: # error "This code requries support for AES_NI and SSSE3"
aes.c: ^
aes.c: 1 error generated.

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE aes-ni-and-pclmul aes-ni-only avx2 avx512 avx512-vpclmul

Compiler output

Implementation: avx2
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
gf2x_ksqr_avx2.c: gf2x_ksqr_avx2.c:58:9: error: always_inline function '_mm256_sub_epi16' requires target feature 'avx2', but would be inlined into function 'generate_map' that is compiled without support for 'avx2'
gf2x_ksqr_avx2.c: inc = SUB_I16(inc, vr);
gf2x_ksqr_avx2.c: ^
gf2x_ksqr_avx2.c: ./x86_64_intrinsic.h:64:28: note: expanded from macro 'SUB_I16'
gf2x_ksqr_avx2.c: # define SUB_I16(a, b) _mm256_sub_epi16(a, b)
gf2x_ksqr_avx2.c: ^
gf2x_ksqr_avx2.c: gf2x_ksqr_avx2.c:67:17: error: always_inline function '_mm256_add_epi16' requires target feature 'avx2', but would be inlined into function 'generate_map' that is compiled without support for 'avx2'
gf2x_ksqr_avx2.c: vmap[j] = ADD_I16(vmap[j], inc);
gf2x_ksqr_avx2.c: ^
gf2x_ksqr_avx2.c: ./x86_64_intrinsic.h:63:28: note: expanded from macro 'ADD_I16'
gf2x_ksqr_avx2.c: # define ADD_I16(a, b) _mm256_add_epi16(a, b)
gf2x_ksqr_avx2.c: ^
gf2x_ksqr_avx2.c: gf2x_ksqr_avx2.c:68:17: error: always_inline function '_mm256_cmpgt_epi16' requires target feature 'avx2', but would be inlined into function 'generate_map' that is compiled without support for 'avx2'
gf2x_ksqr_avx2.c: vtmp[j] = CMPGT_I16(zero, vmap[j]);
gf2x_ksqr_avx2.c: ^
gf2x_ksqr_avx2.c: ./x86_64_intrinsic.h:70:27: note: expanded from macro 'CMPGT_I16'
gf2x_ksqr_avx2.c: # define CMPGT_I16(a, b) _mm256_cmpgt_epi16(a, b)
gf2x_ksqr_avx2.c: ^
gf2x_ksqr_avx2.c: gf2x_ksqr_avx2.c:69:17: error: always_inline function '_mm256_add_epi16' requires target feature 'avx2', but would be inlined into function 'generate_map' that is compiled without support for 'avx2'
gf2x_ksqr_avx2.c: vmap[j] = ADD_I16(vmap[j], vtmp[j] & vr);
gf2x_ksqr_avx2.c: ^
gf2x_ksqr_avx2.c: ./x86_64_intrinsic.h:63:28: note: expanded from macro 'ADD_I16'
gf2x_ksqr_avx2.c: # define ADD_I16(a, b) _mm256_add_epi16(a, b)
gf2x_ksqr_avx2.c: ^
gf2x_ksqr_avx2.c: 4 errors generated.

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

Compiler output

Implementation: avx2
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
gf2x_ksqr_avx2.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:43:0,
gf2x_ksqr_avx2.c: from x86_64_intrinsic.h:20,
gf2x_ksqr_avx2.c: from defs.h:103,
gf2x_ksqr_avx2.c: from bike_defs.h:10,
gf2x_ksqr_avx2.c: from types.h:13,
gf2x_ksqr_avx2.c: from utilities.h:13,
gf2x_ksqr_avx2.c: from cleanup.h:10,
gf2x_ksqr_avx2.c: from gf2x_ksqr_avx2.c:13:
gf2x_ksqr_avx2.c: gf2x_ksqr_avx2.c: In function 'bytes_to_bin':
gf2x_ksqr_avx2.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avx2intrin.h:433:1: error: inlining failed in call to always_inline '_mm256_movemask_epi8': target specific option mismatch
gf2x_ksqr_avx2.c: _mm256_movemask_epi8 (__m256i __A)
gf2x_ksqr_avx2.c: ^~~~~~~~~~~~~~~~~~~~
gf2x_ksqr_avx2.c: In file included from defs.h:103:0,
gf2x_ksqr_avx2.c: from bike_defs.h:10,
gf2x_ksqr_avx2.c: from types.h:13,
gf2x_ksqr_avx2.c: from utilities.h:13,
gf2x_ksqr_avx2.c: from cleanup.h:10,
gf2x_ksqr_avx2.c: from gf2x_ksqr_avx2.c:13:
gf2x_ksqr_avx2.c: x86_64_intrinsic.h:79:23: note: called from here
gf2x_ksqr_avx2.c: # define MOVEMASK(a) _mm256_movemask_epi8(a)
gf2x_ksqr_avx2.c: ^~~~~~~~~~~~~~~~~~~~~~~
gf2x_ksqr_avx2.c: gf2x_ksqr_avx2.c:85:17: note: in expansion of macro 'MOVEMASK'
gf2x_ksqr_avx2.c: bin32[i] = MOVEMASK(t);
gf2x_ksqr_avx2.c: ^~~~~~~~
gf2x_ksqr_avx2.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:43:0,
gf2x_ksqr_avx2.c: ...

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

Compiler output

Implementation: avx512
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
decode.c: In file included from decode.c:39:
decode.c: ./gf2x.h:22:10: error: always_inline function '_mm512_loadu_si512' requires target feature 'avx512f', but would be inlined into function 'gf2x_mod_add' that is compiled without support for 'avx512f'
decode.c: va = LOAD(&a_qwords[i]);
decode.c: ^
decode.c: ./x86_64_intrinsic.h:40:27: note: expanded from macro 'LOAD'
decode.c: # define LOAD(mem) _mm512_loadu_si512((mem))
decode.c: ^
decode.c: In file included from decode.c:39:
decode.c: ./gf2x.h:23:10: error: always_inline function '_mm512_loadu_si512' requires target feature 'avx512f', but would be inlined into function 'gf2x_mod_add' that is compiled without support for 'avx512f'
decode.c: vb = LOAD(&b_qwords[i]);
decode.c: ^
decode.c: ./x86_64_intrinsic.h:40:27: note: expanded from macro 'LOAD'
decode.c: # define LOAD(mem) _mm512_loadu_si512((mem))
decode.c: ^
decode.c: In file included from decode.c:39:
decode.c: ./gf2x.h:25:5: error: always_inline function '_mm512_storeu_si512' requires target feature 'avx512f', but would be inlined into function 'gf2x_mod_add' that is compiled without support for 'avx512f'
decode.c: STORE(&c_qwords[i], va ^ vb);
decode.c: ^
decode.c: ./x86_64_intrinsic.h:41:27: note: expanded from macro 'STORE'
decode.c: # define STORE(mem, reg) _mm512_storeu_si512((mem), (reg))
decode.c: ^
decode.c: 3 errors generated.

Number of similar (compiler,implementation) pairs: 8, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx512
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx512
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx512
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx512
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx512-vpclmul
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx512-vpclmul
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx512-vpclmul
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx512-vpclmul

Compiler output

Implementation: avx512
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
decode.c: In file included from decode.c:39:0:
decode.c: gf2x.h: In function 'gf2x_mod_add':
decode.c: gf2x.h:22:8: warning: AVX512F vector return without AVX512F enabled changes the ABI [-Wpsabi]
decode.c: va = LOAD(&a_qwords[i]);
decode.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:45:0,
decode.c: from x86_64_intrinsic.h:20,
decode.c: from defs.h:103,
decode.c: from bike_defs.h:10,
decode.c: from types.h:13,
decode.c: from decode.h:10,
decode.c: from decode.c:37:
decode.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avx512fintrin.h:5831:1: error: inlining failed in call to always_inline '_mm512_storeu_si512': target specific option mismatch
decode.c: _mm512_storeu_si512 (void *__P, __m512i __A)
decode.c: ^~~~~~~~~~~~~~~~~~~
decode.c: In file included from defs.h:103:0,
decode.c: from bike_defs.h:10,
decode.c: from types.h:13,
decode.c: from decode.h:10,
decode.c: from decode.c:37:
decode.c: x86_64_intrinsic.h:41:27: note: called from here
decode.c: # define STORE(mem, reg) _mm512_storeu_si512((mem), (reg))
decode.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
decode.c: gf2x.h:25:5: note: in expansion of macro 'STORE'
decode.c: STORE(&c_qwords[i], va ^ vb);
decode.c: ^~~~~
decode.c: ...

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

Namespace violations

Implementation: aes-ni-and-pclmul
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
aes.o aes256_enc T
aes.o aes256_key_expansion T
aes_ctr_prf.o aes_ctr_prf T
aes_ctr_prf.o init_aes_ctr_prf_state T
decode.o compute_syndrome T
decode.o decode T
error.o bike_errno B
gf2x_inv.o gf2x_mod_inv T
gf2x_ksqr_portable.o k_squaring T
gf2x_mul.o gf2x_mod_mul T
gf2x_mul.o gf2x_mod_sqr_in_place T
gf2x_mul_pclmul.o gf2x_mul_base T
gf2x_mul_pclmul.o gf2x_sqr T
rotate_portable.o rotate_right T
sampling.o generate_error_vector T
sampling.o generate_indices_mod_z T
sampling.o generate_sparse_rep T
sampling.o get_seeds T
sampling.o sample_uniform_r_bits T
sampling.o sample_uniform_r_bits_with_fixed_prf_context T
sampling_portable.o secure_set_bits T
sha.o sha T
utilities.o r_bits_vector_weight T

Number of similar (compiler,implementation) pairs: 8, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE aes-ni-and-pclmul
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE aes-ni-and-pclmul
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE aes-ni-and-pclmul
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE aes-ni-and-pclmul
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE aes-ni-and-pclmul
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE aes-ni-and-pclmul
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE aes-ni-and-pclmul
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE aes-ni-and-pclmul

Namespace violations

Implementation: aes-ni-only
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
aes.o aes256_enc T
aes.o aes256_key_expansion T
aes_ctr_prf.o aes_ctr_prf T
aes_ctr_prf.o init_aes_ctr_prf_state T
decode.o compute_syndrome T
decode.o decode T
error.o bike_errno B
gf2x_inv.o gf2x_mod_inv T
gf2x_ksqr_portable.o k_squaring T
gf2x_mul.o gf2x_mod_mul T
gf2x_mul.o gf2x_mod_sqr_in_place T
gf2x_mul_portable.o gf2x_mul_base T
gf2x_mul_portable.o gf2x_sqr T
rotate_portable.o rotate_right T
sampling.o generate_error_vector T
sampling.o generate_indices_mod_z T
sampling.o generate_sparse_rep T
sampling.o get_seeds T
sampling.o sample_uniform_r_bits T
sampling.o sample_uniform_r_bits_with_fixed_prf_context T
sampling_portable.o secure_set_bits T
sha.o sha T
utilities.o r_bits_vector_weight T

Number of similar (compiler,implementation) pairs: 8, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE aes-ni-only
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE aes-ni-only
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE aes-ni-only
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE aes-ni-only
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE aes-ni-only
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE aes-ni-only
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE aes-ni-only
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE aes-ni-only

Namespace violations

Implementation: portable
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
aes_ctr_prf.o aes_ctr_prf T
aes_ctr_prf.o init_aes_ctr_prf_state T
decode.o compute_syndrome T
decode.o decode T
error.o bike_errno B
gf2x_inv.o gf2x_mod_inv T
gf2x_ksqr_portable.o k_squaring T
gf2x_mul.o gf2x_mod_mul T
gf2x_mul.o gf2x_mod_sqr_in_place T
gf2x_mul_portable.o gf2x_mul_base T
gf2x_mul_portable.o gf2x_sqr T
rotate_portable.o rotate_right T
sampling.o generate_error_vector T
sampling.o generate_indices_mod_z T
sampling.o generate_sparse_rep T
sampling.o get_seeds T
sampling.o sample_uniform_r_bits T
sampling.o sample_uniform_r_bits_with_fixed_prf_context T
sampling_portable.o secure_set_bits T
utilities.o r_bits_vector_weight T

Number of similar (compiler,implementation) pairs: 9, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE portable
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE portable
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE portable
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE portable
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE portable
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE portable
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE portable
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE portable
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE portable