In an altivec optimised function I'm writing I want to mask out some of the bytes read.
To generate the mask vector I was going to use:
mask = vec_sld(vec_splat_u8(-1), vec_splat_u8(0), 16 - remains);
but it turns out that you have to use a literal as the last parameter to vec_sld().
If anyone can suggest a method to efficiently generate a vector with the first x bytes set to 0xff and the others set to 0x00 then it would help me a lot.
an searching for 'vec_sld' can help you.
No help there that I can see.
I could get around the literal value requirement in by either doing multiple vec_sld() calls in a loop or by doing a switch with all possible values for remains but neither of these solutions will be very efficient.
For now I've solved the problem by generating the mask vector in memory in advance.