From 650e76e600ca917d38a343d3751b5743aee324bb Mon Sep 17 00:00:00 2001 From: Carl Shapiro <cshapiro@common-lisp.net> Date: Sat, 10 Aug 2013 23:21:42 -0700 Subject: [PATCH] compiler/x86: load byte and word values through a sap without a temporary --- src/compiler/x86/sap.lisp | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/src/compiler/x86/sap.lisp b/src/compiler/x86/sap.lisp index a01112e73..bec24be84 100644 --- a/src/compiler/x86/sap.lisp +++ b/src/compiler/x86/sap.lisp @@ -186,34 +186,24 @@ (:args (sap :scs (sap-reg)) (offset :scs (signed-reg))) (:arg-types system-area-pointer signed-num) - ,@(unless (eq size :dword) - `((:temporary (:sc ,temp-sc :from (:eval 0) :to (:eval 1)) - temp))) (:results (result :scs (,sc))) (:result-types ,type) (:generator 5 - (inst mov ,(if (eq size :dword) 'result 'temp) - (make-ea ,size :base sap :index offset)) - ,@(unless (eq size :dword) - `((inst ,(if signed 'movsx 'movzx) - result temp))))) + (inst ,(if (eq size :dword) 'mov (if signed 'movsx 'movzx)) + result + (make-ea ,size :base sap :index offset)))) (define-vop (,ref-name-c) (:translate ,ref-name) (:policy :fast-safe) (:args (sap :scs (sap-reg))) (:arg-types system-area-pointer (:constant (signed-byte 32))) (:info offset) - ,@(unless (eq size :dword) - `((:temporary (:sc ,temp-sc :from (:eval 0) :to (:eval 1)) - temp))) (:results (result :scs (,sc))) (:result-types ,type) (:generator 4 - (inst mov ,(if (eq size :dword) 'result 'temp) - (make-ea ,size :base sap :disp offset)) - ,@(unless (eq size :dword) - `((inst ,(if signed 'movsx 'movzx) - result temp))))) + (inst ,(if (eq size :dword) 'mov (if signed 'movsx 'movzx)) + result + (make-ea ,size :base sap :disp offset)))) (define-vop (,set-name) (:translate ,set-name) (:policy :fast-safe) -- GitLab