compiler.cfg.intrinsics.simd.backend: eliminate duplicated work done on successful insn sequence

db4
Joe Groff 2010-03-20 02:51:49 -07:00
parent ee4913702f
commit f82a368602
1 changed files with 11 additions and 8 deletions

View File

@ -66,24 +66,27 @@ M: ##horizontal-shr-vector-imm insn-available? rep>> %horizontal-shr-vector-imm-
GENERIC# >vector-op-cond 2 ( quot #pick #dup -- quotpair )
M:: callable >vector-op-cond ( quot #pick #dup -- quotpair )
#dup quot '[ _ ndup [ @ drop ] { } make [ insn-available? ] all? ] quot 2array ;
#dup quot '[ 2drop _ ndup [ @ ] { } make dup [ insn-available? ] all? ]
#dup '[ % _ nnip ]
2array ;
M:: pair >vector-op-cond ( pair #pick #dup -- quotpair )
pair first2 :> ( class quot )
#pick class #dup quot
'[ _ npick _ instance? [ _ ndup [ @ drop ] { } make [ insn-available? ] all? ] [ f ] if ]
quot 2array ;
'[ 2drop _ npick _ instance? [ _ ndup [ @ ] { } make dup [ insn-available? ] all? ] [ f f f ] if ]
#dup '[ % _ nnip ]
2array ;
MACRO: v-vector-op ( trials -- )
[ 1 2 >vector-op-cond ] map '[ _ cond ] ;
[ 1 2 >vector-op-cond ] map '[ f f _ cond ] ;
MACRO: vl-vector-op ( trials -- )
[ 1 3 >vector-op-cond ] map '[ _ cond ] ;
[ 1 3 >vector-op-cond ] map '[ f f _ cond ] ;
MACRO: vv-vector-op ( trials -- )
[ 1 3 >vector-op-cond ] map '[ _ cond ] ;
[ 1 3 >vector-op-cond ] map '[ f f _ cond ] ;
MACRO: vv-cc-vector-op ( trials -- )
[ 2 4 >vector-op-cond ] map '[ _ cond ] ;
[ 2 4 >vector-op-cond ] map '[ f f _ cond ] ;
MACRO: vvvv-vector-op ( trials -- )
[ 1 5 >vector-op-cond ] map '[ _ cond ] ;
[ 1 5 >vector-op-cond ] map '[ f f _ cond ] ;
! Intrinsic code emission