Index: /trunk/source/compiler/X86/X8632/x8632-vinsns.lisp
===================================================================
--- /trunk/source/compiler/X86/X8632/x8632-vinsns.lisp	(revision 13456)
+++ /trunk/source/compiler/X86/X8632/x8632-vinsns.lisp	(revision 13457)
@@ -2222,13 +2222,9 @@
   (movl (:%l count) (:%l temp))
   (sarl (:$ub x8632::fixnumshift) (:%l temp))
-  (rcmpl (:%l temp) (:$l 31))
-  (cmovbw (:%w temp) (:%w shiftcount))
+  (movl (:$l 31) (:%l shiftcount))
+  (rcmpl (:%l temp) (:%l shiftcount))
+  (cmovbel (:%l temp) (:%l shiftcount))
   (movl (:%l src) (:%l temp))
-  (jae :shift-max)
   (sarl (:%shift x8632::cl) (:%l temp))
-  (jmp :done)
-  :shift-max
-  (sarl (:$ub 31) (:%l temp))
-  :done
   (andl (:$l (lognot x8632::fixnummask)) (:%l temp))
   (movl (:%l temp) (:%l dest)))
@@ -2241,14 +2237,10 @@
   (movl (:%l count) (:%l temp))
   (sarl (:$ub x8632::fixnumshift) (:%l temp))
-  (rcmpl (:%l temp) (:$l 31))
-  (cmovbw (:%w temp) (:%w shiftcount))
+  (movl (:$l 31) (:%l shiftcount))
+  (rcmpl (:%l temp) (:%l shiftcount))
+  (cmovbel (:%l temp) (:%l shiftcount))
   (movl (:%l src) (:%l temp))
-  (jae :shift-max)
   (shrl (:%shift x8632::cl) (:%l temp))
-  (jmp :done)
-  :shift-max
-  (shrl (:$ub 31) (:%l temp))
-  :done
-  (andb (:$b (lognot x8632::fixnummask)) (:%b temp))
+  (andl (:$b (lognot x8632::fixnummask)) (:%l temp))
   (movl (:%l temp) (:%l dest)))
 
Index: /trunk/source/compiler/X86/X8664/x8664-vinsns.lisp
===================================================================
--- /trunk/source/compiler/X86/X8664/x8664-vinsns.lisp	(revision 13456)
+++ /trunk/source/compiler/X86/X8664/x8664-vinsns.lisp	(revision 13457)
@@ -2715,14 +2715,10 @@
   (movq (:%q count) (:%q temp))
   (sarq (:$ub x8664::fixnumshift) (:%q temp))
-  (rcmpq (:%q temp) (:$l 63))
-  (cmovbw (:%w temp) (:%w shiftcount))
+  (movl (:$l 63) (:%l shiftcount))
+  (rcmpq (:%q temp) (:%q shiftcount))
+  (cmovbel (:%l temp) (:%l shiftcount))
   (movq (:%q src) (:%q temp))
-  (jae :shift-max)
   (sarq (:%shift x8664::cl) (:%q temp))
-  (jmp :done)
-  :shift-max
-  (sarq (:$ub 63) (:%q temp))
-  :done
-  (andb (:$b (lognot x8664::fixnummask)) (:%b temp))
+  (andq (:$b (lognot x8664::fixnummask)) (:%q temp))
   (movq (:%q temp) (:%q dest)))
 
@@ -2734,15 +2730,12 @@
   (movq (:%q count) (:%q temp))
   (sarq (:$ub x8664::fixnumshift) (:%q temp))
-  (rcmpq (:%q temp) (:$l 63))
-  (cmovbw (:%w temp) (:%w shiftcount))
+  (movl (:$l 63) (:%l shiftcount))
+  (rcmpq (:%q temp) (:%q shiftcount))
+  (cmovbel (:%l temp) (:%l shiftcount))
   (movq (:%q src) (:%q temp))
-  (jae :shift-max)
   (shrq (:%shift x8664::cl) (:%q temp))
-  (jmp :done)
-  :shift-max
-  (shrq (:$ub 63) (:%q temp))
-  :done
-  (andb (:$b (lognot x8664::fixnummask)) (:%b temp))
+  (andq (:$b (lognot x8664::fixnummask)) (:%q temp))
   (movq (:%q temp) (:%q dest)))
+
 
 (define-x8664-vinsn %iasr-c (((dest :imm))
