天天看点

Hexagon_V65_Programmers_Reference_Manual(49)

Hexagon_V65_Programmers_Reference_Manual (49)

        • 11.10.7.8 谓词转移(Vector shuffle)
        • 11.10.7.9 测试位(Test bit)
        • 11.10.7.10 向量比较半字(Vector compare halfwords)
        • 11.10.7.11 向量比较任何匹配的字节(Vector compare bytes for any match)
        • 11.10.7.12 向量比较字节(Vector sign extend)
        • 11.10.7.13 矢量比较词(Vector compare words)
        • 11.10.7.14 译码器打包偶数和奇数谓词位(Viterbi pack even and odd predicate bits)
        • 11.10.7.15 矢量多路复用器(Vector mux)

11.10.7.8 谓词转移(Vector shuffle)

Pd=Rs 将谓词传输到通用寄存器的 8 个最低有效位,并将其他位归零。

Rd=Ps 将通用寄存器的 8 个最低有效位传送到谓词。

Hexagon_V65_Programmers_Reference_Manual(49)

Class: XTYPE (slots 2,3)

Intrinsics

Hexagon_V65_Programmers_Reference_Manual(49)

Encoding

Hexagon_V65_Programmers_Reference_Manual(49)

11.10.7.9 测试位(Test bit)

从寄存器中提取一点。 如果该位为真(1),则将谓词寄存器目的地的所有位设置为1。如果该位为假(0),则将谓词寄存器目的地的所有位设置为0。可以指示要测试的位使用立即数或寄存器值。

如果使用寄存器指示要测试的位,并且指定的值超出范围,则谓词结果为零。

Hexagon_V65_Programmers_Reference_Manual(49)

Class: XTYPE (slots 2,3)

Intrinsics

Hexagon_V65_Programmers_Reference_Manual(49)

Encoding

Hexagon_V65_Programmers_Reference_Manual(49)

11.10.7.10 向量比较半字(Vector compare halfwords)

比较两个 64 位向量中的四个 16 位半字中的每一个,如果为真,则将谓词目的地中的相应位设置为“11”,如果为假,则设置为“00”。

半字比较可以是等于、有符号大于或无符号大于。

Hexagon_V65_Programmers_Reference_Manual(49)

Class: XTYPE (slots 2,3)

Intrinsics

Hexagon_V65_Programmers_Reference_Manual(49)

Encoding

Hexagon_V65_Programmers_Reference_Manual(49)

11.10.7.11 向量比较任何匹配的字节(Vector compare bytes for any match)

比较两个 64 位源向量中的每个字节,如果 8 个字节中的任何一个相等,则设置谓词。

该指令可用于快速查找字符串中的空终止符。

Hexagon_V65_Programmers_Reference_Manual(49)

Class: XTYPE (slots 2,3)

Intrinsics

Hexagon_V65_Programmers_Reference_Manual(49)

Encoding

Hexagon_V65_Programmers_Reference_Manual(49)

11.10.7.12 向量比较字节(Vector sign extend)

比较两个 64 位向量中的 8 个字节中的每一个,如果为真,则将谓词目标中的相应位设置为 1,如果为假,则设置为 0。

字节比较可以是等于或无符号大于。

在以下示例中,所有其他比较都是正确的。

Hexagon_V65_Programmers_Reference_Manual(49)

Class: XTYPE (slots 2,3)

Intrinsics

Hexagon_V65_Programmers_Reference_Manual(49)

Encoding

Hexagon_V65_Programmers_Reference_Manual(49)

11.10.7.13 矢量比较词(Vector compare words)

比较两个 64 位向量中的两个 32 位字中的每一个,如果为真,则将谓词目的地中的相应位设置为“1111”,如果为假,则设置为“0000”。

字比较可以是等于、有符号大于或无符号大于。

Hexagon_V65_Programmers_Reference_Manual(49)

Class: XTYPE (slots 2,3)

Intrinsics

Hexagon_V65_Programmers_Reference_Manual(49)

Encoding

Hexagon_V65_Programmers_Reference_Manual(49)

11.10.7.14 译码器打包偶数和奇数谓词位(Viterbi pack even and odd predicate bits)

将两个谓词寄存器的偶数位和奇数位打包到一个目标寄存器中。 该指令的一个变体是 R3:2 |= vitpack(P1,P0)。 这会将打包的谓词位放入已预移位 8 位的寄存器对的低 8 位。

该指令在维特比解码中很有用。 重复使用推送版本可以存储历史记录以供追溯之用。

Hexagon_V65_Programmers_Reference_Manual(49)

Class: XTYPE (slots 2,3)

Intrinsics

Hexagon_V65_Programmers_Reference_Manual(49)

Encoding

Hexagon_V65_Programmers_Reference_Manual(49)

11.10.7.15 矢量多路复用器(Vector mux)

在两个向量之间执行逐元素字节选择。

对于谓词寄存器Pu的低8位中的每一个,如果该位被设置,则将Rdd中的相应字节设置为Rss中的相应字节。 否则,将 Rdd 中的字节设置为 Rtt 中的字节。

Hexagon_V65_Programmers_Reference_Manual(49)

Class: XTYPE (slots 2,3)

Intrinsics

Hexagon_V65_Programmers_Reference_Manual(49)

Encoding

Hexagon_V65_Programmers_Reference_Manual(49)

继续阅读