> -----Original Message-----
> From: Matthew Fortune [mailto:matthew.fort...@imgtec.com]
> Sent: Thursday, February 05, 2015 5:24 AM
> To: Moore, Catherine
> Cc: 'gcc-patches@gcc.gnu.org' (gcc-patches@gcc.gnu.org)
> Subject: RE: [PATCH,WWWDOCS] MIPS changes for GCC 5.0
> 
> Moore, Catherine <catherine_mo...@mentor.com> writes:
> > Hi Matthew,
> >
> > I made a few edits.  I removed the markup in the process, so that will
> > need to be added back.
> > See the text at the end.
> 
> Thanks Catherine. Good call to remove the markup while reviewing. I've
> done one more pass on this to have the same phrasing used where similar
> points are being made. I also added a comment about link compatibility for
> FP64.  Updated text is at the end.
> 
This looks good now.

> >
> > > -----Original Message-----
> > > From: Matthew Fortune [mailto:matthew.fort...@imgtec.com]
> > > Sent: Wednesday, February 04, 2015 11:46 AM
> > > To: Moore, Catherine
> > > Cc: 'gcc-patches@gcc.gnu.org' (gcc-patches@gcc.gnu.org)
> > > Subject: [PATCH,WWWDOCS] MIPS changes for GCC 5.0
> > >
> > > Hi Catherine,
> > >
> > > I've made a first pass at writing up the MIPS changes for GCC 5.0.
> > > Could you take a read and see what needs some more work?
> > >
> > > Thanks,
> > > Matthew
> > >
> > > Index: htdocs/gcc-5/changes.html
> > >
> ==========================================================
> > > =========
> > > RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-5/changes.html,v
> > > retrieving revision 1.77
> > > diff -r1.77 changes.html
> > > 562a563,614
> > > > <h3 id="mips">MIPS</h3>
> > > >   <ul>
> > > >     <li>MIPS Releases 3 and 5 are now directly supported using
> > > > <code>-
> > > mips32r3,
> > > >     -mips64r3, -mips32r5 and -mips64r5</code> instead of relying
> > > > on the
> > > Release
> > > >     2 options.</li>
> > > >     <li>Support for the Imagination P5600 processor has been added
> > using
> > > >     <code>-march=p5600</code>.
> > > >     </li>
> > > >     <li>Support for the Cavium Networks Octeon3 processor has been
> > > > added
> > > using
> > > >     <code>-march=octeon3</code>.</li>
> > > >     <li>MIPS Release 6 is now supported using <code>-mips32r6 and
> > > > -
> > > mips64r6
> > > >     </code>.
> > > >     <li>The previous o32 64-bit floating-point register support
> > > > has
> > been
> > > >     obsoleted and removed.  This was previously enabled using
> > > > <code>-
> > > mfp64
> > > >     </code> which has been re-purposed for the new ABI extensions
> > > described
> > > >     below.</li>
> > > >     <li>New o32 ABI extensions have been added to enable software
> > > > to
> > > transition
> > > >     away from the original layout of double-precision
> > > > floating-point
> > registers.
> > > >     <ul>
> > > >       <li>The first of these extensions is o32 FPXX which places
> > restrictions
> > > >       on code-generation to never access the upper 32-bits of
> > > > double-
> > > precision
> > > >       registers via odd-numbered single-precision registers.  By
> > default the
> > > >       odd-numbered single-precision registers are not used at all
> > with this
> > > >       extension.  o32 FPXX code is link compatible with all other
> > o32
> > > >       double-precision ABI variants and will execute correctly in
> > all hardware
> > > >       FPU modes.  Enable o32 FPXX using <code>-mabi=32
> > > > -mfpxx</code>
> > for
> > > >       MIPS II onwards.</li>
> > > >       <li>The second extension is o32 FP64A which requires 64-bit
> > > >       floating-point registers and places a mandatory restriction
> > > > on
> > the use of
> > > >       odd-numbered single-precision registers.  o32 FP64A is link
> > compatible
> > > >       with all other o32 double-precision ABI variants.  Enable
> > > > o32
> > FP64A
> > > >       using <code>-mabi=32 -mfp64 -mno-odd-spreg</code> for
> > > > MIPS32R2
> > > onwards.
> > > >       </li>
> > > >       <li>Finally, the o32 FP64 extension which also requires 64-bit
> > > >       floating-point registers but permits the use of all single-
> > precision
> > > >       registers.  Enable o32 FP64 using <code>-mfp64</code> for
> > MIPS32R2
> > > >       onwards.</li>
> > > >     </ul>
> > > >     All new ABI variants can be enabled by default using configure
> > time
> > > >     options <code>--with-fp-32=[32|xx|64]</code> and
> > > >     <code>--with(out)-odd-sp-reg-32</code>.  It is strongly
> > > > recommended
> > > that
> > > >     all vendors begin to set o32 FPXX as default ABI to be able to
> > run the
> > > >     generated code on MIPSR5 cores alongside future MIPS SIMD
> > > > (MSA)
> > > code and
> > > >     MIPSR6 cores.</li>
> > > >     <li>When using binutils 2.25 GCC will now pass options like
> > > >     <code>-msoft-float</code> and <code>-msingle-float</code> to
> > > > the
> > > assembler.
> > > >     This change can affect inline assembly code that is built as
> > soft-float but
> > > >     contains hard-float instructions.  In such cases the code must
> > > > be
> > > amended
> > > >     to use appropriate <code>.set</code> directives to override
> > > > the
> > global
> > > >     assembler options.</li>
> > > >   </ul>
> > > >
> >
> > MIPS Releases 3 and 5 are now directly supported.  Use the
> > command-line options -mips32r3, -mips64r3, -mips32r5 and -mips64r5 to
> > enable code- generation for these processors.
> >
> > Support for the Imagination P5600 processor is now supported through
> > use of the -march=p5600 command-line option.
> >
> > The Cavium Octeon3 processor is now supported through the use of the
> > command-line option -march=octeon3.
> >
> > MIPS Release 6 is now supported through the use of the -mips32r6 and -
> > mips64r6 command-line options.
> >
> > The o32 ABI has been modified and extended.  The o32 64-bit floating-
> > point register support is now obsolete and has been removed.  It has
> > been replaced by three ABI extensions FPXX, FP64A, and FP64.  The
> > meaning of the -mfp64 command-line option has been changed and it is
> > now used to enable the ABI extensions.
> >
> > The FPXX extension requires that code generated to access double-
> > precision values use even-numbered registers.  Code that adheres to
> > this extension is link-compatible with the other o32 double-precision
> > ABI variants and will execute correctly in all hardware FPU modes.
> > The command-line options
> > -mabi=32 -mfpxx can be used to enable this extension.  MIPS II is the
> > minimum processor required.
> >
> > The o32 FP64A extension requires that floating-point registers be 64-
> > bits and odd-numbered single-precisions registers are not allowed.
> > Code that adheres to the The o32 FP64A variant is link-compatible with
> > the other
> > o32 double-precision ABI variants.  The command-line options -mabi=32
> > -mfp64 -mno-odd-spreg can be used to enable this extension.  MIPS32R2
> > is the minimum processor required.
> >
> > The o32 FP64 extension also requires that floating-point registers be
> > 64-bits, but permits the use of single-precision registers.  The o32
> > FP64 extension is enabled by using the -mfp64 command-line option.
> > MIPS32R2 is the minimum processor required.
> >
> > The new ABI variants can be enabled by default using the configure
> > time options --with-fp-32=[32|xx|64] and --with(out)-odd-sp-reg-32.
> > It is strongly recommended that all vendors begin to set o32 FPXX as
> > the default ABI.  This will be required to run the generated code on
> > MIPSR5 cores in conjunction with future MIPS SIMD (MSA) code and
> MIPSR6 cores.
> >
> > GCC will now pass explicit floating-point options to the assembler if
> > GNU binutils 2.25 is being used.  As a result, any inline assembly
> > code that uses hard-float instructions should be amended to include a
> > .set directive to override the global assembler options when compiling
> > for soft-float targets.
> 
> MIPS Releases 3 and 5 are now directly supported.  Use the command-line
> options -mips32r3, -mips64r3, -mips32r5 and -mips64r5 to enable code-
> generation for these processors.
> 
> The Imagination P5600 processor is now supported using the -march=p5600
> command-line option.
> 
> The Cavium Octeon3 processor is now supported using the command-line
> option -march=octeon3.
> 
> MIPS Release 6 is now supported using -mips32r6 and -mips64r6 command-
> line options.
> 
> The o32 ABI has been modified and extended.  The o32 64-bit floating- point
> register support is now obsolete and has been removed.  It has been
> replaced by three ABI extensions FPXX, FP64A, and FP64.  The meaning of
> the -mfp64 command-line option has been changed and it is now used to
> enable the FP64A and FP64 ABI extensions.
> 
> The FPXX extension requires that code generated to access double- precision
> values use even-numbered registers.  Code that adheres to this extension is
> link-compatible with all other o32 double-precision ABI variants and will
> execute correctly in all hardware FPU modes.  The command-line options -
> mabi=32 -mfpxx can be used to enable this extension.
> MIPS II is the minimum processor required.
> 
> The o32 FP64A extension requires that floating-point registers be 64-bits and
> odd-numbered single-precision registers are not allowed.  Code that adheres
> to the o32 FP64A variant is link-compatible with all other o32 double-
> precision ABI variants.  The command-line options -mabi=32
> -mfp64 -mno-odd-spreg can be used to enable this extension.  MIPS32R2 is
> the minimum processor required.
> 
> The o32 FP64 extension also requires that floating-point registers be 64-bits,
> but permits the use of single-precision registers.  Code that adheres to the
> o32 FP64 variant is link-compatible with o32 FPXX and
> o32 FP64A variants only, i.e. it is not compatible with the original o32 
> double-
> precision ABI. The command-line options -mabi=32 -mfp64 -modd-spreg can
> be used to enable this extension.  MIPS32R2 is the minimum processor
> required.
> 
> The new ABI variants can be enabled by default using the configure time
> options --with-fp-32=[32|xx|64] and --with(out)-odd-sp-reg-32.  It is strongly
> recommended that all vendors begin to set o32 FPXX as the default ABI.  This
> will be required to run the generated code on MIPSR5 cores in conjunction
> with future MIPS SIMD (MSA) code and MIPSR6 cores.
> 
> GCC will now pass all floating-point options to the assembler if GNU binutils
> 2.25 is being used.  As a result, any inline assembly code that uses 
> hard-float
> instructions should be amended to include a .set directive to override the
> global assembler options when compiling for soft-float targets.

Reply via email to