]> birchwood-abbey.net Git - mit-scheme.git/commitdiff
aarch64: Fix shifted-12 immediate operands.
authorTaylor R Campbell <campbell+mit-scheme@mumble.net>
Sat, 31 Oct 2020 16:43:10 +0000 (16:43 +0000)
committerTaylor R Campbell <campbell+mit-scheme@mumble.net>
Thu, 31 Dec 2020 18:33:07 +0000 (18:33 +0000)
(cherry picked from commit 1b579ae2c6d2e2db96d7d01ff083e2227b46715c)

src/compiler/machines/aarch64/lapgen.scm

index 0609253242caac3364749cbe857bf4e311c49e73..5b52cce12ab486623f810df33e2665ee30d5074e 100644 (file)
@@ -412,12 +412,12 @@ USA.
          (add `(&U ,imm)))
         ((and (zero? (bitwise-and imm (bit-mask 12 0)))
               (fits-in-unsigned-12? (shift-right imm 12)))
-         (add `(LSL (&U ,imm) 12)))
+         (add `(LSL (&U ,(shift-right imm 12)) 12)))
         ((fits-in-unsigned-12? (- imm))
          (sub `(&U ,(- imm))))
         ((and (zero? (bitwise-and (- imm) (bit-mask 12 0)))
               (fits-in-unsigned-12? (shift-right (- imm) 12)))
-         (sub `(LSL (&U ,(- imm)) 12)))
+         (sub `(LSL (&U ,(shift-right (- imm) 12)) 12)))
         (else
          (let ((temp (get-temporary)))
            (LAP ,@(load-unsigned-immediate temp imm)