fix type propagation information put on non-SIMD specializations of vany?, vall?, vnone?
parent
7f001ee312
commit
421b61f0e8
|
@ -283,8 +283,10 @@ simd new
|
||||||
{ { +vector+ +scalar+ -> +vector+ } A-vn->v-op }
|
{ { +vector+ +scalar+ -> +vector+ } A-vn->v-op }
|
||||||
{ { +vector+ +literal+ -> +vector+ } A-vn->v-op }
|
{ { +vector+ +literal+ -> +vector+ } A-vn->v-op }
|
||||||
{ { +vector+ +vector+ -> +scalar+ } A-vv->n-op }
|
{ { +vector+ +vector+ -> +scalar+ } A-vv->n-op }
|
||||||
|
{ { +vector+ +vector+ -> +boolean+ } A-vv->n-op }
|
||||||
{ { +vector+ -> +vector+ } A-v->v-op }
|
{ { +vector+ -> +vector+ } A-v->v-op }
|
||||||
{ { +vector+ -> +scalar+ } A-v->n-op }
|
{ { +vector+ -> +scalar+ } A-v->n-op }
|
||||||
|
{ { +vector+ -> +boolean+ } A-v->n-op }
|
||||||
{ { +vector+ -> +nonnegative+ } A-v->n-op }
|
{ { +vector+ -> +nonnegative+ } A-v->n-op }
|
||||||
} >>schema-wrappers
|
} >>schema-wrappers
|
||||||
(define-simd-128)
|
(define-simd-128)
|
||||||
|
|
|
@ -7,13 +7,14 @@ namespaces assocs fry splitting classes.algebra generalizations
|
||||||
locals compiler.tree.propagation.info ;
|
locals compiler.tree.propagation.info ;
|
||||||
IN: math.vectors.specialization
|
IN: math.vectors.specialization
|
||||||
|
|
||||||
SYMBOLS: -> +vector+ +scalar+ +nonnegative+ +literal+ ;
|
SYMBOLS: -> +vector+ +scalar+ +boolean+ +nonnegative+ +literal+ ;
|
||||||
|
|
||||||
: signature-for-schema ( array-type elt-type schema -- signature )
|
: signature-for-schema ( array-type elt-type schema -- signature )
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
{ +vector+ [ drop ] }
|
{ +vector+ [ drop ] }
|
||||||
{ +scalar+ [ nip ] }
|
{ +scalar+ [ nip ] }
|
||||||
|
{ +boolean+ [ 2drop boolean ] }
|
||||||
{ +nonnegative+ [ nip ] }
|
{ +nonnegative+ [ nip ] }
|
||||||
{ +literal+ [ 2drop f ] }
|
{ +literal+ [ 2drop f ] }
|
||||||
} case
|
} case
|
||||||
|
@ -32,6 +33,7 @@ SYMBOLS: -> +vector+ +scalar+ +nonnegative+ +literal+ ;
|
||||||
{
|
{
|
||||||
{ +vector+ [ drop <class-info> ] }
|
{ +vector+ [ drop <class-info> ] }
|
||||||
{ +scalar+ [ nip <class-info> ] }
|
{ +scalar+ [ nip <class-info> ] }
|
||||||
|
{ +boolean+ [ 2drop boolean <class-info> ] }
|
||||||
{
|
{
|
||||||
+nonnegative+
|
+nonnegative+
|
||||||
[
|
[
|
||||||
|
@ -115,9 +117,9 @@ H{
|
||||||
{ v> { +vector+ +vector+ -> +vector+ } }
|
{ v> { +vector+ +vector+ -> +vector+ } }
|
||||||
{ v>= { +vector+ +vector+ -> +vector+ } }
|
{ v>= { +vector+ +vector+ -> +vector+ } }
|
||||||
{ vunordered? { +vector+ +vector+ -> +vector+ } }
|
{ vunordered? { +vector+ +vector+ -> +vector+ } }
|
||||||
{ vany? { +vector+ -> +scalar+ } }
|
{ vany? { +vector+ -> +boolean+ } }
|
||||||
{ vall? { +vector+ -> +scalar+ } }
|
{ vall? { +vector+ -> +boolean+ } }
|
||||||
{ vnone? { +vector+ -> +scalar+ } }
|
{ vnone? { +vector+ -> +boolean+ } }
|
||||||
}
|
}
|
||||||
|
|
||||||
PREDICATE: vector-word < word vector-words key? ;
|
PREDICATE: vector-word < word vector-words key? ;
|
||||||
|
|
Loading…
Reference in New Issue