//// Example of instructions and their encodings:
Move r0, c0 => 8004 // move c0 into r0
ScatterInc r4, c5 => 5c37 // scatter store values in c5 at the 4 addresses in r4, incrementing each address
Swizzle.xxyz ri => f905 // push pc onto a "stack" (ri.w = ri.z, ri.z = ri.y, ri.y = ri.x, ri.x = ri.x)
Xor r1, r1 => 996c // clear r1 to all zero
CompareEq16 r0, r1 => 8979 // test each field of r0 against r1, store 0xffff or 0 into r0 fields
Move.yzw r0, r1 => 89e4 // move only y,z,w of r1 into r0, leaving r0.x unchanged
SubRev16 ri, r0 => f889 // compute ri - r0, put result into ri
// if r0 is set to 0 or 0xffff by a compare,
// this will conditionally skip the next instruction