Ignore:
Timestamp:
Oct 1, 2007, 8:20:42 PM (14 years ago)
Author:
rme
Message:

IA-32 stuff

File:
1 edited

Legend:

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

    r7286 r7339  
    13131313;; start-mv-call
    13141314
     1315;; xxx check this
     1316(define-x8632-vinsn (vpush-label :push :node :vsp) (()
     1317                                                 ((label :label)))
     1318  (leal (:@ (:^ label) (:%l x8632::fn)) (:%l x8632::ra0))
     1319  (pushl (:%l x8632::ra0)))
     1320
    13151321;; ????
    13161322(define-x8632-vinsn emit-aligned-label (()
     
    13201326
    13211327;; pass-multiple-values-symbol
     1328;;; %ra0 is pointing into %fn, so no need to copy %fn here.
     1329(define-x8632-vinsn pass-multiple-values-symbol (()
     1330                                                 ())
     1331  (pushl (:@ (+ x8632::nil-value (x8632::%kernel-global 'x86::ret1valaddr))))
     1332  (jmp (:@ x8632::symbol.fcell (:% x8632::fname))))
     1333
     1334
    13221335;; pass-multiple-values
    13231336
     
    14411454  :done)
    14421455
     1456(define-x8632-subprim-lea-jmp-vinsn (bind-interrupt-level-m1) .SPbind-interrupt-level-m1)
     1457
     1458(define-x8632-subprim-lea-jmp-vinsn (bind-interrupt-level) .SPbind-interrupt-level)
     1459
     1460(define-x8632-subprim-call-vinsn (unbind-interrupt-level) .SPunbind-interrupt-level)
     1461
    14431462(define-x8632-subprim-jump-vinsn (tail-call-fn-gen) .SPtcallnfngen)
    14441463
     
    15141533
    15151534;;; 3d-dims
    1516 ;;; 2d-unscaled-index
     1535
     1536;;; xxx
     1537(define-x8632-vinsn 2d-unscaled-index (((dest :imm)
     1538                                        (dim1 :u32))
     1539                                       ((dim1 :u32)
     1540                                        (i :imm)
     1541                                        (j :imm)))
     1542
     1543  (imull (:%l i) (:%l dim1))
     1544  (leal (:@ (:%l j) (:%l dim1)) (:%l dest)))
    15171545
    15181546;;; 3d-unscaled-index
     
    15651593                                  ())
    15661594  (movl (:$self 0) (:%l x8632::fn)))
     1595
     1596
     1597(define-x8632-subprim-jump-vinsn (tail-call-sym-slide) .SPtcallsymslide)
     1598
     1599(define-x8632-subprim-jump-vinsn (tail-call-sym-vsp) .SPtcallsymvsp)
     1600
     1601
     1602(define-x8632-vinsn character->code (((dest :u32))
     1603                                     ((src :lisp)))
     1604  (movl (:%l src) (:%l dest))
     1605  (sarl (:$ub x8632::charcode-shift) (:%l dest)))
     1606
     1607(define-x8632-vinsn adjust-vsp (()
     1608                                ((amount :s32const)))
     1609  ((:and (:pred >= amount -128) (:pred <= amount 127))
     1610   (addl (:$b amount) (:%l x8632::esp)))
     1611  ((:not (:and (:pred >= amount -128) (:pred <= amount 127)))
     1612   (addl (:$l amount) (:%l x8632::esp))))
    15671613
    15681614
     
    17401786  (shrl (:$ub amt) (:%l dest)))
    17411787
    1742 
     1788(define-x8632-vinsn recover-fn (()
     1789                                ())
     1790  (movl (:$self 0) (:%l x8632::fn)))
     1791
     1792;;; xxx probably wrong
     1793(define-x8632-vinsn (call-subprim-3 :call :subprim-call) (((dest t))
     1794                                                          ((spno :s32const)
     1795                                                           (x t)
     1796                                                           (y t)
     1797                                                           (z t))
     1798                                                          ((entry (:label 1))))
     1799  (:talign 5)
     1800  (call (:@ spno))
     1801  (movl (:$self 0) (:%l x8632::fn)))
    17431802
    17441803(queue-fixup
Note: See TracChangeset for help on using the changeset viewer.