]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
aarch64: Avoid creating an unused register
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 20 Feb 2020 15:04:19 +0000 (15:04 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Fri, 21 Feb 2020 10:17:28 +0000 (10:17 +0000)
The rsqrt path of aarch64_emit_approx_sqrt created a pseudo
register that it never used.

2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Don't create
an unused xmsk register when handling approximate rsqrt.

gcc/ChangeLog
gcc/config/aarch64/aarch64.c

index 16a23d009447702e3898604902c78037bd384d69..8241af4fbef997893b751437a82bd8cb73500432 100644 (file)
@@ -1,3 +1,8 @@
+2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Don't create
+       an unused xmsk register when handling approximate rsqrt.
+
 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
 
        * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Fix inverted
index 6fb567ae4bfd6efe6fc0eb97e754735bfe77e8b7..0acaa06b91c47095cb355ab6212eaacf27e780d8 100644 (file)
@@ -12774,14 +12774,17 @@ aarch64_emit_approx_sqrt (rtx dst, rtx src, bool recp)
   machine_mode mmsk = (VECTOR_MODE_P (mode)
                       ? related_int_vector_mode (mode).require ()
                       : int_mode_for_mode (mode).require ());
-  rtx xmsk = gen_reg_rtx (mmsk);
+  rtx xmsk = NULL_RTX;
   if (!recp)
-    /* When calculating the approximate square root, compare the
-       argument with 0.0 and create a mask.  */
-    emit_insn (gen_rtx_SET (xmsk,
-                           gen_rtx_NEG (mmsk,
-                                        gen_rtx_EQ (mmsk, src,
-                                                    CONST0_RTX (mode)))));
+    {
+      /* When calculating the approximate square root, compare the
+        argument with 0.0 and create a mask.  */
+      xmsk = gen_reg_rtx (mmsk);
+      emit_insn (gen_rtx_SET (xmsk,
+                             gen_rtx_NEG (mmsk,
+                                          gen_rtx_EQ (mmsk, src,
+                                                      CONST0_RTX (mode)))));
+    }
 
   /* Estimate the approximate reciprocal square root.  */
   rtx xdst = gen_reg_rtx (mode);