     '[ nip _ swap supported-simd-op? ] assoc-filter
     '[ drop _ key? ] assoc-filter ;
 
-ERROR: bad-schema schema ;
-
-: low-level-ops ( simd-ops alist -- alist' )
-    '[
-        1quotation
-        over word-schema _ ?at [ bad-schema ] unless
-        [ ] 2sequence
-    ] assoc-map ;
+ERROR: bad-schema op schema ;
+
+:: op-wrapper ( op specials schemas -- wrapper )
+    op {
+        [ specials at ]
+        [ word-schema schemas at ]
+        [ dup word-schema bad-schema ]
+    } 1|| ;
+
+: low-level-ops ( simd-ops specials schemas -- alist )
+    '[ 1quotation over _ _ op-wrapper [ ] 2sequence ] assoc-map ;
 
 :: high-level-ops ( ctor elt-class -- assoc )
     ! Some SIMD operations are defined in terms of others.

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

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 combinators.short-circuit sets
layouts ;
QUALIFIED-WITH: alien.c-types c
IN: math.vectors.simd.functor

