]> gitweb.factorcode.org Git - factor.git/commitdiff
math.vectors.simd: split off intrinsics into a sub-vocabulary, to avoid loading most...
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 3 Sep 2009 08:43:43 +0000 (03:43 -0500)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 3 Sep 2009 08:43:43 +0000 (03:43 -0500)
basis/compiler/cfg/intrinsics/intrinsics.factor
basis/compiler/tree/propagation/simd/simd.factor
basis/math/vectors/simd/alien/alien-tests.factor
basis/math/vectors/simd/alien/alien.factor
basis/math/vectors/simd/intrinsics/authors.txt [new file with mode: 0644]
basis/math/vectors/simd/intrinsics/intrinsics.factor [new file with mode: 0644]
basis/math/vectors/simd/simd.factor

index 739bcdb3668836fa2b6201e13c71cf75c5adc2b5..caa322fc4616a22bd8ec16e9d1e13b12f9f79f5d 100644 (file)
@@ -23,9 +23,7 @@ QUALIFIED: classes.tuple.private
 QUALIFIED: math.private
 QUALIFIED: math.integers.private
 QUALIFIED: math.floats.private
-QUALIFIED: math.vectors.simd
-QUALIFIED: math.vectors.simd.private
-QUALIFIED: math.vectors.simd.alien
+QUALIFIED: math.vectors.simd.intrinsics
 QUALIFIED: math.libm
 IN: compiler.cfg.intrinsics
 
@@ -148,24 +146,24 @@ IN: compiler.cfg.intrinsics
 
 : enable-sse2-simd ( -- )
     {
-        { math.vectors.simd.private:assert-positive [ drop ] }
-        { math.vectors.simd.private:(simd-v+) [ [ ^^add-vector ] emit-binary-vector-op ] }
-        { math.vectors.simd.private:(simd-v-) [ [ ^^sub-vector ] emit-binary-vector-op ] }
-        { math.vectors.simd.private:(simd-v*) [ [ ^^mul-vector ] emit-binary-vector-op ] }
-        { math.vectors.simd.private:(simd-v/) [ [ ^^div-vector ] emit-binary-vector-op ] }
-        { math.vectors.simd.private:(simd-vmin) [ [ ^^min-vector ] emit-binary-vector-op ] }
-        { math.vectors.simd.private:(simd-vmax) [ [ ^^max-vector ] emit-binary-vector-op ] }
-        { math.vectors.simd.private:(simd-vsqrt) [ [ ^^sqrt-vector ] emit-binary-vector-op ] }
-        { math.vectors.simd.private:(simd-broadcast) [ [ ^^broadcast-vector ] emit-unary-vector-op ] }
-        { math.vectors.simd.private:(simd-gather-2) [ emit-gather-vector-2 ] }
-        { math.vectors.simd.private:(simd-gather-4) [ emit-gather-vector-4 ] }
-        { math.vectors.simd.alien:alien-vector [ emit-alien-vector ] }
-        { math.vectors.simd.alien:set-alien-vector [ emit-set-alien-vector ] }
+        { math.vectors.simd.intrinsics:assert-positive [ drop ] }
+        { math.vectors.simd.intrinsics:(simd-v+) [ [ ^^add-vector ] emit-binary-vector-op ] }
+        { math.vectors.simd.intrinsics:(simd-v-) [ [ ^^sub-vector ] emit-binary-vector-op ] }
+        { math.vectors.simd.intrinsics:(simd-v*) [ [ ^^mul-vector ] emit-binary-vector-op ] }
+        { math.vectors.simd.intrinsics:(simd-v/) [ [ ^^div-vector ] emit-binary-vector-op ] }
+        { math.vectors.simd.intrinsics:(simd-vmin) [ [ ^^min-vector ] emit-binary-vector-op ] }
+        { math.vectors.simd.intrinsics:(simd-vmax) [ [ ^^max-vector ] emit-binary-vector-op ] }
+        { math.vectors.simd.intrinsics:(simd-vsqrt) [ [ ^^sqrt-vector ] emit-binary-vector-op ] }
+        { math.vectors.simd.intrinsics:(simd-broadcast) [ [ ^^broadcast-vector ] emit-unary-vector-op ] }
+        { math.vectors.simd.intrinsics:(simd-gather-2) [ emit-gather-vector-2 ] }
+        { math.vectors.simd.intrinsics:(simd-gather-4) [ emit-gather-vector-4 ] }
+        { math.vectors.simd.intrinsics:alien-vector [ emit-alien-vector ] }
+        { math.vectors.simd.intrinsics:set-alien-vector [ emit-set-alien-vector ] }
     } enable-intrinsics ;
 
 : enable-sse3-simd ( -- )
     {
-        { math.vectors.simd.private:(simd-sum) [ [ ^^horizontal-add-vector ] emit-unary-vector-op ] }
+        { math.vectors.simd.intrinsics:(simd-sum) [ [ ^^horizontal-add-vector ] emit-unary-vector-op ] }
     } enable-intrinsics ;
 
 : emit-intrinsic ( node word -- )
index 57c77538a9d3cf8d2990bb056c5448bcca4f9f40..9f63e747b97b8c713e69e1f877d00271af2bc14a 100644 (file)
@@ -2,8 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors byte-arrays combinators
 compiler.tree.propagation.info cpu.architecture kernel words math
-math.intervals math.vectors.simd math.vectors.simd.private
-math.vectors.simd.alien ;
+math.intervals math.vectors.simd.intrinsics ;
 IN: compiler.tree.propagation.simd
 
 \ (simd-v+) { byte-array } "default-output-classes" set-word-prop
index 62a1d25c5850f2f6785853c812e3261839ba6467..afdada3c8e3dbae862380fbe07f41c8b6a6bdd15 100644 (file)
@@ -1,8 +1,8 @@
 IN: math.vectors.simd.alien.tests
-USING: cpu.architecture math.vectors.simd accessors
-math.vectors.simd.alien kernel classes.struct tools.test
-compiler sequences byte-arrays alien math kernel.private
-specialized-arrays.float ;
+USING: cpu.architecture math.vectors.simd
+math.vectors.simd.intrinsics accessors math.vectors.simd.alien
+kernel classes.struct tools.test compiler sequences byte-arrays
+alien math kernel.private specialized-arrays.float ;
 
 ! Vector alien intrinsics
 [ 4float-array{ 1 2 3 4 } ] [
index c3dd25512c3823c601b6764149f3073815daae4d..102559898ed2fda21cf11cb32fb771bbeb8eda3b 100644 (file)
@@ -1,18 +1,10 @@
 ! Copyright (C) 2009 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: alien accessors alien.c-types byte-arrays compiler.units
-cpu.architecture libc locals kernel math math.vectors.simd
-math.vectors.simd.private ;
+cpu.architecture locals kernel math math.vectors.simd
+math.vectors.simd.intrinsics ;
 IN: math.vectors.simd.alien
 
-: alien-vector ( c-ptr n rep -- value )
-    ! Inefficient version for when intrinsics are missing
-    [ swap <displaced-alien> ] dip rep-size memory>byte-array ;
-
-: set-alien-vector ( value c-ptr n rep -- )
-    ! Inefficient version for when intrinsics are missing
-    [ swap <displaced-alien> swap ] dip rep-size memcpy ;
-
 :: define-simd-type ( class rep -- )
     <c-type>
         byte-array >>class
diff --git a/basis/math/vectors/simd/intrinsics/authors.txt b/basis/math/vectors/simd/intrinsics/authors.txt
new file mode 100644 (file)
index 0000000..d4f5d6b
--- /dev/null
@@ -0,0 +1 @@
+Slava Pestov
\ No newline at end of file
diff --git a/basis/math/vectors/simd/intrinsics/intrinsics.factor b/basis/math/vectors/simd/intrinsics/intrinsics.factor
new file mode 100644 (file)
index 0000000..28547f8
--- /dev/null
@@ -0,0 +1,28 @@
+! Copyright (C) 2009 Slava Pestov.
+! See http://factorcode.org/license.txt for BSD license.
+USING: kernel alien alien.c-types cpu.architecture libc ;
+IN: math.vectors.simd.intrinsics
+
+ERROR: bad-simd-call ;
+
+: (simd-v+) ( v1 v2 rep -- v3 ) bad-simd-call ;
+: (simd-v-) ( v1 v2 rep -- v3 ) bad-simd-call ;
+: (simd-v*) ( v1 v2 rep -- v3 ) bad-simd-call ;
+: (simd-v/) ( v1 v2 rep -- v3 ) bad-simd-call ;
+: (simd-vmin) ( v1 v2 rep -- v3 ) bad-simd-call ;
+: (simd-vmax) ( v1 v2 rep -- v3 ) bad-simd-call ;
+: (simd-vsqrt) ( v1 v2 rep -- v3 ) bad-simd-call ;
+: (simd-sum) ( v1 rep -- v2 ) bad-simd-call ;
+: (simd-broadcast) ( x rep -- v ) bad-simd-call ;
+: (simd-gather-2) ( a b rep -- v ) bad-simd-call ;
+: (simd-gather-4) ( a b c d rep -- v ) bad-simd-call ;
+: assert-positive ( x -- y ) ;
+
+: alien-vector ( c-ptr n rep -- value )
+    ! Inefficient version for when intrinsics are missing
+    [ swap <displaced-alien> ] dip rep-size memory>byte-array ;
+
+: set-alien-vector ( value c-ptr n rep -- )
+    ! Inefficient version for when intrinsics are missing
+    [ swap <displaced-alien> swap ] dip rep-size memcpy ;
+
index a36eee9081a021a1328ad6ac00986dd8cc613810..c487e5954384a092bb904f3b1f84e7ab2439eb59 100644 (file)
@@ -2,30 +2,12 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors alien.c-types byte-arrays cpu.architecture
 generalizations kernel math math.functions math.vectors
-math.vectors.simd.functor math.vectors.specialization parser
-prettyprint.custom sequences sequences.private
-specialized-arrays.double locals assocs literals words fry ;
+math.vectors.simd.functor math.vectors.simd.intrinsics
+math.vectors.specialization parser prettyprint.custom sequences
+sequences.private specialized-arrays.double locals assocs
+literals words fry ;
 IN: math.vectors.simd
 
-<PRIVATE
-
-ERROR: bad-simd-call ;
-
-: (simd-v+) ( v1 v2 rep -- v3 ) bad-simd-call ;
-: (simd-v-) ( v1 v2 rep -- v3 ) bad-simd-call ;
-: (simd-v*) ( v1 v2 rep -- v3 ) bad-simd-call ;
-: (simd-v/) ( v1 v2 rep -- v3 ) bad-simd-call ;
-: (simd-vmin) ( v1 v2 rep -- v3 ) bad-simd-call ;
-: (simd-vmax) ( v1 v2 rep -- v3 ) bad-simd-call ;
-: (simd-vsqrt) ( v1 v2 rep -- v3 ) bad-simd-call ;
-: (simd-sum) ( v1 rep -- v2 ) bad-simd-call ;
-: (simd-broadcast) ( x rep -- v ) bad-simd-call ;
-: (simd-gather-2) ( a b rep -- v ) bad-simd-call ;
-: (simd-gather-4) ( a b c d rep -- v ) bad-simd-call ;
-: assert-positive ( x -- y ) ;
-
-PRIVATE>
-
 <<
 
 DEFER: 4float-array