0.8.3.39:
[sbcl.git] / src / assembly / ppc / array.lisp
index ba9ebf0..4b68ace 100644 (file)
@@ -1,6 +1,17 @@
-(in-package "SB!VM")
-
+;;;; various array operations that are too expensive (in space) to do
+;;;; inline
+
+;;;; This software is part of the SBCL system. See the README file for
+;;;; more information.
+;;;;
+;;;; This software is derived from the CMU CL system, which was
+;;;; written at Carnegie Mellon University and released into the
+;;;; public domain. The software is in the public domain and is
+;;;; provided with absolutely no warranty. See the COPYING and CREDITS
+;;;; files for more information.
 
+(in-package "SB!VM")
+\f
 (define-assembly-routine (allocate-vector
                          (:policy :fast-safe)
                          (:translate allocate-vector)
     (storew ndescr vector 0 sb!vm:other-pointer-lowtag)
     (storew length vector sb!vm:vector-length-slot sb!vm:other-pointer-lowtag))
   (move result vector))
-
-
-\f
-;;;; Hash primitives
-#|
-#+sb-assembling
-(defparameter sxhash-simple-substring-entry (gen-label))
-
-(define-assembly-routine (sxhash-simple-string
-                         (:translate %sxhash-simple-string)
-                         (:policy :fast-safe)
-                         (:result-types positive-fixnum))
-                        ((:arg string descriptor-reg a0-offset)
-                         (:res result any-reg a0-offset)
-
-                         (:temp length any-reg a1-offset)
-                         (:temp accum non-descriptor-reg nl0-offset)
-                         (:temp data non-descriptor-reg nl1-offset)
-                         (:temp temp non-descriptor-reg nl2-offset)
-                         (:temp offset non-descriptor-reg nl3-offset))
-
-  (declare (ignore result accum data temp offset))
-
-  (loadw length string sb!vm:vector-length-slot sb!vm:other-pointer-lowtag)
-  (inst b sxhash-simple-substring-entry))
-
-
-(define-assembly-routine (sxhash-simple-substring
-                         (:translate %sxhash-simple-substring)
-                         (:policy :fast-safe)
-                         (:arg-types * positive-fixnum)
-                         (:result-types positive-fixnum))
-                        ((:arg string descriptor-reg a0-offset)
-                         (:arg length any-reg a1-offset)
-                         (:res result any-reg a0-offset)
-
-                         (:temp accum non-descriptor-reg nl0-offset)
-                         (:temp data non-descriptor-reg nl1-offset)
-                         (:temp temp non-descriptor-reg nl2-offset)
-                         (:temp offset non-descriptor-reg nl3-offset))
-  (emit-label sxhash-simple-substring-entry)
-
-  (inst li offset (- (* vector-data-offset n-word-bytes) other-pointer-lowtag))
-  (move accum zero-tn)
-  (inst b test)
-
-  LOOP
-
-  (inst xor accum accum data)
-  (inst slwi temp accum 27)
-  (inst srwi accum accum 5)
-  (inst or accum accum temp)
-  (inst addi offset offset 4)
-
-  TEST
-
-  (inst subic. length length (fixnumize 4))
-  (inst lwzx data string offset)
-  (inst bge loop)
-
-  (inst addic. length length (fixnumize 4))
-  (inst neg length length)
-  (inst beq done)
-  (inst slwi length length 1)
-  (inst srw data data length)
-  (inst xor accum accum data)
-
-  DONE
-
-  (inst slwi result accum 5)
-  (inst srwi result result 3))
-|#
\ No newline at end of file