Changeset 15041
- Timestamp:
- Oct 24, 2011, 4:15:57 AM (13 years ago)
- File:
-
- 1 edited
-
trunk/source/compiler/X86/x862.lisp (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/compiler/X86/x862.lisp
r15035 r15041 1477 1477 (return reg)))))) 1478 1478 1479 (defun x862-existing-reg-for-var (var) 1480 (let* ((ea (var-ea var))) 1481 (if (and (memory-spec-p ea) 1482 (not (addrspec-vcell-p ea))) 1483 (let* ((offset (memspec-frame-address-offset ea)) 1484 (mask *x862-gpr-locations-valid-mask*) 1485 (info *x862-gpr-locations*)) 1486 (declare (fixnum mask) (simple-vector info)) 1487 (dotimes (reg 16) 1488 (when (and (logbitp reg mask) 1489 (memq offset (svref info reg))) 1490 (return reg)))) 1491 (if (register-spec-p ea) 1492 ea)))) 1479 1493 1480 1494 (defun x862-reg-for-form (form hint) … … 1482 1496 (cond ((node-reg-p hint) 1483 1497 (if var 1484 (let* ((ea (var-ea var))) 1485 (if (and (memory-spec-p ea) 1486 (not (addrspec-vcell-p ea))) 1487 (let* ((offset (memspec-frame-address-offset ea)) 1488 (mask *x862-gpr-locations-valid-mask*) 1489 (info *x862-gpr-locations*)) 1490 (declare (fixnum mask) (simple-vector info)) 1491 (dotimes (reg 16) 1492 (when (and (logbitp reg mask) 1493 (memq offset (svref info reg))) 1494 (return reg)))) 1495 (if (register-spec-p ea) 1496 ea))) 1498 (x862-existing-reg-for-var var) 1497 1499 (if (acode-p (setq form (acode-unwrapped-form form))) 1498 1500 (let* ((op (acode-operator form))) … … 3350 3352 address-reg)) 3351 3353 3354 (defun x862-push-reg-for-form (seg form suggested) 3355 (let* ((reg (if (and (node-reg-p suggested) 3356 (nx2-acode-call-p form)) ;probably ... 3357 (x862-one-targeted-reg-form seg form *x862-arg-z*) 3358 (x862-one-untargeted-reg-form seg form suggested)))) 3359 (x862-push-register seg reg))) 3352 3360 3353 3361 (defun x862-one-lreg-form (seg form lreg) … … 3586 3594 (if atriv 3587 3595 (x862-one-targeted-reg-form seg aform areg) 3588 (setq apushed (x862-push-register 3589 seg 3590 (x862-one-untargeted-reg-form seg aform areg))))) 3596 (setq apushed (x862-push-reg-for-form seg aform areg)))) 3591 3597 (x862-one-targeted-reg-form seg bform breg) 3592 3598 (if aconst … … 3616 3622 (when (same-x86-reg-p adest breg) 3617 3623 (setq breg areg))) 3618 (setq apushed (x862-push-register 3619 seg 3620 (x862-one-untargeted-reg-form seg aform areg restricted) 3621 t)))) 3624 (setq apushed (x862-push-reg-for-form seg aform areg)))) 3622 3625 (unless (eql restricted-by-caller 0) 3623 3626 (setq *x862-gpr-locations-valid-mask* (logandc2 *x862-gpr-locations-valid-mask* restricted-by-caller))) … … 3663 3666 (if atriv 3664 3667 (x862-one-targeted-reg-form seg aform areg) 3665 (setq apushed (x862-push-register 3666 seg 3667 (x862-one-targeted-reg-form seg aform areg))))) 3668 (setq apushed (x862-push-reg-for-form seg aform areg)))) 3668 3669 (if (and bform (not bconst)) 3669 3670 (if btriv 3670 3671 (x862-one-targeted-reg-form seg bform breg) 3671 (setq bpushed (x862-push-register 3672 seg 3673 (x862-one-targeted-reg-form seg bform breg))))) 3672 (setq bpushed (x862-push-reg-for-form seg bform breg)))) 3674 3673 (x862-one-targeted-reg-form seg cform creg) 3675 3674 (unless btriv … … 3727 3726 (if atriv 3728 3727 (x862-one-targeted-reg-form seg aform areg) 3729 (setq apushed (x862-push-reg ister seg (x862-one-targeted-reg-form seg aform areg)))))3728 (setq apushed (x862-push-reg-for-form seg aform areg)))) 3730 3729 (if (and bform (not bconst)) 3731 3730 (if btriv 3732 3731 (x862-one-targeted-reg-form seg bform breg) 3733 (setq bpushed (x862-push-reg ister seg (x862-one-targeted-reg-form seg bform breg)))))3732 (setq bpushed (x862-push-reg-for-form seg bform breg)))) 3734 3733 (if (and cform (not cconst)) 3735 3734 (if ctriv 3736 3735 (x862-one-targeted-reg-form seg cform creg) 3737 (setq cpushed (x862-push-reg ister seg (x862-one-targeted-reg-form seg cform creg)))))3736 (setq cpushed (x862-push-reg-for-form seg cform creg)))) 3738 3737 (x862-one-targeted-reg-form seg dform dreg) 3739 3738 (unless ctriv … … 3788 3787 (when (same-x86-reg-p adest creg) 3789 3788 (setq creg areg))) 3790 (setq apushed (x862-push-register 3791 seg 3792 (x862-one-untargeted-reg-form seg aform areg))))) 3789 (setq apushed (x862-push-reg-for-form seg aform areg)))) 3793 3790 (when (and bform (not bconst)) 3794 3791 (if btriv … … 3801 3798 (when (same-x86-reg-p bdest creg) 3802 3799 (setq creg breg))) 3803 (setq bpushed (x862-push-register 3804 seg (x862-one-untargeted-reg-form seg bform breg))))) 3800 (setq bpushed (x862-push-reg-for-form seg bform breg)))) 3805 3801 (setq cdest (x862-one-untargeted-reg-form seg cform creg restricted) 3806 3802 restricted (x862-restrict-node-target cdest restricted)) … … 3878 3874 (when (same-x86-reg-p dreg adest) 3879 3875 (setq dreg areg))) 3880 (setq apushed (x862-push-reg ister seg (x862-one-untargeted-reg-form seg aform areg)))))3876 (setq apushed (x862-push-reg-for-form seg aform areg)))) 3881 3877 (when (and bform (not bconst)) 3882 3878 (if btriv … … 3891 3887 (when (same-x86-reg-p dreg bdest) 3892 3888 (setq dreg breg))) 3893 (setq bpushed (x862-push-reg ister seg (x862-one-untargeted-reg-form seg bform breg)))))3889 (setq bpushed (x862-push-reg-for-form seg bform breg)))) 3894 3890 (when (and cform (not cconst)) 3895 3891 (if ctriv … … 3905 3901 (when (same-x86-reg-p cdest dreg) 3906 3902 (setq dreg creg))) 3907 (setq cpushed (x862-push-reg ister seg (x862-one-untargeted-reg-form seg cform creg)))))3903 (setq cpushed (x862-push-reg-for-form seg cform creg)))) 3908 3904 (setq ddest (x862-one-untargeted-reg-form seg dform dreg restricted) 3909 3905 restricted (x862-restrict-node-target ddest restricted)) … … 4052 4048 (x862-compare-u8 seg vreg xfer u8-operand u8 (if (and iu8 (not (eq cr-bit x86::x86-e-bits))) (logxor 1 cr-bit) cr-bit) true-p u8-operator) 4053 4049 (if (and boolean (or js32 is32)) 4054 (let* ((ea (x862-lexical-reference-ea (if js32 i j))) 4055 (offset (and ea (memory-spec-p ea) (memspec-frame-address-offset ea))) 4050 (let* ((form (if js32 i j)) 4051 (var (nx2-lexical-reference-p form)) 4052 (ea (when var 4053 (unless (x862-existing-reg-for-var var) (var-ea var)))) 4054 (offset (and ea 4055 (memory-spec-p ea) 4056 (not (addrspec-vcell-p ea)) 4057 (memspec-frame-address-offset ea))) 4056 4058 (reg (unless offset (x862-one-untargeted-reg-form seg (if js32 i j) *x862-arg-z*))) 4057 4059 (constant (or js32 is32))) … … 6503 6505 (setq no-regs (%ilogbitp $fbitnoregs fbits))) 6504 6506 (multiple-value-setq (pregs reglocatives) 6505 (nx2-allocate-global-registers 6506 *x862-fcells* 6507 *x862-vcells* 6508 (afunc-all-vars afunc) 6509 inherited-vars 6507 (nx2-afunc-allocate-global-registers 6508 afunc 6510 6509 (unless no-regs 6511 6510 (target-arch-case
Note:
See TracChangeset
for help on using the changeset viewer.
