{ { +vector+ +scalar+ -> +vector+ } A-vn->v-op }
{ { +vector+ +literal+ -> +vector+ } A-vn->v-op }
{ { +vector+ +vector+ -> +scalar+ } A-vv->n-op }
+ { { +vector+ +vector+ -> +boolean+ } A-vv->n-op }
{ { +vector+ -> +vector+ } A-v->v-op }
{ { +vector+ -> +scalar+ } A-v->n-op }
+ { { +vector+ -> +boolean+ } A-v->n-op }
{ { +vector+ -> +nonnegative+ } A-v->n-op }
} >>schema-wrappers
(define-simd-128)
locals compiler.tree.propagation.info ;
IN: math.vectors.specialization
-SYMBOLS: -> +vector+ +scalar+ +nonnegative+ +literal+ ;
+SYMBOLS: -> +vector+ +scalar+ +boolean+ +nonnegative+ +literal+ ;
: signature-for-schema ( array-type elt-type schema -- signature )
[
{
{ +vector+ [ drop ] }
{ +scalar+ [ nip ] }
+ { +boolean+ [ 2drop boolean ] }
{ +nonnegative+ [ nip ] }
{ +literal+ [ 2drop f ] }
} case
{
{ +vector+ [ drop <class-info> ] }
{ +scalar+ [ nip <class-info> ] }
+ { +boolean+ [ 2drop boolean <class-info> ] }
{
+nonnegative+
[
{ v> { +vector+ +vector+ -> +vector+ } }
{ v>= { +vector+ +vector+ -> +vector+ } }
{ vunordered? { +vector+ +vector+ -> +vector+ } }
- { vany? { +vector+ -> +scalar+ } }
- { vall? { +vector+ -> +scalar+ } }
- { vnone? { +vector+ -> +scalar+ } }
+ { vany? { +vector+ -> +boolean+ } }
+ { vall? { +vector+ -> +boolean+ } }
+ { vnone? { +vector+ -> +boolean+ } }
}
PREDICATE: vector-word < word vector-words key? ;