Changeset 16497


Ignore:
Timestamp:
Aug 8, 2015, 11:35:37 PM (4 years ago)
Author:
gb
Message:

Bail out more.

Location:
branches/lscan/source/compiler/X86
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/lscan/source/compiler/X86/X8664/x8664-vinsns.lisp

    r16494 r16497  
    11281128(define-x8664-vinsn (spill-natural  :spill :nfp :set) (()
    11291129                                                        ((val :u64)
    1130                                                          (offset :u16const)
    1131                                  ))
    1132  
    1133   (movq (:rcontext x8664::tcr.nfp) (:%q x8664::temp5))
    1134   (movq (:%q val) (:@ (:apply + 16 offset) (:%q x8664::temp5))))
     1130                                                         (offset :u16const))
     1131                                                       ((nfp :lisp)))
     1132  (movq (:rcontext x8664::tcr.nfp) (:%q nfp))
     1133  (movq (:%q val) (:@ (:apply + 16 offset) (:%q nfp))))
    11351134
    11361135
    11371136
    11381137(define-x8664-vinsn (spill-single-float  :spill :nfp :set) (()
    1139                                                         ((val :single-float)
    1140                                                          (offset :u16const)
    1141                                             ))
    1142   (movq (:rcontext x8664::tcr.nfp) (:%q x8664::temp5))
    1143   (movss (:%xmm val) (:@ (:apply + 16 offset) (:%q x8664::temp5))))
     1138                                                            ((val :single-float)
     1139                                                             (offset :u16const))
     1140                                                            ((nfp :lisp)))
     1141  (movq (:rcontext x8664::tcr.nfp) (:%q nfp))
     1142  (movss (:%xmm val) (:@ (:apply + 16 offset) (:%q nfp))))
    11441143
    11451144
     
    11471146
    11481147(define-x8664-vinsn (spill-double-float  :spill :nfp :set) (()
    1149                                             ((val :double-float)
    1150                                              (offset :u16const)
    1151                                              ))
    1152   (movq (:rcontext x8664::tcr.nfp) (:%q x8664::temp5))
    1153   (movsd (:%xmm val) (:@ (:apply + 16 offset) (:%q x8664::temp5))))
     1148                                                            ((val :double-float)
     1149                                                             (offset :u16const))
     1150                                                            ((nfp :lisp)))
     1151  (movq (:rcontext x8664::tcr.nfp) (:%q nfp))
     1152  (movsd (:%xmm val) (:@ (:apply + 16 offset) (:%q nfp))))
    11541153
    11551154
     
    11571156
    11581157(define-x8664-vinsn (spill-complex-single-float :spill :nfp :set) (()
    1159                                                    ((val :complex-single-float)
    1160                                                     (offset :u16const)
    1161                                                   ))
    1162   (movq (:rcontext x8664::tcr.nfp) (:%q x8664::temp5))
    1163   (movq (:%xmm val) (:@ (:apply + 16 offset) (:%q x8664::temp5))))
     1158                                                                   ((val :complex-single-float)
     1159                                                                    (offset :u16const))
     1160                                                                   ((nfp :lisp)))
     1161                                                                   
     1162                                                   
     1163  (movq (:rcontext x8664::tcr.nfp) (:%q nfp))
     1164  (movq (:%xmm val) (:@ (:apply + 16 offset) (:%q nfp))))
    11641165
    11651166(define-x8664-vinsn (spill-complex-double-float  :spill :nfp :set) (()
     
    21112112  (:anchored-uuo (uuo-error-not-callable)))
    21122113
    2113 (define-x8664-vinsn (pass-multiple-values :call :extended-call :jumplr) (()
     2114(define-x8664-vinsn (pass-multiple-values :call :jumplr) (()
    21142115                                                    ()
    21152116                                                    ((tag :u8)))
     
    25992600(define-x8664-vinsn save-nfp (()
    26002601                              ()
    2601                             )
     2602                              ((nfp :lisp)))
    26022603  ((:pred > (:apply x862-max-nfp-depth) 0)
    26032604   (movq (:rcontext x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))
     
    26052606     (subq (:$b (:apply + 16 (:apply x862-max-nfp-depth))) (:rcontext x8664::tcr.foreign-sp))
    26062607     (subq (:$l (:apply + 16 (:apply x862-max-nfp-depth))) (:rcontext x8664::tcr.foreign-sp)))
    2607    (movq (:rcontext x8664::tcr.foreign-sp) (:%q x8664::temp5))
    2608    (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::temp5)))
     2608   (movq (:rcontext x8664::tcr.foreign-sp) (:%q nfp))
     2609   (movq (:%mmx x8664::stack-temp) (:@ (:%q nfp)))
    26092610   (movq (:rcontext x8664::tcr.nfp) (:%mmx x8664::stack-temp))
    2610    (movq (:%mmx x8664::stack-temp) (:@ 8 (:%q x8664::temp5)))
    2611    (movq (:%q x8664::temp5) (:rcontext x8664::tcr.nfp))))
     2611   (movq (:%mmx x8664::stack-temp) (:@ 8 (:%q nfp)))
     2612   (movq (:%q nfp) (:rcontext x8664::tcr.nfp))))
    26122613
    26132614
     
    52255226   (cmpq (:$l maxval) (:%q idx))))
    52265227
    5227 (define-x8664-vinsn (ijmp :branch) (((idx :u32))
     5228(define-x8664-vinsn (ijmp ) (((idx :u32))
    52285229                                    ((idx :u32)
    52295230                                     (count :u32const))
  • branches/lscan/source/compiler/X86/x862.lisp

    r16496 r16497  
    1 ;;;-*-Mode: LISP; Package: CCL -*-
     1o;;;-*-Mode: LISP; Package: CCL -*-
    22;;;
    33;;;   Copyright (C) 2005-2009 Clozure Associates
     
    385385     
    386386(defun x862-nfp-set (seg reg ea)
     387  (when *backend-use-linear-scan* (break))
    387388  (with-x86-local-vinsn-macros (seg )
    388389    (let* ((offset (logand #xfff8 ea))
     
    32633264                                  (backend-get-next-label))))
    32643265          (unless simple-case
    3265             (linear-scan-bailout "funcall of non-constant")
    3266             (x862-vpush-register seg (x862-one-untargeted-reg-form seg fn *x862-arg-z*))
    3267             (setq fn (x862-vloc-ea vstack)))
     3266            (cond (*backend-use-linear-scan*
     3267                   (let* ((temp (?)))
     3268                     (x862-one-untargeted-reg-form seg fn temp)
     3269                     (setq fn temp)))
     3270                  (t
     3271                 
     3272                   (x862-vpush-register seg (x862-one-untargeted-reg-form seg fn *x862-arg-z*))
     3273                   (setq fn (x862-vloc-ea vstack)))))
    32683274          (x862-invoke-fn seg fn (x862-arglist seg arglist mv-return-label (x862-tailcallok xfer)) spread-p xfer mv-return-label)
    32693275          (if (and (logbitp $backend-mvpass-bit xfer)
     
    34953501                (if (not tail-p)
    34963502                  (if (x862-mvpass-p xfer)
    3497                     (progn (! pass-multiple-values)
     3503                    (progn (! pass-multiple-values )
    34983504                           (when mvpass-label
    34993505                             (@= mvpass-label)))
     
    60356041     
    60366042(defun x862-%immediate-store  (seg vreg xfer bits ptr offset val)
     6043  (linear-scan-bailout "pointer operations")
    60376044  (with-x86-local-vinsn-macros (seg vreg xfer)
    60386045    (if (eql 0 (%ilogand #xf bits))
     
    86888695
    86898696(defun x862-generate-casejump (seg vreg xfer ranges trueforms var otherwise)
     8697  (linear-scan-bailout "jumptable")
    86908698  (when *x862-generate-casejump*
    86918699    (with-x86-local-vinsn-macros (seg vreg xfer)
     
    98789886
    98799887(defx862 x862-immediate-get-ptr immediate-get-ptr (seg vreg xfer ptr offset)
     9888  (linear-scan-bailout "pointer operations")
    98809889  (let* ((absptr (acode-absolute-ptr-p ptr))
    98819890         (triv-p (x862-trivial-p offset))
     
    99459954(defx862 x862-immediate-get-xxx immediate-get-xxx (seg vreg xfer bits ptr offset)
    99469955  (declare (fixnum bits))
     9956  (linear-scan-bailout "pointer operations")
    99479957  (let* ((fixnump (logbitp 6 bits))
    99489958         (signed (logbitp 5 bits))
     
    1065010660    (x862-form seg nil xfer form)
    1065110661    (progn
    10652       (unless (logbitp (hard-regspec-value vreg) *backend-imm-temps*)
    10653         (compiler-bug "I give up.  When will I get this right ?"))
     10662
    1065410663      (let* ((natural-reg (x862-one-targeted-reg-form seg
    1065510664                                                      form
     
    1098210991
    1098310992(defx862 x862-%ptr-eql %ptr-eql (seg vreg xfer cc x y )
     10993  (linear-scan-bailout "%PTR-EQL")
    1098410994  (if (null vreg)
    1098510995    (progn
     
    1120311213
    1120411214(defun x862-x8664-ff-call-return (seg vreg resultspec)
     11215  (linear-scan-bailout "ff-call")
    1120511216  (with-x86-local-vinsn-macros (seg vreg)
    1120611217    (when vreg
     
    1135411365(defx862 x862-ff-call ff-call (seg vreg xfer address argspecs argvals resultspec &optional monitor)
    1135511366  (declare (ignore monitor))
     11367  (linear-scan-bailout "ffi")
    1135611368  (if (eq (backend-target-os *target-backend*) :win64)
    1135711369    (x862-win64-ff-call seg vreg xfer address argspecs argvals resultspec)
Note: See TracChangeset for help on using the changeset viewer.