]> gitweb.factorcode.org Git - factor.git/blob - basis/math/vectors/simd/simd.factor
More integer SIMD work
[factor.git] / basis / math / vectors / simd / simd.factor
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types combinators fry kernel lexer math math.parser
4 math.vectors.simd.functor sequences splitting vocabs.generated
5 vocabs.loader vocabs.parser words ;
6 IN: math.vectors.simd
7
8 ERROR: bad-vector-size bits ;
9
10 <PRIVATE
11
12 : simd-vocab ( type -- vocab )
13     "math.vectors.simd.instances." prepend ;
14
15 : parse-simd-name ( string -- c-type quot )
16     "-" split1
17     [ "alien.c-types" lookup dup heap-size ] [ string>number ] bi*
18     * 8 * {
19         { 128 [ [ define-simd-128 ] ] }
20         { 256 [ [ define-simd-256 ] ] }
21         [ bad-vector-size ]
22     } case ;
23
24 PRIVATE>
25
26 : define-simd-vocab ( type -- vocab )
27     [ simd-vocab ]
28     [ '[ _ parse-simd-name call( type -- ) ] ] bi
29     generate-vocab ;
30
31 SYNTAX: SIMD:
32     scan define-simd-vocab use-vocab ;