freevec.org

  • about
  • benchmarks
Home › libfreevec 1.0.4 benchmarks updated!

bmove512

markos — Tue, 29/01/2008 - 17:38

Description

Technically, bmove512 is not part of POSIX or any libc, but part of libstring which is used in MySQL. When this effort of vectorization started, one of the goals was to vectorise MySQL, so this function was picked then as a test case, and it remained part of libfreevec since. It's basically an optimised memcpy(), working on aligned blocks and working always on multiples of 512-bytes blocks. Using minimal branching, bmove512 is really a memcpy() operating at the theoritical bandwidth limits and a very good indication at that.

Each CPU in detail:

And for comparison here is the result of the same benchmark run on an Athlon X2 5000 (2.5Ghz), running 32-bit code:

Results/Comments

The same comments done in memcpy() apply here. The bmove512 operates only on aligned blocks, so we got optimum performance with this function, as there are no branches to do.

SIMD

  • AltiVec
  • libfreevec
  • Memory
‹ libfreevec 1.0.4 benchmarks updated! up memccpy() ›
  • Login to post comments

Primary links

  • About
    • History of libfreevec
  • Benchmarks
    • libfreevec

Search

User login

  • Request new password

Popular tags

Addition Algorithms AltiVec ARM Benchmarking float Inverse libfreevec Matrix Memory Multiply NEON reference Scale SSE String searching Subtraction Translate Transpose Tutorial
more tags

Please donate to libfreevec to ensure its continuing development! Donations are done via Paypal.





  • about
  • benchmarks

Copyright (c)2008 by CODEX.
Powered by Drupal. Using theme Deco.
All Google charts have been created by the CSV Chart and Chart API Drupal modules.