[Openmcl-cvs-notifications] r15150 - /trunk/source/compiler/ARM/arm2.lisp
gb at clozure.com
gb at clozure.com
Wed Dec 21 16:50:16 CST 2011
Author: gb
Date: Wed Dec 21 16:50:16 2011
New Revision: 15150
Log:
ARM backend had the same bug as in r15149.
Modified:
trunk/source/compiler/ARM/arm2.lisp
Modified: trunk/source/compiler/ARM/arm2.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/ARM/arm2.lisp (original)
+++ trunk/source/compiler/ARM/arm2.lisp Wed Dec 21 16:50:16 2011
@@ -4285,6 +4285,13 @@
(arm2-lri seg vreg value))
(^)))
=
+(defun arm2-natural-constant (seg vreg xfer value)
+ (arm2-use-operator
+ (if (typep value *nx-target-fixnum-type*)
+ (%nx1-operator fixnum)
+ (%nx1-operator immediate))
+ seg vreg xfer value))
+ =
=
=
(defun arm2-store-macptr (seg vreg address-reg)
@@ -8953,7 +8960,7 @@
(let* ((fix-x (acode-fixnum-form-p x))
(fix-y (acode-fixnum-form-p y)))
(if (and fix-x fix-y)
- (arm2-absolute-natural seg vreg xfer (+ fix-x fix-y))
+ (arm2-natural-constant seg vreg xfer (+ fix-x fix-y))
(let* ((u15x (and (typep fix-x '(unsigned-byte 15)) fix-x))
(u15y (and (typep fix-y '(unsigned-byte 15)) fix-y)))
(if (not (or u15x u15y))
@@ -8977,7 +8984,7 @@
(let* ((fix-x (acode-fixnum-form-p x))
(fix-y (acode-fixnum-form-p y)))
(if (and fix-x fix-y)
- (arm2-absolute-natural seg vreg xfer (- fix-x fix-y))
+ (arm2-natural-constant seg vreg xfer (- fix-x fix-y))
(let* ((u15y (and (typep fix-y '(unsigned-byte 15)) fix-y)))
(if (not u15y)
(with-imm-target () (xreg :natural)
@@ -9000,7 +9007,7 @@
(let* ((naturalx (nx-natural-constant-p x))
(naturaly (nx-natural-constant-p y)))
(if (and naturalx naturaly) =
- (arm2-absolute-natural seg vreg xfer (logior naturalx naturaly))
+ (arm2-natural-constant seg vreg xfer (logior naturalx naturaly))
(let* ((constant (let* ((c (or naturalx naturaly)))
(when c
(if (arm::encode-arm-immediate c)
@@ -9026,7 +9033,7 @@
(let* ((naturalx (nx-natural-constant-p x))
(naturaly (nx-natural-constant-p y)))
(if (and naturalx naturaly) =
- (arm2-absolute-natural seg vreg xfer (logxor naturalx naturaly))
+ (arm2-natural-constant seg vreg xfer (logxor naturalx naturaly))
(let* ((constant (let* ((c (or naturalx naturaly)))
(when c
(if (arm::encode-arm-immediate c)
@@ -9052,7 +9059,7 @@
(let* ((naturalx (nx-natural-constant-p x))
(naturaly (nx-natural-constant-p y)))
(if (and naturalx naturaly) =
- (arm2-absolute-natural seg vreg xfer (logand naturalx naturaly))
+ (arm2-natural-constant seg vreg xfer (logand naturalx naturaly))
(let* ((constant (let* ((c (or naturalx naturaly)))
(when c
(if (or (arm::encode-arm-immediate c)
More information about the Openmcl-cvs-notifications
mailing list