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

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

5.7 HVX/LOAD

HVX/LOAD 指令子类包括内存加载指令。

Load - aligned
使用向量大小对齐的地址从内存中读取完整的向量寄存器 Vd。该操作有三种生成内存指针地址的方法:Rt 具有常量 4 位带符号偏移量,Rx 具有带符号后递增,Rx 具有修饰寄存器 Mu 后递增。对于直接形式,该值指定值数据的向量数。 Mu 包含实际的字节偏移量。

如果指向指令的指针未对齐,则指令会忽略低位,从而生成对齐地址。

如果标量谓词寄存器 Pv 的计算结果为真,则使用向量大小对齐的地址从内存中加载一个完整的向量寄存器 Vs。否则,该操作变为 NOP。
在这里插入图片描述
在这里插入图片描述

注意事项

  • 该指令可以使用任何HVX 资源。
  • 可以指定对微体系结构的可选“非临时”提示,以指示数据不可重用。
  • 地址计算中使用的立即数以向量长度的倍数指定。
    在这里插入图片描述

Load - immediate use
使用向量大小对齐的地址从内存中读取完整的向量寄存器 Vd(和/或临时向量寄存器)。该操作有三种生成内存指针地址的方法:Rt 具有常量 4 位带符号偏移量,Rx 具有带符号后递增,Rx 具有修饰寄存器 Mu 后递增。对于直接形式,该值表示值数据的向量数。 Mu 包含实际的字节偏移量。

如果指向指令的指针未对齐,则指令会忽略低位,从而生成对齐地址。该值立即在数据包中用作任何指令的源操作数。

“Vd.cur”除了在数据包中使用它之外,还将加载值写入向量寄存器。

“Vd.tmp”不会将传入数据写入向量寄存器文件。数据仅用作当前数据包中的来源,然后立即丢弃。请注意,这种形式不消耗任何向量资源,允许它与一些指令并行放置,而普通对齐加载不能。

如果标量谓词寄存器 Pv 的计算结果为真,则使用向量大小对齐的地址从内存中加载一个完整的向量寄存器 Vs。否则,该操作变为 NOP。

在这里插入图片描述
在这里插入图片描述
注意事项

  • 该指令可以使用任何HVX 资源。
  • 可以指定对微体系结构的可选“非临时”提示,以指示数据不可重用。
  • 地址计算中使用的立即数以向量长度的倍数指定。
    在这里插入图片描述

Load - temporary immediate use
使用向量大小对齐的地址从内存中读取完整的向量寄存器 Vd(和/或临时向量寄存器)。该操作有三种生成内存指针地址的方法:Rt 具有常量 4 位带符号偏移量,Rx 具有带符号后递增,Rx 具有修饰寄存器 Mu 后递增。对于直接形式,该值表示值数据的向量数。 Mu 包含实际的字节偏移量。

如果指向指令的指针未对齐,则指令会忽略低位,从而生成对齐地址。该值立即在数据包中用作任何指令的源操作数。

“Vd.tmp”不会将传入数据写入向量寄存器文件。数据仅用作当前数据包中的来源,然后立即丢弃。请注意,这种形式不消耗任何向量资源,允许它与一些指令并行放置,而普通对齐加载不能。

如果标量谓词寄存器 Pv 的计算结果为真,则使用向量大小对齐的地址从内存中加载一个完整的向量寄存器 Vs。否则,该操作变为 NOP。
在这里插入图片描述
在这里插入图片描述

注意事项

  • 该指令可以使用任何HVX 资源。
  • 可以指定对微体系结构的可选“非临时”提示,以指示数据不可重用。
  • 地址计算中使用的立即数以向量长度的倍数指定。
    在这里插入图片描述

Load - unaligned
使用任意字节对齐地址从内存中读取一个完整的向量寄存器 Vd。该操作有三种生成内存指针地址的方法:Rt 具有常量 4 位有符号偏移量,Rx 具有 3 位有符号后递增,Rx 具有修饰寄存器 Mu 后递增。对于直接形式,该值表示值数据的向量数。 Mu 包含实际的字节偏移量。未对齐的内存操作需要对内存系统进行两次访问,因此会导致比对齐访问增加的功率和带宽。但是,它们需要的指令更少。

尽可能使用对齐内存操作更有效,有时使用多个对齐内存访问和 valign 操作来合成非对齐访问。

请注意,该指令同时使用了 slot 0 和 slot 1,在包含 vmemu 的数据包中最多只允许执行 3 条指令。
在这里插入图片描述
注意事项

  • 该指令使用HVX 置换资源。
  • 地址计算中使用的立即数以向量长度的倍数指定。
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

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