SPRUI30H November 2015 – May 2024 DRA745 , DRA746 , DRA750 , DRA756
Extract and Sign-Extend a Bit Field Bounded by Two Immediate Values
EXT ucst5_1, ucst5_2, src2, dst
Functional unit = L
32 bit
31 | 30 | 29 | 28 | 27 | 26 | 25 | 21 | 20 | 16 | 15 | 13 | 12 | 10 | 9 | 0 |
x | x | x | x | x | x | ucst5_1 | ucst5_2 | dst | src2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
5 | 5 | 3 | 3 | opcode |
For ucst5_1 ≥ ucst5_2, the field in src2 as specified by ucst5_2 to ucst5_1 is extracted and sign-extended to 32 bits and is written to dst. src2 is left unchanged. ucst5_2 is the LSB of the field and ucst5_1 is the MSB of the field to be extracted. In other words, ucst5_2 and ucst5_1 represent the beginning and ending bits, respectively, of the field to be extracted. The LSB location of src2 is bit 0 and the MSB location of src2 is bit 31.
Valid values of ucst5_1 and ucst5_2 are:
For ucst5_1 < ucst5_2, the result is undefined.
In the following example, ucst5_2 is 11 and ucst5_1 is 19.
CSR:EQ = (dst == 0)
tmpdst = 0; j = 0;
for( i = 0; i < 32; i++) {
if ( i >= ucst5_2 && i <= ucst5_1) tmpdst[j++] = src2[i];
};
dst = tmpdst[j] ? signext(tmpdst) : tmpdst ;