|
10 | 10 | * We use a normal (not "reflected", in Williams' terms) CRC, using initial
|
11 | 11 | * all-ones register contents and a final bit inversion.
|
12 | 12 | *
|
13 |
| - * The 64-bit variant is not used as of PostgreSQL 8.1, but we retain the |
14 |
| - * code for possible future use. |
15 |
| - * |
16 | 13 | *
|
17 | 14 | * Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group
|
18 | 15 | * Portions Copyright (c) 1994, Regents of the University of California
|
@@ -56,97 +53,4 @@ do { \
|
56 | 53 | /* Constant table for CRC calculation */
|
57 | 54 | extern CRCDLLIMPORT const uint32 pg_crc32_table[];
|
58 | 55 |
|
59 |
| - |
60 |
| -#ifdef PROVIDE_64BIT_CRC |
61 |
| - |
62 |
| -/* |
63 |
| - * If we use a 64-bit integer type, then a 64-bit CRC looks just like the |
64 |
| - * usual sort of implementation. However, we can also fake it with two |
65 |
| - * 32-bit registers. Experience has shown that the two-32-bit-registers code |
66 |
| - * is as fast as, or even much faster than, the 64-bit code on all but true |
67 |
| - * 64-bit machines. We use SIZEOF_VOID_P to check the native word width. |
68 |
| - */ |
69 |
| - |
70 |
| -#if SIZEOF_VOID_P < 8 |
71 |
| - |
72 |
| -/* |
73 |
| - * crc0 represents the LSBs of the 64-bit value, crc1 the MSBs. Note that |
74 |
| - * with crc0 placed first, the output of 32-bit and 64-bit implementations |
75 |
| - * will be bit-compatible only on little-endian architectures. If it were |
76 |
| - * important to make the two possible implementations bit-compatible on |
77 |
| - * all machines, we could do a configure test to decide how to order the |
78 |
| - * two fields, but it seems not worth the trouble. |
79 |
| - */ |
80 |
| -typedef struct pg_crc64 |
81 |
| -{ |
82 |
| - uint32 crc0; |
83 |
| - uint32 crc1; |
84 |
| -} pg_crc64; |
85 |
| - |
86 |
| -/* Initialize a CRC accumulator */ |
87 |
| -#define INIT_CRC64(crc) ((crc).crc0 = 0xffffffff, (crc).crc1 = 0xffffffff) |
88 |
| - |
89 |
| -/* Finish a CRC calculation */ |
90 |
| -#define FIN_CRC64(crc) ((crc).crc0 ^= 0xffffffff, (crc).crc1 ^= 0xffffffff) |
91 |
| - |
92 |
| -/* Accumulate some (more) bytes into a CRC */ |
93 |
| -#define COMP_CRC64(crc, data, len) \ |
94 |
| -do { \ |
95 |
| - uint32 __crc0 = (crc).crc0; \ |
96 |
| - uint32 __crc1 = (crc).crc1; \ |
97 |
| - unsigned char *__data = (unsigned char *) (data); \ |
98 |
| - uint32 __len = (len); \ |
99 |
| -\ |
100 |
| - while (__len-- > 0) \ |
101 |
| - { \ |
102 |
| - int __tab_index = ((int) (__crc1 >> 24) ^ *__data++) & 0xFF; \ |
103 |
| - __crc1 = pg_crc64_table1[__tab_index] ^ ((__crc1 << 8) | (__crc0 >> 24)); \ |
104 |
| - __crc0 = pg_crc64_table0[__tab_index] ^ (__crc0 << 8); \ |
105 |
| - } \ |
106 |
| - (crc).crc0 = __crc0; \ |
107 |
| - (crc).crc1 = __crc1; \ |
108 |
| -} while (0) |
109 |
| - |
110 |
| -/* Check for equality of two CRCs */ |
111 |
| -#define EQ_CRC64(c1,c2) ((c1).crc0 == (c2).crc0 && (c1).crc1 == (c2).crc1) |
112 |
| - |
113 |
| -/* Constant table for CRC calculation */ |
114 |
| -extern CRCDLLIMPORT const uint32 pg_crc64_table0[]; |
115 |
| -extern CRCDLLIMPORT const uint32 pg_crc64_table1[]; |
116 |
| -#else /* use int64 implementation */ |
117 |
| - |
118 |
| -typedef struct pg_crc64 |
119 |
| -{ |
120 |
| - uint64 crc0; |
121 |
| -} pg_crc64; |
122 |
| - |
123 |
| -/* Initialize a CRC accumulator */ |
124 |
| -#define INIT_CRC64(crc) ((crc).crc0 = UINT64CONST(0xffffffffffffffff)) |
125 |
| - |
126 |
| -/* Finish a CRC calculation */ |
127 |
| -#define FIN_CRC64(crc) ((crc).crc0 ^= UINT64CONST(0xffffffffffffffff)) |
128 |
| - |
129 |
| -/* Accumulate some (more) bytes into a CRC */ |
130 |
| -#define COMP_CRC64(crc, data, len) \ |
131 |
| -do { \ |
132 |
| - uint64 __crc0 = (crc).crc0; \ |
133 |
| - unsigned char *__data = (unsigned char *) (data); \ |
134 |
| - uint32 __len = (len); \ |
135 |
| -\ |
136 |
| - while (__len-- > 0) \ |
137 |
| - { \ |
138 |
| - int __tab_index = ((int) (__crc0 >> 56) ^ *__data++) & 0xFF; \ |
139 |
| - __crc0 = pg_crc64_table[__tab_index] ^ (__crc0 << 8); \ |
140 |
| - } \ |
141 |
| - (crc).crc0 = __crc0; \ |
142 |
| -} while (0) |
143 |
| - |
144 |
| -/* Check for equality of two CRCs */ |
145 |
| -#define EQ_CRC64(c1,c2) ((c1).crc0 == (c2).crc0) |
146 |
| - |
147 |
| -/* Constant table for CRC calculation */ |
148 |
| -extern CRCDLLIMPORT const uint64 pg_crc64_table[]; |
149 |
| -#endif /* SIZEOF_VOID_P < 8 */ |
150 |
| -#endif /* PROVIDE_64BIT_CRC */ |
151 |
| - |
152 | 56 | #endif /* PG_CRC_H */
|
0 commit comments