public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/wschmidt/heads/builtins)] Remove abs attribute; handle init, set, extract, pred attributes.
@ 2020-02-18 19:25 William Schmidt
  0 siblings, 0 replies; only message in thread
From: William Schmidt @ 2020-02-18 19:25 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:f487763fc8e35fd75da7f03cd067d86047aca428

commit f487763fc8e35fd75da7f03cd067d86047aca428
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date:   Tue Feb 18 13:24:11 2020 -0600

    Remove abs attribute; handle init, set, extract, pred attributes.
    
    2020-02-18  Bill Schmidt  <wschmidt@linux.ibm.com>
    
    	* config/rs6000-builtin-new.def (ABS_V16QI): Remove abs	attribute.
            (ABS_V8HI): Likewise.
            * config/rs6000/rs6000-call.c (rs6000_expand_builtin): Handle
    	init, set, extract, and	pred attributes.
            * config/rs6000/rs6000-gen-builtins.c (Header commentary): Remove
    	abs attribute.
            (attrinfo): Likewise.
            (parse_bif_attrs): Likewise.
            (write_decls): Likewise.
            (write_init_bif_table):	Likewise.

Diff:
---
 gcc/config/rs6000/rs6000-builtin-new.def |  4 ++--
 gcc/config/rs6000/rs6000-call.c          | 14 +++++++++++++-
 gcc/config/rs6000/rs6000-gen-builtins.c  | 27 +++++++++------------------
 3 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 6db9bc9..71ba0fc 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -526,9 +526,9 @@
   const vui __builtin_altivec_vsraw (vui, vui);
     VSRAW_U vashrv4si3 {}
   const vsc __builtin_altivec_abs_v16qi (vsc);
-    ABS_V16QI absv16qi2 {abs}
+    ABS_V16QI absv16qi2 {}
   const vss __builtin_altivec_abs_v8hi (vss);
-    ABS_V8HI absv8hi2 {abs}
+    ABS_V8HI absv8hi2 {}
 
 [MASK_VSX]
   const vd __builtin_altivec_vperm_2df (vd, vd, vuc);
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 91bcb3d..8dab15b 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -11800,7 +11800,19 @@ rs6000_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
       if (bif_is_cpu (*bifaddr))
 	return cpu_expand_builtin (fcode, exp, target);
 
-      /* #### Insert special handling here.  */
+      if (bif_is_init (*bifaddr))
+	return altivec_expand_vec_init_builtin (TREE_TYPE (exp), exp, target);
+
+      if (bif_is_set (*bifaddr))
+	return altivec_expand_vec_set_builtin (exp);
+
+      if (bif_is_extract (*bifaddr))
+	return altivec_expand_vec_ext_builtin (exp, target);
+
+      if (bif_is_predicate (*bifaddr))
+	return altivec_expand_predicate_builtin (icode, exp, target);
+
+      /* #### Insert more special handling here.  */
 
       rtx pat;
       const int MAX_BUILTIN_ARGS = 5;
diff --git a/gcc/config/rs6000/rs6000-gen-builtins.c b/gcc/config/rs6000/rs6000-gen-builtins.c
index e5831e9..17a6c4b 100644
--- a/gcc/config/rs6000/rs6000-gen-builtins.c
+++ b/gcc/config/rs6000/rs6000-gen-builtins.c
@@ -69,7 +69,6 @@ along with GCC; see the file COPYING3.  If not see
      ldvec    Needs special handling for vec_ld semantics
      stvec    Needs special handling for vec_st semantics
      reve     Needs special handling for element reversal
-     abs      Needs special handling for absolute value
      pred     Needs special handling for comparison predicates
      htm      Needs special handling for transactional memory
      no32bit  Not valid for TARGET_32BIT
@@ -80,9 +79,9 @@ along with GCC; see the file COPYING3.  If not see
 
 [TARGET_ALTIVEC]
   const vsc __builtin_altivec_abs_v16qi (vsc);
-    ABS_V16QI absv16qi2 {abs}
+    ABS_V16QI absv16qi2 {}
   const vss __builtin_altivec_abs_v8hi (vss);
-    ABS_V8HI absv8hi2 {abs}
+    ABS_V8HI absv8hi2 {}
 
    Here "vsc" and "vss" are shorthand for "vector signed char" and
    "vector signed short" to shorten line lengths and improve readability.
@@ -240,7 +239,6 @@ struct attrinfo {
   char isldvec;
   char isstvec;
   char isreve;
-  char isabs;
   char ispred;
   char ishtm;
   char isno32bit;
@@ -1054,8 +1052,6 @@ parse_bif_attrs (attrinfo *attrptr)
 	  attrptr->isstvec = 1;
 	else if (!strcmp (attrname, "reve"))
 	  attrptr->isreve = 1;
-	else if (!strcmp (attrname, "abs"))
-	  attrptr->isabs = 1;
 	else if (!strcmp (attrname, "pred"))
 	  attrptr->ispred = 1;
 	else if (!strcmp (attrname, "htm"))
@@ -1096,11 +1092,11 @@ parse_bif_attrs (attrinfo *attrptr)
 
 #ifdef DEBUG
   (*diag) ("attribute set: init = %d, set = %d, extract = %d, \
-nosoft = %d, ldvec = %d, stvec = %d, reve = %d, abs = %d, pred = %d, \
+nosoft = %d, ldvec = %d, stvec = %d, reve = %d, pred = %d, \
 htm = %d, no32bit = %d, cpu = %d, ldstmask = %d.\n",
 	   attrptr->isinit, attrptr->isset, attrptr->isextract,
 	   attrptr->isnosoft, attrptr->isldvec, attrptr->isstvec,
-	   attrptr->isreve, attrptr->isabs, attrptr->ispred, attrptr->ishtm,
+	   attrptr->isreve, attrptr->ispred, attrptr->ishtm,
 	   attrptr->isno32bit, attrptr->iscpu, attrptr->isldstmask);
 #endif
 
@@ -1778,12 +1774,11 @@ write_decls ()
   fprintf (header_file, "#define bif_ldvec_bit\t\t(0x00000010)\n");
   fprintf (header_file, "#define bif_stvec_bit\t\t(0x00000020)\n");
   fprintf (header_file, "#define bif_reve_bit\t\t(0x00000040)\n");
-  fprintf (header_file, "#define bif_abs_bit\t\t(0x00000080)\n");
-  fprintf (header_file, "#define bif_pred_bit\t\t(0x00000100)\n");
-  fprintf (header_file, "#define bif_htm_bit\t\t(0x00000200)\n");
-  fprintf (header_file, "#define bif_no32bit_bit\t\t(0x00000400)\n");
-  fprintf (header_file, "#define bif_cpu_bit\t\t(0x00000800)\n");
-  fprintf (header_file, "#define bif_ldstmask_bit\t(0x00001000)\n");
+  fprintf (header_file, "#define bif_pred_bit\t\t(0x00000080)\n");
+  fprintf (header_file, "#define bif_htm_bit\t\t(0x00000100)\n");
+  fprintf (header_file, "#define bif_no32bit_bit\t\t(0x00000200)\n");
+  fprintf (header_file, "#define bif_cpu_bit\t\t(0x00000400)\n");
+  fprintf (header_file, "#define bif_ldstmask_bit\t(0x00000800)\n");
   fprintf (header_file, "\n");
   fprintf (header_file,
 	   "#define bif_is_init(x)\t\t((x).bifattrs & bif_init_bit)\n");
@@ -1800,8 +1795,6 @@ write_decls ()
   fprintf (header_file,
 	   "#define bif_is_reve(x)\t\t((x).bifattrs & bif_reve_bit)\n");
   fprintf (header_file,
-	   "#define bif_is_abs(x)\t\t((x).bifattrs & bif_abs_bit)\n");
-  fprintf (header_file,
 	   "#define bif_is_predicate(x)\t((x).bifattrs & bif_pred_bit)\n");
   fprintf (header_file,
 	   "#define bif_is_htm(x)\t\t((x).bifattrs & bif_htm_bit)\n");
@@ -2012,8 +2005,6 @@ write_init_bif_table ()
 	fprintf (init_file, " | bif_stvec_bit");
       if (bifs[i].attrs.isreve)
 	fprintf (init_file, " | bif_reve_bit");
-      if (bifs[i].attrs.isabs)
-	fprintf (init_file, " | bif_abs_bit");
       if (bifs[i].attrs.ispred)
 	fprintf (init_file, " | bif_pred_bit");
       if (bifs[i].attrs.ishtm)


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-02-18 19:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-18 19:25 [gcc(refs/users/wschmidt/heads/builtins)] Remove abs attribute; handle init, set, extract, pred attributes William Schmidt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).