mv.swizzle

Links

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
19 RT RA XO[0:4] XO[5:9] Rc XL-Form
19 RT RA imm imm 01 M im 0 mv.vec.swiz
19 RT RA imm imm 01 M im 1 fmv.vec.swiz
19 RT RA imm imm 11 0 im 0 mv.swiz
19 RT RA imm imm 11 0 im 1 fmv.swiz

this gives a 12 bit immediate across bits 16 to 25 and 29-30.

  • 3 bits X
  • 3 bits Y
  • 3 bits Z
  • 3 bits W

except that the options are:

  • 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: 74 comes 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.