Changeset 7773
- Timestamp:
- Nov 28, 2007, 2:31:41 PM (17 years ago)
- File:
-
- 1 edited
-
branches/ia32/compiler/X86/x862.lisp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/ia32/compiler/X86/x862.lisp
r7764 r7773 4431 4431 ptr 4432 4432 ptr-reg))) 4433 (! mem-set-c-constant-doubleword intval ptr-reg offval)))) 4433 (target-word-size-case 4434 (32 4435 (! mem-set-c-constant-fullword intval ptr-reg offval)) 4436 (64 4437 (! mem-set-c-constant-doubleword intval ptr-reg offval)))))) 4434 4438 (t 4435 (with-imm-target () (ptr-reg :address) 4436 (with-imm-target (ptr-reg) (offsetreg :signed-natural) 4437 (x862-two-targeted-reg-forms seg ptr ptr-reg offset ($ *x862-arg-z*)) 4438 (! fixnum->signed-natural offsetreg *x862-arg-z*) 4439 (! mem-set-constant-doubleword intval ptr-reg offsetreg))))) 4439 (with-additional-imm-reg () 4440 (with-imm-target () (ptr-reg :address) 4441 (with-imm-target (ptr-reg) (offsetreg :signed-natural) 4442 (x862-two-targeted-reg-forms seg ptr ptr-reg offset ($ *x862-arg-z*)) 4443 (! fixnum->signed-natural offsetreg *x862-arg-z*) 4444 (target-word-size-case 4445 (32 (! mem-set-constant-fullword intval ptr-reg offsetreg)) 4446 (64 (! mem-set-constant-doubleword intval ptr-reg offsetreg)))))))) 4440 4447 (if for-value 4441 (with-imm-target () (val-reg :s64)4448 (with-imm-target () (val-reg (target-word-size-case (32 :s32) (64 :s64))) 4442 4449 (x862-lri seg val-reg intval) 4443 4450 (<- (set-regspec-mode val-reg (gpr-mode-name-value :address)))))) … … 4449 4456 (multiple-value-bind (address node) 4450 4457 (address-and-node-regs) 4451 (with-imm-target (address) (ptr-reg :address) 4452 (x862-pop-register seg ptr-reg) 4453 (! mem-set-c-doubleword address ptr-reg offval)) 4458 (with-additional-imm-reg () 4459 (with-imm-target (address) (ptr-reg :address) 4460 (x862-pop-register seg ptr-reg) 4461 (target-word-size-case 4462 (32 (! mem-set-c-fullword address ptr-reg offval)) 4463 (64 (! mem-set-c-doubleword address ptr-reg offval))))) 4454 4464 (if for-value 4455 4465 (<- node)))) 4456 4466 (t 4457 4467 (with-imm-target () (ptr-reg :address) 4458 (with-imm-target (ptr-reg) (offset-reg :address) 4459 (x862-two-targeted-reg-forms seg ptr ptr-reg offset ($ *x862-arg-z*)) 4460 (! fixnum->signed-natural offset-reg *x862-arg-z*) 4461 (! fixnum-add2 ptr-reg offset-reg) 4462 (x862-push-register seg ptr-reg))) 4468 (with-additional-imm-reg () 4469 (with-imm-target (ptr-reg) (offset-reg :address) 4470 (x862-two-targeted-reg-forms seg ptr ptr-reg offset ($ *x862-arg-z*)) 4471 (! fixnum->signed-natural offset-reg *x862-arg-z*) 4472 (! fixnum-add2 ptr-reg offset-reg) 4473 (x862-push-register seg ptr-reg)))) 4463 4474 (multiple-value-bind (address node) 4464 4475 (address-and-node-regs) 4465 (with-imm-target (address) (ptr-reg :address) 4466 (x862-pop-register seg ptr-reg) 4467 (! mem-set-c-doubleword address ptr-reg 0)) 4476 (with-additional-imm-reg () 4477 (with-imm-target (address) (ptr-reg :address) 4478 (x862-pop-register seg ptr-reg) 4479 (target-word-size-case 4480 (32 (! mem-set-c-fullword address ptr-reg 0)) 4481 (64 (! mem-set-c-doubleword address ptr-reg 0))))) 4468 4482 (if for-value 4469 4483 (<- node)))))) … … 7713 7727 (let* ((src (x862-macptr-arg-to-reg seg ptr ($ *x862-imm0* :mode :address)))) 7714 7728 (if triv-p 7715 (with-imm-temps (src) (x) 7716 (if (acode-fixnum-form-p offset) 7717 (x862-lri seg x (acode-fixnum-form-p offset)) 7718 (! fixnum->signed-natural x (x862-one-untargeted-reg-form seg offset *x862-arg-z*))) 7719 (! mem-ref-natural dest src x)) 7729 (with-additional-imm-reg () 7730 (with-imm-temps (src) (x) 7731 (if (acode-fixnum-form-p offset) 7732 (x862-lri seg x (acode-fixnum-form-p offset)) 7733 (! fixnum->signed-natural x (x862-one-untargeted-reg-form seg offset *x862-arg-z*))) 7734 (! mem-ref-natural dest src x))) 7720 7735 (progn 7721 7736 (! temp-push-unboxed-word src) 7722 7737 (x862-open-undo $undostkblk) 7723 7738 (let* ((oreg (x862-one-untargeted-reg-form seg offset *x862-arg-z*))) 7724 (with-imm-temps () (src x) 7725 (! temp-pop-unboxed-word src) 7726 (x862-close-undo) 7727 (! fixnum->signed-natural x oreg) 7728 (! mem-ref-natural dest src x)))))))) 7739 (with-additional-imm-reg (*x862-arg-z*) 7740 (with-imm-temps () (src x) 7741 (! temp-pop-unboxed-word src) 7742 (x862-close-undo) 7743 (! fixnum->signed-natural x oreg) 7744 (! mem-ref-natural dest src x))))))))) 7729 7745 (^))))) 7730 7746 … … 8102 8118 (x862-form seg nil xfer offset)) 8103 8119 ((typep fixoffset '(signed-byte 16)) 8104 (with-imm-target () (val :natural) 8105 (! lisp-word-ref-c val 8106 (x862-one-untargeted-reg-form seg base *x862-arg-z*) 8107 fixoffset) 8108 (<- val)) 8120 (format t "~&in constant offset branch") 8121 (with-imm-target () (val :natural) 8122 (! lisp-word-ref-c val 8123 (x862-one-untargeted-reg-form seg base *x862-arg-z*) 8124 fixoffset) 8125 (<- val)) 8109 8126 (^)) 8110 8127 (t (multiple-value-bind (breg oreg) 8111 8128 (x862-two-untargeted-reg-forms seg base *x862-arg-y* offset *x862-arg-z*) 8129 (format t "~&in general offset branch") 8112 8130 (with-imm-target () (otemp :s32) 8113 8131 (! fixnum->signed-natural otemp oreg) 8114 (with-imm-target () (val :natural) 8115 (! lisp-word-ref val breg otemp) 8116 (<- val))) 8132 (with-additional-imm-reg (otemp) 8133 (with-imm-target () (val :natural) 8134 (! lisp-word-ref val breg otemp) 8135 (<- val)))) 8117 8136 (^)))))) 8118 8137 … … 9129 9148 (let* ((u31y (and (typep fix-y '(unsigned-byte 31)) fix-y))) 9130 9149 (if (not u31y) 9131 (with-imm-target () (xreg :natural) 9132 (with-imm-target (xreg) (yreg :natural) 9133 (x862-two-targeted-reg-forms seg x xreg y yreg) 9134 (! %natural- xreg xreg yreg)) 9135 (<- xreg)) 9150 (with-additional-imm-reg () 9151 (with-imm-target () (xreg :natural) 9152 (with-imm-target (xreg) (yreg :natural) 9153 (x862-two-targeted-reg-forms seg x xreg y yreg) 9154 (! %natural- xreg yreg)) 9155 (<- xreg))) 9136 9156 (progn 9137 9157 (with-imm-target () (xreg :natural) 9138 9158 (x862-one-targeted-reg-form seg x xreg) 9139 (! %natural--c xreg xregu31y)9159 (! %natural--c xreg u31y) 9140 9160 (<- xreg)))) 9141 9161 (^))))))
Note:
See TracChangeset
for help on using the changeset viewer.
