Re: [patch AArch64] Do not perform a vector splat for vector initialisation if it is not useful

2018-05-19 Thread Richard Sandiford
"Richard Earnshaw (lists)" writes: > On 16/05/18 09:37, Kyrill Tkachov wrote: >> >> On 15/05/18 10:58, Richard Biener wrote: >>> On Tue, May 15, 2018 at 10:20 AM Kyrill Tkachov >>> >>> wrote: >>> Hi all, This is a respin of

Re: [patch AArch64] Do not perform a vector splat for vector initialisation if it is not useful

2018-05-17 Thread Richard Earnshaw (lists)
On 16/05/18 09:37, Kyrill Tkachov wrote: > > On 15/05/18 10:58, Richard Biener wrote: >> On Tue, May 15, 2018 at 10:20 AM Kyrill Tkachov >> >> wrote: >> >>> Hi all, >>> This is a respin of James's patch from: >>

Re: [patch AArch64] Do not perform a vector splat for vector initialisation if it is not useful

2018-05-16 Thread Segher Boessenkool
On Wed, May 16, 2018 at 11:10:55AM +0100, Kyrill Tkachov wrote: > On 16/05/18 10:42, Richard Biener wrote: > >Segher, do you know where canonicalization rules are documented? > >IIRC we do not actively try to canonicalize in most cases. > > The documentation we have for RTL canonicalisation is

Re: [patch AArch64] Do not perform a vector splat for vector initialisation if it is not useful

2018-05-16 Thread Segher Boessenkool
On Wed, May 16, 2018 at 11:42:39AM +0200, Richard Biener wrote: > Works for me. Were you able to actually create such RTL from testcases? > Segher, do you know where canonicalization rules are documented? > IIRC we do not actively try to canonicalize in most cases. md.texi, node "Insn

Re: [patch AArch64] Do not perform a vector splat for vector initialisation if it is not useful

2018-05-16 Thread Kyrill Tkachov
On 16/05/18 10:42, Richard Biener wrote: On Wed, May 16, 2018 at 10:37 AM Kyrill Tkachov wrote: On 15/05/18 10:58, Richard Biener wrote: On Tue, May 15, 2018 at 10:20 AM Kyrill Tkachov wrote: Hi all, This is a respin of James's

Re: [patch AArch64] Do not perform a vector splat for vector initialisation if it is not useful

2018-05-16 Thread Richard Biener
On Wed, May 16, 2018 at 10:37 AM Kyrill Tkachov wrote: > On 15/05/18 10:58, Richard Biener wrote: > > On Tue, May 15, 2018 at 10:20 AM Kyrill Tkachov > > > > wrote: > > > >> Hi all, > >> This is a respin of James's patch from: > >

Re: [patch AArch64] Do not perform a vector splat for vector initialisation if it is not useful

2018-05-16 Thread Kyrill Tkachov
On 15/05/18 10:58, Richard Biener wrote: On Tue, May 15, 2018 at 10:20 AM Kyrill Tkachov wrote: Hi all, This is a respin of James's patch from: https://gcc.gnu.org/ml/gcc-patches/2017-12/msg00614.html The original patch was approved and committed but was later

Re: [patch AArch64] Do not perform a vector splat for vector initialisation if it is not useful

2018-05-15 Thread Richard Biener
On Tue, May 15, 2018 at 10:20 AM Kyrill Tkachov wrote: > Hi all, > This is a respin of James's patch from: https://gcc.gnu.org/ml/gcc-patches/2017-12/msg00614.html > The original patch was approved and committed but was later reverted because of failures on

[patch AArch64] Do not perform a vector splat for vector initialisation if it is not useful

2018-05-15 Thread Kyrill Tkachov
Hi all, This is a respin of James's patch from: https://gcc.gnu.org/ml/gcc-patches/2017-12/msg00614.html The original patch was approved and committed but was later reverted because of failures on big-endian. This tweaked version fixes the big-endian failures in aarch64_expand_vector_init by

Re: [patch AArch64] Do not perform a vector splat for vector initialisation if it is not useful

2018-01-03 Thread Christophe Lyon
On 19 December 2017 at 00:36, Jeff Law wrote: > On 12/11/2017 08:44 AM, James Greenhalgh wrote: >> Hi, >> >> In the testcase in this patch we create an SLP vector with only two >> elements. Our current vector initialisation code will first duplicate >> the first element to both

Re: [patch AArch64] Do not perform a vector splat for vector initialisation if it is not useful

2017-12-18 Thread Jeff Law
On 12/11/2017 08:44 AM, James Greenhalgh wrote: > Hi, > > In the testcase in this patch we create an SLP vector with only two > elements. Our current vector initialisation code will first duplicate > the first element to both lanes, then overwrite the top lane with a new > value. > > This

[patch AArch64] Do not perform a vector splat for vector initialisation if it is not useful

2017-12-11 Thread James Greenhalgh
Hi, In the testcase in this patch we create an SLP vector with only two elements. Our current vector initialisation code will first duplicate the first element to both lanes, then overwrite the top lane with a new value. This duplication can be clunky and wasteful. Better would be to simply