Save an instruction in multiplication with CSETM.
authorTaylor R Campbell <campbell@mumble.net>
Wed, 16 Jan 2019 04:47:13 +0000 (04:47 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Wed, 21 Aug 2019 21:34:02 +0000 (21:34 +0000)
src/compiler/machines/aarch64/rulfix.scm

index 4c8bb82aa309db8305c9c0ebbfb91c3a924627cf..82349f13410b4528359748e7c15065c0fe53ed61 100644 (file)
@@ -182,9 +182,8 @@ USA.
           ;; mask is equal to the high 64 bits of a non-overflowing
           ;; multiply, so its xor with the high 64 bits is zero iff no
           ;; overflow.
-          (LAP (MOVZ X ,mask (&U 0))
-               (CMP X ,source1 (&U 0))
-               (CINV X LT ,mask ,mask)
+          (LAP (CMP X ,source1 (&U 0))
+               (CSETM X LT ,mask)
                (CMP X ,source2 (&U 0))
                (CINV X LT ,mask ,mask)
                (ASR X ,regnum:scratch-0 ,source1 (&U ,scheme-type-width))