OSDN Git Service

2010-05-17 Christian Borntraeger <borntraeger@de.ibm.com>
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 May 2010 07:52:27 +0000 (07:52 +0000)
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 May 2010 07:52:27 +0000 (07:52 +0000)
        * config/s390/s390.c: Define sane prefetch settings and activate
        flag_prefetch_loop_arrays on -O3.
        * config/s390/s390.h: Declare that read can use write prefetch.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159474 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/s390/s390.c
gcc/config/s390/s390.h

index d4b4e50..7482a36 100644 (file)
@@ -1,3 +1,9 @@
+2010-05-17  Christian Borntraeger  <borntraeger@de.ibm.com>
+
+        * config/s390/s390.c: Define sane prefetch settings and activate
+        flag_prefetch_loop_arrays on -O3.
+        * config/s390/s390.h: Declare that read can use write prefetch.
+
 2010-05-17  Jakub Jelinek  <jakub@redhat.com>
 
        * lto-streamer-out.c (lto_output): Fix --enable-checking=release
index 858aac9..b660e36 100644 (file)
@@ -1475,6 +1475,9 @@ optimization_options (int level ATTRIBUTE_UNUSED, int size ATTRIBUTE_UNUSED)
      without maintaining a stack frame back-chain.  */
   flag_asynchronous_unwind_tables = 1;
 
+  if (HAVE_prefetch || optimize >= 3)
+      flag_prefetch_loop_arrays = 1;
+
   /* Use MVCLE instructions to decrease code size if requested.  */
   if (size != 0)
     target_flags |= MASK_MVCLE;
@@ -1661,6 +1664,19 @@ override_options (void)
     }
 
   set_param_value ("max-pending-list-length", 256);
+  /* values for loop prefetching */
+  set_param_value ("l1-cache-line-size", 256);
+  if (!PARAM_SET_P (PARAM_L1_CACHE_SIZE))
+    set_param_value ("l1-cache-size", 128);
+  /* s390 has more than 2 levels and the size is much larger.  Since
+     we are always running virtualized assume that we only get a small
+     part of the caches above l1.  */
+  if (!PARAM_SET_P (PARAM_L2_CACHE_SIZE))
+    set_param_value ("l2-cache-size", 1500);
+  if (!PARAM_SET_P (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO))
+    set_param_value ("prefetch-min-insn-to-mem-ratio", 2);
+  if (!PARAM_SET_P (PARAM_SIMULTANEOUS_PREFETCHES))
+    set_param_value ("simultaneous-prefetches", 6);
 }
 
 /* Map for smallest class containing reg regno.  */
index 5acdd58..1d74d30 100644 (file)
@@ -989,4 +989,6 @@ do {                                                                        \
   (TARGET_LONG_DISPLACEMENT? ((d) >= -524288 && (d) <= 524287) \
                            : ((d) >= 0 && (d) <= 4095))
 
+/* Reads can reuse write prefetches, used by tree-ssa-prefetch-loops.c.  */
+#define READ_CAN_USE_WRITE_PREFETCH 1
 #endif