Changeset 8687


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

Correct bogosities in set-z-flag-if-cons.

Use explicit vinsn temporary in macptr->stack rather than ra0; also
account for 32-bit word size.

Account for 32-bit word size differences in temp-push-unboxed word and
temp-pop-unboxed-word; in the pop case, avoid using a vinsn temporary.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ia32/compiler/X86/X8632/x8632-vinsns.lisp

    r8629 r8687  
    507507  (andb (:$b x8632::fulltagmask) (:%accb tag))
    508508  (cmpb (:$b x8632::fulltag-cons) (:%accb tag))
    509   (sete (:%b x8632::ah))
     509  (setne (:%b x8632::ah))
    510510  (cmpl (:$l x8632::nil-value) (:% object))
    511511  (sete (:%b x8632::al))
    512   (xorb (:%b x8632::al) (:%b x8632::ah)))
     512  (orb (:%b x8632::ah) (:%b x8632::al)))
    513513
    514514(define-x8632-vinsn trap-unless-uvector (()
     
    28932893  (movl (:@ (:%l src) (:%l index)) (:%l dest)))
    28942894
    2895 ;;; xxx 16? movapd?
    28962895(define-x8632-vinsn macptr->stack (((dest :lisp))
    2897                                    ((ptr :address)))
     2896                                   ((ptr :address))
     2897                                   ((temp :imm)))
    28982898  (movd (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%mmx x8632::stack-temp))
    2899   (subl (:$b (+ 16 x8632::macptr.size)) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))
    2900   (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l x8632::ra0))
    2901   (movd (:%mmx x8632::stack-temp) (:@ (:%l x8632::ra0)))
    2902   (leal (:@ (+ 16 x8632::fulltag-misc) (:%l  x8632::ra0)) (:%l dest))
     2899  (subl (:$b (+ 8 x8632::macptr.size)) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))
     2900  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp))
     2901  (movd (:%mmx x8632::stack-temp) (:@ (:%l temp)))
     2902  (leal (:@ (+ 8 x8632::fulltag-misc) (:%l  temp)) (:%l dest))
    29032903  (movl (:$l x8632::macptr-header) (:@ x8632::macptr.header (:%l dest)))
    29042904  (movl (:%l ptr) (:@ x8632::macptr.address (:%l dest)))
    2905   (movapd (:%xmm x8632::fpzero)  (:@ x8632::macptr.domain (:%l dest))))
     2905  (movsd (:%xmm x8632::fpzero)  (:@ x8632::macptr.domain (:%l dest))))
    29062906
    29072907(define-x8632-vinsn fixnum->signed-natural (((dest :s32))
     
    36773677     ((temp :imm)))
    36783678  (movd (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%mmx x8632::stack-temp))
    3679   (subl (:$b 16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))
     3679  (subl (:$b 8) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))
    36803680  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp))
    36813681  (movd (:%mmx x8632::stack-temp) (:@ (:%l temp)))
     
    36843684(define-x8632-vinsn (temp-pop-unboxed-word :pop :word :csp)
    36853685    (((w :u32))
    3686      ()
    3687      ((temp :imm)))
    3688   (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp))
    3689   (movl (:@ 4 (:%l temp)) (:%l w))
    3690   (addl (:$b 16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)))
     3686     ())
     3687  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l w))
     3688  (movl (:@ 4 (:%l w)) (:%l w))
     3689  (addl (:$b 8) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)))
    36913690
    36923691(define-x8632-vinsn (temp-push-node :push :word :tsp)
Note: See TracChangeset for help on using the changeset viewer.