Index: /trunk/ccl/lisp-kernel/spentry.s
===================================================================
--- /trunk/ccl/lisp-kernel/spentry.s	(revision 521)
+++ /trunk/ccl/lisp-kernel/spentry.s	(revision 522)
@@ -3149,6 +3149,10 @@
         
 _spentry(builtin_plus)
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr1,imm1,tag_fixnum))
 	__(bne- cr0,1f)
+        __(bne- cr1,1f)
 	__(addo. arg_z,arg_y,arg_z)
 	__(bnslr+)
@@ -3163,6 +3167,10 @@
 	__(jump_builtin(_builtin_plus,2))
 _spentry(builtin_minus)
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr1,imm1,tag_fixnum))
 	__(bne- cr0,1f)
+        __(bne- cr0,1f)
 	__(subo. arg_z,arg_y,arg_z)
 	__(bnslr+)
@@ -3177,7 +3185,11 @@
 	__(jump_builtin(_builtin_minus,2))
 _spentry(builtin_times)
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr1,imm1,tag_fixnum))
 	__(unbox_fixnum(imm2,arg_y))
-	__(bne 1f)
+	__(bne cr0,1f)
+        __(bne cr1,1f)
 	__(mullwo. imm3,arg_z,imm2)
 	__(bso 2f)		/*  SO set if result would overflow a fixnum */
@@ -3197,9 +3209,13 @@
 
 _spentry(builtin_eq)
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
-	__(cmpr(cr1,arg_y,arg_z))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr1,imm1,tag_fixnum))
+	__(cmpr(cr2,arg_y,arg_z))
 	__(bne- cr0,1f)
+        __(bne- cr1,1f)
 	__(li arg_z,nil_value)
-	__(bnelr cr1)
+	__(bnelr cr2)
 	__(li arg_z,t_value)
 	__(blr)
@@ -3208,9 +3224,13 @@
 
 _spentry(builtin_ne)
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
-	__(cmpr(cr1,arg_y,arg_z))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr1,imm0,tag_fixnum))
+	__(cmpr(cr2,arg_y,arg_z))
 	__(bne- cr0,1f)
+        __(bne- cr1,1f)
 	__(li arg_z,nil_value)
-	__(beqlr cr1)
+	__(beqlr cr2)
 	__(li arg_z,t_value)
 	__(blr)
@@ -3219,9 +3239,13 @@
 
 _spentry(builtin_gt)
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
-	__(cmpr(cr1,arg_y,arg_z))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr1,imm0,tag_fixnum))
+	__(cmpr(cr2,arg_y,arg_z))
 	__(bne- cr0,1f)
+        __(bne- cr1,1f)
 	__(li arg_z,nil_value)
-	__(bnglr cr1)
+	__(bnglr cr2)
 	__(li arg_z,t_value)
 	__(blr)
@@ -3230,9 +3254,13 @@
 
 _spentry(builtin_ge)
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
-	__(cmpr(cr1,arg_y,arg_z))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr1,imm0,tag_fixnum))
+	__(cmpr(cr2,arg_y,arg_z))
 	__(bne- cr0,1f)
+        __(bne- cr1,1f)
 	__(li arg_z,nil_value)
-	__(bltlr cr1)
+	__(bltlr cr2)
 	__(li arg_z,t_value)
 	__(blr)
@@ -3241,9 +3269,13 @@
 
 _spentry(builtin_lt)
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
-	__(cmpr(cr1,arg_y,arg_z))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr1,imm0,tag_fixnum))
+	__(cmpr(cr2,arg_y,arg_z))
 	__(bne- cr0,1f)
+        __(bne- cr1,1f)
 	__(li arg_z,nil_value)
-	__(bnllr cr1)
+	__(bnllr cr2)
 	__(li arg_z,t_value)
 	__(blr)
@@ -3252,9 +3284,13 @@
 
 _spentry(builtin_le)
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
-	__(cmpr(cr1,arg_y,arg_z))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr1,imm0,tag_fixnum))
+	__(cmpr(cr2,arg_y,arg_z))
 	__(bne- cr0,1f)
+        __(bne- cr0,1f)
 	__(li arg_z,nil_value)
-	__(bgtlr cr1)
+	__(bgtlr cr2)
 	__(li arg_z,t_value)
 	__(blr)
@@ -3340,5 +3376,5 @@
 	__(_car(temp0,arg_x))
 	__(cmpr(temp0,arg_y))
-	__(bne 2f)
+	__(bne cr0,2f)
 	__(mr arg_z,arg_x)
 	__(blr)
@@ -3364,12 +3400,16 @@
 _spentry(builtin_logbitp)
 	/* Call out unless both fixnums,0 <=  arg_y < 30 */
-	__(cmplri(cr1,arg_y,30<<fixnum_shift))
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
+	__(cmplri(cr2,arg_y,30<<fixnum_shift))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr1,imm1,tag_fixnum))
 	__(unbox_fixnum(imm0,arg_y))
 	__(subfic imm0,imm0,30)
 	__(rlwnm imm0,arg_z,imm0,31,31)
 	__(rlwimi imm0,imm0,4,27,27)
-	__(bnl cr1,1f)
+	__(bnl cr2,1f)
 	__(bne cr0,1f)
+        __(bne cr1,1f)
 	__(addi arg_z,imm0,nil_value)
 	__(blr)
@@ -3378,6 +3418,10 @@
 
 _spentry(builtin_logior)
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr1,imm1,tag_fixnum))
 	__(bne- cr0,1f)
+        __(bne- cr1,1f)
 	__(or arg_z,arg_y,arg_z)
 	__(blr)
@@ -3386,6 +3430,10 @@
 
 _spentry(builtin_logand)
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr1,imm0,tag_fixnum))
 	__(bne- cr0,1f)
+        __(bne- cr1,1f)
 	__(and arg_z,arg_y,arg_z)
 	__(blr)
@@ -3395,7 +3443,11 @@
 _spentry(builtin_ash)
 	__(cmpri(cr1,arg_z,0))
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr3,imm1,tag_fixnum))
 	__(cmpri(cr2,arg_z,-(29<<2)))	/* !! 2 =  fixnumshift */
 	__(bne- 9f)
+        __(bne- cr3,9f)
 	__(bne cr1,0f)
 	__(mr arg_z,arg_y)	/* (ash n 0) => n */
@@ -3466,6 +3518,10 @@
 
 _spentry(builtin_logxor)
-	__(extract_2_lisptags_(imm0,arg_y,arg_z))
+        __(extract_lisptag(imm0,arg_y))
+        __(extract_lisptag(imm1,arg_z))
+        __(cmpri(cr0,imm0,tag_fixnum))
+        __(cmpri(cr0,imm1,tag_fixnum))
 	__(bne- cr0,1f)
+        __(bne- cr1,1f)
 	__(xor arg_z,arg_y,arg_z)
 	__(blr)
