]> git.sesse.net Git - x264/commit
aarch64: cabac_encode_{decision,bypass,terminal}_asm
authorJanne Grunau <janne-x264@jannau.net>
Tue, 18 Nov 2014 23:33:55 +0000 (00:33 +0100)
committerAnton Mitrofanov <BugMaster@narod.ru>
Tue, 16 Dec 2014 17:40:12 +0000 (20:40 +0300)
commit59b9c252cfa6242c7fa6424a463e51913996fe6a
tree3c3a0745f8cd7e6ffa5aea2a82418f97842a8afc
parenta6ec424939a4d3a59e4ec1e3999cb37e4314408e
aarch64: cabac_encode_{decision,bypass,terminal}_asm

benchmarks on a Nexus 9 (nvidia denver):
101.3 cycles in x264_cabac_encode_decision_c,   67105369 runs, 3495 skips
 97.3 cycles in x264_cabac_encode_decision_asm, 67105493 runs, 3371 skips
132.8 cycles in x264_cabac_encode_terminal_c,    1046950 runs, 1626 skips
116.1 cycles in x264_cabac_encode_terminal_asm,  1048424 runs, 152 skips
 92.4 cycles in x264_cabac_encode_bypass_c,     16776192 runs, 1024 skips
 89.6 cycles in x264_cabac_encode_bypass_asm,   16776453 runs, 763 skips

Cycle counts are not as stable as one would like. The dynamic code
optimisation seems to produce different results for small chnages in a
binary. Repeated runs with the same binary produce stable results
though (ignoring the first run).
Makefile
common/aarch64/asm-offsets.c [new file with mode: 0644]
common/aarch64/asm-offsets.h [new file with mode: 0644]
common/aarch64/cabac-a.S [new file with mode: 0644]
common/cabac.h
tools/checkasm.c