From: Joseph Myers [mailto:jos...@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