Index: /trunk/source/compiler/X86/X8664/x8664-vinsns.lisp
===================================================================
--- /trunk/source/compiler/X86/X8664/x8664-vinsns.lisp	(revision 14373)
+++ /trunk/source/compiler/X86/X8664/x8664-vinsns.lisp	(revision 14374)
@@ -633,8 +633,11 @@
   ((:and (:pred /= intval 0)
          (:pred >= intval  -2147483648)
-         (:pred <= intval 2147483647))
-   (movq (:$l intval) (:%q dest)))
+         (:pred <= intval #xffffffff))
+   ((:pred > intval 0)
+    (movl (:$l intval) (:%l dest)))
+   ((:pred < intval 0)
+    (movq (:$l intval) (:%q dest))))
   ((:or (:pred < intval  -2147483648)
-        (:pred > intval 2147483647))
+        (:pred > intval #xffffffff))
    (movq (:$q (:apply logand #xffffffffffffffff intval)) (:%q dest))))
 
@@ -644,10 +647,8 @@
   ((:pred = intval 0)
    (xorl (:%l dest) (:%l dest)))
-  ((:and (:pred /= intval 0)
-         (:pred >= intval  -2147483648)
-         (:pred <= intval 2147483647))
-   (movq (:$l intval) (:%q dest)))
-  ((:or (:pred < intval  -2147483648)
-        (:pred > intval 2147483647))
+  ((:and (:pred > intval 0)
+         (:pred <= intval #xffffffff))
+   (movl (:$l intval) (:%l dest)))
+  ((:pred > intval #xffffffff)
    (movq (:$q (:apply logand #xffffffffffffffff intval)) (:%q dest))))
 
Index: /trunk/source/compiler/X86/x862.lisp
===================================================================
--- /trunk/source/compiler/X86/x862.lisp	(revision 14373)
+++ /trunk/source/compiler/X86/x862.lisp	(revision 14374)
@@ -1554,7 +1554,7 @@
 	    (if (and (= (hard-regspec-class vreg) hard-reg-class-gpr)
 		     (member (get-regspec-mode vreg)
-			     '(hard-reg-class-gpr-mode-u32
-			       hard-reg-class-gpr-mode-s32
-			       hard-reg-class-gpr-mode-address))
+			     '(#.hard-reg-class-gpr-mode-u32
+			       #.hard-reg-class-gpr-mode-s32
+			       #.hard-reg-class-gpr-mode-address))
 		     (or (typep form '(unsigned-byte 32))
 			 (typep form '(signed-byte 32))))
@@ -1568,14 +1568,19 @@
 		  (x862-store-immediate seg form target)))))
 	   (:x8664
-	    (if (and (typep form '(unsigned-byte 32))
-		     (= (hard-regspec-class vreg) hard-reg-class-gpr)
-		     (= (get-regspec-mode vreg)
-			hard-reg-class-gpr-mode-u32))
-	      (x862-lri seg vreg form)
-	      (ensuring-node-target
-		  (target vreg)
-		(if (characterp form)
-		  (! load-character-constant target (char-code form))
-		  (x862-store-immediate seg form target)))))))
+            (let* ((mode (if (= (hard-regspec-class vreg) hard-reg-class-gpr)
+                           (get-regspec-mode vreg))))
+            
+              (if (and (eql mode hard-reg-class-gpr-mode-s64)
+                       (typep form '(signed-byte 64)))
+                (x862-lri seg vreg form)
+                (if (and (or (eql mode hard-reg-class-gpr-mode-u64)
+                                 (eql mode hard-reg-class-gpr-mode-address))
+                             (typep form '(unsigned-byte 64)))
+                  (x862-lriu seg vreg form)
+                  (ensuring-node-target
+                      (target vreg)
+                    (if (characterp form)
+                      (! load-character-constant target (char-code form))
+                      (x862-store-immediate seg form target)))))))))
         (if (and (listp form) *load-time-eval-token* (eq (car form) *load-time-eval-token*))
           (x862-store-immediate seg form ($ *x862-temp0*))))
