1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors byte-arrays combinators fry sequences
4 compiler.tree.propagation.info cpu.architecture kernel words math
5 math.intervals math.vectors.simd math.vectors.simd.private ;
6 IN: compiler.tree.propagation.simd
35 (simd-vshuffle-elements)
54 } [ { byte-array } "default-output-classes" set-word-prop ] each
56 : scalar-output-class ( rep -- class )
58 literal>> scalar-rep-of {
59 { float-rep [ float ] }
60 { double-rep [ float ] }
66 \ (simd-sum) [ nip scalar-output-class ] "outputs" set-word-prop
68 \ (simd-v.) [ 2nip scalar-output-class ] "outputs" set-word-prop
74 } [ { boolean } "default-output-classes" set-word-prop ] each
76 \ (simd-select) [ 2nip scalar-output-class ] "outputs" set-word-prop
79 real [0,inf] <class/interval-info> value-info-intersect
80 ] "outputs" set-word-prop
82 ! If SIMD is not available, inline alien-vector and set-alien-vector
84 : inline-unless-intrinsic ( word -- )
85 dup '[ drop _ dup "intrinsic" word-prop [ drop f ] [ def>> ] if ]
86 "custom-inlining" set-word-prop ;
88 \ alien-vector inline-unless-intrinsic
90 \ set-alien-vector inline-unless-intrinsic