Changeset 10153


Ignore:
Timestamp:
Jul 19, 2008, 10:16:47 PM (11 years ago)
Author:
rme
Message:

*IMMHEADER-ARRAY-TYPES* and SUBTAG-BYTES for x8632.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/level-0/l0-array.lisp

    r9927 r10153  
    9393     unused))
    9494
     95#+x8632-target
     96(defconstant x8632::*immheader-array-types*
     97  '#(short-float
     98     (unsigned-byte 32)
     99     (signed-byte 32)
     100     fixnum
     101     character
     102     (unsigned-byte 8)
     103     (signed-byte 8)
     104     unused
     105     (unsigned-byte 16)
     106     (signed-byte 16)
     107     double-float
     108     bit))
     109
    95110#+x8664-target
    96111(progn
     
    172187             #+ppc64-target
    173188             (ash (the fixnum (logand subtag #x7f)) (- ppc64::nlowtagbits)))
     189      #+x8632-target
     190      (svref x8632::*immheader-array-types*
     191             (ash (the fixnum (- subtag x8632::min-cl-ivector-subtag))
     192                  (- x8632::ntagbits)))
    174193      #+x8664-target
    175194      (let* ((class (logand subtag x8664::fulltagmask))
     
    703722    (ash (the fixnum (+ 7 total-bits)) -3)))
    704723
     724#+x8632-target
     725(defun subtag-bytes (subtag element-count)
     726  (declare (fixnum subtag element-count))
     727  (unless (= #.x8632::fulltag-immheader (logand subtag #.x8632::fulltagmask))
     728    (error "Not an ivector subtag: ~s" subtag))
     729  (let* ((element-bit-shift
     730          (if (<= subtag x8632::max-32-bit-ivector-subtag)
     731            5
     732            (if (<= subtag x8632::max-8-bit-ivector-subtag)
     733              3
     734              (if (<= subtag x8632::max-16-bit-ivector-subtag)
     735                4
     736                (if (= subtag x8632::subtag-double-float-vector)
     737                  6
     738                  0)))))
     739         (total-bits (ash element-count element-bit-shift)))
     740    (ash (+ 7 total-bits) -3)))
     741
    705742#+x8664-target
    706743(defun subtag-bytes (subtag element-count)
Note: See TracChangeset for help on using the changeset viewer.