This is the mail archive of the
mailing list for the GCC project.
Re: Validity of SUBREG+AND-imm transformations
- From: Kyrill Tkachov <kyrylo dot tkachov at foss dot arm dot com>
- To: Jeff Law <law at redhat dot com>, Richard Biener <richard dot guenther at gmail dot com>, Segher Boessenkool <segher at kernel dot crashing dot org>
- Cc: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Fri, 04 Mar 2016 16:33:45 +0000
- Subject: Re: Validity of SUBREG+AND-imm transformations
- Authentication-results: sourceware.org; auth=none
- References: <56D055C6 dot 6040800 at foss dot arm dot com> <56D0C2A1 dot 1070501 at redhat dot com> <56D422AC dot 2000703 at foss dot arm dot com> <20160304115946 dot GA20650 at gate dot crashing dot org> <56D99E93 dot 70209 at foss dot arm dot com> <56D9A035 dot 2010902 at foss dot arm dot com> <54FB3F2C-EEE0-49E7-BFE5-BF17209B449C at gmail dot com> <56D9B627 dot 2040807 at redhat dot com>
On 04/03/16 16:21, Jeff Law wrote:
On 03/04/2016 08:05 AM, Richard Biener wrote:
does that mean that the shift amount should be DImode?
Seems like a more flexible approach would be for the midend to be able
to handle these things...
Or macroize for all integer modes?
That's probably worth exploring. I wouldn't be at all surprised if it that turns out to be better than any individual mode, not just for arm & aarch64, but would help a variety of targets.
What do you mean by 'macroize' here? Do you mean use iterators to create multple variants of patterns with different
modes on the shift amount?
I believe we'd still run into the issue at https://gcc.gnu.org/ml/gcc/2016-03/msg00036.html.
My worry is that such a change will bleeds out beyond just the standard shifting and shadd style patterns in each port. I guess that would largely depend on how many combiner patterns a port has which combine a shift with some other
I see. For my purposes restricting this transformation to the cases where the shifted value is a REG seems to work ok,
so maybe we can avoid most side effects.