On 29 November 2010 00:18, Michael Hope <michael.h...@linaro.org> wrote:

>
> To add to the mix:
>
> Some ideas that are logged as blueprints:
>  Using ARMv5 saturated instructions
> (https://blueprints.launchpad.net/gcc-linaro/+spec/armv5-saturated-ops)
>  Using ARMv6 SIMD instructions
> (https://blueprints.launchpad.net/gcc-linaro/+spec/armv6-simd)
>

Those are quite nice instructions; certainly they seem useful for string ops
of various types
if misued creatively.


>  Using ARMv7 unaligned accesses
> (https://blueprints.launchpad.net/gcc-linaro/+spec/unaligned-accesses)
>  Changing the built-in memcpy to use unaligned
> (https://blueprints.launchpad.net/gcc-linaro/+spec/unaligned-memcpy)
>

The interesting challenge here is figuring out how expensive unaligned's are
and if the cost trade offs are the same on different chips.

The following areas have been suggested.  I don't know if they're still
valid:

>
> Register allocator: The register allocator is designed around the
> needs of architectures with a low register count and restrictive
> register classes. The ARM architecture has many general purpose
> registers. Different assumptions may give better code.
>
> Conditional instructions: The ARM and, to a lesser extent, Thumb-2
> ISAs allow conditional execution of instructions. This can be used in
> many situations to eliminate an expensive branch. The middle end
> expands and transforms branches. The ARM backend tries to recombine
> the RTL back into conditional instructions, but often can't due to the
> middle end transforms.
>

GCC is quite creative in avoiding branches by doing lots of masking and
logic;
it'll be interesting how much this has to gain.

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

Reply via email to