高通 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 置换资源。
- 地址计算中使用的立即数以向量长度的倍数指定。