Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 610104
Collapse All | Expand All

(-)a/test.c (-14 / +40 lines)
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
- 

Return to bug 610104