[Openmcl-cvs-notifications] r14629 - in /trunk/source/lisp-kernel: x86-macros.s x86-spentry64.s

gb at clozure.com gb at clozure.com
Tue Feb 1 22:58:35 CST 2011


Author: gb
Date: Tue Feb  1 22:58:35 2011
New Revision: 14629

Log:
x8664 'extract_subtag' macro: use movzbl to avoid a partial register
write.  Change callers of that macro.
(Some cases of the old implementation showed up as costly in Shark
output.)

Modified:
    trunk/source/lisp-kernel/x86-macros.s
    trunk/source/lisp-kernel/x86-spentry64.s

Modified: trunk/source/lisp-kernel/x86-macros.s
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-macros.s (original)
+++ trunk/source/lisp-kernel/x86-macros.s Tue Feb  1 22:58:35 2011
@@ -542,8 +542,9 @@
 ')
 =

 define(`extract_subtag',`
-	__(movb misc_subtag_offset($1),$2)
-')
+	__(movzbl misc_subtag_offset($1),$2_l)
+')
+
 =

 ifdef(`X8632',`
 define(`extract_typecode',`

Modified: trunk/source/lisp-kernel/x86-spentry64.s
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-spentry64.s (original)
+++ trunk/source/lisp-kernel/x86-spentry64.s Tue Feb  1 22:58:35 2011
@@ -3691,8 +3691,8 @@
 	__(jne 2f)
 	__(cmpb %imm0_b,%imm1_b)
 	__(jne 2f)
-	__(extract_subtag(%arg_y,%imm0_b))
-	__(extract_subtag(%arg_z,%imm1_b))
+	__(extract_subtag(%arg_y,%imm0))
+	__(extract_subtag(%arg_z,%imm1))
 	__(cmpb %imm0_b,%imm1_b)
 	__(jne 2f)
 	__(jump_builtin(_builtin_eql,2))
@@ -3708,7 +3708,7 @@
 	__(jz 2f)
 	__(cmpb $tag_misc,%imm0_b)
 	__(jnz 8f)
-	__(extract_subtag(%arg_z,%imm0_b))
+	__(extract_subtag(%arg_z,%imm0))
 	__(rcmpb(%imm0_b,$min_vector_subtag))
 	__(jb 8f)
 	__(je 1f)
@@ -4750,8 +4750,8 @@
         __(movq %arg_x,%arg_y)
 6:      __(addq arrayH.displacement(%arg_y),%arg_z)
         __(movq arrayH.data_vector(%arg_y),%arg_y)
-        __(extract_subtag(%arg_y,%imm1_b))
-        __(cmpb $subtag_vectorH,%imm1_b)
+        __(extract_subtag(%arg_y,%imm1))
+        __(cmpb $subtag_vectorH,%imm1_b) =

         __(ja C(misc_ref_common))
         __(jmp 6b)
 0:      __(uuo_error_reg_not_fixnum(Rarg_y))
@@ -4793,7 +4793,7 @@
         __(movq %temp0,%arg_y)
 8:      __(addq arrayH.displacement(%arg_y),%arg_z)
         __(movq arrayH.data_vector(%arg_y),%arg_y)
-        __(extract_subtag(%arg_y,%imm1_b))
+        __(extract_subtag(%arg_y,%imm1))
         __(cmpb $subtag_vectorH,%imm1_b)
         __(ja C(misc_ref_common))
         __(jmp 8b)
@@ -4829,7 +4829,7 @@
         __(movq %temp0,%arg_x)
 6:      __(addq arrayH.displacement(%arg_x),%arg_y)
         __(movq arrayH.data_vector(%arg_x),%arg_x)
-        __(extract_subtag(%arg_x,%imm1_b))
+        __(extract_subtag(%arg_x,%imm1))
         __(cmpb $subtag_vectorH,%imm1_b)
         __(ja C(misc_set_common))
         __(jmp 6b)
@@ -4872,7 +4872,7 @@
         __(movq %temp1,%arg_x)
 8:      __(addq arrayH.displacement(%arg_x),%arg_y)
         __(movq arrayH.data_vector(%arg_x),%arg_x)
-        __(extract_subtag(%arg_x,%imm1_b))
+        __(extract_subtag(%arg_x,%imm1))
         __(cmpb $subtag_vectorH,%imm1_b)
         __(ja C(misc_set_common))
         __(jmp 8b)



More information about the Openmcl-cvs-notifications mailing list