[gcc/devel/ranger] aarch64: Avoid creating an unused register
Aldy Hernandez
aldyh@gcc.gnu.org
Wed Jun 17 19:04:49 GMT 2020
https://gcc.gnu.org/g:0df28e68fd126d9c3356a3d314be383a877b74a7
commit 0df28e68fd126d9c3356a3d314be383a877b74a7
Author: Richard Sandiford <richard.sandiford@arm.com>
Date: Thu Feb 20 15:04:19 2020 +0000
aarch64: Avoid creating an unused register
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.
Diff:
---
gcc/ChangeLog | 5 +++++
gcc/config/aarch64/aarch64.c | 17 ++++++++++-------
2 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 16a23d00944..8241af4fbef 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 6fb567ae4bf..0acaa06b91c 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -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);
More information about the Gcc-cvs
mailing list