[PATCH] rs6000, restrict bfloat convert intrinsic to Power 10. Fix BU_P10V macro definitions.

2020-08-13 Thread Carl Love via Gcc-patches
GCC maintainers: The macro expansion for the bfloat convert intrinsics XVCVBF16SP and XVCVSPBF16 need to be restricted to P10. The macro expansions BU_P10V_0, BU_P10V_1, BU_P10V_2, BU_P10V_3 expand the name field as "__builtin_altivec_". These macro expansions are being used for both VSX and Alt

RE: [Patch 1/5] rs6000, Add 128-bit sign extension support

2020-08-13 Thread Carl Love via Gcc-patches
Segher: On Thu, 2020-08-13 at 12:36 -0500, Segher Boessenkool wrote: > Hi! > > On Tue, Aug 11, 2020 at 12:22:37PM -0700, Carl Love wrote: > > +/* Sign extend builtins that work on ISA 3.0, but not defined > > until ISA 3.1. */ > > What does this mean? Not defined in GCC before now? Does it ne

Re: [PATCH] rs6000, restrict bfloat convert intrinsic to Power 10. Fix BU_P10V macro definitions.

2020-08-13 Thread Carl Love via Gcc-patches
Bill: On Thu, 2020-08-13 at 13:38 -0500, Bill Schmidt wrote: > Hi Carl, > > Thanks for cleaning up the consistency issue. The new names and > related > adjustments LGTM. > > Are there no affected test cases that need adjusting? That > surprises > me. For example, didn't __builtin_altivec_xx

Re: [PATCH] rs6000, restrict bfloat convert intrinsic to Power 10. Fix BU_P10V macro definitions.

2020-08-13 Thread Carl Love via Gcc-patches
Bill: On Thu, 2020-08-13 at 14:48 -0500, Bill Schmidt wrote: > OK, but that was just meant as an example. We have a fair number of > things that changed names, so I was somewhat surprised. It could be > that all of these are likewise hidden via the overload mechanism. > Just > checking to b

RE: [PATCH] rs6000, restrict bfloat convert intrinsic to Power 10. Fix BU_P10V macro definitions.

2020-08-14 Thread Carl Love via Gcc-patches
On Fri, 2020-08-14 at 16:33 -0500, Segher Boessenkool wrote: > Hi Carl, > > On Thu, Aug 13, 2020 at 09:12:48AM -0700, Carl Love wrote: > > The macro expansion for the bfloat convert intrinsics XVCVBF16SP > > and > > XVCVSPBF16 need to be restricted to P10. > > The following patch creates new macro

RE: [PATCH] rs6000, restrict bfloat convert intrinsic to Power 10. Fix BU_P10V macro definitions.

2020-08-17 Thread Carl Love via Gcc-patches
Segher, Bill, Peter: On Fri, 2020-08-14 at 19:42 -0500, Segher Boessenkool wrote: > > > Do the names agree with the (future) documentation now? > > > > Did not double check on the documentation. > > Someone should... Looking at the box document "Proposed function Prototypes for P10". There are

RE: [PATCH] rs6000, restrict bfloat convert intrinsic to Power 10. Fix BU_P10V macro definitions.

2020-08-17 Thread Carl Love via Gcc-patches
Bill: On Mon, 2020-08-17 at 13:09 -0500, Bill Schmidt wrote: > > > > There are three prototypes __builtin_cfuged, __builtin_pdepd, > > __builtin_pextd defined in the document. > > > > The corresponding builtin definitions in GCC are: > > > > __builtin_altivec_cfuged, __builtin_altivec_pdep

RE: [PATCH] rs6000, restrict bfloat convert intrinsic to Power 10. Fix BU_P10V macro definitions.

2020-08-19 Thread Carl Love via Gcc-patches
On Wed, 2020-08-19 at 15:16 -0500, Segher Boessenkool wrote: > On Wed, Aug 19, 2020 at 02:19:12PM -0500, Peter Bergner wrote: > > On 8/14/20 7:42 PM, Segher Boessenkool wrote: > > > I think your current code is fine; I hadn't considered Bill's > > > upcoming > > > rewrite. It is more important to

RE: [PATCH] rs6000, restrict bfloat convert intrinsic to Power 10. Fix BU_P10V macro definitions.

2020-08-24 Thread Carl Love via Gcc-patches
Segher: On Wed, 2020-08-19 at 15:16 -0500, Segher Boessenkool wrote: > On Wed, Aug 19, 2020 at 02:19:12PM -0500, Peter Bergner wrote: > > On 8/14/20 7:42 PM, Segher Boessenkool wrote: > > > I think your current code is fine; I hadn't considered Bill's > > > upcoming > > > rewrite. It is more impo

RE: [Patch 3/5] rs6000, Add TI to TD (128-bit DFP) and TD to TI support

2020-08-26 Thread Carl Love via Gcc-patches
Segher: On Wed, 2020-08-19 at 20:29 -0500, Segher Boessenkool wrote: > Hi! > > On Tue, Aug 11, 2020 at 12:22:59PM -0700, Carl Love wrote: > > +(define_insn "floattitd2" > > + [(set (match_operand:TD 0 "gpc_reg_operand" "=d") > > + (float:TD (match_operand:TI 1 "gpc_reg_operand" "v")))] > > +

RE: [Patch 4/5] rs6000, Test 128-bit shifts for just the int128 type.

2020-08-26 Thread Carl Love via Gcc-patches
Segher: On Thu, 2020-08-20 at 16:50 -0500, Segher Boessenkool wrote: > Hi! > > On Tue, Aug 11, 2020 at 12:23:05PM -0700, Carl Love wrote: > > +;; 128-bit int modes > > +(define_mode_iterator VEC_I128 [V1TI TI]) > > We already have VSX_TI for this (in vsx.md). Rename that to > something > withou

Re: [PATCH] rs6000, restrict bfloat convert intrinsic to Power 10. Fix BU_P10V macro definitions.

2020-08-27 Thread Carl Love via Gcc-patches
GCC maintainers: The following patch has been updated based on the comments from Will and Segher. The patch is a subset of the mainline commit: commit 07d456bb80a16405723c98c2ab74ccc2a5a23898 Author: Carl Love

[PATCH] rs6000, vec_popcntd is improperly defined in altivec.h

2020-08-28 Thread Carl Love via Gcc-patches
GCC maintainers: The defines for vec_popcnt, bvec_popcnth, vec_popcntw, vec_popcntd in gcc/config/rs6000/altivec.h are not listed in the Power 64-Bi ELF V2 ABI specification revision 1.4, May 10, 2017. They are not used by any of the regression tests. They also do not work as reported in: https

Re: [PATCH] rs6000, vec_popcntd is improperly defined in altivec.h

2020-08-31 Thread Carl Love via Gcc-patches
Will: > That looks OK within this context. > > Are there any existing tests that use these named variations? > > Thanks, > -Will I was not able to find any test cases for these named builtins. I fixed the other issues you mentioned in the message and patch below. Carl Lov

[PATCH,rs6000] Add command line and builtin compatibility

2020-03-11 Thread Carl Love via Gcc-patches
GCC maintianers: The following patch add a check to make sure the user did not specify -mno_fprnd with the builtins __builtin_vsx_xsrdpim and __builtin_vsx_xsrdpip. These builtins are incompatible with the -mno_fprnd command line. The check prevents GCC crashing under these conditions. Manual

Re: [PATCH,rs6000] Add command line and builtin compatibility

2020-03-11 Thread Carl Love via Gcc-patches
Bill: On Wed, 2020-03-11 at 14:12 -0500, Bill Schmidt wrote: > I believe you need %qs here. Also replace mno-fprnd with %qs and > put > "-mno-fprnd" as the associated parameter. > > Example from nearby code: error ("%qs requires %qs", "-mdirect- > move", > "-mvsx"); Yes. I had originally t

Re: Re: [PATCH,rs6000] Add command line and builtin compatibility

2020-03-12 Thread Carl Love via Gcc-patches
Segher: > > From the GCC manual: > > -mmfcrfp4 2.01 > -mpopcntb p5 2.02 > -mfprndp5+ 2.04 ("info gcc" says 2.03, that's wrong? But the > ISA > says this is 2.02 even? Now what!) > -mcmpb p6 2.05 > -mpopcntd p7 2.06 > > (and there are more,

Re: Re: Re: [PATCH, rs6000] Add command line and builtin compatibility

2020-03-18 Thread Carl Love via Gcc-patches
Segher: > > Yes, but only for this fprnd vs. 2.06 (vsx) situation. Like we > already > have: > > if (TARGET_DIRECT_MOVE && !TARGET_VSX) > { > if (rs6000_isa_flags_explicit & OPTION_MASK_DIRECT_MOVE) > error ("%qs requires %qs", "-mdirect-move", "-mvsx"); > rs6000_isa_f

[PATCH v3] RS6000, add VSX mask manipulation support

2020-07-07 Thread Carl Love via Gcc-patches
Segher: I have fixed the issues you mentioned in version 2. I also rebased the patch onto the latest mainline. This resulted in having to change FUTURE to P10 everywhere. I reran regression testing on Power 9 with no regression issues. I also ran test cases manually on mambo. Please let me k

[PATCH ver 4] RS6000, add VSX mask manipulation support

2020-07-08 Thread Carl Love via Gcc-patches
Will, Segher: I fixed up the patch based on Will's comments. I thought I had made and committed the fixes that Will caught, but no Sorry about that. I will get this right yet. Carl Love --- Version 4 vec_mtvsrbm wa

[PATCH 0/6 ver 4] ] Permute Class Operations

2020-07-08 Thread Carl Love via Gcc-patches
Segher: The following is version 4 of the series of patches for the permute class operations. Per your request, I will send each patch as a reply to this message so they are all in the same thread in your email box. Patches 1, 2,3 and 4 just have minor fixes per your earlier comments. Howeve

Re: [PATCH 0/6 ver 4] ] Permute Class Operations

2020-07-08 Thread Carl Love via Gcc-patches
[PATCH 1/6] rs6000, Update support for vec_extract - V4 changes rebased onto mainline 7/2/2020 Add iterator name to Change log --- V3 changes Redo ChangeLog for code move. Replace spaces with tabs in ChangeLog. Replaced

Re: [PATCH 0/6 ver 4] ] Permute Class Operations

2020-07-08 Thread Carl Love via Gcc-patches
[PATCH 2/6] rs6000 Add vector insert builtin support V4 changes Rebased on mainline. Changed FUTURE to P10 as needed. V3 changes Replace spaces with of tabs in ChangeLog Ditto in gcc/config/rs6000/vsx.md. Updated

Re: [PATCH 0/6 ver 4] ] Permute Class Operations

2020-07-08 Thread Carl Love via Gcc-patches
[PATCH 4/6] rs6000, Add vector shift double builtin support -- V4 Fixes: Rebased on mainline. Changed FUTURE to P10. Changed SLDB_LR to SLDB_lr Changed error ("argument 3 must be in the range 0 to 7"); to error ("argument 3 must be a constant in th

Re: [PATCH 0/6 ver 4] ] Permute Class Operations

2020-07-08 Thread Carl Love via Gcc-patches
[PATCH 3/6] rs6000, Add vector replace builtin support -- V4 Fixes: Rebased on mainline. Changed FUTURE to P10 in code and ChangeLog. Set DEBUG to 0 in vec-replace-word-runnable.c test program. Fixed too long lines in ChangeLog. -

Re: [PATCH 0/6 ver 4] ] Permute Class Operations

2020-07-08 Thread Carl Love via Gcc-patches
[PATCH 6/6] rs6000 Add vector blend, permute builtin support -- V4 Fixes: Rebased on mainline. Changed FUTURE to P10. - v3 fixes: Replace spaces with tabs in ChangeLog description. Fix implementation comments for define_expand "xxpermx" in file

Re: [PATCH 0/6 ver 4] ] Permute Class Operations

2020-07-08 Thread Carl Love via Gcc-patches
[PATCH 5/6] rs6000, Add vector splat builtin support -- V4 Fixes: Rebased on mainline. Changed FUTURE to P10. define_predicate "s32bit_cint_operand" removed unnecessary cast in definition. Changed define_expand "xxsplti32dx_v4si" to use "0" for const

Re: [PATCH ver 4] RS6000, add VSX mask manipulation support

2020-07-08 Thread Carl Love via Gcc-patches
Will: > > > > > @@ -5701,3 +5716,55 @@ > >"TARGET_POWER10" > >" %x0,%x1" > >[(set_attr "type" "vecfloat")]) > > + > > +;; VSX mask manipulation instructions > > +;;;(define_expand "vec_mtvsrbm" > > +;;; [(set (match_operand:V16QI 0 "altivec_register_operand" "=v") > > +;;;(un

[PATCH 0/6 ver 5] ] Permute Class Operations

2020-07-21 Thread Carl Love via Gcc-patches
Segher: I fixed the comments to patch 5 in the series. Patch 6 has yet to be reviewed. I made all the minor changes to patches 1 to 4 that you and Will mentioned. Those patches were approved with the minor changes so I will not bother to repost them. I will just be reposting patches 5 and 6.

[PATCH 5/6 ver 5] rs6000, Add vector splat builtin support

2020-07-21 Thread Carl Love via Gcc-patches

PATCH 6/6 ver 5] rs6000 Add vector blend, permute builtin support

2020-07-21 Thread Carl Love via Gcc-patches
[PATCH 6/6] rs6000 Add vector blend, permute builtin support -- V5 fixes: Update ChangeLog gcc/config/rs6000/rs6000-c.c: Reworked else if ((fcode == P10_BUILTIN_VEC_XXEVAL)|| (fcode == P10_BUILTIN_VXXPERMX)) to make error printing more compa

Re: [PATCH 5/6 ver 5] rs6000, Add vector splat builtin support

2020-07-21 Thread Carl Love via Gcc-patches
On Tue, 2020-07-21 at 10:27 -0700, Carl Love wrote: > Patch didn't seem to come thru. - >From d2d534d7b4a0caf77d362094ca8e3b53559ce80f Mon Sep 17 00:00:00 2001 From: Carl Love Date: Wed, 27 May 2020 10:07:44 -0500 Subject: [PATCH 5/6] rs6000, Add vector s

[PATCH] rs6000, Fix header comment for intrinsic function

2020-04-22 Thread Carl Love via Gcc-patches
GCC maintainers: The following is a trivial patch to fix a comment describing the intrinsic function _mm_movemask_epi8. The comment was expanded to clarify the layout of the returned result. The patch does not make any functional changes. Please let me know if the patch is OK for mainline an

[PATCH] rs6000, fix vec_first_match_index for nulls

2020-05-01 Thread Carl Love via Gcc-patches
GCC maintainers: The following patch fixes PR94833, vec_first_match_index does not function as described in its description. The builtin does not handle vector elements which are zero correctly. The following patch fixes the issue and adds additional test cases to verify the vec_first_match_inde

[PATCH] rs6000, pr 94833: fix vec_first_match_index for nulls

2020-05-01 Thread Carl Love via Gcc-patches
GCC maintainers: This is a resend of "[PATCH]rs6000, fix vec_first_match_index for nulls" from earlier today. Per the received comments the pr number was added to the subject line. I also tweaked the message to make it clear that the patch fixed issues with vectors whose elements contain zeros r

[PATCH resend] rs6000, pr 94833: fix vec_first_match_index for nulls

2020-05-13 Thread Carl Love via Gcc-patches
GCC maintainers: This is a resend of "[PATCH]rs6000, fix vec_first_match_index for nulls". Per the received comments the pr number was added to the subject line. I also tweaked the message to make it clear that the patch fixed issues with vectors whose elements contain zeros rather then a zero l

[PATCH] RS6000, add VSX mask manipulation support

2020-05-22 Thread Carl Love via Gcc-patches
GCC maintainers: The following patch adds support for builtins vec_genbm(), vec_genhm(), vec_genwm(), vec_gendm(), vec_genqm(), vec_cntm(), vec_expandm(), vec_extractm(). Support for instructions mtvsrbm, mtvsrhm, mtvsrwm, mtvsrdm, mtvsrqm, cntm, vexpandm, vextractm. The test has been tested on

Re: [PATCH v2] RS6000, add VSX mask manipulation support

2020-05-27 Thread Carl Love via Gcc-patches
GCC maintainers: I have addressed the following comments on the patch from Will: - ChangeLog: fixed name/symbol order; changed reference from rs6000-c.c to rs6000-builtin.def. - define_expand "vec_mtvsrbm": changed name to vec_mtvsrbm_mtvsrbmi, updated comment. - vsx_mask-runnab

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

[PATCH 4/6] rs6000, Add vector shift double builtin support

2020-06-01 Thread Carl Love via Gcc-patches
GCC maintainers: The following patch adds support for the vector shift double builtins for RFC2609. The patch has been compiled and tested on powerpc64le-unknown-linux-gnu (Power 9 LE) and Mambo with no regression errors. Please let me know if this patch is acceptable for the mainline bran

[PATCH 2/6] rs6000 Add vector insert builtin support

2020-06-01 Thread Carl Love via Gcc-patches
GCC maintainers: This patch adds support for vec_insertl and vec_inserth builtins. The patch has been compiled and tested on powerpc64le-unknown-linux-gnu (Power 9 LE) and mambo with no regression errors. Please let me know if this patch is acceptable for the mainline branch. Thanks.

[PATCH 5/6] rs6000, Add vector splat builtin support

2020-06-01 Thread Carl Love via Gcc-patches
GCC maintainers: The following patch adds support for the vec_splati, vec_splatid and vec_splati_ins builtins. Note, this patch adds support for instructions that take a 32-bit immediate value that represents a floating point value. This support adds new predicates and a support function to pr

[PATCH 1/6] rs6000, Update support for vec_extract

2020-06-01 Thread Carl Love via Gcc-patches
GCC maintainers: Move the existing vector extract support in altivec.md to vsx.md so all of the vector insert and extract support is in the same file. The patch also updates the name of the builtins and descriptions for the builtins in the documentation file so they match the approved builtin n

[PATCH 6/6] rs6000 Add vector blend, permute builtin support

2020-06-01 Thread Carl Love via Gcc-patches
GCC maintainers: The following patch adds support for the vec_blendv and vec_permx builtins. The patch has been compiled and tested on powerpc64le-unknown-linux-gnu (Power 9 LE) with no regression errors. The test cases were compiled on a Power 9 system and then tested on Mambo. Please le

[PATCH 3/6] rs6000, Add vector replace builtin support

2020-06-01 Thread Carl Love via Gcc-patches
GCC maintainers: The following patch adds support for builtins vec_replace_elt and vec_replace_unaligned. The patch has been compiled and tested on powerpc64le-unknown-linux-gnu (Power 9 LE) and mambo with no regression errors. Please let me know if this patch is acceptable for the mainlin

Re: [PATCH v4] rs6000, vector integer multiply/divide/modulo instructions

2021-01-04 Thread Carl Love via Gcc-patches
Segher, Will: Just wanted to ping you both on this patch. It has been out there for awhile. Carl On Mon, 2020-12-07 at 16:31 -0800, Carl Love wrote: > Will: > > I have addressed you comments with regards to the Change Log > entries. > > The extra define vec_div was removed

[PATCH v5] rs6000, vector integer multiply/divide/modulo instructions

2021-01-13 Thread Carl Love via Gcc-patches
Will: I have addressed the various typos you mentioned in the messages to the maintainers. Per your comment I have also tested the updated patch on Power 8 BE. The patch was compiled and tested on: powerpc64le-unknown-linux-gnu (Power 8 BE) powerpc64le-unknown-linux-gnu (Power 9 LE) po

[PATCH 1/6 ver 3] rs6000, Fix arguments in altivec_vrlwmi and altivec_rlwdi builtins

2021-01-19 Thread Carl Love via Gcc-patches
Will, Segher: This patch fixes the order of the argument in the vec_rlmi and vec_rlnm builtins. The patch also adds a new test cases to verify the fix. The patch has been tested on powerpc64-linux instead (Power 8 BE) powerpc64-linux instead (Power 9 LE) powerpc64-linux instead (Powe

[PATCH 5/6 ver 3] rs6000, Add test 128-bit shifts for just the int128 type.

2021-01-19 Thread Carl Love via Gcc-patches
Will, Segher: Patch 4 adds the vector 128-bit integer shift instruction support for the V1TI type. This patch also renames and moves the VSX_TI iterator from vsx.md to VEC_TI in vector.md. The uses of VEC_TI are also updated. This patch also renames and moves the VSX_TI iterator from vsx.md to

[PATCH 2/6 ver 3] RS6000 Add 128-bit Binary Integer sign extend operations

2021-01-19 Thread Carl Love via Gcc-patches
Will, Segher: Patch 1, adds the 128-bit sign extension instruction support and corresponding builtin support. version 3: doc/extend.texi: Fixed the "uThe" typo and added the colon at the end of the line. p9-sign_extend-runnable.c: Changed the dg-do run to *-*-linux

[PATCH 4/6 ver 3] Add TI to TD (128-bit DFP) and TD to TI support

2021-01-19 Thread Carl Love via Gcc-patches
Will, Segher: This patch adds support for converting to/from 128-bit integers and 128-bit decimal floating point formats. Version 3: No functional changes. Tested on Power 8BE, Power9, Power10. Version 2: Updated ChangeLog comments. Fixed up comments in the test program. Re-tested th

[PATCH 3/6 ver 3] RS6000 add 128-bit Integer Operations part 1

2021-01-19 Thread Carl Love via Gcc-patches
Will, Segher: This patch adds the 128-bit integer support for divide, modulo, shift, compare of 128-bit integers instructions and builtin support. version 3: int_128bit-runnable.c: Removed ppc_native_128bit from dg-require-effective-target. Was missed from

[PATCH 6/6 ver 3] Conversions between 128-bit integer and floating point values.

2021-01-19 Thread Carl Love via Gcc-patches
Will, Segher: This patch adds support for converting to/from 128-bit integers and 128-bit decimal floating point formats using the new P10 instructions dcffixqq and dctfixqq. The new instructions are only used on P10 HW, otherwise the conversions continue to use the existing SW routines. The fi

[PATCH 0/6 ver3] RS6000 add 128-bit Integer Operations

2021-01-19 Thread Carl Love via Gcc-patches
Segher, Will: The following patch set is adds the 128-bit integer operation support and fixes a bug found in the existing support. This is the third version of the patch set. The first five patches have minor updates based on previous reviews. The last patch has a number of functional changes t

RE: [PATCH 5/6] rs6000, Add vector splat builtin support

2020-06-09 Thread Carl Love via Gcc-patches
Segher: So I have been looking at the predicate definitions that I had created. On Fri, 2020-06-05 at 16:28 -0500, Segher Boessenkool wrote: > > +;; Return 1 if op is a 32-bit constant signed integer > > +(define_predicate "s32bit_cint_operand" > > + (and (match_code "const_int") > > + (ma

RE: [PATCH resend] rs6000, pr 94833: fix vec_first_match_index for nulls

2020-06-10 Thread Carl Love via Gcc-patches
Segher, Bill: I committed this patch to mainline and backported to GCC 9. I have looked at GCC 8. The functional issue is there, i.e. the vcmpnez is used instead of vcmpne. However the test case builtins-8-p9-runnable.c does not exist in GCC 8. The patch consists of the functional fix: ---

RE: [PATCH 5/6] rs6000, Add vector splat builtin support

2020-06-10 Thread Carl Love via Gcc-patches
On Wed, 2020-06-10 at 10:46 -0500, will schmidt wrote: > > On Fri, 2020-06-05 at 16:28 -0500, Segher Boessenkool wrote: > > > > +;; Return 1 if op is a 32-bit constant signed integer > > > > +(define_predicate "s32bit_cint_operand" > > > > + (and (match_code "const_int") > > > > + (match_t

[PATCH 2/6 ver 2] rs6000 Add vector insert builtin support

2020-06-15 Thread Carl Love via Gcc-patches
v2 changes Fix change log entry for config/rs6000/altivec.h Fix change log entry for config/rs6000/rs6000-builtin.def Fix change log entry for config/rs6000/rs6000-call.c vsx.md: Fixed if (BYTES_BIG_ENDIAN) else statements. Porting error from pu branch. --

[PATCH 1/6 ver 2] rs6000, Update support for vec_extract

2020-06-15 Thread Carl Love via Gcc-patches
v2 changes config/rs6000/altivec.md log entry for move from changed as suggested. config/rs6000/vsx.md log entro for moved to here changed as suggested. define_mode_iterator VI2 also moved, included in both change log entries GCC maintainers: Move

[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

[PATCH 3/6 ver 2] rs6000, Add vector replace builtin support

2020-06-15 Thread Carl Love via Gcc-patches
v2 fixes: change log entries config/rs6000/vsx.md, config/rs6000/rs6000-builtin.def, config/rs6000/rs6000-call.c. gcc/config/rs6000/rs6000-call.c: fixed if check for 3rd arg between 0 and 3 fixed if check for 3rd arg between 0 and 12 gcc/config/rs6000/vsx.md: r

[PATCH 6/6 ver 2] rs6000 Add vector blend, permute builtin support

2020-06-15 Thread Carl Love via Gcc-patches
v2 changes: Updated ChangeLog per comments. define_expand "xxpermx", Updated implementation to use XOR (icode == CODE_FOR_xxpermx, fix comments and check for 3-bit immediate field. gcc/doc/extend.texi: comment "Maybe it should say it is related to vsel/xxsel, but

[PATCH 4/6 ver 2] rs6000, Add vector shift double builtin support

2020-06-15 Thread Carl Love via Gcc-patches
v2 fixes: change logs redone gcc/config/rs6000/rs6000-call.c - added spaces before parenthesis around args. - GCC maintainers: The following patch adds support for the vector shift double builtins for RFC2609. The patch has b

[PATCH 5/6 ver 2] rs6000, Add vector splat builtin support

2020-06-15 Thread Carl Love via Gcc-patches
v2 changes: change log fixes gcc/config/rs6000/altivec changed name of define_insn and define_expand for vxxspltiw... to xxspltiw... Fixed spaces in gen_xxsplti32dx_v4sf_inst (operands[0], GEN_INT gcc/rs6000-builtin.def propagated name changes above where they are used.

[PATCH 2/6 ver 3] rs6000 Add vector insert builtin support

2020-06-18 Thread Carl Love via Gcc-patches
V3 changes Replace spaces with of tabs in ChangeLog Ditto in gcc/config/rs6000/vsx.md. Updated description for vec_insertl() builtin. Cleaned up vec_insert description. - v2 changes Fix change log entry for config/rs6000/alt

[PATCH 0/6 ver 3] ] Permute Class Operations

2020-06-18 Thread Carl Love via Gcc-patches
Version 3. Updated the patches based on the comments from Will. The changes were primarily formatting and cleaning up comments and the documentation. - Version 2. The patches in this series have been updated per the comments from Segher. I have put at the top of

[PATCH 1/6 ver 3] rs6000, Update support for vec_extract

2020-06-18 Thread Carl Love via Gcc-patches
V3 changes Redo ChangeLog for code move. Replace spaces with tabs in ChangeLog. Replaced intruction names using * with the actual list of names. For example vextdu*vrx with the explicit instruction names vextdubvrx, vextduhvrx, etc. - v2 changes conf

[PATCH 6/6 ver 3] rs6000 Add vector blend, permute builtin support

2020-06-18 Thread Carl Love via Gcc-patches
v3 fixes: Replace spaces with tabs in ChangeLog description. Fix implementation comments for define_expand "xxpermx" in file gcc/config/rs6000/alitvec.md. Fix minor typos in the comments for the changes in gcc/config/rs6000/rs6000-call.c. v2 changes: Updated

[PATCH 3/6 ver 3] rs6000, Add vector replace builtin support

2020-06-18 Thread Carl Love via Gcc-patches
V3 fixes: Fixed bad word breaks in ChangLog. Replace spaces with tabs in ChangeLog. v2 fixes: change log entries config/rs6000/vsx.md, config/rs6000/rs6000-builtin.def, config/rs6000/rs6000-call.c. gcc/config/rs6000/rs6000-call.c: fixed if check for 3rd

[PATCH 4/6 ver 3] rs6000, Add vector shift double builtin support

2020-06-18 Thread Carl Love via Gcc-patches
V3 Fixes Replace spaces with tabs in ChangeLog. Minor edits to ChangeLog entry. Minor edits to vec_sldb description in gcc/doc/extend.texi. v2 fixes: change logs redone gcc/config/rs6000/rs6000-call.c - added spaces

[PATCH 5/6 ver 3] rs6000, Add vector splat builtin support

2020-06-18 Thread Carl Love via Gcc-patches
v3 fixes: Minor cleanup in the ChangeLog description. - v2 fixes: change log fixes gcc/config/rs6000/altivec changed name of define_insn and define_expand for vxxspltiw... to xxspltiw... Fixed spaces in gen_xxsplti32dx_v4sf_inst (ope

RE: [PATCH 5/6 ver 3] rs6000, Add vector splat builtin support

2020-06-29 Thread Carl Love via Gcc-patches
Segher: On Thu, 2020-06-25 at 17:39 -0500, Segher Boessenkool wrote: > > +;; Return 1 if op is a constant 32-bit floating point value > > +(define_predicate "f32bit_const_operand" > > + (match_code "const_double") > > +{ > > + if (GET_MODE (op) == SFmode) > > +return 1; > > + > > + else if

RE: [PATCH 5/6 ver 3] rs6000, Add vector splat builtin support

2020-06-29 Thread Carl Love via Gcc-patches
On Mon, 2020-06-29 at 16:58 -0500, Segher Boessenkool wrote: > On Mon, Jun 29, 2020 at 02:29:54PM -0700, Carl Love wrote: > > Segher: > > > > On Thu, 2020-06-25 at 17:39 -0500, Segher Boessenkool wrote: > > > > +;; Return 1 if op is a constant 32-bit floating point value > > > > +(define_predicate

RE: [PATCH 5/6 ver 3] rs6000, Add vector splat builtin support

2020-07-01 Thread Carl Love via Gcc-patches
On Wed, 2020-07-01 at 12:00 -0500, Segher Boessenkool wrote: > Hi! > > On Mon, Jun 29, 2020 at 03:31:48PM -0700, Carl Love wrote: > > On Mon, 2020-06-29 at 16:58 -0500, Segher Boessenkool wrote: > > > On Mon, Jun 29, 2020 at 02:29:54PM -0700, Carl Love wrote: > > > > Segher: > > > > > > > > On Th

[PATCH v2] rs6000, vector integer multiply/divide/modulo instructions

2020-11-24 Thread Carl Love via Gcc-patches
Segher: I have addressed the various issues you and Pat mentioned. Specifically: - Added parenthesis around the macro arguments in altivec.h. - Removed VIlong_char, using instead. - Reimplemented define_insn "vmulhs_" and define_insn "vmulhs_" to not use an UNSPEC. Also changed the

Re: [PATCH v2] rs6000, vector integer multiply/divide/modulo instructions

2020-12-01 Thread Carl Love via Gcc-patches
Segher, Pat: I have updated the patch to address the comments below. On Wed, 2020-11-25 at 20:30 -0600, Segher Boessenkool wrote: > On Tue, Nov 24, 2020 at 08:34:51PM -0600, Pat Haugen wrote: > > On 11/24/20 8:17 PM, Pat Haugen via Gcc-patches wrote: > > > On 11/24/20 12:59 PM,

[PATCH v4] rs6000, vector integer multiply/divide/modulo instructions

2020-12-07 Thread Carl Love via Gcc-patches
Will: I have addressed you comments with regards to the Change Log entries. The extra define vec_div was removed. Added the missing entries for DIVU_V2DI DIVS_V2DI in rs6000-call.c. The extra MULLD_V2DI case statement entry was removed. Added comment in rs6000.md about size for vector types

Re: [PATCH 2a/5] rs6000, vec_rlnm builtin fix arguments

2020-10-12 Thread Carl Love via Gcc-patches
Will, Segher: This patch fixes an error in how the vec_rlnm() builtin parameters are handled. The current test for this builtin are compile only. The issue was found in the path that adds the 128-bit operands to the vec_rlnm() builtin. The new test for the 128-bit operands is a compile and run

Re: [PATCH 3/5] Add TI to TD (128-bit DFP) and TD to TI support

2020-10-12 Thread Carl Love via Gcc-patches
Will, Segher: This patch adds support for converting to/from 128-bit integers and 128-bit decimal floating point formats. Updated ChangeLog comments. Fixed up comments in the test program. Re-tested the patch on Power 9 with no regression errors. Ca

Re: [PATCH 2b/5] RS6000 add 128-bit Integer Operations

2020-10-12 Thread Carl Love via Gcc-patches
Will, Segher: This patch adds the 128-bit integer support for divide, modulo, shift, compare of 128-bit integers instructions and builtin support. Fixed the references to 128-bit in ChangeLog that got missed in the last go round. Fixed missing spaces in emit_insn calls. Re-tested the patch on P

Re: [PATCH 4/5] Test 128-bit shifts for just the int128 type.

2020-10-12 Thread Carl Love via Gcc-patches
Will, Segher: Patch 4 adds the vector 128-bit integer shift instruction support for the V1TI type. This patch also renames and moves the VSX_TI iterator from vsx.md to VEC_TI in vector.md. The uses of VEC_TI are also updated. Re-tested the patch on Power 9 with no regression errors.

Re: [PATCH 5/5] Conversions between 128-bit integer and floating point values.

2020-10-12 Thread Carl Love via Gcc-patches
Will, Segher: This patch adds support for converting to/from 128-bit integers and 128-bit decimal floating point formats using the new P10 instructions dcffixqq and dctfixqq. The new instructions are only used on P10 HW, otherwise the conversions continue to use the existing SW routines. The fi

Re: [PATCH 1/5] RS6000 Add 128-bit Binary Integer sign extend operations

2020-10-12 Thread Carl Love via Gcc-patches
Will, Segher: Patch 1, adds the 128-bit sign extension instruction support and corresponding builtin support. Removed the blank line per Will's latest feedback. Retested the patch on Power 9 with no regression errors. Carl

RE: [PATCH 1/5] RS6000 Add 128-bit Binary Integer sign extend operations

2020-10-12 Thread Carl Love via Gcc-patches
On Mon, 2020-10-12 at 15:43 -0500, Segher Boessenkool wrote: > Hi! > > On Wed, Oct 07, 2020 at 04:08:12PM -0500, will schmidt wrote: > > On Mon, 2020-10-05 at 11:51 -0700, Carl Love wrote: > > > +/* Sign extend builtins that work on ISA 3.0, but not defined > > > until ISA 3.1. */ > > > > I have

Re: [RS6000] VSX_MM_SUFFIX

2020-10-22 Thread Carl Love via Gcc-patches
On Thu, 2020-10-22 at 17:21 +1030, Alan Modra wrote: > gcc.target/powerpc/vsx_mask-count-runnable.c and others > Assembler messages: > Error: unrecognized opcode: `vcntmb' > > I'm applying this one as obvious. Ref > https://gcc.gnu.org/pipermail/gcc-patches/2020-July/549757.html > > * con

Re: [RS6000] Power10 vec-splati-runnable multiple test failures

2020-10-22 Thread Carl Love via Gcc-patches
On Thu, 2020-10-22 at 17:26 +1030, Alan Modra wrote: > FAIL: gcc.target/powerpc/vec-splati-runnable.c 1 blank line(s) in > output > FAIL: gcc.target/powerpc/vec-splati-runnable.c (test for excess > errors) > Excess errors: > rs6000_emit_xxspltidp_v2df called ... > > and running the test fails. As

[PATCH] rs6000, Power 10 testsuite fixes

2020-10-23 Thread Carl Love via Gcc-patches
GCC maintainers: The following patch fixes a few issues with the tests. The DEBUG is defined in each of the files thus the #ifdef DEBUG should just be #if DEBUG. The other issue is a some of the line lengths for the error prints exceed 80 characters. The patch fixes the prints. The patch was c

[PATCH] rs6000, Add bcd builtings listed in appendix B of the ABI

2020-10-23 Thread Carl Love via Gcc-patches
Gcc maintainers: The following patch adds support for the built-ins listed in Table B.1, "Binary-Coded Decimal Built-In Functions" of the "64-Bit ELF V2 ABI Specification", July 30, 2019. The built-ins adds support the V16QI type for addition, subtraction and comparison as sepcified in the Tabl

Re: [PATCH] rs6000, Add bcd builtings listed in appendix B of the ABI

2020-10-28 Thread Carl Love via Gcc-patches
David: On Sat, 2020-10-24 at 11:29 -0400, David Edelsohn wrote: > Hi, Carl > > Not commenting on the implementation. > > Please stop using powerpc*-*-* in the test cases. The test cases > already are in the gcc.target/powerpc directory. > > Do the test cases really need lp64, or should this re

RE: [PATCH] rs6000, Add bcd builtings listed in appendix B of the ABI

2020-10-30 Thread Carl Love via Gcc-patches
David: On Wed, 2020-10-28 at 20:43 -0400, David Edelsohn wrote: > Better, but please use > > /* { dg-require-effective-target int128 } */ > > not "target int128" in the selector. Segher and I both agree that > it's cleaner and more readable. The selector (the target part on the > dg-do line) s

[PATCH] rs6000, vector integer multiply/divide/modulo instructions

2020-10-30 Thread Carl Love via Gcc-patches
GCC maintainers: The following patch adds new builtins for the vector integer multiply, divide and modulo operations. The builtins are: vec_mulh(), vec_div(), vec_dive(), vec_mod() for signed and unsigned integers and long long integers. Support for signed and unsigned long long integers the e

RE: [PATCH] rs6000, vector integer multiply/divide/modulo instructions

2020-10-30 Thread Carl Love via Gcc-patches
On Fri, 2020-10-30 at 17:05 -0400, David Edelsohn wrote: > On Fri, Oct 30, 2020 at 4:07 PM Carl Love wrote: > > > diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-1-p10- > > runnable.c b/gcc/testsuite/gcc.target/powerpc/builtins-1-p10- > > runnable.c > > new file mode 100644 > > index 0

[PATCH] rs6000: Add builtins for IEEE 128-bit floating point values

2023-05-02 Thread Carl Love via Gcc-patches
GCC maintainers: The following patch adds three buitins for inserting and extracting the exponent and significand for an IEEE 128-bit floating point values. The builtins are valid for Power 9 and Power 10. The patch has been tested on both Power 9 and Power 10. Please let me know if this patc

[PATCH] rs6000: vec_cmpne confusing implementation

2023-05-03 Thread Carl Love via Gcc-patches
GCC maintainers: The following patch cleans up the definition for the __builtin_altivec_vcmpnet. The current implementation implies that the builtin is only supported on Power 9 since it is defined under the Power 9 stanza. However the builtin has no ISA restrictions as stated in the Power Vecto

[PATCH] Fix for vcmpequt builtin

2021-06-14 Thread Carl Love via Gcc-patches
GCC Maintainers: The following patch removes some unused BU_P10_OVERLOAD_2 entries. Also, it fixes the builtin definition to use the altivec_eqv1ti instruction definition for the compare instruction. The patch has been tested on powerpc64le-linux (Power 10 LE) Please let me know if the patch is

[PATCH] rs6000: Fix test int_128bit-runnable.c instruction counts

2023-04-13 Thread Carl Love via Gcc-patches
GCC maintainers: The following fix updates the expected instruction counts for the test int_128bit-runnable.c test. The counts changed as a result of a commit to support 128-bit integer divide and modulus. The change resulted in two of the tests using vdivsq instructions rather than the vextsd

[PATCH] rs6000: Fix test gc.target/powerpc/rs600-fpint.c test options

2023-04-13 Thread Carl Love via Gcc-patches
GCC maintainers: The following patch fixes the dg-options for test powerpc/rs600- fpint.c. The test now works correctly on Power 10. The patch has been tested on Power10 with no regressions. Please let me know if the patch is acceptable for mainline. Thanks. Carl -

[PATCH] rs6000: Add buildin for mffscrn instructions

2023-04-13 Thread Carl Love via Gcc-patches
GCC maintainers: The following patch adds an overloaded builtin. There are two possible arguments for the builtin. The builtin definitions are: double __builtin_mffscrn (unsigned long int); double __builtin_mffscrn (double); The patch has been tested on Power 10 with no regressions. P

<    1   2