[AArch64] Don't apply mode_for_int_vector to scalars
authorRichard Sandiford <richard.sandiford@arm.com>
Wed, 23 Oct 2019 10:31:01 +0000 (10:31 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 23 Oct 2019 10:31:01 +0000 (10:31 +0000)
aarch64_emit_approx_sqrt handles both vectors and scalars and was using
mode_for_int_vector even for the scalar case.  Although that happened
to work, it isn't how mode_for_int_vector is supposed to be used.

2019-10-23  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Use
int_mode_for_mode rather than mode_for_int_vector for scalars.

From-SVN: r277311

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

index cfc1bdceab99965fb8cb96d2281f99fd85b2ca6b..c2253b9985ebb6e1942eb6ea77f0178a095d6f2c 100644 (file)
@@ -1,3 +1,8 @@
+2019-10-23  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Use
+       int_mode_for_mode rather than mode_for_int_vector for scalars.
+
 2019-10-23  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/92179
index 2e73f3515bb354bdb763aa016f05510612ec3d80..e439615664f74f1e0d04bb4fca87e0c7ca296994 100644 (file)
@@ -11828,7 +11828,9 @@ aarch64_emit_approx_sqrt (rtx dst, rtx src, bool recp)
     /* Caller assumes we cannot fail.  */
     gcc_assert (use_rsqrt_p (mode));
 
-  machine_mode mmsk = mode_for_int_vector (mode).require ();
+  machine_mode mmsk = (VECTOR_MODE_P (mode)
+                      ? mode_for_int_vector (mode).require ()
+                      : int_mode_for_mode (mode).require ());
   rtx xmsk = gen_reg_rtx (mmsk);
   if (!recp)
     /* When calculating the approximate square root, compare the