xref: /aosp_15_r20/external/lzma/CPP/7zip/Compress/BitlDecoder.cpp (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // BitlDecoder.cpp
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #include "StdAfx.h"
4*f6dc9357SAndroid Build Coastguard Worker 
5*f6dc9357SAndroid Build Coastguard Worker #include "BitlDecoder.h"
6*f6dc9357SAndroid Build Coastguard Worker 
7*f6dc9357SAndroid Build Coastguard Worker namespace NBitl {
8*f6dc9357SAndroid Build Coastguard Worker 
9*f6dc9357SAndroid Build Coastguard Worker #if defined(Z7_BITL_USE_REVERSE_BITS_TABLE)
10*f6dc9357SAndroid Build Coastguard Worker 
11*f6dc9357SAndroid Build Coastguard Worker MY_ALIGN(64)
12*f6dc9357SAndroid Build Coastguard Worker Byte kReverseTable[256];
13*f6dc9357SAndroid Build Coastguard Worker 
14*f6dc9357SAndroid Build Coastguard Worker static
15*f6dc9357SAndroid Build Coastguard Worker struct CReverseerTableInitializer
16*f6dc9357SAndroid Build Coastguard Worker {
CReverseerTableInitializerNBitl::CReverseerTableInitializer17*f6dc9357SAndroid Build Coastguard Worker   CReverseerTableInitializer()
18*f6dc9357SAndroid Build Coastguard Worker   {
19*f6dc9357SAndroid Build Coastguard Worker     for (unsigned i = 0; i < 256; i++)
20*f6dc9357SAndroid Build Coastguard Worker     {
21*f6dc9357SAndroid Build Coastguard Worker       unsigned
22*f6dc9357SAndroid Build Coastguard Worker       x = ((i & 0x55) << 1) | ((i >> 1) & 0x55);
23*f6dc9357SAndroid Build Coastguard Worker       x = ((x & 0x33) << 2) | ((x >> 2) & 0x33);
24*f6dc9357SAndroid Build Coastguard Worker       kReverseTable[i] = (Byte)((x << 4) | (x >> 4));
25*f6dc9357SAndroid Build Coastguard Worker     }
26*f6dc9357SAndroid Build Coastguard Worker   }
27*f6dc9357SAndroid Build Coastguard Worker } g_ReverseerTableInitializer;
28*f6dc9357SAndroid Build Coastguard Worker 
29*f6dc9357SAndroid Build Coastguard Worker #elif 0
30*f6dc9357SAndroid Build Coastguard Worker unsigned ReverseBits8test(unsigned i) { return ReverseBits8(i); }
31*f6dc9357SAndroid Build Coastguard Worker #endif
32*f6dc9357SAndroid Build Coastguard Worker }
33