On 23 May 2013 04:09, Michael Hudson-Doyle <michael.hud...@linaro.org> wrote:
> Mans Rullgard <mans.rullg...@linaro.org> writes:
>
>> If you need to disable CSE for part of the code, you might want to try
>> your luck with __attribute__((optimize("no-gcse"))) on the relevant
>> functions.
>>
>>> I'd also be interested if you think this class of optimization makes
>>> little sense on ARM and then I'll stop and find something else to do :-)
>>
>> I suggest running some benchmarks under perf and counting branch prediction
>> misses.  Maybe it's not as much of a problem as you think.
>
> Well, I recompiled with -fno-gcse globally and the change now does
> result in a reasonable performance increase, in the 3-7 % range.  perf
> stat suggests that this is because it reduces the overall number of
> branches rather than the rate of branch misses though...

Correctly predicted branches are more or less free, as are unconditional
ones to a fixed target.  If the number of mispredicted branches changes,
that's interesting.

It would also be interesting to see the numbers if you apply the
above-mentioned attribute to the relevant function(s) and leave CSE
otherwise enabled.  CSE is a generally a good thing, so disabling it
globally is probably not that great an idea.

BTW, what hardware are you testing this on?

-- 
Mans Rullgard / mru

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to