Changeset 7876


Ignore:
Timestamp:
Dec 11, 2007, 4:39:32 AM (13 years ago)
Author:
rme
Message:

A SINGLE-FLOAT is a boxed object on x8632.

Still more places where an additional imm reg is needed.

File:
1 edited

Legend:

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

    r7819 r7876  
    17961796               (! misc-ref-c-bit-fixnum target src index-known-fixnum)
    17971797               (with-additional-imm-reg ()
    1798                  (with-imm-temps
    1799                      () (word-index bitnum)
    1800                    (if index-known-fixnum
    1801                      (progn
    1802                        (x862-lri seg word-index (+ (arch::target-misc-data-offset arch) (ash index-known-fixnum -6)))
    1803                        (x862-lri seg bitnum (logand index-known-fixnum #x63)))
    1804                      (! word-index-and-bitnum-from-index word-index bitnum unscaled-idx))
    1805                    (! ref-bit-vector-fixnum target bitnum src word-index)))))))))
     1798                 (with-additional-imm-reg ()
     1799                   (with-imm-temps
     1800                       () (word-index bitnum)
     1801                     (if index-known-fixnum
     1802                       (progn
     1803                         (x862-lri seg word-index (+ (arch::target-misc-data-offset arch) (ash index-known-fixnum -6)))
     1804                         (x862-lri seg bitnum (logand index-known-fixnum #x63)))
     1805                       (! word-index-and-bitnum-from-index word-index bitnum unscaled-idx))
     1806                     (! ref-bit-vector-fixnum target bitnum src word-index))))))))))
    18061807    (^)))
    18071808
     
    30723073        (setq vinsn (x862-vpush-register seg areg :node-temp))
    30733074        (if a-single
    3074           (progn
    3075             (setq vinsn (! vpush-single-float areg))
    3076             (x862-new-vstack-lcell :single-float *x862-target-lcell-size* 0 nil)
    3077             (x862-adjust-vstack *x862-target-node-size*))
     3075          (target-arch-case
     3076           (:x8632
     3077            (setq vinsn (! temp-push-single-float areg))
     3078            (incf *x862-cstack* *x862-target-dnode-size*))
     3079           (:x8664
     3080            (setq vinsn (! vpush-single-float areg))
     3081            (x862-new-vstack-lcell :single-float *x862-target-lcell-size* 0 nil)
     3082            (x862-adjust-vstack *x862-target-node-size*)))
    30783083          (progn
    30793084            (setq vinsn
     
    30933098        (setq vinsn (x862-vpop-register seg areg))
    30943099        (if a-single
    3095           (progn
     3100          (target-arch-case
     3101           (:x8632
     3102            (setq vinsn (! temp-pop-single-float areg))
     3103            (decf *x862-cstack* *x862-target-dnode-size*))
     3104           (:x8664
    30963105            (setq vinsn (! vpop-single-float areg))
    30973106            (setq *x862-top-vstack-lcell* (lcell-parent *x862-top-vstack-lcell*))
    3098             (x862-adjust-vstack (- *x862-target-node-size*)))
     3107            (x862-adjust-vstack (- *x862-target-node-size*))))
    30993108          (progn
    31003109            (setq vinsn
     
    31113120      (declare (fixnum class mode))
    31123121      (cond ((= class hard-reg-class-fpr)
    3113              (make-wired-lreg x8664::fp1 :class class :mode mode))
     3122             (make-wired-lreg target::fp1 :class class :mode mode))
    31143123            ((= class hard-reg-class-gpr)
    31153124             (if (= mode hard-reg-class-gpr-mode-node)
     
    64916500                                       char *x862-arg-z*)
    64926501    (case (arch::target-char-code-limit (backend-target-arch *target-backend*))
    6493       (256 (! %set-scharcode8 src unscaled-idx char))
     6502      (256
     6503       (with-additional-imm-reg ()
     6504         (! %set-scharcode8 src unscaled-idx char)))
    64946505      (t
    64956506       (with-additional-imm-reg ()
     
    66936704            (! set-c-flag-if-constant-logbitp x86-bit reg))
    66946705          (multiple-value-bind (rbit rform) (x862-two-untargeted-reg-forms seg bitnum *x862-arg-y* form *x862-arg-z*)
    6695             (! set-c-flag-if-variable-logbitp rbit rform)))
     6706            (with-additional-imm-reg ()
     6707              (! set-c-flag-if-variable-logbitp rbit rform))))
    66966708        (regspec-crf-gpr-case
    66976709         (vreg dest)
     
    81718183           (x862-form seg nil xfer offset))
    81728184          ((typep fixoffset '(signed-byte 16))
    8173            (format t "~&in constant offset branch")
    81748185           (with-imm-target () (val :natural)
    81758186             (! lisp-word-ref-c val
     
    81808191          (t (multiple-value-bind (breg oreg)
    81818192                 (x862-two-untargeted-reg-forms seg base *x862-arg-y* offset *x862-arg-z*)
    8182                (format t "~&in general offset branch")
    81838193               (with-imm-target () (otemp :s32)
    81848194                 (! fixnum->signed-natural otemp oreg)
Note: See TracChangeset for help on using the changeset viewer.