This is the mail archive of the gcc@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]

Type yielded by TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD hook?


I'm trying to add a hook for aligning vectors for loads.

I'm using the altivec rs6000 code as a baseline.

However, the instruction is like the iwmmxt_walign instruction in the
ARM port; it takes
a normalish register and uses the bottom bits... it doesn't use a
full-width vector.

GCC complains when my builtin pointed to by
TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD yields a QImode result, because
it has no way of converting that to the vector moe it is expecting.  I
think the altivec side would have a similar problem, as the expected
RTX output RTX is:

(reg:V8HI 131 [ vect_var_.2540 ])

but it changes that to:

(reg:V16QI 160)

for the VLSR instruction.  V16QImode is what VPERM expects, and I
think since V8HI and V16QI mode are the same size everyone is happy.

Is there a way to tell GCC what the type of the
TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD should be?  Looking at
http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gccint/Addressing-Modes.html#Addressing-Modes
it reads like it must merely match the last operand of the
vec_realign_load_<mode> pattern.

--
Why are ``tolerant'' people so intolerant of intolerant people?


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