(: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)
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))
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
;;; 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"