compiler/x86: load byte and word values through a sap without a temporary
authorCarl Shapiro <cshapiro@common-lisp.net>
Sun, 11 Aug 2013 06:21:42 +0000 (23:21 -0700)
committerCarl Shapiro <cshapiro@common-lisp.net>
Sun, 11 Aug 2013 06:21:42 +0000 (23:21 -0700)
src/compiler/x86/sap.lisp

index a01112e..bec24be 100644 (file)
         (: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)