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).