diff options
| author | cvs2svn <admin@example.com> | 1998-10-19 21:47:12 +0000 |
|---|---|---|
| committer | cvs2svn <admin@example.com> | 1998-10-19 21:47:12 +0000 |
| commit | 5170039cf1df2194faa85741f0733977525cd5c0 (patch) | |
| tree | c667406046ddb1efca5ed4316b02e43494241660 /src/lib/libcrypto/bn/asm/sparc.s | |
| parent | 536c76cbb863bab152f19842ab88772c01e922c7 (diff) | |
| download | openbsd-OPENBSD_2_4_BASE.tar.gz openbsd-OPENBSD_2_4_BASE.tar.bz2 openbsd-OPENBSD_2_4_BASE.zip | |
This commit was manufactured by cvs2git to create tag 'OPENBSD_2_4_BASE'.OPENBSD_2_4_BASE
Diffstat (limited to 'src/lib/libcrypto/bn/asm/sparc.s')
| -rw-r--r-- | src/lib/libcrypto/bn/asm/sparc.s | 462 |
1 files changed, 462 insertions, 0 deletions
diff --git a/src/lib/libcrypto/bn/asm/sparc.s b/src/lib/libcrypto/bn/asm/sparc.s new file mode 100644 index 0000000000..f9e533caa8 --- /dev/null +++ b/src/lib/libcrypto/bn/asm/sparc.s | |||
| @@ -0,0 +1,462 @@ | |||
| 1 | .file "bn_mulw.c" | ||
| 2 | gcc2_compiled.: | ||
| 3 | .section ".text" | ||
| 4 | .align 4 | ||
| 5 | .global bn_mul_add_words | ||
| 6 | .type bn_mul_add_words,#function | ||
| 7 | .proc 016 | ||
| 8 | bn_mul_add_words: | ||
| 9 | !#PROLOGUE# 0 | ||
| 10 | save %sp,-112,%sp | ||
| 11 | !#PROLOGUE# 1 | ||
| 12 | mov %i0,%o0 | ||
| 13 | mov %i1,%o2 | ||
| 14 | mov %i2,%g1 | ||
| 15 | mov %i3,%o1 | ||
| 16 | mov 0,%i4 | ||
| 17 | add %o0,12,%g4 | ||
| 18 | add %o2,12,%o7 | ||
| 19 | .LL2: | ||
| 20 | mov %i4,%i3 | ||
| 21 | mov 0,%i2 | ||
| 22 | ld [%o0],%g2 | ||
| 23 | mov %g2,%i1 | ||
| 24 | ld [%o2],%g2 | ||
| 25 | mov 0,%i0 | ||
| 26 | umul %o1,%g2,%g3 | ||
| 27 | rd %y,%g2 | ||
| 28 | addcc %g3,%i1,%g3 | ||
| 29 | addx %g2,%i0,%g2 | ||
| 30 | addcc %g3,%i3,%g3 | ||
| 31 | addx %g2,%i2,%g2 | ||
| 32 | st %g3,[%o0] | ||
| 33 | mov %g2,%i5 | ||
| 34 | mov 0,%i4 | ||
| 35 | addcc %g1,-1,%g1 | ||
| 36 | be .LL3 | ||
| 37 | mov %i5,%i4 | ||
| 38 | mov %i4,%i3 | ||
| 39 | mov 0,%i2 | ||
| 40 | ld [%g4-8],%g2 | ||
| 41 | mov %g2,%i1 | ||
| 42 | ld [%o7-8],%g2 | ||
| 43 | mov 0,%i0 | ||
| 44 | umul %o1,%g2,%g3 | ||
| 45 | rd %y,%g2 | ||
| 46 | addcc %g3,%i1,%g3 | ||
| 47 | addx %g2,%i0,%g2 | ||
| 48 | addcc %g3,%i3,%g3 | ||
| 49 | addx %g2,%i2,%g2 | ||
| 50 | st %g3,[%g4-8] | ||
| 51 | mov %g2,%i5 | ||
| 52 | mov 0,%i4 | ||
| 53 | addcc %g1,-1,%g1 | ||
| 54 | be .LL3 | ||
| 55 | mov %i5,%i4 | ||
| 56 | mov %i4,%i3 | ||
| 57 | mov 0,%i2 | ||
| 58 | ld [%g4-4],%g2 | ||
| 59 | mov %g2,%i1 | ||
| 60 | ld [%o7-4],%g2 | ||
| 61 | mov 0,%i0 | ||
| 62 | umul %o1,%g2,%g3 | ||
| 63 | rd %y,%g2 | ||
| 64 | addcc %g3,%i1,%g3 | ||
| 65 | addx %g2,%i0,%g2 | ||
| 66 | addcc %g3,%i3,%g3 | ||
| 67 | addx %g2,%i2,%g2 | ||
| 68 | st %g3,[%g4-4] | ||
| 69 | mov %g2,%i5 | ||
| 70 | mov 0,%i4 | ||
| 71 | addcc %g1,-1,%g1 | ||
| 72 | be .LL3 | ||
| 73 | mov %i5,%i4 | ||
| 74 | mov %i4,%i3 | ||
| 75 | mov 0,%i2 | ||
| 76 | ld [%g4],%g2 | ||
| 77 | mov %g2,%i1 | ||
| 78 | ld [%o7],%g2 | ||
| 79 | mov 0,%i0 | ||
| 80 | umul %o1,%g2,%g3 | ||
| 81 | rd %y,%g2 | ||
| 82 | addcc %g3,%i1,%g3 | ||
| 83 | addx %g2,%i0,%g2 | ||
| 84 | addcc %g3,%i3,%g3 | ||
| 85 | addx %g2,%i2,%g2 | ||
| 86 | st %g3,[%g4] | ||
| 87 | mov %g2,%i5 | ||
| 88 | mov 0,%i4 | ||
| 89 | addcc %g1,-1,%g1 | ||
| 90 | be .LL3 | ||
| 91 | mov %i5,%i4 | ||
| 92 | add %o7,16,%o7 | ||
| 93 | add %o2,16,%o2 | ||
| 94 | add %g4,16,%g4 | ||
| 95 | b .LL2 | ||
| 96 | add %o0,16,%o0 | ||
| 97 | .LL3: | ||
| 98 | ret | ||
| 99 | restore %g0,%i4,%o0 | ||
| 100 | .LLfe1: | ||
| 101 | .size bn_mul_add_words,.LLfe1-bn_mul_add_words | ||
| 102 | .align 4 | ||
| 103 | .global bn_mul_words | ||
| 104 | .type bn_mul_words,#function | ||
| 105 | .proc 016 | ||
| 106 | bn_mul_words: | ||
| 107 | !#PROLOGUE# 0 | ||
| 108 | save %sp,-112,%sp | ||
| 109 | !#PROLOGUE# 1 | ||
| 110 | mov %i0,%o7 | ||
| 111 | mov %i1,%o0 | ||
| 112 | mov %i2,%i4 | ||
| 113 | mov %i3,%g4 | ||
| 114 | mov 0,%i0 | ||
| 115 | add %o7,12,%g1 | ||
| 116 | add %o0,12,%i5 | ||
| 117 | .LL18: | ||
| 118 | mov %i0,%g3 | ||
| 119 | mov 0,%g2 | ||
| 120 | ld [%o0],%i2 | ||
| 121 | umul %g4,%i2,%i3 | ||
| 122 | rd %y,%i2 | ||
| 123 | addcc %i3,%g3,%i3 | ||
| 124 | addx %i2,%g2,%i2 | ||
| 125 | st %i3,[%o7] | ||
| 126 | mov %i2,%i1 | ||
| 127 | mov 0,%i0 | ||
| 128 | addcc %i4,-1,%i4 | ||
| 129 | be .LL19 | ||
| 130 | mov %i1,%i0 | ||
| 131 | mov %i0,%g3 | ||
| 132 | mov 0,%g2 | ||
| 133 | ld [%i5-8],%i2 | ||
| 134 | umul %g4,%i2,%i3 | ||
| 135 | rd %y,%i2 | ||
| 136 | addcc %i3,%g3,%i3 | ||
| 137 | addx %i2,%g2,%i2 | ||
| 138 | st %i3,[%g1-8] | ||
| 139 | mov %i2,%i1 | ||
| 140 | mov 0,%i0 | ||
| 141 | addcc %i4,-1,%i4 | ||
| 142 | be .LL19 | ||
| 143 | mov %i1,%i0 | ||
| 144 | mov %i0,%g3 | ||
| 145 | mov 0,%g2 | ||
| 146 | ld [%i5-4],%i2 | ||
| 147 | umul %g4,%i2,%i3 | ||
| 148 | rd %y,%i2 | ||
| 149 | addcc %i3,%g3,%i3 | ||
| 150 | addx %i2,%g2,%i2 | ||
| 151 | st %i3,[%g1-4] | ||
| 152 | mov %i2,%i1 | ||
| 153 | mov 0,%i0 | ||
| 154 | addcc %i4,-1,%i4 | ||
| 155 | be .LL19 | ||
| 156 | mov %i1,%i0 | ||
| 157 | mov %i0,%g3 | ||
| 158 | mov 0,%g2 | ||
| 159 | ld [%i5],%i2 | ||
| 160 | umul %g4,%i2,%i3 | ||
| 161 | rd %y,%i2 | ||
| 162 | addcc %i3,%g3,%i3 | ||
| 163 | addx %i2,%g2,%i2 | ||
| 164 | st %i3,[%g1] | ||
| 165 | mov %i2,%i1 | ||
| 166 | mov 0,%i0 | ||
| 167 | addcc %i4,-1,%i4 | ||
| 168 | be .LL19 | ||
| 169 | mov %i1,%i0 | ||
| 170 | add %i5,16,%i5 | ||
| 171 | add %o0,16,%o0 | ||
| 172 | add %g1,16,%g1 | ||
| 173 | b .LL18 | ||
| 174 | add %o7,16,%o7 | ||
| 175 | .LL19: | ||
| 176 | ret | ||
| 177 | restore | ||
| 178 | .LLfe2: | ||
| 179 | .size bn_mul_words,.LLfe2-bn_mul_words | ||
| 180 | .align 4 | ||
| 181 | .global bn_sqr_words | ||
| 182 | .type bn_sqr_words,#function | ||
| 183 | .proc 020 | ||
| 184 | bn_sqr_words: | ||
| 185 | !#PROLOGUE# 0 | ||
| 186 | !#PROLOGUE# 1 | ||
| 187 | mov %o0,%g4 | ||
| 188 | add %g4,28,%o3 | ||
| 189 | add %o1,12,%g1 | ||
| 190 | .LL34: | ||
| 191 | ld [%o1],%o0 | ||
| 192 | addcc %o2,-1,%o2 | ||
| 193 | umul %o0,%o0,%o5 | ||
| 194 | rd %y,%o4 | ||
| 195 | st %o5,[%g4] | ||
| 196 | mov %o4,%g3 | ||
| 197 | mov 0,%g2 | ||
| 198 | be .LL35 | ||
| 199 | st %g3,[%o3-24] | ||
| 200 | ld [%g1-8],%o0 | ||
| 201 | addcc %o2,-1,%o2 | ||
| 202 | umul %o0,%o0,%o5 | ||
| 203 | rd %y,%o4 | ||
| 204 | st %o5,[%o3-20] | ||
| 205 | mov %o4,%g3 | ||
| 206 | mov 0,%g2 | ||
| 207 | be .LL35 | ||
| 208 | st %g3,[%o3-16] | ||
| 209 | ld [%g1-4],%o0 | ||
| 210 | addcc %o2,-1,%o2 | ||
| 211 | umul %o0,%o0,%o5 | ||
| 212 | rd %y,%o4 | ||
| 213 | st %o5,[%o3-12] | ||
| 214 | mov %o4,%g3 | ||
| 215 | mov 0,%g2 | ||
| 216 | be .LL35 | ||
| 217 | st %g3,[%o3-8] | ||
| 218 | ld [%g1],%o0 | ||
| 219 | addcc %o2,-1,%o2 | ||
| 220 | umul %o0,%o0,%o5 | ||
| 221 | rd %y,%o4 | ||
| 222 | st %o5,[%o3-4] | ||
| 223 | mov %o4,%g3 | ||
| 224 | mov 0,%g2 | ||
| 225 | be .LL35 | ||
| 226 | st %g3,[%o3] | ||
| 227 | add %g1,16,%g1 | ||
| 228 | add %o1,16,%o1 | ||
| 229 | add %o3,32,%o3 | ||
| 230 | b .LL34 | ||
| 231 | add %g4,32,%g4 | ||
| 232 | .LL35: | ||
| 233 | retl | ||
| 234 | nop | ||
| 235 | .LLfe3: | ||
| 236 | .size bn_sqr_words,.LLfe3-bn_sqr_words | ||
| 237 | .align 4 | ||
| 238 | .global bn_add_words | ||
| 239 | .type bn_add_words,#function | ||
| 240 | .proc 016 | ||
| 241 | bn_add_words: | ||
| 242 | !#PROLOGUE# 0 | ||
| 243 | save %sp,-112,%sp | ||
| 244 | !#PROLOGUE# 1 | ||
| 245 | mov %i0,%o2 | ||
| 246 | mov %i1,%o3 | ||
| 247 | mov %i2,%o4 | ||
| 248 | mov %i3,%i5 | ||
| 249 | mov 0,%o0 | ||
| 250 | mov 0,%o1 | ||
| 251 | add %o2,12,%o7 | ||
| 252 | add %o4,12,%g4 | ||
| 253 | b .LL42 | ||
| 254 | add %o3,12,%g1 | ||
| 255 | .LL45: | ||
| 256 | add %i5,-1,%i5 | ||
| 257 | mov %i4,%g3 | ||
| 258 | ld [%g4-8],%i4 | ||
| 259 | mov 0,%g2 | ||
| 260 | mov %i4,%i1 | ||
| 261 | mov 0,%i0 | ||
| 262 | addcc %g3,%i1,%g3 | ||
| 263 | addx %g2,%i0,%g2 | ||
| 264 | addcc %o1,%g3,%o1 | ||
| 265 | addx %o0,%g2,%o0 | ||
| 266 | st %o1,[%o7-8] | ||
| 267 | mov %o0,%i3 | ||
| 268 | mov 0,%i2 | ||
| 269 | mov %i2,%o0 | ||
| 270 | mov %i3,%o1 | ||
| 271 | cmp %i5,0 | ||
| 272 | ble .LL43 | ||
| 273 | add %i5,-1,%i5 | ||
| 274 | ld [%g1-4],%i4 | ||
| 275 | mov %i4,%g3 | ||
| 276 | ld [%g4-4],%i4 | ||
| 277 | mov 0,%g2 | ||
| 278 | mov %i4,%i1 | ||
| 279 | mov 0,%i0 | ||
| 280 | addcc %g3,%i1,%g3 | ||
| 281 | addx %g2,%i0,%g2 | ||
| 282 | addcc %o1,%g3,%o1 | ||
| 283 | addx %o0,%g2,%o0 | ||
| 284 | st %o1,[%o7-4] | ||
| 285 | mov %o0,%i3 | ||
| 286 | mov 0,%i2 | ||
| 287 | mov %i2,%o0 | ||
| 288 | mov %i3,%o1 | ||
| 289 | cmp %i5,0 | ||
| 290 | ble .LL43 | ||
| 291 | add %i5,-1,%i5 | ||
| 292 | ld [%g1],%i4 | ||
| 293 | mov %i4,%g3 | ||
| 294 | ld [%g4],%i4 | ||
| 295 | mov 0,%g2 | ||
| 296 | mov %i4,%i1 | ||
| 297 | mov 0,%i0 | ||
| 298 | addcc %g3,%i1,%g3 | ||
| 299 | addx %g2,%i0,%g2 | ||
| 300 | addcc %o1,%g3,%o1 | ||
| 301 | addx %o0,%g2,%o0 | ||
| 302 | st %o1,[%o7] | ||
| 303 | mov %o0,%i3 | ||
| 304 | mov 0,%i2 | ||
| 305 | mov %i2,%o0 | ||
| 306 | mov %i3,%o1 | ||
| 307 | cmp %i5,0 | ||
| 308 | ble .LL43 | ||
| 309 | add %g1,16,%g1 | ||
| 310 | add %o3,16,%o3 | ||
| 311 | add %g4,16,%g4 | ||
| 312 | add %o4,16,%o4 | ||
| 313 | add %o7,16,%o7 | ||
| 314 | add %o2,16,%o2 | ||
| 315 | .LL42: | ||
| 316 | ld [%o3],%i4 | ||
| 317 | add %i5,-1,%i5 | ||
| 318 | mov %i4,%g3 | ||
| 319 | ld [%o4],%i4 | ||
| 320 | mov 0,%g2 | ||
| 321 | mov %i4,%i1 | ||
| 322 | mov 0,%i0 | ||
| 323 | addcc %g3,%i1,%g3 | ||
| 324 | addx %g2,%i0,%g2 | ||
| 325 | addcc %o1,%g3,%o1 | ||
| 326 | addx %o0,%g2,%o0 | ||
| 327 | st %o1,[%o2] | ||
| 328 | mov %o0,%i3 | ||
| 329 | mov 0,%i2 | ||
| 330 | mov %i2,%o0 | ||
| 331 | mov %i3,%o1 | ||
| 332 | cmp %i5,0 | ||
| 333 | bg,a .LL45 | ||
| 334 | ld [%g1-8],%i4 | ||
| 335 | .LL43: | ||
| 336 | ret | ||
| 337 | restore %g0,%o1,%o0 | ||
| 338 | .LLfe4: | ||
| 339 | .size bn_add_words,.LLfe4-bn_add_words | ||
| 340 | .section ".rodata" | ||
| 341 | .align 8 | ||
| 342 | .LLC0: | ||
| 343 | .asciz "Division would overflow (%d)\n" | ||
| 344 | .section ".text" | ||
| 345 | .align 4 | ||
| 346 | .global bn_div64 | ||
| 347 | .type bn_div64,#function | ||
| 348 | .proc 016 | ||
| 349 | bn_div64: | ||
| 350 | !#PROLOGUE# 0 | ||
| 351 | save %sp,-112,%sp | ||
| 352 | !#PROLOGUE# 1 | ||
| 353 | mov 0,%l1 | ||
| 354 | cmp %i2,0 | ||
| 355 | bne .LL51 | ||
| 356 | mov 2,%l0 | ||
| 357 | b .LL68 | ||
| 358 | mov -1,%i0 | ||
| 359 | .LL51: | ||
| 360 | call BN_num_bits_word,0 | ||
| 361 | mov %i2,%o0 | ||
| 362 | mov %o0,%o2 | ||
| 363 | cmp %o2,32 | ||
| 364 | be .LL52 | ||
| 365 | mov 1,%o0 | ||
| 366 | sll %o0,%o2,%o0 | ||
| 367 | cmp %i0,%o0 | ||
| 368 | bleu .LL69 | ||
| 369 | mov 32,%o0 | ||
| 370 | sethi %hi(__iob+32),%o0 | ||
| 371 | or %o0,%lo(__iob+32),%o0 | ||
| 372 | sethi %hi(.LLC0),%o1 | ||
| 373 | call fprintf,0 | ||
| 374 | or %o1,%lo(.LLC0),%o1 | ||
| 375 | call abort,0 | ||
| 376 | nop | ||
| 377 | .LL52: | ||
| 378 | mov 32,%o0 | ||
| 379 | .LL69: | ||
| 380 | cmp %i0,%i2 | ||
| 381 | blu .LL53 | ||
| 382 | sub %o0,%o2,%o2 | ||
| 383 | sub %i0,%i2,%i0 | ||
| 384 | .LL53: | ||
| 385 | cmp %o2,0 | ||
| 386 | be .LL54 | ||
| 387 | sll %i0,%o2,%o1 | ||
| 388 | sll %i2,%o2,%i2 | ||
| 389 | sub %o0,%o2,%o0 | ||
| 390 | srl %i1,%o0,%o0 | ||
| 391 | or %o1,%o0,%i0 | ||
| 392 | sll %i1,%o2,%i1 | ||
| 393 | .LL54: | ||
| 394 | srl %i2,16,%g2 | ||
| 395 | sethi %hi(65535),%o0 | ||
| 396 | or %o0,%lo(65535),%o1 | ||
| 397 | and %i2,%o1,%g3 | ||
| 398 | mov %o0,%g4 | ||
| 399 | sethi %hi(-65536),%o7 | ||
| 400 | mov %o1,%g1 | ||
| 401 | .LL55: | ||
| 402 | srl %i0,16,%o0 | ||
| 403 | cmp %o0,%g2 | ||
| 404 | be .LL59 | ||
| 405 | or %g4,%lo(65535),%o3 | ||
| 406 | wr %g0,%g0,%y | ||
| 407 | nop | ||
| 408 | nop | ||
| 409 | nop | ||
| 410 | udiv %i0,%g2,%o3 | ||
| 411 | .LL59: | ||
| 412 | and %i1,%o7,%o0 | ||
| 413 | srl %o0,16,%o5 | ||
| 414 | smul %o3,%g3,%o4 | ||
| 415 | smul %o3,%g2,%o2 | ||
| 416 | .LL60: | ||
| 417 | sub %i0,%o2,%o1 | ||
| 418 | andcc %o1,%o7,%g0 | ||
| 419 | bne .LL61 | ||
| 420 | sll %o1,16,%o0 | ||
| 421 | add %o0,%o5,%o0 | ||
| 422 | cmp %o4,%o0 | ||
| 423 | bleu .LL61 | ||
| 424 | sub %o4,%g3,%o4 | ||
| 425 | sub %o2,%g2,%o2 | ||
| 426 | b .LL60 | ||
| 427 | add %o3,-1,%o3 | ||
| 428 | .LL61: | ||
| 429 | smul %o3,%g2,%o2 | ||
| 430 | smul %o3,%g3,%o0 | ||
| 431 | srl %o0,16,%o1 | ||
| 432 | sll %o0,16,%o0 | ||
| 433 | and %o0,%o7,%o0 | ||
| 434 | cmp %i1,%o0 | ||
| 435 | bgeu .LL65 | ||
| 436 | add %o2,%o1,%o2 | ||
| 437 | add %o2,1,%o2 | ||
| 438 | .LL65: | ||
| 439 | cmp %i0,%o2 | ||
| 440 | bgeu .LL66 | ||
| 441 | sub %i1,%o0,%i1 | ||
| 442 | add %i0,%i2,%i0 | ||
| 443 | add %o3,-1,%o3 | ||
| 444 | .LL66: | ||
| 445 | addcc %l0,-1,%l0 | ||
| 446 | be .LL56 | ||
| 447 | sub %i0,%o2,%i0 | ||
| 448 | sll %o3,16,%l1 | ||
| 449 | sll %i0,16,%o0 | ||
| 450 | srl %i1,16,%o1 | ||
| 451 | or %o0,%o1,%i0 | ||
| 452 | and %i1,%g1,%o0 | ||
| 453 | b .LL55 | ||
| 454 | sll %o0,16,%i1 | ||
| 455 | .LL56: | ||
| 456 | or %l1,%o3,%i0 | ||
| 457 | .LL68: | ||
| 458 | ret | ||
| 459 | restore | ||
| 460 | .LLfe5: | ||
| 461 | .size bn_div64,.LLfe5-bn_div64 | ||
| 462 | .ident "GCC: (GNU) 2.7.2.3" | ||
