Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(273)

Side by Side Diff: third_party/lzma_sdk/7zCrc.c

Issue 10152012: Second attempt to update lzma_sdk to 9.20 (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/lzma_sdk/7zCrc.h ('k') | third_party/lzma_sdk/7zCrcOpt.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 7zCrc.c */ 1 /* 7zCrc.c -- CRC32 calculation
2 2009-11-23 : Igor Pavlov : Public domain */
2 3
3 #include "7zCrc.h" 4 #include "7zCrc.h"
5 #include "CpuArch.h"
4 6
5 #define kCrcPoly 0xEDB88320 7 #define kCrcPoly 0xEDB88320
6 UInt32 g_CrcTable[256]; 8
9 #ifdef MY_CPU_LE
10 #define CRC_NUM_TABLES 8
11 #else
12 #define CRC_NUM_TABLES 1
13 #endif
14
15 typedef UInt32 (MY_FAST_CALL *CRC_FUNC)(UInt32 v, const void *data, size_t size, const UInt32 *table);
16
17 static CRC_FUNC g_CrcUpdate;
18 UInt32 g_CrcTable[256 * CRC_NUM_TABLES];
19
20 #if CRC_NUM_TABLES == 1
21
22 #define CRC_UPDATE_BYTE_2(crc, b) (table[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8))
23
24 static UInt32 MY_FAST_CALL CrcUpdateT1(UInt32 v, const void *data, size_t size, const UInt32 *table)
25 {
26 const Byte *p = (const Byte *)data;
27 for (; size > 0; size--, p++)
28 v = CRC_UPDATE_BYTE_2(v, *p);
29 return v;
30 }
31
32 #else
33
34 UInt32 MY_FAST_CALL CrcUpdateT4(UInt32 v, const void *data, size_t size, const U Int32 *table);
35 UInt32 MY_FAST_CALL CrcUpdateT8(UInt32 v, const void *data, size_t size, const U Int32 *table);
36
37 #endif
38
39 UInt32 MY_FAST_CALL CrcUpdate(UInt32 v, const void *data, size_t size)
40 {
41 return g_CrcUpdate(v, data, size, g_CrcTable);
42 }
43
44 UInt32 MY_FAST_CALL CrcCalc(const void *data, size_t size)
45 {
46 return g_CrcUpdate(CRC_INIT_VAL, data, size, g_CrcTable) ^ CRC_INIT_VAL;
47 }
7 48
8 void MY_FAST_CALL CrcGenerateTable() 49 void MY_FAST_CALL CrcGenerateTable()
9 { 50 {
10 UInt32 i; 51 UInt32 i;
11 for (i = 0; i < 256; i++) 52 for (i = 0; i < 256; i++)
12 { 53 {
13 UInt32 r = i; 54 UInt32 r = i;
14 int j; 55 unsigned j;
15 for (j = 0; j < 8; j++) 56 for (j = 0; j < 8; j++)
16 r = (r >> 1) ^ (kCrcPoly & ~((r & 1) - 1)); 57 r = (r >> 1) ^ (kCrcPoly & ~((r & 1) - 1));
17 g_CrcTable[i] = r; 58 g_CrcTable[i] = r;
18 } 59 }
60 #if CRC_NUM_TABLES == 1
61 g_CrcUpdate = CrcUpdateT1;
62 #else
63 for (; i < 256 * CRC_NUM_TABLES; i++)
64 {
65 UInt32 r = g_CrcTable[i - 256];
66 g_CrcTable[i] = g_CrcTable[r & 0xFF] ^ (r >> 8);
67 }
68 g_CrcUpdate = CrcUpdateT4;
69 #ifdef MY_CPU_X86_OR_AMD64
70 if (!CPU_Is_InOrder())
71 g_CrcUpdate = CrcUpdateT8;
72 #endif
73 #endif
19 } 74 }
20
21 UInt32 MY_FAST_CALL CrcUpdate(UInt32 v, const void *data, size_t size)
22 {
23 const Byte *p = (const Byte *)data;
24 for (; size > 0 ; size--, p++)
25 v = CRC_UPDATE_BYTE(v, *p);
26 return v;
27 }
28
29 UInt32 MY_FAST_CALL CrcCalc(const void *data, size_t size)
30 {
31 return CrcUpdate(CRC_INIT_VAL, data, size) ^ 0xFFFFFFFF;
32 }
OLDNEW
« no previous file with comments | « third_party/lzma_sdk/7zCrc.h ('k') | third_party/lzma_sdk/7zCrcOpt.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698