rldcr (Rotate Left Double Word then Clear Right) instruction

Purpose

Rotate the contents of a general purpose register left by the number of bits specified by the contents of another general purpose register. Generate a mask that is ANDed with the result of the shift operation. Store the result of this operation in another general purpose register.

Syntax

Bits Value
0 - 5 30
6 - 10 S
11 - 15 A
16 - 20 B
21 - 26 me
27 - 30 9
31 Rc
POWER® family
rldcr RA, RS, RB, ME (Rc=0)
rldcr. RA, RS, RB, ME (Rc=1)

Description

The contents of general purpose register (GPR) RS are rotated left the number of bits specified by the low-order six bits of RB. A mask is generated having 1 bits from bit 0 through bit ME and 0 bits elsewhere. The rotated data is ANDed with the generated mask and the result is placed into RA.

Note that rldcr can be used to extract and rotate bit fields using the methods shown below:

  • To extract an n-bit field, that starts at variable bit position b in register RS, left-justified into RA (clearing the remaining 64 - n bits of RA), set the low-order six bits of RB to b and ME = n - 1.
  • To rotate the contents of a register left by variable n bits, set the low-order six bits of RB to n and ME = 63, and to shift the contents of a register right, set the low-order six bits of RB to(64 - n), and ME = 63.

Other registers altered:

  • Condition Register (CR0 field):

    Affected: LT, GT, EQ, SO (if Rc = 1)

Parameters

RS SH Specifies shift value for operation. MB Specifies begin value of mask for operation. ME BM Specifies value of 32-bit mask
Item Description
RA Specifies target general-purpose register where result of operation is stored.
RS Specifies source general-purpose register for operation.
RB Specifies the source general purpose register containing the shift value.
ME Specifies end value of mask for operation.

Implementation

This instruction is defined only for 64-bit implementations. Using it on a 32-bit implementation will cause the system illegal instruction error handler to be invoked.