11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22 /*
23 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
25 */
26
27 #include <sys/types.h>
28
29 #pragma ident "%Z%%M% %I% %E% SMI"
30
31 /* EXPORT DELETE START */
32
33 static uint64_t pc1_table[2][128]=
34 {
35 /* BEGIN CSTYLED */
36 {
37 0x0000000000000000ULL, 0x0000000000100000ULL, 0x0000000000001000ULL, 0x0000000000101000ULL,
38 0x0000000000000010ULL, 0x0000000000100010ULL, 0x0000000000001010ULL, 0x0000000000101010ULL,
39 0x0000000000000001ULL, 0x0000000000100001ULL, 0x0000000000001001ULL, 0x0000000000101001ULL,
40 0x0000000000000011ULL, 0x0000000000100011ULL, 0x0000000000001011ULL, 0x0000000000101011ULL,
41 0x0000000100000000ULL, 0x0000000100100000ULL, 0x0000000100001000ULL, 0x0000000100101000ULL,
42 0x0000000100000010ULL, 0x0000000100100010ULL, 0x0000000100001010ULL, 0x0000000100101010ULL,
43 0x0000000100000001ULL, 0x0000000100100001ULL, 0x0000000100001001ULL, 0x0000000100101001ULL,
44 0x0000000100000011ULL, 0x0000000100100011ULL, 0x0000000100001011ULL, 0x0000000100101011ULL,
45 0x0000010000000000ULL, 0x0000010000100000ULL, 0x0000010000001000ULL, 0x0000010000101000ULL,
46 0x0000010000000010ULL, 0x0000010000100010ULL, 0x0000010000001010ULL, 0x0000010000101010ULL,
47 0x0000010000000001ULL, 0x0000010000100001ULL, 0x0000010000001001ULL, 0x0000010000101001ULL,
48 0x0000010000000011ULL, 0x0000010000100011ULL, 0x0000010000001011ULL, 0x0000010000101011ULL,
49 0x0000010100000000ULL, 0x0000010100100000ULL, 0x0000010100001000ULL, 0x0000010100101000ULL,
50 0x0000010100000010ULL, 0x0000010100100010ULL, 0x0000010100001010ULL, 0x0000010100101010ULL,
51 0x0000010100000001ULL, 0x0000010100100001ULL, 0x0000010100001001ULL, 0x0000010100101001ULL,
52 0x0000010100000011ULL, 0x0000010100100011ULL, 0x0000010100001011ULL, 0x0000010100101011ULL,
273
274 for (i = 0; i < 16; i++) {
275 c = c << ss[i];
276 d = d << ss[i];
277
278 upper = pc2_1_table[0][(c >> 50) & 63] |
279 pc2_1_table[1][(c >> 44) & 63] |
280 pc2_1_table[2][(c >> 38) & 63] |
281 pc2_1_table[3][(c >> 32) & 63] |
282 pc2_1_tail_table[(c >> 28) & 7];
283
284 lower = pc2_2_table[0][(d >> 51) & 31] |
285 pc2_2_table[1][(d >> 46) & 31] |
286 pc2_2_table[2][(d >> 41) & 31] |
287 pc2_2_table[3][(d >> 36) & 31] |
288 pc2_2_table[4][(d >> 31) & 31] |
289 pc2_2_tail_table[(d >> 28) & 3];
290 ks[i] = ((uint64_t)upper)<<32 | ((uint64_t)lower);
291 }
292 }
293
294 /* EXPORT DELETE END */
|
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22 /*
23 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
25 */
26
27 #include <sys/types.h>
28
29 #pragma ident "%Z%%M% %I% %E% SMI"
30
31 static uint64_t pc1_table[2][128]=
32 {
33 /* BEGIN CSTYLED */
34 {
35 0x0000000000000000ULL, 0x0000000000100000ULL, 0x0000000000001000ULL, 0x0000000000101000ULL,
36 0x0000000000000010ULL, 0x0000000000100010ULL, 0x0000000000001010ULL, 0x0000000000101010ULL,
37 0x0000000000000001ULL, 0x0000000000100001ULL, 0x0000000000001001ULL, 0x0000000000101001ULL,
38 0x0000000000000011ULL, 0x0000000000100011ULL, 0x0000000000001011ULL, 0x0000000000101011ULL,
39 0x0000000100000000ULL, 0x0000000100100000ULL, 0x0000000100001000ULL, 0x0000000100101000ULL,
40 0x0000000100000010ULL, 0x0000000100100010ULL, 0x0000000100001010ULL, 0x0000000100101010ULL,
41 0x0000000100000001ULL, 0x0000000100100001ULL, 0x0000000100001001ULL, 0x0000000100101001ULL,
42 0x0000000100000011ULL, 0x0000000100100011ULL, 0x0000000100001011ULL, 0x0000000100101011ULL,
43 0x0000010000000000ULL, 0x0000010000100000ULL, 0x0000010000001000ULL, 0x0000010000101000ULL,
44 0x0000010000000010ULL, 0x0000010000100010ULL, 0x0000010000001010ULL, 0x0000010000101010ULL,
45 0x0000010000000001ULL, 0x0000010000100001ULL, 0x0000010000001001ULL, 0x0000010000101001ULL,
46 0x0000010000000011ULL, 0x0000010000100011ULL, 0x0000010000001011ULL, 0x0000010000101011ULL,
47 0x0000010100000000ULL, 0x0000010100100000ULL, 0x0000010100001000ULL, 0x0000010100101000ULL,
48 0x0000010100000010ULL, 0x0000010100100010ULL, 0x0000010100001010ULL, 0x0000010100101010ULL,
49 0x0000010100000001ULL, 0x0000010100100001ULL, 0x0000010100001001ULL, 0x0000010100101001ULL,
50 0x0000010100000011ULL, 0x0000010100100011ULL, 0x0000010100001011ULL, 0x0000010100101011ULL,
271
272 for (i = 0; i < 16; i++) {
273 c = c << ss[i];
274 d = d << ss[i];
275
276 upper = pc2_1_table[0][(c >> 50) & 63] |
277 pc2_1_table[1][(c >> 44) & 63] |
278 pc2_1_table[2][(c >> 38) & 63] |
279 pc2_1_table[3][(c >> 32) & 63] |
280 pc2_1_tail_table[(c >> 28) & 7];
281
282 lower = pc2_2_table[0][(d >> 51) & 31] |
283 pc2_2_table[1][(d >> 46) & 31] |
284 pc2_2_table[2][(d >> 41) & 31] |
285 pc2_2_table[3][(d >> 36) & 31] |
286 pc2_2_table[4][(d >> 31) & 31] |
287 pc2_2_tail_table[(d >> 28) & 3];
288 ks[i] = ((uint64_t)upper)<<32 | ((uint64_t)lower);
289 }
290 }
|