Changeset 14787
- Timestamp:
- May 6, 2011, 4:19:53 AM (14 years ago)
- Location:
- trunk/source/compiler/ARM
- Files:
-
- 2 edited
-
arm-vinsns.lisp (modified) (2 diffs)
-
arm2.lisp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/compiler/ARM/arm-vinsns.lisp
r14772 r14787 658 658 (src :address)) 659 659 ((src :address) 660 (index : s32)))661 (add src src index)660 (index :lisp))) 661 (add src src (:asr index (:$ arm::fixnumshift))) 662 662 (fldd dest (:@ src (:$ 0)))) 663 663 … … 683 683 (((dest :single-float)) 684 684 ((src :address) 685 (index :s16const)) 686 ((temp :u32))) 687 (ldr temp (:@ src (:$ index))) 688 (fmsr dest temp)) 685 (index :s16const))) 686 (flds dest (:@ src (:$ index)))) 689 687 690 688 (define-arm-vinsn (mem-ref-single-float :predicatable) 691 (((dest :single-float)) 689 (((dest :single-float) 690 (src :address)) 692 691 ((src :address) 693 (index :lisp)) 694 ((temp :u32))) 695 (ldr temp (:@ src (:asr index (:$ arm::fixnumshift)))) 696 (fmsr dest temp)) 692 (index :lisp))) 693 (add src src (:asr index (:$ arm::fixnumshift))) 694 (flds dest (:@ src (:$ 0)))) 697 695 698 696 (define-arm-vinsn (mem-set-c-single-float :predicatable) -
trunk/source/compiler/ARM/arm2.lisp
r14778 r14787 6773 6773 (! mem-ref-c-single-float fp-reg ptrreg fixoffset))) 6774 6774 (with-imm-target () (ptrreg :address) 6775 (with-imm-target (ptrreg) (offsetreg :s32) 6776 (arm2-two-targeted-reg-forms seg 6777 ptr ptrreg 6778 offset offsetreg) 6779 (let* ((last (dll-node-pred seg))) 6780 (if (and (typep last 'vinsn) 6775 (with-node-target (ptrreg) offsetreg 6776 (multiple-value-setq (ptrreg offsetreg) 6777 (arm2-two-untargeted-reg-forms seg 6778 ptr ptrreg 6779 offset offsetreg)) 6780 (let* ((last (dll-node-pred seg))) 6781 (if (and (typep last 'vinsn) 6781 6782 (eq (vinsn-template-name (vinsn-template last)) 'lri) 6782 (typep (setq fixoffset ( svref (vinsn-variable-parts last) 1))6783 (typep (setq fixoffset (ash (svref (vinsn-variable-parts last) 1) (- arm::fixnumshift))) 6783 6784 '(signed-byte 10)) 6784 6785 (not (logtest fixoffset #x3))) 6785 (progn6786 (remove-dll-nodelast)6787 (if double-p6788 (! mem-ref-c-double-float fp-reg ptrreg fixoffset)6789 (! mem-ref-c-single-float fp-reg ptrreg fixoffset)))6790 (progn6791 (if double-p6792 (! mem-ref-double-float fp-reg ptrreg offsetreg)6793 (! mem-ref-single-float fp-reg ptrreg offsetreg))))))))6786 (progn 6787 (elide-vinsn last) 6788 (if double-p 6789 (! mem-ref-c-double-float fp-reg ptrreg fixoffset) 6790 (! mem-ref-c-single-float fp-reg ptrreg fixoffset))) 6791 (progn 6792 (if double-p 6793 (! mem-ref-double-float fp-reg ptrreg offsetreg) 6794 (! mem-ref-single-float fp-reg ptrreg offsetreg)))))))) 6794 6795 (<- fp-reg)) 6795 6796 (^)))))
Note:
See TracChangeset
for help on using the changeset viewer.
