高通 Hexagon V65 HVX 编程参考手册(11)

高通 Hexagon V65 HVX 编程参考手册(11)

5.4 HVX/DEBUG

HVX/DEBUG 指令子类包括用于调试的指令。

提取向量元素
使用 Rs 的第 5:2 位作为单词索引,从向量寄存器 Vu 中提取一个单词。结果放在标量寄存器 Rd 中。在使用矢量加载从存储器中读取数据后,存储器地址可用作控制选择 Rs。

这是一个非常高延迟的指令,应该只在调试中使用。内存到内存的传输效率更高。
在这里插入图片描述
在这里插入图片描述

5.5 HVX/GATHER-DOUBLE-RESOURCE

HVX/GATHER-DOUBLE-RESOURCE 指令子类包括在向量 TCM 中执行收集操作的指令。

Vector gather
向量收集指令在向量 TCM 中执行收集操作。收集操作实际上是将元素从 VTCM 中的大区域复制到较小的向量大小区域。较大的内存区域由两个标量寄存器指定:Rt32 是基数,Mu2 指定该区域的长度为 1(以字节为单位)。该区域必须位于 VTCM 中并且不能跨越页面边界。矢量寄存器 Vv32 指定该区域的字节偏移量。对于向量中的每个元素,半字或字粒度的元素从 Rt + Vv32 指向的地址复制到伴随存储指向的线性元素中的相应元素。

偏移向量 Vv32 可以包含以半字或字大小指定的字节偏移。最终元素地址不必按字节对齐。如果偏移量穿过聚集区域的末端,它将被丢弃。偏移量必须为正,否则将被丢弃。也可以指定向量谓词寄存器。如果谓词为假,则不复制该字节。这可用于模拟字节收集。

gather 指令必须与使用 tmp 寄存器源的 VMEM .new 存储配对。例如:
{ VMEM(R0+#0) = Vtmp.new; Vtmp.h = vgather(R1,M0, V1:0.w); }

用半字地址收集半字并将结果保存到 VMEM 指令的 R0 指向的地址。

如果一个 vgather 没有伴随一个商店,它就会被丢弃。
在这里插入图片描述
在这里插入图片描述

5.6 HVX/GATHER

HVX/GATHER 指令子类包括执行收集操作的指令。

Vector gather
向量收集指令在向量 TCM 中执行收集操作。收集操作实际上是将元素从 VTCM 中的大区域复制到较小的向量大小区域。较大的内存区域由两个标量寄存器指定:Rt32 是基数,Mu2 指定该区域的长度为 1(以字节为单位)。该区域必须位于 VTCM 中并且不能跨越页面边界。矢量寄存器 Vv32 指定该区域的字节偏移量。对于向量中的每个元素,半字或字粒度的元素从 Rt + Vv32 指向的地址复制到伴随存储指向的线性元素中的相应元素。

偏移向量 Vv32 可以包含以半字或字大小指定的字节偏移。最终元素地址不必按字节对齐。如果偏移量穿过聚集区域的末端,它将被丢弃。偏移量必须为正,否则将被丢弃。也可以指定向量谓词寄存器。如果谓词为假,则不复制该字节。这可用于模拟字节收集。

gather 指令必须与使用临时寄存器源的 VMEM .new 存储配对。例如:
{ VMEM(R0+#0) = Vtmp.new; Vtmp.h = vgather(R1,M0, V0.h); }

用半字地址收集半字并将结果保存到 VMEM 指令的 R0 指向的地址。

如果一个 vgather 没有伴随一个商店,它就会被丢弃。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_38498942/article/details/129726250