ZHCUA98E january 2018 – march 2023 TDA4VM , TDA4VM-Q1
在 C6000 器件上访问矢量类型的一部分可能是“无阻碍的”,但在 C7000 器件上则需要额外的指令。
例如,在 C6000 上访问 int4 元素的子矢量可能是无阻碍的,因为 C6000 上的一个 int4 由四个 32 位寄存器组成。因此,编译器可以通过使用适当的 32 位寄存器来访问 int4 的一个元素。但是,在 C7000 器件上,int4 元素位于单个矢量寄存器中。因此,访问 int4 的一个元素需要编译器使用指令(例如 VGETW)来提取该数据。
类似地,在 C6000 器件上打包一个 int4 矢量可能是无阻碍的或基本无阻碍,而在 C7000 器件上则可能需要一系列指令(例如 VPUTW)。
如果 C7000 编译器能够进一步矢量化代码,则在某些情况下可能会减轻性能损失。例如,通过 _loll() 访问 64 位的低 32 位可以矢量化成 VDEAL2W。