Implementation notes: amd64, utrecht, crypto_hash/blake2b

Computer: utrecht
Architecture: amd64
CPU ID: GenuineIntel-000006fb-bfebfbff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: blake2b
TimeImplementationCompilerBenchmark dateSUPERCOP version
11736refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
12375regsgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
12456regsgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731
12483regsgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731
12690regsgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
17280refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
17631xmmgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731
17685xmmgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016080420160731
17685xmmgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731
17820xmmgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016080420160731
21078refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016080420160731
21294refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016080420160731

Test failure

Implementation: crypto_hash/blake2b/avxicc
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
error 111

Number of similar (compiler,implementation) pairs: 16, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv avxicc moon/avx/64 moon/avx2/64 moon/xop/64
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv avxicc moon/avx/64 moon/avx2/64 moon/xop/64
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv avxicc moon/avx/64 moon/avx2/64 moon/xop/64
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv avxicc moon/avx/64 moon/avx2/64 moon/xop/64

Compiler output

Implementation: crypto_hash/blake2b/moon/neon/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:3: Error: no such architecture: `armv7'
blake2b.S: blake2b.S:3: Error: junk at end of line, first unrecognized character is `-'
blake2b.S: blake2b.S:4: Error: unknown pseudo-op: `.fpu'
blake2b.S: blake2b.S:9: Error: no such instruction: `vstmdb sp!,{q4-q7}'
blake2b.S: blake2b.S:10: Error: no such instruction: `stmfd sp!,{r4-r12,r14}'
blake2b.S: blake2b.S:11: Error: too many memory references for `mov'
blake2b.S: blake2b.S:12: Error: too many memory references for `sub'
blake2b.S: blake2b.S:13: Error: too many memory references for `and'
blake2b.S: blake2b.S:14: Error: invalid char '[' beginning operand 2 `[sp'
blake2b.S: blake2b.S:15: Error: too many memory references for `sub'
blake2b.S: blake2b.S:16: Error: expecting operand after ','; got nothing
blake2b.S: blake2b.S:17: Error: expecting operand after ','; got nothing
blake2b.S: blake2b.S:18: Error: no such instruction: `bhs blake2b_blocks_neon_use128'
blake2b.S: blake2b.S:19: Error: too many memory references for `mov'
blake2b.S: blake2b.S:21: Error: no such instruction: `ldr r6,[r0,'
blake2b.S: blake2b.S:22: Error: no such instruction: `ldr r7,[r0,'
blake2b.S: blake2b.S:23: Error: too many memory references for `and'
blake2b.S: blake2b.S:24: Error: no such instruction: `beq blake2b_blocks_neon_nocopymessage'
blake2b.S: blake2b.S:25: Error: expecting operand after ','; got nothing
blake2b.S: blake2b.S:26: Error: no such instruction: `beq blake2b_blocks_neon_nocopymessage'
blake2b.S: blake2b.S:27: Error: no such instruction: `veor q0,q0,q0'
blake2b.S: blake2b.S:28: Error: no such instruction: `veor q1,q1,q1'
blake2b.S: blake2b.S:29: Error: no such instruction: `vst1.64 {q0,q1},[sp,:256]!'
blake2b.S: blake2b.S:30: Error: no such instruction: `vst1.64 {q0,q1},[sp,:256]!'
blake2b.S: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv moon/neon/32
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv moon/neon/32
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv moon/neon/32
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv moon/neon/32

Compiler output

Implementation: crypto_hash/blake2b/moon/armv6/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:5: Error: no such architecture: `armv5'
blake2b.S: blake2b.S:34: Error: no such instruction: `stmfd sp!,{r4-r12,r14}'
blake2b.S: blake2b.S:35: Error: too many memory references for `sub'
blake2b.S: blake2b.S:36: Error: expecting operand after ','; got nothing
blake2b.S: blake2b.S:37: Error: expecting operand after ','; got nothing
blake2b.S: blake2b.S:38: Error: no such instruction: `bhs blake2b_blocks_armv6_use128'
blake2b.S: blake2b.S:39: Error: too many memory references for `mov'
blake2b.S: blake2b.S:41: Error: too many memory references for `mov'
blake2b.S: blake2b.S:42: Error: invalid char '[' beginning operand 2 `[sp'
blake2b.S: blake2b.S:43: Error: invalid char '[' beginning operand 2 `[sp'
blake2b.S: blake2b.S:44: Error: invalid char '[' beginning operand 2 `[sp'
blake2b.S: blake2b.S:45: Error: invalid char '[' beginning operand 2 `[sp'
blake2b.S: blake2b.S:46: Error: no such instruction: `ldr r4,[r0,'
blake2b.S: blake2b.S:47: Error: no such instruction: `ldr r5,[r0,'
blake2b.S: blake2b.S:48: Error: too many memory references for `and'
blake2b.S: blake2b.S:49: Error: no such instruction: `beq blake2b_blocks_armv6_nocopymessage'
blake2b.S: blake2b.S:50: Error: expecting operand after ','; got nothing
blake2b.S: blake2b.S:51: Error: no such instruction: `beq blake2b_blocks_armv6_nocopymessage'
blake2b.S: blake2b.S:52: Error: no such instruction: `eor r4,r4,r4'
blake2b.S: blake2b.S:53: Error: no such instruction: `eor r5,r5,r5'
blake2b.S: blake2b.S:54: Error: no such instruction: `eor r6,r6,r6'
blake2b.S: blake2b.S:55: Error: no such instruction: `eor r7,r7,r7'
blake2b.S: blake2b.S:56: Error: no such instruction: `eor r8,r8,r8'
blake2b.S: blake2b.S:57: Error: no such instruction: `eor r9,r9,r9'
blake2b.S: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv moon/armv6/32
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv moon/armv6/32
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv moon/armv6/32
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv moon/armv6/32

Compiler output

Implementation: crypto_hash/blake2b/moon/avx2/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:6: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:9: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:10: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:11: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:14: Error: incorrect register `%ecx' used with `q' suffix
blake2b.S: blake2b.S:15: Error: incorrect register `%eax' used with `q' suffix
blake2b.S: blake2b.S:248: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:249: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:250: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:252: Error: invalid instruction suffix for `pop'

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

Compiler output

Implementation: crypto_hash/blake2b/moon/ssse3/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:6: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:9: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:10: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:11: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:16: Error: incorrect register `%ebx' used with `q' suffix
blake2b.S: blake2b.S:19: Error: incorrect register `%ebx' used with `q' suffix
blake2b.S: blake2b.S:1566: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:1567: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:1568: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:1570: Error: invalid instruction suffix for `pop'

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv moon/ssse3/32
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv moon/ssse3/32
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv moon/ssse3/32
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv moon/ssse3/32

Compiler output

Implementation: crypto_hash/blake2b/moon/avx/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:6: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:9: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:10: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:11: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:16: Error: incorrect register `%ecx' used with `q' suffix
blake2b.S: blake2b.S:19: Error: incorrect register `%ecx' used with `q' suffix
blake2b.S: blake2b.S:927: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:928: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:929: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:931: Error: invalid instruction suffix for `pop'

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv moon/avx/32
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv moon/avx/32
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv moon/avx/32
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv moon/avx/32

Compiler output

Implementation: crypto_hash/blake2b/moon/sse2/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:6: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:9: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:10: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:11: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:16: Error: incorrect register `%esi' used with `q' suffix
blake2b.S: blake2b.S:1966: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:1967: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:1968: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:1970: Error: invalid instruction suffix for `pop'

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv moon/sse2/32
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv moon/sse2/32
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv moon/sse2/32
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv moon/sse2/32

Compiler output

Implementation: crypto_hash/blake2b/moon/xop/32
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.S: blake2b.S: Assembler messages:
blake2b.S: blake2b.S:8: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:9: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:11: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:12: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:13: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:14: Error: incorrect register `%ebx' used with `q' suffix
blake2b.S: blake2b.S:15: Error: invalid instruction suffix for `push'
blake2b.S: blake2b.S:287: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:288: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:289: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:290: Error: invalid instruction suffix for `pop'
blake2b.S: blake2b.S:291: Error: invalid instruction suffix for `pop'

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv moon/xop/32
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv moon/xop/32
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv moon/xop/32
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv moon/xop/32

Compiler output

Implementation: crypto_hash/blake2b/avx2-1
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.c: blake2b.c: In function 'crypto_hash_blake2b_avx2_1':
blake2b.c: blake2b.c:37:3: error: unknown type name '__m256i'
blake2b.c: const __m256i r16 = _mm256_setr_epi8( 2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9,
blake2b.c: ^
blake2b.c: blake2b.c:39:3: error: unknown type name '__m256i'
blake2b.c: const __m256i r24 = _mm256_setr_epi8( 3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10,
blake2b.c: ^
blake2b.c: blake2b.c:42:3: error: unknown type name '__m256i'
blake2b.c: __m256i ymm0;
blake2b.c: ^
blake2b.c: blake2b.c:43:3: error: unknown type name '__m256i'
blake2b.c: __m256i ymm1;
blake2b.c: ^
blake2b.c: blake2b.c:44:3: error: unknown type name '__m256i'
blake2b.c: __m256i ymm2;
blake2b.c: ^
blake2b.c: blake2b.c:45:3: error: unknown type name '__m256i'
blake2b.c: __m256i ymm3;
blake2b.c: ^
blake2b.c: blake2b.c:50:3: error: unknown type name '__m256i'
blake2b.c: __m256i b0;
blake2b.c: ^
blake2b.c: blake2b.c:90:5: error: unknown type name '__m256i'
blake2b.c: const __m256i iv0 = ymm0;
blake2b.c: ^
blake2b.c: ...

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

Compiler output

Implementation: crypto_hash/blake2b/avx2-2
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.c: blake2b.c: In function 'crypto_hash_blake2b_avx2_2':
blake2b.c: blake2b.c:38:3: error: unknown type name '__m256i'
blake2b.c: const __m256i r16 = _mm256_setr_epi8( 2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9,
blake2b.c: ^
blake2b.c: blake2b.c:40:3: error: unknown type name '__m256i'
blake2b.c: const __m256i r24 = _mm256_setr_epi8( 3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10,
blake2b.c: ^
blake2b.c: blake2b.c:43:3: error: unknown type name '__m256i'
blake2b.c: __m256i ymm0;
blake2b.c: ^
blake2b.c: blake2b.c:44:3: error: unknown type name '__m256i'
blake2b.c: __m256i ymm1;
blake2b.c: ^
blake2b.c: blake2b.c:45:3: error: unknown type name '__m256i'
blake2b.c: __m256i ymm2;
blake2b.c: ^
blake2b.c: blake2b.c:46:3: error: unknown type name '__m256i'
blake2b.c: __m256i ymm3;
blake2b.c: ^
blake2b.c: blake2b.c:49:3: error: unknown type name '__m256i'
blake2b.c: __m256i t0, t1;
blake2b.c: ^
blake2b.c: blake2b.c:51:3: error: unknown type name '__m256i'
blake2b.c: __m256i b0;
blake2b.c: ^
blake2b.c: ...

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

Compiler output

Implementation: crypto_hash/blake2b/avx2-3
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.c: blake2b.c: In function 'crypto_hash_blake2b_avx2_3':
blake2b.c: blake2b.c:38:3: error: unknown type name '__m256i'
blake2b.c: const __m256i r16 = _mm256_setr_epi8( 2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9,
blake2b.c: ^
blake2b.c: blake2b.c:40:3: error: unknown type name '__m256i'
blake2b.c: const __m256i r24 = _mm256_setr_epi8( 3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10,
blake2b.c: ^
blake2b.c: blake2b.c:43:3: error: unknown type name '__m256i'
blake2b.c: __m256i ymm0;
blake2b.c: ^
blake2b.c: blake2b.c:44:3: error: unknown type name '__m256i'
blake2b.c: __m256i ymm1;
blake2b.c: ^
blake2b.c: blake2b.c:45:3: error: unknown type name '__m256i'
blake2b.c: __m256i ymm2;
blake2b.c: ^
blake2b.c: blake2b.c:46:3: error: unknown type name '__m256i'
blake2b.c: __m256i ymm3;
blake2b.c: ^
blake2b.c: blake2b.c:51:3: error: unknown type name '__m256i'
blake2b.c: __m256i b0;
blake2b.c: ^
blake2b.c: blake2b.c:91:5: error: unknown type name '__m256i'
blake2b.c: const __m256i iv0 = ymm0;
blake2b.c: ^
blake2b.c: ...

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

Compiler output

Implementation: crypto_hash/blake2b/ymm
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
blake2b.c: blake2b.c:15:2: error: #error "This code requires at least AVX."
blake2b.c: #error "This code requires at least AVX."
blake2b.c: ^
blake2b.c: blake2b.c: In function 'crypto_hash_blake2b_ymm':
blake2b.c: blake2b.c:140:5: error: unknown type name '__m256i'
blake2b.c: const __m256i m0 = _mm256_loadu_si256((__m256i*)(in + 00));
blake2b.c: ^
blake2b.c: blake2b.c:140:44: error: '__m256i' undeclared (first use in this function)
blake2b.c: const __m256i m0 = _mm256_loadu_si256((__m256i*)(in + 00));
blake2b.c: ^
blake2b.c: blake2b.c:140:44: note: each undeclared identifier is reported only once for each function it appears in
blake2b.c: blake2b.c:140:52: error: expected expression before ')' token
blake2b.c: const __m256i m0 = _mm256_loadu_si256((__m256i*)(in + 00));
blake2b.c: ^
blake2b.c: blake2b.c:141:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'm1'
blake2b.c: const __m256i m1 = _mm256_loadu_si256((__m256i*)(in + 32));
blake2b.c: ^
blake2b.c: blake2b.c:141:19: error: 'm1' undeclared (first use in this function)
blake2b.c: blake2b.c:141:52: error: expected expression before ')' token
blake2b.c: const __m256i m1 = _mm256_loadu_si256((__m256i*)(in + 32));
blake2b.c: ^
blake2b.c: blake2b.c:142:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'm2'
blake2b.c: const __m256i m2 = _mm256_loadu_si256((__m256i*)(in + 64));
blake2b.c: ^
blake2b.c: blake2b.c:142:19: error: 'm2' undeclared (first use in this function)
blake2b.c: ...

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