speed_test_functions.hpp 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // speed_test_functions.hpp ----------------------------------------------------------//
  2. // Copyright Beman Dawes 2013
  3. // Distributed under the Boost Software License, Version 1.0.
  4. // http://www.boost.org/LICENSE_1_0.txt
  5. //--------------------------------------------------------------------------------------//
  6. // These functions are separately compiled partially to defeat optimizers and
  7. // partially to create a worst case scenario. They are in a user namespace for
  8. // a bit of realism.
  9. //--------------------------------------------------------------------------------------//
  10. #ifndef BOOST_ENDIAN_SPEED_TEST_FUNCTIONS_HPP
  11. #define BOOST_ENDIAN_SPEED_TEST_FUNCTIONS_HPP
  12. #include <boost/cstdint.hpp>
  13. #include <boost/endian/arithmetic.hpp>
  14. namespace user
  15. {
  16. using namespace boost;
  17. using namespace boost::endian;
  18. int16_t return_x_big_int16(int16_t x, big_int16_t y) BOOST_NOEXCEPT;
  19. int16_t return_x_little_int16(int16_t x, little_int16_t y) BOOST_NOEXCEPT;
  20. int16_t return_x_value_big_int16(int16_t x, big_int16_t) BOOST_NOEXCEPT;
  21. int16_t return_x_value_little_int16(int16_t x, little_int16_t y) BOOST_NOEXCEPT;
  22. int16_t return_x_inplace_big_int16(int16_t x, big_int16_t y) BOOST_NOEXCEPT;
  23. int16_t return_x_inplace_little_int16(int16_t x, little_int16_t y) BOOST_NOEXCEPT;
  24. int16_t return_y_big_int16(int16_t x, big_int16_t y) BOOST_NOEXCEPT;
  25. int16_t return_y_little_int16(int16_t x, little_int16_t y) BOOST_NOEXCEPT;
  26. int32_t return_x_big_int32(int32_t x, big_int32_t y) BOOST_NOEXCEPT;
  27. int32_t return_x_little_int32(int32_t x, little_int32_t y) BOOST_NOEXCEPT;
  28. int32_t return_x_value_big_int32(int32_t x, big_int32_t) BOOST_NOEXCEPT;
  29. int32_t return_x_value_little_int32(int32_t x, little_int32_t y) BOOST_NOEXCEPT;
  30. int32_t return_x_inplace_big_int32(int32_t x, big_int32_t y) BOOST_NOEXCEPT;
  31. int32_t return_x_inplace_little_int32(int32_t x, little_int32_t y) BOOST_NOEXCEPT;
  32. int32_t return_y_big_int32(int32_t x, big_int32_t y) BOOST_NOEXCEPT;
  33. int32_t return_y_little_int32(int32_t x, little_int32_t y) BOOST_NOEXCEPT;
  34. int64_t return_x_big_int64(int64_t x, big_int64_t y) BOOST_NOEXCEPT;
  35. int64_t return_x_little_int64(int64_t x, little_int64_t y) BOOST_NOEXCEPT;
  36. int64_t return_x_value_big_int64(int64_t x, big_int64_t) BOOST_NOEXCEPT;
  37. int64_t return_x_value_little_int64(int64_t x, little_int64_t y) BOOST_NOEXCEPT;
  38. int64_t return_x_inplace_big_int64(int64_t x, big_int64_t y) BOOST_NOEXCEPT;
  39. int64_t return_x_inplace_little_int64(int64_t x, little_int64_t y) BOOST_NOEXCEPT;
  40. int64_t return_y_big_int64(int64_t x, big_int64_t y) BOOST_NOEXCEPT;
  41. int64_t return_y_little_int64(int64_t x, little_int64_t y) BOOST_NOEXCEPT;
  42. }
  43. #endif