1/* Kcmpd.s 1.3 86/01/05 */ 2 3#include "../tahoe/SYS.h" 4 5/* 6 * cmpd(hi1, lo1, hi2, lo2) 7 * register hi1, hi2; 8 * register unsigned lo1, lo2; 9 *{ 10 * if(hi1 < 0) { 11 * hi1 ^= 0x80000000; 12 * if(lo1) { 13 * lo1 = -lo1; 14 * hi1 = ~hi1; 15 * } else 16 * hi1 = -hi1; 17 * } 18 * if(hi2 < 0) { 19 * hi2 ^= 0x80000000; 20 * if(lo2) { 21 * lo2 = -lo2; 22 * hi2 = ~hi2; 23 * } else 24 * hi2 = -hi2; 25 * } 26 * if(hi1 != hi2) 27 * return(hi1>hi2 ? 1 : -1); 28 * if(lo1 != lo2) 29 * return(lo1>lo2 ? 1 : -1); 30 * return(0); 31 *} 32 */ 33 .text 34ENTRY(Kcmpd, 0) 35 movl 8(fp),r3 36 movl 12(fp),r4 37 movl 16(fp),r2 38 movl 4(fp),r5 39 jgeq 1f 40 xorl2 $0x80000000,r5 41 tstl r3 42 jeql 2f 43 mnegl r3,r3 44 mcoml r5,r5 45 jbr 1f 462: 47 mnegl r5,r5 481: 49 tstl r4 50 jgeq 1f 51 xorl2 $0x80000000,r4 52 tstl r2 53 jeql 2f 54 mnegl r2,r2 55 mcoml r4,r4 56 jbr 1f 572: 58 mnegl r4,r4 591: 60 cmpl r5,r4 61 jeql 1f 62 jleq 2f 63 movl $1,r0 64 ret 652: 66 mnegl $1,r0 67 ret 681: 69 cmpl r3,r2 70 jeql 1f 71 jlequ 2f 72 movl $1,r0 73 ret 742: 75 mnegl $1,r0 76 ret 771: 78 clrl r0 79 ret 80