Patchwork Enabling Software Prefetching by Default at -O3

login
register
mail settings
Submitter Christian Borntraeger
Date June 25, 2010, 10:40 a.m.
Message ID <201006251240.54401.borntraeger@de.ibm.com>
Download mbox | patch
Permalink /patch/56900/
State New
Headers show

Comments

Christian Borntraeger - June 25, 2010, 10:40 a.m.
Am Donnerstag 24 Juni 2010, 23:18:28 schrieb Fang, Changpeng:
> Hi, 
> 
> Attached is the version of the patch that turns prefetching on at -O3 for AMD cpus
> only. As discussed elsewhere in this thread, we use tri-state for -fprefetch-loop-arrays.
> If this flag is not explicitly set,  (for -O3) we turn it on in gcc/config/i386/i386.c 
> (override_options).
> 
> Is this OK to commit now?

Looks good. As soon as this is committed, somebody  should commit the following fix
that makes fno-prefetch-loop-arrays work again on s390.

Andreas, Ulrich. Can you have a look and apply after Changpengs patch if ok.

Patch

2010-06-25  Christian Borntraeger  <borntraeger@de.ibm.com>
 
	* config/s390/s390.c (override_options): Adopt prefetching
        at -O3 to handle flag_prefetch_loop_arrays as a tristate.

Index: gcc/config/s390/s390.c
===================================================================
*** gcc/config/s390/s390.c.orig
--- gcc/config/s390/s390.c
*************** override_options (void)
*** 1675,1683 ****
      set_param_value ("simultaneous-prefetches", 6);
  
    /* This cannot reside in optimization_options since HAVE_prefetch
!      requires the arch flags to be evaluated already.  */
!   if (HAVE_prefetch && optimize >= 3)
!     flag_prefetch_loop_arrays = 1;
  }
  
  /* Map for smallest class containing reg regno.  */
--- 1675,1684 ----
      set_param_value ("simultaneous-prefetches", 6);
  
    /* This cannot reside in optimization_options since HAVE_prefetch
!      requires the arch flags to be evaluated already.  Since prefetching
!      is benefitial on s390, we enable it if available.  */
!   if (flag_prefetch_loop_arrays < 0 && HAVE_prefetch && optimize >= 3)
!       flag_prefetch_loop_arrays = 1;
  }
  
  /* Map for smallest class containing reg regno.  */