something like:
-| 0 1 | 2 3 | 4 5 | 6 | 7 9 | 10 12 | 13 18 | 19 21 |
+| 0 1 | 2 3 | 4 5 | 6 | 7 9 | 10 12 | 13 18 | 19 20 |
| ----- | --- | --- | ---- | ---- | ----- | ----- | ----- |
| subvl | sew | dew | ptyp | psrc | pdst | vspec | sat |
* ptyp - predication INT / CR
* psrc / pdst - predicate mask selector and inversion
* vspec - 3 bit src / dest scalar-vector extension
-* sat: 3 bit s/u 8/16/32
+* sat: 2 bit s/u
## twin predication, CR based.
these are of the form res = op(src1, src2, ...)
-| 0 1 | 2 3 | 4 5 | 6 | 7 9 | 10 18 | 19 21 |
+| 0 1 | 2 3 | 4 5 | 6 | 7 9 | 10 18 | 19 20 |
| ----- | --- | --- | ---- | ---- | ----- | ----- |
| subvl | sew | dew | ptyp | pred | vspec | sat |
* ptyp - predication INT / CR
* pred - predicate mask selector and inversion
* vspec - 2/3 bit src / dest scalar-vector extension
-* sat: 3 bit s/u 8/16/32
+* sat: 2 bit s/u
For 2 op (dest/src1/src2) the tag may be 3 bits: total 9 bits. for 3 op (dest/src1/2/3) the vspec may be 2 bits per reg: total 8 bits.
If there are spare bits it would be very good to look at using some of them to specify the mode, because otherwise a SPR has to be used which will need to be set and unset. This can get costly.
-Idea: 3 bits for clamping mode? similar to elwidth:
-
-* 0b000 default (no clamp)
-* 0b010 011 8 bit (sel: -128/127, us:0/255)
-* 0b100 101 16 bit
-* 0b110 111 32 bit
-
-not the same *as* elwidth.
-
# Notes about Swizzle
Basically, there isn't enough room to try to fit two src src1/2 swizzle, and SV, even into 64 bit (actually 24) without severely compromising on the number of bits allocated to either swizzle, or SV, or both.