Changeset 5509


Ignore:
Timestamp:
Nov 7, 2006, 9:28:27 AM (18 years ago)
Author:
Gary Byers
Message:

.SParef3, .SPaset3.

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

Legend:

Unmodified
Added
Removed
  • trunk/ccl/lisp-kernel/x86-spentry64.s

    r5488 r5509  
    43604360_endsubp(aref2)
    43614361
     4362/* %temp0 = array, %arg_x = i,%arg_y = j, %arg_z = k */
     4363_spentry(aref3)
     4364        __(testb $fixnummask,%arg_x_b)
     4365        __(je,pt 0f)
     4366        __(uuo_error_reg_not_fixnum(Rarg_x))
     43670:      __(testb $fixnummask,%arg_y_b)
     4368        __(je,pt 1f)
     4369        __(uuo_error_reg_not_fixnum(Rarg_y))
     43701:      __(testb $fixnummask,%arg_z_b)
     4371        __(je,pt 2f)
     4372        __(uuo_error_reg_not_fixnum(Rarg_z))
     43732:      __(extract_typecode(%temp0,%imm0))
     4374        __(cmpb $subtag_arrayH,%imm0_b)
     4375        __(jne 3f)
     4376        __(cmpq $3<<fixnumshift,arrayH.rank(%temp0))
     4377        __(je,pt 4f)
     43783:      __(uuo_error_reg_not_type(Rtemp0,error_object_not_array_3d))
     43794:      __(cmpq arrayH.dim0(%temp0),%arg_x)
     4380        __(jb,pt 5f)
     4381        __(uuo_error_array_bounds(Rarg_x,Rtemp0))
     43825:      __(movq arrayH.dim0+node_size(%temp0),%imm0)
     4383        __(cmpq %imm0,%arg_y)
     4384        __(jb,pt 6f)
     4385        __(uuo_error_array_bounds(Rarg_y,Rtemp0))
     43866:      __(unbox_fixnum(%imm0,%imm0))
     4387        __(movq arrayH.dim0+(node_size*2)(%temp0),%imm1)
     4388        __(cmpq %imm1,%arg_z)
     4389        __(jb,pt 7f)
     4390        __(uuo_error_array_bounds(Rarg_z,Rtemp0))
     43917:      __(unbox_fixnum(%imm1,%imm1))
     4392        __(imulq %imm1,%arg_y)
     4393        __(mulq %imm1)
     4394        __(imulq %imm0,%arg_x)
     4395        __(addq %arg_x,%arg_z)
     4396        __(addq %arg_y,%arg_z)
     4397        __(movq %temp0,%arg_y)
     43988:      __(addq arrayH.displacement(%arg_y),%arg_z)
     4399        __(movq arrayH.data_vector(%arg_y),%arg_y)
     4400        __(extract_subtag(%arg_y,%imm1_b))
     4401        __(cmpb $subtag_vectorH,%imm1_b)
     4402        __(ja C(misc_ref_common))
     4403        __(jmp 8b)
     4404_endsubp(aref3)
     4405       
    43624406/* As with aref2, but temp0 = array, arg_x = i, arg_y = j, arg_z = new_value */
    43634407_spentry(aset2)
     
    43924436        __(jmp 6b)
    43934437_endsubp(aset2)
     4438
     4439/% temp1 = array, %temp0 = i, %arg_x = j, %arg_y = k, %arg_y = newval. */
     4440
     4441_spentry(aset3)
     4442        __(testb $fixnummask,%temp0_b)
     4443        __(je,pt 0f)
     4444        __(uuo_error_reg_not_fixnum(Rtemp0))
     44450:      __(testb $fixnummask,%arg_x_b)
     4446        __(je,pt 1f)
     4447        __(uuo_error_reg_not_fixnum(Rarg_x))
     44481:      __(testb $fixnummask,%arg_y_b)
     4449        __(je,pt 2f)
     4450        __(uuo_error_reg_not_fixnum(Rarg_y))
     44512:      __(extract_typecode(%temp1,%imm0))
     4452        __(cmpb $subtag_arrayH,%imm0_b)
     4453        __(jne 3f)
     4454        __(cmpq $3<<fixnumshift,arrayH.rank(%temp1))
     4455        __(je,pt 4f)
     44563:      __(uuo_error_reg_not_type(Rtemp1,error_object_not_array_3d))
     44574:      __(cmpq arrayH.dim0(%temp1),%temp0)
     4458        __(jb,pt 5f)
     4459        __(uuo_error_array_bounds(Rtemp0,Rtemp1))
     44605:      __(movq arrayH.dim0+node_size(%temp1),%imm0)
     4461        __(cmpq %imm0,%arg_x)
     4462        __(jb,pt 6f)
     4463        __(uuo_error_array_bounds(Rarg_x,Rtemp1))
     44646:      __(unbox_fixnum(%imm0,%imm0))
     4465        __(movq arrayH.dim0+(node_size*2)(%temp1),%imm1)
     4466        __(cmpq %imm1,%arg_y)
     4467        __(jb,pt 7f)
     4468        __(uuo_error_array_bounds(Rarg_y,Rtemp1))
     44697:      __(unbox_fixnum(%imm1,%imm1))
     4470        __(imulq %imm1,%arg_x)
     4471        __(mulq %imm1)
     4472        __(imulq %imm0,%temp0)
     4473        __(addq %temp0,%arg_y)
     4474        __(addq %arg_x,%arg_y)
     4475        __(movq %temp1,%arg_x)
     44768:      __(addq arrayH.displacement(%arg_x),%arg_y)
     4477        __(movq arrayH.data_vector(%arg_x),%arg_x)
     4478        __(extract_subtag(%arg_x,%imm1_b))
     4479        __(cmpb $subtag_vectorH,%imm1_b)
     4480        __(ja C(misc_set_common))
     4481        __(jmp 8b)
     4482_endsubp(aset3)
     4483       
    43944484       
    43954485_spentry(poweropen_callbackX)
     
    44634553
    44644554               
    4465 _spentry(unused_2)
    4466 _endsubp(unused_2)
    4467 
    4468 _spentry(unused_3)
    4469 _endsubp(unused_3)
     4555
    44704556
    44714557_spentry(unused_4)
  • trunk/ccl/lisp-kernel/x86-spjump64.s

    r5457 r5509  
    166166        _spjump(fix_overflow)
    167167        _spjump(mvpasssym)
    168         _spjump(unused_2)
    169         _spjump(unused_3)
     168        _spjump(aref3)
     169        _spjump(aset3)
    170170        _spjump(unused_4)
    171171        _spjump(unused_5)
Note: See TracChangeset for help on using the changeset viewer.