This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
RE: Does neon_vset_lane<mode> expand wrong code when BYTES_BIG_ENDIAN?
From: Joseph Myers [mailto:joseph@codesourcery.com]
> On Wed, 4 Jan 2012, Xinyu Qi wrote:
>
> > It seems these two parts of the code dealing with BYTE_BIG_ENDIAN will
> > cancel each other, and result in the original imm op unchanged.
>
> Yes, that's correct. Lane numbers for NEON intrinsics are the same as
> those used in assembly instructions, but for big-endian they are different
> from those used in the target-independent semantics of the RTL
> intermediate representation.
>
> > Is there something wrong with these code?
>
> No, see <http://gcc.gnu.org/ml/gcc-patches/2010-06/msg00409.html> where I
> explain this at greater length.
I see.
Would you mind to take a look at the test case neon-vset_lanes8.c under gcc.target/arm/
If BYTE_BIG_ENDIAN, would the x be {1,2,3,4,16,6,7,8} after vset_lane_s8 (16,x,3) is called?
And if so, it is obviously not equal to y and test fails.
Does this case not suitable for BYTE_BIG_ENDIAN test?
Thanks,
Xinyu