[PATCH][ARM] Enable auto-vectorization for copysignf

Christophe Lyon christophe.lyon@linaro.org
Thu Sep 11 13:43:00 GMT 2014


Hi Jiong,

On 9 September 2014 12:59, Ramana Radhakrishnan
<ramana.gcc@googlemail.com> wrote:
> On Mon, Aug 18, 2014 at 11:31 AM, Jiong Wang <jiong.wang@arm.com> wrote:
>> this patch enable auto-vectorization for copysignf by using vector
>> bit selection instruction on arm32 when neon available.
>>

I've noticed that your new testcase fails (the scan-tree-dump-times
line), in the following cases:
* forcing -march=armv5t in RUNTESTFLAGS (targets
arm-none-linux-gnueabi and arm-none-linux-gnueabihf)
* target armeb-none-linux-gnueabihf

You can have a look at:
http://cbuild.validation.linaro.org/build/cross-validation/gcc/trunk/215067/report-build-info.html

If you go 1 level up at
http://cbuild.validation.linaro.org/build/cross-validation/gcc/trunk/215067/
you'll be able to browse into the per-target subdirs and get the .sum
files if you need them.

Christophe.


>> for a simple testcase:
>>
>>   for (i = 0; i < N; i++)
>>     r[i] = __builtin_copysignf (a[i], b[i]);
>>
>>
>> assuming vector factor be 4, the generated instruction sequences is:
>>
>>         vmov.i32        q10, #2147483648  @ v4si
>> .L2:
>>         vld1.64 {d18-d19}, [ip:64]
>>         add     r3, r3, #16
>>         add     ip, ip, #16
>>         vldr    d16, [r3, #-16]
>>         vldr    d17, [r3, #-8]
>>         vbif    q8, q9, q10
>
>
>
> Ok.
>
> Ramana
>
>
>>
>> thanks.
>>
>> gcc/
>>   * config/arm/arm.c (NEON_COPYSIGNF): New enum.
>>   (arm_init_neon_builtins): Support NEON_COPYSIGNF.
>>   (arm_builtin_vectorized_function): Likewise.
>>   * config/arm/arm_neon_builtins.def: New macro for copysignf.
>>   * config/arm/neon.md (neon_copysignf<mode>): New pattern for vector
>> copysignf.
>>
>> gcc/testsuite/
>>   * gcc.target/arm/vect-copysignf.c: New testcase.



More information about the Gcc-patches mailing list