This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: extendqihi2 and GCC RTL type system


Hi, Jim

On Mon, Feb 22, 2016 at 12:53 PM, Jim Wilson <jim.wilson@linaro.org> wrote:
> On Mon, Feb 22, 2016 at 7:55 AM, David Edelsohn <dje.gcc@gmail.com> wrote:
>> If I remove extendqihi2 (extend:HI pattern) from the PowerPC port,
>> will that cause any problems for the GCC RTL type system or inhibit
>> optimizations?   I see that Alpha and SPARC define extendqihi2, but
>> IA-64 and AArch64 do not, so there is precedent for both approaches.
>
> aarch64 does have an extendqihi2 pattern.  It uses so many iterator
> macros that you can't use grep to look for stuff.  The extendqihi2
> pattern is called <ANY_OPTAB>qihi2.\

Thanks for the response.  I had missed the all-encompassing iterator for qidi2.

> If you have a target with registers larger than HImode, no HImode
> register operations, qi/hi loads set the entire register, and you
> define PROMOTE_MODE to convert all QImode and HImode operations to the
> same larger mode with the same signedness, then I don't think that
> there is any advantage to having an extendqihi2 pattern.  You should
> get the same code with or without it, as a qimode to himode conversion
> is a no-op.  The only difference should be that with an extendqihi2
> pattern you will see some HImode operations in the RTL, without
> extendqihi2 you will see equivalent operations in the promoted mode.
>
> If you are concerned about this, then just try compiling some large
> code base using two compilers, one with extendqihi2 and one without,
> and check to see if there are any code generation differences.

Segher did a quick sniff test on a large code base and found two minor
differences in code generation.  I wanted to check if there was any
more information than anecdotes.

Thanks, David


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]