Changeset 8628


Ignore:
Timestamp:
Mar 1, 2008, 6:12:38 PM (12 years ago)
Author:
rme
Message:

set-z-flag-if-consp vinsn; updated bit vector vinsns.

File:
1 edited

Legend:

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

    r7666 r8628  
    5050  (shrq (:$ub 3) (:%q dest)))
    5151
     52;;; same as above, but looks better in bit vector contexts
     53(define-x8664-vinsn scale-1bit-misc-index (((dest :u64))
     54                                            ((idx :imm) ; A fixnum
     55                                             )
     56                                            ())
     57  (movq (:%q idx) (:%q dest))
     58  (shrq (:$ub 3) (:%q dest)))
    5259
    5360(define-x8664-vinsn misc-ref-u64  (((dest :u64))
     
    587594  :ok)
    588595
     596(define-x8664-vinsn set-z-flag-if-consp (()
     597                                         ((object :lisp))
     598                                         ((tag :u8)))
     599  (movb (:%b object) (:%b tag))
     600  (andb (:$b x8664::fulltagmask) (:%b tag))
     601  (cmpb (:$b x8664::fulltag-cons) (:%b tag)))
     602
    589603(define-x8664-vinsn trap-unless-uvector (()
    590604                                         ((object :lisp))
     
    19691983  (andl (:$l x8664::fixnumone) (:%l bitnum))
    19701984  (movl (:%l bitnum) (:%l dest)))
    1971                                            
     1985
     1986(define-x8664-vinsn nref-bit-vector-fixnum (((dest :imm)
     1987                                             (bitnum :s64))
     1988                                            ((bitnum :s64)
     1989                                             (bitvector :lisp)))
     1990  (btq (:%q bitnum) (:@ x8664::misc-data-offset (:%q bitvector)))
     1991  (setc (:%b bitnum))
     1992  (movzbl (:%b bitnum) (:%l bitnum))
     1993  (imull (:$b x8664::fixnumone) (:%l bitnum) (:%l dest)))
    19721994                                                     
    19731995(define-x8664-vinsn misc-ref-c-bit-fixnum (((dest :imm))
     
    19771999  (btq (:$ub (:apply logand 63 idx))
    19782000       (:@ (:apply + x8664::misc-data-offset (:apply ash (:apply ash idx -6) x8664::word-shift)) (:%q src)))
    1979   (setb (:%b temp))
    1980   (negb (:%b temp))
    1981   (andl (:$l x8664::fixnumone) (:%l temp))
    1982   (movl (:%l temp) (:%l dest)))
     2001  (setc (:%b temp))
     2002  (movzbl (:%b temp) (:%l temp))
     2003  (imull (:$b x8664::fixnumone) (:%l temp) (:%l dest)))
    19832004
    19842005(define-x8664-vinsn deref-macptr (((addr :address))
     
    25632584                                               (bitnum :u8)))
    25642585  (btsq (:%q bitnum) (:@ x8664::misc-data-offset (:%q vec) (:%q word-index) 8)))
     2586
     2587;;; In safe code, something else has ensured that the value is of type
     2588;;; BIT.
     2589(define-x8664-vinsn nset-variable-bit-to-variable-value (()
     2590                                                        ((vec :lisp)
     2591                                                         (index :s64)
     2592                                                         (value :lisp)))
     2593  (testb (:%b value) (:%b value))
     2594  (je :clr)
     2595  (btsq (:%q index) (:@ x8664::misc-data-offset (:%q vec)))
     2596  (jmp :done)
     2597  :clr
     2598  (btrq (:%q index) (:@ x8664::misc-data-offset (:%q vec)))
     2599  :done)
     2600
     2601(define-x8664-vinsn nset-variable-bit-to-zero (()
     2602                                              ((vec :lisp)
     2603                                               (index :s64)))
     2604  (btrq (:%q index) (:@ x8664::misc-data-offset (:%q vec))))
     2605
     2606(define-x8664-vinsn nset-variable-bit-to-one (()
     2607                                              ((vec :lisp)
     2608                                               (index :s64)))
     2609  (btsq (:%q index) (:@ x8664::misc-data-offset (:%q vec))))
    25652610
    25662611(define-x8664-vinsn set-constant-bit-to-zero (()
Note: See TracChangeset for help on using the changeset viewer.