## Diff of /src/assembly/alpha/arith.lisp[bae5da] .. [c23e4d]  Maximize  Restore

### Switch to side-by-side view

```--- a/src/assembly/alpha/arith.lisp
+++ b/src/assembly/alpha/arith.lisp
@@ -32,7 +32,6 @@

(:temp temp non-descriptor-reg nl0-offset)
(:temp temp2 non-descriptor-reg nl1-offset)
-                          (:temp temp3 non-descriptor-reg nl2-offset)
(:temp lip interior-reg lip-offset)
(:temp lra descriptor-reg lra-offset)
(:temp nargs any-reg nargs-offset)
@@ -42,7 +41,7 @@
(inst bne temp DO-STATIC-FUN)

-  (inst move x temp3)                    ; save a copy of x
+  (inst move x temp2)                    ; save a copy of x

;; check for overflow.  this is a long and complicated process because
@@ -50,18 +49,16 @@
;; prefering instead to provide instructions which trap to the OS on
;; overflow.  trapping to the OS would cause all sorts of problems, I
;; think, so we do things the long way.
-  (inst xor temp3 y temp)		; combine x and y's sign bit
-  (inst srl temp 63 temp)
-  (inst bne temp DONE)                 ; they were not equal, get out of here
+  (inst xor temp2 y temp)		; combine x and y's sign bit
+  (inst blt temp DONE)                  ; they were not equal, get out of here

;; even if the sign bits were equal, the addition might not have
;; overflowed.  check the sign bit of the result.
-  (inst xor res temp3 temp)		; combine res and x's sign bit
-  (inst srl temp 63 temp)
-  (inst beq temp DONE)			; they were equal, get out of here
+  (inst xor res temp2 temp)		; combine res and x's sign bit
+  (inst bge temp DONE)			; they were equal, get out of here

;; do the add the proper way
-  (inst sra temp3 n-fixnum-tag-bits temp)
+  (inst sra temp2 n-fixnum-tag-bits temp)
(inst sra y n-fixnum-tag-bits temp2)

@@ -89,7 +86,6 @@

(:temp temp non-descriptor-reg nl0-offset)
(:temp temp2 non-descriptor-reg nl1-offset)
-                          (:temp temp3 non-descriptor-reg nl2-offset)
(:temp lip interior-reg lip-offset)
(:temp lra descriptor-reg lra-offset)
(:temp nargs any-reg nargs-offset)
@@ -99,21 +95,19 @@
(inst bne temp DO-STATIC-FUN)

-  (inst move x temp3)
+  (inst move x temp2)
(inst subq x y res)

;; check for overflow
-  (inst xor y temp3 temp)               ; combine sign bits
-  (inst srl temp 63 temp)
-  (inst beq temp DONE)                  ; they were equal, get out of here
+  (inst xor y temp2 temp)               ; combine sign bits
+  (inst bge temp DONE)                  ; they were equal, get out of here

;; check the sign bit of the result
-  (inst xor res temp3 temp)		; combine sign bits
-  (inst srl temp 63 temp)
-  (inst beq temp DONE)			; they were equal, get out of here
+  (inst xor res temp2 temp)		; combine sign bits
+  (inst bge temp DONE)			; they were equal, get out of here

;; do the subtract the proper way
-  (inst sra temp3 n-fixnum-tag-bits temp)
+  (inst sra temp2 n-fixnum-tag-bits temp)
(inst sra y n-fixnum-tag-bits temp2)
(inst subq temp temp2 temp)

```