I have found one way to store the 8 bytes to store to an unaligned address.
Following is the program.
The following program stores the first 8 bytes of vector on to buf.
k - I have used as the variable to change the location in the buf to store the data
int main(int argc, char *argv[])
{
unsigned char buf[40];
vector unsigned char res;
vector unsigned char on = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
memset(buf, 0, 40);
int k = atoi(argv[1]);
unsigned char *outp = &(buf[k]);
res = vec_perm( on, on, vec_lvsr(0, (unsigned char *)outp);
vec_ste( (vector unsigned char)res, 0, (unsigned char *)outp);
vec_ste( (vector unsigned short)res, 1, (unsigned short *)outp);
vec_ste( (vector unsigned short)res, 2, (unsigned short *)outp);
vec_ste( (vector unsigned short)res, 4, (unsigned short *)outp);
vec_ste( (vector unsigned short)res, 6, (unsigned short *)outp);
vec_ste( (vector unsigned char)res, 7, (unsigned char *)outp);
print(buf);
}