From 4378b6ab369ee101b5c4625f24901561ad4899b8 Mon Sep 17 00:00:00 2001 From: Thiemo Seufer Date: Sat, 1 Sep 2007 11:19:55 +0000 Subject: [PATCH] 1.0.9.14: Marginally improved VOPs, and a bit of code cleanup. --- src/compiler/mips/alloc.lisp | 2 -- src/compiler/mips/arith.lisp | 50 ++++++++++++++++++------------------------ version.lisp-expr | 2 +- 3 files changed, 22 insertions(+), 32 deletions(-) diff --git a/src/compiler/mips/alloc.lisp b/src/compiler/mips/alloc.lisp index 44d523a..8b1cff9 100644 --- a/src/compiler/mips/alloc.lisp +++ b/src/compiler/mips/alloc.lisp @@ -10,7 +10,6 @@ ;;;; files for more information. (in-package "SB!VM") - ;;;; LIST and LIST* (defoptimizer (list stack-allocate-result) ((&rest args)) @@ -80,7 +79,6 @@ (define-vop (list* list-or-list*) (:variant t)) - ;;;; Special purpose inline allocators. diff --git a/src/compiler/mips/arith.lisp b/src/compiler/mips/arith.lisp index e1e3a29..f5ed4cc 100644 --- a/src/compiler/mips/arith.lisp +++ b/src/compiler/mips/arith.lisp @@ -13,21 +13,24 @@ ;;;; Unary operations. -(define-vop (fixnum-unop) +(define-vop (fast-safe-arith-op) + (:policy :fast-safe) + (:effects) + (:affected)) + +(define-vop (fixnum-unop fast-safe-arith-op) (:args (x :scs (any-reg))) (:results (res :scs (any-reg))) (:note "inline fixnum arithmetic") (:arg-types tagged-num) - (:result-types tagged-num) - (:policy :fast-safe)) + (:result-types tagged-num)) -(define-vop (signed-unop) +(define-vop (signed-unop fast-safe-arith-op) (:args (x :scs (signed-reg))) (:results (res :scs (signed-reg))) (:note "inline (signed-byte 32) arithmetic") (:arg-types signed-num) - (:result-types signed-num) - (:policy :fast-safe)) + (:result-types signed-num)) (define-vop (fast-negate/fixnum fixnum-unop) (:translate %negate) @@ -51,45 +54,34 @@ (:translate lognot) (:generator 1 (inst nor res x zero-tn))) - - ;;;; Binary fixnum operations. ;;; Assume that any constant operand is the second arg... -(define-vop (fast-fixnum-binop) - (:args (x :target r :scs (any-reg)) - (y :target r :scs (any-reg))) +(define-vop (fast-fixnum-binop fast-safe-arith-op) + (:args (x :target r :scs (any-reg zero)) + (y :target r :scs (any-reg zero))) (:arg-types tagged-num tagged-num) (:results (r :scs (any-reg))) (:result-types tagged-num) - (:note "inline fixnum arithmetic") - (:effects) - (:affected) - (:policy :fast-safe)) + (:note "inline fixnum arithmetic")) -(define-vop (fast-unsigned-binop) - (:args (x :target r :scs (unsigned-reg)) - (y :target r :scs (unsigned-reg))) +(define-vop (fast-unsigned-binop fast-safe-arith-op) + (:args (x :target r :scs (unsigned-reg zero)) + (y :target r :scs (unsigned-reg zero))) (:arg-types unsigned-num unsigned-num) (:results (r :scs (unsigned-reg))) (:result-types unsigned-num) - (:note "inline (unsigned-byte 32) arithmetic") - (:effects) - (:affected) - (:policy :fast-safe)) + (:note "inline (unsigned-byte 32) arithmetic")) -(define-vop (fast-signed-binop) - (:args (x :target r :scs (signed-reg)) - (y :target r :scs (signed-reg))) +(define-vop (fast-signed-binop fast-safe-arith-op) + (:args (x :target r :scs (signed-reg zero)) + (y :target r :scs (signed-reg zero))) (:arg-types signed-num signed-num) (:results (r :scs (signed-reg))) (:result-types signed-num) - (:note "inline (signed-byte 32) arithmetic") - (:effects) - (:affected) - (:policy :fast-safe)) + (:note "inline (signed-byte 32) arithmetic")) (define-vop (fast-fixnum-c-binop fast-fixnum-binop) (:args (x :target r :scs (any-reg))) diff --git a/version.lisp-expr b/version.lisp-expr index 5d76820..26d7c85 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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".) -"1.0.9.13" +"1.0.9.14" -- 1.7.10.4