• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //  Copyright Beman Dawes 2013
2 //  Copyright 2018 Peter Dimov
3 
4 //  Distributed under the Boost Software License, Version 1.0.
5 //  http://www.boost.org/LICENSE_1_0.txt
6 
7 #include <boost/endian/detail/intrinsic.hpp>
8 #include <boost/core/lightweight_test.hpp>
9 
10 typedef unsigned short uint16;
11 typedef unsigned int uint32;
12 typedef unsigned long long uint64;
13 
main()14 int main()
15 {
16     std::cout << "BOOST_ENDIAN_INTRINSIC_MSG: " BOOST_ENDIAN_INTRINSIC_MSG << std::endl;
17 
18 #ifndef BOOST_ENDIAN_NO_INTRINSICS
19 
20     uint16 x2 = 0x1122U;
21     uint16 y2 = BOOST_ENDIAN_INTRINSIC_BYTE_SWAP_2(x2);
22     BOOST_TEST_EQ( y2, 0x2211U );
23 
24     uint32 x4 = 0x11223344UL;
25     uint32 y4 = BOOST_ENDIAN_INTRINSIC_BYTE_SWAP_4(x4);
26     BOOST_TEST_EQ( y4, 0x44332211UL );
27 
28     uint64 x8 = 0x1122334455667788U;
29     uint64 y8 = BOOST_ENDIAN_INTRINSIC_BYTE_SWAP_8(x8);
30     BOOST_TEST_EQ( y8, 0x8877665544332211ULL );
31 
32 #endif
33 
34     return boost::report_errors();
35 }
36