- Timestamp:
- May 9, 2008, 2:03:42 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/working-0711-perf/ccl/compiler/X86/X8664/x8664-vinsns.lisp
r8031 r9412 50 50 (shrq (:$ub 3) (:%q dest))) 51 51 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))) 52 59 53 60 (define-x8664-vinsn misc-ref-u64 (((dest :u64)) … … 2097 2104 (andl (:$l x8664::fixnumone) (:%l bitnum)) 2098 2105 (movl (:%l bitnum) (:%l dest))) 2099 2100 2106 2107 2108 (define-x8664-vinsn nref-bit-vector-fixnum (((dest :imm) 2109 (bitnum :s64)) 2110 ((bitnum :s64) 2111 (bitvector :lisp)) 2112 ()) 2113 (btq (:%q bitnum) (:@ x8664::misc-data-offset (:%q bitvector))) 2114 (setc (:%b bitnum)) 2115 (movzbl (:%b bitnum) (:%l bitnum)) 2116 (imull (:$b x8664::fixnumone) (:%l bitnum) (:%l dest))) 2117 2118 (define-x8664-vinsn nref-bit-vector-flags (() 2119 ((bitnum :s64) 2120 (bitvector :lisp)) 2121 ()) 2122 (btq (:%q bitnum) (:@ x8664::misc-data-offset (:%q bitvector)))) 2123 2101 2124 (define-x8664-vinsn misc-ref-c-bit-fixnum (((dest :imm)) 2102 2125 ((src :lisp) … … 2109 2132 (andl (:$l x8664::fixnumone) (:%l temp)) 2110 2133 (movl (:%l temp) (:%l dest))) 2134 2135 (define-x8664-vinsn misc-ref-c-bit-flags (() 2136 ((src :lisp) 2137 (idx :u64const)) 2138 ) 2139 (btq (:$ub (:apply logand 63 idx)) 2140 (:@ (:apply + x8664::misc-data-offset (:apply ash (:apply ash idx -6) x8664::word-shift)) (:%q src)))) 2111 2141 2112 2142 (define-x8664-vinsn deref-macptr (((addr :address)) … … 2695 2725 (bitnum :u8))) 2696 2726 (btsq (:%q bitnum) (:@ x8664::misc-data-offset (:%q vec) (:%q word-index) 8))) 2727 2728 ;;; In safe code, something else has ensured that the value is of type 2729 ;;; BIT. 2730 (define-x8664-vinsn nset-variable-bit-to-variable-value (() 2731 ((vec :lisp) 2732 (index :s64) 2733 (value :lisp))) 2734 (testb (:%b value) (:%b value)) 2735 (je :clr) 2736 (btsq (:%q index) (:@ x8664::misc-data-offset (:%q vec))) 2737 (jmp :done) 2738 :clr 2739 (btrq (:%q index) (:@ x8664::misc-data-offset (:%q vec))) 2740 :done) 2741 2742 (define-x8664-vinsn nset-variable-bit-to-zero (() 2743 ((vec :lisp) 2744 (index :s64))) 2745 (btrq (:%q index) (:@ x8664::misc-data-offset (:%q vec)))) 2746 2747 (define-x8664-vinsn nset-variable-bit-to-one (() 2748 ((vec :lisp) 2749 (index :s64))) 2750 (btsq (:%q index) (:@ x8664::misc-data-offset (:%q vec)))) 2697 2751 2698 2752 (define-x8664-vinsn set-constant-bit-to-zero (()
Note:
See TracChangeset
for help on using the changeset viewer.
