speed_test_functions.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // speed_test_functions.cpp ----------------------------------------------------------//
  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 in a separate compilation unit partially to defeat optimizers
  7. // and partially to create a worst case scenario. They are in a user namespace for
  8. // realism.
  9. //--------------------------------------------------------------------------------------//
  10. #ifndef _SCL_SECURE_NO_WARNINGS
  11. # define _SCL_SECURE_NO_WARNINGS
  12. #endif
  13. #ifndef _CRT_SECURE_NO_WARNINGS
  14. # define _CRT_SECURE_NO_WARNINGS
  15. #endif
  16. #include "speed_test_functions.hpp"
  17. namespace user
  18. {
  19. int16_t return_x_big_int16(int16_t x, big_int16_t) BOOST_NOEXCEPT { return x; }
  20. int16_t return_x_little_int16(int16_t x, little_int16_t) BOOST_NOEXCEPT { return x; }
  21. int16_t return_x_value_big_int16(int16_t x, big_int16_t) BOOST_NOEXCEPT
  22. {
  23. return conditional_reverse<order::native, order::big>(x);
  24. }
  25. int16_t return_x_value_little_int16(int16_t x, little_int16_t) BOOST_NOEXCEPT
  26. {
  27. return conditional_reverse<order::native, order::little>(x);
  28. }
  29. int16_t return_x_inplace_big_int16(int16_t x, big_int16_t) BOOST_NOEXCEPT
  30. {
  31. conditional_reverse_inplace<order::native, order::big>(x); return x;
  32. }
  33. int16_t return_x_inplace_little_int16(int16_t x, little_int16_t) BOOST_NOEXCEPT
  34. {
  35. conditional_reverse_inplace<order::native, order::little>(x); return x;
  36. }
  37. int16_t return_y_big_int16(int16_t x, big_int16_t y) BOOST_NOEXCEPT { return y; }
  38. int16_t return_y_little_int16(int16_t x, little_int16_t y) BOOST_NOEXCEPT { return y; }
  39. //------------------------------------------------------------------------------------//
  40. int32_t return_x_big_int32(int32_t x, big_int32_t) BOOST_NOEXCEPT { return x; }
  41. int32_t return_x_little_int32(int32_t x, little_int32_t) BOOST_NOEXCEPT { return x; }
  42. int32_t return_x_value_big_int32(int32_t x, big_int32_t) BOOST_NOEXCEPT
  43. {
  44. return conditional_reverse<order::native, order::big>(x);
  45. }
  46. int32_t return_x_value_little_int32(int32_t x, little_int32_t) BOOST_NOEXCEPT
  47. {
  48. return conditional_reverse<order::native, order::little>(x);
  49. }
  50. int32_t return_x_inplace_big_int32(int32_t x, big_int32_t) BOOST_NOEXCEPT
  51. {
  52. conditional_reverse_inplace<order::native, order::big>(x); return x;
  53. }
  54. int32_t return_x_inplace_little_int32(int32_t x, little_int32_t) BOOST_NOEXCEPT
  55. {
  56. conditional_reverse_inplace<order::native, order::little>(x); return x;
  57. }
  58. int32_t return_y_big_int32(int32_t x, big_int32_t y) BOOST_NOEXCEPT { return y; }
  59. int32_t return_y_little_int32(int32_t x, little_int32_t y) BOOST_NOEXCEPT { return y; }
  60. //------------------------------------------------------------------------------------//
  61. int64_t return_x_big_int64(int64_t x, big_int64_t) BOOST_NOEXCEPT { return x; }
  62. int64_t return_x_little_int64(int64_t x, little_int64_t) BOOST_NOEXCEPT { return x; }
  63. int64_t return_x_value_big_int64(int64_t x, big_int64_t) BOOST_NOEXCEPT
  64. {
  65. return conditional_reverse<order::native, order::big>(x);
  66. }
  67. int64_t return_x_value_little_int64(int64_t x, little_int64_t) BOOST_NOEXCEPT
  68. {
  69. return conditional_reverse<order::native, order::little>(x);
  70. }
  71. int64_t return_x_inplace_big_int64(int64_t x, big_int64_t) BOOST_NOEXCEPT
  72. {
  73. conditional_reverse_inplace<order::native, order::big>(x); return x;
  74. }
  75. int64_t return_x_inplace_little_int64(int64_t x, little_int64_t) BOOST_NOEXCEPT
  76. {
  77. conditional_reverse_inplace<order::native, order::little>(x); return x;
  78. }
  79. int64_t return_y_big_int64(int64_t x, big_int64_t y) BOOST_NOEXCEPT { return y; }
  80. int64_t return_y_little_int64(int64_t x, little_int64_t y) BOOST_NOEXCEPT { return y; }
  81. }