On 28 May 2014 08:30, Bin.Cheng <amker.ch...@gmail.com> wrote:
> Missing patch.
>
> On Wed, May 28, 2014 at 3:02 PM, bin.cheng <bin.ch...@arm.com> wrote:
>> Hi,
>> I was surprised that GCC didn't support addressing modes like
>> [REG+OFF]/[REG_REG] for instructions ldr/str in vectorization scenarios.
>> The generated assembly is bad since all address expressions have to be
>> computed outside of memory reference.  The root cause is because aarch64
>> effectively rejects reg-indexing (and const-offset) addressing modes in
>> aarch64_classify_address and miscellaneous simd patterns.
>>
>> By fixing this issue, performance of fp benchmarks can be obviously
>> improved.  It can also help vectorized int cases.
>>
>> The patch passes bootstrap and regression test on aarch64/little-endian.  It
>> also passes regression test on aarch64/big-endian except for case
>> "gcc.target/aarch64/vect-mull.c".  I analyzed the failed case and now
>> believe it reveals a latent bug in vectorizer on aarch64/big-endian.  The
>> analysis report is posted at
>> https://gcc.gnu.org/ml/gcc-patches/2014-05/msg00182.html.
>>
>> So is it OK?
>>
>> Thanks,
>> bin
>>
>>
>> 2014-05-28  Bin Cheng  <bin.ch...@arm.com>
>>
>>         * config/aarch64/aarch64.c (aarch64_classify_address)
>>         (aarch64_legitimize_reload_address): Support full addressing modes
>>         for vector modes.
>>         * config/aarch64/aarch64.md (mov<mode>, movmisalign<mode>)
>>         (*aarch64_simd_mov<mode>, *aarch64_simd_mov<mode>): Relax
>> predicates.

OK Thanks /Marcus

Reply via email to