[gcc r12-3622] rs6000: Move __builtin_mffsl to the [always] stanza

William Schmidt wschmidt@gcc.gnu.org
Fri Sep 17 14:43:03 GMT 2021


https://gcc.gnu.org/g:0a60524de103288347dd193937059e4e77c64079

commit r12-3622-g0a60524de103288347dd193937059e4e77c64079
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date:   Tue Aug 31 15:13:01 2021 -0500

    rs6000: Move __builtin_mffsl to the [always] stanza
    
    I over-restricted use of __builtin_mffsl, since I was unaware that it
    automatically uses mffs when mffsl is not available.  Paul Clarke pointed
    this out in discussion of his SSE 4.1 compatibility patches.
    
    2021-08-31  Bill Schmidt  <wschmidt@linux.ibm.com>
    
    gcc/
            * config/rs6000/rs6000-builtin-new.def (__builtin_mffsl): Move from
            [power9] to [always].

Diff:
---
 gcc/config/rs6000/rs6000-builtin-new.def | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 6a28d5189f8..a8c6b9e988f 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -208,6 +208,12 @@
   double __builtin_mffs ();
     MFFS rs6000_mffs {}
 
+; Although the mffsl instruction is only available on POWER9 and later
+; processors, this builtin automatically falls back to mffs on older
+; platforms.  Thus it appears here in the [always] stanza.
+  double __builtin_mffsl ();
+    MFFSL rs6000_mffsl {}
+
 ; This thing really assumes long double == __ibm128, and I'm told it has
 ; been used as such within libgcc.  Given that __builtin_pack_ibm128
 ; exists for the same purpose, this should really not be used at all.
@@ -2784,9 +2790,6 @@
   signed long long __builtin_darn_raw ();
     DARN_RAW darn_raw {}
 
-  double __builtin_mffsl ();
-    MFFSL rs6000_mffsl {}
-
   const signed int __builtin_dtstsfi_eq_dd (const int<6>, _Decimal64);
     TSTSFI_EQ_DD dfptstsfi_eq_dd {}


More information about the Gcc-cvs mailing list