Changeset 14979


Ignore:
Timestamp:
Sep 12, 2011, 8:14:50 AM (8 years ago)
Author:
gb
Message:

x8632 REQUIRE-CHARACTER vinsn: how you extract the low byte of a register
on x8632 depends on the register. (Naturally.)

X862-ELIDE-PUSHES: the number of FPRs that we can use is one less than
the number that're architecturally available (because we keep 0.0 in the
highest-numbered FPR.)

Location:
trunk/source/compiler/X86
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/X86/X8632/x8632-vinsns.lisp

    r14969 r14979  
    25392539
    25402540(define-x8632-vinsn require-character (()
    2541                                        ((object :lisp)))
     2541                                       ((object :lisp))
     2542                                       ((tag (:u8 #.x8632::imm0))))
    25422543  :again
    2543   (cmpb (:$b x8632::subtag-character) (:%b object))
     2544  ((:pred < (:apply %hard-regspec-value object) 4)
     2545   (cmpb (:$b x8632::subtag-character) (:%b object)))
     2546  ((:not (:pred < (:apply %hard-regspec-value object) 4))
     2547   (movl (:%l object) (:%l tag))
     2548   (cmpb (:$b x8632::subtag-character) (:%b tag)))
     2549 
    25442550  (jne :bad)
    25452551
  • trunk/source/compiler/X86/x862.lisp

    r14969 r14979  
    34693469                 (declare (ignore used-gprs))
    34703470                 (let* ((nfprs (target-arch-case
    3471                                 (:x8632 6)
    3472                                 (:x8664 14))) ;xmm7 (or xmm15) is fpzero.
     3471                                (:x8632 (1- 8))
     3472                                (:x8664 (1- 16)))) ;xmm7 (or xmm15) is fpzero.
    34733473                        (free-fpr
    34743474                         (dotimes (r nfprs nil)
     
    91259125  (def-x862-require x862-require-symbol require-symbol)
    91269126  (def-x862-require x862-require-s8 require-s8)
    9127   (def-x862-require x862-require-s8 require-u8)
    9128   (def-x862-require x862-require-s8 require-s16)
    9129   (def-x862-require x862-require-s8 require-u16)
    9130   (def-x862-require x862-require-s8 require-s32)
    9131   (def-x862-require x862-require-s8 require-u32)
    9132   (def-x862-require x862-require-s8 require-s64)
    9133   (def-x862-require x862-require-s8 require-u64))
     9127  (def-x862-require x862-require-u8 require-u8)
     9128  (def-x862-require x862-require-s16 require-s16)
     9129  (def-x862-require x862-require-u16 require-u16)
     9130  (def-x862-require x862-require-s32 require-s32)
     9131  (def-x862-require x862-require-u32 require-u32)
     9132  (def-x862-require x862-require-s64 require-s64)
     9133  (def-x862-require x862-require-u64 require-u64))
    91349134
    91359135(defun x862-typechecked-form (seg vreg xfer typespec form)
Note: See TracChangeset for help on using the changeset viewer.