Changeset 522
- Timestamp:
- Feb 11, 2004, 11:00:19 AM (21 years ago)
- File:
-
- 1 edited
-
trunk/ccl/lisp-kernel/spentry.s (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/lisp-kernel/spentry.s
r407 r522 3149 3149 3150 3150 _spentry(builtin_plus) 3151 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3151 __(extract_lisptag(imm0,arg_y)) 3152 __(extract_lisptag(imm1,arg_z)) 3153 __(cmpri(cr0,imm0,tag_fixnum)) 3154 __(cmpri(cr1,imm1,tag_fixnum)) 3152 3155 __(bne- cr0,1f) 3156 __(bne- cr1,1f) 3153 3157 __(addo. arg_z,arg_y,arg_z) 3154 3158 __(bnslr+) … … 3163 3167 __(jump_builtin(_builtin_plus,2)) 3164 3168 _spentry(builtin_minus) 3165 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3169 __(extract_lisptag(imm0,arg_y)) 3170 __(extract_lisptag(imm1,arg_z)) 3171 __(cmpri(cr0,imm0,tag_fixnum)) 3172 __(cmpri(cr1,imm1,tag_fixnum)) 3166 3173 __(bne- cr0,1f) 3174 __(bne- cr0,1f) 3167 3175 __(subo. arg_z,arg_y,arg_z) 3168 3176 __(bnslr+) … … 3177 3185 __(jump_builtin(_builtin_minus,2)) 3178 3186 _spentry(builtin_times) 3179 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3187 __(extract_lisptag(imm0,arg_y)) 3188 __(extract_lisptag(imm1,arg_z)) 3189 __(cmpri(cr0,imm0,tag_fixnum)) 3190 __(cmpri(cr1,imm1,tag_fixnum)) 3180 3191 __(unbox_fixnum(imm2,arg_y)) 3181 __(bne 1f) 3192 __(bne cr0,1f) 3193 __(bne cr1,1f) 3182 3194 __(mullwo. imm3,arg_z,imm2) 3183 3195 __(bso 2f) /* SO set if result would overflow a fixnum */ … … 3197 3209 3198 3210 _spentry(builtin_eq) 3199 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3200 __(cmpr(cr1,arg_y,arg_z)) 3211 __(extract_lisptag(imm0,arg_y)) 3212 __(extract_lisptag(imm1,arg_z)) 3213 __(cmpri(cr0,imm0,tag_fixnum)) 3214 __(cmpri(cr1,imm1,tag_fixnum)) 3215 __(cmpr(cr2,arg_y,arg_z)) 3201 3216 __(bne- cr0,1f) 3217 __(bne- cr1,1f) 3202 3218 __(li arg_z,nil_value) 3203 __(bnelr cr 1)3219 __(bnelr cr2) 3204 3220 __(li arg_z,t_value) 3205 3221 __(blr) … … 3208 3224 3209 3225 _spentry(builtin_ne) 3210 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3211 __(cmpr(cr1,arg_y,arg_z)) 3226 __(extract_lisptag(imm0,arg_y)) 3227 __(extract_lisptag(imm1,arg_z)) 3228 __(cmpri(cr0,imm0,tag_fixnum)) 3229 __(cmpri(cr1,imm0,tag_fixnum)) 3230 __(cmpr(cr2,arg_y,arg_z)) 3212 3231 __(bne- cr0,1f) 3232 __(bne- cr1,1f) 3213 3233 __(li arg_z,nil_value) 3214 __(beqlr cr 1)3234 __(beqlr cr2) 3215 3235 __(li arg_z,t_value) 3216 3236 __(blr) … … 3219 3239 3220 3240 _spentry(builtin_gt) 3221 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3222 __(cmpr(cr1,arg_y,arg_z)) 3241 __(extract_lisptag(imm0,arg_y)) 3242 __(extract_lisptag(imm1,arg_z)) 3243 __(cmpri(cr0,imm0,tag_fixnum)) 3244 __(cmpri(cr1,imm0,tag_fixnum)) 3245 __(cmpr(cr2,arg_y,arg_z)) 3223 3246 __(bne- cr0,1f) 3247 __(bne- cr1,1f) 3224 3248 __(li arg_z,nil_value) 3225 __(bnglr cr 1)3249 __(bnglr cr2) 3226 3250 __(li arg_z,t_value) 3227 3251 __(blr) … … 3230 3254 3231 3255 _spentry(builtin_ge) 3232 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3233 __(cmpr(cr1,arg_y,arg_z)) 3256 __(extract_lisptag(imm0,arg_y)) 3257 __(extract_lisptag(imm1,arg_z)) 3258 __(cmpri(cr0,imm0,tag_fixnum)) 3259 __(cmpri(cr1,imm0,tag_fixnum)) 3260 __(cmpr(cr2,arg_y,arg_z)) 3234 3261 __(bne- cr0,1f) 3262 __(bne- cr1,1f) 3235 3263 __(li arg_z,nil_value) 3236 __(bltlr cr 1)3264 __(bltlr cr2) 3237 3265 __(li arg_z,t_value) 3238 3266 __(blr) … … 3241 3269 3242 3270 _spentry(builtin_lt) 3243 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3244 __(cmpr(cr1,arg_y,arg_z)) 3271 __(extract_lisptag(imm0,arg_y)) 3272 __(extract_lisptag(imm1,arg_z)) 3273 __(cmpri(cr0,imm0,tag_fixnum)) 3274 __(cmpri(cr1,imm0,tag_fixnum)) 3275 __(cmpr(cr2,arg_y,arg_z)) 3245 3276 __(bne- cr0,1f) 3277 __(bne- cr1,1f) 3246 3278 __(li arg_z,nil_value) 3247 __(bnllr cr 1)3279 __(bnllr cr2) 3248 3280 __(li arg_z,t_value) 3249 3281 __(blr) … … 3252 3284 3253 3285 _spentry(builtin_le) 3254 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3255 __(cmpr(cr1,arg_y,arg_z)) 3286 __(extract_lisptag(imm0,arg_y)) 3287 __(extract_lisptag(imm1,arg_z)) 3288 __(cmpri(cr0,imm0,tag_fixnum)) 3289 __(cmpri(cr1,imm0,tag_fixnum)) 3290 __(cmpr(cr2,arg_y,arg_z)) 3256 3291 __(bne- cr0,1f) 3292 __(bne- cr0,1f) 3257 3293 __(li arg_z,nil_value) 3258 __(bgtlr cr 1)3294 __(bgtlr cr2) 3259 3295 __(li arg_z,t_value) 3260 3296 __(blr) … … 3340 3376 __(_car(temp0,arg_x)) 3341 3377 __(cmpr(temp0,arg_y)) 3342 __(bne 2f)3378 __(bne cr0,2f) 3343 3379 __(mr arg_z,arg_x) 3344 3380 __(blr) … … 3364 3400 _spentry(builtin_logbitp) 3365 3401 /* Call out unless both fixnums,0 <= arg_y < 30 */ 3366 __(cmplri(cr1,arg_y,30<<fixnum_shift)) 3367 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3402 __(cmplri(cr2,arg_y,30<<fixnum_shift)) 3403 __(extract_lisptag(imm0,arg_y)) 3404 __(extract_lisptag(imm1,arg_z)) 3405 __(cmpri(cr0,imm0,tag_fixnum)) 3406 __(cmpri(cr1,imm1,tag_fixnum)) 3368 3407 __(unbox_fixnum(imm0,arg_y)) 3369 3408 __(subfic imm0,imm0,30) 3370 3409 __(rlwnm imm0,arg_z,imm0,31,31) 3371 3410 __(rlwimi imm0,imm0,4,27,27) 3372 __(bnl cr 1,1f)3411 __(bnl cr2,1f) 3373 3412 __(bne cr0,1f) 3413 __(bne cr1,1f) 3374 3414 __(addi arg_z,imm0,nil_value) 3375 3415 __(blr) … … 3378 3418 3379 3419 _spentry(builtin_logior) 3380 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3420 __(extract_lisptag(imm0,arg_y)) 3421 __(extract_lisptag(imm1,arg_z)) 3422 __(cmpri(cr0,imm0,tag_fixnum)) 3423 __(cmpri(cr1,imm1,tag_fixnum)) 3381 3424 __(bne- cr0,1f) 3425 __(bne- cr1,1f) 3382 3426 __(or arg_z,arg_y,arg_z) 3383 3427 __(blr) … … 3386 3430 3387 3431 _spentry(builtin_logand) 3388 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3432 __(extract_lisptag(imm0,arg_y)) 3433 __(extract_lisptag(imm1,arg_z)) 3434 __(cmpri(cr0,imm0,tag_fixnum)) 3435 __(cmpri(cr1,imm0,tag_fixnum)) 3389 3436 __(bne- cr0,1f) 3437 __(bne- cr1,1f) 3390 3438 __(and arg_z,arg_y,arg_z) 3391 3439 __(blr) … … 3395 3443 _spentry(builtin_ash) 3396 3444 __(cmpri(cr1,arg_z,0)) 3397 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3445 __(extract_lisptag(imm0,arg_y)) 3446 __(extract_lisptag(imm1,arg_z)) 3447 __(cmpri(cr0,imm0,tag_fixnum)) 3448 __(cmpri(cr3,imm1,tag_fixnum)) 3398 3449 __(cmpri(cr2,arg_z,-(29<<2))) /* !! 2 = fixnumshift */ 3399 3450 __(bne- 9f) 3451 __(bne- cr3,9f) 3400 3452 __(bne cr1,0f) 3401 3453 __(mr arg_z,arg_y) /* (ash n 0) => n */ … … 3466 3518 3467 3519 _spentry(builtin_logxor) 3468 __(extract_2_lisptags_(imm0,arg_y,arg_z)) 3520 __(extract_lisptag(imm0,arg_y)) 3521 __(extract_lisptag(imm1,arg_z)) 3522 __(cmpri(cr0,imm0,tag_fixnum)) 3523 __(cmpri(cr0,imm1,tag_fixnum)) 3469 3524 __(bne- cr0,1f) 3525 __(bne- cr1,1f) 3470 3526 __(xor arg_z,arg_y,arg_z) 3471 3527 __(blr)
Note:
See TracChangeset
for help on using the changeset viewer.
