Add an array_mode_supported_p target hook

Richard Earnshaw rearnsha@arm.com
Fri May 6 10:51:00 GMT 2011


On Fri, 2011-05-06 at 11:35 +0100, Richard Sandiford wrote:
> Richard Earnshaw <rearnsha@arm.com> writes:
> >> +/* Implements target hook array_mode_supported_p.  */
> >> +
> >> +static bool
> >> +arm_array_mode_supported_p (enum machine_mode mode,
> >> +			    unsigned HOST_WIDE_INT nelems)
> >> +{
> >> +  if (TARGET_NEON
> >> +      && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode))
> >> +      && (nelems >= 2 && nelems <= 4))
> >> +    return true;
> >> +
> >> +  return false;
> >> +}
> >
> > I'm not sure I understand why this is limited to 4 or fewer elements. A
> > Q reg of chars would surely be 16 elements.
> 
> The mode here is the mode of the array element, which for the cases
> we're interested in would be something like V4HI (D) or V4SI (Q).
> nelems says how many of those (in our case, vector) elements there
> are in the array.
> 
> The element range we want is 1-4 because that matches the number
> of vectors that can be loaded by the vld1-vld4 instructions.
> We don't include 1 because arrays of one element are already
> treated as having the same mode as their element.
> 
> Richard

I understand now...

Ok.

R.
> 




More information about the Gcc-patches mailing list