This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [tree-ssa] RFC: Never gimplify ASM_EXPRs


On Thu, 05 Jun 2003 11:12:36 -0400, Jason Merrill <jason@redhat.com> wrote:

> Andrew and I discussed this issue at the summit, and agreed (I thought)
> that the asm should either make the operand an input/output operand or pass
> in X and do the dereference in the explicit assembly.

Thus:

*** boehm-gc/include/private/gcconfig.h.~1~	2003-05-07 11:14:51.000000000 -0400
--- boehm-gc/include/private/gcconfig.h	2003-06-05 11:50:33.000000000 -0400
***************
*** 973,979 ****
  #       endif
  #	ifdef USE_I686_PREFETCH
  #	  define PREFETCH(x) \
! 	    __asm__ __volatile__ ("	prefetchnta	%0": : "m"(*(char *)(x)))
  	    /* Empirically prefetcht0 is much more effective at reducing	*/
  	    /* cache miss stalls for the targetted load instructions.  But it	*/
  	    /* seems to interfere enough with other cache traffic that the net	*/
--- 973,979 ----
  #       endif
  #	ifdef USE_I686_PREFETCH
  #	  define PREFETCH(x) \
! 	    __asm__ __volatile__ ("	prefetchnta	(%0)": : "r"((char *)(x)))
  	    /* Empirically prefetcht0 is much more effective at reducing	*/
  	    /* cache miss stalls for the targetted load instructions.  But it	*/
  	    /* seems to interfere enough with other cache traffic that the net	*/
***************
*** 982,995 ****
  	    /* Using prefetches for write seems to have a slight negative	*/
  	    /* impact on performance, at least for a PIII/500.			*/
  #	    define PREFETCH_FOR_WRITE(x) \
! 	      __asm__ __volatile__ ("	prefetcht0	%0": : "m"(*(char *)(x)))
  #	  endif
  #	endif
  #	ifdef USE_3DNOW_PREFETCH
  #	  define PREFETCH(x) \
! 	    __asm__ __volatile__ ("	prefetch	%0": : "m"(*(char *)(x)))
  #	  define PREFETCH_FOR_WRITE(x) \
! 	    __asm__ __volatile__ ("	prefetchw	%0": : "m"(*(char *)(x)))
  #	endif
  #   endif
  #   ifdef CYGWIN32
--- 982,995 ----
  	    /* Using prefetches for write seems to have a slight negative	*/
  	    /* impact on performance, at least for a PIII/500.			*/
  #	    define PREFETCH_FOR_WRITE(x) \
! 	      __asm__ __volatile__ ("	prefetcht0	(%0)": : "r"((char *)(x)))
  #	  endif
  #	endif
  #	ifdef USE_3DNOW_PREFETCH
  #	  define PREFETCH(x) \
! 	    __asm__ __volatile__ ("	prefetch	(%0)": : "r"((char *)(x)))
  #	  define PREFETCH_FOR_WRITE(x) \
! 	    __asm__ __volatile__ ("	prefetchw	(%0)": : "r"((char *)(x)))
  #	endif
  #   endif
  #   ifdef CYGWIN32

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]