Extract and Sign-Extend a Bit Field
EXT
3-111
Instruction Set
SPRU733
Description
The field in
src2
, specified by
csta
and
cstb
, is extracted and sign-extended
to 32 bits. The extract is performed by a shift left followed by a signed shift right.
csta
and
cstb
are the shift left amount and shift right amount, respectively. This
can be thought of in terms of the LSB and MSB of the field to be extracted. Then
csta
= 31
−
MSB of the field and
cstb
=
csta
+ LSB of the field. The shift left and
shift right amounts may also be specified as the ten LSBs of the
src1
register
with
cstb
being bits 0
−
4 and
csta
bits 5
−
9. In the example below,
csta
is 12 and
cstb
is 11 + 12 = 23. Only the ten LSBs are valid for the register version of the
instruction. If any of the 22 MSBs are non-zero, the result is invalid.
csta
x
cstb
−
csta
src2
dst
x x x x x x x x
1 1 0 1 x x x x x x x x x x x
x
x
0 1
0
x
1
0
1
1 0 1 0 0 1 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
x x x 0 0 0 0
0
1
1
1 1
1
0
0
0
x x x x x x x x
0
0
0
0
0
0
0
0
Shifts left by 12 to produce:
Then shifts right by 23 to produce:
1)
2)
3)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8
7 6
5 4
3
2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8
7 6
5 4
3
2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8
7 6
5 4
3
2 1 0
Execution
If the constant form is used:
if (cond)
src2
ext
csta
,
cstb
→
dst
else nop
If the register form is used:
if (cond)
src2
ext
src1
9..5
,
src1
4..0
→
dst
else nop
Pipeline
Stage
E1
Read
src1, src2
Written
dst
Unit in use
.S
Pipeline