[PATCH 0/6] ] Permute Class Operations

2020-06-15 Thread Carl Love via Gcc-patches


Version 2.  The patches in this series have been updated per the
comments from Segher.  I have put at the top of each patch a short
summary of the version 2 changes.  Hopefully the summaries will make
the re-review easier and faster.  Most of the changes were ChangeLog
fixes with a few functional changes.
--

Based on previous IBM internal reviews of the patch set, the desire is
for all of the vector insert and extract support to be in vsx.md as
there is a longer term plan to re-work this support for PPC.

The first patch moves the existing extract support in altivec.md to
vsx.md.

The subsequent patches add additional vector insert and vector
replace builtin support.

Additionally, the documentation for the existing vector extract
builtins has been updated to match the latest documentation and builtin
names in the code. Specifically, the builtin name vec_extractr has been
changed to vec_extracth.  The description of the two builtins has been
changed to match the latest description of the builtins with a few
minor edits to address typos in the descriptions.



Re: [PATCH 0/6] Permute Class Operations

2020-06-03 Thread Segher Boessenkool
Hi Carl,

On Mon, Jun 01, 2020 at 09:14:25AM -0700, Carl Love wrote:
> Based on previous IBM internal reviews of the patch set, the desire is
> for all of the vector insert and extract support to be in vsx.md as
> there is a longer term plan to re-work this support for PPC.

Very long time ago, it was easy: there was altivec.md, which contained
the AltiVec instruction patterns.  Life was good.

Then, for Power7, we got vsx.md for the original VSX insns, and vector.md
to mux the things that exist similarly in AltiVec (aka VMX) and VSX.
This was still quite nice.

But since then we got Power8, and Power9, and now Power10, and there is
not any obvious way to decide what goes where anymore.  It may seem (I
thought this for a while) that instructions that only operate on the VRs
(and not the other VSRs, namely the FPRs) can go into altivec.md -- but
then a later version of the ISA makes things more orthogonal, and things
*can* go into all VSRs now, so things have to move again, and the
distinction turns out to have been totally artificial and not useful.

So yes, we need to divide this up some saner way.  Maybe we can start
with splitting of the FP parts (scalar and vector, also classical FP,
but maybe only the computational insns (not the moves))?  Will need some
experimentation to find out something that works well (and that is the
point: it should be easy to *work with*, nothing else).

Sorry for blabbering :-)


Segher


[PATCH 0/6] Permute Class Operations

2020-06-01 Thread Carl Love via Gcc-patches
GCC maintianers:

The following patch set adds builtins for the various Permute Class
Operations specified in IBM RFC 2609.

Based on previous IBM internal reviews of the patch set, the desire is
for all of the vector insert and extract support to be in vsx.md as
there is a longer term plan to re-work this support for PPC.

The first patch moves the existing extract support in altivec.md to
vsx.md.

Additionally, the documentation for the existing vector extract
builtins has been updated to match the latest documentation and builtin
names in the code. Specifically, the builtin name vec_extractr has been
changed to vec_extracth.  The description of the two builtins has been
changed to match the latest description of the builtins with a few
minor edits to address typos in the descriptions.

The subsequent patches add additional vector insert, vector
replace,
vector shift, vector splat, vector blend builtin support.

   Carl Love