1*86d7f5d3SJohn Marino ///////////////////////////////////////////////////////////////////////////////
2*86d7f5d3SJohn Marino //
3*86d7f5d3SJohn Marino /// \file       crc_macros.h
4*86d7f5d3SJohn Marino /// \brief      Some endian-dependent macros for CRC32 and CRC64
5*86d7f5d3SJohn Marino //
6*86d7f5d3SJohn Marino //  Author:     Lasse Collin
7*86d7f5d3SJohn Marino //
8*86d7f5d3SJohn Marino //  This file has been put into the public domain.
9*86d7f5d3SJohn Marino //  You can do whatever you want with this file.
10*86d7f5d3SJohn Marino //
11*86d7f5d3SJohn Marino ///////////////////////////////////////////////////////////////////////////////
12*86d7f5d3SJohn Marino 
13*86d7f5d3SJohn Marino #ifdef WORDS_BIGENDIAN
14*86d7f5d3SJohn Marino #	define A(x) ((x) >> 24)
15*86d7f5d3SJohn Marino #	define B(x) (((x) >> 16) & 0xFF)
16*86d7f5d3SJohn Marino #	define C(x) (((x) >> 8) & 0xFF)
17*86d7f5d3SJohn Marino #	define D(x) ((x) & 0xFF)
18*86d7f5d3SJohn Marino 
19*86d7f5d3SJohn Marino #	define S8(x) ((x) << 8)
20*86d7f5d3SJohn Marino #	define S32(x) ((x) << 32)
21*86d7f5d3SJohn Marino 
22*86d7f5d3SJohn Marino #else
23*86d7f5d3SJohn Marino #	define A(x) ((x) & 0xFF)
24*86d7f5d3SJohn Marino #	define B(x) (((x) >> 8) & 0xFF)
25*86d7f5d3SJohn Marino #	define C(x) (((x) >> 16) & 0xFF)
26*86d7f5d3SJohn Marino #	define D(x) ((x) >> 24)
27*86d7f5d3SJohn Marino 
28*86d7f5d3SJohn Marino #	define S8(x) ((x) >> 8)
29*86d7f5d3SJohn Marino #	define S32(x) ((x) >> 32)
30*86d7f5d3SJohn Marino #endif
31