2009-09-03 04:43:43 -04:00
|
|
|
USING: cpu.architecture math.vectors.simd
|
|
|
|
math.vectors.simd.intrinsics accessors math.vectors.simd.alien
|
|
|
|
kernel classes.struct tools.test compiler sequences byte-arrays
|
2009-09-09 23:33:34 -04:00
|
|
|
alien math kernel.private specialized-arrays combinators ;
|
|
|
|
SPECIALIZED-ARRAY: float
|
|
|
|
IN: math.vectors.simd.alien.tests
|
2009-09-03 03:33:07 -04:00
|
|
|
|
|
|
|
! Vector alien intrinsics
|
2009-09-03 21:58:56 -04:00
|
|
|
[ float-4{ 1 2 3 4 } ] [
|
2009-09-03 03:33:07 -04:00
|
|
|
[
|
2009-09-03 21:58:56 -04:00
|
|
|
float-4{ 1 2 3 4 }
|
|
|
|
underlying>> 0 float-4-rep alien-vector
|
|
|
|
] compile-call float-4 boa
|
2009-09-03 03:33:07 -04:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
[ B{ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 } ] [
|
|
|
|
16 [ 1 ] B{ } replicate-as 16 <byte-array>
|
|
|
|
[
|
|
|
|
0 [
|
|
|
|
{ byte-array c-ptr fixnum } declare
|
2009-09-03 21:58:56 -04:00
|
|
|
float-4-rep set-alien-vector
|
2009-09-03 03:33:07 -04:00
|
|
|
] compile-call
|
|
|
|
] keep
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
[ float-array{ 1 2 3 4 } ] [
|
|
|
|
[
|
|
|
|
float-array{ 1 2 3 4 } underlying>>
|
|
|
|
float-array{ 4 3 2 1 } clone
|
2009-09-03 21:58:56 -04:00
|
|
|
[ underlying>> 0 float-4-rep set-alien-vector ] keep
|
2009-09-03 03:33:07 -04:00
|
|
|
] compile-call
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
STRUCT: simd-struct
|
2009-09-03 21:58:56 -04:00
|
|
|
{ x float-4 }
|
|
|
|
{ y double-2 }
|
|
|
|
{ z double-4 }
|
|
|
|
{ w float-8 } ;
|
2009-09-03 03:33:07 -04:00
|
|
|
|
|
|
|
[ t ] [ [ simd-struct <struct> ] compile-call >c-ptr [ 0 = ] all? ] unit-test
|
|
|
|
|
2009-09-03 21:58:56 -04:00
|
|
|
[
|
|
|
|
float-4{ 1 2 3 4 }
|
|
|
|
double-2{ 2 1 }
|
|
|
|
double-4{ 4 3 2 1 }
|
|
|
|
float-8{ 1 2 3 4 5 6 7 8 }
|
|
|
|
] [
|
2009-09-03 03:33:07 -04:00
|
|
|
simd-struct <struct>
|
2009-09-03 21:58:56 -04:00
|
|
|
float-4{ 1 2 3 4 } >>x
|
|
|
|
double-2{ 2 1 } >>y
|
|
|
|
double-4{ 4 3 2 1 } >>z
|
|
|
|
float-8{ 1 2 3 4 5 6 7 8 } >>w
|
|
|
|
{ [ x>> ] [ y>> ] [ z>> ] [ w>> ] } cleave
|
2009-09-03 03:33:07 -04:00
|
|
|
] unit-test
|
|
|
|
|
2009-09-03 21:58:56 -04:00
|
|
|
[
|
|
|
|
float-4{ 1 2 3 4 }
|
|
|
|
double-2{ 2 1 }
|
|
|
|
double-4{ 4 3 2 1 }
|
|
|
|
float-8{ 1 2 3 4 5 6 7 8 }
|
|
|
|
] [
|
2009-09-03 03:33:07 -04:00
|
|
|
[
|
|
|
|
simd-struct <struct>
|
2009-09-03 21:58:56 -04:00
|
|
|
float-4{ 1 2 3 4 } >>x
|
|
|
|
double-2{ 2 1 } >>y
|
|
|
|
double-4{ 4 3 2 1 } >>z
|
|
|
|
float-8{ 1 2 3 4 5 6 7 8 } >>w
|
|
|
|
{ [ x>> ] [ y>> ] [ z>> ] [ w>> ] } cleave
|
2009-09-03 03:33:07 -04:00
|
|
|
] compile-call
|
|
|
|
] unit-test
|