Changeset 5369
- Timestamp:
- Oct 18, 2006, 12:41:21 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/ccl/compiler/X86/x862.lisp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/compiler/X86/x862.lisp
r5359 r5369 888 888 (splcell (pop splcells)) 889 889 (reg (x862-assign-register-var var)) 890 (sp-reg ($ x8664::arg_z))891 890 (regloadedlabel (if reg (backend-get-next-label)))) 892 891 (unless (nx-null initform) 893 (x862-stack-to-register seg (x862-vloc-ea spvloc) sp-reg)894 892 (let ((skipinitlabel (backend-get-next-label))) 895 893 (with-crf-target () crf 896 (x862-compare- register-to-nil seg crf (x862-make-compound-cd 0 skipinitlabel) sp-regx86::x86-e-bits t))894 (x862-compare-ea-to-nil seg crf (x862-make-compound-cd 0 skipinitlabel) (x862-vloc-ea spvloc) x86::x86-e-bits t)) 897 895 (if reg 898 896 (x862-form seg reg regloadedlabel initform) … … 921 919 (var-lcell (pop lcells)) 922 920 (sp-lcell (pop lcells)) 923 (sp-reg ($ x8664::arg_z))924 921 (sploc (%i+ vloc *x862-target-node-size*))) 925 922 (unless (nx-null initform) 926 (x862-stack-to-register seg (x862-vloc-ea sploc) sp-reg)927 923 (let ((skipinitlabel (backend-get-next-label))) 928 924 (with-crf-target () crf 929 (x862-compare- register-to-nil seg crf (x862-make-compound-cd 0 skipinitlabel) sp-regx86::x86-e-bits t))925 (x862-compare-ea-to-nil seg crf (x862-make-compound-cd 0 skipinitlabel) (x862-vloc-ea sploc) x86::x86-e-bits t)) 930 926 (if reg 931 927 (x862-form seg reg regloadedlabel initform) … … 1040 1036 (spvloc (%i+ vloc *x862-target-node-size*)) 1041 1037 (var-lcell (pop lcells)) 1042 (sp-reg ($ x8664::arg_z))1043 1038 (sp-lcell (pop lcells))) 1044 1039 (unless (nx-null initform) 1045 (x862-stack-to-register seg (x862-vloc-ea spvloc) sp-reg)1046 1040 (let ((skipinitlabel (backend-get-next-label))) 1047 1041 (with-crf-target () crf 1048 (x862-compare- register-to-nil seg crf (x862-make-compound-cd 0 skipinitlabel) sp-regx86::x86-e-bits t))1042 (x862-compare-ea-to-nil seg crf (x862-make-compound-cd 0 skipinitlabel) (x862-vloc-ea spvloc) x86::x86-e-bits t)) 1049 1043 (x862-register-to-stack seg (x862-one-untargeted-reg-form seg initform ($ x8664::arg_z)) (x862-vloc-ea vloc)) 1050 1044 (@ skipinitlabel))) … … 3158 3152 (when vreg 3159 3153 (! compare-to-nil ireg) 3154 (regspec-crf-gpr-case 3155 (vreg dest) 3156 (^ cr-bit true-p) 3157 (progn 3158 (ensuring-node-target (target dest) 3159 (if (not true-p) 3160 (setq cr-bit (logxor 1 cr-bit))) 3161 (! cr-bit->boolean target cr-bit)) 3162 (^)))))) 3163 3164 (defun x862-compare-ea-to-nil (seg vreg xfer ea cr-bit true-p) 3165 (with-x86-local-vinsn-macros (seg vreg xfer) 3166 (when vreg 3167 (if (addrspec-vcell-p ea) 3168 (with-node-target () temp 3169 (x862-stack-to-register seg ea temp) 3170 (! compare-value-cell-to-nil temp)) 3171 (! compare-vframe-offset-to-nil (memspec-frame-address-offset ea) *x862-vstack*)) 3160 3172 (regspec-crf-gpr-case 3161 3173 (vreg dest) … … 4371 4383 (x862-branch seg (x862-cd-true xfer)) 4372 4384 (with-crf-target () crf 4373 (x862-form seg crf xfer form)))))) 4385 (let* ((ea (x862-lexical-reference-ea form))) 4386 (if (and ea (memory-spec-p ea)) 4387 (x862-compare-ea-to-nil seg crf xfer ea x86::x86-e-bits nil) 4388 (x862-form seg crf xfer form)))))))) 4374 4389 4375 4390 … … 4810 4825 (setq n 0)) 4811 4826 (if *x862-open-code-inline* 4812 (! unbind-interrupt-level-inline) 4827 (let* ((*available-backend-node-temps* (bitclr x8664::arg_z (bitclr x8664::rcx *available-backend-node-temps*)))) 4828 (! unbind-interrupt-level-inline)) 4813 4829 (! unbind-interrupt-level))) 4814 4830 (nx-error "unknown payback token ~s" r))))))) … … 6815 6831 (defx862 x862-not not (seg vreg xfer cc form) 6816 6832 (multiple-value-bind (cr-bit true-p) (acode-condition-to-x86-cr-bit cc) 6817 (x862-compare-register-to-nil 6818 seg 6819 vreg 6820 xfer 6821 (x862-one-untargeted-reg-form seg form x8664::arg_z) 6822 cr-bit 6823 true-p))) 6833 (let* ((ea (x862-lexical-reference-ea form))) 6834 (if (and ea (memory-spec-p ea)) 6835 (x862-compare-ea-to-nil 6836 seg 6837 vreg 6838 xfer 6839 ea 6840 cr-bit 6841 true-p) 6842 (x862-compare-register-to-nil 6843 seg 6844 vreg 6845 xfer 6846 (x862-one-untargeted-reg-form seg form x8664::arg_z) 6847 cr-bit 6848 true-p))))) 6824 6849 6825 6850
Note:
See TracChangeset
for help on using the changeset viewer.
