This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Use of vector instructions in memmov/memset expanding


On 10/28/2011 05:41 AM, Michael Zolotukhin wrote:
>> > +/* Target hook.  Returns rtx of mode MODE with promoted value VAL, that is
>> > +   supposed to represent one byte.  MODE could be a vector mode.
>> > +   Example:
>> > +   1) VAL = const_int (0xAB), mode = SImode,
>> > +   the result is const_int (0xABABABAB).
>> >
>> > This can be handled in machine independent way, right?
>> >
>> > +   2) if VAL isn't const, then the result will be the result of MUL-instruction
>> > +   of VAL and const_int (0x01010101) (for SImode).  */
>> >
>> > This would probably go better as named expansion pattern, like we do for other
>> > machine description interfaces.
> I don't think it could be done in machine-independent way - e.g. if
> AVX is available, we could use broadcast-instructions, if not - we
> need to use multiply-instructions, on other architectures there
> probably some other more efficient ways to duplicate byte value across
> the entire vector register. So IMO it's a good place to have a hook.
> 
> 

Certainly it can be done machine-independently.
See expand_vector_broadcast in optabs.c for a start.


r~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]