2 # The bn_div64 is actually gcc output but the other parts are hand done.
3 # Thanks to tzeruch@ceddec.com for sending me the gcc output for
12 .globl bn_mul_add_word
18 subq $18,2,$25 # num=-2
23 subq $18,2,$18 # num-=2
24 subq $25,2,$25 # num-=2
29 mulq $19,$1,$3 # a[0]*w low part r3
30 umulh $19,$1,$1 # a[0]*w high part r1
31 mulq $19,$2,$4 # a[1]*w low part r4
32 umulh $19,$2,$2 # a[1]*w high part r2
34 ldq $22,0($16) # r[0] r22
35 ldq $23,8($16) # r[1] r23
37 addq $3,$22,$3 # a0 low part + r[0]
38 addq $4,$23,$4 # a1 low part + r[1]
39 cmpult $3,$22,$5 # overflow?
40 cmpult $4,$23,$6 # overflow?
41 addq $5,$1,$1 # high part + overflow
42 addq $6,$2,$2 # high part + overflow
45 cmpult $3,$0,$5 # overflow?
47 addq $5,$1,$0 # c=high part + overflow
50 cmpult $4,$0,$5 # overflow?
52 addq $5,$2,$0 # c=high part + overflow
63 umulh $19,$1,$3 # a[0]*w high part
64 mulq $19,$1,$1 # a[0]*w low part
66 addq $1,$2,$1 # low part + r[0]
67 cmpult $1,$2,$4 # overflow?
68 addq $4,$3,$3 # high part + overflow
70 cmpult $1,$0,$4 # overflow?
71 addq $4,$3,$0 # c=high part + overflow
85 subq $18,2,$25 # num=-2
90 subq $18,2,$18 # num-=2
91 subq $25,2,$25 # num-=2
96 mulq $19,$1,$3 # a[0]*w low part r3
97 umulh $19,$1,$1 # a[0]*w high part r1
98 mulq $19,$2,$4 # a[1]*w low part r4
99 umulh $19,$2,$2 # a[1]*w high part r2
101 addq $3,$0,$3 # add c
102 cmpult $3,$0,$5 # overflow?
104 addq $5,$1,$0 # c=high part + overflow
106 addq $4,$0,$4 # add c
107 cmpult $4,$0,$5 # overflow?
109 addq $5,$2,$0 # c=high part + overflow
120 umulh $19,$1,$3 # a[0]*w high part
121 mulq $19,$1,$1 # a[0]*w low part
122 addq $1,$0,$1 # add c
123 cmpult $1,$0,$4 # overflow?
124 addq $4,$3,$0 # c=high part + overflow
137 subq $18,2,$25 # num=-2
141 subq $18,2,$18 # num-=2
142 subq $25,2,$25 # num-=2
147 mulq $1,$1,$2 # a[0]*w low part r2
148 umulh $1,$1,$3 # a[0]*w high part r3
149 mulq $4,$4,$5 # a[1]*w low part r5
150 umulh $4,$4,$6 # a[1]*w high part r6
154 stq $5,16($16) # r[3]
155 stq $6,24($16) # r[4]
166 mulq $1,$1,$2 # a[0]*w low part r2
167 umulh $1,$1,$3 # a[0]*w high part r3
177 # What follows was taken directly from the C compiler with a few
178 # hacks to redo the lables.
208 jsr $26,BN_num_bits_word
216 # lda $16,_IO_stderr_
308 .ident "GCC: (GNU) 2.7.2.1"