Changeset 11452


Ignore:
Timestamp:
Dec 2, 2008, 7:02:11 AM (11 years ago)
Author:
rme
Message:

In general aref/aset of 1/2/3-d vectors, do a typed operation if the
array arg is declared to be simple and the dimensions are * (as well
as when the number of dimensions matches).

cf. r11286, r11287, and r11451, which are the same changes for the x86
backend.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/PPC/ppc2.lisp

    r11393 r11452  
    66106610         (atype (if vtype (specifier-type vtype)))
    66116611         (keyword (if (and atype
     6612                           (let* ((dims (array-ctype-dimensions atype)))
     6613                             (or (eq dims '*)
     6614                                 (and (not (atom dims))
     6615                                      (= (length dims) 1))))
    66126616                           (not (array-ctype-complexp atype)))
    66136617                    (funcall
     
    66236627         (atype (if vtype (specifier-type vtype)))
    66246628         (keyword (if (and atype
     6629                           (let* ((dims (array-ctype-dimensions atype)))
     6630                             (or (eq dims '*)
     6631                                 (and (not (atom dims))
     6632                                      (= (length dims) 1))))
    66256633                           (not (array-ctype-complexp atype)))
    66266634                    (funcall
     
    76197627         (ctype (if atype0 (specifier-type atype0)))
    76207628         (atype (if (array-ctype-p ctype) ctype))
    7621          (keyword (and atype
    7622                        (let* ((dims (array-ctype-dimensions atype)))
    7623                          (and (typep dims 'list)
    7624                               (= 2 (length dims))))
     7629         (dims (and atype (array-ctype-dimensions atype)))
     7630         (keyword (and atype
     7631                       (or (eq dims '*)
     7632                           (and (typep dims 'list)
     7633                                (= 2 (length dims))))
    76257634                       (not (array-ctype-complexp atype))
    76267635                       (funcall
     
    76297638                        atype))))
    76307639    (cond (keyword
    7631            (let* ((dims (array-ctype-dimensions atype))
    7632                   (dim0 (car dims))
     7640           (when (eq dims '*)
     7641             (setq dims nil))
     7642           (let* ((dim0 (car dims))
    76337643                  (dim1 (cadr dims)))
    76347644             (ppc2-aref2 seg
     
    76707680         (ctype (if atype0 (specifier-type atype0)))
    76717681         (atype (if (array-ctype-p ctype) ctype))
     7682         (dims (and atype (array-ctype-dimensions atype)))
    76727683         (keyword (and atype
    7673                        (let* ((dims (array-ctype-dimensions atype)))
    7674                          (and (typep dims 'list)
    7675                            (= 3 (length dims))))
     7684                       (or (eq dims '*)
     7685                           (and (typep dims 'list)
     7686                                (= 3 (length dims))))
    76767687                       (not (array-ctype-complexp atype))
    76777688                       (funcall
     
    76807691                        atype))))
    76817692    (cond (keyword
    7682            (let* ((dims (array-ctype-dimensions atype))
    7683                   (dim0 (car dims))
     7693           (when (eq dims '*)
     7694             (setq dims nil))
     7695           (let* ((dim0 (car dims))
    76847696                  (dim1 (cadr dims))
    76857697                  (dim2 (caddr dims)))
     
    77197731         (ctype (if atype0 (specifier-type atype0)))
    77207732         (atype (if (array-ctype-p ctype) ctype))
     7733         (dims (and atype (array-ctype-dimensions atype)))
    77217734         (keyword (and atype
    7722                        (let* ((dims (array-ctype-dimensions atype)))
    7723                          (and (typep dims 'list)
    7724                            (= 2 (length dims))))
     7735                       (or (eq dims '*)
     7736                           (and (typep dims 'list)
     7737                                (= 2 (length dims))))
    77257738                       (not (array-ctype-complexp atype))
    77267739                       (funcall
     
    77297742                        atype))))
    77307743    (cond (keyword
    7731            (let* ((dims (array-ctype-dimensions atype))
    7732                   (dim0 (car dims))
     7744           (when (eq dims '*)
     7745             (setq dims nil))
     7746           (let* ((dim0 (car dims))
    77337747                  (dim1 (cadr dims)))
    77347748             (ppc2-aset2 seg
     
    77577771         (ctype (if atype0 (specifier-type atype0)))
    77587772         (atype (if (array-ctype-p ctype) ctype))
     7773         (dims (and atype (array-ctype-dimensions atype)))
    77597774         (keyword (and atype
    7760                        (let* ((dims (array-ctype-dimensions atype)))
    7761                          (unless (atom dims)
    7762                            (= 3 (length dims))))
     7775                       (or (eq dims '*)
     7776                           (unless (atom dims)
     7777                             (= 3 (length dims))))
    77637778                       (not (array-ctype-complexp atype))
    77647779                       (funcall
     
    77677782                        atype))))
    77687783    (cond (keyword
    7769            (let* ((dims (array-ctype-dimensions atype))
    7770                   (dim0 (car dims))
     7784           (when (eq dims '*)
     7785             (setq dims nil))
     7786           (let* ((dim0 (car dims))
    77717787                  (dim1 (cadr dims))
    77727788                  (dim2 (caddr dims)))
Note: See TracChangeset for help on using the changeset viewer.