Changeset 13072
 Timestamp:
 Oct 22, 2009, 12:28:15 AM (10 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

trunk/source/compiler/X86/x862.lisp
r13067 r13072 7208 7208 (defun x862inlineadd2 (seg vreg xfer form1 form2) 7209 7209 (withx86localvinsnmacros (seg vreg xfer) 7210 (let* (( fix1 (acodefixnumformp form1))7211 ( fix2 (acodefixnumformp form2))7212 ( otherform (if (and fix17213 (typep (ash fix1 *x862targetfixnumshift*)7214 '(signedbyte 32)))7210 (let* ((c1 (acodefixnumformp form1)) 7211 (c2 (acodefixnumformp form2)) 7212 (fix1 (s32fixnumconstantp c1)) 7213 (fix2 (s32fixnumconstantp c2)) 7214 (otherform (if fix1 7215 7215 form2 7216 (if (and fix2 7217 (typep (ash fix2 *x862targetfixnumshift*) 7218 '(signedbyte 32))) 7216 (if fix2 7219 7217 form1)))) 7220 7218 (if otherform … … 7223 7221 (let* ((outofline (backendgetnextlabel)) 7224 7222 (done (backendgetnextlabel))) 7225 7226 7223 (ensuringnodetarget (target vreg) 7227 7224 (if otherform … … 9221 9218 (x862form seg vreg xfer ptr) 9222 9219 (let* ((ptrreg (withimmtarget () (ptrreg :address) 9223 (x862onetargetedregform seg ptr ptrreg)))) 9224 (if fixnumby 9220 (x862onetargetedregform seg ptr ptrreg))) 9221 (s32by (s32fixnumconstantp fixnumby))) 9222 (if s32by 9225 9223 (let* ((result ptrreg)) 9226 (! addconstant result fixnumby)9224 (! addconstant result s32by) 9227 9225 (< result)) 9228 9229 9230 9231 9232 9233 9234 9235 9236 9237 9238 9239 9226 (progn 9227 (unless trivby 9228 (x862pushregister seg ptrreg)) 9229 (let* ((boxedby (x862onetargetedregform seg by *x862argz*))) 9230 (unless trivby 9231 (x862popregister seg ptrreg)) 9232 (withadditionalimmreg () 9233 (withimmtarget (ptrreg) (byreg :signednatural) 9234 (! fixnum>signednatural byreg boxedby) 9235 (let* ((result ptrreg)) 9236 (! fixnumadd2 result byreg) 9237 (< result))))))) 9240 9238 (^))))) 9241 9239
Note: See TracChangeset
for help on using the changeset viewer.