This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH, ARM] Support vcond/vcondu patterns for NEON
- From: Richard Guenther <richard dot guenther at gmail dot com>
- To: Julian Brown <julian at codesourcery dot com>
- Cc: gcc-patches at gcc dot gnu dot org, paul at codesourcery dot com, rearnsha at codesourcery dot com
- Date: Wed, 25 Aug 2010 15:06:03 +0200
- Subject: Re: [PATCH, ARM] Support vcond/vcondu patterns for NEON
- References: <email@example.com>
On Wed, Aug 25, 2010 at 2:22 PM, Julian Brown <firstname.lastname@example.org> wrote:
> 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
> 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?
> ? ?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.