|
|
1.1 ! root 1: .file "poly_div.S" ! 2: /*---------------------------------------------------------------------------+ ! 3: | poly_div.S | ! 4: | | ! 5: | A set of functions to divide 64 bit integers by fixed numbers. | ! 6: | | ! 7: | Copyright (C) 1992 W. Metzenthen, 22 Parker St, Ormond, Vic 3163, | ! 8: | Australia. E-mail [email protected] | ! 9: | | ! 10: | Call from C as: | ! 11: | void poly_div2(long long *x) | ! 12: | void poly_div4(long long *x) | ! 13: | void poly_div16(long long *x) | ! 14: | | ! 15: +---------------------------------------------------------------------------*/ ! 16: ! 17: #include "fpu_asm.h" ! 18: ! 19: .text ! 20: ! 21: /*---------------------------------------------------------------------------*/ ! 22: .align 2,144 ! 23: .globl poly_div2 ! 24: poly_div2: ! 25: pushl %ebp ! 26: movl %esp,%ebp ! 27: ! 28: movl PARAM1,%ecx ! 29: movw (%ecx),%ax ! 30: ! 31: shrl $1,4(%ecx) ! 32: rcrl $1,(%ecx) ! 33: ! 34: testw $1,%ax ! 35: je poly_div2_exit ! 36: ! 37: addl $1,(%ecx) ! 38: adcl $0,4(%ecx) ! 39: poly_div2_exit: ! 40: ! 41: leave ! 42: ret ! 43: /*---------------------------------------------------------------------------*/ ! 44: .align 2,144 ! 45: .globl poly_div4 ! 46: poly_div4: ! 47: pushl %ebp ! 48: movl %esp,%ebp ! 49: ! 50: movl PARAM1,%ecx ! 51: movw (%ecx),%ax ! 52: ! 53: movl 4(%ecx),%edx ! 54: shll $30,%edx ! 55: ! 56: shrl $2,4(%ecx) ! 57: shrl $2,(%ecx) ! 58: ! 59: orl %edx,(%ecx) ! 60: ! 61: testw $2,%ax ! 62: je poly_div4_exit ! 63: ! 64: addl $1,(%ecx) ! 65: adcl $0,4(%ecx) ! 66: poly_div4_exit: ! 67: ! 68: leave ! 69: ret ! 70: /*---------------------------------------------------------------------------*/ ! 71: .align 2,144 ! 72: .globl poly_div16 ! 73: poly_div16: ! 74: pushl %ebp ! 75: movl %esp,%ebp ! 76: ! 77: movl PARAM1,%ecx ! 78: movw (%ecx),%ax ! 79: ! 80: movl 4(%ecx),%edx ! 81: shll $28,%edx ! 82: ! 83: shrl $4,4(%ecx) ! 84: shrl $4,(%ecx) ! 85: ! 86: orl %edx,(%ecx) ! 87: ! 88: testw $8,%ax ! 89: je poly_div16_exit ! 90: ! 91: addl $1,(%ecx) ! 92: adcl $0,4(%ecx) ! 93: poly_div16_exit: ! 94: ! 95: leave ! 96: ret ! 97: /*---------------------------------------------------------------------------*/
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.