XTYPE/PERM 指令子类包括执行置换的指令。
这是支持 H.264 上下文自适应二进制算术编码 (CABAC) 的专用指令。
Class: XTYPE (slots 2,3)
Notes
此指令生成的谓词不能用作.new 谓词,也不能自动与另一个谓词进行AND’d。
Encoding
饱和单个标量值。
sath 将带符号的 32 位数字饱和为带符号的 16 位数字,然后将其符号扩展回 32 位并放置在目标寄存器中。 结果的最小负值为 0xffff8000,最大正值为 0x00007fff。
stuh 将带符号的 32 位数字饱和为无符号的 16 位数字,然后将其零扩展回 32 位并放置在目标寄存器中。 结果的最小值为0,最大值为0x0000ffff。
satb 将带符号的 32 位数字饱和为带符号的 8 位数字,然后将其符号扩展回 32 位并放置在目标寄存器中。 结果的最小值为 0xffffff80,最大值为 0x0000007f。
satub 将一个有符号的 32 位数字饱和为一个无符号的 8 位数字,该数字被零扩展回 32 位并放置在目标寄存器中。 结果的最小值为0,最大值为0x000000ff。
Class: XTYPE (slots 2,3)
Notes
如果在执行该指令期间发生饱和(结果被钳制为最大值或最小值),则设置状态寄存器中的 OVF 位。 OVF 保持设置,直到通过传输到 SR 明确清除。
Intrinsics
Encoding
Swizzle 一个单词的字节。 该指令对于在小端格式和大端格式之间进行转换很有用。
Class: XTYPE (slots 2,3)
Intrinsics
Encoding
对齐一个向量。 使用立即数或谓词寄存器的最低有效 3 位作为要对齐的字节数。 将 Rss 寄存器对右移此字节数。 用 Rtt 中最不重要的元素填充空出的位置。
Class: XTYPE (slots 2,3)
Intrinsics
Encoding
将常数 0x00008000 添加到 64 位源向量 Rss 中的每个字。 可以选择将此加法饱和到 32 位。 将结果的高半字打包到 32 位目标寄存器的相应半字中。
Class: XTYPE (slots 2,3)
Notes
如果在执行该指令期间发生饱和(结果被钳制为最大值或最小值),则设置状态寄存器中的 OVF 位。 OVF 保持设置,直到通过传输到 SR 明确清除。
Intrinsics
Encoding
对于向量中的每个元素,将值饱和到下一个较小的大小。 VSATHUB 将有符号半字饱和到无符号字节,而 VSATHB 将有符号半字饱和到有符号字节。
Class: XTYPE (slots 2,3)
Notes
如果在执行该指令期间发生饱和(结果被钳制为最大值或最小值),则设置状态寄存器中的 OVF 位。 OVF 保持设置,直到通过传输到 SR 明确清除。
Intrinsics
Encoding
将源向量 Rss 的每个元素饱和到下一个较小的大小。 VSATHUB 将有符号半字饱和到无符号字节。 VSATWH 将有符号字饱和到有符号半字,而 VSATWUH 将有符号字饱和到无符号半字。 结果值以解包形式放置在目标寄存器 Rdd 中。
Class: XTYPE (slots 2,3)
Notes
如果在执行该指令期间发生饱和(结果被钳制为最大值或最小值),则设置状态寄存器中的 OVF 位。 OVF 保持设置,直到通过传输到 SR 明确清除。
Intrinsics
Encoding