[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