 A-rep        [ A/2 name>> "-rep" append "cpu.architecture" lookup ]
 A-vv->v-op   DEFINES-PRIVATE ${A}-vv->v-op
 A-vn->v-op   DEFINES-PRIVATE ${A}-vn->v-op
-A-vv->n-op   DEFINES-PRIVATE ${A}-vv->n-op
 A-v->v-op    DEFINES-PRIVATE ${A}-v->v-op
-A-v->n-op    DEFINES-PRIVATE ${A}-v->n-op
+A-v.-op      DEFINES-PRIVATE ${A}-v.-op
+(A-v->n-op)  DEFINES-PRIVATE (${A}-v->v-op)
+A-sum-op     DEFINES-PRIVATE ${A}-sum-op
+A-vany-op    DEFINES-PRIVATE ${A}-vany-op
+A-vall-op    DEFINES-PRIVATE ${A}-vall-op
 
 WHERE
 

math.vectors math.vectors.private math.vectors.simd.intrinsics
math.vectors.specialization parser prettyprint.custom sequences
sequences.private strings words definitions macros cpu.architecture
namespaces arrays quotations combinators sets layouts ;
QUALIFIED-WITH: alien.c-types c
IN: math.vectors.simd.functor


    ! in the general case.
    elt-class float = [ { distance [ v- norm ] } suffix ] when ;

TUPLE: simd class elt-class ops special-wrappers schema-wrappers ctor rep ;

: define-simd ( simd -- )
    dup rep>> rep-component-type c:c-type-boxed-class >>elt-class
    {
        [ class>> ]
        [ elt-class>> ]
        [ [ ops>> ] [ special-wrappers>> ] [ schema-wrappers>> ] tri low-level-ops ]
        [ rep>> supported-simd-ops ]
        [ [ ctor>> ] [ elt-class>> ] bi high-level-ops assoc-union ]
    } cleave
