]> gitweb.factorcode.org Git - factor.git/blob - basis/math/vectors/simd/simd.factor
Merge branch 'browser' of git://github.com/klazuka/factor
[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 parser math math.parser
4 math.vectors.simd.functor sequences splitting vocabs.generated
5 vocabs.loader vocabs.parser words accessors vocabs compiler.units
6 definitions ;
7 QUALIFIED-WITH: alien.c-types c
8 IN: math.vectors.simd
9
10 ERROR: bad-base-type type ;
11
12 <PRIVATE
13
14 : simd-vocab ( base-type -- vocab )
15     name>> "math.vectors.simd.instances." prepend ;
16
17 : parse-base-type ( c-type -- c-type )
18     dup { c:char c:uchar c:short c:ushort c:int c:uint c:longlong c:ulonglong c:float c:double } memq?
19     [ bad-base-type ] unless ;
20
21 : forget-instances ( -- )
22     [
23         "math.vectors.simd.instances" child-vocabs
24         [ forget-vocab ] each
25     ] with-compilation-unit ;
26
27 PRIVATE>
28
29 : define-simd-vocab ( type -- vocab )
30     parse-base-type
31     [ simd-vocab ] keep '[
32         _
33         [ define-simd-128 ]
34         [ define-simd-256 ] bi
35     ] generate-vocab ;
36
37 SYNTAX: SIMD:
38     scan-word define-simd-vocab use-vocab ;
39