From: "Kewen.Lin" <linkw@linux.ibm.com>
To: Carl Love <cel@linux.ibm.com>
Cc: gcc-patches@gcc.gnu.org,
"bergner@linux.ibm.com" <bergner@linux.ibm.com>,
Segher Boessenkool <segher@kernel.crashing.org>
Subject: Re: [PATCH 13/13] rs6000, remove vector set and vector init built-ins.
Date: Tue, 14 May 2024 13:44:36 +0800 [thread overview]
Message-ID: <c3e997a4-88f3-a6e0-d3b8-831dd990fef8@linux.ibm.com> (raw)
In-Reply-To: <3889610b-6342-4145-8b7c-8a0c0b97c78b@linux.ibm.com>
Hi,
on 2024/4/20 05:18, Carl Love wrote:
> rs6000, remove vector set and vector init built-ins.
>
> The vector init built-ins:
>
> __builtin_vec_init_v16qi, __builtin_vec_init_v8hi,
> __builtin_vec_init_v4si, __builtin_vec_init_v4sf,
> __builtin_vec_init_v2di, __builtin_vec_init_v2df,
> __builtin_vec_set_v1ti
>
> perform the same operation as initializing the vector in C code. For
> example:
>
> result_v4si = __builtin_vec_init_v4si (1, 2, 3, 4);
> result_v4si = {1, 2, 3, 4};
>
> These two constructs were tested and verified they generate identical
> assembly instructions with no optimization and -O3 optimization.
>
> The vector set built-ins:
>
> __builtin_vec_set_v16qi, __builtin_vec_set_v8hi.
> __builtin_vec_set_v4si, __builtin_vec_set_v4sf
>
> perform the same operation as setting a specific element in the vector in
> C code. For example:
>
> src_v4si = __builtin_vec_set_v4si (src_v4si, int_val, index);
> src_v4si[index] = int_val;
>
> The built-in actually generates more instructions than the inline C code
> with no optimization but is identical with -O3 optimizations.
>
> All of the above built-ins that are removed do not have test cases and
> are not documented.
>
> Built-ins __builtin_vec_set_v1ti __builtin_vec_set_v2di,
> __builtin_vec_set_v2df are not removed as they are used in function
> resolve_vec_insert() in file rs6000-c.cc.
I think we can replace these calls with the equivalent gimple codes
(early expanding it) and then we can get rid of these instances.
BR,
Kewen
>
> The built-ins are removed as they don't provide any benefit over just
> using C code.
>
> gcc/ChangeLog:
> * config/rs6000/rs6000-builtins.def (__builtin_vec_init_v16qi,
> __builtin_vec_init_v8hi, __builtin_vec_init_v4si,
> __builtin_vec_init_v4sf, __builtin_vec_init_v2di,
> __builtin_vec_init_v2df, __builtin_vec_set_v1ti,
> __builtin_vec_set_v16qi, __builtin_vec_set_v8hi.
> __builtin_vec_set_v4si, __builtin_vec_set_v4sf,
> __builtin_vec_set_v2di, __builtin_vec_set_v2df,
> __builtin_vec_set_v1ti): Remove built-in definitions.
> ---
> gcc/config/rs6000/rs6000-builtins.def | 42 ++-------------------------
> 1 file changed, 2 insertions(+), 40 deletions(-)
>
> diff --git a/gcc/config/rs6000/rs6000-builtins.def b/gcc/config/rs6000/rs6000-builtins.def
> index 19d05b8043a..d04ad4ce7e5 100644
> --- a/gcc/config/rs6000/rs6000-builtins.def
> +++ b/gcc/config/rs6000/rs6000-builtins.def
> @@ -1115,37 +1115,6 @@
> const signed short __builtin_vec_ext_v8hi (vss, signed int);
> VEC_EXT_V8HI nothing {extract}
>
> - const vsc __builtin_vec_init_v16qi (signed char, signed char, signed char, \
> - signed char, signed char, signed char, signed char, signed char, \
> - signed char, signed char, signed char, signed char, signed char, \
> - signed char, signed char, signed char);
> - VEC_INIT_V16QI nothing {init}
> -
> - const vf __builtin_vec_init_v4sf (float, float, float, float);
> - VEC_INIT_V4SF nothing {init}
> -
> - const vsi __builtin_vec_init_v4si (signed int, signed int, signed int, \
> - signed int);
> - VEC_INIT_V4SI nothing {init}
> -
> - const vss __builtin_vec_init_v8hi (signed short, signed short, signed short,\
> - signed short, signed short, signed short, signed short, \
> - signed short);
> - VEC_INIT_V8HI nothing {init}
> -
> - const vsc __builtin_vec_set_v16qi (vsc, signed char, const int<4>);
> - VEC_SET_V16QI nothing {set}
> -
> - const vf __builtin_vec_set_v4sf (vf, float, const int<2>);
> - VEC_SET_V4SF nothing {set}
> -
> - const vsi __builtin_vec_set_v4si (vsi, signed int, const int<2>);
> - VEC_SET_V4SI nothing {set}
> -
> - const vss __builtin_vec_set_v8hi (vss, signed short, const int<3>);
> - VEC_SET_V8HI nothing {set}
> -
> -
> ; Cell builtins.
> [cell]
> pure vsc __builtin_altivec_lvlx (signed long, const void *);
> @@ -1292,15 +1261,8 @@
> const signed long long __builtin_vec_ext_v2di (vsll, signed int);
> VEC_EXT_V2DI nothing {extract}
>
> - const vsq __builtin_vec_init_v1ti (signed __int128);
> - VEC_INIT_V1TI nothing {init}
> -
> - const vd __builtin_vec_init_v2df (double, double);
> - VEC_INIT_V2DF nothing {init}
> -
> - const vsll __builtin_vec_init_v2di (signed long long, signed long long);
> - VEC_INIT_V2DI nothing {init}
> -
> +;; VEC_SET_V1TI, VEC_SET_V2DF and VEC_SET_V2DI are used in
> +;; resolve_vec_insert(), rs6000-c.cc
> const vsq __builtin_vec_set_v1ti (vsq, signed __int128, const int<0,0>);
> VEC_SET_V1TI nothing {set}
>
next prev parent reply other threads:[~2024-05-14 5:44 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-19 21:04 [PATCH 0/13] rs6000, built-in cleanup patch series Carl Love
2024-04-19 21:16 ` [PATCH 1/13] rs6000, Remove __builtin_vsx_cmple* builtins Carl Love
2024-05-13 6:28 ` Kewen.Lin
2024-04-19 21:17 ` [PATCH 2/13] rs6000, Remove __builtin_vsx_xvcvspsxws built-in Carl Love
2024-05-14 8:43 ` Kewen.Lin
2024-05-24 20:18 ` Carl Love
2024-05-27 1:43 ` Kewen.Lin
2024-04-19 21:17 ` [PATCH 3/13] rs6000, fix error in unsigned vector float to unsigned int built-in definitions Carl Love
2024-05-14 7:00 ` Kewen.Lin
2024-05-24 20:19 ` Carl Love
2024-04-19 21:17 ` [PATCH 4/13] rs6000, extend the current vec_{un,}signed{e,o} built-ins Carl Love
2024-05-14 7:53 ` Kewen.Lin
2024-05-17 20:20 ` Carl Love
2024-05-20 1:10 ` Kewen.Lin
2024-05-24 20:19 ` Carl Love
2024-04-19 21:17 ` [PATCH 5/13] rs6000, remove duplicated built-ins of vecmergl and vec_mergeh Carl Love
2024-05-14 2:06 ` Kewen.Lin
2024-04-19 21:17 ` [PATCH 6/13] rs6000, add overloaded vec_sel with int128 arguments Carl Love
2024-05-14 2:54 ` Kewen.Lin
2024-05-22 0:13 ` Carl Love
2024-05-22 3:05 ` Kewen.Lin
2024-05-24 20:19 ` Carl Love
2024-04-19 21:18 ` [PATCH 7/13] rs6000, remove the vec_xxsel built-ins, they are duplicates Carl Love
2024-05-14 2:55 ` Kewen.Lin
2024-05-24 20:19 ` Carl Love
2024-04-19 21:18 ` [PATCH 8/13] rs6000, remove __builtin_vsx_vperm_* built-ins Carl Love
2024-05-14 2:59 ` Kewen.Lin
2024-05-24 20:20 ` Carl Love
2024-04-19 21:18 ` [PATCH 9/13] rs6000, remove __builtin_vsx_xvnegdp and __builtin_vsx_xvnegsp built-ins Carl Love
2024-05-14 3:01 ` Kewen.Lin
2024-04-19 21:18 ` [PATCH 10/13] rs6000, extend vec_xxpermdi built-in for __int128 args Carl Love
2024-05-14 5:14 ` Kewen.Lin
2024-05-24 20:20 ` Carl Love
2024-04-19 21:18 ` [PATCH 11/13] rs6000, remove __builtin_vsx_xvcmpeqsp_p built-in Carl Love
2024-05-14 5:26 ` Kewen.Lin
2024-05-24 20:20 ` Carl Love
2024-04-19 21:18 ` [PATCH 12/13] rs6000, remove __builtin_vsx_xvcmpeqsp built-in Carl Love
2024-05-14 5:37 ` Kewen.Lin
2024-05-23 18:21 ` Carl Love
2024-05-24 10:43 ` Kewen.Lin
2024-05-24 15:19 ` Carl Love
2024-04-19 21:18 ` [PATCH 13/13] rs6000, remove vector set and vector init built-ins Carl Love
2024-05-14 5:44 ` Kewen.Lin [this message]
2024-05-23 0:29 ` Carl Love
2024-05-23 2:27 ` Kewen.Lin
2024-05-10 15:15 ` [PING} Re: [PATCH 0/13] rs6000, built-in cleanup patch series Carl Love
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c3e997a4-88f3-a6e0-d3b8-831dd990fef8@linux.ibm.com \
--to=linkw@linux.ibm.com \
--cc=bergner@linux.ibm.com \
--cc=cel@linux.ibm.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=segher@kernel.crashing.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).