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-03 03:33:07 -04:00
|
|
|
IN: math.vectors.simd
|
|
|
|
|
2009-09-20 17:48:17 -04:00
|
|
|
ERROR: bad-vector-size bits ;
|
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-20 17:48:17 -04:00
|
|
|
: simd-vocab ( type -- vocab )
|
|
|
|
"math.vectors.simd.instances." prepend ;
|
2009-09-03 03:33:07 -04:00
|
|
|
|
2009-09-20 17:48:17 -04:00
|
|
|
: parse-simd-name ( string -- c-type quot )
|
|
|
|
"-" split1
|
|
|
|
[ "alien.c-types" lookup dup heap-size ] [ string>number ] bi*
|
|
|
|
* 8 * {
|
|
|
|
{ 128 [ [ define-simd-128 ] ] }
|
|
|
|
{ 256 [ [ define-simd-256 ] ] }
|
|
|
|
[ bad-vector-size ]
|
|
|
|
} case ;
|
|
|
|
|
|
|
|
PRIVATE>
|
|
|
|
|
|
|
|
: define-simd-vocab ( type -- vocab )
|
|
|
|
[ simd-vocab ]
|
|
|
|
[ '[ _ parse-simd-name call( type -- ) ] ] bi
|
|
|
|
generate-vocab ;
|
|
|
|
|
|
|
|
SYNTAX: SIMD:
|
|
|
|
scan define-simd-vocab use-vocab ;
|