Changeset 10363
- Timestamp:
- Aug 6, 2008, 12:54:33 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/compiler/X86/X8632/x8632-vinsns.lisp
r10339 r10363 231 231 (define-x8632-vinsn set-nargs (() 232 232 ((n :u16const))) 233 ((:pred < n 32) 234 (xorl (:%l x8632::nargs) (:%l x8632::nargs)) 235 ((:pred > n 0) 236 (addl (:$b (:apply ash n x8632::fixnumshift)) (:%l x8632::nargs)))) 237 ((:pred >= n 32) 233 ((:pred = n 0) 234 (xorl (:%l x8632::nargs) (:%l x8632::nargs))) 235 ((:not (:pred = n 0)) 238 236 (movl (:$l (:apply ash n x8632::fixnumshift)) (:%l x8632::nargs)))) 239 237 … … 2887 2885 (imull (:$b x8632::fixnumone) (:%l bitnum) (:%l dest))) 2888 2886 2887 (define-x8632-vinsn nref-bit-vector-flags (() 2888 ((bitnum :s32) 2889 (bitvector :lisp)) 2890 ()) 2891 (btl (:%l bitnum) (:@ x8632::misc-data-offset (:%l bitvector)))) 2892 2893 (define-x8632-vinsn misc-ref-c-bit-fixnum (((dest :imm)) 2894 ((src :lisp) 2895 (idx :u32const)) 2896 ((temp :u8))) 2897 (btl (:$ub (:apply logand 31 idx)) 2898 (:@ (:apply + x8632::misc-data-offset (:apply ash (:apply ash idx -5) x8632::word-shift)) (:%l src))) 2899 (setc (:%b temp)) 2900 (movzbl (:%b temp) (:%l temp)) 2901 (imull (:$b x8632::fixnumone) (:%l temp) (:%l dest))) 2902 2903 (define-x8632-vinsn misc-ref-c-bit-flags (() 2904 ((src :lisp) 2905 (idx :u64const))) 2906 (btl (:$ub (:apply logand 31 idx)) 2907 (:@ (:apply + x8632::misc-data-offset (:apply ash (:apply ash idx -5) x8632::word-shift)) (:%l src)))) 2908 2889 2909 (define-x8632-vinsn set-macptr-address (() 2890 2910 ((addr :address) … … 3501 3521 ((temp :u32))) 3502 3522 (movl (:%l src) (:%l temp)) 3503 (sarl (:$ub (+ x8632::fixnumshift 11)) (:%l temp)) 3523 (sarl (:$ub (+ x8632::fixnumshift 1)) (:%l temp)) 3524 (cmpl (:$l (ash #xfffe -1)) (:%l temp)) 3525 (je :bad-if-eq) 3526 (sarl (:$ub (- 11 1)) (:%l temp)) 3504 3527 (cmpl (:$b (ash #xd800 -11))(:%l temp)) 3528 :bad-if-eq 3505 3529 (movl (:$l x8632::nil-value) (:%l temp)) 3506 3530 (cmovel (:%l temp) (:%l dest)) … … 3511 3535 (movl (:%l src) (:%l dest))) 3512 3536 (shll (:$ub (- x8632::charcode-shift x8632::fixnumshift)) (:%l dest)) 3513 ((:pred <= x8632::subtag-character #x7f) 3514 (addl (:$b x8632::subtag-character) (:%l dest))) 3515 ((:pred > x8632::subtag-character #x7f) 3516 (addl (:$l x8632::subtag-character) (:%l dest))) 3537 (addl (:$b x8632::subtag-character) (:%l dest)) 3538 :done) 3539 3540 ;;; src is known to be a code for which CODE-CHAR returns non-nil. 3541 (define-x8632-vinsn code-char->char (((dest :lisp)) 3542 ((src :imm)) 3543 ()) 3544 ((:not (:pred = 3545 (:apply %hard-regspec-value dest) 3546 (:apply %hard-regspec-value src))) 3547 (movl (:%l src) (:%l dest))) 3548 (shll (:$ub (- x8632::charcode-shift x8632::fixnumshift)) (:%l dest)) 3549 (addl (:$b x8632::subtag-character) (:%l dest)) 3517 3550 :done) 3518 3551
Note: See TracChangeset
for help on using the changeset viewer.