Changeset 14629


Ignore:
Timestamp:
Feb 1, 2011, 8:58:35 PM (14 years ago)
Author:
Gary Byers
Message:

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.)

Location:
trunk/source/lisp-kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/x86-macros.s

    r13337 r14629  
    543543
    544544define(`extract_subtag',`
    545         __(movb misc_subtag_offset($1),$2)
    546 ')
     545        __(movzbl misc_subtag_offset($1),$2_l)
     546')
     547
    547548
    548549ifdef(`X8632',`
  • trunk/source/lisp-kernel/x86-spentry64.s

    r14425 r14629  
    36923692        __(cmpb %imm0_b,%imm1_b)
    36933693        __(jne 2f)
    3694         __(extract_subtag(%arg_y,%imm0_b))
    3695         __(extract_subtag(%arg_z,%imm1_b))
     3694        __(extract_subtag(%arg_y,%imm0))
     3695        __(extract_subtag(%arg_z,%imm1))
    36963696        __(cmpb %imm0_b,%imm1_b)
    36973697        __(jne 2f)
     
    37093709        __(cmpb $tag_misc,%imm0_b)
    37103710        __(jnz 8f)
    3711         __(extract_subtag(%arg_z,%imm0_b))
     3711        __(extract_subtag(%arg_z,%imm0))
    37123712        __(rcmpb(%imm0_b,$min_vector_subtag))
    37133713        __(jb 8f)
     
    475147516:      __(addq arrayH.displacement(%arg_y),%arg_z)
    47524752        __(movq arrayH.data_vector(%arg_y),%arg_y)
    4753         __(extract_subtag(%arg_y,%imm1_b))
    4754         __(cmpb $subtag_vectorH,%imm1_b)
     4753        __(extract_subtag(%arg_y,%imm1))
     4754        __(cmpb $subtag_vectorH,%imm1_b) 
    47554755        __(ja C(misc_ref_common))
    47564756        __(jmp 6b)
     
    479447948:      __(addq arrayH.displacement(%arg_y),%arg_z)
    47954795        __(movq arrayH.data_vector(%arg_y),%arg_y)
    4796         __(extract_subtag(%arg_y,%imm1_b))
     4796        __(extract_subtag(%arg_y,%imm1))
    47974797        __(cmpb $subtag_vectorH,%imm1_b)
    47984798        __(ja C(misc_ref_common))
     
    483048306:      __(addq arrayH.displacement(%arg_x),%arg_y)
    48314831        __(movq arrayH.data_vector(%arg_x),%arg_x)
    4832         __(extract_subtag(%arg_x,%imm1_b))
     4832        __(extract_subtag(%arg_x,%imm1))
    48334833        __(cmpb $subtag_vectorH,%imm1_b)
    48344834        __(ja C(misc_set_common))
     
    487348738:      __(addq arrayH.displacement(%arg_x),%arg_y)
    48744874        __(movq arrayH.data_vector(%arg_x),%arg_x)
    4875         __(extract_subtag(%arg_x,%imm1_b))
     4875        __(extract_subtag(%arg_x,%imm1))
    48764876        __(cmpb $subtag_vectorH,%imm1_b)
    48774877        __(ja C(misc_set_common))
Note: See TracChangeset for help on using the changeset viewer.