https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108809
--- Comment #3 from Jiu Fu Guo <guojiufu at gcc dot gnu.org> --- A similar different view between BE and LE on the vector for vec_xst_len_r. For: store_data_uc = (vector unsigned char){ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; vec_xst_len_r(store_data_uc, address, size); On BE, from 128bit view (corresponding to store_data_uc) is `0x102030405060708090a0b0c0d0e0f10`. But on LE, from 128bit view, it is `0x100f0e0d0c0b0a090807060504030201`. After right justified (left clean to 0s), the effective bytes to be stored to buff on LE are those with smaller values (1,2,...); On BE, the bytes to be stored are those with bigger values (16,15,...) BTW: the generated insn sequence aligns with the example implementation in PVIPR.