[PATCH] Hoist reciprocal invariant out of loop

David Edelsohn dje@watson.ibm.com
Fri Apr 8 02:01:00 GMT 2005


	I ran SPEC CPU2000 on powerpc-darwin with four different
combinations: no generation of reciprocal, RTL reciprocal (current
behavior), both Tree-SSA reciprocal (patch) and RTL, and Tree-SSA
reciprocal.  The results for the benchmarks that changed are:

		  no recip	 rtl-only	rtl+tree       tree-only
   300.twolf         -2%             0              0              0
   168.wupwise       -1%             0              0              0
   179.art           -1%             0            -0.5%           -1%
   187.facerec        0              0             +1%             0
   189.lucas         -1%             0              0              0
   200.sixtrack      +1%             0             +2%             0
   301.apsi          -3%             0              0             -0.7%

	Based on the degradation without any optimization (except for
200.sixtrack), the mostly similar performance benefit from the Tree-SSA
version, and the previously discussed problems with the current RTL
implementation in expand_expr_real(), I plan to commit the approved patch
shortly.  We then can begin discussing the removal of the RTL reciprocal
functionality.

	The question of outermost_invariant_loop() versus
outermost_invariant_loop_expr() remains unresolved.  I would appreciate
some further explanation of "gimple rhs operands only" versus "arbitrary
expressions".

Thanks, David



More information about the Gcc-patches mailing list