no register renaming for i387

Jan Hubicka jh@suse.cz
Tue Aug 7 12:02:00 GMT 2001


Hi,
register renaming together with scheduling increases amount of registers alive
at the moment, that increases amount of fxch instructions needed.  On
modern CPUs it is better to leave this job for on-chip scheduler and avoid
the decoding bootleneck caused by extra fxch instructions.

bootstrapped/regtested i686

Tue Aug  7 21:01:52 CEST 2001  Jan Hubicka  <jh@suse.cz>
	* i386.h (HARD_REGNO_RENAME_OK): New macro.
Index: i386.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/i386/i386.h,v
retrieving revision 1.196
diff -c -3 -p -r1.196 i386.h
*** i386.h	2001/08/06 16:38:17	1.196
--- i386.h	2001/08/07 19:00:23
*************** enum fp_cw_mode {FP_CW_STORED, FP_CW_UNI
*** 3186,3191 ****
--- 3186,3200 ----
     ? emit_i387_cw_initialization (assign_386_stack_local (HImode, 1),	\
  				  assign_386_stack_local (HImode, 2)), 0\
     : 0)
+ 
+ /* Avoid renaming of stack registers, as doing so in combination with
+    scheduling just increases amount of live registers at time and in
+    the turn amount of fxch instructions needed.
+ 
+    ??? Maybe Pentium chips benefits from renaming, someone can try...  */
+ 
+ #define HARD_REGNO_RENAME_OK(src,target)  \
+    ((src) < FIRST_STACK_REG || (src) > LAST_STACK_REG)
  
  
  /*



More information about the Gcc-patches mailing list