Itanium(R) processor topicParallel Shift Right Instruction

pshr

Operation Font Conventions

Instruction Type I

Format

(qp) pshr2 r1 = r3, r2 signed_form, two_byte_form, variable_form

(qp) pshr2 r1 = r3, count5 signed_form, two_byte_form, fixed_form

(qp) pshr2.u r1 = r3, r2 unsigned_form, two_byte_form, variable_form

(qp) pshr2.u r1 = r3, count5 unsigned_form, two_byte_form, fixed_form

(qp) pshr4 r1 = r3, r2 signed_form, four_byte_form, variable_form

(qp) pshr4 r1 = r3, count5 signed_form, four_byte_form, fixed_form

(qp) pshr4.u r1 = r3, r2 unsigned_form, four_byte_form, variable_form

(qp) pshr4.u r1 = r3, count5 unsigned_form, four_byte_form, fixed_form


Description

The data elements of GR r3 are each independently shifted to the right by the scalar shift count in GR r2, or in the immediate field count5. The high-order bits of each element are filled with either the initial value of the sign bits of the data elements in GR r3 (arithmetic shift) or zeros (logical shift). The shift count is interpreted as unsigned. Shift counts greater than 15 (for 16-bit quantities) or 31 (for 32-bit quantities) yield all zero or all one results depending on the initial values of the sign bits of the data elements in GR r3 and whether a signed or unsigned shift is done. The results are placed in GR r1.


Related Topics:

Bit Field and Shift Instructions

fpabs - Floating-point Parallel Absolute Value Instruction

fpamax - Floating-point Parallel Absolute Value Maximum Instruction

fpamin - Floating-point Parallel Absolute Value Minimum Instruction

fpcmp - Floating-point Parallel Compare Instruction

fpcvt.fx - Convert Parallel Floating-point to Integer Instruction

fpma - Floating-point Parallel Multiply Add Instruction

fpmax - Floating-point Parallel Maximum Instruction

fpmerge - Floating-point Parallel Merge Instructions

fpmin - Floating-point Parallel Minimum Instruction

fpmpy - Floating-point Parallel Multiply Instruction

fpms - Floating-point Parallel Multiply Subtract Instruction

fpneg - Floating-point Parallel Negate Instruction

fpnegabs - Floating-point Parallel Negate Absolute Value Instruction

fpnma - Floating-point Parallel Negative Multiply Add Instruction

fpnmpy - Floating-point Parallel Negative Multiply Instruction

fprcpa - Floating-point Parallel Reciprocal Approximation Instruction

fprsqrta - Floating-point Parallel Reciprocal Square Root Approximation Instruction

padd - Parallel Add Instruction

Parallel Arithmetic Instructions

Parallel Data Arrangement Instructions

Parallel Shift Instructions

pavg - Parallel Average Instruction

pavgsub - Parallel Average Subtract Instruction

pcmp - Parallel Compare Instruction

pmax - Parallel Maximum Instruction

pmin - Parallel Minimum Instruction

pmpy - Parallel Multiply Instruction

pmpyshr - Parallel Multiply and Shift Right Instruction

psad1 - Parallel Sum of Absolute Difference Instruction

pshl - Parallel Shift Left Instruction

pshladd - Parallel Shift Left and Add Instruction

pshradd - Parallel Shift Right and Add Instruction

psub - Parallel Subtract Instruction

shl - Shift Left Instruction

shladd - Shift Left and Add Instruction

shladdp - Shift Left and Add Pointer Instruction

shr - Shift Right Instruction

shrp - Shift Right Pair Instruction