Changeset 13319
- Timestamp:
- Dec 21, 2009, 8:28:15 PM (15 years ago)
- File:
-
- 1 edited
-
branches/new-random/level-0/PPC/ppc-numbers.lisp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/new-random/level-0/PPC/ppc-numbers.lisp
r13067 r13319 438 438 (beq cr0 @shiftv) 439 439 (b @loop))) 440 441 (defppclapfunction %mrg31k3p ((state arg_z)) 442 (let ((seed temp0)) 443 (svref seed 1 state) 444 (svref imm0 1 seed) 445 (svref imm3 2 seed) 446 (rlwinm imm1 imm0 22 1 9) 447 (srwi imm2 imm0 9) 448 (add imm0 imm1 imm2) 440 449 441 442 450 ;; construct m1 (1- (expt 2 31)) 451 (lis imm1 #x7fff) 452 (ori imm1 imm1 #xffff) 453 454 (rlwinm imm4 imm3 7 1 24) 455 (srwi imm5 imm3 24) 456 (add imm0 imm0 imm4) 457 (add imm0 imm0 imm5) 458 459 ;; reduce mod m1 460 (cmplw cr7 imm0 imm1) 461 (blt cr7 @ok1) 462 (sub imm0 imm0 imm1) 463 @ok1 464 465 (add imm0 imm0 imm3) 466 467 ;; reduce mod m1 468 (cmplw cr7 imm0 imm1) 469 (blt cr7 @ok2) 470 (sub imm0 imm0 imm1) 471 @ok2 472 473 ;; update state 474 (svref imm1 1 seed) 475 (svset imm1 2 seed) 476 (svref imm1 0 seed) 477 (svset imm1 1 seed) 478 (svset imm0 0 seed) 479 480 ;; construct m2 (- (expt 2 31) 21069)) 481 (lis imm5 #x7fff) 482 (ori imm5 imm5 44467) 483 484 ;; second component 485 (svref imm0 3 seed) 486 (rlwinm imm1 imm0 15 1 16) 487 (srwi imm2 imm0 16) 488 (mulli imm2 imm2 21069) 489 (add imm0 imm1 imm2) 490 491 ;; reduce mod m2 492 (cmplw cr7 imm0 imm5) 493 (blt cr7 @ok3) 494 (sub imm0 imm0 imm5) 495 @ok3 496 497 (svref imm1 5 seed) 498 (rlwinm imm2 imm1 15 1 16) 499 (srwi imm3 imm1 16) 500 (mulli imm3 imm3 21069) 501 (add imm2 imm2 imm3) 502 503 ;; reduce mod m2 504 (cmplw cr7 imm2 imm5) 505 (blt cr7 @ok4) 506 (sub imm2 imm2 imm5) 507 @ok4 508 509 (add imm2 imm1 imm2) 510 (cmplw cr7 imm2 imm5) 511 (blt cr7 @ok5) 512 (sub imm2 imm2 imm5) 513 @ok5 514 515 (add imm2 imm2 imm0) 516 (cmplw cr7 imm2 imm5) 517 (blt cr7 @ok6) 518 (sub imm2 imm2 imm5) 519 @ok6 520 521 ;; update state 522 (svref imm0 4 seed) 523 (svset imm0 5 seed) 524 (svref imm0 3 seed) 525 (svset imm0 4 seed) 526 (svset imm2 3 seed) 527 528 ;; combination 529 (svref imm0 0 seed) 530 (cmplw cr7 imm0 imm2) 531 (sub imm0 imm0 imm2) 532 (bgt cr7 @finish) 533 (add imm0 imm0 imm5) 534 @finish 535 (clrlwi imm0 imm0 3) ;don't want negative fixnums 536 (box-fixnum arg_z imm0) 537 (blr))) 443 538 444 539 ; End of ppc-numbers.lisp
Note:
See TracChangeset
for help on using the changeset viewer.
