0.8.13.18:
authorNathan Froyd <froydnj@cs.rice.edu>
Mon, 2 Aug 2004 16:23:54 +0000 (16:23 +0000)
committerNathan Froyd <froydnj@cs.rice.edu>
Mon, 2 Aug 2004 16:23:54 +0000 (16:23 +0000)
* add some new Alpha instructions
* provide a better LOGCOUNT for Alpha
* stop GENESIS from complaining about duplicate functions
  on Alpha/Tru64

src/compiler/alpha/arith.lisp
src/compiler/alpha/insts.lisp
src/runtime/Config.alpha-osf1
version.lisp-expr

index f20275f..df7d563 100644 (file)
   (:arg-types unsigned-num)
   (:results (res :scs (unsigned-reg)))
   (:result-types positive-fixnum)
+  (:guard (member :cix *backend-subfeatures*))
+  (:generator 1
+    (inst ctpop zero arg res)))
+
+(define-vop (unsigned-byte-64-count)
+  (:translate logcount)
+  (:note "inline (unsigned-byte 64) logcount")
+  (:policy :fast-safe)
+  (:args (arg :scs (unsigned-reg) :target num))
+  (:arg-types unsigned-num)
+  (:results (res :scs (unsigned-reg)))
+  (:result-types positive-fixnum)
   (:temporary (:scs (non-descriptor-reg) :from (:argument 0) :to (:result 0)
                    :target res) num)
   (:temporary (:scs (non-descriptor-reg)) mask temp)
index 8985a46..bc91214 100644 (file)
                               disp)))))
   (define-memory lda   #x08 :lda)
   (define-memory ldah  #x09 :ldah)
+  (define-memory ldbu  #x0a)            ; BWX extension
+  (define-memory ldwu  #x0c)            ; BWX extension
   (define-memory ldl   #x28)
   (define-memory ldq   #x29)
   (define-memory ldl_l #x2a)
   (define-memory ldq_q #x2b)
   (define-memory ldq_u #x0b)
+  (define-memory stw   #x0d)            ; BWX extension
+  (define-memory stb   #x0e)            ; BWX extension
   (define-memory stl   #x2c)
   (define-memory stq   #x2d)
   (define-memory stl_c #x2e)
   (define-operate mulq/v #x13 #x60)
   (define-operate mull/v #x13 #x40)
   (define-operate umulh  #x13 #x30)
-  (define-operate mulq   #x13 #x20))
+  (define-operate mulq   #x13 #x20)
+
+  (define-operate ctpop  #x1c #x30)     ; CIX extension
+  (define-operate ctlz   #x1c #x32)     ; CIX extension
+  (define-operate cttz   #x1c #x33))    ; CIX extension
 
 
 (macrolet ((define-fp-operate (name op fn &optional (args 3))
index 675a566..a7721c1 100644 (file)
@@ -11,7 +11,12 @@ CFLAGS += -Dalpha -Dosf1 -O0 -g -D_XOPEN_SOURCE=500 -D_OSF_SOURCE=500
 ASFLAGS += -Dalpha -Dosf1 #-ULANGUAGE_ASSEMBLY
 LD = ld -taso 
 LINKFLAGS = -non_shared # dynamic -v -g  -Wl,-T  -Wl,ld-script.alpha-linux
-NM = nm -B
+# Digital^WCompaq^WHP's cc declares `static inline' functions to exist
+# in multiple places in the binary; we add the '-g' flag to suppress all
+# internal (i.e. static) function names being spat out.  GENESIS
+# complains about the multiple references and they aren't referenceable
+# by anything outside the binary anyway.
+NM = nm -B -g
 
 ASSEM_SRC = alpha-assem.s # ldso-stubs.s
 ARCH_SRC = alpha-arch.c undefineds.c
index fa06b52..b94abc4 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.13.17"
+"0.8.13.18"