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

* [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

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 19:37 [gcc(refs/users/wschmidt/heads/builtins7)] rs6000: **split me and squash me** William Schmidt
2021-03-09 23:02 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).