Index: /trunk/source/compiler/X86/X8632/x8632-vinsns.lisp
===================================================================
--- /trunk/source/compiler/X86/X8632/x8632-vinsns.lisp	(revision 14978)
+++ /trunk/source/compiler/X86/X8632/x8632-vinsns.lisp	(revision 14979)
@@ -2539,7 +2539,13 @@
 
 (define-x8632-vinsn require-character (()
-				       ((object :lisp)))
+				       ((object :lisp))
+                                       ((tag (:u8 #.x8632::imm0))))
   :again
-  (cmpb (:$b x8632::subtag-character) (:%b object))
+  ((:pred < (:apply %hard-regspec-value object) 4)
+   (cmpb (:$b x8632::subtag-character) (:%b object)))
+  ((:not (:pred < (:apply %hard-regspec-value object) 4))
+   (movl (:%l object) (:%l tag))
+   (cmpb (:$b x8632::subtag-character) (:%b tag)))
+  
   (jne :bad)
 
Index: /trunk/source/compiler/X86/x862.lisp
===================================================================
--- /trunk/source/compiler/X86/x862.lisp	(revision 14978)
+++ /trunk/source/compiler/X86/x862.lisp	(revision 14979)
@@ -3469,6 +3469,6 @@
 		 (declare (ignore used-gprs))
 		 (let* ((nfprs (target-arch-case
-				(:x8632 6)
-				(:x8664 14))) ;xmm7 (or xmm15) is fpzero.
+				(:x8632 (1- 8))
+				(:x8664 (1- 16)))) ;xmm7 (or xmm15) is fpzero.
 			(free-fpr
 			 (dotimes (r nfprs nil)
@@ -9125,11 +9125,11 @@
   (def-x862-require x862-require-symbol require-symbol)
   (def-x862-require x862-require-s8 require-s8)
-  (def-x862-require x862-require-s8 require-u8)
-  (def-x862-require x862-require-s8 require-s16)
-  (def-x862-require x862-require-s8 require-u16)
-  (def-x862-require x862-require-s8 require-s32)
-  (def-x862-require x862-require-s8 require-u32)
-  (def-x862-require x862-require-s8 require-s64)
-  (def-x862-require x862-require-s8 require-u64))
+  (def-x862-require x862-require-u8 require-u8)
+  (def-x862-require x862-require-s16 require-s16)
+  (def-x862-require x862-require-u16 require-u16)
+  (def-x862-require x862-require-s32 require-s32)
+  (def-x862-require x862-require-u32 require-u32)
+  (def-x862-require x862-require-s64 require-s64)
+  (def-x862-require x862-require-u64 require-u64))
 
 (defun x862-typechecked-form (seg vreg xfer typespec form)
