Re: [PATCH] rs6000: Split movsf_from_si from high word before reload[PR89310]

2020-07-10 Thread luoxhu via Gcc-patches
On 2020/7/10 03:25, Segher Boessenkool wrote: > >> + "TARGET_NO_SF_SUBREG" >> + "#" >> + "&& vsx_reg_sfsubreg_ok (operands[0], SFmode)" > > Put this in the insn condition? And since this is just a predicate, > you can just use it instead of gpc_reg_operand. > > (The split condition

Re: [PATCH] rs6000: Split movsf_from_si from high word before reload[PR89310]

2020-07-09 Thread Segher Boessenkool
Hi! On Thu, Jul 09, 2020 at 11:09:42AM +0800, luoxhu wrote: > > Maybe change it back to just SI? It won't match often at all for QI or > > HI anyway, it seems. Sorry for that detour. Should be good with the > > above nits fixed :-) > > OK, if I see correctly, subreg of DImode should be SImode

Re: [PATCH] rs6000: Split movsf_from_si from high word before reload[PR89310]

2020-07-08 Thread luoxhu via Gcc-patches
On 2020/7/9 06:43, Segher Boessenkool wrote: > Hi! > > On Wed, Jul 08, 2020 at 11:19:21AM +0800, luoxhu wrote: >> For extracting high part element from DImode register like: >> >> {%1:SF=unspec[r122:DI>>0x20#0] 86;clobber scratch;} >> >> split it before reload with "and mask" to avoid

Re: [PATCH] rs6000: Split movsf_from_si from high word before reload[PR89310]

2020-07-08 Thread Segher Boessenkool
Hi! On Wed, Jul 08, 2020 at 11:19:21AM +0800, luoxhu wrote: > For extracting high part element from DImode register like: > > {%1:SF=unspec[r122:DI>>0x20#0] 86;clobber scratch;} > > split it before reload with "and mask" to avoid generating shift right > 32 bit then shift left 32 bit. This

Re: [PATCH] rs6000: Split movsf_from_si from high word before reload[PR89310]

2020-07-07 Thread luoxhu via Gcc-patches
On 2020/7/8 05:31, Segher Boessenkool wrote: > Hi! > > On Tue, Jul 07, 2020 at 04:39:58PM +0800, luoxhu wrote: >>> Lots of questions, sorry! >> >> Thanks for the nice suggestions of the initial patch contains many issues:), > > Pretty much all of it should *work*, it just can be improved and

Re: [PATCH] rs6000: Split movsf_from_si from high word before reload[PR89310]

2020-07-07 Thread Segher Boessenkool
Hi! On Tue, Jul 07, 2020 at 04:39:58PM +0800, luoxhu wrote: > > Lots of questions, sorry! > > Thanks for the nice suggestions of the initial patch contains many issues:), Pretty much all of it should *work*, it just can be improved and simplified quite a bit :-) > For this case, %1:SF matches

Re: [PATCH] rs6000: Split movsf_from_si from high word before reload[PR89310]

2020-07-07 Thread luoxhu via Gcc-patches
On 2020/7/7 08:18, Segher Boessenkool wrote: > Hi! > > On Sun, Jul 05, 2020 at 09:17:57PM -0500, Xionghu Luo wrote: >> For extracting high part element from DImode register like: >> >> {%1:SF=unspec[r122:DI>>0x20#0] 86;clobber scratch;} >> >> split it before reload with "and mask" to avoid

Re: [PATCH] rs6000: Split movsf_from_si from high word before reload[PR89310]

2020-07-06 Thread Segher Boessenkool
Hi! On Sun, Jul 05, 2020 at 09:17:57PM -0500, Xionghu Luo wrote: > For extracting high part element from DImode register like: > > {%1:SF=unspec[r122:DI>>0x20#0] 86;clobber scratch;} > > split it before reload with "and mask" to avoid generating shift right > 32 bit then shift left 32 bit. > >

[PATCH] rs6000: Split movsf_from_si from high word before reload[PR89310]

2020-07-05 Thread Xionghu Luo via Gcc-patches
For extracting high part element from DImode register like: {%1:SF=unspec[r122:DI>>0x20#0] 86;clobber scratch;} split it before reload with "and mask" to avoid generating shift right 32 bit then shift left 32 bit. srdi 3,3,32 sldi 9,3,32 mtvsrd 1,9 xscvspdpn 1,1 => rldicr 3,3,0,31 mtvsrd 1,3