Changeset 5232


Ignore:
Timestamp:
Sep 20, 2006, 3:25:04 AM (18 years ago)
Author:
Gary Byers
Message:

slight improvements in signed-byte boxing, typechecking.

Location:
trunk/ccl/compiler/PPC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/compiler/PPC/PPC32/ppc32-vinsns.lisp

    r5221 r5232  
    859859(define-ppc32-vinsn require-s8 (()
    860860                                ((object :lisp))
    861                                 ((crf0 (:crf 0 ))
    862                                  (crf1 :crf)
     861                                ((crf :crf)
    863862                                 (tag :u32)))
    864863  :again
    865   (clrlwi. tag object (- ppc32::nbits-in-word ppc32::nlisptagbits))
    866864  (slwi tag object (- ppc32::nbits-in-word (+ 8 ppc32::fixnumshift)))
    867   (srawi tag tag (- ppc32::nbits-in-word (+ 8 ppc32::fixnumshift)))
    868   (cmpw crf1 tag object)
    869   (bne- crf1 :bad)
    870   (beq+ crf0 :got-it)
     865  (srawi tag tag (- ppc32::nbits-in-word 8 ))
     866  (slwi tag tag ppc32::fixnumshift)
     867  (cmpw crf tag object)
     868  (beq+ crf :got-it)
    871869  :bad
    872870  (uuo_intcerr arch::error-object-not-signed-byte-8 object)
     
    889887(define-ppc32-vinsn require-s16 (()
    890888                                ((object :lisp))
    891                                 ((crf0 (:crf 0 ))
    892                                  (crf1 :crf)
     889                                ((crf :crf)
    893890                                 (tag :u32)))
    894891  :again
    895   (clrlwi. tag object (- ppc32::nbits-in-word ppc32::nlisptagbits))
    896892  (slwi tag object (- ppc32::nbits-in-word (+ 16 ppc32::fixnumshift)))
    897   (srawi tag tag (- ppc32::nbits-in-word (+ 16 ppc32::fixnumshift)))
    898   (cmpw crf1 tag object)
    899   (bne- crf1 :bad)
    900   (beq+ crf0 :got-it)
     893  (srawi tag tag (- ppc32::nbits-in-word 16))
     894  (slwi tag tag ppc32::fixnumshift)
     895  (cmpw crf tag object)
     896  (beq+ crf :got-it)
    901897  :bad
    902898  (uuo_intcerr arch::error-object-not-signed-byte-16 object)
     
    11491145                               ((src :lisp))
    11501146                               ((crf :crf)))
    1151   (slwi dest src (- 16 ppc32::fixnumshift))
    1152   (srawi dest dest (- 16 ppc32::fixnumshift))
     1147  (slwi dest src (- ppc32::nbits-in-word (+ 16 ppc32::fixnumshift)))
     1148  (srawi dest dest (- ppc32::nbits-in-word 16))
     1149  (slwi dest dest ppc32::fixnumshift)
    11531150  (cmpw crf dest src)
    1154   (clrlwi dest src (- ppc32::nbits-in-word ppc32::nlisptagbits))
    1155   (bne- crf :bad)
    1156   (cmpwi crf dest ppc32::tag-fixnum)
    11571151  (srawi dest src ppc32::fixnumshift)
    11581152  (beq+ crf :got-it)
     
    11831177                              ((crf :crf)))
    11841178  (slwi dest src (- ppc32::nbits-in-word (+ 8 ppc32::fixnumshift)))
    1185   (srawi dest dest (- ppc32::nbits-in-word (+ 8 ppc32::fixnumshift)))
     1179  (srawi dest dest (- ppc32::nbits-in-word 8))
     1180  (slwi dest src ppc32::fixnumshift)
    11861181  (cmpw crf dest src)
    1187   (clrlwi dest src (- ppc32::nbits-in-word ppc32::nlisptagbits))
    1188   (bne- crf :bad)
    1189   (cmpwi crf dest ppc32::tag-fixnum)
    11901182  (srawi dest src ppc32::fixnumshift)
    11911183  (beq+ crf :got-it)
  • trunk/ccl/compiler/PPC/PPC64/ppc64-vinsns.lisp

    r5221 r5232  
    937937(define-ppc64-vinsn require-s8 (()
    938938                                ((object :lisp))
    939                                 ((crf0 (:crf 0))
    940                                  (crf1 :crf)
     939                                ((crf :crf)
    941940                                 (tag :s64)))
    942941  :again
    943   (clrldi. tag object (- ppc64::nbits-in-word ppc64::nlisptagbits))
    944942  (sldi tag object (- ppc64::nbits-in-word (+ 8 ppc64::fixnumshift)))
    945   (sradi tag tag (- ppc64::nbits-in-word (+ 8 ppc64::fixnumshift)))
    946   (cmpd crf1 tag object)
    947   (bne- crf1 :bad)
    948   (beq+ crf0 :got-it)
     943  (sradi tag tag (- ppc64::nbits-in-word 8))
     944  (sldi tag tag ppc64::fixnumshift)
     945  (cmpd crf tag object)
     946  (beq+ crf :got-it)
    949947  :bad
    950948  (uuo_intcerr arch::error-object-not-signed-byte-8 object)
     
    967965(define-ppc64-vinsn require-s16 (()
    968966                                 ((object :lisp))
    969                                  ((crf0 (:crf 0))
    970                                   (crf1 :crf)
     967                                 ((crf :crf)
    971968                                  (tag :s64)))
    972969  :again
    973970  (sldi tag object (- ppc64::nbits-in-word (+ 16 ppc64::fixnumshift)))
    974   (sradi tag tag (- ppc64::nbits-in-word (+ 16 ppc64::fixnumshift)))
    975   (cmpd crf1 tag object)
    976   (clrldi. tag object (- ppc64::nbits-in-word ppc64::nlisptagbits))
    977   (bne- crf1 :bad)
    978   (beq+ crf0 :got-it)
     971  (sradi tag tag (- ppc64::nbits-in-word 16))
     972  (sldi tag tag ppc64::fixnumshift)
     973  (cmpd crf tag object)
     974  (beq+ crf :got-it)
    979975  :bad
    980976  (uuo_intcerr arch::error-object-not-signed-byte-16 object)
     
    997993(define-ppc64-vinsn require-s32 (()
    998994                                 ((object :lisp))
    999                                  ((crf0 (:crf 0))
    1000                                   (crf1 :crf)
     995                                 ((crf :crf)
    1001996                                  (tag :s64)))
    1002997  :again
    1003998  (sldi tag object (- ppc64::nbits-in-word (+ 32 ppc64::fixnumshift)))
    1004   (sradi tag tag (- ppc64::nbits-in-word (+ 32 ppc64::fixnumshift)))
    1005   (cmpd crf1 tag object)
    1006   (clrldi. tag object (- ppc64::nbits-in-word ppc64::nlisptagbits))
    1007   (bne- crf1 :bad)
    1008   (beq+ crf0 :got-it)
     999  (sradi tag tag (- ppc64::nbits-in-word 32))
     1000  (sldi tag tag ppc64::fixnumshift)
     1001  (cmpd crf tag object)
     1002  (beq+ crf :got-it)
    10091003  :bad
    10101004  (uuo_intcerr arch::error-object-not-signed-byte-32 object)
     
    11851179(define-ppc64-vinsn unbox-s32 (((dest :s32))
    11861180                               ((src :lisp))
    1187                                ((crfx (:crf 0))
    1188                                 (crfy :crf)))
    1189   (clrldi. dest src (- ppc64::nbits-in-word ppc64::nlisptagbits))
     1181                               ((crf :crf)))
    11901182  (sldi dest src (- ppc64::nbits-in-word (+ 32 ppc64::fixnumshift)))
    1191   (sradi dest dest (- ppc64::nbits-in-word (+ 32 ppc64::fixnumshift)))
    1192   (cmpd crfy dest src)
    1193   (bne crfx :bad)
     1183  (sradi dest dest (- ppc64::nbits-in-word 32))
     1184  (sldi dest dest ppc64::fixnumshift)
     1185  (cmpd crf dest src)
    11941186  (sradi dest src ppc64::fixnumshift)
    1195   (beq crfy :got-it)
     1187  (beq crf :got-it)
    11961188  :bad
    11971189  (uuo_interr arch::error-object-not-signed-byte-32 src)
     
    12141206                               ((crf :crf)))
    12151207  (sldi dest src (- ppc64::nbits-in-word (+ 16 ppc64::fixnumshift)))
    1216   (sradi dest dest (- ppc64::nbits-in-word (+ 16 ppc64::fixnumshift)))
     1208  (sradi dest dest (- ppc64::nbits-in-word 16))
     1209  (sldi dest dest ppc64::fixnumshift)
    12171210  (cmpd crf dest src)
    1218   (clrldi dest src (- ppc64::nbits-in-word ppc64::nlisptagbits))
    1219   (bne- crf :bad)
    1220   (cmpdi crf dest ppc64::tag-fixnum)
    12211211  (sradi dest src ppc64::fixnumshift)
    12221212  (beq+ crf :got-it)
     
    12481238                              ((crf :crf)))
    12491239  (sldi dest src (- ppc64::nbits-in-word (+ 8 ppc64::fixnumshift)))
    1250   (sradi dest dest (- ppc64::nbits-in-word (+ 8 ppc64::fixnumshift)))
     1240  (sradi dest dest (- ppc64::nbits-in-word 8))
     1241  (sldi dest dest ppc64::fixnumshift)
    12511242  (cmpd crf dest src)
    1252   (clrldi dest src (- ppc64::nbits-in-word ppc64::nlisptagbits))
    1253   (bne- crf :bad)
    1254   (cmpdi crf dest ppc64::tag-fixnum)
    12551243  (sradi dest src ppc64::fixnumshift)
    12561244  (beq+ crf :got-it)
Note: See TracChangeset for help on using the changeset viewer.