Format |
Syntax: |
Operation: |
Operands: |
Architecture revision |
Opcode | ||||||||||
1 |
satrnds Rd >> sa, bp |
Temp = Rd >> sa if (sa != 0) Rnd = Rd[sa-1] Temp = Temp + Rnd; if ((Temp == SE( Temp[bp-1:0])) || (bp == 0) ) Rd = Temp; else if (Temp[31] == 1) Rd = -2bp-1; else Rd = 2bp-1 - 1; |
d ∈ {0, 1, …, 15} {sa, bp} ∈ {0, 1, …, 31} |
Rev1+ |
|
This instruction considers the value in (Rd>>sa)[bp-1:0] as a signed value. Rounding is per- formed after the shift. If the value in (Rd>>sa)[31:bp] is not merely a sign-extention of this value, overflow has occurred and saturation is performed to the maximum signed positive or negative value. If saturation occurs, the Q flag is set. An arithmetic shift is performed on Rd. If bp equals zero, no saturation is performed.
Q: |
Set if saturation occurred or Q was already set, cleared otherwise. |
V: |
Not affected |
N: |
Not affected |
Z: |
Not affected |
C: |
Not affected |