Changeset 7877


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

A few more vinsns, including some single-float ones.

File:
1 edited

Legend:

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

    r7817 r7877  
    35523552  (btl (:$ub bit) (:%l int)))
    35533553
     3554;; might be able to use al/ah here
     3555(define-x8632-vinsn set-c-flag-if-variable-logbitp (()
     3556                                                    ((bit :imm)
     3557                                                     (int :imm))
     3558                                                    ((temp0 :u8)
     3559                                                     (temp1 :u8)))
     3560  (movl (:$l 31) (:%l temp1))
     3561  (movl (:%l bit) (:%l temp0))
     3562  (sarl (:$ub x8632::fixnumshift) (:%l temp0))
     3563  (addl (:$b x8632::fixnumshift) (:%l temp0))
     3564  (rcmpl (:%l temp0) (:%l temp1))
     3565  (cmoval (:%l temp1) (:%l temp0))
     3566  (btl (:%l temp0) (:%l int)))
     3567
    35543568(define-x8632-vinsn multiply-immediate (((dest :imm))
    35553569                                        ((src :imm)
     
    36393653  (movl (:%l temp) (:@ (:%seg :rcontext) x8632::tcr.next-tsp)))
    36403654
     3655(define-x8632-vinsn (temp-push-single-float :push :word :csp)
     3656    (()
     3657     ((f :single-float)))
     3658  (movd (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%mmx x8632::stack-temp))
     3659  (subl (:$b 8) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))
     3660  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l x8632::ra0))
     3661  (movd (:%mmx x8632::stack-temp) (:@ (:%l x8632::ra0)))
     3662  (movss (:%xmm f) (:@ 4 (:%l x8632::ra0))))
     3663
     3664(define-x8632-vinsn (temp-pop-single-float :pop :word :csp)
     3665    (((f :single-float))
     3666     ())
     3667  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l x8632::ra0))
     3668  (movss (:@ 4 (:%q x8664::ra0)) (:%xmm f))
     3669  (addl (:$b (* 2 x8632::dnode-size)) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)))
     3670
     3671(define-x8632-vinsn (temp-push-double-float :push :word :csp)
     3672    (()
     3673     ((f :double-float)))
     3674  (movd (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%mmx x8632::stack-temp))
     3675  (subl (:$b 16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))
     3676  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l x8632::ra0))
     3677  (movd (:%mmx x8632::stack-temp) (:@ (:%l x8632::ra0)))
     3678  (movsd (:%xmm f) (:@ 8 (:%l x8632::ra0))))
     3679
     3680(define-x8632-vinsn (temp-pop-double-float :pop :word :csp)
     3681    (((f :double-float))
     3682     ())
     3683  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l x8632::ra0))
     3684  (movsd (:@ 8 (:%l x8632::ra0)) (:%xmm f))
     3685  (addl (:$b 16) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp)))
     3686
    36413687(queue-fixup
    36423688 (fixup-x86-vinsn-templates
Note: See TracChangeset for help on using the changeset viewer.