Skip to content

Latest commit

 

History

History
433 lines (378 loc) · 38.9 KB

arm-64bit-gcc4.8.5.rst

File metadata and controls

433 lines (378 loc) · 38.9 KB

Population count comparison for Cortex A57 (AMD Opteron A1100)

Generated on: 2017-04-26

CPU: Cortex A57 (AMD Opteron A1100)

Compiler: GCC 4.8.5 (SUSE Linux)

Instruction set: 64-bit

Number of runs: 5

All times are given in seconds.

procedure description
lookup-8 lookup in std::uint8_t[256] LUT
lookup-64 lookup in std::uint64_t[256] LUT
bit-parallel naive bit parallel method
bit-parallel-optimized a bit better bit parallel
bit-parallel-mul bit-parallel with fewer instructions
bit-parallel32 naive bit parallel method (32 bit)
bit-parallel-optimized32 a bit better bit parallel (32 bit)
harley-seal Harley-Seal popcount (4th iteration)
builtin-popcnt builtin for popcnt
builtin-popcnt32 builtin for popcnt (32-bit variant)
builtin-popcnt-unrolled unrolled builtin-popcnt
builtin-popcnt-unrolled32 unrolled builtin-popcnt32
neon-vcnt ARM Neon using VCNT
neon-HS Harley-Seal using Neon VCNT
procedure 32 B 64 B 128 B 256 B 512 B 1024 B 2048 B 4096 B
lookup-8 0.41787 0.45607 0.41489 0.39577 0.61790 0.61055 0.60647 0.60454
lookup-64 0.43253 0.49135 0.44576 0.42294 0.65849 0.64935 0.64481 0.64255
bit-parallel 0.30289 0.29128 0.28541 0.28098 0.46077 0.45165 0.44633 0.44479
bit-parallel-optimized 0.24403 0.23538 0.22509 0.21993 0.36248 0.35306 0.34765 0.34601
bit-parallel-mul 0.18127 0.16303 0.18097 0.16403 0.24538 0.23758 0.23244 0.23074
bit-parallel32 0.48844 0.46781 0.46343 0.48252 0.75325 0.74382 0.73821 0.73675
bit-parallel-optimized32 0.42078 0.41338 0.40973 0.42809 0.66731 0.65847 0.65347 0.65185
harley-seal 0.31778 0.22949 0.13094 0.10151 0.13887 0.12710 0.12328 0.11931
builtin-popcnt 0.42566 0.41951 0.39661 0.48328 0.58800 0.75823 0.58927 0.75447
builtin-popcnt32 0.75916 0.75910 0.73265 0.71937 1.14041 1.13514 1.13248 1.50763
builtin-popcnt-unrolled 0.40597 0.35898 0.34573 0.33173 0.52616 0.51722 0.51281 0.69827
builtin-popcnt-unrolled32 0.74735 0.69167 0.66363 0.65538 1.03274 1.02479 1.02082 1.39523
neon-vcnt 0.59436 0.47962 0.08994 0.07477 0.10654 0.10173 0.09981 0.09615
neon-HS 0.76199 0.58971 0.47629 0.09548 0.13181 0.11593 0.11017 0.10725
procedure time [s] relative time (less is better)
lookup-8 0.41787 ███████████████████████████▍
lookup-64 0.43253 ████████████████████████████▍
bit-parallel 0.30289 ███████████████████▊
bit-parallel-optimized 0.24403 ████████████████
bit-parallel-mul 0.18127 ███████████▉
bit-parallel32 0.48844 ████████████████████████████████
bit-parallel-optimized32 0.42078 ███████████████████████████▌
harley-seal 0.31778 ████████████████████▊
builtin-popcnt 0.42566 ███████████████████████████▉
builtin-popcnt32 0.75916 █████████████████████████████████████████████████▊
builtin-popcnt-unrolled 0.40597 ██████████████████████████▋
builtin-popcnt-unrolled32 0.74735 █████████████████████████████████████████████████
neon-vcnt 0.59436 ███████████████████████████████████████
neon-HS 0.76199 ██████████████████████████████████████████████████
procedure time [s] relative time (less is better)
lookup-8 0.45607 ██████████████████████████████
lookup-64 0.49135 ████████████████████████████████▎
bit-parallel 0.29128 ███████████████████▏
bit-parallel-optimized 0.23538 ███████████████▌
bit-parallel-mul 0.16303 ██████████▋
bit-parallel32 0.46781 ██████████████████████████████▊
bit-parallel-optimized32 0.41338 ███████████████████████████▏
harley-seal 0.22949 ███████████████
builtin-popcnt 0.41951 ███████████████████████████▋
builtin-popcnt32 0.75910 ██████████████████████████████████████████████████
builtin-popcnt-unrolled 0.35898 ███████████████████████▋
builtin-popcnt-unrolled32 0.69167 █████████████████████████████████████████████▌
neon-vcnt 0.47962 ███████████████████████████████▌
neon-HS 0.58971 ██████████████████████████████████████▊
procedure time [s] relative time (less is better)
lookup-8 0.41489 ████████████████████████████▎
lookup-64 0.44576 ██████████████████████████████▍
bit-parallel 0.28541 ███████████████████▍
bit-parallel-optimized 0.22509 ███████████████▎
bit-parallel-mul 0.18097 ████████████▎
bit-parallel32 0.46343 ███████████████████████████████▋
bit-parallel-optimized32 0.40973 ███████████████████████████▉
harley-seal 0.13094 ████████▉
builtin-popcnt 0.39661 ███████████████████████████
builtin-popcnt32 0.73265 ██████████████████████████████████████████████████
builtin-popcnt-unrolled 0.34573 ███████████████████████▌
builtin-popcnt-unrolled32 0.66363 █████████████████████████████████████████████▎
neon-vcnt 0.08994 ██████▏
neon-HS 0.47629 ████████████████████████████████▌
procedure time [s] relative time (less is better)
lookup-8 0.39577 ███████████████████████████▌
lookup-64 0.42294 █████████████████████████████▍
bit-parallel 0.28098 ███████████████████▌
bit-parallel-optimized 0.21993 ███████████████▎
bit-parallel-mul 0.16403 ███████████▍
bit-parallel32 0.48252 █████████████████████████████████▌
bit-parallel-optimized32 0.42809 █████████████████████████████▊
harley-seal 0.10151 ███████
builtin-popcnt 0.48328 █████████████████████████████████▌
builtin-popcnt32 0.71937 ██████████████████████████████████████████████████
builtin-popcnt-unrolled 0.33173 ███████████████████████
builtin-popcnt-unrolled32 0.65538 █████████████████████████████████████████████▌
neon-vcnt 0.07477 █████▏
neon-HS 0.09548 ██████▋
procedure time [s] relative time (less is better)
lookup-8 0.61790 ███████████████████████████
lookup-64 0.65849 ████████████████████████████▊
bit-parallel 0.46077 ████████████████████▏
bit-parallel-optimized 0.36248 ███████████████▉
bit-parallel-mul 0.24538 ██████████▊
bit-parallel32 0.75325 █████████████████████████████████
bit-parallel-optimized32 0.66731 █████████████████████████████▎
harley-seal 0.13887 ██████
builtin-popcnt 0.58800 █████████████████████████▊
builtin-popcnt32 1.14041 ██████████████████████████████████████████████████
builtin-popcnt-unrolled 0.52616 ███████████████████████
builtin-popcnt-unrolled32 1.03274 █████████████████████████████████████████████▎
neon-vcnt 0.10654 ████▋
neon-HS 0.13181 █████▊
procedure time [s] relative time (less is better)
lookup-8 0.61055 ██████████████████████████▉
lookup-64 0.64935 ████████████████████████████▌
bit-parallel 0.45165 ███████████████████▉
bit-parallel-optimized 0.35306 ███████████████▌
bit-parallel-mul 0.23758 ██████████▍
bit-parallel32 0.74382 ████████████████████████████████▊
bit-parallel-optimized32 0.65847 █████████████████████████████
harley-seal 0.12710 █████▌
builtin-popcnt 0.75823 █████████████████████████████████▍
builtin-popcnt32 1.13514 ██████████████████████████████████████████████████
builtin-popcnt-unrolled 0.51722 ██████████████████████▊
builtin-popcnt-unrolled32 1.02479 █████████████████████████████████████████████▏
neon-vcnt 0.10173 ████▍
neon-HS 0.11593 █████
procedure time [s] relative time (less is better)
lookup-8 0.60647 ██████████████████████████▊
lookup-64 0.64481 ████████████████████████████▍
bit-parallel 0.44633 ███████████████████▋
bit-parallel-optimized 0.34765 ███████████████▎
bit-parallel-mul 0.23244 ██████████▎
bit-parallel32 0.73821 ████████████████████████████████▌
bit-parallel-optimized32 0.65347 ████████████████████████████▊
harley-seal 0.12328 █████▍
builtin-popcnt 0.58927 ██████████████████████████
builtin-popcnt32 1.13248 ██████████████████████████████████████████████████
builtin-popcnt-unrolled 0.51281 ██████████████████████▋
builtin-popcnt-unrolled32 1.02082 █████████████████████████████████████████████
neon-vcnt 0.09981 ████▍
neon-HS 0.11017 ████▊
procedure time [s] relative time (less is better)
lookup-8 0.60454 ████████████████████
lookup-64 0.64255 █████████████████████▎
bit-parallel 0.44479 ██████████████▊
bit-parallel-optimized 0.34601 ███████████▍
bit-parallel-mul 0.23074 ███████▋
bit-parallel32 0.73675 ████████████████████████▍
bit-parallel-optimized32 0.65185 █████████████████████▌
harley-seal 0.11931 ███▉
builtin-popcnt 0.75447 █████████████████████████
builtin-popcnt32 1.50763 ██████████████████████████████████████████████████
builtin-popcnt-unrolled 0.69827 ███████████████████████▏
builtin-popcnt-unrolled32 1.39523 ██████████████████████████████████████████████▎
neon-vcnt 0.09615 ███▏
neon-HS 0.10725 ███▌
procedure 32 B 64 B 128 B 256 B 512 B 1024 B 2048 B 4096 B
lookup-8 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00
lookup-64 0.97 0.93 0.93 0.94 0.94 0.94 0.94 0.94
bit-parallel 1.38 1.57 1.45 1.41 1.34 1.35 1.36 1.36
bit-parallel-optimized 1.71 1.94 1.84 1.80 1.70 1.73 1.74 1.75
bit-parallel-mul 2.31 2.80 2.29 2.41 2.52 2.57 2.61 2.62
bit-parallel32 0.86 0.97 0.90 0.82 0.82 0.82 0.82 0.82
bit-parallel-optimized32 0.99 1.10 1.01 0.92 0.93 0.93 0.93 0.93
harley-seal 1.31 1.99 3.17 3.90 4.45 4.80 4.92 5.07
builtin-popcnt 0.98 1.09 1.05 0.82 1.05 0.81 1.03 0.80
builtin-popcnt32 0.55 0.60 0.57 0.55 0.54 0.54 0.54 0.40
builtin-popcnt-unrolled 1.03 1.27 1.20 1.19 1.17 1.18 1.18 0.87
builtin-popcnt-unrolled32 0.56 0.66 0.63 0.60 0.60 0.60 0.59 0.43
neon-vcnt 0.70 0.95 4.61 5.29 5.80 6.00 6.08 6.29
neon-HS 0.55 0.77 0.87 4.15 4.69 5.27 5.50 5.64

Download arm-64bit-gcc4.8.5.csv