1 /*
2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
208 mlib_d64 *tab = (mlib_d64 *) table[0];
209 mlib_u32 s0;
210 mlib_d64 t0, t1, t2, t3;
211 mlib_s32 off;
212 mlib_s32 size = xsize;
213 mlib_d64 *dp = (mlib_d64 *) dst;
214 mlib_u8 *sp = (void *)src;
215
216 off = (mlib_s32) ((4 - ((mlib_addr) src & 3)) & 3);
217
218 for (i = 0; i < off; i++, sp++) {
219 *dp++ = tab[sp[0]];
220 size--;
221 }
222
223 sa = (mlib_u32 *) sp;
224
225 s0 = sa[0];
226 sa++;
227
228 #ifdef __SUNPRO_C
229 #pragma pipeloop(0)
230 #endif /* __SUNPRO_C */
231 for (i = 0; i < size - 7; i += 4, dp += 4, sa++) {
232 READ_U8_D64(tab, tab, tab, tab);
233 s0 = sa[0];
234 dp[0] = t0;
235 dp[1] = t1;
236 dp[2] = t2;
237 dp[3] = t3;
238 }
239
240 READ_U8_D64(tab, tab, tab, tab);
241 dp[0] = t0;
242 dp[1] = t1;
243 dp[2] = t2;
244 dp[3] = t3;
245 dp += 4;
246 sp = (mlib_u8 *) sa;
247 i += 4;
248 for (; i < size; i++, dp++, sp++)
249 dp[0] = tab[sp[0]];
250 }
269 for (i = 0; i < off - 1; i += 2, sp += 2) {
270 *dp++ = tab0[sp[0]];
271 *dp++ = tab1[sp[1]];
272 size -= 2;
273 }
274
275 if ((off & 1) != 0) {
276 *dp++ = tab0[*sp];
277 size--;
278 sp++;
279 tab = tab0;
280 tab0 = tab1;
281 tab1 = tab;
282 }
283
284 sa = (mlib_u32 *) sp;
285
286 s0 = sa[0];
287 sa++;
288
289 #ifdef __SUNPRO_C
290 #pragma pipeloop(0)
291 #endif /* __SUNPRO_C */
292 for (i = 0; i < size - 7; i += 4, dp += 4, sa++) {
293 READ_U8_D64(tab0, tab1, tab0, tab1);
294 s0 = sa[0];
295 dp[0] = t0;
296 dp[1] = t1;
297 dp[2] = t2;
298 dp[3] = t3;
299 }
300
301 READ_U8_D64(tab0, tab1, tab0, tab1);
302 dp[0] = t0;
303 dp[1] = t1;
304 dp[2] = t2;
305 dp[3] = t3;
306 dp += 4;
307 sp = (mlib_u8 *) sa;
308 i += 4;
309
310 for (; i < size - 1; i += 2, sp += 2) {
311 *dp++ = tab0[sp[0]];
349 tab = tab2;
350 tab2 = tab1;
351 tab1 = tab0;
352 tab0 = tab;
353 size -= 2;
354 sp += 2;
355 }
356 else if (off == 3) {
357 *dp++ = tab0[sp[0]];
358 *dp++ = tab1[sp[1]];
359 *dp++ = tab2[sp[2]];
360 size -= 3;
361 sp += 3;
362 }
363
364 sa = (mlib_u32 *) sp;
365
366 s0 = sa[0];
367 sa++;
368
369 #ifdef __SUNPRO_C
370 #pragma pipeloop(0)
371 #endif /* __SUNPRO_C */
372 for (i = 0; i < size - 7; i += 4, dp += 4, sa++) {
373 READ_U8_D64(tab0, tab1, tab2, tab0);
374 tab = tab0;
375 tab0 = tab1;
376 tab1 = tab2;
377 tab2 = tab;
378 s0 = sa[0];
379 dp[0] = t0;
380 dp[1] = t1;
381 dp[2] = t2;
382 dp[3] = t3;
383 }
384
385 READ_U8_D64(tab0, tab1, tab2, tab0);
386 dp[0] = t0;
387 dp[1] = t1;
388 dp[2] = t2;
389 dp[3] = t3;
390 dp += 4;
391 sp = (mlib_u8 *) sa;
450 sp += 2;
451 }
452 else if (off == 3) {
453 *dp++ = tab0[sp[0]];
454 *dp++ = tab1[sp[1]];
455 *dp++ = tab2[sp[2]];
456 tab = tab3;
457 tab3 = tab2;
458 tab2 = tab1;
459 tab1 = tab0;
460 tab0 = tab;
461 size -= 3;
462 sp += 3;
463 }
464
465 sa = (mlib_u32 *) sp;
466
467 s0 = sa[0];
468 sa++;
469
470 #ifdef __SUNPRO_C
471 #pragma pipeloop(0)
472 #endif /* __SUNPRO_C */
473 for (i = 0; i < size - 7; i += 4, dp += 4, sa++) {
474 READ_U8_D64(tab0, tab1, tab2, tab3);
475 s0 = sa[0];
476 dp[0] = t0;
477 dp[1] = t1;
478 dp[2] = t2;
479 dp[3] = t3;
480 }
481
482 READ_U8_D64(tab0, tab1, tab2, tab3);
483 dp[0] = t0;
484 dp[1] = t1;
485 dp[2] = t2;
486 dp[3] = t3;
487 dp += 4;
488 sp = (mlib_u8 *) sa;
489 i += 4;
490
491 if (i < size) {
492 *dp++ = tab0[(*sp)];
592 mlib_u32 s0;
593 mlib_d64 t0, t1, t2, t3;
594 mlib_s32 off;
595 mlib_s32 size = xsize;
596 mlib_d64 *dp = (mlib_d64 *) dst;
597 mlib_u8 *sp = (void *)src;
598
599 off = (mlib_s32) ((4 - ((mlib_addr) src & 3)) & 3);
600
601 for (i = 0; i < off; i++, sp++) {
602 *dp++ = tab0[sp[0]];
603 *dp++ = tab1[sp[0]];
604 size--;
605 }
606
607 sa = (mlib_u32 *) sp;
608
609 s0 = sa[0];
610 sa++;
611
612 #ifdef __SUNPRO_C
613 #pragma pipeloop(0)
614 #endif /* __SUNPRO_C */
615 for (i = 0; i < size - 7; i += 4, dp += 8, sa++) {
616 #ifdef _LITTLE_ENDIAN
617 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
618 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
619 t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8));
620 t3 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8));
621 #else
622 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8));
623 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8));
624 t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
625 t3 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
626 #endif /* _LITTLE_ENDIAN */
627 dp[0] = t0;
628 dp[1] = t1;
629 dp[2] = t2;
630 dp[3] = t3;
631 #ifdef _LITTLE_ENDIAN
632 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
633 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
634 t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8));
698 mlib_d64 t0, t1, t2, t3, t4, t5;
699 mlib_s32 off;
700 mlib_s32 size = xsize;
701 mlib_d64 *dp = (mlib_d64 *) dst;
702 mlib_u8 *sp = (void *)src;
703
704 off = (mlib_s32) ((4 - ((mlib_addr) src & 3)) & 3);
705
706 for (i = 0; i < off; i++, sp++) {
707 *dp++ = tab0[sp[0]];
708 *dp++ = tab1[sp[0]];
709 *dp++ = tab2[sp[0]];
710 size--;
711 }
712
713 sa = (mlib_u32 *) sp;
714
715 s0 = sa[0];
716 sa++;
717
718 #ifdef __SUNPRO_C
719 #pragma pipeloop(0)
720 #endif /* __SUNPRO_C */
721 for (i = 0; i < size - 7; i += 4, dp += 12, sa++) {
722 #ifdef _LITTLE_ENDIAN
723 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
724 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
725 t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8));
726 t3 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8));
727 t4 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8));
728 t5 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 5) & 0x7F8));
729 #else
730 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8));
731 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8));
732 t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 21) & 0x7F8));
733 t3 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
734 t4 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
735 t5 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8));
736 #endif /* _LITTLE_ENDIAN */
737 dp[0] = t0;
738 dp[1] = t1;
739 dp[2] = t2;
740 dp[3] = t3;
831 mlib_s32 off;
832 mlib_s32 size = xsize;
833 mlib_d64 *dp = (mlib_d64 *) dst;
834 mlib_u8 *sp = (void *)src;
835
836 off = (mlib_s32) ((4 - ((mlib_addr) src & 3)) & 3);
837
838 for (i = 0; i < off; i++, sp++) {
839 *dp++ = tab0[sp[0]];
840 *dp++ = tab1[sp[0]];
841 *dp++ = tab2[sp[0]];
842 *dp++ = tab3[sp[0]];
843 size--;
844 }
845
846 sa = (mlib_u32 *) sp;
847
848 s0 = sa[0];
849 sa++;
850
851 #ifdef __SUNPRO_C
852 #pragma pipeloop(0)
853 #endif /* __SUNPRO_C */
854 for (i = 0; i < size - 7; i += 4, dp += 16, sa++) {
855 #ifdef _LITTLE_ENDIAN
856 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
857 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
858 t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8));
859 t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 << 3) & 0x7F8));
860 #else
861 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8));
862 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8));
863 t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 21) & 0x7F8));
864 t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 21) & 0x7F8));
865 #endif /* _LITTLE_ENDIAN */
866 dp[0] = t0;
867 dp[1] = t1;
868 dp[2] = t2;
869 dp[3] = t3;
870 #ifdef _LITTLE_ENDIAN
871 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8));
872 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8));
873 t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 5) & 0x7F8));
|
1 /*
2 * Copyright (c) 1999, 2020, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
208 mlib_d64 *tab = (mlib_d64 *) table[0];
209 mlib_u32 s0;
210 mlib_d64 t0, t1, t2, t3;
211 mlib_s32 off;
212 mlib_s32 size = xsize;
213 mlib_d64 *dp = (mlib_d64 *) dst;
214 mlib_u8 *sp = (void *)src;
215
216 off = (mlib_s32) ((4 - ((mlib_addr) src & 3)) & 3);
217
218 for (i = 0; i < off; i++, sp++) {
219 *dp++ = tab[sp[0]];
220 size--;
221 }
222
223 sa = (mlib_u32 *) sp;
224
225 s0 = sa[0];
226 sa++;
227
228 for (i = 0; i < size - 7; i += 4, dp += 4, sa++) {
229 READ_U8_D64(tab, tab, tab, tab);
230 s0 = sa[0];
231 dp[0] = t0;
232 dp[1] = t1;
233 dp[2] = t2;
234 dp[3] = t3;
235 }
236
237 READ_U8_D64(tab, tab, tab, tab);
238 dp[0] = t0;
239 dp[1] = t1;
240 dp[2] = t2;
241 dp[3] = t3;
242 dp += 4;
243 sp = (mlib_u8 *) sa;
244 i += 4;
245 for (; i < size; i++, dp++, sp++)
246 dp[0] = tab[sp[0]];
247 }
266 for (i = 0; i < off - 1; i += 2, sp += 2) {
267 *dp++ = tab0[sp[0]];
268 *dp++ = tab1[sp[1]];
269 size -= 2;
270 }
271
272 if ((off & 1) != 0) {
273 *dp++ = tab0[*sp];
274 size--;
275 sp++;
276 tab = tab0;
277 tab0 = tab1;
278 tab1 = tab;
279 }
280
281 sa = (mlib_u32 *) sp;
282
283 s0 = sa[0];
284 sa++;
285
286 for (i = 0; i < size - 7; i += 4, dp += 4, sa++) {
287 READ_U8_D64(tab0, tab1, tab0, tab1);
288 s0 = sa[0];
289 dp[0] = t0;
290 dp[1] = t1;
291 dp[2] = t2;
292 dp[3] = t3;
293 }
294
295 READ_U8_D64(tab0, tab1, tab0, tab1);
296 dp[0] = t0;
297 dp[1] = t1;
298 dp[2] = t2;
299 dp[3] = t3;
300 dp += 4;
301 sp = (mlib_u8 *) sa;
302 i += 4;
303
304 for (; i < size - 1; i += 2, sp += 2) {
305 *dp++ = tab0[sp[0]];
343 tab = tab2;
344 tab2 = tab1;
345 tab1 = tab0;
346 tab0 = tab;
347 size -= 2;
348 sp += 2;
349 }
350 else if (off == 3) {
351 *dp++ = tab0[sp[0]];
352 *dp++ = tab1[sp[1]];
353 *dp++ = tab2[sp[2]];
354 size -= 3;
355 sp += 3;
356 }
357
358 sa = (mlib_u32 *) sp;
359
360 s0 = sa[0];
361 sa++;
362
363 for (i = 0; i < size - 7; i += 4, dp += 4, sa++) {
364 READ_U8_D64(tab0, tab1, tab2, tab0);
365 tab = tab0;
366 tab0 = tab1;
367 tab1 = tab2;
368 tab2 = tab;
369 s0 = sa[0];
370 dp[0] = t0;
371 dp[1] = t1;
372 dp[2] = t2;
373 dp[3] = t3;
374 }
375
376 READ_U8_D64(tab0, tab1, tab2, tab0);
377 dp[0] = t0;
378 dp[1] = t1;
379 dp[2] = t2;
380 dp[3] = t3;
381 dp += 4;
382 sp = (mlib_u8 *) sa;
441 sp += 2;
442 }
443 else if (off == 3) {
444 *dp++ = tab0[sp[0]];
445 *dp++ = tab1[sp[1]];
446 *dp++ = tab2[sp[2]];
447 tab = tab3;
448 tab3 = tab2;
449 tab2 = tab1;
450 tab1 = tab0;
451 tab0 = tab;
452 size -= 3;
453 sp += 3;
454 }
455
456 sa = (mlib_u32 *) sp;
457
458 s0 = sa[0];
459 sa++;
460
461 for (i = 0; i < size - 7; i += 4, dp += 4, sa++) {
462 READ_U8_D64(tab0, tab1, tab2, tab3);
463 s0 = sa[0];
464 dp[0] = t0;
465 dp[1] = t1;
466 dp[2] = t2;
467 dp[3] = t3;
468 }
469
470 READ_U8_D64(tab0, tab1, tab2, tab3);
471 dp[0] = t0;
472 dp[1] = t1;
473 dp[2] = t2;
474 dp[3] = t3;
475 dp += 4;
476 sp = (mlib_u8 *) sa;
477 i += 4;
478
479 if (i < size) {
480 *dp++ = tab0[(*sp)];
580 mlib_u32 s0;
581 mlib_d64 t0, t1, t2, t3;
582 mlib_s32 off;
583 mlib_s32 size = xsize;
584 mlib_d64 *dp = (mlib_d64 *) dst;
585 mlib_u8 *sp = (void *)src;
586
587 off = (mlib_s32) ((4 - ((mlib_addr) src & 3)) & 3);
588
589 for (i = 0; i < off; i++, sp++) {
590 *dp++ = tab0[sp[0]];
591 *dp++ = tab1[sp[0]];
592 size--;
593 }
594
595 sa = (mlib_u32 *) sp;
596
597 s0 = sa[0];
598 sa++;
599
600 for (i = 0; i < size - 7; i += 4, dp += 8, sa++) {
601 #ifdef _LITTLE_ENDIAN
602 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
603 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
604 t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8));
605 t3 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8));
606 #else
607 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8));
608 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8));
609 t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
610 t3 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
611 #endif /* _LITTLE_ENDIAN */
612 dp[0] = t0;
613 dp[1] = t1;
614 dp[2] = t2;
615 dp[3] = t3;
616 #ifdef _LITTLE_ENDIAN
617 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
618 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
619 t2 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8));
683 mlib_d64 t0, t1, t2, t3, t4, t5;
684 mlib_s32 off;
685 mlib_s32 size = xsize;
686 mlib_d64 *dp = (mlib_d64 *) dst;
687 mlib_u8 *sp = (void *)src;
688
689 off = (mlib_s32) ((4 - ((mlib_addr) src & 3)) & 3);
690
691 for (i = 0; i < off; i++, sp++) {
692 *dp++ = tab0[sp[0]];
693 *dp++ = tab1[sp[0]];
694 *dp++ = tab2[sp[0]];
695 size--;
696 }
697
698 sa = (mlib_u32 *) sp;
699
700 s0 = sa[0];
701 sa++;
702
703 for (i = 0; i < size - 7; i += 4, dp += 12, sa++) {
704 #ifdef _LITTLE_ENDIAN
705 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
706 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
707 t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8));
708 t3 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8));
709 t4 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8));
710 t5 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 5) & 0x7F8));
711 #else
712 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8));
713 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8));
714 t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 21) & 0x7F8));
715 t3 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 13) & 0x7F8));
716 t4 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 13) & 0x7F8));
717 t5 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 13) & 0x7F8));
718 #endif /* _LITTLE_ENDIAN */
719 dp[0] = t0;
720 dp[1] = t1;
721 dp[2] = t2;
722 dp[3] = t3;
813 mlib_s32 off;
814 mlib_s32 size = xsize;
815 mlib_d64 *dp = (mlib_d64 *) dst;
816 mlib_u8 *sp = (void *)src;
817
818 off = (mlib_s32) ((4 - ((mlib_addr) src & 3)) & 3);
819
820 for (i = 0; i < off; i++, sp++) {
821 *dp++ = tab0[sp[0]];
822 *dp++ = tab1[sp[0]];
823 *dp++ = tab2[sp[0]];
824 *dp++ = tab3[sp[0]];
825 size--;
826 }
827
828 sa = (mlib_u32 *) sp;
829
830 s0 = sa[0];
831 sa++;
832
833 for (i = 0; i < size - 7; i += 4, dp += 16, sa++) {
834 #ifdef _LITTLE_ENDIAN
835 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 << 3) & 0x7F8));
836 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 << 3) & 0x7F8));
837 t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 << 3) & 0x7F8));
838 t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 << 3) & 0x7F8));
839 #else
840 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 21) & 0x7F8));
841 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 21) & 0x7F8));
842 t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 21) & 0x7F8));
843 t3 = *(mlib_d64 *) ((mlib_u8 *) tab3 + ((s0 >> 21) & 0x7F8));
844 #endif /* _LITTLE_ENDIAN */
845 dp[0] = t0;
846 dp[1] = t1;
847 dp[2] = t2;
848 dp[3] = t3;
849 #ifdef _LITTLE_ENDIAN
850 t0 = *(mlib_d64 *) ((mlib_u8 *) tab0 + ((s0 >> 5) & 0x7F8));
851 t1 = *(mlib_d64 *) ((mlib_u8 *) tab1 + ((s0 >> 5) & 0x7F8));
852 t2 = *(mlib_d64 *) ((mlib_u8 *) tab2 + ((s0 >> 5) & 0x7F8));
|