Hexagon_V65_Programmers_Reference_Manual (51)
11.10.8.7 按寄存器移位
移位量是Rt的最低有效7位,作为2的补码处理价值如果移位量为负(设置Rt的第6位),则指示移位方向操作码中的是相反的(参见图)。
要移位的源数据始终作为64位移位执行。当Rs来源寄存器是一个32位寄存器,该寄存器的第一个符号或零扩展到64位。算术移位符号将32位源扩展到64位,而逻辑移位零扩展。
然后根据移位量和类型将64位源值向右或向左移位说明。算术右移将源值的符号位放在腾出的位置。逻辑右移将空出的位置置零。   Class: XTYPE (slots 2,3)
内部函数  编码

11.10.8.8 按寄存器移位并累加
移位量是Rt的最低有效7位,作为2的补码处理价值如果移位量为负(设置Rt的第6位),则指示移位方向在操作码中是颠倒的。
根据移位量和类型将源寄存器值向右或向左移位指示算术右移将源值的符号位放在腾出的位置。逻辑右移将空出的位置置零。
移位操作始终作为64位移位执行。当Rs是32位寄存器时寄存器被第一个符号或零扩展到64位。算术移位符号扩展32位源到64位,而逻辑移位零扩展。
移位后,将目标寄存器中的64位移位量相加或相减,或寄存器对。  Class: XTYPE (slots 2,3)
内部函数
 编码

11.10.8.9 按寄存器和逻辑移位
移位量是Rt的最低有效7位,作为2的补码处理价值如果移位量为负(设置Rt的第6位),则指示移位方向在操作码中是颠倒的。
根据移位量和类型将源寄存器值向右或向左移位指示算术右移将源值的符号位放在腾出的位置。逻辑右移将空出的位置置零。
移位操作始终作为64位移位执行。当Rs源寄存器为32位寄存器,此寄存器的第一个符号或零扩展到64位。算术移位符号将32位源扩展到64位,而逻辑移位零扩展。
移位后,取移位量和目的地的逻辑AND或or寄存器或寄存器对,并将结果放回目标寄存器或寄存器组。
饱和不适用于这些指令。  
Class: XTYPE (slots 2,3)
内部函数  编码 
11.10.8.10 按饱和寄存器移位
移位量是Rt的最低有效7位,作为2的补码处理价值如果移位量为负(设置Rt的第6位),则指示移位方向在操作码中是颠倒的。
饱和可用于32位算术左移位。这可以是ASLRt为正的指令,或Rt为负的ASR指令。饱和的工作原理是将32位Rs寄存器扩展到64位的第一个符号。然后按移位量移位。
如果此64位值无法放入带符号的32位数字中(高位字不是位31的符号扩),则根据原始值的符号执行饱和。
饱和将32位结果限制在0x80000000到0x7fffffff的范围内。  类别:XTYPE(插槽2,3)
笔记
■ 如果在执行此指令期间发生饱和(结果被限制为最大值或最小值),则设置状态寄存器中的OVF位。
OVF保持设置状态,直到通过传输到SR明确清除。
内部函数
 编码 
11.10.8.11 向量按立即数移位半字
移动源向量的各个半字。算术右移将空出位置中的源值。逻辑右移将空出的内容置零位置。 
类别:XTYPE(插槽2,3)
内部函数 
编码 
11.10.8.12 矢量算术带舍入移位半字
对于矢量中的每个半字,先四舍五入,然后算术右移一个立即数。 结果存储在目标寄存器中。  类别:XTYPE(插槽2,3)
内部函数
编码

|