diff options
author | YunQiang Su <yunqiang.su@cipunited.com> | 2023-11-09 17:21:41 +0800 |
---|---|---|
committer | YunQiang Su <yunqiang.su@cipunited.com> | 2023-11-09 17:59:23 +0800 |
commit | 78bfc86bf28cb280fac4fe26726c024e6acfc71c (patch) | |
tree | d4b107fab499e864d8f55c205f800216be58cdcd /gcc | |
parent | 3a6df3281a525ae6113f50d7b38b09fcd803801e (diff) | |
download | gcc-78bfc86bf28cb280fac4fe26726c024e6acfc71c.zip gcc-78bfc86bf28cb280fac4fe26726c024e6acfc71c.tar.gz gcc-78bfc86bf28cb280fac4fe26726c024e6acfc71c.tar.bz2 |
MIPS: Use -mnan value for -mabs if not specified
On most hardware, FCSR.ABS2008 is set the value same with FCSR.NAN2008.
Let's use this behaivor by default in GCC, aka
gcc -mnan=2008 -c fabs.c
will imply `-mabs=2008`.
And of course, `gcc -mnan=2008 -mabs=legacy` can continue workable
like previous.
gcc/ChangeLog
* config/mips/mips.cc(mips_option_override): Set mips_abs to
2008, if mips_abs is default and mips_nan is 2008.
gcc/testsuite/
* gcc.target/mips/fabs-nan2008.c: New test.
* gcc.target/mips/fabsf-nan2008.c: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/mips/mips.cc | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/fabs-nan2008.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/fabsf-nan2008.c | 10 |
3 files changed, 22 insertions, 0 deletions
diff --git a/gcc/config/mips/mips.cc b/gcc/config/mips/mips.cc index a304e1c..cbd7d9b 100644 --- a/gcc/config/mips/mips.cc +++ b/gcc/config/mips/mips.cc @@ -20550,6 +20550,8 @@ mips_option_override (void) /* Set NaN and ABS defaults. */ if (mips_nan == MIPS_IEEE_754_DEFAULT && !ISA_HAS_IEEE_754_LEGACY) mips_nan = MIPS_IEEE_754_2008; + if (mips_abs == MIPS_IEEE_754_DEFAULT && mips_nan == MIPS_IEEE_754_2008) + mips_abs = MIPS_IEEE_754_2008; if (mips_abs == MIPS_IEEE_754_DEFAULT && !ISA_HAS_IEEE_754_LEGACY) mips_abs = MIPS_IEEE_754_2008; diff --git a/gcc/testsuite/gcc.target/mips/fabs-nan2008.c b/gcc/testsuite/gcc.target/mips/fabs-nan2008.c new file mode 100644 index 0000000..9e2719b --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/fabs-nan2008.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-mnan=2008" } */ + +NOMIPS16 double +fabs_2008 (double d) +{ + return __builtin_fabs (d); +} + +/* { dg-final { scan-assembler "\tabs\\.d\t" } } */ diff --git a/gcc/testsuite/gcc.target/mips/fabsf-nan2008.c b/gcc/testsuite/gcc.target/mips/fabsf-nan2008.c new file mode 100644 index 0000000..11c4234 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/fabsf-nan2008.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-mnan=2008" } */ + +NOMIPS16 float +fabsf_2008 (float f) +{ + return __builtin_fabsf (f); +} + +/* { dg-final { scan-assembler "\tabs\\.s\t" } } */ |