]> gitweb.factorcode.org Git - factor.git/blob - basis/math/vectors/simd/alien/alien.factor
1486f6d0af4af9924c8e3fd23f38b53ae8c46bd8
[factor.git] / basis / math / vectors / simd / alien / alien.factor
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien accessors alien.c-types byte-arrays compiler.units
4 cpu.architecture locals kernel math math.vectors.simd
5 math.vectors.simd.intrinsics ;
6 IN: math.vectors.simd.alien
7
8 :: define-simd-128-type ( class rep -- )
9     <c-type>
10         byte-array >>class
11         class >>boxed-class
12         [ rep alien-vector class boa ] >>getter
13         [ [ underlying>> ] 2dip rep set-alien-vector ] >>setter
14         16 >>size
15         8 >>align
16         rep >>rep
17     class name>> typedef ;
18
19 :: define-simd-256-type ( class rep -- )
20     <c-type>
21         class >>class
22         class >>boxed-class
23         [
24             [ rep alien-vector ]
25             [ 16 + >fixnum rep alien-vector ] 2bi
26             class boa
27         ] >>getter
28         [
29             [ [ underlying1>> ] 2dip rep set-alien-vector ]
30             [ [ underlying2>> ] 2dip 16 + >fixnum rep set-alien-vector ]
31             3bi
32         ] >>setter
33         32 >>size
34         8 >>align
35         rep >>rep
36     class name>> typedef ;
37 [
38     float-4 float-4-rep define-simd-128-type
39     double-2 double-2-rep define-simd-128-type
40     float-8 float-4-rep define-simd-256-type
41     double-4 double-2-rep define-simd-256-type
42 ] with-compilation-unit