_mm_shuffle_epi8:第一个参数为输入数组;第二个参数为掩模,对应输入数组的第几个值(索引)。
功能:对数据进行重组,非常灵活。当掩模值大于1时,该值除以16求余,如17即为1。mask[id]=2,dst[id] = src[mask[id]%16] 。当掩模值为-1时对应值为0。
__m128i src= _mm_setr_epi8(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
__m128i dst = _mm_shuffle_epi8(src, _mm_setr_epi8(0, 1, 3, 17, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 25));
该数组dst 输出为[1,2,4,2,6,0,0,0,0,0,0,0,0,0,0,10]
https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2010/bb531427(v=vs.100)