Arithmetic Shift Left SHL
3-213 Instruction SetSPRU733
Arithmetic Shift Left
SHL
Syntax SHL (.unit) src2, src1, dst
.unit = .S1 or .S2
Compatibility C62x, C64x, C67x, and C67x+ CPU
Opcode
31 29 28 27 23 22 18 17 13 12 11 6 5 4 3 2 1 0
creg z dst src2 src1 x op 1 0 0 0 s p
3 1 5 5 5 1 6 1 1
Opcode map field used... For operand type... Unit Opfield
src2
src1
dst
xsint
uint
sint
.S1, .S2 11 0011
src2
src1
dst
slong
uint
slong
.S1, .S2 11 0001
src2
src1
dst
xuint
uint
ulong
.S1, .S2 01 0011
src2
src1
dst
xsint
ucst5
sint
.S1, .S2 11 0010
src2
src1
dst
slong
ucst5
slong
.S1, .S2 11 0000
src2
src1
dst
xuint
ucst5
ulong
.S1, .S2 01 0010
Description The src2 operand is shifted to the left by the src1 operand. The result is placed
in dst. When a register is used, the six LSBs specify the shift amount and valid
values are 0−40. When an immediate is used, valid shift amounts are 0−31.
If 39 < src1 < 64, src2 is shifted to the left by 40. Only the six LSBs of src1 are
used by the shifter, so any bits set above bit 5 do not affect execution.
Execution if (cond) src2
<< src1 → dst
else nop