Changeset 15295
- Timestamp:
- Apr 5, 2012, 6:42:44 PM (13 years ago)
- Location:
- trunk/source/lisp-kernel
- Files:
-
- 2 edited
-
x86-spentry32.s (modified) (2 diffs)
-
x86-spentry64.s (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/lisp-kernel/x86-spentry32.s
r14657 r15295 3866 3866 3867 3867 _spentry(builtin_eql) 3868 __(cmpl %arg_y,%arg_z)3869 __(je 1f)3868 0: __(cmpl %arg_y,%arg_z) 3869 __(je 8f) 3870 3870 /* Not EQ. Could only possibly be EQL if both are tag-misc */ 3871 3871 /* and both have the same subtag. */ … … 3873 3873 __(andb $tagmask,%imm0_b) 3874 3874 __(cmpb $tag_misc,%imm0_b) 3875 __(jne 2f)3875 __(jne 9f) 3876 3876 __(movb %arg_z_b,%imm0_bh) 3877 3877 __(andb $tagmask,%imm0_bh) 3878 3878 __(cmpb %imm0_bh,%imm0_b) 3879 __(jne 2f)3879 __(jne 9f) 3880 3880 __(extract_subtag(%arg_y,%imm0_b)) 3881 3881 __(extract_subtag(%arg_z,%imm0_bh)) 3882 3882 __(cmpb %imm0_b,%imm0_bh) 3883 __(jne 2f) 3884 __(jump_builtin(_builtin_eql,2)) 3885 1: __(movl $t_value,%arg_z) 3886 __(ret) 3887 2: __(movl $nil_value,%arg_z) 3883 __(jne 9f) 3884 __(cmpb $subtag_macptr,%imm0_b) 3885 __(je 1f) 3886 __(cmpb $subtag_single_float,%imm0_b) 3887 __(jne 2f) 3888 1: __(movl misc_data_offset(%arg_y),%imm0) 3889 __(cmpl misc_data_offset(%arg_z),%imm0) 3890 __(movl $t_value,%arg_z) 3891 __(movl $nil_value,%imm0) 3892 __(cmovnel %imm0,%arg_z) 3893 __(ret) 3894 2: __(cmpb $subtag_double_float,%imm0_b) 3895 __(jne 3f) 3896 __(movl double_float.value(%arg_y),%imm0) 3897 __(cmpl double_float.value(%arg_z),%imm0) 3898 __(jne 9f) 3899 __(movl double_float.value+node_size(%arg_y),%imm0) 3900 __(cmpl double_float.value+node_size(%arg_z),%imm0) 3901 __(movl $t_value,%arg_z) 3902 __(movl $nil_value,%imm0) 3903 __(cmovnel %imm0,%arg_z) 3904 __(ret) 3905 3: __(cmpb $subtag_ratio,%imm0_b) 3906 __(je 4f) 3907 __(cmpb $subtag_complex,%imm0_b) 3908 __(jne 6f) 3909 4: __(pushl %ebp) 3910 __(pushl ratio.denom(%arg_y)) 3911 __(pushl ratio.denom(%arg_z)) 3912 __(movl ratio.numer(%arg_y),%arg_y) 3913 __(movl ratio.numer(%arg_z),%arg_z) 3914 __(pushl $5f) 3915 __(jmp 0b) 3916 __(tra(5)) 3917 __(compare_reg_to_nil(%arg_z)) 3918 __(popl %arg_z) 3919 __(popl %arg_y) 3920 __(popl %ebp) 3921 __(je 9f) 3922 __(jmp 0b) 3923 6: __(cmpb $subtag_bignum,%imm0_b) 3924 __(jne 9f) 3925 __(getvheader(%arg_y,%imm0)) 3926 __(cmpl misc_header_offset(%arg_z),%imm0) 3927 __(jne 9f) 3928 __(header_length(%imm0,%temp0)) 3929 7: __(movl misc_data_offset-node_size(%arg_y,%temp0),%imm0) 3930 __(cmpl misc_data_offset-node_size(%arg_z,%temp0),%imm0) 3931 __(jne 9f) 3932 __(subl $node_size,%temp0) 3933 __(jne 7b) 3934 8: __(movl $t_value,%arg_z) 3935 __(ret) 3936 9: __(movl $nil_value,%arg_z) 3888 3937 __(ret) 3889 3938 _endsubp(builtin_eql) -
trunk/source/lisp-kernel/x86-spentry64.s
r15084 r15295 3700 3700 3701 3701 _spentry(builtin_eql) 3702 __(cmpq %arg_y,%arg_z)3703 __(je 1f)3702 0: __(cmpq %arg_y,%arg_z) 3703 __(je 8f) 3704 3704 /* Not EQ. Could only possibly be EQL if both are tag-misc */ 3705 3705 /* and both have the same subtag */ … … 3707 3707 __(extract_lisptag(%arg_z,%imm1)) 3708 3708 __(cmpb $tag_misc,%imm0_b) 3709 __(jne 2f)3709 __(jne 9f) 3710 3710 __(cmpb %imm0_b,%imm1_b) 3711 __(jne 2f)3711 __(jne 9f) 3712 3712 __(extract_subtag(%arg_y,%imm0)) 3713 3713 __(extract_subtag(%arg_z,%imm1)) 3714 3714 __(cmpb %imm0_b,%imm1_b) 3715 __(jne 2f) 3716 __(jump_builtin(_builtin_eql,2)) 3717 1: __(movl $t_value,%arg_z_l) 3718 __(ret) 3719 2: __(movl $nil_value,%arg_z_l) 3715 __(jne 9f) 3716 __(cmpb $subtag_macptr,%imm0_b) 3717 __(je 1f) 3718 __(cmpb $subtag_double_float,%imm0_b) 3719 __(jne 2f) 3720 1: __(movq misc_data_offset(%arg_y),%imm0) 3721 __(cmpq misc_data_offset(%arg_z),%imm0) 3722 __(movl $t_value,%arg_z_l) 3723 __(movl $nil_value,%imm0_l) 3724 __(cmovnel %imm0_l,%arg_z_l) 3725 __(ret) 3726 2: __(cmpb $subtag_ratio,%imm0_b) 3727 __(je 3f) 3728 __(cmpb $subtag_complex,%imm0_b) 3729 __(jne 5f) 3730 3: __(pushq %rbp) 3731 __(movq %rsp,%rsp) 3732 __(pushq ratio.denom(%arg_y)) 3733 __(pushq ratio.denom(%arg_z)) 3734 __(movq ratio.numer(%arg_y),%arg_y) 3735 __(movq ratio.numer(%arg_z),%arg_z) 3736 __(lea 4f(%rip),%ra0) 3737 __(pushq %ra0) 3738 __(jmp 0b) 3739 __(tra(4)) 3740 __(compare_reg_to_nil(%arg_z)) 3741 __(popq %arg_z) 3742 __(popq %arg_y) 3743 __(popq %rbp) 3744 __(je 9f) 3745 __(jmp 0b) 3746 5: __(cmpb $subtag_bignum,%imm0_b) 3747 __(jne 9f) 3748 __(getvheader(%arg_y,%imm2)) 3749 __(cmpq misc_header_offset(%arg_z),%imm2) 3750 __(jne 9f) 3751 __(shrq $num_subtag_bits,%imm2) 3752 __(xorl %imm1_l,%imm1_l) 3753 6: __(movl misc_data_offset(%arg_y,%imm1,4),%imm0_l) 3754 __(cmpl misc_data_offset(%arg_z,%imm1,4),%imm0_l) 3755 __(jne 9f) 3756 __(addq $1,%imm1) 3757 __(cmpq %imm1,%imm2) 3758 __(jne 6b) 3759 8: __(movl $t_value,%arg_z_l) 3760 __(ret) 3761 9: __(movl $nil_value,%arg_z_l) 3720 3762 __(ret) 3721 3763 _endsubp(builtin_eql)
Note:
See TracChangeset
for help on using the changeset viewer.
