On Mon, Jun 25, 2018 at 03:48:43AM -0500, Andre Simoes Dias Vieira wrote:
> On 14/06/18 12:47, Richard Sandiford wrote:
> > Kyrill  Tkachov <kyrylo.tkac...@foss.arm.com> writes:
> >> Hi Andre,
> >> On 07/06/18 18:02, Andre Simoes Dias Vieira wrote:
> >>> Hi,
> >>>
> >>> See below a patch to address PR 83009.
> >>>
> >>> Tested with aarch64-linux-gnu bootstrap and regtests for c, c++ and 
> >>> fortran.
> >>> Ran the adjusted testcase for -mabi=ilp32.
> >>>
> >>> Is this OK for trunk?
> >>>
> >>> Cheers,
> >>> Andre
> >>>
> >>> PR target/83009: Relax strict address checking for store pair lanes
> >>>
> >>> The operand constraint for the memory address of store/load pair lanes was
> >>> enforcing strictly hardware registers be allowed as memory addresses.  We 
> >>> want
> >>> to relax that such that these patterns can be used by combine, prior
> >>> to reload.
> >>> During register allocation the register constraint will enforce the 
> >>> correct
> >>> register is chosen.
> >>>
> >>> gcc
> >>> 2018-06-07  Andre Vieira <andre.simoesdiasvie...@arm.com>
> >>>
> >>>         PR target/83009
> >>>         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): 
> >>> Make
> >>>         address check not strict prior to reload.
> >>>
> >>> gcc/testsuite
> >>> 2018-06-07 Andre Vieira <andre.simoesdiasvie...@arm.com>
> >>>
> >>>         PR target/83009
> >>>         * gcc/target/aarch64/store_v2vec_lanes.c: Add extra tests.
> >>
> >> diff --git a/gcc/config/aarch64/predicates.md 
> >> b/gcc/config/aarch64/predicates.md
> >> index 
> >> f0917af8b4cec945ba4e38e4dc670200f8812983..30aa88838671bf343a883077c2b606a035c030dd
> >>  100644
> >> --- a/gcc/config/aarch64/predicates.md
> >> +++ b/gcc/config/aarch64/predicates.md
> >> @@ -227,7 +227,7 @@
> >>   (define_predicate "aarch64_mem_pair_lanes_operand"
> >>     (and (match_code "mem")
> >>          (match_test "aarch64_legitimate_address_p (GET_MODE (op), XEXP 
> >> (op, 0),
> >> -                                            true,
> >> +                                            reload_completed,
> >>                                              ADDR_QUERY_LDP_STP_N)")))
> >>   
> >>
> >> If you want to enforce strict checking during reload and later then I 
> >> think you need to use reload_in_progress || reload_completed ?
> > 
> > That was the old way, but it would be lra_in_progress now.
> > However...
> > 
> >> I guess that would be equivalent to !can_create_pseudo ().
> > 
> > We should never see pseudos when reload_completed, so the choice
> > shouldn't really matter then.  And I don't think we should use
> > lra_in_progress either, since that would make the checks stricter
> > before RA has actually happened, which would likely lead to an
> > unrecognisable insn ICE if recog is called during one of the LRA
> > subpasses.
> > 
> > So unless we know a reason otherwise, I think this should just
> > be "false" (like it already is for aarch64_mem_pair_operand).
> > 
> > Thanks,
> > Richard
> > 
> Changed it to false.
> 
> Bootstrapped and regression testing for aarch64-none-linux-gnu.
> 
> Is this OK for trunk?

OK.

Thanks,
James


> gcc
> 2018-06-25  Andre Vieira  <andre.simoesdiasvie...@arm.com>
> 
>         PR target/83009
>         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand):
> Make
>         address check not strict.
> 
> gcc/testsuite
> 2018-06-25  Andre Vieira  <andre.simoesdiasvie...@arm.com>
> 
>         PR target/83009
>         * gcc/target/aarch64/store_v2vec_lanes.c: Add extra tests.

Reply via email to