Changeset 9265


Ignore:
Timestamp:
Apr 24, 2008, 7:34:19 PM (12 years ago)
Author:
rme
Message:

set-{single,double}-c-arg, reload-{single,double}-c-arg: use vinsn temp instead
of ra0; update for 32-bit.

save-node-register-to-spill-area, load-node-register-from-spill-area: new

File:
1 edited

Legend:

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

    r9233 r9265  
    16101610  (jmp (:@ .SPnthrow1value)))
    16111611
    1612 
    1613 ;;; xxx I don't know what these next 4 are doing.
    16141612(define-x8632-vinsn set-single-c-arg (()
    16151613                                      ((arg :single-float)
    1616                                        (offset :u32const)))
    1617   (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l x8632::ra0))
    1618   (movss (:%xmm arg) (:@ (:apply + 8 (:apply ash offset 2)) (:%l x8632::ra0))))
     1614                                       (offset :u32const))
     1615                                      ((temp :imm)))
     1616  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp))
     1617  (movss (:%xmm arg) (:@ (:apply + 4 (:apply ash offset 2)) (:%l temp))))
    16191618
    16201619(define-x8632-vinsn reload-single-c-arg (((arg :single-float))
    1621                                          ((offset :u32const)))
    1622   (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l x8632::ra0))
    1623   (movss (:@ (:apply + 8 (:apply ash offset 2)) (:%l x8632::ra0)) (:%xmm arg)))
     1620                                         ((offset :u32const))
     1621                                         ((temp :imm)))
     1622  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp))
     1623  (movss (:@ (:apply + 4 (:apply ash offset 2)) (:%l temp)) (:%xmm arg)))
    16241624
    16251625(define-x8632-vinsn set-double-c-arg (()
    16261626                                      ((arg :double-float)
    1627                                        (offset :u32const)))
    1628   (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l x8632::ra0))
    1629   (movsd (:%xmm arg) (:@ (:apply + 8 (:apply ash offset 2)) (:%l x8632::ra0))))
     1627                                       (offset :u32const))
     1628                                      ((temp :imm)))
     1629  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp))
     1630  (movsd (:%xmm arg) (:@ (:apply + 4 (:apply ash offset 2)) (:%l temp))))
    16301631
    16311632(define-x8632-vinsn reload-double-c-arg (((arg :double-float))
    1632                                          ((offset :u32const)))
    1633   (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l x8632::ra0))
    1634   (movsd (:@ (:apply + 8 (:apply ash offset 2)) (:%l x8632::ra0)) (:%xmm arg)))
     1633                                         ((offset :u32const))
     1634                                         ((temp :imm)))
     1635  (movl (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%l temp))
     1636  (movsd (:@ (:apply + 4 (:apply ash offset 2)) (:%l temp)) (:%xmm arg)))
    16351637
    16361638(define-x8632-subprim-call-vinsn (ff-call)  .SPffcall)
     
    17721774                                             ((v :lisp)
    17731775                                              (idx :u32const)))
    1774   (movsd (:%xmm val) (:@ (:apply + x8632::misc-data-offset (:apply ash idx 2)) (:%l v))))
     1776  (movss (:%xmm val) (:@ (:apply + x8632::misc-data-offset (:apply ash idx 2)) (:%l v))))
    17751777
    17761778(define-x8632-vinsn array-data-vector-ref (((dest :lisp))
     
    37793781  (movl (:$l 0) (:@ (:%seg :rcontext) x8632::tcr.next-method-context)))
    37803782
     3783(define-x8632-vinsn save-node-register-to-spill-area (()
     3784                                         ((src :lisp)))
     3785  ;; maybe add constant to index slot 0--3
     3786  (movl (:%l src) (:@ (:%seg :rcontext) x8632::tcr.save3)))
     3787
     3788(define-x8632-vinsn load-node-register-from-spill-area (((dest :lisp))
     3789                                                        ())
     3790  (movl (:@ (:%seg :rcontext) x8632::tcr.save3) (:%l dest))
     3791  (movss (:%xmm x8632::fpzero) (:@ (:%seg :rcontext) x8632::tcr.save3)))
     3792
    37813793(queue-fixup
    37823794 (fixup-x86-vinsn-templates
Note: See TracChangeset for help on using the changeset viewer.