Implementation notes: ppc32, nintendowiilinuxngx, crypto_aead/omdsha256k192n104tau128v2

Computer: nintendowiilinuxngx
Architecture: ppc32
CPU ID: unknown CPU ID
SUPERCOP version: 20191221
Operation: crypto_aead
Primitive: omdsha256k192n104tau128v2
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
35078413976 8 037489 772 788refgcc_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020010620191221
4228686428 8 027081 772 788refgcc_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020010620191221
5034363852 8 022409 764 788refgcc_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020010620191221
5253125660 8 025929 768 788refgcc_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020010620191221

Compiler output

Implementation: avx1
Security model: unknown
Compiler: gcc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
encrypt.c: /tmp/ccVFT1Rs.s: Assembler messages:
encrypt.c: /tmp/ccVFT1Rs.s:6: Error: unknown pseudo-op: `.intel_syntax'
encrypt.c: /tmp/ccVFT1Rs.s:9: Warning: alignment too large: 31 assumed
encrypt.c: /tmp/ccVFT1Rs.s:12: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccVFT1Rs.s:13: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccVFT1Rs.s:14: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccVFT1Rs.s:15: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccVFT1Rs.s:16: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccVFT1Rs.s:17: Error: operand out of range (32 is not between 0 and 31)
encrypt.c: /tmp/ccVFT1Rs.s:17: Error: missing operand
encrypt.c: /tmp/ccVFT1Rs.s:18: Error: unrecognized opcode: `shl'
encrypt.c: /tmp/ccVFT1Rs.s:19: Error: unrecognized opcode: `jz'
encrypt.c: /tmp/ccVFT1Rs.s:20: Error: missing operand
encrypt.c: /tmp/ccVFT1Rs.s:21: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccVFT1Rs.s:22: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccVFT1Rs.s:23: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccVFT1Rs.s:24: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccVFT1Rs.s:25: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccVFT1Rs.s:26: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccVFT1Rs.s:27: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccVFT1Rs.s:28: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccVFT1Rs.s:29: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccVFT1Rs.s:30: Error: unrecognized opcode: `vmovdqa'
encrypt.c: /tmp/ccVFT1Rs.s:31: Error: unrecognized opcode: `vmovdqa'
encrypt.c: /tmp/ccVFT1Rs.s:32: Error: unrecognized opcode: `vmovdqa'
encrypt.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE avx1

Compiler output

Implementation: avx1
Security model: unknown
Compiler: gcc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE
encrypt.c: /tmp/ccgY9pxz.s: Assembler messages:
encrypt.c: /tmp/ccgY9pxz.s:6: Error: unknown pseudo-op: `.intel_syntax'
encrypt.c: /tmp/ccgY9pxz.s:9: Warning: alignment too large: 31 assumed
encrypt.c: /tmp/ccgY9pxz.s:12: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccgY9pxz.s:13: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccgY9pxz.s:14: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccgY9pxz.s:15: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccgY9pxz.s:16: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccgY9pxz.s:17: Error: operand out of range (32 is not between 0 and 31)
encrypt.c: /tmp/ccgY9pxz.s:17: Error: missing operand
encrypt.c: /tmp/ccgY9pxz.s:18: Error: unrecognized opcode: `shl'
encrypt.c: /tmp/ccgY9pxz.s:19: Error: unrecognized opcode: `jz'
encrypt.c: /tmp/ccgY9pxz.s:20: Error: missing operand
encrypt.c: /tmp/ccgY9pxz.s:21: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccgY9pxz.s:22: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccgY9pxz.s:23: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccgY9pxz.s:24: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccgY9pxz.s:25: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccgY9pxz.s:26: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccgY9pxz.s:27: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccgY9pxz.s:28: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccgY9pxz.s:29: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccgY9pxz.s:30: Error: unrecognized opcode: `vmovdqa'
encrypt.c: /tmp/ccgY9pxz.s:31: Error: unrecognized opcode: `vmovdqa'
encrypt.c: /tmp/ccgY9pxz.s:32: Error: unrecognized opcode: `vmovdqa'
encrypt.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE avx1

Compiler output

Implementation: avx1
Security model: unknown
Compiler: gcc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE
encrypt.c: /tmp/ccj8csdm.s: Assembler messages:
encrypt.c: /tmp/ccj8csdm.s:6: Error: unknown pseudo-op: `.intel_syntax'
encrypt.c: /tmp/ccj8csdm.s:9: Warning: alignment too large: 31 assumed
encrypt.c: /tmp/ccj8csdm.s:12: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccj8csdm.s:13: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccj8csdm.s:14: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccj8csdm.s:15: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccj8csdm.s:16: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccj8csdm.s:17: Error: operand out of range (32 is not between 0 and 31)
encrypt.c: /tmp/ccj8csdm.s:17: Error: missing operand
encrypt.c: /tmp/ccj8csdm.s:18: Error: unrecognized opcode: `shl'
encrypt.c: /tmp/ccj8csdm.s:19: Error: unrecognized opcode: `jz'
encrypt.c: /tmp/ccj8csdm.s:20: Error: missing operand
encrypt.c: /tmp/ccj8csdm.s:21: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccj8csdm.s:22: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccj8csdm.s:23: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccj8csdm.s:24: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccj8csdm.s:25: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccj8csdm.s:26: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccj8csdm.s:27: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccj8csdm.s:28: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccj8csdm.s:29: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccj8csdm.s:30: Error: unrecognized opcode: `vmovdqa'
encrypt.c: /tmp/ccj8csdm.s:31: Error: unrecognized opcode: `vmovdqa'
encrypt.c: /tmp/ccj8csdm.s:32: Error: unrecognized opcode: `vmovdqa'
encrypt.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE avx1

Compiler output

Implementation: avx1
Security model: unknown
Compiler: gcc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE
encrypt.c: /tmp/ccDGBxHq.s: Assembler messages:
encrypt.c: /tmp/ccDGBxHq.s:6: Error: unknown pseudo-op: `.intel_syntax'
encrypt.c: /tmp/ccDGBxHq.s:9: Warning: alignment too large: 31 assumed
encrypt.c: /tmp/ccDGBxHq.s:12: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccDGBxHq.s:13: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccDGBxHq.s:14: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccDGBxHq.s:15: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccDGBxHq.s:16: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccDGBxHq.s:17: Error: operand out of range (32 is not between 0 and 31)
encrypt.c: /tmp/ccDGBxHq.s:17: Error: missing operand
encrypt.c: /tmp/ccDGBxHq.s:18: Error: unrecognized opcode: `shl'
encrypt.c: /tmp/ccDGBxHq.s:19: Error: unrecognized opcode: `jz'
encrypt.c: /tmp/ccDGBxHq.s:20: Error: missing operand
encrypt.c: /tmp/ccDGBxHq.s:21: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccDGBxHq.s:22: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccDGBxHq.s:23: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccDGBxHq.s:24: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccDGBxHq.s:25: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccDGBxHq.s:26: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccDGBxHq.s:27: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccDGBxHq.s:28: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccDGBxHq.s:29: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccDGBxHq.s:30: Error: unrecognized opcode: `vmovdqa'
encrypt.c: /tmp/ccDGBxHq.s:31: Error: unrecognized opcode: `vmovdqa'
encrypt.c: /tmp/ccDGBxHq.s:32: Error: unrecognized opcode: `vmovdqa'
encrypt.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE avx1

Compiler output

Implementation: sse4
Security model: unknown
Compiler: gcc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
encrypt.c: /tmp/ccZyjpmQ.s: Assembler messages:
encrypt.c: /tmp/ccZyjpmQ.s:6: Error: unknown pseudo-op: `.intel_syntax'
encrypt.c: /tmp/ccZyjpmQ.s:9: Warning: alignment too large: 31 assumed
encrypt.c: /tmp/ccZyjpmQ.s:11: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccZyjpmQ.s:12: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccZyjpmQ.s:13: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccZyjpmQ.s:14: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccZyjpmQ.s:15: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccZyjpmQ.s:16: Error: operand out of range (32 is not between 0 and 31)
encrypt.c: /tmp/ccZyjpmQ.s:16: Error: missing operand
encrypt.c: /tmp/ccZyjpmQ.s:17: Error: unrecognized opcode: `shl'
encrypt.c: /tmp/ccZyjpmQ.s:18: Error: unrecognized opcode: `jz'
encrypt.c: /tmp/ccZyjpmQ.s:19: Error: missing operand
encrypt.c: /tmp/ccZyjpmQ.s:20: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccZyjpmQ.s:21: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccZyjpmQ.s:22: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccZyjpmQ.s:23: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccZyjpmQ.s:24: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccZyjpmQ.s:25: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccZyjpmQ.s:26: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccZyjpmQ.s:27: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccZyjpmQ.s:28: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccZyjpmQ.s:29: Error: unrecognized opcode: `movdqa'
encrypt.c: /tmp/ccZyjpmQ.s:30: Error: unrecognized opcode: `movdqa'
encrypt.c: /tmp/ccZyjpmQ.s:31: Error: unrecognized opcode: `movdqa'
encrypt.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE sse4

Compiler output

Implementation: sse4
Security model: unknown
Compiler: gcc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE
encrypt.c: /tmp/ccMF4p4L.s: Assembler messages:
encrypt.c: /tmp/ccMF4p4L.s:6: Error: unknown pseudo-op: `.intel_syntax'
encrypt.c: /tmp/ccMF4p4L.s:9: Warning: alignment too large: 31 assumed
encrypt.c: /tmp/ccMF4p4L.s:11: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccMF4p4L.s:12: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccMF4p4L.s:13: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccMF4p4L.s:14: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccMF4p4L.s:15: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccMF4p4L.s:16: Error: operand out of range (32 is not between 0 and 31)
encrypt.c: /tmp/ccMF4p4L.s:16: Error: missing operand
encrypt.c: /tmp/ccMF4p4L.s:17: Error: unrecognized opcode: `shl'
encrypt.c: /tmp/ccMF4p4L.s:18: Error: unrecognized opcode: `jz'
encrypt.c: /tmp/ccMF4p4L.s:19: Error: missing operand
encrypt.c: /tmp/ccMF4p4L.s:20: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccMF4p4L.s:21: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccMF4p4L.s:22: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccMF4p4L.s:23: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccMF4p4L.s:24: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccMF4p4L.s:25: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccMF4p4L.s:26: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccMF4p4L.s:27: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccMF4p4L.s:28: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccMF4p4L.s:29: Error: unrecognized opcode: `movdqa'
encrypt.c: /tmp/ccMF4p4L.s:30: Error: unrecognized opcode: `movdqa'
encrypt.c: /tmp/ccMF4p4L.s:31: Error: unrecognized opcode: `movdqa'
encrypt.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE sse4

Compiler output

Implementation: sse4
Security model: unknown
Compiler: gcc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE
encrypt.c: /tmp/ccWfA8vS.s: Assembler messages:
encrypt.c: /tmp/ccWfA8vS.s:6: Error: unknown pseudo-op: `.intel_syntax'
encrypt.c: /tmp/ccWfA8vS.s:9: Warning: alignment too large: 31 assumed
encrypt.c: /tmp/ccWfA8vS.s:11: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccWfA8vS.s:12: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccWfA8vS.s:13: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccWfA8vS.s:14: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccWfA8vS.s:15: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccWfA8vS.s:16: Error: operand out of range (32 is not between 0 and 31)
encrypt.c: /tmp/ccWfA8vS.s:16: Error: missing operand
encrypt.c: /tmp/ccWfA8vS.s:17: Error: unrecognized opcode: `shl'
encrypt.c: /tmp/ccWfA8vS.s:18: Error: unrecognized opcode: `jz'
encrypt.c: /tmp/ccWfA8vS.s:19: Error: missing operand
encrypt.c: /tmp/ccWfA8vS.s:20: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccWfA8vS.s:21: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccWfA8vS.s:22: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccWfA8vS.s:23: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccWfA8vS.s:24: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccWfA8vS.s:25: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccWfA8vS.s:26: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccWfA8vS.s:27: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccWfA8vS.s:28: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccWfA8vS.s:29: Error: unrecognized opcode: `movdqa'
encrypt.c: /tmp/ccWfA8vS.s:30: Error: unrecognized opcode: `movdqa'
encrypt.c: /tmp/ccWfA8vS.s:31: Error: unrecognized opcode: `movdqa'
encrypt.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE sse4

Compiler output

Implementation: sse4
Security model: unknown
Compiler: gcc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE
encrypt.c: /tmp/ccdsO4yJ.s: Assembler messages:
encrypt.c: /tmp/ccdsO4yJ.s:6: Error: unknown pseudo-op: `.intel_syntax'
encrypt.c: /tmp/ccdsO4yJ.s:9: Warning: alignment too large: 31 assumed
encrypt.c: /tmp/ccdsO4yJ.s:11: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccdsO4yJ.s:12: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccdsO4yJ.s:13: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccdsO4yJ.s:14: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccdsO4yJ.s:15: Error: unrecognized opcode: `push'
encrypt.c: /tmp/ccdsO4yJ.s:16: Error: operand out of range (32 is not between 0 and 31)
encrypt.c: /tmp/ccdsO4yJ.s:16: Error: missing operand
encrypt.c: /tmp/ccdsO4yJ.s:17: Error: unrecognized opcode: `shl'
encrypt.c: /tmp/ccdsO4yJ.s:18: Error: unrecognized opcode: `jz'
encrypt.c: /tmp/ccdsO4yJ.s:19: Error: missing operand
encrypt.c: /tmp/ccdsO4yJ.s:20: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccdsO4yJ.s:21: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccdsO4yJ.s:22: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccdsO4yJ.s:23: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccdsO4yJ.s:24: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccdsO4yJ.s:25: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccdsO4yJ.s:26: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccdsO4yJ.s:27: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccdsO4yJ.s:28: Error: unrecognized opcode: `mov'
encrypt.c: /tmp/ccdsO4yJ.s:29: Error: unrecognized opcode: `movdqa'
encrypt.c: /tmp/ccdsO4yJ.s:30: Error: unrecognized opcode: `movdqa'
encrypt.c: /tmp/ccdsO4yJ.s:31: Error: unrecognized opcode: `movdqa'
encrypt.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE sse4

Namespace violations

Implementation: ref
Security model: unknown
Compiler: gcc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
omdsha256.o calc_L_i T
omdsha256.o double_block T
omdsha256.o final_masking_associated_data T
omdsha256.o final_masking_message T
omdsha256.o hash T
omdsha256.o increment_masking_associated_data T
omdsha256.o increment_masking_message T
omdsha256.o key_func T
omdsha256.o l2b T
omdsha256.o ntz T
omdsha256.o omdsha256_process T
omdsha256.o triple_block T
omdsha256.o xor_block T
sha256.o sha256_comp T

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