1. 07 Jan, 2016 1 commit
    • Martin Storsjö's avatar
      checkasm: Check register clobbering on arm · 26ec75ae
      Martin Storsjö authored
      Use two separate functions, depending on whether VFP/NEON is available.
      
      This is set to require armv5te - it uses blx, which is only available
      since armv5t, but we don't have a separate configure item for that.
      (It also uses ldrd, which requires armv5te, but this could be avoided
      if necessary.)
      Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
      26ec75ae
  2. 21 Dec, 2015 4 commits
  3. 14 Dec, 2015 1 commit
    • Janne Grunau's avatar
      arm: add a cpu flag for the VFPv2 vector mode · e2710e79
      Janne Grunau authored
      The vector mode was deprecated in ARMv7-A/VFPv3 and various cpu
      implementations do not support it in hardware. Vector mode code will
      depending the OS either be emulated in software or result in an illegal
      instruction on cpus which does not support it. This was not really
      problem in practice since NEON implementations of the same functions are
      preferred. It will however become a problem for checkasm which tests
      every cpu flag separately.
      
      Since this is a cpu feature newer cpu do not support anymore the
      behaviour of this flag differs from the other flags. It can be only
      activated by runtime cpu feature selection.
      e2710e79
  4. 05 Dec, 2015 1 commit
  5. 03 Oct, 2015 1 commit
  6. 28 Sep, 2015 1 commit
    • Henrik Gramner's avatar
      checkasm: Use a self-balancing tree · 5405584b
      Henrik Gramner authored
      Tested functions are internally kept in a binary search tree for efficient
      lookups. The downside of the current implementation is that the tree quickly
      becomes unbalanced which causes an unneccessary amount of comparisons between
      nodes. Improve this by changing the tree into a self-balancing left-leaning
      red-black tree with a worst case lookup/insertion time complexity of O(log n).
      
      Significantly reduces the recursion depth and makes the tests run around 10%
      faster overall. The relative performance improvement compared to the existing
      non-balanced tree will also most likely increase as more tests are added.
      Signed-off-by: 's avatarAnton Khirnov <anton@khirnov.net>
      5405584b
  7. 06 Sep, 2015 1 commit
  8. 20 Aug, 2015 1 commit
    • Henrik Gramner's avatar
      checkasm: Explicitly declare function prototypes · 515b69f8
      Henrik Gramner authored
      Now we no longer have to rely on function pointers intentionally
      declared without specified argument types.
      
      This makes it easier to support functions with floating point parameters
      or return values as well as functions returning 64-bit values on 32-bit
      architectures. It also avoids having to explicitly cast strides to
      ptrdiff_t for example.
      Signed-off-by: 's avatarAnton Khirnov <anton@khirnov.net>
      515b69f8
  9. 11 Aug, 2015 1 commit
  10. 30 Jul, 2015 1 commit
  11. 27 Jul, 2015 1 commit
  12. 17 Jul, 2015 3 commits
  13. 15 Jul, 2015 1 commit
  14. 12 Jul, 2015 1 commit
    • Henrik Gramner's avatar
      Checkasm: assembly testing and benchmarking tool · 8bc67ec2
      Henrik Gramner authored
      It provides the following features:
       * verify correctness by comparing output to the C version.
       * detect failure to save and restore clobbered callee-saved registers.
       * detect 32-bit parameters being used as if they were 64-bit in x86-64
         (the upper halves are not guaranteed to be zero - but in practice
         they very often are, which makes those bugs hard to spot otherwise).
       * easy benchmarking.
      
      Compile by running 'make checkasm'.
      Execute by running 'tests/checkasm/checkasm'.
      
      Optional arguments are '--bench' to run benchmarks for all functions,
      '--bench=<pattern>' to run benchmarks for all functions that starts with
      <pattern>, and '<integer>' to seed the PRNG for reproducible results.
      
      Contains unit tests for most h264pred functions to get started, more tests
      can be added afterwards using those as a reference.
      
      Loosely based on code from x264. Currently only supports x86 and x86-64,
      but additional architectures shouldn't be too much of an obstacle to add.
      
      Note that functions with floating point parameters or floating point
      return values are not supported. Some compiler-specific features or
      preprocessor hacks would likely be required to add support for that.
      Signed-off-by: 's avatarJanne Grunau <janne-libav@jannau.net>
      8bc67ec2