0.8.3.39:
[sbcl.git] / src / assembly / sparc / array.lisp
index 5b4f5fd..7f428e7 100644 (file)
   ;; the kernel doesn't bitch if we pass it the string.
   (storew zero-tn alloc-tn 0)
   (move result vector))
-
-
-\f
-;;;; Hash primitives
-
-;;; this is commented out in the alpha port. I'm therefore going to
-;;; comment it out here pending explanation -- CSR, 2001-08-31.
-
-#|
-#+assembler
-(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))
-
-  (inst b sxhash-simple-substring-entry)
-  (loadw length string vector-length-slot other-pointer-lowtag))
-
-
-(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))
-  (inst b test)
-  (move accum zero-tn)
-
-  LOOP
-
-  (inst xor accum data)
-  (inst sll temp accum 27)
-  (inst srl accum 5)
-  (inst or accum temp)
-  (inst add offset 4)
-
-  TEST
-
-  (inst subcc length (fixnumize 4))
-  (inst b :ge loop)
-  (inst ld data string offset)
-
-  (inst addcc length (fixnumize 4))
-  (inst b :eq done)
-  (inst neg length)
-  (inst sll length 1)
-  (inst srl data length)
-  (inst xor accum data)
-
-  DONE
-
-  (inst sll result accum 5)
-  (inst srl result result 3))
-|#