Changeset 9580


Ignore:
Timestamp:
May 22, 2008, 11:11:31 PM (11 years ago)
Author:
rme
Message:

x862-fixnup-fwd-refs: update for x8632

x862-vref1: in the 32-bit value case, call x862-box-s32/x862-box-u32 on
the result value on x8632. (On x8664, 32-bit quantities always fit in
a fixnum.)

x862-set-float: get rid of an unnecessary with-add'l-imm-reg.

File:
1 edited

Legend:

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

    r9560 r9580  
    757757  (make-uarray-1 subtype size t 0 nil nil nil nil t nil))
    758758
    759 ;;; xxx x8632 changes?
    760759(defun x862-fixup-fwd-refs (afunc)
    761760  (dolist (f (afunc-inner-functions afunc))
     
    763762  (let ((fwd-refs (afunc-fwd-refs afunc)))
    764763    (when fwd-refs
    765       (let* ((native-x8664-functions #-x8664-target nil
    766                                      #+x8664-target (eq *target-backend*
    767                                                         *host-backend*))
    768              (v (if native-x8664-functions
     764      (let* ((native-x86-functions #-x86-target nil
     765                                   #+x86-target (eq *target-backend*
     766                                                    *host-backend*))
     767             (v (if native-x86-functions
    769768                  (function-to-function-vector (afunc-lfun afunc))
    770769                  (afunc-lfun afunc)))
     
    773772        (dolist (ref fwd-refs)
    774773          (let* ((ref-fun (afunc-lfun ref)))
    775             (do* ((i (if native-x8664-functions
     774            (do* ((i (if native-x86-functions
    776775                       (%function-code-words
    777776                        (function-vector-to-function v))
     
    15601559         (:x8632 nil)
    15611560         (:x8664 t))
    1562       (! box-fixnum node-dest s32-src)  ;xxx might overflow on x8632
     1561      (! box-fixnum node-dest s32-src)
    15631562      (let* ((arg_z ($ *x862-arg-z*))
    15641563             (imm0 ($ *x862-imm0* :mode :s32)))
     
    16761675                          (if (eq type-keyword :simple-string)
    16771676                            (! u32->char target temp)
    1678                             (! box-fixnum target temp)))))))
     1677                            (target-arch-case
     1678                             (:x8632
     1679                              (if is-signed
     1680                                (x862-box-s32 seg target temp)
     1681                                (x862-box-u32 seg target temp)))
     1682                             (:x8664
     1683                              (! box-fixnum target temp)))))))))
    16791684             (with-imm-target () idx-reg
    16801685               (if index-known-fixnum
     
    16991704                          (if (eq type-keyword :simple-string)
    17001705                            (! u32->char target temp)
    1701                             (! box-fixnum target temp)))))))))
     1706                            (target-arch-case
     1707                             (:x8632 (if is-signed
     1708                                       (x862-box-s32 seg target temp)
     1709                                       (x862-box-u32 seg target temp)))
     1710                             (:x8664 (! box-fixnum target temp)))))))))))
    17021711          (is-8-bit
    17031712           (with-imm-target () temp
     
    78417850                        (with-additional-imm-reg ()
    78427851                          (with-imm-target (ptr-reg) (offset-reg :s32)
    7843                             (with-additional-imm-reg ()
    7844                               (with-imm-temps (ptr-reg) ()
    7845                                 (x862-copy-register seg fp-reg rnew)
    7846                                 (! fixnum->signed-natural offset-reg roffset)))
     7852                            (with-imm-temps (ptr-reg) ()
     7853                              (x862-copy-register seg fp-reg rnew)
     7854                              (! fixnum->signed-natural offset-reg roffset))
    78477855                            (if double-p
    78487856                              (! mem-set-double-float fp-reg ptr-reg offset-reg)
Note: See TracChangeset for help on using the changeset viewer.