Changeset 5091
- Timestamp:
- Sep 4, 2006, 1:25:28 AM (18 years ago)
- Location:
- trunk/ccl
- Files:
-
- 6 edited
-
compiler/PPC/PPC32/ppc32-arch.lisp (modified) (1 diff)
-
compiler/PPC/PPC32/ppc32-vinsns.lisp (modified) (8 diffs)
-
compiler/PPC/PPC64/ppc64-arch.lisp (modified) (2 diffs)
-
compiler/PPC/PPC64/ppc64-vinsns.lisp (modified) (8 diffs)
-
level-0/l0-array.lisp (modified) (2 diffs)
-
level-0/l0-pred.lisp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/compiler/PPC/PPC32/ppc32-arch.lisp
r5077 r5091 177 177 (defconstant max-16-bit-ivector-subtag subtag-s16-vector) 178 178 179 #+target-8-bit-chars 179 180 (define-imm-subtag simple-base-string 27) 180 181 (define-imm-subtag s8-vector 26) 181 182 (define-imm-subtag u8-vector 25) 182 183 (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) 186 188 (define-imm-subtag fixnum-vector 23) 187 189 (define-imm-subtag s32-vector 22) 188 190 (define-imm-subtag u32-vector 21) 189 191 (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))) 191 193 (defconstant min-cl-ivector-subtag subtag-single-float-vector) 192 194 -
trunk/ccl/compiler/PPC/PPC32/ppc32-vinsns.lisp
r5046 r5091 862 862 (tag :u32))) 863 863 :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. 865 866 (rlwinm. tag object 0 (- ppc32::nbits-in-word ppc32::fixnumshift) (- ppc32::least-significant-bit (+ ppc32::fixnumshift 8))) 866 867 (beq+ crf0 :got-it) … … 868 869 (b :again) 869 870 :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 870 888 871 889 (define-ppc32-vinsn box-fixnum (((dest :imm)) … … 2317 2335 2318 2336 2319 (define-ppc32-vinsn u 8->char (((dest :lisp))2320 ((src :u 8))2337 (define-ppc32-vinsn u32->char (((dest :lisp)) 2338 ((src :u32)) 2321 2339 ()) 2322 2340 (slwi dest src ppc32::charcode-shift) … … 3218 3236 (bctr)) 3219 3237 3220 (define-ppc32-vinsn %schar (((char :imm))3238 (define-ppc32-vinsn %schar8 (((char :imm)) 3221 3239 ((str :lisp) 3222 3240 (idx :imm)) 3223 ((imm :u32) 3224 (cr0 (:crf 0)))) 3241 ((imm :u32))) 3225 3242 (srwi imm idx ppc32::fixnumshift) 3226 3243 (addi imm imm ppc32::misc-data-offset) … … 3229 3246 (addi char imm ppc32::subtag-character)) 3230 3247 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 (() 3232 3259 ((str :lisp) 3233 3260 (idx :imm) … … 3242 3269 ) 3243 3270 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 (() 3245 3284 ((str :lisp) 3246 3285 (idx :imm) … … 3256 3295 3257 3296 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)))) 3263 3313 (srwi imm idx ppc32::fixnumshift) 3264 3314 (addi imm imm ppc32::misc-data-offset) 3265 3315 (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) 3266 3325 (slwi code imm ppc32::fixnumshift)) 3267 3326 … … 3347 3406 (define-ppc32-vinsn load-character-constant (((dest :lisp)) 3348 3407 ((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 3350 3412 3351 3413 (define-ppc32-vinsn %symbol->symptr (((dest :lisp)) -
trunk/ccl/compiler/PPC/PPC64/ppc64-arch.lisp
r5077 r5091 217 217 (define-cl-array-subtag u32-vector ivector-class-32-bit 2) 218 218 (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) 220 221 (define-cl-array-subtag s16-vector ivector-class-other-bit 1) 221 222 (define-cl-array-subtag u16-vector ivector-class-other-bit 2) … … 223 224 (define-cl-array-subtag s8-vector ivector-class-8-bit 1) 224 225 (define-cl-array-subtag u8-vector ivector-class-8-bit 2) 226 #+target-8-bit-chars 225 227 (define-cl-array-subtag simple-base-string ivector-class-8-bit 5) 226 228 -
trunk/ccl/compiler/PPC/PPC64/ppc64-vinsns.lisp
r5046 r5091 940 940 (tag :u32))) 941 941 :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. 943 944 (rldicr. tag object (- 64 ppc64::fixnumshift) 55) 944 945 (beq+ crf0 :got-it) … … 946 947 (b :again) 947 948 :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 948 979 949 980 (define-ppc64-vinsn box-fixnum (((dest :imm)) … … 2292 2323 (addi dest dest ppc64::subtag-character)) 2293 2324 2294 (define-ppc64-vinsn u 8->char (((dest :lisp))2295 ((src :u 8))2296 ())2325 (define-ppc64-vinsn u32->char (((dest :lisp)) 2326 ((src :u32)) 2327 ()) 2297 2328 (sldi dest src ppc64::charcode-shift) 2298 2329 (ori dest dest ppc64::subtag-character)) … … 3225 3256 (bctr)) 3226 3257 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)))) 3232 3263 (srdi imm idx ppc64::fixnumshift) 3233 3264 (addi imm imm ppc64::misc-data-offset) … … 3236 3267 (ori char imm ppc64::subtag-character)) 3237 3268 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 (() 3239 3281 ((str :lisp) 3240 3282 (idx :imm) … … 3249 3291 ) 3250 3292 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)))) 3258 3313 (srdi imm idx ppc64::fixnumshift) 3259 3314 (addi imm imm ppc64::misc-data-offset) … … 3262 3317 ) 3263 3318 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)))) 3270 3338 (srdi imm idx ppc64::fixnumshift) 3271 3339 (addi imm imm ppc64::misc-data-offset) 3272 3340 (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) 3273 3351 (sldi code imm ppc64::fixnumshift)) 3274 3352 … … 3355 3433 ((code :u8const)) 3356 3434 ()) 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)))) 3358 3438 3359 3439 -
trunk/ccl/level-0/l0-array.lisp
r5085 r5091 60 60 (signed-byte 32) 61 61 fixnum 62 character62 #-target-8-bit-chars character #+target-8-bit-chars unused 63 63 (unsigned-byte 8) 64 64 (signed-byte 8) 65 character65 #+target-8-bit-chars character #-target-8-bit-chars unused 66 66 (unsigned-byte 16) 67 67 (signed-byte 16) … … 93 93 #+target-8-bit-chars character #-target-8-bit-chars unused 94 94 unused 95 unused95 #-target-8-bit-chars character #+target-8-bit-chars unused 96 96 unused 97 97 unused -
trunk/ccl/level-0/l0-pred.lisp
r5085 r5091 449 449 simple-unsigned-long-vector ; 21 450 450 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 453 454 simple-unsigned-byte-vector ; 25 454 455 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 456 458 simple-unsigned-word-vector ; 28 457 459 simple-signed-word-vector ; 29 … … 563 565 #+target-8-bit-chars simple-base-string #-target-8-bit-chars bogus 564 566 bogus 565 bogus567 #-target-8-bit-chars simple-base-string #+target-8-bit-chars bogus 566 568 bogus 567 569 bogus
Note:
See TracChangeset
for help on using the changeset viewer.
