]> gitweb.factorcode.org Git - factor.git/blob - basis/math/vectors/simd/intrinsics/intrinsics.factor
28547f8cf90f502108777e3c8c37981102d3f154
[factor.git] / basis / math / vectors / simd / intrinsics / intrinsics.factor
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel alien alien.c-types cpu.architecture libc ;
4 IN: math.vectors.simd.intrinsics
5
6 ERROR: bad-simd-call ;
7
8 : (simd-v+) ( v1 v2 rep -- v3 ) bad-simd-call ;
9 : (simd-v-) ( v1 v2 rep -- v3 ) bad-simd-call ;
10 : (simd-v*) ( v1 v2 rep -- v3 ) bad-simd-call ;
11 : (simd-v/) ( v1 v2 rep -- v3 ) bad-simd-call ;
12 : (simd-vmin) ( v1 v2 rep -- v3 ) bad-simd-call ;
13 : (simd-vmax) ( v1 v2 rep -- v3 ) bad-simd-call ;
14 : (simd-vsqrt) ( v1 v2 rep -- v3 ) bad-simd-call ;
15 : (simd-sum) ( v1 rep -- v2 ) bad-simd-call ;
16 : (simd-broadcast) ( x rep -- v ) bad-simd-call ;
17 : (simd-gather-2) ( a b rep -- v ) bad-simd-call ;
18 : (simd-gather-4) ( a b c d rep -- v ) bad-simd-call ;
19 : assert-positive ( x -- y ) ;
20
21 : alien-vector ( c-ptr n rep -- value )
22     ! Inefficient version for when intrinsics are missing
23     [ swap <displaced-alien> ] dip rep-size memory>byte-array ;
24
25 : set-alien-vector ( value c-ptr n rep -- )
26     ! Inefficient version for when intrinsics are missing
27     [ swap <displaced-alien> swap ] dip rep-size memcpy ;
28