Changeset 10811
- Timestamp:
- 06/19/05 02:48:08 (3 years ago)
- Location:
- trunk/src
- Files:
-
- 2 modified
-
code/kernel.lisp (modified) (1 diff)
-
compiler/ppc/float.lisp (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/code/kernel.lisp
r7874 r9799 153 153 #+long-float 154 154 (defun long-float-low-bits (x) (long-float-low-bits x)) 155 156 #+sparc 157 (defun double-float-bits (x) (double-float-bits x)) 158 159 #-sparc 160 (defun double-float-bits (x) 161 (values (double-float-high-bits x) (double-float-low-bits x))) 162 163 164 (defun %numerator (x) 165 (declare (type ratio x)) 166 (%numerator x)) 167 168 (defun %denominator (x) 169 (declare (type ratio x)) 170 (%denominator x)) -
trunk/src/compiler/ppc/float.lisp
r8638 r10507 140 140 (defun complex-double-reg-imag-tn (x) 141 141 (make-random-tn :kind :normal :sc (sc-or-lose 'double-reg *backend*) 142 :offset ( + (tn-offset x) 2)))142 :offset (1+ (tn-offset x)))) 143 143 144 144 … … 511 511 (:temporary (:from (:argument 0) :sc single-reg) temp) 512 512 (:temporary (:scs (double-stack)) stack-temp) 513 (:results (y :scs (signed-reg) 514 :load-if (not (sc-is y signed-stack)))) 513 (:results (y :scs (signed-reg))) 515 514 (:arg-types ,from-type) 516 515 (:result-types signed-num) … … 523 522 (note-this-location vop :internal-error) 524 523 (inst ,inst temp x) 525 (sc-case y 526 (signed-stack 527 (inst stfd temp (current-nfp-tn vop) 528 (* (tn-offset y) vm:word-bytes))) 529 (signed-reg 530 (inst stfd temp (current-nfp-tn vop) 531 (* (tn-offset stack-temp) vm:word-bytes)) 532 (inst lwz y (current-nfp-tn vop) 533 (+ 4 (* (tn-offset stack-temp) vm:word-bytes))))))))) 524 (inst stfd temp (current-nfp-tn vop) 525 (* (tn-offset stack-temp) vm:word-bytes)) 526 (inst lwz y (current-nfp-tn vop) 527 (+ 4 (* (tn-offset stack-temp) vm:word-bytes))))))) 534 528 (frob %unary-truncate single-reg single-float fctiwz) 535 529 (frob %unary-truncate double-reg double-float fctiwz) … … 633 627 (:args (float :scs (double-reg descriptor-reg) 634 628 :load-if (not (sc-is float double-stack)))) 635 (:results (hi-bits :scs (signed-reg) 636 :load-if (or (sc-is float descriptor-reg double-stack) 637 (not (sc-is hi-bits signed-stack))))) 638 (:temporary (:scs (signed-stack)) stack-temp) 629 (:results (hi-bits :scs (signed-reg))) 630 (:temporary (:scs (double-stack)) stack-temp) 639 631 (:arg-types double-float) 640 632 (:result-types signed-num) … … 643 635 (:vop-var vop) 644 636 (:generator 5 645 (sc-case hi-bits 646 (signed-reg 647 (sc-case float 648 (double-reg 649 (inst stfd float (current-nfp-tn vop) 650 (* (tn-offset stack-temp) vm:word-bytes)) 651 (inst lwz hi-bits (current-nfp-tn vop) 652 (* (tn-offset stack-temp) vm:word-bytes))) 653 (double-stack 654 (inst lwz hi-bits (current-nfp-tn vop) 655 (* (tn-offset float) vm:word-bytes))) 656 (descriptor-reg 657 (loadw hi-bits float vm:double-float-value-slot 658 vm:other-pointer-type)))) 659 (signed-stack 660 (sc-case float 661 (double-reg 662 (inst stfd float (current-nfp-tn vop) 663 (* (tn-offset hi-bits) vm:word-bytes)))))))) 637 (sc-case float 638 (double-reg 639 (inst stfd float (current-nfp-tn vop) 640 (* (tn-offset stack-temp) vm:word-bytes)) 641 (inst lwz hi-bits (current-nfp-tn vop) 642 (* (tn-offset stack-temp) vm:word-bytes))) 643 (double-stack 644 (inst lwz hi-bits (current-nfp-tn vop) 645 (* (tn-offset float) vm:word-bytes))) 646 (descriptor-reg 647 (loadw hi-bits float vm:double-float-value-slot 648 vm:other-pointer-type))))) 664 649 665 650 (define-vop (double-float-low-bits) 666 651 (:args (float :scs (double-reg descriptor-reg) 667 652 :load-if (not (sc-is float double-stack)))) 668 (:results (lo-bits :scs (unsigned-reg) 669 :load-if (or (sc-is float descriptor-reg double-stack) 670 (not (sc-is lo-bits unsigned-stack))))) 671 (:temporary (:scs (unsigned-stack)) stack-temp) 653 (:results (lo-bits :scs (unsigned-reg))) 654 (:temporary (:scs (double-stack)) stack-temp) 672 655 (:arg-types double-float) 673 656 (:result-types unsigned-num) … … 676 659 (:vop-var vop) 677 660 (:generator 5 678 (sc-case lo-bits 679 (unsigned-reg 680 (sc-case float 681 (double-reg 682 (inst stfd float (current-nfp-tn vop) 683 (* (tn-offset stack-temp) vm:word-bytes)) 684 (inst lwz lo-bits (current-nfp-tn vop) 685 (* (1+ (tn-offset stack-temp)) vm:word-bytes))) 686 (double-stack 687 (inst lwz lo-bits (current-nfp-tn vop) 688 (* (1+ (tn-offset float)) vm:word-bytes))) 689 (descriptor-reg 690 (loadw lo-bits float (1+ vm:double-float-value-slot) 691 vm:other-pointer-type)))) 692 (unsigned-stack 693 (sc-case float 694 (double-reg 695 (inst stfd float (current-nfp-tn vop) 696 (* (tn-offset lo-bits) vm:word-bytes)))))))) 661 (sc-case float 662 (double-reg 663 (inst stfd float (current-nfp-tn vop) 664 (* (tn-offset stack-temp) vm:word-bytes)) 665 (inst lwz lo-bits (current-nfp-tn vop) 666 (* (1+ (tn-offset stack-temp)) vm:word-bytes))) 667 (double-stack 668 (inst lwz lo-bits (current-nfp-tn vop) 669 (* (1+ (tn-offset float)) vm:word-bytes))) 670 (descriptor-reg 671 (loadw lo-bits float (1+ vm:double-float-value-slot) 672 vm:other-pointer-type))))) 697 673 698 674
