rs6000-string.c (expand_block_clear): Change how we determine if unaligned vsx is ok.
authorAaron Sawdey <acsawdey@linux.ibm.com>
Thu, 29 Nov 2018 03:56:14 +0000 (03:56 +0000)
committerAaron Sawdey <acsawdey@gcc.gnu.org>
Thu, 29 Nov 2018 03:56:14 +0000 (21:56 -0600)
2018-11-28  Aaron Sawdey  <acsawdey@linux.ibm.com>

* config/rs6000/rs6000-string.c (expand_block_clear): Change how
we determine if unaligned vsx is ok.

From-SVN: r266599

gcc/ChangeLog
gcc/config/rs6000/rs6000-string.c

index 6607cd7c7102021c6121b0f9d2eab0b2178a8dfd..98f4f3fe3a8599f8f66bb0d539d8b85b923ef85d 100644 (file)
@@ -1,3 +1,8 @@
+2018-11-28  Aaron Sawdey  <acsawdey@linux.ibm.com>
+
+       * config/rs6000/rs6000-string.c (expand_block_clear): Change how
+       we determine if unaligned vsx is ok.
+
 2018-11-28  Jan Hubicka  <jh@suse.cz>
 
        * predict.c (determine_unlikely_bbs): Forward declare; also determine
index 620be2b7325e9dfc507b47d1aca900a6287877e9..bc5bec2045e639c3069a481f8de8dfee159c3a82 100644 (file)
@@ -85,14 +85,15 @@ expand_block_clear (rtx operands[])
   if (! optimize_size && bytes > 8 * clear_step)
     return 0;
 
+  bool unaligned_vsx_ok = (bytes >= 32 && TARGET_EFFICIENT_UNALIGNED_VSX);
+
   for (offset = 0; bytes > 0; offset += clear_bytes, bytes -= clear_bytes)
     {
       machine_mode mode = BLKmode;
       rtx dest;
 
       if (TARGET_ALTIVEC
-         && ((bytes >= 16 && align >= 128)
-             || (bytes >= 32 && TARGET_EFFICIENT_UNALIGNED_VSX)))
+         && (bytes >= 16 && (align >= 128 || unaligned_vsx_ok)))
        {
          clear_bytes = 16;
          mode = V4SImode;