[PATCH,rs6000] Remove __builtin_fctid and __builtin_fctiw

Carl Love cel@us.ibm.com
Wed Mar 28 18:57:00 GMT 2018


GCC Maintainers:

The following patch reverts commit 253238 to add support for the fctid
and fctiw builtins for Steve Munroe.                                   
                                      
                                                                                    
    gcc/ChangeLog:                                                                  
                                                                                    
    2017-09-27  Carl Love  <    cel@us.ibm.com    >                                         
                                                                                    
            * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.   
            (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.          
            * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the         
            fctiw instruction.                                                      
                                                                                    
    gcc/testsuite/ChangeLog:                                                        
                                                                                    
    2017-09-27 Carl Love  <    cel@us.ibm.com    >                                          
            * gcc.target/powerpc/builtin-fctid-fctiw-runnable.c: New test file      
            for the __builtin_fctid and __builtin_fctiw.

The commit is being revert due to issues with builtins not working
correctly with -mcpu=power7.  There have been some other concerns about
the builtins and if we really should have these undocumented builtins. 
The decision was made to pull them before they got used.

I have tested the following mainline patch on 

  powerpc64-unknown-linux-gnu (Power 8 BE)
  powerpc64le-unknown-linux-gnu (Power 8 LE)
  powerpc64le-unknown-linux-gnu (Power 9 LE)

with no regressions.

Please let me know if the patch looks OK for the GCC 7 branch.

                         Carl Love
--------------------------------------------------------------

gcc/ChangeLog:

2018-03-20 Carl Love  <cel@us.ibm.com>

	Reverting patch:
	2017-09-27  Carl Love  <cel@us.ibm.com>

	* config/rs6000/rs6000-builtin.def: Remove macro expansion for
	FCTIW and FCTID.  Remove macro definition BU_FP_MISC_1.
	* config/rs6000/rs6000.md: Remove define_insn lrintsfsi2.

gcc/testsuite/ChangeLog:

2018-03-20  Carl Love  <cel@us.ibm.com>

	Reverting patch:
	2017-09-27  Carl Love  <cel@us.ibm.com>

	* gcc.target/powerpc/builtin-fctid-fctiw-runnable.c: Remove test file.
---
 gcc/config/rs6000/rs6000-builtin.def               |  14 ---
 gcc/config/rs6000/rs6000.md                        |   8 --
 .../powerpc/builtin-fctid-fctiw-runnable.c         | 137 ---------------------
 3 files changed, 159 deletions(-)
 delete mode 100644 gcc/testsuite/gcc.target/powerpc/builtin-fctid-fctiw-runnable.c

diff --git a/gcc/config/rs6000/rs6000-builtin.def b/gcc/config/rs6000/rs6000-builtin.def
index 9942d65be..cd9a56e1c 100644
--- a/gcc/config/rs6000/rs6000-builtin.def
+++ b/gcc/config/rs6000/rs6000-builtin.def
@@ -615,17 +615,6 @@
 		     | RS6000_BTC_BINARY),				\
 		    CODE_FOR_ ## ICODE)			/* ICODE */
 
-
-/* Miscellaneous builtins for instructions added prior to ISA 2.04.  These
-   operate on floating point registers.  */
-#define BU_FP_MISC_1(ENUM, NAME, ATTR, ICODE)				\
-  RS6000_BUILTIN_1 (MISC_BUILTIN_ ## ENUM,		/* ENUM */	\
-		    "__builtin_" NAME,			/* NAME */	\
-		    RS6000_BTM_HARD_FLOAT,		/* MASK */	\
-		    (RS6000_BTC_ ## ATTR		/* ATTR */	\
-		     | RS6000_BTC_UNARY),				\
-		    CODE_FOR_ ## ICODE)			/* ICODE */
-
 /* Miscellaneous builtins for instructions added in ISA 2.06.  These
    instructions don't require either the DFP or VSX options, just the basic ISA
    2.06 (popcntd) enablement since they operate on general purpose
@@ -1880,9 +1869,6 @@ BU_VSX_OVERLOAD_X (XL_BE,    "xl_be")
 BU_VSX_OVERLOAD_X (XST,	     "xst")
 BU_VSX_OVERLOAD_X (XST_BE,   "xst_be")
 

-/* 1 argument builtins pre ISA 2.04.  */
-BU_FP_MISC_1 (FCTID,		"fctid",	CONST,  lrintdfdi2)
-BU_FP_MISC_1 (FCTIW,		"fctiw",	CONST,	lrintsfsi2)
 
 /* 2 argument CMPB instructions added in ISA 2.05. */
 BU_P6_2 (CMPB_32,        "cmpb_32",	CONST,	cmpbsi3)
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 7b285efb1..eb77bad71 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -5910,14 +5910,6 @@
   [(set_attr "type" "fpload")
    (set_attr "length" "16")])
 
-(define_insn "lrintsfsi2"
-  [(set (match_operand:SI 0 "gpc_reg_operand" "=d")
-	(unspec:SI [(match_operand:DF 1 "gpc_reg_operand" "d")]
-		   UNSPEC_FCTIW))]
-  "TARGET_SF_FPR && TARGET_FPRND"
-  "fctiw %0,%1"
-  [(set_attr "type" "fp")])
-
 ;; No VSX equivalent to fctid
 (define_insn "lrint<mode>di2"
   [(set (match_operand:DI 0 "gpc_reg_operand" "=d")
diff --git a/gcc/testsuite/gcc.target/powerpc/builtin-fctid-fctiw-runnable.c b/gcc/testsuite/gcc.target/powerpc/builtin-fctid-fctiw-runnable.c
deleted file mode 100644
index b99fae3e1..000000000
--- a/gcc/testsuite/gcc.target/powerpc/builtin-fctid-fctiw-runnable.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/* { dg-do run { target { powerpc*-*-* && { lp64 && p8vector_hw } } } } */
-/* { dg-options "-mcpu=power8" } */
-
-#ifdef DEBUG
-#include <stdio.h>
-#endif
-
-void abort (void);
-
-long
-test_bi_lrint_1 (float __A)
-{
-	return (__builtin_fctid (__A));
-}
-long
-test_bi_lrint_2 (double __A)
-{
-	return (__builtin_fctid (__A));
-}
-
-int
-test_bi_rint_1 (float __A)
-{
-	return (__builtin_fctiw (__A));
-}
-
-int
-test_bi_rint_2 (double __A)
-{
-	return (__builtin_fctiw (__A));
-}
-
-
-int main( void)
-{
-  signed long lx, expected_l;
-  double dy;
-
-  signed int x, expected_i;
-  float y;
-  
-  dy = 1.45;
-  expected_l = 1;
-  lx = __builtin_fctid (dy);
-
-  if( lx != expected_l)
-#ifdef DEBUG
-    printf("ERROR: __builtin_fctid(dy= %f) = %ld, expected %ld\n",
-	   dy, lx, expected_l);
-#else
-    abort();
-#endif
-
-  dy = 3.51;
-  expected_l = 4;
-  lx = __builtin_fctid (dy);
-  
-  if( lx != expected_l)
-#ifdef DEBUG
-    printf("ERROR: __builtin_fctid(dy= %f) = %ld, expected %ld\n",
-	   dy, lx, expected_l);
-#else
-    abort();
-#endif
-
-  dy = 5.57;
-  expected_i = 6;
-  x = __builtin_fctiw (dy);
-
-  if( x != expected_i)
-#ifdef DEBUG
-    printf("ERROR: __builtin_fctiw(dy= %f) = %d, expected %d\n",
-	   dy, x, expected_i);
-#else
-    abort();
-#endif
-
-  y = 11.47;
-  expected_i = 11;
-  x = __builtin_fctiw (y);
-
-  if( x != expected_i)
-#ifdef DEBUG
-    printf("ERROR: __builtin_fctiw(y = %f) = %d, expected %d\n",
-	   y, x, expected_i);
-#else
-    abort();
-#endif
-
-  y = 17.77;
-  expected_l = 18;
-  lx = test_bi_lrint_1 (y);
-
-  if( lx != expected_l)
-#ifdef DEBUG
-    printf("ERROR: function call test_bi_lrint_1 (y = %f) = %ld, expected %ld\n",
-	   y, lx, expected_l);
-#else
-    abort();
-#endif
-
-  dy = 7.1;
-  expected_l = 7;
-  lx = test_bi_lrint_2 (dy);
-
-  if( lx != expected_l)
-#ifdef DEBUG
-    printf("ERROR: function call test_bi_lrint_2 (dy = %f) = %ld, expected %ld\n",
-	   dy, lx, expected_l);
-#else
-    abort();
-#endif
-
-  y = 0.001;
-  expected_i = 0;
-  x = test_bi_rint_1 (y);
-
-  if( x != expected_i)
-#ifdef DEBUG
-    printf("ERROR: function call test_bi_rint_1 (y = %f) = %d, expected %d\n",
-	   y, x, expected_i);
-#else
-    abort();
-#endif
-  
-  dy = 0.9999;
-  expected_i = 1;
-  x = test_bi_rint_2 (dy);
-
-  if( x != expected_i)
-#ifdef DEBUG
-    printf("ERROR: function call test_bi_rint_2 (dy = %f) = %d, expected %d\n",
-	   dy, x, expected_i);
-#else
-    abort();
-#endif
-}
-- 
2.14.1



More information about the Gcc-patches mailing list