(({SRC1_R} != 0) || ({SRC2_R} != 0)) && ({REPEAT} == 0) {SRC1_R} | ({SRC2_R} << 1) {GPR} == 61 /* a0.* */ {GPR} == 62 /* p0.x */ a0.{SWIZ} 111101 p0.{SWIZ} 111110 r{GPR}.{SWIZ} src->num >> 2 src->num & 0x3 c{CONST}.{SWIZ} src->num >> 2 src->num & 0x3 {OFFSET} == 0 r<a0.x> r<a0.x + {OFFSET}> src->array.offset c<a0.x> c<a0.x + {OFFSET}> src->array.offset Encoding for instruction source which can be GPR/CONST/IMMED or relative GPR/CONST. extract_ABSNEG(src) src {ABSNEG}{SRC_R}h({IMMED}) {ABSNEG}{SRC_R}{IMMED} 100 extract_reg_iim(src) Immediate with int->float lookup table: 0 -> 0.0 1 -> 0.5 2 -> 1.0 3 -> 2.0 4 -> e 5 -> pi 6 -> 1/pi 7 -> 1/log2(e) 8 -> log2(e) 9 -> 1/log2(10) 10 -> log2(10) 11 -> 4.0 101 extract_reg_uim(src) {ABSNEG}{SRC_R}{IMMED} 0 {ABSNEG}{SRC_R}h{IMMED} 1 !{FULL} {ABSNEG}{SRC_R}{HALF}{SRC} 000000 {ABSNEG}{SRC_R}{HALF}{SRC} x10 001 {ABSNEG}{SRC_R}{HALF}{SRC} 0 {ABSNEG}{SRC_R}{HALF}{SRC} 1 ({FULL} == {DST_CONV}) && ({DST} <= 0xf7 /* p0.x */) 1 0 0 1 2 ({TYPE} == 0) /* f16 */ || ({TYPE} == 2) /* u16 */ || ({TYPE} == 4) /* s16 */ || ({TYPE} == 6) /* u8 */ || ({TYPE} == 7) /* s8 */ int to float lookup table