Implementation notes: amd64, hydra2, crypto_stream/cryptmtv3

Computer: hydra2
Architecture: amd64
CPU ID: GenuineIntel-000206c2-bfebfbff
SUPERCOP version: 20141014
Operation: crypto_stream
Primitive: cryptmtv3
TimeImplementationCompilerBenchmark dateSUPERCOP version
6068e/v3clang -O3 -fomit-frame-pointer2014071220140622
6960e/v3clang -O3 -fwrapv -mavx2 -fpolly -funroll-loops -fvectorize -fslp-vectorize -fslp-vectorize-aggressive -fomit-frame-pointer2014071220140622
6984e/v3clang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fomit-frame-pointer2014101420141014
6984e/v3clang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fpolly -funroll-loops -fvectorize -fslp-vectorize -fslp-vectorize-aggressive -fomit-frame-pointer2014101420141014
6984e/v3clang -O3 -fwrapv -mavx2 -fomit-frame-pointer2014071220140622
6988e/v3gcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer2014052920140525
6996e/v3clang -O3 -fwrapv -march=native -fpolly -funroll-loops -fvectorize -fslp-vectorize -fslp-vectorize-aggressive -fomit-frame-pointer2014071220140622
6996e/v3gcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer2014052920140525
7000e/v3clang -O3 -fwrapv -march=native -fomit-frame-pointer2014071220140622
7012e/v3gcc -m64 -O -fomit-frame-pointer2014052920140525
7016e/v3gcc -m64 -march=core2 -O -fomit-frame-pointer2014052920140525
7020e/v3gcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer2014052920140525
7032e/v3gcc -funroll-loops -O -fomit-frame-pointer2014052920140525
7032e/v3gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer2014052920140525
7032e/v3gcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer2014052920140525
7040e/v3gcc -funroll-loops -march=k8 -O -fomit-frame-pointer2014052920140525
7048e/v3gcc -funroll-loops -march=barcelona -O -fomit-frame-pointer2014052920140525
7060e/v3gcc -m64 -march=corei7 -O -fomit-frame-pointer2014052920140525
7064e/v3gcc -O -fomit-frame-pointer2014052920140525
7064e/v3gcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer2014052920140525
7064e/v3gcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer2014052920140525
7064e/v3gcc -m64 -march=native -mtune=native -O -fomit-frame-pointer2014052920140525
7068e/v3gcc -march=nocona -O -fomit-frame-pointer2014052920140525
7072e/v3gcc -funroll-loops -m64 -O -fomit-frame-pointer2014052920140525
7080e/v3gcc -fno-schedule-insns -O -fomit-frame-pointer2014052920140525
7080e/v3gcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer2014052920140525
7092e/v3gcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer2014052920140525
7096e/v3gcc -m64 -march=barcelona -O -fomit-frame-pointer2014052920140525
7100e/v3gcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer2014052920140525
7100e/v3gcc -march=barcelona -O3 -fomit-frame-pointer2014052920140525
7108e/v3gcc -m64 -march=corei7 -O2 -fomit-frame-pointer2014052920140525
7116e/v3gcc -m64 -march=core2 -O2 -fomit-frame-pointer2014052920140525
7120e/v3gcc -funroll-loops -march=nocona -O -fomit-frame-pointer2014052920140525
7124e/v3gcc -m64 -march=barcelona -O3 -fomit-frame-pointer2014052920140525
7124e/v3gcc -march=barcelona -O2 -fomit-frame-pointer2014052920140525
7128e/v3gcc -march=barcelona -O -fomit-frame-pointer2014052920140525
7132e/v3gcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer2014052920140525
7140e/v3gcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer2014052920140525
7144e/v3gcc -m64 -march=barcelona -O2 -fomit-frame-pointer2014052920140525
7148e/v3gcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer2014052920140525
7148e/v3gcc -m64 -march=corei7 -O3 -fomit-frame-pointer2014052920140525
7148e/v3gcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2014052920140525
7168e/v3gcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer2014052920140525
7172e/v3gcc -march=k8 -O -fomit-frame-pointer2014052920140525
7176e/v3gcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer2014052920140525
7180e/v3gcc -O2 -fomit-frame-pointer2014052920140525
7188e/v3gcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer2014052920140525
7192e/v3gcc -m64 -march=k8 -O2 -fomit-frame-pointer2014052920140525
7192e/v3gcc -m64 -march=k8 -O -fomit-frame-pointer2014052920140525
7200e/v3gcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer2014052920140525
7204e/v3gcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2014052920140525
7208e/v3gcc -m64 -march=nocona -O -fomit-frame-pointer2014052920140525
7216e/v3gcc -fno-schedule-insns -O3 -fomit-frame-pointer2014052920140525
7220e/v3gcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer2014052920140525
7228e/v3gcc -O3 -fomit-frame-pointer2014052920140525
7228e/v3gcc -fno-schedule-insns -O2 -fomit-frame-pointer2014052920140525
7228e/v3gcc -march=k8 -O2 -fomit-frame-pointer2014052920140525
7248e/v3gcc -m64 -march=core2 -O3 -fomit-frame-pointer2014052920140525
7256e/v3gcc -march=k8 -O3 -fomit-frame-pointer2014052920140525
7264e/v3gcc -m64 -O3 -fomit-frame-pointer2014052920140525
7264e/v3gcc -m64 -march=k8 -O3 -fomit-frame-pointer2014052920140525
7284e/v3gcc -march=nocona -O3 -fomit-frame-pointer2014052920140525
7312e/v3gcc -m64 -march=nocona -O2 -fomit-frame-pointer2014052920140525
7320e/v3gcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer2014052920140525
7328e/v3gcc -m64 -O2 -fomit-frame-pointer2014052920140525
7340e/v3gcc -march=nocona -O2 -fomit-frame-pointer2014052920140525
7360e/v3gcc -m64 -march=nocona -O3 -fomit-frame-pointer2014052920140525
7376e/v3gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer2014052920140525
7392e/v3gcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer2014052920140525
7400e/v3gcc -funroll-loops -O2 -fomit-frame-pointer2014052920140525
7408e/v3gcc -funroll-loops -m64 -O3 -fomit-frame-pointer2014052920140525
7412e/v3gcc -funroll-loops -O3 -fomit-frame-pointer2014052920140525
7420e/v3gcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer2014052920140525
7456e/v3gcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer2014052920140525
7504e/v3gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer2014052920140525
7504e/v3gcc -funroll-loops -m64 -O2 -fomit-frame-pointer2014052920140525
8224e/v3gcc -funroll-loops -march=nocona -Os -fomit-frame-pointer2014052920140525
8260e/v3gcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer2014052920140525
8316e/v3gcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer2014052920140525
8320e/v3gcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer2014052920140525
8380e/v3gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer2014052920140525
8400e/v3gcc -funroll-loops -Os -fomit-frame-pointer2014052920140525
8412e/v3gcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer2014052920140525
8420e/v3gcc -funroll-loops -m64 -Os -fomit-frame-pointer2014052920140525
8444e/v3gcc -funroll-loops -march=k8 -Os -fomit-frame-pointer2014052920140525
8472e/v3gcc -m64 -march=core2 -Os -fomit-frame-pointer2014052920140525
8472e/v3gcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer2014052920140525
8472e/v3gcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer2014052920140525
8472e/v3gcc -m64 -march=corei7 -Os -fomit-frame-pointer2014052920140525
8472e/v3gcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer2014052920140525
8480e/v3gcc -m64 -march=barcelona -Os -fomit-frame-pointer2014052920140525
8492e/v3gcc -march=barcelona -Os -fomit-frame-pointer2014052920140525
8580e/v3gcc -march=nocona -Os -fomit-frame-pointer2014052920140525
8588e/v3gcc -m64 -march=nocona -Os -fomit-frame-pointer2014052920140525
8628e/v3gcc -fno-schedule-insns -Os -fomit-frame-pointer2014052920140525
8628e/v3gcc -march=k8 -Os -fomit-frame-pointer2014052920140525
8648e/v3gcc -m64 -Os -fomit-frame-pointer2014052920140525
8652e/v3gcc -m64 -march=k8 -Os -fomit-frame-pointer2014052920140525
8664e/v3gcc -Os -fomit-frame-pointer2014052920140525
47820e/v3gcc -funroll-loops2014052920140525
48064e/v3cc2014052920140525
48084e/v3gcc2014052920140525

Compiler output

Implementation: crypto_stream/cryptmtv3/e/v3
Compiler: clang -O3 -fomit-frame-pointer
cryptmt-v3.c: In file included from cryptmt-v3.c:1:
cryptmt-v3.c: ./e/cryptmt-v3.c:189:18: warning: array index of '156' indexes past the end of an array (that contains 156 elements) [-Warray-bounds]
cryptmt-v3.c: do_recursion(ps->gt;sfmt[N], ps->gt;sfmt[POS1], ps->gt;sfmt[N - 1]);
cryptmt-v3.c: ^ ~
cryptmt-v3.c: ./e/cryptmt-v3.c:25:5: note: array 'sfmt' declared here
cryptmt-v3.c: u32 sfmt[N][4];
cryptmt-v3.c: ^
cryptmt-v3.c: ./e/cryptmt-v3.c:403:27: warning: argument to 'sizeof' in 'memset' call is the same expression as the destination; did you mean to dereference it? [-Wsizeof-pointer-memaccess]
cryptmt-v3.c: memset(ctx, 0, sizeof(ctx));
cryptmt-v3.c: ~~~ ^~~
cryptmt-v3.c: 2 warnings generated.
try.c: try-anything.c:110:19: warning: if statement has empty body [-Wempty-body]
try.c: ;
try.c: ^
try.c: 1 warning generated.
try.c: try-anything.c:110:19: warning: if statement has empty body [-Wempty-body]
try.c: ;
try.c: ^
try.c: 1 warning generated.

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer e/v3
clang -O3 -fwrapv -march=native -fomit-frame-pointer e/v3

Compiler output

Implementation: crypto_stream/cryptmtv3/e/v3
Compiler: clang -O3 -fwrapv -march=native -fpolly -funroll-loops -fvectorize -fslp-vectorize -fslp-vectorize-aggressive -fomit-frame-pointer
api.c: clang: warning: argument unused during compilation: '-fpolly'
api.c: clang: warning: argument unused during compilation: '-fvectorize'
api.c: clang: warning: argument unused during compilation: '-fslp-vectorize'
api.c: clang: warning: argument unused during compilation: '-fslp-vectorize-aggressive'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-fpolly'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-fvectorize'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-fslp-vectorize'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-fslp-vectorize-aggressive'
cryptmt-v3.c: In file included from cryptmt-v3.c:1:
cryptmt-v3.c: ./e/cryptmt-v3.c:189:18: warning: array index of '156' indexes past the end of an array (that contains 156 elements) [-Warray-bounds]
cryptmt-v3.c: do_recursion(ps->gt;sfmt[N], ps->gt;sfmt[POS1], ps->gt;sfmt[N - 1]);
cryptmt-v3.c: ^ ~
cryptmt-v3.c: ./e/cryptmt-v3.c:25:5: note: array 'sfmt' declared here
cryptmt-v3.c: u32 sfmt[N][4];
cryptmt-v3.c: ^
cryptmt-v3.c: ./e/cryptmt-v3.c:403:27: warning: argument to 'sizeof' in 'memset' call is the same expression as the destination; did you mean to dereference it? [-Wsizeof-pointer-memaccess]
cryptmt-v3.c: memset(ctx, 0, sizeof(ctx));
cryptmt-v3.c: ~~~ ^~~
cryptmt-v3.c: 2 warnings generated.
try.c: try-anything.c:110:19: warning: if statement has empty body [-Wempty-body]
try.c: ;
try.c: ^
try.c: 1 warning generated.
try.c: try-anything.c:110:19: warning: if statement has empty body [-Wempty-body]
try.c: ;
try.c: ^
try.c: 1 warning generated.

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -O3 -fwrapv -march=native -fpolly -funroll-loops -fvectorize -fslp-vectorize -fslp-vectorize-aggressive -fomit-frame-pointer e/v3

Compiler output

Implementation: crypto_stream/cryptmtv3/e/v3
Compiler: clang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fomit-frame-pointer
api.c: clang: warning: argument unused during compilation: '-mcpu=core-avx2'
api.c: clang: warning: argument unused during compilation: '-mavx2'
api.c: clang: warning: argument unused during compilation: '-mpclmul'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-mcpu=core-avx2'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-mavx2'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-mpclmul'
cryptmt-v3.c: In file included from cryptmt-v3.c:1:
cryptmt-v3.c: ./e/cryptmt-v3.c:189:18: warning: array index of '156' indexes past the end of an array (that contains 156 elements) [-Warray-bounds]
cryptmt-v3.c: do_recursion(ps->gt;sfmt[N], ps->gt;sfmt[POS1], ps->gt;sfmt[N - 1]);
cryptmt-v3.c: ^ ~
cryptmt-v3.c: ./e/cryptmt-v3.c:25:5: note: array 'sfmt' declared here
cryptmt-v3.c: u32 sfmt[N][4];
cryptmt-v3.c: ^
cryptmt-v3.c: ./e/cryptmt-v3.c:403:27: warning: argument to 'sizeof' in 'memset' call is the same expression as the destination; did you mean to dereference it? [-Wsizeof-pointer-memaccess]
cryptmt-v3.c: memset(ctx, 0, sizeof(ctx));
cryptmt-v3.c: ~~~ ^~~
cryptmt-v3.c: 2 warnings generated.
try.c: try-anything.c:110:19: warning: if statement has empty body [-Wempty-body]
try.c: ;
try.c: ^
try.c: 1 warning generated.
try.c: try-anything.c:110:19: warning: if statement has empty body [-Wempty-body]
try.c: ;
try.c: ^
try.c: 1 warning generated.

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fomit-frame-pointer e/v3

Compiler output

Implementation: crypto_stream/cryptmtv3/e/v3
Compiler: clang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fpolly -funroll-loops -fvectorize -fslp-vectorize -fslp-vectorize-aggressive -fomit-frame-pointer
api.c: clang: warning: argument unused during compilation: '-mcpu=core-avx2'
api.c: clang: warning: argument unused during compilation: '-mavx2'
api.c: clang: warning: argument unused during compilation: '-mpclmul'
api.c: clang: warning: argument unused during compilation: '-fpolly'
api.c: clang: warning: argument unused during compilation: '-fvectorize'
api.c: clang: warning: argument unused during compilation: '-fslp-vectorize'
api.c: clang: warning: argument unused during compilation: '-fslp-vectorize-aggressive'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-mcpu=core-avx2'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-mavx2'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-mpclmul'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-fpolly'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-fvectorize'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-fslp-vectorize'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-fslp-vectorize-aggressive'
cryptmt-v3.c: In file included from cryptmt-v3.c:1:
cryptmt-v3.c: ./e/cryptmt-v3.c:189:18: warning: array index of '156' indexes past the end of an array (that contains 156 elements) [-Warray-bounds]
cryptmt-v3.c: do_recursion(ps->gt;sfmt[N], ps->gt;sfmt[POS1], ps->gt;sfmt[N - 1]);
cryptmt-v3.c: ^ ~
cryptmt-v3.c: ./e/cryptmt-v3.c:25:5: note: array 'sfmt' declared here
cryptmt-v3.c: u32 sfmt[N][4];
cryptmt-v3.c: ^
cryptmt-v3.c: ./e/cryptmt-v3.c:403:27: warning: argument to 'sizeof' in 'memset' call is the same expression as the destination; did you mean to dereference it? [-Wsizeof-pointer-memaccess]
cryptmt-v3.c: memset(ctx, 0, sizeof(ctx));
cryptmt-v3.c: ~~~ ^~~
cryptmt-v3.c: 2 warnings generated.
try.c: try-anything.c:110:19: warning: if statement has empty body [-Wempty-body]
try.c: ;
try.c: ^
try.c: 1 warning generated.
try.c: try-anything.c:110:19: warning: if statement has empty body [-Wempty-body]
try.c: ;
try.c: ^
try.c: 1 warning generated.

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fpolly -funroll-loops -fvectorize -fslp-vectorize -fslp-vectorize-aggressive -fomit-frame-pointer e/v3

Compiler output

Implementation: crypto_stream/cryptmtv3/e/v3
Compiler: clang -O3 -fwrapv -mavx2 -fomit-frame-pointer
api.c: clang: warning: argument unused during compilation: '-mavx2'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-mavx2'
cryptmt-v3.c: In file included from cryptmt-v3.c:1:
cryptmt-v3.c: ./e/cryptmt-v3.c:189:18: warning: array index of '156' indexes past the end of an array (that contains 156 elements) [-Warray-bounds]
cryptmt-v3.c: do_recursion(ps->gt;sfmt[N], ps->gt;sfmt[POS1], ps->gt;sfmt[N - 1]);
cryptmt-v3.c: ^ ~
cryptmt-v3.c: ./e/cryptmt-v3.c:25:5: note: array 'sfmt' declared here
cryptmt-v3.c: u32 sfmt[N][4];
cryptmt-v3.c: ^
cryptmt-v3.c: ./e/cryptmt-v3.c:403:27: warning: argument to 'sizeof' in 'memset' call is the same expression as the destination; did you mean to dereference it? [-Wsizeof-pointer-memaccess]
cryptmt-v3.c: memset(ctx, 0, sizeof(ctx));
cryptmt-v3.c: ~~~ ^~~
cryptmt-v3.c: 2 warnings generated.
try.c: try-anything.c:110:19: warning: if statement has empty body [-Wempty-body]
try.c: ;
try.c: ^
try.c: 1 warning generated.
try.c: try-anything.c:110:19: warning: if statement has empty body [-Wempty-body]
try.c: ;
try.c: ^
try.c: 1 warning generated.

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer e/v3

Compiler output

Implementation: crypto_stream/cryptmtv3/e/v3
Compiler: clang -O3 -fwrapv -mavx2 -fpolly -funroll-loops -fvectorize -fslp-vectorize -fslp-vectorize-aggressive -fomit-frame-pointer
api.c: clang: warning: argument unused during compilation: '-mavx2'
api.c: clang: warning: argument unused during compilation: '-fpolly'
api.c: clang: warning: argument unused during compilation: '-fvectorize'
api.c: clang: warning: argument unused during compilation: '-fslp-vectorize'
api.c: clang: warning: argument unused during compilation: '-fslp-vectorize-aggressive'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-mavx2'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-fpolly'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-fvectorize'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-fslp-vectorize'
cryptmt-v3.c: clang: warning: argument unused during compilation: '-fslp-vectorize-aggressive'
cryptmt-v3.c: In file included from cryptmt-v3.c:1:
cryptmt-v3.c: ./e/cryptmt-v3.c:189:18: warning: array index of '156' indexes past the end of an array (that contains 156 elements) [-Warray-bounds]
cryptmt-v3.c: do_recursion(ps->gt;sfmt[N], ps->gt;sfmt[POS1], ps->gt;sfmt[N - 1]);
cryptmt-v3.c: ^ ~
cryptmt-v3.c: ./e/cryptmt-v3.c:25:5: note: array 'sfmt' declared here
cryptmt-v3.c: u32 sfmt[N][4];
cryptmt-v3.c: ^
cryptmt-v3.c: ./e/cryptmt-v3.c:403:27: warning: argument to 'sizeof' in 'memset' call is the same expression as the destination; did you mean to dereference it? [-Wsizeof-pointer-memaccess]
cryptmt-v3.c: memset(ctx, 0, sizeof(ctx));
cryptmt-v3.c: ~~~ ^~~
cryptmt-v3.c: 2 warnings generated.
try.c: try-anything.c:110:19: warning: if statement has empty body [-Wempty-body]
try.c: ;
try.c: ^
try.c: 1 warning generated.
try.c: try-anything.c:110:19: warning: if statement has empty body [-Wempty-body]
try.c: ;
try.c: ^
try.c: 1 warning generated.

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -O3 -fwrapv -mavx2 -fpolly -funroll-loops -fvectorize -fslp-vectorize -fslp-vectorize-aggressive -fomit-frame-pointer e/v3