rs6000-string.c (expand_block_clear): Don't use unaligned vsx for 16B memset.
authorAaron Sawdey <acsawdey@linux.ibm.com>
Tue, 26 Jun 2018 16:46:51 +0000 (16:46 +0000)
committerAaron Sawdey <acsawdey@gcc.gnu.org>
Tue, 26 Jun 2018 16:46:51 +0000 (11:46 -0500)
2018-06-26  Aaron Sawdey  <acsawdey@linux.ibm.com>

* config/rs6000/rs6000-string.c (expand_block_clear): Don't use
unaligned vsx for 16B memset.

From-SVN: r262158

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

index ebe29e61fa8ba2326288c6fed6d4235a679a38e4..e365a56be68113ef2a743d9b83b41e4c6bd97440 100644 (file)
@@ -1,3 +1,8 @@
+2018-06-26  Aaron Sawdey  <acsawdey@linux.ibm.com>
+
+       * config/rs6000/rs6000-string.c (expand_block_clear): Don't use
+       unaligned vsx for 16B memset.
+
 2018-06-26  Segher Boessenkool  <segher@kernel.crashing.org>
 
        PR target/86285
index 7e49568a1ed9ea375078d7141733ecc74585f28a..f9dd54eb6396d6ec62a2f927cead5eef08f24140 100644 (file)
@@ -90,7 +90,9 @@ expand_block_clear (rtx operands[])
       machine_mode mode = BLKmode;
       rtx dest;
 
-      if (bytes >= 16 && TARGET_ALTIVEC && (align >= 128 || TARGET_EFFICIENT_UNALIGNED_VSX))
+      if (TARGET_ALTIVEC
+         && ((bytes >= 16 && align >= 128)
+             || (bytes >= 32 && TARGET_EFFICIENT_UNALIGNED_VSX)))
        {
          clear_bytes = 16;
          mode = V4SImode;