2 Copyright 2009 Kristian Nielsen
4 This file is part of BeeDB.
6 Foobar is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 2 of the License, or
9 (at your option) any later version.
11 Foobar is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with Foobar. If not, see <http://www.gnu.org/licenses/>.
24 These tables are used for pack3() and pack4() methods.
26 We pack the information into a single 32-bit word in order to be able to
27 read them with a single load (and to reduce cache footprint), as this is
28 accessed on the critical path performance-wise.
32 The pack3() / unpack3() methods store data as follows for big/little endian:
39 So 4, 13, 23, or 67 bits.
41 The pack4() / unpack4() methods:
49 So 4, 10, 18, 27, or 67 bits.
52 #define LOOKUP_PACK_ENTRY(tag_bits, data_bits, tag_value) \
53 ( (tag_bits) | ((tag_value) << 24) | ((data_bits) << 16) )
54 #ifdef WORDS_BIGENDIAN
55 #define LOOKUP_UNPACK_ENTRY(bits, or_value) ( (bits) | ((or_value) << 24) )
57 #define LOOKUP_UNPACK_ENTRY(bits, or_value, lshift) \
58 ( (bits) | ((or_value) << 24) | ((lshift) << 16) )
61 uint32_t lookup_table_unpack3
[8] = {
62 #ifdef WORDS_BIGENDIAN
63 /* 0 */ LOOKUP_UNPACK_ENTRY(1, 0),
64 /* 1 */ LOOKUP_UNPACK_ENTRY(1, 2),
65 /* 2 */ LOOKUP_UNPACK_ENTRY(1, 4),
66 /* 3 */ LOOKUP_UNPACK_ENTRY(1, 6),
67 /* 4 */ LOOKUP_UNPACK_ENTRY(10, 0),
68 /* 5 */ LOOKUP_UNPACK_ENTRY(10, 1024),
69 /* 6 */ LOOKUP_UNPACK_ENTRY(20, 0),
70 /* 7 */ LOOKUP_UNPACK_ENTRY(64, 0)
72 /* 0 */ LOOKUP_UNPACK_ENTRY( 1, 0, 2),
73 /* 1 */ LOOKUP_UNPACK_ENTRY(10, 0, 1),
74 /* 2 */ LOOKUP_UNPACK_ENTRY( 1, 1, 2),
75 /* 3 */ LOOKUP_UNPACK_ENTRY(20, 0, 0),
76 /* 4 */ LOOKUP_UNPACK_ENTRY( 1, 2, 2),
77 /* 5 */ LOOKUP_UNPACK_ENTRY(10, 1, 1),
78 /* 6 */ LOOKUP_UNPACK_ENTRY( 1, 3, 2),
79 /* 7 */ LOOKUP_UNPACK_ENTRY(64, 0, 0)
83 uint32_t lookup_table_pack3
[64] = {
84 #ifdef WORDS_BIGENDIAN
85 /* 64 */ LOOKUP_PACK_ENTRY(3, 64, 7),
86 /* 63 */ LOOKUP_PACK_ENTRY(3, 64, 7),
87 /* 62 */ LOOKUP_PACK_ENTRY(3, 64, 7),
88 /* 61 */ LOOKUP_PACK_ENTRY(3, 64, 7),
89 /* 60 */ LOOKUP_PACK_ENTRY(3, 64, 7),
90 /* 59 */ LOOKUP_PACK_ENTRY(3, 64, 7),
91 /* 58 */ LOOKUP_PACK_ENTRY(3, 64, 7),
92 /* 57 */ LOOKUP_PACK_ENTRY(3, 64, 7),
93 /* 56 */ LOOKUP_PACK_ENTRY(3, 64, 7),
94 /* 55 */ LOOKUP_PACK_ENTRY(3, 64, 7),
95 /* 54 */ LOOKUP_PACK_ENTRY(3, 64, 7),
96 /* 53 */ LOOKUP_PACK_ENTRY(3, 64, 7),
97 /* 52 */ LOOKUP_PACK_ENTRY(3, 64, 7),
98 /* 51 */ LOOKUP_PACK_ENTRY(3, 64, 7),
99 /* 50 */ LOOKUP_PACK_ENTRY(3, 64, 7),
100 /* 49 */ LOOKUP_PACK_ENTRY(3, 64, 7),
101 /* 48 */ LOOKUP_PACK_ENTRY(3, 64, 7),
102 /* 47 */ LOOKUP_PACK_ENTRY(3, 64, 7),
103 /* 46 */ LOOKUP_PACK_ENTRY(3, 64, 7),
104 /* 45 */ LOOKUP_PACK_ENTRY(3, 64, 7),
105 /* 44 */ LOOKUP_PACK_ENTRY(3, 64, 7),
106 /* 43 */ LOOKUP_PACK_ENTRY(3, 64, 7),
107 /* 42 */ LOOKUP_PACK_ENTRY(3, 64, 7),
108 /* 41 */ LOOKUP_PACK_ENTRY(3, 64, 7),
109 /* 40 */ LOOKUP_PACK_ENTRY(3, 64, 7),
110 /* 39 */ LOOKUP_PACK_ENTRY(3, 64, 7),
111 /* 38 */ LOOKUP_PACK_ENTRY(3, 64, 7),
112 /* 37 */ LOOKUP_PACK_ENTRY(3, 64, 7),
113 /* 36 */ LOOKUP_PACK_ENTRY(3, 64, 7),
114 /* 35 */ LOOKUP_PACK_ENTRY(3, 64, 7),
115 /* 34 */ LOOKUP_PACK_ENTRY(3, 64, 7),
116 /* 33 */ LOOKUP_PACK_ENTRY(3, 64, 7),
117 /* 32 */ LOOKUP_PACK_ENTRY(3, 64, 7),
118 /* 31 */ LOOKUP_PACK_ENTRY(3, 64, 7),
119 /* 30 */ LOOKUP_PACK_ENTRY(3, 64, 7),
120 /* 29 */ LOOKUP_PACK_ENTRY(3, 64, 7),
121 /* 28 */ LOOKUP_PACK_ENTRY(3, 64, 7),
122 /* 27 */ LOOKUP_PACK_ENTRY(3, 64, 7),
123 /* 26 */ LOOKUP_PACK_ENTRY(3, 64, 7),
124 /* 25 */ LOOKUP_PACK_ENTRY(3, 64, 7),
125 /* 24 */ LOOKUP_PACK_ENTRY(3, 64, 7),
126 /* 23 */ LOOKUP_PACK_ENTRY(3, 64, 7),
127 /* 22 */ LOOKUP_PACK_ENTRY(3, 64, 7),
128 /* 21 */ LOOKUP_PACK_ENTRY(3, 64, 7),
129 /* 20 */ LOOKUP_PACK_ENTRY(3, 20, 6),
130 /* 19 */ LOOKUP_PACK_ENTRY(3, 20, 6),
131 /* 18 */ LOOKUP_PACK_ENTRY(3, 20, 6),
132 /* 17 */ LOOKUP_PACK_ENTRY(3, 20, 6),
133 /* 16 */ LOOKUP_PACK_ENTRY(3, 20, 6),
134 /* 15 */ LOOKUP_PACK_ENTRY(3, 20, 6),
135 /* 14 */ LOOKUP_PACK_ENTRY(3, 20, 6),
136 /* 13 */ LOOKUP_PACK_ENTRY(3, 20, 6),
137 /* 12 */ LOOKUP_PACK_ENTRY(3, 20, 6),
138 /* 11 */ LOOKUP_PACK_ENTRY(2, 11, 2),
139 /* 10 */ LOOKUP_PACK_ENTRY(2, 11, 2),
140 /* 9 */ LOOKUP_PACK_ENTRY(2, 11, 2),
141 /* 8 */ LOOKUP_PACK_ENTRY(2, 11, 2),
142 /* 7 */ LOOKUP_PACK_ENTRY(2, 11, 2),
143 /* 6 */ LOOKUP_PACK_ENTRY(2, 11, 2),
144 /* 5 */ LOOKUP_PACK_ENTRY(2, 11, 2),
145 /* 4 */ LOOKUP_PACK_ENTRY(2, 11, 2),
146 /* 3 */ LOOKUP_PACK_ENTRY(1, 3, 0),
147 /* 2 */ LOOKUP_PACK_ENTRY(1, 3, 0),
148 /* 1 */ LOOKUP_PACK_ENTRY(1, 3, 0)
150 /* 64 */ LOOKUP_PACK_ENTRY(3, 64, 7),
151 /* 63 */ LOOKUP_PACK_ENTRY(3, 64, 7),
152 /* 62 */ LOOKUP_PACK_ENTRY(3, 64, 7),
153 /* 61 */ LOOKUP_PACK_ENTRY(3, 64, 7),
154 /* 60 */ LOOKUP_PACK_ENTRY(3, 64, 7),
155 /* 59 */ LOOKUP_PACK_ENTRY(3, 64, 7),
156 /* 58 */ LOOKUP_PACK_ENTRY(3, 64, 7),
157 /* 57 */ LOOKUP_PACK_ENTRY(3, 64, 7),
158 /* 56 */ LOOKUP_PACK_ENTRY(3, 64, 7),
159 /* 55 */ LOOKUP_PACK_ENTRY(3, 64, 7),
160 /* 54 */ LOOKUP_PACK_ENTRY(3, 64, 7),
161 /* 53 */ LOOKUP_PACK_ENTRY(3, 64, 7),
162 /* 52 */ LOOKUP_PACK_ENTRY(3, 64, 7),
163 /* 51 */ LOOKUP_PACK_ENTRY(3, 64, 7),
164 /* 50 */ LOOKUP_PACK_ENTRY(3, 64, 7),
165 /* 49 */ LOOKUP_PACK_ENTRY(3, 64, 7),
166 /* 48 */ LOOKUP_PACK_ENTRY(3, 64, 7),
167 /* 47 */ LOOKUP_PACK_ENTRY(3, 64, 7),
168 /* 46 */ LOOKUP_PACK_ENTRY(3, 64, 7),
169 /* 45 */ LOOKUP_PACK_ENTRY(3, 64, 7),
170 /* 44 */ LOOKUP_PACK_ENTRY(3, 64, 7),
171 /* 43 */ LOOKUP_PACK_ENTRY(3, 64, 7),
172 /* 42 */ LOOKUP_PACK_ENTRY(3, 64, 7),
173 /* 41 */ LOOKUP_PACK_ENTRY(3, 64, 7),
174 /* 40 */ LOOKUP_PACK_ENTRY(3, 64, 7),
175 /* 39 */ LOOKUP_PACK_ENTRY(3, 64, 7),
176 /* 38 */ LOOKUP_PACK_ENTRY(3, 64, 7),
177 /* 37 */ LOOKUP_PACK_ENTRY(3, 64, 7),
178 /* 36 */ LOOKUP_PACK_ENTRY(3, 64, 7),
179 /* 35 */ LOOKUP_PACK_ENTRY(3, 64, 7),
180 /* 34 */ LOOKUP_PACK_ENTRY(3, 64, 7),
181 /* 33 */ LOOKUP_PACK_ENTRY(3, 64, 7),
182 /* 32 */ LOOKUP_PACK_ENTRY(3, 64, 7),
183 /* 31 */ LOOKUP_PACK_ENTRY(3, 64, 7),
184 /* 30 */ LOOKUP_PACK_ENTRY(3, 64, 7),
185 /* 29 */ LOOKUP_PACK_ENTRY(3, 64, 7),
186 /* 28 */ LOOKUP_PACK_ENTRY(3, 64, 7),
187 /* 27 */ LOOKUP_PACK_ENTRY(3, 64, 7),
188 /* 26 */ LOOKUP_PACK_ENTRY(3, 64, 7),
189 /* 25 */ LOOKUP_PACK_ENTRY(3, 64, 7),
190 /* 24 */ LOOKUP_PACK_ENTRY(3, 64, 7),
191 /* 23 */ LOOKUP_PACK_ENTRY(3, 64, 7),
192 /* 22 */ LOOKUP_PACK_ENTRY(3, 64, 7),
193 /* 21 */ LOOKUP_PACK_ENTRY(3, 64, 7),
194 /* 20 */ LOOKUP_PACK_ENTRY(3, 20, 3),
195 /* 19 */ LOOKUP_PACK_ENTRY(3, 20, 3),
196 /* 18 */ LOOKUP_PACK_ENTRY(3, 20, 3),
197 /* 17 */ LOOKUP_PACK_ENTRY(3, 20, 3),
198 /* 16 */ LOOKUP_PACK_ENTRY(3, 20, 3),
199 /* 15 */ LOOKUP_PACK_ENTRY(3, 20, 3),
200 /* 14 */ LOOKUP_PACK_ENTRY(3, 20, 3),
201 /* 13 */ LOOKUP_PACK_ENTRY(3, 20, 3),
202 /* 12 */ LOOKUP_PACK_ENTRY(3, 20, 3),
203 /* 11 */ LOOKUP_PACK_ENTRY(2, 11, 1),
204 /* 10 */ LOOKUP_PACK_ENTRY(2, 11, 1),
205 /* 9 */ LOOKUP_PACK_ENTRY(2, 11, 1),
206 /* 8 */ LOOKUP_PACK_ENTRY(2, 11, 1),
207 /* 7 */ LOOKUP_PACK_ENTRY(2, 11, 1),
208 /* 6 */ LOOKUP_PACK_ENTRY(2, 11, 1),
209 /* 5 */ LOOKUP_PACK_ENTRY(2, 11, 1),
210 /* 4 */ LOOKUP_PACK_ENTRY(2, 11, 1),
211 /* 3 */ LOOKUP_PACK_ENTRY(1, 3, 0),
212 /* 2 */ LOOKUP_PACK_ENTRY(1, 3, 0),
213 /* 1 */ LOOKUP_PACK_ENTRY(1, 3, 0)
217 uint32_t lookup_table_unpack4
[8] = {
218 #ifdef WORDS_BIGENDIAN
219 /* 0 */ LOOKUP_UNPACK_ENTRY(1, 0),
220 /* 1 */ LOOKUP_UNPACK_ENTRY(1, 2),
221 /* 2 */ LOOKUP_UNPACK_ENTRY(7, 0),
222 /* 3 */ LOOKUP_UNPACK_ENTRY(7, 128),
223 /* 4 */ LOOKUP_UNPACK_ENTRY(15, 0),
224 /* 5 */ LOOKUP_UNPACK_ENTRY(15, 32768),
225 /* 6 */ LOOKUP_UNPACK_ENTRY(24, 0),
226 /* 7 */ LOOKUP_UNPACK_ENTRY(64, 0)
228 /* 0 */ LOOKUP_UNPACK_ENTRY(1, 0, 1),
229 /* 1 */ LOOKUP_UNPACK_ENTRY(7, 0, 1),
230 /* 2 */ LOOKUP_UNPACK_ENTRY(15, 0, 1),
231 /* 3 */ LOOKUP_UNPACK_ENTRY(24, 0, 0),
232 /* 4 */ LOOKUP_UNPACK_ENTRY(1, 1, 1),
233 /* 5 */ LOOKUP_UNPACK_ENTRY(7, 1, 1),
234 /* 6 */ LOOKUP_UNPACK_ENTRY(15, 1, 1),
235 /* 7 */ LOOKUP_UNPACK_ENTRY(64, 0, 0)
239 uint32_t lookup_table_pack4
[64] = {
240 #ifdef WORDS_BIGENDIAN
241 /* 64 */ LOOKUP_PACK_ENTRY(3, 64, 7),
242 /* 63 */ LOOKUP_PACK_ENTRY(3, 64, 7),
243 /* 62 */ LOOKUP_PACK_ENTRY(3, 64, 7),
244 /* 61 */ LOOKUP_PACK_ENTRY(3, 64, 7),
245 /* 60 */ LOOKUP_PACK_ENTRY(3, 64, 7),
246 /* 59 */ LOOKUP_PACK_ENTRY(3, 64, 7),
247 /* 58 */ LOOKUP_PACK_ENTRY(3, 64, 7),
248 /* 57 */ LOOKUP_PACK_ENTRY(3, 64, 7),
249 /* 56 */ LOOKUP_PACK_ENTRY(3, 64, 7),
250 /* 55 */ LOOKUP_PACK_ENTRY(3, 64, 7),
251 /* 54 */ LOOKUP_PACK_ENTRY(3, 64, 7),
252 /* 53 */ LOOKUP_PACK_ENTRY(3, 64, 7),
253 /* 52 */ LOOKUP_PACK_ENTRY(3, 64, 7),
254 /* 51 */ LOOKUP_PACK_ENTRY(3, 64, 7),
255 /* 50 */ LOOKUP_PACK_ENTRY(3, 64, 7),
256 /* 49 */ LOOKUP_PACK_ENTRY(3, 64, 7),
257 /* 48 */ LOOKUP_PACK_ENTRY(3, 64, 7),
258 /* 47 */ LOOKUP_PACK_ENTRY(3, 64, 7),
259 /* 46 */ LOOKUP_PACK_ENTRY(3, 64, 7),
260 /* 45 */ LOOKUP_PACK_ENTRY(3, 64, 7),
261 /* 44 */ LOOKUP_PACK_ENTRY(3, 64, 7),
262 /* 43 */ LOOKUP_PACK_ENTRY(3, 64, 7),
263 /* 42 */ LOOKUP_PACK_ENTRY(3, 64, 7),
264 /* 41 */ LOOKUP_PACK_ENTRY(3, 64, 7),
265 /* 40 */ LOOKUP_PACK_ENTRY(3, 64, 7),
266 /* 39 */ LOOKUP_PACK_ENTRY(3, 64, 7),
267 /* 38 */ LOOKUP_PACK_ENTRY(3, 64, 7),
268 /* 37 */ LOOKUP_PACK_ENTRY(3, 64, 7),
269 /* 36 */ LOOKUP_PACK_ENTRY(3, 64, 7),
270 /* 35 */ LOOKUP_PACK_ENTRY(3, 64, 7),
271 /* 34 */ LOOKUP_PACK_ENTRY(3, 64, 7),
272 /* 33 */ LOOKUP_PACK_ENTRY(3, 64, 7),
273 /* 32 */ LOOKUP_PACK_ENTRY(3, 64, 7),
274 /* 31 */ LOOKUP_PACK_ENTRY(3, 64, 7),
275 /* 30 */ LOOKUP_PACK_ENTRY(3, 64, 7),
276 /* 29 */ LOOKUP_PACK_ENTRY(3, 64, 7),
277 /* 28 */ LOOKUP_PACK_ENTRY(3, 64, 7),
278 /* 27 */ LOOKUP_PACK_ENTRY(3, 64, 7),
279 /* 26 */ LOOKUP_PACK_ENTRY(3, 64, 7),
280 /* 25 */ LOOKUP_PACK_ENTRY(3, 64, 7),
281 /* 24 */ LOOKUP_PACK_ENTRY(3, 24, 6),
282 /* 23 */ LOOKUP_PACK_ENTRY(3, 24, 6),
283 /* 22 */ LOOKUP_PACK_ENTRY(3, 24, 6),
284 /* 21 */ LOOKUP_PACK_ENTRY(3, 24, 6),
285 /* 20 */ LOOKUP_PACK_ENTRY(3, 24, 6),
286 /* 19 */ LOOKUP_PACK_ENTRY(3, 24, 6),
287 /* 18 */ LOOKUP_PACK_ENTRY(3, 24, 6),
288 /* 17 */ LOOKUP_PACK_ENTRY(3, 24, 6),
289 /* 16 */ LOOKUP_PACK_ENTRY(2, 16, 2),
290 /* 15 */ LOOKUP_PACK_ENTRY(2, 16, 2),
291 /* 14 */ LOOKUP_PACK_ENTRY(2, 16, 2),
292 /* 13 */ LOOKUP_PACK_ENTRY(2, 16, 2),
293 /* 12 */ LOOKUP_PACK_ENTRY(2, 16, 2),
294 /* 11 */ LOOKUP_PACK_ENTRY(2, 16, 2),
295 /* 10 */ LOOKUP_PACK_ENTRY(2, 16, 2),
296 /* 9 */ LOOKUP_PACK_ENTRY(2, 16, 2),
297 /* 8 */ LOOKUP_PACK_ENTRY(2, 8, 1),
298 /* 7 */ LOOKUP_PACK_ENTRY(2, 8, 1),
299 /* 6 */ LOOKUP_PACK_ENTRY(2, 8, 1),
300 /* 5 */ LOOKUP_PACK_ENTRY(2, 8, 1),
301 /* 4 */ LOOKUP_PACK_ENTRY(2, 8, 1),
302 /* 3 */ LOOKUP_PACK_ENTRY(2, 8, 1),
303 /* 2 */ LOOKUP_PACK_ENTRY(2, 2, 0),
304 /* 1 */ LOOKUP_PACK_ENTRY(2, 2, 0),
306 /* 64 */ LOOKUP_PACK_ENTRY(3, 64, 7),
307 /* 63 */ LOOKUP_PACK_ENTRY(3, 64, 7),
308 /* 62 */ LOOKUP_PACK_ENTRY(3, 64, 7),
309 /* 61 */ LOOKUP_PACK_ENTRY(3, 64, 7),
310 /* 60 */ LOOKUP_PACK_ENTRY(3, 64, 7),
311 /* 59 */ LOOKUP_PACK_ENTRY(3, 64, 7),
312 /* 58 */ LOOKUP_PACK_ENTRY(3, 64, 7),
313 /* 57 */ LOOKUP_PACK_ENTRY(3, 64, 7),
314 /* 56 */ LOOKUP_PACK_ENTRY(3, 64, 7),
315 /* 55 */ LOOKUP_PACK_ENTRY(3, 64, 7),
316 /* 54 */ LOOKUP_PACK_ENTRY(3, 64, 7),
317 /* 53 */ LOOKUP_PACK_ENTRY(3, 64, 7),
318 /* 52 */ LOOKUP_PACK_ENTRY(3, 64, 7),
319 /* 51 */ LOOKUP_PACK_ENTRY(3, 64, 7),
320 /* 50 */ LOOKUP_PACK_ENTRY(3, 64, 7),
321 /* 49 */ LOOKUP_PACK_ENTRY(3, 64, 7),
322 /* 48 */ LOOKUP_PACK_ENTRY(3, 64, 7),
323 /* 47 */ LOOKUP_PACK_ENTRY(3, 64, 7),
324 /* 46 */ LOOKUP_PACK_ENTRY(3, 64, 7),
325 /* 45 */ LOOKUP_PACK_ENTRY(3, 64, 7),
326 /* 44 */ LOOKUP_PACK_ENTRY(3, 64, 7),
327 /* 43 */ LOOKUP_PACK_ENTRY(3, 64, 7),
328 /* 42 */ LOOKUP_PACK_ENTRY(3, 64, 7),
329 /* 41 */ LOOKUP_PACK_ENTRY(3, 64, 7),
330 /* 40 */ LOOKUP_PACK_ENTRY(3, 64, 7),
331 /* 39 */ LOOKUP_PACK_ENTRY(3, 64, 7),
332 /* 38 */ LOOKUP_PACK_ENTRY(3, 64, 7),
333 /* 37 */ LOOKUP_PACK_ENTRY(3, 64, 7),
334 /* 36 */ LOOKUP_PACK_ENTRY(3, 64, 7),
335 /* 35 */ LOOKUP_PACK_ENTRY(3, 64, 7),
336 /* 34 */ LOOKUP_PACK_ENTRY(3, 64, 7),
337 /* 33 */ LOOKUP_PACK_ENTRY(3, 64, 7),
338 /* 32 */ LOOKUP_PACK_ENTRY(3, 64, 7),
339 /* 31 */ LOOKUP_PACK_ENTRY(3, 64, 7),
340 /* 30 */ LOOKUP_PACK_ENTRY(3, 64, 7),
341 /* 29 */ LOOKUP_PACK_ENTRY(3, 64, 7),
342 /* 28 */ LOOKUP_PACK_ENTRY(3, 64, 7),
343 /* 27 */ LOOKUP_PACK_ENTRY(3, 64, 7),
344 /* 26 */ LOOKUP_PACK_ENTRY(3, 64, 7),
345 /* 25 */ LOOKUP_PACK_ENTRY(3, 64, 7),
346 /* 24 */ LOOKUP_PACK_ENTRY(3, 24, 3),
347 /* 23 */ LOOKUP_PACK_ENTRY(3, 24, 3),
348 /* 22 */ LOOKUP_PACK_ENTRY(3, 24, 3),
349 /* 21 */ LOOKUP_PACK_ENTRY(3, 24, 3),
350 /* 20 */ LOOKUP_PACK_ENTRY(3, 24, 3),
351 /* 19 */ LOOKUP_PACK_ENTRY(3, 24, 3),
352 /* 18 */ LOOKUP_PACK_ENTRY(3, 24, 3),
353 /* 17 */ LOOKUP_PACK_ENTRY(3, 24, 3),
354 /* 16 */ LOOKUP_PACK_ENTRY(2, 16, 2),
355 /* 15 */ LOOKUP_PACK_ENTRY(2, 16, 2),
356 /* 14 */ LOOKUP_PACK_ENTRY(2, 16, 2),
357 /* 13 */ LOOKUP_PACK_ENTRY(2, 16, 2),
358 /* 12 */ LOOKUP_PACK_ENTRY(2, 16, 2),
359 /* 11 */ LOOKUP_PACK_ENTRY(2, 16, 2),
360 /* 10 */ LOOKUP_PACK_ENTRY(2, 16, 2),
361 /* 9 */ LOOKUP_PACK_ENTRY(2, 16, 2),
362 /* 8 */ LOOKUP_PACK_ENTRY(2, 8, 1),
363 /* 7 */ LOOKUP_PACK_ENTRY(2, 8, 1),
364 /* 6 */ LOOKUP_PACK_ENTRY(2, 8, 1),
365 /* 5 */ LOOKUP_PACK_ENTRY(2, 8, 1),
366 /* 4 */ LOOKUP_PACK_ENTRY(2, 8, 1),
367 /* 3 */ LOOKUP_PACK_ENTRY(2, 8, 1),
368 /* 2 */ LOOKUP_PACK_ENTRY(2, 2, 0),
369 /* 1 */ LOOKUP_PACK_ENTRY(2, 2, 0),