1、vdd.h = vsxt(Vu.b)? 對每個元素進行符號擴展
vdd.h = vzxt(Vu.b) 對每個元素進行補0擴展
需要注意是交叉來做的
Intrinsics
Vdd.h=vsxt(Vu.b) HVX_VectorPair Q6_Wh_vsxt_Vb(HVX_Vector Vu)
Vdd.uh=vzxt(Vu.ub) HVX_VectorPair Q6_Wuh_vzxt_Vub(HVX_Vector Vu)
Vdd.uw=vzxt(Vu.uh) HVX_VectorPair Q6_Wuw_vzxt_Vuh(HVX_Vector Vu)
Vdd.w=vsxt(Vu.h) HVX_VectorPair Q6_Ww_vsxt_Vh(HVX_Vector Vu)
2、矢量指令一般是將矢量寄存器中的每個 element 公平對待,并行處理,比較少將整個矢量寄存器中的bit位當作一個整體來處理,但是我們有時候又有這樣的需求,比如求一個矢量寄存器中的最大最小值,對整個矢量寄存器進行整體移位(valign 最多移 7 個 Bytes)等。而用下面的兩條指令組合起來可以實現任意字節的矢量寄存器拼接:
Vd = vror(Vu, Rt)
Vd = vmux(Qt4, Vu, Vv)