[PATCH, ARM] Support vcond/vcondu patterns for NEON

Richard Guenther richard.guenther@gmail.com
Wed Aug 25 14:03:00 GMT 2010


On Wed, Aug 25, 2010 at 2:22 PM, Julian Brown <julian@codesourcery.com> wrote:
> Hi,
>
> This patch implements vcond<mode> and vcondu<mode> for NEON, fixing the
> testsuite failure gcc.dg/vect/pr43430-1.c. These are RTX "standard
> names", but are unfortunately undocumented at present (see PR29269), so
> the intended semantics have been cargo-culted from other backends which
> implement the pattern. These vector comparisons provide a rather nice
> extension to the capabilities of the vectorizer.

If you figured out how they work can you add documentation on
your way?

Thanks,
Richard.

> Also, the patterns for vcge, vcgt and vceq instructions have been
> extended to support the immediate variants (only comparisons with zero
> are supported), and vcle and vclt immediate patterns have been added. I
> haven't attempted to hook these up to the intrinsic-expansion
> mechanism, so those won't support the immediate-zero mode yet.
> (Note the gap in the numbering for the unspecs is intended to be filled
> by the NEON misalignment-support patch, when that is approved).
>
> Tested with cross to ARM Linux, using the options "-mfpu=neon
> -march=armv7-a -mfloat-abi=softfp" (gcc, g++ and libstdc++). The only
> change in test results is the transition of the test named above from
> FAIL to PASS.
>
> OK to apply?
>
> Thanks,
>
> Julian
>
> ChangeLog
>
>    gcc/
>    * config/arm/neon.md (UNSPEC_VCLE, UNSPEC_VCLT): New constants for
>    unspecs.
>    (vcond<mode>, vcondu<mode>): New expanders.
>    (neon_vceq<mode>, neon_vcge<mode>, neon_vcgt<mode>): Support
>    comparisons with zero.
>    (neon_vcle<mode>, neon_vclt<mode>): New patterns.
>    * config/arm/constraints.md (Dz): New constraint.
>



More information about the Gcc-patches mailing list