X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Falpha%2Finsts.lisp;h=b6bfa75f407f8f2a48756a69655cd37cbe768394;hb=c81c32ef8a737b0cc61d3c0c6a137cab39baac73;hp=54c79cc99c900311067e3245ffeb9e5b2d03ee04;hpb=e0814eee6f6dea52db010b45a330100f2fe65832;p=sbcl.git diff --git a/src/compiler/alpha/insts.lisp b/src/compiler/alpha/insts.lisp index 54c79cc..b6bfa75 100644 --- a/src/compiler/alpha/insts.lisp +++ b/src/compiler/alpha/insts.lisp @@ -54,7 +54,7 @@ (t (make-symbol (concatenate 'string "$" name))))) *register-names*)) -(sb!disassem:define-argument-type reg +(sb!disassem:define-arg-type reg :printer (lambda (value stream dstate) (declare (stream stream) (fixnum value)) (let ((regname (aref reg-symbols value))) @@ -70,7 +70,7 @@ (loop for n from 0 to 31 collect (make-symbol (format nil "~D" n))) 'vector)) -(sb!disassem:define-argument-type fp-reg +(sb!disassem:define-arg-type fp-reg :printer (lambda (value stream dstate) (declare (stream stream) (fixnum value)) (let ((regname (aref float-reg-symbols value))) @@ -81,7 +81,7 @@ regname dstate)))) -(sb!disassem:define-argument-type relative-label +(sb!disassem:define-arg-type relative-label :sign-extend t :use-label (lambda (value dstate) (declare (type (signed-byte 21) value) @@ -409,19 +409,24 @@ (define-fp-operate subt #x16 #x0a1) ;;; IEEE support - (defconstant +su+ #x500) ; software, underflow enabled - (defconstant +sui+ #x700) ; software, inexact & underflow enabled - (defconstant +sv+ #x500) ; software, interger overflow enabled - (defconstant +svi+ #x700) - (defconstant +rnd+ #x0c0) ; dynamic rounding mode - (defconstant +sud+ #x5c0) - (defconstant +svid+ #x7c0) - (defconstant +suid+ #x7c0) + (def!constant +su+ #x500) ; software, underflow enabled + (def!constant +sui+ #x700) ; software, inexact & underflow enabled + (def!constant +sv+ #x500) ; software, interger overflow enabled + (def!constant +svi+ #x700) + (def!constant +rnd+ #x0c0) ; dynamic rounding mode + (def!constant +sud+ #x5c0) + (def!constant +svid+ #x7c0) + (def!constant +suid+ #x7c0) (define-fp-operate cvtqs_su #x16 (logior +su+ #x0bc) 2) + (define-fp-operate cvtqs_sui #x16 (logior +sui+ #x0bc) 2) (define-fp-operate cvtqt_su #x16 (logior +su+ #x0be) 2) + (define-fp-operate cvtqt_sui #x16 (logior +sui+ #x0be) 2) (define-fp-operate cvtts_su #x16 (logior +su+ #x0ac) 2) + (define-fp-operate cvttq_sv #x16 (logior +su+ #x0af) 2) + (define-fp-operate cvttq/c_sv #x16 (logior +su+ #x02f) 2) + (define-fp-operate adds_su #x16 (logior +su+ #x080)) (define-fp-operate addt_su #x16 (logior +su+ #x0a0)) (define-fp-operate divs_su #x16 (logior +su+ #x083)) @@ -437,6 +442,9 @@ (define-instruction trapb (segment) (:emitter (emit-lword segment #x63ff0000))) +(define-instruction imb (segment) + (:emitter (emit-lword segment #x00000086))) + (define-instruction gentrap (segment code) (:printer call-pal ((palcode #xaa0000))) (:emitter