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