reg计算数据搬运接口,适用于从矢量数据寄存器连续非32B对齐的起始地址连续搬出到UB的尾块场景。
该接口每调用一次接口会更新目的操作数在UB上的地址。
需要先调用下列接口之一后,再调用本接口。
搬运原理如下: 记目的操作数的起始地址为 dst_start,结束地址为 dst_end,尾块元素个数为 unalign_count = (dst_end - dst_end / 32 * 32) / sizeof(T)。 则搬运的数据会分为两部分,分别是:
- 32B对齐的主块部分[dst_start, dst_end - unalign_count * sizeof(T)]。
- 非32B对齐的尾块部分[dst_end - unalign_count * sizeof(T), dst_end]。 store_unalign或store_unalign_postupdate接口执行时,会将主块搬出至UB,尾块暂存至非对齐寄存器[0, unalign_count]。 本接口执行时,会将尾块从非对齐寄存器[0, unalign_count]搬出至UB。
[object Object]
无
PIPE_V
- 该接口中的dst不需要32B对齐,但数据类型为T的dst需要sizeof(T) Byte对齐。
- 调用本接口之前,需要调用使用uint32_t作为存储偏移量的接口,且本接口与前序接口的非对齐寄存器要保持一致。
[object Object]