[gcc(refs/users/acsawdey/heads/disable-block-ops-vector-pair)] [PATCH][PR96791] disable POImode ld/st for memcpy

Aaron Sawdey acsawdey@gcc.gnu.org
Thu Sep 10 20:17:32 GMT 2020


https://gcc.gnu.org/g:9f07b76c5123df79e0dbaeb4789fa0a0412a4bf3

commit 9f07b76c5123df79e0dbaeb4789fa0a0412a4bf3
Author: Aaron Sawdey <acsawdey@linux.ibm.com>
Date:   Thu Sep 10 15:12:49 2020 -0500

    [PATCH][PR96791] disable POImode ld/st for memcpy
    
    This is a (hopefully temporary) fix to PR96791. This will make
    the default be -mno-block-ops-vector-pair even on power10, so we will
    not hit the issue of DSE trying to truncate a POImode register. I am
    still concerned it will be possible to hit this because the MMA builtins
    will also generate POImode stores, but I think any example of that will
    be somewhat more contrived.
    
    gcc/ChangeLog:
    
            * config/rs6000/rs6000.c (rs6000_option_override_internal):
            Change default.

Diff:
---
 gcc/config/rs6000/rs6000.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index ca5b71ecdd3..e78900607e6 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -4020,10 +4020,11 @@ rs6000_option_override_internal (bool global_init_p)
 
   if (!(rs6000_isa_flags_explicit & OPTION_MASK_BLOCK_OPS_VECTOR_PAIR))
     {
-      if (TARGET_MMA && TARGET_EFFICIENT_UNALIGNED_VSX)
-	rs6000_isa_flags |= OPTION_MASK_BLOCK_OPS_VECTOR_PAIR;
-      else
-	rs6000_isa_flags &= ~OPTION_MASK_BLOCK_OPS_VECTOR_PAIR;
+      /* When the POImode issues of PR96791 are resolved, then we can
+	 once again enable use of vector pair for memcpy/memmove on
+	 P10 if we have TARGET_MMA.  For now we make it disabled by
+	 default for all targets.  */
+      rs6000_isa_flags &= ~OPTION_MASK_BLOCK_OPS_VECTOR_PAIR;
     }
 
   /* Use long double size to select the appropriate long double.  We use


More information about the Gcc-cvs mailing list