Changeset 6173
- Timestamp:
- Apr 7, 2007, 7:50:56 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/ccl/compiler/X86/x862.lisp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/compiler/X86/x862.lisp
r5971 r6173 4651 4651 target 4652 4652 (exit-vstack current-vstack)) 4653 (declare (ignor e-if-unusedtarget))4653 (declare (ignorable target)) 4654 4654 (when (neq 0 diff) 4655 4655 (setq exit-vstack (x862-nlexit seg xfer diff)) … … 8059 8059 (setq restloc (%i+ restloc *x862-target-node-size*)))) 8060 8060 (x862-set-nargs seg (length rest-arg)) 8061 (x862-set-vstack restloc) 8061 8062 (if (%ilogbitp $vbitdynamicextent (nx-var-bits rest)) 8062 8063 (progn … … 8064 8065 (x862-open-undo $undostkblk)) 8065 8066 (! list)) 8066 (x862-vpush-register seg x8664::arg_z) 8067 (x862-set-vstack (%i+ restloc *x862-target-node-size*))) 8067 (x862-vpush-register seg x8664::arg_z)) 8068 8068 (when rest (x862-bind-var seg rest restloc)) 8069 8069 (destructuring-bind (vars inits) auxen … … 8894 8894 (^)))) 8895 8895 8896 (defx862 x862-%double-float %double-float (seg vreg xfer arg) 8897 (let* ((real (or (acode-fixnum-form-p arg) 8898 (let* ((form (acode-unwrapped-form arg))) 8899 (if (and (acode-p form) 8900 (eq (acode-operator form) 8901 (%nx1-operator immediate)) 8902 (typep (cadr form) 'real)) 8903 (cadr form)))))) 8904 (if real 8905 (x862-immediate seg vreg xfer (float real 0.0d0)) 8906 (if (x862-form-typep arg 'single-float) 8907 (x862-use-operator (%nx1-operator %single-to-double) 8908 seg 8909 vreg 8910 xfer 8911 arg) 8912 (if (x862-form-typep arg 'fixnum) 8913 (x862-use-operator (%nx1-operator %fixnum-to-double) 8914 seg 8915 vreg 8916 xfer 8917 arg) 8918 (x862-use-operator (%nx1-operator call) 8919 seg 8920 vreg 8921 xfer 8922 (make-acode (%nx1-operator immediate) 8923 '%double-float) 8924 (list nil (list arg)))))))) 8925 8926 (defx862 x862-%single-float %single-float (seg vreg xfer arg) 8927 (let* ((real (or (acode-fixnum-form-p arg) 8928 (let* ((form (acode-unwrapped-form arg))) 8929 (if (and (acode-p form) 8930 (eq (acode-operator form) 8931 (%nx1-operator immediate)) 8932 (typep (cadr form) 'real)) 8933 (cadr form)))))) 8934 (if real 8935 (x862-immediate seg vreg xfer (float real 0.0f0)) 8936 (if (x862-form-typep arg 'double-float) 8937 (x862-use-operator (%nx1-operator %double-to-single) 8938 seg 8939 vreg 8940 xfer 8941 arg) 8942 (if (x862-form-typep arg 'fixnum) 8943 (x862-use-operator (%nx1-operator %fixnum-to-single) 8944 seg 8945 vreg 8946 xfer 8947 arg) 8948 (x862-use-operator (%nx1-operator call) 8949 seg 8950 vreg 8951 xfer 8952 (make-acode (%nx1-operator immediate) 8953 '%short-float) 8954 (list nil (list arg)))))))) 8955 8956 8896 8957 ;------ 8897 8958
Note:
See TracChangeset
for help on using the changeset viewer.
