Changeset 5091


Ignore:
Timestamp:
Sep 4, 2006, 8:25:28 AM (14 years ago)
Author:
gb
Message:

Conditionalize for #-target-8-bit-chars.

Location:
trunk/ccl
Files:
6 edited

Legend:

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

    r5077 r5091  
    177177(defconstant max-16-bit-ivector-subtag subtag-s16-vector)
    178178
     179#+target-8-bit-chars
    179180(define-imm-subtag simple-base-string 27)
    180181(define-imm-subtag s8-vector 26)
    181182(define-imm-subtag u8-vector 25)
    182183(defconstant min-8-bit-ivector-subtag subtag-u8-vector)
    183 (defconstant max-8-bit-ivector-subtag subtag-simple-base-string)
    184 
    185 (define-imm-subtag new-string 24)
     184(defconstant max-8-bit-ivector-subtag (logior fulltag-immheader (ash 27 ntagbits)))
     185
     186#-target-8-bit-chars
     187(define-imm-subtag simple-base-string 24)
    186188(define-imm-subtag fixnum-vector 23)
    187189(define-imm-subtag s32-vector 22)
    188190(define-imm-subtag u32-vector 21)
    189191(define-imm-subtag single-float-vector 20)
    190 (defconstant max-32-bit-ivector-subtag subtag-new-string)
     192(defconstant max-32-bit-ivector-subtag (logior fulltag-immheader (ash 24 ntagbits)))
    191193(defconstant min-cl-ivector-subtag subtag-single-float-vector)
    192194
  • trunk/ccl/compiler/PPC/PPC32/ppc32-vinsns.lisp

    r5046 r5091  
    862862                                 (tag :u32)))
    863863  :again
    864                                         ; The bottom ppc32::fixnumshift bits and the top (- 32 (+ ppc32::fixnumshift 8)) must all be zero.
     864  ;; The bottom ppc32::fixnumshift bits and the top (- 32 (+
     865  ;; ppc32::fixnumshift 8)) must all be zero.
    865866  (rlwinm. tag object 0 (- ppc32::nbits-in-word ppc32::fixnumshift) (- ppc32::least-significant-bit (+ ppc32::fixnumshift 8)))
    866867  (beq+ crf0 :got-it)
     
    868869  (b :again)
    869870  :got-it)
     871
     872(define-ppc32-vinsn require-char-code (()
     873                                       ((object :lisp))
     874                                       ((crf0 (:crf 0))
     875                                        (crf1 :crf)
     876                                        (tag :u32)))
     877  :again
     878  (clrlwi. tag object (- ppc32::nbits-in-word ppc32::nlisptagbits))
     879  (lis tag (ash #x110000 -16))
     880  (cmplwi crf1 object tag)
     881  (bne crf0 :bad)
     882  (blt+ crf1 :got-it)
     883  :bad
     884  (uuo_intcerr arch::error-object-not-mod-char-code-limit object)
     885  (b :again)
     886  :got-it)
     887
    870888
    871889(define-ppc32-vinsn box-fixnum (((dest :imm))
     
    23172335
    23182336
    2319 (define-ppc32-vinsn u8->char (((dest :lisp))
    2320                               ((src :u8))
     2337(define-ppc32-vinsn u32->char (((dest :lisp))
     2338                              ((src :u32))
    23212339                              ())
    23222340  (slwi dest src ppc32::charcode-shift)
     
    32183236  (bctr))
    32193237
    3220 (define-ppc32-vinsn %schar (((char :imm))
     3238(define-ppc32-vinsn %schar8 (((char :imm))
    32213239                            ((str :lisp)
    32223240                             (idx :imm))
    3223                             ((imm :u32)
    3224                              (cr0 (:crf 0))))
     3241                            ((imm :u32)))
    32253242  (srwi imm idx ppc32::fixnumshift)
    32263243  (addi imm imm ppc32::misc-data-offset)
     
    32293246  (addi char imm ppc32::subtag-character))
    32303247
    3231 (define-ppc32-vinsn %set-schar (()
     3248(define-ppc32-vinsn %schar32 (((char :imm))
     3249                              ((str :lisp)
     3250                               (idx :imm))
     3251                              ((imm :u32)))
     3252  (addi imm idx ppc32::misc-data-offset)
     3253  (lwzx imm str imm)
     3254  (slwi imm imm ppc32::charcode-shift)
     3255  (addi char imm ppc32::subtag-character))
     3256
     3257
     3258(define-ppc32-vinsn %set-schar8 (()
    32323259                                ((str :lisp)
    32333260                                 (idx :imm)
     
    32423269  )
    32433270
    3244 (define-ppc32-vinsn %set-scharcode (()
     3271(define-ppc32-vinsn %set-schar32 (()
     3272                                  ((str :lisp)
     3273                                   (idx :imm)
     3274                                   (char :imm))
     3275                                  ((imm :u32)
     3276                                   (imm1 :u32)
     3277                                   (cr0 (:crf 0))))
     3278  (addi imm idx ppc32::misc-data-offset)
     3279  (srwi imm1 char ppc32::charcode-shift)
     3280  (stwx imm1 str imm)
     3281  )
     3282
     3283(define-ppc32-vinsn %set-scharcode8 (()
    32453284                                    ((str :lisp)
    32463285                                     (idx :imm)
     
    32563295
    32573296
    3258 (define-ppc32-vinsn %scharcode (((code :imm))
    3259                                 ((str :lisp)
    3260                                  (idx :imm))
    3261                                 ((imm :u32)
    3262                                  (cr0 (:crf 0))))
     3297(define-ppc32-vinsn %set-scharcode32 (()
     3298                                    ((str :lisp)
     3299                                     (idx :imm)
     3300                                     (code :imm))
     3301                                    ((imm :u32)
     3302                                     (imm1 :u32)))
     3303  (addi imm idx ppc32::misc-data-offset)
     3304  (srwi imm1 code ppc32::fixnumshift)
     3305  (stwx imm1 str imm)
     3306  )
     3307
     3308(define-ppc32-vinsn %scharcode8 (((code :imm))
     3309                                 ((str :lisp)
     3310                                  (idx :imm))
     3311                                 ((imm :u32)
     3312                                  (cr0 (:crf 0))))
    32633313  (srwi imm idx ppc32::fixnumshift)
    32643314  (addi imm imm ppc32::misc-data-offset)
    32653315  (lbzx imm str imm)
     3316  (slwi code imm ppc32::fixnumshift))
     3317
     3318(define-ppc32-vinsn %scharcode32 (((code :imm))
     3319                                 ((str :lisp)
     3320                                  (idx :imm))
     3321                                 ((imm :u32)
     3322                                  (cr0 (:crf 0))))
     3323  (addi imm idx ppc32::misc-data-offset)
     3324  (lwzx imm str imm)
    32663325  (slwi code imm ppc32::fixnumshift))
    32673326
     
    33473406(define-ppc32-vinsn load-character-constant (((dest :lisp))
    33483407                                             ((code :u8const)))
    3349   (ori dest ppc::rzero (:apply logior (:apply ash code ppc32::charcode-shift) ppc32::subtag-character)))
     3408  (ori dest ppc::rzero (:apply logior (:apply ash (:apply logand #x255 code) ppc32::charcode-shift) ppc32::subtag-character))
     3409  ((:pred (:not = 0 (:apply ldb (byte 16 8) code)))
     3410   (oris dest dest (:apply ldb (byte 16 8) code))))
     3411
    33503412
    33513413(define-ppc32-vinsn %symbol->symptr (((dest :lisp))
  • trunk/ccl/compiler/PPC/PPC64/ppc64-arch.lisp

    r5077 r5091  
    217217(define-cl-array-subtag u32-vector ivector-class-32-bit 2)
    218218(define-cl-array-subtag single-float-vector ivector-class-32-bit 3)
    219 (define-cl-array-subtag new-string ivector-class-32-bit 5)
     219#-target-8-bit-chars
     220(define-cl-array-subtag xsimple-base-string ivector-class-32-bit 5)
    220221(define-cl-array-subtag s16-vector ivector-class-other-bit 1)
    221222(define-cl-array-subtag u16-vector ivector-class-other-bit 2)
     
    223224(define-cl-array-subtag s8-vector ivector-class-8-bit 1)
    224225(define-cl-array-subtag u8-vector ivector-class-8-bit 2)
     226#+target-8-bit-chars
    225227(define-cl-array-subtag simple-base-string ivector-class-8-bit 5)
    226228
  • trunk/ccl/compiler/PPC/PPC64/ppc64-vinsns.lisp

    r5046 r5091  
    940940                                 (tag :u32)))
    941941  :again
    942   ;; The bottom ppc64::fixnumshift bits and the top (- 64 (+ ppc64::fixnumshift 8)) must all be zero.
     942  ;; The bottom ppc64::fixnumshift bits and the top (- 64 (+
     943  ;; ppc64::fixnumshift 8)) must all be zero.
    943944  (rldicr. tag object (- 64 ppc64::fixnumshift) 55)
    944945  (beq+ crf0 :got-it)
     
    946947  (b :again)
    947948  :got-it)
     949
     950(define-ppc64-vinsn require-u8 (()
     951                                ((object :lisp))
     952                                ((crf0 (:crf 0))
     953                                 (tag :u32)))
     954  :again
     955  ;; The bottom ppc64::fixnumshift bits and the top (- 64 (+
     956  ;; ppc64::fixnumshift 8)) must all be zero.
     957  (rldicr. tag object (- 64 ppc64::fixnumshift) 55)
     958  (beq+ crf0 :got-it)
     959  (uuo_intcerr arch::error-object-not-unsigned-byte-8 object)
     960  (b :again)
     961  :got-it)
     962
     963(define-ppc64-vinsn require-char-code (()
     964                                       ((object :lisp))
     965                                       ((crf0 (:crf 0))
     966                                        (crf1 :crf)
     967                                        (tag :u32)))
     968  :again
     969  (clrldi. tag object (- ppc64::nbits-in-word ppc64::nlisptagbits))
     970  (lis tag (ash #x110000 -16))
     971  (cmpldi crf1 object tag)
     972  (bne crf0 :bad)
     973  (blt+ crf1 :got-it)
     974  :bad
     975  (uuo_intcerr arch::error-object-not-mod-char-code-limit object)
     976  (b :again)
     977  :got-it)
     978
    948979
    949980(define-ppc64-vinsn box-fixnum (((dest :imm))
     
    22922323  (addi dest dest ppc64::subtag-character))
    22932324
    2294 (define-ppc64-vinsn u8->char (((dest :lisp))
    2295                               ((src :u8))
    2296                               ())
     2325(define-ppc64-vinsn u32->char (((dest :lisp))
     2326                              ((src :u32))
     2327                               ())
    22972328  (sldi dest src ppc64::charcode-shift)
    22982329  (ori dest dest ppc64::subtag-character))
     
    32253256  (bctr))
    32263257
    3227 (define-ppc64-vinsn %schar (((char :imm))
    3228                             ((str :lisp)
    3229                              (idx :imm))
    3230                             ((imm :u32)
    3231                              (cr0 (:crf 0))))
     3258(define-ppc64-vinsn %schar8 (((char :imm))
     3259                             ((str :lisp)
     3260                              (idx :imm))
     3261                             ((imm :u32)
     3262                              (cr0 (:crf 0))))
    32323263  (srdi imm idx ppc64::fixnumshift)
    32333264  (addi imm imm ppc64::misc-data-offset)
     
    32363267  (ori char imm ppc64::subtag-character))
    32373268
    3238 (define-ppc64-vinsn %set-schar (()
     3269(define-ppc64-vinsn %schar32 (((char :imm))
     3270                              ((str :lisp)
     3271                               (idx :imm))
     3272                              ((imm :u32)
     3273                               (cr0 (:crf 0))))
     3274  (srdi imm idx 1)
     3275  (addi imm imm ppc64::misc-data-offset)
     3276  (lwzx imm str imm)
     3277  (rldicr imm imm ppc64::charcode-shift (- 63 ppc64::charcode-shift))
     3278  (ori char imm ppc64::subtag-character))
     3279
     3280(define-ppc64-vinsn %set-schar8 (()
    32393281                                ((str :lisp)
    32403282                                 (idx :imm)
     
    32493291  )
    32503292
    3251 (define-ppc64-vinsn %set-scharcode (()
    3252                                     ((str :lisp)
    3253                                      (idx :imm)
    3254                                      (code :imm))
    3255                                     ((imm :u64)
    3256                                      (imm1 :u64)
    3257                                      (cr0 (:crf 0))))
     3293(define-ppc64-vinsn %set-schar32 (()
     3294                                ((str :lisp)
     3295                                 (idx :imm)
     3296                                 (char :imm))
     3297                                ((imm :u64)
     3298                                 (imm1 :u64)
     3299                                 (cr0 (:crf 0))))
     3300  (srdi imm idx 1)
     3301  (addi imm imm ppc64::misc-data-offset)
     3302  (srdi imm1 char ppc64::charcode-shift)
     3303  (stwx imm1 str imm)
     3304  )
     3305
     3306(define-ppc64-vinsn %set-scharcode8 (()
     3307                                     ((str :lisp)
     3308                                      (idx :imm)
     3309                                      (code :imm))
     3310                                     ((imm :u64)
     3311                                      (imm1 :u64)
     3312                                      (cr0 (:crf 0))))
    32583313  (srdi imm idx ppc64::fixnumshift)
    32593314  (addi imm imm ppc64::misc-data-offset)
     
    32623317  )
    32633318
    3264 
    3265 (define-ppc64-vinsn %scharcode (((code :imm))
    3266                                 ((str :lisp)
    3267                                  (idx :imm))
    3268                                 ((imm :u64)
    3269                                  (cr0 (:crf 0))))
     3319(define-ppc64-vinsn %set-scharcode32 (()
     3320                                      ((str :lisp)
     3321                                       (idx :imm)
     3322                                       (code :imm))
     3323                                      ((imm :u64)
     3324                                       (imm1 :u64)
     3325                                       (cr0 (:crf 0))))
     3326  (srdi imm idx 1)
     3327  (addi imm imm ppc64::misc-data-offset)
     3328  (srdi imm1 code ppc64::fixnumshift)
     3329  (stwx imm1 str imm)
     3330  )
     3331
     3332
     3333(define-ppc64-vinsn %scharcode8 (((code :imm))
     3334                                 ((str :lisp)
     3335                                  (idx :imm))
     3336                                 ((imm :u64)
     3337                                  (cr0 (:crf 0))))
    32703338  (srdi imm idx ppc64::fixnumshift)
    32713339  (addi imm imm ppc64::misc-data-offset)
    32723340  (lbzx imm str imm)
     3341  (sldi code imm ppc64::fixnumshift))
     3342
     3343(define-ppc64-vinsn %scharcode32 (((code :imm))
     3344                                  ((str :lisp)
     3345                                   (idx :imm))
     3346                                  ((imm :u64)
     3347                                   (cr0 (:crf 0))))
     3348  (srdi imm idx 1)
     3349  (addi imm imm ppc64::misc-data-offset)
     3350  (lwzx imm str imm)
    32733351  (sldi code imm ppc64::fixnumshift))
    32743352
     
    33553433                                             ((code :u8const))
    33563434                                             ())
    3357   (ori dest ppc::rzero (:apply logior (:apply ash code 8) ppc64::subtag-character)))
     3435  (ori dest ppc::rzero (:apply logior (:apply ash code 8) ppc64::subtag-character))
     3436  ((:pred (:not = 0 (:apply ldb (byte 16 8) code)))
     3437   (oris dest dest (:apply ldb (byte 16 8) code))))
    33583438
    33593439
  • trunk/ccl/level-0/l0-array.lisp

    r5085 r5091  
    6060     (signed-byte 32)
    6161     fixnum
    62      character
     62     #-target-8-bit-chars character #+target-8-bit-chars unused
    6363     (unsigned-byte 8)
    6464     (signed-byte 8)
    65      character
     65     #+target-8-bit-chars character #-target-8-bit-chars unused
    6666     (unsigned-byte 16)
    6767     (signed-byte 16)
     
    9393     #+target-8-bit-chars character #-target-8-bit-chars unused
    9494     unused
    95      unused
     95     #-target-8-bit-chars character #+target-8-bit-chars unused
    9696     unused
    9797     unused
  • trunk/ccl/level-0/l0-pred.lisp

    r5085 r5091  
    449449    simple-unsigned-long-vector         ; 21
    450450    simple-signed-long-vector           ; 22
    451     simple-fixnum-vector                ; 24
    452     new-simple-string                   ; 24
     451    simple-fixnum-vector                ; 23
     452    #+target-8-bit-chars bogus
     453    #-target-8-bit-chars simple-base-string ; 24
    453454    simple-unsigned-byte-vector         ; 25
    454455    simple-signed-byte-vector           ; 26
    455     simple-base-string                  ; 27
     456    #+target-8-bit-chars simple-base-string ; 27
     457    #-target-8-bit-chars bogus
    456458    simple-unsigned-word-vector         ; 28
    457459    simple-signed-word-vector           ; 29
     
    563565    #+target-8-bit-chars simple-base-string #-target-8-bit-chars bogus
    564566    bogus
    565     bogus
     567    #-target-8-bit-chars simple-base-string #+target-8-bit-chars bogus
    566568    bogus
    567569    bogus
Note: See TracChangeset for help on using the changeset viewer.