Changeset 13086
- Timestamp:
- Oct 22, 2009, 1:50:49 PM (15 years ago)
- File:
-
- 1 edited
-
branches/working-0711/ccl/compiler/X86/x862.lisp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/working-0711/ccl/compiler/X86/x862.lisp
r13070 r13086 7208 7208 (defun x862-inline-add2 (seg vreg xfer form1 form2) 7209 7209 (with-x86-local-vinsn-macros (seg vreg xfer) 7210 (let* (( fix1 (acode-fixnum-form-p form1))7211 ( fix2 (acode-fixnum-form-p form2))7212 ( otherform (if (and fix17213 (typep (ash fix1 *x862-target-fixnum-shift*)7214 '(signed-byte 32)))7210 (let* ((c1 (acode-fixnum-form-p form1)) 7211 (c2 (acode-fixnum-form-p form2)) 7212 (fix1 (s32-fixnum-constant-p c1)) 7213 (fix2 (s32-fixnum-constant-p c2)) 7214 (otherform (if fix1 7215 7215 form2 7216 (if (and fix2 7217 (typep (ash fix2 *x862-target-fixnum-shift*) 7218 '(signed-byte 32))) 7216 (if fix2 7219 7217 form1)))) 7220 7218 (if otherform … … 7223 7221 (let* ((out-of-line (backend-get-next-label)) 7224 7222 (done (backend-get-next-label))) 7225 7226 7223 (ensuring-node-target (target vreg) 7227 7224 (if otherform … … 9221 9218 (x862-form seg vreg xfer ptr) 9222 9219 (let* ((ptr-reg (with-imm-target () (ptr-reg :address) 9223 (x862-one-targeted-reg-form seg ptr ptr-reg)))) 9224 (if fixnum-by 9220 (x862-one-targeted-reg-form seg ptr ptr-reg))) 9221 (s32-by (s32-fixnum-constant-p fixnum-by))) 9222 (if s32-by 9225 9223 (let* ((result ptr-reg)) 9226 (! add-constant result fixnum-by)9224 (! add-constant result s32-by) 9227 9225 (<- result)) 9228 (progn9229 (unless triv-by9230 (x862-push-register seg ptr-reg))9231 (let* ((boxed-by (x862-one-targeted-reg-form seg by *x862-arg-z*)))9232 (unless triv-by9233 (x862-pop-register seg ptr-reg))9234 (with-additional-imm-reg ()9235 (with-imm-target (ptr-reg) (by-reg :signed-natural)9236 (! fixnum->signed-natural by-reg boxed-by)9237 (let* ((result ptr-reg))9238 (! fixnum-add2 result by-reg)9239 (<- result)))))))9226 (progn 9227 (unless triv-by 9228 (x862-push-register seg ptr-reg)) 9229 (let* ((boxed-by (x862-one-targeted-reg-form seg by *x862-arg-z*))) 9230 (unless triv-by 9231 (x862-pop-register seg ptr-reg)) 9232 (with-additional-imm-reg () 9233 (with-imm-target (ptr-reg) (by-reg :signed-natural) 9234 (! fixnum->signed-natural by-reg boxed-by) 9235 (let* ((result ptr-reg)) 9236 (! fixnum-add2 result by-reg) 9237 (<- result))))))) 9240 9238 (^))))) 9241 9239
Note:
See TracChangeset
for help on using the changeset viewer.
