1 1.1.1.2 christos #include "sparc_arch.h" 2 1.1.1.2 christos 3 1.1 christos .section ".text",#alloc,#execinstr 4 1.1 christos 5 1.1 christos .global bn_mul_mont_int 6 1.1 christos .align 32 7 1.1 christos bn_mul_mont_int: 8 1.1 christos cmp %o5,4 ! 128 bits minimum 9 1.1 christos bge,pt %icc,.Lenter 10 1.1 christos sethi %hi(0xffffffff),%g1 11 1.1 christos retl 12 1.1 christos clr %o0 13 1.1 christos .align 32 14 1.1 christos .Lenter: 15 1.1.1.2 christos save %sp,-STACK_FRAME,%sp 16 1.1 christos sll %i5,2,%i5 ! num*=4 17 1.1 christos or %g1,%lo(0xffffffff),%g1 18 1.1 christos ld [%i4],%i4 19 1.1 christos cmp %i1,%i2 20 1.1 christos and %i5,%g1,%i5 21 1.1 christos ld [%i2],%l2 ! bp[0] 22 1.1 christos nop 23 1.1 christos 24 1.1.1.2 christos add %sp,STACK_BIAS,%o7 ! real top of stack 25 1.1 christos ld [%i1],%o0 ! ap[0] ! redundant in squaring context 26 1.1 christos sub %o7,%i5,%o7 27 1.1 christos ld [%i1+4],%l5 ! ap[1] 28 1.1 christos and %o7,-1024,%o7 29 1.1 christos ld [%i3],%o1 ! np[0] 30 1.1.1.2 christos sub %o7,STACK_BIAS,%sp ! alloca 31 1.1 christos ld [%i3+4],%l6 ! np[1] 32 1.1.1.2 christos be,pt SIZE_T_CC,.Lbn_sqr_mont 33 1.1 christos mov 12,%l1 34 1.1 christos 35 1.1 christos mulx %o0,%l2,%o0 ! ap[0]*bp[0] 36 1.1 christos mulx %l5,%l2,%g4 !prologue! ap[1]*bp[0] 37 1.1 christos and %o0,%g1,%o3 38 1.1.1.2 christos add %sp,STACK_BIAS+STACK_FRAME,%l4 39 1.1 christos ld [%i1+8],%l5 !prologue! 40 1.1 christos 41 1.1 christos mulx %i4,%o3,%l3 ! "t[0]"*n0 42 1.1 christos and %l3,%g1,%l3 43 1.1 christos 44 1.1 christos mulx %o1,%l3,%o1 ! np[0]*"t[0]"*n0 45 1.1 christos mulx %l6,%l3,%o4 !prologue! np[1]*"t[0]"*n0 46 1.1 christos srlx %o0,32,%o0 47 1.1 christos add %o3,%o1,%o1 48 1.1 christos ld [%i3+8],%l6 !prologue! 49 1.1 christos srlx %o1,32,%o1 50 1.1 christos mov %g4,%o3 !prologue! 51 1.1 christos 52 1.1 christos .L1st: 53 1.1 christos mulx %l5,%l2,%g4 54 1.1 christos mulx %l6,%l3,%g5 55 1.1 christos add %o3,%o0,%o0 56 1.1 christos ld [%i1+%l1],%l5 ! ap[j] 57 1.1 christos and %o0,%g1,%o3 58 1.1 christos add %o4,%o1,%o1 59 1.1 christos ld [%i3+%l1],%l6 ! np[j] 60 1.1 christos srlx %o0,32,%o0 61 1.1 christos add %o3,%o1,%o1 62 1.1 christos add %l1,4,%l1 ! j++ 63 1.1 christos mov %g4,%o3 64 1.1 christos st %o1,[%l4] 65 1.1 christos cmp %l1,%i5 66 1.1 christos mov %g5,%o4 67 1.1 christos srlx %o1,32,%o1 68 1.1 christos bl %icc,.L1st 69 1.1 christos add %l4,4,%l4 ! tp++ 70 1.1 christos !.L1st 71 1.1 christos 72 1.1 christos mulx %l5,%l2,%g4 !epilogue! 73 1.1 christos mulx %l6,%l3,%g5 74 1.1 christos add %o3,%o0,%o0 75 1.1 christos and %o0,%g1,%o3 76 1.1 christos add %o4,%o1,%o1 77 1.1 christos srlx %o0,32,%o0 78 1.1 christos add %o3,%o1,%o1 79 1.1 christos st %o1,[%l4] 80 1.1 christos srlx %o1,32,%o1 81 1.1 christos 82 1.1 christos add %g4,%o0,%o0 83 1.1 christos and %o0,%g1,%o3 84 1.1 christos add %g5,%o1,%o1 85 1.1 christos srlx %o0,32,%o0 86 1.1 christos add %o3,%o1,%o1 87 1.1 christos st %o1,[%l4+4] 88 1.1 christos srlx %o1,32,%o1 89 1.1 christos 90 1.1 christos add %o0,%o1,%o1 91 1.1 christos st %o1,[%l4+8] 92 1.1 christos srlx %o1,32,%o2 93 1.1 christos 94 1.1 christos mov 4,%l0 ! i++ 96 1.1 christos ld [%i2+4],%l2 ! bp[1] 97 1.1.1.2 christos .Louter: 98 1.1 christos add %sp,STACK_BIAS+STACK_FRAME,%l4 99 1.1 christos ld [%i1],%o0 ! ap[0] 100 1.1 christos ld [%i1+4],%l5 ! ap[1] 101 1.1 christos ld [%i3],%o1 ! np[0] 102 1.1 christos ld [%i3+4],%l6 ! np[1] 103 1.1 christos ld [%l4],%g5 ! tp[0] 104 1.1 christos ld [%l4+4],%l7 ! tp[1] 105 1.1 christos mov 12,%l1 106 1.1 christos 107 1.1 christos mulx %o0,%l2,%o0 108 1.1 christos mulx %l5,%l2,%g4 !prologue! 109 1.1 christos add %g5,%o0,%o0 110 1.1 christos ld [%i1+8],%l5 !prologue! 111 1.1 christos and %o0,%g1,%o3 112 1.1 christos 113 1.1 christos mulx %i4,%o3,%l3 114 1.1 christos and %l3,%g1,%l3 115 1.1 christos 116 1.1 christos mulx %o1,%l3,%o1 117 1.1 christos mulx %l6,%l3,%o4 !prologue! 118 1.1 christos srlx %o0,32,%o0 119 1.1 christos add %o3,%o1,%o1 120 1.1 christos ld [%i3+8],%l6 !prologue! 121 1.1 christos srlx %o1,32,%o1 122 1.1 christos mov %g4,%o3 !prologue! 123 1.1 christos 124 1.1 christos .Linner: 125 1.1 christos mulx %l5,%l2,%g4 126 1.1 christos mulx %l6,%l3,%g5 127 1.1 christos add %l7,%o0,%o0 128 1.1 christos ld [%i1+%l1],%l5 ! ap[j] 129 1.1 christos add %o3,%o0,%o0 130 1.1 christos add %o4,%o1,%o1 131 1.1 christos ld [%i3+%l1],%l6 ! np[j] 132 1.1 christos and %o0,%g1,%o3 133 1.1 christos ld [%l4+8],%l7 ! tp[j] 134 1.1 christos srlx %o0,32,%o0 135 1.1 christos add %o3,%o1,%o1 136 1.1 christos add %l1,4,%l1 ! j++ 137 1.1 christos mov %g4,%o3 138 1.1 christos st %o1,[%l4] ! tp[j-1] 139 1.1 christos srlx %o1,32,%o1 140 1.1 christos mov %g5,%o4 141 1.1 christos cmp %l1,%i5 142 1.1 christos bl %icc,.Linner 143 1.1 christos add %l4,4,%l4 ! tp++ 144 1.1 christos !.Linner 145 1.1 christos 146 1.1 christos mulx %l5,%l2,%g4 !epilogue! 147 1.1 christos mulx %l6,%l3,%g5 148 1.1 christos add %l7,%o0,%o0 149 1.1 christos add %o3,%o0,%o0 150 1.1 christos ld [%l4+8],%l7 ! tp[j] 151 1.1 christos and %o0,%g1,%o3 152 1.1 christos add %o4,%o1,%o1 153 1.1 christos srlx %o0,32,%o0 154 1.1 christos add %o3,%o1,%o1 155 1.1 christos st %o1,[%l4] ! tp[j-1] 156 1.1 christos srlx %o1,32,%o1 157 1.1 christos 158 1.1 christos add %l7,%o0,%o0 159 1.1 christos add %g4,%o0,%o0 160 1.1 christos and %o0,%g1,%o3 161 1.1 christos add %g5,%o1,%o1 162 1.1 christos add %o3,%o1,%o1 163 1.1 christos st %o1,[%l4+4] ! tp[j-1] 164 1.1 christos srlx %o0,32,%o0 165 1.1 christos add %l0,4,%l0 ! i++ 166 1.1 christos srlx %o1,32,%o1 167 1.1 christos 168 1.1 christos add %o0,%o1,%o1 169 1.1 christos cmp %l0,%i5 170 1.1 christos add %o2,%o1,%o1 171 1.1 christos st %o1,[%l4+8] 172 1.1 christos 173 1.1 christos srlx %o1,32,%o2 174 1.1 christos bl,a %icc,.Louter 175 1.1 christos ld [%i2+%l0],%l2 ! bp[i] 176 1.1 christos !.Louter 177 1.1 christos 178 1.1 christos add %l4,12,%l4 179 1.1 christos 180 1.1 christos .Ltail: 182 1.1 christos add %i3,%i5,%i3 183 1.1 christos add %i0,%i5,%i0 184 1.1 christos sub %g0,%i5,%o7 ! k=-num 185 1.1 christos ba .Lsub 186 1.1 christos subcc %g0,%g0,%g0 ! clear %icc.c 187 1.1 christos .align 16 188 1.1 christos .Lsub: 189 1.1 christos ld [%l4+%o7],%o0 190 1.1 christos ld [%i3+%o7],%o1 191 1.1 christos subccc %o0,%o1,%o1 ! tp[j]-np[j] 192 1.1 christos add %i0,%o7,%l0 193 1.1 christos add %o7,4,%o7 194 1.1.1.2 christos brnz %o7,.Lsub 195 1.1 christos st %o1,[%l0] 196 1.1 christos subccc %o2,0,%o2 ! handle upmost overflow bit 197 1.1 christos sub %g0,%i5,%o7 198 1.1.1.2 christos 199 1.1.1.2 christos .Lcopy: 200 1.1 christos ld [%l4+%o7],%o1 ! conditional copy 201 1.1.1.2 christos ld [%i0+%o7],%o0 202 1.1 christos st %g0,[%l4+%o7] ! zap tp 203 1.1 christos movcs %icc,%o1,%o0 204 1.1 christos st %o0,[%i0+%o7] 205 1.1 christos add %o7,4,%o7 206 1.1 christos brnz %o7,.Lcopy 207 1.1 christos nop 208 1.1 christos mov 1,%i0 209 1.1 christos ret 210 1.1 christos restore 211 1.1 christos .align 32 212 1.1 christos .Lbn_sqr_mont: 213 1.1 christos mulx %l2,%l2,%o0 ! ap[0]*ap[0] 214 1.1.1.2 christos mulx %l5,%l2,%g4 !prologue! 215 1.1 christos and %o0,%g1,%o3 216 1.1 christos add %sp,STACK_BIAS+STACK_FRAME,%l4 217 1.1 christos ld [%i1+8],%l5 !prologue! 218 1.1 christos 219 1.1 christos mulx %i4,%o3,%l3 ! "t[0]"*n0 220 1.1 christos srlx %o0,32,%o0 221 1.1 christos and %l3,%g1,%l3 222 1.1 christos 223 1.1.1.2 christos mulx %o1,%l3,%o1 ! np[0]*"t[0]"*n0 224 1.1 christos mulx %l6,%l3,%o4 !prologue! 225 1.1 christos and %o0,1,%o5 226 1.1 christos ld [%i3+8],%l6 !prologue! 227 1.1 christos srlx %o0,1,%o0 228 1.1 christos add %o3,%o1,%o1 229 1.1 christos srlx %o1,32,%o1 230 1.1 christos mov %g4,%o3 !prologue! 231 1.1 christos 232 1.1 christos .Lsqr_1st: 233 1.1 christos mulx %l5,%l2,%g4 234 1.1 christos mulx %l6,%l3,%g5 235 1.1 christos add %o3,%o0,%o0 ! ap[j]*a0+c0 236 1.1 christos add %o4,%o1,%o1 237 1.1 christos ld [%i1+%l1],%l5 ! ap[j] 238 1.1 christos and %o0,%g1,%o3 239 1.1 christos ld [%i3+%l1],%l6 ! np[j] 240 1.1.1.2 christos srlx %o0,32,%o0 241 1.1 christos add %o3,%o3,%o3 242 1.1.1.2 christos or %o5,%o3,%o3 243 1.1 christos mov %g5,%o4 244 1.1 christos srlx %o3,32,%o5 245 1.1 christos add %l1,4,%l1 ! j++ 246 1.1 christos and %o3,%g1,%o3 247 1.1 christos cmp %l1,%i5 248 1.1 christos add %o3,%o1,%o1 249 1.1 christos st %o1,[%l4] 250 1.1 christos mov %g4,%o3 251 1.1 christos srlx %o1,32,%o1 252 1.1 christos bl %icc,.Lsqr_1st 253 1.1 christos add %l4,4,%l4 ! tp++ 254 1.1 christos !.Lsqr_1st 255 1.1 christos 256 1.1 christos mulx %l5,%l2,%g4 ! epilogue 257 1.1 christos mulx %l6,%l3,%g5 258 1.1 christos add %o3,%o0,%o0 ! ap[j]*a0+c0 259 1.1 christos add %o4,%o1,%o1 260 1.1 christos and %o0,%g1,%o3 261 1.1.1.2 christos srlx %o0,32,%o0 262 1.1.1.2 christos add %o3,%o3,%o3 263 1.1 christos or %o5,%o3,%o3 264 1.1 christos srlx %o3,32,%o5 265 1.1 christos and %o3,%g1,%o3 266 1.1 christos add %o3,%o1,%o1 267 1.1 christos st %o1,[%l4] 268 1.1 christos srlx %o1,32,%o1 269 1.1 christos 270 1.1 christos add %g4,%o0,%o0 ! ap[j]*a0+c0 271 1.1 christos add %g5,%o1,%o1 272 1.1 christos and %o0,%g1,%o3 273 1.1.1.2 christos srlx %o0,32,%o0 274 1.1.1.2 christos add %o3,%o3,%o3 275 1.1 christos or %o5,%o3,%o3 276 1.1 christos srlx %o3,32,%o5 277 1.1 christos and %o3,%g1,%o3 278 1.1 christos add %o3,%o1,%o1 279 1.1 christos st %o1,[%l4+4] 280 1.1 christos srlx %o1,32,%o1 281 1.1.1.2 christos 282 1.1 christos add %o0,%o0,%o0 283 1.1 christos or %o5,%o0,%o0 284 1.1 christos add %o0,%o1,%o1 285 1.1 christos st %o1,[%l4+8] 286 1.1.1.2 christos srlx %o1,32,%o2 287 1.1.1.2 christos 288 1.1.1.2 christos ld [%sp+STACK_BIAS+STACK_FRAME],%g4 ! tp[0] 290 1.1 christos ld [%sp+STACK_BIAS+STACK_FRAME+4],%g5 ! tp[1] 291 1.1 christos ld [%sp+STACK_BIAS+STACK_FRAME+8],%l7 ! tp[2] 292 1.1 christos ld [%i1+4],%l2 ! ap[1] 293 1.1 christos ld [%i1+8],%l5 ! ap[2] 294 1.1 christos ld [%i3],%o1 ! np[0] 295 1.1 christos ld [%i3+4],%l6 ! np[1] 296 1.1 christos mulx %i4,%g4,%l3 297 1.1 christos 298 1.1 christos mulx %l2,%l2,%o0 299 1.1 christos and %l3,%g1,%l3 300 1.1 christos 301 1.1 christos mulx %o1,%l3,%o1 302 1.1 christos mulx %l6,%l3,%o4 303 1.1 christos add %g4,%o1,%o1 304 1.1 christos and %o0,%g1,%o3 305 1.1 christos ld [%i3+8],%l6 ! np[2] 306 1.1 christos srlx %o1,32,%o1 307 1.1.1.2 christos add %g5,%o1,%o1 308 1.1 christos srlx %o0,32,%o0 309 1.1 christos add %o3,%o1,%o1 310 1.1 christos and %o0,1,%o5 311 1.1.1.2 christos add %o4,%o1,%o1 312 1.1 christos srlx %o0,1,%o0 313 1.1.1.2 christos mov 12,%l1 314 1.1 christos st %o1,[%sp+STACK_BIAS+STACK_FRAME] ! tp[0]= 315 1.1 christos srlx %o1,32,%o1 316 1.1 christos add %sp,STACK_BIAS+STACK_FRAME+4,%l4 317 1.1 christos 318 1.1 christos .Lsqr_2nd: 319 1.1.1.2 christos mulx %l5,%l2,%o3 320 1.1 christos mulx %l6,%l3,%o4 321 1.1 christos add %o3,%o0,%o0 322 1.1 christos add %l7,%o5,%o5 323 1.1 christos ld [%i1+%l1],%l5 ! ap[j] 324 1.1 christos and %o0,%g1,%o3 325 1.1 christos ld [%i3+%l1],%l6 ! np[j] 326 1.1 christos srlx %o0,32,%o0 327 1.1 christos add %o4,%o1,%o1 328 1.1.1.2 christos ld [%l4+8],%l7 ! tp[j] 329 1.1.1.2 christos add %o3,%o3,%o3 330 1.1 christos add %l1,4,%l1 ! j++ 331 1.1 christos add %o5,%o3,%o3 332 1.1 christos srlx %o3,32,%o5 333 1.1 christos and %o3,%g1,%o3 334 1.1 christos cmp %l1,%i5 335 1.1 christos add %o3,%o1,%o1 336 1.1 christos st %o1,[%l4] ! tp[j-1] 337 1.1 christos srlx %o1,32,%o1 338 1.1 christos bl %icc,.Lsqr_2nd 339 1.1 christos add %l4,4,%l4 ! tp++ 340 1.1 christos !.Lsqr_2nd 341 1.1 christos 342 1.1.1.2 christos mulx %l5,%l2,%o3 343 1.1 christos mulx %l6,%l3,%o4 344 1.1 christos add %o3,%o0,%o0 345 1.1 christos add %l7,%o5,%o5 346 1.1 christos and %o0,%g1,%o3 347 1.1.1.2 christos srlx %o0,32,%o0 348 1.1.1.2 christos add %o4,%o1,%o1 349 1.1 christos add %o3,%o3,%o3 350 1.1 christos add %o5,%o3,%o3 351 1.1 christos srlx %o3,32,%o5 352 1.1 christos and %o3,%g1,%o3 353 1.1 christos add %o3,%o1,%o1 354 1.1 christos st %o1,[%l4] ! tp[j-1] 355 1.1.1.2 christos srlx %o1,32,%o1 356 1.1 christos 357 1.1 christos add %o0,%o0,%o0 358 1.1 christos add %o5,%o0,%o0 359 1.1 christos add %o0,%o1,%o1 360 1.1 christos add %o2,%o1,%o1 361 1.1.1.2 christos st %o1,[%l4+4] 362 1.1.1.2 christos srlx %o1,32,%o2 363 1.1 christos 364 1.1 christos ld [%sp+STACK_BIAS+STACK_FRAME],%g5 ! tp[0] 366 1.1 christos ld [%sp+STACK_BIAS+STACK_FRAME+4],%l7 ! tp[1] 367 1.1 christos ld [%i1+8],%l2 ! ap[2] 368 1.1 christos ld [%i3],%o1 ! np[0] 369 1.1 christos ld [%i3+4],%l6 ! np[1] 370 1.1 christos mulx %i4,%g5,%l3 371 1.1 christos and %l3,%g1,%l3 372 1.1 christos mov 8,%l0 373 1.1 christos 374 1.1 christos mulx %l2,%l2,%o0 375 1.1.1.2 christos mulx %o1,%l3,%o1 376 1.1 christos and %o0,%g1,%o3 377 1.1.1.2 christos add %g5,%o1,%o1 378 1.1 christos srlx %o0,32,%o0 379 1.1 christos add %sp,STACK_BIAS+STACK_FRAME,%l4 380 1.1 christos srlx %o1,32,%o1 381 1.1 christos and %o0,1,%o5 382 1.1 christos srlx %o0,1,%o0 383 1.1 christos mov 4,%l1 384 1.1 christos 385 1.1 christos .Lsqr_outer: 386 1.1 christos .Lsqr_inner1: 387 1.1 christos mulx %l6,%l3,%o4 388 1.1 christos add %l7,%o1,%o1 389 1.1 christos add %l1,4,%l1 390 1.1 christos ld [%l4+8],%l7 391 1.1 christos cmp %l1,%l0 392 1.1 christos add %o4,%o1,%o1 393 1.1 christos ld [%i3+%l1],%l6 394 1.1 christos st %o1,[%l4] 395 1.1 christos srlx %o1,32,%o1 396 1.1 christos bl %icc,.Lsqr_inner1 397 1.1 christos add %l4,4,%l4 398 1.1 christos !.Lsqr_inner1 399 1.1 christos 400 1.1 christos add %l1,4,%l1 401 1.1.1.2 christos ld [%i1+%l1],%l5 ! ap[j] 402 1.1.1.2 christos mulx %l6,%l3,%o4 403 1.1.1.2 christos add %l7,%o1,%o1 404 1.1 christos ld [%i3+%l1],%l6 ! np[j] 405 1.1 christos srlx %o1,32,%g4 406 1.1 christos and %o1,%g1,%o1 407 1.1 christos add %g4,%o5,%o5 408 1.1 christos add %o3,%o1,%o1 409 1.1 christos ld [%l4+8],%l7 ! tp[j] 410 1.1 christos add %o4,%o1,%o1 411 1.1 christos st %o1,[%l4] 412 1.1 christos srlx %o1,32,%o1 413 1.1 christos 414 1.1 christos add %l1,4,%l1 415 1.1 christos cmp %l1,%i5 416 1.1 christos be,pn %icc,.Lsqr_no_inner2 417 1.1 christos add %l4,4,%l4 418 1.1.1.2 christos 419 1.1 christos .Lsqr_inner2: 420 1.1 christos mulx %l5,%l2,%o3 421 1.1 christos mulx %l6,%l3,%o4 422 1.1 christos add %l7,%o5,%o5 423 1.1 christos add %o3,%o0,%o0 424 1.1 christos ld [%i1+%l1],%l5 ! ap[j] 425 1.1 christos and %o0,%g1,%o3 426 1.1.1.2 christos ld [%i3+%l1],%l6 ! np[j] 427 1.1 christos srlx %o0,32,%o0 428 1.1.1.2 christos add %o3,%o3,%o3 429 1.1 christos ld [%l4+8],%l7 ! tp[j] 430 1.1 christos add %o5,%o3,%o3 431 1.1 christos add %l1,4,%l1 ! j++ 432 1.1 christos srlx %o3,32,%o5 433 1.1 christos and %o3,%g1,%o3 434 1.1 christos cmp %l1,%i5 435 1.1 christos add %o3,%o1,%o1 436 1.1 christos add %o4,%o1,%o1 437 1.1 christos st %o1,[%l4] ! tp[j-1] 438 1.1 christos srlx %o1,32,%o1 439 1.1 christos bl %icc,.Lsqr_inner2 440 1.1 christos add %l4,4,%l4 ! tp++ 441 1.1.1.2 christos 442 1.1 christos .Lsqr_no_inner2: 443 1.1 christos mulx %l5,%l2,%o3 444 1.1 christos mulx %l6,%l3,%o4 445 1.1 christos add %l7,%o5,%o5 446 1.1.1.2 christos add %o3,%o0,%o0 447 1.1.1.2 christos and %o0,%g1,%o3 448 1.1 christos srlx %o0,32,%o0 449 1.1 christos add %o3,%o3,%o3 450 1.1 christos add %o5,%o3,%o3 451 1.1 christos srlx %o3,32,%o5 452 1.1 christos and %o3,%g1,%o3 453 1.1 christos add %o3,%o1,%o1 454 1.1 christos add %o4,%o1,%o1 455 1.1.1.2 christos st %o1,[%l4] ! tp[j-1] 456 1.1 christos srlx %o1,32,%o1 457 1.1 christos 458 1.1 christos add %o0,%o0,%o0 459 1.1 christos add %o5,%o0,%o0 460 1.1 christos add %o0,%o1,%o1 461 1.1 christos add %o2,%o1,%o1 462 1.1.1.2 christos st %o1,[%l4+4] 463 1.1.1.2 christos srlx %o1,32,%o2 464 1.1 christos 465 1.1 christos add %l0,4,%l0 ! i++ 467 1.1 christos ld [%sp+STACK_BIAS+STACK_FRAME],%g5 ! tp[0] 468 1.1 christos ld [%sp+STACK_BIAS+STACK_FRAME+4],%l7 ! tp[1] 469 1.1 christos ld [%i1+%l0],%l2 ! ap[j] 470 1.1 christos ld [%i3],%o1 ! np[0] 471 1.1 christos ld [%i3+4],%l6 ! np[1] 472 1.1 christos mulx %i4,%g5,%l3 473 1.1 christos and %l3,%g1,%l3 474 1.1 christos add %l0,4,%g4 475 1.1 christos 476 1.1.1.2 christos mulx %l2,%l2,%o0 477 1.1 christos mulx %o1,%l3,%o1 478 1.1.1.2 christos and %o0,%g1,%o3 479 1.1 christos add %g5,%o1,%o1 480 1.1 christos srlx %o0,32,%o0 481 1.1 christos add %sp,STACK_BIAS+STACK_FRAME,%l4 482 1.1 christos srlx %o1,32,%o1 483 1.1 christos and %o0,1,%o5 484 1.1 christos srlx %o0,1,%o0 485 1.1 christos 486 1.1 christos cmp %g4,%i5 ! i<num-1 487 1.1 christos bl %icc,.Lsqr_outer 488 1.1 christos mov 4,%l1 489 1.1 christos 490 1.1 christos .Lsqr_last: 492 1.1 christos mulx %l6,%l3,%o4 493 1.1 christos add %l7,%o1,%o1 494 1.1 christos add %l1,4,%l1 495 1.1 christos ld [%l4+8],%l7 496 1.1 christos cmp %l1,%l0 497 1.1 christos add %o4,%o1,%o1 498 1.1 christos ld [%i3+%l1],%l6 499 1.1 christos st %o1,[%l4] 500 1.1.1.2 christos srlx %o1,32,%o1 501 1.1.1.2 christos bl %icc,.Lsqr_last 502 1.1.1.2 christos add %l4,4,%l4 503 1.1.1.2 christos !.Lsqr_last 504 1.1 christos 505 1.1 christos mulx %l6,%l3,%o4 506 1.1 christos add %l7,%o3,%o3 507 1.1 christos srlx %o3,32,%g4 508 1.1 christos and %o3,%g1,%o3 509 1.1 christos add %g4,%o5,%o5 510 1.1.1.2 christos add %o3,%o1,%o1 511 1.1 christos add %o4,%o1,%o1 512 1.1 christos st %o1,[%l4] 513 1.1 christos srlx %o1,32,%o1 514 1.1 christos 515 1.1 christos add %o0,%o0,%o0 ! recover %o0 516 1.1 christos add %o5,%o0,%o0 517 1.1 christos add %o0,%o1,%o1 518 1.1 christos add %o2,%o1,%o1 519 1.1 christos st %o1,[%l4+4] 520 1.1.1.2 christos srlx %o1,32,%o2 521 1.1 christos 522 ba .Ltail 523 add %l4,8,%l4 524 .type bn_mul_mont_int,#function 525 .size bn_mul_mont_int,(.-bn_mul_mont_int) 526 .asciz "Montgomery Multiplication for SPARCv9, CRYPTOGAMS by <appro (at) openssl.org>" 527 .align 32 528