Re: [RFC][mid-end] Support vectorization of complex numbers using machine instructions.

2018-10-19 Thread Richard Sandiford
Tamar Christina  writes:
>> > so I'd need 5 parameters and then I'm guessing the other expressions
>> would be removed by DCE at some point?
>> 
>> Are you planning to make the FCMLA behaviour directly available as an
>> internal function or provide a higher-level one that does a full complex
>> multiply, with the target lowering that into individual instructions where
>> necessary?
>
> I was planning on doing it as one internal function and leave it up to
> the target to expand it however it needs to.

OK, sounds good.

>> What to do with the intermediate results you don't need is an interesting
>> question :-).  Like you say, I was hoping DCE would get rid of them later.
>> Does that not work?
>
> I haven't tried it yet 😊 But I assume it'll work too.  I have complex
> add almost working, it generates the right code for the vectorized
> loop. The loads are also corrected and the permute is gone and I
> update all the data references for the two statements I replaced.

Not sure what you mean by the last bit.  Why do you need to replace
data references rather than just use the existing ones?

> However for the scalar tail loop I have a problem since I only have
> vector versions of the instructions, and the scalar loop is created
> from the same SLP tree.  So I end up with the builtins in the tail
> loop with nothing to expand them to and with no way to differentiate
> between the two calls to the internal fn.
>
> I would need to somehow undo this for the scalar part..

The epilogue loop should just be a copy of the basic block before
vectorisation is applied.  The new calls shouldn't be in that,
just in the SLP tree.  (This is how pattern statements work too:
they're never added to the basic block, they're just temporary
statements attached to internal vectoriser structures.)

Thanks,
Richard


GCC 6.5 Release Candidate available from gcc.gnu.org

2018-10-19 Thread Jakub Jelinek
The first release candidate for GCC 6.5 is available from

 https://gcc.gnu.org/pub/gcc/snapshots/6.5.0-RC-20181019/
 ftp://gcc.gnu.org/pub/gcc/snapshots/6.5.0-RC-20181019/

and shortly its mirrors.  It has been generated from SVN revision 265300.

I have so far bootstrapped and tested the release candidate on
x86_64-linux and i686-linux.  Please test it and report any issues to
bugzilla.

If all goes well, I'd like to release 6.5 on Friday, October 26th.


GCC 6.5 Status Report (2018-10-19)

2018-10-19 Thread Jakub Jelinek
Status
==

The 6.5 branch is now frozen for the final GCC 6.5 release, the release
candidate has been announced.  All changes to the branch require RM
approval.


Quality Data


Priority  #   Change from last report
---   ---
P10
P2  199   -  11
P3   27   -   1
P4  128   -   2
P5   28
---   ---
Total P1-P3 226   -  12
Total   384   -  14


Previous Report
===

https://gcc.gnu.org/ml/gcc/2018-10/msg00113.html


Should PHI result and arg types match?

2018-10-19 Thread Aldy Hernandez

Howdy!

Are the types for PHI arguments and the corresponding result supposed to 
match?


In the backwards threader I'm seeing:

_103 = PHI <_173(11), 0B(12)>

Where the type of _103 is cgraph_node *, and the type of _173 is 
symtab_node *.


I know one is derived from the other (struct cgraph_node : public 
symtab_node), but I would have expected a cast somewhere.


 :
# _173 = PHI <0B(6), _172(9)>
if (_173 != 0B)
  goto ; [70.00%]
else
  goto ; [30.00%]

 :
_109 = _173->type;
if (_109 == 1)
  goto ; [34.00%]
else
  goto ; [66.00%]

 :
# _103 = PHI <_173(11), 0B(12)>
if (_103 != 0B)

Similarly for simpler stuff.  Is this legal?:

typedef unsigned int UDItype __attribute__ ((mode (DI)));
typedef UDItype UINT64;
UINT64 c_prov_hi;
long unsigned int z$w$5;
...
# c_prov_hi_222 = PHI 

Thanks.
Aldy


Re: Should PHI result and arg types match?

2018-10-19 Thread Jakub Jelinek
On Fri, Oct 19, 2018 at 12:47:00PM -0400, Aldy Hernandez wrote:
> Howdy!
> 
> Are the types for PHI arguments and the corresponding result supposed to
> match?

Like with most other gimple stmts, they need to satisfy
useless_type_conversion_p (TREE_TYPE (phiresult), TREE_TYPE (phiarg))
for all args.  And, most pointer conversions are considered useless,
exceptions are if different address spaces are involved or conversions
from function/method pointers to other pointers or vice versa, or if the
pointers have different modes.

Jakub


Re: Should PHI result and arg types match?

2018-10-19 Thread Aldy Hernandez




On 10/19/18 1:00 PM, Jakub Jelinek wrote:

On Fri, Oct 19, 2018 at 12:47:00PM -0400, Aldy Hernandez wrote:

Howdy!

Are the types for PHI arguments and the corresponding result supposed to
match?


Like with most other gimple stmts, they need to satisfy
useless_type_conversion_p (TREE_TYPE (phiresult), TREE_TYPE (phiarg))
for all args.  And, most pointer conversions are considered useless,
exceptions are if different address spaces are involved or conversions
from function/method pointers to other pointers or vice versa, or if the
pointers have different modes.


Ah, that makes sense.

Thanks!
Aldy


Re: GCC 6.5 Release Candidate available from gcc.gnu.org

2018-10-19 Thread Bill Seurer

On 10/19/18 04:49, Jakub Jelinek wrote:

The first release candidate for GCC 6.5 is available from

  https://gcc.gnu.org/pub/gcc/snapshots/6.5.0-RC-20181019/
  ftp://gcc.gnu.org/pub/gcc/snapshots/6.5.0-RC-20181019/

and shortly its mirrors.  It has been generated from SVN revision 265300.

I have so far bootstrapped and tested the release candidate on
x86_64-linux and i686-linux.  Please test it and report any issues to
bugzilla.

If all goes well, I'd like to release 6.5 on Friday, October 26th.



I bootstrapped and tested on power 7, power 8, and power 9 both BE and 
LE and saw no unexpected issues.

--

-Bill Seurer



gcc-8-20181019 is now available

2018-10-19 Thread gccadmin
Snapshot gcc-8-20181019 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/8-20181019/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 8 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/branches/gcc-8-branch 
revision 265334

You'll find:

 gcc-8-20181019.tar.xzComplete GCC

  SHA256=ab261dbb5c3c82998e553ee2b0ec7868f3abfa99ae6f6773ba220870c6c0e756
  SHA1=078266c9612898a125216862eb1f616dd8d48d20

Diffs from 8-20181012 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-8
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.