|
Lines 369-374
void movinvr(int me)
Link Here
|
| 369 |
*/ |
369 |
*/ |
| 370 |
|
370 |
|
| 371 |
asm __volatile__ ( |
371 |
asm __volatile__ ( |
|
|
372 |
"pushl %%ebx\n\t" |
| 373 |
"mov %1,%%ebx\n\t" |
| 372 |
"jmp L200\n\t" |
374 |
"jmp L200\n\t" |
| 373 |
".p2align 4,,7\n\t" |
375 |
".p2align 4,,7\n\t" |
| 374 |
"L201:\n\t" |
376 |
"L201:\n\t" |
|
Lines 380-386
void movinvr(int me)
Link Here
|
| 380 |
"movl %%eax,(%%edi)\n\t" |
382 |
"movl %%eax,(%%edi)\n\t" |
| 381 |
"cmpl %%ebx,%%edi\n\t" |
383 |
"cmpl %%ebx,%%edi\n\t" |
| 382 |
"jb L201\n\t" |
384 |
"jb L201\n\t" |
| 383 |
: : "D" (p), "b" (pe), "c" (me) |
385 |
"popl %%ebx\n\t" |
|
|
386 |
: : "D" (p), "r" (pe), "c" (me) |
| 384 |
: "eax" |
387 |
: "eax" |
| 385 |
); |
388 |
); |
| 386 |
p = pe + 1; |
389 |
p = pe + 1; |
|
Lines 433-439
void movinvr(int me)
Link Here
|
| 433 |
xorVal = 0; |
436 |
xorVal = 0; |
| 434 |
} |
437 |
} |
| 435 |
asm __volatile__ ( |
438 |
asm __volatile__ ( |
| 436 |
|
439 |
"pushl %%ebx\n\t" |
|
|
440 |
"movl %2,%%ebx\n\t" |
| 437 |
"pushl %%ebp\n\t" |
441 |
"pushl %%ebp\n\t" |
| 438 |
|
442 |
|
| 439 |
// Skip first increment |
443 |
// Skip first increment |
|
Lines 499-505
void movinvr(int me)
Link Here
|
| 499 |
|
503 |
|
| 500 |
"L24:\n\t" |
504 |
"L24:\n\t" |
| 501 |
"popl %%ebp\n\t" |
505 |
"popl %%ebp\n\t" |
| 502 |
:: "D" (p), "S" (pe), "b" (xorVal), |
506 |
"popl %%ebx\n\t" |
|
|
507 |
:: "D" (p), "S" (pe), "r" (xorVal), |
| 503 |
"d" (me) |
508 |
"d" (me) |
| 504 |
: "eax", "ecx" |
509 |
: "eax", "ecx" |
| 505 |
); |
510 |
); |
|
Lines 601-606
void movinv1 (int iter, ulong p1, ulong p2, int me)
Link Here
|
| 601 |
}*/ |
606 |
}*/ |
| 602 |
|
607 |
|
| 603 |
asm __volatile__ ( |
608 |
asm __volatile__ ( |
|
|
609 |
"pushl %%ebx\n\t" \ |
| 610 |
"movl %3,%%ebx\n\t" \ |
| 604 |
"jmp L2\n\t" \ |
611 |
"jmp L2\n\t" \ |
| 605 |
".p2align 4,,7\n\t" \ |
612 |
".p2align 4,,7\n\t" \ |
| 606 |
"L0:\n\t" \ |
613 |
"L0:\n\t" \ |
|
Lines 630-636
void movinv1 (int iter, ulong p1, ulong p2, int me)
Link Here
|
| 630 |
"jmp L5\n" \ |
637 |
"jmp L5\n" \ |
| 631 |
|
638 |
|
| 632 |
"L4:\n\t" \ |
639 |
"L4:\n\t" \ |
| 633 |
:: "a" (p1), "D" (p), "d" (pe), "b" (p2) |
640 |
"popl %%ebx\n\t" \ |
|
|
641 |
:: "a" (p1), "D" (p), "d" (pe), "r" (p2) |
| 634 |
: "ecx" |
642 |
: "ecx" |
| 635 |
); |
643 |
); |
| 636 |
p = pe + 1; |
644 |
p = pe + 1; |
|
Lines 673-678
void movinv1 (int iter, ulong p1, ulong p2, int me)
Link Here
|
| 673 |
} while (--p >= pe);*/ |
681 |
} while (--p >= pe);*/ |
| 674 |
|
682 |
|
| 675 |
asm __volatile__ ( |
683 |
asm __volatile__ ( |
|
|
684 |
"pushl %%ebx\n\t" |
| 685 |
"movl %3,%%ebx\n\t" |
| 676 |
"jmp L9\n\t" |
686 |
"jmp L9\n\t" |
| 677 |
".p2align 4,,7\n\t" |
687 |
".p2align 4,,7\n\t" |
| 678 |
"L11:\n\t" |
688 |
"L11:\n\t" |
|
Lines 702-708
void movinv1 (int iter, ulong p1, ulong p2, int me)
Link Here
|
| 702 |
"jmp L10\n" |
712 |
"jmp L10\n" |
| 703 |
|
713 |
|
| 704 |
"L7:\n\t" |
714 |
"L7:\n\t" |
| 705 |
:: "a" (p1), "D" (p), "d" (pe), "b" (p2) |
715 |
"popl %%ebx\n\t" |
|
|
716 |
:: "a" (p1), "D" (p), "d" (pe), "r" (p2) |
| 706 |
: "ecx" |
717 |
: "ecx" |
| 707 |
); |
718 |
); |
| 708 |
p = pe - 1; |
719 |
p = pe - 1; |
|
Lines 760-765
void movinv32(int iter, ulong p1, ulong lb, ulong hb, int sval, int off,int me)
Link Here
|
| 760 |
* } |
771 |
* } |
| 761 |
*/ |
772 |
*/ |
| 762 |
asm __volatile__ ( |
773 |
asm __volatile__ ( |
|
|
774 |
"pushl %%ebx\n\t" |
| 775 |
"movl %4,%%ebx\n\t" |
| 763 |
"jmp L20\n\t" |
776 |
"jmp L20\n\t" |
| 764 |
".p2align 4,,7\n\t" |
777 |
".p2align 4,,7\n\t" |
| 765 |
"L923:\n\t" |
778 |
"L923:\n\t" |
|
Lines 778-785
void movinv32(int iter, ulong p1, ulong lb, ulong hb, int sval, int off,int me)
Link Here
|
| 778 |
"L22:\n\t" |
791 |
"L22:\n\t" |
| 779 |
"cmpl %%edx,%%edi\n\t" |
792 |
"cmpl %%edx,%%edi\n\t" |
| 780 |
"jb L923\n\t" |
793 |
"jb L923\n\t" |
| 781 |
: "=b" (k), "=c" (pat) |
794 |
"movl %%ebx,%0\n\t" |
| 782 |
: "D" (p),"d" (pe),"b" (k),"c" (pat), |
795 |
"popl %%ebx\n\t" |
|
|
796 |
: "=r" (k), "=c" (pat) |
| 797 |
: "D" (p),"d" (pe),"r" (k),"c" (pat), |
| 783 |
"a" (sval), "S" (lb) |
798 |
"a" (sval), "S" (lb) |
| 784 |
); |
799 |
); |
| 785 |
p = pe + 1; |
800 |
p = pe + 1; |
|
Lines 833-838
void movinv32(int iter, ulong p1, ulong lb, ulong hb, int sval, int off,int me)
Link Here
|
| 833 |
* } |
848 |
* } |
| 834 |
*/ |
849 |
*/ |
| 835 |
asm __volatile__ ( |
850 |
asm __volatile__ ( |
|
|
851 |
"pushl %%ebx\n\t" |
| 852 |
"movl %4,%%ebx\n\t" |
| 836 |
"pushl %%ebp\n\t" |
853 |
"pushl %%ebp\n\t" |
| 837 |
"jmp L30\n\t" |
854 |
"jmp L30\n\t" |
| 838 |
".p2align 4,,7\n\t" |
855 |
".p2align 4,,7\n\t" |
|
Lines 881-888
void movinv32(int iter, ulong p1, ulong lb, ulong hb, int sval, int off,int me)
Link Here
|
| 881 |
|
898 |
|
| 882 |
"L33:\n\t" |
899 |
"L33:\n\t" |
| 883 |
"popl %%ebp\n\t" |
900 |
"popl %%ebp\n\t" |
| 884 |
: "=b" (k),"=c" (pat) |
901 |
"movl %%ebx,%0\n\t" |
| 885 |
: "D" (p),"d" (pe),"b" (k),"c" (pat), |
902 |
"popl %%ebx\n\t" |
|
|
903 |
: "=r" (k),"=c" (pat) |
| 904 |
: "D" (p),"d" (pe),"r" (k),"c" (pat), |
| 886 |
"a" (sval), "S" (lb) |
905 |
"a" (sval), "S" (lb) |
| 887 |
); |
906 |
); |
| 888 |
p = pe + 1; |
907 |
p = pe + 1; |
|
Lines 942-947
void movinv32(int iter, ulong p1, ulong lb, ulong hb, int sval, int off,int me)
Link Here
|
| 942 |
* }; |
961 |
* }; |
| 943 |
*/ |
962 |
*/ |
| 944 |
asm __volatile__ ( |
963 |
asm __volatile__ ( |
|
|
964 |
"pushl %%ebx\n\t" |
| 965 |
"movl %4,%%ebx\n\t" |
| 945 |
"pushl %%ebp\n\t" |
966 |
"pushl %%ebp\n\t" |
| 946 |
"jmp L40\n\t" |
967 |
"jmp L40\n\t" |
| 947 |
".p2align 4,,7\n\t" |
968 |
".p2align 4,,7\n\t" |
|
Lines 990-997
void movinv32(int iter, ulong p1, ulong lb, ulong hb, int sval, int off,int me)
Link Here
|
| 990 |
|
1011 |
|
| 991 |
"L43:\n\t" |
1012 |
"L43:\n\t" |
| 992 |
"popl %%ebp\n\t" |
1013 |
"popl %%ebp\n\t" |
| 993 |
: "=b" (k), "=c" (pat) |
1014 |
"movl %%ebx,%0\n\t" |
| 994 |
: "D" (p),"d" (pe),"b" (k),"c" (pat), |
1015 |
"popl %%ebx\n\t" |
|
|
1016 |
: "=r" (k), "=c" (pat) |
| 1017 |
: "D" (p),"d" (pe),"r" (k),"c" (pat), |
| 995 |
"a" (p3), "S" (hb) |
1018 |
"a" (p3), "S" (hb) |
| 996 |
); |
1019 |
); |
| 997 |
p = pe - 1; |
1020 |
p = pe - 1; |
|
Lines 1097-1102
void modtst(int offset, int iter, ulong p1, ulong p2, int me)
Link Here
|
| 1097 |
* } |
1120 |
* } |
| 1098 |
*/ |
1121 |
*/ |
| 1099 |
asm __volatile__ ( |
1122 |
asm __volatile__ ( |
|
|
1123 |
"pushl %%ebx\n\t" \ |
| 1124 |
"movl %4,%%ebx\n\t" \ |
| 1100 |
"jmp L50\n\t" \ |
1125 |
"jmp L50\n\t" \ |
| 1101 |
".p2align 4,,7\n\t" \ |
1126 |
".p2align 4,,7\n\t" \ |
| 1102 |
|
1127 |
|
|
Lines 1114-1122
void modtst(int offset, int iter, ulong p1, ulong p2, int me)
Link Here
|
| 1114 |
"L53:\n\t" \ |
1139 |
"L53:\n\t" \ |
| 1115 |
"cmpl %%edx,%%edi\n\t" \ |
1140 |
"cmpl %%edx,%%edi\n\t" \ |
| 1116 |
"jb L54\n\t" \ |
1141 |
"jb L54\n\t" \ |
| 1117 |
: "=b" (k) |
1142 |
"movl %%ebx,%0\n\t" \ |
|
|
1143 |
"popl %%ebx\n\t" \ |
| 1144 |
: "=r" (k) |
| 1118 |
: "D" (p), "d" (pe), "a" (p2), |
1145 |
: "D" (p), "d" (pe), "a" (p2), |
| 1119 |
"b" (k), "c" (offset) |
1146 |
"r" (k), "c" (offset) |
| 1120 |
); |
1147 |
); |
| 1121 |
p = pe + 1; |
1148 |
p = pe + 1; |
| 1122 |
} while (!done); |
1149 |
} while (!done); |
| 1123 |
- |
|
|