Hexagon v60 hvx 指令:sign/zero extension

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)


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容