< prev index next >

src/java.desktop/share/native/libmlib_image/mlib_ImageLookUp_64.c

Print this page
rev 59383 : [mq]: final
   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));


< prev index next >