00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00031 #ifndef __AW_BYTES__
00032 #define __AW_BYTES__
00033
00034
00035 #define SWAPBYTES16(word) (\
00036 (((word)&0x00ff) << 8) | \
00037 (((word)&0xff00) >> 8) \
00038 )
00039
00040 #define SWAPBYTES32(word) (\
00041 (((word)&0x000000ff) << 24)| \
00042 (((word)&0x0000ff00) << 8) | \
00043 (((word)&0x00ff0000) >> 8) | \
00044 (((word)&0xff000000) >> 24) \
00045 )
00046
00047
00048 #define BYTEINWORD32(word, byteasword)(\
00049 (((word)&0x000000ff) == (byteasword)) || \
00050 ((((word)&0x0000ff00) >> 8) == (byteasword)) || \
00051 ((((word)&0x00ff0000) >> 16) == (byteasword)) || \
00052 ((((word)&0xff000000) >> 24) == (byteasword)) \
00053 )
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065 #define COUNTBITS16(b) (\
00066 (b)=(((b)>> 1)&0x5555)+((b)&0x5555),\
00067 (b)=(((b)>> 2)&0x3333)+((b)&0x3333),\
00068 (b)=(((b)>> 4)&0x0707)+((b)&0x0707),\
00069 (b)=(((b)>> 8)&0x000f)+((b)&0x000f),\
00070 (b))
00071
00072
00073
00074
00075
00076
00077
00078
00079 #define COUNTBITS32(b) (\
00080 (b)=(((b)>> 1)&0x55555555)+((b)&0x55555555),\
00081 (b)=(((b)>> 2)&0x33333333)+((b)&0x33333333),\
00082 (b)=(((b)>> 4)&0x07070707)+((b)&0x07070707),\
00083 (b)=(((b)>> 8)&0x000f000f)+((b)&0x000f000f),\
00084 (b)=(((b)>>16)&0x0000001f)+((b)&0x0000001f),\
00085 (b))
00086
00087
00088
00089
00090
00091
00092
00093
00094 #define COUNTBITS64(b) (\
00095 (b)=(((b)>> 1)&0x5555555555555555)+((b)&0x5555555555555555),\
00096 (b)=(((b)>> 2)&0x3333333333333333)+((b)&0x3333333333333333),\
00097 (b)=(((b)>> 4)&0x0707070707070707)+((b)&0x0707070707070707),\
00098 (b)=(((b)>> 8)&0x000f000f000f000f)+((b)&0x000f000f000f000f),\
00099 (b)=(((b)>>16)&0x0000001f0000001f)+((b)&0x0000001f0000001f),\
00100 (b)=(((b)>>32)&0x000000000000003f)+((b)&0x000000000000003f),\
00101 (b))
00102
00103
00104
00105
00106
00107
00108
00109
00110 #define REVERSEBITS16(b) (\
00111 (b)=(((b)>> 1)&0x5555)|(((b)&0x5555)<< 1),\
00112 (b)=(((b)>> 2)&0x3333)|(((b)&0x3333)<< 2),\
00113 (b)=(((b)>> 4)&0x0f0f)|(((b)&0x0f0f)<< 4),\
00114 (b)=(((b)>> 8)&0x00ff)|(((b)&0x00ff)<< 8),\
00115 (b))
00116
00117
00118
00119
00120
00121
00122
00123
00124 #define REVERSEBITS32(b) (\
00125 (b)=(((b)>> 1)&0x55555555)|(((b)&0x55555555)<< 1),\
00126 (b)=(((b)>> 2)&0x33333333)|(((b)&0x33333333)<< 2),\
00127 (b)=(((b)>> 4)&0x0f0f0f0f)|(((b)&0x0f0f0f0f)<< 4),\
00128 (b)=(((b)>> 8)&0x00ff00ff)|(((b)&0x00ff00ff)<< 8),\
00129 (b)=(((b)>>16)&0x0000ffff)|(((b)&0x0000ffff)<<16),\
00130 (b))
00131
00132
00133
00134
00135
00136
00137
00138
00139 #define REVERSEBITS64(b) (\
00140 (b)=(((b)>> 1)&0x5555555555555555)|(((b)&0x5555555555555555)<< 1),\
00141 (b)=(((b)>> 2)&0x3333333333333333)|(((b)&0x3333333333333333)<< 2),\
00142 (b)=(((b)>> 4)&0x0f0f0f0f0f0f0f0f)|(((b)&0x0f0f0f0f0f0f0f0f)<< 4),\
00143 (b)=(((b)>> 8)&0x00ff00ff00ff00ff)|(((b)&0x00ff00ff00ff00ff)<< 8),\
00144 (b)=(((b)>>16)&0x0000ffff0000ffff)|(((b)&0x0000ffff0000ffff)<<16),\
00145 (b)=(((b)>>32)&0x00000000ffffffff)|(((b)&0x00000000ffffffff)<<32),\
00146 (b))
00147
00148 #endif