Hexagon v60 hvx 指令:sign/zero extension

1、vdd.h = vsxt(Vu.b)  对每个元素进行符号扩展

Hexagon v60 hvx 指令:sign/zero extension_第1张图片

vdd.h = vzxt(Vu.b) 对每个元素进行补0扩展

Hexagon v60 hvx 指令:sign/zero extension_第2张图片

需要注意是交叉来做的

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)


Hexagon v60 hvx 指令:sign/zero extension_第3张图片
Hexagon v60 hvx 指令:sign/zero extension_第4张图片

你可能感兴趣的:(Hexagon v60 hvx 指令:sign/zero extension)