Index: /trunk/ccl/compiler/X86/X8664/x8664-vinsns.lisp
===================================================================
--- /trunk/ccl/compiler/X86/X8664/x8664-vinsns.lisp	(revision 5149)
+++ /trunk/ccl/compiler/X86/X8664/x8664-vinsns.lisp	(revision 5150)
@@ -683,5 +683,5 @@
 (define-x8664-vinsn extract-tag (((tag :u8))
                                  ((object :lisp)))
-  (movb (:%b object) (:%b tag))
+  (movzbl (:%b object) (:%l tag))
   (andb (:$b x8664::tagmask) (:%b tag)))
 
@@ -693,5 +693,5 @@
 (define-x8664-vinsn extract-fulltag (((tag :u8))
                                  ((object :lisp)))
-  (movb (:%b object) (:%b tag))
+  (movzbl (:%b object) (:%l tag))
   (andb (:$b x8664::fulltagmask) (:%b tag)))
 
@@ -701,7 +701,7 @@
   (andl (:$b (ash x8664::fulltagmask x8664::fixnumshift)) (:%l tag)))
 
-(define-x8664-vinsn extract-typecode (((tag :u8))
+(define-x8664-vinsn extract-typecode (((tag :u32))
                                       ((object :lisp)))
-  (movb (:%b object) (:%b tag))
+  (movzbl (:%b object) (:%l tag))
   (andb (:$b x8664::tagmask) (:%b tag))
   (cmpb (:$b x8664::tag-misc) (:%b tag))
@@ -712,6 +712,6 @@
 (define-x8664-vinsn extract-typecode-fixnum (((tag :imm))
                                              ((object :lisp))
-                                             ((temp :u8)))
-  (movb (:%b object) (:%b temp))
+                                             ((temp :u32)))
+  (movzbl (:%b object) (:%l temp))
   (andb (:$b x8664::tagmask) (:%b temp))
   (cmpb (:$b x8664::tag-misc) (:%b temp))
@@ -719,5 +719,4 @@
   (movb (:@ x8664::misc-subtag-offset (:%q object)) (:%b temp))
   :have-tag
-  (movzbl (:%b temp) (:%l temp))
   (leal (:@ (:%q temp) 8) (:%l tag)))
 
