srlq (Shift Right Long with MQ) 指令

用途

将通用寄存器的内容向左旋转指定数量的位,将旋转后的数据或零字与 MQ 寄存器的内容合并到生成的掩码控制下,并将结果放入通用寄存器中。

注: 斯拉克 指令仅在 POWER ® 系列体系结构中受支持。

语法

位数 VALUE
0 - 5 31
6 - 10 RS
11 - 15 RA
16 - 20 经常预算
21 - 30 728
31 Rc
POWER ® 系列 
斯拉克 RA, RS, 经常预算
斯尔克 RA, RS, 经常预算

描述

斯拉克 指令将源通用寄存器 (GPR) 的内容 RS 旋转到左 32 减去 N 位,其中 N 是 GPR 的第 27-31 位中指定的移位量 经常预算。 合并取决于 GPR 经常预算中的第 26 位的值。

使用 斯拉克 指示信息时,请考虑以下事项:

  • 如果 GPR 经常预算 的第 26 位为 0 ,那么将生成由 N 个零后跟 32 个减 N 个零组成的掩码。 然后,在此生成的掩码的控制下,旋转后的字将与 MQ 寄存器的内容合并。
  • 如果 GPR 经常预算 的第 26 位为 1 ,那么将生成一个 N 后跟 32 减 N 零的掩码。 然后,在此生成的掩码的控制下,将一个零字与 MQ Register 的内容合并。

合并的单词存储在 GPR RA中。 未更改 MQ 寄存器。

斯拉克 指令具有两种语法形式。 每个语法表单对条件寄存器字段 0 有不同的影响。

描述
语法表单 溢出 异常 (OE) 固定点 异常寄存器 记录 位 (Rc) 条件 注册字段 0
斯拉克 0
斯尔克 1 LT ,GT, EQ , SO

斯拉克 指令的两种语法形式从不影响 "定点异常寄存器"。 如果语法格式将记录 (Rc) 位设置为 1 , 1 指令会影响 "条件寄存器字段 0" 中的 "小于 (LT) 0" , "大于 (GT) 0" , "等于 (EQ) 0" 和 "汇总溢出 (SO)" 位。

参数

描述
RA 指定用于存储操作结果的目标通用寄存器。
RS 指定操作的源通用寄存器。
经常预算 指定操作的源通用寄存器。

示例

  1. 以下代码将 GPR 4 的内容向左旋转 28 位,将一个零字与 MQ 寄存器的内容在掩码下进行合并,并将合并后的结果 6 GPR 6 中:
    
    # Assume GPR 4 contains 0x9000 300F.
    # Assume GPR 8 contains 0x0000 0024.
    # Assume the MQ Register contains 0xFFFF FFFF.
    srlq 6,4,8
    # GPR 6 now contains 0x0FFF FFFF.
    # The MQ Register remains unchanged.
    
  2. 以下代码将 GPR 4 的内容向左旋转 28 位,将旋转后的数据与 MQ 寄存器的内容合并在掩码下,将合并后的结果放置在 GPR 6 中,并设置 "条件 0 字段 0" 以反映操作的结果:
    
    # Assume GPR 4 contains 0xB004 3000.
    # Assume GPR 8 contains 0x00000 0004.
    # Assume the MQ Register contains 0xFFFF FFFF.
    srlq. 6,4,8
    # GPR 6 now holds 0xFB00 4300.
    # The MQ Register remains unchanged.
    # Condition Register Field 0 now contains 0x8.