Merge branch 'master' of git://factorcode.org/git/factor

db4
Guillaume Nargeot 2009-10-18 23:47:00 +09:00
commit 2d6e47d710
12 changed files with 18 additions and 23 deletions

View File

@ -250,10 +250,10 @@ M:: x86.32 %unbox-large-struct ( n c-type -- )
] with-aligned-stack ; ] with-aligned-stack ;
M: x86.32 %nest-stacks ( -- ) M: x86.32 %nest-stacks ( -- )
! Save current frame. See comment in vm/contexts.hpp
EAX stack-reg stack-frame get total-size>> 3 cells - [+] LEA
8 [ 8 [
push-vm-ptr push-vm-ptr
! Save current frame. See comment in vm/contexts.hpp
EAX stack-reg stack-frame get total-size>> [+] LEA
EAX PUSH EAX PUSH
"nest_stacks" f %alien-invoke "nest_stacks" f %alien-invoke
] with-aligned-stack ; ] with-aligned-stack ;

View File

@ -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)

View File

@ -48,11 +48,6 @@ cpu x86? [
float-4{ 0 1 0 2 } float-4{ 0 1 0 2 }
[ { float-4 } declare dup v+ underlying>> double-2 boa dup v+ ] compile-call [ { float-4 } declare dup v+ underlying>> double-2 boa dup v+ ] compile-call
] unit-test ] unit-test
[ 33.0 ] [
double-2{ 1 2 } double-2{ 10 20 }
[ { double-2 double-2 } declare v+ underlying>> 3.0 float* ] compile-call
] unit-test
] when ] when
! Fuzz testing ! Fuzz testing
@ -193,22 +188,18 @@ CONSTANT: simd-classes
'[ first2 inputs _ _ check-vector-op ] '[ first2 inputs _ _ check-vector-op ]
] dip check-optimizer ; inline ] dip check-optimizer ; inline
: approx= ( x y -- ? ) : (approx=) ( x y -- ? )
{ {
{ [ 2dup [ fp-nan? ] both? ] [ 2drop t ] } { [ 2dup [ fp-nan? ] both? ] [ 2drop t ] }
{ [ 2dup [ float? ] both? ] [ -1.e8 ~ ] } { [ 2dup [ fp-nan? ] either? ] [ 2drop f ] }
{ [ 2dup [ fp-infinity? ] either? ] [ fp-bitwise= ] } { [ 2dup [ fp-infinity? ] either? ] [ fp-bitwise= ] }
{ [ 2dup [ sequence? ] both? ] [ { [ 2dup [ float? ] both? ] [ -1.e8 ~ ] }
[
{
{ [ 2dup [ fp-nan? ] both? ] [ 2drop t ] }
{ [ 2dup [ fp-infinity? ] either? ] [ fp-bitwise= ] }
{ [ 2dup [ fp-nan? ] either? not ] [ -1.e8 ~ ] }
} cond
] 2all?
] }
} cond ; } cond ;
: approx= ( x y -- ? )
2dup [ sequence? ] both?
[ [ (approx=) ] 2all? ] [ (approx=) ] if ;
: exact= ( x y -- ? ) : exact= ( x y -- ? )
{ {
{ [ 2dup [ float? ] both? ] [ fp-bitwise= ] } { [ 2dup [ float? ] both? ] [ fp-bitwise= ] }

View File

@ -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? ;

View File

@ -5,7 +5,7 @@ H{
{ deploy-c-types? f } { deploy-c-types? f }
{ deploy-unicode? f } { deploy-unicode? f }
{ deploy-io 2 } { deploy-io 2 }
{ deploy-reflection 2 } { deploy-reflection 1 }
{ "stop-after-last-window?" t } { "stop-after-last-window?" t }
{ deploy-word-props? f } { deploy-word-props? f }
{ deploy-math? t } { deploy-math? t }