Changeset 5498


Ignore:
Timestamp:
Nov 6, 2006, 9:00:39 PM (18 years ago)
Author:
Gary Byers
Message:

New %ASET2 handling.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/compiler/nx1.lisp

    r5447 r5498  
    858858           
    859859(defnx1 nx1-%aset2 ((%aset2)) (&whole whole &environment env arr i j new)
    860   (let* ((subtype
    861           (cond ((nx-form-typep arr '(simple-array double-float (* *)) env)
    862                  :double-float-vector)
    863                 ((nx-form-typep arr '(simple-array single-float (* *)) env)
    864                  :single-float-vector))))
    865     (if subtype
    866        (let* ((ctype (specifier-type (nx-form-type arr env)))
    867               (dims (array-ctype-dimensions ctype))
    868               (dim0 (car dims))
    869               (dim1 (cadr dims)))
    870         (make-acode (%nx1-operator aset2)
    871                     (nx1-form subtype)
    872                     (nx1-form arr)
    873                     (nx1-form i)
    874                     (nx1-form j)
    875                     (nx1-form new)
    876                     (nx1-form dim0)
    877                     (nx1-form dim1)))
    878         (nx1-treat-as-call whole))))
     860  (let* ((arch (backend-target-arch *target-backend*))
     861         (ctype (specifier-type (nx-form-type arr env)))
     862         (atype (if (csubtypep ctype (specifier-type '(array * (* *)))) ctype))
     863         (simple-atype (if (and atype
     864                                (csubtypep atype (specifier-type '(simple-array * (* *)))))
     865                         atype))
     866         (type-keyword (if atype
     867                         (funcall
     868                          (arch::target-array-type-name-from-ctype-function arch)
     869                          atype))))
     870
     871    (if (and type-keyword simple-atype)
     872      (let* ((dims (array-ctype-dimensions atype))
     873             (dim0 (car dims))
     874             (dim1 (cadr dims)))
     875        (make-acode (%nx1-operator simple-typed-aset2)
     876                    (nx1-form type-keyword)
     877                    (nx1-form arr)
     878                    (nx1-form i)
     879                    (nx1-form j)
     880                    (nx1-form new)
     881                    (nx1-form (if (typep dim0 'fixnum) dim0))
     882                    (nx1-form (if (typep dim1 'fixnum) dim1))))
     883            (make-acode (%nx1-operator general-aset2)
     884                  (nx1-form arr)
     885                  (nx1-form i)
     886                  (nx1-form j)
     887                  (nx1-form new)))))
    879888
    880889(defnx1 nx1-prog1 (prog1 multiple-value-prog1) (save &body args
Note: See TracChangeset for help on using the changeset viewer.