Changeset 8688


Ignore:
Timestamp:
Mar 8, 2008, 7:35:45 AM (12 years ago)
Author:
rme
Message:

x862-push-register, x862-pop-register: track cstack correctly for x8632.

x862-immediate-get-ptr: Offsets are 32-bit signed quantities on x86; no
need to limit constant offsets to PPC sizes. Also get rid of pointless
target-arch-case checking for alignment.

x862-%lisp-word-ref: add :x8632 clause to target-arch-case; allow bigger
constant displacement.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ia32/compiler/X86/x862.lisp

    r8665 r8688  
    30843084            (x862-new-vstack-lcell :single-float *x862-target-lcell-size* 0 nil)
    30853085            (x862-adjust-vstack *x862-target-node-size*)))
    3086           (progn
     3086          (target-arch-case
     3087           (:x8632
     3088            (if a-float
     3089              (progn
     3090                (setq vinsn (! temp-push-double-float areg))
     3091                (incf *x862-cstack* 16))
     3092              (progn
     3093                (setq vinsn (! temp-push-unboxed-word areg))
     3094                (incf *x862-cstack* *x862-target-dnode-size*))))
     3095           (:x8664
    30873096            (setq vinsn
    30883097                  (if a-float
    30893098                    (! temp-push-double-float areg)
    30903099                    (! temp-push-unboxed-word areg)))
    3091             (setq *x862-cstack* (+ *x862-cstack* 16)))))
     3100            (setq *x862-cstack* (+ *x862-cstack* 16))))))
    30923101      vinsn)))
    30933102
     
    31093118            (setq *x862-top-vstack-lcell* (lcell-parent *x862-top-vstack-lcell*))
    31103119            (x862-adjust-vstack (- *x862-target-node-size*))))
    3111           (progn
     3120          (target-arch-case
     3121           (:x8632
     3122            (if a-float
     3123              (progn
     3124                (setq vinsn (! temp-pop-double-float areg))
     3125                (decf *x862-cstack* 16))
     3126              (progn
     3127                (setq vinsn (! temp-pop-unboxed-word areg))
     3128                (decf *x862-cstack* *x862-target-dnode-size*))))
     3129           (:x8664
    31123130            (setq vinsn
    31133131                  (if a-float
    31143132                    (! temp-pop-double-float areg)
    31153133                    (! temp-pop-unboxed-word areg)))
    3116             (setq *x862-cstack* (- *x862-cstack* 16)))))
     3134            (setq *x862-cstack* (- *x862-cstack* 16))))))
    31173135      vinsn)))
    31183136
     
    78327850             (setq absptr (+ absptr offval) offval 0)
    78337851             (setq absptr nil))
    7834            (and offval (%i> (integer-length offval) 15) (setq offval nil))
    7835            (and absptr (%i> (integer-length absptr) 15) (setq absptr nil))
    7836            (target-arch-case
    7837            
    7838             (:x8664 (progn
    7839                       (and offval (logtest 3 offval) (setq offval nil))
    7840                       (and absptr (logtest 3 absptr) (setq absptr nil)))))
     7852           (and offval (%i> (integer-length offval) 31) (setq offval nil))
     7853           (and absptr (%i> (integer-length absptr) 31) (setq absptr nil))
    78417854           (if absptr
    78427855             (! mem-ref-c-absolute-natural dest absptr)
     
    79127925           (and offval (%i> (integer-length offval) 31) (setq offval nil))
    79137926           (and absptr (%i> (integer-length absptr) 31) (setq absptr nil))
     7927           ;;; huh?
    79147928           (target-arch-case
    79157929            (:x8632 (when (or fixnump (eql size 4) (and (eql size 4) signed))
     
    82008214           (x862-form seg nil xfer offset))
    82018215          ((target-arch-case
    8202            
    8203             (:x8664 (typep fixoffset '(signed-byte 13))))
     8216            (:x8632 (typep fixoffset '(signed-byte 30)))
     8217            (:x8664 (typep fixoffset '(signed-byte 13)))) ;xxx needlessly small
    82048218           (ensuring-node-target (target vreg)
    82058219             (! lisp-word-ref-c target
     
    87008714  (target-arch-case
    87018715   (:x8632
    8702     (break)
    87038716    (let* ((*x862-vstack* *x862-vstack*)
    87048717           (*x862-top-vstack-lcell* *x862-top-vstack-lcell*))
Note: See TracChangeset for help on using the changeset viewer.