X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fassembly%2Fx86%2Farith.lisp;h=33c04395c5e57006d97a7f601a9437b0ab3f9a2d;hb=1eb303172df6650de51ad12b993a392681f50c50;hp=46aa23c4c1fa53729ecde27d83fe8bc214012b5b;hpb=f78e2d271f540d68d35b4f41696ce746ff129ee3;p=sbcl.git diff --git a/src/assembly/x86/arith.lisp b/src/assembly/x86/arith.lisp index 46aa23c..33c0439 100644 --- a/src/assembly/x86/arith.lisp +++ b/src/assembly/x86/arith.lisp @@ -319,14 +319,8 @@ ;; Generate a new set of results. (inst xor k k) LOOP1 - (inst mov y (make-ea :dword :base state :index k :scale 4 - :disp (- (* (+ 3 vector-data-offset) - n-word-bytes) - other-pointer-lowtag))) - (inst mov tmp (make-ea :dword :base state :index k :scale 4 - :disp (- (* (+ 1 3 vector-data-offset) - n-word-bytes) - other-pointer-lowtag))) + (inst mov y (make-ea-for-vector-data state :index k :offset 3)) + (inst mov tmp (make-ea-for-vector-data state :index k :offset (+ 1 3))) (inst and y #x80000000) (inst and tmp #x7fffffff) (inst or y tmp) @@ -334,27 +328,14 @@ (inst jmp :nc skip1) (inst xor y #x9908b0df) SKIP1 - (inst xor y (make-ea :dword :base state :index k :scale 4 - :disp (- (* (+ 397 3 vector-data-offset) - n-word-bytes) - other-pointer-lowtag))) - (inst mov (make-ea :dword :base state :index k :scale 4 - :disp (- (* (+ 3 vector-data-offset) - n-word-bytes) - other-pointer-lowtag)) - y) + (inst xor y (make-ea-for-vector-data state :index k :offset (+ 397 3))) + (inst mov (make-ea-for-vector-data state :index k :offset 3) y) (inst inc k) (inst cmp k (- 624 397)) (inst jmp :b loop1) LOOP2 - (inst mov y (make-ea :dword :base state :index k :scale 4 - :disp (- (* (+ 3 vector-data-offset) - n-word-bytes) - other-pointer-lowtag))) - (inst mov tmp (make-ea :dword :base state :index k :scale 4 - :disp (- (* (+ 1 3 vector-data-offset) - n-word-bytes) - other-pointer-lowtag))) + (inst mov y (make-ea-for-vector-data state :index k :offset 3)) + (inst mov tmp (make-ea-for-vector-data state :index k :offset (+ 1 3))) (inst and y #x80000000) (inst and tmp #x7fffffff) (inst or y tmp) @@ -362,27 +343,14 @@ (inst jmp :nc skip2) (inst xor y #x9908b0df) SKIP2 - (inst xor y (make-ea :dword :base state :index k :scale 4 - :disp (- (* (+ (- 397 624) 3 vector-data-offset) - n-word-bytes) - other-pointer-lowtag))) - (inst mov (make-ea :dword :base state :index k :scale 4 - :disp (- (* (+ 3 vector-data-offset) - n-word-bytes) - other-pointer-lowtag)) - y) + (inst xor y (make-ea-for-vector-data state :index k :offset (+ (- 397 624) 3))) + (inst mov (make-ea-for-vector-data state :index k :offset 3) y) (inst inc k) (inst cmp k (- 624 1)) (inst jmp :b loop2) - (inst mov y (make-ea :dword :base state - :disp (- (* (+ (- 624 1) 3 vector-data-offset) - n-word-bytes) - other-pointer-lowtag))) - (inst mov tmp (make-ea :dword :base state - :disp (- (* (+ 0 3 vector-data-offset) - n-word-bytes) - other-pointer-lowtag))) + (inst mov y (make-ea-for-vector-data state :offset (+ (- 624 1) 3))) + (inst mov tmp (make-ea-for-vector-data state :offset (+ 0 3))) (inst and y #x80000000) (inst and tmp #x7fffffff) (inst or y tmp) @@ -390,15 +358,8 @@ (inst jmp :nc skip3) (inst xor y #x9908b0df) SKIP3 - (inst xor y (make-ea :dword :base state - :disp (- (* (+ (- 397 1) 3 vector-data-offset) - n-word-bytes) - other-pointer-lowtag))) - (inst mov (make-ea :dword :base state - :disp (- (* (+ (- 624 1) 3 vector-data-offset) - n-word-bytes) - other-pointer-lowtag)) - y) + (inst xor y (make-ea-for-vector-data state :offset (+ (- 397 1) 3))) + (inst mov (make-ea-for-vector-data state :offset (+ (- 624 1) 3)) y) ;; Restore the temporary registers and return. (inst pop tmp)