Patchwork [mips] Add nan2008 multilibs to mips-mti-* targets.

login
register
mail settings
Submitter Steve Ellcey
Date Aug. 7, 2013, 10:24 p.m.
Message ID <8e7346c2-89be-4adf-bc79-e48cb3296499@BAMAIL02.ba.imgtec.org>
Download mbox | patch
Permalink /patch/265614/
State New
Headers show

Comments

Steve Ellcey - Aug. 7, 2013, 10:24 p.m.
I would like to add new variations to the mips-mti-elf and mips-mti-linux
targets to support the new NaN format on MIPS (mnan=2008 for IEEE 754-2008).
While I was doing this I noticed that I was handling mips16 and micromips
in a dumb manner.  I had them in MULTILIB_OPTIONS as non-exclusive flags
and then used MULTILIB_EXCEPTIONS to not allow them to both be used.
So I also changed MULTILIB_OPTIONS to make mips16 and micromips exclusive and
then I could get rid of one of the MULTILIB_EXCEPTIONS entries.  I also
make the new mnan=2008 flag exclusive of msoft-float since it is only
useful for hard-float.

OK to checkin?

Steve Ellcey
sellcey@mips.com

2013-08-07  Steve Ellcey  <sellcey@mips.com>

	* config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Add nan2008.
	* config/mips/t-mti-elf (MULTILIB_OPTIONS): Make mips16 and
	micromips incompatible.  Add nan2008.
	(MULTILIB_DIRNAMES): Add nan2008.
	(MULTILIB_EXCEPTIONS): Remove mips16/micromips entry.
	* config/mips/t-mti-linux (MULTILIB_OPTIONS): Make mips16
	and micromips incompatible.  Add nan2008.
	(MULTILIB_DIRNAMES): Add nan2008.
	(MULTILIB_EXCEPTIONS): Remove mips16/micromips entry.
Richard Sandiford - Aug. 8, 2013, 6:58 p.m.
"Steve Ellcey " <sellcey@mips.com> writes:
> I would like to add new variations to the mips-mti-elf and mips-mti-linux
> targets to support the new NaN format on MIPS (mnan=2008 for IEEE 754-2008).
> While I was doing this I noticed that I was handling mips16 and micromips
> in a dumb manner.  I had them in MULTILIB_OPTIONS as non-exclusive flags
> and then used MULTILIB_EXCEPTIONS to not allow them to both be used.
> So I also changed MULTILIB_OPTIONS to make mips16 and micromips exclusive and
> then I could get rid of one of the MULTILIB_EXCEPTIONS entries.

Good spot.  Looks like you could do the same thing with -mabi=64, but it
isn't as logical as the mips16/micromips thing and probably wouldn't win much.

> I also make the new mnan=2008 flag exclusive of msoft-float since it
> is only useful for hard-float.

Well, it's useful for both, because -msoft-float uses the same NaN
format as -mhard-float.  But not having the multilib is fine.

> 2013-08-07  Steve Ellcey  <sellcey@mips.com>
>
> 	* config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Add nan2008.
> 	* config/mips/t-mti-elf (MULTILIB_OPTIONS): Make mips16 and
> 	micromips incompatible.  Add nan2008.
> 	(MULTILIB_DIRNAMES): Add nan2008.
> 	(MULTILIB_EXCEPTIONS): Remove mips16/micromips entry.
> 	* config/mips/t-mti-linux (MULTILIB_OPTIONS): Make mips16
> 	and micromips incompatible.  Add nan2008.
> 	(MULTILIB_DIRNAMES): Add nan2008.
> 	(MULTILIB_EXCEPTIONS): Remove mips16/micromips entry.

OK, thanks.

Richard

Patch

diff --git a/gcc/config/mips/mti-linux.h b/gcc/config/mips/mti-linux.h
index 45bc0b8..96dcac4 100644
--- a/gcc/config/mips/mti-linux.h
+++ b/gcc/config/mips/mti-linux.h
@@ -20,7 +20,7 @@  along with GCC; see the file COPYING3.  If not see
 /* This target is a multilib target, specify the sysroot paths.  */
 #undef SYSROOT_SUFFIX_SPEC
 #define SYSROOT_SUFFIX_SPEC \
-    "%{mips32:/mips32}%{mips64:/mips64}%{mips64r2:/mips64r2}%{mips16:/mips16}%{mmicromips:/micromips}%{mabi=64:/64}%{mel|EL:/el}%{msoft-float:/sof}"
+    "%{mips32:/mips32}%{mips64:/mips64}%{mips64r2:/mips64r2}%{mips16:/mips16}%{mmicromips:/micromips}%{mabi=64:/64}%{mel|EL:/el}%{msoft-float:/sof}%{mnan=2008:/nan2008}"
 
 #undef DRIVER_SELF_SPECS
 #define DRIVER_SELF_SPECS						\
diff --git a/gcc/config/mips/t-mti-elf b/gcc/config/mips/t-mti-elf
index bce8f06..4aec70c 100644
--- a/gcc/config/mips/t-mti-elf
+++ b/gcc/config/mips/t-mti-elf
@@ -19,8 +19,8 @@ 
 # The default build is mips32r2, hard-float big-endian.  Add mips32,
 # soft-float, and little-endian variations.
 
-MULTILIB_OPTIONS = mips32/mips64/mips64r2 mips16 mmicromips mabi=64 EL msoft-float
-MULTILIB_DIRNAMES = mips32 mips64 mips64r2 mips16 micromips 64 el sof
+MULTILIB_OPTIONS = mips32/mips64/mips64r2 mips16/mmicromips mabi=64 EL msoft-float/mnan=2008
+MULTILIB_DIRNAMES = mips32 mips64 mips64r2 mips16 micromips 64 el sof nan2008
 MULTILIB_MATCHES = EL=mel EB=meb
 
 # The 64 bit ABI is not supported on the mips32 architecture.
@@ -36,9 +36,7 @@  MULTILIB_EXCEPTIONS += mabi=64*
 MULTILIB_EXCEPTIONS += *mips64*/*mips16*
 MULTILIB_EXCEPTIONS += *mips16/mabi=64*
 
-# We only want micromips for mips32r2 architecture and we do not want
-# it used in conjunction with -mips16.
-MULTILIB_EXCEPTIONS += *mips16/mmicromips*
+# We only want micromips for mips32r2 architecture.
 MULTILIB_EXCEPTIONS += *mips64*/mmicromips*
 MULTILIB_EXCEPTIONS += *mips32/mmicromips*
 MULTILIB_EXCEPTIONS += *mmicromips/mabi=64*
diff --git a/gcc/config/mips/t-mti-linux b/gcc/config/mips/t-mti-linux
index bce8f06..4aec70c 100644
--- a/gcc/config/mips/t-mti-linux
+++ b/gcc/config/mips/t-mti-linux
@@ -19,8 +19,8 @@ 
 # The default build is mips32r2, hard-float big-endian.  Add mips32,
 # soft-float, and little-endian variations.
 
-MULTILIB_OPTIONS = mips32/mips64/mips64r2 mips16 mmicromips mabi=64 EL msoft-float
-MULTILIB_DIRNAMES = mips32 mips64 mips64r2 mips16 micromips 64 el sof
+MULTILIB_OPTIONS = mips32/mips64/mips64r2 mips16/mmicromips mabi=64 EL msoft-float/mnan=2008
+MULTILIB_DIRNAMES = mips32 mips64 mips64r2 mips16 micromips 64 el sof nan2008
 MULTILIB_MATCHES = EL=mel EB=meb
 
 # The 64 bit ABI is not supported on the mips32 architecture.
@@ -36,9 +36,7 @@  MULTILIB_EXCEPTIONS += mabi=64*
 MULTILIB_EXCEPTIONS += *mips64*/*mips16*
 MULTILIB_EXCEPTIONS += *mips16/mabi=64*
 
-# We only want micromips for mips32r2 architecture and we do not want
-# it used in conjunction with -mips16.
-MULTILIB_EXCEPTIONS += *mips16/mmicromips*
+# We only want micromips for mips32r2 architecture.
 MULTILIB_EXCEPTIONS += *mips64*/mmicromips*
 MULTILIB_EXCEPTIONS += *mips32/mmicromips*
 MULTILIB_EXCEPTIONS += *mmicromips/mabi=64*