Commit 9e764577 authored by Raymond Toy's avatar Raymond Toy

Use some SSE3 and SSSE3 instructions

This means cmucl will only run on machines with SSSE3, which was
introduced in 2006, 14 years ago.  I think it's probably ok to require
this.

* logcount uses the popcnt instruction
* complex double-float multiply uses ssse3 instructions.
parent 974366fb
Pipeline #1425 failed with stage
in 4 minutes and 47 seconds
......@@ -39,7 +39,7 @@ ENABLE2="yes"
ENABLE3="yes"
ENABLE4="yes"
version=21c
version=21d
SRCDIR=src
BINDIR=bin
TOOLDIR=$BINDIR
......
;;; Use SSE3 and SSSE3 instructions for x86
#+x86
(pushnew :sse3 *features*)
#+x86
(pushnew :ssse3 *features*)
\ No newline at end of file
......@@ -42,6 +42,12 @@
(setf *features* (delete :x87 *features*))
(sys:register-lisp-feature :sse2))
#+ssse3
(progn
(setf *features* (delete :x87 *features*))
(sys:register-lisp-feature :sse3)
(sys:register-lisp-feature :ssse3))
#+(or darwin linux)
(sys:register-lisp-runtime-feature :relocatable-stacks)
......
......@@ -922,6 +922,7 @@
(:results (result :scs (unsigned-reg)))
(:result-types positive-fixnum)
(:temporary (:sc unsigned-reg :from (:argument 0)) temp)
(:guard (not (backend-featurep :sse3)))
(:generator 30
(move result arg)
......
......@@ -2302,6 +2302,7 @@
(:policy :fast-safe)
(:temporary (:scs (complex-double-reg)) t0 t1 t2)
(:temporary (:scs (unsigned-reg)) tmp)
(:guard (not (backend-featurep :sse3)))
(:generator 13
;; Basic algorithm from the paper "The Microarchitecture of the
;; Intel Pentium 4 Processor on 90nm Technololgy"
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment