On Wed, Jan 13, 2016 at 11:06 AM, Kyrill Tkachov
<kyrylo.tkac...@foss.arm.com> wrote:
>
> On 13/01/16 06:59, Jim Wilson wrote:
>>
>> On Tue, Jan 12, 2016 at 5:40 PM, Jim Wilson <jim.wil...@linaro.org> wrote:
>>>
>>> The info is in here
>>>      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65932
>>> See the comments on gcc.target/arm/wmul-[123].c which no longer
>>> generate smulbb etc instructions, which are 16x16=32 expanding
>>> multiplies which are faster on some older parts that have them.  They
>>> are present in armv5e and higher architecture versions.
>>
>> I forgot about the ldrub/ldrsb problem.  ldrub is preferred,
>> particularly for older targets, e.g. thumb1, as it accepts more
>> addressing modes than ldrsb.
>
>
> Well, Thumb1 is used in armv6-m i.e. for currently used
> microcontrollers where codesize is important, so we should
> gather data on how much this actually hurts us there.
>
> Building some popular embedded benchmarks for Thumb1 with various
> optimisation levels (including -Os!) with and without the
> change in option 1 is something we should do.
>
>>    We can't get ldrub if PROMOTE_MODE
>> doesn't do unsigned extension.
>>
>> So we have a number of bad choices here
>> 1) We can remove sign-changing promotions from PROMOTE_MODE, and
>> accept slower code for pre-thumb2 architectures.
>
>
> I personally think this is the most promising way forward,
> as long as we fully understand the effect on codegen and work
> towards minimising any negative effects.

I think the only way forward is to make PROMOTE_MODE and
promote_function_mode agree.
I hope nobody else is going to ack hacks here and there (esp. with "I
think it cannot happen"
comments...).

Oh, and document that they have to agree.

Richard.

> Thanks,
> Kyrill
>
>
>> 2) We can add sign-changing promotions to function_promote_mode, and
>> accept a minor ABI change.
>> 3) We can add strange and probably fragile extensions to the middle
>> end to work around the ARM back end problem.
>> 4) We can just leave the ARM port broken and let it occasionally
>> generate incorrect code.
>>
>> Option 4 is the one that we've been using for the last 8 months or so.
>> I think we should do either 1 or 2, though that depends on what the
>> ARM maintainers are willing to accept.
>>
>> Jim
>>
>

Reply via email to