+[[!tag standards]]
+
# mv.swizzle
+Links
+
+* <https://bugs.libre-soc.org/show_bug.cgi?id=139>
+
TODO: evaluate whether this will fit with [[mv.vec]]
+the encoding embeds predication into the swizzle as well as constants 1/1.0 and 0/0.0
+
# Format
| 0.5 |6.10|11.15|16.20|21.....25|26.....30|31| name |
except that the options are:
-* 0b1NN index 0 thru 3 to place subelement in pos XYZW
-* 0b000 to indicate "skip"
-* 0b001 to indicate "constant 0"
-* 0b010 to indicate "constant 1" (or 1.0)
-* 0b011 is not needed.
+* 0b0NN index 0 thru 3 to place subelement in pos XYZW
+* 0b110 to indicate "skip". this is equivalent to predicate masking
+* 0b100 to indicate "constant 0"
+* 0b101 to indicate "constant 1" (or 1.0)
+* 0b111 is not needed.
+
+Evaluating efforts to encode 12 bit swizzle into less proved unsuccessful: 7^4 comes out to 2,400 which is larger than 11 bits.
-Evaluating efforts to encode 12 bit swizzle into less proved unsuccessful: 7^4 wcomes out to 2,400 which is larger than 11 bits
+Note that 7 options are needed (not 6) because the 7th option allows predicate masking to be encoded within the swizzle immediate.
Mode M is described in [[mv.vec]] and allows for merge and split of vectors.