This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [36/77] Use scalar_int_mode in the RTL iv routines
- From: Jeff Law <law at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org, richard dot sandiford at linaro dot org
- Date: Wed, 16 Aug 2017 10:48:01 -0600
- Subject: Re: [36/77] Use scalar_int_mode in the RTL iv routines
- Authentication-results: sourceware.org; auth=none
- Authentication-results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com
- Authentication-results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=law at redhat dot com
- Dmarc-filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 7DA8274A25
- References: <8760ewohsv.fsf@linaro.org> <87tw2ghg8g.fsf@linaro.org>
On 07/13/2017 02:51 AM, Richard Sandiford wrote:
> This patch changes the iv modes in rtx_iv from machine_mode
> to scalar_int_mode. It also passes the mode of the iv down
> to subroutines; this avoids the previous situation in which
> the mode information was sometimes lost and had to be added
> by the caller on return.
>
> Some routines already took a mode argument, but the patch
> tries to standardise on passing it immediately before the
> argument it describes.
>
> gcc/
> 2017-07-13 Richard Sandiford <richard.sandiford@linaro.org>
> Alan Hayward <alan.hayward@arm.com>
> David Sherwood <david.sherwood@arm.com>
>
> * cfgloop.h (rtx_iv): Change type of extend_mode and mode to
> scalar_int_mode.
> (niter_desc): Likewise mode.
> (iv_analyze): Add a mode parameter.
> (biv_p): Likewise.
> (iv_analyze_expr): Pass the mode paraeter before the rtx it describes
> and change its type to scalar_int_mode.
> * loop-iv.c: Update commentary at head of file.
> (iv_constant): Pass the mode paraeter before the rtx it describes
> and change its type to scalar_int_mode. Remove VOIDmode handling.
> (iv_subreg): Change the type of the mode parameter to scalar_int_mode.
> (iv_extend): Likewise.
> (shorten_into_mode): Likewise.
> (iv_add): Use scalar_int_mode.
> (iv_mult): Likewise.
> (iv_shift): Likewise.
> (canonicalize_iv_subregs): Likewise.
> (get_biv_step_1): Pass the outer_mode parameter before the rtx
> it describes and change its mode to scalar_int_mode. Also change
> the type of the returned inner_mode to scalar_int_mode.
> (get_biv_step): Likewise, turning outer_mode from a pointer
> into a direct parameter. Update call to get_biv_step_1.
> (iv_analyze_biv): Add an outer_mode parameter. Update calls to
> iv_constant and get_biv_step.
> (iv_analyze_expr): Pass the mode parameter before the rtx it describes
> and change its type to scalar_int_mode. Don't initialise iv->mode
> to VOIDmode and remove later checks for its still being VOIDmode.
> Update calls to iv_analyze_op and iv_analyze_expr. Check
> is_a <scalar_int_mode> when changing the mode under consideration.
> (iv_analyze_def): Ignore registers that don't have a scalar_int_mode.
> Update call to iv_analyze_expr.
> (iv_analyze_op): Add a mode parameter. Reject subregs whose
> inner register is not also a scalar_int_mode. Update call to
> iv_analyze_biv.
> (iv_analyze): Add a mode parameter. Update call to iv_analyze_op.
> (biv_p): Add a mode parameter. Update call to iv_analyze_biv.
> (iv_number_of_iterations): Use is_a <scalar_int_mode> instead of
> separate mode class checks. Update calls to iv_analyze. Remove
> fix-up of VOIDmodes after iv_analyze_biv.
> * loop-unroll.c (analyze_iv_to_split_insn): Reject registers that
> don't have a scalar_int_mode. Update call to biv_p.
OK.
jeff