public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/wschmidt/heads/builtins7)] rs6000: **split me and squash me**
@ 2021-03-09 23:02 William Schmidt
0 siblings, 0 replies; 2+ messages in thread
From: William Schmidt @ 2021-03-09 23:02 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:b7ecd352fffb709fa7eb8fe47dab268134010194
commit b7ecd352fffb709fa7eb8fe47dab268134010194
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Tue Mar 9 17:02:08 2021 -0600
rs6000: **split me and squash me**
2021-03-09 Bill Schmidt <wschmidt@linux.ibm.com>
gcc/
* config/rs6000/rs6000-builtin-new.def (DISASSEMBLE_ACC_INTERNAL):
Correct constant restriction.
* config/rs6000/rs6000-call.c
(rs6000_gimple_fold_new_mma_builtin): Fix built-in code.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 2 +-
gcc/config/rs6000/rs6000-call.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 2398d84f3d7..eb9b7724158 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -3504,7 +3504,7 @@
void __builtin_mma_disassemble_acc (void *, v512 *);
DISASSEMBLE_ACC nothing {mma,quad}
- vuc __builtin_mma_disassemble_acc_internal (v512, const int<1>);
+ vuc __builtin_mma_disassemble_acc_internal (v512, const int<2>);
DISASSEMBLE_ACC_INTERNAL mma_disassemble_acc {mma}
void __builtin_mma_disassemble_pair (void *, v256 *);
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 7e058bc5aad..46776571959 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -13173,7 +13173,7 @@ rs6000_gimple_fold_new_mma_builtin (gimple_stmt_iterator *gsi,
{
/* This is an MMA disassemble built-in function. */
push_gimplify_context (true);
- unsigned nvec = (fncode == MMA_BUILTIN_DISASSEMBLE_ACC) ? 4 : 2;
+ unsigned nvec = (fncode == RS6000_BIF_DISASSEMBLE_ACC) ? 4 : 2;
tree dst_ptr = gimple_call_arg (stmt, 0);
tree src_ptr = gimple_call_arg (stmt, 1);
tree src_type = TREE_TYPE (src_ptr);
^ permalink raw reply [flat|nested] 2+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins7)] rs6000: **split me and squash me**
@ 2021-03-09 19:37 William Schmidt
0 siblings, 0 replies; 2+ messages in thread
From: William Schmidt @ 2021-03-09 19:37 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:bb46834ad9a812cf3209d3c1e5fd5dc1ac3b0bc3
commit bb46834ad9a812cf3209d3c1e5fd5dc1ac3b0bc3
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Tue Mar 9 13:37:28 2021 -0600
rs6000: **split me and squash me**
2021-03-09 Bill Schmidt <wschmidt@linux.ibm.com>
gcc/
* config/rs6000/rs6000-builtin-new.def (BCDSUB_GE_V1TI): New.
(BCDSUB_GE_V16QI): New.
(BCDSUB_LE_V1TI): New.
(BCDSUB_LE_V16QI): New.
(DENB2DFP_V16QI): Fix arguments.
(ASSEMBLE_PAIR_V): New.
(ASSEMBLE_PAIR_V_INTERNAL): New.
(DISASSEMBLE_PAIR_V): New.
(DISASSEMBLE_PAIR_V_INTERNAL): New.
* config/rs6000/rs6000-call.c
(rs6000_gimple_fold_new_mma_builtin): Handle compatibility
builtins.
* config/rs6000/rs6000-overload.def (BCDSUB_GE): New stanza.
(BCDSUB_LE): Likewise.
gcc/testsuite/
* gcc.target/powerpc/fold-vec-splat-misc-invalid.c: Remove
duplicated line.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 26 +++++++++++++++++++++-
gcc/config/rs6000/rs6000-call.c | 14 +++++++++---
gcc/config/rs6000/rs6000-overload.def | 12 ++++++++++
.../powerpc/fold-vec-splat-misc-invalid.c | 1 -
4 files changed, 48 insertions(+), 5 deletions(-)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 4fa1e80ea54..2398d84f3d7 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -2389,12 +2389,24 @@
const signed int __builtin_bcdsub_eq_v16qi (vuc, vuc, const int<1>);
BCDSUB_EQ_V16QI bcdsub_eq_v16qi {}
+ const signed int __builtin_bcdsub_ge_v1ti (vsq, vsq, const int<1>);
+ BCDSUB_GE_V1TI bcdsub_ge_v1ti {}
+
+ const signed int __builtin_bcdsub_ge_v16qi (vuc, vuc, const int<1>);
+ BCDSUB_GE_V16QI bcdsub_ge_v16qi {}
+
const signed int __builtin_bcdsub_gt_v1ti (vsq, vsq, const int<1>);
BCDSUB_GT_V1TI bcdsub_gt_v1ti {}
const signed int __builtin_bcdsub_gt_v16qi (vuc, vuc, const int<1>);
BCDSUB_GT_V16QI bcdsub_gt_v16qi {}
+ const signed int __builtin_bcdsub_le_v1ti (vsq, vsq, const int<1>);
+ BCDSUB_LE_V1TI bcdsub_le_v1ti {}
+
+ const signed int __builtin_bcdsub_le_v16qi (vuc, vuc, const int<1>);
+ BCDSUB_LE_V16QI bcdsub_le_v16qi {}
+
const signed int __builtin_bcdsub_lt_v1ti (vsq, vsq, const int<1>);
BCDSUB_LT_V1TI bcdsub_lt_v1ti {}
@@ -2903,7 +2915,7 @@
const _Decimal128 __builtin_denbcdq (const int<1>, _Decimal128);
DENBCDQ dfp_denbcd_td {}
- const _Decimal128 __builtin_denb2dfp_v16qi (const int<1>, vuc);
+ const _Decimal128 __builtin_denb2dfp_v16qi (vuc);
DENB2DFP_V16QI dfp_denbcd_v16qi {}
const _Decimal64 __builtin_diex (signed long long, _Decimal64);
@@ -3866,3 +3878,15 @@
v512 __builtin_mma_xxsetaccz_internal ();
XXSETACCZ_INTERNAL mma_xxsetaccz {mma}
+
+ void __builtin_vsx_assemble_pair (v256 *, vuc, vuc);
+ ASSEMBLE_PAIR_V nothing {mma}
+
+ v256 __builtin_vsx_assemble_pair_internal (vuc, vuc);
+ ASSEMBLE_PAIR_V_INTERNAL vsx_assemble_pair {mma}
+
+ void __builtin_vsx_disassemble_pair (void *, v256 *);
+ DISASSEMBLE_PAIR_V nothing {mma,pair}
+
+ vuc __builtin_vsx_disassemble_pair_internal (v256, const int<2>);
+ DISASSEMBLE_PAIR_V_INTERNAL vsx_disassemble_pair {mma}
diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
index 8afcd1e9429..7e058bc5aad 100644
--- a/gcc/config/rs6000/rs6000-call.c
+++ b/gcc/config/rs6000/rs6000-call.c
@@ -13160,8 +13160,16 @@ rs6000_gimple_fold_new_mma_builtin (gimple_stmt_iterator *gsi,
gimple *new_call;
tree new_decl;
+ /* Compatibility built-ins; we used to call these
+ __builtin_mma_{dis,}assemble_pair, but now we call them
+ __builtin_vsx_{dis,}assemble_pair. Handle the old verions. */
+ if (fncode == RS6000_BIF_ASSEMBLE_PAIR)
+ fncode = RS6000_BIF_ASSEMBLE_PAIR_V;
+ else if (fncode == RS6000_BIF_DISASSEMBLE_PAIR)
+ fncode = RS6000_BIF_DISASSEMBLE_PAIR_V;
+
if (fncode == RS6000_BIF_DISASSEMBLE_ACC
- || fncode == RS6000_BIF_DISASSEMBLE_PAIR)
+ || fncode == RS6000_BIF_DISASSEMBLE_PAIR_V)
{
/* This is an MMA disassemble built-in function. */
push_gimplify_context (true);
@@ -13176,7 +13184,7 @@ rs6000_gimple_fold_new_mma_builtin (gimple_stmt_iterator *gsi,
another accumulator/pair, then just copy the entire thing as is. */
if ((fncode == RS6000_BIF_DISASSEMBLE_ACC
&& TREE_TYPE (TREE_TYPE (dst_ptr)) == vector_quad_type_node)
- || (fncode == RS6000_BIF_DISASSEMBLE_PAIR
+ || (fncode == RS6000_BIF_DISASSEMBLE_PAIR_V
&& TREE_TYPE (TREE_TYPE (dst_ptr)) == vector_pair_type_node))
{
tree dst = build_simple_mem_ref (build1 (VIEW_CONVERT_EXPR,
@@ -13279,7 +13287,7 @@ rs6000_gimple_fold_new_mma_builtin (gimple_stmt_iterator *gsi,
gcc_unreachable ();
}
- if (fncode == RS6000_BIF_ASSEMBLE_PAIR)
+ if (fncode == RS6000_BIF_ASSEMBLE_PAIR_V)
lhs = make_ssa_name (vector_pair_type_node);
else
lhs = make_ssa_name (vector_quad_type_node);
diff --git a/gcc/config/rs6000/rs6000-overload.def b/gcc/config/rs6000/rs6000-overload.def
index ec7211ed7ab..4740d4fd155 100644
--- a/gcc/config/rs6000/rs6000-overload.def
+++ b/gcc/config/rs6000/rs6000-overload.def
@@ -130,12 +130,24 @@
signed int __builtin_vec_bcdsub_eq (vuc, vuc, const int);
BCDSUB_EQ_V16QI
+[BCDSUB_GE, __builtin_bcdsub_ge, __builtin_vec_bcdsub_ge]
+ signed int __builtin_vec_bcdsub_ge (vsq, vsq, const int);
+ BCDSUB_GE_V1TI
+ signed int __builtin_vec_bcdsub_ge (vuc, vuc, const int);
+ BCDSUB_GE_V16QI
+
[BCDSUB_GT, __builtin_bcdsub_gt, __builtin_vec_bcdsub_gt]
signed int __builtin_vec_bcdsub_gt (vsq, vsq, const int);
BCDSUB_GT_V1TI
signed int __builtin_vec_bcdsub_gt (vuc, vuc, const int);
BCDSUB_GT_V16QI
+[BCDSUB_LE, __builtin_bcdsub_le, __builtin_vec_bcdsub_le]
+ signed int __builtin_vec_bcdsub_le (vsq, vsq, const int);
+ BCDSUB_LE_V1TI
+ signed int __builtin_vec_bcdsub_le (vuc, vuc, const int);
+ BCDSUB_LE_V16QI
+
[BCDSUB_LT, __builtin_bcdsub_lt, __builtin_vec_bcdsub_lt]
signed int __builtin_vec_bcdsub_lt (vsq, vsq, const int);
BCDSUB_LT_V1TI
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-misc-invalid.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-misc-invalid.c
index ed64ddac977..263a1723d31 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-misc-invalid.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-misc-invalid.c
@@ -17,7 +17,6 @@ vector unsigned short
testss_2 (signed int si)
{
return vec_splat_u16 (si);/* { dg-error "argument 1 must be a literal between -16 and 15, inclusive" } */
- return vec_splat_u16 (si);/* { dg-error "argument 1 must be a literal between -16 and 15, inclusive" } */
}
vector signed char
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-03-09 23:02 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-09 23:02 [gcc(refs/users/wschmidt/heads/builtins7)] rs6000: **split me and squash me** William Schmidt
-- strict thread matches above, loose matches on Subject: below --
2021-03-09 19:37 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).