[wwwdocs patch] Document s390 back-end changes for 4.1

Ulrich Weigand uweigand@de.ibm.com
Sat Feb 18 15:40:00 GMT 2006


Gerald Pfeifer wrote:

> Perhaps you'd like to add a bit more on the first and third items above?
> (What does the optimization do?  Where is the set of builtin operations
> defined?  Is it documented in our docs, so that we could refer to that?)

Here's what I have committed now; I've expanded on the descriptions a
bit and used the same wordings as used elsewhere in the manual.  If you
have further suggestions on how to improve on this, I'd be happy to 
implement them as a follow-up ...

Thanks,
Ulrich

Index: htdocs/gcc-4.1/changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-4.1/changes.html,v
retrieving revision 1.16
diff -c -p -r1.16 changes.html
*** htdocs/gcc-4.1/changes.html	7 Feb 2006 19:09:12 -0000	1.16
--- htdocs/gcc-4.1/changes.html	18 Feb 2006 15:35:59 -0000
***************
*** 546,551 ****
--- 546,601 ----
  	precision values if they can be represented exactly.</li>
    </ul>
  
+ <h3>S/390, zSeries and System z9</h3>
+   <ul>
+     <li>Support for the IBM System z9 109 processor has been added.  When
+ 	using the <code>-march=z9-109</code> option, the compiler will
+ 	generate code making use of instructions provided by the extended
+ 	immediate facility.</li>
+     <li>Support for 128-bit IEEE floating point has been added.  When using
+ 	the <code>-mlong-double-128</code> option, the compiler will map the
+ 	<code>long double</code> data type to 128-bit IEEE floating point.
+ 	Using this option constitutes an ABI change, and requires glibc
+ 	support.</li>
+     <li>Various changes to improve performance of generated code have been
+ 	implemented, including:
+       <ul>
+ 	<li>In functions that do not require a literal pool, register
+ 	    <code>%r13</code> (which is traditionally reserved as literal pool
+ 	    pointer), can now be freely used for other purposes by the
+ 	    compiler.</li>
+ 	<li>More precise tracking of register use allows the compiler to
+ 	    generate more efficient function prolog and epilog code in certain
+ 	    cases.</li>
+ 	<li>The <code>SEARCH STRING</code>, <code>COMPARE LOGICAL
+ 	    STRING</code>, and <code>MOVE STRING</code> instructions are now
+ 	    used to implement C string functions.</li>
+ 	<li>The <code>MOVE CHARACTER</code> instruction with single byte
+ 	    overlap is now used to implement the <code>memset</code> function
+ 	    with non-zero fill byte.</li>
+ 	<li>The <code>LOAD ZERO</code> instructions are now used where
+ 	    appropriate.</li>
+ 	<li>The <code>INSERT CHARACTERS UNDER MASK</code>, <code>STORE
+ 	    CHARACTERS UNDER MASK</code>, and <code>INSERT IMMEDIATE</code>
+ 	    instructions are now used more frequently to optimize bitfield
+ 	    operations.</li>
+ 	<li>The <code>BRANCH ON COUNT</code> instruction is now used more
+ 	    frequently.  In particular, the fact that a loop contains a
+ 	    subroutine call no longer prevents the compiler from using this
+ 	    instruction.</li>
+ 	<li>The compiler is now aware that all shift and rotate instructions
+ 	    implicitly truncate the shift count to six bits.</li>
+       </ul></li>
+     <li>Back-end support for the following generic features has been
+ 	implemented:
+       <ul>
+ 	<li>The full set of built-in functions for atomic memory access.</li>
+ 	<li>The <code>-fstack-protector</code> feature.</li>
+ 	<li>The optimization pass avoiding unnecessary stores of incoming 
+ 	    argument registers in functions with variable argument list.</li>
+       </ul></li>
+   </ul>
+ 
  <h3>SPARC</h3>
    <ul>
      <li>The default code model in 64-bit mode has been changed from

-- 
  Dr. Ulrich Weigand
  Linux on zSeries Development
  Ulrich.Weigand@de.ibm.com



More information about the Gcc-patches mailing list