2009-09-03 03:33:07 -04:00
|
|
|
! Copyright (C) 2009 Slava Pestov.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2009-09-20 17:48:17 -04:00
|
|
|
USING: alien.c-types combinators fry kernel lexer math math.parser
|
|
|
|
math.vectors.simd.functor sequences splitting vocabs.generated
|
|
|
|
vocabs.loader vocabs.parser words ;
|
2009-09-23 21:23:25 -04:00
|
|
|
QUALIFIED-WITH: alien.c-types c
|
2009-09-03 03:33:07 -04:00
|
|
|
IN: math.vectors.simd
|
|
|
|
|
2009-09-23 21:23:25 -04:00
|
|
|
ERROR: bad-base-type type ;
|
2009-09-03 03:33:07 -04:00
|
|
|
|
2009-09-20 17:48:17 -04:00
|
|
|
<PRIVATE
|
2009-09-03 03:33:07 -04:00
|
|
|
|
2009-09-23 21:23:25 -04:00
|
|
|
: simd-vocab ( base-type -- vocab )
|
2009-09-20 17:48:17 -04:00
|
|
|
"math.vectors.simd.instances." prepend ;
|
2009-09-03 03:33:07 -04:00
|
|
|
|
2009-09-23 21:23:25 -04:00
|
|
|
: parse-base-type ( string -- c-type )
|
|
|
|
{
|
|
|
|
{ "char" [ c:char ] }
|
|
|
|
{ "uchar" [ c:uchar ] }
|
|
|
|
{ "short" [ c:short ] }
|
|
|
|
{ "ushort" [ c:ushort ] }
|
|
|
|
{ "int" [ c:int ] }
|
|
|
|
{ "uint" [ c:uint ] }
|
|
|
|
{ "longlong" [ c:longlong ] }
|
|
|
|
{ "ulonglong" [ c:ulonglong ] }
|
|
|
|
{ "float" [ c:float ] }
|
|
|
|
{ "double" [ c:double ] }
|
|
|
|
[ bad-base-type ]
|
2009-09-20 17:48:17 -04:00
|
|
|
} case ;
|
|
|
|
|
|
|
|
PRIVATE>
|
|
|
|
|
|
|
|
: define-simd-vocab ( type -- vocab )
|
2009-09-23 21:23:25 -04:00
|
|
|
[ simd-vocab ] keep '[
|
|
|
|
_ parse-base-type
|
|
|
|
[ define-simd-128 ]
|
|
|
|
[ define-simd-256 ] bi
|
|
|
|
] generate-vocab ;
|
2009-09-20 17:48:17 -04:00
|
|
|
|
|
|
|
SYNTAX: SIMD:
|
|
|
|
scan define-simd-vocab use-vocab ;
|