aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Sawdey <acsawdey@linux.ibm.com>2018-11-29 03:56:14 +0000
committerAaron Sawdey <acsawdey@gcc.gnu.org>2018-11-28 21:56:14 -0600
commit645eee7431fef4cc37c5307a6c6f81fcc6c553d4 (patch)
tree673904390a79b188f271706b80f1a2bbafa46f55
parentffe2c05539d5ec6bfc4154fcdc71c41adf900a29 (diff)
downloadgcc-645eee7431fef4cc37c5307a6c6f81fcc6c553d4.zip
gcc-645eee7431fef4cc37c5307a6c6f81fcc6c553d4.tar.gz
gcc-645eee7431fef4cc37c5307a6c6f81fcc6c553d4.tar.bz2
rs6000-string.c (expand_block_clear): Change how we determine if unaligned vsx is ok.
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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/rs6000-string.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6607cd7..98f4f3f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/rs6000/rs6000-string.c b/gcc/config/rs6000/rs6000-string.c
index 620be2b..bc5bec2 100644
--- a/gcc/config/rs6000/rs6000-string.c
+++ b/gcc/config/rs6000/rs6000-string.c
@@ -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;