1 .SPACE $PRIVATE$ 2 .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31 3 .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82 4 .SPACE $TEXT$ 5 .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44 6 .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY 7 .IMPORT $global$,DATA 8 .IMPORT $$dyncall,MILLICODE 9; gcc_compiled.: 10 .SPACE $TEXT$ 11 .SUBSPA $CODE$ 12 13 .align 4 14 .EXPORT bn_mul_add_words,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR 15bn_mul_add_words 16 .PROC 17 .CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=4 18 .ENTRY 19 stw %r2,-20(0,%r30) 20 stwm %r4,64(0,%r30) 21 copy %r24,%r31 22 stw %r3,-60(0,%r30) 23 ldi 0,%r20 24 ldo 12(%r26),%r2 25 stw %r23,-16(0,%r30) 26 copy %r25,%r3 27 ldo 12(%r3),%r1 28 fldws -16(0,%r30),%fr8L 29L$0010 30 copy %r20,%r25 31 ldi 0,%r24 32 fldws 0(0,%r3),%fr9L 33 ldw 0(0,%r26),%r19 34 xmpyu %fr8L,%fr9L,%fr9 35 fstds %fr9,-16(0,%r30) 36 copy %r19,%r23 37 ldw -16(0,%r30),%r28 38 ldw -12(0,%r30),%r29 39 ldi 0,%r22 40 add %r23,%r29,%r29 41 addc %r22,%r28,%r28 42 add %r25,%r29,%r29 43 addc %r24,%r28,%r28 44 copy %r28,%r21 45 ldi 0,%r20 46 copy %r21,%r20 47 addib,= -1,%r31,L$0011 48 stw %r29,0(0,%r26) 49 copy %r20,%r25 50 ldi 0,%r24 51 fldws -8(0,%r1),%fr9L 52 ldw -8(0,%r2),%r19 53 xmpyu %fr8L,%fr9L,%fr9 54 fstds %fr9,-16(0,%r30) 55 copy %r19,%r23 56 ldw -16(0,%r30),%r28 57 ldw -12(0,%r30),%r29 58 ldi 0,%r22 59 add %r23,%r29,%r29 60 addc %r22,%r28,%r28 61 add %r25,%r29,%r29 62 addc %r24,%r28,%r28 63 copy %r28,%r21 64 ldi 0,%r20 65 copy %r21,%r20 66 addib,= -1,%r31,L$0011 67 stw %r29,-8(0,%r2) 68 copy %r20,%r25 69 ldi 0,%r24 70 fldws -4(0,%r1),%fr9L 71 ldw -4(0,%r2),%r19 72 xmpyu %fr8L,%fr9L,%fr9 73 fstds %fr9,-16(0,%r30) 74 copy %r19,%r23 75 ldw -16(0,%r30),%r28 76 ldw -12(0,%r30),%r29 77 ldi 0,%r22 78 add %r23,%r29,%r29 79 addc %r22,%r28,%r28 80 add %r25,%r29,%r29 81 addc %r24,%r28,%r28 82 copy %r28,%r21 83 ldi 0,%r20 84 copy %r21,%r20 85 addib,= -1,%r31,L$0011 86 stw %r29,-4(0,%r2) 87 copy %r20,%r25 88 ldi 0,%r24 89 fldws 0(0,%r1),%fr9L 90 ldw 0(0,%r2),%r19 91 xmpyu %fr8L,%fr9L,%fr9 92 fstds %fr9,-16(0,%r30) 93 copy %r19,%r23 94 ldw -16(0,%r30),%r28 95 ldw -12(0,%r30),%r29 96 ldi 0,%r22 97 add %r23,%r29,%r29 98 addc %r22,%r28,%r28 99 add %r25,%r29,%r29 100 addc %r24,%r28,%r28 101 copy %r28,%r21 102 ldi 0,%r20 103 copy %r21,%r20 104 addib,= -1,%r31,L$0011 105 stw %r29,0(0,%r2) 106 ldo 16(%r1),%r1 107 ldo 16(%r3),%r3 108 ldo 16(%r2),%r2 109 bl L$0010,0 110 ldo 16(%r26),%r26 111L$0011 112 copy %r20,%r28 113 ldw -84(0,%r30),%r2 114 ldw -60(0,%r30),%r3 115 bv 0(%r2) 116 ldwm -64(0,%r30),%r4 117 .EXIT 118 .PROCEND 119 .align 4 120 .EXPORT bn_mul_words,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR 121bn_mul_words 122 .PROC 123 .CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=3 124 .ENTRY 125 stw %r2,-20(0,%r30) 126 copy %r25,%r2 127 stwm %r4,64(0,%r30) 128 copy %r24,%r19 129 ldi 0,%r28 130 stw %r23,-16(0,%r30) 131 ldo 12(%r26),%r31 132 ldo 12(%r2),%r29 133 fldws -16(0,%r30),%fr8L 134L$0026 135 fldws 0(0,%r2),%fr9L 136 xmpyu %fr8L,%fr9L,%fr9 137 fstds %fr9,-16(0,%r30) 138 copy %r28,%r21 139 ldi 0,%r20 140 ldw -16(0,%r30),%r24 141 ldw -12(0,%r30),%r25 142 add %r21,%r25,%r25 143 addc %r20,%r24,%r24 144 copy %r24,%r23 145 ldi 0,%r22 146 copy %r23,%r28 147 addib,= -1,%r19,L$0027 148 stw %r25,0(0,%r26) 149 fldws -8(0,%r29),%fr9L 150 xmpyu %fr8L,%fr9L,%fr9 151 fstds %fr9,-16(0,%r30) 152 copy %r28,%r21 153 ldi 0,%r20 154 ldw -16(0,%r30),%r24 155 ldw -12(0,%r30),%r25 156 add %r21,%r25,%r25 157 addc %r20,%r24,%r24 158 copy %r24,%r23 159 ldi 0,%r22 160 copy %r23,%r28 161 addib,= -1,%r19,L$0027 162 stw %r25,-8(0,%r31) 163 fldws -4(0,%r29),%fr9L 164 xmpyu %fr8L,%fr9L,%fr9 165 fstds %fr9,-16(0,%r30) 166 copy %r28,%r21 167 ldi 0,%r20 168 ldw -16(0,%r30),%r24 169 ldw -12(0,%r30),%r25 170 add %r21,%r25,%r25 171 addc %r20,%r24,%r24 172 copy %r24,%r23 173 ldi 0,%r22 174 copy %r23,%r28 175 addib,= -1,%r19,L$0027 176 stw %r25,-4(0,%r31) 177 fldws 0(0,%r29),%fr9L 178 xmpyu %fr8L,%fr9L,%fr9 179 fstds %fr9,-16(0,%r30) 180 copy %r28,%r21 181 ldi 0,%r20 182 ldw -16(0,%r30),%r24 183 ldw -12(0,%r30),%r25 184 add %r21,%r25,%r25 185 addc %r20,%r24,%r24 186 copy %r24,%r23 187 ldi 0,%r22 188 copy %r23,%r28 189 addib,= -1,%r19,L$0027 190 stw %r25,0(0,%r31) 191 ldo 16(%r29),%r29 192 ldo 16(%r2),%r2 193 ldo 16(%r31),%r31 194 bl L$0026,0 195 ldo 16(%r26),%r26 196L$0027 197 ldw -84(0,%r30),%r2 198 bv 0(%r2) 199 ldwm -64(0,%r30),%r4 200 .EXIT 201 .PROCEND 202 .align 4 203 .EXPORT bn_sqr_words,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR 204bn_sqr_words 205 .PROC 206 .CALLINFO FRAME=0,NO_CALLS 207 .ENTRY 208 ldo 28(%r26),%r19 209 ldo 12(%r25),%r28 210L$0042 211 fldws 0(0,%r25),%fr8L 212 fldws 0(0,%r25),%fr8R 213 xmpyu %fr8L,%fr8R,%fr8 214 fstds %fr8,-16(0,%r30) 215 ldw -16(0,%r30),%r22 216 ldw -12(0,%r30),%r23 217 stw %r23,0(0,%r26) 218 copy %r22,%r21 219 ldi 0,%r20 220 addib,= -1,%r24,L$0049 221 stw %r21,-24(0,%r19) 222 fldws -8(0,%r28),%fr8L 223 fldws -8(0,%r28),%fr8R 224 xmpyu %fr8L,%fr8R,%fr8 225 fstds %fr8,-16(0,%r30) 226 ldw -16(0,%r30),%r22 227 ldw -12(0,%r30),%r23 228 stw %r23,-20(0,%r19) 229 copy %r22,%r21 230 ldi 0,%r20 231 addib,= -1,%r24,L$0049 232 stw %r21,-16(0,%r19) 233 fldws -4(0,%r28),%fr8L 234 fldws -4(0,%r28),%fr8R 235 xmpyu %fr8L,%fr8R,%fr8 236 fstds %fr8,-16(0,%r30) 237 ldw -16(0,%r30),%r22 238 ldw -12(0,%r30),%r23 239 stw %r23,-12(0,%r19) 240 copy %r22,%r21 241 ldi 0,%r20 242 addib,= -1,%r24,L$0049 243 stw %r21,-8(0,%r19) 244 fldws 0(0,%r28),%fr8L 245 fldws 0(0,%r28),%fr8R 246 xmpyu %fr8L,%fr8R,%fr8 247 fstds %fr8,-16(0,%r30) 248 ldw -16(0,%r30),%r22 249 ldw -12(0,%r30),%r23 250 stw %r23,-4(0,%r19) 251 copy %r22,%r21 252 ldi 0,%r20 253 addib,= -1,%r24,L$0049 254 stw %r21,0(0,%r19) 255 ldo 16(%r28),%r28 256 ldo 16(%r25),%r25 257 ldo 32(%r19),%r19 258 bl L$0042,0 259 ldo 32(%r26),%r26 260L$0049 261 bv,n 0(%r2) 262 .EXIT 263 .PROCEND 264 .IMPORT BN_num_bits_word,CODE 265 .IMPORT fprintf,CODE 266 .IMPORT __iob,DATA 267 .SPACE $TEXT$ 268 .SUBSPA $LIT$ 269 270 .align 4 271L$C0000 272 .STRING "Division would overflow (%d)\x0a\x00" 273 .IMPORT abort,CODE 274 .SPACE $TEXT$ 275 .SUBSPA $CODE$ 276 277 .align 4 278 .EXPORT bn_div64,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,RTNVAL=GR 279bn_div64 280 .PROC 281 .CALLINFO FRAME=128,CALLS,SAVE_RP,ENTRY_GR=8 282 .ENTRY 283 stw %r2,-20(0,%r30) 284 stwm %r8,128(0,%r30) 285 stw %r7,-124(0,%r30) 286 stw %r4,-112(0,%r30) 287 stw %r3,-108(0,%r30) 288 copy %r26,%r3 289 copy %r25,%r4 290 stw %r6,-120(0,%r30) 291 ldi 0,%r7 292 stw %r5,-116(0,%r30) 293 movb,<> %r24,%r5,L$0051 294 ldi 2,%r6 295 bl L$0068,0 296 ldi -1,%r28 297L$0051 298 .CALL ARGW0=GR 299 bl BN_num_bits_word,%r2 300 copy %r5,%r26 301 copy %r28,%r24 302 ldi 32,%r19 303 comb,= %r19,%r24,L$0052 304 subi 31,%r24,%r19 305 mtsar %r19 306 zvdepi 1,32,%r19 307 comb,>>= %r19,%r3,L$0052 308 addil LR'__iob-$global$+32,%r27 309 ldo RR'__iob-$global$+32(%r1),%r26 310 ldil LR'L$C0000,%r25 311 .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR 312 bl fprintf,%r2 313 ldo RR'L$C0000(%r25),%r25 314 .CALL 315 bl abort,%r2 316 nop 317L$0052 318 comb,>> %r5,%r3,L$0053 319 subi 32,%r24,%r24 320 sub %r3,%r5,%r3 321L$0053 322 comib,= 0,%r24,L$0054 323 subi 31,%r24,%r19 324 mtsar %r19 325 zvdep %r5,32,%r5 326 zvdep %r3,32,%r21 327 subi 32,%r24,%r20 328 mtsar %r20 329 vshd 0,%r4,%r20 330 or %r21,%r20,%r3 331 mtsar %r19 332 zvdep %r4,32,%r4 333L$0054 334 extru %r5,15,16,%r23 335 extru %r5,31,16,%r28 336L$0055 337 extru %r3,15,16,%r19 338 comb,<> %r23,%r19,L$0058 339 copy %r3,%r26 340 bl L$0059,0 341 zdepi -1,31,16,%r29 342L$0058 343 .IMPORT $$divU,MILLICODE 344 bl $$divU,%r31 345 copy %r23,%r25 346L$0059 347 stw %r29,-16(0,%r30) 348 fldws -16(0,%r30),%fr10L 349 stw %r28,-16(0,%r30) 350 fldws -16(0,%r30),%fr10R 351 stw %r23,-16(0,%r30) 352 xmpyu %fr10L,%fr10R,%fr8 353 fldws -16(0,%r30),%fr10R 354 fstws %fr8R,-16(0,%r30) 355 xmpyu %fr10L,%fr10R,%fr9 356 ldw -16(0,%r30),%r8 357 fstws %fr9R,-16(0,%r30) 358 copy %r8,%r22 359 ldw -16(0,%r30),%r8 360 extru %r4,15,16,%r24 361 copy %r8,%r21 362L$0060 363 sub %r3,%r21,%r20 364 copy %r20,%r19 365 depi 0,31,16,%r19 366 comib,<> 0,%r19,L$0061 367 zdep %r20,15,16,%r19 368 addl %r19,%r24,%r19 369 comb,>>= %r19,%r22,L$0061 370 sub %r22,%r28,%r22 371 sub %r21,%r23,%r21 372 bl L$0060,0 373 ldo -1(%r29),%r29 374L$0061 375 stw %r29,-16(0,%r30) 376 fldws -16(0,%r30),%fr10L 377 stw %r28,-16(0,%r30) 378 fldws -16(0,%r30),%fr10R 379 xmpyu %fr10L,%fr10R,%fr8 380 fstws %fr8R,-16(0,%r30) 381 ldw -16(0,%r30),%r8 382 stw %r23,-16(0,%r30) 383 fldws -16(0,%r30),%fr10R 384 copy %r8,%r19 385 xmpyu %fr10L,%fr10R,%fr8 386 fstws %fr8R,-16(0,%r30) 387 extru %r19,15,16,%r20 388 ldw -16(0,%r30),%r8 389 zdep %r19,15,16,%r19 390 addl %r8,%r20,%r20 391 comclr,<<= %r19,%r4,0 392 addi 1,%r20,%r20 393 comb,<<= %r20,%r3,L$0066 394 sub %r4,%r19,%r4 395 addl %r3,%r5,%r3 396 ldo -1(%r29),%r29 397L$0066 398 addib,= -1,%r6,L$0056 399 sub %r3,%r20,%r3 400 zdep %r29,15,16,%r7 401 shd %r3,%r4,16,%r3 402 bl L$0055,0 403 zdep %r4,15,16,%r4 404L$0056 405 or %r7,%r29,%r28 406L$0068 407 ldw -148(0,%r30),%r2 408 ldw -124(0,%r30),%r7 409 ldw -120(0,%r30),%r6 410 ldw -116(0,%r30),%r5 411 ldw -112(0,%r30),%r4 412 ldw -108(0,%r30),%r3 413 bv 0(%r2) 414 ldwm -128(0,%r30),%r8 415 .EXIT 416 .PROCEND 417