Operations:

Format

Syntax:

Operation:

Operands:

Architecture revision

Opcode

1

satrndu Rd >> sa, bp

Temp  = Rd >> sa
if (sa != 0)
      Rnd = Rd[sa-1]
      Temp = Temp + Rnd;
If ((Temp == ZE( Temp[bp-1:0]))  || (bp == 0) )
      Rd = Temp;
else
      if (Temp[31] == 1)
            Rd = 0x0000_0000;
      else
            Rd = 2bp - 1;
d ∈ {0, 1, …, 15}
{sa, bp} ∈ {0, 1, …, 31}

Rev1+

111100111011

Rd

000001

bp

sa

12

4

6

5

5

Description

This instruction considers the value in (Rd>>sa)[bp-1:0] as a unsigned value. Rounding is per- formed after the shift. If the value in (Rd>>sa)[31:bp] is not merely a zero extention of this value, overflow has occurred and saturation is performed to the maximum unsigned positive value or zero. If saturation occurs, the Q flag is set. An arithmetic shift is performed on Rd. If bp equals zero, no saturation is performed.

Status Flags:

Q:

Set if saturation occurred or Q was already set, cleared otherwise.

V:

Not affected

N:

Not affected

Z:

Not affected

C:

Not affected