Implementation notes: amd64, cel02, crypto_core/inv3sntrup761

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_core
Primitive: inv3sntrup761
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
24333410954 0 026253 824 864avxgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
2536068214 0 020260 816 800avxgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
2558888235 0 019068 792 760avxclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
2937707327 0 019108 816 800avxgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
3191785127 0 015872 800 800avxgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
60696486676 0 022055 832 864refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
327246143064 0 015754 800 760refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
38471952738 0 011352 800 800refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
45387386902 0 012908 816 800refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
46763108699 0 011508 792 760refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
59243716842 0 012596 816 800refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130

Compiler output

Implementation: avx
Security model: constbranchindex
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x561970fe0140: v4i64 = X86ISD::VTRUNC 0x561970fe0010
try.c: 0x561970fe0010: v16i32 = vselect 0x561970fdcb20, 0x561970f74c50, 0x561970fdfee0
try.c: 0x561970fdcb20: v4i1 = X86ISD::PCMPGTM 0x561970fc57b0, 0x561970fc1340
try.c: 0x561970fc57b0: v4i64 = X86ISD::VBROADCAST 0x561970f694b0
try.c: 0x561970f694b0: i64,ch = load<LD8[%lsr.iv6971]> 0x561970ed6940, 0x561970f93050, undef:i64
try.c: 0x561970f93050: i64,ch = CopyFromReg 0x561970ed6940, Register:i64 %vreg50
try.c: 0x561970fc15a0: i64 = Register %vreg50
try.c: 0x561970f732c0: i64 = undef
try.c: 0x561970fc1340: v4i64,ch = CopyFromReg 0x561970ed6940, Register:v4i64 %vreg13
try.c: 0x561970fc6000: v4i64 = Register %vreg13
try.c: 0x561970f74c50: v16i32 = X86ISD::VBROADCAST 0x561970fc5a10
try.c: 0x561970fc5a10: i32,ch = load<LD4[ConstantPool]> 0x561970ed6940, 0x561970f68a90, undef:i64
try.c: 0x561970f68a90: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x561970fab8e0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x561970f732c0: i64 = undef
try.c: 0x561970fdfee0: v16i32 = BUILD_VECTOR Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>
try.c: 0x561970fdfdb0: i32 = Constant<0>
try.c: 0x561970fdfdb0: i32 = Constant<0>
try.c: 0x561970fdfdb0: i32 = Constant<0>
try.c: 0x561970fdfdb0: i32 = Constant<0>
try.c: 0x561970fdfdb0: i32 = Constant<0>
try.c: 0x561970fdfdb0: i32 = Constant<0>
try.c: 0x561970fdfdb0: i32 = Constant<0>
try.c: 0x561970fdfdb0: i32 = Constant<0>
try.c: 0x561970fdfdb0: i32 = Constant<0>
try.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx

Compiler output

Implementation: avx
Security model: constbranchindex
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55a6e9f6b960: v4i64 = X86ISD::VTRUNC 0x55a6e9f6b830
try.c: 0x55a6e9f6b830: v16i32 = vselect 0x55a6e9f68340, 0x55a6e9ef40a0, 0x55a6e9f6b700
try.c: 0x55a6e9f68340: v4i1 = X86ISD::PCMPGTM 0x55a6e9f5f040, 0x55a6e9f5abd0
try.c: 0x55a6e9f5f040: v4i64 = X86ISD::VBROADCAST 0x55a6e9ef4560
try.c: 0x55a6e9ef4560: i64,ch = load<LD8[%lsr.iv6971]> 0x55a6e9e58a30, 0x55a6e9f0e970, undef:i64
try.c: 0x55a6e9f0e970: i64,ch = CopyFromReg 0x55a6e9e58a30, Register:i64 %vreg50
try.c: 0x55a6e9f5ae30: i64 = Register %vreg50
try.c: 0x55a6e9f1a150: i64 = undef
try.c: 0x55a6e9f5abd0: v4i64,ch = CopyFromReg 0x55a6e9e58a30, Register:v4i64 %vreg13
try.c: 0x55a6e9f5f890: v4i64 = Register %vreg13
try.c: 0x55a6e9ef40a0: v16i32 = X86ISD::VBROADCAST 0x55a6e9f5f2a0
try.c: 0x55a6e9f5f2a0: i32,ch = load<LD4[ConstantPool]> 0x55a6e9e58a30, 0x55a6e9f09660, undef:i64
try.c: 0x55a6e9f09660: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55a6e9f1aad0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55a6e9f1a150: i64 = undef
try.c: 0x55a6e9f6b700: v16i32 = BUILD_VECTOR Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>
try.c: 0x55a6e9f6b5d0: i32 = Constant<0>
try.c: 0x55a6e9f6b5d0: i32 = Constant<0>
try.c: 0x55a6e9f6b5d0: i32 = Constant<0>
try.c: 0x55a6e9f6b5d0: i32 = Constant<0>
try.c: 0x55a6e9f6b5d0: i32 = Constant<0>
try.c: 0x55a6e9f6b5d0: i32 = Constant<0>
try.c: 0x55a6e9f6b5d0: i32 = Constant<0>
try.c: 0x55a6e9f6b5d0: i32 = Constant<0>
try.c: 0x55a6e9f6b5d0: i32 = Constant<0>
try.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx

Compiler output

Implementation: avx
Security model: constbranchindex
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x5607a814c2c0: v4i64 = X86ISD::VTRUNC 0x5607a814c190
try.c: 0x5607a814c190: v16i32 = vselect 0x5607a8121e60, 0x5607a80cf480, 0x5607a814c060
try.c: 0x5607a8121e60: v4i1 = X86ISD::PCMPGTM 0x5607a812ba50, 0x5607a81275e0
try.c: 0x5607a812ba50: v4i64 = X86ISD::VBROADCAST 0x5607a80d1840
try.c: 0x5607a80d1840: i64,ch = load<LD8[%lsr.iv6971]> 0x5607a803c940, 0x5607a8111b70, undef:i64
try.c: 0x5607a8111b70: i64,ch = CopyFromReg 0x5607a803c940, Register:i64 %vreg50
try.c: 0x5607a8127840: i64 = Register %vreg50
try.c: 0x5607a80d2d10: i64 = undef
try.c: 0x5607a81275e0: v4i64,ch = CopyFromReg 0x5607a803c940, Register:v4i64 %vreg13
try.c: 0x5607a812c2a0: v4i64 = Register %vreg13
try.c: 0x5607a80cf480: v16i32 = X86ISD::VBROADCAST 0x5607a812bcb0
try.c: 0x5607a812bcb0: i32,ch = load<LD4[ConstantPool]> 0x5607a803c940, 0x5607a80c8e60, undef:i64
try.c: 0x5607a80c8e60: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5607a81169b0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5607a80d2d10: i64 = undef
try.c: 0x5607a814c060: v16i32 = BUILD_VECTOR Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>
try.c: 0x5607a814bf30: i32 = Constant<0>
try.c: 0x5607a814bf30: i32 = Constant<0>
try.c: 0x5607a814bf30: i32 = Constant<0>
try.c: 0x5607a814bf30: i32 = Constant<0>
try.c: 0x5607a814bf30: i32 = Constant<0>
try.c: 0x5607a814bf30: i32 = Constant<0>
try.c: 0x5607a814bf30: i32 = Constant<0>
try.c: 0x5607a814bf30: i32 = Constant<0>
try.c: 0x5607a814bf30: i32 = Constant<0>
try.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx

Compiler output

Implementation: avx
Security model: constbranchindex
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
r3_recip.c: r3_recip.c:362:11: error: always_inline function '_mm256_set_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup761_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F0[0] = _mm256_set_epi32(0,0,0,0,0,0,0,1);
r3_recip.c: ^
r3_recip.c: r3_recip.c:363:11: error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup761_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F0[1] = _mm256_set1_epi32(0);
r3_recip.c: ^
r3_recip.c: r3_recip.c:364:11: error: always_inline function '_mm256_set_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup761_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F0[2] = _mm256_set_epi32(0,0,0,0,1073741824,0,1073741824,0);
r3_recip.c: ^
r3_recip.c: r3_recip.c:365:11: error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup761_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F1[0] = _mm256_set1_epi32(0);
r3_recip.c: ^
r3_recip.c: r3_recip.c:366:11: error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup761_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F1[1] = _mm256_set1_epi32(0);
r3_recip.c: ^
r3_recip.c: r3_recip.c:367:11: error: always_inline function '_mm256_set_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup761_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F1[2] = _mm256_set_epi32(0,0,0,0,1073741824,0,1073741824,0);
r3_recip.c: ^
r3_recip.c: r3_recip.c:369:11: error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup761_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: V0[0] = _mm256_set1_epi32(0);
r3_recip.c: ^
r3_recip.c: r3_recip.c:370:11: error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup761_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: V1[0] = _mm256_set1_epi32(0);
r3_recip.c: ^
r3_recip.c: r3_recip.c:371:11: error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup761_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE avx

Compiler output

Implementation: ref
Security model: constbranchindex
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55d506ca81a0: v4i64 = X86ISD::VTRUNC 0x55d506ca8070
try.c: 0x55d506ca8070: v16i32 = vselect 0x55d506c94480, 0x55d506c3a7f0, 0x55d506ca7f40
try.c: 0x55d506c94480: v4i1 = X86ISD::PCMPGTM 0x55d506c8d820, 0x55d506c893b0
try.c: 0x55d506c8d820: v4i64 = X86ISD::VBROADCAST 0x55d506c35e50
try.c: 0x55d506c35e50: i64,ch = load<LD8[%lsr.iv6971]> 0x55d506b9e950, 0x55d506c7b1f0, undef:i64
try.c: 0x55d506c7b1f0: i64,ch = CopyFromReg 0x55d506b9e950, Register:i64 %vreg50
try.c: 0x55d506c89610: i64 = Register %vreg50
try.c: 0x55d506c38e60: i64 = undef
try.c: 0x55d506c893b0: v4i64,ch = CopyFromReg 0x55d506b9e950, Register:v4i64 %vreg13
try.c: 0x55d506c8e070: v4i64 = Register %vreg13
try.c: 0x55d506c3a7f0: v16i32 = X86ISD::VBROADCAST 0x55d506c8da80
try.c: 0x55d506c8da80: i32,ch = load<LD4[ConstantPool]> 0x55d506b9e950, 0x55d506c35430, undef:i64
try.c: 0x55d506c35430: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55d506c7be90: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55d506c38e60: i64 = undef
try.c: 0x55d506ca7f40: v16i32 = BUILD_VECTOR Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>
try.c: 0x55d506ca7e10: i32 = Constant<0>
try.c: 0x55d506ca7e10: i32 = Constant<0>
try.c: 0x55d506ca7e10: i32 = Constant<0>
try.c: 0x55d506ca7e10: i32 = Constant<0>
try.c: 0x55d506ca7e10: i32 = Constant<0>
try.c: 0x55d506ca7e10: i32 = Constant<0>
try.c: 0x55d506ca7e10: i32 = Constant<0>
try.c: 0x55d506ca7e10: i32 = Constant<0>
try.c: 0x55d506ca7e10: i32 = Constant<0>
try.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref

Compiler output

Implementation: ref
Security model: constbranchindex
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55a752f60810: v4i64 = X86ISD::VTRUNC 0x55a752f606e0
try.c: 0x55a752f606e0: v16i32 = vselect 0x55a752f5d1f0, 0x55a752edb400, 0x55a752f605b0
try.c: 0x55a752f5d1f0: v4i1 = X86ISD::PCMPGTM 0x55a752f47050, 0x55a752f435e0
try.c: 0x55a752f47050: v4i64 = X86ISD::VBROADCAST 0x55a752edb8c0
try.c: 0x55a752edb8c0: i64,ch = load<LD8[%lsr.iv6971]> 0x55a752e41a30, 0x55a752ee3c80, undef:i64
try.c: 0x55a752ee3c80: i64,ch = CopyFromReg 0x55a752e41a30, Register:i64 %vreg50
try.c: 0x55a752f43840: i64 = Register %vreg50
try.c: 0x55a752ee0c10: i64 = undef
try.c: 0x55a752f435e0: v4i64,ch = CopyFromReg 0x55a752e41a30, Register:v4i64 %vreg13
try.c: 0x55a752f478a0: v4i64 = Register %vreg13
try.c: 0x55a752edb400: v16i32 = X86ISD::VBROADCAST 0x55a752f472b0
try.c: 0x55a752f472b0: i32,ch = load<LD4[ConstantPool]> 0x55a752e41a30, 0x55a752eddda0, undef:i64
try.c: 0x55a752eddda0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55a752ee1590: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55a752ee0c10: i64 = undef
try.c: 0x55a752f605b0: v16i32 = BUILD_VECTOR Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>
try.c: 0x55a752f60480: i32 = Constant<0>
try.c: 0x55a752f60480: i32 = Constant<0>
try.c: 0x55a752f60480: i32 = Constant<0>
try.c: 0x55a752f60480: i32 = Constant<0>
try.c: 0x55a752f60480: i32 = Constant<0>
try.c: 0x55a752f60480: i32 = Constant<0>
try.c: 0x55a752f60480: i32 = Constant<0>
try.c: 0x55a752f60480: i32 = Constant<0>
try.c: 0x55a752f60480: i32 = Constant<0>
try.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref

Compiler output

Implementation: ref
Security model: constbranchindex
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55ea6c15ff50: v4i64 = X86ISD::VTRUNC 0x55ea6c15fe20
try.c: 0x55ea6c15fe20: v16i32 = vselect 0x55ea6c152d50, 0x55ea6c110a80, 0x55ea6c15fcf0
try.c: 0x55ea6c152d50: v4i1 = X86ISD::PCMPGTM 0x55ea6c15a920, 0x55ea6c1564b0
try.c: 0x55ea6c15a920: v4i64 = X86ISD::VBROADCAST 0x55ea6c0fea10
try.c: 0x55ea6c0fea10: i64,ch = load<LD8[%lsr.iv6971]> 0x55ea6c06b950, 0x55ea6c14dac0, undef:i64
try.c: 0x55ea6c14dac0: i64,ch = CopyFromReg 0x55ea6c06b950, Register:i64 %vreg50
try.c: 0x55ea6c156710: i64 = Register %vreg50
try.c: 0x55ea6c10f0f0: i64 = undef
try.c: 0x55ea6c1564b0: v4i64,ch = CopyFromReg 0x55ea6c06b950, Register:v4i64 %vreg13
try.c: 0x55ea6c15b170: v4i64 = Register %vreg13
try.c: 0x55ea6c110a80: v16i32 = X86ISD::VBROADCAST 0x55ea6c15ab80
try.c: 0x55ea6c15ab80: i32,ch = load<LD4[ConstantPool]> 0x55ea6c06b950, 0x55ea6c0fdff0, undef:i64
try.c: 0x55ea6c0fdff0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55ea6c0c7d60: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55ea6c10f0f0: i64 = undef
try.c: 0x55ea6c15fcf0: v16i32 = BUILD_VECTOR Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>
try.c: 0x55ea6c15fbc0: i32 = Constant<0>
try.c: 0x55ea6c15fbc0: i32 = Constant<0>
try.c: 0x55ea6c15fbc0: i32 = Constant<0>
try.c: 0x55ea6c15fbc0: i32 = Constant<0>
try.c: 0x55ea6c15fbc0: i32 = Constant<0>
try.c: 0x55ea6c15fbc0: i32 = Constant<0>
try.c: 0x55ea6c15fbc0: i32 = Constant<0>
try.c: 0x55ea6c15fbc0: i32 = Constant<0>
try.c: 0x55ea6c15fbc0: i32 = Constant<0>
try.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref